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

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LIMO-Velo (based on Fast-LIO2)

A real-time, direct and LM-detached LIO SLAM.

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

Perfomance of the algorithm

TODO list

Fixes

  • Find the compensation bug (big deltas underdeliver)
  • Find mapping offline bug (probably related to compensation's)
  • Initialize IMU measurements
  • Downsample matches (to avoid overfitting)
  • Improve computation cost
  • Check if need to add point in map

Testing

  • Check quality vs. other SOTA algorithms

    • KITTI (City/Residential/Road) - No problems in 29/41 recordings.

      • Descriptions of problematic recordings:

        • Feature-less context (7)
        • High frequencies (6)
        • Non-static beggining (6)
        • Other vehicles (2)
    • (Find more datasets)

    • Compare with other SOTA algorithms

New features

  • Interpolation and smoothing of states when mapping offline
  • Erase unused (potentially dangerous) points in the map
  • Add degeneracy detection and correction
  • Try to add a module for removing dynamic objects such as people or vehicles

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.

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%