贝叶斯滤波算法它做的工作就是根据已有的信息来计算概率。
就是根据不断接收到的新信息和我提供的一些已经知道的统计值,来不断更新概率。更新概率值的方法是根据概率论中的条件概率计算公式来更新的。
贝叶斯滤波只是一个框架,这个框架就是在处理两个传感器数据融合时,将一个传感器数据用来预测下一时刻变量的状态(状态预测传感器),另一个传感器的数据当作观测用来校正预测的状态(状态更新传感器),最终获得当前时刻校正后的状态。一个激光SLAM中简单的例子就是:我们用里程计数据来预测下一时刻机器人的位姿,接着用激光数据来对预测的位姿就行校正,这样就获得了当前时刻状态的后验。
首先是条件概率的相关知识,一个基础公式如下:
P(AB)=P(A|B)P(B)=P(B|A)P(A)
然后对于贝叶斯滤波,有两个方面:
-
Xnew(当前状态后验值)=Xn(预测值或先验值)+Kn(卡尔曼系数)*(Zn-Xn)
Zn是激光雷达做出的观测值,用来校正估计值以得到后验值。 -
P(xt∣zt,ut,xt−1)=ηP(zt∣xt)P(xt∣ut,xt−1)。
这个推导过程是很容易实现的,只需要不停运用条件概率公式并且用独立性化简就行。
具体可参考文章:https://blog.csdn.net/varyshare/article/details/97642209
公式化表述:
上面是贝叶斯滤波的算法流程:算法的核心在第3行和第4行,分别代表状态预测和测量更新。先解释一下第3行,这是一个全概率公式也可以叫做卷积公式。具体来讲就是我们有上一时刻状态
结合控制信息ut来获得当前时刻状态的先验也就是。这里bel表示置信度。
第4行使用贝叶斯公式,将逆向问题转换成正向问题进行求解。通过观测来校正状态的先验,从而获得当前时刻状态的后验信息。
参考文章原文链接:https://blog.csdn.net/liuyanpeng12333/article/details/81838148
从图中我们可以看到得到的后验状态值(紫色)是介于预测值和观测值之间的,通过调整系数我们就可以得到更接近真实值的结果了(bel)。
这几种滤波里面,以卡尔曼滤波最为著名,虽然现在普遍认为图优化比滤波要好,但是滤波这种思想,还是值得学习的。