calib-targets

Fast, robust calibration target detection in Rust: chessboard, ChArUco, ArUco/AprilTag dictionaries, and marker boards.
Highlights
- Shared
TargetDetectionoutput across detectors for consistent downstream processing. - End-to-end helpers (
calib_targets::detect) that run ChESS corner detection for you (featureimage, enabled by default). - Low-level detector crates are re-exported when you need custom pipelines.
Quickstart (chessboard)
use ;
use ChessboardParams;
use ImageReader;
When you need to tune the ChESS stage, use the workspace-owned config types from
calib_targets::detect instead of depending on chess-corners directly.
What you get back
All detectors produce a TargetDetection (returned directly for chessboards and embedded in higher-level result structs elsewhere). Each LabeledCorner includes pixel position, optional grid coordinates, optional logical id, optional target-space position, and a detector-specific score.
Supported targets
- Chessboard:
detect::detect_chessboardorchessboard::ChessboardDetector. - ChArUco:
detect::detect_charucoorcharuco::CharucoDetector. - Marker boards:
detect::detect_marker_boardormarker::MarkerBoardDetector. - ArUco/AprilTag dictionaries and decoding via
aruco. - Printable targets:
printable::render_target_bundle/printable::write_target_bundle.
Features
image(default): enablescalib_targets::detecthelpers that useimage::GrayImageandchess-corners.tracing: enables tracing output across the workspace crates.
Examples (repo)
Printable targets
The facade re-exports the dedicated published calib-targets-print crate as
calib_targets::printable. PrintableTargetDocument is the canonical
JSON-backed input, and write_target_bundle writes <stem>.json,
<stem>.svg, and <stem>.png in one call.
For the full printable-target workflow, including the canonical JSON example,
CLI/Python entry points, and print-scale validation guidance, see the
printable-target guide.
The repo-local calib-targets-cli binary mentioned in the workspace docs is
not published on crates.io.
Python bindings
Python bindings are provided via crates/calib-targets-py (module name
calib_targets). See crates/calib-targets-py/README.md for setup.
Notes:
- Python config accepts typed params classes only.
detect_charucorequiresparamsand the board lives inparams.board.target_positionis populated only when a board layout includes a valid cell size and alignment succeeds (for marker boards, setparams.layout.cell_size).
Crate map
calib_targets::core– core types and homographies.calib_targets::chessboard– chessboard detection.calib_targets::aruco– ArUco/AprilTag dictionaries and decoding.calib_targets::charuco– ChArUco alignment and IDs.calib_targets::marker– checkerboard + circle marker boards.calib_targets::printable– printable target generation.