Skip to content

Calibration motion

Use this page to plan how you move the rig for a camera–IMU calibration. You need a board on a screen and a rig with cameras and an IMU (inertial measurement unit: gyroscope and accelerometer).

A calibration can only find what the motion shows it. Our 60 s motion below excites every axis. It also sweeps the board across the whole image.

We built it from a real hand-held recording with our Looper Insight 9. We checked it with a noisy digital twin. The twin:

  • simulates the recording;
  • solves it;
  • compares the result with the truth.

A motion is good if the twin still converges on every calibration parameter. Converges means the solve settles on a value.

Pick your board first. Each board has its own motion:

  • AprilGrid: the main motion is built for it. It may run partly off the edge of the picture.
  • Chessboard: it is only detected with every corner in the picture. So it has its own, smaller motion (see step 2).

Both boards are full-screen images for a 2560 × 1440 monitor, with configs for MVIS and Kalibr.

AprilGrid of 6 × 6 tags, black on white, in a 2560 × 1440 image

AprilGrid 6 × 6 (tag36h11, tag 43.47 mm, spacing 0.3)
image (PNG, 75 KB) · MVIS config · Kalibr config (YAML, under 1 KB)

Chessboard of 10 × 7 squares, black on white, in a 2560 × 1440 image

Chessboard 10 × 7 squares (9 × 6 inner corners, square 43.47 mm)
image (PNG, 30 KB) · MVIS config · Kalibr config (YAML, under 1 KB)

How to show them:

  1. Open the image full screen at 100 % on a 2560 × 1440 monitor.
  2. Use no display scaling and no zoom, so one image pixel is one screen pixel.

On our monitor 160 px (one tag, one square) measure 43.47 mm, the size in the configs. On another screen, measure one tag or square with a ruler. Put that size in the config:

  • MVIS: tag_size / square_size
  • Kalibr: tagSize / rowSpacingMeters and colSpacingMeters

Setup:

  • Board upright and flat.
  • Enough light for a short exposure (about 2 ms).
  • Start face-on, about 0.42 m away for the AprilGrid motion (0.47 m for the chessboard).

 

1 Watch it once2 Practise each move3 Follow along with your rig

0.0 s

Space play · ←/→ move · R repeat · F full screen · Esc exit practice

Sensor traces (gyro, accelerometer)
IMU xyz

The fine wobble is natural hand shake; do not add it on purpose.

Pick the chip for your board. Then follow the Now panel. It:

  • names the move;
  • says what to do;
  • counts down;
  • shows what comes next.

The camera card on the right shows what the camera sees. It also shows which parts of the image are still empty.

Chessboard motion: the same four moves, built from our chessboard example. It swings less, comes in only to 0.28 m and turns only a little in the loop, so the whole board stays in view. The rules are otherwise the same, and it also passes the twin.

Do four moves in order, with a short rest at each end. Blend each move into the next. Keep a comfortable hand pace: about 0.4 m/s and 1.9 rad/s at most.

#MoveTimeWhat to do
0Rest0–3 sHold still in front of the board, count 3.
1Left–right + yaw3–20 sSwing left and right around the board, 2 times (about 43° each side), turning about 22° past facing it at each end so the board slides to the picture edge. Turn round sharply.
2Up–down + pitch20–32 sMove up and down, 2 times (about 33° above and below), tipping about 34° past the board so it reaches the top or bottom edge.
3Back–forth + roll32–47 sMove in to 0.22 m and out to 0.52 m, 3 times, rolling like a steering wheel up to about 65°. Hold the board off-centre so the roll carries it into the corners.
4Loop + roll47–57 sMove round a loop parallel to the board, about 40 cm across, 2 times, turning a little against the loop and rolling about 25°, so the board runs into every corner.
5Rest57–60 sHold still, count 3.
  • Vary the speed on every sweep: push through the middle, brake into the ends.
  • Keep most of the board in view. An AprilGrid may run partly off the edge; a chessboard may not.
  • Don’t add shake. The natural wobble of a hand is all the motion needs.
  1. Record the 60 s motion with your rig. 50 s also works: drop one in-out and one loop.
  2. Calibrate with the board config from step 1.
  3. Check the result, as in the camera–IMU calibration guide.

Here are two hand-held recordings of our Looper Insight 9, solved with MVIS. Both pass the twin. The cards show the corners MVIS detected in each of the three cameras. They are drawn without the camera images.

 

Watch the path and the corners each camera detected

0.0 s

Space play · ←/→ move · R repeat · F full screen

Sensor traces (gyro, accelerometer)
IMU xyz

Both move faster than the guide motion. At a comfortable pace, follow the 60 s guide.

Avoid these motions. Each leaves some parameters loose: the solve cannot pin them down.

  • Fast shaking from one spot, face-on: the lens distortion stays loose.
  • One slow axis at a time, never pitched: lever arm (the camera–IMU position offset), time offsets and IMU scales stay loose.
  • A missing rotation (no pitch, no roll, or yaw only): the matching gyro and accelerometer scales, or the whole camera–IMU rotation, cannot be found.
  • The board always centred: the image edges are never seen, so the distortion stays loose.

The twin is a simulated Looper Insight 9 in front of the board. It has realistic corner and IMU noise, motion blur and dropped detections.

Each motion is solved on 3 noise seeds plus a noise-free run. In each solve t_ga (the time offset between the gyroscope and the accelerometer) is estimated. The camera intrinsics (focal length, image centre and lens distortion) are free.

A motion is good if, on all 22 parameters:

  • every solve converges;
  • the error stays within its uncertainty;
  • the uncertainty is at most 3× that of a well-excited 80 s reference motion.

The 22 parameters are the camera–IMU rotation, lever arm, td (the camera–IMU time offset), t_ga, gyro and accelerometer scales, and the camera intrinsics.

Run our motions through your own simulator and calibration tool with the replay pack (zip, 3.2 MB). It holds:

  • the four motions at 200 Hz (IMU pose, ideal gyro and accelerometer);
  • the two twin rigs (camera, IMU, truth, noise and detection rules);
  • our twin results with the pass rule.

Its README gives the frames, units and replay steps. The twin itself ran on MVIS, which is not public yet.

Licence:

  • CC BY 4.0: the guide motions, rigs and their results.
  • CC BY-NC 4.0: the two real-example trajectories and their results. The trajectories come from our Looper Insight 9 recordings.