Architecture overview#

How a registered --task becomes a runnable ManagerBasedRlEnvCfg. For the layer model (MDP, robot, preset, task), start with Concepts.

Config pipeline#

Every task cfg is assembled in the same order:

make_base_wbc_env_cfg()       # shared WBC template (env/wbc_env_cfg.py)
     ↓
<robot>_base_cfg()            # registered robot entity
     ↓
apply_<preset>(...)           # paper / deploy recipe (presets/*.py)
     ↓
[optional] apply_se_actor()   # actor obs swap
     ↓
WbcTaskConfig.build_env_cfg   # --task id

Preset ↔ task concepts: Presets and tasks. Code examples: Tasks and presets.

Task registration#

WbcTaskConfig (tasks/config.py) binds:

  • task_id → CLI --task

  • robot_id → registered entity + data/<robot>/

  • experiment_namelogs/rsl_rl/<name>/

  • build_env_cfg → full env cfg callable

Play / eval mode#

Task builders accept play=True to disable training-only features: long episodes, obs corruption, motion DR, assistive wrench, push events. Same pattern for every registered robot.