Configuration¶
Domain randomization is configured inside the selected task owner YAML. Use
--task and --sim to select backend-specific behavior first, then override
fields inside that selected owner.
Two declaration paths exist today:
Manager-Based (Compatible) tasks declare reset / interval randomization through Hydra
events:manager terms in the owner YAML, for examplesrc/unilab/conf/ppo/task/go1_joystick_flat/base.yaml.Tasks may also attach a task-level provider and configure legacy provider fields under
env.domain_rand; no in-repo task currently uses this path.
Common lifecycle boundaries:
Init-lifecycle items change model identity or geometry and must run during env/backend initialization.
Reset-lifecycle items perturb state or model parameters at reset through a backend-supported payload.
Interval-lifecycle items apply perturbations between steps.
The detailed task status and field semantics are in Domain Randomization.
Domain randomization is split by lifecycle: init, reset, and interval. The
legacy path’s manager is src/unilab/dr/manager.py; task providers live near
the env owners, and backend capabilities are declared through
unisim.backend.base.
Reset Gravity¶
Use --sim mujoco when enabling gravity reset randomization; Motrix does not
advertise the same gravity capability in the current backend. This item is only
available on the task-level provider path (env.domain_rand.randomize_gravity
and env.domain_rand.gravity_range), which no in-repo task currently uses.
Interval Push¶
Manager-Based tasks configure interval push through the env.events.push_robot
term. For example, src/unilab/conf/ppo/task/go1_joystick_flat/base.yaml uses
push_by_setting_velocity with a 15-second interval and per-axis velocity ranges.
uv run train --algo ppo --task go1_joystick_flat --sim mujoco \
'env.events.push_robot.interval_range_s=[10.0,10.0]'
Owner-Local Defaults¶
Keep ranges in the task owner YAML when they are part of the task contract. For
example, the rough quadruped family’s base mass, center-of-mass, kp/kd, and
push randomization are declared as event terms in the shared base
src/unilab/conf/ppo/task/quadruped_joystick_rough/base.yaml (the go2_joystick_rough
backend owners compose it through Hydra defaults).
For the full current inventory, see Domain Randomization.