Environment Design#
IsaacLab Arena environment contains the main components used to create a manager-based RL environment. This includes the embodiment, scene, task and teleop device.
Core Architecture#
@configclass
class IsaacLabArenaEnvironment:
name: str = MISSING
embodiment: EmbodimentBase = MISSING
scene: Scene = MISSING
task: TaskBase = MISSING
teleop_device: TeleopDeviceBase | None = None
class ArenaEnvBuilder:
"""Compose IsaacLab Arena → Isaac Lab configs."""
def compose_manager_cfg(self) -> IsaacLabArenaManagerBasedRLEnvCfg:
# Combine configurations from all components
scene_cfg = combine_configclass_instances(...)
observation_cfg = self.arena_env.embodiment.get_observation_cfg()
actions_cfg = self.arena_env.embodiment.get_action_cfg()
Each component contributes to the final environment configuration, with automatic integration handled by the environment builder.
Creating an Environment Example#
# Component creation
embodiment = asset_registry.get_asset_by_name("franka")()
background = asset_registry.get_asset_by_name("kitchen")()
pick_object = asset_registry.get_asset_by_name("cracker_box")()
pick_object.set_initial_pose(Pose(position_xyz=(0.4, 0.0, 0.1)))
# Environment composition
scene = Scene(assets=[background, pick_object])
task = PickAndPlaceTask(pick_object, destination, background)
arena_environment = IsaacLabArenaEnvironment(
name="manipulation_task",
embodiment=embodiment,
scene=scene,
task=task,
teleop_device=None
)
# Build and execute
env_builder = ArenaEnvBuilder(arena_environment, args)
env = env_builder.make_registered()
To see how the manager-based RL environment configuration is compiled, please refer to the Environment Compilation Design page.