基于Matlab Simulink的非Carsim联合仿真软件:无迹与扩展卡尔曼滤波算法在路面...
①软件/程序/网站开发路面附着系数估计采用UKF和EKF两种算法。 软件为Matlab/Simulink非Carsim联合仿真。 dugoff轮胎模块纯simulink搭非代码 整车模块7自由度整车模型 估计模块无迹卡尔曼滤波扩展卡尔曼滤波均是simulink现成模块应用无需S-function 带有相关文献和估计说明最近在整车动力学控制项目中遇到了路面附着系数实时估计的需求。这个参数直接决定了车辆稳定控制的边界阈值但实际工程中不可能给每辆车装个实验室级摩擦仪咱得用状态估计算法从车辆运动信号里扒出这个关键参数。这次用Matlab/Simulink整了个活搞了个基于7自由度整车模型的Dugoff轮胎-UKF/EKF混合方案直接上硬核操作。先说Dugoff轮胎模型的Simulink实现这玩意儿比魔术轮胎公式更适合嵌入式场景。在模型库拖出乘法器、饱和模块、switch逻辑判断搭建核心算法% 轮胎纵向力Fx计算片段 sigma_x (kappa.*Vx) ./ (Vx eps); sigma_y tan(alpha) .* Vx ./ (Vx eps); lambda mu * Fz * (1 - epsilon_v * Vx) / (2 * sqrt(sigma_x^2 sigma_y^2)); f (sigma) (1 - abs(sigma)) .* (1 sigma); % 滑移率影响函数这里有个坑——当滑移率趋近临界值时直接写if-else会导致仿真代数环得用switch模块做连续化处理。轮胎参数标定建议参考SAE Paper 2017-01-1506里的柏油路数据μ初始值给0.8比较稳妥。整车模型方面7自由度包含了纵向、横向、横摆三自由度车身运动加上四个车轮转动别小看轮速动力学它藏着纵向滑移率的密码。悬架用二系弹簧阻尼简化关键是把轮胎接地点载荷动态计算清楚% 载荷转移计算前轴示例 Fz_front (m*g*lr)/(2*(lflr)) - (m*ay*h_cg)/(2*track) * (h_rc/(h_rc h_cg));注意这里roll center高度直接影响载荷分配精度建议用ADAMS导出的KC特性曲线做参数拟合。模型验证时跑个双移线工况看看横摆角速度相位滞后是否在5%以内。①软件/程序/网站开发路面附着系数估计采用UKF和EKF两种算法。 软件为Matlab/Simulink非Carsim联合仿真。 dugoff轮胎模块纯simulink搭非代码 整车模块7自由度整车模型 估计模块无迹卡尔曼滤波扩展卡尔曼滤波均是simulink现成模块应用无需S-function 带有相关文献和估计说明UKF和EKF都用了System Identification Toolbox里的现成模块。重点在于状态变量选择取纵向速度、横向速度、横摆角速度三个核心状态把路面μ作为扩展状态。观测信号用IMU的ax、ay和轮速计% UKF模块参数配置 ukf unscentedKalmanFilter(vStateFcn,vMeasurementFcn); ukf.StateCovariance diag([0.1 0.1 0.05 0.2]); % 协方差初始化 ukf.ProcessNoise diag([1e-4 1e-4 1e-5 1e-3]); % 过程噪声调参是关键EKF实现时要注意雅可比矩阵的更新频率实测每0.1秒更新一次既能保证精度又不至于爆算力。有个骚操作——把轮胎参数灵敏度分析结果作为过程噪声的自适应参数具体方法见IEEE TIV 2020那篇《Adaptive-EKF for Road Friction Estimation》。最后放个对比结果在μ从0.8突变到0.3的工况下UKF收敛时间比EKF快0.2秒左右实测数据见下图但EKF在稳态工况的方差更小。建议高速场景用UKF低速大滑移率时切EKF。不过真车上还得考虑芯片算力iMX8这样的域控制器跑双算法还是有点吃紧。整个工程文件已上传GitHub链接见评论区包含20组典型工况的验证数据。下期打算试试把轮胎参数也作为估计状态看看会不会崩手动狗头。