feat(go2): go2 SDK adapter + nix cyclonedds setup#1885
feat(go2): go2 SDK adapter + nix cyclonedds setup#1885ruthwikdasyam wants to merge 43 commits intodevfrom
Conversation
Greptile SummaryThis PR adds a
Confidence Score: 4/5Safe to merge after addressing the rage joystick publish-error teardown bug. One P1 found: the rage joystick loop exits on publish errors without resetting dimos/hardware/drive_trains/unitree_go2/adapter.py — specifically the Important Files Changed
Sequence DiagramsequenceDiagram
participant BP as Blueprint
participant CC as ControlCoordinator
participant A as UnitreeGo2TwistAdapter
participant DDS as DDS Layer
participant Go2 as Go2 Robot
BP->>CC: connect()
CC->>A: connect()
A->>DDS: ChannelFactoryInitialize(0)
A->>DDS: ChannelSubscriber(rt/sportmodestate)
A->>Go2: MotionSwitcherClient.Init()
A->>Go2: SportClient.Init()
A->>Go2: StandUp() → FreeWalk() → SpeedLevel()
A-->>CC: True (connected)
alt rage_mode=True
A->>Go2: _call_sport_api(2059, enable=True)
A->>DDS: ChannelPublisher(rt/wirelesscontroller_unprocessed)
A->>A: spawn rage_joystick_loop thread (100 Hz)
A->>Go2: SwitchJoystick(True)
end
loop Teleop loop
BP->>CC: write_velocities([vx,vy,wz])
CC->>A: write_velocities([vx,vy,wz])
alt rage_active
A->>A: stash in session.rage_cmd
A-->>DDS: rage_joystick_loop publishes WirelessController_
DDS-->>Go2: rt/wirelesscontroller_unprocessed
else normal
A->>Go2: SportClient.Move(vx,vy,wz)
end
end
BP->>CC: disconnect()
CC->>A: disconnect()
A->>A: _stop_rage_joystick() — set event, join thread, Close publisher
A->>Go2: StopMove() → StandDown()
A->>DDS: state_sub.Close()
|
Co-authored-by: Mustafa Bhadsorawala <39084056+mustafab0@users.noreply.github.com>
Problem
Feat: SDK support for Go2 [Fully working]
Cyclone-dds installation support
Closes DIM-XXX
Solution
UnitreeGo2TwistAdapter- high-level Twist (vx, vy, wz) via SDK2 SportClientrage_mode=True, ~2.5 m/s envelope) via synthesizedWirelessController_onrt/wirelesscontroller_unprocessed.nix build nixpkgs#cyclonedds+ venv activate exports. No sudo, version-pinned. Apt path retained as fallback.Breaking Changes
None
How to Test
Contributor License Agreement