Skip to content

可用的开源 SLAM#

本页提供了可用于生成点云 (.pcd) 地图文件的可用开源同步定位与地图构建 (SLAM) 实现的列表.

选择要使用的实现#

随着时间的推移,激光雷达里程计会累积漂移,并且有解决方案可以解决这个问题,例如图形优化、循环闭合和使用 GPS 传感器来减少累积漂移误差.因此,SLAM 算法应该具有闭环功能、图形优化,并且应该使用 gps 传感器.此外,一些算法使用 IMU 传感器向图形中添加另一个因素,以减少漂移误差.虽然有些算法严格要求 9 轴 IMU 传感器,但其中一些算法只需要 6 轴 IMU 传感器,甚至不需要 IMU 传感器.在选择算法为 Autoware 创建地图之前,请考虑以下因素:具体取决于您的传感器设置或生成地图的预期质量.

技巧#

常用的开源 SLAM 实现方式有 lidarslam-ros2 (LiDAR, IMU*) 和 LIO-SAM (LiDAR, IMU, GNSS).括号中指定了每种算法所需的传感器数据,其中星号 (*) 表示此类传感器数据是可选的.有关支持的 LiDAR 模型,请查看每种算法的 GitHub 仓库.虽然这些基于 ROS 2 的 SLAM 实现可以很容易地直接在运行 Autoware 的同一台机器上安装和使用,但重要的是要注意,它们可能不像基于 ROS 1 的替代方案那样经过充分测试或成熟.

基于 ROS 1 的著名开源 SLAM 实现包括 hdl-graph-slam (LiDAR, IMU*, GNSS*)、LeGO-LOAM (LiDAR, IMU*)、LeGO-LOAM-BOR (LiDAR) 和 LIO-SAM (LiDAR, IMU, GNSS).

这些算法中的大多数已经具有内置的循环闭合和姿态图优化.但是,如果内置的自动闭环失败或无法正常工作,您可以使用 Interactive SLAM 手动调整和优化姿势图.

第三方 SLAM 实施列表#



包名称 解释 存储库链接 Loop 闭合 传感器 ROS 版本 依赖
DLIO Direct LiDAR-Inertial Odometry is a new lightweight LiDAR-inertial odometry algorithm with a novel coarse-to-fine approach in constructing continuous-time trajectories for precise motion correction github.com/vectr-ucla/direct_lidar_inertial_odometry ✔️ Lidar
IMU
ROS 2 PCL
Eigen
OpenMP
FAST-LIO-LC A computationally efficient and robust LiDAR-inertial odometry package with loop closure module and graph optimization github.com/yanliang-wang/FAST_LIO_LC ✔️ Lidar
IMU
GPS [Optional]
ROS 1 ROS Melodic
PCL >= 1.8
Eigen >= 3.3.4
GTSAM >= 4.0.0
FAST_LIO_SLAM FAST_LIO_SLAM is the integration of FAST_LIO and SC-PGO which is scan context based loop detection and GTSAM based pose-graph optimization github.com/gisbi-kim/FAST_LIO_SLAM ✔️ Lidar
IMU
GPS [Optional]
ROS 1 PCL >= 1.8
Eigen >= 3.3.4
FD-SLAM FD_SLAM is Feature&Distribution-based 3D LiDAR SLAM method based on Surface Representation Refinement. In this algorithm novel feature-based Lidar odometry used for fast scan-matching, and used a proposed UGICP method for keyframe matching github.com/SLAMWang/FD-SLAM ✔️ Lidar
IMU [Optional]
GPS
ROS 1 PCL
g2o
Suitesparse
GenZ-ICP GenZ-ICP is a Generalizable and Degeneracy-Robust LiDAR Odometry Using an Adaptive Weighting github.com/cocel-postech/genz-icp Lidar ROS 2 No extra dependency
hdl_graph_slam An open source ROS package for real-time 6DOF SLAM using a 3D LIDAR. It is based on 3D Graph SLAM with NDT scan matching-based odometry estimation and loop detection. It also supports several graph constraints, such as GPS, IMU acceleration (gravity vector), IMU orientation (magnetic sensor), and floor plane (detected in a point cloud) github.com/koide3/hdl_graph_slam ✔️ Lidar
IMU [Optional]
GPS [Optional]
ROS 1 PCL
g2o
OpenMP
IA-LIO-SAM IA_LIO_SLAM is created for data acquisition in unstructured environment and it is a framework for Intensity and Ambient Enhanced Lidar Inertial Odometry via Smoothing and Mapping that achieves highly accurate robot trajectories and mapping github.com/minwoo0611/IA_LIO_SAM ✔️ Lidar
IMU
GPS
ROS 1 GTSAM
ISCLOAM ISCLOAM presents a robust loop closure detection approach by integrating both geometry and intensity information github.com/wh200720041/iscloam ✔️ Lidar ROS 1 Ubuntu 18.04
ROS Melodic
Ceres
PCL
GTSAM
OpenCV
KISS-ICP A simple and fast ICP algorithm for 3D point cloud registration github.com/PRBonn/kiss-icp Lidar ROS 2 No extra dependency
Kinematic-ICP Kinematic-ICP is a LiDAR odometry approach that explicitly incorporates the kinematic constraints of mobile robots into the classic point-to-point ICP algorithm. github.com/PRBonn/kinematic-icp Lidar
Odometry
ROS 2 No extra dependency
LeGO-LOAM-BOR LeGO-LOAM-BOR is improved version of the LeGO-LOAM by improving quality of the code, making it more readable and consistent. Also, performance is improved by converting processes to multi-threaded approach github.com/facontidavide/LeGO-LOAM-BOR ROS2 fork: /github.com/eperdices/LeGO-LOAM-SR ✔️ Lidar
IMU
ROS 1
ROS 2
ROS 1/2
PCL
GTSAM
LIO_SAM A framework that achieves highly accurate, real-time mobile robot trajectory estimation and map-building. It formulates lidar-inertial odometry atop a factor graph, allowing a multitude of relative and absolute measurements, including loop closures, to be incorporated from different sources as factors into the system github.com/TixiaoShan/LIO-SAM ✔️ Lidar
IMU
GPS [Optional]
ROS 1
ROS 2
PCL
GTSAM
li_slam_ros2 li_slam package is a combination of lidarslam_ros2 and the LIO-SAM IMU composite method. github.com/rsasaki0109/li_slam_ros2 ✔️ Lidar
IMU
GPS [Optional]
ROS 2 PCL
GTSAM
Optimized-SC-F-LOAM An improved version of F-LOAM and uses an adaptive threshold to further judge the loop closure detection results and reducing false loop closure detections. Also it uses feature point-based matching to calculate the constraints between a pair of loop closure frame point clouds and decreases time consumption of constructing loop frame constraints github.com/SlamCabbage/Optimized-SC-F-LOAM ✔️ Lidar ROS 1 PCL
GTSAM
Ceres
SC-A-LOAM A real-time LiDAR SLAM package that integrates A-LOAM and ScanContext. github.com/gisbi-kim/SC-A-LOAM ✔️ Lidar ROS 1 GTSAM >= 4.0
SC-LeGO-LOAM SC-LeGO-LOAM integrated LeGO-LOAM for lidar odometry and 2 different loop closure methods: ScanContext and Radius search based loop closure. While ScanContext is correcting large drifts, radius search based method is good for fine-stitching github.com/gisbi-kim/SC-LeGO-LOAM ✔️ Lidar
IMU
ROS 1 PCL
GTSAM