卡尔曼滤波这个东西,我做了五年自动驾驶状态估计才真正吃透。我见过太多人对着那堆矩阵方程发呆,其实没那么玄学。它本质上就是一套"信一半、疑一半"的递归更新规则——传感器量测不可靠,模型预测也偏,那就用最优加权把两者融合起来,得到比任何单一来源都靠谱的状态估计。原理十分钟能讲完,工程里坑能踩三年,下面结合我实际项目聊聊。
卡尔曼滤波怎么理解
核心就两步。预测阶段,你用上一时刻状态加控制输入推一步,同时把协方差矩阵撑大——"我没观测,所以不确定性涨了"。更新阶段,新量测进来,算一个卡尔曼增益,它本质是个自适应权重:量测噪声大,增益小,你更信模型;模型噪声大,增益大,你更信量测。就这么个缩放逻辑,不需要高数直觉也能握住。
真正让人头大的是过程噪声Q怎么定。我早期无人机项目里Q全拍脑袋填,结果滤波器要么锁死不动要么疯狂震荡,调了一周才搞明白Q和R的比例关系才是命门,绝对值反而没那么要紧。
卡尔曼滤波用在哪
最经典的场景是GPS和IMU融合定位。GPS几秒蹦一个位置,IMU以100Hz吐加速度和角速度,时间尺度差几十倍,Kalman滤波就是把IMU连续预测和GPS稀疏量测缝到一块。我做过一个项目,纯IMU积分十分钟漂移八米,上了滤波稳到十几厘米,飞行手感完全两个东西。
别只盯着导航。机器人SLAM位姿估计、工业电机转速观测、甚至量化交易里拿EKF估隐状态(比如市场波动率),我有个做金融的朋友说比直接取历史均值好一截,这属于把工具用到边界之外了。
卡尔曼滤波为啥不准
线性假设是原罪。真实系统大多非线性,硬套标准卡尔曼增益就算歪了。工程上一般上EKF或UKF,但哪怕用UKF,量测里混进一个跳变或丢包,坏点能把状态拖偏好几秒。我后来加了马氏距离门限,超阈值的点直接丢,输出稳了不止一个量级。
还有初值。P矩阵给太大,前几十步全在"学习",输出一坨;给太小,滤波器不敢信模型更新,收敛慢得离谱。没有银弹,拿离线数据标一个合理起点比啥都强。
工具再顺,底层噪声模型不匹配,就是垃圾进垃圾出。下次再有人问卡尔曼滤波难不难,我一般回答:原理十分钟,工程三年。










