Commit Graph

56 Commits

Author SHA1 Message Date
crosstyan c497af7783 feat: add explicit 4x4 transformation matrix validation to compare_pose_sets.py 2026-02-09 03:24:36 +00:00
crosstyan d6c7829b1e feat: add pose-set comparison visualization and clarify conventions 2026-02-08 08:07:33 +00:00
crosstyan 4bc4b7dfb8 add compare_pose_sets.py for rigid alignment and comparison of camera pose sets 2026-02-08 07:54:26 +00:00
crosstyan dc2d34dd7c docs: add visualization conventions and update visualizer defaults 2026-02-08 07:38:23 +00:00
crosstyan d07c244817 refactor: remove --world-basis and fix visualization to OpenCV convention 2026-02-08 05:45:39 +00:00
crosstyan 6330e0e8f8 fix: restore --world-basis option in visualize_extrinsics.py 2026-02-08 05:43:00 +00:00
crosstyan 351c6bfa67 feat: add --origin-axes-scale to visualize_extrinsics.py 2026-02-08 05:39:07 +00:00
crosstyan 79f2ab04dc feat: implement global world-basis conversion for Plotly visualization 2026-02-07 17:40:29 +00:00
crosstyan 57f0dffbc5 feat: add world origin triad and explicit render-space mapping to visualization 2026-02-07 17:25:06 +00:00
crosstyan 15989195f1 feat: implement geometry-first auto-align heuristic 2026-02-07 16:54:21 +00:00
crosstyan 18e814217a feat: add manual ground-plane overlay to visualize_extrinsics.py 2026-02-07 16:16:58 +00:00
crosstyan ab88a24559 feat: add --render-space option to visualize_extrinsics.py 2026-02-07 16:08:41 +00:00
crosstyan 0d3e9e67ad feat: ignore boulder.json and update extrinsics visualizer 2026-02-07 15:35:48 +00:00
crosstyan a8d375191a fix: enforce Y-up in visualize_extrinsics and sync README 2026-02-07 15:25:24 +00:00
crosstyan 7b9782aa92 feat: rewrite visualize_extrinsics.py with Plotly and Diagnose mode 2026-02-07 15:20:43 +00:00
crosstyan 6113d0e1f3 feat(tooling): add extrinsics visualizer and close depth-pooling plan
Finalize multi-frame depth pooling execution tracking with fully verified plan checkboxes and add a Y-up/bird-eye extrinsics visualizer with pose-convention auto detection for calibration sanity checks.
2026-02-07 09:14:34 +00:00
crosstyan 8dbf892ce8 feat: add RMSE-based fallback for depth pooling 2026-02-07 09:07:23 +00:00
crosstyan 8f6aee7f22 fix: resolve basedpyright errors in aruco and tests 2026-02-07 09:00:07 +00:00
crosstyan 4fc8de4bdc feat(calibrate): integrate multi-frame depth pooling with --depth-pool-size flag 2026-02-07 08:10:01 +00:00
crosstyan dad1f2a69f feat(calibration): robust depth refinement pipeline with diagnostics and benchmarking 2026-02-07 05:51:07 +00:00
crosstyan ead3796cdb feat(refine): replace L-BFGS-B MSE with least_squares soft-L1 robust optimizer 2026-02-07 05:23:28 +00:00
crosstyan b33bb78d54 chore: track .vscode and .gitattributes 2026-02-07 04:30:34 +00:00
crosstyan a80fd809a9 chore(config): update dependencies and gitignore 2026-02-07 04:17:03 +00:00
crosstyan cdc4f9eec4 chore(metadata): update beads and sisyphus planning artifacts 2026-02-07 04:16:41 +00:00
crosstyan ddb7054f96 docs(calibration): update findings summary and troubleshooting for depth refinement 2026-02-07 04:13:46 +00:00
crosstyan fca04c47c1 docs(calibration): document auto-align and refine-depth workflows 2026-02-07 03:34:28 +00:00
crosstyan 446c02d42a feat(calibration): add data-driven ground alignment with debug and fast iteration flags 2026-02-07 03:20:16 +00:00
crosstyan afc8e9034d chore(sisyphus): clear boulder state after plan completion 2026-02-05 05:12:53 +00:00
crosstyan e033657bff docs(plan): mark depth output DoD items complete via unit tests 2026-02-05 05:11:54 +00:00
crosstyan 553cc457f0 refactor(cli): extract depth postprocess and add tests
- Extract apply_depth_verify_refine_postprocess() from main() for testability
- Add test_depth_cli_postprocess.py using mocks to validate JSON and CSV behavior
- Keeps CLI behavior unchanged
2026-02-05 05:07:48 +00:00
crosstyan 15337d2d15 docs(plan): mark non-regression DoD item complete 2026-02-05 04:58:46 +00:00
crosstyan e8a8156e0b fix(cli): disable depth unless verify/refine enabled
- Ensure default extrinsics calibration runs with depth mode NONE
- Depth is only enabled when --verify-depth or --refine-depth is set
- Document opt-in behavior in notepad
2026-02-05 04:58:17 +00:00
crosstyan 23233c9138 docs(notepad): record missing marker-visible SVO blocker 2026-02-05 04:54:47 +00:00
crosstyan 0d71ef9f64 docs(plan): update depth-extrinsic-verify completion checkboxes 2026-02-05 04:47:33 +00:00
crosstyan ffdedad7e7 docs(draft): capture depth extrinsic verify notes 2026-02-05 04:46:24 +00:00
crosstyan d2674f76d6 chore(sisyphus): update boulder state for depth-extrinsic-verify 2026-02-05 04:46:04 +00:00
crosstyan 6d3c5cc5c1 feat(cli): add depth verify/refine outputs and tests
- Retrieve depth + confidence measures from SVOReader when depth enabled
- Compute depth residual metrics and attach to output JSON
- Optionally write per-corner residual CSV via --report-csv
- Post-process refinement: optimize final pose and report pre/post metrics
- Add unit tests for depth verification and refinement modules
- Add basedpyright dev dependency for diagnostics
2026-02-05 04:44:34 +00:00
crosstyan 882d9348a6 docs(plan): start depth-extrinsic-verify and mark tasks 1-4 complete 2026-02-05 04:19:08 +00:00
crosstyan 9f4abc21c7 feat(cli): integrate depth verification into calibration workflow 2026-02-05 04:09:09 +00:00
crosstyan f6b6db5999 feat(cli): add depth verification and refinement flags
- Add --verify-depth / --no-verify-depth flag
- Add --refine-depth / --no-refine-depth flag
- Add --depth-mode with choices: NEURAL, ULTRA, PERFORMANCE, NONE
- Add --depth-confidence-threshold flag
- Add --report-csv flag for optional CSV output
2026-02-05 03:48:56 +00:00
crosstyan 73782a7c2d feat(aruco): add depth refinement module with bounded optimization
- Add extrinsics_to_params() and params_to_extrinsics() conversions
- Add depth_residual_objective() with regularization
- Add refine_extrinsics_with_depth() using L-BFGS-B
- Add scipy dependency for optimization
- Enforce bounds on rotation (±5°) and translation (±5cm)
2026-02-05 03:47:39 +00:00
crosstyan 78ebe9a32e feat(aruco): add depth verification module with residual computation
- Add DepthVerificationResult dataclass for metrics
- Add project_point_to_pixel() for 3D to 2D projection
- Add compute_depth_residual() with median window sampling
- Add verify_extrinsics_with_depth() for batch verification
- Support confidence-based filtering
2026-02-05 03:45:20 +00:00
crosstyan bd9ea1c795 feat(aruco): extend SVOReader with depth map support
- Add depth_mode parameter to SVOReader.__init__()
- Add enable_depth property
- Add depth_map field to FrameData dataclass
- Add _retrieve_depth(), get_depth_at(), get_depth_window_median() methods
- Update grab_all() and grab_synced() to retrieve depth when enabled
2026-02-05 03:43:21 +00:00
crosstyan fbfed24fc3 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
2026-02-05 03:37:27 +00:00
crosstyan aa08bb9c9f fix(aruco): add dist parameter and handle single-point case in compute_reprojection_error
- Add optional dist parameter to match test expectations
- Handle single-point case where squeeze() removes necessary dimension
- Fixes failing tests in test_pose_math.py
2026-02-05 03:35:09 +00:00
crosstyan 1025bcbd8a feat(aruco): add pose math utilities for transform operations 2026-02-05 03:19:13 +00:00
crosstyan 9c861105f7 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
2026-02-05 03:17:05 +00:00
crosstyan d1e58245a6 test: add pytest suite for pose utilities
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-02-04 11:55:38 +00:00
crosstyan 69a3d1e8bf Add extrinsic calibration CLI tool
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-02-04 11:44:49 +00:00
crosstyan 43e736faac Add ArUco detection and pose estimation modules
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-02-04 11:44:37 +00:00