3. 线性卡尔曼滤波回顾
无迹卡尔曼滤波(UKF)并不是凭空出现的新算法,它是在经典线性卡尔曼滤波(KF)的框架上,用确定性采样替代雅可比矩阵线性化而发展出来的。因此,在进入 UKF 之前,必须把线性 KF 的四个核心要素彻底理清:状态空间模型、预测与更新步骤、卡尔曼增益、协方差传播与数值稳定性。只有理解了线性 KF 中“信息如何流动、不确定性如何被压缩”,才能真正看懂 UKF 中 sigma 点为什么那样取、权重为什么那样算。
一、状态空间模型:把动态系统写成两行方程
线性 KF 处理的对象是线性高斯系统,其状态空间模型由状态方程和观测方程共同描述:
x_k = F_k · x_{k-1} + B_k · u_k + w_k , w_k ~ N(0, Q_k)
z_k = H_k · x_k + v_k , v_k ~ N(0, R_k)
其中 x_k 是 k 时刻的状态向量,F_k 是状态转移矩阵,B_k 是控制输入矩阵,u_k 是已知控制量,w_k 是过程噪声;z_k 是观测向量,H_k 是观测矩阵,v_k 是观测噪声。两个噪声都假设为零均值高斯白噪声,协方差分别为 Q_k 和 R_k。
这个模型的关键假设有三条:系统动态是线性的、噪声是高斯的、噪声在时间上不相关。正是这三条假设,使得高斯分布经过线性变换后仍然是高斯分布,从而可以用均值和协方差两个量完整描述状态的后验分布。UKF 保留了“高斯假设”,但放弃了“线性假设”,这是理解两者关系的起点。
二、预测与更新:KF 的两步循环
线性 KF 的每一次迭代都分为预测(时间更新)和更新(观测更新)两步。预测步利用状态方程把上一时刻的后验估计推进到当前时刻,得到先验估计;更新步利用当前观测对先验进行修正,得到后验估计。
- 预测步:先传播状态均值
x̂_k⁻ = F_k x̂_{k-1} + B_k u_k,再传播协方差P_k⁻ = F_k P_{k-1} F_kᵀ + Q_k。 - 更新步:先计算新息
y_k = z_k − H_k x̂_k⁻,再计算新息协方差S_k = H_k P_k⁻ H_kᵀ + R_k,然后计算卡尔曼增益K_k = P_k⁻ H_kᵀ S_k⁻¹,最后修正均值和协方差。
更新步的均值与协方差公式为:
x̂_k = x̂_k⁻ + K_k · (z_k − H_k x̂_k⁻)
P_k = (I − K_k H_k) · P_k⁻
可以看到,预测步让不确定性“变大”(加上 Q),更新步让不确定性“变小”(观测带来信息)。KF 的整个生命周期就是“膨胀—收缩”的交替过程。
三、卡尔曼增益:预测与观测之间的“信任分配器”
卡尔曼增益 K_k 是 KF 中最具解释性的量。它决定了新息 y_k 被采纳多少。从公式 K_k = P_k⁻ H_kᵀ S_k⁻¹ 可以看出:
- 当先验协方差
P_k⁻很大时,说明预测很不确定,K_k变大,滤波器更愿意相信观测。 - 当观测噪声协方差
R_k很大时,S_k变大,K_k变小,滤波器更愿意相信预测。 - 当
H_k把某些状态分量映射到观测空间时,只有被观测到的方向才会获得增益修正。
因此,KF 的更新不是简单地“取平均”,而是按照预测和观测各自的不确定性进行加权。这个思想在 UKF 中完全保留,只是 P_k⁻ 和 S_k 不再由线性矩阵传播得到,而是由 sigma 点统计得到。
四、协方差传播与数值稳定性
协方差传播是 KF 的“骨架”。预测步的 P_k⁻ = F_k P_{k-1} F_kᵀ + Q_k 和更新步的 P_k = (I − K_k H_k) P_k⁻ 共同决定了估计不确定性的演化。理论上,只要 P_0 对称正定、Q_k 和 R_k 对称半正定,P_k 应始终保持对称正定。但在有限精度浮点运算中,直接使用这两个公式可能出现问题:
| 数值问题 | 产生原因 | 典型后果 | 常见对策 |
|---|---|---|---|
| 协方差失去对称性 | 矩阵乘法舍入误差累积 | 后续增益计算出现虚部或异常 | 每步强制 P = (P + Pᵀ)/2 |
| 协方差失去正定性 | 减法形式 (I − K H)P 相消误差 |
对角线出现负值,滤波发散 | 改用 Joseph 形式更新 |
| 条件数过大 | 状态量纲差异大、P 接近奇异 | 求逆不稳定,增益剧烈波动 | 平方根滤波、U-D 分解 |
| Q 或 R 设置过小 | 模型过度自信 | 增益趋零,滤波器“僵死” | 合理标定 Q、R,加入下限保护 |
其中 Joseph 形式更新是工程中最常用的稳定化手段:
P_k = (I − K_k H_k) P_k⁻ (I − K_k H_k)ᵀ + K_k R_k K_kᵀ
该形式在数学上与标准公式等价,但由于保持了对称正定结构,对舍入误差更鲁棒。此外,平方根滤波(如 Cholesky 分解传播)和 U-D 分解滤波把协方差分解为三角因子进行传播,从根本上避免负定问题,代价是计算量增加。
P 的对角线设置极小正值下限;若状态维数较高或量纲差异显著,优先考虑平方根 UKF 实现。
五、案例场景:一维匀速运动目标跟踪
设状态为 x = [位置, 速度]ᵀ,采样周期 T = 0.1 s,状态转移矩阵为:
F = [[1, T],
[0, 1]]
H = [[1, 0]] # 只观测位置
Q = diag([0.01, 0.04]) # 过程噪声
R = [[0.25]] # 观测噪声
初始 P_0 = diag([1, 1])。第一次预测后,位置和速度的方差都会因 F P Fᵀ 而增大,再叠加 Q;第一次更新时,由于只观测位置,K_k 的第一行较大、第二行较小,位置被显著修正,速度只被间接修正。随着迭代进行,P 逐渐收缩并趋于稳态,K_k 也趋于常值。这个例子说明:协方差传播不仅决定估计精度,还决定滤波器“学习速率”的变化。
六、常见误区与复盘
- 误区一:把 KF 当成“加权平均”。KF 的权重由协方差动态决定,不是固定系数;忽略
P的传播就无法理解增益变化。 - 误区二:只调 Q、R 不看 P 的数值健康。若
P已失去正定性,再调 Q、R 也只是掩盖问题,应优先检查更新形式。 - 误区三:认为线性 KF 与 UKF 无关。UKF 的预测和更新框架与 KF 完全一致,区别仅在于用 sigma 点传播均值和协方差,因此 KF 的增益公式、协方差收缩逻辑在 UKF 中仍然成立。
- 复盘要点:先确认状态空间模型是否线性、噪声是否近似高斯;再检查预测与更新公式是否配对;最后检查协方差是否对称正定、增益是否出现异常跳变。
掌握线性 KF 的这四个要素后,再看 UKF 就会发现:它并没有推翻 KF,而是把“线性变换传播高斯分布”替换为“确定性采样传播高斯分布”。卡尔曼增益仍然是信任分配器,协方差传播仍然是核心,数值稳定性仍然是工程落地的关键。