Skip to content

Triangulate

SUMMARY

triangulate() reconstructs the calibration target's ChArUco corners in 3D from one synchronized frame, using the camera geometry from a prior calibrate() call, and validates the result against the board's known physical layout.

SUPPORTED TARGETS

Available only on CharucoTarget. Per-corner ArUco ids are required to match the same corner across cameras.

UNITS

points_3d are in the reference-camera frame in meters, as are neighbor_distances_m and plane_thickness_m. rms_per_camera is in pixels.

The Skill

python
report = calibrator.triangulate(image_lists, frame_index=0)

Requires a successful calibrate() call first.

SkillReturnsDescription
triangulate(image_lists, frame_index=0)TriangulationReportTriangulate ChArUco corners from one synchronized frame and validate against board geometry.
ParameterTypeDescription
image_listslist[list[ndarray]]image_lists[cam][frame], the same synchronized set passed to calibrate().
frame_indexintWhich synchronized frame to reconstruct. Default 0.

The Code

python
from telekinesis.axon import MultiCameraCalibrator
from telekinesis.axon.targets import CharucoTarget

target = CharucoTarget(squares_x=6, squares_y=9, square_length=0.012, marker_length=0.009)

calibrator = MultiCameraCalibrator(target, num_cameras=3, reference_index=1)
calibrator.calibrate(image_lists)

report = calibrator.triangulate(image_lists, frame_index=0)

report.points_3d
report.neighbor_distances_m
report.plane_thickness_m

TriangulationReport

FieldTypeDescription
frame_indexintFrame the report was computed on.
points_3d(N, 3) ndarrayTriangulated ChArUco corners, in the reference-camera frame.
idsndarrayCorner ids aligned with points_3d rows.
neighbor_distances_mlist[float]Distances between physically adjacent corners, in meters, should match the board's known geometry.
plane_thickness_mfloatThird singular value of the mean-centered point cloud, a proxy for board flatness, in meters.
rms_per_cameralist[float]Per-camera reprojection RMS (px); NaN when a camera saw nothing.
counts_per_cameralist[int]Per-camera count of corners used.