Gmapping:使用最广泛的建图算法(刚学习ROS的使用者挺多的)
作为2D激光雷达SLAM的里程碑,它基本上是ROS最早的建图算法。
优点:资料多,网上很多对Gmapping源码的分析,对于SLAM新手方便学习。
缺点:比较老的算法,是基于滤波器的,因为滤波器就相当于撒一堆粒子进行判断,所以会出现收敛过慢和粒子退化问题。
并且严重依赖里程计,因为它是根据里程计的运动来构建地图的。
无回环,对于大的地图回廊容易无法形成一个完整的回路
对于大地图特别占内存,因为gmapping给每一个粒子都携带了一份地图,所以会特别占内存。
但是不可否认的是 Gmapping在SLAM里还是很重要的,源码也有很多大佬进行了分析,很适合用来入门SLAM。
Hector:基于优化的算法
优点:不需要里程计(有前提)
可以使用在空中或不平坦的地方
因为该算法的初衷就是在一些地震后的灾区进行重建
缺点:需要高频率的激光雷达(40HZ以上)
不过博主使用过10HZ的雷达在小范围建图 会一直提示雷达频率不达标 但是也能实现建图。
也没有回环检测 这点和Gmapping一样
Karto:基于图优化的算法 比较新
优点:有回环检测 对于大的回廊可以实现回环匹配。
不会出现基于滤波器的粒子耗散的问题,也不会出现像gmapping的内存占用的问题
缺点:
代码耦合度很高 很难分析
其他博主暂未发现
Cartographer:谷歌的建图算法 也是图优化的算法
优点:很牛逼 谷歌开源算法 基本上Karto的优点全都有 这也是全网很多大佬的推荐
缺点:代码量很大 比较难进行分析
使用起来基本上需要桌面级CPU和4G以上的内存才跑得动
特别难安装