## ArUco Detector Implementation (2026-02-04) - Implemented `aruco/detector.py` using `cv2.aruco.ArucoDetector` (modern API). - `detect_markers` returns corners as `(N, 4, 2)` float32 and ids as `(N,)` int32. - `build_camera_matrix_from_zed` extracts intrinsics from `sl.Camera` calibration parameters. - `estimate_pose_from_detections` uses `cv2.solvePnP` with `SOLVEPNP_SQPNP` flag for robust pose estimation from multiple markers. - Reprojection error is calculated using the utility from `aruco/pose_math.py`. ## Extrinsics Calibration Tool (2026-02-04) - Created `calibrate_extrinsics.py` CLI tool for multi-camera extrinsic calibration. - Uses `SVOReader` for synchronized playback and `PoseAccumulator` for robust pose averaging. - Computes `T_world_from_cam` by inverting the `solvePnP` result (`T_cam_from_world`). - Implements RANSAC-based filtering of poses to handle outliers and noise. - Outputs deterministic JSON mapping serial numbers to 4x4 transformation matrices and statistics.