在车辆动力学控制领域,质心侧偏角和横摆角速度是两个关键状态参数。它们直接影响着车辆的稳定性和操控性能,但这两个参数往往难以通过传感器直接测量获得。这就是为什么我们需要借助卡尔曼滤波(KF)这样的状态估计算法,通过可测量的输入输出信号来推算这些关键状态量。
本次项目采用Carsim与Simulink联合仿真环境,基于线性二自由度车辆模型,实现了两种不同形式的卡尔曼滤波设计:一种是使用S函数编写的自定义KF实现,另一种是利用Simulink自带的KF模块搭建。通过对比这两种实现方式在相同工况下的表现,我们可以深入理解KF算法在车辆状态估计中的应用特点。
提示:质心侧偏角是指车辆速度方向与车身轴线方向的夹角,是评估车辆稳定性的重要指标;横摆角速度则是车辆绕垂直轴的旋转角速度,直接影响车辆的转向响应特性。
Carsim作为专业的车辆动力学仿真软件,能够提供高精度的车辆模型和逼真的道路环境。而Simulink则擅长算法开发和信号处理。两者的联合可以充分发挥各自优势:
Carsim设置:
Simulink接口:
车辆动力学模型的选择需要在精度和复杂度之间取得平衡。对于状态估计问题,线性二自由度模型通常已经足够:
code复制% 车辆参数定义
m = 1723; % 整车质量(kg)
a = 1.232; % 前轴到质心距离(m)
b = 1.468; % 后轴到质心距离(m)
kf = -62618; % 前轮侧偏刚度(N/rad)
kr = -110185;% 后轮侧偏刚度(N/rad)
Iz = 4175; % 横摆转动惯量(kg·m²)
% 状态空间方程
A = [ (kf+kr)/(m*v) , (a*kf - b*kr)/(m*v^2)-1 ;
(a*kf - b*kr)/Iz , (a^2*kf + b^2*kr)/(Iz*v) ];
B = [ -kf/(m*v) ; -a*kf/Iz ];
这个模型将车辆简化为仅有侧向和横摆两个自由度,假设:
使用S函数编写KF可以最大程度地实现算法定制化,特别适合需要动态调整模型参数的场合:
c复制static void mdlOutputs(SimStruct *S, int_T tid)
{
real_T *x = ssGetContStates(S);
real_T *y = ssGetOutputPortRealSignal(S,0);
real_T v = *ssGetInputPortRealSignalPtr(S,1); // 获取实时车速
// 动态更新A矩阵
A[0][0] = (kf + kr)/(m*v);
A[0][1] = (a*kf - b*kr)/(m*v*v) - 1;
A[1][0] = (a*kf - b*kr)/Iz;
A[1][1] = (a*a*kf + b*b*kr)/(Iz*v);
// 预测步骤
x[0] += (A[0][0]*x[0] + A[0][1]*x[1] + B[0]*u) * step_size;
x[1] += (A[1][0]*x[0] + A[1][1]*x[1] + B[1]*u) * step_size;
// 更新输出
y[0] = x[0]; // 横摆角速度
y[1] = x[1]; // 质心侧偏角
}
关键实现细节:
Simulink自带的Kalman Filter模块提供了更便捷的实现方式:
模块参数配置:
观测矩阵设计:
当使用横摆角速度传感器和侧向加速度传感器时:
code复制H = [1 0; % 横摆角速度观测
(a*kf - b*kr)/(m*v) (kf + kr)/(m)]; % 侧向加速度观测
噪声参数调整:
在标准双移线工况下(车速80km/h),两种实现方式的对比结果:
| 性能指标 | S函数版 | 模块版 |
|---|---|---|
| 响应延迟(s) | 0.15 | 0.35 |
| 估计方差(deg²) | 0.08 | 0.12 |
| 最大误差(deg) | 1.2 | 1.8 |
| 代码复杂度 | 高 | 低 |
S函数版在响应速度上优势明显,主要得益于:
在80km/h急转向工况下(方向盘阶跃输入90度):
S函数版特殊处理:
c复制// 检测到快速转向时增大过程噪声
if (fabs(delta_dot) > 0.5) {
Q[0][0] = 0.1; // 横摆角速度噪声
Q[1][1] = 0.05; // 侧偏角噪声
}
// 低速保护
if (v < 5) {
A[0][1] = -1; // 简化低速模型
Q[0][0] *= 2; // 增大噪声
}
模块版局限性:
根据项目需求选择合适的实现方式:
选择S函数版当:
选择模块版当:
Q矩阵调试:
R矩阵确定:
收敛性检查:
估计结果发散:
响应滞后明显:
低速性能差:
基于此框架可以进一步开发:
车辆稳定性控制:
参数自适应:
传感器融合:
在实际工程应用中,这种状态估计方法已经成功用于: