
【Carsim simulink联合仿真】根据文档复现递推最小二乘法估计轮胎侧偏刚度模型文档详实代码规范刚接手Carsim和Simulink联合仿真项目时看着文档里那套递推最小二乘法估计轮胎侧偏刚度的模型心里直打鼓——这玩意儿真能在线估计参数实际操作后发现只要处理好数据同步和算法迭代还真能在仿真过程中看着参数蹭蹭收敛。先说说模型搭建的坑。Carsim那头需要配置车辆动力学参数时发现方向盘转角信号必须走Simulink输出通道直接在Carsim里设置会丢失时间同步。解决办法是在Simulink里搞了个零阶保持器硬核同步两边的采样时间function steering_angle sync_signal(u) persistent last_value; if isempty(last_value) last_value 0; end if ~isnan(u) last_value u; end steering_angle last_value; end这段代码里的持久变量像极了打游戏时的存档点确保Carsim突然抽风丢信号时方向盘转角不会跳变到姥姥家。【Carsim simulink联合仿真】根据文档复现递推最小二乘法估计轮胎侧偏刚度模型文档详实代码规范核心算法部分递推最小二乘法的实现比教科书上的公式刺激多了。在Simulink里用Matlab Function模块实现时发现直接用矩阵运算会触发诡异的维度错误。后来改用递推形式的标量计算才稳住局面function [theta, P] RLS(y, phi, theta_prev, P_prev) K P_prev * phi / (1 phi * P_prev * phi); theta theta_prev K * (y - phi * theta_prev); P (eye(2) - K * phi) * P_prev; % 防止协方差矩阵膨胀 P 0.5*(P P); P P 0.01*eye(2)*(trace(P)1e-6); end这里两个骚操作很有意思给协方差矩阵P加对称约束和小扰动像极了给不安分的熊孩子系安全带。实测发现不加这两句的话跑个二十秒仿真P矩阵就能膨胀到让Matlab怀疑人生。跑仿真时看着参数估计曲线跳舞前五秒像醉汉画龙十秒后突然开窍似的往理论值靠拢。特别是侧向速度估计值跟Carsim理论输出的对比图两条曲线从互相嫌弃到如胶似漆强迫症都被治愈了。最后说个血泪教训Carsim的传感器噪声模块别手贱全开特别是横摆角速度噪声超过0.5deg/s后参数估计立马开启蹦迪模式。后来自己撸了个移动平均滤波器才镇住场子果然数据预处理才是算法的亲妈。