2D-slam 激光slam: 开源代码的比较HectorSLAM Gmapping KartoSLAM CoreSLAM LagoSLAM
kint
kint 7089 4
热门 2015-09-07 15:14
最近找到一篇论文比较了一下 目前ros下2D激光slam的开源代码效果比较:
详细参见论文:   An evaluation of 2D SLAM techniques available in robot operating system

1. 算法介绍



A . HectorSLAM

   scan-matching(Gaussian-Newton equation)  +  传感器的要求高
 要求: 高更新频率小测量噪声的激光扫描仪.  不需要里程计,使空中无人机与地面小车在不平坦区域运行存在运用的可能性.
     利用已经获得的地图对激光束点阵进行优化, 估计激光点在地图的表示,和占据网格的概率.
     其中扫描匹配利用的是高斯牛顿的方法进行求解. 找到激光点集映射到已有地图的刚体转换(x,y,theta).
 

    ( 接触的匹配的方法还有最近邻匹配的方法(ICP) ,gmapping代码中的scanmatcher部分有两种方法选择.   )
 

 为避免局部最小而非全局最优的(类似于多峰值模型的,局部梯度最小了,但非全局最优)出现,地图采用多分辨率的形式.
 
导航中的状态估计可以加入惯性测量,进行EKF滤波.
  

 


B.   Gmapping

   proposed by Grisetti et al. and is a Rao-Blackwellized PF SLAM approach.
     adaptive resampling technique

  目前激光2Dslam用得最广的方法,gmapping采用的是RBPF的方法. 必须得了解粒子滤波(利用统计特性描述物理表达式下的结果)的方法.
   
粒子滤波的方法一般需要大量的粒子来获取好的结果,但这必会引入计算的复杂度;粒子是一个依据过程的观测逐渐更新权重与收敛的过程,这种重采样的过程必然
会代入粒子耗散问题(depletion problem),
大权重粒子显著,小权重粒子会消失(有可能正确的粒子模拟可能在中间的阶段表现权重小而消失).
 

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


 


C. KartoSLAM

    graph-based SLAM approach developed  bySRI International’s Karto Robotics
      highly-optimized and non iterative Cholesky matrix decomposition for sparse linear systems as its solver
      the Sparse Pose Adjustment (SPA) is responsible for both scan matching and loop-closure procedures

   Karto Open Libraries 2.0  SDK(Karto Open Libraries 2.0 is available under the LGPL open source license. You can try the full
 Karto SDK 2.1 for 30 days.)
  后面在详细研究下(比较下MRPT )


        图优化的核心思想我认为主要就是 矩阵的稀疏化与最小二乘..参见graphslam学习
 KartoSLAM是基于图优化的方法,用高度优化和非迭代 cholesky矩阵进行稀疏系统解耦作为解. 图优化方法利用图的均值表示地图,每个节点表示机器人轨迹的一个位置点和传感器测量数据集,箭头的指向的连接表示连续机器人位置点的运动,每个新节点加入,地图就会依据空间中的节点箭头的约束进行计算更新.
 KartoSLAM的ROS版本,其中采用的稀疏点调整(the Spare Pose Adjustment(SPA))与扫描匹配和闭环检测相关.landmark越多,内存需求越大,然而图优化方式相比其他方法在大环境下制图优势更大.在某些情况下KartoSLAM更有效,因为他仅包含点的图(robot
 pose),求得位置后再求map.




D. CoreSLAM

     tinySLAM algorithm: two different steps(distance calculation and update of the map
       simple and easy

 
  为了简单和容易理解最小化性能损失的一种slam算法.将算法简化为距离计算与地图更新的两个过程,  
第一步,每次扫描输入,基于简单的粒子滤波算法计算距离,粒子滤波的匹配器用于激光与地图的匹配,每个滤波器粒子代表机器人可能的位置和相应的概率权重,
这些都依赖于之前的迭代计算.
选择好最好的假设分布,即低权重粒子消失,新粒子生成..在更新步骤,扫描得到的线加入地图中,当障碍出现时,围绕障碍点绘制调整点集,而非仅一个孤立
点.


 


 


E. LagoSLAM

     Linear Approximation for Graph Optimization
       the optimization process requires no initial guess

 
        
基本的图优化slam的方法就是利用最小化非线性非凸代价函数.每次迭代,
解决局部凸近似的初始问题来更新图配置,过程迭代一定次数直到局部最小代价函数达到. (假设起始点经过多次迭代使得局部代价函数最小).  
LagoSLAM 是线性近似图优化,不需要初始假设.  优化器的方法可以有三种选择 Tree-based netORK
Optimizer(TORO), g2o,LAGO


 




2. 实验结果比较


分别从大小仿真环境和实际环境以及cpu消耗的情况下对算法进行了比较. CartoSLAM 与gampping占很大优势

说明:能力有限,讲得有问题欢迎指正,暂且粗解到这,后面再具体看看对应算法的详细论文介绍,有问题再改..
2D-slam 激光slam: 开源代码的比较HectorSLAM Gmapping KartoSLAM CoreSLAM LagoSLAM

分享:
游客
要评论请先登录 或者 注册
roswiki BOSS 2015-09-07 19:08 沙发
感谢分享
roswiki BOSS 2015-09-07 19:08 板凳
感谢分享
dreamluo 完美型 2015-09-07 22:45 地板
强大,讲的如此透彻
blacksnow 魔改型 2015-09-08 06:41 4楼
谢谢分享,
返回顶部