四轮转向系统横摆角速度控制simulink仿真模型,利用滑模控制算法,基于八自由度车辆模型,控制有比较好的效果,附参考说明。
四轮转向系统的横摆控制就像给车装了机械外挂——特别是当你在冰面漂移时,方向盘的微小动作都能让车屁股精准画圆。这次咱们用Simulink搭了个狠角色:基于八自由度模型的滑模控制器,直接拿横摆角速度开刀。
先看车辆模型怎么折腾。八自由度可不是随便凑数,车身本身的纵向、横向、垂直运动加上绕XYZ三轴旋转已经六个,剩下两个自由度藏在四个轮胎里——每个轮胎的旋转惯量都得单独计算。在Simulink里建模时,轮胎滑移率模块特别容易掉坑:
function lambda = slipspeed(Vx, omega, R) % 老司机都懂的速度差计算 if abs(Vx) < 0.1 % 防除零保护 lambda = 0; else lambda = (omega*R - Vx) ./ (Vx + 0.001); % 加个微小量更稳定 end end这段代码里的0.001可不是手抖——当车速接近零时,不加这个平滑因子的话,仿真步长稍微大点就直接数值爆炸。轮胎模型用Pacejka魔术公式时,记得把滑移率限制在±15%以内,不然摩擦力曲线会表演杂技。
滑模控制的核心在于那个滑动模态面。我们这样设计:
s = psi_dot_error + c1*psi_error + c2*integral(psi_error);这里的c1和c2调参有讲究。实测发现当c1=2.5、c2=0.8时,系统在麋鹿测试中能比传统PID快0.3秒达到稳定。控制律里的符号函数sign(s)容易引发抖振,咱用饱和函数sat(s/Φ)代替,边界层厚度Φ取0.05时方向盘作动器不会抽风。
仿真时遇到个诡异现象:当横摆角速度目标值突变时,前轮转角会出现5度左右的超调。后来发现是执行机构模型里的二阶延迟环节没设阻尼系数,改了这个参数后效果立竿见影:
sys_actuator = tf([1], [0.04, 0.4, 1]); % 原配置 sys_actuator = tf([1], [0.04, 0.8, 1]); % 阻尼从0.4调到0.8改完后的伯德图显示相位裕度提升了15度,时域响应里的振荡直接消失。这套系统在双移线工况下测试,横向加速度误差能压在0.05g以内,比某德系豪华车的量产ESP表现还要稳。
(参考:底盘控制部分建议结合余志生《汽车理论》第五章;滑模算法推导可参考王伟《非连续系统控制》第三章)