Skip to main content
Dimos uses Rerun for visualizations. It can be disabled by using dimos --viewer none .... Blueprints add Rerun stream visualization with vis_module(...), which renders typed robot streams according to GlobalConfig.viewer.

Quick Start

Choose your viewer via the CLI:
Control how the Rerun viewer opens with --rerun-open and --rerun-web:

Viewer Modes Explained

Rerun Native (rerun, --rerun-open native) โ€” Default

What you get:
  • dimos-viewer, a custom Dimensional fork of Rerun with built-in keyboard teleop and click-to-navigate
  • Native desktop application (opens automatically)
  • Better performance with larger maps/higher resolution
  • No browser or web server required

Rerun Web (rerun, --rerun-open web)

What you get:
  • Browser-based dashboard at http://localhost:7779
  • Rerun 3D viewer + command center sidebar in one page
  • Teleop controls and goal setting via the web UI
  • Works headless (no display required)

Rendering with Custom Blueprints

To enable visualization in your own blueprint, use vis_module:
skip
Run the stack locally (this blocks until you stop the process):
skip
Every LCM stream, such as color_image (output by CameraModule), that uses a data type (like Image) that has a .to_rerun method will get rendered (rr.log) using the LCM topic as the rerun entity path. In other words: to render something, simply log it to a stream and it will automatically be available in rerun.

Performance Tuning

Symptom: Slow Map Updates

If you notice:
  • Robot appears to โ€œwalk across empty spaceโ€
  • Costmap updates lag behind the robot
  • Visualization stutters or freezes
This happens on lower-end hardware (NUC, older laptops) with large maps.

Increase Voxel Size

Edit dimos/robot/unitree/go2/blueprints/smart/unitree_go2.py:
skip
Trade-off:
  • Larger voxels = fewer voxels = faster updates
  • But slightly less detail in the map

Direct Visualization from a Module

If you want to log data to Rerun directly from inside a module (e.g. for debugging or one-off visualizations), use rerun_init instead of calling rr.init() yourself. It handles colormap registration and can optionally start a gRPC server so a viewer can connect.
skip
When a RerunBridgeModule is already part of your blueprint, you typically donโ€™t need start_grpc โ€” just call rerun_init() and log directly with rr.log(). The data will appear in the existing viewer.

How to use Rerun on dev (and the TF/entity nuances)

Rerun on dev is module-driven: modules decide what to log, and Blueprint.build() sets up the shared viewer + default layout.