feat(go2): joystick, tele_cmd_vel and cmd_vel plots, live and in replay, with a dataset - #4224
KrishnaH96 wants to merge 4 commits into
Conversation
❌ 1 Tests Failed:
View the full list of 1 ❄️ flaky test(s)
To view more test analytics, go to the Test Analytics Dashboard |
|
This comment has been minimized.
This comment has been minimized.
7889c00 to
4fb3363
Compare
|
@greptileai please re-review. |
RerunWebSocketServer publishes the viewer's raw twist message as joystick: Out[Joy], six axes in the viewer's field order, before it converts it to tele_cmd_vel, so --record stores both.
Three time series boxes under the camera, fed by converters in the Go2 viewer config like the odom plot: one color per axis across all three and step interpolation, since command streams go silent between bursts. Replay reuses this config, so the boxes show there too.
…cording run replay picks the viewer layout from the recording's run folder name, so a dataset pulled from LFS gets the generic layout: no odom plot, no joystick or velocity plots. unitree-go2-replay pairs the replay module with the Go2 viewer config directly, same pattern as spot-replay.
Three minute Go2 run recorded with dimos --record run unitree-go2: WASD driving from the viewer, then two click-to-go nav goals. Carries joystick, tele_cmd_vel, cmd_vel, nav_cmd_vel, lidar, global_map, color_image, camera_info, odom and tf.
4fb3363 to
df0be26
Compare
|
Alternative: #4242 keeps the default unitree-go2 window untouched and adds a dedicated unitree-go2-joystick blueprint instead. Both are tested on hardware; |
Summary
Dataset sample with displaying of cmd_vel and joystock
Problem
--recordalready storestele_cmd_velandcmd_vel, but the viewer never shows them:Twisthas noto_rerun(), so the Rerun bridge drops it. The viewer's WASD input is also not published in raw form.Solution
RerunWebSocketServerpublishes the viewer's twist message asjoystick: Out[Joy]before converting it totele_cmd_vel.Twist.to_rerun()andJoy.to_rerun()returnrr.Scalars, so these streams plot in any viewer config. Replaces the_plot_cmd_veloverride from feat: replay blueprint - dimos --replay-db <memory.db> run replay #3738.joystick,tele_cmd_vel,cmd_velboxes under the camera, one color per axis, step interpolation so silent gaps do not draw as ramps.TwistorJoystream.go2_teleop_sf_office_2026-09-18(379 MB): 3 min real Go2 run, WASD driving, then two click-to-go nav goals at 2:23 and 2:44.Note: dimos-viewer converts keys to velocities itself, so today
joystickequalstele_cmd_velvalue for value.tele_cmd_velvscmd_velis the pair that diverges, whenever nav drives.No new blueprint needed:
unitree-go2already publishes all three streams.How to Test
Screencast_2026-09-18_14-50-29.mp4
Recorded and replayed on a real Go2 over WebRTC. Dataset recorded with #3914 applied, so the camera frustum shows in replay.
AI assistance
Claude Code (Claude Fable 5.1) helped survey the code, draft the change and run the checks. I reviewed and tested the code on hardware.
Checklist