This code is tested on
The dependency of DynaVINS is equal to that of VINS-Fusion.
Ubuntu 64-bit 16.04 or 18.04. ROS Kinetic or Melodic. ROS Installation
Follow Ceres Installation.
Due to the limiting file size of Github, we need one package and two files from the VINS-Fusion repository.
camera_models
package in your workspace, which is included in VINS-Fusion.support_files/brief_k10L6.bin
in VINS-Fusion into our support_files
folder support_files/brief_pattern.yml
in VINS-Fusion into our support_files
folderPlease follow the below commands to build DynaVINS (on ROS).
$ cd ~/catkin_ws/src
$ git clone https://github.com/url-kaist/dynaVINS
$ cd ../
$ catkin_make
(or if you use catkin tools) catkin build
$ source ~/catkin_ws/devel/setup.bash
For convenience, we also provide 3_high.bag
file in the parking_lot
scene. You can download the file by the following command:
$ wget https://urserver.kaist.ac.kr/publicdata/dynaVINS/VIODE_dataset/parking_lot/3_high.bag
Note that the larger the number of bag files in the VIODE dataset is, the more dynamic objects exist.
$ roslaunch dynaVINS viode_mono.launch
$ rosbag play 3_high.bag (or 0_none.bag, 1_low.bag, ...)
$ roslaunch dynaVINS viode_stereo.launch
$ rosbag play 3_high.bag (or 0_none.bag, 1_low.bag, ...)
You can use your own intel realsense d455! (calibration is required)
You can easily download our bag file by the following command:
$ wget https://urserver.kaist.ac.kr/publicdata/dynaVINS/d455_urban_robotics/e_shape.bag
$ roslaunch dynaVINS d455_mono.launch
$ rosbag play e_shape.bag (or loop_tempstatic.bag, ...)
$ roslaunch dynaVINS d455_stereo.launch
$ rosbag play e_shape.bag (or loop_tempstatic.bag, ...)
Parameters of DynaVINS. You can find the results of each parameter on the wiki page (param)
Time comparison according to various parameters can be found on the wiki page (time).
regularization_lambda
The Lambda value of regularization term in paper. (Section III-C)
momentum_on
Using the momentum factor or not (true/false)
momentum_lambda
The Lambda value of momentum term in paper. (Section III-D)
alternating_converge
The threshold for checking the convergence of the alternating optimization.\ 90% is usually enough. If you want faster speed, please try to reduce it.\ Time comparison can be found on the wiki page.
margin_feature_thresh
Features which have less weight than this value are not used in marginalization.\ This may affect accuracy, but is effective at reducing time costs.\ You can try uncomment line 848 of "vins_estimator/estimator/estimator.cpp" to enable these features also in optimization.
//ADDITIONAL FEATURE : NO USE IN OPT.
//if(it_per_id.weight<DYN_FEAT_MARGIN_THRESH) continue;
hypodiff_dist
The distance threshold for grouping constraints into the hypothesis. (Section IV-B)
hypodiff_yaw
The angle threshold for grouping constraints into the hypothesis. (Section IV-B)
hypo_regularization
The Lambda value of regularization term in loop closure module. (Section IV-C)
hypo_alternating_converge
The threshold for checking the convergence of the alternating optimization in the loop closure module.
If you use our codes\, please cite our paper (arXiv)
@article{song2022dynavins,
title={DynaVINS: A Visual-Inertial SLAM for Dynamic Environments},
author={Song, Seungwon and Lim, Hyungtae and Lee, Alex Junho and Myung, Hyun},
journal={IEEE Robotics and Automation Letters},
year={2022}
}
If you have any questions, please do not hesitate to contact us:
sswan55 at kaist.ac.kr
shapelim at kaist.ac.kr