如何直观地理解卡尔曼增益?


30

卡尔曼滤波算法的工作原理如下

初始化和。x^0|0P0|0

每次迭代k=1,,n

预测

预测(先验)状态估计 预测(先验)估计协方差更新

x^k|k1=Fkx^k1|k1+Bkuk
Pk|k1=FkPk1|k1FkT+Qk

创新或度量残差 创新(或残差)协方差 最佳 卡尔曼增益 更新(后验)状态估计 更新(后验)估计协方差

y~k=zkHkx^k|k1
Sk=HkPk|k1HkT+Rk
Kk=Pk|k1HkTSk1
x^k|k=x^k|k1+Kky~k
Pk|k=(IKkHk)Pk|k1

卡尔曼增益表示误差相对于先前估计的相对重要性。Kky~kx^k|k1

我想知道如何直观地理解卡尔曼增益的公式吗?考虑状态和输出为标量的情况,为什么增益更大,何时Kk

  • Pk|k1更大

  • Hk较大

  • Sk较小?

谢谢并恭祝安康!


这是一个很难正确回答的问题。我尝试过,但自己的答案不服。基本上,增益控制着您对估计值的信任程度,但是我无法解释该增益是如何符合的。
Jav_Rock 2012年

Answers:


18

我找到了一种直观思考Kalman Gain的好方法。如果你写这样KK

 Kk=PkHkT(HkPkHkT+Rk)1=PkHkTHkPkHkT+Rk

您将认识到,矩阵的相对大小()和()控制了滤波器对预测状态估计()的使用与测量值()之间的关系。RkPkxkk

 limRk0PkHkT HkPkHkT+Rk =Hk1

 limPk0PkHkT HkPkHkT+Rk =0

将第一个限制代入度量更新方程式

 x^k=xk+Kk(y~kHkxk)

这表明,当的大小较小时,意味着测量是准确的,状态估计主要取决于测量。R

当准确知道状态时,比小,并且滤波器主要忽略测量,而是依赖于从先前状态()得出的预测。HPHTRxk


2
谢谢!如果我是正确的,不是单调相对于。KkHk
蒂姆(Tim

12

卡尔曼增益告诉您通过测量可以更改多少估计值。

Sk是测量值的估计协方差矩阵。这告诉我们测量中的“可变性”。如果太大,则意味着度量“变化”很多。因此,您对这些测量的信心很低。另一方面,如果,变异性低,我们对测量的信心就会增加。当我们对自己的测量结果有信心时,就有信心所获得的信息足以使我们更新/更改状态估算值。因此,卡尔曼增益较高。zkSk

Pk是估计状态协方差矩阵。这告诉我们状态的“可变性” 。如果,则意味着状态估计会发生很大变化。因此,您需要能够通过新的度量来更改估算值。结果,卡尔曼增益更高。xkPk

相反,如果小,则您知道状态不会变化太多,因此您不想每次都对估计值进行过多更改。@Jav_Rock的答案说,如果,则。换句话说,他暗示,如果您认为自己的状态不再变化,则不要尝试更改估计值。PkPk0K0


2

Jav_Rock明白了。其实,如果你写这样Kk

 Kk=PkHkT(HkPkHkT+Rk)1=HkHkPkHkTHkPkHkT+Rk

分数的分子代表从模型传播的不确定性,而代表测量的不确定性。因此,分数的值代表我们应该信任测量值的程度,如Jav_Rock所述。Rk

至于,它只是将观察结果转换回状态,因为它是我们要更新的状态,而不是观察结果。Hk

最后,增益计算我们应该从观察中进行多少校正,并将观察的校正转换回状态的校正,从而导致状态估计的更新:Kk

 x^k=xk+Kk(y~kHkxk)


-1

我正在研究卡尔曼滤波器(KF)算法。我观察到,卡尔曼增益处理算法随时间的收敛,即算法校正和最小化残差的速度。

进入方程式,选择一个初始卡尔曼增益值,并将其从低到高变化,这可以为您提供一个近似值。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.