Environment Configurations#
The EnvCfg class defines the configuration schema for URBAN-SIM training environments. It inherits from ManagerBasedRLEnvCfg in Isaac Lab and encapsulates settings for the simulation scene, observation/action space, rewards, curriculum, and termination logic.
@configclass
class EnvCfg(ManagerBasedRLEnvCfg):
"""
Environment configuration schema for URBAN-SIM.
Inherits from ManagerBasedRLEnvCfg.
"""
# Scene configuration
scene: SceneCfg = SceneCfg()
# Simulation parameters
viewer: ViewerCfg = ViewerCfg()
observations: ObservationCfg = ObservationCfg()
actions: ActionCfg = ActionCfg()
commands: CommandCfg = CommandCfg()
# MDP components
rewards: RewardCfg = RewardCfg()
terminations: TerminationCfg = TerminationCfg()
events: EventCfg = EventCfg()
curriculum: CurriculumCfg = CurriculumCfg()
# Robot configuration
robot_name: str = "COCO" # Default robot type
Scene Configuration#
The scene field instantiates a SceneCfg-compatible class, determining how the environment is constructed.
If pg_config is not provided, the system defaults to random object placement:
scene = scene_cfg(num_envs=..., env_spacing=...)
If pg_config is provided, a procedural scenario is built:
scene = scene_cfg( num_envs=..., env_spacing=..., pg_config=pg_config, scenario_generation_method=..., )
Key options:
num_envs: Number of parallel environmentsenv_spacing: Spacing between environments in simulation worldpg_config: Optional procedural generation configscenario_generation_method: Overrides default random placement
Simulation Configuration#
viewer: Defines viewer resolution, camera mode, etc. via ViewerCfgobservations: Sensor and observation space definitions via observation_cfgactions: Action space definition (e.g., continuous, discrete) via action_cfgcommands: External command signal structure via command_cfg
MDP Configuration#
rewards: Reward shaping logic via reward_cfgterminations: Termination condition logic via termination_cfgevents: Optional triggerable in-sim eventscurriculum: Curriculum learning parameters via curriculum_cfg
All these components are dynamically loaded based on the environment configuration, allowing for flexible and extensible environment setups.
Robot Configuration#
URBAN-SIM supports multiple robot embodiments, each with its own physical parameters, control interface, and integration strategy.
The robot selection is determined via the robot_name field in the environment configuration, and dynamically loads the corresponding config modules.
Supported Robots#
COCO (wheeled base)
Config:
COCO_CFGfromurbansim.primitives.robot.cocoAction space:
COCOVelocityActionsCfgEnvironment modifier:
COCONavModifyEnvDefault height: z = 0.4
Unitree Go2 (quadruped robot)
Config:
UNITREE_GO2_CFGfromurbansim.primitives.robot.unitree_go2Action space:
GO2NavActionsCfgEnvironment modifier:
GO2NavModifyEnvDefault height: z = 0.3
Unitree G1 (humanoid / bipedal)
Config:
G1_MINIMAL_CFGfromurbansim.primitives.robot.unitree_g1Action space:
G1NavActionsCfgEnvironment modifier:
G1NavModifyEnvDefault height: z = 0.74
Dynamic Initialization#
The configuration system selects robot-specific components based on name:
if robot_name.lower() == "unitree_go2":
from urbansim.primitives.robot.unitree_go2 import UNITREE_GO2_CFG, GO2NavActionsCfg, GO2NavModifyEnv
robot_cfg = UNITREE_GO2_CFG
action_cfg = GO2NavActionsCfg
modify_env_fn = GO2NavModifyEnv
# Set robot spawn position
robot_cfg.init_state.pos = env_config["Robot"].get("init_position", default_xyz)
Action Configuration#
Each robot defines its own action_cfg class, determining:
Control mode (e.g., velocity commands, joint torques)
Action dimension and limits
Mapping to simulation API
These configurations are injected into the full environment config (e.g., EnvCfg) to ensure proper wiring during instantiation.