Skip to content

All Supported Targets

SUMMARY

A target describes the physical calibration board. Define it once and pass it to any Axon calibrator, target-specific detection is handled internally.

The Skill

python
from telekinesis.axon.targets import ChessboardTarget, CharucoTarget, ArucoTarget

At a Glance

TargetKey Parameters
ChessboardTargetsize, square_size
CharucoTargetsquares_x, squares_y, square_length, marker_length, aruco_dict_id
ArucoTargetboard_size, marker_length, marker_separation, aruco_dict_id

ArUco Dictionaries

aruco_dict_id on CharucoTarget and ArucoTarget accepts either a dictionary name or its raw OpenCV enum value. Names follow DICT_<grid>_<count>, where grid is the marker's bit resolution and count is how many unique ids the dictionary holds.

It selects the marker dictionary the detector matches against. The target's markers and the detector must use the same dictionary, or detection fails.

The Skill

python
from telekinesis.axon.targets import ARUCO_DICT_ID_MAP

print(list(ARUCO_DICT_ID_MAP))
Marker gridAvailable dictionaries
4X4DICT_4X4_50 · DICT_4X4_100 · DICT_4X4_250 · DICT_4X4_1000
5X5DICT_5X5_50 · DICT_5X5_100 · DICT_5X5_250 · DICT_5X5_1000
6X6DICT_6X6_50 · DICT_6X6_100 · DICT_6X6_250 · DICT_6X6_1000

Best Practices

Do thisWhy
Fill a good fraction of the frame, with margin on every sideToo small starves the solver; edge-to-edge clips out of view on tilt
Prefer CharucoTarget for eye-in-hand and multi-camera workPer-corner ids recover a pose from a partial view; a chessboard needs every corner
Mount rigidly and flatA bowed print reads as distortion the solver can't separate from the lens
Size squares to working distance, not printing convenienceToo small loses corner precision; too large wastes usable frame area
Match dictionary size to marker countOversized is safe but larger bit-grids detect worse at distance or under blur
Well-framed vs. poorly-framed calibration board examples
Board framing: enough of the frame to be useful, with margin to survive rotation.