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:
@@ -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.
|
||||
Reference in New Issue
Block a user