Skip to content
Our rigOpenMVIS

VI-Rig: 4 IMUs + 3 cameras

3 global-shutter cameras + 4 IMUs (100–500 Hz) on one frame

VI-Rig: three cameras and four IMUs on one white frame
Photo: OpenMVIS
Cameras
3 global shutter: Blackfly S + T265 fisheye pair
IMUs
4: Xsens MTi (base), 2 MicroStrain, T265
Board
AprilGrid 6×6, tag 88 mm
Format
ROS1 bag
Licence
CC BY-NC 4.0

One MVIS camera + IMU run on recording april_01: every camera and all four IMUs solved together.

The scene MVIS recovered from this dataset, as on the homepage. The values beside it come from this page's run.
Reprojection median0.25 px
cam0–cam1 baseline71.0 mm
cam0 td−4.32 ms
cam0 lever arm91.6 mm

Reprojection is how far, in pixels, the detected corners lie from where the solve puts them. td is the camera–IMU time offset, and the lever arm is the camera–IMU position offset.

MVIS's own player, from this run: the detected board corners, then the rig's path as the solve refines it. Press Play or drag the bar; pick a camera card to look through that camera. We publish no camera images.

The solved positions and orientations, to scale in the IMU frame. Drag sideways to orbit. Tap a sensor to see its values.

Sensorfx, fy, cx, cy pxLever mmlog(R) radtd mst_ga msReprojection px
cam0448.1, 447.5, 371.8, 280.9[+32.6, −80.9, +27.9][+0.0031, −2.2167, +2.2213]−4.320.294
cam1286.8, 286.4, 415.7, 403.0[+66.4, −111.0, −26.8][+0.0180, +2.2310, −2.2116]−5.010.213
cam2286.7, 286.2, 415.2, 397.4[+2.5, −110.4, −26.7][−0.0255, −2.2259, +2.2122]−7.680.226
IMU (base)000−0.28 ± 0.04
IMU gx3_25[−122.5, −47.0, −3.2][+2.2382, +2.2040, −0.0239]+0.00+0.19 ± 0.03
IMU gx3_35[−81.9, −47.2, −3.6][−2.2182, −2.2243, +0.0157]−1.55+0.15 ± 0.03
IMU t265[+56.0, −107.2, −31.0][+1.5788, +0.0068, −0.0022]+2.88−6.62 ± 0.03

Lever arms and rotations are each sensor in the base IMU frame; rotation is log(R) in rad. td is the time offset to the base IMU, t_imu = t_sensor + td. Reprojection is the median per camera (all cameras: median 0.253 px): how well the model fits the corners, not how accurate it is.

No published reference. No published calibration exists for this rig, so this page has nothing to compare against. What we can show is how much each value moves from one recording to the next. All 10 recordings and three tools: Dataset eval →

virig_4imus_3cams_cam_imu.yaml
input:
format: ros1
path: virig_4imus_3cams_april_01.bag
cam_topics:
- /blackfly/image_raw
- /t265/fisheye1/image_raw
- /t265/fisheye2/image_raw
imu_topics:
- /imu/data
- /gx3_25/data
- /gx3_35/imu/data
- /t265/imu
window_mode: motion
segment_length: 80.0
board:
board_type: apriltag
rows: 6
cols: 6
tag_size: 0.088
tag_spacing: 0.3
tag_family: t36h11
camera_input:
path: mvis_4imus_3cams_calib.yaml
cameras:
- {}
- factor_hz: 4.0
- factor_hz: 4.0
solve:
max_iterations: 40
corner_subsample: two_anti
sigma_g: 0.00065
sigma_a: 0.0026
sigma_bg: 0.001
sigma_ba: 0.002
estimate:
board_points: true
camera:
intrinsics: true
tr: false
td: true
extrinsics: true
imu:
intrinsics: dw_da
model: calyx
extrinsics: true
td: true
output:
path: cam_imu.json
shell
mvis cam-imu -c virig_4imus_3cams_cam_imu.yaml

The marked lines are the choices that matter for this rig:

  • input.imu_topics: Four IMU topics. The first is the base IMU; the other three are solved against it.
  • input.window_mode: MVIS picks the 80 s window with the most motion.
  • camera_input.cameras: The two T265 cameras are added to the graph at 4 Hz, which keeps the solve small.
  • solve.sigma_g: IMU noise from a still recording of this rig, measured density × 2.5. The other three sigmas are set the same way.
  • estimate.board_points: The printed board is not quite flat, so its shape is estimated too.
  • estimate.camera.intrinsics: Camera intrinsics stay free in the camera + IMU solve.

This is the config of the run on this page, with every path cut to its file name. Point the paths at your copy.

The solve took about 13 min on one desktop. It writes cam_imu.json, a calibration YAML and a report beside the config.

MVIS
MVIS main, measured-noise batch of 2026-11-08
Run date
2026-11-08
Data
VI-Rig 4 IMUs + 3 cams dataset page →
Config
virig_4imus_3cams_cam_imu.yaml, above
Command
mvis cam-imu -c virig_4imus_3cams_cam_imu.yaml
  • Recording april_01, one of the 10 recordings of this rig. MVIS picks the 80 s window with the most motion.
  • Cameras: a Blackfly S (pinhole with radial-tangential distortion) and the two T265 fisheye cameras (equidistant lens model).
  • IMUs: the Xsens MTi is the base IMU; the two MicroStrain units and the T265's own IMU are solved against it.
  • Board: AprilGrid 6×6, tag 88 mm, spacing 0.3, t36h11.
  • Solve window: 80.0 s.

Download: VI-Rig 4 IMUs + 3 cams dataset page → The recordings are listed there, not copied here.

AprilGrid 6 × 6, 660 × 660 mm. Standard pattern, to scale