卡尔曼滤波小结

最近复习了一下卡尔曼滤波,并在Coursera上完成了课程与练习1,做些简单的笔记备忘。

1. 线性卡尔曼滤波

简单来说,对于一个线性系统的状态,可以通过模型计算获取到一个基于模型的预测状态,再通过实际测量的值来纠正系统的状态。

通过模型来更新状态

  • 系统的控制方程为: $$ \check{x}_k = F_{k-1} \hat{x}{k-1} + G{k-1}u_{k-1} $$

  • 更新状态协方差矩阵: $$ \check{P}_{k}= F_{k-1} \hat{P}{k-1} F{k-1}^{T} + L_{k-1} Q_{k-1} L_{k-1}^{T} $$

通过测量来纠正状态

  • 系统的观测方程为 $$ y_{k} = H_{k} x_{k} $$

  • Kalman gain的计算: $$ K_{k} = \check{P}_{k} H_{k}^T (H_{k} \check{P}{k} H{k}^{T} + R_{k})^{-1} $$

  • 根据Kalman gain进行加权纠正: $$ x_{k} = \hat{x}_{k} + K_{k}(y_{k} - H_{k} {\check{x}}_{k}) $$

  • 更新状态协方差矩阵 $$ \hat{P}_{k} = (I - K_{k}H_{k})\check{P}_{k} $$

值得注意的是,卡尔曼滤波对于线性系统和高斯分布的噪声而言,对于状态的估计是最优的。Tim Babb的博客通过可视化的方式,非常形象地展示了这一点2

2. 扩展卡尔曼滤波(EKF)

线性系统是理想的,实际世界中不会存在。扩展卡尔曼滤波利用Jacobian矩阵对系统控制矩阵和观测矩阵进行近似。电阻因受热而导致的非线性变化以及电机中电流和转速的状态都可以采用扩展卡尔曼滤波进行估计3

参考

  1. Some tutorials, references, and research related to the Kalman filter.

  2. The Seminal Kalman Filter Paper (1960)


  1. State Estimation and Localization for Self-Driving Cars ↩︎

  2. How a Kalman filter works, in pictures by Tim Babb ↩︎

  3. Using nonlinear Kalman filtering to estimate signals ↩︎