This page is a static snapshot. The live leaderboard and the per-dataset results pages are on openmvis.com, the home of OpenMVIS and Calibench-VI, the visual-inertial calibration benchmark.

Leaderboard → Per-dataset results → Datasets → Results records →

Calibench-VI leaderboard

Calibration results from MVIS, Kalibr and Basalt on the same datasets: every parameter as median ± sd (n) across recordings.

MVIS, Kalibr and Basalt results, per dataset.

There is no ground truth. Differences show where tools disagree, not who is right. Spread shows repeatability across recordings, not accuracy.

Run by the MVIS authors, who also ran Kalibr and Basalt. Batch 2026-11-10a · results 537de7c

How to read this
  • Spread shows repeatability across recordings, not accuracy. A tool can repeat well and still be biased.
  • 448.50 ± 0.48 (10): median ± sd across the 10 recordings that tool solved. With 3 or 4 recordings the sd itself is rough.
  • (3/15): this tool has 3 of the family's 15 recordings.
  • fixed: Kalibr doesn't estimate this value. Its camera + IMU runs take intrinsics and baselines as input, from an MVIS export or, on T6 and T11, from its own camera-only calibration; T7 ELP-L readout is held at 0. The spread here isn't repeatability.
  • shown: the tool uses a different model here, so the value has no difference next to it.
  • other model: Kalibr's coefficients here belong to a different lens model.
  • not in model, not reported, no run, no data, no RS model, not in one run: the tool has no value for this row, and the words say why. no run means the tool never ran with this sensor; not in one run means it ran with each sensor, but no single run holds both ends of the baseline. not run, in the recordings line: the tool has no run for the family.
  • Differences: the column header gives the subtraction, using stored medians. No tool is the reference.
  • ◆: the difference is larger than the larger of the two sds. It marks disagreement, not an error in either tool.
  • ≠n: the two medians come from different numbers of recordings.
  • ≠ model: the tools' models differ, so no difference is shown. fit: reprojection error measures fit and isn't comparable across models.
  • ‡ td: MVIS splits the IMU into gyro (td) and accel (td + t_ga); Kalibr and Basalt have one timeline. Basalt − Kalibr is the like-for-like check.
  • Each family folds; the first is open. Click a family's title to open or close it.

VI-Rig 4 IMUs + 3 cams (ours)

No ground truth: ◆ marks disagreement, not who is right.

median ± sd (recordings) · (3/15) partial · fixed Kalibr input · shown / other model, no Δ · ≠ model, fit: no Δ · ◆ |Δ| above the larger sd · ≠n different recording counts · ‡ see How to read this

On camera + IMU families the MVIS column uses Kalibr's IMU model, not the MVIS default. The default fills fewer rows and is in a closed fold under each family.

Key and MVIS column

Swipe a table sideways for the other tools and differences.

median ± sd (recordings) · (3/15) partial · fixed Kalibr input · shown / other model, no Δ · ≠ model, fit: no Δ · ◆ |Δ| above the larger sd · ≠n different recording counts · ‡ see How to read this

On camera + IMU families the MVIS column uses Kalibr's IMU model, not the MVIS default. The default fills fewer rows and is in a closed fold under each family.

T6c · 3 GS cameras — camera calibration

MVIS 10 of 10 · Kalibr 10 of 10 · Basalt 10 of 10, Blackfly shown only

Camera · april 01–10 · Kalibr kalibr_calibrate_cameras, 3 cameras jointly

Read first: MVIS runs the Blackfly and the t265 pair separately, so it has no baseline to the Blackfly; Kalibr solves the three cameras jointly.

Notes

Like for like: MVIS uses two corners per tag and estimates the board shape; Kalibr uses all four corners and assumes a flat board.

Note: MVIS runs camera-only per bag, the Blackfly alone and the t265 pair (the rig's cameras share no frame stamps), so it has no baseline to the Blackfly; Kalibr's 10 camera-only runs solve the three cameras jointly.

Basalt: t265 pair (kb4, fisheye 2 snapped onto fisheye 1) and Blackfly alone (pinhole-radtan8, a different model from radtan: its intrinsics are shown only); no camera-only Basalt run holds both devices, so no baselines to the Blackfly.

Run config · MVIS · run_calibration.py

Camera-only runs: the Blackfly alone and the t265 pair, since the rig's cameras share no frame stamps.

Command for blackfly_april_01 from the MVIS repo root (batch 2026-11-10a); run directly with this config, not through the regression manifest.

python scripts/run_calibration.py \
    --config blackfly_april_01.yaml \
    --output results/regression/mvis_4imus_3cams/blackfly_april_01 \
    --dataset-name mvis_4imus_3cams \
    --collection-name blackfly_april_01 \
    --no-rs \
    --no-td \
    --rerun-outliers \
    --corner-subsample two_anti \
    --target-hz 5.0

blackfly_april_01.yaml

input:
  cameras:
  - camera_id: 0
    name: Blackfly
    source_type: rosbag_topic
    source_path: <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_01.bag
    topic: /blackfly/image_raw
    distortion_model: radtan
    shutter_type: global
    factor_hz: 15.0
board:
  board_type: apriltag
  rows: 6
  cols: 6
  tag_size: 0.088
  tag_spacing: 0.3
  tag_family: t36h11
solve:
  max_iterations: 15
  max_init_frames: 100
  pixel_sigma: 1.0
  huber_threshold: 1.345
output:
  path: <OUTPUT>/
  format: yaml
reference_camera: 0
optimize_time_offset: false
rerun_visualization: false
estimate:
  board_points: true

Runs (20: config · input; any other key that differs from blackfly_april_01 is listed, otherwise only the bag / prior / output paths change):

  • blackfly_april_01 · blackfly_april_01.yaml · <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_01.bag
  • t265_april_01 · t265_april_01.yaml · <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_01.bag · input.cameras[0].name: T265-1; input.cameras[0].topic: /t265/fisheye1/image_raw; input.cameras[0].distortion_model: equidistant; input.cameras[1].camera_id: 1; input.cameras[1].name: T265-2; input.cameras[1].source_type: rosbag_topic; input.cameras[1].source_path: <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_01.bag; input.cameras[1].topic: /t265/fisheye2/image_raw; input.cameras[1].distortion_model: equidistant; input.cameras[1].shutter_type: global; input.cameras[1].factor_hz: 15.0
  • blackfly_april_02 · blackfly_april_02.yaml · <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_02.bag
  • t265_april_02 · t265_april_02.yaml · <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_02.bag · input.cameras[0].name: T265-1; input.cameras[0].topic: /t265/fisheye1/image_raw; input.cameras[0].distortion_model: equidistant; input.cameras[1].camera_id: 1; input.cameras[1].name: T265-2; input.cameras[1].source_type: rosbag_topic; input.cameras[1].source_path: <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_02.bag; input.cameras[1].topic: /t265/fisheye2/image_raw; input.cameras[1].distortion_model: equidistant; input.cameras[1].shutter_type: global; input.cameras[1].factor_hz: 15.0
  • blackfly_april_03 · blackfly_april_03.yaml · <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_03.bag
  • t265_april_03 · t265_april_03.yaml · <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_03.bag · input.cameras[0].name: T265-1; input.cameras[0].topic: /t265/fisheye1/image_raw; input.cameras[0].distortion_model: equidistant; input.cameras[1].camera_id: 1; input.cameras[1].name: T265-2; input.cameras[1].source_type: rosbag_topic; input.cameras[1].source_path: <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_03.bag; input.cameras[1].topic: /t265/fisheye2/image_raw; input.cameras[1].distortion_model: equidistant; input.cameras[1].shutter_type: global; input.cameras[1].factor_hz: 15.0
  • blackfly_april_04 · blackfly_april_04.yaml · <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_04.bag
  • t265_april_04 · t265_april_04.yaml · <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_04.bag · input.cameras[0].name: T265-1; input.cameras[0].topic: /t265/fisheye1/image_raw; input.cameras[0].distortion_model: equidistant; input.cameras[1].camera_id: 1; input.cameras[1].name: T265-2; input.cameras[1].source_type: rosbag_topic; input.cameras[1].source_path: <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_04.bag; input.cameras[1].topic: /t265/fisheye2/image_raw; input.cameras[1].distortion_model: equidistant; input.cameras[1].shutter_type: global; input.cameras[1].factor_hz: 15.0
  • blackfly_april_05 · blackfly_april_05.yaml · <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_05.bag
  • t265_april_05 · t265_april_05.yaml · <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_05.bag · input.cameras[0].name: T265-1; input.cameras[0].topic: /t265/fisheye1/image_raw; input.cameras[0].distortion_model: equidistant; input.cameras[1].camera_id: 1; input.cameras[1].name: T265-2; input.cameras[1].source_type: rosbag_topic; input.cameras[1].source_path: <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_05.bag; input.cameras[1].topic: /t265/fisheye2/image_raw; input.cameras[1].distortion_model: equidistant; input.cameras[1].shutter_type: global; input.cameras[1].factor_hz: 15.0
  • blackfly_april_06 · blackfly_april_06.yaml · <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_06.bag
  • t265_april_06 · t265_april_06.yaml · <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_06.bag · input.cameras[0].name: T265-1; input.cameras[0].topic: /t265/fisheye1/image_raw; input.cameras[0].distortion_model: equidistant; input.cameras[1].camera_id: 1; input.cameras[1].name: T265-2; input.cameras[1].source_type: rosbag_topic; input.cameras[1].source_path: <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_06.bag; input.cameras[1].topic: /t265/fisheye2/image_raw; input.cameras[1].distortion_model: equidistant; input.cameras[1].shutter_type: global; input.cameras[1].factor_hz: 15.0
  • blackfly_april_07 · blackfly_april_07.yaml · <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_07.bag
  • t265_april_07 · t265_april_07.yaml · <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_07.bag · input.cameras[0].name: T265-1; input.cameras[0].topic: /t265/fisheye1/image_raw; input.cameras[0].distortion_model: equidistant; input.cameras[1].camera_id: 1; input.cameras[1].name: T265-2; input.cameras[1].source_type: rosbag_topic; input.cameras[1].source_path: <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_07.bag; input.cameras[1].topic: /t265/fisheye2/image_raw; input.cameras[1].distortion_model: equidistant; input.cameras[1].shutter_type: global; input.cameras[1].factor_hz: 15.0
  • blackfly_april_08 · blackfly_april_08.yaml · <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_08.bag
  • t265_april_08 · t265_april_08.yaml · <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_08.bag · input.cameras[0].name: T265-1; input.cameras[0].topic: /t265/fisheye1/image_raw; input.cameras[0].distortion_model: equidistant; input.cameras[1].camera_id: 1; input.cameras[1].name: T265-2; input.cameras[1].source_type: rosbag_topic; input.cameras[1].source_path: <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_08.bag; input.cameras[1].topic: /t265/fisheye2/image_raw; input.cameras[1].distortion_model: equidistant; input.cameras[1].shutter_type: global; input.cameras[1].factor_hz: 15.0
  • blackfly_april_09 · blackfly_april_09.yaml · <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_09.bag
  • t265_april_09 · t265_april_09.yaml · <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_09.bag · input.cameras[0].name: T265-1; input.cameras[0].topic: /t265/fisheye1/image_raw; input.cameras[0].distortion_model: equidistant; input.cameras[1].camera_id: 1; input.cameras[1].name: T265-2; input.cameras[1].source_type: rosbag_topic; input.cameras[1].source_path: <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_09.bag; input.cameras[1].topic: /t265/fisheye2/image_raw; input.cameras[1].distortion_model: equidistant; input.cameras[1].shutter_type: global; input.cameras[1].factor_hz: 15.0
  • blackfly_april_10 · blackfly_april_10.yaml · <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_10.bag
  • t265_april_10 · t265_april_10.yaml · <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_10.bag · input.cameras[0].name: T265-1; input.cameras[0].topic: /t265/fisheye1/image_raw; input.cameras[0].distortion_model: equidistant; input.cameras[1].camera_id: 1; input.cameras[1].name: T265-2; input.cameras[1].source_type: rosbag_topic; input.cameras[1].source_path: <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_10.bag; input.cameras[1].topic: /t265/fisheye2/image_raw; input.cameras[1].distortion_model: equidistant; input.cameras[1].shutter_type: global; input.cameras[1].factor_hz: 15.0

Not in the manifest: april_01, april_02, april_03, april_04, april_05, april_06, april_07, april_08, april_09, april_10

Run config · Kalibr · kalibr_calibrate_cameras

Command for april_01, rebuilt from run_camonly_sweep.py (Kalibr logs no command line); in docker kalibr:noetic, bag folder at /data, examples/regression/kalibr/targets at /targets. Focal init: KALIBR_MANUAL_FOCAL_LENGTH_INIT=1, each camera's seed piped on stdin 8× (per-camera fx of the T6 prior (mvis_4imus_3cams_calib.yaml)).

KALIBR_MANUAL_FOCAL_LENGTH_INIT=1 kalibr_calibrate_cameras \
    --models pinhole-radtan pinhole-equi pinhole-equi \
    --target /targets/april_6x6_88mm.yaml \
    --bag /data/virig_4imus_3cams_april_01.bag \
    --topics /blackfly/image_raw /t265/fisheye1/image_raw /t265/fisheye2/image_raw \
    --bag-freq 4.0 \
    --approx-sync 0.05 \
    --dont-show-report

Bag: original virig_4imus_3cams bag, hard-linked into a folder per run. Multi-camera runs: --approx-sync 0.05 (config.yaml gs.approx_sync_s).

targets/april_6x6_88mm.yaml

target_type: 'aprilgrid'
tagCols: 6
tagRows: 6
tagSize: 0.088
tagSpacing: 0.3

Runs (10; only the bag differs):

  • april_01 · ok
  • april_02 · ok
  • april_03 · ok
  • april_04 · ok
  • april_05 · ok
  • april_06 · ok
  • april_07 · ok
  • april_08 · ok
  • april_09 · ok
  • april_10 · ok
Run config · Basalt · basalt_calibrate

Recorded command of each row (basalt_status.json), from scripts/basalt_regression/run_basalt.py with examples/regression/basalt/config.yaml; our headless build of Basalt. Original bags / EuRoC folders, no copies.

T6c t265 · command for april_01:

basalt_calibrate \
    --dataset-path <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_01.bag \
    --dataset-type bag \
    --aprilgrid <TARGETS>/april_6x6_88mm.json \
    --result-path <OUTPUT>/ \
    --no-gui \
    --max-iter 200 \
    --stall-iter 5 \
    --ftol 1e-06 \
    --skip-images 1 \
    --cam-topics /t265/fisheye1/image_raw /t265/fisheye2/image_raw \
    --stamp-tolerance-ms 10.0 \
    --cam-types kb4 kb4

10 runs; options that differ from this one (paths aside):

  • april_01 · ok
  • april_02 · ok
  • april_03 · ok
  • april_04 · ok
  • april_05 · ok
  • april_06 · ok
  • april_07 · ok
  • april_08 · ok
  • april_09 · ok
  • april_10 · ok

T6c blackfly · command for april_01: Intrinsics seeded from Basalt row mvis_4imus_3cams/april_01__blackfly_kb4 (--seed-intrinsics).

basalt_calibrate \
    --dataset-path <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_01.bag \
    --dataset-type bag \
    --aprilgrid <TARGETS>/april_6x6_88mm.json \
    --result-path <OUTPUT>/ \
    --no-gui \
    --max-iter 200 \
    --stall-iter 5 \
    --ftol 1e-06 \
    --skip-images 1 \
    --cam-topics /blackfly/image_raw \
    --cam-types pinhole-radtan8 \
    --seed-intrinsics <OUTPUT>/

10 runs; options that differ from this one (paths aside):

  • april_01 · ok
  • april_02 · ok
  • april_03 · ok
  • april_04 · ok
  • april_05 · ok
  • april_06 · ok
  • april_07 · ok
  • april_08 · ok
  • april_09 · ok
  • april_10 · ok

examples/regression/basalt/targets/april_6x6_88mm.json

{
  "tagCols": 6,
  "tagRows": 6,
  "tagSize": 0.088,
  "tagSpacing": 0.3
}

Config files: MVIS · Kalibr · Basalt

cam0 – Blackfly · 8 rows · ◆ 3
ParameterMVISKalibrBasaltMVIS− Kalibr
fx px449.95 ± 0.98 (10)446.75 ± 2.17 (10)shown 448.12 ± 1.02 (10)◆ +3.20
fy px449.10 ± 1.12 (10)444.89 ± 2.50 (10)shown 446.93 ± 0.98 (10)◆ +4.21
cx px369.81 ± 0.55 (10)368.67 ± 3.28 (10)shown 368.56 ± 0.47 (10)+1.13
cy px279.90 ± 0.66 (10)278.41 ± 1.44 (10)shown 281.06 ± 0.51 (10)◆ +1.50
dist k1−0.31405 ± 0.00256 (10)−0.30796 ± 0.00996 (10)shown 0.31003 ± 6.46473 (10)−0.00609
dist k20.084 ± 0.003 (10)0.077 ± 0.009 (10)shown 11.204 ± 13.707 (10)+0.007
dist p10.00003 ± 0.00017 (10)0.00011 ± 0.00038 (10)shown −0.00034 ± 0.00026 (10)−0.00008
dist p2−0.00013 ± 0.00018 (10)0.00014 ± 0.00095 (10)shown −0.00032 ± 0.00024 (10)−0.00027
cam1 – t265 fisheye 1 · 9 rows · ◆ 5
ParameterMVISKalibrBasaltMVIS− KalibrBasalt− KalibrBasalt− MVIS
fx px286.31 ± 0.40 (10)285.72 ± 1.61 (10)286.17 ± 0.40 (10)+0.59+0.45−0.15
fy px285.97 ± 0.32 (10)285.13 ± 1.69 (10)285.60 ± 0.33 (10)+0.84+0.47◆ −0.37
cx px415.17 ± 0.20 (10)415.83 ± 0.55 (10)415.00 ± 0.20 (10)◆ −0.67◆ −0.83−0.16
cy px404.00 ± 0.21 (10)404.09 ± 1.09 (10)404.05 ± 0.17 (10)−0.10−0.05+0.05
dist k1−0.00452 ± 0.00153 (10)0.00165 ± 0.01882 (10)−0.00455 ± 0.00115 (10)−0.00617−0.00621−0.00004
dist k20.03684 ± 0.00360 (10)0.02307 ± 0.04201 (10)0.04107 ± 0.00248 (10)+0.01377+0.01800◆ +0.00423
dist k3−0.03393 ± 0.00426 (10)−0.02549 ± 0.03728 (10)−0.04057 ± 0.00239 (10)−0.00844−0.01508◆ −0.00664
dist k40.00503 ± 0.00167 (10)0.00321 ± 0.01100 (10)0.00755 ± 0.00076 (10)+0.00183+0.00434◆ +0.00252
baseline to Blackfly mmnot in one run71.856 ± 1.457 (10)not in one run
cam2 – t265 fisheye 2 · 9 rows · ◆ 3
ParameterMVISKalibrBasaltMVIS− KalibrBasalt− KalibrBasalt− MVIS
fx px286.30 ± 0.40 (10)285.37 ± 1.99 (10)286.05 ± 0.39 (10)+0.93+0.68−0.25
fy px285.75 ± 0.32 (10)284.57 ± 2.08 (10)285.32 ± 0.33 (10)+1.18+0.75◆ −0.43
cx px414.58 ± 0.22 (10)415.44 ± 0.59 (10)414.58 ± 0.20 (10)◆ −0.86◆ −0.86−0.01
cy px398.47 ± 0.17 (10)398.62 ± 1.01 (10)398.38 ± 0.13 (10)−0.14−0.24−0.09
dist k1−0.00623 ± 0.00131 (10)0.00218 ± 0.03237 (10)−0.00554 ± 0.00104 (10)−0.00842−0.00773+0.00069
dist k20.04019 ± 0.00335 (10)0.02374 ± 0.07849 (10)0.04308 ± 0.00276 (10)+0.01646+0.01934+0.00288
dist k3−0.03670 ± 0.00418 (10)−0.02631 ± 0.07301 (10)−0.04154 ± 0.00289 (10)−0.01039−0.01523◆ −0.00484
dist k40.00633 ± 0.00171 (10)0.00280 ± 0.02243 (10)0.00763 ± 0.00100 (10)+0.00353+0.00483+0.00130
baseline to Blackfly mmnot in one run71.630 ± 2.455 (10)not in one run

T6 · 3 GS cameras + 4 IMUs

MVIS 10 of 10 · Kalibr 10 of 10 · Basalt not run

Camera + IMU · april 01–10 · Kalibr 3 cameras + 4 IMUs jointly

Read first: Kalibr's intrinsics and baselines are inputs from its own camera-only calibration; its td and lever are solved given them. Data settings differ: see Notes.

Notes, including why Basalt has no run

Basalt not run: Basalt cannot calibrate T6 — one IMU per run (the rig has four) and frames grouped by exact stamp (the t265 pair and the Blackfly share none), so no single run holds the rig.

Like for like: MVIS uses two corners per tag, non-base cameras at 4 Hz or lower and an estimated board shape; Kalibr has none of these. Every tool uses the same IMU noise, measured at rest (the rig's noisiest IMU, one set for all four IMUs). Kalibr's runs date from 2026-11-08.

Note: Kalibr starts from its own camera-only calibration of each bag. Every tool uses the same IMU noise, measured at rest on the rig's noisiest IMU.

Run config · MVIS · mvis cam-imu

IMU noise measured at rest (white-noise density × 2.5; bias walks at the defaults), the same values Kalibr used.

Command for april_01 from the MVIS repo root (batch 2026-11-10a); run directly with this config, not through the regression manifest.

python -m mvis.cli.main cam-imu -c t6_april_01_kalibr.yaml

t6_april_01_kalibr.yaml

input:
  format: ros1
  path: <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_01.bag
  cam_topics:
    - /blackfly/image_raw          # Blackfly (global)
    - /t265/fisheye1/image_raw     # T265-1   (global)
    - /t265/fisheye2/image_raw     # T265-2   (global)
  imu_topics:
    - /imu/data            # base IMU
    - /gx3_25/data         # aux 1
    - /gx3_35/imu/data     # aux 2
    - /t265/imu            # aux 3
  window_mode: motion       # auto-pick the most-exciting 80 s (modern default)
  segment_length: 80.0
  cache_dir: <OUTPUT>/

board:
  board_type: apriltag
  rows: 6
  cols: 6
  tag_size: 0.088
  tag_spacing: 0.3
  tag_family: t36h11
  heights_file: null   # D2: flat board start (no measured shape for this board)

camera_input:
  path: examples/regression/mvis_4imus_3cams/mvis_4imus_3cams_calib.yaml

  cameras:
    - {}
    - factor_hz: 4.0
    - factor_hz: 4.0
solve:
  max_iterations: 40        # state_hz inherits modern default 30 (was stale 8)
  corner_subsample: two_anti  # D2: two corners per tag for speed on the VI-Rig rows (2026-11-02)
  estimate_t_ga: true
  sigma_t_ga: 0.010  # measured noise below (x 2.5, bias walks default)
  sigma_g: 0.00065
  sigma_a: 0.0026
  sigma_bg: 0.001
  sigma_ba: 0.002
  vision_pose: imu
estimate:
  board_points: true
  camera:
    intrinsics: true       # refine camera intrinsics jointly with the IMU (was pinned to the prior until 2026-10-18)
    tr: false              # all cameras are global shutter
    td: true
    extrinsics: true
  imu:
    intrinsics: full
    model: kalibr
    extrinsics: true
    td: true

output:
  path: <OUTPUT>/

Camera prior examples/regression/mvis_4imus_3cams/mvis_4imus_3cams_calib.yaml (intrinsics + extrinsics the solve starts from)

source: 'per-camera median of single-camera solves (cam0: 10; cam1: 10; cam2: 10);
  extrinsics + time offsets kept from the seed'
cameras:
- id: 0
  model: pinhole_radtan
  intrinsics:
    fx: 450.86711027126194
    fy: 450.85387180818054
    cx: 368.7765466822725
    cy: 279.3341500338614
  distortion:
    model: radtan
    coeffs:
    - -0.32509667133062115
    - 0.09584086025845817
    - 0.0002316587496415108
    - -3.8091949003965376e-05
  image_size:
  - 720
  - 540
  rolling_shutter_readout: 0.0
- id: 1
  model: pinhole_equidistant
  intrinsics:
    fx: 286.7609852349825
    fy: 286.7307787553235
    cx: 414.95048781065645
    cy: 404.5163866859639
  distortion:
    model: equidistant
    coeffs:
    - -0.0048602855193616646
    - 0.03630728447531942
    - -0.03527767594126116
    - 0.005886578086983354
  image_size:
  - 848
  - 800
  rolling_shutter_readout: 0.0
- id: 2
  model: pinhole_equidistant
  intrinsics:
    fx: 286.9198088468522
    fy: 286.72497563179843
    cx: 414.3218875675151
    cy: 398.66776453261076
  distortion:
    model: equidistant
    coeffs:
    - -0.006976584040031526
    - 0.04188810504591071
    - -0.0412584035288784
    - 0.008462403555989706
  image_size:
  - 848
  - 800
  rolling_shutter_readout: 0.0
extrinsics:
  reference_camera: 0
  transforms:
  - from: 1
    to: 0
    T_to_from:
    - - 0.9998894651010144
      - -0.012730952813123524
      - 0.007679871123871683
      - -0.03737228110230717
    - - 0.012615335283841506
      - 0.9998091090019162
      - 0.014919747734850997
      - 0.05165169683619479
    - - -0.007868347710003887
      - -0.014821214432877738
      - 0.9998592004412664
      - 0.03158705951653852
    - - 0.0
      - 0.0
      - 0.0
      - 1.0
    so3:
    - -0.014871577198352458
    - 0.007774682452464735
    - 0.012674078195583926
    translation:
    - -0.03737228110230717
    - 0.05165169683619479
    - 0.03158705951653852
  - from: 2
    to: 0
    T_to_from:
    - - 0.9997335128170951
      - -0.013228450849358944
      - 0.018918547473789783
      - 0.02712959323135141
    - - 0.01294005410666437
      - 0.9997994241619572
      - 0.015286152070908162
      - 0.05205907991610934
    - - -0.01911696498162142
      - -0.01503727147937514
      - 0.9997041672996809
      - 0.027707076751407423
    - - 0.0
      - 0.0
      - 0.0
      - 1.0
    so3:
    - -0.015163639870173126
    - 0.019020174690860432
    - 0.013085916385264849
    translation:
    - 0.02712959323135141
    - 0.05205907991610934
    - 0.027707076751407423
time_offsets:
  reference_camera: 0
  offsets:
  - camera: 1
    dt: -0.0031668068618575114
  - camera: 2
    dt: -0.0059264304892471175

Runs (10: config · input; any other key that differs from april_01 is listed, otherwise only the bag / prior / output paths change):

  • april_01 · t6_april_01_kalibr.yaml · <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_01.bag
  • april_02 · t6_april_02_kalibr.yaml · <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_02.bag
  • april_03 · t6_april_03_kalibr.yaml · <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_03.bag
  • april_04 · t6_april_04_kalibr.yaml · <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_04.bag
  • april_05 · t6_april_05_kalibr.yaml · <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_05.bag
  • april_06 · t6_april_06_kalibr.yaml · <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_06.bag
  • april_07 · t6_april_07_kalibr.yaml · <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_07.bag
  • april_08 · t6_april_08_kalibr.yaml · <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_08.bag
  • april_09 · t6_april_09_kalibr.yaml · <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_09.bag
  • april_10 · t6_april_10_kalibr.yaml · <DATASETS>/mvis_4imus_3cams/virig_4imus_3cams_april_10.bag
Run config · Kalibr · kalibr_calibrate_imu_camera

Command for april_01 (run_imu.py), in docker kalibr:noetic with the work folder at /work.

kalibr_calibrate_imu_camera \
    --bag /work/input.bag \
    --cams /work/camchain.yaml \
    --imu /work/imu0.yaml /work/imu1.yaml /work/imu2.yaml /work/imu3.yaml \
    --imu-models scale-misalignment scale-misalignment scale-misalignment scale-misalignment \
    --target /work/target.yaml \
    --timeoffset-padding 0.1 \
    --dont-show-report \
    --bag-freq 10.0 \
    --imu-delay-by-correlation

Bag: original bag, mounted read-only as /work/input.bag. Cameras /blackfly/image_raw, /t265/fisheye1/image_raw, /t265/fisheye2/image_raw · IMUs /imu/data (400 Hz), /gx3_25/data (500 Hz), /gx3_35/imu/data (100 Hz), /t265/imu (200 Hz) (imu0 = Kalibr's reference IMU).

camchain.yaml: Kalibr's own camera-only calibration of the same recording: intrinsics held fixed, topics set to the bag's. IMU noise measured at rest (white-noise density × 2.5; bias walks at the defaults), the same values MVIS used.

imu0.yaml

rostopic: /imu/data
update_rate: 400.0
accelerometer_noise_density: 2.6e-3
accelerometer_random_walk: 0.002
gyroscope_noise_density: 6.5e-4
gyroscope_random_walk: 0.001

imu1.yaml

rostopic: /gx3_25/data
update_rate: 500.0
accelerometer_noise_density: 2.6e-3
accelerometer_random_walk: 0.002
gyroscope_noise_density: 6.5e-4
gyroscope_random_walk: 0.001

imu2.yaml

rostopic: /gx3_35/imu/data
update_rate: 100.0
accelerometer_noise_density: 2.6e-3
accelerometer_random_walk: 0.002
gyroscope_noise_density: 6.5e-4
gyroscope_random_walk: 0.001

imu3.yaml

rostopic: /t265/imu
update_rate: 200.0
accelerometer_noise_density: 2.6e-3
accelerometer_random_walk: 0.002
gyroscope_noise_density: 6.5e-4
gyroscope_random_walk: 0.001

target.yaml

target_type: 'aprilgrid'
tagCols: 6
tagRows: 6
tagSize: 0.088
tagSpacing: 0.3

camchain.yaml (april_01)

cam0:
  cam_overlaps:
  - 1
  - 2
  camera_model: pinhole
  distortion_coeffs:
  - -0.3196281936640669
  - 0.09148045375962316
  - 0.00011153579901817504
  - -0.0001681478113178642
  distortion_model: radtan
  intrinsics:
  - 446.75323429342046
  - 445.2562641201713
  - 369.1357239488681
  - 279.8930469733092
  resolution:
  - 720
  - 540
  rostopic: /blackfly/image_raw
cam1:
  T_cn_cnm1:
  - - 0.9998528511632643
    - 0.01210026600653429
    - -0.012159752598716605
    - 0.0323001564016268
  - - -0.0122651436777378
    - 0.9998325954538088
    - -0.013577456266336746
    - -0.05640477276496449
  - - 0.011993426168336261
    - 0.013724599472150333
    - 0.9998338827515665
    - -0.030024332549969075
  - - 0.0
    - 0.0
    - 0.0
    - 1.0
  cam_overlaps:
  - 0
  - 2
  camera_model: pinhole
  distortion_coeffs:
  - 0.0011511981022998582
  - 0.02222352918572518
  - -0.019320855978417862
  - -0.00014323926802138815
  distortion_model: equidistant
  intrinsics:
  - 285.78394898385176
  - 285.31324907885255
  - 415.92456944464897
  - 404.12759262943723
  resolution:
  - 848
  - 800
  rostopic: /t265/fisheye1/image_raw
cam2:
  T_cn_cnm1:
  - - 0.9999804394973973
    - 0.0009689700227186675
    - -0.006179135836139286
    - -0.0636672317985457
  - - -0.0009481280804646048
    - 0.9999938552221914
    - 0.003374991999429049
    - 0.0006576328859089549
  - - 0.006182368132796903
    - -0.003369067370690021
    - 0.9999752135474742
    - -0.0002493486811083756
  - - 0.0
    - 0.0
    - 0.0
    - 1.0
  cam_overlaps:
  - 0
  - 1
  camera_model: pinhole
  distortion_coeffs:
  - 0.0029295971333663166
  - 0.014016192035476256
  - -0.007012550091010928
  - -0.005680804885348355
  distortion_model: equidistant
  intrinsics:
  - 285.58243005128224
  - 284.95111887702615
  - 415.4410893275213
  - 398.2584954292695
  resolution:
  - 848
  - 800
  rostopic: /t265/fisheye2/image_raw

Runs (10; only the bag and its camchain seed differ):

  • april_01 · ok
  • april_02 · ok
  • april_03 · ok
  • april_04 · ok
  • april_05 · ok
  • april_06 · ok
  • april_07 · ok
  • april_08 · ok
  • april_09 · ok
  • april_10 · ok
Run config · Basalt

No Basalt run is compared for the whole rig: Basalt solves one IMU per run and groups frames by exact stamp (the t265 pair and the Blackfly share none).

Config files: MVIS · Kalibr

cam0 – Blackfly · 11 rows · ◆ 1
ParameterMVISKalibr IMU modelKalibrMVIS− Kalibr
fx px448.30 ± 0.62 (10)fixed 446.75 ± 2.17 (10)
fy px447.62 ± 0.58 (10)fixed 444.89 ± 2.50 (10)
cx px370.77 ± 0.71 (10)fixed 368.67 ± 3.28 (10)
cy px281.31 ± 0.69 (10)fixed 278.41 ± 1.44 (10)
dist k1−0.31178 ± 0.00310 (10)fixed −0.30796 ± 0.00996 (10)
dist k20.08088 ± 0.00268 (10)fixed 0.07731 ± 0.00889 (10)
dist p1−0.00033 ± 0.00010 (10)fixed 0.00011 ± 0.00038 (10)
dist p2−0.00012 ± 0.00013 (10)fixed 0.00014 ± 0.00095 (10)
time offset td to base IMU‡ ms−4.293 ± 0.093 (10)−5.438 ± 0.149 (10)◆ +1.145
distance to base IMU ‖p‖ mm89.32 ± 1.41 (10)91.41 ± 3.64 (10)−2.09
reproj median px0.349 ± 0.032 (10)0.483 ± 0.209 (10)fit
cam1 – t265 fisheye 1 · 12 rows · ◆ 2
ParameterMVISKalibr IMU modelKalibrMVIS− Kalibr
fx px287.08 ± 0.37 (10)fixed 285.72 ± 1.61 (10)
fy px286.70 ± 0.35 (10)fixed 285.13 ± 1.69 (10)
cx px415.31 ± 0.27 (10)fixed 415.83 ± 0.55 (10)
cy px403.53 ± 0.25 (10)fixed 404.09 ± 1.09 (10)
dist k1−0.00342 ± 0.00290 (10)fixed 0.00165 ± 0.01882 (10)
dist k20.03197 ± 0.00604 (10)fixed 0.02307 ± 0.04201 (10)
dist k3−0.03047 ± 0.00611 (10)fixed −0.02549 ± 0.03728 (10)
dist k40.00457 ± 0.00213 (10)fixed 0.00321 ± 0.01100 (10)
baseline to Blackfly mm71.267 ± 0.143 (10)fixed 71.856 ± 1.457 (10)
time offset td to base IMU‡ ms−5.022 ± 0.148 (10)−5.999 ± 0.247 (10)◆ +0.977
distance to base IMU ‖p‖ mm130.10 ± 1.49 (10)133.92 ± 3.19 (10)◆ −3.83
reproj median px0.225 ± 0.013 (10)0.272 ± 0.126 (10)fit
cam2 – t265 fisheye 2 · 12 rows · ◆ 1
ParameterMVISKalibr IMU modelKalibrMVIS− Kalibr
fx px287.02 ± 0.33 (10)fixed 285.37 ± 1.99 (10)
fy px286.40 ± 0.32 (10)fixed 284.57 ± 2.08 (10)
cx px414.56 ± 0.32 (10)fixed 415.44 ± 0.59 (10)
cy px397.96 ± 0.28 (10)fixed 398.62 ± 1.01 (10)
dist k1−0.00397 ± 0.00265 (10)fixed 0.00218 ± 0.03237 (10)
dist k20.03449 ± 0.00610 (10)fixed 0.02374 ± 0.07849 (10)
dist k3−0.03146 ± 0.00674 (10)fixed −0.02631 ± 0.07301 (10)
dist k40.00430 ± 0.00258 (10)fixed 0.00280 ± 0.02243 (10)
baseline to Blackfly mm69.849 ± 0.327 (10)fixed 71.630 ± 2.455 (10)
time offset td to base IMU‡ ms−7.798 ± 0.238 (10)−8.778 ± 0.244 (10)◆ +0.980
distance to base IMU ‖p‖ mm111.39 ± 1.71 (10)114.03 ± 3.99 (10)−2.63
reproj median px0.239 ± 0.014 (10)0.288 ± 0.140 (10)fit
base IMU – Xsens MTi · 19 rows · ◆ 4
ParameterMVISKalibr IMU modelKalibrMVIS− Kalibr
gyro Dw[0,0] scale x0.99863 ± 0.00149 (10)0.99998 ± 0.00344 (10)−0.00135
gyro Dw[1,1] scale y0.99778 ± 0.00051 (10)0.99679 ± 0.00182 (10)+0.00099
gyro Dw[2,2] scale z1.00183 ± 0.00201 (10)1.00589 ± 0.00248 (10)◆ −0.00406
gyro Dw[1,0] cross−0.00147 ± 0.00081 (10)0.00235 ± 0.00266 (10)◆ −0.00382
gyro Dw[2,0] cross0.00329 ± 0.00143 (10)0.00682 ± 0.00393 (10)−0.00353
gyro Dw[2,1] cross0.00178 ± 0.00144 (10)0.01213 ± 0.00345 (10)◆ −0.01035
accel Da[0,0] scale x0.99988 ± 0.00044 (10)1.00005 ± 0.00093 (10)−0.00017
accel Da[1,1] scale y0.99681 ± 0.00163 (10)0.99549 ± 0.00332 (10)+0.00132
accel Da[2,2] scale z1.00043 ± 0.00132 (10)1.00476 ± 0.00292 (10)◆ −0.00433
Tg[0,0] g-sensitivity mrad·s/m0.016 ± 0.048 (10)0.512 ± 0.824 (10)≠ model
Tg[0,1] g-sensitivity mrad·s/m0.074 ± 0.087 (10)0.042 ± 0.564 (10)≠ model
Tg[0,2] g-sensitivity mrad·s/m0.053 ± 0.085 (10)2.760 ± 1.449 (10)≠ model
Tg[1,0] g-sensitivity mrad·s/m−0.033 ± 0.033 (10)0.184 ± 0.967 (10)≠ model
Tg[1,1] g-sensitivity mrad·s/m−0.004 ± 0.064 (10)0.032 ± 0.643 (10)≠ model
Tg[1,2] g-sensitivity mrad·s/m0.021 ± 0.086 (10)3.582 ± 1.728 (10)≠ model
Tg[2,0] g-sensitivity mrad·s/m0.012 ± 0.074 (10)0.101 ± 0.275 (10)≠ model
Tg[2,1] g-sensitivity mrad·s/m0.057 ± 0.090 (10)−1.158 ± 0.364 (10)≠ model
Tg[2,2] g-sensitivity mrad·s/m−0.099 ± 0.087 (10)0.093 ± 0.296 (10)≠ model
t_ga gyro−accel ms−0.308 ± 0.109 (10)not in model
aux IMU – GX3-25 · 21 rows · ◆ 4
ParameterMVISKalibr IMU modelKalibrMVIS− Kalibr
gyro Dw[0,0] scale x0.99989 ± 0.00054 (10)0.99849 ± 0.00193 (10)+0.00140
gyro Dw[1,1] scale y1.00107 ± 0.00161 (10)1.00185 ± 0.00390 (10)−0.00078
gyro Dw[2,2] scale z1.00310 ± 0.00235 (10)1.01022 ± 0.00197 (10)◆ −0.00712
gyro Dw[1,0] cross−0.00110 ± 0.00066 (10)0.00045 ± 0.00239 (10)−0.00155
gyro Dw[2,0] cross−0.00240 ± 0.00149 (10)−0.01170 ± 0.00333 (10)◆ +0.00929
gyro Dw[2,1] cross0.00170 ± 0.00160 (10)−0.00122 ± 0.00438 (10)+0.00293
accel Da[0,0] scale x0.99729 ± 0.00179 (10)0.99594 ± 0.00627 (10)+0.00134
accel Da[1,1] scale y1.00073 ± 0.00041 (10)1.00340 ± 0.00167 (10)◆ −0.00267
accel Da[2,2] scale z1.00040 ± 0.00137 (10)1.00156 ± 0.00239 (10)−0.00116
Tg[0,0] g-sensitivity mrad·s/m0.041 ± 0.110 (10)−1.083 ± 0.406 (10)≠ model
Tg[0,1] g-sensitivity mrad·s/m0.038 ± 0.060 (10)−0.181 ± 0.517 (10)≠ model
Tg[0,2] g-sensitivity mrad·s/m−0.072 ± 0.126 (10)1.498 ± 0.973 (10)≠ model
Tg[1,0] g-sensitivity mrad·s/m0.001 ± 0.092 (10)−0.526 ± 0.339 (10)≠ model
Tg[1,1] g-sensitivity mrad·s/m−0.026 ± 0.056 (10)−0.033 ± 0.398 (10)≠ model
Tg[1,2] g-sensitivity mrad·s/m0.038 ± 0.076 (10)1.217 ± 0.829 (10)≠ model
Tg[2,0] g-sensitivity mrad·s/m−0.036 ± 0.087 (10)−0.224 ± 0.341 (10)≠ model
Tg[2,1] g-sensitivity mrad·s/m0.002 ± 0.066 (10)0.131 ± 0.245 (10)≠ model
Tg[2,2] g-sensitivity mrad·s/m−0.102 ± 0.091 (10)1.146 ± 0.569 (10)≠ model
time delay td to base IMU‡ ms−0.032 ± 0.209 (10)−0.133 ± 0.189 (10)+0.101
distance to base IMU ‖p‖ mm131.31 ± 0.20 (10)129.26 ± 0.88 (10)◆ +2.05
t_ga gyro−accel ms0.147 ± 0.068 (10)not in model
aux IMU – GX3-35 · 21 rows · ◆ 6
ParameterMVISKalibr IMU modelKalibrMVIS− Kalibr
gyro Dw[0,0] scale x0.99888 ± 0.00039 (10)0.99818 ± 0.00172 (10)+0.00070
gyro Dw[1,1] scale y0.99978 ± 0.00160 (10)1.00242 ± 0.00388 (10)−0.00264
gyro Dw[2,2] scale z1.00149 ± 0.00228 (10)1.00859 ± 0.00211 (10)◆ −0.00710
gyro Dw[1,0] cross−0.00161 ± 0.00079 (10)0.00090 ± 0.00242 (10)◆ −0.00250
gyro Dw[2,0] cross−0.00179 ± 0.00131 (10)−0.01102 ± 0.00320 (10)◆ +0.00923
gyro Dw[2,1] cross−0.00232 ± 0.00175 (10)−0.00612 ± 0.00448 (10)+0.00381
accel Da[0,0] scale x0.99673 ± 0.00173 (10)0.99543 ± 0.00530 (10)+0.00130
accel Da[1,1] scale y1.00005 ± 0.00038 (10)1.00237 ± 0.00149 (10)◆ −0.00232
accel Da[2,2] scale z1.00009 ± 0.00133 (10)1.00623 ± 0.00315 (10)◆ −0.00614
Tg[0,0] g-sensitivity mrad·s/m0.006 ± 0.100 (10)−0.924 ± 0.474 (10)≠ model
Tg[0,1] g-sensitivity mrad·s/m−0.026 ± 0.033 (10)−0.013 ± 0.691 (10)≠ model
Tg[0,2] g-sensitivity mrad·s/m−0.061 ± 0.081 (10)−0.251 ± 1.086 (10)≠ model
Tg[1,0] g-sensitivity mrad·s/m−0.024 ± 0.069 (10)−0.556 ± 0.390 (10)≠ model
Tg[1,1] g-sensitivity mrad·s/m−0.024 ± 0.031 (10)0.182 ± 0.584 (10)≠ model
Tg[1,2] g-sensitivity mrad·s/m0.038 ± 0.052 (10)−0.144 ± 1.024 (10)≠ model
Tg[2,0] g-sensitivity mrad·s/m−0.042 ± 0.086 (10)0.140 ± 0.334 (10)≠ model
Tg[2,1] g-sensitivity mrad·s/m0.009 ± 0.031 (10)0.188 ± 0.251 (10)≠ model
Tg[2,2] g-sensitivity mrad·s/m−0.011 ± 0.061 (10)1.292 ± 0.607 (10)≠ model
time delay td to base IMU‡ ms−1.612 ± 0.209 (10)−1.680 ± 0.170 (10)+0.068
distance to base IMU ‖p‖ mm94.70 ± 0.19 (10)93.58 ± 0.86 (10)◆ +1.12
t_ga gyro−accel ms0.081 ± 0.067 (10)not in model
aux IMU – t265 IMU · 21 rows · ◆ 3
ParameterMVISKalibr IMU modelKalibrMVIS− Kalibr
gyro Dw[0,0] scale x0.99736 ± 0.00139 (10)0.99908 ± 0.00344 (10)−0.00172
gyro Dw[1,1] scale y1.00472 ± 0.00203 (10)1.00911 ± 0.00276 (10)◆ −0.00439
gyro Dw[2,2] scale z1.00288 ± 0.00057 (10)1.00142 ± 0.00208 (10)+0.00146
gyro Dw[1,0] cross0.00242 ± 0.00163 (10)0.00617 ± 0.00408 (10)−0.00376
gyro Dw[2,0] cross0.00296 ± 0.00066 (10)0.00080 ± 0.00264 (10)+0.00216
gyro Dw[2,1] cross−0.00169 ± 0.00141 (10)−0.01204 ± 0.00351 (10)◆ +0.01035
accel Da[0,0] scale x1.01988 ± 0.00053 (10)1.01601 ± 0.00611 (10)+0.00387
accel Da[1,1] scale y1.01927 ± 0.00160 (10)1.01475 ± 0.00544 (10)+0.00452
accel Da[2,2] scale z1.01301 ± 0.00200 (10)1.00913 ± 0.00206 (10)◆ +0.00388
Tg[0,0] g-sensitivity mrad·s/m0.006 ± 0.042 (10)1.183 ± 0.753 (10)≠ model
Tg[0,1] g-sensitivity mrad·s/m0.021 ± 0.067 (10)5.084 ± 1.362 (10)≠ model
Tg[0,2] g-sensitivity mrad·s/m−0.018 ± 0.096 (10)0.238 ± 0.726 (10)≠ model
Tg[1,0] g-sensitivity mrad·s/m0.000 ± 0.039 (10)−0.908 ± 0.691 (10)≠ model
Tg[1,1] g-sensitivity mrad·s/m−0.030 ± 0.050 (10)0.003 ± 0.318 (10)≠ model
Tg[1,2] g-sensitivity mrad·s/m−0.068 ± 0.080 (10)1.923 ± 0.432 (10)≠ model
Tg[2,0] g-sensitivity mrad·s/m0.043 ± 0.035 (10)−1.374 ± 1.098 (10)≠ model
Tg[2,1] g-sensitivity mrad·s/m−0.031 ± 0.091 (10)−6.191 ± 1.532 (10)≠ model
Tg[2,2] g-sensitivity mrad·s/m0.026 ± 0.054 (10)0.110 ± 0.803 (10)≠ model
time delay td to base IMU‡ ms2.830 ± 0.212 (10)2.753 ± 0.188 (10)+0.077
distance to base IMU ‖p‖ mm125.15 ± 0.19 (10)124.41 ± 1.42 (10)+0.74
t_ga gyro−accel ms−6.564 ± 0.054 (10)not in model
MVIS default IMU model (calyx) · 41 of 117 rows, model-independent only · ◆ 6
ParameterMVISKalibr IMU modelMVIS defaultKalibrdefault− Kalibrdefault− Kalibr IMU model
cam0 – Blackfly
fx px448.30 ± 0.62 (10)448.30 ± 0.61 (10)fixed 446.75 ± 2.17 (10)0.00
fy px447.62 ± 0.58 (10)447.63 ± 0.58 (10)fixed 444.89 ± 2.50 (10)+0.02
cx px370.77 ± 0.71 (10)370.78 ± 0.72 (10)fixed 368.67 ± 3.28 (10)0.00
cy px281.31 ± 0.69 (10)281.31 ± 0.69 (10)fixed 278.41 ± 1.44 (10)0.00
dist k1−0.31178 ± 0.00310 (10)−0.31178 ± 0.00309 (10)fixed −0.30796 ± 0.00996 (10)+0.00001
dist k20.08088 ± 0.00268 (10)0.08088 ± 0.00267 (10)fixed 0.07731 ± 0.00889 (10)0.00000
dist p1−0.00033 ± 0.00010 (10)−0.00033 ± 0.00010 (10)fixed 0.00011 ± 0.00038 (10)0.00000
dist p2−0.00012 ± 0.00013 (10)−0.00012 ± 0.00013 (10)fixed 0.00014 ± 0.00095 (10)0.00000
time offset td to base IMU‡ ms−4.293 ± 0.093 (10)−4.279 ± 0.096 (10)−5.438 ± 0.149 (10)◆ +1.159+0.014
distance to base IMU ‖p‖ mm89.32 ± 1.41 (10)89.35 ± 1.40 (10)91.41 ± 3.64 (10)−2.06+0.03
reproj median px0.349 ± 0.032 (10)0.349 ± 0.032 (10)0.483 ± 0.209 (10)fitfit
cam1 – t265 fisheye 1
fx px287.08 ± 0.37 (10)287.09 ± 0.36 (10)fixed 285.72 ± 1.61 (10)+0.01
fy px286.70 ± 0.35 (10)286.70 ± 0.35 (10)fixed 285.13 ± 1.69 (10)+0.01
cx px415.31 ± 0.27 (10)415.32 ± 0.27 (10)fixed 415.83 ± 0.55 (10)+0.01
cy px403.53 ± 0.25 (10)403.53 ± 0.26 (10)fixed 404.09 ± 1.09 (10)−0.01
dist k1−0.00342 ± 0.00290 (10)−0.00341 ± 0.00288 (10)fixed 0.00165 ± 0.01882 (10)+0.00001
dist k20.03197 ± 0.00604 (10)0.03209 ± 0.00601 (10)fixed 0.02307 ± 0.04201 (10)+0.00012
dist k3−0.03047 ± 0.00611 (10)−0.03060 ± 0.00606 (10)fixed −0.02549 ± 0.03728 (10)−0.00013
dist k40.00457 ± 0.00213 (10)0.00457 ± 0.00211 (10)fixed 0.00321 ± 0.01100 (10)+0.00001
baseline to Blackfly mm71.267 ± 0.143 (10)71.269 ± 0.142 (10)fixed 71.856 ± 1.457 (10)+0.001
time offset td to base IMU‡ ms−5.022 ± 0.148 (10)−5.014 ± 0.155 (10)−5.999 ± 0.247 (10)◆ +0.984+0.008
distance to base IMU ‖p‖ mm130.10 ± 1.49 (10)130.13 ± 1.48 (10)133.92 ± 3.19 (10)◆ −3.79+0.03
reproj median px0.225 ± 0.013 (10)0.225 ± 0.013 (10)0.272 ± 0.126 (10)fitfit
cam2 – t265 fisheye 2
fx px287.02 ± 0.33 (10)287.02 ± 0.33 (10)fixed 285.37 ± 1.99 (10)0.00
fy px286.40 ± 0.32 (10)286.41 ± 0.32 (10)fixed 284.57 ± 2.08 (10)+0.01
cx px414.56 ± 0.32 (10)414.57 ± 0.32 (10)fixed 415.44 ± 0.59 (10)+0.01
cy px397.96 ± 0.28 (10)397.96 ± 0.28 (10)fixed 398.62 ± 1.01 (10)0.00
dist k1−0.00397 ± 0.00265 (10)−0.00397 ± 0.00264 (10)fixed 0.00218 ± 0.03237 (10)0.00000
dist k20.03449 ± 0.00610 (10)0.03448 ± 0.00610 (10)fixed 0.02374 ± 0.07849 (10)−0.00001
dist k3−0.03146 ± 0.00674 (10)−0.03153 ± 0.00672 (10)fixed −0.02631 ± 0.07301 (10)−0.00007
dist k40.00430 ± 0.00258 (10)0.00431 ± 0.00257 (10)fixed 0.00280 ± 0.02243 (10)+0.00001
baseline to Blackfly mm69.849 ± 0.327 (10)69.849 ± 0.328 (10)fixed 71.630 ± 2.455 (10)0.000
time offset td to base IMU‡ ms−7.798 ± 0.238 (10)−7.791 ± 0.238 (10)−8.778 ± 0.244 (10)◆ +0.987+0.007
distance to base IMU ‖p‖ mm111.39 ± 1.71 (10)111.45 ± 1.70 (10)114.03 ± 3.99 (10)−2.58+0.06
reproj median px0.239 ± 0.014 (10)0.239 ± 0.015 (10)0.288 ± 0.140 (10)fitfit
aux IMU – GX3-25
time delay td to base IMU‡ ms−0.032 ± 0.209 (10)−0.022 ± 0.208 (10)−0.133 ± 0.189 (10)+0.111+0.011
distance to base IMU ‖p‖ mm131.31 ± 0.20 (10)131.31 ± 0.20 (10)129.26 ± 0.88 (10)◆ +2.050.00
aux IMU – GX3-35
time delay td to base IMU‡ ms−1.612 ± 0.209 (10)−1.602 ± 0.208 (10)−1.680 ± 0.170 (10)+0.078+0.010
distance to base IMU ‖p‖ mm94.70 ± 0.19 (10)94.70 ± 0.19 (10)93.58 ± 0.86 (10)◆ +1.120.00
aux IMU – t265 IMU
time delay td to base IMU‡ ms2.830 ± 0.212 (10)2.832 ± 0.212 (10)2.753 ± 0.188 (10)+0.079+0.002
distance to base IMU ‖p‖ mm125.15 ± 0.19 (10)125.16 ± 0.19 (10)124.41 ± 1.42 (10)+0.75+0.01