finds.dev

rpng/open_vins

An open source platform for visual-inertial navigation research.

View on GitHubHomepage ↗

★ 3,155C++GPL-3.0updated Nov 2025

// the take

OpenVINS is a C++ visual-inertial odometry library built around a Multi-State Constraint Kalman Filter (MSCKF) — a sliding-window EKF that fuses IMU data with sparse visual feature tracks without keeping full 3D landmarks in the state. It's built by the University of Delaware's robotics perception group as a research platform, and it's aimed at researchers and robotics engineers who need a solid, well-documented VIO baseline rather than a drop-in SLAM product.

The MSCKF formulation is the right engineering tradeoff for real-time use — bounded compute per update instead of full bundle adjustment, and it's not just theory: this implementation won the IROS 2019 FPV drone racing VIO competition. It ships six different feature representations (global/anchored, XYZ/inverse depth) and a modular covariance type system, which is genuinely useful if you want to swap formulations without rewriting the filter. The built-in simulator (on-manifold SE(3) B-spline trajectories, arbitrary camera/sensor configs) plus an evaluation suite covering ATE, RPE, NEES and timing breakdowns makes it one of the few VIO codebases where you can actually reproduce and benchmark results rather than take claims on faith. It also handles the sensor-calibration grunt work in-filter — camera-IMU extrinsics, time offset, inertial intrinsics including g-sensitivity — which most hobby-grade VIO stacks punt on.

It's GPL-3, which is a hard stop for anyone wanting to embed this in a closed-source commercial product — you're on the hook to open-source your derivative work. The core filter has no loop closure or global relocalization; ov_secondary exists but is explicitly a loosely-coupled bolt-on that doesn't feed corrections back into the estimator, so long runs will drift the way any pure odometry system does. It assumes synchronized stereo/binocular or monocular input and a Kalibr-style calibration workflow up front — this isn't something you point at an arbitrary camera+IMU pair and get good results from immediately. And while it builds ROS-free, the documentation, examples, and most of the community usage still assume ROS1/ROS2, so going ROS-free in production means you're on your own for integration glue.

We read the README, the directory tree and a key source file in October 2026. Nobody pays to be listed. How we judge →

// at a glance

Stars
3,155
Forks
945
Language
C++
License
GPL-3.0
Last commit
30 Nov 2025

// nearby

If open_vins isn't quite it.

All repos →