diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 4fd3a69de84a..8c70e227e188 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -97,6 +97,7 @@ Guidelines for modifications: * Grzegorz Malczyk * Haoran Zhou * Harsh Patel +* Henry Hu * HoJin Jeon * Hongwei Xiong * Hongyu Li diff --git a/source/isaaclab_tasks/changelog.d/henry-anymald-newton-margin.rst b/source/isaaclab_tasks/changelog.d/henry-anymald-newton-margin.rst new file mode 100644 index 000000000000..455f639bc8a0 --- /dev/null +++ b/source/isaaclab_tasks/changelog.d/henry-anymald-newton-margin.rst @@ -0,0 +1,7 @@ +Fixed +^^^^^ + +* Fixed ANYmal-D rough-terrain locomotion terminating on spurious base contacts under the + Newton MJWarp backend by setting the Newton shape margin to zero in + :class:`~isaaclab_tasks.core.velocity.config.anymal_d.rough_env_cfg.AnymalDRoughEnvCfg`. + Other robots keep the shared default. diff --git a/source/isaaclab_tasks/isaaclab_tasks/core/velocity/config/anymal_d/rough_env_cfg.py b/source/isaaclab_tasks/isaaclab_tasks/core/velocity/config/anymal_d/rough_env_cfg.py index 66c4122e43e4..98afc61234e0 100644 --- a/source/isaaclab_tasks/isaaclab_tasks/core/velocity/config/anymal_d/rough_env_cfg.py +++ b/source/isaaclab_tasks/isaaclab_tasks/core/velocity/config/anymal_d/rough_env_cfg.py @@ -21,3 +21,10 @@ def __post_init__(self): super().__post_init__() # switch robot to anymal-d self.scene.robot = ANYMAL_D_CFG.replace(prim_path="{ENV_REGEX_NS}/Robot") + + # ANYmal-D's base capsule passes within a few millimetres of the thigh colliders, so + # the shared 1 cm Newton shape margin inflates them into constant overlap and trips + # the base_contact termination. Other robots keep the default. + newton_cfg = getattr(self.sim.physics, "newton_mjwarp", None) + if newton_cfg is not None: + newton_cfg.default_shape_cfg = newton_cfg.default_shape_cfg.replace(margin=0.0)