/FAST_LIO_MULTI

Multi-LiDAR version of FAST-LIO2: A computationally efficient and robust LiDAR-inertial odometry (LIO) package

Primary LanguageC++GNU General Public License v2.0GPL-2.0

FAST-LIO-MULTI

  • This repository is a FAST-LIO2's extended version of multi-LiDAR
  • Optionally, user can choose one of bundle update method vs asynchronous update method

Dependencies

cd ~/your_workspace/src
git clone https://github.com/Livox-SDK/livox_ros_driver
cd ..
catkin build -DCMAKE_BUILD_TYPE=Release

How to build and run

  • Get the code, and then build
cd ~/your_workspace/src
git clone https://github.com/engcang/FAST_LIO_MULTI

cd ..
catkin build -DCMAKE_BUILD_TYPE=Release
. devel/setup.bash
  • Then run
roslaunch fast_lio_multi run.launch update_method:=bundle
roslaunch fast_lio_multi run.launch update_method:=async

Update methods: bundle vs asynchronous

  • Bundle update: merge multi LiDAR scans into one pointcloud, and then update
    • Prevent no scan data input in extreme situation, e.g., high altitude flight of drones
    • Longer update interval (which may cause drift during aggresive and fast movement)
    • NOTE: current code implementation will properly work for LiDARs with same scan rates (e.g., same 10Hz)
  • Asynchronous update: update the filter whenever LiDAR scan inputs
    • Shorter update interval
    • Depending on the sensor configuration, none-scanned data update may occur


Update methods - (upper): Bundle (bottom): Asynchronous

  • By utilizing the forward and backward propagation structure of FAST-LIO2, each update method is implemented as follows:


Update methods - (left): Bundle (right): Asynchronous


Results of each method (for better understanding, please watch the related video)

  • For two sensor configurations,
    • Config1: Livox-MID360 x 2EA (each is tilted +143, -143 degree)
    • Config2: Livox-MID360 x 1EA (0 degree tilted), Livox-AVIA x 1EA (90 degree tilted)


Sensor config - (left): config1 (right): config2

  • For aggresive motion and middle-altitude flight situation with sensor config1, asynchronous update method shows better performance
    • Green: ground-truth, turquoise: FAST-LIO-MULTI


Side view - (left): Bundle (right): Async


Top view - (left): Bundle (right): Async

  • For high-altitude flight situation (no many scanned data) with sensor config2, bundle update method shows better and robust performance
    • Green: ground-truth, turquoise: FAST-LIO-MULTI


Top view - (left): Bundle (right): Async


Side view - (left): Bundle (right): Async