From b8ddbe937816141cd19a31f32204ded3448e3f9b Mon Sep 17 00:00:00 2001 From: nvsekkin Date: Wed, 19 Aug 2026 16:13:36 -0700 Subject: [PATCH 1/6] ci: Update Isaac Sim develop image Pin CI to alpha.58 so renderer validation uses the current Kit build. --- .github/workflows/config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/config.yaml b/.github/workflows/config.yaml index bedb45f19d9b..94b2e847eb96 100644 --- a/.github/workflows/config.yaml +++ b/.github/workflows/config.yaml @@ -9,7 +9,7 @@ # (frozen at 6.1.0-alpha.2). Both images use Isaac Sim's NGC org, which is current and # which the CI credential can reach. isaacsim_image_name: nvcr.io/0947644777160149/internal/isaac-sim -# Isaac Sim 6.1.0-alpha.50 (b86cf6ce) includes Kit 110.3.0-360924's fix for NVBug 6566677. -isaacsim_image_tag: latest-develop@sha256:d4667d2c0cbc1d0dcd3aac3213799777ee2cbf8de1e91cc41684023c256f176f +# Isaac Sim 6.1.0-alpha.58 (4927c0e5) includes Kit 110.3.0+feature.365234. +isaacsim_image_tag: latest-develop-4927c0e5@sha256:d4f160ea1568fc9e56cea00e29a3b913b7f85d07b6f2036c01a46515f320aa5e isaaclab_image_name: nvcr.io/0947644777160149/internal/isaac-lab ovphysx_wheelhouse_image: "" From 295d649961de02b2d9f95a22f9aac9b5debf2cb6 Mon Sep 17 00:00:00 2001 From: nvsekkin Date: Wed, 19 Aug 2026 16:13:45 -0700 Subject: [PATCH 2/6] test: Restore Franka cloth motion-vector coverage Start the cloth above its supports, preserve the OVRTX history workaround, and require real cloth motion before golden comparison. --- .../esekkin-cloth-motion-vectors.skip | 1 + .../newton-ovrtx_renderer-motion_vectors.png | 4 ++-- .../test/rendering_test_utils.py | 18 ++++++++++++++---- 3 files changed, 17 insertions(+), 6 deletions(-) create mode 100644 source/isaaclab_tasks/changelog.d/esekkin-cloth-motion-vectors.skip diff --git a/source/isaaclab_tasks/changelog.d/esekkin-cloth-motion-vectors.skip b/source/isaaclab_tasks/changelog.d/esekkin-cloth-motion-vectors.skip new file mode 100644 index 000000000000..2840ca0664f8 --- /dev/null +++ b/source/isaaclab_tasks/changelog.d/esekkin-cloth-motion-vectors.skip @@ -0,0 +1 @@ +Test-only: captured Franka cloth motion vectors during a controlled fall. diff --git a/source/isaaclab_tasks/test/golden_images/franka_cloth/newton-ovrtx_renderer-motion_vectors.png b/source/isaaclab_tasks/test/golden_images/franka_cloth/newton-ovrtx_renderer-motion_vectors.png index c6121c9c7a46..1c89f9b626c1 100644 --- a/source/isaaclab_tasks/test/golden_images/franka_cloth/newton-ovrtx_renderer-motion_vectors.png +++ b/source/isaaclab_tasks/test/golden_images/franka_cloth/newton-ovrtx_renderer-motion_vectors.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:49503a4a0e7e79169712eda8421a9c52dd9c6b8abd903e45423e498f3819075d -size 2252 +oid sha256:f06fc15e5499564d032c5efef6486ddd4c860947a7c423cab98134186aa63344 +size 6025 diff --git a/source/isaaclab_tasks/test/rendering_test_utils.py b/source/isaaclab_tasks/test/rendering_test_utils.py index 9d9e83bd26be..11e0a773432e 100644 --- a/source/isaaclab_tasks/test/rendering_test_utils.py +++ b/source/isaaclab_tasks/test/rendering_test_utils.py @@ -1791,6 +1791,9 @@ def _configure_franka_camera_test_env_cfg(env_cfg: Any, data_type: str) -> None: """Apply deterministic golden rendering test overrides to a resolved Franka camera config.""" _apply_franka_camera_golden_scene_overrides(env_cfg, data_type) env_cfg.commands.deformable_pose.debug_vis = False + if data_type == "motion_vectors": + initial_pos = env_cfg.scene.deformable.init_state.pos + env_cfg.scene.deformable.init_state.pos = (initial_pos[0], initial_pos[1], initial_pos[2] + 0.01) env_cfg.events.reset_deformable.params["position_range"] = { "x": (0.0, 0.0), "y": (0.0, 0.0), @@ -1804,7 +1807,8 @@ def rendering_test_franka_cloth( data_type: str, comparison_scores: list[dict], ) -> None: - _skip_if_newton_motion_vectors(physics_backend, data_type) + if renderer != "ovrtx_renderer": + _skip_if_newton_motion_vectors(physics_backend, data_type) if renderer == "ovrtx_renderer" and data_type == "instance_segmentation": pytest.skip("instance_segmentation crashes with the OVRTX renderer on franka_cloth (NVBUG#6463802).") @@ -1831,11 +1835,17 @@ def rendering_test_franka_cloth( maybe_save_stage(test_name, physics_backend, renderer, data_type) - # We step only once to let the cloth fall uniformly on the gravity but not collide with the cube on the table. - # This is to limit the inconsistent nodal poses and pixels from run to run due to solver scheduling and - # numerical precision. + # Advance the cloth before capturing camera output. zero_actions = torch.zeros(env.num_envs, env.action_manager.total_action_dim, device=env.device) + if data_type == "motion_vectors": + initial_mean_z = env.scene["deformable"].data.nodal_pos_w.torch[..., 2].mean() env.step(zero_actions) + # TODO: Remove the extra step when NVBug 6565960 is fixed. + if data_type == "motion_vectors": + env.step(zero_actions) + current_mean_z = env.scene["deformable"].data.nodal_pos_w.torch[..., 2].mean() + fall_distance = (initial_mean_z - current_mean_z).item() + assert fall_distance > 0.005, f"Cloth fell only {fall_distance:.4f} m before motion-vector capture." camera = env.scene.sensors["base_camera"] camera_outputs = camera.data.output From f002c462624a48c74c5c1b311f62171d988c21c1 Mon Sep 17 00:00:00 2001 From: nvsekkin Date: Wed, 19 Aug 2026 16:18:57 -0700 Subject: [PATCH 3/6] ci: Preserve rolling Isaac Sim tag Keep the workflow-managed latest-develop tag while pinning the validated image digest. --- .github/workflows/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/config.yaml b/.github/workflows/config.yaml index 94b2e847eb96..eb8baf866a55 100644 --- a/.github/workflows/config.yaml +++ b/.github/workflows/config.yaml @@ -10,6 +10,6 @@ # which the CI credential can reach. isaacsim_image_name: nvcr.io/0947644777160149/internal/isaac-sim # Isaac Sim 6.1.0-alpha.58 (4927c0e5) includes Kit 110.3.0+feature.365234. -isaacsim_image_tag: latest-develop-4927c0e5@sha256:d4f160ea1568fc9e56cea00e29a3b913b7f85d07b6f2036c01a46515f320aa5e +isaacsim_image_tag: latest-develop@sha256:d4f160ea1568fc9e56cea00e29a3b913b7f85d07b6f2036c01a46515f320aa5e isaaclab_image_name: nvcr.io/0947644777160149/internal/isaac-lab ovphysx_wheelhouse_image: "" From 40013e055efcb81b60b2d2b46495b7a49ef9cbf7 Mon Sep 17 00:00:00 2001 From: nvsekkin Date: Wed, 19 Aug 2026 16:20:37 -0700 Subject: [PATCH 4/6] ci: Remove stale image version comment Let the workflow-managed image tag and pinned digest remain the source of truth. --- .github/workflows/config.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/config.yaml b/.github/workflows/config.yaml index eb8baf866a55..b0b21474ff48 100644 --- a/.github/workflows/config.yaml +++ b/.github/workflows/config.yaml @@ -9,7 +9,6 @@ # (frozen at 6.1.0-alpha.2). Both images use Isaac Sim's NGC org, which is current and # which the CI credential can reach. isaacsim_image_name: nvcr.io/0947644777160149/internal/isaac-sim -# Isaac Sim 6.1.0-alpha.58 (4927c0e5) includes Kit 110.3.0+feature.365234. isaacsim_image_tag: latest-develop@sha256:d4f160ea1568fc9e56cea00e29a3b913b7f85d07b6f2036c01a46515f320aa5e isaaclab_image_name: nvcr.io/0947644777160149/internal/isaac-lab ovphysx_wheelhouse_image: "" From 77d3b450e58dfe12f0c7bce714d6a2b3df7bf29a Mon Sep 17 00:00:00 2001 From: nvsekkin Date: Wed, 19 Aug 2026 16:21:40 -0700 Subject: [PATCH 5/6] test: Remove solver-specific fall assertion Keep the rendering regression focused on the captured motion-vector golden instead of Newton displacement magnitude. --- source/isaaclab_tasks/test/rendering_test_utils.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/source/isaaclab_tasks/test/rendering_test_utils.py b/source/isaaclab_tasks/test/rendering_test_utils.py index 11e0a773432e..5b8863150e0c 100644 --- a/source/isaaclab_tasks/test/rendering_test_utils.py +++ b/source/isaaclab_tasks/test/rendering_test_utils.py @@ -1837,15 +1837,10 @@ def rendering_test_franka_cloth( # Advance the cloth before capturing camera output. zero_actions = torch.zeros(env.num_envs, env.action_manager.total_action_dim, device=env.device) - if data_type == "motion_vectors": - initial_mean_z = env.scene["deformable"].data.nodal_pos_w.torch[..., 2].mean() env.step(zero_actions) # TODO: Remove the extra step when NVBug 6565960 is fixed. if data_type == "motion_vectors": env.step(zero_actions) - current_mean_z = env.scene["deformable"].data.nodal_pos_w.torch[..., 2].mean() - fall_distance = (initial_mean_z - current_mean_z).item() - assert fall_distance > 0.005, f"Cloth fell only {fall_distance:.4f} m before motion-vector capture." camera = env.scene.sensors["base_camera"] camera_outputs = camera.data.output From 14454b16f4b64251c1eb2b124d2593d92df17d35 Mon Sep 17 00:00:00 2001 From: nvsekkin Date: Thu, 20 Aug 2026 11:49:55 -0700 Subject: [PATCH 6/6] test: Scope Franka cloth motion-vector changes Limit the controlled fall and history workaround to validated Newton OVRTX coverage, and drop the unrelated Isaac Sim image bump. --- .github/workflows/config.yaml | 3 ++- source/isaaclab_tasks/test/rendering_test_utils.py | 13 ++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/.github/workflows/config.yaml b/.github/workflows/config.yaml index b0b21474ff48..bedb45f19d9b 100644 --- a/.github/workflows/config.yaml +++ b/.github/workflows/config.yaml @@ -9,6 +9,7 @@ # (frozen at 6.1.0-alpha.2). Both images use Isaac Sim's NGC org, which is current and # which the CI credential can reach. isaacsim_image_name: nvcr.io/0947644777160149/internal/isaac-sim -isaacsim_image_tag: latest-develop@sha256:d4f160ea1568fc9e56cea00e29a3b913b7f85d07b6f2036c01a46515f320aa5e +# Isaac Sim 6.1.0-alpha.50 (b86cf6ce) includes Kit 110.3.0-360924's fix for NVBug 6566677. +isaacsim_image_tag: latest-develop@sha256:d4667d2c0cbc1d0dcd3aac3213799777ee2cbf8de1e91cc41684023c256f176f isaaclab_image_name: nvcr.io/0947644777160149/internal/isaac-lab ovphysx_wheelhouse_image: "" diff --git a/source/isaaclab_tasks/test/rendering_test_utils.py b/source/isaaclab_tasks/test/rendering_test_utils.py index 5b8863150e0c..55df60e57345 100644 --- a/source/isaaclab_tasks/test/rendering_test_utils.py +++ b/source/isaaclab_tasks/test/rendering_test_utils.py @@ -1791,9 +1791,6 @@ def _configure_franka_camera_test_env_cfg(env_cfg: Any, data_type: str) -> None: """Apply deterministic golden rendering test overrides to a resolved Franka camera config.""" _apply_franka_camera_golden_scene_overrides(env_cfg, data_type) env_cfg.commands.deformable_pose.debug_vis = False - if data_type == "motion_vectors": - initial_pos = env_cfg.scene.deformable.init_state.pos - env_cfg.scene.deformable.init_state.pos = (initial_pos[0], initial_pos[1], initial_pos[2] + 0.01) env_cfg.events.reset_deformable.params["position_range"] = { "x": (0.0, 0.0), "y": (0.0, 0.0), @@ -1807,7 +1804,10 @@ def rendering_test_franka_cloth( data_type: str, comparison_scores: list[dict], ) -> None: - if renderer != "ovrtx_renderer": + is_newton_ovrtx_motion = ( + physics_backend == "newton" and renderer == "ovrtx_renderer" and data_type == "motion_vectors" + ) + if not is_newton_ovrtx_motion: _skip_if_newton_motion_vectors(physics_backend, data_type) if renderer == "ovrtx_renderer" and data_type == "instance_segmentation": @@ -1824,6 +1824,9 @@ def rendering_test_franka_cloth( env_cfg = _apply_overrides_to_env_cfg(env_cfg, [f"presets={physics_preset_name},{renderer}"]) _configure_franka_camera_test_env_cfg(env_cfg, data_type) + if is_newton_ovrtx_motion: + initial_pos = env_cfg.scene.deformable.init_state.pos + env_cfg.scene.deformable.init_state.pos = (initial_pos[0], initial_pos[1], initial_pos[2] + 0.01) _maybe_enable_physx_determinism_for_motion(env_cfg, physics_backend, data_type) @@ -1839,7 +1842,7 @@ def rendering_test_franka_cloth( zero_actions = torch.zeros(env.num_envs, env.action_manager.total_action_dim, device=env.device) env.step(zero_actions) # TODO: Remove the extra step when NVBug 6565960 is fixed. - if data_type == "motion_vectors": + if is_newton_ovrtx_motion: env.step(zero_actions) camera = env.scene.sensors["base_camera"]