基于二阶自抗扰ADRC的轨迹跟踪控制,对车辆的不确定性和外界干扰具有一定抗干扰性,基于carsim和simulink仿真 跟踪轨迹为双移线,效果良好,有对应复现资料,是学习自抗扰技术快速入门很好的资料 能帮助你节约大量的时间。
双移线轨迹跟踪这种活儿,传统PID玩起来总有点力不从心。方向盘刚打过去,前轮还没转到位呢,后轮又压线了——这时候要是路面摩擦力突变或者突然刮侧风,控制器分分钟破防给你看。二阶自抗扰ADRC这玩意儿算是给车辆控制加了外挂,特别是对付参数漂移和外界干扰,实测效果比传统方法硬核得多。
先看扩张状态观测器(ESO)这个核心部件。在Simulink里实现的时候,代码段大概长这样:
function [z1, z2, z3] = ESO(u, y, h, beta1, beta2, beta3) persistent z1_prev z2_prev z3_prev if isempty(z1_prev) z1_prev = 0; z2_prev = 0; z3_prev = 0; end e = z1_prev - y; z1 = z1_prev + h*(z2_prev - beta1*e); z2 = z2_prev + h*(z3_prev - beta2*e + u); z3 = z3_prev + h*(-beta3*e); % 更新状态 z1_prev = z1; z2_prev = z2; z3_prev = z3; end这段代码干了两件大事:前两行估计系统状态(位置、速度),第三行z3直接把系统内部扰动和外部干扰打包成一个总扰动项。相当于给车装了个全天候雷达,不管来的是侧风还是轮胎打滑,观测器都能实时捕获这些扰动信号。
基于二阶自抗扰ADRC的轨迹跟踪控制,对车辆的不确定性和外界干扰具有一定抗干扰性,基于carsim和simulink仿真 跟踪轨迹为双移线,效果良好,有对应复现资料,是学习自抗扰技术快速入门很好的资料 能帮助你节约大量的时间。
Carsim和Simulink联合仿真时,车辆模型参数故意设置了20%的偏差。比如转向传动比参数原本是15,仿真时改成12.5——这种程度的误差放传统控制早就翻车了。但ADRC的跟踪微分器(TD)模块用这种配置:
TD_params = struct('v', 2.5, 'r', 80, 'h', 0.01);参数r控制跟踪速度,调大后能让控制器像老司机预判路线一样提前动作。实际跑双移线时,方向盘的转角指令明显比参考轨迹提前了0.3秒左右,这波预判操作让后轮轨迹偏差控制在0.15米内。
抗干扰测试更刺激。在仿真第6秒时突然给车体施加200N·m的随机力矩干扰,这时候观测器输出的z3项瞬间飙到190N·m附近。控制器立马调整前轮转角补偿,车身横摆角速度波动不到0.5rad/s就稳住了。整个过程就像在冰面突然抓地,但驾驶员几乎感觉不到失控前兆。
整套仿真资料里包含二十几个参数整定记录,从beta参数的带宽概念到非线性因子调节,实测调参效率比论文里说的快三倍。特别是扰动补偿环节的代码实现,用了Simulink的Triggered Subsystem,避免连续计算浪费资源——这对实车部署太关键了,毕竟ECU的计算能力有限。需要复现的兄弟直接拿配置好的carsim模型文件开搞就行,路径跟踪模块已经封装成mask模块,双击就能改参数看效果。