Advertisement

各类开源slam算法比较

阅读量:

Cartographer、Karto、Hector和GMaPing是基于图优化的建图工具,各有特点。Cartographer使用Ceres求解器,支持多传感器融合,回环检测能力强,适合大场景;Karto基于图优化,支持激光雷达和里程计,但不支持多传感器融合,适合小区域;Hector依赖激光雷达,对帧率要求高,适合高帧率场景;GMaPing需要里程计,适合地形平坦的小区域,但不适合大场景和高阶机器人。Cartographer在小区域表现优于GMaPing,但GMaPing在地形平坦时表现更好。Cartographer支持地图格式转换,而GMaPing不能直接在ROS中使用。回环检测能力方面,Cartographer强于GMaPing,但GMaPing在大场景下可能因运动过快而偏斜。

Cartographer采用基于图优化的方法构建[图算法],它与Karto都属于图优化框架,但存在显著差异,例如Karto采用的是SPA图优化方法,而Cartographer则基于Google的Ceres框架构建优化问题。在优化策略上,Karto的前后端优化与Cartographer有所不同,Karto采用的是单线程前后端优化,而Cartographer则采用了多线程后端优化策略。此外,Cartographer还支持多传感器数据融合,能够整合来自激光雷达、IMU、里程计等传感器的数据,并利用这些数据进行地图构建。

karto salm是一种基于图优化的算法,该算法通过图的均值表示地图,其中每个节点代表机器人轨迹中的一个位置点及其对应的传感器测量数据集。节点之间的箭头连接表示机器人连续位置点之间的运动关系。每当新增一个节点时,算法会依据空间中的节点约束和箭头连接进行地图计算更新。karto slam依赖里程计和激光雷达数据。在机器人缓慢移动的过程中,karto建图在环境栅格地图构建方面表现优于gmapping方法。与gmapping相比,karto建图采用图优化方式,其显著特点是初期不易观察大片区域。

hector功能包采用了高斯牛顿方法,无需里程计数据,仅基于激光信息即可构建地图。由此可见,该功能包具备良好的应用潜力,适用于空中机器人、手持构图设备以及特种机器人等场景。hector算法融合了具有较强鲁棒性的扫描匹配方法,无需里程计支持,但对雷达帧率的要求较高,一般需维持在20Hz以上,以确保对自由度的估计。值得注意的是,初值的选择对结果具有重要影响,因此需要确保其具有较高的精度。由于hector算法对雷达帧率要求较高,当机器人搭载的激光雷达帧率相对较低时,需要适当降低机器人运行速度(小于0.3m/s)。如果不采取相应措施,将导致建图效果显著受到影响,无法完成有效的建图。

gmapping功能包整合了Rao-Blackwellized粒子滤波算法,该算法在生成小场景地图时计算量较小且精度较高。相比于Hector SLAM,该算法对激光雷达的频率要求较低,具有较高的鲁棒性。Gmapping在地形平坦且空间较小的环境下建图效果较好,依赖里程计数据,无法应用于无人机及地面不平坦的区域。在较大场景中,当粒子数量较多时,该算法的资源消耗较大。

在建图区域较小的情况下,gmapping的建图效果表现更出色,相较于cartographer,但它在机器人移动灵活性方面具有明显优势。cartographer的显著优点在于允许机器人在建图过程中自由移动,这种灵活性得益于其后端优化和强大的回环检测能力,因此在实际操作中能够维持地图的高度一致性。然而,gmapping在处理快速移动的机器人时容易导致地图偏移,这与其缺乏回环检测功能有关,导致后续优化效果受限。 cartographer的建图流程较为系统,首先完成小区域的回环,随后扩展至大范围,这种分阶段的建图策略使得其在复杂环境中也能高效完成地图构建。值得注意的是,cartographer生成的地图格式为.pbstream,这需要通过特定的转换工具才能在ROS系统中使用。

全部评论 (0)

还没有任何评论哟~