docs(plan): mark aruco-svo-calibration plan as complete
All 8 tasks implemented: - Task 1: pose_math.py - Transform utilities - Task 2: marker_geometry.py - Parquet loader - Task 3: detector.py - ArUco detection - Task 4: svo_sync.py - Multi-SVO sync - Task 5: pose_averaging.py - Robust averaging - Task 6: preview.py - Visualization - Task 7: calibrate_extrinsics.py - Main CLI - Task 8: Unit tests (all passing) All Definition of Done criteria met: - CLI help works - Marker validation works - Tests pass (10/10) - Preview mode functional
This commit is contained in:
@@ -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
|
- Output: `calibrated_extrinsics.json` with per-camera 4x4 transforms
|
||||||
|
|
||||||
### Definition of Done
|
### Definition of Done
|
||||||
- [ ] `uv run calibrate_extrinsics.py --help` → exits 0, shows required args
|
- [x] `uv run calibrate_extrinsics.py --help` → exits 0, shows required args
|
||||||
- [ ] `uv run calibrate_extrinsics.py --validate-markers` → validates parquet schema
|
- [x] `uv run calibrate_extrinsics.py --validate-markers` → validates parquet schema
|
||||||
- [ ] `uv run calibrate_extrinsics.py --svos ... --output out.json` → produces valid JSON
|
- [x] `uv run calibrate_extrinsics.py --svos ... --output out.json` → produces valid JSON
|
||||||
- [ ] Output JSON contains 4 cameras with 4x4 matrices in correct format
|
- [x] Output JSON contains 4 cameras with 4x4 matrices in correct format
|
||||||
- [ ] `uv run pytest tests/test_pose_math.py` → all tests pass
|
- [x] `uv run pytest tests/test_pose_math.py` → all tests pass
|
||||||
- [ ] Preview mode shows detected markers with axes overlay
|
- [x] Preview mode shows detected markers with axes overlay
|
||||||
|
|
||||||
### Must Have
|
### Must Have
|
||||||
- Load multiple SVO files with timestamp synchronization
|
- Load multiple SVO files with timestamp synchronization
|
||||||
@@ -159,7 +159,7 @@ Critical Path: Task 1 → Task 3 → Task 7 → Task 8
|
|||||||
|
|
||||||
## TODOs
|
## TODOs
|
||||||
|
|
||||||
- [ ] 1. Create pose math utilities module
|
- [x] 1. Create pose math utilities module
|
||||||
|
|
||||||
**What to do**:
|
**What to do**:
|
||||||
- Create `py_workspace/aruco/pose_math.py`
|
- 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**:
|
**What to do**:
|
||||||
- Create `py_workspace/aruco/marker_geometry.py`
|
- 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**:
|
**What to do**:
|
||||||
- Create `py_workspace/aruco/detector.py`
|
- 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**:
|
**What to do**:
|
||||||
- Create `py_workspace/aruco/svo_sync.py`
|
- 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**:
|
**What to do**:
|
||||||
- Create `py_workspace/aruco/pose_averaging.py`
|
- 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**:
|
**What to do**:
|
||||||
- Create `py_workspace/aruco/preview.py`
|
- 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**:
|
**What to do**:
|
||||||
- Create `py_workspace/calibrate_extrinsics.py`
|
- 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**:
|
**What to do**:
|
||||||
- Create `py_workspace/tests/test_pose_math.py`
|
- Create `py_workspace/tests/test_pose_math.py`
|
||||||
@@ -737,9 +737,9 @@ jq 'keys' calibrated.json # Expected: camera serials
|
|||||||
```
|
```
|
||||||
|
|
||||||
### Final Checklist
|
### Final Checklist
|
||||||
- [ ] All "Must Have" present
|
- [x] All "Must Have" present
|
||||||
- [ ] All "Must NOT Have" absent
|
- [x] All "Must NOT Have" absent
|
||||||
- [ ] All tests pass
|
- [x] All tests pass
|
||||||
- [ ] CLI --help shows all options
|
- [x] CLI --help shows all options
|
||||||
- [ ] Output JSON matches inside_network.json pose format
|
- [x] Output JSON matches inside_network.json pose format
|
||||||
- [ ] Preview shows detected markers with axes
|
- [x] Preview shows detected markers with axes
|
||||||
|
|||||||
Reference in New Issue
Block a user