卡尔曼滤波
Posted yrm1160029237
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了卡尔曼滤波相关的知识,希望对你有一定的参考价值。
在线性高斯系统中,状态方程、观测方程时线性的,且两个噪声项服从零均值的高斯分布。高斯分布经过线性变换后仍为高斯分布。
假设我们知道一个线性系统的状态差分方程为:
![技术分享图片](https://app.yinxiang.com/shard/s4/res/40e7409e-d0a6-4983-9982-4fa348b5048f.png)
其中
是k时刻系统的状态向量,n*1列向量;A系统转换矩阵 n*n, u为系统输入向量,大小k*1。B是将输入转换为状态的矩阵,大小n*k。 随机变量w为系统噪声,大小为n*1.
![技术分享图片](https://app.yinxiang.com/shard/s4/res/6ce028ef-ef85-4a50-8ec4-e3edc147fd9b.png)
观测方程:
![技术分享图片](https://app.yinxiang.com/shard/s4/res/d9299dde-1f86-422a-99d2-d4b9b694a7af.png)
Z是测量值,大小为m*1(不是n*1,也不是1*1,后面将说明),H也是状态变量到测量的转换矩阵。大小为m*n。随机变量v是测量噪声。 测量噪声我们能够从传感器厂商那里获得噪声的均值
对于状态方程中的系统噪声w和测量噪声v,假设服从如下多元高斯分布,并且w,v是相互独立的。其中Q,R为噪声变量的协方差矩阵。
![技术分享图片](https://app.yinxiang.com/shard/s4/res/1ed969fc-eb9a-4ffa-b185-f3e669701ba1.png)
![技术分享图片](https://app.yinxiang.com/shard/s4/res/b0d3dbe0-3a8f-46a5-a47e-f5b18aa6061c.png)
先看估计值与真实值间误差的协方差矩阵。
![技术分享图片](https://app.yinxiang.com/shard/s4/res/610c5b8e-59d6-4310-9a20-e2014dd7f6c1.png)
带入
和
得
![技术分享图片](https://app.yinxiang.com/shard/s4/res/b0d3dbe0-3a8f-46a5-a47e-f5b18aa6061c.png)
![技术分享图片](https://app.yinxiang.com/shard/s4/res/d9299dde-1f86-422a-99d2-d4b9b694a7af.png)
![技术分享图片](https://app.yinxiang.com/shard/s4/res/99161421-6266-4278-8170-f557c65809db.png)
展开得![技术分享图片](https://app.yinxiang.com/shard/s4/res/b2b2877c-85ba-45b2-a1f7-0e331ddc6789.png)
![技术分享图片](https://app.yinxiang.com/shard/s4/res/b2b2877c-85ba-45b2-a1f7-0e331ddc6789.png)
预测值和真实值之间误差的协方差矩阵:![技术分享图片](https://app.yinxiang.com/shard/s4/res/fc31d545-364f-4f04-864a-57658f3bfbba.png)
![技术分享图片](https://app.yinxiang.com/shard/s4/res/fc31d545-364f-4f04-864a-57658f3bfbba.png)
最后得到:
![技术分享图片](https://app.yinxiang.com/shard/s4/res/005ec5b1-d6d8-4b54-a89c-e714b9405107.png)
![技术分享图片](https://app.yinxiang.com/shard/s4/res/e4cf33ad-f1eb-4dec-aced-fa5fcf852a17.png)
注意这个计算式K,转换矩阵H式常数,测量噪声协方差R也是常数。因此K的大小将与预测值的误差协方差有关。不妨进一步假设,上面式子中的矩阵维数都是1*1大小的,并假设H=1,
不等于0。那么K可以写成如下:
![技术分享图片](https://app.yinxiang.com/shard/s4/res/b2edccde-c9e2-41a1-a2ea-6e0a475842af.png)
![技术分享图片](https://app.yinxiang.com/shard/s4/res/226fb43e-4ad4-4f9c-9d2c-7a6e1ca7832d.png)
所以
越大,那么K就越大,权重将更加重视反馈,如果
等于0,也就是预测值和真实值相等,那么K=0,估计值就等于预测值(先验)。
![技术分享图片](https://app.yinxiang.com/shard/s4/res/b2edccde-c9e2-41a1-a2ea-6e0a475842af.png)
![技术分享图片](https://app.yinxiang.com/shard/s4/res/b2edccde-c9e2-41a1-a2ea-6e0a475842af.png)
将计算出的这个K反代入Pk中,就能简化Pk,估计协方差矩阵Pk的:
![技术分享图片](https://app.yinxiang.com/shard/s4/res/db572c87-0621-4c66-b184-920465a7e829.png)
因此递推公式中每一步的K就计算出来了,同时每一步的估计协方差也能计算出来。但K的公式中好像又多了一个我们还未曾计算出来的东西
,他称之为预测值和真实值之间误差的协方差矩阵。它的递推计算如下:
![技术分享图片](https://app.yinxiang.com/shard/s4/res/b2edccde-c9e2-41a1-a2ea-6e0a475842af.png)
请先注意到预测值的递推形式是: ![技术分享图片](https://app.yinxiang.com/shard/s4/res/20a44c63-ab3d-4f31-856a-b3e280e51079.png)
![技术分享图片](https://app.yinxiang.com/shard/s4/res/20a44c63-ab3d-4f31-856a-b3e280e51079.png)
![技术分享图片](https://app.yinxiang.com/shard/s4/res/ae6b48c4-cb33-49a3-ad00-5f71f56e8315.png)
![技术分享图片](https://app.yinxiang.com/shard/s4/res/d9871ad1-91ee-46e2-9c82-e61de9206967.png)
![技术分享图片](https://app.yinxiang.com/shard/s4/res/9d5b92ab-acd1-4698-b1b0-38d581116829.png)
由于系统状态变量和噪声之间是独立,故可以写成:
![技术分享图片](https://app.yinxiang.com/shard/s4/res/ca273ee8-c155-4de0-8707-ff5ba496f0c1.png)
![技术分享图片](https://app.yinxiang.com/shard/s4/res/8b765fef-4b36-4031-b988-84205d97391e.png)
由此也得到了
的递推公式。因此我们只需设定最初的
,就能不断递推下去。
![技术分享图片](https://app.yinxiang.com/shard/s4/res/b2edccde-c9e2-41a1-a2ea-6e0a475842af.png)
![技术分享图片](https://app.yinxiang.com/shard/s4/res/c6cc99c2-438e-43c2-a787-e79b1eae25ee.png)
这里总结下递推的过程,理一下思路:
首先要计算预测值、预测值和真实值之间误差协方差矩阵。
![技术分享图片](https://app.yinxiang.com/shard/s4/res/17eef646-cae4-495e-85a6-ca8025ea0c85.png)
有了这两个就能计算卡尔曼增益K,再然后得到估计值,
![技术分享图片](https://app.yinxiang.com/shard/s4/res/1e4f9462-5948-438a-a5de-9d7e154d5a65.png)
最后还要计算估计值和真实值之间的误差协方差矩阵,为下次递推做准备。
![技术分享图片](https://app.yinxiang.com/shard/s4/res/191fa700-4434-4e3c-a108-afb1ff12e0f3.png)
经验:
估计值误差协方差Pk的选取。
我们知道卡尔曼增益K与预测误差协方差矩阵正相关,由第一部分推导知道预测误差协方差阵
:
![技术分享图片](https://app.yinxiang.com/shard/s4/res/b2edccde-c9e2-41a1-a2ea-6e0a475842af.png)
![技术分享图片](https://app.yinxiang.com/shard/s4/res/90e1a7db-e54e-49d0-88f8-5dbff220e843.png)
它又和估计误差协方差矩阵
有关,在Q,A确定的情况下,
和
成正比。所以如果我们给的
初值大的话,那么递推第一步中计算出的卡尔曼增益K就大。K大意味着更相信测量值。
![技术分享图片](https://app.yinxiang.com/shard/s4/res/c6cc99c2-438e-43c2-a787-e79b1eae25ee.png)
![技术分享图片](https://app.yinxiang.com/shard/s4/res/b2edccde-c9e2-41a1-a2ea-6e0a475842af.png)
![技术分享图片](https://app.yinxiang.com/shard/s4/res/c6cc99c2-438e-43c2-a787-e79b1eae25ee.png)
![技术分享图片](https://app.yinxiang.com/shard/s4/res/c6cc99c2-438e-43c2-a787-e79b1eae25ee.png)
当状态方程建立不正确的又会怎样呢?实际应用中很多时候我们不能建立正确的状态方程
你建立的越不正确,根据你模型进行的预测就不正确,从这个角度来说,相当于你的噪声增大了。所以这个时候系统噪声W的方差应该增大。理解这一点,对改进实际估计效果有好处
举例:https://blog.csdn.net/young_gy/article/details/78177291
以上是关于卡尔曼滤波的主要内容,如果未能解决你的问题,请参考以下文章
卡尔曼滤波 KF | 扩展卡尔曼滤波 EKF (思路流程和计算公式)