A Long-Tracked-Feature Linked Optimized Window for Visual-Inertial Odometry
This package requires some features of C++14.
This package is developed and tested under ROS Melodic (Ubuntu 18.04) and ROS Noetic (Ubuntu 20.04) environment.
Clone the repository to your catkin workspace (for example ~/catkin_ws/):
cd ~/catkin_ws/src/
git clone https://github.com/xiaohong-huang/FLOW-VIO.git
Build the OpenCV4 (>=4.3.0):
#Clone the Opencv to the folder
cd ~/catkin_ws/src/FLOW-VIO
git clone https://github.com/opencv/opencv.git
cd opencv
#Switch the blanch to OpenCV 4.10.0.
git checkout 4.10.0
#build opencv
mkdir build
cd build
cmake ..
make -j8
#Do not use "make install"
Note, the OpenCV version must be larger than 4.3.0 (the newest version is 4.10.0, which is work well in our project). Otherwise, some of the function may not work well.
Then build the package with:
cd ~/catkin_ws/
catkin_make
Download the EuRoC bag Dataset.
Download the TUM-VI (512x512) bag Dataset.
Download Our bag Dataset.
Download the 4Seasons Dataset using the dm-vio-python-tools and follow the instructions in 4seasons_bag_generate to generate the ROS bag.
Launching the rviz via:
source ~/catkin_ws/devel/setup.bash
roslaunch flow_vio visual_inertial_rviz.launch
Open another terminal and run the project by:
source ~/catkin_ws/devel/setup.bash
rosrun flow_vio flow_vio_node src/FLOW-VIO/yaml/SETTING.yaml YOUR_BAG_FOLDER/BAG_NAME.bag ourput.csv
YOUR_BAG_FOLDER is the folder where you save the dataset. BAG_NAME is the name of the dataset. SETTING.yaml is the setting for different datasets.
You could use the following settings to perform VIO in different datasets.
euroc_config.yaml #EuRoC dataset
tum_config.yaml #TUM-VI dataset
my_config.yaml #Our dataset
4seasons_config.yaml #4Seasons dataset
We have also provide demos for runing and evaluating with all the datasets (see run_evaluate_all).
The VIO framework is developed from VINS-Mono. The Dogleg solving strategy is developed base on Ceres-Solver. The packages for interfacing ROS with OpenCV is forked from ros-perception.
The version with code comments will be uploaded in the future.
The source code is released under GPLv3 license.