Commit Graph
100 Commits
Author SHA1 Message Date
crosstyan 091ee1b122 chore: update .gitignore to include .cache directory and remove cached index files 2026-03-06 17:19:24 +08:00
crosstyan 33ab1a5d9d refactor: things 2026-03-06 17:17:59 +08:00
crosstyan 8c6087683f feat: implement depth bias estimation and correction in ICP pipeline 2026-02-11 14:11:40 +00:00
crosstyan 29eec81ea0 test: fix depth bias test configuration and tolerances 2026-02-11 12:23:06 +00:00
crosstyan 5798cd8ac1 test: add comprehensive synthetic tests for depth bias estimation 2026-02-11 12:05:22 +00:00
crosstyan 8b2131d3a1 chore: sync beads 2026-02-11 11:42:24 +00:00
crosstyan 9d4634c718 docs: update README and diagnosis report with depth bias correction details 2026-02-11 11:41:02 +00:00
crosstyan 51e7244dba chore: sync beads 2026-02-11 11:29:18 +00:00
crosstyan 53e56006cc feat: wire --icp-depth-bias flag in refine_ground_plane.py 2026-02-11 11:26:20 +00:00
crosstyan be3e454644 fix(icp): correct pose graph edge direction 2026-02-11 04:02:12 +00:00
crosstyan e7a348e3ab test(icp): add comprehensive tests for full-scene ICP pipeline + update docs 2026-02-10 17:14:20 +00:00
crosstyan d6abffa05f docs(plan): mark Task 8 as completed 2026-02-10 16:44:28 +00:00
crosstyan 7bdc5d6024 chore(icp): relax ICPConfig defaults per Oracle recommendations 2026-02-10 16:44:13 +00:00
crosstyan dae6d939e4 test: Add comprehensive tests for global ICP init and fallback 2026-02-10 16:38:31 +00:00
crosstyan 2c93c77db8 feat: Implement FPFH+RANSAC global pre-alignment (Task 6) 2026-02-10 16:24:59 +00:00
crosstyan 1d2e66a34c chore: update beads and sisyphus tracking 2026-02-10 15:32:10 +00:00
crosstyan 25733af4ec feat(icp): add hybrid/full point extraction with SOR preprocessing 2026-02-10 15:31:46 +00:00
crosstyan adc38a441d feat: implement 3D AABB overlap check for ICP registration 2026-02-10 15:27:52 +00:00
crosstyan 71b146bc72 fix(icp): relax success gate to >0 and add per-pair diagnostic logging 2026-02-10 15:21:33 +00:00
crosstyan 89482187f1 chore: sync beads 2026-02-10 09:56:07 +00:00
crosstyan 21ceae3d4e feat: add point extraction functions and ICPConfig region 2026-02-10 09:54:54 +00:00
crosstyan c92c334f54 docs: beads 2026-02-10 06:34:56 +00:00
crosstyan 21ba476348 chore:icp draft 2026-02-10 06:32:35 +00:00
crosstyan 206c6e58ee feat: implement ICP registration for ground plane refinement and add tests 2026-02-10 03:04:43 +00:00
crosstyan 2d42e2cdfa Integrate ICP refinement into refine_ground_plane.py CLI 2026-02-10 02:54:10 +00:00
crosstyan cfacb790f5 chore: ipc plan 2026-02-09 10:37:16 +00:00
crosstyan 511994e3a8 chore: checkpoint ground-plane calibration refinement work 2026-02-09 10:02:48 +00:00
crosstyan 915c7973d1 refactor: remove --metrics-json from refine_ground_plane.py 2026-02-09 09:59:43 +00:00
crosstyan 3b471c2cae chore: sync beads 2026-02-09 09:02:09 +00:00
crosstyan 61d713395f docs: update learnings with documentation hardening notes 2026-02-09 09:00:46 +00:00
crosstyan 9061ed3abb docs: add ground plane refinement and depth data management sections 2026-02-09 08:59:11 +00:00
crosstyan ae3c9eba76 docs: update README and finalize ground plane refinement integration 2026-02-09 08:30:50 +00:00
crosstyan 9d9e95de81 feat: implement refine_ground_plane.py CLI 2026-02-09 07:50:16 +00:00
crosstyan 0f7d7a9a63 feat: add Plotly diagnostic visualization for ground plane refinement 2026-02-09 07:41:44 +00:00
crosstyan 248510f5bb fix: implement per-camera ground plane correction 2026-02-09 07:39:30 +00:00
crosstyan bfb3421692 fix: implement per-camera ground plane correction 2026-02-09 07:36:27 +00:00
crosstyan 94d9a27724 feat: implement ground plane orchestration 2026-02-09 07:27:36 +00:00
crosstyan 6f34cd48fe fix: complete ground_plane.py implementation and tests 2026-02-09 07:18:21 +00:00
crosstyan 83a74d293b feat: add HDF5 depth map persistence module
- Implement aruco/depth_save.py with save_depth_data/load_depth_data
- Add tests/test_depth_save.py covering roundtrip and edge cases
- Ensure type safety with basedpyright
- Support compression and metadata handling
2026-02-09 07:18:00 +00:00
crosstyan 43a441f2d4 fix: complete ground_plane.py implementation and tests 2026-02-09 07:16:14 +00:00
crosstyan 1d3266ec60 feat: implement ground_plane.py with floor detection and alignment primitives 2026-02-09 07:05:35 +00:00
crosstyan fb9a2b40b4 chore: add open3d and h5py dependencies 2026-02-09 06:53:16 +00:00
crosstyan 287773e7e7 fix: align calibration convention metadata and remove conversion path 2026-02-09 04:24:09 +00:00
crosstyan 136dadb31d feat: add --cv-to-opengl option to apply_calibration_to_fusion_config.py 2026-02-09 03:35:15 +00:00
crosstyan 77a93b71f2 feat: add fusion pose updater and improve pose comparison workflow 2026-02-09 03:26:50 +00:00
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
crosstyanandSisyphus 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
crosstyanandSisyphus 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
crosstyanandSisyphus 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
crosstyanandSisyphus 0c4e906dcf Update dependencies for calibration 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:27 +00:00
crosstyanandSisyphus 071cf7f572 chore: update .gitignore and remove tracked pycache
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-02-04 11:44:19 +00:00
crosstyan a0ad369211 python workspace 2026-02-04 15:42:08 +08:00
crosstyan e7c5176229 Add depth sensing sample and OpenGL tests
- Implemented a new sample application in main.cpp to capture and display a live 3D point cloud using the ZED SDK and OpenGL.
- Created test_opengl.cpp to demonstrate basic OpenGL rendering with depth testing using two triangles.
- Added test_points.cpp to visualize a grid of colored points in OpenGL, showcasing point rendering capabilities.
2026-01-20 10:31:35 +08:00
crosstyan 61ad8346af Add .gitignore, update Dockerfile, and enhance README with udev rules and calibration instructions 2026-01-19 16:18:15 +08:00