基于扩展卡尔曼滤波的车辆状态估计:Dugoff轮胎模型与七自由度动力学模型的应用

基于扩展卡尔曼滤波的车辆状态估计:Dugoff轮胎模型与七自由度动力学模型的应用 〖〗B10_01.基于扩展卡尔曼滤波EKF的车辆状态估计采用基于Dugoff轮胎的七自由度车辆动力学模型B09商品基础上建模 1.软件: MATLAB 2018以上CarSim 2020.0 2.商品介绍: (1)基于Dugoff轮胎模型和车身动力学公式搭建7DOF车辆动力学Simulink模型对相关变量质心侧偏角横摆角速度纵、横向速度及加速度进行CarSim对比验证。 (2)采用EKF估计车辆质心侧偏角、横摆角速度及纵向车速。 包括:S函数编写EKF、Simulink自带EKF模块两种方式。 (3)在线性状态方程下使用的EKF即质心侧偏角、横摆角速度的表达式是线性方程。咱们玩车模的都知道真实路况下的车辆状态估计比科目二倒车入库刺激多了。这次用MATLAB和CarSim搞了个7自由度车辆模型核心是Dugoff轮胎这个磨人的小妖精搭配EKF算法玩实时状态估计整个过程堪比秋名山漂移。先看模型骨架——七自由度包括纵向、横向、横摆运动外加四个车轮旋转。Dugoff轮胎模型的魔性在于它能用分段函数描述轮胎力比魔术师变鸽子还神奇。在Simulink里搭这个模型时最头疼的是轮胎滑移率的计算function Fy DugoffTire(alpha, kappa, Fz, mu) % 滑移率计算 lambda (mu*Fz)*(1kappa)/(2*sqrt(kappa^2 tan(alpha)^2)); if lambda 1 Fy mu*Fz*(1 - 0.5*lambda)*tan(alpha); else Fy mu*Fz*tan(alpha)/(2*sqrt(kappa^2 tan(alpha)^2)); end end这段代码在CarSim验证时发现当侧偏角超过8度时仿真结果和实际数据开始眉来眼去——这说明非线性特性开始作妖了。〖〗B10_01.基于扩展卡尔曼滤波EKF的车辆状态估计采用基于Dugoff轮胎的七自由度车辆动力学模型B09商品基础上建模 1.软件: MATLAB 2018以上CarSim 2020.0 2.商品介绍: (1)基于Dugoff轮胎模型和车身动力学公式搭建7DOF车辆动力学Simulink模型对相关变量质心侧偏角横摆角速度纵、横向速度及加速度进行CarSim对比验证。 (2)采用EKF估计车辆质心侧偏角、横摆角速度及纵向车速。 包括:S函数编写EKF、Simulink自带EKF模块两种方式。 (3)在线性状态方程下使用的EKF即质心侧偏角、横摆角速度的表达式是线性方程。EKF部分我们搞了两种玩法硬核S函数版和官方EKF模块版。S函数就像自己改装赛车自由度拉满。核心是雅可比矩阵的实时计算function [x_hat, P] EKF_Sfunc(x_prev, P_prev, u, z) % 状态预测 F eye(3) Ts*[0, vx, 0; -vx, 0, 0; 0, 0, 0]; % 线性化后的状态矩阵 x_pred F*x_prev; % 协方差预测 Q diag([0.1, 0.05, 0.2]); P_pred F*P_prev*F Q; % 卡尔曼增益 H [1 0 0; 0 1 0]; K P_pred*H/(H*P_pred*H R); % 状态更新 x_hat x_pred K*(z - H*x_pred); P (eye(3) - K*H)*P_pred; end这里的状态量是[β, γ, vx]观测用IMU和轮速传感器数据。有意思的是当纵向车速低于20km/h时协方差矩阵Q需要手动调参这感觉就像给老爷车挂挡——得靠玄学手感。对比Simulink自带的EKF模块官方版本就像自动驾驶点几下鼠标就能跑但遇到轮胎非线性区就开始跳机械舞。这时候S函数版本的优势就出来了咱们可以偷偷修改观测噪声矩阵R的自适应参数if abs(beta) 0.1 R(2,2) 0.5; % 横摆角速度噪声增大 end这种骚操作让算法在漂移工况下依然坚挺实测在双移线工况下质心侧偏角估计误差能控制在±0.3度以内比驾校教练的眼力还准。最后说个坑CarSim输出的数据有10ms的时钟偏移得用interp1函数做时间对齐。这细节不注意的话仿真结果会表演灵魂出窍——明明模型没问题就是和实测数据对不上像极了科目三考官的迷之扣分。