feat: add Rerun split layout (Camera | 3D) to Go2 and G1 base blueprints#1525
feat: add Rerun split layout (Camera | 3D) to Go2 and G1 base blueprints#1525spomichter merged 2 commits intodevfrom
Conversation
Adds a horizontal split view (camera feed 1/3, 3D world 2/3) to the Rerun viewer for Go2 basic and G1 primitive blueprints, matching the existing drone blueprint pattern. All downstream blueprints inherit the layout automatically.
Greptile SummaryThis PR adds a horizontal split Rerun viewer layout (1/3 camera feed, 2/3 3D world) to the Go2 basic and G1 primitive base blueprints, matching the pattern already used by the drone blueprint. The changes are small, self-contained, and correctly implement the Key changes:
Minor observations:
Confidence Score: 5/5
Important Files Changed
Sequence DiagramsequenceDiagram
participant BP as Blueprint File<br/>(go2_basic / g1_primitive)
participant RB as RerunBridgeModule
participant RR as Rerun Viewer
BP->>RB: rerun_bridge(**rerun_config)<br/>blueprint=_go2_rerun_blueprint (fn ref)
Note over RB: stores config.blueprint = fn
RB->>RB: start() / connect viewer
RB->>BP: config.blueprint()
BP-->>RB: rrb.Blueprint(Horizontal([Spatial2DView, Spatial3DView], column_shares=[1,2]))
RB->>RR: rr.send_blueprint(blueprint)
RR-->>RR: Render split layout<br/>Camera (1/3) | 3D World (2/3)
|
| def _g1_rerun_blueprint() -> Any: | ||
| """Split layout: camera feed + 3D world view side by side.""" | ||
| import rerun.blueprint as rrb | ||
|
|
||
| return rrb.Blueprint( | ||
| rrb.Horizontal( | ||
| rrb.Spatial2DView(origin="world/color_image", name="Camera"), | ||
| rrb.Spatial3DView(origin="world", name="3D"), | ||
| column_shares=[1, 2], | ||
| ), | ||
| ) |
There was a problem hiding this comment.
Identical blueprint functions across robot configs
_g1_rerun_blueprint (here) and _go2_rerun_blueprint (unitree_go2_basic.py) are byte-for-byte identical — same origin path, same names, same column_shares. If the shared layout ever needs adjusting (e.g. different column ratio or a grid overlay like the drone blueprint has), both files must be updated in lockstep.
Consider extracting a shared factory into a common utility module (e.g. dimos.visualization.rerun.layouts) so both can import it:
# dimos/visualization/rerun/layouts.py
def color_image_3d_blueprint(camera_origin: str = "world/color_image") -> Any:
import rerun.blueprint as rrb
return rrb.Blueprint(
rrb.Horizontal(
rrb.Spatial2DView(origin=camera_origin, name="Camera"),
rrb.Spatial3DView(origin="world", name="3D"),
column_shares=[1, 2],
),
)Then each robot file just does from dimos.visualization.rerun.layouts import color_image_3d_blueprint and sets "blueprint": color_image_3d_blueprint. This avoids future drift between robot configs.
Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
…o2 values Same fix as PR #1516 for Go2. G1 sim was using hardcoded 1280x720 Go2 real-camera intrinsics while MuJoCo renders at 320x240, causing the projected camera image to appear tiny in Rerun.
Adds a horizontal split view (camera feed 1/3, 3D world 2/3) to the Rerun viewer for Go2 basic and G1 primitive blueprints, matching the existing drone blueprint pattern. All downstream blueprints inherit the layout automatically.
Problem
Closes DIM-XXX
Solution
Breaking Changes
How to Test
Contributor License Agreement