Skip to content

cggos/vins_mono_cg

Repository files navigation

vins_mono_cg

Modified version of VINS-Mono (commit 9e657be on Jan 9, 2019), a Robust and Versatile Monocular Visual-Inertial State Estimator.

VINS-Mono uses an optimization-based sliding window formulation for providing high-accuracy visual-inertial odometry. It features efficient IMU pre-integration with bias correction, automatic estimator initialization, online extrinsic calibration, failure detection and recovery, loop detection, and global pose graph optimization, map merge, pose graph reuse, online temporal calibration, rolling shutter support.

[1] VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator
[2] Online Temporal Calibration for Monocular Visual-Inertial Systems


Prerequisites

tested on Ubuntu 16.04 (ROS Kinetic) and Ubuntu 18.04 (ROS Melodic)

Build

catkin_make -j2
# or
catkin build

Run

with Dataset

  • EuRoC MAV dataset MH_01_easy.bag
    roslaunch vins_estimator euroc.launch
    rosbag play <YOUR_PATH_TO_DATASET>/MH_01_easy.bag

with live camera

with Docker

  • make sure ROS and docker are installed on your machine
  • add your account to docker group by sudo usermod -aG docker $YOUR_USER_NAME
  • run
    cd docker
    make build
    ./run.sh LAUNCH_FILE_NAME   # ./run.sh euroc.launch
  • modified the code, simply run ./run.sh LAUNCH_FILE_NAME after your changes

ROS Graph

  • rqt_graph

Evaluation

Evaluate the output trajectory vins_result_loop.tum with ground truth trajectory in the standard dataset (e.g. for EuRoC MAV dataset, the ground truth file is <sequence>/mav0/state_groundtruth_estimate0/data.csv ) using the evo tools.

  1. copy the ground truth file data.csv to the directory as same to vins_result_loop.tum

  2. evaluate (APE & RPE)

    evo_traj euroc data.csv --save_as_tum # --> data.tum
    evo_ape tum data.tum vins_result_loop.tum --align --plot
    evo_rpe tum data.tum vins_result_loop.tum --align --plot
    
    # or
    
    evo_ape euroc data.csv vins_result_loop.tum --align --plot
    evo_rpe euroc data.csv vins_result_loop.tum --align --plot
  3. get results

    APE w.r.t. translation part (m)
    (with SE(3) Umeyama alignment)
         max	0.157368
        mean	0.081223
      median	0.076672
         min	0.021434
        rmse	0.086200
         sse	7.809322
         std	0.028865
    

Tutorial

Related Code

About

Modified version of VINS-Mono (commit 9e657be)

Topics

Resources

License

Stars

Watchers

Forks

Languages