ROLO-SLAM is a lightweight and robust LiDAR-based SLAM solution designed to improve the accuracy of pose estimation for ground vehicles in rough terrains. It incorporates several algorithmic innovations that reduce pose estimation drifts, particularly in the vertical direction, which are commonly observed when navigating uneven terrains. The method includes forward location prediction to coarsely eliminate the location differences between consecutive scans, enabling separate and accurate localization and orientation determination. Additionally, ROLO-SLAM features a parallel-capable spatial voxelization for correspondence matching, along with a spherical alignment-guided rotation registration to estimate vehicle rotation. By incorporating motion constraints into the optimization process, the algorithm enhances the rapid and effective estimation of LiDAR translation. Extensive experiments conducted across diverse environments demonstrate that ROLO-SLAM consistently achieves accurate pose estimation and outperforms existing state-of-the-art LiDAR SLAM solutions, making it a reliable choice for ground vehicle localization in perceptually-challenging environments.
ROLO requires an input point cloud of type sensor_msgs::PointCloud2
.
ROLO-SLAM mitigates vertical pose drift by dividing the front-end into three modules: forward location prediction for coarse translation estimation, voxelization matching for precise rotation estimation, and continuous-time translation estimation for improved accuracy. The back-end integrates scan-to-submap alignment and global factor graph optimization to enhance overall localization performance in challenging terrains.
Our system has been tested extensively on both Ubuntu 18.04 with ROS Melodic and Ubuntu 20.04 with ROS Noetic, although other versions may work. The following configuration with required dependencies has been verified to be compatible:
- Ubuntu 18.04 or 20.04
- ROS Melodic or Noetic (
nav_msgs
,cv_bridge
,rospy
,roscpp
,std_msgs
,sensor_msgs
,geometry_msgs
,pcl_ros
,tf
,visualization_msgs
,message_generation
) - C++ 14
- CMake >=
3.0.2
- OpenCV >=
4.10.0
- GTSAM >=
4.2.0
- Boost >=
1.71
- GCC >=
8.4.0
- Point Cloud Library >=
1.10.0
- Eigen >=
3.3.7
Create a catkin workspace, clone the ROLO
repository into the src
folder, and compile via the catkin_make
package :
mkdir rolo_ws && cd rolo_ws && mkdir src && cd src
git clone https://github.com/vectr-ucla/direct_lidar_odometry.git
cd ..
catkin_make
For your convenience, we provide example test data here (9 minutes, ~4.2GB). To run, first launch ROLO via:
roslaunch rolo rolo_run.launch
In a separate terminal session, play back the downloaded bag:
rosbag play your-bag.bag -r 1
Our work will be published in JOURNAL OF FILLD ROBOTICS, if you found this work useful, please cite our manuscript:
@article{wang2024rolo,
author={Wang, Yinchuan and Ren, Bin and Zhang, Xiang and Wang, Pengyu and Wang, Chaoqun and Song, Rui and Li, Yibin and Meng, Max Q.-H.},
journal={JOURNAL OF FIELD ROBOTICS},
title={ROLO-SLAM: Rotation-Optimized LiDAR-Only SLAM in Uneven Terrain with Ground Vehicle},
year={2024},
}
We thank the authors of the FastGICP and LIO-SAM open-source packages:
- Kenji Koide, Masashi Yokozuka, Shuji Oishi, and Atsuhiko Banno, “Voxelized GICP for Fast and Accurate 3D Point Cloud Registration,” in IEEE International Conference on Robotics and Automation (ICRA), IEEE, 2021, pp. 11 054–11 059.
- T. Shan, B. Englot, D. Meyers, W. Wang, C. Ratti and D. Rus, "LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping," 2020 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), Las Vegas, NV, USA, 2020, pp. 5135-5142, doi: 10.1109/IROS45743.2020.9341176.
This work is licensed under the terms of the MIT license.