探索自适应巡航控制(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 系统有了更深入的了解!欢迎一起交流探讨。
