Skip to content

feat: rerun tf tree visualization - #3345

Open
aclauer wants to merge 17 commits into
mainfrom
andrew/feat/transform-vis-is-a-good-feature
Open

feat: rerun tf tree visualization#3345
aclauer wants to merge 17 commits into
mainfrom
andrew/feat/transform-vis-is-a-good-feature

Conversation

@aclauer

@aclauer aclauer commented Aug 4, 2026

Copy link
Copy Markdown
Collaborator

Contribution path

  • Small, safe change that does not need a tracking issue
  • Linked issue or discussion: DIM-XXX / #XXX / URL

Problem

There are a lot of cases we want to see all the frames in the tf tree.

Solution

This adds a simple config to automatically display all the frames in rerun with the correct hierarchy.

Also add mid360 presets so we don't need to keep changing transforms in the source code

Screenshot from 2026-08-05 12-23-19 Screenshot from 2026-08-05 12-23-29

How to Test

dimos run go2-zenoh-nav --mid360-mount=SF
dimos run go2-zenoh-nav --mid360-mount=ATHENS

AI assistance

Checklist

  • I have read and approved the CLA.

@codecov

codecov Bot commented Aug 4, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 44.56522% with 51 lines in your changes missing coverage. Please review.
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
dimos/msgs/tf2_msgs/TFMessage.py 28.84% 37 Missing ⚠️
dimos/visualization/rerun/bridge.py 56.25% 6 Missing and 1 partial ⚠️
dimos/robot/unitree/go2/zenoh/zenohconnection.py 53.84% 6 Missing ⚠️
dimos/robot/unitree/go2/zenoh/blueprints.py 75.00% 1 Missing ⚠️
@@            Coverage Diff             @@
##             main    #3345      +/-   ##
==========================================
- Coverage   75.80%   75.74%   -0.06%     
==========================================
  Files        1172     1174       +2     
  Lines      113568   113774     +206     
  Branches    10258    10290      +32     
==========================================
+ Hits        86085    86176      +91     
- Misses      24494    24609     +115     
  Partials     2989     2989              
Flag Coverage Δ
OS-ubuntu-24.04-arm 69.90% <43.47%> (-0.03%) ⬇️
OS-ubuntu-latest 71.91% <43.47%> (-0.03%) ⬇️
Py-3.10 71.90% <43.47%> (-0.02%) ⬇️
Py-3.11 ?
Py-3.12 71.90% <43.47%> (-0.03%) ⬇️
Py-3.13 71.90% <43.47%> (-0.04%) ⬇️
Py-3.14 71.90% <43.47%> (-0.03%) ⬇️
Py-3.14t 71.90% <43.47%> (-0.03%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
dimos/memory2/tf.py 97.91% <100.00%> (+0.13%) ⬆️
.../unitree/go2/blueprints/basic/unitree_go2_basic.py 65.00% <100.00%> (ø)
...ee/go2/blueprints/navigation/unitree_go2_nav_3d.py 81.48% <ø> (+2.44%) ⬆️
dimos/visualization/vis_module.py 75.00% <ø> (ø)
dimos/robot/unitree/go2/zenoh/blueprints.py 76.31% <75.00%> (-1.47%) ⬇️
dimos/robot/unitree/go2/zenoh/zenohconnection.py 65.38% <53.84%> (-2.36%) ⬇️
dimos/visualization/rerun/bridge.py 50.00% <56.25%> (+9.92%) ⬆️
dimos/msgs/tf2_msgs/TFMessage.py 58.33% <28.84%> (-29.17%) ⬇️

... and 3 files with indirect coverage changes

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@aclauer aclauer changed the title Andrew/feat/transform vis is a good feature feat: rerun tf tree visualization Aug 5, 2026
@aclauer
aclauer marked this pull request as ready for review August 5, 2026 19:24
@greptile-apps

greptile-apps Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR adds hierarchical TF-tree visualization to the Rerun bridge and offline planner replay, along with selectable Mid-360 mount presets.

  • Builds and updates Rerun entities from recorded or live TF messages.
  • Adds Go2 visualization configuration and named SF/ATHENS lidar mounts.
  • Updates offline planner visualization and related Rust/Nix test configuration.

Confidence Score: 4/5

The PR should not merge until TF reparenting removes or otherwise invalidates the old CoordinateFrame declaration.

When a learned parent changes a frame’s entity path, the current implementation clears only the old arrows before declaring the same coordinate-frame identifier at the new path, so the previously reported conflicting hierarchy remains.

Files Needing Attention: dimos/msgs/tf2_msgs/TFMessage.py

Important Files Changed

Filename Overview
dimos/msgs/tf2_msgs/TFMessage.py Adds TF hierarchy placement, coordinate-frame declarations, axis triads, and updated Rerun conversion paths.
dimos/visualization/rerun/bridge.py Adds synchronized TF-tree state and configurable TF-axis visualization to the Rerun bridge.
dimos/robot/unitree/go2/zenoh/zenohconnection.py Replaces the raw Mid-360 mount field with validated named presets or explicit Euler-angle tuples.
dimos/navigation/nav_3d/mls_planner/utils/plan_rrd.py Synchronizes recorded TF messages with lidar replay and moves robot-body visualization onto the TF frame.
dimos/robot/unitree/go2/zenoh/blueprints.py Selects the Mid-360 mount preset and attaches the static Go2 body visualization to base_link.

Reviews (3): Last reviewed commit: "Nit" | Re-trigger Greptile

Comment thread dimos/visualization/rerun/tf_tree.py Outdated
Comment on lines +157 to +159
now = layout.get(frame)
if now is None or now.path != was.path:
rr.log(was.path, rr.Arrows3D(origins=[], vectors=[]), static=True)

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 Reparenting duplicates frame declarations

When a late ancestor changes a frame's entity path, _redraw() clears only the old arrows and then declares the same tf#/frame at the new path. Because Rerun pins a coordinate frame to its declaring entity for the recording, the stale declaration conflicts with the new hierarchy and can leave the displayed TF tree attached to its original parent.

Comment thread dimos/robot/unitree/go2/zenoh/zenohconnection.py
@github-actions github-actions Bot added the ready-to-merge Required CI checks have passed on this PR label Aug 5, 2026
leshy
leshy previously approved these changes Aug 5, 2026
…com:dimensionalOS/dimos into andrew/feat/transform-vis-is-a-good-feature
@github-actions github-actions Bot removed the ready-to-merge Required CI checks have passed on this PR label Aug 5, 2026
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.

2 participants