ROS机器人Gmapping/Hector/Karto/Cartographer四种建图算法对比
Gmapping
算法概述
Gmapping是应用最为广泛的2D slam方法,主要是利用RBPF(Rao-Blackwellized Particle Filters)方法,所以需要了解粒子滤波的方法(利用统计特性描述物理表达式下的结果)。Gmapping在RBPF算法上做了两个主要的改进:改进提议分布和选择性重采样。
算法流程图
算法优缺点
随着场景增大所需的粒子增加,因为每个粒子都携带一幅地图,因此在构建大地图时所需内存和计算量都会增加。因此不适合构建大场景地图。并且没有回环检测,因此在回环闭合时可能会造成地图错位,虽然增加粒子数目可以使地图闭合但是以增加计算量和内存为代价。Gmapping可以实时构建室内地图,在构建小场景地图所需的计算量较小且精度较高。
建图效果
综合评价
建图效果较为良好。相比Hector SLAM对激光雷达频率要求低、鲁棒性高(Hector 在机器人快速转向时很容易发生错误匹配,建出的地图发生错位,原因主要是优化算法容易陷入局部最小值);而相比Cartographer在构建小场景地图时,Gmapping不需要太多的粒子并且没有回环检测因此计算量小于Cartographer而精度并没有差太多。所以Gmapping不能像cartographer那样构建大的地图,虽然论文生成几万平米的地图,但实际我们使用中建的地图没有上万平米时就会发生错误。
Hector
算法概述
Hector slam 利用高斯牛顿方法解决 scan-matching 问题,对传感器要求较高。其无需使用里程计,所以在不平坦区域实现建图的空中无人机及地面小车具有运用的可行性,利用已经获得的地图对激光束点阵进行优化,估计激光点在地图的表示,和占据网络的概率。获得激光点集映射到已有地图的刚体变换,为避免局部最小而非全局最优出现,地图使用多分辨率。