feature: add real-time Rerun URDF visualizer for robot arms (#845)#1792
feature: add real-time Rerun URDF visualizer for robot arms (#845)#1792KrishnaH96 wants to merge 2 commits intodimensionalOS:mainfrom
Conversation
Greptile SummaryThis PR adds a real-time Rerun URDF visualizer for robot arms using Pinocchio for forward kinematics. It introduces
Confidence Score: 4/5Not safe to merge as-is — the Rerun visualizer is non-functional due to a wrong attribute name that is silently swallowed. One P1 defect ( dimos/manipulation/manipulation_module.py (line 203) and dimos/visualization/rerun/robot.py (sphere radii call) Important Files Changed
Sequence DiagramsequenceDiagram
participant Coord as ControlCoordinator
participant MM as ManipulationModule
participant RV as RobotVisualizer
participant Pin as Pinocchio FK
participant Rerun as Rerun Viewer
Note over MM: start() → _initialize_planning()
MM->>RV: RobotVisualizer(urdf_path, entity_path, ...)
RV->>Pin: buildModelFromUrdf()
RV->>Rerun: rr.log(visuals, static=True)
loop Every JointState tick
Coord->>MM: _on_joint_state(msg)
MM->>MM: split joints per robot
MM->>RV: update_joints(sub_msg)
RV->>Pin: forwardKinematics(model, data, q)
RV->>Rerun: rr.log(transforms per joint)
end
Reviews (1): Last reviewed commit: "feature: add real-time Rerun URDF visual..." | Re-trigger Greptile |
e53c6a7 to
46a03f0
Compare
…ere logging, optimizing imports, and moving hppfcl to module level
Problem
Robot arm visualization is currently tied to Drake Meshcat, which lives in a separate browser window and sits outside the core dimOS observability workflow.
This creates a fragmented developer experience when monitoring manipulation together with navigation maps, sensor streams, and point clouds in one place.
This PR delivers a unified visualization path by adding a Rerun-native URDF visualizer for robot arms.
Closes #845
Solution
Implemented a real-time URDF-to-Rerun pipeline so robot arms render and update directly in the Rerun viewer.
Highlights
pinocchiodependency to compute forward kinematics on eachJointStateupdate..stl/.daeassets into.objfor RerunAsset3D.enable_rerun_viztoManipulationModuleConfig.Breaking Changes
enable_viz.Files Updated
dimos/visualization/rerun/robot.py(new)RobotVisualizerto load URDF visuals and publish geometry and transforms to Rerun.prepare_urdf_for_drake(..., convert_meshes=True)so.stl/.daeassets are converted to.objfor RerunAsset3D.JointStatemessages.dimos/manipulation/manipulation_module.py(modified)enable_rerun_viz: bool = FalsetoManipulationModuleConfig.RobotVisualizerinstances when Rerun visualization is enabled.dimos/robot/manipulators/xarm/blueprints.py(modified)enable_rerun_viz=Truein xArm keyboard teleop blueprints.dimos/robot/manipulators/piper/blueprints.py(modified)enable_rerun_viz=Truein Piper keyboard teleop blueprints.dimos/visualization/rerun/__init__.py(new)rerunvisualization module.Demonstration
Watch the real-time arm movement in Rerun here
How To Test
Use a 3-terminal validation flow.
Terminal 1 (Viewer)
Terminal 2 (Bridge)
Terminal 3 (Simulation)
Verification Steps
Keyboard Teleop(Pygame) window to focus it.WorS.Contributor License Agreement