2D激光slam四种算法建图效果对比

slam算法对照

通过麦克纳姆轮机器人小车构建地图对比Gmapping、Hector、Karto、Cartographer四种算法的优缺点
真实场景图如下图所示:
在这里插入图片描述
具体步骤为:
1、打开地图构建命令

roslaunch turn_on_wheeltec_robot mapping.launch

2、打开rviz

rviz

3、打开控制小车命令(手柄、键盘)

roslaunch   wheeltec_robot_rc   keyboard_teleop.launch

4、进行地图构建然后自定义保存

rosrun map_server map_saver -f 地图名

一、Gmapping算法

Gmapping算法框架是基于RBPF粒子滤波算法,先进行定位再进行建图,Gmapping在RBPF算法上做了两个主要的改进:改进提议分布和选择性重采样。
RBPF是用来解决SLAM问题,就是先进行定位再进行建图。RBPF的主要问题在于其复杂度高,因为需要较多的粒子来构建地图并频繁执行重采样。我们已知粒子数和计算量内存消耗息息相关,粒子数目较大会造成算法复杂度增高。因此减少粒子数是RBPF算法改进的方向之一;同时由于RBPF频繁执行重采样会造成粒子退化。因此减少重采样次数是RBPF算法的另一个改进方向。
RBPF是一种有效解决同时定位和建图的算法,它将定位和建图分离;并且每一个粒子都携带一幅地图(这也是粒子滤波不适合构建大地图的原因之一)。但PBPF也存在缺点:所用粒子数多和频繁执行重采样。粒子数多会造成计算量和内存消耗变大;频繁执行重采样会造成粒子退化。因此Gmapping在RBPF的基础上改进提议分布和选择性重采样,从而减少粒子个数和防止粒子退化。改进的提议分布不但考虑运动(里程计)信息还考虑最近的一次观测(激光)信息这样就可以使提议分布的更加精确从而更加接近目标分布。选择性重采样通过设定阈值,只有在粒子权重变化超过阈值时才执行重采样从而大大减少重采样的次数。

优点:

Gmapping可以实时构建室内地图,在构建小场景地图所需的计算量较小且精度较高。相比Hector SLAM对激光雷达频率要求低、鲁棒性高;而相比Cartographer在构建小场景地图时,Gmapping不需要太多的粒子并且没有回环检测因此计算量小于Cartographer而精度并没有差太多。Gmapping有效利用了车轮里程计信息,这也是Gmapping对激光雷达频率要求低的原因:里程计可以提供机器人的位姿先验。而Hector和Cartographer的设计初衷不是为了解决平面移动机器人定位和建图,Hector主要用于救灾等地面不平坦的情况,因此无法使用里程计。而Cartographer是用于手持激光雷达完成SLAM过程,也就没有里程计可以用。

缺点:

随着场景增大所需的粒子增加,因为每个粒子都携带一幅地图,因此在构建大地图时所需内存和计算量都会增加。因此不适合构建大场景地图。并且没有回环检测,因此在回环闭合时可能会造成地图错位,虽然增加粒子数目可以使地图闭合但是以增加计算量和内存为代价。所以不能像Cartographer那样构建大的地图。Gmapping和Cartographer一个是基于滤波框架SLAM另一个是基于优化框架的SLAM,两种算法都涉及到时间复杂度和空间复杂度的权衡。Gmapping牺牲空间复杂度保证时间复杂度,这就造成Gmapping不适合构建大场景地图。翻看Cartographer算法,优化相当于地图中只用一个粒子,因此存储空间比较Gmapping会小很多倍,但计算量大。优化图需要复杂的矩阵运算。

构建地图如下图所示

二、Hector算法

Hector算法框架是基于高斯牛顿
(Hector 在机器人快速转向时很容易发生错误匹配,建出的地图发生错位,原因主要是优化算法容易陷入局部最小值)

优点:不需要里程计,适应于空中或者路面不平坦的环境
缺点:旋转过快易发生漂移,无回环检测

构建地图如下图所示

三、Karto算法

Karto算法框架是基于图优化

优点:这是首个基于图优化的开源算法,利用高度优化和非迭代平方根法分解从而进行稀疏化解耦求解
缺点:无法实时构建子图,耗费时间

构建地图如下图所示

四、 Cartographer算法

Cartographer算法框架是基于图优化cartographer在不同环境下,调整参数和传感器配置,就能工作
大部分数据集,cartographer表现更优。ActiveSubmaps2D类中的submaps_列表实际最多只两个submap,一个认为是old_map,另一个认为是new_map,类似于滑窗操作。当new_map插入激光scan的个数达到阈值时,则会将old_map进行结束,并且不再增加新的scan。同时将old_map进行删除,将new_map作为oldmap,然后重新初始化一个新的submap作为newmap。其具体实现可看代码注解,较为简单。首先回环优化,我们需要检测到回环,再进行优化。如何检测回环呢,前文也提到过,如果当前的scan和所有已创建完成的submap中的某个laser scan的位姿在距离上足够近,那么通过某种 scan match策略就会找到该闭环。这里为了减少计算量,提高实时回环检测的效率,Cartographer应用了branch and bound(分支定界)优化方法进行优化搜索,如果得到一个足够好的匹配,到此处,回环检测部分已经结束了,已经检测到了回环得存在。接下来要根据当前scan的位姿和匹配到得最接近的submap中的某一个位姿来对所有的submap中的位姿进行优化,即使残差E最小。

优点:适应于低成本激光雷达,加速回环检测,实时性强
缺点:在几何对称环境中,易回环出错

构建地图如下图所示

部分参考于: https://visionary.blog.csdn.net/article/details/111143722?spm=1001.2014.3001.5506

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2023年4月5日
下一篇 2023年4月5日

相关推荐