可用的开源 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 |