"Route LeRobot Gymnasium simulation, benchmark evaluation, and
Scanned 9/8/2026
Install to Claude Code
npx -y skills add VectorSpaceLab/AREX-Skill --skill simulation-and-rl --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Simulation And Rl?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/vectorspacelab-simulation-and-rl)More formats (shields.io, HTML) on the badges page.
---
name: simulation-and-rl
description: "Route LeRobot Gymnasium simulation, benchmark evaluation, and
bounded RL or HIL-SERL configuration work with explicit dependency, asset,
backend, and safety gates."
disable-model-invocation: true
metadata:
disco-role: operating
license: Apache 2.0
---
# Simulation and RL
Use this skill when a task mentions `env.type`, Gymnasium, PushT, LIBERO,
LIBERO-plus, MetaWorld, RoboTwin/RobotWin, VLABench, RoboCasa, RoboMME,
IsaacLab Arena, RL, HIL-SERL, actor/learner, or a reward model. This skill
routes environment construction and evaluation; it does not silently turn a
configuration check into a simulator rollout or a real-robot action.
## Route first
- Route generic policy training, processors, checkpoints, and inference to
`policy-training-inference`.
- Route physical robot control, teleoperation, recording, and hardware safety
to `robot-control-data-collection`.
- Route remote jobs, hosted services, gRPC service deployment, and extension
authoring to `extensions-and-services`.
- Keep this skill responsible for simulation dispatch, benchmark evaluation,
RL data flow, and reward integration.
## Inputs and gates
Collect before changing a command or config:
1. `env.type`, task/suite, observation mode, action mode, episode horizon,
environment count, async preference, policy checkpoint, and evaluation
episode count.
2. Whether the request is a **config/registry check**, a CPU smoke, or an
actual rollout. A config check must not call `make_env()` or `reset()`.
3. Platform, Python version, Gymnasium/NumPy versions, simulator package,
asset-pack status, rendering mode, CUDA/Vulkan/MuJoCo backend, and any
Hub credential or remote-code consent.
4. For RL: actor/learner topology, `algorithm` (currently `sac`), policy
action/state features, replay capacity, batch size, online/offline ratio,
warmup threshold, device, and whether human intervention is intended.
Use `scripts/environment_probe.py` for dispatch-only inspection and
`scripts/rl_config_check.py` for bounded RL config validation. Both are
network-free, asset-free, non-actuating, and non-training.
## Environment dispatch contract
`make_env_config(type, **kwargs)` resolves the registered `EnvConfig` choice.
The config owns `create_envs(n_envs, use_async_envs)` and
`get_env_processors()`. `make_env(config)` returns:
```text
{suite_name: {task_id: gymnasium.vector.VectorEnv}}
```
The base config uses `gym_<type>/<task>` and imports the package only if that
Gym ID is absent. Benchmark configs override creation for multi-task or
third-party simulators. `SyncVectorEnv` is the conservative default; async
workers are opt-in and are only selected for more than one environment. GPU,
EGL, Vulkan, MuJoCo, SAPIEN, and asset initialization are not proved by config
construction or registry inspection.
Raw environment observations use `pixels`, nested camera dictionaries,
`agent_pos`, `environment_state`, or `robot_state`. `preprocess_observation`
normalizes these to LeRobot observation keys; `env_to_policy_features` and the
config `features_map` must agree with the policy. Evaluation depends on
`task`, `task_description`, `_max_episode_steps`, and `info["is_success"]`.
## Benchmark routing
| Trigger | Config route | Required gate |
|---|---|---|
| PushT | `pusht`, `PushT-v0` | `gym-pusht` and Pymunk; CPU smoke is reasonable |
| Aloha | `aloha` | `gym-aloha`; verify simulator import before rollout |
| LIBERO | `libero` | Linux, `hf-libero`, MuJoCo assets, render backend |
| LIBERO-plus | `libero_plus` | Plus fork/assets; do not mix with vanilla LIBERO |
| MetaWorld | `metaworld` | MetaWorld 3.0.0 and compatible Gymnasium |
| RobotWin/RoboTwin | `robotwin` | external RoboTwin tree, SAPIEN/CuRobo assets, NVIDIA GPU |
| VLABench | `vlabench` | external package, MuJoCo/dm-control, mesh assets, Linux |
| RoboCasa | `robocasa` | editable external packages, MuJoCo, kitchen/object assets |
| RoboMME | `robomme` | isolated Linux ManiSkill/SAPIEN/Vulkan environment |
| IsaacLab Arena | `isaaclab_arena` | Hub access plus explicit trusted remote-code consent |
| HIL simulation | `gym_manipulator` | `hilserl` extra, `gym_hil`, input device, usually NVIDIA GPU |
Use the detailed matrix and known conflicts in
[environment-overview.md](references/environment-overview.md) and
[compatibility.md](references/compatibility.md). Do not claim a runnable
rollout from a present Python module alone.
## Configuration decisions
Read [configuration.md](references/configuration.md) before editing nested
fields. Validate task names, observation/action dimensions, camera keys,
`n_envs >= 1`, positive FPS/horizon, and policy feature alignment. Keep
`hard_reset=false` for LIBERO only when fixed initial states are enabled and
reproducibility trade-offs are accepted. Use `use_async_envs=false` for the
first smoke when a simulator has fragile rendering or fork behavior.
Hub environment strings or `HubEnvConfig.hub_path` are a separate path:
`make_env` downloads/imports remote `env.py` only with
`trust_remote_code=true`. Treat this as code execution and a credential/network
boundary, never as a local registry result.
## Evaluation workflow
1. Run `environment_probe.py --env-type ...` and save its JSON output.
2. Resolve missing extras, version conflicts, backend, credentials, and assets;
stop on a required gap rather than substituting an unrelated simulator.
3. For a CPU dispatch smoke, call `make_env` only for a known installed,
lightweight candidate; reset at most one bounded episode and close it.
4. For a real benchmark evaluation, use `lerobot-eval` with the matching
policy feature names, `--eval.batch_size=1` first, explicit task and
episode count, and the benchmark's render/backend settings.
5. Verify success information and observation/action shapes before increasing
parallelism. Record whether the result is config-only, partial smoke, or
full rollout; do not label substitution as benchmark recovery.
See [workflows.md](references/workflows.md) for safe command patterns and
simulation-specific evaluation notes.
## RL and reward boundaries
The gRPC-free RL core exposes `ReplayBuffer`, `OnlineOfflineMixer`,
`RLTrainer`, `RLAlgorithmConfig`, and SAC. `RLTrainer.training_step()` asks the
algorithm for data, and SAC consumes batches containing state, action, reward,
next state, done, and truncation flags. `online_ratio` must be in `[0, 1]`;
SAC's `policy_config` must be populated before `make_algorithm`.
HIL-SERL actor/learner mode is different from a local RL smoke: the actor
collects transitions and interventions, queues them, receives weights, and
requires a learner service; the learner fills replay, delays updates until
`online_step_before_learning`, trains, checkpoints, and periodically pushes
weights. It requires the `hilserl` extra and hardware or `gym_hil` simulation.
Do not start actor/learner processes merely to validate JSON.
Reward configs route through `make_reward_model_config`,
`make_reward_model`, and `make_reward_pre_post_processors`. Supported built-in
names are `reward_classifier`, `sarm`, `robometer`, and `topreward`. Reward
models consume preprocessed tensor batches and emit per-sample rewards;
classifier threshold/success-reward settings affect HIL transition processing.
Transformer/VLM-backed models may need model weights, credentials, network, and
GPU memory. Zero-shot reward inference is not the same as trainable reward
model fitting.
## Recovery and handoff
On failure, classify it as missing package, version conflict, missing asset,
backend/display failure, credential/remote-code refusal, policy feature
mismatch, or actual simulator/runtime failure. Follow
[troubleshooting.md](references/troubleshooting.md); do not hide the class by
switching benchmarks. Report the exact command, status (`config`, `dispatch`,
`CPU smoke`, `GPU rollout`, or `none`), unresolved gates, and whether any
substitution was used.
## Bundled tools
- [environment_probe.py](scripts/environment_probe.py): registry/config and
package-presence inspection; never downloads, creates, resets, or closes an
external simulator.
- [rl_config_check.py](scripts/rl_config_check.py): bounded JSON schema/value
checks; never trains, contacts an actor/learner, downloads weights, or
initializes a simulator.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!