Skip to content

Latest commit

 

History

104 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CI Version License Powered by

A custom Rerun viewer for ROS 2 visualization, built on top of Rerun v0.34.

Features

  • Topics Panel — sortable table of subscribed ROS 2 topics with type, publisher count, and subscriber count
  • Nodes Panel — sortable table of discovered ROS 2 nodes with transport info
  • Status Bar — live connection state, relay-sourced bridge count, node count, topic count, and uptime
  • Self-healing connection — dials a relay (or any Rerun gRPC endpoint) and auto-reconnects with backoff; start order does not matter

Build

Requires Rust 1.82+.

cargo build --release

Or with pixi:

pixi run build
pixi run sanity   # check + fmt + lint + test

Run

cargo run --release

By default the viewer connects to rerun+http://127.0.0.1:9876/proxy. Point it elsewhere with --connect, which accepts host, host:port, or a full proxy URL:

rewire-viewer --connect robot.local:9876

If no relay is running yet, the viewer waits in "Connecting..." and attaches as soon as one appears; if the relay restarts, it reconnects on its own.

Web viewer

The WebAssembly build (app.rewire.run) reads two query parameters:

Parameter Values Default
url a recording to open on start
theme dark · light · system follows the browser
https://app.rewire.run/?url=https://examples.rewire.run/turtlebot3-example.rrd&theme=dark

Theming an embed

Without theme, the viewer follows the browser's prefers-color-scheme. A page embedding the viewer in an iframe cannot override that from the outside: color-scheme does not cross an origin boundary, and the UI is painted into a canvas rather than out of browser widgets, so there is nothing for the embedder's CSS to restyle. theme is the supported way to pin an embed.

To follow a host page's own theme toggle without reloading the iframe — a reload would re-download the recording — post a message to it:

frame.contentWindow.postMessage({ type: "rewire:theme", theme: "light" }, "*");

The viewer applies dark, light and system and ignores anything else. The message only changes appearance, so it is accepted from any origin.

License

Licensed under the Apache License, Version 2.0. See LICENSE for details.

About

Rewire viewer based on Rerun API for bridge introspection

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages