Skip to content

[Backport release/0.0.14] fix(hardware): transport adapters follow the active pub/sub backend - #4109

Open
github-actions[bot] wants to merge 1 commit into
release/0.0.14from
backport/4070-to-release/0.0.14
Open

github-actions[bot] wants to merge 1 commit into
release/0.0.14from
backport/4070-to-release/0.0.14

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

Description

Backport of #4070 to release/0.0.14.

@greptile-apps

greptile-apps Bot commented Sep 13, 2026

Copy link
Copy Markdown
Contributor

RetriggerConfidence Score: 3/5

Not safe to merge until the affected adapters and coordinator mappings use a compatible transport backend.

Findings

  1. P1 Align Go2 transport backend
  2. P1 Align G1 transport backend

Summary

  • The transport adapters now select the active backend, but the Go2 and G1 coordinators still explicitly use LCM for the same command and feedback channels. Under the Zenoh configuration, those components are unable to exchange robot control or state messages.

Reviews (1) · Last reviewed commit: "fix(hardware): transport adapters follow..."

dof: int = 3,
hardware_id: str = "base",
transport_cls: type = LCMTransport,
transport_cls: Callable[[str, type], Any] = make_transport,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Align Go2 transport backend

If DIMOS_TRANSPORT=zenoh, this default constructs Zenoh transports for the Go2 adapter, while the Go2 coordinator still explicitly maps /go2/cmd_vel and /go2/odom to LCM. The two backends use separate topic namespaces, so velocity commands and odometry cannot reach their corresponding subscribers. Keep the adapter and coordinator mappings on the same backend before merging.

Knowledge Base Used:

Artifacts

Transport mismatch evidence source

  • The focused Python source constructs the affected adapters under the Zenoh configuration and traces the coordinator transport mappings.

Transport mismatch execution output

  • The execution output reports Zenoh adapter transports and explicit LCM Go2 coordinator mappings, demonstrating that the endpoints are isolated.

View artifacts

T-Rex Ran code and verified through T-Rex

def transport_lcm_factory(**kwargs: Any) -> TransportWholeBodyAdapter:
"""Factory for the ``transport_lcm`` adapter (see ``_registry.py``)."""
kwargs.setdefault("transport_cls", LCMTransport)
kwargs.setdefault("transport_cls", make_transport)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Align G1 transport backend

If DIMOS_TRANSPORT=zenoh, the G1 whole-body adapter constructs Zenoh transports for motor state, IMU, and motor commands, while the G1 coordinator keeps those /g1/* channels on LCM. The separate backends cannot communicate, so motor commands do not reach the robot-side connection and state does not return to the coordinator. Keep the complete G1 path on one backend before merging.

Knowledge Base Used:

Artifacts

Transport mismatch evidence source

  • The focused Python source constructs the affected adapters under the Zenoh configuration and traces the coordinator transport mappings.

Transport mismatch execution output

  • The execution output reports Zenoh adapter transports and explicit LCM G1 coordinator mappings, demonstrating that the endpoints are isolated.

View artifacts

T-Rex Ran code and verified through T-Rex

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