diff --git a/source/isaaclab/config/extension.toml b/source/isaaclab/config/extension.toml index 3f09063efa8..1eaea7fb1bf 100644 --- a/source/isaaclab/config/extension.toml +++ b/source/isaaclab/config/extension.toml @@ -1,7 +1,7 @@ [package] # Note: Semantic Versioning is used: https://semver.org/ -version = "0.36.23" +version = "0.36.24" # Description title = "Isaac Lab framework for Robot Learning" diff --git a/source/isaaclab/docs/CHANGELOG.rst b/source/isaaclab/docs/CHANGELOG.rst index dd7855a2f16..cba4780aa5e 100644 --- a/source/isaaclab/docs/CHANGELOG.rst +++ b/source/isaaclab/docs/CHANGELOG.rst @@ -1,6 +1,16 @@ Changelog --------- +0.36.24 (2025-04-28) +~~~~~~~~~~~~~~~~~~~~ + +Added +^^^^^ + +* Adds option to add terrain border as "wall" above the ground or as terrain extension below the ground in + :class:`~isaaclab.terrains.terrain_generator.TerrainGeneratorCfg`. + + 0.36.23 (2025-04-24) ~~~~~~~~~~~~~~~~~~~~ diff --git a/source/isaaclab/isaaclab/terrains/terrain_generator.py b/source/isaaclab/isaaclab/terrains/terrain_generator.py index 0d08f019a42..3590d940b9c 100644 --- a/source/isaaclab/isaaclab/terrains/terrain_generator.py +++ b/source/isaaclab/isaaclab/terrains/terrain_generator.py @@ -268,8 +268,10 @@ def _add_terrain_border(self): border_center = ( self.cfg.num_rows * self.cfg.size[0] / 2, self.cfg.num_cols * self.cfg.size[1] / 2, - -self.cfg.border_height / 2, + self.cfg.border_height / 2, ) + if self.cfg.border_below_ground: + border_center[2] *= -1 # border mesh border_meshes = make_border(border_size, inner_size, height=self.cfg.border_height, position=border_center) border = trimesh.util.concatenate(border_meshes) diff --git a/source/isaaclab/isaaclab/terrains/terrain_generator_cfg.py b/source/isaaclab/isaaclab/terrains/terrain_generator_cfg.py index f500123d522..67673db41f3 100644 --- a/source/isaaclab/isaaclab/terrains/terrain_generator_cfg.py +++ b/source/isaaclab/isaaclab/terrains/terrain_generator_cfg.py @@ -138,6 +138,15 @@ class TerrainGeneratorCfg: border_height: float = 1.0 """The height of the border around the terrain (in m). Defaults to 1.0.""" + border_below_ground: bool = True + """Whether to place the border below the ground. Defaults to True. + + If True, the highest point of the border is at the height 0.0. This extends the terrain and is typically used in + locomotion tasks. + If False, the lowest point of the border is at the height 0.0. This is typically used in navigation tasks and acts + as a wall to prevent the robot from falling off the terrain. + """ + num_rows: int = 1 """Number of rows of sub-terrains to generate. Defaults to 1."""