Skip to content

Commit e27c315

Browse files
committed
Bump Newton to 81cdcfc
1 parent 564a008 commit e27c315

4 files changed

Lines changed: 30 additions & 19 deletions

File tree

pyproject.toml

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ dependencies = [
8585
# Loose bound so the wheel co-resolves with isaacsim's newton[sim]==1.2.0 pin; the
8686
# exact git commit is forced via [tool.uv].override-dependencies (uv sync only).
8787
"newton[sim]>=1.2.0",
88-
# Loose bound co-resolves with isaacsim's ==0.2.0; the override below forces >=0.3.1.
88+
# Loose bound co-resolves with isaacsim's ==0.2.0; the override below forces >=0.4.0.
8989
"newton-usd-schemas>=0.2.0",
9090
"PyOpenGL-accelerate>=3.1.0",
9191
# ----- newton interactive viewer GUI (in base, no extra required) -----
@@ -167,7 +167,7 @@ torchaudio = "2.11.0"
167167
ovphysx = "0.5.2+head.f62c22207c"
168168
ovrtx = ">=0.3.0,<0.4.0"
169169
# Newton git commit + matching warp-lang prerelease (upgraded together).
170-
newton = "c7ae7c7648cd0717df39e5c94b95d5a02c997320"
170+
newton = "81cdcfc2dd89f8b7285e32b5e3853092a97fa6f9"
171171
warp = "1.15.0.dev20260626"
172172

173173
[tool.ruff]
@@ -327,16 +327,17 @@ explicit = true
327327
[tool.uv]
328328
index-strategy = "unsafe-best-match"
329329
prerelease = "allow"
330-
# Isaac Lab owns the Newton and torch versions. Overrides replace these requirements
331-
# for EVERY requester (unlike constraints, which only intersect), so ``--extra isaacsim``
332-
# — which pins ``newton[sim]==1.2.0`` and its own torch stack — can neither block
333-
# resolution nor downgrade an already-installed newton/torch. The torch stack routes to
334-
# the CUDA indexes via [tool.uv.sources]. Values mirror [tool.isaaclab.versions] above.
330+
# Isaac Lab owns the Newton, MuJoCo, and torch versions. Overrides replace requirements
331+
# for every requester, unlike constraints, which only intersect. The ``isaacsim`` extra
332+
# pins older Newton, MuJoCo, and torch versions, so these overrides prevent downgrades.
333+
# Torch routes through [tool.uv.sources]. Values mirror [tool.isaaclab.versions] where applicable.
335334
override-dependencies = [
336335
"numpy>=2",
337-
"newton[sim] @ git+https://github.com/newton-physics/newton.git@c7ae7c7648cd0717df39e5c94b95d5a02c997320",
336+
"mujoco~=3.10.0",
337+
"mujoco-warp~=3.10.0,>=3.10.0.2",
338+
"newton[sim] @ git+https://github.com/newton-physics/newton.git@81cdcfc2dd89f8b7285e32b5e3853092a97fa6f9",
338339
# Force the Newton-matched schemas over isaacsim's ==0.2.0 pin.
339-
"newton-usd-schemas>=0.3.1",
340+
"newton-usd-schemas>=0.4.0",
340341
"torch==2.11.0",
341342
"torchvision==0.26.0",
342343
"torchaudio==2.11.0",
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
Changed
2+
^^^^^^^
3+
4+
* Updated the pinned Newton commit to
5+
``81cdcfc2dd89f8b7285e32b5e3853092a97fa6f9`` with compatible MuJoCo and
6+
schema versions, and migrated the Newton Warp renderer to the current
7+
tiled-camera APIs. Reinstall Isaac Lab to use the updated stack.

source/isaaclab_newton/isaaclab_newton/renderers/newton_warp_renderer.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,9 @@ def update(self, positions: ProxyArray, orientations: ProxyArray, intrinsics: Pr
277277
fov_radians_all = 2.0 * torch.atan(self.height / (2.0 * first_focal_length))
278278

279279
fov_warp = wp.from_torch(fov_radians_all, dtype=wp.float32)
280-
self.camera_rays = self.newton_sensor.utils.compute_pinhole_camera_rays(self.width, self.height, fov_warp)
280+
self.camera_rays = self.newton_sensor.utils.compute_camera_rays_pinhole(
281+
self.width, self.height, camera_fovs=fov_warp
282+
)
281283

282284
@wp.kernel
283285
def _update_transforms(
@@ -329,7 +331,7 @@ def initialize(self) -> None:
329331

330332
self.newton_sensor = newton.sensors.SensorTiledCamera(
331333
self._newton_model,
332-
config=newton.sensors.SensorTiledCamera.RenderConfig(
334+
default_render_config=newton.sensors.SensorTiledCamera.RenderConfig(
333335
enable_textures=self.cfg.enable_textures,
334336
enable_shadows=self.cfg.enable_shadows,
335337
enable_ambient_lighting=self.cfg.enable_ambient_lighting,
@@ -342,11 +344,13 @@ def initialize(self) -> None:
342344
)
343345

344346
if self.cfg.render_order == "pixel_priority":
345-
self.newton_sensor.render_config.render_order = newton.sensors.SensorTiledCamera.RenderOrder.PIXEL_PRIORITY
347+
self.newton_sensor.default_render_config.render_order = (
348+
newton.sensors.SensorTiledCamera.RenderOrder.PIXEL_PRIORITY
349+
)
346350
elif self.cfg.render_order == "view_priority":
347-
self.newton_sensor.render_config.render_order = newton.sensors.SensorTiledCamera.RenderOrder.VIEW_PRIORITY
348-
else:
349-
self.newton_sensor.render_config.render_order = newton.sensors.SensorTiledCamera.RenderOrder.TILED
351+
self.newton_sensor.default_render_config.render_order = (
352+
newton.sensors.SensorTiledCamera.RenderOrder.VIEW_PRIORITY
353+
)
350354

351355
# Newton ``v1.2.0rc2`` made shape-BVH construction explicit; ``SensorTiledCamera.update``
352356
# no longer auto-builds when a non-``None`` state is passed, and the underlying
@@ -441,9 +445,8 @@ def render(self, render_data: RenderData):
441445
if self.newton_sensor.model.shape_count > 0:
442446
newton.geometry.refit_bvh_shape(self.newton_sensor.model, newton_state)
443447

444-
# render_config is shared state across all Newton sensors, so set max_distance immediately
445-
# before each render call rather than once in create_render_data.
446-
self.newton_sensor.render_config.max_distance = (
448+
# Cameras can have different far clipping planes, so update the sensor config before rendering.
449+
self.newton_sensor.default_render_config.max_distance = (
447450
render_data.far_clip if render_data.far_clip is not None else self.cfg.max_distance
448451
)
449452

source/isaaclab_newton/test/sensors/test_contact_sensor.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ def test_horizontal_collision_detects_contact(device: str, use_mujoco_contacts:
235235
scene_cfg.object_b = create_shape_cfg(
236236
shape_type,
237237
"{ENV_REGEX_NS}/ObjectB",
238-
pos=(max_separation / 2, 0.0, 0.5),
238+
pos=(max_separation / 2, 0.01, 0.5),
239239
disable_gravity=True,
240240
activate_contact_sensors=True,
241241
)

0 commit comments

Comments
 (0)