当前位置: 首页 > article >正文

【卡尔曼滤波理论推导与实践】【理论】【3.2/5 卡尔曼增益02】

目录


还是将卡尔曼滤波核心思想钉在开头:

用测量值修正系统模型值,得到当前轮次的最优估计值。再将该最优估计值当作下一轮的系统模型输入,继续进行下一轮的最优估计,如此迭代进行。

继续推导上节留下来的 P k 模 \mathrm{P_{k模}} Pk


根据协方差定义的公式,
P k 模 = E [ e k 模 ⃗ ∗ e k 模 ⃗ T ] = E [ ( z k 真 ⃗ − z k 模 ⃗ ) ∗ ( z k 真 ⃗ − z k 模 ⃗ ) T ] \begin{aligned}\mathrm{P_{k模}}&=E[\vec{e_{k模}}*\vec{e_{k模}}^T]\\ &=E[(\vec{z_{k真}}-\vec{z_{k模}})*(\vec{z_{k真}}-\vec{z_{k模}})^T]\end{aligned} Pk=E[ek ek T]=E[(zk zk )(zk zk )T]

展开一下 ( z k 真 ⃗ − z k 模 ⃗ ) (\vec{z_{k真}}-\vec{z_{k模}}) (zk zk )
z k 真 ⃗ − z k 模 ⃗ = A ∗ z k − 1 真 ⃗ + B ∗ F k − 1 + w k − 1 ⃗ − ( A ∗ z k − 1 估 ⃗ + B ∗ F k − 1 ) = A ∗ ( z k − 1 真 − z k − 1 估 ) + w k − 1 ⃗ = A e k − 1 估 ⃗ + w k − 1 ⃗ \begin{aligned}\vec{z_{k真}}-\vec{z_{k模}}&=\mathrm{A}*\vec{z_{k-1真}}+\mathrm{B}*F_{k-1}+\vec{w_{k-1}}-(\mathrm{A}*\vec{z_{k-1估}}+\mathrm{B}*F_{k-1})\\&=\mathrm{A}*(z_{k-1真}-z_{k-1估})+\vec{w_{k-1}}\\&=\mathrm{A}\vec{e_{k-1估}}+\vec{w_{k-1}}\end{aligned} zk zk =Azk1 +BFk1+wk1 (Azk1 +BFk1)=A(zk1zk1)+wk1 =Aek1 +wk1

P k 模 \mathrm{P_{k模}} Pk可以继续展开了:
P k 模 = E [ ( A e k − 1 估 ⃗ + w k − 1 ⃗ ) ∗ ( A e k − 1 估 ⃗ + w k − 1 ⃗ ) T ] \begin{aligned}\mathrm{P_{k模}}&=E[(\mathrm{A}\vec{e_{k-1估}}+\vec{w_{k-1}})*(\mathrm{A}\vec{e_{k-1估}}+\vec{w_{k-1}})^T]\end{aligned} Pk=E[(Aek1 +wk1 )(Aek1 +wk1 )T]
将转置操作分配到括号里:
P k 模 = E [ ( A e k − 1 估 ⃗ + w k − 1 ⃗ ) ∗ ( e k − 1 估 ⃗ T A T + w k − 1 ⃗ T ) ] \begin{aligned}\mathrm{P_{k模}}&=E[(\mathrm{A}\vec{e_{k-1估}}+\vec{w_{k-1}})*(\vec{e_{k-1估}}^T\mathrm{A}^T+\vec{w_{k-1}}^T)]\end{aligned} Pk=E[(Aek1 +wk1 )(ek1 TAT+wk1 T)]
接下来将括号乘开。注意噪声 w k − 1 ⃗ \vec{w_{k-1}} wk1 的期望是0,所以和 w k − 1 ⃗ \vec{w_{k-1}} wk1 搭边的项都是0。乘开后可以得到以下结果:
P k 模 = E [ ( A e k − 1 估 ⃗ e k − 1 估 ⃗ T A T + w k − 1 ⃗ w k − 1 ⃗ T ] \begin{aligned}\mathrm{P_{k模}}&=E[(\mathrm{A}\vec{e_{k-1估}}\vec{e_{k-1估}}^T\mathrm{A}^T+\vec{w_{k-1}}\vec{w_{k-1}}^T]\end{aligned} Pk=E[(Aek1 ek1 TAT+wk1 wk1 T]
再把期望分配到括号里, E [ w k − 1 ⃗ w k − 1 ⃗ T ] E[\vec{w_{k-1}}\vec{w_{k-1}}^T] E[wk1 wk1 T]是一个模型噪声的协方差矩阵,是人为假定的常数,是已知的,记做 Q \mathrm{Q} Q
P k 模 = A E [ e k − 1 估 ⃗ e k − 1 估 ⃗ T ] A T + E [ w k − 1 ⃗ w k − 1 ⃗ T ] = A P k − 1 估 A T + Q \begin{aligned}\mathrm{P_{k模}}&=\mathrm{A}E[\vec{e_{k-1估}}\vec{e_{k-1估}}^T]\mathrm{A}^T+E[\vec{w_{k-1}}\vec{w_{k-1}}^T]\\&=\mathrm{A}\mathrm{P_{k-1估}}\mathrm{A}^T+\mathrm{Q}\end{aligned} Pk=AE[ek1 ek1 T]AT+E[wk1 wk1 T]=APk1AT+Q
在上节已经推导过 P k 估 \mathrm{P_{k估}} Pk的表达式,将最优估计时的 G k \mathrm{G_k} Gk代入表达式,即可得到最优估计时的 P k 估 \mathrm{P_{k估}} Pk
上节推导得到的两个表达式如下,注意只是将 k k k换成 k − 1 k-1 k1
P k − 1 估 = ( I − G k − 1 ) 2 P k − 1 模 + G k − 1 2 ( H − 1 ) 2 R , G k − 1 = P k − 1 模 P k − 1 模 + ( H − 1 ) 2 R \begin{aligned}\mathrm{P_{k-1估}}&=(\mathrm{I}-\mathrm{G_{k-1}})^2\mathrm{P_{k-1模}}+\mathrm{G_{k-1}}^2(\mathrm{H}^{-1})^2\mathrm{R},\mathrm{G_{k-1}}=\frac{\mathrm{P_{k-1模}}}{\mathrm{P_{k-1模}}+(\mathrm{H}^{-1})^2\mathrm{R}}\end{aligned} Pk1=(IGk1)2Pk1+Gk12(H1)2RGk1=Pk1+(H1)2RPk1
你完全可以将 G k − 1 \mathrm{G_{k-1}} Gk1直接无脑代入 P k − 1 估 \mathrm{P_{k-1估}} Pk1,毕竟 P k − 1 估 \mathrm{P_{k-1估}} Pk1等式右边全是上轮迭代得到的已知数,但是 P k − 1 估 \mathrm{P_{k-1估}} Pk1可以进行化简减少计算量:
P k − 1 估 = P k − 1 模 + G k − 1 2 P k − 1 模 − 2 G k − 1 P k − 1 模 + G k − 1 2 ( H − 1 ) 2 R = P k − 1 模 + G k − 1 [ G k − 1 ( P k − 1 模 + ( H − 1 ) 2 R ) − 2 P k − 1 模 ] = P k − 1 模 + G k − 1 ( P k − 1 模 − 2 P k − 1 模 ) = ( I − G k − 1 ) P k − 1 模 \begin{aligned}\mathrm{P_{k-1估}}&=\mathrm{P_{k-1模}}+\mathrm{G_{k-1}}^2\mathrm{P_{k-1模}}-2\mathrm{G_{k-1}}\mathrm{P_{k-1模}}+\mathrm{G_{k-1}}^2(\mathrm{H}^{-1})^2\mathrm{R}\\&=\mathrm{P_{k-1模}}+\mathrm{G_{k-1}}[\mathrm{G_{k-1}}(\mathrm{P_{k-1模}}+(\mathrm{H}^{-1})^2\mathrm{R})-2\mathrm{P_{k-1模}}]\\&=\mathrm{P_{k-1模}}+\mathrm{G_{k-1}}(\mathrm{P_{k-1模}}-2\mathrm{P_{k-1模}})\\&=(\mathrm{I}-\mathrm{G_{k-1}})\mathrm{P_{k-1模}}\end{aligned} Pk1=Pk1+Gk12Pk12Gk1Pk1+Gk12(H1)2R=Pk1+Gk1[Gk1(Pk1+(H1)2R)2Pk1]=Pk1+Gk1(Pk12Pk1)=(IGk1)Pk1
等号右边都是上轮迭代得出的值, P k − 1 估 \mathrm{P_{k-1估}} Pk1可知了,从而 P k 模 \mathrm{P_{k模}} Pk也可知了,从而卡尔曼增益 G k \mathrm{G_k} Gk也可知了。


到此为止,所有东西都被推导出来了,能看到这是一轮迭代求解的过程,下一节对公式进行整理,也就是卡尔曼滤波的5个公式。


http://www.kler.cn/a/448053.html

相关文章:

  • linux----文件访问(c语言)
  • 大腾智能CAD:国产云原生三维设计新选择
  • 让汉语和英语一样长的字符编码
  • 滚珠花键的保养与维护方法
  • ubuntu18.04升级到ubuntu20.04
  • K8s 节点 NotReady 后 Pod的变化
  • 广告投放系统成本降低 70%+,基于 Redis 容量型数据库 PegaDB 的方案设计和业务实践
  • 虚拟现实喷漆训练解决方案,为喷漆行业提供全新高效的培训方式
  • Nginx中Server块配置的详细解析
  • 游戏引擎学习第54天
  • python学习——sort/sorted+lambda表达式实现多级排序
  • linux mysql 8 大小写敏感问题
  • Android学习(五)-Kotlin编程语言-面向对象中的 继承-构造函数-接口三模块学习
  • MySQL 在window免安装启动
  • GVRP自动创建及其注销(eNSP)
  • 1688跨境代购代采业务:利用API实现自动化信息化
  • Android-帧布局FrameLayout
  • cmd初使用windows-docker时的一些小小问题
  • K8S日志采集与监控方案介绍
  • 如何用发链框架,快速构建一条区块链?
  • Scratch游戏推荐 | 8球台球——体验真实台球对战乐趣! ✨
  • 【085】基于51单片机PID直流电机控制系统【Proteus仿真+Keil程序+报告+原理图】
  • Java实现贪吃蛇游戏
  • tslib(触摸屏输入设备的轻量级库)的学习、编译及测试记录
  • 【go每日一题】:并发任务调度器
  • 科技查新对专利申请有什么帮助?