Skip to content

A real-time, direct and tightly-coupled LiDAR-Inertial SLAM for high velocities with spinning LiDARs

License

Notifications You must be signed in to change notification settings

YangEnLu/LIMO-Velo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LIMO-Velo [Alpha]

🔴 The project is on alpha stage, so be sure to open Issues and Discussions and give all the feedback you can! Better to have 20 people giving lots of feedback than 1000 not saying anything.

Contact me at [email protected] for questions or ideas.

A real-time, direct and tightly-coupled LiDAR-Inertial SLAM.

Designed for easy modifying via modular and easy to understand code. Relying upon HKU-Mars's IKFoM and ikd-Tree open-source libraries. Based also on their FAST_LIO2.

Tested on and made for Barcelona's own "Xaloc".

Perfomance of the algorithm

See the part of my thesis where I explain the algorithm and its results: LIMOVelo + Results.

TODO list

Urgent fixes

  • Rethink mapping_offline (see Discussions)
  • Adding Livox as a LiDAR type

Design choices

Fixes to investigate

  • Interpolation and smoothing of states when mapping offline
  • Erase unused (potentially dangerous) points in the map
  • Check if need to add point in map
  • Try to add a module for removing dynamic objects such as people or vehicles
  • Use UKF instead of EKF
  • Add vision buffer and ability to paint the map's points
  • Initialize IMU measurements

0. Cloning the repository

When cloning the repository, we also need to clone the IKFoM and ikd-Tree submodules. Hence we will use the --recurse-submodules tag.

git clone --recurse-submodules https://github.com/Huguet57/LIMO-Velo.git

1. Compiling the code

We either can do catkin_make or catkin build to compile the code. By default it will compile it optimized already

2. Running LIMO-Velo

To run LIMO-Velo, we can run the launch file roslaunch limovelo test.launch if we want a visualization or roslaunch limovelo run.launch if we want it without.

2.1 Debugging LIMO-Velo

An additional launch file roslaunch limovelo debug.launch is added that uses Valgrind as a analysing tool to check for leaks and offers detailed anaylsis of program crashes.

3. Changing parameters

To adapt LIMO-Velo to our own hardware infrastructure, a YAML file config/params.yaml is available and we need to change it to our own topic names and sensor specs.

Relevant parameters are:

  • real_time if you want to get real time experience.
  • mapping_offline is on an pre-alpha stage and it does not work 100% as it should of.
  • heuristic which you can choose how you want the initialization of the pointcloud sizes (sizes =: deltas, in seconds).

4. Modifying the LiDAR driver to get true real-time performance

TODO - This section is intended to explain how to modify the LiDAR driver to increase its frequency by publishing parts of the pointcloud instead of waiting for all of it.

References

  • IKFoM: Iterated Kalman Filters on Manifolds
  • ikd-Tree: Incremental KD-Tree for Robotic Applications
  • FAST-LIO2: Fast and Direct LIO SLAM

About

A real-time, direct and tightly-coupled LiDAR-Inertial SLAM for high velocities with spinning LiDARs

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 97.2%
  • CMake 2.8%