卡尔曼滤波---简述(一)

感慨

虽然本人只是个小小码农,主攻java后台开发,但吾以为,学习技术,应当不分领域。
本文首先假设读者像我当初一样,是个对卡尔曼滤波望而生畏的小白。

参考链接

https://zhuanlan.zhihu.com/p/39912633
该链接是本人觉得描述得比较好理解的一篇文章了,从基础一步一步推进,推导出卡尔曼滤波的过程。

https://zh.wikipedia.org/wiki/卡尔曼滤波
该链接有很详尽的说明,不得不提,维基百科是个学习的好地方

公式

时间更新方程

x ^ k ˉ = A x ^ k 1 + B u k 1                 {\hat{x}}_{\bar{k}}=A{\hat{x}}_{{k-1}}+Bu_{k-1} ~~~~~~~~~~~~~~~ ①
P k ˉ = A P k 1 A T + Q                 P_{\bar{k}}=AP_{k-1}A^T+Q ~~~~~~~~~~~~~~~ ②

状态更新方程

K k = P k ˉ H T H P k ˉ H T + R                 K_k=\frac {P_{\bar{k}}H^T} {HP_{\bar{k}}H^T+R}~~~~~~~~~~~~~~~ ③
x ^ k = x ^ k ˉ + K k ( z k H x ^ k ˉ )                 {\hat{x}}_{k}={\hat{x}}_{\bar{k}}+K_k(z_k-H{\hat{x}}_{\bar{k}})~~~~~~~~~~~~~~~ ④
P k = I K k H P k ˉ                 P_k=(I-K_kH)P_{\bar{k}}~~~~~~~~~~~~~~~ ⑤

时间更新方程解读

为何要称它为时间更新方程,主要在于等式左边都是当前值,而右边变量则都是上一时刻值。故方程是随着时间在推进的。
方程的目标在于,预测一个当前值以及得到该预测值的误差。假设我们再知道测量值以及测量值的误差,那么就可以按照 z = a x + ( 1 a ) y z=ax+(1-a)y 进行融合,即
= + 结果=预测值占一定比例+测量值占一定比例
决定比例大小的因素就是误差,误差小更可信,占比会更大。

①式解读

本式子是一个预测模型的表示,通俗地翻译公式为:
= + 当前预测值=上一个最优估计值+外力作用
其中的A和B矩阵用于转换关系的表示,并不影响理解。
一般来讲,有没有外力都无所谓的,甚至你采用的预测模型不够准确,也是可以应用卡尔曼滤波的,只要你的预测值不要与实际差个十万八千里即可

②式解读

翻译公式为:
= + 先验估计协方差=上一后验估计协方差+噪声协方差
首先搞清楚何为先验,何为后验。
举一个先验的例子,两个骰子,和为5的概率。共36种可能性,其中和为8有1+4,2+3,3+2,4+1四种,故概率为1/9。
举一个后验的例子,两个骰子,现在摇出5点,求一个是1另一个是4的概率。由上面列举可见,概率为1/2。
主要是①式两边求协方差得到的,其中使用到如下公式
C o v ( A x ) = A C o v ( x ) A T Cov(Ax)=ACov(x)A^T

状态更新方程解读

状态更新方程两边都是k量,目标是融合出一个最优估计值,同时求出其协方差。

③式解读

翻译公式为:
= + 卡尔曼增益=先验估计协方差+量噪声协方差
卡尔曼增益指明了预测值和测量值之间的以何种比例进行结果融合,这涉及两个高斯分布之间的融合,参考链接中有详细说明

④式解读(目标)

翻译公式为:
= + 最优估计值=预测值+一定比例的(测量值-当前预测值)
乍一看,好像哪里不对,加号右边的预测值比左边的预测值多了一个 H k H_k ,原因其实是最开始都带了 H k H_k ,从而两边都消掉了 H k H_k ,而加号右边的预测值携带的 H k H_k 无法被消掉,从而在公式上显得比较突兀,实际表达的意思和 z = a x + ( 1 a ) y z=ax+(1-a)y 是一致的。
本式子也是我们最关心的一个式子,该式子对外输出了最优估计值,而其他的式子,对外并不输出外部关心的信息。

⑤式解读

没得翻译,是通过对④式两边求协方差得来的。

总结

讲解卡尔曼滤波的文章有很多,小弟也只是初学,表达一下个人粗浅看法,纯属笔记。

发布了16 篇原创文章 · 获赞 1 · 访问量 3593

猜你喜欢

转载自blog.csdn.net/a215095167/article/details/104827105