基于mpc模型预测轨迹跟踪控制,总共包含两套仿真,一套是不加入四轮侧偏角软约束,一套是加入四轮...
基于mpc模型预测轨迹跟踪控制,总共包含两套仿真,一套是不加入四轮侧偏角软约束,一套是加入四轮侧偏角的软约束控制,通过carsim与simulink联合仿真发现加入侧偏角软约束在进行轨迹跟踪时,能够通过控制四轮侧偏角的变化,较好的实现轨迹跟踪;而不加入侧偏角软约束的,发现车辆由于失去稳定性, 轨迹跟踪失败( 该仿真是学习mpc模型预测算法控制和基于车辆动力学轨迹跟踪控制非常好的学习资料)。 文件中论文和文件说明。
轨迹跟踪控制在自动驾驶领域一直是热门话题。最近折腾了一阵基于MPC的车辆轨迹跟踪算法,发现四轮侧偏角的处理直接决定了控制效果。咱们今天用Carsim+Simulink联合仿真的实测结果来说话——加不加侧偏角软约束,车辆表现简直是两个世界。
先说下这个MPC控制器的核心结构。预测模型用的是经典的二自由度自行车模型,不过咱给它配了个非线性轮胎模型。目标函数长这样:
J = sum((y_ref - y_pred).^2 * Q + delta_u.^2 * R);
这里Q和R分别是跟踪误差和控制增量的权重系数。但关键在约束条件——这时候四轮侧偏角的软约束就该登场了。
不加约束的情况特别有意思。仿真里车辆以60km/h过弯时,方向盘疯狂抖动:
% 无约束的MPC求解
options = optimoptions('fmincon','Algorithm','sqp');
[u_opt, fval] = fmincon(@(u)cost_function(u,x0), u0,[],[],[],[],lb,ub,[],options);
看着求解器是收敛了,但实际跑起来车辆直接横着滑出赛道。问题出在轮胎侧向力饱和——当侧偏角超过6度时,轮胎已经进入非线性区,但控制器还在按线性模型输出控制量。这时候就像踩着香蕉皮漂移,轨迹跟踪误差直接爆炸。
加了软约束之后,代码里多出这一段:
% 侧偏角软约束惩罚项
alpha_penalty = 1e3 * max(0, abs(alpha_fl)-2).^2 + ... % 前左轮
1e3 * max(0, abs(alpha_fr)-2).^2; % 前右轮
J = J + alpha_penalty;
这个操作相当于给预测时域内的侧偏角设置安全缓冲区。实测时方向盘动作明显温和很多,但轨迹跟踪精度反而更高。因为控制器开始主动平衡转向角和车速——当检测到前轮侧偏角接近临界值时,会提前降低车速或减小转向输入。
有意思的是后轮侧偏角的处理。在高速变道场景下,后轴侧偏角约束让车辆呈现轻微转向不足特性,反而提升了稳定性。这里有个编程小技巧:
beta = atan2(v + a*r, u); % 质心侧偏角
alpha_rear = beta - b*r/u;
用这个公式实时计算后轮侧偏角,比单纯依赖轮胎模型更可靠。联合仿真数据显示,约束后的后轮侧偏角波动范围缩小了40%,轮胎侧向力保持在线性区间的时间增加了两倍。
最后给个实操建议:软约束的权重系数需要动态调整。在低附着路面测试时,把1e3改成5e3效果更好。不过要注意别矫枉过正,否则控制量会过于保守。毕竟轨迹跟踪和稳定性是跷跷板,找到那个微妙的平衡点才是MPC的精髓。

更多推荐
所有评论(0)