ROS:
Linux:
C++:
1、Gmapping
简介:
基于粒子滤波框架的激光SLAM,结合里程计和激光信息,每个粒子都携带一个地图,构建小场景地图所需的计算量较小,精度较高。可以结合《概率机器人》一起学习。
Github链接:
https://github.com/ros-perception/openslam_gmapping
https://github.com/ros-perception/slam_gmapping
相关论文:
Giorgio Grisetti, Cyrill Stachniss, and Wolfram Burgard: Improved Techniques for Grid Mapping with Rao-Blackwellized Particle Filters, IEEE Transactions on Robotics, Volume 23, pages 34-46, 2007.
Giorgio Grisetti, Cyrill Stachniss, and Wolfram Burgard: Improving Grid-based SLAM with Rao-Blackwellized Particle Filters by Adaptive Proposals and Selective Resampling, In Proc. of the IEEE International Conference on Robotics and Automation (ICRA), 2005.
2、Hector_slam
简介:
利用优化方法进行帧间匹配的激光slam算法,不需要里程计信息,代码较短。缺点是在雷达频率不够的设备上,效果不佳。
GitHub链接:
https://github.com/tu-darmstadt-ros-pkg/hector_slam
相关论文:
Kohlbrecher, Stefan , et al. “A flexible and scalable slam system with full 3d motion estimation.” 2011 IEEE International Symposium on Safety, Security, and Rescue Robotics IEEE, 2011.
3、Karto
简介:
图优化SLAM,包含回环,主要利用矩阵的稀疏化进行求解,在大范围环境下建图有优势。
Github链接:
https://github.com/ros-perception/open_karto
https://github.com/ros-perception/slam_karto
相关论文:
Olson, E. B. . “Real-time correlative scan matching.” Robotics and Automation, 2009. ICRA '09. IEEE International Conference on IEEE, 2009.
Konolige, Kurt , et al. “Efficient sparse pose adjustment for 2D mapping.” 2010 IEEE/RSJ International Conference on Intelligent Robots and Systems IEEE, 2010.
4、Cartographer
谷歌出品,必属佳品
简介:
源自谷歌,代码优美,是非常完整的激光slam系统,包含相对鲁棒的前端,基于submap和node约束的独立的pose graph后端及各类评测工具。模块化、系统化、工程化程度很高, 封装很完善,初次学习需要一定的c++和算法基础。同时它的注释完善,各类资料与教程众多,很适合进阶学习。
Github链接:
https://github.com/cartographer-project/cartographer
相关论文:
Hess, Wolfgang , et al. “Real-Time Loop Closure in 2D LIDAR SLAM.” 2016 IEEE International Conference on Robotics and Automation (ICRA) IEEE, 2016.
经典之作,长期霸榜
简介:
长期霸榜kitti odometry门类第一,分为前端和后端,提取线面特征进行匹配定位,很好的权衡了精度和效率。虽然原版代码已经闭源,但在该算法基础上,有多个改进的代码版本。
Github链接:
loam中文注解版:https://github.com/cuitaixiang/LOAM_NOTED
相关论文:
Ji Zhang and Sanjiv Singh. “LOAM: Lidar Odometry and Mapping in Real-time.” Proceedings of Robotics: Science and Systems Conference, 2014.
简介:
将原版LOAM代码中的旋转从欧拉角改成了Eigen库中的四元数,优化使用ceres库,极大的简化了代码的复杂性,非常适合初学者进行学习。
Github链接:
https://github.com/HKUST-Aerial-Robotics/A-LOAM
简介:
在LOAM的基础上细化了特征提取与优化,带有回环功能。可以在低功耗嵌入式系统上实现实时姿态估计。可以作为LOAM代码的进阶学习。
Github链接:
https://github.com/RobustFieldAutonomyLab/LeGO-LOAM
相关论文:
Ye, Haoyang , Y. Chen , and M. Liu . “Tightly Coupled 3D Lidar Inertial Odometry and Mapping.” (2019).
简介:
使用imu预积分和LOAM融合进行SLAM,紧耦合优化框架。预积分门槛较高,适合作为LIO(激光惯性里程计)的初学者学习。
Github链接:
https://github.com/hyye/lio-mapping
相关论文:
Ye, Haoyang , Y. Chen , and M. Liu . “Tightly Coupled 3D Lidar Inertial Odometry and Mapping.” (2019).
简介:(hdl还有一个定位模块)
非常简单的图优化3D激光SLAM框架,前端可以使用并行处理的ICP或者NDT,带有回环,可以融合imu、GPS和路面约束等信息。论文不推荐读了,直接看代码最好。可以作为3D激光的入门代码学习。
Github链接:
https://github.com/koide3/hdl_graph_slam
6、BLAM
简介:
仅用激光的SLAM算法,前端使用GICP,后端使用GTSAM,效果还不错,回环速度快。
Github链接:
https://github.com/erik-nelson/blam
7、SegMap
简介:
利用3D CNN语义信息的3D激光SLAM框架,在某些场景比传统SLAM更具有优势。
Github链接:
https://github.com/ethz-asl/segmap
相关论文:
R. Dubé, A. Cramariuc, D. Dugas, J. Nieto, R. Siegwart, and C. Cadena. “SegMap: 3D Segment Mapping using Data-Driven Descriptors.” Robotics: Science and Systems (RSS), 2018.
R. Dubé, MG. Gollub, H. Sommer, I. Gilitschenski, R. Siegwart, C. Cadena and , J. Nieto. “Incremental Segment-Based Localization in 3D Point Clouds.” IEEE Robotics and Automation Letters, 2018.
R. Dubé, D. Dugas, E. Stumm, J. Nieto, R. Siegwart, and C. Cadena. “SegMatch: Segment Based Place Recognition in 3D Point Clouds.” IEEE International Conference on Robotics and Automation, 2017.
8、SuMa
简介:
使用Surfel地图去实现前端里程计和闭环检测,此前Surfel地图曾被用在RGBD-SLAM中,第一次见到被用在激光SLAM中,很值得大家去了解学习。
Github链接:
https://github.com/jbehley/SuMa
相关论文:
J. Behley, C. Stachniss. Efficient Surfel-Based SLAM using 3D Laser Range Data in Urban Environments, Proc. of Robotics: Science and Systems (RSS), 2018.
9、Suma++
简介:
在SuMa基础上,利用RangeNet++过滤动态信息,提升定位建图精度。
Github链接:
https://github.com/PRBonn/semantic_suma
相关论文:
Chen, Xieyuanli & Milioto, Andres & Palazzolo, Emanuele & Giguère, Philippe & Behley, Jens & Stachniss, Cyrill. (2019). SuMa++: Efficient LiDAR-based Semantic SLAM. 4530-4537. 10.1109/IROS40897.2019.8967704.
——————————2020.06.22 更新——————————
简介:
在LeGO-LOAM基础上,利用Scan Context做回环检测,改善建图回环效果。在TX2上也可运行。
Github链接:
https://github.com/irapkaist/SC-LeGO-LOAM
相关论文:
LeGO-LOAM: Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain
Scan Context: Egocentric Spatial Descriptor for Place Recognition within 3D Point Cloud Map
11、LeGO-LOAM-BOR
简介:
LeGO-LOAM的软件优化版本。提高代码的质量和性能,使其更具可读性,一致性,并易于理解和修改。
Github链接:
https://github.com/facontidavide/LeGO-LOAM-BOR/tree/speed_optimization
——————————2020.07.09 更新——————————
简介:
LeGO-LOAM作者新作,在LeGO-LOAM基础上,加入了LiDAR、IMU、GPS紧耦合,用gtsam库优化。在其提供的手持设备数据集上效果很好。
Github链接:
https://github.com/TixiaoShan/LIO-SAM
相关论文:
LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping
简介:
Lio_mapping作者新作,用ESKF优化,比lio_mapping速度提高了一个数量级。
Github链接:
https://github.com/ChaoqinRobotics/LINS—LiDAR-inertial-SLAM
相关论文:
LINS: A Lidar-Inertial State Estimator for Robust and Efficient Navigation