Principle:Isaac sim IsaacGymEnvs Factory Configuration
| Knowledge Sources | |
|---|---|
| Domains | Configuration, Manipulation |
| Last Updated | 2026-02-15 00:00 GMT |
Overview
Three-tier configuration hierarchy using Hydra YAML and Python dataclass schemas for Factory and IndustReal assembly environments.
Description
Factory/IndustReal tasks use a layered config pattern: Base configs (simulation parameters, Franka defaults) provide foundational settings, Environment configs (object dimensions, scene layout) define the assembly scenario, and Task configs (reward weights, action scaling, controller type) tune the RL training loop. Each tier has both a YAML config file and a Python dataclass schema for type checking.
This three-tier architecture mirrors the class inheritance hierarchy:
- FactoryBase / IndustRealBase -- reads
cfg_base(simulation, Franka DOF properties, gravity) - FactoryEnv* / IndustRealEnv* -- reads
cfg_env(object assets, environment count, scene spacing) - FactoryTask* / IndustRealTask* -- reads
cfg_task(reward terms, action scales, controller selection, curriculum)
The YAML files are composed via Hydra's defaults list mechanism, with the task-level YAML being the entry point that includes environment and base configs.
Usage
Use this principle when configuring Factory or IndustReal assembly tasks. Key scenarios include:
- Changing the controller type: Modify
ctrl.controller_typein the task YAML (e.g.,joint_space_ikvstask_space_impedance). - Adjusting reward weights: Tune
rl.keypoint_reward_scale,rl.sdf_reward_scale, and other reward parameters in the task config. - Scaling environments: Set
env.num_envsin the environment config to control GPU parallelism. - Modifying simulation parameters: Adjust
sim.disable_gravity_dt, timestep, and solver iterations in the base config.
Theoretical Basis
The layered configuration inheritance follows a strict ordering:
# Configuration resolution order
FactoryBase.yaml (or IndustRealBase.yaml)
|
v
FactoryEnv*.yaml (or IndustRealEnv*.yaml)
|
v
FactoryTask*.yaml (or IndustRealTask*.yaml) <-- entry point
# Hydra composes these via defaults list:
# In FactoryTaskNutBoltPick.yaml:
# defaults:
# - FactoryBase
# - FactoryEnvNutBolt
Each YAML tier has a corresponding Python dataclass schema that provides:
- Type validation: Ensures config values match expected types at construction time.
- Default values: Dataclass fields define sensible defaults that can be overridden by YAML.
- Documentation: Field names and types serve as self-documenting configuration references.
The schema classes (e.g., FactorySchemaConfigBase, FactorySchemaConfigEnv, FactorySchemaConfigTask) are instantiated during __init__ and attached to the task object as self.cfg_base, self.cfg_env, and self.cfg_task.