激光SLAM之二:贝叶斯滤波

前言:

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

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

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

前提:

      滤波框架和优化框架的主要不同主要在于:滤波只估计当前时刻变量的状态,然后再用当前时刻状态估计下一时刻变量的状态,这是一个迭代的过程,在每一时刻只涉及上一时刻变量的状态用来估计当前时刻的状态。而优化则是构建一个图,在这个图中维护所有时刻变量的状态信息,当回环闭合时对所有时刻状态进行优化。

      为什么滤波可以只估计当前时刻的状态而不用管其他时刻的状态?这里就涉及马尔科夫假设:机器人当前时刻状态是对过去所有预测和观测的完整总结,机器人可以不依赖先前的信息就可以估计下一时刻变量的状态。说白了就是我相信当前时刻就是最准确的,因此我可以用当前时刻接着预测下一时刻的状态。这就造成了滤波器的痛:无法回环闭合,在构建大场景地图时机器人回到到过的位置时地图无法正确闭合形成错位。

公式化表述:

       上面是贝叶斯滤波的算法流程:算法的核心在第3行和第4行,分别代表状态预测和测量更新。先解释一下第3行,这是一个全概率公式也可以叫做卷积公式。具体来讲就是我们有上一时刻状态结合控制信息ut来获得当前时刻状态的先验也就是。这里bel表示置信度,表示控制信息。

        第4行使用贝叶斯公式,将逆向问题转换成正向问题进行求解(原理在上一讲中进行了解释)。通过观测来校正状态的先验,从而获得当前时刻状态的后验信息。

总结:

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

猜你喜欢

转载自blog.csdn.net/liuyanpeng12333/article/details/81838148