002|Kalman滤波:把过去的观测压缩成可递推的信念
原论文:R. E. Kalman,A New Approach to Linear Filtering and Prediction Problems,1960,Journal of Basic Engineering 82:35–45。原论文全文。以下公式用现代离散状态空间记号;原文的连续时间关联与控制对偶性不被等同为后来的全部滤波变体。
先接住前作的问题
D-H把关节变量变成理想位姿,却不估计输入与模型误差。这是教学上的接口联系,不是Kalman滤波从D-H推导而来。Kalman面对的是Wiener式滤波的历史信息组织问题:怎样用当前状态和误差统计继续更新,而不反复处理全部旧观测?
五个前置概念
五个前置概念是:状态空间描述随时间演化;协方差描述误差方向与相关性;条件期望利用已有信息;正交投影刻画线性最小均方解;可观测性决定哪些隐藏量可以被数据区分。
一、问题设定:历史观测怎样压缩为可递推的状态信念
机器人轮速计容易累积误差,外部定位又带噪声。应该相信哪一个?Kalman滤波不固定规定“各信一半”,而根据预测和测量的不确定性,逐步计算融合权重。它同时递推状态估计与误差协方差,使越来越长的历史不必全部保存为原始测量。
从观测到状态:首先明确隐藏量
设机器人在直线上移动,状态可取位置与速度,测量只有位置。速度虽然没有直接传感器,也可以通过时间上连续的位置变化被推断。状态不是“当前看到的数据”,而是足以描述未来演化的内部变量。
这里 是已知输入, 表示模型未描述的扰动, 表示测量噪声;其协方差为 。最简单推导要求相关噪声满足相应零均值、不相关条件。若噪声相关,需要显式改变公式,不能只把它们名字写进配置文件。
| 要素 | 含义 |
|---|---|
| 输入 | 上一步估计、控制量、当前测量、模型矩阵与协方差 |
| 输出 | 状态估计及其误差协方差 |
| 目标 | 最小化估计误差的二阶量;高斯条件下对应条件均值 |
| 理论前提 | 线性模型与正确的统计描述;矩阵运算可定义 |
| 机器人关系 | 定位、传感器融合与后续EKF/SLAM的基础 |
二、从误差正交性推导预测与创新增益
预测与校正为什么能够分开
这里 是状态估计, 是估计误差的协方差;上标 表示吸收当前测量前的预测,上标 表示校正后的结果。下式省略了模型矩阵的时刻下标。预测先回答“如果暂时没有新观测,状态应该在哪里”:
状态按照动力学传播,不确定性也要一起传播。过程噪声使预测不会因为反复计算就越来越确定。
观测到来后,创新为 。它是“实际测量减预测测量”,所以两者必须在同一测量空间。令 表示创新的协方差, 表示把测量残差映回状态修正的增益。增益与校正为:
还可以用单位检查增益:若标量状态位置用米、测量用厘米,则 , 与 用平方厘米, 的单位是米/厘米,故 才回到米。把测量单位换了却不同时变换 和 ,就是换了模型。Särkkä §4.3将状态分布和预测测量分布分开书写,这里用同样层次检查正文公式。
增益不是每个传感器固定的可信分数。它还取决于状态间相关性与测量几何,例如一次位置观测可以通过交叉协方差修正速度。
增益可以从一个很短的最优化推出来。记先验误差 ,采用校正 后,有 。若 ,将误差外积取期望,再对 关于 求导,就得到
于是增益是一个二阶统计量决定的线性最小均方解。高斯性不是这一步求导的必要条件;它额外保证完整后验仍能由均值和协方差表示,并使这个线性解等于条件均值。若 ,则 ,创新协方差也要加上 。只修改增益分子而继续使用原来的 同样错误。
原创教学反例:先验方差为1,一次独立观测的方差也为1,更新后为 。把同一条观测复制后当第二条独立观测,程序会报告 ,但没有增加任何信息。真正第二次观测若只是第一次的副本,其与现有估计误差已经相关。这个错误正是空间不确定性必须保留交叉协方差的原因,后者直接继承线性估计与一阶误差传播思想。
以下回到 的先验误差与测量噪声不相关情形,下一节伪代码也使用此假设。现代数值实现可用Joseph形式维护协方差:
这是教学实现建议,不将其作为原论文独创结论。求增益时也通常解线性方程而不是显式构造矩阵逆。
增益把状态相关性转成修正权重;实现时还必须维护协方差。下面先用标量融合检查权重,再用重复观测图暴露把同一信息算两次的错误。
三、实现协方差更新,检查标量融合的权重
输入:x估计、P、动力学F/B/Q、测量模型H/R、u和z
预测 x_minus = F*x + B*u
预测 P_minus = F*P*F转置 + Q
计算 innovation = z - H*x_minus
计算 S = H*P_minus*H转置 + R
通过线性求解得到 K = P_minus*H转置*S的逆
校正 x = x_minus + K*innovation
用Joseph形式校正P,检查对称性与数值正定性
输出x、P及创新统计
教学例子:预测与测量各信多少
考虑标量位置估计,预测为10米,预测方差4,观测为12米,测量方差1,则 ,更新位置为11.6米,后验方差为0.8。结果靠近测量,因为测量相对更可靠。
若把测量方差改为100,增益约0.0385,更新位置约10.077米。算法没有说“新观测一定更好”,而是按不确定性决定修正幅度。
再考虑隐藏的系统偏差:定位器总是偏移2米,但模型仍假设零均值小噪声。滤波器可以非常稳定地收敛到错误位置,并报告很小方差。平滑曲线和小协方差不能证明真实准确;必须比较真实误差与预测不确定性的一致性。
四、用重复观测图辨认虚假信息,再读原文定理

读图:柱长是本文手算的方差,不是采样实验。一次独立观测把 1 变为 1/2;把副本当独立数据才会错误地报告 1/3。复制数据没有带来对应的真实信息增加。
原文的线性最优结论依赖二阶统计模型;把它提升为所有估计器中的最优,还需对应的分布与损失条件。
引言(PDF 第 1–2 页)的关键转向,是把无限增长的观测历史压缩成状态及其误差统计;因此应比较递推所需的信息,而非把论文读成硬件速度排行榜。
最优估计与正交投影(PDF 第 3–4 页)说明两层不同结论:合适损失与分布条件下,条件均值给出最优估计;在线性估计空间内,最优误差应与已有测量正交。后者解释为什么下一次更新只需处理不能由旧信息解释的创新。
Theorem 3 的递推与协方差方程(PDF 第 7 页)把这一结构写成可计算递推。读公式时同时跟踪状态估计和误差协方差,才能理解增益来自不确定性,而非任意固定权重。预测例子(PDF 第 9 页)展示具体随机过程的用法,不能外推为任意非线性机器人系统的保证。
原文明确区分已有概率论材料与 Theorems 3、4 的新结果;条件期望、协方差及全部线性代数不都由本篇首次提出。
这里没有训练数据规模、GPU数量或随机种子竞赛。若要评价现代实现,应另行设计重复仿真与真实传感器试验,不能把自构实验结果冒充原文。
五、检查统计失配、多峰后验与不可观测方向
“最优”始终带条件。在线性、已知二阶统计设定下可以讨论最优线性估计;联合高斯进一步使条件均值为线性,才得到更强的全体估计器比较。非高斯多峰后验用均值与协方差表示可能掩盖重要结构,例如机器人可能位于两个相似走廊中的任何一个。
非线性系统中的EKF需要线性化,UKF使用不同近似,这些不是直接套用1960年定理就自动得到全局保证。可观测性也不能由滤波器创造:如果传感器和运动从未提供某个方向的信息,调整Q与R不能凭空确定该量。
可用创新检验模型是否合理:创新不应长期带偏,时间相关性也不应与所设统计模型明显冲突。检测异常后,应检查同步、坐标和噪声模型,而不是只把R调大直到图像好看。
六、追问:同一观测复制两份后,怎样设计检验才能暴露重复计数?
同一观测复制两份后,怎样设计检验才能暴露重复计数?
参考答案:固定先验和唯一一次真实测量,先更新一次,再把完全相同的数值作为副本送入。按正文标量设定,第一次方差从1变为1/2;若第二次变为1/3,而真实数据来源没有增加,就暴露了独立性假设被重复使用。测试应比较真实误差与报告方差,不能只检查输出均值是否更平滑;相关测量必须连同交叉项建模。
七、把协方差传入空间关系,或改用多峰表示
- 直接继承:空间不确定性:地图还要告诉机器人“有多不确定”。把线性融合与协方差传播用于有误差的坐标关系网络。
- 平行路线:Bootstrap Filter:用一群可能状态,代替一个高斯椭球。当后验多峰时改用样本集合表示分布,不能继续把单个均值与协方差当完整答案。
八、自测与参考答案
问题1:没有直接测量速度,为什么位置观测有时还能更新速度?
参考答案:动力学让位置与速度误差相关,P的交叉项把位置创新传给速度分量。如果模型或运动没有建立足够信息,这种更新也可能无法可靠识别速度;能写出增益公式不等于可观测。
问题2:把R设得很小,会让估计更准确吗?
参考答案:它让算法更相信测量,却不改变测量本身的真实误差。如果R小于实际噪声或忽略偏差,估计可能抖动并过度自信。应由标定和创新统计支持噪声设定。
问题3:滤波输出更平滑,是否足以证明改进?
参考答案:不足。过度平滑可能产生滞后,快速转弯时反而偏差更大。应同时评估真实误差、响应延迟以及误差和协方差的一致性,并保持相同测量输入与评估区间。