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.stackfrom the generated catalog (excavation_demousestrue)
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.