9c861105f7
- 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
2.0 KiB
2.0 KiB
2026-02-04 Init
-
Baseline note: ZED SDK stub file
py_workspace/libs/pyzed_pkg/pyzed/sl.pyihas many LSP/type-stub errors pre-existing in repo.- Do not treat as regressions for this plan.
-
ZED Fusion pose semantics confirmed by librarian:
/usr/local/zed/include/sl/Fusion.hppindicatesFusionConfiguration.poseis "WORLD Pose of camera" in InitFusionParameters coordinate system/units./usr/local/zed/doc/API/html/classsl_1_1Matrix4f.htmlindicates Matrix4f is row-major with translation in last column.
-
Local LSP diagnostics not available:
basedpyright-langserveris configured but not installed. Usepy_compile+ runtime smoke checks instead. -
Git commands currently fail due to missing git-lfs (smudge filter). Avoid git-based verification unless git-lfs is installed.
-
ak.from_parquetrequirespyarrowandpandasto be installed in the environment, which were missing initially.
Task 6: IndexError in draw_detected_markers
- Bug:
draw_detected_markersassumedidswas always 2D (ids[i][0]) andcornerswas always a list of 3D arrays. - Fix: Flattened
idsusingids.flatten()to support both (N,) and (N, 1) shapes. Reshapedcornersandint_cornersto ensure compatibility withcv2.polylinesand text placement regardless of whether input is a list or a 3D/4D numpy array. The calibration loop was hanging because SVOReader loops back to frame 0 upon reaching the end, and 'any(frames)' remained true. Fixed by calculating 'max_frames' based on remaining frames at start and bounding the loop. - Fixed pose parsing in self-check: used np.fromstring instead of np.array on the space-separated string.
- Guarded max_frames calculation with a safety limit of 10,000 frames and handled cases where total_frames is -1 or 0.
- Improved --validate-markers mode to exit cleanly with a message when no SVOs are provided.
- Fixed pose string parsing in self-check distance block to use np.fromstring with sep=' '.
- Added max_frames guard for unknown total_frames (<= 0) to prevent infinite loops when SVO length cannot be determined.