Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Graphical User Interface (GUI)

SRB comes with a minimal GUI application that can serve as a more approachable demonstration for non-developers. The GUI is written in Rust using the egui framework, while the middleware between the GUI and the SRB framework is facilitated via the r2r ROS 2 bindings.

The GUI discovers its task cards and configuration options from the gui_catalog.json member of one immutable offline-cache generation. srb cache update builds all twelve cache members and their hashes under .cache/offline/generations/<generation-id>/, validates their semantic and catalog consistency, then atomically switches .cache/offline/current.json. Rust resolves that pointer and validates the manifest and every required member before reading the catalog; it never reads the legacy fixed files directly.

Recommended demo defaults are:

  • rendering mode: quality
  • teleop devices: keyboard spacemouse
  • interface: gui
  • task-specific env.stack from the generated catalog (excavation_demo uses true)

Haptic devices are not configured through dedicated GUI knobs. If a haptic teleop device is available in the SRB cache, it appears only as a generic checkbox under advanced controls.

The customization panel shows the exact command before launch and provides both run and copy actions. Argparse options are emitted first; Hydra overrides are appended as key=value tokens without a -- separator.

srb gui — Launch GUI

The srb gui command launches the GUI through cargo run when the native Rust toolchain is available:

srb gui

Hint: All arguments following -- are forwarded to the GUI application itself.

The command checks for cargo and rustc immediately before launching. If the toolchain is unavailable, use an executable prebuilt GUI instead:

SRB_GUI_BINARY=/path/to/gui srb gui

In the development tree, an executable target/release/gui or target/debug/gui is also accepted as the prebuilt path. Missing or invalid launch inputs produce an actionable typed CLI error before a process is started.

Example

Print the help message of the GUI application:

srb gui -- --help

Refresh GUI Catalog

Regenerate the complete offline snapshot after changing task metadata, cache generation, assets, task thumbnails, or available interfaces:

srb cache update

srb cache update always launches Isaac Sim because task and registry discovery are runtime-backed. In a lightweight environment, use srb cache status or srb cache doctor to inspect an already-generated catalog without launching Isaac Sim; neither command regenerates missing metadata. A missing, incomplete, or tampered pointer/generation is reported as incomplete and must be repaired explicitly with srb cache update. The older .cache/*.json files and .cache/generation.json, if present, are compatibility artifacts only and do not make the offline snapshot ready.

Task Thumbnails

Task thumbnails are loaded from:

docs/src/_graphics/tasks/<task>.webp

Generate or refresh a single task thumbnail with:

srb doc thumbnail --task excavation_demo --force --width 320 --height 240

Missing task thumbnails are not fatal. The catalog falls back to a robot thumbnail, scenery thumbnail, domain thumbnail, then the SRB placeholder.

Command Shape

The GUI command preview follows SRB CLI parsing rules. For example:

srb agent teleop --env excavation_demo --hide_ui --rendering_mode quality --interface gui --teleop_device keyboard spacemouse env.domain=MOON env.seed=0 env.num_envs=1 env.stack=true env.robot=kinova_gen3n7+scoop_custom3

Use raw Hydra overrides in the customization panel for task-specific options such as env.demo_regolith_quality=visual.