Scene Configuration#
URBAN-SIM supports multiple pipelines for generating simulation scenes with varying complexity, spatial structure, and randomness. Each environment binds a scene configuration (SceneCfg) that determines what types of scenes are loaded, how they are arranged, and how they are reused across multiple environments.
Scene Binding#
Scene configuration is specified in the environment config via:
@configclass
class EnvCfg(ManagerBasedRLEnvCfg):
...
scene = SceneCfg(...)
The scene class determines the number of environments, their spatial arrangement, and the scenario generation method used.
Scenario Generation Pipelines#
URBAN-SIM includes two main pipelines for generating scenes:
Random Object Placement Fast and lightweight. Places obstacles, buildings, and pedestrians randomly within a defined area. - Used via:
random_env.py
- Suitable for large-scale training and pretrainingProcedural Generation (PG) Structured scene generation based on layout rules and scenario graphs. - Used via:
pg_env.py
- Suitable for curriculum learning and benchmarking
Each pipeline supports:
Scene-level asset instantiation
Environment duplication (–num_envs)
Asynchronous or synchronous layout control
Example YAML Config#
In a YAML config, the scene section may look like:
Env:
name: static
map_region: 30
num_objects: 25
Omniverse:
headless: True
simulation_dt: 0.005
rendering_interval: 4
decimation: 20
episode_length_s: 30.0
env_spacing: 31.0
scenario_generation_method: limited async procedural generation
This will spawn environments with randomized object placement and layout variation.
Scene Customization#
Scene behavior can be further customized via:
Changing asset spawn positions or scale
Overriding pg_config in the environment config
Specifying deterministic vs stochastic layouts
You can also inject dynamic agents (e.g., pedestrians, moving vehicles) through scenario setup like
pg_config: dict = dict(
type='dynamic', # [clean, static, dynamic]
with_terrain=False,
with_boundary=True,
map_region=20,
buffer_width=1,
num_object=10,
num_pedestrian=9,
walkable_seed=0,
non_walkable_seed=1,
seed=0,
unique_env_num=20,
ped_forward_inteval=10,
moving_max_t=80,
)
Spatial Arrangement#
URBAN-SIM supports both:
Synchronous scenes: All environments share the same map and layout (ideal for evaluation)
Asynchronous scenes: Each environment is different (ideal for generalization training)
Each environment is placed on a grid, spaced by env_spacing, and receives its own camera, sensor, and physics handle.
More details on scene generation and configuration can be found in the file urbansim/scene/urban_scene.py
.