Skip to content

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

License

Notifications You must be signed in to change notification settings

engcang/FAST_LIO_MULTI

 
 

Repository files navigation

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 vs adaptive 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
roslaunch fast_lio_multi run.launch update_method:=adaptive

Update methods: bundle vs asynchronous vs adaptive

  • 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 from state propagation with only IMU)
    • 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 (which may reduce drift from state propagation with only IMU)
    • Depending on the sensor configuration, none-scanned data update may occur (which may result in divergence)
  • Adaptive update method
    • Asynchronous update => bundle update (only when data in FoV is not enough) => asynchronous update
    • Shorter update interval + preventing no scan data input!


Update methods - (upper): Bundle, (middle): Asynchronous, (bottom): Adaptive

  • 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

About

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

Topics

Resources

License

Stars

Watchers

Forks

Languages

  • C++ 99.2%
  • CMake 0.8%