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