Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/ethz-asl/kalibr/llms.txt

Use this file to discover all available pages before exploring further.

A checkerboard target is a grid of alternating black and white squares. Kalibr detects the inner corner points — the intersections between four squares — and uses them as the observed features for calibration. Checkerboards are widely supported across computer vision tools and are straightforward to print, but they require the full board to be visible in every usable frame and cannot recover partial observations.
The AprilGrid is recommended for most setups. Consider a checkerboard when you already have a printed board available, when your imaging environment makes AprilTag detection unreliable, or when you need compatibility with other tools that only support checkerboards.

YAML configuration

Create a YAML file describing the physical layout of your checkerboard. Pass it to any Kalibr command with --target checkerboard.yaml.
target_type: 'checkerboard'
targetCols: 6              # number of internal corners along the x-axis
targetRows: 7              # number of internal corners along the y-axis
rowSpacingMeters: 0.06     # physical size of one square in meters (y direction)
colSpacingMeters: 0.06     # physical size of one square in meters (x direction)

Field reference

FieldTypeDescription
target_typestringMust be 'checkerboard'
targetColsintNumber of internal corners along the x-axis (minimum 3)
targetRowsintNumber of internal corners along the y-axis (minimum 3)
rowSpacingMetersfloatSize of one square in the y direction, in meters
colSpacingMetersfloatSize of one square in the x direction, in meters
targetCols and targetRows count internal corners, not squares and not the outer border. A board with 7 columns of squares has 6 internal corners along that axis. Count carefully — an off-by-one error here will cause detection to fail.

Generating the PDF

Use kalibr_create_target_pdf to produce a print-ready PDF:
kalibr_create_target_pdf --type checkerboard --nx 6 --ny 7 --csx 0.05 --csy 0.05
This writes a target.pdf file in the current directory. The arguments correspond to the YAML fields:
CLI flagYAML fieldDescription
--nxtargetColsInternal corners horizontally
--nytargetRowsInternal corners vertically
--csxcolSpacingMetersSquare size in x, in meters
--csyrowSpacingMetersSquare size in y, in meters
To also produce an EPS vector file, add --eps:
kalibr_create_target_pdf --type checkerboard --nx 6 --ny 7 --csx 0.05 --csy 0.05 --eps
See kalibr_create_target_pdf for the complete flag reference.

Printing and mounting

1

Print at 100% scale

Open the PDF and disable any fit-to-page or scaling option in your printer dialog. Print at exactly 100% so the square dimensions in the PDF correspond to real-world measurements.
2

Mount on a rigid surface

Glue or tape the printout to a flat, rigid backing — aluminum composite panel, thick foam board, or similar. Warping in the board will introduce systematic errors because the internal corners will no longer be coplanar.
3

Measure and update the YAML

Use a ruler or calipers to measure the physical side length of one printed square. Update rowSpacingMeters and colSpacingMeters in your YAML file to the measured values. Do not use the nominal value from the PDF generation command.

Limitations compared to AprilGrid

CheckerboardAprilGrid
Each detected feature is uniquely identifiedNoYes
Works with partial occlusionNo — full board requiredYes
Sensitive to lighting and contrastMore sensitiveLess sensitive
Detection fails if board rotated out of frameYesPartial views accepted
Because checkerboard corners have no individual identity, the detector must see the entire board in a single frame to establish the correspondence between image detections and known 3D positions. If the board moves partially out of view, or if the outer border is obscured, that frame cannot be used.
When collecting calibration data with a checkerboard, move slowly and keep the entire board within the camera frame at all times. Vary the board’s distance, tilt, and position across the image to excite all calibration parameters.

Build docs developers (and LLMs) love