| """Terrain curricula for the Go1 transfer study. |
| |
| mjlab's ROUGH_TERRAINS_CFG uses 7 of the 18 shipped presets and caps stair |
| height at 0.1 m, so a policy trained on it never encounters a gap it has to |
| place a foot across. HARD adds the unused presets and raises the ceiling. |
| |
| Difficulty rises along terrain rows; num_rows is the curriculum depth. |
| """ |
|
|
| from mjlab.terrains import TerrainGeneratorCfg |
| from mjlab.terrains.config import ( |
| discrete_obstacles, |
| flat, |
| hf_pyramid_slope, |
| narrow_beams, |
| pyramid_stairs, |
| pyramid_stairs_inv, |
| random_rough, |
| stepping_stones, |
| wave_terrain, |
| ) |
|
|
| |
| from mjlab.terrains.config import ROUGH_TERRAINS_CFG |
|
|
| FLAT_CFG = TerrainGeneratorCfg( |
| size=(8.0, 8.0), |
| border_width=20.0, |
| num_rows=10, |
| num_cols=20, |
| sub_terrains={"flat": flat(proportion=1.0)}, |
| add_lights=True, |
| ) |
|
|
| HARD_CFG = TerrainGeneratorCfg( |
| size=(8.0, 8.0), |
| border_width=20.0, |
| num_rows=10, |
| num_cols=20, |
| sub_terrains={ |
| |
| |
| "stepping_stones": stepping_stones( |
| proportion=0.2, stone_distance_range=(0.1, 0.4), stone_height_variation=0.15 |
| ), |
| "narrow_beams": narrow_beams(proportion=0.15, beam_width_range=(0.15, 0.5)), |
| "discrete_obstacles": discrete_obstacles( |
| proportion=0.15, obstacle_height_range=(0.05, 0.35), num_obstacles=60 |
| ), |
| |
| "pyramid_stairs": pyramid_stairs(proportion=0.15, step_height_range=(0.05, 0.2)), |
| "pyramid_stairs_inv": pyramid_stairs_inv( |
| proportion=0.15, step_height_range=(0.05, 0.2) |
| ), |
| "random_rough": random_rough(proportion=0.1, noise_range=(0.05, 0.18)), |
| "hf_pyramid_slope": hf_pyramid_slope(proportion=0.05, slope_range=(0.0, 1.2)), |
| "wave_terrain": wave_terrain(proportion=0.05), |
| }, |
| add_lights=True, |
| ) |
|
|
| TERRAINS = {"flat": FLAT_CFG, "rough": ROUGH_TERRAINS_CFG, "hard": HARD_CFG} |
|
|