Configure Physics, Disturbances, and Randomization¶
AM-Bench separates shared simulation timing, multirotor actuation and aerodynamic models, noise, wind, and task-owned domain randomization. Record each enabled layer explicitly when comparing runs.
Shared effect switches¶
BaseEnvCfg exposes five independent switches. Their current shared defaults are all False.
| Field | Effect | Constraint |
|---|---|---|
enable_action_noise |
Apply action_noise_model through the Isaac Lab environment step |
If enabled without a model, the config creates additive Gaussian noise with mean 0.0 and standard deviation 0.0001 |
enable_observation_noise |
Apply observation_noise_model to the policy observation |
If enabled without a model, the config creates additive Gaussian noise with standard deviation 0.002 and an additive-bias model with standard deviation 0.0001 |
enable_saturation |
Clamp allocated rotor thrust to the selected robot's limits | Required when transient rotor dynamics are configured |
enable_aerodynamic_effects |
Enable ground effect, near-wall effect, and body-frame drag | Also enables scene-query support before simulator construction |
enable_wind_effect |
Apply the configured constant world-frame force | The vector comes from robot.multirotor.aerodynamics.wind_force_w; its default is (0.0, 0.0, 0.0) N |
Noise models may use other Isaac Lab noise configs, but their tensor shape must remain compatible with the selected action or policy observation.
Wind is configurable through the selected robot specification. Set wind_force_w to the desired (x, y, z) force in world coordinates and enable enable_wind_effect on the environment. Because the default vector is zero, enabling the switch alone does not introduce a disturbance. Define the value on a copied or derived robot profile when creating a new registered environment so the shared profiles remain unchanged.
Multirotor actuation¶
Each physical RobotSpecCfg provides a MultirotorSpecCfg with a rotor-layout provider and RotorActuatorCfg. Current robot specs use a per-rotor thrust range of (0.0, 23.0) N and a reaction-torque ratio of 0.02 m. The propeller radius is 0.19 m for UAQuad and 0.152 m for the three hexarotor-based specifications.
response_time_constant_s and normalized_acceleration_limit_per_s are both None in the current robot specs, so actuation is instantaneous unless a derived specification enables one or both. When transient dynamics are enabled, both values must be positive when present and enable_saturation must also be True.
Aerodynamic parameters and order¶
Physical robot specs attach an AerodynamicCfg. Its current defaults include a 5 m raycast limit, ground-effect coefficients b=1.0 and k=0.171, two near-wall coefficient pairs, and body-axis drag coefficients (0.1, 0.1, 0.1).
For a multirotor controller step, the implementation order is:
- compute the desired body wrench;
- perform inverse allocation;
- apply steady thrust saturation, or let the transient actuator own saturation;
- apply optional rotor response and normalized-acceleration limits;
- apply ground and near-wall effects to rotor thrust vectors;
- reconstruct the realized body wrench;
- add body-frame drag and the configured world-frame wind force.
The EE oracle has no MultirotorSpecCfg, so rotor allocation, saturation, proximity effects, drag, and wind do not represent a physical aerial platform on that profile.
Task domain randomization¶
Task randomization is configured through each task's EventCfg; there is no single global difficulty field. Current public tasks expose these event groups:
| Task | Current event surfaces |
|---|---|
| Cabinet Pick-and-Place | can XY reset pose |
| Frame Assembly | coordinated wall/peg reset pose; frame reset position |
| Lemon Harvesting | lemon/lime positions on the wall |
| NDT | no task EventCfg terms |
| Open Door | door reset pose; hinge actuator damping scale |
| Peg-in-Hole | wall reset pose; hole position; prestartup hole scale |
| Press Button | wall reset pose; button position; prestartup button scale |
| Pull Lever | wall/lever reset pose; lever and tip visual colors |
| Push Slider | wall/slider reset pose |
| Rotate Valve | wall/valve reset pose |
| Toss Ball | container XY reset pose |
| Wipe Window | window reset pose; stain positions; window friction |
prestartup events change stage-level properties before simulation begins and are not per-reset randomization. reset events run for the selected environment IDs during resets. When one object is attached to another, use the task's coordinated event function so dependent poses remain consistent.
Validate one layer at a time¶
Begin with the selected registered default. Enable or change one effect, noise model, or event range, then run one bounded environment. Geometry scale, friction, contact thresholds, and aerodynamic raycasts require simulator-level validation; static config inspection cannot prove their runtime behavior.
For task fields and scene ownership, see Tasks and Scenes. For controller telemetry such as commanded/realized thrust and proximity wrenches, see Controllers.