ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

卡尔曼公式的基本推导

2022-01-01 14:04:02  阅读:226  来源: 互联网

标签:... EST frac 推导 公式 测量 估计值 MEA 卡尔曼


卡尔曼公式的基本推导

前一段抽空看了卡尔曼滤波的推导但是无奈数学不好基本忘得差不多了,所以打算记录下来。

卡尔曼滤波(Kalman Filter)

例如我们测量一枚硬币的直径

设第k次测量结果为: \(Z_k\)

第k次 \(Zk\)
1 50.4
2 50.7
3 49.7
4 50.1
5 50.6
... ...
通过多次测量我们可以通过取平均值的方法来估计硬币的真实直径。

设\(x_k\)为第k次的估计值

  • \(x_k=\frac{1}{k}* \sum_{i=1}^{i=k} \ Z_k\)(1)

  • \(x_k=\frac{1}{k}* \sum_{i=1}^{i=k-1} \ Z_k+ \frac{1}{k}* \ Z_k\) (2)

  • \(x_k=\frac{1}{k}*\frac{k-1}{k-1}* \sum_{i=1}^{i=k-1} \ Z_k+ \frac{1}{k}* \ Z_k\)(3)
    - \(x_k=\frac{k-1}{k}*\frac{1}{k-1}* \sum_{i=1}^{i=k-1}\ Z_k+ \frac{1}{k}* \ Z_k\)(4)

(4)中 \(\frac{1}{k-1}* \sum_{i=1}^{i=k-1}\ Z_k\)为测量到 \({k-1}\)次时的估计平均值可表示为\(x_{k-1}\)
所以我们可以把(4)化简为

  • \(x_k=\frac{k-1}{k}*x_{k-1} + \frac{1}{k}* \ Zk\)(5)
  • \(x_k =x_{k-1} + \frac{1}{k}*( Z_k-x_{k-1}\) )(6)

我们通过(6)梳理一下\(x_k\)与\(x_{k-1}\)、 \(Z_k\)的关系。

当 \(k\)很小时,\(\frac{1}{k}\)比较大, \(Z_k\)的作用就会比较大,对估计平均值仍有较大影响。
当 \(k\)很大时,\(\frac{1}{k}\)趋近于0, \(Z_k\)的作用就会很小,对估计平均值几乎没有影响。(多次测量硬币直径,基本可以确定硬币的真实直径,再次测量对测量的结果不会产生大的影响)

  • \(\frac{k-1}{k}=K_k\)(7)
  • \(x_k =x_{k-1} + K_k( Z_k-x_{k-1})\)(8)
  • 当前估计值=上次估计值+\(K_k\)(当前测量值--上次测量值)
    \(K_k\):
    Kalman Qain 卡尔曼增益/卡尔曼因数*

通过最终推导公式可以看出
\(x_k\)与上一次估计平均值\(x_{k-1}\)有关,
而\(x_{k-1}\)又与\(x_{k-2}\)有关
所以卡尔曼滤波的\(x_k\)与\(k\)之前的所有值均有关联,且关系是逐级相关的;
通过公式将数据通过类似链条的方式联系起来。

Kalman Qain:\(K_k=\frac{e_{EST_{k-1}}}{e_{EST_{k-1}}+e_{MEA_k}}\)(9)

\(e_{EST}\):估计误差(\(估计值-真实值\))
\(e_{MEA}\):测量误差(\(测量值-真实值\))

在第\(k\)次测量时,
若\(e_{EST_{k-1}}>>e_{MEA}\),根据(9),\(Kk\)接近于1,(6)式\(x_k = Z_k\)
就是第\(k\)次的估计值趋近于第\(k\)次的测量值,(估计误差大的话,我们就选择信任测量值)
若\(e_{EST_{k-1}}<<e_{MEA}\),根据(9),\(Kk\)接近于0,(6)式\(x_k = x_{k-1}\)
就是第\(k\)次的估计值趋近于第\(k-1\)次的估计值,(测量误差大的话我们选择信任上一次的估计值)

实际应用三步

  • 计算Kalman Qain:\(K_k=\frac{e_{EST_{k-1}}}{e_{EST_{k-1}}+e_{MEA_k}}\)
  • 计算\(x_k =x_{k-1} + K_k( Z_k-x_{k-1})\)
  • 更新估计误差:\(e_{EST_{k}}=(1-K_k)*e_{EST_{k-1}}\)(后续推导)
    假设
    硬币实际直径为\(x=50mm\),
    第一次的估计值为\(x_0=40mm\)
    \(e_{EST}=10mm\)
    第一次的测量值为\(z_1=54mm\)
    \(e_{MEA}=3mm\)(取决于使用的工具或者传感器)
\(k\) \(Zk\) \(e_{MEA_k}\) \(X_k\) \(K_k\) \(e_{EST_k}\)
0 \(3mm\) \(40mm\) \(10mm\)
1 \(54mm\) \(3mm\)
我们把已知数据填入表中,
首先根据\((9)\)计算\(Kalman Qain\)
  • \(K_k=\frac{10}{10+3}=0.769\)
  • 计算\(X_k=40+0.769*(54-40)=50.766\)
  • 更新\(e_{EST_k}=(1-0.769)*10=2.31\)
    将数据更新到表格中:
\(k\) \(Zk\) \(e_{MEA_k}\) \(X_k\) \(K_k\) \(e_{EST_k}\)
0 \(3mm\) \(40mm\) \(10mm\)
1 \(54mm\) \(3mm\) \(50.766mm\) \(0.769\) \(2.31\)
2 ... ... ... ... ...

我们用EXCEL做一个表格,
分别在表格中输入对应的公式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们人为添加一些噪声
在这里插入图片描述

可以做出测量值的曲线
在这里插入图片描述
然后将测量值与滤波值进行曲线对比
在这里插入图片描述
可以从曲线中看到随着数据不断的更新迭代,经过卡尔曼滤波后的值不断趋近于真实值。

本文参考于视频:【卡尔曼滤波器】1_递归算法_Recursive Processing

标签:...,EST,frac,推导,公式,测量,估计值,MEA,卡尔曼
来源: https://www.cnblogs.com/DELE/p/DELE_2.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有