OpenMVIS
Open-source multi-visual-inertial system calibration
Calibrate a whole rig at once
From one recording to a full sensor model.
MVIS is the calibration library behind the Open MVIS benchmark. It solves camera intrinsics and distortion, extrinsics, time offsets, rolling-shutter readout, board poses, camera–IMU transforms, IMU intrinsics and biases in a single GTSAM factor graph.
ROS1 and ROS2 bags are read through rosbags, alongside EuRoC/ASL folders, image folders and video, on a machine that has never had ROS installed.
# cameras only $ mvis cam -c camera.yaml # cameras + IMUs, jointly $ mvis cam-imu -c cam_imu.yaml # apply the result and recalibrate; PASS / FAIL $ mvis roundtrip -c cam_imu.yaml
One self-contained HTML report per run.
What the graph estimates
The state, not a sequence of stages.
| Quantity | Symbol | Per | Unit | Notes |
|---|---|---|---|---|
| Intrinsics + distortion | f, c, k | camera | px | Six models, mixable within one rig |
| Camera–IMU extrinsics | T_CtoI | camera | m · log(R) rad | Every camera to the base IMU |
| Camera time offset | t_d | camera | ms | Recovers USB lag of −124 ms on the ELP stereo |
| Rolling-shutter readout | t_r | camera | ms | Each corner projected at its own row time |
| IMU–IMU extrinsics | T_IstoI | aux IMU | m · log(R) rad | Plus a per-IMU time offset |
| IMU intrinsics | D_w, D_a | IMU | — | kalibr, rpng or calyx convention |
| Gyro–accel offset | t_ga | IMU | ms | The T265 reads −6.2 ms, stable to ~0.2 ms across bags |
| Biases | b_g, b_a | IMU | rad/s · m/s² | Along the whole trajectory |
| Board pose + trajectory | T_BinW, T_ItoW(t) | recording | m · log(R) rad | Chessboard, AprilGrid or ArUco targets |
Camera models
Six projection models.
radtanPinhole, radial–tangentialequidistantKannala–Brandt KB4 fisheyefovField-of-view modeldouble_sphereWide-angle fisheyeeucmExtended unified cameraomni_radtanOmnidirectional
Validated
Checked against published calibrations.
regression runs across 65 dataset families, with zero failures
focal-length difference from the published TUM-VI and Intel T265 calibrations
lever arm vs Kalibr on TUM-VI raw IMU bags, with ≤0.15 mm stereo baseline and ≤1 ms time offset
It checks its own work
A low residual is not the test.
mvis roundtrip applies a calibration to its own data and recalibrates. PASS needs the IMU intrinsics to collapse to identity and the stereo baseline to hold. See Round-trip validation.
- Inputs
- ROS1 and ROS2 bags, EuRoC/ASL, image folders, video
- Targets
- Chessboard, AprilGrid with Kalibr 2-bit border, ArUco
- Interop
- Reads and writes Kalibr
camchainandcamchain-imucam - Export
mvis apply-calibre-records a raw bag with the calibration applied
Cite
If you use the toolbox or the benchmark.
@misc{openmvis,
title = {{Open MVIS}: A Benchmark for Multi-Visual-Inertial Sensor Calibration},
author = {{Open MVIS Contributors}},
year = {2026},
url = {https://openmvis.com}
} @article{yang2024mvis,
title = {Multi-visual-inertial system: Analysis, calibration, and estimation},
author = {Yang, Yulin and Geneva, Patrick and Huang, Guoquan},
journal = {The International Journal of Robotics Research},
year = {2024},
doi = {10.1177/02783649241245726}
} Cite leaderboard results as Open MVIS leaderboard, vX.Y.