1. 卡尔曼滤波入门:状态估计与滤波概念、卡尔曼滤波的发明故事、为什么导航需要它
1.1 什么是状态估计?
先问大家一个问题:你开车时,导航告诉你「前方200米右转」。但GPS信号偶尔会飘,你实际可能只有180米。这时候你信谁?
信导航?还是信自己的眼睛?
其实两个都不全信。你把GPS数据和车速、方向盘转角结合起来,心里大概就有数了。这个过程,就是状态估计。
状态估计,说白了就是从带噪声的测量数据中,猜出系统真实的状态。这里的「状态」可以是位置、速度、角度,也可以是电池电量、温度。
我做过一个无人机项目,GPS在城市峡谷里经常丢星。那时候我就在想:如果只靠GPS,飞机早撞楼了。必须把IMU(惯性测量单元)的数据也揉进来。这就是状态估计的典型场景。
1.2 滤波是什么?
滤波这个词,搞信号处理的人不陌生。低通滤波、高通滤波,都是把某些频率的成分滤掉。
但卡尔曼滤波里的「滤波」,含义更广。它不只是滤掉噪声,而是在时间上递归地估计状态。
我习惯这么理解:
- 预测:根据上一时刻的状态,猜现在应该在哪
- 更新:拿到新的测量值,修正刚才的猜测
这两个步骤反复执行,就是卡尔曼滤波的核心循环。
你想想看,这像不像你每天上班?你预估路上要30分钟(预测),结果出门发现堵车(测量),于是你调整路线(更新)。第二天你重新预估,又堵车又调整……这就是一个滤波过程。
1.3 卡尔曼滤波的发明故事
这个故事挺有意思的。1960年,鲁道夫·卡尔曼(Rudolf Kalman)在NASA的一次访问中,提出了这个算法。
当时NASA正在搞阿波罗计划,需要把宇航员送到月球。导航是个大问题——飞船上的计算机性能极差,内存只有几KB。传统的滤波方法计算量太大,根本跑不动。
卡尔曼的算法,只用几个矩阵运算,就能在极低资源下完成状态估计。NASA的工程师一开始还不信,觉得太简单了。结果一测试,效果出奇的好。
我记得有个细节:卡尔曼去NASA做报告时,台下坐着很多资深专家。他讲完后,全场沉默。有人问:「你这个算法,真的能用在飞船上吗?」卡尔曼回答:「它已经在我的车上了。」
嗯,这就是自信。
1.4 为什么导航需要它?
导航系统面临一个根本矛盾:传感器都有误差,但导航要求高精度。
GPS误差几米到几十米,IMU有漂移,里程计会打滑。任何一个传感器单独用,都靠不住。
卡尔曼滤波的厉害之处在于:它能把多个传感器的优点结合起来,同时抑制各自的缺点。
举个例子:
| 传感器 | 优点 | 缺点 |
|---|---|---|
| GPS | 长期稳定,无漂移 | 更新慢,易受遮挡 |
| IMU | 更新快,短期精度高 | 长期漂移严重 |
| 里程计 | 低成本,可靠 | 打滑时完全失效 |
卡尔曼滤波把GPS的长期稳定性和IMU的短期高精度融合在一起。GPS信号不好时,靠IMU撑住;GPS恢复后,再修正IMU的漂移。
我在做AGV(自动导引车)项目时,遇到过类似问题。车间里金属架子多,GPS信号反射严重。单纯用IMU,半小时后位置就偏了半米。后来加了卡尔曼滤波,把地磁传感器和轮式里程计也融合进来,精度稳定在5厘米以内。
1.5 本章知识体系
下面这张图,是我自己画的知识框架。它把本章的核心逻辑串起来了:
1.6 本章小结
这一章我们聊了三件事:
- 状态估计:从带噪声的测量中猜真实状态
- 滤波概念:预测 + 更新的递归过程
- 卡尔曼滤波的由来:1960年,NASA的导航需求催生了这个算法
我个人觉得,理解卡尔曼滤波的关键,不在于数学公式,而在于思维方式:你永远不要相信任何一个单一的测量,但你可以相信多个测量融合后的结果。
下一章,我们会正式进入数学推导。别怕,我会用最直观的方式讲清楚。
公众号:蓝海资料掘金营,微信deep3321