Robot Learning Workbench is a classic desktop engineering application for inspecting, launching, monitoring, and comparing trusted local robot-learning tasks. It is a thin learning and orchestration layer over an external task workspace and an existing NVIDIA Isaac Lab installation.
The Workbench presents workspace readiness, scene assets, task/MDP metadata, exact commands, process output, training metrics, raw episode telemetry, and evaluation comparisons in one tkinter/ttk desktop interface.
Robot-learning workflows often spread task definitions, simulator commands, training logs, and evaluation evidence across separate tools. The Workbench makes those boundaries visible without replacing the simulator or learning framework.
WORKBENCH_ROOT: desktop UI and Workbench-owned helper
|
| subprocess + explicit JSON output
v
isaac_probe.py through isaaclab.bat
|
+--------------------------+
| |
v v
WORKSPACE_ROOT ISAACLAB_ROOT
trusted task code Isaac Lab / Isaac Sim
The three roots are independent. The normal desktop process does not import Isaac Lab, Isaac Sim, PyTorch, RSL-RL, or TensorBoard.
The UI guides the user through workspace inspection, asset and task discovery, Goal → Success → Observation → Action → Reward → Reset → PPO inspection, GUI review, random baselines, PPO smoke/full command launch, metric inspection, and evaluation comparison. A stage is shown as unavailable when the selected task workspace does not provide a runner for it.
- Python 3.12 or 3.13 with tkinter
- A trusted local task workspace
- An external Isaac Lab installation for simulator-aware operations
- Windows for the validated
isaaclab.batworkflow
Isaac Lab, Isaac Sim, PyTorch, RSL-RL, and TensorBoard are not bundled or installed by this project.
py -3.12 -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -e ".[dev]"The dev extra contains only test, lint, type-check, and pre-commit tooling.
python -m applications.robot_learning_workbenchAfter installation, the robot-learning-workbench console command is also
available. Configure the task workspace and Isaac Lab roots through the File
menu. Per-user settings are stored outside the repository under local
application data.
WORKSPACE_ROOT owns task registration code, task source, and optional command
scripts. Selecting and probing a workspace may execute its Python registration
code through the external Isaac runtime. Select only trusted local workspaces.
The Workbench is not a sandbox for downloaded or untrusted code.
A standalone workspace declares tasks in
robot_learning_workbench_tasks.json:
{
"tasks": [
{
"name": "Example task",
"registration": "tasks/example/registration.py",
"commands": {
"gui": "tasks/example/gui_probe.py",
"evaluate": "tasks/example/evaluate.py"
}
}
]
}registration is required. name, number, and commands are optional.
Supported command roles are prekit, gui, semantic, random, and
evaluate. Registration source defines TASK_ID, may define PLAY_TASK_ID
and RUNTIME_MODULE, and must expose register_tasks() when a runtime probe is
requested. The legacy experiments/robot/<number>_<name>/registration.py
layout is also accepted; both discovery forms normalize to one task model.
ISAACLAB_ROOT owns Isaac Lab, Isaac Sim integration, simulator dependencies,
and generated runs. Workbench commands use that checkout as their working
directory and add WORKSPACE_ROOT to PYTHONPATH. The helper path always comes
from WORKBENCH_ROOT, so a selected workspace cannot replace it.
The Workbench launches its helper with isaaclab.bat -p. The helper imports the
trusted registration module, reads the registered task configuration, and
writes normalized JSON. An instantiated probe can attach per-term observation
dimensions from the runtime ObservationManager using (group, term_name)
identity.
Launch Task GUI starts the selected task in the native Isaac Sim viewer. The Workbench does not embed or replace the simulator viewport. GUI review remains a user-confirmed local workflow step.
Every action displays the exact command before launch. The Workbench owns only the process it starts, streams its output, records its exit state, and stops only that process tree. It does not tune rewards, PPO settings, or task code.
Training metrics are read by the external helper in the Isaac environment where TensorBoard is already available. TensorBoard is not a Workbench runtime dependency.
The desktop can tail an external JSONL telemetry file and display its raw nested
values. It does not infer physical units from variable names and does not
convert a three-value action into invented Cartesian XYZ or millimetre
semantics. Unknown task semantics remain task-defined or unavailable unless
authoritative task metadata supplies them.
Existing evaluation JSON files can be opened without modification. The viewer shows available aggregate metrics, region results, task-provided failure labels, and a transition matrix when two results share stable episode IDs.
python -m pytest tests/unit/test_robot_learning_workbench.py
python -m ruff check applications tests
python -m ruff format --check applications tests
python -m mypy applications/robot_learning_workbench
python -m pre_commit validate-config .pre-commit-config.yamlThese checks do not require Isaac Sim, CUDA, a GPU, robot hardware, or a display.
The Workbench does not author scenes or tasks, edit assets, generate rewards, choose checkpoints, optimize hyperparameters, embed a 3D viewport, run cloud jobs, or provide a plugin framework. Task-specific explanations are shown only when supplied by task/runtime metadata.
Workspace metadata is discovered without importing task modules in the desktop process. Simulator-aware probing later executes the selected workspace's registration code in the external Isaac environment. This boundary provides separation and transparency, not sandboxing. Do not select untrusted code or place credentials in manifests, commands, telemetry, or evaluation files.
Licensed under the Apache License, Version 2.0. See LICENSE.