Skip to content

Figwort906/SLAM

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SLICT: Multi-Input, Multi-Scale, Efficient, Surfel-Based, Lidar-Inertial Continuous-Time Odometry and Mapping, with Internal Association

Note: This is an actively developed repo. The stable versions are listed at https://github.com/brytsknguyen/slict/tags.

Publication

The details of SLICT are presented in two RA-L papers. Please cite these works if you find SLICT useful:

@article{nguyen2023slict,
  title         = {SLICT: Multi-input Multi-scale Surfel-Based Lidar-Inertial Continuous-Time Odometry and Mapping},
  author        = {Nguyen, Thien-Minh and Duberg, Daniel and Jensfelt, Patric and Yuan, Shenghai and Xie, Lihua},
  journal       = {IEEE Robotics and Automation Letters},
  volume        = {8},
  number        = {4},
  pages         = {2102--2109},
  year          = {2023},
  publisher     = {IEEE}
}
@article{nguyen2024eigen,
  title         = {Eigen Is All You Need: Efficient Lidar-Inertial Continuous-Time Odometry With Internal Association}, 
  author        = {Nguyen, Thien-Minh and Xu, Xinhang and Jin, Tongxing and Yang, Yizhuo and Li, Jianping and Yuan, Shenghai and Xie, Lihua},
  journal       = {IEEE Robotics and Automation Letters}, 
  year          = {2024},
  volume        = {9},
  number        = {6},
  pages         = {5330-5337},
  doi={10.1109/LRA.2024.3391049}
}

Summary

SLICT 1:

(Please checkout the tag slict.1.0)

SLICT 2 (current commit):

Upgrades to using B-spline for trajectory representation, knot length as small as 0.01s, with an efficient solver that ensures real-time performance. More details can be find at our RA-L paper.

Build & Run

Prerequisites

The software was developed on the following dependencies. Ubuntu 20.04 and ROS Noetic is a must for compiling SLICT due to UFOMap's minimum requirement. However a docker can be used to run SLICT with older OS versions. Please find the instructions below.

  • Ubuntu 20.04 with ROS Noetic

  • Ceres 2.1.0 (or older, if you use later versions you may encounter this error)

    git clone https://ceres-solver.googlesource.com/ceres-solver
    cd ceres-solver && git fetch --all --tags
    git checkout tags/2.1.0
    mkdir build && cd build
    cmake .. && make -j$(nproc)
    sudo make install
  • Sophus

    git clone https://github.com/strasdat/Sophus
    cd Sophus
    mkdir build && cd build
    cmake .. -DSOPHUS_USE_BASIC_LOGGING=ON
    make -j$(nproc)
    sudo make install
  • One more package:

    sudo apt install ros-$ROS_DISTRO-tf2-sensor-msgs
    

Installation

SLICT uses UFOMap for global map management. It also supports epicyclic lidar (Livox). Thus, three packages need to be included in the catkin workspace:

  1. SLICT
  2. UFOMap (devel_surfel)
  3. To compile the package for use with livox lidars (avia, mid-70, mid 360), you need to install Livox ROS driver (forked) and Livox ROS driver2 (forked) (you need to install LIVOX-SDK and LIVOX-SDK2)

Please install all dependencies first. Afterwards, create a ros workspace, clone the packages to the workspace, and build by catkin build or catkin_make, for e.g.:

mkdir -p slict_ws/src
cd slict_ws/src
git clone https://github.com/brytsknguyen/slict
git clone https://github.com/brytsknguyen/ufomap && cd ufomap && git checkout devel_surfel && cd ..
git clone https://github.com/brytsknguyen/livox_ros_driver
git clone https://github.com/brytsknguyen/livox_ros_driver2
cd .. && catkin build

The launch files for NTU VIRAL, Newer College, MCD VIRAL, and FusionPortable are provided under launch

Please raise an issue if you encounter any problem.

Example

After build step success, run following commands:

source devel/setup.zsh # Or make this command automatic by: echo "source /home/$USER/slict_ws/devel/setup.bash" >> ~/.bashrc"
roslaunch slict run_mcdviral.launch bag_file:=${PATH_TO_THE_MCD_SEQ}
# Example: roslaunch slict run_mcdviral.launch bag_file:=/media/tmn/mySataSSD1/DATASETS/MCDVIRAL/PublishedSequences/ntu_day_01/*.bag

You can also modify the path

Learning SLAM?

SLICT was developed with intention to keep things educational.The whole backbone of the program is in the following steps:

“”

Parts of SLICT were used in the course "Optimization-Based Localization and Mapping" at Division of Robotics, Perception and Learning, KTH Royal Institute of Technology (http://kth-rpl.se/). The course is open to public at the following OBLAM Course Site.

“”

“”

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 97.1%
  • Shell 1.8%
  • Other 1.1%