踩下油门时总得盯着前车屁股?ACC系统早把这事儿玩明白了。今天咱们拆开看看这套分层控制怎么让四个轮子自己算账——上层负责规划加速度,下层盯着刹车和油门较劲
自适应巡航ACC控制或纵向跟车避撞控制为分层式控制上层控制得到期望加速度下层控制得到对应的期望制动压力和节气门开度。 上层控制首先建立考虑前车加速度扰动的离散跟车运动学模型然后建立了基于反馈校正的跟车预测模型接着引入松弛因子与多目标优化求解。 控制效果前车变速输入时车间距、相对速度、自车的加速度、跃度、期望制动压力和节气门开度均能在满足多目标约束的条件下平稳进行变化自车速度设置为100km/h前车速度在50~70km/h正弦函数变化初始车间距为50m实现平稳跟车MPC控制效果较好。 Matlab/Simulink版本:2021a Carsim版本2019.0上层控制器就是个精明的会计先得算清楚车间那笔糊涂账。咱在Matlab里搭了个离散运动学模型核心代码就这几行function dx vehicle_model(t, x, u, a_lead) % 状态变量x[自车位置;自车速度;前车位置;前车速度] dx zeros(4,1); dx(1) x(2); % 自车位移 dx(2) u(1); % 自车加速度 dx(3) x(4); % 前车位移 dx(4) a_lead;% 前车加速度扰动项 end注意那个a_lead参数前车突然抽风加速时这玩意儿能让模型提前哆嗦。好比老司机余光扫到前车亮刹车灯脚已经虚搭在制动踏板上了。预测模型搞了个骚操作——反馈校正。就像你边炒菜边尝咸淡每步预测都拿实测数据修正偏差for k 1:N % 滚动优化时加入实时量测反馈 predicted_states(:,k) predicted_states(:,k) 0.3*(measured_states - predicted_states(:,1)); end这个0.3就是松弛因子数值大了容易神经质小了反应迟钝。调参时差点把鼠标点出火星子最后发现0.3时预测轨迹既不太飘又能跟上突变。自适应巡航ACC控制或纵向跟车避撞控制为分层式控制上层控制得到期望加速度下层控制得到对应的期望制动压力和节气门开度。 上层控制首先建立考虑前车加速度扰动的离散跟车运动学模型然后建立了基于反馈校正的跟车预测模型接着引入松弛因子与多目标优化求解。 控制效果前车变速输入时车间距、相对速度、自车的加速度、跃度、期望制动压力和节气门开度均能在满足多目标约束的条件下平稳进行变化自车速度设置为100km/h前车速度在50~70km/h正弦函数变化初始车间距为50m实现平稳跟车MPC控制效果较好。 Matlab/Simulink版本:2021a Carsim版本2019.0下层控制器像个黑社会打手收到上层指令就去找刹车和油门的麻烦。制动压力计算这段特别有意思function P_brake acc2brake(acc_des) if acc_des 0 P_brake 0; % 油门区直接清零 else % 非线性映射表实测数据拟合 P_brake 2.7*(-acc_des)^1.3 5*randn(); end % 限制最大制动压力 P_brake min(max(P_brake,0), 15); end看到那个randn()没模拟真实制动系统的压力波动比教科书里的理想曲线真实多了。节气门开度倒是老实直接用PID跟加速度指令Throttle PID Controller ├── Proportional: 0.45 ├── Integral: 0.12 └── Derivative: 0.02联调时发现个鬼故事——上层给的加速度波动太猛下层节气门跟不上节奏。后来在目标函数里加了跃度约束相当于给加速度变化率栓了狗链cost 0.8*sum((d_rel - safe_distance).^2) 0.2*sum(jerk.^2);Carsim里飙车的结果相当魔幻前车在50-70km/h之间蛇皮走位自车跟抽了电子烟似的稳稳咬住50m间距。速度曲线像被熨斗烫过加速度波动控制在±0.3g以内。最秀的是制动压力响应延迟控制在200ms内——这水平能让驾校教练下岗。整套系统在Simulink里跑得像德芙巧克力般顺滑不过真车标定时的轮胎打滑估计得另写个故事了。下次试试让前车跳江南Style看ACC会不会懵逼...
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2410622.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!