M3DSS-dataset

LVI-SAM

Introduction

LVISAM is a framework for tightly-coupled lidar-visual-inertial odometry via smoothing and mapping, that achieves real-time state estimation and map-building with high accuracy and robustness. LVI-SAM is built atop a factor graph and is composed of two sub-systems: a visual-inertial system (VIS) and a lidar-inertial system (LIS). The two sub- systems are designed in a tightly-coupled manner, in which the VIS leverages LIS estimation to facilitate initialization. The accuracy of the VIS is improved by extracting depth information for visual features using lidar measurements. In turn, the LIS utilizes VIS estimation for initial guesses to support scan-matching. Loop closures are first identified by the VIS and further refined by the LIS. LVI-SAM can also function when one of the two sub-systems fails, which increases its robustness in both texture-less and feature-less environments. LVI-SAM is extensively evaluated on datasets gathered from several platforms over a variety of scales and environments. Here are some reference links: code link. paper link.

Image description
Fig. 1. Workflow diagram of LVISAM

2 Compilation Process

2.1 Requirement

ubuntu20.04 、ros-noetic、cmake、gcc、g++、opencv、cv-bridge、eigen、pcl1.10、ceres-solver-1.14.0、gtsam、code、bag。
During the installation of third-party libraries, there may be many version mismatch issues.
Below are just examples of installation.
Please make sure to match the versions, otherwise compilation will have significant problems.
If there are any issues during the appeal process, please search online to resolve them.

install dependence

sudo apt-get update
sudo apt-get install git gcc g++ vim make cmake

install Pangolin

sudo apt-get install libglew-dev libboost-dev libboost-thread-dev libboost-filesystem-dev
sudo apt-get install ffmpeg libavcodec-dev libavutil-dev libavformat-dev libswscale-dev libpng-dev
download Pangolin
cd Pangolin
mkdir build && cd build
cmake -DCPP11_NO_BOOST=1 ..
make
sudo make install

install OpenCV

sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev
sudo apt-get install libavformat-dev libjpeg.dev libtiff5.dev
sudo apt-get install libswscale-dev libjasper-dev
sudo apt-get install libcanberra-gtk-module libcanberra-gtk3-module
download opencv
cd opencv
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
make
sudo make install

install Eigen3

download Eigen3
cd eigen3
mkdir build && cd build
cmake ..
make
sudo make install

install Ceres

sudo apt-get install libgoogle-glog-dev libgflags-dev
sudo apt-get install libatlas-base-dev
download Ceres
mkdir ceres-bin
cd ceres-bin
cmake ../ceres-solver-1.14.0
make
sudo make install

install gtsam

wget -O ~/Downloads/gtsam.zip https://github.com/borglab/gtsam/archive/4.0.0-alpha2.zip
cd ~/Downloads/ && unzip gtsam.zip -d ~/Downloads/
cd ~/Downloads/gtsam-4.0.0-alpha2/
mkdir build && cd build
cmake ..
make
sudo make install

2.2 Build LVI-SAM

Due to the unique IMU ratio and sensor installation external parameters used by the author, many people do not know how to set external parameters if they change datasets or their own devices, and almost all datasets cannot run after changing. Here is a reference link. After the modification, using this code, you only need to configure the external parameters between LiDAR and IMU (T_imu_lidar), the external parameters between Camera and IMU (T_imu_camera), and the properties of IMU itself (which coordinate axis to rotate counterclockwise to output a positive Euler angle), and then you can run LVI-SAM on different devices.

Clone the repository and catkin_make:

cd ~/catkin_ws/src
git clone https://github.com/Cc19245/LVI-SAM-Easyused
cd ../
catkin_make
source ~/catkin_ws/devel/setup.bash

2.3 Run LVI-SAM

roslaunch lvi_sam xxx.launch
rosbag play xxxx.bag

Evaluation

Platforms Sequences Length(m) ATE
A Handheld Device Escalator 77.460 3.382
MCR normal dark 76.499 0.043
MCR aggressive 6dof light 100.871 0.073
Parkway loop night 461.049 26.366
Forest 130.937 0.060
A UGV Elevator 39.336 48.131
Indoor loop 270.674 0.117
MCR hdr 193.918 0.043
Street day 2064.475 5.159
Parkway loop night 461.051 13.805
A QR Underground 98.312 0.045
MCR hdr 85.08 0.036
Forest 108.037 0.053
A UAV MCR loop light 104.989 LiDARs not supported
A Car Urban night loop 1807.884 3.258