Skip to content

Available Open Source SLAM#

This page provides the list of available open source Simultaneous Localization And Mapping (SLAM) implementation that can be used to generate a point cloud (.pcd) map file.

Selecting which implementation to use#

Lidar odometry drifts accumulatively as time goes by and there is solutions to solve that problem such as graph optimization, loop closure and using gps sensor to decrease accumulative drift error. Because of that, a SLAM algorithm should have loop closure feature, graph optimization and should use gps sensor. Additionally, some of the algorithms are using IMU sensor to add another factor to graph for decreasing drift error. While some of the algorithms requires 9-axis IMU sensor strictly, some of them requires only 6-axis IMU sensor or not even using the IMU sensor. Before choosing an algorithm to create maps for Autoware please consider these factors depends on your sensor setup or expected quality of generated map.

Tips#

Commonly used open-source SLAM implementations are lidarslam-ros2 (LiDAR, IMU*) and LIO-SAM (LiDAR, IMU, GNSS). The required sensor data for each algorithm is specified in the parentheses, where an asterisk (*) indicates that such sensor data is optional. For supported LiDAR models, please check the GitHub repository of each algorithm. While these ROS 2-based SLAM implementations can be easily installed and used directly on the same machine that runs Autoware, it is important to note that they may not be as well-tested or as mature as ROS 1-based alternatives.

The notable open-source SLAM implementations that are based on ROS 1 include hdl-graph-slam (LiDAR, IMU*, GNSS*), LeGO-LOAM (LiDAR, IMU*), LeGO-LOAM-BOR (LiDAR), and LIO-SAM (LiDAR, IMU, GNSS).

Most of these algorithms already have a built-in loop-closure and pose graph optimization. However, if the built-in, automatic loop-closure fails or does not work correctly, you can use Interactive SLAM to adjust and optimize a pose graph manually.

List of Third Party SLAM Implementations#



Package Name Explanation Repository Link Loop Closure Sensors ROS Version Dependencies
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