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_CFG
fromurbansim.primitives.robot.coco
Action space:
COCOVelocityActionsCfg
Environment modifier:
COCONavModifyEnv
Default height: z = 0.4
Unitree Go2 (quadruped robot)
Config:
UNITREE_GO2_CFG
fromurbansim.primitives.robot.unitree_go2
Action space:
GO2NavActionsCfg
Environment modifier:
GO2NavModifyEnv
Default height: z = 0.3
Unitree G1 (humanoid / bipedal)
Config:
G1_MINIMAL_CFG
fromurbansim.primitives.robot.unitree_g1
Action space:
G1NavActionsCfg
Environment modifier:
G1NavModifyEnv
Default 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.