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

ARUSfs/LIMO-Velo

This branch is 6 commits ahead of, 4 commits behind Huguet57/LIMO-Velo:main.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

52dfe45 · Jun 28, 2024
Jun 9, 2024
Mar 30, 2022
Jun 9, 2024
Jun 28, 2024
Apr 16, 2023
Dec 26, 2021
Dec 28, 2021
Feb 28, 2022
Feb 24, 2022
Mar 16, 2024
Jan 3, 2022

Repository files navigation

LIMO-Velo

Contact me at andreu.huguet@estudiantat.upc.edu for questions or ideas.

AVISO NAVEGANTES DE ARUS! INSTRUCCIONES PARA QUE FUNCIONE A LA PRIMERA

1- Os aseguráis de tener todas las librerías necesarias que se especifican en el apartado Dependencies. Un poco más abajo.

2- Hacéis un workspace nuevo y en la carpeta de src clonais el repo. ¡¡MUY IMPORTANTE CLONAR CON EL SIGUIENTE COMANDO!!

git clone --recurse-submodules git@github.com:ARUSfs/LIMO-Velo.git

3- Al hacer catkin build a mi por lo menos me peta el ordenador por un supuesto fallo de eigen. La solución es, cuando vuelve en sí el ordenador cerráis la terminal donde se está haciendo el catkin build, ya que no va a terminar nunca (lo he probado), y lo volvéis a intentar en otra terminal. Esta ya no da error y compila el código perfectamente.

4- Ya debería estar todo operativo, sobretodo yo he probado xaloc.launch que son con el coche de Barcelona y son los rosbags más completos y parecidos a los que vamos a tener. Los otros launch los probé con el dataset del KITT y funcionan, pero son de coches normales y no se como les podemos sacar provecho.

A real-time LiDAR-Inertial SLAM for high velocities in spinning LiDARs.

Perfomance of the algorithm
Visualization of the algorithm with delta = 0.01 (100Hz)

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 and made for racing at Formula Student Driverless

Common working speeds are 20m/s in straights and 100deg/s in the turns.

Perfomance of the algorithm
Tested on and made for Barcelona's own "Xaloc".

Centimeter-level accuracy is kept under racing speeds

Only algorithm that can deliver centimeter-level resolution on real-time. See the part of my thesis where I explain the algorithm and its results: LIMOVelo + Results.

Map comparison - Cones
Comparison of cones under racing speeds running all algorithms in real-time, except for LIO-SAM (-r 0.5). It failed otherwise.

Designed to be easily understood even by beginners

Developing an algorithm for a team requires the algorithm to be easy enough to understand being passed through generations.

Map comparison - Cones
LIMO-Velo's pipeline. Here are seen the different modules (blue), data (orange) and libraries (dark green).

LiDARs supported

  • Velodyne
  • Hesai
  • Ouster
  • Livox (check livox git branch)

Dependencies

  • Ubuntu (tested on 18.04, 20.04)
  • ROS (tested on Melodic, Noetic)
  • Eigen
  • PCL (tested on 1.8)

Newest additions

High Quality Maps

Sometimes a higher map quality is needed, now a new high_quality_publish parameter has been added to yield results like this below.

High quality cones
Sometimes Xaloc needs more definition to see if a cluster of points is actually a cone.

Sample datasets

Xaloc's fast dataset
Xaloc's "fast" dataset. High velocity in the straights (~15m/s) and tight turns (~80deg/s).

Try xaloc.launch with Xaloc's own rosbags.

See Issue #10 to see other sample datasets found in the web. Don't hesitate to ask there for more data on specific scenarios/cases.

Using LIMO-Velo

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.
  • initialization which you can choose how you want the initialization of the pointcloud sizes (sizes =: deltas, in seconds).

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%