Defends the camera-supervised pipeline against PerceptAlign's
"coordinate overfitting": MediaPipe keypoints were emitted in raw camera
coordinates with no shared frame and no transceiver-geometry metadata —
the exact label shape that memorizes deployment layout and collapses
cross-layout.
- scripts/calibrate-camera-room.py + calibration_lib.py: OpenCV
two-checkerboard calibration → versioned bundle JSON (intrinsics,
camera→room extrinsics, checkerboard spec, transceiver geometry,
sha256 calibration_id). Intrinsics resolve from file > cache >
multi-view computation > loud-warning 2-view fallback.
- collect-ground-truth.py --calibration <bundle>: every sample gains
keypoints_room (unit bearing rays from the camera center in the room
frame — documented projective alignment; raw image coords preserved
so training chooses), camera_origin_room, calibration_id, and the
transceiver geometry stamp. Without the flag, output is byte-identical
to before (tested) + a one-line ADR-152 warning.
Design finding (recorded for ADR-152): a single planar checkerboard's
corner grid is centrosymmetric — the reversed corner ordering fits a
ghost camera pose with IDENTICAL reprojection error, so per-board flip
disambiguation is mathematically ill-posed. solve_two_board_extrinsics
solves the joint wall+floor set over all 4 flip combinations, where the
minimum is unique — an independent reason the TWO-checkerboard method is
required, beyond what PerceptAlign states.
15 headless pytest tests green (synthetic corners: extrinsics recovery
incl. ghost resolution, bundle round-trip + hash stability, ray
transforms w/ distortion + cross-resolution, no-calibration byte
identity).
Co-Authored-By: RuFlo <ruv@ruv.net>