Skip to content

Why calibrate the IMU

Correcting the IMU and timing with MVIS cut OpenVINS mono position error (SE3 ATE) by two thirds on 24 headset recordings.

  • What: we ran the OpenVINS visual-inertial tracker on each recording twice, once on the bag as published and once on the bag corrected by MVIS.
  • Data: Monado headset recordings, not VI-Rig. The VI-Rig numbers are in the last section.

Use this page to see what an IMU calibration buys a tracker downstream. The terms are explained where they first appear.

Recordings. 24 imucalib recordings from the Monado SLAM Datasets (CC BY 4.0):

HeadsetRecordings
Valve Index8
HP Reverb G212
Samsung Odyssey+4

Two arms. The two runs of a recording differ only in the input bag:

  • As published: the bag as the dataset ships it.
  • Corrected: the same bag after mvis apply-calib with the MVIS calibration. It applies:
    • the IMU intrinsics (gyro and accel scale and misalignment),
    • removal of the static bias,
    • the td of each camera (camera–IMU time offset), by shifting the image stamps,
    • the t_ga (gyro–accel time offset), by re-interpolating the accelerometer.
  • Images are unchanged.

Shared by both arms:

  • the same MVIS camera intrinsics (kb4) and camera–IMU extrinsics;
  • identical OpenVINS configs, byte for byte.

So the test measures one thing: applying the MVIS IMU and time correction, given the MVIS geometry.

Ground truth: the lighthouse poses that come with the dataset.

Metrics:

  • SE3 ATE (mm): position error after a rigid alignment to the ground truth. This is the primary metric.
  • RPE 1 s (mm): position drift over 1 s windows.
  • Scale error (%): |Sim3 scale − 1|, how far the trajectory size is off after a similarity alignment.
  • Medians and wins: each number below is a median over recordings. “Better” counts the recordings where the corrected bag wins.
  • p: Wilcoxon signed-rank p, paired by recording, not corrected for multiple tests.

Here OpenVINS estimates no calibration while it runs. Lower is better.

MetricAs publishedCorrectedCorrected betterp
Stereo SE3 ATE (mm)8.947.0420/249.1×10⁻⁵
Stereo RPE 1 s (mm)5.514.2324/241.2×10⁻⁷
Mono SE3 ATE (mm)28.809.5621/232.1×10⁻⁴
Mono RPE 1 s (mm)9.956.7921/232.1×10⁻⁴
Mono scale error (%)5.811.9019/233.3×10⁻⁵
Stereo scale error (%)1.401.1511/240.88 (not significant)
  • Mono has 23 pairs: one Valve recording never starts in mono on either bag.
  • Mono gains most. One camera cannot see metric scale, so the tracker leans on the IMU. A wrong IMU likely shows up directly.
  • Stereo gains less. The stereo baseline gives scale, which likely hides part of the IMU error.

Per headset, SE3 ATE in mm:

HeadsetStereoMono
Valve Index (8 stereo, 7 mono)4.13 → 2.7312.15 → 7.55
HP Reverb G2 (12)9.91 → 7.3929.08 → 9.49
Samsung Odyssey+ (4)21.29 → 9.9647.51 → 13.67

Mono failures. Five as-published mono runs lost scale or diverged. With the correction, only one failed: MIC10, a Valve recording that fails on both bags.

OpenVINS can estimate some calibration while it runs: one td for all cameras, the IMU intrinsics and the camera–IMU extrinsics. Here the corrected bag with nothing online meets the as-published bag with online estimation on. SE3 ATE in mm, medians:

CamerasOnline on the as-published bagCorrected, nothing onlineAs published + online
Stereotd7.046.80
StereoIMU intrinsics7.0410.74
StereoIMU intrinsics + td7.048.19
StereoIMU intrinsics + td + extrinsics7.0411.62
Monotd9.5618.06
MonoIMU intrinsics9.5625.50
MonoIMU intrinsics + td9.5614.57
  • Stereo + online td is a tie: corrected better in 14/24, p = 0.2.
  • Every other setting stays behind the corrected bag.
  • Mono stays behind at every setting, each in 21/23 recordings.
  • t_ga: OpenVINS has no t_ga parameter, so it cannot model this offset at all. See Why calibrate t_ga.

4. Online calibration on corrected data adds nothing

Section titled “4. Online calibration on corrected data adds nothing”

Turning online calibration on for the corrected bag does not help:

  • Stereo + td: 7.04 → 7.33 mm. Online is better in only 7/24.
  • No setting lowers SE3 ATE significantly. So use the corrected bag with online calibration off.

The online values still check MVIS. They start at td = 0, so the agreement does not lean on MVIS. Camera td in ms, as-published bag, stereo + online td:

HeadsetMVIS td (cam0)OpenVINS online td
Valve Index−0.19−0.22
HP Reverb G2−1.33−1.12
Samsung Odyssey+−1.44−1.21

On the corrected bag the online td stays near 0, as it should once the offset is removed.

  • In-sample. MVIS was solved on the same recordings. A check on held-out recordings is still open.
  • Shared geometry. Both arms use the MVIS camera intrinsics and extrinsics. This is not MVIS against the best calibration for the as-published data.
  • “As published” is not raw. The dataset already carries its own Basalt IMU correction. On Valve it was applied twice, which leaves an accel scale error of about 6 %. Part of the Valve mono gain likely undoes that.
  • One combined gain. The correction fixes IMU intrinsics, bias, td and t_ga together. Their effects were not separated.
  • Too-large trajectories. Reverb G2 and Odyssey+ trajectories come out about 1–2 % too large in both arms. The cause is not known.
  • One recording gets worse. Odyssey+ MOC11 stereo goes from 11.4 to 16.6 mm with the correction, though its RPE and mono improve.
  • Small group. Odyssey+ has only 4 pairs.
  • Priors not tuned. The OpenVINS online priors are fixed and were not tuned.

The VI-Rig dataset virig-4imus-4cams shows why this matters on a real rig. The 15-recording results (family T8: ELP stereo, T265 IMU as base, Xsens as second IMU, MVIS with Kalibr’s IMU model) give these accel scales, the diagonal of Da:

IMUDa xDa yDa z
T265 IMU1.019891.019051.01668
Xsens MTi0.999970.999321.00093
  • T265 IMU: its accel scale is off by 1.7–2.0 % on every axis.
  • Xsens: its scale stays within 0.1 % of 1. It is a check on the T265 result.
  • Same kind of fix: the corrected Monado bags apply the MVIS IMU intrinsics (Da and Dw) in the same way.

To do it on your rig: