Skip to content

refactor: migrate native depth cloud ports and TF to CDR - #4668

Closed
TomCC7 wants to merge 4 commits into
cc/feat/cdr-zed-producerfrom
cc/feat/cdr-depth-cloud
Closed

TomCC7 wants to merge 4 commits into
cc/feat/cdr-zed-producerfrom
cc/feat/cdr-depth-cloud

Conversation

@TomCC7

@TomCC7 TomCC7 commented Oct 20, 2026

Copy link
Copy Markdown
Member

Depth2DepthCloud now receives generated CompressedImage, CameraInfo, PointCloud2 and TFMessage values and publishes generated PointCloud2 with CDR payloads. The output copies the exact source Header stamp. Public Python port names/configuration and the model/calibration pipeline remain unchanged; LCM and Zenoh remain transport choices.

Parent: #4667. Part of the message encoding refactor.

Area Changes
Python declaration/config regression Generated input/output types; config-to-Rust checks also run against installed production code
Rust module/undistortion Generated fields and explicit CDR input/output/TF adapters; normalized ROS time; no legacy value conversion
Native pointcloud helper Shared byte-layout reader supports padded rows and both byte orders. Existing legacy entry point/signature is retained for unmigrated callers
Cargo/Nix Locked generated message/SDK source dependencies; standalone Nix uses an immutable project archive with verified SHA256, plus existing fixed-hash message generation
Workflow Native unit tests, installed-wheel config and explicit site-packages provenance assertions for depth-cloud/ZED

For an already prepared source checkout, run the software-only review checks without a camera, lidar or host-network changes:

python -m pytest --noconftest -o addopts='' -q \
  dimos/perception/depth2depth_cloud/test_depth2depth_cloud_config.py
cargo test --locked -j 2 \
  --manifest-path dimos/perception/depth2depth_cloud/rust/Cargo.toml --lib
cargo test --locked -j 2 \
  --manifest-path native/rust/dimos-module/Cargo.toml pointcloud::tests

Expected: 7 Python config cases, 13 Rust module/undistortion cases and 5 shared pointcloud cases. Rust's normal build embeds the upstream model resources pinned by depth2depth 0.4.1; these checks do not run inference. The first build needs its normal native toolchain/dependencies and model files, subsequent cached checks can use --offline.

Validated locally: those 25 focused cases; 42 combined installed-main-wheel cases with the actual production modules asserted to come from site-packages; cargo check --locked --offline, all-target Clippy with -D warnings, compiled depth2depth_cloud binary, one strict Python source, normal main wheel and default 198-package uv pip check. Other applicable hooks pass. Wheel SHA256 71dd088d20bd3fc74a70153d3a3d64d34325d33eab2d7424504fde9f4de5c266.

Not validated: Nix build/lint (no nix executable locally), Metal/TensorRT, live neural pipeline accuracy/throughput or hardware. The local native lint hook fails specifically because Nix is unavailable; the repository gate is retained. No benchmarks or CI polling performed. The existing native TF graph still uses floating-point seconds internally; cloud Header timestamps remain exact integers. Default encoding cutover and legacy retirement remain later slices.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant