Simultaneous Localization and Mapping (SLAM)的处理方法主要分为滤波和图优化两类。

基于滤波器的SLAM

gemm原理 geoslam原理_线性方程组


gemm原理 geoslam原理_图优化_02


其中,黑色的为预测(经验),红色的为观测

图例

观测

预测(经验)

概率

图一

未观测到特征

初始经验无

各个位置等概率

图二

观测到特征

经验更新

三个有门位置的概率增加

图三

未观测到新的特征

经验保持

随着运动模型,概率平移,并平滑

图四

观测到新的特征

经验更新

当前位置为第二个门的概率增高

gemm原理 geoslam原理_图优化_03


其中,Z为观测,X为状态,U为运动模型。

常用算法

算法

优点

缺点

扩展卡尔曼滤波器(EKF)

简单易用

特征变多时,计算量增大

单点RANSAC算法应用于EKF

提高了外点的剔除速度,提高了SLAM系统的鲁棒性

粒子滤波器(PF)

表达非高斯噪声

计算量较大,不适用于建图

Rao-Blackwellized粒子滤波器(RBPF)

综合了PF和EKF的优点

Fast SLAM

简化了计算复杂度

复杂环境计算量剧增,存在例子退化问题

图优化SLAM

图优化是什么?

在graph-based SLAM中,机器人的位姿是一个节点或顶点(vetex),位姿之间的关系构成边(edge),比如t+1时刻和t时刻之间的odometry关系构成边,或者由视觉计算出来的位姿转换矩阵也可以构成边。一旦图构成了,就要调整机器人的位姿去尽量满足这些边构成约束。

图优化SLAM能分解成俩个任务:
1.构建图,机器人位姿当做顶点,位姿关系当做边,称为前端
2.优化图,调整机器人位姿顶点尽量满足边的约束,称为后端

gemm原理 geoslam原理_线性方程组_04


为了表述得更加形象,我们举两个例子来说明这个问题,其中对第二个例子的后面还引入了置信度信息,从而得到更为准确的结果。

示例

示例1 基于闭环检测

如下图所示,假设一个机器人初始起点在0处,然后机器人向前移动,通过编码器测得它向前移动了1m,到达第二个地点。接着,又向后返回,编码器测得它向后移动了0.8米。但是,通过闭环检测,发现它回到了原始起点。

gemm原理 geoslam原理_编码器_05


首先构建位姿之间的关系,即图的边:

gemm原理 geoslam原理_gemm原理_06


线性方程组中变量小于方程的个数,要计算出最优的结果,使出杀手锏最小二乘法。先构建残差平方和函数:

gemm原理 geoslam原理_线性方程组_07


为了使残差平方和最小,我们对上面的函数每个变量求偏导,并使得偏导数等于0.

gemm原理 geoslam原理_图优化_08


整理得到:

gemm原理 geoslam原理_图优化_09


接着矩阵求解线性方程组:

gemm原理 geoslam原理_线性方程组_10


所以调整以后为满足这些边的条件,机器人的位姿为:

gemm原理 geoslam原理_编码器_11

示例2 基于LandMark

如下图所示,假设一个机器人初始起点在0处,并观测到其正前方2m处有一个路标。然后机器人向前移动,通过编码器测得它向前移动了1m,这时观测到路标在其前方0.8m。

gemm原理 geoslam原理_编码器_12


在这个图中,我们把路标也当作了一个顶点。构建边的关系如下:

gemm原理 geoslam原理_编码器_13


转换

gemm原理 geoslam原理_编码器_14


残差平方和:

gemm原理 geoslam原理_编码器_15


求偏导:

gemm原理 geoslam原理_图优化_16


最后整理并计算得:

gemm原理 geoslam原理_编码器_17


得到路标和机器人位姿:

gemm原理 geoslam原理_编码器_18

我们知道传感器的精度是有差别的,也就是说我们对传感器的相信程度,即置信度,应该不同。比如假设这里编码器信息很精确,测得的路标距离不准,我们应该赋予编码器信息更高的权重,假设是10。重新得到残差平方和如下:

gemm原理 geoslam原理_图优化_19


求偏导得:

gemm原理 geoslam原理_gemm原理_20


转换为矩阵:

gemm原理 geoslam原理_图优化_21


最后计算得到:

gemm原理 geoslam原理_线性方程组_22


将这个结果和之前对比,可以看到这里的机器人位姿x1更靠近编码器测量的结果。

基于滤波器和基于图优化算法的简单比较

基于滤波的方法是以显性的递推误差估计为基础的串行运算,难以消除误差累积;而图优化方法基于不同时间测量值的集合估计,寻找参与计算的各方的均衡全局最优值,误差累积增长较为缓慢。

详细比较请参考:
Strasdat. 《Visual SLAM: Why Filter?》