M3DSS-dataset

VINS-Mono

Introduction

VINS-MONO is a robust and versatile monocular visual-inertial state estimator. It begins with a sturdy initialization process for the estimates and employs a tightly-coupled, nonlinear optimization approach that integrates pre-integrated IMU measurements with feature observations to achieve high-precision visual-inertial odometry. The loop closure detection module, combined with the tightly-coupled formulation, enables efficient relocalization with minimal computation and implements 4DOF pose graph optimization to ensure global consistency. Moreover, the system is capable of reusing maps by effectively saving and loading them. The current map can be merged with previous ones through global pose graph optimization. Furthermore, this algorithm has been deployed in an airborne closed-loop autonomous flight on a micro-aerial vehicle platform, as well as in an iOS-based demonstration. This work presents a reliable, comprehensive, and multifunctional system suitable for various applications requiring high-precision localization.
Here are some reference links: code link. paper link. vedio link.

Image description
Fig. 1. Workflow diagram of VINS-MONO

2 Compilation Process

2.1 Requirement

This package requires ubuntu20.04 、ros-noetic、cmake、gcc、g++、 Pangolin_v0.5、opencv-3.3.1、cv-bridge、eigen-3.3.3、ceres-solver-1.14.0、vins-mono 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

2.2 Build VINS-MONO

Clone the repository and catkin_make:

cd ~/catkin_ws/src
git clone https://github.com/HKUST-Aerial-Robotics/VINS-Mono.git
cd ../
catkin_make
source ~/catkin_ws/devel/setup.bash

2.3 Run VINS-MONO

roslaunch vins_estimator xxxxx.launch #修改配置文件,包括里面的yaml文件。
roslaunch vins_estimator vins_rviz.launch #启动rviz可视化
rosbag play xxx.bag #播放你的bag,修改目录即可
./run.sh //也可以运行sh文件来一键启动,不过需要自己写

Evaluation

Platforms Sequences Length(m) ATE
A Handheld Device Escalator 77.460 0.858
MCR normal dark 76.499 0.390
MCR aggressive 6dof light 100.871 X
Parkway loop night 461.049 22.851
Forest 130.937 0.587
A UGV Elevator 39.336 X
Indoor loop 270.674 0.704
MCR hdr 193.918 4.551
Street day 2064.475 16.690
Parkway loop night 461.051 25.503
A QR Underground 98.312 0.858
MCR hdr 85.08 0.527
Forest 108.037 0.176
A UAV MCR loop light 104.989 0.231
A Car Urban night loop 1807.884 30.828