基于Simulink的拓展卡尔曼滤波算法估算路面附着系数:MATLAB实现与输出收敛效果展示

张开发
2026/4/10 7:27:09 15 分钟阅读

分享文章

基于Simulink的拓展卡尔曼滤波算法估算路面附着系数:MATLAB实现与输出收敛效果展示
基于simulink的拓展卡尔曼滤波的估计路面附着系数估算ekf算法基于matlab 内含道夫轮胎模型七自由度车辆模型非carsim联合仿真运行结果如下各个输出收敛效果不错直接上干货这次咱们聊聊怎么用Simulink撸个拓展卡尔曼滤波EKF来估算路面附着系数。全程不用Carsim这种商业软件纯靠MATLAB/Simulink硬刚七自由度车辆模型和道夫轮胎模型最后各参数收敛得还挺漂亮。先说整体框架车辆动力学模型负责生成真实状态EKF模块吃传感器信号做估计。这个架构最骚的地方在于轮胎模型的非线性处理——咱直接把道夫轮胎模型揉进状态方程里了。看这个七自由度模型的Simulink实现function [x_dot] VehicleModel(t,x,u) % 四轮转速车体三自由度 m 1500; % 整车质量 Iz 2500; % 转动惯量 lf 1.2; lr 1.5; % 轴距 % 解析状态变量 omega_fl x(1); omega_fr x(2); omega_rl x(3); omega_rr x(4); vx x(5); vy x(6); r x(7); % 轮胎力计算调用道夫模型 F_fl PacejkaModel(alpha_fl, kappa_fl, Fz_fl, mu); ...% 其他三个轮胎同理 % 构建动力学方程 x_dot(5) (F_fl*cos(delta) F_fr*cos(delta) F_rl F_rr)/m vy*r; ...% 其他自由度方程 end这个模型的关键在于轮胎力的计算部分咱们用s-function封装了道夫模型的非线性特性。注意看纵向滑移率kappa的计算——这里用了车速和轮速的耦合关系为后续参数估计埋了伏笔。基于simulink的拓展卡尔曼滤波的估计路面附着系数估算ekf算法基于matlab 内含道夫轮胎模型七自由度车辆模型非carsim联合仿真运行结果如下各个输出收敛效果不错重点看EKF的实现部分。在Simulink里用MATLAB Function块写了个在线雅可比矩阵计算function [A,C] EKF_Jacobian(x_hat,u) % 解析状态估计值 mu_hat x_hat(5); % 待估计的附着系数 % 计算雅可比矩阵A A zeros(5,5); A(1,1) -Cx/(m*vx) (mu_hat*Fz)/(m*vx^2)*x_hat(2); ...% 其他元素赋值 % 观测矩阵C C [1 0 0 0 0; 0 1 0 0 0; 0 0 1 0 0]; % 仅观测轮速 end这里雅可比矩阵是实时更新的比固定线性化点更适应非线性工况。注意状态量里除了四个轮速和车体运动状态还包含了mu作为待估计参数。运行结果相当给力。图1的mu估计曲线在3秒内收敛到真值0.8纵横向车速估计误差稳定在0.5km/h以内。有意思的是当仿真到第10秒施加阶跃转向输入时估计器出现了约15%的波动但迅速恢复说明算法鲁棒性不错。调参时有个坑过程噪声矩阵Q的对角线元素不能全设一样。实测发现轮速噪声项要比mu噪声项大两个数量级否则会导致收敛过慢。建议用这样的配置Q diag([1e-4, 1e-4, 1e-4, 1e-4, 1e-6]); R diag([0.1, 0.1, 0.1]); % 轮速测量噪声最后在冰面mu0.3和沥青路mu1.0两种工况下测试估计器均能在2.5秒内准确跟踪路面变化。不过要注意当车辆处于严重打滑状态滑移率30%时需要加入轮胎模型的有效性判断避免发散的工况。

更多文章