1. 卡尔曼滤波入门:状态估计与滤波概念、卡尔曼滤波的发明故事、为什么导航需要它

1.1 什么是状态估计?

先问大家一个问题:你开车时,导航告诉你「前方200米右转」。但GPS信号偶尔会飘,你实际可能只有180米。这时候你信谁?

信导航?还是信自己的眼睛?

其实两个都不全信。你把GPS数据和车速、方向盘转角结合起来,心里大概就有数了。这个过程,就是状态估计

状态估计,说白了就是从带噪声的测量数据中,猜出系统真实的状态。这里的「状态」可以是位置、速度、角度,也可以是电池电量、温度。

我做过一个无人机项目,GPS在城市峡谷里经常丢星。那时候我就在想:如果只靠GPS,飞机早撞楼了。必须把IMU(惯性测量单元)的数据也揉进来。这就是状态估计的典型场景。

核心思想: 你永远无法直接测量到「真实值」,只能通过多个不完美的测量,去逼近它。

1.2 滤波是什么?

滤波这个词,搞信号处理的人不陌生。低通滤波、高通滤波,都是把某些频率的成分滤掉。

但卡尔曼滤波里的「滤波」,含义更广。它不只是滤掉噪声,而是在时间上递归地估计状态

我习惯这么理解:

  • 预测:根据上一时刻的状态,猜现在应该在哪
  • 更新:拿到新的测量值,修正刚才的猜测

这两个步骤反复执行,就是卡尔曼滤波的核心循环。

你想想看,这像不像你每天上班?你预估路上要30分钟(预测),结果出门发现堵车(测量),于是你调整路线(更新)。第二天你重新预估,又堵车又调整……这就是一个滤波过程。

1.3 卡尔曼滤波的发明故事

这个故事挺有意思的。1960年,鲁道夫·卡尔曼(Rudolf Kalman)在NASA的一次访问中,提出了这个算法。

当时NASA正在搞阿波罗计划,需要把宇航员送到月球。导航是个大问题——飞船上的计算机性能极差,内存只有几KB。传统的滤波方法计算量太大,根本跑不动。

卡尔曼的算法,只用几个矩阵运算,就能在极低资源下完成状态估计。NASA的工程师一开始还不信,觉得太简单了。结果一测试,效果出奇的好。

我记得有个细节:卡尔曼去NASA做报告时,台下坐着很多资深专家。他讲完后,全场沉默。有人问:「你这个算法,真的能用在飞船上吗?」卡尔曼回答:「它已经在我的车上了。」

嗯,这就是自信。

一个小八卦: 卡尔曼滤波最初叫「线性最小方差估计」,后来才被命名为Kalman Filter。卡尔曼本人其实更偏爱「Rudolf Filter」这个叫法,但没被采纳。

1.4 为什么导航需要它?

导航系统面临一个根本矛盾:传感器都有误差,但导航要求高精度

GPS误差几米到几十米,IMU有漂移,里程计会打滑。任何一个传感器单独用,都靠不住。

卡尔曼滤波的厉害之处在于:它能把多个传感器的优点结合起来,同时抑制各自的缺点。

举个例子:

传感器 优点 缺点
GPS 长期稳定,无漂移 更新慢,易受遮挡
IMU 更新快,短期精度高 长期漂移严重
里程计 低成本,可靠 打滑时完全失效

卡尔曼滤波把GPS的长期稳定性和IMU的短期高精度融合在一起。GPS信号不好时,靠IMU撑住;GPS恢复后,再修正IMU的漂移。

我在做AGV(自动导引车)项目时,遇到过类似问题。车间里金属架子多,GPS信号反射严重。单纯用IMU,半小时后位置就偏了半米。后来加了卡尔曼滤波,把地磁传感器和轮式里程计也融合进来,精度稳定在5厘米以内。

避坑指南: 我曾经以为卡尔曼滤波是万能的,什么传感器都能往里塞。结果发现,如果传感器的噪声特性没建模好,滤波结果反而更差。记住:模型不准,滤波白费

1.5 本章知识体系

下面这张图,是我自己画的知识框架。它把本章的核心逻辑串起来了:

第1章:卡尔曼滤波入门知识体系 状态估计 从噪声中提取真实状态 预测 + 更新 多传感器融合基础 滤波概念 时间递归估计 抑制噪声 状态跟踪 发明故事 1960年,卡尔曼 NASA阿波罗计划 低资源高精度 为什么导航需要卡尔曼滤波? 多传感器融合 · 抑制噪声 · 实时递归 · 低资源消耗 无人机导航 GPS + IMU 融合 自动驾驶 多传感器融合定位 机器人导航 里程计 + 激光雷达

1.6 本章小结

这一章我们聊了三件事:

  1. 状态估计:从带噪声的测量中猜真实状态
  2. 滤波概念:预测 + 更新的递归过程
  3. 卡尔曼滤波的由来:1960年,NASA的导航需求催生了这个算法

我个人觉得,理解卡尔曼滤波的关键,不在于数学公式,而在于思维方式:你永远不要相信任何一个单一的测量,但你可以相信多个测量融合后的结果。

下一章,我们会正式进入数学推导。别怕,我会用最直观的方式讲清楚。

一句话记住本章: 卡尔曼滤波 = 预测 + 更新,用多个不完美的传感器,拼出一个完美的估计。

公众号:蓝海资料掘金营,微信deep3321