【车辆侧向速度估计】基于Carsim和simulink联合仿真,利用车辆运动学模型和卡尔曼滤波算法,分析卡尔曼滤波的可观性,通过利用轮速信息和加速度信息对难以直接测量的车辆侧向车速进行估计。 文档详实】
刚摸完方向盘的手还在发烫,屏幕上Carsim的轮胎滑移率曲线还在跳动。咱们今天聊聊怎么从轮子转速和车身晃动的数据里,把那个看不见摸不着的侧向车速给揪出来。别急着关页面,这次咱们不用高深莫测的矩阵理论,就着Simulink里现成的模块和几行MATLAB代码,带你玩转这个车辆状态的捉迷藏游戏。
打开Simulink瞬间被满屏连线晃了眼?别慌,先搭个能跑的运动学模型。看这个带滑移率的自行车模型,核心就两行状态方程:
% 状态方程片段
beta_dot = (a_y/vx) - (Caf + Car)/(m*vx^2)*beta - (Caf*lf - Car*lr)/(m*vx^2)*r;
r_dot = -(Caf*lf - Car*lr)/(Iz*vx)*beta - (Caf*lf^2 + Car*lr^2)/(Iz*vx)*r;
这里的beta就是咱们想算的侧偏角,vx来自轮速传感器。注意看第二项的交叉耦合,这就是为什么单独用运动学模型会飘——加速度计的噪声能把估计值带沟里去。这时候该卡尔曼老哥出场了,但先别急着写预测方程,咱们得先确认这系统是不是"可观测"的。

拿个具体场景说事:假设车辆在30km/h做正弦转向。把状态方程线性化后拼出可观性矩阵,跑个matlab的秩计算:
Ob = obsv(A,C);
if rank(Ob) == size(A,1)
disp('系统完全可观!')
else
warning('存在不可观状态')
end
当车速不为零时,控制台果然弹出绿色的"完全可观"提示。这说明只要车辆在动,侧向速度和横摆角速度这些状态都逃不过卡尔曼滤波的法眼。
接下来上硬菜——搭建Kalman滤波器。预测阶段用运动学模型开路,更新阶段让加速度计和横摆角速度传感器上场。看这段核心迭代:
% Kalman预测步骤
x_pred = F * x_prev + B * u;
P_pred = F * P_prev * F' + Q;
% 更新步骤
K = P_pred * H' / (H * P_pred * H' + R);
x_new = x_pred + K * (z - H * x_pred);
P_new = (eye(2) - K * H) * P_pred;
特别注意Q和R矩阵的调参玄学——把过程噪声调小会让滤波器变得"固执",而测量噪声调大相当于不相信传感器。经过十几次翻车调试,发现当轮速信号有2%噪声时,Q对角元素取0.01能平衡响应速度和稳定性。
最后看Carsim和Simulink的联合作案成果:在双移线工况下,估计的侧向速度与真值曲线像双胞胎一样贴合,最大误差不到0.3m/s。但别高兴太早,当车速低于5km/h时,曲线开始抽风——这说明低速时运动学模型本身的缺陷开始暴露,得换个动力学模型来擦屁股了。

调参时有个邪门现象:把预测步长从10ms改成20ms,精度反而提升。后来发现是Simulink的零阶保持器在作怪,提醒我们永远不要完全相信仿真软件的默认设置。下次试试龙格库塔法,说不定有意外收获?
1113

被折叠的 条评论
为什么被折叠?



