Skip to content

feat: use canonical CDR for hosted arm commands - #4706

Closed
TomCC7 wants to merge 2 commits into
cc/feat/cdr-memory-rerunfrom
cc/feat/cdr-hosted-arm
Closed

TomCC7 wants to merge 2 commits into
cc/feat/cdr-memory-rerunfrom
cc/feat/cdr-hosted-arm

Conversation

@TomCC7

@TomCC7 TomCC7 commented Oct 20, 2026

Copy link
Copy Markdown
Member

Hosted arm commands now use the existing relay data-frame envelope with generated CDR PoseStamped/Joy/TwistStamped payloads. Canonical pose, twist and gripper outputs match the migrated coordinator inputs. Legacy fingerprints are not a fallback. Existing stale/future/out-of-order filtering, per-hand routing, UI scale, E-STOP, gripper normalization and operator-loss behavior remain.

Parent: #4705. Message Encoding Refactor

The exact source header is retained across internal controller math; integer timestamp watermarks distinguish commands a nanosecond apart even when their floating-second representations coincide. Test fixtures now construct the real module and mock only publications/external coordinator RPC, instead of skipping Module initialization.

Changes Files Added Removed
Arm CDR decoding/output and command registry typing 2 47 30
Preserved behavior, identity and timestamp regressions 1 125 43
Operator schema/encoding contract and manual steps 1 45 0
Installed-wheel CI 1 1 1

Manual offline acceptance (no broker, robot or XR server):

DIMOS_TRANSPORT=lcm LCM_DEFAULT_URL=memq:// uv run pytest --noconftest --import-mode=importlib -o addopts='' -q dimos/teleop/hosted/test_arm_command.py

The hosted guide includes a copyable schema export using the installed registry. No duplicate standard definitions or new runtime generator is introduced.

Validation: 102 source +102 isolated installed-wheel checks (31 hosted-arm +71 WebXR/body/browser cases); strict typing across 2 production files; configured scoped hooks pass except unavailable Nix. Separate actual installed browser acceptance runs the shipped CommandEncoder with exact local Foxglove rosmsg5.0.5/rosmsg2-serialization3.1.2, delivers all three input kinds to the real hosted arm handlers, and receives canonical TwistStamped through real LCM memq with17s+1ns and expected velocity. This is offline interoperability, not online hosted acceptance. Wheel SHA256 b1393714afcda4d366e77302d5f616abf912239bcef1d47db198f51a655fee2d.

The external hosted operator application must adopt this encoding before deployment; that client and broker credentials are outside this checkout. The arm module still starts no embedded HTTP server, so no hosted schema endpoint is implied. Go2 hosted typed/media/map/stats paths remain the next boundary. Internal numerical helpers remain, legacy dependency retirement and full graph cutover remain open. No CI polling, broker connection, hardware, merge, force push or release.

@TomCC7 TomCC7 closed this Oct 20, 2026
@TomCC7
TomCC7 deleted the cc/feat/cdr-hosted-arm 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