Home

Awesome

New Feature

------------------- Update Date: 2022-11-20 -------------------

------------------- Update Date: 2022-12-13 -------------------

------------------- Update Date: 2022-12-24 -------------------

------------------- Update Date: 2023-02-11 -------------------

------------------- Update Date: 2024-04-29 -------------------

Blog:LIO-SAM:配置环境、安装测试、适配自己采集数据集

Video:基于LIO-SAM框架SLAM算法开发系列视频

Dependency

Install

  1. Use the following commands to download and compile the package. (The available ROS2 implementation see branch liorf-ros2)
  mkdir -p ~/liorf/src && cd ~/liorf/src
  git clone https://github.com/YJZLuckyBoy/liorf.git
  cd ..
  catkin_make

Run the package

  1. Run the launch file
  source devel/setup.bash
  roslaunch liorf run_kitti.launch
  1. Play existing bag files
  rosbag play kitti_2011_09_30_drive_0018_synced.bag

For fusion gps factor

Mapping

  1. lio-sam dataset
<p align='center'> <img src="./demo/lio_sam_livox_data.gif" alt="drawing" width="800" height = "400"/> </p>
  1. M2DGR dataset
<p align='center'> <img src="https://github.com/YJZLuckyBoy/pic/blob/master/liorf/M2DGR/gate_01.png" alt="drawing" width="800" height = "400"/> </p>
  1. kitti-05 dataset
<p align='center'> <img src="./demo/kitti.gif" alt="drawing" width="800" height = "400"/> </p>
  1. ubran_hongkong dataset
<p align='center'> <img src="./demo/ubran_hongkong.gif" alt="drawing" width="800" height = "400"/> </p>
  1. MulRan dataset
<p align='center'> <img src="https://github.com/YJZLuckyBoy/pic/blob/master/liorf/mulran/mulran_00.png" alt="drawing" width="400"/> <img src="https://github.com/YJZLuckyBoy/pic/blob/master/liorf/mulran/mulran_01.png" alt="drawing" width="400"/> </p>
  1. Multiple Lidar
<p align='center'> <img src="https://github.com/YJZLuckyBoy/pic/blob/master/liorf/multiple_lidar/multiple_lidar_00.png" alt="drawing" width="400"/> <img src="https://github.com/YJZLuckyBoy/pic/blob/master/liorf/multiple_lidar/multiple_lidar_01.png" alt="drawing" width="400"/> </p>
  1. r3live dataset
<p align='center'> <img src="https://github.com/YJZLuckyBoy/pic/blob/master/liorf/r3live/r3live_data_00.png" alt="drawing" width="266"/> <img src="https://github.com/YJZLuckyBoy/pic/blob/master/liorf/r3live/r3live_data_01.png" alt="drawing" width="266"/> <img src="https://github.com/YJZLuckyBoy/pic/blob/master/liorf/r3live/r3live_data_02.png" alt="drawing" width="266"/> </p>

Performance

  1. MulRan
<p align='center'> <img src="./demo/mulran_traj.png" alt="drawing" width="800" height = "400"/> </p>
  1. Kitti 01
<p align='center'> <img src="./demo/kitti01_trajec.png" alt="drawing" width="800" height = "400"/> </p> <p align='center'> <img src="./demo/kitti01_ape.png" alt="drawing" width="400"/> <img src="./demo/kitti01_rpe.png" alt="drawing" width="400"/> </p>
  1. Kitti 05
<p align='center'> <img src="./demo/kitti05_trajec.png" alt="drawing" width="800" height = "400"/> </p> <p align='center'> <img src="./demo/kitti05_ape.png" alt="drawing" width="400"/> <img src="./demo/kitti05_rpe.png" alt="drawing" width="400"/> </p>

Acknowledgments

Thanks for LIO-SAM, FAST_LIO2, UrbanNavDataset, M2DGR and MulRanDataset.

LIO-SAM

A real-time lidar-inertial odometry package. We strongly recommend the users read this document thoroughly and test the package with the provided dataset first. A video of the demonstration of the method can be found on YouTube.

<p align='center'> <img src="./config/doc/demo.gif" alt="drawing" width="800"/> </p> <p align='center'> <img src="./config/doc/device-hand-2.png" alt="drawing" width="200"/> <img src="./config/doc/device-hand.png" alt="drawing" width="200"/> <img src="./config/doc/device-jackal.png" alt="drawing" width="200"/> <img src="./config/doc/device-livox-horizon.png" alt="drawing" width="200"/> </p>

Menu

System architecture

<p align='center'> <img src="./config/doc/system.png" alt="drawing" width="800"/> </p>

We design a system that maintains two graphs and runs up to 10x faster than real-time.

Dependency

This is the original ROS1 implementation of LIO-SAM. For a ROS2 implementation see branch ros2.

Install

Use the following commands to download and compile the package.

cd ~/catkin_ws/src
git clone https://github.com/TixiaoShan/LIO-SAM.git
cd ..
catkin_make

Using Docker

Build image (based on ROS1 Kinetic):

docker build -t liosam-kinetic-xenial .

Once you have the image, start a container as follows:

docker run --init -it -d \
  -v /etc/localtime:/etc/localtime:ro \
  -v /etc/timezone:/etc/timezone:ro \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -e DISPLAY=$DISPLAY \
  liosam-kinetic-xenial \
  bash

Prepare lidar data

The user needs to prepare the point cloud data in the correct format for cloud deskewing, which is mainly done in "imageProjection.cpp". The two requirements are:

Prepare IMU data

<p align='center'> <img src="./config/doc/imu-transform.png" alt="drawing" width="800"/> </p> <p align='center'> <img src="./config/doc/imu-debug.gif" alt="drawing" width="800"/> </p>

Sample datasets

Run the package

  1. Run the launch file:
roslaunch lio_sam run.launch
  1. Play existing bag files:
rosbag play your-bag.bag -r 3

Other notes

<p align='center'> <img src="./config/doc/loop-closure.gif" alt="drawing" width="350"/> <img src="./config/doc/loop-closure-2.gif" alt="drawing" width="350"/> </p> <p align='center'> <img src="./config/doc/gps-demo.gif" alt="drawing" width="400"/> </p> <p align='center'> <img src="./config/doc/kitti-map.png" alt="drawing" width="300"/> <img src="./config/doc/kitti-demo.gif" alt="drawing" width="300"/> </p> <p align='center'> <img src="./config/doc/ouster-device.jpg" alt="drawing" width="300"/> <img src="./config/doc/ouster-demo.gif" alt="drawing" width="300"/> </p> <p align='center'> <img src="./config/doc/livox-demo.gif" alt="drawing" width="600"/> </p>

Service

Issues

Paper

Thank you for citing LIO-SAM (IROS-2020) if you use any of this code.

@inproceedings{liosam2020shan,
  title={LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping},
  author={Shan, Tixiao and Englot, Brendan and Meyers, Drew and Wang, Wei and Ratti, Carlo and Rus Daniela},
  booktitle={IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
  pages={5135-5142},
  year={2020},
  organization={IEEE}
}

Part of the code is adapted from LeGO-LOAM.

@inproceedings{legoloam2018shan,
  title={LeGO-LOAM: Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain},
  author={Shan, Tixiao and Englot, Brendan},
  booktitle={IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
  pages={4758-4765},
  year={2018},
  organization={IEEE}
}

TODO

Related Package

Acknowledgement