XIVO is an open-source repository for visual-inertial odometry/mapping. It is a simplified version of Corvis [Jones et al.,Tsotsos et al.], designed for pedagogical purposes, and incorporates odometry (relative motion of the sensor platform), local mapping (pose relative to a reference frame of the oldest visible features), and global mapping (pose relative to a global frame, including loop-closure and global re-localization — this feature, present in Corvis, is not yet incorporated in XIVO).
XIVO runs at 140FPS on stored data (here from a RealSense D435i sensor) or on live streams with latency of around 1-7ms, depending on the hardware. It takes as input video frames from a calibrated camera and inertial measurements from an IMU, and outputs a sparse point cloud with attribute features and 6 DOF pose of the camera. It performs auto-calibration of the relative pose between the camera and the IMU as well as the time-stamp alignment. More demos are available here. The aproach is described in this paper.
This software is primarily built and tested on Ubuntu 20.04 with compiler g++9. We may support other platforms as we feel like. A full list of supported platforms is listed in our build page.
- OpenCV: Feature detection and tracking.
- Eigen: Linear algebra.
- Pangolin: Lightweight visualization.
- glog: Logging.
- gflags: Command-line options.
- jsoncpp: Configuration.
- (optional) googletest: Unit tests.
- (optional) g2o: To use pose graph optimization.
- (optional) ROS: To use in live mode with ROS.
- (optional) pybind11: Python binding.
All dependencies, except for OpenCV, are included in the thirdparty
directory.
Please see our wiki for usage instructions and more detailed information about the algorithm.
This software is property of the UC Regents, and is provided free of charge for research purposes only. It comes with no warranties, expressed or implied, according to these terms and conditions. For commercial use, please contact UCLA TDG.
If you make use of any part of this code or the datasets provided, please acknowledge this repository by citing the following:
@misc{fei2019xivo,
title={XIVO: An Open-Source Software for Visual-Inertial Odometry},
author={Fei, Xiaohan and Soatto, Stefano},
year={2019},
howpublished = "\url{https://github.com/ucla-vision/xivo}"
}
or
@article{fei2019geo,
title={Geo-supervised visual depth prediction},
author={Fei, Xiaohan and Wong, Alex and Soatto, Stefano},
journal={IEEE Robotics and Automation Letters},
volume={4},
number={2},
pages={1661--1668},
year={2019},
publisher={IEEE}
}