Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/rpng/open_vins/llms.txt

Use this file to discover all available pages before exploring further.

OpenVINS is a research platform for visual-inertial estimation developed by the Robot Perception and Navigation Group (RPNG) at the University of Delaware. At its core it runs an Extended Kalman Filter (EKF) that fuses inertial measurements from an IMU with sparse visual feature tracks extracted from one or more cameras. Feature tracks are incorporated via the Multi-State Constraint Kalman Filter (MSCKF) sliding window formulation, which updates the state estimate using 3D feature geometry without carrying feature states in the filter. The system is modular by design, exposing a type-based covariance management system that makes it straightforward to add new state variables or measurement models.

High-level architecture

OpenVINS is organized into four packages that build on each other:
PackageRole
ov_coreCore computer vision utilities: sparse feature tracking (KLT and descriptor-based), fundamental math types, and the multi-sensor simulator
ov_initStatic and dynamic inertial initialization procedures used to bootstrap the filter before estimation begins
ov_msckfThe main filter-based estimator — state definition, covariance management, IMU propagation, MSCKF/SLAM feature updates, and ROS nodes
ov_evalEvaluation suite with ATE, RPE, NEES, and RMSE metrics, plus trajectory plotting and timing utilities

Key features

  • Sliding window MSCKF with modular covariance type system
  • Six feature representations: global XYZ, global inverse depth, anchored XYZ, anchored inverse depth, anchored MSCKF inverse depth, anchored single inverse depth
  • Visual tracking: monocular, stereo (synchronized), and binocular cameras; KLT or descriptor-based; masked tracking support
  • Online calibration: camera-to-IMU extrinsics and time offset, camera intrinsics, and inertial intrinsics (including g-sensitivity)
  • Environmental SLAM features: OpenCV ArUco tag landmarks and sparse point SLAM features
  • Static and dynamic initialization with robust disparity-based static detection
  • Zero velocity update for vehicle applications
  • Extendable simulator: on-manifold SE(3) B-spline, arbitrary number of cameras, arbitrary sensor rate, automatic feature generation
  • Comprehensive evaluation on EuRoC MAV, TUM-VI, UZH-FPV, KAIST Urban, and other datasets
  • ROS 1, ROS 2, and ROS-free build support

Get started

Installation

Install OpenVINS with ROS 1, ROS 2, or as a standalone library without ROS.

Docker

Run OpenVINS inside a Docker container with GUI passthrough and GPU support.

Tutorial

Run OpenVINS on the EuRoC MAV dataset and visualize the output in RViz.

Datasets

Browse supported datasets and download ready-made configuration files.

Codebase extensions

Several companion repositories extend OpenVINS for specialized use cases:
  • ov_plane — Monocular visual-inertial odometry with real-time plane detection and point-to-plane regularization.
  • ov_secondary — Loosely coupled loop closure thread based on VINS-Fusion.
  • ov_maplab — Interface to export OpenVINS runs into the maplab ViMap structure for multi-session mapping.
  • vicon2gt — Groundtruth trajectory generation from Vicon or OptiTrack motion capture systems.

Citation

OpenVINS was presented at ICRA 2020 and placed first in the IROS 2019 FPV Drone Racing VIO Competition. If you use OpenVINS in your research, please cite:
@Conference{Geneva2020ICRA,
  Title      = {{OpenVINS}: A Research Platform for Visual-Inertial Estimation},
  Author     = {Patrick Geneva and Kevin Eckenhoff and Woosik Lee and Yulin Yang and Guoquan Huang},
  Booktitle  = {Proc. of the IEEE International Conference on Robotics and Automation},
  Year       = {2020},
  Address    = {Paris, France},
  Url        = {\url{https://github.com/rpng/open_vins}}
}
The full paper is available at pgeneva.com/downloads/papers/Geneva2020ICRA.pdf.

License

The codebase and documentation are licensed under the GNU General Public License v3 (GPL-3). You must preserve copyright and license notices in derivative work and make the complete modified source code available under the same license.

Build docs developers (and LLMs) love