feat: add aruco-svo-calibration plan and utils scripts

- Add comprehensive work plan for ArUco-based multi-camera calibration
- Add recording_multi.py for multi-camera SVO recording
- Add streaming_receiver.py for network streaming
- Add svo_playback.py for synchronized playback
- Add zed_network_utils.py for camera configuration
- Add AGENTS.md with project context
This commit is contained in:
2026-02-05 03:17:05 +00:00
parent d1e58245a6
commit 9c861105f7
17 changed files with 2071 additions and 0 deletions
@@ -0,0 +1,4 @@
## Cleanup - 2026-02-04\n- Restored py_workspace/README.md\n- Removed unintended nested py_workspace/ directory\n- Cleaned up __pycache__ directories\n- Updated .gitignore to exclude build artifacts and large files (*.pyc, *.svo2, *.parquet, .venv, .ruff_cache)
- Fixed pose string parsing in self-check distance block to use np.fromstring.
- Added guard for max_frames computation to handle unknown SVO lengths.
@@ -0,0 +1,14 @@
## 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.