卡尔曼滤波公式及原理的简易详解(新手入门)

卡尔曼滤波公式及原理的简易详解(新手入门)

1、卡尔曼滤波怎么滤波

  • 网上介绍卡尔曼滤波的案例很多, 但是看完之后总有种云里雾里的感觉。
    这里参考知乎上一篇答主的例子:
    卡尔曼滤波是贝叶斯滤波在特殊情况下的一种算法(服从高斯分布且为线性)
    (1)贝叶斯公式,举个例子来说。假如你想判断一个人是男性还是女性,
    在无外界其它条件的情况下,这个人为女性的可能性是50%,这时候有两个
    新的信息,信息A:这个人为长头发;
    … … … . . 信息B:这个人穿高跟鞋。
    在假设我们知道 1 女性为长头发的概率为75%
    . … … … … … … 2 女性穿着高跟鞋的概率为70%

    在这里插入图片描述
    有了上面的信息以后,我们再次判断这个人的性别就更为精确了。(通过分子判断即可)

    (2)卡尔曼滤波。个人理解,贝叶斯滤波通过输入不同的信息,来刷新需要计算目标的概率。P(x|a,b)我们通过掌握a,b信息来计算出x的概率值(行驶距离为11米概率为60%,行驶距离为10米概率为80%…等等)
    卡尔曼滤波呢,卡尔曼滤波其中求得也是概率分布函数,但是这个分布函数并不直观,而且还非常占用计算机的内存,所以卡尔曼滤波最后把这个分布函数取均值处理,比如说,我们想要获取一辆车的实时位置信息,这辆车上有两种方式来计算自身的位置<1>距离传感器<2>编码器。
    距离传感器计算的行驶距离为10m,精度为80%。
    编码器计算的行驶距离为9m,精度为70%。

    行驶距离x 0.8 0.7 + 0.8 \frac{0.8}{0.7+0.8} 0.7+0.80.8 ∗ \ast 10m + 0.7 0.7 + 0.8 \frac{0.7}{0.7+0.8} 0.7+0.80.7 ∗ \ast 9m
    行驶距离x=(1- 0.7 0.7 + 0.8 \frac{0.7}{0.7+0.8} 0.7+0.80.7 ) ∗ \ast 10m + 0.7 0.7 + 0.8 \frac{0.7}{0.7+0.8} 0.7+0.80.7 ∗ \ast 9m //记住这个式子后面会用到
    0.7 0.7 + 0.8 \frac{0.7}{0.7+0.8} 0.7+0.80.7这个就是我们要求的卡尔曼增益K。
    现实的使用中两种测量方式的精度我们是不知道的,卡尔曼滤波做的主要工作就是计算两种测量方式的精度(权重) 。

2、卡尔曼滤波的公式

在这里插入图片描述
为了简单起见,下边用温度模型考虑
(1)第一个公式 x k , x_k^ , xk, 为我们的预测量 x k − 1 , x_{k-1}^ , xk1,为上次我们的预测量(这个初始值需要我们设定), u k u_k uk是我们的控制量(简单来说,比如一个正在运动的车来说,t-1时刻位置是5m,下一秒你让车前进1m,此时 u k u_k uk就为1m。在小车运动模型中上述公式1中还应有一个噪声误差v,因为你让小车前进1m,真实情况肯定是有误差的) 。
但是我们是温度模型,所以系数A看做1(大多数情况下都是这样,个人理解),因为温度不会突然变化,所以控制量 u k u_k uk就为0,噪声v便于理解就不考虑了也为0.公式1变为 x k , x_k^ , xk,= x k − 1 , x_{k-1}^ , xk1,

(2)第二个公式: P k ’ P_k^’ Pk为 预测协方差矩阵(指的是公式一中预测量 x k , x_k^ , xk,与真值 x k x_k xk) 。因为上面我们将A设为1,所以此时公式二变为 P k ’ P_k^’ Pk= P k − 1 P_{k-1} Pk1+Q。(这里的Q我也不清楚叫什么,他需要我们预先设定,Q会影响预测值和测量值所占的权重,这个后面会说)现在我们只需要知道Q增大 P k ’ P_k^’ Pk也会增大,Q减小 P k ’ P_k^’ Pk也会减小。
(3)第三个公式: 个人感觉,这个公式很坑害初学者
大家看上面这个公式吧 大家可以看这个公式
这个公式也有坑, z k z_k zk是我们处理以后的测量值,记得这个公式里的 x k x_k xk是我们传感器返回的数值,前边的H学名叫转换矩阵,在这里作用可以理解为统一单位,假如传感器返回的是cm,但是你预测值是m,所以你的预测值 z k z_k zk也应该为m,这时候H就起到一个单位转换的作用,然后 v k v_k vk为噪声(服从高斯分布),因为传感器不准确嘛。(为了方便理解卡尔曼滤波,关于转换矩阵H这里只做最简单的理解,匀速运动模型暂时不考虑了)然后把H也看做1处理, v k v_k vk应该看做均值为0,方差为R的密度函数**(至于R是多少,我也不知道,自己写就行。在这就当0.1了)**,。此时公式三变为 z k z_k zk= x k x_k xk+0.1(此处 x k x_k xk为传感器测量数据,切记不要混淆)
(3)第四个公式: 此时我们可以由我们第二个公式计算的 P k ’ P_k^’ Pk来计算卡尔曼增益K,我们先把我们之前假设的系数带进去看一下,K= P k ’ P k ’ + 0.1 \frac {P_k^’} {P_k^’+0.1} Pk+0.1Pk。 记得公式二时候咱们说过吧,Q越大 P k ’ P_k^’ Pk越大,然后在这里我们会发现 P k ’ P_k^’ Pk增大,K也会增大。记住!
(4)第五个公式: 这个我们要算我们的估计值了,也就是最终的结果。此处我们还是不看他这个公式。在这里插入图片描述
我们看这个
这个公式里 X k X_k Xk就是我们的估计值(就是最终需要的结果,切记别与那个传感器测量值弄混了,他俩没关系)。 x k − x_{k^-} xk 就是我们公式一算的预测值* x k , x_k^ , xk,,K 为卡尔曼增益。
好了,我们把这个式子乘开看一下 X k X_k Xk=(1-K) ∗ \ast x k − x_{k^-} xk +K ∗ \ast z k z_k zk .这个式子是不是我们最开始的那个。
行驶距离x=(1- 0.7 0.7 + 0.8 \frac{0.7}{0.7+0.8} 0.7+0.80.7 ) ∗ \ast 10m + 0.7 0.7 + 0.8 \frac{0.7}{0.7+0.8} 0.7+0.80.7 ∗ \ast 9m
卡尔曼滤波做的就是根据判断测量值和预测值与真值的偏离程度,不断更新测量值和预测值所占的权重。

最后一个公式
第六个公式: 计算估计值与真值的估计协方差矩阵 P k P_k Pk。计算它来用于下一次我们公式二的迭代,因为这个权重是不断变化的,所以这个P的值要不断迭代才能实现动态滤波。 注意的是这里公式中的I是1别看错了。

卡尔曼滤波的的精华在于P、K之间的迭代,我下边给大家推荐两个链接,最好自己推导一下。
如果对您有帮助的话,麻烦您点个赞!
https://blog.csdn.net/heyijia0327/article/details/17487467
https://blog.csdn.net/victor_zy/article/details/82862904
由于作者水平有限,上述内容仅作为参考,如有问题希望各位大佬不吝赐教。
谢谢
上述问题有借鉴知乎答主DBinary和司南牧。

  • 15
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
卡尔曼滤波的实验原理可以从两个方面来解释:动态模型和观测模型。 1. 动态模型 卡尔曼滤波的动态模型描述了系统状态如何随着时间而变化,通常采用线性状态空间模型来描述。假设系统状态可以用一个向量x(t)来表示,系统状态随着时间的变化可以用下面的方程表示: x(t) = F(t)x(t-1) + w(t) 其中,F(t)是状态转移矩阵,它描述了系统状态如何从上一个时刻传递到当前时刻;w(t)是状态噪声,它表示状态在传递过程中的随机扰动。 2. 观测模型 卡尔曼滤波的观测模型描述了系统状态如何被观测到,通常也采用线性模型来描述。假设系统状态可以被一个向量z(t)观测到,观测模型可以用下面的方程表示: z(t) = H(t)x(t) + v(t) 其中,H(t)是观测矩阵,它描述了状态如何被观测到;v(t)是观测噪声,它表示观测值的随机误差。 卡尔曼滤波的实验原理可以归纳为以下三个步骤: 1. 预测步骤 在预测步骤中,根据上一个时刻的状态估计值和动态模型,预测当前时刻的状态估计值。 2. 更新步骤 在更新步骤中,根据当前时刻的观测值和观测模型,计算当前时刻的状态估计值和协方差矩阵。 3. 迭代步骤 在迭代步骤中,不断重复预测步骤和更新步骤,得到系统的状态估计值和协方差矩阵。 总的来说,卡尔曼滤波的实验原理可以简单概括为:根据系统的动态模型和观测模型,通过预测和更新两个步骤,不断修正状态估计值,以达到精确估计系统状态的目的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值