基于激光雷达的SLAM算法对比分析

本篇主要记录目前在ROS下开源的几种基于激光雷达的SLAM算法的特点以及优劣,目的在于对日后工作中选择合适的算法提供指导,因此,下面将Karto,Hector,Gmapping,Cartographer等几种开源算法通过列表的形式进行了对比:

Hector

Gmapping

Karto

cartographer

scan-matching(Gaussian-Newton equation) +传感器的要求高

mapping采用的是RBPF的方法

KartoSLAM是基于图优化的方法,用高度优化和非迭代 cholesky矩阵进行稀疏系统解耦作为解.

artographerGoogle的实时室内建图项目,传感器安装在背包上面,可以生成分辨率为5cm2D格网地图

 要求: 高更新频率小测量噪声的激光扫描仪.不需要里程计,使空中无人机与地面小车在不平坦区域运行存在运用的可能性.

粒子滤波的方法一般需要大量的粒子来获取好的结果,但这必会引入计算的复杂度;粒子是一个依据过程的观测逐渐更新权重与收敛的过程,这种重采样的过程必然会代入粒子耗散问题(depletion problem), 大权重粒子显著,小权重粒子会消失(有可能正确的粒子模拟可能在中间的阶段表现权重小而消失).

 图优化方法利用图的均值表示地图,每个节点表示机器人轨迹的一个位置点和传感器测量数据集,箭头的指向的连接表示连续机器人位置点的运动,每个新节点加入,地图就会依据空间中的节点箭头的约束进行计算更新.

获得的每一帧laser scan数据,利用scan match在最佳估计位置处插入子图(submap)中,且scan matching只跟当前submap有关。在生成一个submap后,会进行一次局部的回环(loop close),利用分支定位和预先计算的网格,所有submap完成后,会进行全局的回环。

利用已经获得的地图对激光束点阵进行优化, 估计激光点在地图的表示,和占据网格的概率.

为避免局部最小而非全局最优的出现,地图采用多分辨率的形式.

 自适应重采样技术引入减少了粒子耗散问题 , 计算粒子分布的时候不单单仅依靠机器人的运动(里程计),同时将当前观测考虑进去, 减少了机器人位置在粒子滤波步骤中的不确定性.

KartoSLAMROS版本,其中采用的稀疏点调整(the Spare Pose Adjustment(SPA))与扫描匹配和闭环检测相关.landmark越多,内存需求越大,然而图优化方式相比其他方法在大环境下制图优势更大.在某些情况下KartoSLAM更有效,因为他仅包含点的图(robot pose),求得位置后再求map.

submap的构造是一个重复迭代配准scansubmap的过程。利用配准估算出posescan进行刚体变换,插入到submap中。

连续的scan用来构造submap,这里submap以概率格网的形式表现。每一个scan,在插入格网(submap)时,每一个gridhitsmiss两种情况。离scan终点最近的gridhits,在scan原点和终点之间相交的gridmiss。之前未观察的grid分配一个概率,已观察的grid进行概率更新。

在总结的时候主要参考了,下述的两篇博客,在此表示感谢。

https://blog.csdn.net/u012700322/article/details/52953768

https://blog.csdn.net/zyh821351004/article/details/47381135

 

posted @ 2018-09-03 21:13  空山道人  阅读(9111)  评论(0编辑  收藏  举报