RIV-SLAM is an open source ROS package for real-time 6DOF SLAM using a 4D Radar and an IMU. It is based on 3D Graph SLAM with Adaptive Probability Distribution GICP scan matching-based odometry estimation and Intensity Scan Context loop detection. It also supports several graph constraints, such as GPS. We have tested this package with Oculli Eagle and Sensradar Hugin in outdoor structured (buildings, mine), unstructured (trees and grasses, forest) and semi-structured environments.
Ubuntu 64-bit 18.04 or 20.04. ROS Melodic or Noetic. ROS Installation:
- Eigen3
- OpenMP
- PCL
- g2o
- geodesy
- nmea_msgs
- pcl_ros
- fast_gicp
- msgs_radar for different datasets
sudo apt-get install ros-XXX-geodesy ros-XXX-pcl-ros ros-XXX-nmea-msgs ros-XXX-libg2o
NOTICE: remember to replace "XXX" on above command as your ROS distributions, for example, if your use ROS-noetic, the command should be:
sudo apt-get install ros-noetic-geodesy ros-noetic-pcl-ros ros-noetic-nmea-msgs ros-noetic-libg2o
RIV_SLAM consists of four nodelets.
- preprocessing_nodelet
- scan_matching_odometry_nodelet
- floor_detection_nodelet
- radar_graph_slam_nodelet
Compared to the original software, we have introduced and modified the following modules:
- IMU Preintegration Factor
- Veloctiy Factor
- Ground Factor
- sliding window for optimization
#build the repo
catkin build msgs_radar fast_apdgicp radar_graph_slam
Download datasets: NTU4DRadLM or MineAndForest
roslaunch radar_graph_slam radar_graph_slam.launch
In our paper, we use rpg_trajectory_evaluation, the performance indices used are RE (relative error) and ATE (absolute trajectory error).
- RIV-SLAM is heavily inspired by and based on 4DRadarSLAM 4DRadarSLAM and koide3/hdl_graph_slam
- wh200720041/iscloam intensity scan context
- christopherdoer/reve radar ego-velocity estimator
- NeBula-Autonomy/LAMP odometry check for loop closure validation
- slam_in_autonomous_driving and Dr. Gao Xiang (高翔). His SLAM tutorial and blogs are the starting point of our SLAM journey.