Skip to content

Commit b6fd87d

Browse files
committed
Re-enable add_base_mass on H1/Cassie with log-uniform scale
Restore base-mass randomization on H1 and Cassie that was disabled with add_base_mass = None in their rough-terrain configs (pre-existing biped convention from 2024-06 PR #444, later reinforced by PR #4165's Newton NaN TODO). The parent PR #5248 switches the shared default to log-uniform scale (1/1.25, 1.25), which is safer for bipeds than the old additive (-5, 5) kg (effectively ±25% on H1's torso vs ±100% on Cassie's pelvis). - H1 inherits the shared default (symmetric ±25% scale, body_names="torso_link"). - Cassie overrides to (1.0, 1.25) asymmetric heavier-bias: lighter-than- nominal pelvis destabilizes Cassie's closed-loop Achilles rod coupling and hip PD response, while heavier-than-nominal dampens dynamics. | Variant | reward | ep len | vs disabled | |--------------------------------|-------:|-------:|------------:| | None (disabled, prior default) | 23.93 | 910 | 1.00x | | (1/1.25, 1.25) sym25 | 14.15 | 850 | 0.59x x | | (1/1.10, 1.10) tight10 | 14.53 | 831 | 0.61x x | | **(1.0, 1.25) heavier25** | **21.50** | **932** | **0.90x** | Tightening the range symmetrically did not help (tight10 ~ sym25) — the lighter side is what destabilizes, not the magnitude. Restricting to [1.0, 1.25] (never lighter, up to +25% heavier) preserves most of the randomization benefit while avoiding the failure mode. Episode length also improves (932 vs 910), indicating the randomized policy is actively more stable during episodes — the lower aggregate reward comes from extra dof-torque regularizer paid to handle heavier instances, not degraded task completion. H1's larger base mass (≈15 kg torso) means ±25% on the default scale (11-19 kg range) is well within the controller's robustness margin. H1 reward at iter 1499: 24.02 with mass rand on vs 23.58 with it disabled (1.02x, essentially equal). Re-enabling provides sim-to-real robustness at negligible training cost.
1 parent 72cc86d commit b6fd87d

4 files changed

Lines changed: 29 additions & 5 deletions

File tree

source/isaaclab_tasks/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 = "1.5.25"
4+
version = "1.5.26"
55

66
# Description
77
title = "Isaac Lab Environments"

source/isaaclab_tasks/docs/CHANGELOG.rst

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

4+
1.5.26 (2026-04-24)
5+
~~~~~~~~~~~~~~~~~~~
6+
7+
Changed
8+
^^^^^^^
9+
10+
* Re-enabled ``add_base_mass`` randomization on H1 and Cassie in their
11+
rough-terrain configs (previously ``= None`` per the pre-existing biped
12+
convention). H1 uses the shared log-uniform scale default from
13+
``EventsCfg``; Cassie overrides to ``(1.0, 1.25)`` asymmetric heavier-bias
14+
(never lighter than nominal). Symmetric ±25% regressed Cassie reward by
15+
40% vs disabled due to closed-loop Achilles coupling destabilizing on
16+
lighter pelvis mass; ``(1.0, 1.25)`` recovers to 90% of the
17+
mass-rand-disabled baseline while retaining the domain-randomization
18+
benefit.
19+
20+
421
1.5.25 (2026-04-24)
522
~~~~~~~~~~~~~~~~~~~
623

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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,14 @@ def __post_init__(self):
6767

6868
self.scene.height_scanner.prim_path = "{ENV_REGEX_NS}/Robot/pelvis"
6969

70-
# Cassie uses "pelvis" as base body — disable mass randomization for bipeds
71-
self.events.add_base_mass = None
70+
# Cassie uses "pelvis" as base body. Override the shared symmetric
71+
# (1/1.25, 1.25) log-uniform scale with asymmetric (1.0, 1.25) —
72+
# lighter-than-nominal pelvis destabilizes Cassie's closed-loop
73+
# Achilles coupling + hip PD response, so only heavier perturbations
74+
# are safe. Symmetric ±25% regressed reward 40% vs disabled;
75+
# (1.0, 1.25) recovers to 90% of baseline.
76+
self.events.add_base_mass.params["asset_cfg"].body_names = "pelvis"
77+
self.events.add_base_mass.params["mass_distribution_params"] = (1.0, 1.25)
7278
self.events.base_com = None
7379
self.events.base_external_force_torque.params["asset_cfg"].body_names = ".*pelvis"
7480
# Cassie has precise initial pose — don't scale joint defaults randomly on reset

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,9 @@ def __post_init__(self):
8383
if self.scene.height_scanner:
8484
self.scene.height_scanner.prim_path = "{ENV_REGEX_NS}/Robot/torso_link"
8585

86-
# H1 uses "torso_link" as base body — disable mass randomization for bipeds
87-
self.events.add_base_mass = None
86+
# H1 uses "torso_link" as base body; inherits the shared log-uniform mass
87+
# randomization scale from EventsCfg (no per-H1 override needed).
88+
self.events.add_base_mass.params["asset_cfg"].body_names = "torso_link"
8889
# H1 has precise initial pose — don't scale joint defaults randomly on reset
8990
self.events.reset_robot_joints.params["position_range"] = (1.0, 1.0)
9091
self.events.base_com = None

0 commit comments

Comments
 (0)