各类开源激光slam算法比较
Cartographer是基于图优化的方法建图算法,它与Karto都是图优化框架,但有诸多不同,例如Karto采取的是spa图优化方法,而Cartographer采用的是google的ceres构建problem优化,Karto的前后端是单线程进行,而cartographer采取的是多线程后端优化。而Cartographer也支持多传感器融合建图,可以处理来自激光雷达、IMU、里程计等传感器的数据并给予这些数据进行地图的构建。
karto salm是基于图优化的方法,图优化方法利用图的均值表示地图,每个节点表示机器人轨迹的一个位置点和传感器测量数据集,箭头的指向的连接表示连续机器人位置点的运动,每个新节点加入,地图就会依据空间中的节点箭头的约束进行计算更新。karto slam需要里程计和激光雷达数据。karto建图也是使用激光雷达数据来创建环境的栅格地图,当机器人慢速移动时,karto建图是优于gmapping建图的。karto建图方式不同于gmapping,是基于图优化的,一上来不会看到一大片。
hector功能包使用高斯牛顿方法,不需要里程计数据,只根据激光信息便可构建地图。因此,该功能包可以很好地在空中机器人、手持构图设备及特种机器人中运行。 hector算法结合了鲁棒性较好的扫描匹配方法,不需要里程计,但对于雷达帧率一般要求高于20HZ,估计6自由度位姿,可以适应空中或者地面不平坦的情况。初值的选择对结果影响很大,所以要求雷达帧率较高。由于hector算法对雷达帧率要求较高,机器人搭载的激光雷达帧率相对较低的时候,需要调低机器人运行速度小于0.3m/s。如果不降低机器人行驶速度,建图效果会非常差,无法完成建图。
gmapping功能包集成了Rao-Blackwellized粒子滤波算法 gmapping在构建小场景地图所需的计算量较小且精度较高。相比Hector SLAM对激光雷达频率要求低、鲁棒性高。Gmapping在地形平坦且空间较小的环境下建图效果比较好,需要里程计数据,无法适应无人机及地面不平坦的区域,大的场景,粒子较多的情况下,比较消耗资源。
在建图面积较小场景下,gmapping的建图效果是优于 cartographer 的,但cartographer的好处是在建图的过程中可以随意移动机器人,由于它的后端优化,回环检测的能力比较强,所以地图一直保持很好的状态;但gmapping不一样,一旦机器人运动过快就会造成地图偏斜,由于它没有回环检测,后面也不能进行优化。 Cartographer建图时,先在小区域回环,然后再大区域回环,这样建图的话,上万平米环境也能创建很好的地图。Cartographer建图生成的地图格式是.pbstream,不能直接在ROS中使用,需要进行地图格式转换。
- 点赞
- 收藏
- 关注作者
评论(0)