贝叶斯滤波

https://zhuanlan.zhihu.com/p/37028239

https://www.cnblogs.com/aipiano/p/9060054.html

https://blog.csdn.net/varyshare/article/details/97642209

https://blog.csdn.net/liuyanpeng12333/article/details/81838148

https://www.cnblogs.com/ycwang16/p/5995702.html

https://blog.csdn.net/liuyanpeng12333/article/details/81003340

 

概率机器人学中用概率分布表示机器人状态在整个推测空间中的分布,而不再以某个确定的推测值,很好的表示了状态的不确定度。这种思想上的转变至关重要,即不再追求单一的最优值。

概率机器人中用置信度表示机器人的状态信息(位姿等)。状态量无法直接获得,而要通过数据(观测与控制信息)推测;置信度分布则是以可获得的数据为条件关于状态的后验分布:

[公式]

其中 [公式] 表示 [公式] 时刻状态,[公式] 表示 [公式] 到[公式] 时刻所有的观测量, [公式] 表示 [公式] 到[公式] 时刻所有的控制量。

机器人在上一状态 [公式] 经过控制量 [公式] 到达状态 [公式] ,此时可以计算该状态的预测,这一步称为控制更新:

[公式]

该预测仅综合了 [公式] 时刻的控制量,还没有进行观测,是基于以前的信息在给定控制后对新的状态进行的预测,即基于以前信息的后验。随后在该状态下进行观测 [公式] ,基于新的观测信息对预测进行修正,得到状态量新的置信度,这一步称为测量更新。

 

贝叶斯滤波算法便是按照上述过程而来,共分为两个步骤:

    • 通过控制量做出预测 [公式]
    • 结合观测量进行修正 [公式]

 

前言:
      我们知道目前的激光SLAM算法主要分为两种:基于滤波的SLAM和基于图优化的SLAM。而基于滤波的SLAM问题又是基于贝叶斯滤波的框架。因此我们不仅要问为什么需要使用贝叶斯来做滤波?

什么是滤波?
      滤波,即滤除噪声。我们知道在估计状态的过程中,控制引入运动噪声和观测引入传感器测量噪声。而滤波的实现是通过控制和观测获得的对同一状态不同的冗余信息(控制的预测信息和观测的测量信息)来减小位姿状态的不确定度,从而滤除控制和观测过程中的噪声。例如:若控制和观测的噪声都服从高斯分别,那么控制和观测得到的对状态估计也都是服从高斯分布。将两个高斯估计相乘得到后验分别的不确定度就会下降,从而达到滤波的效果

slam为什么需要贝叶斯滤波

首先,从逻辑上讲,机器人SLAM的过程是:先控制机器人到达一个位姿,然后再进行观测。但是问题出现在了我们是由控制数据和观测数据来求机器人位姿,这就出现了一个逆向的过程即:我们是先有位姿再得到观测数据却变成了先得到观测数据再来求位姿的过程。通俗来讲就是我们需要由结果(观测数据)来反推原因(位姿);因此这里就引入了贝叶斯公式,贝叶斯公式的存在就是为了求解这种由结果反推原因的问题;不懂的小伙伴可以看一下贝叶斯公式的由来。

     再者,从实际问题入手。举例:机器人运动一个位置看到一个门,正向的概率求解过程是这样的P(z|x),这里z表示观测,x表示位姿;但在SLAM问题中我们是先有观测数据反求位姿,这是一个逆向的过程P(x|z)。SLAM中使用贝叶斯公式是由于逆向过程很难求解,好比机器人看到了一个门,问:在哪里看到了门?我们很难回答在哪里看到了门。但正向问题就不一样了:机器人有了位姿就可以有观测数据计算在这个位置看到门的概率。因此就要用贝叶斯公式将逆向的过程转换成正向的过程:

因此SLAM中的定位问题就变成了下面的公式:

总结:
       这里只是讲了为什么要用贝叶斯来做滤波,究其根本就是我们无法直接由观测数据和控制数据来直接求解位姿。因此我们需要用贝叶斯公式将逆向的过程转化成正向的过程,也就得到了SLAM问题中的定位公式。

 

 

贝叶斯滤波并不是一个具体算法无法在实际中运用,它只是一个框架。后来的参数滤波(如:卡尔曼滤波、扩展卡尔曼)和非参数滤波(如:直方图滤波和粒子滤波)都是基于这个框架出来的。

滤波就是结合不同传感器获得的数据来确定状态变量的置信度。通过滤波将错误数据滤除掉,在参数滤波中的表现就是减小变量状态的方差,在粒子滤波中就是排除错误的粒子。

 贝叶斯滤波的框架就是将两个不同的传感器数据一个用来预测下一时刻状态一个当作观测来校正预测的状态。通过获得不同时刻传感器数据不断的进行迭代来估计机器人当前的状态信息。更通俗的来讲前一个可以叫做状态预测,后一个叫做测量更新。

 贝叶斯滤波只是一个框架,这个框架就是在处理两个传感器数据融合时,将一个传感器数据用来预测下一时刻变量的状态,另一个传感器的数据当作观测用来校正预测的状态,最终获得当前时刻校正后的状态。一个激光SLAM中简单的例子就是:我们用里程计数据来预测下一时刻机器人的位姿,接着用激光数据来对预测的位姿就行校正,这样就获得了当前时刻状态的后验。

posted @ 2021-03-01 15:09  星火-AI  阅读(462)  评论(0编辑  收藏  举报