From 63168cd687aa4b1f940d35c3bbe0cd3537b2e6e0 Mon Sep 17 00:00:00 2001 From: "isaaclab-bot[bot]" <282401363+isaaclab-bot[bot]@users.noreply.github.com> Date: Tue, 29 Sep 2026 05:12:42 +0000 Subject: [PATCH 1/2] [CI][Auto Version Bump] Compile changelog fragments (schedule) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumped packages: - isaaclab: 31.0.0 → 32.0.0 - isaaclab_contrib: 3.0.0 → 3.1.0 - isaaclab_newton: 9.0.0 → 9.1.0 - isaaclab_ov: 3.5.0 → 4.0.0 - isaaclab_physx: 7.3.0 → 7.4.0 - isaaclab_rl: 1.3.0 → 1.3.1 - isaaclab_tasks: 21.3.0 → 22.0.0 - isaaclab_teleop: 0.9.0 → 0.10.0 --- .../core-cleanup-sim-authoring.skip | 1 - .../launch-helper-cleanup.major.rst | 25 ---- .../changelog.d/launch-interrupt-status.rst | 5 - .../launch-one-mechanism.major.rst | 18 --- .../launch-simulation-scripts.major.rst | 29 ----- .../usd-exchange-3-provider.minor.rst | 8 -- .../vidurv-deformable-fragments.minor.rst | 47 -------- source/isaaclab/docs/CHANGELOG.rst | 114 ++++++++++++++++++ source/isaaclab/pyproject.toml | 2 +- .../admm-contact-capacity.minor.rst | 8 -- source/isaaclab_contrib/docs/CHANGELOG.rst | 13 ++ source/isaaclab_contrib/pyproject.toml | 2 +- .../core-cleanup-sim-authoring.skip | 0 .../newton-coordinate-targets.skip | 0 .../vidurv-deformable-fragments.minor.rst | 9 -- source/isaaclab_newton/docs/CHANGELOG.rst | 14 +++ source/isaaclab_newton/pyproject.toml | 2 +- .../core-cleanup-sim-authoring.skip | 0 .../changelog.d/launch-helper-cleanup.skip | 1 - .../ovphysx-contact-details.minor.rst | 10 -- .../ovphysx-external-forces-default.major.rst | 8 -- .../ovrtx-submit-all-render-products.rst | 9 -- .../usd-exchange-3-drop-thread-limit.skip | 3 - source/isaaclab_ov/docs/CHANGELOG.rst | 34 ++++++ source/isaaclab_ov/pyproject.toml | 2 +- .../core-cleanup-sim-authoring.skip | 0 .../changelog.d/kit-interrupt-cleanup.rst | 5 - .../changelog.d/launch-helper-cleanup.rst | 6 - .../changelog.d/launch-simulation-scripts.rst | 11 -- .../vidurv-deformable-fragments.minor.rst | 15 --- source/isaaclab_physx/docs/CHANGELOG.rst | 41 +++++++ source/isaaclab_physx/pyproject.toml | 2 +- .../changelog.d/launch-helper-cleanup.skip | 1 - .../launch-simulation-scripts.skip | 1 - ...pte-fix-shutdown-hang-multi-visualizer.rst | 6 - .../usd-exchange-3-drop-thread-limit.skip | 4 - source/isaaclab_rl/docs/CHANGELOG.rst | 11 ++ source/isaaclab_rl/pyproject.toml | 2 +- .../camera-perf-07-kuka-image-mdp.minor.rst | 13 -- .../fix-canonical-render-ovphysx.rst | 14 --- .../changelog.d/g1-xr-camera-pip.rst | 9 -- .../changelog.d/launch-helper-cleanup.skip | 1 - .../launch-one-mechanism.major.rst | 9 -- .../revert-workaround-for-nvbug-6602254.rst | 9 -- .../usd-exchange-3-drop-thread-limit.skip | 4 - source/isaaclab_tasks/docs/CHANGELOG.rst | 51 ++++++++ source/isaaclab_tasks/pyproject.toml | 2 +- .../changelog.d/fix-documentation-links.skip | 1 - .../xr-camera-pip-hall-of-mirrors.minor.rst | 20 --- source/isaaclab_teleop/docs/CHANGELOG.rst | 25 ++++ source/isaaclab_teleop/pyproject.toml | 2 +- .../changelog.d/launch-helper-cleanup.skip | 1 - .../changelog.d/launch-one-mechanism.skip | 1 - 53 files changed, 311 insertions(+), 320 deletions(-) delete mode 100644 source/isaaclab/changelog.d/core-cleanup-sim-authoring.skip delete mode 100644 source/isaaclab/changelog.d/launch-helper-cleanup.major.rst delete mode 100644 source/isaaclab/changelog.d/launch-interrupt-status.rst delete mode 100644 source/isaaclab/changelog.d/launch-one-mechanism.major.rst delete mode 100644 source/isaaclab/changelog.d/launch-simulation-scripts.major.rst delete mode 100644 source/isaaclab/changelog.d/usd-exchange-3-provider.minor.rst delete mode 100644 source/isaaclab/changelog.d/vidurv-deformable-fragments.minor.rst delete mode 100644 source/isaaclab_contrib/changelog.d/admm-contact-capacity.minor.rst delete mode 100644 source/isaaclab_newton/changelog.d/core-cleanup-sim-authoring.skip delete mode 100644 source/isaaclab_newton/changelog.d/newton-coordinate-targets.skip delete mode 100644 source/isaaclab_newton/changelog.d/vidurv-deformable-fragments.minor.rst delete mode 100644 source/isaaclab_ov/changelog.d/core-cleanup-sim-authoring.skip delete mode 100644 source/isaaclab_ov/changelog.d/launch-helper-cleanup.skip delete mode 100644 source/isaaclab_ov/changelog.d/ovphysx-contact-details.minor.rst delete mode 100644 source/isaaclab_ov/changelog.d/ovphysx-external-forces-default.major.rst delete mode 100644 source/isaaclab_ov/changelog.d/ovrtx-submit-all-render-products.rst delete mode 100644 source/isaaclab_ov/changelog.d/usd-exchange-3-drop-thread-limit.skip delete mode 100644 source/isaaclab_physx/changelog.d/core-cleanup-sim-authoring.skip delete mode 100644 source/isaaclab_physx/changelog.d/kit-interrupt-cleanup.rst delete mode 100644 source/isaaclab_physx/changelog.d/launch-helper-cleanup.rst delete mode 100644 source/isaaclab_physx/changelog.d/launch-simulation-scripts.rst delete mode 100644 source/isaaclab_physx/changelog.d/vidurv-deformable-fragments.minor.rst delete mode 100644 source/isaaclab_rl/changelog.d/launch-helper-cleanup.skip delete mode 100644 source/isaaclab_rl/changelog.d/launch-simulation-scripts.skip delete mode 100644 source/isaaclab_rl/changelog.d/mtrepte-fix-shutdown-hang-multi-visualizer.rst delete mode 100644 source/isaaclab_rl/changelog.d/usd-exchange-3-drop-thread-limit.skip delete mode 100644 source/isaaclab_tasks/changelog.d/camera-perf-07-kuka-image-mdp.minor.rst delete mode 100644 source/isaaclab_tasks/changelog.d/fix-canonical-render-ovphysx.rst delete mode 100644 source/isaaclab_tasks/changelog.d/g1-xr-camera-pip.rst delete mode 100644 source/isaaclab_tasks/changelog.d/launch-helper-cleanup.skip delete mode 100644 source/isaaclab_tasks/changelog.d/launch-one-mechanism.major.rst delete mode 100644 source/isaaclab_tasks/changelog.d/revert-workaround-for-nvbug-6602254.rst delete mode 100644 source/isaaclab_tasks/changelog.d/usd-exchange-3-drop-thread-limit.skip delete mode 100644 source/isaaclab_teleop/changelog.d/fix-documentation-links.skip delete mode 100644 source/isaaclab_teleop/changelog.d/xr-camera-pip-hall-of-mirrors.minor.rst delete mode 100644 source/isaaclab_visualizers/changelog.d/launch-helper-cleanup.skip delete mode 100644 source/isaaclab_visualizers/changelog.d/launch-one-mechanism.skip diff --git a/source/isaaclab/changelog.d/core-cleanup-sim-authoring.skip b/source/isaaclab/changelog.d/core-cleanup-sim-authoring.skip deleted file mode 100644 index d8b78c9cc577..000000000000 --- a/source/isaaclab/changelog.d/core-cleanup-sim-authoring.skip +++ /dev/null @@ -1 +0,0 @@ -Deduplicated the spawner, mesh converter, and schema writer helpers; the authored USD is unchanged. diff --git a/source/isaaclab/changelog.d/launch-helper-cleanup.major.rst b/source/isaaclab/changelog.d/launch-helper-cleanup.major.rst deleted file mode 100644 index 4850251d84b8..000000000000 --- a/source/isaaclab/changelog.d/launch-helper-cleanup.major.rst +++ /dev/null @@ -1,25 +0,0 @@ -Changed -^^^^^^^ - -* **Breaking:** Changed ``--viz none`` to parse to an empty list instead of ``None``, so ``args_cli.visualizer is None`` - means no ``--viz`` was passed and ``[]`` means all visualizers are disabled. The ``visualizer_explicit`` and - ``visualizer_disable_all`` launcher arguments are removed; check ``args_cli.visualizer`` instead. -* Changed :func:`~isaaclab.app.launch_simulation` to also detect a ``newton_rtx`` visualizer listed in - ``visualizer_cfgs``, so the OVRTX runtime starts and the Kit conflict check applies. - -Added -^^^^^ - -* Added ``launcher_type`` to :class:`~isaaclab.physics.PhysicsCfg` and :class:`~isaaclab.renderers.RendererCfg`, - defaulting to ``None`` for configs whose runtime needs no launcher. - -Removed -^^^^^^^ - -* **Breaking:** Removed ``SettingsManager.instance()``. Use :func:`~isaaclab.app.get_settings_manager`. -* **Breaking:** Removed ``SettingsManager.set_bool``, ``set_int``, ``set_float``, and ``set_string``. Use - :meth:`~isaaclab.app.SettingsManager.set`, which dispatches on the value type. -* **Breaking:** Removed ``isaaclab.app.make_physics_cfg``. Select the backend with the ``physics`` launcher - argument of :func:`~isaaclab.app.launch_simulation`, or construct the physics config directly. -* **Breaking:** Removed ``isaaclab.app.logging_utils.resolve_python_logging_level``. - :func:`~isaaclab.app.launch_simulation` applies the ``--verbose`` / ``--info`` level itself. diff --git a/source/isaaclab/changelog.d/launch-interrupt-status.rst b/source/isaaclab/changelog.d/launch-interrupt-status.rst deleted file mode 100644 index 0ffbcac80025..000000000000 --- a/source/isaaclab/changelog.d/launch-interrupt-status.rst +++ /dev/null @@ -1,5 +0,0 @@ -Fixed -^^^^^ - -* Fixed :func:`~isaaclab.app.launch_simulation` passing a successful exit status to runtime launchers - after an unhandled Ctrl+C; it now passed exit status 130. diff --git a/source/isaaclab/changelog.d/launch-one-mechanism.major.rst b/source/isaaclab/changelog.d/launch-one-mechanism.major.rst deleted file mode 100644 index 431cc0c25dc7..000000000000 --- a/source/isaaclab/changelog.d/launch-one-mechanism.major.rst +++ /dev/null @@ -1,18 +0,0 @@ -Changed -^^^^^^^ - -* :meth:`~isaaclab.sim.SimulationContext.initialize_visualizers` accepts an optional ``config_filter`` - selecting which pending visualizers to initialize. -* :meth:`~isaaclab.sim.SimulationContext.get_physics_dt` returns :attr:`~isaaclab.sim.SimulationCfg.dt` - directly. -* :class:`~isaaclab.sim.SimulationContext` expects canonical visualizer names in the - ``/isaaclab/visualizer/types`` setting. The deprecated ``newton`` name is still accepted by ``--visualizer`` - and by :func:`~isaaclab.sim.build_simulation_context`, which map it to ``newton_gl``. - -Removed -^^^^^^^ - -* **Breaking:** Removed ``isaaclab.sim.simulation_context.SettingsHelper``. Use - :meth:`~isaaclab.sim.SimulationContext.set_setting` and :meth:`~isaaclab.sim.SimulationContext.get_setting`, - or :func:`~isaaclab.app.get_settings_manager`. -* Removed the Isaac Sim < 5.0 no-op fallback of :func:`~isaaclab.sim.utils.use_stage`. diff --git a/source/isaaclab/changelog.d/launch-simulation-scripts.major.rst b/source/isaaclab/changelog.d/launch-simulation-scripts.major.rst deleted file mode 100644 index c031dcbfbe9f..000000000000 --- a/source/isaaclab/changelog.d/launch-simulation-scripts.major.rst +++ /dev/null @@ -1,29 +0,0 @@ -Changed -^^^^^^^ - -* Changed every script, example, tutorial, and benchmark to start the simulation runtime with - :func:`~isaaclab.app.launch_simulation` and to construct runtime objects from their configs with - :func:`~isaaclab.utils.instantiate`. -* Changed the ``convert_mesh``, ``convert_urdf``, and ``convert_mjcf`` tools to preview the converted asset in the - visualizer selected with ``--viz`` (including ``kit``) instead of a Kit-only viewport. -* Changed the ``run_usd_camera`` and ``run_ray_caster_camera`` tutorials to save images as PNG files with - :func:`~isaaclab.utils.save_images_to_file` instead of Replicator writers. -* Changed ``pick_and_place.py`` to use :class:`~isaaclab.devices.Se3Keyboard`. -* Changed :func:`~isaaclab.app.launch_simulation` to end the process with the status of a ``sys.exit(n)`` raised in - its block; Kit previously exited with 0. -* Changed the ``run_usd_camera`` tutorial to also save floating-point outputs, such as depth and normals, as NumPy - ``.npy`` files when ``--save`` is passed. - -Removed -^^^^^^^ - -* **Breaking:** Reduced the deprecated ``isaaclab.app.AppLauncher`` to a shim for scripts that still use it. - ``AppLauncher(args).app`` still starts Isaac Sim / Kit through :func:`~isaaclab.app.launch_simulation` and - ``app.close(exit_code=n)`` ends the process with ``n``, and - ``AppLauncher.add_app_launcher_args`` still adds the launcher arguments. ``is_available``, ``has_gui``, - ``has_window``, and ``device`` were removed: use ``isaaclab_physx.app.KitLauncher.is_available()``, - :attr:`~isaaclab.sim.SimulationContext.has_gui`, and the simulation config's ``device``. -* Removed the ``check_*`` scripts under the core and PhysX test folders, which duplicated pytest coverage. -* **Breaking:** Renamed ``SimulationContext.is_headless_or_exist_active_visualizer`` to - :meth:`~isaaclab.sim.SimulationContext.is_running`, which also returns False once every started visualizer is - closed instead of treating the emptied visualizer list as a headless run. Replace the calls. diff --git a/source/isaaclab/changelog.d/usd-exchange-3-provider.minor.rst b/source/isaaclab/changelog.d/usd-exchange-3-provider.minor.rst deleted file mode 100644 index 6bc2b6ebbac5..000000000000 --- a/source/isaaclab/changelog.d/usd-exchange-3-provider.minor.rst +++ /dev/null @@ -1,8 +0,0 @@ -Changed -^^^^^^^ - -* **Breaking:** Changed the pinned standalone OpenUSD provider from ``usd-exchange`` 2.3.0 to - 3.0.0. In kit-less installs ``pxr`` is now OpenUSD **26.08** instead of 25.05. Environments - that pin Isaac Lab against OpenUSD 25.05 outside Kit must re-resolve, and any code compiled - or generated against the 25.05 ``pxr`` ABI must be rebuilt against 26.08. Kit-backed runs are - unaffected: Kit serves its own OpenUSD from its extension roots. diff --git a/source/isaaclab/changelog.d/vidurv-deformable-fragments.minor.rst b/source/isaaclab/changelog.d/vidurv-deformable-fragments.minor.rst deleted file mode 100644 index f1106a683910..000000000000 --- a/source/isaaclab/changelog.d/vidurv-deformable-fragments.minor.rst +++ /dev/null @@ -1,47 +0,0 @@ -Added -^^^^^ - -* Added the deformable-body fragment families: :class:`~isaaclab.sim.schemas.DeformableBodyFragment` - and :class:`~isaaclab.sim.schemas.OmniPhysicsDeformableBodyCfg` with the expression-targeted - writers :func:`~isaaclab.sim.schemas.apply_volume_deformable_properties` and - :func:`~isaaclab.sim.schemas.apply_surface_deformable_properties`. -* Added deformable material fragments - (:class:`~isaaclab.sim.spawners.materials.OmniPhysicsDeformableMaterialCfg`, - :class:`~isaaclab.sim.spawners.materials.OmniPhysicsSurfaceDeformableMaterialCfg`) under the new - :class:`~isaaclab.sim.spawners.materials.DeformableMaterialFragment` marker, accepted by the - ``physics_material`` spawner fields. -* Added ``volume_deformable_props`` and ``surface_deformable_props`` mappings to - :class:`~isaaclab.sim.spawners.DeformableObjectSpawnerCfg`, applying deformable fragments by - target pattern relative to the spawn prim. A bare fragment or list is shorthand for the spawn - prim itself. Alongside either slot, ``collision_props`` must be given as collision fragments; a - legacy collision cfg raises, since it cannot reach the simulation mesh. -* Added :meth:`~isaaclab.physics.PhysicsManager.setup_deformable_body` so each physics backend - applies its own deformable anchor schemas. -* Added ``tetrahedralization_edge_length_fac`` to - :func:`~isaaclab.sim.schemas.apply_volume_deformable_properties`, so the volume fragment writer - controls the automatic tetrahedralization target edge length like - :func:`~isaaclab.sim.schemas.define_deformable_body_properties` does. - -Changed -^^^^^^^ - -* Changed :attr:`~isaaclab.sim.spawners.meshes.MeshCfg.edge_refinement` to apply to the - ``volume_deformable_props`` and ``surface_deformable_props`` slots as well, not only the legacy - ``deformable_props`` field. -* Changed physics-material fragment lists to allow mixing rigid-body and deformable material - fragments on one material prim; the ``UsdPhysics.MaterialAPI`` anchor is applied only when a - rigid-body fragment is present. The writer is now named - :func:`~isaaclab.sim.spawners.materials.spawn_physics_material_from_fragments` accordingly. -* Changed :func:`~isaaclab.sim.schemas.apply_volume_deformable_properties` and - :func:`~isaaclab.sim.schemas.apply_surface_deformable_properties` to skip matched prims that are - already authored as the other deformable type. Such a prim is reported with a warning and drags - the return value to ``False`` instead of receiving a family it does not simulate with. Target the - prim through the writer matching its authored type. - -Deprecated -^^^^^^^^^^ - -* Deprecated :func:`~isaaclab.sim.spawners.materials.spawn_rigid_body_material_from_fragments` in - favor of :func:`~isaaclab.sim.spawners.materials.spawn_physics_material_from_fragments`, which - also accepts deformable material fragments. The old name still forwards to the new writer and - emits a ``DeprecationWarning``; it is scheduled for removal in 3.2. diff --git a/source/isaaclab/docs/CHANGELOG.rst b/source/isaaclab/docs/CHANGELOG.rst index b88dc63a4ef0..0b4aae421047 100644 --- a/source/isaaclab/docs/CHANGELOG.rst +++ b/source/isaaclab/docs/CHANGELOG.rst @@ -1,6 +1,120 @@ Changelog --------- +32.0.0 (2026-09-29) +~~~~~~~~~~~~~~~~~~~ + +Added +^^^^^ + +* Added the deformable-body fragment families: :class:`~isaaclab.sim.schemas.DeformableBodyFragment` + and :class:`~isaaclab.sim.schemas.OmniPhysicsDeformableBodyCfg` with the expression-targeted + writers :func:`~isaaclab.sim.schemas.apply_volume_deformable_properties` and + :func:`~isaaclab.sim.schemas.apply_surface_deformable_properties`. +* Added deformable material fragments + (:class:`~isaaclab.sim.spawners.materials.OmniPhysicsDeformableMaterialCfg`, + :class:`~isaaclab.sim.spawners.materials.OmniPhysicsSurfaceDeformableMaterialCfg`) under the new + :class:`~isaaclab.sim.spawners.materials.DeformableMaterialFragment` marker, accepted by the + ``physics_material`` spawner fields. +* Added ``volume_deformable_props`` and ``surface_deformable_props`` mappings to + :class:`~isaaclab.sim.spawners.DeformableObjectSpawnerCfg`, applying deformable fragments by + target pattern relative to the spawn prim. A bare fragment or list is shorthand for the spawn + prim itself. Alongside either slot, ``collision_props`` must be given as collision fragments; a + legacy collision cfg raises, since it cannot reach the simulation mesh. +* Added :meth:`~isaaclab.physics.PhysicsManager.setup_deformable_body` so each physics backend + applies its own deformable anchor schemas. +* Added ``tetrahedralization_edge_length_fac`` to + :func:`~isaaclab.sim.schemas.apply_volume_deformable_properties`, so the volume fragment writer + controls the automatic tetrahedralization target edge length like + :func:`~isaaclab.sim.schemas.define_deformable_body_properties` does. +* Added ``launcher_type`` to :class:`~isaaclab.physics.PhysicsCfg` and :class:`~isaaclab.renderers.RendererCfg`, + defaulting to ``None`` for configs whose runtime needs no launcher. + +Changed +^^^^^^^ + +* Changed every script, example, tutorial, and benchmark to start the simulation runtime with + :func:`~isaaclab.app.launch_simulation` and to construct runtime objects from their configs with + :func:`~isaaclab.utils.instantiate`. +* Changed the ``convert_mesh``, ``convert_urdf``, and ``convert_mjcf`` tools to preview the converted asset in the + visualizer selected with ``--viz`` (including ``kit``) instead of a Kit-only viewport. +* Changed the ``run_usd_camera`` and ``run_ray_caster_camera`` tutorials to save images as PNG files with + :func:`~isaaclab.utils.save_images_to_file` instead of Replicator writers. +* Changed ``pick_and_place.py`` to use :class:`~isaaclab.devices.Se3Keyboard`. +* Changed :func:`~isaaclab.app.launch_simulation` to end the process with the status of a ``sys.exit(n)`` raised in + its block; Kit previously exited with 0. +* Changed the ``run_usd_camera`` tutorial to also save floating-point outputs, such as depth and normals, as NumPy + ``.npy`` files when ``--save`` is passed. +* Changed :attr:`~isaaclab.sim.spawners.meshes.MeshCfg.edge_refinement` to apply to the + ``volume_deformable_props`` and ``surface_deformable_props`` slots as well, not only the legacy + ``deformable_props`` field. +* Changed physics-material fragment lists to allow mixing rigid-body and deformable material + fragments on one material prim; the ``UsdPhysics.MaterialAPI`` anchor is applied only when a + rigid-body fragment is present. The writer is now named + :func:`~isaaclab.sim.spawners.materials.spawn_physics_material_from_fragments` accordingly. +* Changed :func:`~isaaclab.sim.schemas.apply_volume_deformable_properties` and + :func:`~isaaclab.sim.schemas.apply_surface_deformable_properties` to skip matched prims that are + already authored as the other deformable type. Such a prim is reported with a warning and drags + the return value to ``False`` instead of receiving a family it does not simulate with. Target the + prim through the writer matching its authored type. +* **Breaking:** Changed ``--viz none`` to parse to an empty list instead of ``None``, so ``args_cli.visualizer is None`` + means no ``--viz`` was passed and ``[]`` means all visualizers are disabled. The ``visualizer_explicit`` and + ``visualizer_disable_all`` launcher arguments are removed; check ``args_cli.visualizer`` instead. +* Changed :func:`~isaaclab.app.launch_simulation` to also detect a ``newton_rtx`` visualizer listed in + ``visualizer_cfgs``, so the OVRTX runtime starts and the Kit conflict check applies. +* **Breaking:** Changed the pinned standalone OpenUSD provider from ``usd-exchange`` 2.3.0 to + 3.0.0. In kit-less installs ``pxr`` is now OpenUSD **26.08** instead of 25.05. Environments + that pin Isaac Lab against OpenUSD 25.05 outside Kit must re-resolve, and any code compiled + or generated against the 25.05 ``pxr`` ABI must be rebuilt against 26.08. Kit-backed runs are + unaffected: Kit serves its own OpenUSD from its extension roots. +* :meth:`~isaaclab.sim.SimulationContext.initialize_visualizers` accepts an optional ``config_filter`` + selecting which pending visualizers to initialize. +* :meth:`~isaaclab.sim.SimulationContext.get_physics_dt` returns :attr:`~isaaclab.sim.SimulationCfg.dt` + directly. +* :class:`~isaaclab.sim.SimulationContext` expects canonical visualizer names in the + ``/isaaclab/visualizer/types`` setting. The deprecated ``newton`` name is still accepted by ``--visualizer`` + and by :func:`~isaaclab.sim.build_simulation_context`, which map it to ``newton_gl``. + +Deprecated +^^^^^^^^^^ + +* Deprecated :func:`~isaaclab.sim.spawners.materials.spawn_rigid_body_material_from_fragments` in + favor of :func:`~isaaclab.sim.spawners.materials.spawn_physics_material_from_fragments`, which + also accepts deformable material fragments. The old name still forwards to the new writer and + emits a ``DeprecationWarning``; it is scheduled for removal in 3.2. + +Removed +^^^^^^^ + +* **Breaking:** Reduced the deprecated ``isaaclab.app.AppLauncher`` to a shim for scripts that still use it. + ``AppLauncher(args).app`` still starts Isaac Sim / Kit through :func:`~isaaclab.app.launch_simulation` and + ``app.close(exit_code=n)`` ends the process with ``n``, and + ``AppLauncher.add_app_launcher_args`` still adds the launcher arguments. ``is_available``, ``has_gui``, + ``has_window``, and ``device`` were removed: use ``isaaclab_physx.app.KitLauncher.is_available()``, + :attr:`~isaaclab.sim.SimulationContext.has_gui`, and the simulation config's ``device``. +* Removed the ``check_*`` scripts under the core and PhysX test folders, which duplicated pytest coverage. +* **Breaking:** Renamed ``SimulationContext.is_headless_or_exist_active_visualizer`` to + :meth:`~isaaclab.sim.SimulationContext.is_running`, which also returns False once every started visualizer is + closed instead of treating the emptied visualizer list as a headless run. Replace the calls. +* **Breaking:** Removed ``SettingsManager.instance()``. Use :func:`~isaaclab.app.get_settings_manager`. +* **Breaking:** Removed ``SettingsManager.set_bool``, ``set_int``, ``set_float``, and ``set_string``. Use + :meth:`~isaaclab.app.SettingsManager.set`, which dispatches on the value type. +* **Breaking:** Removed ``isaaclab.app.make_physics_cfg``. Select the backend with the ``physics`` launcher + argument of :func:`~isaaclab.app.launch_simulation`, or construct the physics config directly. +* **Breaking:** Removed ``isaaclab.app.logging_utils.resolve_python_logging_level``. + :func:`~isaaclab.app.launch_simulation` applies the ``--verbose`` / ``--info`` level itself. +* **Breaking:** Removed ``isaaclab.sim.simulation_context.SettingsHelper``. Use + :meth:`~isaaclab.sim.SimulationContext.set_setting` and :meth:`~isaaclab.sim.SimulationContext.get_setting`, + or :func:`~isaaclab.app.get_settings_manager`. +* Removed the Isaac Sim < 5.0 no-op fallback of :func:`~isaaclab.sim.utils.use_stage`. + +Fixed +^^^^^ + +* Fixed :func:`~isaaclab.app.launch_simulation` passing a successful exit status to runtime launchers + after an unhandled Ctrl+C; it now passed exit status 130. + + 31.0.0 (2026-09-28) ~~~~~~~~~~~~~~~~~~~ diff --git a/source/isaaclab/pyproject.toml b/source/isaaclab/pyproject.toml index fa7ede4bab13..dec277df0135 100644 --- a/source/isaaclab/pyproject.toml +++ b/source/isaaclab/pyproject.toml @@ -9,7 +9,7 @@ build-backend = "setuptools.build_meta" [project] name = "isaaclab" -version = "31.0.0" +version = "32.0.0" description = "Extension providing main framework interfaces and abstractions for robot learning." license = {text = "BSD-3-Clause"} authors = [{name = "Isaac Lab Project Developers"}] diff --git a/source/isaaclab_contrib/changelog.d/admm-contact-capacity.minor.rst b/source/isaaclab_contrib/changelog.d/admm-contact-capacity.minor.rst deleted file mode 100644 index 87e5da866229..000000000000 --- a/source/isaaclab_contrib/changelog.d/admm-contact-capacity.minor.rst +++ /dev/null @@ -1,8 +0,0 @@ -Added -^^^^^ - -* Added ``CouplerAdmmCfg.contact_max_triangle_pairs`` and - ``contact_reduction_hashtable_size_factor`` to configure the internal ADMM collision - buffers independently of the outer Newton collision pipeline, preserving Newton's - defaults. Validation rejected triangle-pair capacities at or above ``2**20`` with - ``"latest"`` or ``"sticky"`` matching and explicit overrides unsupported by Newton. diff --git a/source/isaaclab_contrib/docs/CHANGELOG.rst b/source/isaaclab_contrib/docs/CHANGELOG.rst index 52940d34913c..7018c5e97047 100644 --- a/source/isaaclab_contrib/docs/CHANGELOG.rst +++ b/source/isaaclab_contrib/docs/CHANGELOG.rst @@ -1,6 +1,19 @@ Changelog --------- +3.1.0 (2026-09-29) +~~~~~~~~~~~~~~~~~~ + +Added +^^^^^ + +* Added ``CouplerAdmmCfg.contact_max_triangle_pairs`` and + ``contact_reduction_hashtable_size_factor`` to configure the internal ADMM collision + buffers independently of the outer Newton collision pipeline, preserving Newton's + defaults. Validation rejected triangle-pair capacities at or above ``2**20`` with + ``"latest"`` or ``"sticky"`` matching and explicit overrides unsupported by Newton. + + 3.0.0 (2026-09-28) ~~~~~~~~~~~~~~~~~~ diff --git a/source/isaaclab_contrib/pyproject.toml b/source/isaaclab_contrib/pyproject.toml index 33e81b1bf311..81c9ed3a18af 100644 --- a/source/isaaclab_contrib/pyproject.toml +++ b/source/isaaclab_contrib/pyproject.toml @@ -9,7 +9,7 @@ build-backend = "setuptools.build_meta" [project] name = "isaaclab_contrib" -version = "3.0.0" +version = "3.1.0" description = "An extension used to stage and integrate externally contributed features and implementations." license = {text = "BSD-3-Clause"} authors = [{name = "Isaac Lab Project Developers"}] diff --git a/source/isaaclab_newton/changelog.d/core-cleanup-sim-authoring.skip b/source/isaaclab_newton/changelog.d/core-cleanup-sim-authoring.skip deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/source/isaaclab_newton/changelog.d/newton-coordinate-targets.skip b/source/isaaclab_newton/changelog.d/newton-coordinate-targets.skip deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/source/isaaclab_newton/changelog.d/vidurv-deformable-fragments.minor.rst b/source/isaaclab_newton/changelog.d/vidurv-deformable-fragments.minor.rst deleted file mode 100644 index b8350cd20073..000000000000 --- a/source/isaaclab_newton/changelog.d/vidurv-deformable-fragments.minor.rst +++ /dev/null @@ -1,9 +0,0 @@ -Added -^^^^^ - -* Added the Newton deformable material fragments - :class:`~isaaclab_newton.sim.spawners.materials.NewtonVolumeDeformableMaterialCfg` and - :class:`~isaaclab_newton.sim.spawners.materials.NewtonSurfaceDeformableMaterialCfg`, authoring the - ``newton:*`` attributes read by the Newton deformable-body builder hooks. -* Added :meth:`~isaaclab_newton.physics.NewtonManager.setup_deformable_body`, applying Newton's - token deformable anchor schemas and syncing the visual mesh geometry from the simulation mesh. diff --git a/source/isaaclab_newton/docs/CHANGELOG.rst b/source/isaaclab_newton/docs/CHANGELOG.rst index d51a82f8ce62..92cb8aefd29f 100644 --- a/source/isaaclab_newton/docs/CHANGELOG.rst +++ b/source/isaaclab_newton/docs/CHANGELOG.rst @@ -1,6 +1,20 @@ Changelog --------- +9.1.0 (2026-09-29) +~~~~~~~~~~~~~~~~~~ + +Added +^^^^^ + +* Added the Newton deformable material fragments + :class:`~isaaclab_newton.sim.spawners.materials.NewtonVolumeDeformableMaterialCfg` and + :class:`~isaaclab_newton.sim.spawners.materials.NewtonSurfaceDeformableMaterialCfg`, authoring the + ``newton:*`` attributes read by the Newton deformable-body builder hooks. +* Added :meth:`~isaaclab_newton.physics.NewtonManager.setup_deformable_body`, applying Newton's + token deformable anchor schemas and syncing the visual mesh geometry from the simulation mesh. + + 9.0.0 (2026-09-28) ~~~~~~~~~~~~~~~~~~ diff --git a/source/isaaclab_newton/pyproject.toml b/source/isaaclab_newton/pyproject.toml index cd464434e000..fe05d0b3714a 100644 --- a/source/isaaclab_newton/pyproject.toml +++ b/source/isaaclab_newton/pyproject.toml @@ -9,7 +9,7 @@ build-backend = "setuptools.build_meta" [project] name = "isaaclab_newton" -version = "9.0.0" +version = "9.1.0" description = "Extension providing IsaacLab with Newton specific abstractions." license = {text = "BSD-3-Clause"} authors = [{name = "Isaac Lab Project Developers"}] diff --git a/source/isaaclab_ov/changelog.d/core-cleanup-sim-authoring.skip b/source/isaaclab_ov/changelog.d/core-cleanup-sim-authoring.skip deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/source/isaaclab_ov/changelog.d/launch-helper-cleanup.skip b/source/isaaclab_ov/changelog.d/launch-helper-cleanup.skip deleted file mode 100644 index a3cf5c64b516..000000000000 --- a/source/isaaclab_ov/changelog.d/launch-helper-cleanup.skip +++ /dev/null @@ -1 +0,0 @@ -Updated tests for the launcher and settings helper cleanup. diff --git a/source/isaaclab_ov/changelog.d/ovphysx-contact-details.minor.rst b/source/isaaclab_ov/changelog.d/ovphysx-contact-details.minor.rst deleted file mode 100644 index b055b6444563..000000000000 --- a/source/isaaclab_ov/changelog.d/ovphysx-contact-details.minor.rst +++ /dev/null @@ -1,10 +0,0 @@ -Added -^^^^^ - -* Added filtered contact-position and friction-force tracking to the OvPhysX contact - sensor, including friction-force history and selective reset. Both tracking options - required non-empty filters and a positive ``max_contact_data_count_per_prim``. - Truncated SDK contact buffers were bounded before aggregation. - Contact positions and friction forces were aggregated in a single kernel launch - while retaining independent raw-data buffers. Aggregate friction reporting and the - existing normal-only force aliases remained unchanged. diff --git a/source/isaaclab_ov/changelog.d/ovphysx-external-forces-default.major.rst b/source/isaaclab_ov/changelog.d/ovphysx-external-forces-default.major.rst deleted file mode 100644 index 89a4c29d74f4..000000000000 --- a/source/isaaclab_ov/changelog.d/ovphysx-external-forces-default.major.rst +++ /dev/null @@ -1,8 +0,0 @@ -Changed -^^^^^^^ - -* **Breaking:** Changed :attr:`~isaaclab_ov.physics.OvPhysxCfg.enable_external_forces_every_iteration` - to default to ``True``, matching the PhysX backend's TGS force integration setting. - This changed the default velocity updates and contact-force response of OvPhysX simulations. - Set ``enable_external_forces_every_iteration=False`` explicitly in ``OvPhysxCfg`` to retain - the previous behavior. diff --git a/source/isaaclab_ov/changelog.d/ovrtx-submit-all-render-products.rst b/source/isaaclab_ov/changelog.d/ovrtx-submit-all-render-products.rst deleted file mode 100644 index d283f491d278..000000000000 --- a/source/isaaclab_ov/changelog.d/ovrtx-submit-all-render-products.rst +++ /dev/null @@ -1,9 +0,0 @@ -Fixed -^^^^^ - -* Fixed a large rendering slowdown in the OVRTX renderer by submitting every registered - render product on each step instead of only the requested ones. OVRTX batches products - within a step, so naming a subset made every product that re-entered the set on a later - step far more expensive. Only the requested cameras are read back, so products left out - of a request keep their previous outputs. Both the legacy and ``ovstage`` submission - paths were updated. diff --git a/source/isaaclab_ov/changelog.d/usd-exchange-3-drop-thread-limit.skip b/source/isaaclab_ov/changelog.d/usd-exchange-3-drop-thread-limit.skip deleted file mode 100644 index b99988c98b6f..000000000000 --- a/source/isaaclab_ov/changelog.d/usd-exchange-3-drop-thread-limit.skip +++ /dev/null @@ -1,3 +0,0 @@ -Test-only change: removed the OpenUSD work-thread limit from the kitless OVPhysX test -configuration. usd-exchange 3.0.0 supplies OpenUSD 26.08, which satisfies the >=26.5 -precondition the workaround was gated on. No user-facing behavior changes. diff --git a/source/isaaclab_ov/docs/CHANGELOG.rst b/source/isaaclab_ov/docs/CHANGELOG.rst index 96d8c8ec4427..3d486c727fde 100644 --- a/source/isaaclab_ov/docs/CHANGELOG.rst +++ b/source/isaaclab_ov/docs/CHANGELOG.rst @@ -1,6 +1,40 @@ Changelog --------- +4.0.0 (2026-09-29) +~~~~~~~~~~~~~~~~~~ + +Added +^^^^^ + +* Added filtered contact-position and friction-force tracking to the OvPhysX contact + sensor, including friction-force history and selective reset. Both tracking options + required non-empty filters and a positive ``max_contact_data_count_per_prim``. + Truncated SDK contact buffers were bounded before aggregation. + Contact positions and friction forces were aggregated in a single kernel launch + while retaining independent raw-data buffers. Aggregate friction reporting and the + existing normal-only force aliases remained unchanged. + +Changed +^^^^^^^ + +* **Breaking:** Changed :attr:`~isaaclab_ov.physics.OvPhysxCfg.enable_external_forces_every_iteration` + to default to ``True``, matching the PhysX backend's TGS force integration setting. + This changed the default velocity updates and contact-force response of OvPhysX simulations. + Set ``enable_external_forces_every_iteration=False`` explicitly in ``OvPhysxCfg`` to retain + the previous behavior. + +Fixed +^^^^^ + +* Fixed a large rendering slowdown in the OVRTX renderer by submitting every registered + render product on each step instead of only the requested ones. OVRTX batches products + within a step, so naming a subset made every product that re-entered the set on a later + step far more expensive. Only the requested cameras are read back, so products left out + of a request keep their previous outputs. Both the legacy and ``ovstage`` submission + paths were updated. + + 3.5.0 (2026-09-28) ~~~~~~~~~~~~~~~~~~ diff --git a/source/isaaclab_ov/pyproject.toml b/source/isaaclab_ov/pyproject.toml index 8aaa5fc1e121..b0d45d79189b 100644 --- a/source/isaaclab_ov/pyproject.toml +++ b/source/isaaclab_ov/pyproject.toml @@ -9,7 +9,7 @@ build-backend = "setuptools.build_meta" [project] name = "isaaclab_ov" -version = "3.5.0" +version = "4.0.0" description = "Extension providing Omniverse rendering and OVPhysX simulation integrations." license = {text = "BSD-3-Clause"} authors = [{name = "Isaac Lab Project Developers"}] diff --git a/source/isaaclab_physx/changelog.d/core-cleanup-sim-authoring.skip b/source/isaaclab_physx/changelog.d/core-cleanup-sim-authoring.skip deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/source/isaaclab_physx/changelog.d/kit-interrupt-cleanup.rst b/source/isaaclab_physx/changelog.d/kit-interrupt-cleanup.rst deleted file mode 100644 index 38e0b0e9e671..000000000000 --- a/source/isaaclab_physx/changelog.d/kit-interrupt-cleanup.rst +++ /dev/null @@ -1,5 +0,0 @@ -Fixed -^^^^^ - -* Prevented repeated Ctrl+C presses from interrupting Kit shutdown, restoring the previous signal - handler when shutdown returned. diff --git a/source/isaaclab_physx/changelog.d/launch-helper-cleanup.rst b/source/isaaclab_physx/changelog.d/launch-helper-cleanup.rst deleted file mode 100644 index 2617b510692c..000000000000 --- a/source/isaaclab_physx/changelog.d/launch-helper-cleanup.rst +++ /dev/null @@ -1,6 +0,0 @@ -Changed -^^^^^^^ - -* **Breaking:** Renamed ``KitLauncher.add_app_launcher_args`` to - :meth:`~isaaclab_physx.app.KitLauncher.add_launcher_args`, matching :func:`~isaaclab.app.add_launcher_args`. - Replace the calls, or call :func:`~isaaclab.app.add_launcher_args`. diff --git a/source/isaaclab_physx/changelog.d/launch-simulation-scripts.rst b/source/isaaclab_physx/changelog.d/launch-simulation-scripts.rst deleted file mode 100644 index 301c20d6dbb6..000000000000 --- a/source/isaaclab_physx/changelog.d/launch-simulation-scripts.rst +++ /dev/null @@ -1,11 +0,0 @@ -Added -^^^^^ - -* Added :func:`~isaaclab_physx.renderers.isaac_rtx_renderer_utils.wait_for_stage_load` to run Kit app updates - until the USD stage has no assets left to load. - -Removed -^^^^^^^ - -* Removed ``isaaclab_physx.app.show_stage_in_viewport``. Preview a USD file by spawning it into a scene and - rendering it with the visualizer selected with ``--viz``, as the ``convert_*`` tools do. diff --git a/source/isaaclab_physx/changelog.d/vidurv-deformable-fragments.minor.rst b/source/isaaclab_physx/changelog.d/vidurv-deformable-fragments.minor.rst deleted file mode 100644 index 59399c84c3b3..000000000000 --- a/source/isaaclab_physx/changelog.d/vidurv-deformable-fragments.minor.rst +++ /dev/null @@ -1,15 +0,0 @@ -Added -^^^^^ - -* Added the PhysX deformable-body fragments :class:`~isaaclab_physx.sim.schemas.PhysxDeformableBodyCfg` - and :class:`~isaaclab_physx.sim.schemas.PhysxSurfaceDeformableBodyCfg`, covering the solver, - damping, and self-collision attributes from ``PhysxBaseDeformableBodyAPI`` and the - surface-only collision attributes from ``PhysxSurfaceDeformableBodyAPI``. -* Added the PhysX deformable material fragments - :class:`~isaaclab_physx.sim.spawners.materials.PhysxDeformableMaterialCfg` and - :class:`~isaaclab_physx.sim.spawners.materials.PhysxSurfaceDeformableMaterialCfg`, authoring - ``physxDeformableMaterial:*`` attributes from ``PhysxDeformableMaterialAPI`` and - ``PhysxSurfaceDeformableMaterialAPI``. -* Added :meth:`~isaaclab_physx.physics.PhysxManager.setup_deformable_body`, applying the - OmniPhysics deformable sim and body anchor APIs, rest state, and visual bind pose to a prepared - deformable mesh. diff --git a/source/isaaclab_physx/docs/CHANGELOG.rst b/source/isaaclab_physx/docs/CHANGELOG.rst index f1888880e4de..590cafcc449d 100644 --- a/source/isaaclab_physx/docs/CHANGELOG.rst +++ b/source/isaaclab_physx/docs/CHANGELOG.rst @@ -1,6 +1,47 @@ Changelog --------- +7.4.0 (2026-09-29) +~~~~~~~~~~~~~~~~~~ + +Added +^^^^^ + +* Added :func:`~isaaclab_physx.renderers.isaac_rtx_renderer_utils.wait_for_stage_load` to run Kit app updates + until the USD stage has no assets left to load. +* Added the PhysX deformable-body fragments :class:`~isaaclab_physx.sim.schemas.PhysxDeformableBodyCfg` + and :class:`~isaaclab_physx.sim.schemas.PhysxSurfaceDeformableBodyCfg`, covering the solver, + damping, and self-collision attributes from ``PhysxBaseDeformableBodyAPI`` and the + surface-only collision attributes from ``PhysxSurfaceDeformableBodyAPI``. +* Added the PhysX deformable material fragments + :class:`~isaaclab_physx.sim.spawners.materials.PhysxDeformableMaterialCfg` and + :class:`~isaaclab_physx.sim.spawners.materials.PhysxSurfaceDeformableMaterialCfg`, authoring + ``physxDeformableMaterial:*`` attributes from ``PhysxDeformableMaterialAPI`` and + ``PhysxSurfaceDeformableMaterialAPI``. +* Added :meth:`~isaaclab_physx.physics.PhysxManager.setup_deformable_body`, applying the + OmniPhysics deformable sim and body anchor APIs, rest state, and visual bind pose to a prepared + deformable mesh. + +Changed +^^^^^^^ + +* **Breaking:** Renamed ``KitLauncher.add_app_launcher_args`` to + :meth:`~isaaclab_physx.app.KitLauncher.add_launcher_args`, matching :func:`~isaaclab.app.add_launcher_args`. + Replace the calls, or call :func:`~isaaclab.app.add_launcher_args`. + +Removed +^^^^^^^ + +* Removed ``isaaclab_physx.app.show_stage_in_viewport``. Preview a USD file by spawning it into a scene and + rendering it with the visualizer selected with ``--viz``, as the ``convert_*`` tools do. + +Fixed +^^^^^ + +* Prevented repeated Ctrl+C presses from interrupting Kit shutdown, restoring the previous signal + handler when shutdown returned. + + 7.3.0 (2026-09-28) ~~~~~~~~~~~~~~~~~~ diff --git a/source/isaaclab_physx/pyproject.toml b/source/isaaclab_physx/pyproject.toml index f0eee36f2453..65603c415d2f 100644 --- a/source/isaaclab_physx/pyproject.toml +++ b/source/isaaclab_physx/pyproject.toml @@ -9,7 +9,7 @@ build-backend = "setuptools.build_meta" [project] name = "isaaclab_physx" -version = "7.3.0" +version = "7.4.0" description = "Extension providing IsaacLab with PhysX specific abstractions." license = {text = "BSD-3-Clause"} authors = [{name = "Isaac Lab Project Developers"}] diff --git a/source/isaaclab_rl/changelog.d/launch-helper-cleanup.skip b/source/isaaclab_rl/changelog.d/launch-helper-cleanup.skip deleted file mode 100644 index cee64c9ed00f..000000000000 --- a/source/isaaclab_rl/changelog.d/launch-helper-cleanup.skip +++ /dev/null @@ -1 +0,0 @@ -Switched a test to SettingsManager.set; no behavior change. diff --git a/source/isaaclab_rl/changelog.d/launch-simulation-scripts.skip b/source/isaaclab_rl/changelog.d/launch-simulation-scripts.skip deleted file mode 100644 index c5bdf63b8eb8..000000000000 --- a/source/isaaclab_rl/changelog.d/launch-simulation-scripts.skip +++ /dev/null @@ -1 +0,0 @@ -Renamed a SimulationContext.is_running call. diff --git a/source/isaaclab_rl/changelog.d/mtrepte-fix-shutdown-hang-multi-visualizer.rst b/source/isaaclab_rl/changelog.d/mtrepte-fix-shutdown-hang-multi-visualizer.rst deleted file mode 100644 index 972fdf8a0cca..000000000000 --- a/source/isaaclab_rl/changelog.d/mtrepte-fix-shutdown-hang-multi-visualizer.rst +++ /dev/null @@ -1,6 +0,0 @@ -Fixed -^^^^^ - -* Fixed train/play entrypoints leaving environments open after setup failures or interrupts. - Cleanup closed the final environment wrapper and ignored further Ctrl+C presses during teardown. - Random/zero agents used the same cleanup and propagated interrupts instead of reporting success. diff --git a/source/isaaclab_rl/changelog.d/usd-exchange-3-drop-thread-limit.skip b/source/isaaclab_rl/changelog.d/usd-exchange-3-drop-thread-limit.skip deleted file mode 100644 index 89aa9f5d690f..000000000000 --- a/source/isaaclab_rl/changelog.d/usd-exchange-3-drop-thread-limit.skip +++ /dev/null @@ -1,4 +0,0 @@ -Test-only change: removed the OpenUSD work-thread limit from the LEAPP export tests -and the hidden --limit_cpu_threads passthrough on the export CLI. usd-exchange 3.0.0 -supplies OpenUSD 26.08, which satisfies the >=26.5 precondition the workaround was -gated on. No user-facing behavior changes. diff --git a/source/isaaclab_rl/docs/CHANGELOG.rst b/source/isaaclab_rl/docs/CHANGELOG.rst index afeba11b60c4..2f2cf2de3a1d 100644 --- a/source/isaaclab_rl/docs/CHANGELOG.rst +++ b/source/isaaclab_rl/docs/CHANGELOG.rst @@ -1,6 +1,17 @@ Changelog --------- +1.3.1 (2026-09-29) +~~~~~~~~~~~~~~~~~~ + +Fixed +^^^^^ + +* Fixed train/play entrypoints leaving environments open after setup failures or interrupts. + Cleanup closed the final environment wrapper and ignored further Ctrl+C presses during teardown. + Random/zero agents used the same cleanup and propagated interrupts instead of reporting success. + + 1.3.0 (2026-09-28) ~~~~~~~~~~~~~~~~~~ diff --git a/source/isaaclab_rl/pyproject.toml b/source/isaaclab_rl/pyproject.toml index f919eb93612c..2349e2ee5e63 100644 --- a/source/isaaclab_rl/pyproject.toml +++ b/source/isaaclab_rl/pyproject.toml @@ -9,7 +9,7 @@ build-backend = "setuptools.build_meta" [project] name = "isaaclab_rl" -version = "1.3.0" +version = "1.3.1" description = "Extension containing reinforcement learning related utilities." license = {text = "BSD-3-Clause"} authors = [{name = "Isaac Lab Project Developers"}] diff --git a/source/isaaclab_tasks/changelog.d/camera-perf-07-kuka-image-mdp.minor.rst b/source/isaaclab_tasks/changelog.d/camera-perf-07-kuka-image-mdp.minor.rst deleted file mode 100644 index 1d9c6ddf5808..000000000000 --- a/source/isaaclab_tasks/changelog.d/camera-perf-07-kuka-image-mdp.minor.rst +++ /dev/null @@ -1,13 +0,0 @@ -Changed -^^^^^^^ - -* Changed the Kuka Allegro Lift camera observations to use the shared - :class:`~isaaclab.envs.mdp.observations.image_rgb`, - :class:`~isaaclab.envs.mdp.observations.image_depth`, and - :class:`~isaaclab.envs.mdp.observations.image_segmentation` terms and to emit raw camera images, uint8 for - color. The spatial-softmax policy model now applies the fixed-range normalization, including in - exported JIT and ONNX policies, which cuts rollout image memory 4x. Existing RGB and depth checkpoints loaded - unchanged; policies exported before this change expect normalized images. Albedo observations - now discard the unused alpha channel; keep ``vision_camera`` for existing four-channel albedo - policies, or retrain with the three-channel observation. -* Disabled the RSL-RL per-step NaN check for the Kuka Allegro camera runners. diff --git a/source/isaaclab_tasks/changelog.d/fix-canonical-render-ovphysx.rst b/source/isaaclab_tasks/changelog.d/fix-canonical-render-ovphysx.rst deleted file mode 100644 index 551284550232..000000000000 --- a/source/isaaclab_tasks/changelog.d/fix-canonical-render-ovphysx.rst +++ /dev/null @@ -1,14 +0,0 @@ -Fixed -^^^^^ - -* Added the missing ``ovphysx`` physics preset to ``Isaac-RenderBenchmark-Franka-Cabinet`` - and enabled automatic ``physx`` selection to use OvPhysX when running without Kit. - -Changed -^^^^^^^ - -* **Breaking:** Changed the canonical render task's unset ``BENCHMARK_MODE`` default to - ``None``, disabling benchmark animation and scope profiling. Set ``BENCHMARK_MODE=render`` - to retain direct posing or ``BENCHMARK_MODE=physics_render`` for actuator tracking; - scope timings remained opt-in through their profiling flags. Renderer sweep users must - also set an explicit benchmark mode to collect timings. diff --git a/source/isaaclab_tasks/changelog.d/g1-xr-camera-pip.rst b/source/isaaclab_tasks/changelog.d/g1-xr-camera-pip.rst deleted file mode 100644 index 56c2cc0baf94..000000000000 --- a/source/isaaclab_tasks/changelog.d/g1-xr-camera-pip.rst +++ /dev/null @@ -1,9 +0,0 @@ -Changed -^^^^^^^ - -* Enabled the calibrated ``robot_pov_cam`` as a head-locked XR picture-in-picture - panel for the G1 locomanipulation and fixed-base upper-body IK tasks. Fixed-base - G1 gained a camera sensor for PiP without changing its policy observations. - XR runs with enabled PiP now require ``--num_envs 1``. To retain multi-environment - XR operation, set ``env.isaac_teleop.xr_camera_feeds=[]`` to disable PiP without - removing the camera sensor or recorded observations. diff --git a/source/isaaclab_tasks/changelog.d/launch-helper-cleanup.skip b/source/isaaclab_tasks/changelog.d/launch-helper-cleanup.skip deleted file mode 100644 index a3cf5c64b516..000000000000 --- a/source/isaaclab_tasks/changelog.d/launch-helper-cleanup.skip +++ /dev/null @@ -1 +0,0 @@ -Updated tests for the launcher and settings helper cleanup. diff --git a/source/isaaclab_tasks/changelog.d/launch-one-mechanism.major.rst b/source/isaaclab_tasks/changelog.d/launch-one-mechanism.major.rst deleted file mode 100644 index 9dba10fcfc5d..000000000000 --- a/source/isaaclab_tasks/changelog.d/launch-one-mechanism.major.rst +++ /dev/null @@ -1,9 +0,0 @@ -Removed -^^^^^^^ - -* **Breaking:** Removed ``isaaclab_tasks.utils.hydra_task_config``. Call - :func:`~isaaclab_tasks.utils.resolve_task_config` and pass the returned ``(env_cfg, agent_cfg)`` to your - entry function. -* **Breaking:** Removed ``isaaclab_tasks.utils.hydra.parse_overrides`` and - ``isaaclab_tasks.utils.hydra.apply_overrides``. Pass the same command-line tokens to - :func:`~isaaclab_tasks.utils.resolve_task_config` through its ``overrides`` argument. diff --git a/source/isaaclab_tasks/changelog.d/revert-workaround-for-nvbug-6602254.rst b/source/isaaclab_tasks/changelog.d/revert-workaround-for-nvbug-6602254.rst deleted file mode 100644 index 7d134d861ffc..000000000000 --- a/source/isaaclab_tasks/changelog.d/revert-workaround-for-nvbug-6602254.rst +++ /dev/null @@ -1,9 +0,0 @@ -Removed -^^^^^^^ - -* Removed the ``partition_bounds_marker_min`` and ``partition_bounds_marker_max`` scene - entries from ``Isaac-Lift-Cable-Franka`` and ``Isaac-Lift-Cable-Franka-Camera``. Those - millimetre-scale cubes pinned each Isaac RTX scene partition to the workspace as a - workaround for Kit RTX not refreshing animated ``UsdGeom.BasisCurves`` bounding boxes - (OMPE-105749 / NVBug 6602254). Custom environments that copied the markers can drop - them; ``test_franka_cable_partition_bounds.py`` remains as the regression guard. diff --git a/source/isaaclab_tasks/changelog.d/usd-exchange-3-drop-thread-limit.skip b/source/isaaclab_tasks/changelog.d/usd-exchange-3-drop-thread-limit.skip deleted file mode 100644 index c785a05acc35..000000000000 --- a/source/isaaclab_tasks/changelog.d/usd-exchange-3-drop-thread-limit.skip +++ /dev/null @@ -1,4 +0,0 @@ -Test-only change: removed the OpenUSD work-thread limit from the environment smoke tests -and the kit-less rendering fixture. usd-exchange 3.0.0 supplies OpenUSD 26.08, which -satisfies the >=26.5 precondition the workaround was gated on. No user-facing behavior -changes. diff --git a/source/isaaclab_tasks/docs/CHANGELOG.rst b/source/isaaclab_tasks/docs/CHANGELOG.rst index 87ba801c0986..c5e93e8ea44f 100644 --- a/source/isaaclab_tasks/docs/CHANGELOG.rst +++ b/source/isaaclab_tasks/docs/CHANGELOG.rst @@ -1,6 +1,57 @@ Changelog --------- +22.0.0 (2026-09-29) +~~~~~~~~~~~~~~~~~~~ + +Changed +^^^^^^^ + +* Changed the Kuka Allegro Lift camera observations to use the shared + :class:`~isaaclab.envs.mdp.observations.image_rgb`, + :class:`~isaaclab.envs.mdp.observations.image_depth`, and + :class:`~isaaclab.envs.mdp.observations.image_segmentation` terms and to emit raw camera images, uint8 for + color. The spatial-softmax policy model now applies the fixed-range normalization, including in + exported JIT and ONNX policies, which cuts rollout image memory 4x. Existing RGB and depth checkpoints loaded + unchanged; policies exported before this change expect normalized images. Albedo observations + now discard the unused alpha channel; keep ``vision_camera`` for existing four-channel albedo + policies, or retrain with the three-channel observation. +* Disabled the RSL-RL per-step NaN check for the Kuka Allegro camera runners. +* Enabled the calibrated ``robot_pov_cam`` as a head-locked XR picture-in-picture + panel for the G1 locomanipulation and fixed-base upper-body IK tasks. Fixed-base + G1 gained a camera sensor for PiP without changing its policy observations. + XR runs with enabled PiP now require ``--num_envs 1``. To retain multi-environment + XR operation, set ``env.isaac_teleop.xr_camera_feeds=[]`` to disable PiP without + removing the camera sensor or recorded observations. +* **Breaking:** Changed the canonical render task's unset ``BENCHMARK_MODE`` default to + ``None``, disabling benchmark animation and scope profiling. Set ``BENCHMARK_MODE=render`` + to retain direct posing or ``BENCHMARK_MODE=physics_render`` for actuator tracking; + scope timings remained opt-in through their profiling flags. Renderer sweep users must + also set an explicit benchmark mode to collect timings. + +Removed +^^^^^^^ + +* Removed the ``partition_bounds_marker_min`` and ``partition_bounds_marker_max`` scene + entries from ``Isaac-Lift-Cable-Franka`` and ``Isaac-Lift-Cable-Franka-Camera``. Those + millimetre-scale cubes pinned each Isaac RTX scene partition to the workspace as a + workaround for Kit RTX not refreshing animated ``UsdGeom.BasisCurves`` bounding boxes + (OMPE-105749 / NVBug 6602254). Custom environments that copied the markers can drop + them; ``test_franka_cable_partition_bounds.py`` remains as the regression guard. +* **Breaking:** Removed ``isaaclab_tasks.utils.hydra_task_config``. Call + :func:`~isaaclab_tasks.utils.resolve_task_config` and pass the returned ``(env_cfg, agent_cfg)`` to your + entry function. +* **Breaking:** Removed ``isaaclab_tasks.utils.hydra.parse_overrides`` and + ``isaaclab_tasks.utils.hydra.apply_overrides``. Pass the same command-line tokens to + :func:`~isaaclab_tasks.utils.resolve_task_config` through its ``overrides`` argument. + +Fixed +^^^^^ + +* Added the missing ``ovphysx`` physics preset to ``Isaac-RenderBenchmark-Franka-Cabinet`` + and enabled automatic ``physx`` selection to use OvPhysX when running without Kit. + + 21.3.0 (2026-09-28) ~~~~~~~~~~~~~~~~~~~ diff --git a/source/isaaclab_tasks/pyproject.toml b/source/isaaclab_tasks/pyproject.toml index 740a89dbaa45..ec6b8fb7088a 100644 --- a/source/isaaclab_tasks/pyproject.toml +++ b/source/isaaclab_tasks/pyproject.toml @@ -9,7 +9,7 @@ build-backend = "setuptools.build_meta" [project] name = "isaaclab_tasks" -version = "21.3.0" +version = "22.0.0" description = "Extension containing suite of environments for robot learning." license = {text = "BSD-3-Clause"} authors = [{name = "Isaac Lab Project Developers"}] diff --git a/source/isaaclab_teleop/changelog.d/fix-documentation-links.skip b/source/isaaclab_teleop/changelog.d/fix-documentation-links.skip deleted file mode 100644 index 549eb2943aa3..000000000000 --- a/source/isaaclab_teleop/changelog.d/fix-documentation-links.skip +++ /dev/null @@ -1 +0,0 @@ -Updated broken documentation links after the upstream IsaacCapture repository rename. diff --git a/source/isaaclab_teleop/changelog.d/xr-camera-pip-hall-of-mirrors.minor.rst b/source/isaaclab_teleop/changelog.d/xr-camera-pip-hall-of-mirrors.minor.rst deleted file mode 100644 index b5db91737fcd..000000000000 --- a/source/isaaclab_teleop/changelog.d/xr-camera-pip-hall-of-mirrors.minor.rst +++ /dev/null @@ -1,20 +0,0 @@ -Added -^^^^^ - -* Added opt-in ``XrCameraFeedLayoutCfg.use_scene_partition`` to exclude shared SceneUI - from robot cameras. Preparation disabled environment partitioning and all-partitions - rendering before camera initialization, keeping the single environment shared while - the XR camera and SceneUI used a dedicated PiP partition. Prior camera, renderer, and - session-layer settings were restored after the final owner closed, including failures - during environment construction. - -Fixed -^^^^^ - -* Fixed head-locked XR camera panels to follow the complete display pose. -* Hid panels during tracking loss or partition conflicts and restored them after recovery. -* Fixed first-panel startup to establish the SceneUI partition before waiting for panel visibility. -* Refreshed partition inheritance when SceneUI children appeared, preventing recursive camera feeds after startup - or stage replacement without rewriting the partition every frame. -* Preserved positional construction of ``XrCameraFeedLayoutCfg``. -* Preserved requested PiP denoising settings without importing Isaac Sim during configuration preparation. diff --git a/source/isaaclab_teleop/docs/CHANGELOG.rst b/source/isaaclab_teleop/docs/CHANGELOG.rst index 4d6f585629fa..d4c13e65eed7 100644 --- a/source/isaaclab_teleop/docs/CHANGELOG.rst +++ b/source/isaaclab_teleop/docs/CHANGELOG.rst @@ -1,6 +1,31 @@ Changelog --------- +0.10.0 (2026-09-29) +~~~~~~~~~~~~~~~~~~~ + +Added +^^^^^ + +* Added opt-in ``XrCameraFeedLayoutCfg.use_scene_partition`` to exclude shared SceneUI + from robot cameras. Preparation disabled environment partitioning and all-partitions + rendering before camera initialization, keeping the single environment shared while + the XR camera and SceneUI used a dedicated PiP partition. Prior camera, renderer, and + session-layer settings were restored after the final owner closed, including failures + during environment construction. + +Fixed +^^^^^ + +* Fixed head-locked XR camera panels to follow the complete display pose. +* Hid panels during tracking loss or partition conflicts and restored them after recovery. +* Fixed first-panel startup to establish the SceneUI partition before waiting for panel visibility. +* Refreshed partition inheritance when SceneUI children appeared, preventing recursive camera feeds after startup + or stage replacement without rewriting the partition every frame. +* Preserved positional construction of ``XrCameraFeedLayoutCfg``. +* Preserved requested PiP denoising settings without importing Isaac Sim during configuration preparation. + + 0.9.0 (2026-09-10) ~~~~~~~~~~~~~~~~~~ diff --git a/source/isaaclab_teleop/pyproject.toml b/source/isaaclab_teleop/pyproject.toml index fd039dc7b861..5ef1b837bf3b 100644 --- a/source/isaaclab_teleop/pyproject.toml +++ b/source/isaaclab_teleop/pyproject.toml @@ -9,7 +9,7 @@ build-backend = "setuptools.build_meta" [project] name = "isaaclab_teleop" -version = "0.9.0" +version = "0.10.0" description = "Extension providing IsaacTeleop-based teleoperation device for Isaac Lab." license = {text = "BSD-3-Clause"} authors = [{name = "Isaac Lab Project Developers"}] diff --git a/source/isaaclab_visualizers/changelog.d/launch-helper-cleanup.skip b/source/isaaclab_visualizers/changelog.d/launch-helper-cleanup.skip deleted file mode 100644 index d992140bd68b..000000000000 --- a/source/isaaclab_visualizers/changelog.d/launch-helper-cleanup.skip +++ /dev/null @@ -1 +0,0 @@ -Switched the Kit visualizer to SettingsManager.set; no behavior change. diff --git a/source/isaaclab_visualizers/changelog.d/launch-one-mechanism.skip b/source/isaaclab_visualizers/changelog.d/launch-one-mechanism.skip deleted file mode 100644 index 107195cd9480..000000000000 --- a/source/isaaclab_visualizers/changelog.d/launch-one-mechanism.skip +++ /dev/null @@ -1 +0,0 @@ -Updated a comment that named the relocated visualizer alias table. From 09b1d544dd27151648de5a1463f6454dcccacbd3 Mon Sep 17 00:00:00 2001 From: ooctipus Date: Mon, 28 Sep 2026 23:26:25 -0700 Subject: [PATCH 2/2] Cover Newton RTX nested articulation and cable pose regressions (#7553) # Description Added regression coverage for Newton poses consumed by Isaac RTX: - A nested articulated child and its visual geometry follow repeated root-pose writes without applying the parent's displacement twice or requiring a physics step. - Rigid cubes beside cables reach their requested Fabric poses in both cloned environments, including after a hard reset. The existing cable point checks still cover stepping and reset behavior. The tests use the shared Fabric renderer and binding cache already present in `develop`. The final diff contains only the test changes and a `.skip` changelog fragment. ## Type of change - Regression test coverage ## Validation Source-built Isaac Sim with Kit `110.3.0+feature.371399.00c488ae.gl`, Newton 1.6.0, Warp 1.17.0, MuJoCo/MuJoCo Warp 3.12.0, and Torch 2.12.0+cu130 on an RTX 5090. - `source/isaaclab_newton/test/physics/test_newton_fabric_body_sync.py`: **10 passed**. - The review reproductions previously failed on `86f851d6d` and passed on its parent; the revised branch covers those cases through the current renderer. - `uv run isaaclab -f` and the changelog gate against the updated base passed. This PR makes no performance claim. ## Checklist - [x] I have read and understood the contribution guidelines. - [x] I have run the pre-commit checks. - [x] I have added focused regression coverage to the existing test suite. - [x] I have added a `.skip` changelog fragment for the test-only changes. - [x] My name already exists in `CONTRIBUTORS.md`. --- .../fabric-review-regressions.skip | 1 + .../physics/test_newton_fabric_body_sync.py | 77 ++++++++++++++++++- 2 files changed, 74 insertions(+), 4 deletions(-) create mode 100644 source/isaaclab_newton/changelog.d/fabric-review-regressions.skip diff --git a/source/isaaclab_newton/changelog.d/fabric-review-regressions.skip b/source/isaaclab_newton/changelog.d/fabric-review-regressions.skip new file mode 100644 index 000000000000..654f59c39c58 --- /dev/null +++ b/source/isaaclab_newton/changelog.d/fabric-review-regressions.skip @@ -0,0 +1 @@ +Covered nested articulation root-pose rendering and rigid-body rendering alongside cables. diff --git a/source/isaaclab_newton/test/physics/test_newton_fabric_body_sync.py b/source/isaaclab_newton/test/physics/test_newton_fabric_body_sync.py index 67972e51cd55..5645b2179ce1 100644 --- a/source/isaaclab_newton/test/physics/test_newton_fabric_body_sync.py +++ b/source/isaaclab_newton/test/physics/test_newton_fabric_body_sync.py @@ -24,7 +24,7 @@ import pytest import torch import warp as wp -from isaaclab_newton.physics import NewtonCfg, NewtonManager, VBDSolverCfg, XPBDSolverCfg +from isaaclab_newton.physics import MJWarpSolverCfg, NewtonCfg, NewtonManager, VBDSolverCfg, XPBDSolverCfg from isaaclab_newton.renderers import NewtonWarpRendererCfg from isaaclab_physx.renderers import IsaacRtxRendererCfg from isaaclab_physx.renderers.fabric import FabricBackend, FabricBackendCfg @@ -32,12 +32,13 @@ from isaaclab_visualizers.kit import KitVisualizerCfg from pxr import Gf as UsdGf -from pxr import Sdf, UsdGeom +from pxr import Sdf, UsdGeom, UsdPhysics from usdrt import Gf, Rt, Vt from usdrt import Sdf as RtSdf import isaaclab.sim as sim_utils -from isaaclab.assets import AssetBaseCfg, CableObjectCfg, RigidObjectCfg +from isaaclab.actuators import ImplicitActuatorCfg +from isaaclab.assets import ArticulationCfg, AssetBaseCfg, CableObjectCfg, RigidObjectCfg from isaaclab.envs.utils.video_recorder import VideoRecorder from isaaclab.envs.utils.video_recorder_cfg import VideoRecorderCfg from isaaclab.scene import InteractiveScene, InteractiveSceneCfg @@ -75,6 +76,9 @@ class _RenderSceneCfg(InteractiveSceneCfg): @configclass class _CableRenderSceneCfg(InteractiveSceneCfg): camera: CameraCfg = _RenderSceneCfg().camera + cube: RigidObjectCfg = replace( + _RenderSceneCfg().cube, init_state=RigidObjectCfg.InitialStateCfg(pos=(1.0, 0.0, 1.0)) + ) cable: CableObjectCfg = CableObjectCfg( prim_path="{ENV_REGEX_NS}/Cable", spawn=CableCfg( @@ -362,6 +366,65 @@ def test_nested_bodies_keep_independent_world_poses(): sim.register_interactive_scene(None) +@pytest.mark.isaacsim_ci +@pytest.mark.skipif(not wp.get_cuda_device_count(), reason="CUDA is unavailable") +def test_nested_articulation_follows_root_pose_writes(): + """Rendering a nested child link must apply its parent's root displacement only once.""" + sim_cfg = SimulationCfg( + device="cuda:0", + gravity=(0.0, 0.0, 0.0), + physics=NewtonCfg(solver_cfg=MJWarpSolverCfg(), use_cuda_graph=False), + ) + scene_cfg = _RenderSceneCfg(num_envs=1, env_spacing=2.0) + scene_cfg.cube = None + scene_cfg.robot = ArticulationCfg( + prim_path="{ENV_REGEX_NS}/Robot", + spawn=None, + actuators={"all": ImplicitActuatorCfg(joint_names_expr=[".*"], stiffness=0.0, damping=0.0)}, + ) + with build_simulation_context(sim_cfg=sim_cfg) as sim: + sim._app_control_on_stop_handle = None + root_path = "/World/envs/env_0/Robot" + root = UsdGeom.Xform.Define(sim.stage, root_path) + UsdPhysics.ArticulationRootAPI.Apply(root.GetPrim()) + paths = [f"{root_path}/base", f"{root_path}/base/arm"] + for path, position in zip(paths, ((0.0, 0.0, 1.0), (0.0, 0.5, 0.0)), strict=True): + body = UsdGeom.Xform.Define(sim.stage, path) + body.AddTranslateOp().Set(UsdGf.Vec3d(*position)) + UsdPhysics.RigidBodyAPI.Apply(body.GetPrim()) + UsdPhysics.MassAPI.Apply(body.GetPrim()).CreateMassAttr(1.0) + geometry = UsdGeom.Cube.Define(sim.stage, f"{path}/geometry") + geometry.GetSizeAttr().Set(0.2) + UsdPhysics.CollisionAPI.Apply(geometry.GetPrim()) + joint = UsdPhysics.RevoluteJoint.Define(sim.stage, f"{root_path}/base/arm_joint") + joint.CreateBody0Rel().SetTargets([paths[0]]) + joint.CreateBody1Rel().SetTargets([paths[1]]) + joint.CreateAxisAttr("X") + joint.CreateLocalPos0Attr(UsdGf.Vec3f(0.0, 0.5, 0.0)) + joint.CreateLocalPos1Attr(UsdGf.Vec3f(0.0)) + + scene = InteractiveScene(scene_cfg) + sim.register_interactive_scene(scene) + try: + sim.reset() + scene.reset() + _render(sim, scene) + indices = [NewtonManager.get_model().body_label.index(path) for path in paths] + pose = scene["robot"].data.default_root_pose.torch.clone() + physics_steps = sim.get_physics_step_count() + for displacement in (1.0, 2.0, 3.0): + pose[:, 0] = displacement + scene["robot"].write_root_link_pose_to_sim_index(root_pose=pose) + _render(sim, scene) + expected = wp.to_torch(NewtonManager.get_state_0().body_q)[indices, :3].cpu() + for path, position in zip(paths, expected, strict=True): + _assert_position(_fabric_position(path), position) + _assert_position(_fabric_position(f"{path}/geometry"), position) + assert sim.get_physics_step_count() == physics_steps + finally: + sim.register_interactive_scene(None) + + @pytest.mark.isaacsim_ci @pytest.mark.skipif(not wp.get_cuda_device_count(), reason="CUDA is unavailable") def test_fabric_geometry_sink_uses_sdp_world_points_and_frame_cadence(monkeypatch): @@ -447,7 +510,7 @@ def test_fabric_geometry_sink_uses_sdp_world_points_and_frame_cadence(monkeypatc @pytest.mark.isaacsim_ci @pytest.mark.skipif(not wp.get_cuda_device_count(), reason="CUDA is unavailable") def test_cable_points_follow_newton_segments_after_step_and_reset(): - """Fabric cable points must follow Newton segments across steps and hard resets.""" + """Cable segments and neighboring rigid bodies must render across steps and hard resets.""" device = "cuda:0" sim_cfg = SimulationCfg( dt=1.0 / 120.0, @@ -477,6 +540,12 @@ def test_cable_points_follow_newton_segments_after_step_and_reset(): for env_id, initial in enumerate(initial_points): expected = _expected_cable_points_world(cable, env_id) torch.testing.assert_close(initial, expected, rtol=0.0, atol=1.0e-4) + cube_pose = scene["cube"].data.default_root_pose.torch.clone() + cube_pose[:, :3] = scene.env_origins + torch.tensor([1.5, -0.75, 2.0], device=device) + scene["cube"].write_root_link_pose_to_sim_index(root_pose=cube_pose) + _render(sim, scene) + for env_path, pose in zip(scene.env_prim_paths, cube_pose.cpu(), strict=True): + _assert_position(_fabric_position(f"{env_path}/Cube"), pose[:3]) for _ in range(8): scene.write_data_to_sim() sim.step(render=False)