Skip to content

refactor(navigation): migrate native local planner streams to CDR - #4683

Closed
TomCC7 wants to merge 1 commit into
cc/feat/cdr-native-tf-stampsfrom
cc/feat/cdr-native-planner
Closed

TomCC7 wants to merge 1 commit into
cc/feat/cdr-native-tf-stampsfrom
cc/feat/cdr-native-planner

Conversation

@TomCC7

@TomCC7 TomCC7 commented Oct 20, 2026

Copy link
Copy Markdown
Member

The native SE(2) local planner now consumes generated PointCloud2, Path and TFMessage CDR values and publishes a generated Path, matching the Python planner ports. Existing search geometry, embodiment settings, RPC names and raw LCM/Zenoh transports remain unchanged.

Project: https://linear.app/dimensional/project/message-encoding-refactor-05a3ddb4af3e/overview

Parent: #4681. This is one consumer layer of the ongoing migration, not the final default/legacy cleanup.

Files Count Change
Native codecs/planner 3 Generated CDR I/O, row/endian-aware cloud access, exact TF source stamp metadata and relative profile time deltas
Python ports 1 Canonical generated message identities
Build/dependencies 3 Generated crate, locked dependency closure and standalone source assembly from fixed-hash project artifacts
Acceptance/CI 2 Actual Python/native process interoperability on discovery-disabled localhost Zenoh and compiled Rust gates

Manual test from this checkout, with Python development dependencies installed and a Rust toolchain:

python -m pip install -e .
cargo build --locked --manifest-path dimos/navigation/local_planner/rust/Cargo.toml --features module --bin local_planner --jobs 2
DIMOS_NATIVE_LOCAL_PLANNER_BINARY="$PWD/dimos/navigation/local_planner/rust/target/debug/local_planner" python -m pytest --noconftest --import-mode=importlib -o addopts='' -q dimos/navigation/local_planner/test_generated_native.py

This starts only a synthetic native planner and an explicitly local Zenoh router, sends Python-generated TF/cloud/path CDR and checks the returned canonical route. It owns process/session cleanup and does not operate hardware. Set the binary variable: omitting it intentionally skips the binary acceptance case.

Validated locally: 63 Rust unit tests and 5 integration tests from a standalone source assembly without checkout parent paths; all-target Clippy with warnings denied; actual binary interoperability (2 Python tests), also repeated with production modules loaded from the installed main wheel; strict typing for the Python wrapper; applicable hooks; main wheel build and the existing 198-package environment's dependency check. Wheel SHA256: 0aad3caa0fbf4f8544da0e86e8801a0fdef0961bf35050bf321d667e81f16b5c.

Limits: Nix executable is absent locally, so the updated flake has not been Nix-built. Its equivalent standalone Cargo source assembly was tested, which does not replace the Nix gate. Source TF metadata retains nanoseconds; SDK query windows still use the existing floating-point API, and newly computed plan timestamps retain the existing wall-clock representation. Legacy SDK message dependencies remain until their remaining consumers are migrated. CI was not polled; no all-green, hardware or human acceptance claim.

@TomCC7 TomCC7 closed this Oct 20, 2026
@TomCC7
TomCC7 deleted the cc/feat/cdr-native-planner branch October 20, 2026 18:11
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