This repo implements OrcVIO: Object residual constrained Visual-Inertial Odometry
The core algorithm depends on Eigen
, Boost
, Suitesparse
, Ceres
, OpenCV
, Sophus
.
cd ORCVIO
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release ..
make
and then
cd YOUR_PATH/ORCVIO/
./build/orcvio ~/YOUR_PATH_TO_DATASET/MH_01/mav0/imu0/data.csv ~/YOUR_PATH_TO_DATASET/MH_01/mav0/cam0/data.csv ~/YOUR_PATH_TO_DATASET/MH_01/mav0/cam0/data ~/YOUR_PATH/LARVIO/config/euroc.yaml
eg
cd YOUR_PATH/ORCVIO/
./build/orcvio /media/erl/disk2/euroc/MH_01_easy/mav0/imu0/data.csv /media/erl/disk2/euroc/MH_01_easy/mav0/cam0/data.csv /media/erl/disk2/euroc/MH_01_easy/mav0/cam0/data /home/erl/Workspace/orcvio_cpp/config/euroc.yaml
to debug using VS code, define VS_DEBUG_MODE
, then run
cd build
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=YES ..
make
this will generate the compile_commands.json
in the build
folder
- how to build
cd YOUR_PATH/ORCVIO/ros_wrapper
catkin_make
and then
source YOUR_PATH/ORCVIO/ros_wrapper/devel/setup.bash
roslaunch orcvio orcvio_euroc.launch
- how to setup front end refer to wiki
- we also have an OrcVIO-lite version which only uses bounding boxes, no keypoints, this mode can be enabled by changing the flag in the launch file
- visualization
trajectory is more accurate with object residual update trajectory is less accurate without object residual update
The tests are compiled by default and have to be run from top of the project directory
$ mkdir -p build && cd build
$ cmake -DCMAKE_BUILD_TYPE=Debug -DBUILD_TESTING=True ..
$ make
$ cd .. && ./build/orcvio_tests ; cd -
Or directly run make test
from build
directory and the test logs are saved in build/Testing/Temporary/LastTest.log
.
- evaluation on EuRoC dataset
- cd into
python_scripts/trajectory_eval/
folder andpython batch_run_euroc.py
- comparison with LARVIO
- comparison of left and right purbation in VIO
- trajectory evaluation using KITTI dataset error metric
- cd into
python_scripts/trajectory_eval/
folder andpython traj_eval.py
- object map result is saved under
cache/object_map
- cd into
python_scripts/object_map_eval/
folder andpython unity_object_iou_eval.py
to get the 3D IOU results when using Unity simulation; to enable debug mode usepython3 unity_object_iou_eval.py
- cd into
python_scripts/object_map_eval/
folder andpython3 kitti_object_iou_eval_single_sequence.py
to get the 3D IOU results for one sequence in KITTI,python kitti_construct_pr_table_all_sequences.py
to get the PR table for KITTI
@inproceedings{orcvio,
title = {OrcVIO: Object residual constrained Visual-Inertial Odometry},
author={M. {Shan} and Q. {Feng} and N. {Atanasov}},
year = {2020},
booktitle={IEEE Intl. Conf. on Intelligent Robots and Systems (IROS).},
url = {https://moshanatucsd.github.io/orcvio_githubpage/},
pdf = {https://arxiv.org/abs/2007.15107}
}
MIT License
Copyright (c) 2020 ERL at UCSD