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.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.
High-level architecture
OpenVINS is organized into four packages that build on each other:| Package | Role |
|---|---|
ov_core | Core computer vision utilities: sparse feature tracking (KLT and descriptor-based), fundamental math types, and the multi-sensor simulator |
ov_init | Static and dynamic inertial initialization procedures used to bootstrap the filter before estimation begins |
ov_msckf | The main filter-based estimator — state definition, covariance management, IMU propagation, MSCKF/SLAM feature updates, and ROS nodes |
ov_eval | Evaluation 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.