Skip to content

simulo.RoughTerrain

Procedurally generated rough terrain for locomotion training.

This terrain type generates a grid of sub-terrains with various difficulty levels, suitable for curriculum learning in locomotion tasks. Equivalent to IsaacLab’s TerrainImporterCfg with TerrainGeneratorCfg.

Attributes:

  • num_rows — Number of terrain rows (sub-terrain grid rows)
  • num_cols — Number of terrain columns (sub-terrain grid columns)
  • size — Size of each sub-terrain (width, height) in meters
  • border_width — Width of flat border around terrain
  • curriculum — If True, progressively spawn robots on harder terrain
  • max_init_terrain_level — Maximum initial terrain level for curriculum (None = spawn randomly across all levels)
  • sub_terrains — List of sub-terrain configurations
  • color_scheme — Color scheme for terrain (“height” or “none”)

Example:

import simulo
# Create rough terrain matching IsaacLab's H1 configuration
terrain = simulo.Terrain.rough(
name="terrain",
num_rows=10,
num_cols=20,
size=(8.0, 8.0),
curriculum=True,
sub_terrains=[
simulo.SubTerrainConfig(
type="pyramid_stairs",
proportion=0.2,
params={"step_height_range": (0.05, 0.23), "step_width": 0.3}
),
simulo.SubTerrainConfig(
type="pyramid_stairs_inv",
proportion=0.2,
params={"step_height_range": (0.05, 0.23), "step_width": 0.3}
),
simulo.SubTerrainConfig(
type="random_rough",
proportion=0.2,
params={"noise_range": (-0.05, 0.05), "noise_step": 0.005}
),
],
)
scene.add(terrain, at="/World/terrain", per_environment=False)
simulo.RoughTerrain(
name: str,
pose: Pose = Pose.identity(),
num_rows: int = 10,
num_cols: int = 20,
size: Tuple[float, float] = (8.0, 8.0),
border_width: float = 20.0,
curriculum: bool = True,
max_init_terrain_level: Optional[int] = None,
sub_terrains: List[SubTerrainConfig] = list(),
color_scheme: str = 'height',
)