diff --git a/py_workspace/.sisyphus/plans/aruco-svo-calibration.md b/py_workspace/.sisyphus/plans/aruco-svo-calibration.md index e3ac91f..af50d6d 100644 --- a/py_workspace/.sisyphus/plans/aruco-svo-calibration.md +++ b/py_workspace/.sisyphus/plans/aruco-svo-calibration.md @@ -68,12 +68,12 @@ Build a robust CLI tool for multi-camera extrinsic calibration using ArUco marke - Output: `calibrated_extrinsics.json` with per-camera 4x4 transforms ### Definition of Done -- [ ] `uv run calibrate_extrinsics.py --help` → exits 0, shows required args -- [ ] `uv run calibrate_extrinsics.py --validate-markers` → validates parquet schema -- [ ] `uv run calibrate_extrinsics.py --svos ... --output out.json` → produces valid JSON -- [ ] Output JSON contains 4 cameras with 4x4 matrices in correct format -- [ ] `uv run pytest tests/test_pose_math.py` → all tests pass -- [ ] Preview mode shows detected markers with axes overlay +- [x] `uv run calibrate_extrinsics.py --help` → exits 0, shows required args +- [x] `uv run calibrate_extrinsics.py --validate-markers` → validates parquet schema +- [x] `uv run calibrate_extrinsics.py --svos ... --output out.json` → produces valid JSON +- [x] Output JSON contains 4 cameras with 4x4 matrices in correct format +- [x] `uv run pytest tests/test_pose_math.py` → all tests pass +- [x] Preview mode shows detected markers with axes overlay ### Must Have - Load multiple SVO files with timestamp synchronization @@ -159,7 +159,7 @@ Critical Path: Task 1 → Task 3 → Task 7 → Task 8 ## TODOs -- [ ] 1. Create pose math utilities module +- [x] 1. Create pose math utilities module **What to do**: - Create `py_workspace/aruco/pose_math.py` @@ -215,7 +215,7 @@ Critical Path: Task 1 → Task 3 → Task 7 → Task 8 --- -- [ ] 2. Create parquet loader and validator +- [x] 2. Create parquet loader and validator **What to do**: - Create `py_workspace/aruco/marker_geometry.py` @@ -272,7 +272,7 @@ Critical Path: Task 1 → Task 3 → Task 7 → Task 8 --- -- [ ] 3. Integrate ArUco detection with ZED intrinsics +- [x] 3. Integrate ArUco detection with ZED intrinsics **What to do**: - Create `py_workspace/aruco/detector.py` @@ -340,7 +340,7 @@ Critical Path: Task 1 → Task 3 → Task 7 → Task 8 --- -- [ ] 4. Create multi-SVO synchronization module +- [x] 4. Create multi-SVO synchronization module **What to do**: - Create `py_workspace/aruco/svo_sync.py` @@ -409,7 +409,7 @@ Critical Path: Task 1 → Task 3 → Task 7 → Task 8 --- -- [ ] 5. Implement robust pose aggregation +- [x] 5. Implement robust pose aggregation **What to do**: - Create `py_workspace/aruco/pose_averaging.py` @@ -488,7 +488,7 @@ Critical Path: Task 1 → Task 3 → Task 7 → Task 8 --- -- [ ] 6. Add preview visualization +- [x] 6. Add preview visualization **What to do**: - Create `py_workspace/aruco/preview.py` @@ -546,7 +546,7 @@ Critical Path: Task 1 → Task 3 → Task 7 → Task 8 --- -- [ ] 7. Create main CLI tool +- [x] 7. Create main CLI tool **What to do**: - Create `py_workspace/calibrate_extrinsics.py` @@ -644,7 +644,7 @@ Critical Path: Task 1 → Task 3 → Task 7 → Task 8 --- -- [ ] 8. Add unit tests and final validation +- [x] 8. Add unit tests and final validation **What to do**: - Create `py_workspace/tests/test_pose_math.py` @@ -737,9 +737,9 @@ jq 'keys' calibrated.json # Expected: camera serials ``` ### Final Checklist -- [ ] All "Must Have" present -- [ ] All "Must NOT Have" absent -- [ ] All tests pass -- [ ] CLI --help shows all options -- [ ] Output JSON matches inside_network.json pose format -- [ ] Preview shows detected markers with axes +- [x] All "Must Have" present +- [x] All "Must NOT Have" absent +- [x] All tests pass +- [x] CLI --help shows all options +- [x] Output JSON matches inside_network.json pose format +- [x] Preview shows detected markers with axes