From c4c2f3dc7e6bec0ba9a7c3d9cf5d9a14bc9487fc Mon Sep 17 00:00:00 2001 From: jichuanh Date: Wed, 6 May 2026 21:37:37 +0000 Subject: [PATCH 1/6] Bump Newton pin to v1.2.0rc2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Newton 1.2.0rc2 release pulls in two IsaacLab-relevant fixes (newton-physics/newton#2678, newton-physics/newton#2720 for SolverKamino reset under world_mask), the upstream tendon-scoping fix from #2659 ("Scope USD custom-frequency parsing"), and a VRAM-leak fix on example reset (#2710). Pin bumps: * source/isaaclab/setup.py: warp-lang==1.12.0 → >=1.13.0, mujoco==3.6.0 → ==3.8.0, mujoco-warp==3.6.0 → ==3.8.0.1. * source/isaaclab_newton/setup.py: same mujoco / mujoco-warp bumps; Newton pin → v1.2.0rc2. * source/isaaclab_visualizers/setup.py: 3 × Newton pin → v1.2.0rc2. * tools/wheel_builder/res/python_packages.toml: same set of pins, mirrored across the wheel-bundling manifest. Code adapts: * source/isaaclab_newton/isaaclab_newton/physics/newton_manager.py and source/isaaclab_ov/isaaclab_ov/renderers/ovrtx_renderer_kernels.py: wp.math.transform_to_matrix → wp.transform_to_matrix. The wp.math namespace was removed in warp-lang 1.13. Smoke verified: Shadow-Hand-Over MAPPO (4 envs, 1 iter) runs clean on the bumped env — simulation init through CUDA graph capture through one training step + checkpoint save, no errors. --- .../jichuanh-newton-1.2.0rc2-bump.minor.rst | 21 +++++++++++++++++++ source/isaaclab/setup.py | 6 +++--- .../jichuanh-newton-1.2.0rc2-bump.minor.rst | 21 +++++++++++++++++++ .../isaaclab_newton/physics/newton_manager.py | 2 +- source/isaaclab_newton/setup.py | 6 +++--- .../jichuanh-newton-1.2.0rc2-bump.rst | 21 +++++++++++++++++++ .../renderers/ovrtx_renderer_kernels.py | 2 +- source/isaaclab_visualizers/setup.py | 6 +++--- tools/wheel_builder/res/python_packages.toml | 10 ++++----- 9 files changed, 79 insertions(+), 16 deletions(-) create mode 100644 source/isaaclab/changelog.d/jichuanh-newton-1.2.0rc2-bump.minor.rst create mode 100644 source/isaaclab_newton/changelog.d/jichuanh-newton-1.2.0rc2-bump.minor.rst create mode 100644 source/isaaclab_ov/changelog.d/jichuanh-newton-1.2.0rc2-bump.rst diff --git a/source/isaaclab/changelog.d/jichuanh-newton-1.2.0rc2-bump.minor.rst b/source/isaaclab/changelog.d/jichuanh-newton-1.2.0rc2-bump.minor.rst new file mode 100644 index 000000000000..afcb64c533b1 --- /dev/null +++ b/source/isaaclab/changelog.d/jichuanh-newton-1.2.0rc2-bump.minor.rst @@ -0,0 +1,21 @@ +Changed +^^^^^^^ + +* Bumped Newton pin to ``v1.2.0rc2``. Pulls in IsaacLab-relevant fixes from + `newton-physics/newton#2678 `_ + and `newton-physics/newton#2720 + `_ (``SolverKamino`` + reset under ``world_mask``), the upstream tendon-scoping fix from + `newton-physics/newton#2659 + `_ ("Scope USD + custom-frequency parsing"), and a VRAM-leak fix on example reset + (`newton-physics/newton#2710 + `_). +* Newton ``v1.2.0rc2`` requires ``warp-lang>=1.13.0``, ``mujoco==3.8.0``, + and ``mujoco-warp==3.8.0.1``. Pins updated in :mod:`isaaclab`, + :mod:`isaaclab_newton`, :mod:`isaaclab_visualizers`, and + ``tools/wheel_builder/res/python_packages.toml``. +* Updated ``wp.math.transform_to_matrix`` to ``wp.transform_to_matrix`` in + :mod:`~isaaclab_newton.physics.newton_manager` and + :mod:`~isaaclab_ov.renderers.ovrtx_renderer_kernels` to match the + ``warp-lang`` 1.13 API (the ``wp.math`` namespace was removed). diff --git a/source/isaaclab/setup.py b/source/isaaclab/setup.py index 67c18c4c62d1..5608ae5bff06 100644 --- a/source/isaaclab/setup.py +++ b/source/isaaclab/setup.py @@ -30,12 +30,12 @@ # procedural-generation "trimesh", "pyglet>=2.1.6,<3", - "mujoco==3.6.0", - "mujoco-warp==3.6.0", + "mujoco==3.8.0", + "mujoco-warp==3.8.0.1", # image processing "transformers==4.57.6", "einops", # needed for transformers, doesn't always auto-install - "warp-lang==1.12.0", + "warp-lang>=1.13.0", "matplotlib>=3.10.3", # minimum version for Python 3.12 support # make sure this is consistent with isaac sim version "pillow==12.1.1", diff --git a/source/isaaclab_newton/changelog.d/jichuanh-newton-1.2.0rc2-bump.minor.rst b/source/isaaclab_newton/changelog.d/jichuanh-newton-1.2.0rc2-bump.minor.rst new file mode 100644 index 000000000000..afcb64c533b1 --- /dev/null +++ b/source/isaaclab_newton/changelog.d/jichuanh-newton-1.2.0rc2-bump.minor.rst @@ -0,0 +1,21 @@ +Changed +^^^^^^^ + +* Bumped Newton pin to ``v1.2.0rc2``. Pulls in IsaacLab-relevant fixes from + `newton-physics/newton#2678 `_ + and `newton-physics/newton#2720 + `_ (``SolverKamino`` + reset under ``world_mask``), the upstream tendon-scoping fix from + `newton-physics/newton#2659 + `_ ("Scope USD + custom-frequency parsing"), and a VRAM-leak fix on example reset + (`newton-physics/newton#2710 + `_). +* Newton ``v1.2.0rc2`` requires ``warp-lang>=1.13.0``, ``mujoco==3.8.0``, + and ``mujoco-warp==3.8.0.1``. Pins updated in :mod:`isaaclab`, + :mod:`isaaclab_newton`, :mod:`isaaclab_visualizers`, and + ``tools/wheel_builder/res/python_packages.toml``. +* Updated ``wp.math.transform_to_matrix`` to ``wp.transform_to_matrix`` in + :mod:`~isaaclab_newton.physics.newton_manager` and + :mod:`~isaaclab_ov.renderers.ovrtx_renderer_kernels` to match the + ``warp-lang`` 1.13 API (the ``wp.math`` namespace was removed). diff --git a/source/isaaclab_newton/isaaclab_newton/physics/newton_manager.py b/source/isaaclab_newton/isaaclab_newton/physics/newton_manager.py index 2bb2f1f37397..dbc85e97c270 100644 --- a/source/isaaclab_newton/isaaclab_newton/physics/newton_manager.py +++ b/source/isaaclab_newton/isaaclab_newton/physics/newton_manager.py @@ -69,7 +69,7 @@ def _set_fabric_transforms( i = int(wp.tid()) idx = int(newton_indices[i]) transform = newton_body_q[idx] - fabric_transforms[i] = wp.transpose(wp.mat44d(wp.math.transform_to_matrix(transform))) + fabric_transforms[i] = wp.transpose(wp.mat44d(wp.transform_to_matrix(transform))) @wp.kernel(enable_backward=False) diff --git a/source/isaaclab_newton/setup.py b/source/isaaclab_newton/setup.py index 2e0b87f17543..4621e77f879b 100644 --- a/source/isaaclab_newton/setup.py +++ b/source/isaaclab_newton/setup.py @@ -38,10 +38,10 @@ def run(self): EXTRAS_REQUIRE = { "all": [ "prettytable==3.3.0", - "mujoco==3.6.0", - "mujoco-warp==3.6.0", + "mujoco==3.8.0", + "mujoco-warp==3.8.0.1", "PyOpenGL-accelerate==3.1.10", - "newton @ git+https://github.com/newton-physics/newton.git@a27277ed49d6f307b8a1e4c394be7e1d14965a62", + "newton @ git+https://github.com/newton-physics/newton.git@v1.2.0rc2", ], } diff --git a/source/isaaclab_ov/changelog.d/jichuanh-newton-1.2.0rc2-bump.rst b/source/isaaclab_ov/changelog.d/jichuanh-newton-1.2.0rc2-bump.rst new file mode 100644 index 000000000000..afcb64c533b1 --- /dev/null +++ b/source/isaaclab_ov/changelog.d/jichuanh-newton-1.2.0rc2-bump.rst @@ -0,0 +1,21 @@ +Changed +^^^^^^^ + +* Bumped Newton pin to ``v1.2.0rc2``. Pulls in IsaacLab-relevant fixes from + `newton-physics/newton#2678 `_ + and `newton-physics/newton#2720 + `_ (``SolverKamino`` + reset under ``world_mask``), the upstream tendon-scoping fix from + `newton-physics/newton#2659 + `_ ("Scope USD + custom-frequency parsing"), and a VRAM-leak fix on example reset + (`newton-physics/newton#2710 + `_). +* Newton ``v1.2.0rc2`` requires ``warp-lang>=1.13.0``, ``mujoco==3.8.0``, + and ``mujoco-warp==3.8.0.1``. Pins updated in :mod:`isaaclab`, + :mod:`isaaclab_newton`, :mod:`isaaclab_visualizers`, and + ``tools/wheel_builder/res/python_packages.toml``. +* Updated ``wp.math.transform_to_matrix`` to ``wp.transform_to_matrix`` in + :mod:`~isaaclab_newton.physics.newton_manager` and + :mod:`~isaaclab_ov.renderers.ovrtx_renderer_kernels` to match the + ``warp-lang`` 1.13 API (the ``wp.math`` namespace was removed). diff --git a/source/isaaclab_ov/isaaclab_ov/renderers/ovrtx_renderer_kernels.py b/source/isaaclab_ov/isaaclab_ov/renderers/ovrtx_renderer_kernels.py index c287f1257632..0c1626916414 100644 --- a/source/isaaclab_ov/isaaclab_ov/renderers/ovrtx_renderer_kernels.py +++ b/source/isaaclab_ov/isaaclab_ov/renderers/ovrtx_renderer_kernels.py @@ -327,4 +327,4 @@ def sync_newton_transforms_kernel( i = wp.tid() body_idx = newton_body_indices[i] transform = newton_body_q[body_idx] - ovrtx_transforms[i] = wp.transpose(wp.mat44d(wp.math.transform_to_matrix(transform))) + ovrtx_transforms[i] = wp.transpose(wp.mat44d(wp.transform_to_matrix(transform))) diff --git a/source/isaaclab_visualizers/setup.py b/source/isaaclab_visualizers/setup.py index fc120619787b..9ad52a712360 100644 --- a/source/isaaclab_visualizers/setup.py +++ b/source/isaaclab_visualizers/setup.py @@ -17,16 +17,16 @@ "kit": [], "newton": [ "warp-lang", - "newton @ git+https://github.com/newton-physics/newton.git@a27277ed49d6f307b8a1e4c394be7e1d14965a62", + "newton @ git+https://github.com/newton-physics/newton.git@v1.2.0rc2", "PyOpenGL-accelerate", "imgui-bundle>=1.92.5", ], "rerun": [ - "newton @ git+https://github.com/newton-physics/newton.git@a27277ed49d6f307b8a1e4c394be7e1d14965a62", + "newton @ git+https://github.com/newton-physics/newton.git@v1.2.0rc2", "rerun-sdk>=0.29.0", ], "viser": [ - "newton @ git+https://github.com/newton-physics/newton.git@a27277ed49d6f307b8a1e4c394be7e1d14965a62", + "newton @ git+https://github.com/newton-physics/newton.git@v1.2.0rc2", "viser>=1.0.16", ], } diff --git a/tools/wheel_builder/res/python_packages.toml b/tools/wheel_builder/res/python_packages.toml index 1676fdc8f905..00d2adb30107 100644 --- a/tools/wheel_builder/res/python_packages.toml +++ b/tools/wheel_builder/res/python_packages.toml @@ -22,7 +22,7 @@ pyproject.dependencies.all = [ # image processing "transformers==4.57.6", "einops", # needed for transformers, doesn't always auto-install - "warp-lang==1.12.0", + "warp-lang>=1.13.0", "matplotlib>=3.10.3", # make sure this is consistent with isaac sim version "pillow==12.1.1", @@ -82,10 +82,10 @@ pyproject.optional-dependencies.all = [ # https://github.com/isaac-sim/IsaacLab/blob/main/source/isaaclab_newton/setup.py # ================================================================================ { "newton" = [ - "warp-lang==1.12.0", - "mujoco==3.6.0", - "mujoco-warp==3.6.0", - "newton @ git+https://github.com/newton-physics/newton.git@a27277ed49d6f307b8a1e4c394be7e1d14965a62", + "warp-lang>=1.13.0", + "mujoco==3.8.0", + "mujoco-warp==3.8.0.1", + "newton @ git+https://github.com/newton-physics/newton.git@v1.2.0rc2", "PyOpenGL-accelerate==3.1.10" ] }, # ================================================================================ From c03dc528420c94d242c87c20a380121f6d7e7931 Mon Sep 17 00:00:00 2001 From: jichuanh Date: Wed, 6 May 2026 21:49:51 +0000 Subject: [PATCH 2/6] Pin warp-lang to ==1.13.0 Tighten the warp-lang requirement from >=1.13.0 to ==1.13.0 across isaaclab/setup.py, tools/wheel_builder/res/python_packages.toml, and the three changelog fragments. The Newton 1.2.0rc2 toolchain has been validated against this exact warp-lang version; later warp-lang releases have not been smoke-tested here. --- .../changelog.d/jichuanh-newton-1.2.0rc2-bump.minor.rst | 2 +- source/isaaclab/setup.py | 2 +- .../changelog.d/jichuanh-newton-1.2.0rc2-bump.minor.rst | 2 +- .../isaaclab_ov/changelog.d/jichuanh-newton-1.2.0rc2-bump.rst | 2 +- tools/wheel_builder/res/python_packages.toml | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/source/isaaclab/changelog.d/jichuanh-newton-1.2.0rc2-bump.minor.rst b/source/isaaclab/changelog.d/jichuanh-newton-1.2.0rc2-bump.minor.rst index afcb64c533b1..f234c58054f5 100644 --- a/source/isaaclab/changelog.d/jichuanh-newton-1.2.0rc2-bump.minor.rst +++ b/source/isaaclab/changelog.d/jichuanh-newton-1.2.0rc2-bump.minor.rst @@ -11,7 +11,7 @@ Changed custom-frequency parsing"), and a VRAM-leak fix on example reset (`newton-physics/newton#2710 `_). -* Newton ``v1.2.0rc2`` requires ``warp-lang>=1.13.0``, ``mujoco==3.8.0``, +* Newton ``v1.2.0rc2`` requires ``warp-lang==1.13.0``, ``mujoco==3.8.0``, and ``mujoco-warp==3.8.0.1``. Pins updated in :mod:`isaaclab`, :mod:`isaaclab_newton`, :mod:`isaaclab_visualizers`, and ``tools/wheel_builder/res/python_packages.toml``. diff --git a/source/isaaclab/setup.py b/source/isaaclab/setup.py index 5608ae5bff06..4f54032f6d14 100644 --- a/source/isaaclab/setup.py +++ b/source/isaaclab/setup.py @@ -35,7 +35,7 @@ # image processing "transformers==4.57.6", "einops", # needed for transformers, doesn't always auto-install - "warp-lang>=1.13.0", + "warp-lang==1.13.0", "matplotlib>=3.10.3", # minimum version for Python 3.12 support # make sure this is consistent with isaac sim version "pillow==12.1.1", diff --git a/source/isaaclab_newton/changelog.d/jichuanh-newton-1.2.0rc2-bump.minor.rst b/source/isaaclab_newton/changelog.d/jichuanh-newton-1.2.0rc2-bump.minor.rst index afcb64c533b1..f234c58054f5 100644 --- a/source/isaaclab_newton/changelog.d/jichuanh-newton-1.2.0rc2-bump.minor.rst +++ b/source/isaaclab_newton/changelog.d/jichuanh-newton-1.2.0rc2-bump.minor.rst @@ -11,7 +11,7 @@ Changed custom-frequency parsing"), and a VRAM-leak fix on example reset (`newton-physics/newton#2710 `_). -* Newton ``v1.2.0rc2`` requires ``warp-lang>=1.13.0``, ``mujoco==3.8.0``, +* Newton ``v1.2.0rc2`` requires ``warp-lang==1.13.0``, ``mujoco==3.8.0``, and ``mujoco-warp==3.8.0.1``. Pins updated in :mod:`isaaclab`, :mod:`isaaclab_newton`, :mod:`isaaclab_visualizers`, and ``tools/wheel_builder/res/python_packages.toml``. diff --git a/source/isaaclab_ov/changelog.d/jichuanh-newton-1.2.0rc2-bump.rst b/source/isaaclab_ov/changelog.d/jichuanh-newton-1.2.0rc2-bump.rst index afcb64c533b1..f234c58054f5 100644 --- a/source/isaaclab_ov/changelog.d/jichuanh-newton-1.2.0rc2-bump.rst +++ b/source/isaaclab_ov/changelog.d/jichuanh-newton-1.2.0rc2-bump.rst @@ -11,7 +11,7 @@ Changed custom-frequency parsing"), and a VRAM-leak fix on example reset (`newton-physics/newton#2710 `_). -* Newton ``v1.2.0rc2`` requires ``warp-lang>=1.13.0``, ``mujoco==3.8.0``, +* Newton ``v1.2.0rc2`` requires ``warp-lang==1.13.0``, ``mujoco==3.8.0``, and ``mujoco-warp==3.8.0.1``. Pins updated in :mod:`isaaclab`, :mod:`isaaclab_newton`, :mod:`isaaclab_visualizers`, and ``tools/wheel_builder/res/python_packages.toml``. diff --git a/tools/wheel_builder/res/python_packages.toml b/tools/wheel_builder/res/python_packages.toml index 00d2adb30107..285d1cddbc66 100644 --- a/tools/wheel_builder/res/python_packages.toml +++ b/tools/wheel_builder/res/python_packages.toml @@ -22,7 +22,7 @@ pyproject.dependencies.all = [ # image processing "transformers==4.57.6", "einops", # needed for transformers, doesn't always auto-install - "warp-lang>=1.13.0", + "warp-lang==1.13.0", "matplotlib>=3.10.3", # make sure this is consistent with isaac sim version "pillow==12.1.1", @@ -82,7 +82,7 @@ pyproject.optional-dependencies.all = [ # https://github.com/isaac-sim/IsaacLab/blob/main/source/isaaclab_newton/setup.py # ================================================================================ { "newton" = [ - "warp-lang>=1.13.0", + "warp-lang==1.13.0", "mujoco==3.8.0", "mujoco-warp==3.8.0.1", "newton @ git+https://github.com/newton-physics/newton.git@v1.2.0rc2", From 49872a5a453094053ba43e2209f0931e8155351b Mon Sep 17 00:00:00 2001 From: jichuanh Date: Wed, 6 May 2026 23:13:23 +0000 Subject: [PATCH 3/6] Bump isaaclab_physx [newton] extra to v1.2.0rc2 The optional [newton] extra in isaaclab_physx pulls Newton in for the visualizer-side scene representation when the user runs PhysX with OV/Rerun/Viser visualizers. Keep its pin synchronized with the Newton pin in isaaclab_newton and isaaclab_visualizers; the previous commit- SHA pin had drifted off the version used elsewhere in the repo. Tighten the changelog wording on the existing fragments to spell out which pins live where: warp-lang/mujoco/mujoco-warp in isaaclab + the wheel-builder TOML; the Newton pin in isaaclab_newton, isaaclab_visualizers, isaaclab_physx, and the wheel-builder TOML. --- .../changelog.d/jichuanh-newton-1.2.0rc2-bump.minor.rst | 8 +++++--- .../changelog.d/jichuanh-newton-1.2.0rc2-bump.minor.rst | 8 +++++--- .../changelog.d/jichuanh-newton-1.2.0rc2-bump.rst | 8 +++++--- .../changelog.d/jichuanh-newton-1.2.0rc2-bump.rst | 8 ++++++++ source/isaaclab_physx/setup.py | 2 +- 5 files changed, 24 insertions(+), 10 deletions(-) create mode 100644 source/isaaclab_physx/changelog.d/jichuanh-newton-1.2.0rc2-bump.rst diff --git a/source/isaaclab/changelog.d/jichuanh-newton-1.2.0rc2-bump.minor.rst b/source/isaaclab/changelog.d/jichuanh-newton-1.2.0rc2-bump.minor.rst index f234c58054f5..3609cf6cd787 100644 --- a/source/isaaclab/changelog.d/jichuanh-newton-1.2.0rc2-bump.minor.rst +++ b/source/isaaclab/changelog.d/jichuanh-newton-1.2.0rc2-bump.minor.rst @@ -12,9 +12,11 @@ Changed (`newton-physics/newton#2710 `_). * Newton ``v1.2.0rc2`` requires ``warp-lang==1.13.0``, ``mujoco==3.8.0``, - and ``mujoco-warp==3.8.0.1``. Pins updated in :mod:`isaaclab`, - :mod:`isaaclab_newton`, :mod:`isaaclab_visualizers`, and - ``tools/wheel_builder/res/python_packages.toml``. + and ``mujoco-warp==3.8.0.1``. ``warp-lang``/``mujoco``/``mujoco-warp`` + pins live in :mod:`isaaclab` and ``tools/wheel_builder/res/python_packages.toml``; + the Newton pin is mirrored across :mod:`isaaclab_newton`, + :mod:`isaaclab_visualizers` (3×), :mod:`isaaclab_physx` (``[newton]`` + extra), and the wheel-builder TOML. * Updated ``wp.math.transform_to_matrix`` to ``wp.transform_to_matrix`` in :mod:`~isaaclab_newton.physics.newton_manager` and :mod:`~isaaclab_ov.renderers.ovrtx_renderer_kernels` to match the diff --git a/source/isaaclab_newton/changelog.d/jichuanh-newton-1.2.0rc2-bump.minor.rst b/source/isaaclab_newton/changelog.d/jichuanh-newton-1.2.0rc2-bump.minor.rst index f234c58054f5..3609cf6cd787 100644 --- a/source/isaaclab_newton/changelog.d/jichuanh-newton-1.2.0rc2-bump.minor.rst +++ b/source/isaaclab_newton/changelog.d/jichuanh-newton-1.2.0rc2-bump.minor.rst @@ -12,9 +12,11 @@ Changed (`newton-physics/newton#2710 `_). * Newton ``v1.2.0rc2`` requires ``warp-lang==1.13.0``, ``mujoco==3.8.0``, - and ``mujoco-warp==3.8.0.1``. Pins updated in :mod:`isaaclab`, - :mod:`isaaclab_newton`, :mod:`isaaclab_visualizers`, and - ``tools/wheel_builder/res/python_packages.toml``. + and ``mujoco-warp==3.8.0.1``. ``warp-lang``/``mujoco``/``mujoco-warp`` + pins live in :mod:`isaaclab` and ``tools/wheel_builder/res/python_packages.toml``; + the Newton pin is mirrored across :mod:`isaaclab_newton`, + :mod:`isaaclab_visualizers` (3×), :mod:`isaaclab_physx` (``[newton]`` + extra), and the wheel-builder TOML. * Updated ``wp.math.transform_to_matrix`` to ``wp.transform_to_matrix`` in :mod:`~isaaclab_newton.physics.newton_manager` and :mod:`~isaaclab_ov.renderers.ovrtx_renderer_kernels` to match the diff --git a/source/isaaclab_ov/changelog.d/jichuanh-newton-1.2.0rc2-bump.rst b/source/isaaclab_ov/changelog.d/jichuanh-newton-1.2.0rc2-bump.rst index f234c58054f5..3609cf6cd787 100644 --- a/source/isaaclab_ov/changelog.d/jichuanh-newton-1.2.0rc2-bump.rst +++ b/source/isaaclab_ov/changelog.d/jichuanh-newton-1.2.0rc2-bump.rst @@ -12,9 +12,11 @@ Changed (`newton-physics/newton#2710 `_). * Newton ``v1.2.0rc2`` requires ``warp-lang==1.13.0``, ``mujoco==3.8.0``, - and ``mujoco-warp==3.8.0.1``. Pins updated in :mod:`isaaclab`, - :mod:`isaaclab_newton`, :mod:`isaaclab_visualizers`, and - ``tools/wheel_builder/res/python_packages.toml``. + and ``mujoco-warp==3.8.0.1``. ``warp-lang``/``mujoco``/``mujoco-warp`` + pins live in :mod:`isaaclab` and ``tools/wheel_builder/res/python_packages.toml``; + the Newton pin is mirrored across :mod:`isaaclab_newton`, + :mod:`isaaclab_visualizers` (3×), :mod:`isaaclab_physx` (``[newton]`` + extra), and the wheel-builder TOML. * Updated ``wp.math.transform_to_matrix`` to ``wp.transform_to_matrix`` in :mod:`~isaaclab_newton.physics.newton_manager` and :mod:`~isaaclab_ov.renderers.ovrtx_renderer_kernels` to match the diff --git a/source/isaaclab_physx/changelog.d/jichuanh-newton-1.2.0rc2-bump.rst b/source/isaaclab_physx/changelog.d/jichuanh-newton-1.2.0rc2-bump.rst new file mode 100644 index 000000000000..74bca94ff983 --- /dev/null +++ b/source/isaaclab_physx/changelog.d/jichuanh-newton-1.2.0rc2-bump.rst @@ -0,0 +1,8 @@ +Changed +^^^^^^^ + +* Bumped the optional ``[newton]`` extra to ``v1.2.0rc2`` so the Newton + scene representation built by + :class:`~isaaclab_physx.scene_data_providers.PhysxSceneDataProvider` + for the OV/Rerun/Viser visualizers stays in sync with the version + pinned in :mod:`isaaclab_newton` and :mod:`isaaclab_visualizers`. diff --git a/source/isaaclab_physx/setup.py b/source/isaaclab_physx/setup.py index 1e917e938c2b..9cc172addf50 100644 --- a/source/isaaclab_physx/setup.py +++ b/source/isaaclab_physx/setup.py @@ -20,7 +20,7 @@ EXTRAS_REQUIRE = { "newton": [ - "newton @ git+https://github.com/newton-physics/newton.git@2684d75bfa4bb8b058a93b81c458a74b7701c997", + "newton @ git+https://github.com/newton-physics/newton.git@v1.2.0rc2", ], } From 5e163472d5b30e84d7f68ed8d17ffbbeaffeb58e Mon Sep 17 00:00:00 2001 From: jichuanh Date: Wed, 6 May 2026 23:20:39 +0000 Subject: [PATCH 4/6] Rename changelog fragment slugs to drop dots MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The changelog CLI rejects slugs containing dots — version-style '1.2.0rc2' embedded in the slug breaks parsing. Rename to 'rc2-bump' without dots. AGENTS.md ## Changelog says the slug defaults to the branch name with '/' replaced by '-', which on this branch produces a dotted slug; the no-dots constraint lives only in tools/changelog/cli.py validation, not in AGENTS.md. Doc fix to follow. --- ...1.2.0rc2-bump.minor.rst => jichuanh-newton-rc2-bump.minor.rst} | 0 ...1.2.0rc2-bump.minor.rst => jichuanh-newton-rc2-bump.minor.rst} | 0 ...uanh-newton-1.2.0rc2-bump.rst => jichuanh-newton-rc2-bump.rst} | 0 ...uanh-newton-1.2.0rc2-bump.rst => jichuanh-newton-rc2-bump.rst} | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename source/isaaclab/changelog.d/{jichuanh-newton-1.2.0rc2-bump.minor.rst => jichuanh-newton-rc2-bump.minor.rst} (100%) rename source/isaaclab_newton/changelog.d/{jichuanh-newton-1.2.0rc2-bump.minor.rst => jichuanh-newton-rc2-bump.minor.rst} (100%) rename source/isaaclab_ov/changelog.d/{jichuanh-newton-1.2.0rc2-bump.rst => jichuanh-newton-rc2-bump.rst} (100%) rename source/isaaclab_physx/changelog.d/{jichuanh-newton-1.2.0rc2-bump.rst => jichuanh-newton-rc2-bump.rst} (100%) diff --git a/source/isaaclab/changelog.d/jichuanh-newton-1.2.0rc2-bump.minor.rst b/source/isaaclab/changelog.d/jichuanh-newton-rc2-bump.minor.rst similarity index 100% rename from source/isaaclab/changelog.d/jichuanh-newton-1.2.0rc2-bump.minor.rst rename to source/isaaclab/changelog.d/jichuanh-newton-rc2-bump.minor.rst diff --git a/source/isaaclab_newton/changelog.d/jichuanh-newton-1.2.0rc2-bump.minor.rst b/source/isaaclab_newton/changelog.d/jichuanh-newton-rc2-bump.minor.rst similarity index 100% rename from source/isaaclab_newton/changelog.d/jichuanh-newton-1.2.0rc2-bump.minor.rst rename to source/isaaclab_newton/changelog.d/jichuanh-newton-rc2-bump.minor.rst diff --git a/source/isaaclab_ov/changelog.d/jichuanh-newton-1.2.0rc2-bump.rst b/source/isaaclab_ov/changelog.d/jichuanh-newton-rc2-bump.rst similarity index 100% rename from source/isaaclab_ov/changelog.d/jichuanh-newton-1.2.0rc2-bump.rst rename to source/isaaclab_ov/changelog.d/jichuanh-newton-rc2-bump.rst diff --git a/source/isaaclab_physx/changelog.d/jichuanh-newton-1.2.0rc2-bump.rst b/source/isaaclab_physx/changelog.d/jichuanh-newton-rc2-bump.rst similarity index 100% rename from source/isaaclab_physx/changelog.d/jichuanh-newton-1.2.0rc2-bump.rst rename to source/isaaclab_physx/changelog.d/jichuanh-newton-rc2-bump.rst From f8ab14eb7e0d615ba8c3413968fa3364cef14bb7 Mon Sep 17 00:00:00 2001 From: jichuanh Date: Thu, 7 May 2026 20:41:12 +0000 Subject: [PATCH 5/6] Adapt NewtonWarpRenderer to Newton 1.2.0rc2 explicit shape-BVH lifecycle MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Newton 1.2.0rc2 made shape-BVH construction explicit in the SensorTiledCamera path: passing a non-None state to update() no longer auto-builds the BVH, and the underlying RenderContext.render now raises RuntimeError("build_bvh_shape() must be called before rendering shapes.") if it was never built. CI's three rendering test files (test_rendering_cartpole.py, test_rendering_dexsuite_kuka_kitless.py, test_rendering_shadow_hand_kitless.py) all hit this on the first newton_warp render call after the bump. Build the shape BVH once in NewtonWarpRenderer.__init__ via newton.geometry.build_bvh_shape(model, model.state()) — guarded by shape_count > 0 and bvh_shapes is None so it stays idempotent across multiple sensors that share the same Newton model. Refit per frame in render() via newton.geometry.refit_bvh_shape against the current state, since env body poses move every step. Recorded in the isaaclab_newton changelog fragment alongside the existing wp.math.transform_to_matrix → wp.transform_to_matrix adapt. --- .../jichuanh-newton-rc2-bump.minor.rst | 10 ++++++++++ .../renderers/newton_warp_renderer.py | 15 ++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/source/isaaclab_newton/changelog.d/jichuanh-newton-rc2-bump.minor.rst b/source/isaaclab_newton/changelog.d/jichuanh-newton-rc2-bump.minor.rst index 3609cf6cd787..25985f94b4b2 100644 --- a/source/isaaclab_newton/changelog.d/jichuanh-newton-rc2-bump.minor.rst +++ b/source/isaaclab_newton/changelog.d/jichuanh-newton-rc2-bump.minor.rst @@ -21,3 +21,13 @@ Changed :mod:`~isaaclab_newton.physics.newton_manager` and :mod:`~isaaclab_ov.renderers.ovrtx_renderer_kernels` to match the ``warp-lang`` 1.13 API (the ``wp.math`` namespace was removed). +* Adapted :class:`~isaaclab_newton.renderers.NewtonWarpRenderer` to + Newton ``v1.2.0rc2``'s explicit shape-BVH lifecycle. + :meth:`~newton.sensors.SensorTiledCamera.update` no longer auto-builds + the BVH when a non-``None`` state is passed and the underlying + ``RenderContext.render`` now raises ``RuntimeError("build_bvh_shape() + must be called before rendering shapes.")`` if it was never built. The + renderer now calls ``newton.geometry.build_bvh_shape`` once after + sensor construction and ``newton.geometry.refit_bvh_shape`` each frame + before :meth:`~newton.sensors.SensorTiledCamera.update`, since env + body poses move every step. diff --git a/source/isaaclab_newton/isaaclab_newton/renderers/newton_warp_renderer.py b/source/isaaclab_newton/isaaclab_newton/renderers/newton_warp_renderer.py index a02d820f2951..78285636b6ef 100644 --- a/source/isaaclab_newton/isaaclab_newton/renderers/newton_warp_renderer.py +++ b/source/isaaclab_newton/isaaclab_newton/renderers/newton_warp_renderer.py @@ -172,6 +172,14 @@ def __init__(self, cfg: NewtonWarpRendererCfg): ), ) + # Newton ``v1.2.0rc2`` made shape-BVH construction explicit; ``SensorTiledCamera.update`` + # no longer auto-builds when a non-``None`` state is passed, and the underlying + # ``RenderContext.render`` raises if ``build_bvh_shape`` was never called for the model. + # Build it once per model — idempotent across multiple sensors that share ``newton_model`` + # because subsequent calls overwrite the same model-level BVH attributes. + if newton_model.shape_count > 0 and newton_model.bvh_shapes is None: + newton.geometry.build_bvh_shape(newton_model, newton_model.state()) + if cfg.create_default_light: self.newton_sensor.utils.create_default_light(enable_shadows=cfg.enable_shadows) @@ -220,8 +228,13 @@ def update_camera( def render(self, render_data: RenderData): """Render and write to output buffers. See :meth:`~isaaclab.renderers.base_renderer.BaseRenderer.render`.""" + newton_state = self.get_scene_data_provider().get_newton_state() + # Refit the shape BVH against the current state since env body poses move every frame. + # ``build_bvh_shape`` ran once in ``__init__``; ``refit_bvh_shape`` reuses that topology. + if self.newton_sensor.model.shape_count > 0: + newton.geometry.refit_bvh_shape(self.newton_sensor.model, newton_state) self.newton_sensor.update( - self.get_scene_data_provider().get_newton_state(), + newton_state, render_data.camera_transforms, render_data.camera_rays, color_image=render_data.outputs.color_image, From 100b3995f4fd59d6aa163b0e17bc2a3a04fcade6 Mon Sep 17 00:00:00 2001 From: jichuanh Date: Thu, 7 May 2026 22:26:39 +0000 Subject: [PATCH 6/6] Add warp.torch compat shim for cuRobo on warp-lang 1.13 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Newton 1.2.0rc2 requires warp-lang>=1.13, which dropped the warp.torch submodule in favour of top-level warp.* (e.g. wp.torch.device_from_torch became wp.device_from_torch). cuRobo (NVlabs/curobo) — pinned in docker/Dockerfile.curobo and used by isaaclab_mimic — still calls wp.torch.device_from_torch at MotionGenConfig.load_from_robot_config time and raises AttributeError on import. Reconstruct warp.torch as a thin forwarding module at isaaclab_mimic import time so cuRobo's call sites keep working without an upstream patch. Python evaluates isaaclab_mimic/__init__.py before any submodule, including isaaclab_mimic.motion_planners.curobo.curobo_planner, so the shim is in place before cuRobo runs. Idempotent: skipped if warp ever re-introduces wp.torch or cuRobo migrates. Tracking upstream at https://github.com/NVlabs/curobo — once the cuRobo pin in docker/Dockerfile.curobo bumps to a commit that uses the top-level wp.* API directly, drop this shim. The TODO in source/isaaclab_mimic/isaaclab_mimic/__init__.py spells out the removal trigger. --- .../changelog.d/jichuanh-newton-rc2-bump.rst | 15 ++++++ .../isaaclab_mimic/isaaclab_mimic/__init__.py | 49 +++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 source/isaaclab_mimic/changelog.d/jichuanh-newton-rc2-bump.rst diff --git a/source/isaaclab_mimic/changelog.d/jichuanh-newton-rc2-bump.rst b/source/isaaclab_mimic/changelog.d/jichuanh-newton-rc2-bump.rst new file mode 100644 index 000000000000..051f04fae9f2 --- /dev/null +++ b/source/isaaclab_mimic/changelog.d/jichuanh-newton-rc2-bump.rst @@ -0,0 +1,15 @@ +Added +^^^^^ + +* Added a temporary ``warp.torch`` compatibility shim at + :mod:`isaaclab_mimic` import time so that cuRobo (NVlabs/curobo) keeps + working with ``warp-lang>=1.13``, which dropped the ``warp.torch`` + submodule in favour of top-level ``warp.*`` (e.g. + ``wp.torch.device_from_torch`` → ``wp.device_from_torch``). cuRobo's + pinned commit and ``main`` still call ``wp.torch.*`` and raise + ``AttributeError: module 'warp' has no attribute 'torch'`` at + :meth:`MotionGenConfig.load_from_robot_config` time. The shim + reconstructs ``warp.torch`` as a thin forwarding module and is a + no-op once warp re-introduces the namespace or cuRobo migrates. + Remove this shim once the cuRobo pin in ``docker/Dockerfile.curobo`` + is bumped to a commit that uses the top-level ``wp.*`` API directly. diff --git a/source/isaaclab_mimic/isaaclab_mimic/__init__.py b/source/isaaclab_mimic/isaaclab_mimic/__init__.py index 17f1264a6b59..56b86cc6034d 100644 --- a/source/isaaclab_mimic/isaaclab_mimic/__init__.py +++ b/source/isaaclab_mimic/isaaclab_mimic/__init__.py @@ -5,4 +5,53 @@ """Package containing implementation of Isaac Lab Mimic data generation.""" +# --------------------------------------------------------------------------- +# Compatibility shim: re-expose ``warp.torch`` after warp-lang 1.13 dropped it +# +# Newton ``v1.2.0rc2`` requires ``warp-lang>=1.13``. Warp 1.13 collapsed the +# ``warp.torch`` submodule into the top-level ``warp`` namespace, so e.g. +# ``wp.torch.device_from_torch`` is now ``wp.device_from_torch``. cuRobo +# (NVlabs/curobo) still uses the old ``wp.torch.*`` form (verified at +# ``ebb71702f`` and on ``main`` as of 2026-05-07) and raises +# ``AttributeError: module 'warp' has no attribute 'torch'`` at +# ``MotionGenConfig.load_from_robot_config(...)`` time. +# +# This shim runs at ``isaaclab_mimic`` import — which Python evaluates before +# any submodule, including +# :mod:`isaaclab_mimic.motion_planners.curobo.curobo_planner` — so curobo +# sees a ``warp.torch`` namespace whose members forward to the relocated +# top-level ``warp.*`` callables. Idempotent: a no-op once warp ships +# ``wp.torch`` again or curobo migrates. +# +# TODO: remove this shim once the cuRobo pin in ``docker/Dockerfile.curobo`` +# bumps to a commit that uses ``wp.from_torch``/``wp.device_from_torch``/ +# etc. directly. Tracking upstream at https://github.com/NVlabs/curobo — +# follow up on the open issue / PR there to confirm the migration landed +# before deleting this block. +import sys as _sys +import types as _types + +import warp as _wp + +if not hasattr(_wp, "torch"): + _wp_torch_shim = _types.ModuleType("warp.torch") + for _name in ( + "from_torch", + "to_torch", + "device_from_torch", + "device_to_torch", + "dtype_from_torch", + "dtype_to_torch", + "stream_from_torch", + "stream_to_torch", + ): + if hasattr(_wp, _name): + setattr(_wp_torch_shim, _name, getattr(_wp, _name)) + _wp.torch = _wp_torch_shim + _sys.modules["warp.torch"] = _wp_torch_shim + del _wp_torch_shim, _name + +del _sys, _types, _wp + + __version__ = "1.0.0"