Contents

卡尔曼过滤器(Kalman Filter)的基本原理

卡尔曼过滤器主要用于这样一种场景: 根据测量数据(带有一定的误差)来预测运动或者静止物体的属性。比如温度测量,雷达观测等。

卡尔曼滤波器主要分为两个步骤,计算并记录一些中间状态,然后根据中间状态和最新的测量值:

  1. 更新中间状态(状态更新方程)
  2. 预测下一个值(状态预测方程) 以一个简单的场景为例,用雷达观测匀速运动的物体的距离。
状态更新方程

$$ \hat{x}_{n,n} = \hat{x}_{n,n-1} + K_n ( z_n - \hat{x}_{n,n-1} ) $$ $$ p_{n,n} = (1-K_n)p_{n,n-1} $$ $$ K_n = \frac{p_{n,n-1}}{\,p_{n,n-1} + r_n\,} $$

  • $\hat{x}_{n,n-1}$ 是在$n-1$时刻预测$n$时刻物体的距离
  • $\hat{x}_{n,n}$ 是已经拿到$n$时刻的测量值后,对$n$时刻的预测值进行修正
  • $z_n$ 是$n$时刻的测量值
  • $p_{n,n-1}$ 是$n-1$时刻预测$n$时刻数据的方差
  • $r_n$ 是$n$时刻测量数据的方差
  • $K_n$ 被称为卡尔曼增益,它可以理解为一个权重,用于更新$n$时刻数值的时,调节观测值和历史预测值的占比。
状态预测方程

状态预测需要对物体的运动进行建模,这里是简单的匀速运动公式,距离等于速度乘以时间。 $$ \hat{x}_{n+1,n} = \hat{x}_{n,n} + \Delta t v $$ $$ p_{n+1,n} = p_{n,n} $$

  • $\hat{x}_{n+1,n}$ 是在$n$时刻预测$n+1$时刻的位置
  • $v$ 是物体运动的速度,由于这里是匀速运动,所以速度不变。
  • $p_{n+1,n}$ 是在$n$时刻预测$n+1$时刻的位置的方差
初始值,输入值,迭代

整个公式实质上就是根据初始值和测量值,不断的更新中间状态,并预测下一个状态。 其中初始值有:

  • $\hat{x}_{0,0}$ 物体的初始位置

  • $p_{0,0}$ 初始位置的方差

  • $r_n$ 每次测量数据的方差

  • $v$ 物体运动速度 这些初始值一般是从测量仪器的说明书中获得,或是直接取经验值。 输入值有:

  • $z_{n}$ 每次的测量数据 迭代: 中间状态的更新是从$(n,n-1)$到$(n,n)$,预测是从$(n,n)$到$(n+1,n)$,不管位置还是速度皆是如此。

总结

卡尔曼滤波器从直观上理解,就是用测量得到的数据不断的去预测并逼近真实值,其中测量值的误差越小,权重$K_n$越大,预测值将会更多的考虑测量值,反之亦然。 另外上述方程省略了过程噪声,而且是一维的情况,一般而言位置会有x,y,z三个值,速度也是,对于多维的情况,上述公式会变成矩阵的形式,方差也会变成协方差矩阵。另外物体运动的建模公式除了线性的公式(匀速运动,加速度运动),还有非线性的情况。但是基本原理就是上述这些。

参考资料