Skip to content

Move shared whole-body motor and IMU wires to CDR - #4713

Closed
TomCC7 wants to merge 1 commit into
cc/feat/cdr-ros-boundaryfrom
cc/feat/cdr-wholebody-boundaries
Closed

TomCC7 wants to merge 1 commit into
cc/feat/cdr-ros-boundaryfrom
cc/feat/cdr-wholebody-boundaries

Conversation

@TomCC7

@TomCC7 TomCC7 commented Oct 20, 2026

Copy link
Copy Markdown
Member

Shared whole-body transport, G1 DDS boundary and R1 upper-body ROS boundary now agree on generated dimos_msgs/MotorCommandArray, sensor_msgs/JointState and sensor_msgs/Imu. Their G1/GROOT/R1 blueprint pins use canonical CDR. Internal MotorCommand/MotorState math and the existing transport_lcm registry key stay unchanged.

Parent: #4712. Message encoding refactor.

Generated command arrays no longer have the old constructor's cross-array length guarantee: G1 and R1 therefore reject an inconsistent length before touching the SDK. G1 soft-start/damping/gain behavior remains; G1's paired state/IMU use a shared exact stamp. R1 fused state keeps its oldest source segment in integer nanoseconds and retains the original zero/negative-driver-stamp arrival-time fallback. R1 tracking-speed and torso/arm ordering are preserved.

Category Files Added Removed
Shared adapter, G1/R1 boundaries and blueprint bindings 6 108 75
Safety, actual local-wire graph and blueprint tests 2 313 7
Existing installed-wheel CI 1 5 0

Manual offline acceptance from a configured checkout:

DIMOS_TRANSPORT=lcm LCM_DEFAULT_URL=memq:// uv run pytest --noconftest --import-mode=importlib -o addopts='' -q \
  dimos/hardware/whole_body/transport/test_adapter.py \
  dimos/robot/unitree/g1/test_wholebody_connection.py

25 source +25 isolated installed-wheel checks, strict typing6 production files, applicable hooks and wheel pass; Nix unavailable. Wheel SHA256 cefeb66b31545172d576595df3154865e9ec1e4a1f9c532c9df9db86065b568b.

Graph tests use actual default-factory CDR transports, with per-channel ownership matching an in-process coordinator (distinct memq endpoints cannot communicate). Both LCM memq and discovery-disabled loopback Zenoh exercise adapter caches, state/IMU field values, canonical commands to a fake DDS endpoint, real R1 feedback fusion and generated commands to fake ROS publishers. All five array length gates run against initialized fake SDK state. Existing G1 damping/soft-start assertions remain. Actual blueprint imports resolve canonical map keys with project asset download explicitly forbidden.

CPU ONNX Runtime1.24.1 (repository lock version) was installed only into task-private test environments to import the shipped GROOT blueprint; no weights/inference/training. No DDS/ROS node, robot or hardware operation ran. Actual ROS still needs rclpy and matching compiled ROS packages; #4712 documents that boundary. Remaining R1 sensor planes, generic simulation/viewer, collection/native-worker/other graphs, fixtures, Gate B dependency retirement and final ancestry/PR organization remain open. No CI polling or benchmark work.

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