测试了一下cartogragher ros工程之后, 感觉效果确实要比Hector 和 Gmapping 两种算法好。
测试条件如下:
软件: Ubuntu 1404 + indigo + cartographer_ros + rplidar_ros
硬件: intel i7 u系列 + rplidar
测试结果:
1》 鲁棒性好,尤其在没有IMU的辅助下,应对旋转速度高的突然转向,没有出现建图错误。由于采用了回环检测,可以消除积累误差, 建图效果比较稳定。
2》速度比想象的要快,从原理上看, 运算量远要大于hector, gmapping,但得益于SPA和 BBS算法,速度很快。
3》接口封装得很简洁, 给人的感觉是一款稳定,可靠,易用的软件包。
主要论文:
1.1 Real-Time Loop Closure in 2D LIDAR SLAM , ICRA 2016
1.2 Efficient Sparse Pose Adjustment for 2D Mapping (SPA)
1.3 Real-Time Correlative Scan Matching (BBS)
1》Real-Time Loop Closure in 2D LIDAR SLAM
文章的重点是第四部分和第五部分
第四部分:local 2d slam, 主要是将 局部地图的 scan matching作为一个二次型优化问题, 由ceres slover 解决
第五部分: closing loop, 采用了 SPA(Sparse Pose Adjustment)进行后端loop closure。 这个过程中有一个很重要的过程是的scan和 submap的匹配,这里采用了BBS(Branch-and-bound scan matching), 它可大幅提高精度和速度。
cartographer的整体架构是典型的 前端建图 (局部地图)+后端优化。 整个性能相比传统的 state-of-the-art的算法没有什么太大的提高, 而是更像一个实用性的产品,很好的平衡了性能和速度。
2》SPA(Sparse Pose Adjustment)的细节参考论文 1.2
3》BBS(Branch-and-bound scan matching)的细节参考论文 1.3