executing-plans
executing-plans
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available
simulation-and-rlRoute LeRobot Gymnasium simulation, benchmark evaluation, and bounded RL or HIL-SERL configuration work with explicit dependency, asset, backend, and safety gates.
Independent GitHub snapshot · Automated classification · Original documentation governs
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.
policy-training-inference.robot-control-data-collection.extensions-and-services.Collect before changing a command or config:
env.type, task/suite, observation mode, action mode, episode horizon,
environment count, async preference, policy checkpoint, and evaluation
episode count.make_env() or reset().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.
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:
{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"].
| 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 and compatibility.md. Do not claim a runnable rollout from a present Python module alone.
Read 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.
environment_probe.py --env-type ... and save its JSON output.make_env only for a known installed,
lightweight candidate; reset at most one bounded episode and close it.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.See workflows.md for safe command patterns and simulation-specific evaluation notes.
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.
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; 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.