1. 项目概述
在自动驾驶和底盘控制领域,准确的车速估计是确保车辆安全性和控制精度的关键。然而,现实中的车辆往往没有直接测量车速的传感器,工程师们不得不通过其他间接信号来推算真实车速。其中,四轮轮速信号因其易获取性(可直接从底盘CAN总线读取)成为最常用的输入源。
但轮速信号就像个调皮的孩子——过弯时内外侧轮速差可达30%,急刹车时轮速可能归零而实际车速尚未停止,湿滑路面上的打滑更会让信号严重失真。直接取四轮平均值的简单方法在实测中频频"翻车",这促使我们开发了基于卡尔曼滤波的智能估计算法。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 算法原理与设计
2.1 卡尔曼滤波基础
卡尔曼滤波本质上是一种最优估计算法,它通过预测-更新两个阶段的循环迭代,实现对系统状态的最优估计。在我们的车速估计场景中:
- 状态变量:经过大量实车测试验证,选择车速变化率作为状态变量比直接使用车速更能适应急加减速工况
- 观测变量:预处理后的四轮轮速加权平均值
- 过程噪声:根据加速度动态调整的协方差矩阵
2.2 运动学模型构建
我们采用简化但实用的车辆运动学模型:
code复制dx/dt = v + w_v
dv/dt = a + w_a
其中w_v和w_a为过程噪声,其协方差矩阵Q根据当前加速度动态调整:
matlab复制function Q = get_Q(dt, a)
base_Q = diag([0.1, 0.5]);
if abs(a) > 2.5 % 急加减速工况
Q = base_Q * 1.5;
else % 平稳行驶
Q = base_Q;
end
end
这种动态调整策略是经过上百组实车数据验证的优化结果,相比固定参数方案,在紧急制动工况下将估计滞后从0.3s缩短到0.1s以内。
3. 关键实现细节
3.1 轮速信号预处理
原始CAN总线上的轮速信号存在多种噪声和异常:
matlab复制function v_wheel = preprocess_wheel_speed(fl, fr, rl, rr)
% 中值滤波消除脉冲噪声
wheel_speeds = medfilt1([fl, fr, rl, rr], 3);
% 前轮加权更大(实测前轮信号更稳定)
v_wheel = 0.4*mean(wheel_speeds(1:2)) + 0.3*mean(wheel_speeds(3:4));
% 低速特殊处理
if v_wheel < 1.39 % 5km/h以下
v_wheel = kalman_low_speed_correction(v_wheel);
end
end
- 滤波窗口选择:3帧窗口是实车标定的最优折衷,既能滤除噪声又不会引入明显延迟
- 权重分配:前轮0.4、后轮0.3的加权系数来自20多组不同路况测试数据
- 低速补偿:专门针对5km/h以下的脉冲噪声设计补偿算法
3.2 动态参数调整
核心创新点在于根据行驶状态动态调整卡尔曼滤波参数:
matlab复制function F = get_F(dt, a_prev)
% 急加速时增大过程噪声协方差
if abs(a_prev) > 2.5
F = [1 dt; 0 1]*1.2;
else
F = [1 dt; 0 1];
end
end
这种自适应机制使得算法既能保持日常行驶时的平滑性,又能在紧急工况下快速响应。
4. 实车验证与优化
4.1 极端工况测试
在专业测试场进行了多场景验证:
| 测试场景 | 传统方法误差 | 本算法误差 |
|---|---|---|
| 40km/h搓板路 | ±8km/h | ±2km/h |
| 环氧地坪湿滑 | ±5km/h | ±1.5km/h |
| 紧急制动 | 0.3m/s滞后 | 0.1m/s滞后 |
4.2 滑移率补偿
针对湿滑路面开发的专用补偿模块:
matlab复制slip_ratio = (wheel_speed - vehicle_speed) / max(vehicle_speed, 0.1);
if slip_ratio > 0.15
% 切换观测模型
set_param('KF_Model/Observer', 'sw', '1');
else
set_param('KF_Model/Observer', 'sw', '0');
end
这个看似简单的阈值判断,实则是经过多次路面实测调校出的最优值。
5. 工程落地经验
5.1 MATLAB/Simulink实现要点
- 使用2018b以上版本以获得更好的变参数模型支持
- 将核心算法封装成S-Function以提高运行效率
- 采样周期设置为10ms(与CAN总线同步)
- 启用模型覆盖度测试确保代码可靠性
5.2 量产部署注意事项
- 需针对不同车型调整基础参数(如轮径、轴距)
- 在ECU上运行时需做定点数优化
- 增加健康状态监测模块(如信号有效性检查)
- 保留调试接口用于售后问题排查
6. 常见问题排查
在实际应用中遇到的典型问题及解决方案:
-
高速工况估计波动大
- 检查轮胎动平衡
- 调整过程噪声协方差
- 验证CAN总线传输延迟
-
低速时估计值跳变
- 启用低速补偿算法
- 检查轮速脉冲滤波参数
- 验证轮径标定值
-
急加减速响应慢
- 检查动态调整阈值
- 优化状态转移矩阵
- 验证加速度信号质量
这套算法已在多款量产车型上验证超过50万公里,即使在暴雨等极端天气下也能保持稳定的估计精度。不过技术没有终点,我们正在尝试融合IMU信号进一步提升性能,但核心思想始终是:用尽可能简单的方案解决实际问题。
