ISCLOAM
Intensity Scan Context based Full SLAM Implementation (ISC-LOAM)
This work is an implementation of paper "Intensity Scan Context: Coding Intensity and Geometry Relations for Loop Closure Detection" in IEEE International Conference on Robotics and Automation 2020 (ICRA) paper This work is 3D lidar based Simultaneous Localization And Mapping (SLAM), including both front-end and back-end SLAM, at 20Hz.
Author: Wang Han, Nanyang Technological University, Singapore
For front-end only odometry, you may visit FLOAM (fast lidar odometry and mapping)
1. Evaluation
1.1. Demo
Watch our demo at Video Link
1.2. Mapping Example
1.3. Localization Example
1.4. Ground Truth Comparison
Green: ISCLOAM Red: Ground Truth
KITTI sequence 00 KITTI sequence 05
1.5. Localization error
Platform: Intel® Core™ i7-8700 CPU @ 3.20GHz
Average translation error : 1.08%
Average rotation error : 0.000073
1.6. Comparison
Dataset | ISCLOAM | FLOAM |
---|---|---|
KITTI sequence 00 |
0.24% | 0.51% |
KITTI sequence 05 |
0.22% | 0.93% |
2. Prerequisites
2.1 Ubuntu and ROS
Ubuntu 64-bit 18.04.
ROS Melodic. ROS Installation
2.2. Ceres Solver
Follow Ceres Installation.
2.3. PCL
Follow PCL Installation.
2.3. GTSAM
Follow GTSAM Installation.
2.3. OPENCV
Follow OPENCV Installation.
2.4. Trajectory visualization
For visualization purpose, this package uses hector trajectory sever, you may install the package by
sudo apt-get install ros-melodic-hector-trajectory-server
Alternatively, you may remove the hector trajectory server node if trajectory visualization is not needed
3. Build
3.1 Clone repository:
cd ~/catkin_ws/src
git clone https://github.com/wh200720041/iscloam.git
cd ..
catkin_make -j1
source ~/catkin_ws/devel/setup.bash
3.2 Download test rosbag
Download KITTI sequence 05 (10GB) or KITTI sequence 07 (4GB)
Unzip compressed file 2011_09_30_0018.zip. If your system does not have unzip. please install unzip by
sudo apt-get install unzip
This may take a few minutes to unzip the file, by default the file location should be /home/user/Downloads/2011_09_30_0018.bag
cd ~/Downloads
unzip ~/Downloads/2011_09_30_0018.zip
3.3 Launch ROS
roslaunch iscloam iscloam.launch
3.4 Mapping Node
if you would like to generate the map of environment at the same time, you can run
roslaunch iscloam iscloam_mapping.launch
Note that the global map can be very large, so it may takes a while to perform global optimization, some lag is expected between trajectory and map since they are running in separate thread. More CPU usage will happen when loop closure is identified.
4. Test other sequence
To generate rosbag file of kitti dataset, you may use the tools provided by kitti_to_rosbag or kitti2bag
5. Other Velodyne sensor
You may use iscloam_velodyne.launch for your own velodyne sensor, such as Velodyne VLP-16.
6. Citation
If you use this work for your research, you may want to cite the paper below, your citation will be appreciated
@inproceedings{wang2020intensity,
author={H. {Wang} and C. {Wang} and L. {Xie}},
booktitle={2020 IEEE International Conference on Robotics and Automation (ICRA)},
title={Intensity Scan Context: Coding Intensity and Geometry Relations for Loop Closure Detection},
year={2020},
volume={},
number={},
pages={2095-2101},
doi={10.1109/ICRA40945.2020.9196764}
}
7.Acknowledgements
Thanks for A-LOAM and LOAM(J. Zhang and S. Singh. LOAM: Lidar Odometry and Mapping in Real-time) and LOAM_NOTED.