分布式驱动汽车稳定性控制的纯Simulink模型构建及控制器对比研究
分布式驱动汽车稳定性控制 采用纯Simulink模型搭建包括控制策略和车辆动力学模型。 采用分层式直接横摆力矩控制上层包括模型预测MPC滑模控制SMCPID控制LQR控制 可灵活对四种控制器对比和选择。 另外下层基于轮胎滑移率最优分配。 四种控制均可跟踪横摆角速度和质心侧偏角期望值 车辆被控对象采用七自由度整车模型输出实际质心侧偏角和横摆角速度二自由度模型输出理想质心侧偏角和横摆角速度 具有初始化文件Simulink模型控制器说明有参考文献和七自由度整车建模说明文档。 默认采用MATLAB2021a版本另外提供了比较旧的2016a版本模型可供使用深夜的实验室里显示屏泛着冷光。我盯着Simulink模型里疯狂抖动的横摆角速度曲线灌下第三杯黑咖啡——这分布式驱动车的稳定性控制真不是省油的灯。好在终于找到了突破口把控制策略拆成上下两层玩就像游戏里的技能树先点满基础属性再加终极技能。七自由度车辆模型是个磨人的小妖精。光轮胎模型就折腾了整周最后在子系统里塞了个魔术公式Magic Formula才算搞定。看这段代码function Fy Pacjeka_Tire(alpha, Fz) % 轮胎参数 B 0.27; C 1.65; D 1.1; Fy Fz * D * sin(C * atan(B * alpha)); endalpha是侧偏角Fz是垂直载荷。这非线性特性曲线活像过山车轨道难怪传统PID会翻车。所以上层控制得用更聪明的算法——这时候就得掏出工具箱里的四个锦囊MPC、SMC、PID、LQR。模型预测控制MPC就像个老谋深算的棋手。在Controller_MPC.slx里预测时域设了20步代价函数里横摆角速度和质心侧偏角的权重比调了三十多版。不过运行起来是真吃资源仿一次能煮碗泡面。滑模控制SMC完全是个暴脾气。切换函数里的符号函数sign()活像开关抖得我怀疑人生。后来改成饱和函数才消停% 滑模面切换函数 s beta_error lambda*gamma_error; if abs(s) 0.05 u_eq -K*sat(s/phi); else u_eq -K*(s/phi); end这个phi就像缓冲垫硬着陆变软着陆。不过遇到路面突变时还是SMC反应最快像个条件反射过人的短跑运动员。分布式驱动汽车稳定性控制 采用纯Simulink模型搭建包括控制策略和车辆动力学模型。 采用分层式直接横摆力矩控制上层包括模型预测MPC滑模控制SMCPID控制LQR控制 可灵活对四种控制器对比和选择。 另外下层基于轮胎滑移率最优分配。 四种控制均可跟踪横摆角速度和质心侧偏角期望值 车辆被控对象采用七自由度整车模型输出实际质心侧偏角和横摆角速度二自由度模型输出理想质心侧偏角和横摆角速度 具有初始化文件Simulink模型控制器说明有参考文献和七自由度整车建模说明文档。 默认采用MATLAB2021a版本另外提供了比较旧的2016a版本模型可供使用下层分配算法才是真正的端水大师。每个电机的扭矩分配得像分蛋糕[Torque_FL, Torque_FR, Torque_RL, Torque_RR] Optimal_Slip_Alloc(u_total) % 二次规划求解 H diag([1.2, 1.0, 0.8, 0.8]); % 前后轴权重 options optimoptions(quadprog,Display,off); Torque quadprog(H, [], [], [], [], [], lb, ub, [], options); end这权重系数调起来玄学得很前轮抓地力好比走钢丝时的平衡杆后轮则是稳定性的定海神针。测试时切到2016a版本差点翻车——原来新版的MPC模块用了并行计算旧版得改成for循环。所以说版本兼容这事就像让五代同堂的大家族用同款手机。最后跑联合仿真时四个控制器的性能对比堪比华山论剑。MPC在连续弯道稳如老狗SMC在冰面闪避帅得掉渣PID嘛...就当对照组看吧。不过真车上路时还是得搞个仲裁机制像LQR这种中庸派反而成了安全牌。仿真数据.mat和模型文件已打包参考文献扔在Doc文件夹了。跑代码前记得先执行Init.m加载参数不然会报错找你索要beta_ref的七舅姥爷——别问我怎么知道的
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2441197.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!