四轮转向车辆与前轮转向车辆仿真对比,包含 两种转角工况,对比稳定性, 使用pid,lqr实现四轮转向控制的对比, 纯simulink版本, 有说明文档。
四轮转向这玩意儿玩起来确实比前轮转向有意思多了。今天咱们拿Simulink搭了个对比模型,搞了个双车道切换工况和蛇形绕桩工况,看看到底是传统前轮转向稳还是四轮转向更骚气。
先看模型架构,前轮转向直接把方向盘转角给前轴就完事了,四轮转向这边加了后轮转角计算模块。这里头核心是后轮转角比例系数——别小看这个k值,直接决定后轮是神助攻还是猪队友。仿真时发现k=0.3这个值最微妙,超过0.5直接给你表演原地甩尾。
PID控制这边代码看着简单:
function delta_r = pid_controller(vx, vy, r) Kp = 0.8; Ki = 0.05; Kd = 0.12; persistent integral error_prev if isempty(integral) integral = 0; error_prev = 0; end error = 0.6*r - 0.4*vy; % 横摆角速度和侧偏角组合误差 integral = integral + error*0.01; derivative = (error - error_prev)/0.01; delta_r = Kp*error + Ki*integral + Kd*derivative; error_prev = error; end这代码有个坑:积分项在高速时会累积太快,实测超过80km/h就得加个积分限幅。不过调好了在蛇形工况下确实稳如老狗,就是参数整定得费两包烟。
四轮转向车辆与前轮转向车辆仿真对比,包含 两种转角工况,对比稳定性, 使用pid,lqr实现四轮转向控制的对比, 纯simulink版本, 有说明文档。
换LQR上场就完全是另一个画风。状态方程建完,Q矩阵对角线元素选得我头大:横摆角速度权重给15,侧偏角给10,转向角变化率给5。R矩阵就一个元素,直接取0.1。求解Riccati方程那会儿Simulink差点卡死,不过整定好了真香——高速变道时方向盘都不用回正,车子自己就修正姿态。
仿真数据说话:双车道切换工况下,前轮转向最大侧向加速度2.8m/s²,四轮转向PID版压到2.3,LQR版直接干到1.9。更骚的是轮胎侧偏角,传统前轮转向峰值8度,四轮转向LQR控制下始终控制在4度以内。不过低速挪车时PID反而更灵活,转向半径比LQR小0.3米。
模型文件里最精妙的是转向执行机构子系统,用了个带死区补偿的齿轮传动模块。实测时候发现,当转向速率超过45deg/s时,执行延迟会导致控制振荡,后来在作动器输出端加了个二阶滤波器才搞定。这细节在说明文档第4章有详细故障树分析,想复现的兄弟记得去翻。
最后说个反直觉的:四轮转向在冰雪路面仿真时,PID控制反而比LQR更抗造。因为LQR的精确模型依赖轮胎线性区间,而PID的傻快特性在低附着力时意外靠谱。果然控制算法没有银弹,得看工况下菜碟啊。