Skip to content

Commit 7f8a773

Browse files
committed
Enable biped rough terrain envs with Newton pin bump
Bump Newton pin from 2684d75 (1.1.0) to 381781c2 (1.2.0) to fix biped contact quality on triangle-mesh terrain. H1 and Cassie fail on 1.1.0 but train on 1.2.0. Per-biped fixes (restore overrides dropped in parent PR's consolidation): - All bipeds (H1, Cassie, G1, Digit): restore reset_robot_joints.params["position_range"] = (1.0, 1.0) — bipeds have precise init poses that should not be randomly scaled. - Cassie: add leg armature=0.02 for stability on rough terrain. Out of scope (pre-existing config issues, fail on PhysX too): - G1: barely trains on PhysX (reward=0.14, 300 iter) — finger joints in action space dilute learning. Needs separate PR. - Digit: falls in 7 steps on both Newton and PhysX — closed-loop kinematics / init pose issue. Needs separate PR.
1 parent 328854d commit 7f8a773

7 files changed

Lines changed: 27 additions & 2 deletions

File tree

source/isaaclab_newton/config/extension.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22

33
# Note: Semantic Versioning is used: https://semver.org/
4-
version = "0.5.14"
4+
version = "0.5.15"
55

66
# Description
77
title = "Newton simulation interfaces for IsaacLab core package"

source/isaaclab_newton/docs/CHANGELOG.rst

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,18 @@
11
Changelog
22
---------
33

4+
0.5.15 (2026-04-18)
5+
~~~~~~~~~~~~~~~~~~~
6+
7+
Changed
8+
^^^^^^^
9+
10+
* Bumped pinned Newton version from ``2684d75`` (1.1.0.dev0) to
11+
``381781c2`` (1.2.0.dev0) to enable biped rough-terrain training (H1,
12+
Cassie). The bump requires ``mujoco-warp~=3.6.0`` (already set
13+
transitively via Newton's ``pyproject.toml``).
14+
15+
416
0.5.14 (2026-04-16)
517
~~~~~~~~~~~~~~~~~~~
618

source/isaaclab_newton/setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def run(self):
4545
"mujoco==3.5.0",
4646
"mujoco-warp==3.5.0.2",
4747
"PyOpenGL-accelerate==3.1.10",
48-
"newton @ git+https://github.com/newton-physics/newton.git@2684d75bfa4bb8b058a93b81c458a74b7701c997",
48+
"newton @ git+https://github.com/newton-physics/newton.git@381781c2",
4949
],
5050
}
5151

source/isaaclab_tasks/isaaclab_tasks/manager_based/locomotion/velocity/config/cassie/rough_env_cfg.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
LocomotionVelocityRoughEnvCfg,
1414
RewardsCfg,
1515
)
16+
from isaaclab_tasks.utils import preset
1617

1718
##
1819
# Pre-defined configs
@@ -60,12 +61,18 @@ def __post_init__(self):
6061
super().__post_init__()
6162
# scene
6263
self.scene.robot = CASSIE_CFG.replace(prim_path="{ENV_REGEX_NS}/Robot")
64+
# Cassie Newton-only armature for biped stability on rough terrain; PhysX unchanged
65+
self.scene.robot.actuators["legs"].armature = preset(default=0.0, newton=0.02)
66+
67+
6368
self.scene.height_scanner.prim_path = "{ENV_REGEX_NS}/Robot/pelvis"
6469

6570
# Cassie uses "pelvis" as base body — disable mass randomization for bipeds
6671
self.events.add_base_mass = None
6772
self.events.base_com = None
6873
self.events.base_external_force_torque.params["asset_cfg"].body_names = ".*pelvis"
74+
# Cassie has precise initial pose — don't scale joint defaults randomly on reset
75+
self.events.reset_robot_joints.params["position_range"] = (1.0, 1.0)
6976

7077
# actions
7178
self.actions.joint_pos.scale = 0.5

source/isaaclab_tasks/isaaclab_tasks/manager_based/locomotion/velocity/config/digit/rough_env_cfg.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,8 @@ def __post_init__(self):
232232
self.events.add_base_mass.params["asset_cfg"].body_names = "torso_base"
233233
self.events.base_external_force_torque.params["asset_cfg"].body_names = "torso_base"
234234
self.events.base_com.default.params["asset_cfg"].body_names = "torso_base"
235+
# Digit has precise initial pose — don't scale joint defaults randomly on reset
236+
self.events.reset_robot_joints.params["position_range"] = (1.0, 1.0)
235237

236238
# Override actuator to target only actuated joints. Digit has ball joints (rod constraints)
237239
# that MuJoCo represents with 4 DoFs instead of 3, inflating joint_pos to 74 columns while

source/isaaclab_tasks/isaaclab_tasks/manager_based/locomotion/velocity/config/g1/rough_env_cfg.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,8 @@ def __post_init__(self):
119119
self.events.add_base_mass = None
120120
self.events.base_com = None
121121
self.events.base_external_force_torque.params["asset_cfg"].body_names = "torso_link"
122+
# G1 has precise initial pose — don't scale joint defaults randomly on reset
123+
self.events.reset_robot_joints.params["position_range"] = (1.0, 1.0)
122124

123125
# Rewards
124126
self.rewards.lin_vel_z_l2.weight = 0.0

source/isaaclab_tasks/isaaclab_tasks/manager_based/locomotion/velocity/config/h1/rough_env_cfg.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,8 @@ def __post_init__(self):
8585

8686
# H1 uses "torso_link" as base body — disable mass randomization for bipeds
8787
self.events.add_base_mass = None
88+
# H1 has precise initial pose — don't scale joint defaults randomly on reset
89+
self.events.reset_robot_joints.params["position_range"] = (1.0, 1.0)
8890
self.events.base_com = None
8991
self.events.base_external_force_torque.params["asset_cfg"].body_names = ".*torso_link"
9092

0 commit comments

Comments
 (0)