各类开源激光slam算法比较

举报
kobesdu 发表于 2022/03/14 14:16:03 2022/03/14
【摘要】 Cartographer是基于图优化的方法建图算法,它与Karto都是图优化框架,但有诸多不同,例如Karto采取的是spa图优化方法,而Cartographer采用的是google的ceres构建problem优化,Karto的前后端是单线程进行,而cartographer采取的是多线程后端优化。而Cartographer也支持多传感器融合建图,可以处理来自激光雷达、IMU、里程计等传感器...

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中使用,需要进行地图格式转换。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。