前言:

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

概念:什么是滤波?

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

原因:为什么用贝叶斯做滤波?

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

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

                                                          

EEG 贝叶斯滤波 python 贝叶斯滤波的目的_控制数据

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

                                            

EEG 贝叶斯滤波 python 贝叶斯滤波的目的_图优化_02

总结:

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