Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Changed
^^^^^^^

* **Breaking:** Changed the Ant, Humanoid, and Velocity task families to use
Newton MJWarp by default. Pass an explicit physics preset to retain Isaac Sim PhysX.
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ class AntPhysicsCfg(PresetCfg):
isaacsim_physx: PhysxCfg = PhysxCfg(bounce_threshold_velocity=0.2)
ovphysx: OvPhysxCfg = OvPhysxCfg()
physx: PhysxAutoCfg = PhysxAutoCfg(isaacsim_physx=isaacsim_physx, ovphysx=ovphysx)
default = isaacsim_physx
newton_mjwarp: NewtonCfg = NewtonCfg(
solver_cfg=MJWarpSolverCfg(
njmax=45,
Expand All @@ -50,6 +49,7 @@ class AntPhysicsCfg(PresetCfg):
debug_mode=False,
use_cuda_graph=True,
)
default = newton_mjwarp


@configclass
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@ class AntPhysicsCfg(PresetCfg):
isaacsim_physx: PhysxCfg = PhysxCfg(bounce_threshold_velocity=0.2)
ovphysx: OvPhysxCfg = OvPhysxCfg()
physx: PhysxAutoCfg = PhysxAutoCfg(isaacsim_physx=isaacsim_physx, ovphysx=ovphysx)
default: PhysxCfg = isaacsim_physx
newton_mjwarp: NewtonCfg = NewtonCfg(
solver_cfg=MJWarpSolverCfg(
njmax=45,
Expand All @@ -54,6 +53,7 @@ class AntPhysicsCfg(PresetCfg):
debug_mode=False,
use_cuda_graph=True,
)
default: NewtonCfg = newton_mjwarp


@configclass
Expand Down Expand Up @@ -143,8 +143,8 @@ def __post_init__(self):
class AntObservationsCfg(PresetCfg):
physx: ObservationsCfg = ObservationsCfg()
isaacsim_physx: ObservationsCfg = physx
default: ObservationsCfg = isaacsim_physx
newton_mjwarp: ObservationsCfg = ObservationsCfg()
default: ObservationsCfg = newton_mjwarp


@configclass
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ class HumanoidPhysicsCfg(PresetCfg):
isaacsim_physx: PhysxCfg = PhysxCfg(bounce_threshold_velocity=0.2)
ovphysx: OvPhysxCfg = OvPhysxCfg()
physx: PhysxAutoCfg = PhysxAutoCfg(isaacsim_physx=isaacsim_physx, ovphysx=ovphysx)
default = isaacsim_physx
newton_mjwarp: NewtonCfg = NewtonCfg(
solver_cfg=MJWarpSolverCfg(
njmax=80,
Expand All @@ -42,6 +41,7 @@ class HumanoidPhysicsCfg(PresetCfg):
num_substeps=2,
debug_mode=False,
)
default = newton_mjwarp


@configclass
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@ class HumanoidPhysicsCfg(PresetCfg):
isaacsim_physx: PhysxCfg = PhysxCfg(bounce_threshold_velocity=0.2)
ovphysx: OvPhysxCfg = OvPhysxCfg()
physx: PhysxAutoCfg = PhysxAutoCfg(isaacsim_physx=isaacsim_physx, ovphysx=ovphysx)
default: PhysxCfg = isaacsim_physx
newton_mjwarp: NewtonCfg = NewtonCfg(
solver_cfg=MJWarpSolverCfg(
njmax=80,
Expand All @@ -62,6 +61,7 @@ class HumanoidPhysicsCfg(PresetCfg):
num_substeps=2,
debug_mode=False,
)
default: NewtonCfg = newton_mjwarp


##
Expand Down Expand Up @@ -147,8 +147,8 @@ def __post_init__(self):
class HumanoidObservationsCfg(PresetCfg):
physx: ObservationsCfg = ObservationsCfg()
isaacsim_physx: ObservationsCfg = physx
default: ObservationsCfg = isaacsim_physx
newton_mjwarp: ObservationsCfg = ObservationsCfg()
default: ObservationsCfg = newton_mjwarp


@configclass
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ class PhysicsCfg(PresetCfg):
debug_mode=False,
)
newton_kamino = NewtonCfg(solver_cfg=KaminoPADMMSolverCfg(max_contacts_per_world=64))
default = isaacsim_physx
default = newton_mjwarp


@configclass
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ class PhysicsCfg(PresetCfg):
debug_mode=False,
)
newton_kamino = NewtonCfg(solver_cfg=KaminoPADMMSolverCfg(max_contacts_per_world=64))
default = isaacsim_physx
default = newton_mjwarp


@configclass
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class PhysicsCfg(PresetCfg):
debug_mode=False,
)
newton_kamino = NewtonCfg(solver_cfg=KaminoPADMMSolverCfg(max_contacts_per_world=64))
default = isaacsim_physx
default = newton_mjwarp


@configclass
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ class PhysicsCfg(PresetCfg):
debug_mode=False,
)
newton_kamino = NewtonCfg(solver_cfg=KaminoPADMMSolverCfg(max_contacts_per_world=64))
default = isaacsim_physx
default = newton_mjwarp


@configclass
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ class PhysicsCfg(PresetCfg):
debug_mode=False,
)
newton_kamino = NewtonCfg(solver_cfg=KaminoPADMMSolverCfg(max_contacts_per_world=64))
default = isaacsim_physx
default = newton_mjwarp


@configclass
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ class RoughPhysicsCfg(PresetCfg):
debug_mode=False,
default_shape_cfg=NewtonShapeCfg(margin=0.0, ke=160000.0, kd=1100.0),
)
default = isaacsim_physx
default = newton_mjwarp


##
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@ def test_manipulation_env_determinism(task_name, device):
)
@pytest.mark.parametrize("device", ["cuda", "cpu"])
def test_locomotion_env_determinism(task_name, device):
"""Check deterministic environment creation for locomotion."""
_test_environment_determinism(task_name, device)
"""Check deterministic Isaac Sim PhysX environment creation for locomotion."""
_test_environment_determinism(task_name, device, physics_preset_name="isaacsim_physx")


@pytest.mark.parametrize(
Expand Down
Empty file.
6 changes: 6 additions & 0 deletions source/isaaclab_visualizers/test/visualizer_golden_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,9 @@
# AnymalD: golden captured warm, first attempt runs cold; observed up to 9.61%.
"anymal_d-kit-tiled": 12.0,
"anymal_d-kit-viewport": 4.5,
# Newton GL tiled output differs by 0.64% between the L40S CI runner and the golden.
# Keep this narrow 1.0% tolerance paired with an SSIM guard for scene regressions.
"anymal_d-newton-tiled": 1.0,
# RTX PRO 6000 Blackwell differs by up to 6.5% while preserving the expected pose.
"shadow_hand-kit-tiled": 7.0,
"shadow_hand-kit-viewport": 2.0,
Expand All @@ -78,6 +81,9 @@
# 0.910 lets attempt 1 pass with a large gap above wrong-pose regressions (~0.69).
"anymal_d-kit-tiled": 0.910,
"anymal_d-kit-viewport": 0.960,
# The L40S comparison reaches SSIM 0.9883; retain a structural threshold well above
# known pose regressions while accepting this cross-GPU rasterization variation.
"anymal_d-newton-tiled": 0.980,
# Cross-GPU RTX variation; observed SSIM 0.941 on RTX PRO 6000 Blackwell vs L40S goldens.
# Wrong-pose regressions drop SSIM below 0.90.
"shadow_hand-kit-tiled": 0.935,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1606,8 +1606,7 @@ def _make_anymal_d_env(visualizer_kind: str | tuple[str, ...], backend_kind: str
from isaaclab.envs import ManagerBasedRLEnv

env_cfg = copy.deepcopy(AnymalDFlatEnvCfg())
preset_key = "newton_mjwarp" if backend_kind == "newton" else "default"
env_cfg.sim.physics = getattr(env_cfg.sim.physics, preset_key)
env_cfg = _apply_env_cfg_preset(env_cfg, "newton_mjwarp" if backend_kind == "newton" else "physx")
env_cfg.scene.num_envs = (
_ANYMAL_D_TILED_CAMERA_INTEGRATION_NUM_ENVS if tiled_camera else _ANYMAL_D_INTEGRATION_NUM_ENVS
)
Expand Down
Loading