Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
23 changes: 23 additions & 0 deletions source/isaaclab/changelog.d/jichuanh-newton-rc2-bump.minor.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
Changed
^^^^^^^

* Bumped Newton pin to ``v1.2.0rc2``. Pulls in IsaacLab-relevant fixes from
`newton-physics/newton#2678 <https://github.com/newton-physics/newton/pull/2678>`_
and `newton-physics/newton#2720
<https://github.com/newton-physics/newton/pull/2720>`_ (``SolverKamino``
reset under ``world_mask``), the upstream tendon-scoping fix from
`newton-physics/newton#2659
<https://github.com/newton-physics/newton/pull/2659>`_ ("Scope USD
custom-frequency parsing"), and a VRAM-leak fix on example reset
(`newton-physics/newton#2710
<https://github.com/newton-physics/newton/pull/2710>`_).
* Newton ``v1.2.0rc2`` requires ``warp-lang==1.13.0``, ``mujoco==3.8.0``,
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
``warp-lang`` 1.13 API (the ``wp.math`` namespace was removed).
6 changes: 3 additions & 3 deletions source/isaaclab/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
15 changes: 15 additions & 0 deletions source/isaaclab_mimic/changelog.d/jichuanh-newton-rc2-bump.rst
Original file line number Diff line number Diff line change
@@ -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.
49 changes: 49 additions & 0 deletions source/isaaclab_mimic/isaaclab_mimic/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
Changed
^^^^^^^

* Bumped Newton pin to ``v1.2.0rc2``. Pulls in IsaacLab-relevant fixes from
`newton-physics/newton#2678 <https://github.com/newton-physics/newton/pull/2678>`_
and `newton-physics/newton#2720
<https://github.com/newton-physics/newton/pull/2720>`_ (``SolverKamino``
reset under ``world_mask``), the upstream tendon-scoping fix from
`newton-physics/newton#2659
<https://github.com/newton-physics/newton/pull/2659>`_ ("Scope USD
custom-frequency parsing"), and a VRAM-leak fix on example reset
(`newton-physics/newton#2710
<https://github.com/newton-physics/newton/pull/2710>`_).
* Newton ``v1.2.0rc2`` requires ``warp-lang==1.13.0``, ``mujoco==3.8.0``,
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
``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.
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,14 @@ def __init__(self, cfg: NewtonWarpRendererCfg):
),
)

# Newton ``v1.2.0rc2`` made shape-BVH construction explicit; ``SensorTiledCamera.update``
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@StafaH - looks like Jichuan included the bvh update in this PR. could you take a look to see if this is correct?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not correct but works. Ideally we want to now move the bvh build and refit outside of the renderer. In 1.2 there is a deprecation path that builds a bvh and refits it to keep old behaviour, so we can just call the original code and newton should handle building if it does not exist.

# 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)

Expand Down Expand Up @@ -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,
Expand Down
6 changes: 3 additions & 3 deletions source/isaaclab_newton/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Mutable tag replaces immutable commit SHA

The previous pin used commit hash a27277ed49d6f307b8a1e4c394be7e1d14965a62, which is immutable. The new pin v1.2.0rc2 is a git tag — if the tag is ever force-pushed on the upstream repo, CI and fresh installs would silently pull different code without any change to this file. The same applies to the three entries in source/isaaclab_visualizers/setup.py and the wheel-builder TOML. If the RC tag is expected to stay frozen (i.e. no re-tagging) this is fine as-is, but pinning to the resolved commit SHA would give stronger reproducibility guarantees.

],
}

Expand Down
23 changes: 23 additions & 0 deletions source/isaaclab_ov/changelog.d/jichuanh-newton-rc2-bump.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
Changed
^^^^^^^

* Bumped Newton pin to ``v1.2.0rc2``. Pulls in IsaacLab-relevant fixes from
`newton-physics/newton#2678 <https://github.com/newton-physics/newton/pull/2678>`_
and `newton-physics/newton#2720
<https://github.com/newton-physics/newton/pull/2720>`_ (``SolverKamino``
reset under ``world_mask``), the upstream tendon-scoping fix from
`newton-physics/newton#2659
<https://github.com/newton-physics/newton/pull/2659>`_ ("Scope USD
custom-frequency parsing"), and a VRAM-leak fix on example reset
(`newton-physics/newton#2710
<https://github.com/newton-physics/newton/pull/2710>`_).
* Newton ``v1.2.0rc2`` requires ``warp-lang==1.13.0``, ``mujoco==3.8.0``,
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
``warp-lang`` 1.13 API (the ``wp.math`` namespace was removed).
Original file line number Diff line number Diff line change
Expand Up @@ -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)))
Original file line number Diff line number Diff line change
@@ -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`.
2 changes: 1 addition & 1 deletion source/isaaclab_physx/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -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",
],
}

Expand Down
6 changes: 3 additions & 3 deletions source/isaaclab_visualizers/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -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",
],
}
Expand Down
10 changes: 5 additions & 5 deletions tools/wheel_builder/res/python_packages.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -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"
] },
# ================================================================================
Expand Down
Loading