探索自适应巡航控制(ACC)的奇妙世界
自适应巡航控制ACC上层控制器采用MPC算法下层控制器采用标定法。 该ACC接入了Carsin中的GPS在大地坐标系的基础上设计了MPC可以在此基础上加入规划层实现超车等功能。 此外对跟随车辆切入切出三种工况进行了仿真。 最后配备有详细的说明文档其中有详细的MPC推导代码有注释并与文档中的公式对应。 大致情况见图片。嘿各位技术宅们今天来聊聊超有趣的自适应巡航控制ACC。咱们这个 ACC 可不一般上层控制器用的是 MPC 算法下层控制器则采用标定法这种搭配就像给汽车安上了一对智能翅膀。先说说上层的 MPC 算法。MPC也就是模型预测控制它就像是汽车的智慧大脑能根据各种预测信息提前规划好车辆的行驶状态。比如说我们在 Carsin 中接入了 GPS基于大地坐标系来设计 MPC。代码大概像这样Python 示例import numpy as np # 定义一些系统参数 A np.array([[1, 1], [0, 1]]) # 状态转移矩阵 B np.array([[0.5], [1]]) # 控制输入矩阵 Q np.array([[1, 0], [0, 1]]) # 状态权重矩阵 R np.array([[1]]) # 控制输入权重矩阵 # 预测时域 N 10 def mpc(state, ref): # 初始化 x_pred np.zeros((2, N 1)) u_pred np.zeros((1, N)) x_pred[:, 0] state # 滚动优化求解 for k in range(N): # 这里可以添加更复杂的预测模型 x_pred[:, k 1] A.dot(x_pred[:, k]) B.dot(u_pred[:, k]) cost np.trace((x_pred[:, k 1] - ref).T.dot(Q).dot(x_pred[:, k 1] - ref)) u_pred[:, k].T.dot(R).dot(u_pred[:, k]) # 简单的优化逻辑实际可能需要更复杂算法 u_pred[:, k] np.linalg.inv(B.T.dot(Q).dot(B) R).dot(B.T.dot(Q).dot(ref - A.dot(x_pred[:, k]))) return u_pred[0, 0]在这段代码里我们先定义了系统的一些基本矩阵比如状态转移矩阵A、控制输入矩阵B等这些矩阵是 MPC 算法的基础。然后在mpc函数里我们在预测时域N内进行滚动优化计算每个时刻的控制输入u_pred目标是最小化状态和参考状态之间的误差同时考虑控制输入的成本。而且咱们还可以在这个基础上加入规划层实现像超车这样超酷的功能。想象一下汽车能自己规划路线完成超车是不是很炫自适应巡航控制ACC上层控制器采用MPC算法下层控制器采用标定法。 该ACC接入了Carsin中的GPS在大地坐标系的基础上设计了MPC可以在此基础上加入规划层实现超车等功能。 此外对跟随车辆切入切出三种工况进行了仿真。 最后配备有详细的说明文档其中有详细的MPC推导代码有注释并与文档中的公式对应。 大致情况见图片。再看看下层的标定法。标定法就是给下层控制器设定一些固定的参数让它根据实际情况做出合适的反应。虽然不像 MPC 那么“聪明”但它稳定可靠就像坚实的后盾。另外对跟随车辆、切入、切出这三种工况进行了仿真。通过仿真我们能更好地验证 ACC 在各种复杂情况下的性能。比如说在跟随车辆工况仿真中我们可以这样写代码Matlab 示例% 设定初始参数 v_lead 30; % 前车速度 v_follow 25; % 跟随车速度 distance 50; % 初始间距 % 仿真步长和时间 dt 0.1; T 10; time 0:dt:T; for k 1:length(time) % 这里可以调用上面类似的MPC算法计算跟随车加速度 a_follow mpc([v_follow; distance], [v_lead; 60]); v_follow v_follow a_follow * dt; distance distance (v_lead - v_follow) * dt; % 记录数据用于绘图等分析 v_follow_record(k) v_follow; distance_record(k) distance; end这段 Matlab 代码简单模拟了跟随车辆的工况设定了前车和跟随车的初始速度、间距等参数在每个仿真步长里调用类似的 MPC 算法计算跟随车加速度更新速度和间距并记录数据以便后续分析。最后还配备了详细的说明文档里面有详细的 MPC 推导过程。代码也都带有注释和文档里的公式对应得严丝合缝方便大家学习和理解。从图片上大致能看到整个系统的架构和一些关键数据这就像是一幅指引我们探索 ACC 奥秘的地图。希望通过今天的分享大家对这个超有趣的 ACC 系统有了更深入的了解欢迎一起交流探讨。