From 1e22ce1a7a2fc1c92f826be3396eb062a20c9f4f Mon Sep 17 00:00:00 2001 From: "isaaclab-bot[bot]" <282401363+isaaclab-bot[bot]@users.noreply.github.com> Date: Thu, 24 Sep 2026 05:11:59 +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: 27.0.1 → 28.0.0 - isaaclab_newton: 7.0.0 → 7.0.1 - isaaclab_ov: 3.3.1 → 3.3.2 - isaaclab_physx: 7.2.1 → 7.2.2 - isaaclab_tasks: 21.0.3 → 21.1.0 - isaaclab_visualizers: 1.12.0 → 1.12.1 --- .../benchmark-scope-profiling.major.rst | 33 ----- .../camera-render-spec-paths.major.rst | 6 - .../changelog.d/core-cleanup-comments.skip | 1 - .../changelog.d/core-cleanup-imports.skip | 1 - .../core-cleanup-sim-terrain-fixes.minor.rst | 31 ----- .../changelog.d/core-cleanup-utils-fixes.rst | 15 --- .../gate-checkout-only-cli-tests.skip | 1 - .../joint-wrench-frame-contract.skip | 1 - .../multigpu-benchmark-check-success.rst | 6 - .../sdp-transform-publication.major.rst | 19 --- .../changelog.d/shared-delay-buffer.minor.rst | 17 --- ...idurv-migrate-legacy-source-remaining.skip | 1 - .../changelog.d/visualizer-error-reason.rst | 8 -- .../changelog.d/wrench-fast-paths.minor.rst | 9 -- source/isaaclab/docs/CHANGELOG.rst | 121 ++++++++++++++++++ source/isaaclab/pyproject.toml | 2 +- .../changelog.d/fixed-joint-wrench.rst | 7 - .../joint-wrench-frame-contract.skip | 1 - .../changelog.d/sdp-transform-transport.rst | 11 -- ...idurv-migrate-legacy-source-remaining.skip | 1 - .../changelog.d/wrench-fast-paths.rst | 6 - source/isaaclab_newton/docs/CHANGELOG.rst | 27 ++++ source/isaaclab_newton/pyproject.toml | 2 +- .../changelog.d/ovrtx-cache-frame-keys.rst | 5 - .../changelog.d/ovrtx-camera-source-path.rst | 7 - .../ovrtx-multi-camera-env-paths.rst | 9 -- .../changelog.d/pr7536-test-reset.skip | 1 - .../changelog.d/sdp-transform-transport.rst | 10 -- ...idurv-migrate-legacy-source-remaining.skip | 1 - .../changelog.d/wrench-fast-paths.rst | 7 - source/isaaclab_ov/docs/CHANGELOG.rst | 35 +++++ source/isaaclab_ov/pyproject.toml | 2 +- .../changelog.d/fix-joint-wrench-frame.rst | 8 -- .../changelog.d/sdp-transform-publication.rst | 8 -- .../changelog.d/wrench-fast-paths.rst | 7 - source/isaaclab_physx/docs/CHANGELOG.rst | 26 ++++ source/isaaclab_physx/pyproject.toml | 2 +- .../fix-forge-ft-frame-transform.rst | 6 - .../kuka-allegro-wrist-camera-pose.rst | 6 - .../render-benchmark-physics-mode.minor.rst | 10 -- ...vidurv-migrate-legacy-source-remaining.rst | 12 -- source/isaaclab_tasks/docs/CHANGELOG.rst | 38 ++++++ source/isaaclab_tasks/pyproject.toml | 2 +- .../changelog.d/sdp-transform-publication.rst | 6 - .../isaaclab_visualizers/docs/CHANGELOG.rst | 11 ++ source/isaaclab_visualizers/pyproject.toml | 2 +- 46 files changed, 264 insertions(+), 284 deletions(-) delete mode 100644 source/isaaclab/changelog.d/benchmark-scope-profiling.major.rst delete mode 100644 source/isaaclab/changelog.d/camera-render-spec-paths.major.rst delete mode 100644 source/isaaclab/changelog.d/core-cleanup-comments.skip delete mode 100644 source/isaaclab/changelog.d/core-cleanup-imports.skip delete mode 100644 source/isaaclab/changelog.d/core-cleanup-sim-terrain-fixes.minor.rst delete mode 100644 source/isaaclab/changelog.d/core-cleanup-utils-fixes.rst delete mode 100644 source/isaaclab/changelog.d/gate-checkout-only-cli-tests.skip delete mode 100644 source/isaaclab/changelog.d/joint-wrench-frame-contract.skip delete mode 100644 source/isaaclab/changelog.d/multigpu-benchmark-check-success.rst delete mode 100644 source/isaaclab/changelog.d/sdp-transform-publication.major.rst delete mode 100644 source/isaaclab/changelog.d/shared-delay-buffer.minor.rst delete mode 100644 source/isaaclab/changelog.d/vidurv-migrate-legacy-source-remaining.skip delete mode 100644 source/isaaclab/changelog.d/visualizer-error-reason.rst delete mode 100644 source/isaaclab/changelog.d/wrench-fast-paths.minor.rst delete mode 100644 source/isaaclab_newton/changelog.d/fixed-joint-wrench.rst delete mode 100644 source/isaaclab_newton/changelog.d/joint-wrench-frame-contract.skip delete mode 100644 source/isaaclab_newton/changelog.d/sdp-transform-transport.rst delete mode 100644 source/isaaclab_newton/changelog.d/vidurv-migrate-legacy-source-remaining.skip delete mode 100644 source/isaaclab_newton/changelog.d/wrench-fast-paths.rst delete mode 100644 source/isaaclab_ov/changelog.d/ovrtx-cache-frame-keys.rst delete mode 100644 source/isaaclab_ov/changelog.d/ovrtx-camera-source-path.rst delete mode 100644 source/isaaclab_ov/changelog.d/ovrtx-multi-camera-env-paths.rst delete mode 100644 source/isaaclab_ov/changelog.d/pr7536-test-reset.skip delete mode 100644 source/isaaclab_ov/changelog.d/sdp-transform-transport.rst delete mode 100644 source/isaaclab_ov/changelog.d/vidurv-migrate-legacy-source-remaining.skip delete mode 100644 source/isaaclab_ov/changelog.d/wrench-fast-paths.rst delete mode 100644 source/isaaclab_physx/changelog.d/fix-joint-wrench-frame.rst delete mode 100644 source/isaaclab_physx/changelog.d/sdp-transform-publication.rst delete mode 100644 source/isaaclab_physx/changelog.d/wrench-fast-paths.rst delete mode 100644 source/isaaclab_tasks/changelog.d/fix-forge-ft-frame-transform.rst delete mode 100644 source/isaaclab_tasks/changelog.d/kuka-allegro-wrist-camera-pose.rst delete mode 100644 source/isaaclab_tasks/changelog.d/render-benchmark-physics-mode.minor.rst delete mode 100644 source/isaaclab_tasks/changelog.d/vidurv-migrate-legacy-source-remaining.rst delete mode 100644 source/isaaclab_visualizers/changelog.d/sdp-transform-publication.rst diff --git a/source/isaaclab/changelog.d/benchmark-scope-profiling.major.rst b/source/isaaclab/changelog.d/benchmark-scope-profiling.major.rst deleted file mode 100644 index f4c2ed705348..000000000000 --- a/source/isaaclab/changelog.d/benchmark-scope-profiling.major.rst +++ /dev/null @@ -1,33 +0,0 @@ -Added -^^^^^ - -* Added :func:`~isaaclab.benchmark.stepping.profile_physics_steps` and - :func:`~isaaclab.benchmark.stepping.profile_renderers` context managers for synchronized - runtime benchmark timings. Wrappers recorded complete calls after warmup and restored - the original methods when measurement ended, including on failure. - -Changed -^^^^^^^ - -* Restricted scope capture to tasks with a non-``None`` ``benchmark_mode``. To collect timings, - enable ``ISAACLAB_PHYSICS_PROFILE=1`` or ``ISAACLAB_RENDER_PROFILE=1`` for such a task. - Other tasks continued to produce standard runtime reports without scope profiling. - -* Included scalar physics and render profiling summaries in ``BenchmarkResult.bundle.extra`` - without changing schema version 1.4. Schema and OmniPerf output included each scope's mean, - standard deviation, maximum time per call [ms], and call count. Consumers should read - ``physics_mean_ms``, ``physics_std_ms``, ``physics_max_ms``, ``physics_calls``, and the - corresponding ``render_*`` keys for these summaries. Raw ordered samples remained in - ``/profile_timings.json`` as ``timings_ms`` pairs for local analysis instead - of parsing printed timer lines; use ``--output_path`` to select the output directory. - -* **Breaking:** Moved render profiling into the runtime benchmark through - :func:`~isaaclab.benchmark.stepping.profile_renderers`. To collect render timings with - ``ISAACLAB_RENDER_PROFILE=1``, use the runtime benchmark; normal simulation runs no longer - allocate render timers. Scene updates and output readback remained outside the timed scope. - -Deprecated -^^^^^^^^^^ - -* Deprecated ``isaaclab.renderers.render_context.RENDER_PROFILE_SCOPE``; use - :data:`~isaaclab.benchmark.stepping.RENDER_PROFILE_SCOPE` instead. diff --git a/source/isaaclab/changelog.d/camera-render-spec-paths.major.rst b/source/isaaclab/changelog.d/camera-render-spec-paths.major.rst deleted file mode 100644 index dd40abb0ae92..000000000000 --- a/source/isaaclab/changelog.d/camera-render-spec-paths.major.rst +++ /dev/null @@ -1,6 +0,0 @@ -Removed -^^^^^^^ - -* **Breaking:** Removed ``CameraRenderSpec.camera_path_relative_to_env_0``. Remove this argument - from render-spec constructors and use the absolute paths in ``camera_prim_paths`` instead. - OVRTX derived cloned camera paths from the authored source camera internally. diff --git a/source/isaaclab/changelog.d/core-cleanup-comments.skip b/source/isaaclab/changelog.d/core-cleanup-comments.skip deleted file mode 100644 index d77f90730482..000000000000 --- a/source/isaaclab/changelog.d/core-cleanup-comments.skip +++ /dev/null @@ -1 +0,0 @@ -Removed comments that restate the code and replaced empty dict()/list() calls with literals in the core package. diff --git a/source/isaaclab/changelog.d/core-cleanup-imports.skip b/source/isaaclab/changelog.d/core-cleanup-imports.skip deleted file mode 100644 index b34a285f66b4..000000000000 --- a/source/isaaclab/changelog.d/core-cleanup-imports.skip +++ /dev/null @@ -1 +0,0 @@ -Switched same-package imports in the core package to relative form up to three levels. diff --git a/source/isaaclab/changelog.d/core-cleanup-sim-terrain-fixes.minor.rst b/source/isaaclab/changelog.d/core-cleanup-sim-terrain-fixes.minor.rst deleted file mode 100644 index 116644636ab2..000000000000 --- a/source/isaaclab/changelog.d/core-cleanup-sim-terrain-fixes.minor.rst +++ /dev/null @@ -1,31 +0,0 @@ -Added -^^^^^ - -* Added :class:`~isaaclab.sim.MeshFileCfg` and :func:`~isaaclab.sim.spawn_from_mesh` to spawn a mesh from a - mesh file (e.g. ``.obj``, ``.stl``, ``.fbx``) or from in-memory triangle data - (:class:`~isaaclab.sim.MeshFileCfg.TriangleMeshCfg` or a :class:`trimesh.Trimesh` through - :class:`~isaaclab.sim.MeshFileCfg.TrimeshObjectCfg`), with optional collision, mesh collision - approximation, rigid body, mass, and material properties. - -Changed -^^^^^^^ - -* Changed :func:`~isaaclab.terrains.utils.create_prim_from_mesh` to spawn the terrain mesh with - :class:`~isaaclab.sim.MeshFileCfg`. The authored USD is unchanged, except that the ``translation`` and - ``orientation`` keyword arguments now apply to the root prim instead of its ``mesh`` child prim; the - resulting world pose is the same. - -Fixed -^^^^^ - -* Fixed the built-in :class:`~isaaclab.terrains.MeshRepeatedBoxesTerrainCfg`, - :class:`~isaaclab.terrains.MeshRepeatedCylindersTerrainCfg`, and - :class:`~isaaclab.terrains.MeshRepeatedPyramidsTerrainCfg` raising ``ValueError`` with their default - ``object_type``. The resolvable ``"module:function"`` default was looked up as ``make_`` - instead of being called. -* Fixed :func:`~isaaclab.sim.schemas.modify_articulation_root_properties` looking up the existing fixed - joint on the current stage instead of the ``stage`` argument when ``fix_root_link`` is set. -* Fixed :func:`~isaaclab.sim.utils.queries.find_global_fixed_joint_prim` raising ``AttributeError`` for an - :class:`pxr.Sdf.Path` argument. -* Fixed :class:`~isaaclab.sim.converters.MeshConverter` raising ``ValueError`` for mesh file names with - more than one dot. diff --git a/source/isaaclab/changelog.d/core-cleanup-utils-fixes.rst b/source/isaaclab/changelog.d/core-cleanup-utils-fixes.rst deleted file mode 100644 index bcb79400ea28..000000000000 --- a/source/isaaclab/changelog.d/core-cleanup-utils-fixes.rst +++ /dev/null @@ -1,15 +0,0 @@ -Fixed -^^^^^ - -* Fixed :func:`~isaaclab.utils.math.unproject_depth` building homogeneous pixel coordinates as - ``(1, u, v)`` instead of ``(u, v, 1)``, which returned wrong points and turned the first image row - into ``inf``/``nan``. This also affected :func:`~isaaclab.sensors.camera.utils.create_pointcloud_from_depth` - and :func:`~isaaclab.sensors.camera.utils.create_pointcloud_from_rgbd`. -* Fixed :func:`~isaaclab.sensors.camera.utils.create_pointcloud_from_rgbd` raising a ``TypeError`` when - ``rgb`` is a color tuple or ``None``. -* Fixed :func:`~isaaclab.utils.math.quat_slerp` negating the caller's ``q2`` tensor in place when - taking the shorter arc. -* Fixed :func:`~isaaclab.utils.sensors.convert_camera_intrinsics_to_usd` not warning about aperture - offsets when the principal point is left of or above the image center. -* Fixed :meth:`~isaaclab.utils.datasets.HDF5DatasetFileHandler.create` failing when ``file_path`` is a - bare file name without a directory. diff --git a/source/isaaclab/changelog.d/gate-checkout-only-cli-tests.skip b/source/isaaclab/changelog.d/gate-checkout-only-cli-tests.skip deleted file mode 100644 index 677b2d1bac01..000000000000 --- a/source/isaaclab/changelog.d/gate-checkout-only-cli-tests.skip +++ /dev/null @@ -1 +0,0 @@ -# Test-only change; no changelog entry or version bump. diff --git a/source/isaaclab/changelog.d/joint-wrench-frame-contract.skip b/source/isaaclab/changelog.d/joint-wrench-frame-contract.skip deleted file mode 100644 index 8c9505780d0f..000000000000 --- a/source/isaaclab/changelog.d/joint-wrench-frame-contract.skip +++ /dev/null @@ -1 +0,0 @@ -Added a shared Newton/PhysX integration check with independently calculated joint-frame forces and torques. diff --git a/source/isaaclab/changelog.d/multigpu-benchmark-check-success.rst b/source/isaaclab/changelog.d/multigpu-benchmark-check-success.rst deleted file mode 100644 index 6e1be8500275..000000000000 --- a/source/isaaclab/changelog.d/multigpu-benchmark-check-success.rst +++ /dev/null @@ -1,6 +0,0 @@ -Changed -^^^^^^^ - -* Changed ``isaaclab benchmark training_multigpu`` to accept ``--check_success`` for RSL-RL and RL-Games. - The success metric is now summed across ranks before each convergence check, so every rank stops at - the same iteration. diff --git a/source/isaaclab/changelog.d/sdp-transform-publication.major.rst b/source/isaaclab/changelog.d/sdp-transform-publication.major.rst deleted file mode 100644 index 36c90c2c759b..000000000000 --- a/source/isaaclab/changelog.d/sdp-transform-publication.major.rst +++ /dev/null @@ -1,19 +0,0 @@ -Changed -^^^^^^^ - -* **Breaking:** Added ``transforms_version`` to scene-data backends. Custom backends must initialize - it to zero and increment it after native pose writes or buffer swaps. SDP reads the existing - ``transforms`` property through ``get_transforms(output_format)`` without resetting the version. Backends - publishing multiple native formats may override that method and ``native_transform_formats``. - ``SceneDataProvider.get_transforms`` bound shared, - read-only arrays by default: matching layouts aliased native data and other layouts converted - once per publication. Callers requiring their own writable or preallocated arrays must pass - ``allow_passthrough=False``; this wrote directly into the supplied arrays without a staging copy. -* Routed rigid Fabric conversion through SDP while the Kit rendering integration owned destination binding and - GPU hierarchy propagation, preserving native PhysX publication and authored scale. Converted rigid destinations - became Fabric-only reset-stack roots so nested bodies retained their absolute physics poses. - Transform freshness no longer depended on the physics-step counter; - ``RenderContext.reset_scene_state_cadence`` remained available for geometry updates. - ``SimulationContext.fabric_cfg`` declared the shared native Fabric stage/device without allocating bindings. -* Used native Warp structs for Fabric transform bindings, relying on the project-managed Warp - dependency selected by Isaac Lab's Kit launch configuration. diff --git a/source/isaaclab/changelog.d/shared-delay-buffer.minor.rst b/source/isaaclab/changelog.d/shared-delay-buffer.minor.rst deleted file mode 100644 index c370539ea8af..000000000000 --- a/source/isaaclab/changelog.d/shared-delay-buffer.minor.rst +++ /dev/null @@ -1,17 +0,0 @@ -Added -^^^^^ - -* Added ``delay_min_lag`` and ``delay_max_lag`` to ``ObservationTermCfg``. Lags were sampled per environment - at initialization and reset, then held for the episode by default, matching the delayed PD actuator's lag policy. -* Added ``delay_hold_prob`` for optional per-sample lag resampling. ``DelayBuffer`` owned the sampling; - retaining a lag kept latency constant as frames advanced. The default of 1.0 preserved the existing policy. -* Applied delay after observation modifiers, noise, clipping, and scaling, before history. Recorded samples - advanced only with ``update_history=True``; extra reads left delay history unchanged. -* Shared ``DelayBuffer`` between observations and existing delayed actuators, retaining the actuator API and - physics-step behavior. Added optional non-recording reads and replaced history shifting with device-indexed - ring storage, including CUDA graph replay and isolated partial resets. - -Fixed -^^^^^ - -* Fixed ``DelayBuffer.set_time_lag`` subset updates to accept both supported integer dtypes. diff --git a/source/isaaclab/changelog.d/vidurv-migrate-legacy-source-remaining.skip b/source/isaaclab/changelog.d/vidurv-migrate-legacy-source-remaining.skip deleted file mode 100644 index 8e368b384d8f..000000000000 --- a/source/isaaclab/changelog.d/vidurv-migrate-legacy-source-remaining.skip +++ /dev/null @@ -1 +0,0 @@ -Migrated test scene configurations off the deprecated legacy schema property configs; test-only change. diff --git a/source/isaaclab/changelog.d/visualizer-error-reason.rst b/source/isaaclab/changelog.d/visualizer-error-reason.rst deleted file mode 100644 index 827801a9c723..000000000000 --- a/source/isaaclab/changelog.d/visualizer-error-reason.rst +++ /dev/null @@ -1,8 +0,0 @@ -Fixed -^^^^^ - -* Fixed ``--visualizer newton`` (the deprecated alias for ``newton_gl``) always raising - ``RuntimeError: Explicitly requested visualizer(s) [...] could not be configured`` even though it - resolved successfully. :meth:`SimulationContext._resolve_visualizer_cfgs` compared the raw, - possibly-aliased CLI string against the resolved config's canonical ``visualizer_type``, which - never matched for an aliased request. diff --git a/source/isaaclab/changelog.d/wrench-fast-paths.minor.rst b/source/isaaclab/changelog.d/wrench-fast-paths.minor.rst deleted file mode 100644 index 7cfcbb3a3b46..000000000000 --- a/source/isaaclab/changelog.d/wrench-fast-paths.minor.rst +++ /dev/null @@ -1,9 +0,0 @@ -Added -^^^^^ - -* Added :meth:`~isaaclab.utils.wrench_composer.WrenchComposer.get_forces_and_torques`, which returns the - cheapest representation of the buffered external wrench a consumer can accept, along with an - ``is_global`` boolean matching the asset API. Consumers that can apply a world-frame wrench at the - center of mass opt in with the new ``supports_world_at_com`` - constructor argument. Wrenches that are already local-frame, or already global-frame at the center of - mass, are now submitted without composing them through the body poses. diff --git a/source/isaaclab/docs/CHANGELOG.rst b/source/isaaclab/docs/CHANGELOG.rst index 85bebf49e689..8accbe39bab5 100644 --- a/source/isaaclab/docs/CHANGELOG.rst +++ b/source/isaaclab/docs/CHANGELOG.rst @@ -1,6 +1,127 @@ Changelog --------- +28.0.0 (2026-09-24) +~~~~~~~~~~~~~~~~~~~ + +Added +^^^^^ + +* Added :func:`~isaaclab.benchmark.stepping.profile_physics_steps` and + :func:`~isaaclab.benchmark.stepping.profile_renderers` context managers for synchronized + runtime benchmark timings. Wrappers recorded complete calls after warmup and restored + the original methods when measurement ended, including on failure. +* Added :class:`~isaaclab.sim.MeshFileCfg` and :func:`~isaaclab.sim.spawn_from_mesh` to spawn a mesh from a + mesh file (e.g. ``.obj``, ``.stl``, ``.fbx``) or from in-memory triangle data + (:class:`~isaaclab.sim.MeshFileCfg.TriangleMeshCfg` or a :class:`trimesh.Trimesh` through + :class:`~isaaclab.sim.MeshFileCfg.TrimeshObjectCfg`), with optional collision, mesh collision + approximation, rigid body, mass, and material properties. +* Added :meth:`~isaaclab.utils.wrench_composer.WrenchComposer.get_forces_and_torques`, which returns the + cheapest representation of the buffered external wrench a consumer can accept, along with an + ``is_global`` boolean matching the asset API. Consumers that can apply a world-frame wrench at the + center of mass opt in with the new ``supports_world_at_com`` + constructor argument. Wrenches that are already local-frame, or already global-frame at the center of + mass, are now submitted without composing them through the body poses. +* Added ``delay_min_lag`` and ``delay_max_lag`` to ``ObservationTermCfg``. Lags were sampled per environment + at initialization and reset, then held for the episode by default, matching the delayed PD actuator's lag policy. +* Added ``delay_hold_prob`` for optional per-sample lag resampling. ``DelayBuffer`` owned the sampling; + retaining a lag kept latency constant as frames advanced. The default of 1.0 preserved the existing policy. +* Applied delay after observation modifiers, noise, clipping, and scaling, before history. Recorded samples + advanced only with ``update_history=True``; extra reads left delay history unchanged. +* Shared ``DelayBuffer`` between observations and existing delayed actuators, retaining the actuator API and + physics-step behavior. Added optional non-recording reads and replaced history shifting with device-indexed + ring storage, including CUDA graph replay and isolated partial resets. + +Changed +^^^^^^^ + +* Restricted scope capture to tasks with a non-``None`` ``benchmark_mode``. To collect timings, + enable ``ISAACLAB_PHYSICS_PROFILE=1`` or ``ISAACLAB_RENDER_PROFILE=1`` for such a task. + Other tasks continued to produce standard runtime reports without scope profiling. + +* Included scalar physics and render profiling summaries in ``BenchmarkResult.bundle.extra`` + without changing schema version 1.4. Schema and OmniPerf output included each scope's mean, + standard deviation, maximum time per call [ms], and call count. Consumers should read + ``physics_mean_ms``, ``physics_std_ms``, ``physics_max_ms``, ``physics_calls``, and the + corresponding ``render_*`` keys for these summaries. Raw ordered samples remained in + ``/profile_timings.json`` as ``timings_ms`` pairs for local analysis instead + of parsing printed timer lines; use ``--output_path`` to select the output directory. + +* **Breaking:** Moved render profiling into the runtime benchmark through + :func:`~isaaclab.benchmark.stepping.profile_renderers`. To collect render timings with + ``ISAACLAB_RENDER_PROFILE=1``, use the runtime benchmark; normal simulation runs no longer + allocate render timers. Scene updates and output readback remained outside the timed scope. +* Changed ``isaaclab benchmark training_multigpu`` to accept ``--check_success`` for RSL-RL and RL-Games. + The success metric is now summed across ranks before each convergence check, so every rank stops at + the same iteration. +* Changed :func:`~isaaclab.terrains.utils.create_prim_from_mesh` to spawn the terrain mesh with + :class:`~isaaclab.sim.MeshFileCfg`. The authored USD is unchanged, except that the ``translation`` and + ``orientation`` keyword arguments now apply to the root prim instead of its ``mesh`` child prim; the + resulting world pose is the same. +* **Breaking:** Added ``transforms_version`` to scene-data backends. Custom backends must initialize + it to zero and increment it after native pose writes or buffer swaps. SDP reads the existing + ``transforms`` property through ``get_transforms(output_format)`` without resetting the version. Backends + publishing multiple native formats may override that method and ``native_transform_formats``. + ``SceneDataProvider.get_transforms`` bound shared, + read-only arrays by default: matching layouts aliased native data and other layouts converted + once per publication. Callers requiring their own writable or preallocated arrays must pass + ``allow_passthrough=False``; this wrote directly into the supplied arrays without a staging copy. +* Routed rigid Fabric conversion through SDP while the Kit rendering integration owned destination binding and + GPU hierarchy propagation, preserving native PhysX publication and authored scale. Converted rigid destinations + became Fabric-only reset-stack roots so nested bodies retained their absolute physics poses. + Transform freshness no longer depended on the physics-step counter; + ``RenderContext.reset_scene_state_cadence`` remained available for geometry updates. + ``SimulationContext.fabric_cfg`` declared the shared native Fabric stage/device without allocating bindings. +* Used native Warp structs for Fabric transform bindings, relying on the project-managed Warp + dependency selected by Isaac Lab's Kit launch configuration. + +Deprecated +^^^^^^^^^^ + +* Deprecated ``isaaclab.renderers.render_context.RENDER_PROFILE_SCOPE``; use + :data:`~isaaclab.benchmark.stepping.RENDER_PROFILE_SCOPE` instead. + +Removed +^^^^^^^ + +* **Breaking:** Removed ``CameraRenderSpec.camera_path_relative_to_env_0``. Remove this argument + from render-spec constructors and use the absolute paths in ``camera_prim_paths`` instead. + OVRTX derived cloned camera paths from the authored source camera internally. + +Fixed +^^^^^ + +* Fixed ``--visualizer newton`` (the deprecated alias for ``newton_gl``) always raising + ``RuntimeError: Explicitly requested visualizer(s) [...] could not be configured`` even though it + resolved successfully. :meth:`SimulationContext._resolve_visualizer_cfgs` compared the raw, + possibly-aliased CLI string against the resolved config's canonical ``visualizer_type``, which + never matched for an aliased request. +* Fixed :func:`~isaaclab.utils.math.unproject_depth` building homogeneous pixel coordinates as + ``(1, u, v)`` instead of ``(u, v, 1)``, which returned wrong points and turned the first image row + into ``inf``/``nan``. This also affected :func:`~isaaclab.sensors.camera.utils.create_pointcloud_from_depth` + and :func:`~isaaclab.sensors.camera.utils.create_pointcloud_from_rgbd`. +* Fixed :func:`~isaaclab.sensors.camera.utils.create_pointcloud_from_rgbd` raising a ``TypeError`` when + ``rgb`` is a color tuple or ``None``. +* Fixed :func:`~isaaclab.utils.math.quat_slerp` negating the caller's ``q2`` tensor in place when + taking the shorter arc. +* Fixed :func:`~isaaclab.utils.sensors.convert_camera_intrinsics_to_usd` not warning about aperture + offsets when the principal point is left of or above the image center. +* Fixed :meth:`~isaaclab.utils.datasets.HDF5DatasetFileHandler.create` failing when ``file_path`` is a + bare file name without a directory. +* Fixed the built-in :class:`~isaaclab.terrains.MeshRepeatedBoxesTerrainCfg`, + :class:`~isaaclab.terrains.MeshRepeatedCylindersTerrainCfg`, and + :class:`~isaaclab.terrains.MeshRepeatedPyramidsTerrainCfg` raising ``ValueError`` with their default + ``object_type``. The resolvable ``"module:function"`` default was looked up as ``make_`` + instead of being called. +* Fixed :func:`~isaaclab.sim.schemas.modify_articulation_root_properties` looking up the existing fixed + joint on the current stage instead of the ``stage`` argument when ``fix_root_link`` is set. +* Fixed :func:`~isaaclab.sim.utils.queries.find_global_fixed_joint_prim` raising ``AttributeError`` for an + :class:`pxr.Sdf.Path` argument. +* Fixed :class:`~isaaclab.sim.converters.MeshConverter` raising ``ValueError`` for mesh file names with + more than one dot. +* Fixed ``DelayBuffer.set_time_lag`` subset updates to accept both supported integer dtypes. + + 27.0.1 (2026-09-23) ~~~~~~~~~~~~~~~~~~~ diff --git a/source/isaaclab/pyproject.toml b/source/isaaclab/pyproject.toml index dfd03db87faa..c127158b8eb4 100644 --- a/source/isaaclab/pyproject.toml +++ b/source/isaaclab/pyproject.toml @@ -9,7 +9,7 @@ build-backend = "setuptools.build_meta" [project] name = "isaaclab" -version = "27.0.1" +version = "28.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_newton/changelog.d/fixed-joint-wrench.rst b/source/isaaclab_newton/changelog.d/fixed-joint-wrench.rst deleted file mode 100644 index 297d7cb0ef6b..000000000000 --- a/source/isaaclab_newton/changelog.d/fixed-joint-wrench.rst +++ /dev/null @@ -1,7 +0,0 @@ -Fixed -^^^^^ - -* Fixed Newton joint wrench sensors to report fixed connections within an articulation, including - welded wrist sensors and tool flanges. Free joints, world-fixed roots, and loop-closing constraints - remained excluded. Select entries by ``body_names`` or ``find_bodies`` because the reported body count - and ordering may change. diff --git a/source/isaaclab_newton/changelog.d/joint-wrench-frame-contract.skip b/source/isaaclab_newton/changelog.d/joint-wrench-frame-contract.skip deleted file mode 100644 index d6df16959500..000000000000 --- a/source/isaaclab_newton/changelog.d/joint-wrench-frame-contract.skip +++ /dev/null @@ -1 +0,0 @@ -Validated the joint-wrench sensor against the same physical fixture and analytic expectations as PhysX. diff --git a/source/isaaclab_newton/changelog.d/sdp-transform-transport.rst b/source/isaaclab_newton/changelog.d/sdp-transform-transport.rst deleted file mode 100644 index a31eaeb5f264..000000000000 --- a/source/isaaclab_newton/changelog.d/sdp-transform-transport.rst +++ /dev/null @@ -1,11 +0,0 @@ -Changed -^^^^^^^ - -* Shared Newton rigid-body transforms through SceneDataProvider publications, including solver state-buffer - swaps, and moved Fabric bindings into the Kit rendering integration. Explicit Fabric synchronization - continued to work without a Kit viewer or RTX camera. Newton render-only states under foreign - physics now reference shared SDP transforms instead of copying them; consumers must treat their - ``body_q`` arrays as read-only. Particle and cable synchronization remained unchanged. -* Reconciled authored state writes only while pending, instead of re-running forward kinematics for - every new transform publication. Rendering requested rigid Fabric updates through SDP rather - than the physics pre-render hook. Captured external writes retained conservative reconciliation. diff --git a/source/isaaclab_newton/changelog.d/vidurv-migrate-legacy-source-remaining.skip b/source/isaaclab_newton/changelog.d/vidurv-migrate-legacy-source-remaining.skip deleted file mode 100644 index 8e368b384d8f..000000000000 --- a/source/isaaclab_newton/changelog.d/vidurv-migrate-legacy-source-remaining.skip +++ /dev/null @@ -1 +0,0 @@ -Migrated test scene configurations off the deprecated legacy schema property configs; test-only change. diff --git a/source/isaaclab_newton/changelog.d/wrench-fast-paths.rst b/source/isaaclab_newton/changelog.d/wrench-fast-paths.rst deleted file mode 100644 index 7e9948735597..000000000000 --- a/source/isaaclab_newton/changelog.d/wrench-fast-paths.rst +++ /dev/null @@ -1,6 +0,0 @@ -Changed -^^^^^^^ - -* Changed the external-wrench writers to submit through - :meth:`~isaaclab.utils.wrench_composer.WrenchComposer.get_forces_and_torques`, so an all-local-frame - wrench no longer reads the body transforms before being written to the solver. diff --git a/source/isaaclab_newton/docs/CHANGELOG.rst b/source/isaaclab_newton/docs/CHANGELOG.rst index a901aa04b650..deaee44471cc 100644 --- a/source/isaaclab_newton/docs/CHANGELOG.rst +++ b/source/isaaclab_newton/docs/CHANGELOG.rst @@ -1,6 +1,33 @@ Changelog --------- +7.0.1 (2026-09-24) +~~~~~~~~~~~~~~~~~~ + +Changed +^^^^^^^ + +* Changed the external-wrench writers to submit through + :meth:`~isaaclab.utils.wrench_composer.WrenchComposer.get_forces_and_torques`, so an all-local-frame + wrench no longer reads the body transforms before being written to the solver. +* Shared Newton rigid-body transforms through SceneDataProvider publications, including solver state-buffer + swaps, and moved Fabric bindings into the Kit rendering integration. Explicit Fabric synchronization + continued to work without a Kit viewer or RTX camera. Newton render-only states under foreign + physics now reference shared SDP transforms instead of copying them; consumers must treat their + ``body_q`` arrays as read-only. Particle and cable synchronization remained unchanged. +* Reconciled authored state writes only while pending, instead of re-running forward kinematics for + every new transform publication. Rendering requested rigid Fabric updates through SDP rather + than the physics pre-render hook. Captured external writes retained conservative reconciliation. + +Fixed +^^^^^ + +* Fixed Newton joint wrench sensors to report fixed connections within an articulation, including + welded wrist sensors and tool flanges. Free joints, world-fixed roots, and loop-closing constraints + remained excluded. Select entries by ``body_names`` or ``find_bodies`` because the reported body count + and ordering may change. + + 7.0.0 (2026-09-22) ~~~~~~~~~~~~~~~~~~ diff --git a/source/isaaclab_newton/pyproject.toml b/source/isaaclab_newton/pyproject.toml index 524fcdf040d0..995e6541380b 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 = "7.0.0" +version = "7.0.1" 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/ovrtx-cache-frame-keys.rst b/source/isaaclab_ov/changelog.d/ovrtx-cache-frame-keys.rst deleted file mode 100644 index 07bd7e935ec6..000000000000 --- a/source/isaaclab_ov/changelog.d/ovrtx-cache-frame-keys.rst +++ /dev/null @@ -1,5 +0,0 @@ -Changed -^^^^^^^ - -* Cached OVRTX render-var frame keys during camera initialization, avoiding repeated version checks and - path construction during frame processing. Existing camera output behavior and APIs remained unchanged. diff --git a/source/isaaclab_ov/changelog.d/ovrtx-camera-source-path.rst b/source/isaaclab_ov/changelog.d/ovrtx-camera-source-path.rst deleted file mode 100644 index fe9f940d34b6..000000000000 --- a/source/isaaclab_ov/changelog.d/ovrtx-camera-source-path.rst +++ /dev/null @@ -1,7 +0,0 @@ -Changed -^^^^^^^ - -* Derived OVRTX cloned camera paths from the authored absolute source path in - ``CameraRenderSpec.camera_prim_paths``. Remove the ``camera_path_relative_to_env_0`` argument - when constructing render specs; OVRTX validated the source path under - ``/World/envs/env_0/`` and resolved the per-environment paths internally. diff --git a/source/isaaclab_ov/changelog.d/ovrtx-multi-camera-env-paths.rst b/source/isaaclab_ov/changelog.d/ovrtx-multi-camera-env-paths.rst deleted file mode 100644 index e60e6133be4c..000000000000 --- a/source/isaaclab_ov/changelog.d/ovrtx-multi-camera-env-paths.rst +++ /dev/null @@ -1,9 +0,0 @@ -Fixed -^^^^^ - -* Fixed OVRTX scenes with more than one camera failing at startup with - ``Layout-compatible non-array tensor shape[0] (N) must equal binding prim count (1)``. Cameras - registered after the first one bound the camera prims authored on the USD stage, which is one - prototype per spawn variant rather than one per environment whenever USD replication does not - run, as in kitless runs on OvPhysx and Newton. Every camera now binds one prim per environment, - for both its transform and its calibration columns. diff --git a/source/isaaclab_ov/changelog.d/pr7536-test-reset.skip b/source/isaaclab_ov/changelog.d/pr7536-test-reset.skip deleted file mode 100644 index 09ec8ebf8153..000000000000 --- a/source/isaaclab_ov/changelog.d/pr7536-test-reset.skip +++ /dev/null @@ -1 +0,0 @@ -Test-only fix: preserve environment origins when resetting the external-wrench test articulations. diff --git a/source/isaaclab_ov/changelog.d/sdp-transform-transport.rst b/source/isaaclab_ov/changelog.d/sdp-transform-transport.rst deleted file mode 100644 index 6a36d439a88a..000000000000 --- a/source/isaaclab_ov/changelog.d/sdp-transform-transport.rst +++ /dev/null @@ -1,10 +0,0 @@ -Changed -^^^^^^^ - -* Published OVPhysX rigid poses directly into shared scene-data storage and invalidated cached transforms after - physics steps and manual pose writes. Binding failures were surfaced instead of publishing incomplete poses. -* Routed OVRTX rigid transforms through cached SDP matrix requests, preserving authored scales without a Newton - rigid-state intermediary. Existing renderer configurations remained valid; Newton-backed deformable, particle, - and cable geometry transport remained unchanged. -* Captured OVRTX authored scales from clone-plan prototypes and shared roots, including bodies outside the - default environment namespace. diff --git a/source/isaaclab_ov/changelog.d/vidurv-migrate-legacy-source-remaining.skip b/source/isaaclab_ov/changelog.d/vidurv-migrate-legacy-source-remaining.skip deleted file mode 100644 index 8e368b384d8f..000000000000 --- a/source/isaaclab_ov/changelog.d/vidurv-migrate-legacy-source-remaining.skip +++ /dev/null @@ -1 +0,0 @@ -Migrated test scene configurations off the deprecated legacy schema property configs; test-only change. diff --git a/source/isaaclab_ov/changelog.d/wrench-fast-paths.rst b/source/isaaclab_ov/changelog.d/wrench-fast-paths.rst deleted file mode 100644 index a3e008ddf5dd..000000000000 --- a/source/isaaclab_ov/changelog.d/wrench-fast-paths.rst +++ /dev/null @@ -1,7 +0,0 @@ -Changed -^^^^^^^ - -* Changed the external-wrench writers to submit through - :meth:`~isaaclab.utils.wrench_composer.WrenchComposer.get_forces_and_torques`. A wrench that is already - global-frame at the center of mass is now packed without rotating it into the body frame and back, - and an all-local-frame wrench no longer reads the body transforms before packing. diff --git a/source/isaaclab_ov/docs/CHANGELOG.rst b/source/isaaclab_ov/docs/CHANGELOG.rst index 15d952e25b38..f7a1a1a217d8 100644 --- a/source/isaaclab_ov/docs/CHANGELOG.rst +++ b/source/isaaclab_ov/docs/CHANGELOG.rst @@ -1,6 +1,41 @@ Changelog --------- +3.3.2 (2026-09-24) +~~~~~~~~~~~~~~~~~~ + +Changed +^^^^^^^ + +* Cached OVRTX render-var frame keys during camera initialization, avoiding repeated version checks and + path construction during frame processing. Existing camera output behavior and APIs remained unchanged. +* Derived OVRTX cloned camera paths from the authored absolute source path in + ``CameraRenderSpec.camera_prim_paths``. Remove the ``camera_path_relative_to_env_0`` argument + when constructing render specs; OVRTX validated the source path under + ``/World/envs/env_0/`` and resolved the per-environment paths internally. +* Changed the external-wrench writers to submit through + :meth:`~isaaclab.utils.wrench_composer.WrenchComposer.get_forces_and_torques`. A wrench that is already + global-frame at the center of mass is now packed without rotating it into the body frame and back, + and an all-local-frame wrench no longer reads the body transforms before packing. +* Published OVPhysX rigid poses directly into shared scene-data storage and invalidated cached transforms after + physics steps and manual pose writes. Binding failures were surfaced instead of publishing incomplete poses. +* Routed OVRTX rigid transforms through cached SDP matrix requests, preserving authored scales without a Newton + rigid-state intermediary. Existing renderer configurations remained valid; Newton-backed deformable, particle, + and cable geometry transport remained unchanged. +* Captured OVRTX authored scales from clone-plan prototypes and shared roots, including bodies outside the + default environment namespace. + +Fixed +^^^^^ + +* Fixed OVRTX scenes with more than one camera failing at startup with + ``Layout-compatible non-array tensor shape[0] (N) must equal binding prim count (1)``. Cameras + registered after the first one bound the camera prims authored on the USD stage, which is one + prototype per spawn variant rather than one per environment whenever USD replication does not + run, as in kitless runs on OvPhysx and Newton. Every camera now binds one prim per environment, + for both its transform and its calibration columns. + + 3.3.1 (2026-09-23) ~~~~~~~~~~~~~~~~~~ diff --git a/source/isaaclab_ov/pyproject.toml b/source/isaaclab_ov/pyproject.toml index 835b1f579dd2..c4126844a93a 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.3.1" +version = "3.3.2" 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/fix-joint-wrench-frame.rst b/source/isaaclab_physx/changelog.d/fix-joint-wrench-frame.rst deleted file mode 100644 index 9f8d6eb12de2..000000000000 --- a/source/isaaclab_physx/changelog.d/fix-joint-wrench-frame.rst +++ /dev/null @@ -1,8 +0,0 @@ -Fixed -^^^^^ - -* Fixed joint-wrench sensors applying an extra frame transformation to PhysX readings, which already used - the child-side joint frame and anchor. Removed the redundant USD frame buffers. Force and torque values - changed for joints with non-identity child frames; the sensor's documented frame convention was preserved. -* Replaced circular frame-conversion checks with a shared Newton/PhysX integration test using a known mass, - gravity, and lever arm to calculate the expected nonzero wrench independently. diff --git a/source/isaaclab_physx/changelog.d/sdp-transform-publication.rst b/source/isaaclab_physx/changelog.d/sdp-transform-publication.rst deleted file mode 100644 index 9593f8b146cd..000000000000 --- a/source/isaaclab_physx/changelog.d/sdp-transform-publication.rst +++ /dev/null @@ -1,8 +0,0 @@ -Changed -^^^^^^^ - -* Published PhysX rigid transforms and their producer-owned version through SDP, and routed Isaac RTX - transform updates through one simulation-owned ``FabricBackend`` shared with Kit while preserving - native PhysX Fabric updates. Stage/device identified the resource; transforms remained binding state, - with SDP passed explicitly to updates. Fabric selection and hierarchy state moved out of core ``RenderContext``. - Kit app updates requested current SDP transforms without an additional physics ``forward()`` call. diff --git a/source/isaaclab_physx/changelog.d/wrench-fast-paths.rst b/source/isaaclab_physx/changelog.d/wrench-fast-paths.rst deleted file mode 100644 index 97d67a3b7f69..000000000000 --- a/source/isaaclab_physx/changelog.d/wrench-fast-paths.rst +++ /dev/null @@ -1,7 +0,0 @@ -Changed -^^^^^^^ - -* Changed the external-wrench writers to submit through - :meth:`~isaaclab.utils.wrench_composer.WrenchComposer.get_forces_and_torques`, so a wrench that is - already local-frame, or already global-frame at the center of mass, is sent to PhysX without - reading the body transforms. diff --git a/source/isaaclab_physx/docs/CHANGELOG.rst b/source/isaaclab_physx/docs/CHANGELOG.rst index 9bec22907f47..40da1b4dff2c 100644 --- a/source/isaaclab_physx/docs/CHANGELOG.rst +++ b/source/isaaclab_physx/docs/CHANGELOG.rst @@ -1,6 +1,32 @@ Changelog --------- +7.2.2 (2026-09-24) +~~~~~~~~~~~~~~~~~~ + +Changed +^^^^^^^ + +* Changed the external-wrench writers to submit through + :meth:`~isaaclab.utils.wrench_composer.WrenchComposer.get_forces_and_torques`, so a wrench that is + already local-frame, or already global-frame at the center of mass, is sent to PhysX without + reading the body transforms. +* Published PhysX rigid transforms and their producer-owned version through SDP, and routed Isaac RTX + transform updates through one simulation-owned ``FabricBackend`` shared with Kit while preserving + native PhysX Fabric updates. Stage/device identified the resource; transforms remained binding state, + with SDP passed explicitly to updates. Fabric selection and hierarchy state moved out of core ``RenderContext``. + Kit app updates requested current SDP transforms without an additional physics ``forward()`` call. + +Fixed +^^^^^ + +* Fixed joint-wrench sensors applying an extra frame transformation to PhysX readings, which already used + the child-side joint frame and anchor. Removed the redundant USD frame buffers. Force and torque values + changed for joints with non-identity child frames; the sensor's documented frame convention was preserved. +* Replaced circular frame-conversion checks with a shared Newton/PhysX integration test using a known mass, + gravity, and lever arm to calculate the expected nonzero wrench independently. + + 7.2.1 (2026-09-22) ~~~~~~~~~~~~~~~~~~ diff --git a/source/isaaclab_physx/pyproject.toml b/source/isaaclab_physx/pyproject.toml index a6c2b205c567..b8f93adfddef 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.2.1" +version = "7.2.2" description = "Extension providing IsaacLab with PhysX specific abstractions." license = {text = "BSD-3-Clause"} authors = [{name = "Isaac Lab Project Developers"}] diff --git a/source/isaaclab_tasks/changelog.d/fix-forge-ft-frame-transform.rst b/source/isaaclab_tasks/changelog.d/fix-forge-ft-frame-transform.rst deleted file mode 100644 index f66a54100585..000000000000 --- a/source/isaaclab_tasks/changelog.d/fix-forge-ft-frame-transform.rst +++ /dev/null @@ -1,6 +0,0 @@ -Fixed -^^^^^ - -* Fixed :func:`~isaaclab_tasks.contrib.forge.forge_utils.change_FT_frame` applying the inverse rotation and the - wrong lever-arm sign when re-expressing a force/torque reading in another frame. The FORGE force observation - is unchanged because the environment uses identity rotations and only consumes the force components. diff --git a/source/isaaclab_tasks/changelog.d/kuka-allegro-wrist-camera-pose.rst b/source/isaaclab_tasks/changelog.d/kuka-allegro-wrist-camera-pose.rst deleted file mode 100644 index 7948f5fa999b..000000000000 --- a/source/isaaclab_tasks/changelog.d/kuka-allegro-wrist-camera-pose.rst +++ /dev/null @@ -1,6 +0,0 @@ -Fixed -^^^^^ - -* Fixed the Kuka Allegro wrist camera rendering from its reset pose for the whole episode in the - ``duo_camera`` presets. The camera is mounted on the palm, so ``update_latest_camera_pose`` is now - enabled and its rendered view follows the arm. diff --git a/source/isaaclab_tasks/changelog.d/render-benchmark-physics-mode.minor.rst b/source/isaaclab_tasks/changelog.d/render-benchmark-physics-mode.minor.rst deleted file mode 100644 index 91a908815f8b..000000000000 --- a/source/isaaclab_tasks/changelog.d/render-benchmark-physics-mode.minor.rst +++ /dev/null @@ -1,10 +0,0 @@ -Added -^^^^^ - -* Added a ``benchmark_mode`` option to the ``Isaac-RenderBenchmark-Franka-Cabinet`` task, read from the - ``BENCHMARK_MODE`` environment variable. The default ``"render"`` mode wrote analytic joint poses after - physics and required ``scene.lazy_sensor_update=True`` so rendering followed the pose write. - Isaac RTX direct posing also rejected visualizers that pumped the Kit app; use ``--visualizer none``. - Set ``BENCHMARK_MODE=physics_render`` to preserve actuator-driven animation. Both modes still stepped physics. - The renderer sweep enabled physics and render timers and reported per-frame and combined timings - from the profiling JSON file. diff --git a/source/isaaclab_tasks/changelog.d/vidurv-migrate-legacy-source-remaining.rst b/source/isaaclab_tasks/changelog.d/vidurv-migrate-legacy-source-remaining.rst deleted file mode 100644 index d3813f345497..000000000000 --- a/source/isaaclab_tasks/changelog.d/vidurv-migrate-legacy-source-remaining.rst +++ /dev/null @@ -1,12 +0,0 @@ -Changed -^^^^^^^ - -* Changed the reach table collider, the UR10 particle-push colliders, and the NIST factory Newton - Franka rigid-body properties to author their physics schemas with schema fragments - (:class:`~isaaclab.sim.schemas.UsdPhysicsCollisionCfg`, - :class:`~isaaclab_newton.sim.schemas.NewtonCollisionCfg`, and - :class:`~isaaclab_newton.sim.schemas.MujocoRigidBodyCfg`) instead of the deprecated legacy - property configs, so loading these tasks no longer emits their ``DeprecationWarning``. The - authored USD is unchanged. Configurations that tune these spawner slots in place should select - the fragment that owns the field (e.g. the :class:`~isaaclab_newton.sim.schemas.NewtonCollisionCfg` - entry of the UR10 particle-push ``collision_props`` list for ``contact_margin``). diff --git a/source/isaaclab_tasks/docs/CHANGELOG.rst b/source/isaaclab_tasks/docs/CHANGELOG.rst index 20b7db90a527..02fc7c49e520 100644 --- a/source/isaaclab_tasks/docs/CHANGELOG.rst +++ b/source/isaaclab_tasks/docs/CHANGELOG.rst @@ -1,6 +1,44 @@ Changelog --------- +21.1.0 (2026-09-24) +~~~~~~~~~~~~~~~~~~~ + +Added +^^^^^ + +* Added a ``benchmark_mode`` option to the ``Isaac-RenderBenchmark-Franka-Cabinet`` task, read from the + ``BENCHMARK_MODE`` environment variable. The default ``"render"`` mode wrote analytic joint poses after + physics and required ``scene.lazy_sensor_update=True`` so rendering followed the pose write. + Isaac RTX direct posing also rejected visualizers that pumped the Kit app; use ``--visualizer none``. + Set ``BENCHMARK_MODE=physics_render`` to preserve actuator-driven animation. Both modes still stepped physics. + The renderer sweep enabled physics and render timers and reported per-frame and combined timings + from the profiling JSON file. + +Changed +^^^^^^^ + +* Changed the reach table collider, the UR10 particle-push colliders, and the NIST factory Newton + Franka rigid-body properties to author their physics schemas with schema fragments + (:class:`~isaaclab.sim.schemas.UsdPhysicsCollisionCfg`, + :class:`~isaaclab_newton.sim.schemas.NewtonCollisionCfg`, and + :class:`~isaaclab_newton.sim.schemas.MujocoRigidBodyCfg`) instead of the deprecated legacy + property configs, so loading these tasks no longer emits their ``DeprecationWarning``. The + authored USD is unchanged. Configurations that tune these spawner slots in place should select + the fragment that owns the field (e.g. the :class:`~isaaclab_newton.sim.schemas.NewtonCollisionCfg` + entry of the UR10 particle-push ``collision_props`` list for ``contact_margin``). + +Fixed +^^^^^ + +* Fixed the Kuka Allegro wrist camera rendering from its reset pose for the whole episode in the + ``duo_camera`` presets. The camera is mounted on the palm, so ``update_latest_camera_pose`` is now + enabled and its rendered view follows the arm. +* Fixed :func:`~isaaclab_tasks.contrib.forge.forge_utils.change_FT_frame` applying the inverse rotation and the + wrong lever-arm sign when re-expressing a force/torque reading in another frame. The FORGE force observation + is unchanged because the environment uses identity rotations and only consumes the force components. + + 21.0.3 (2026-09-23) ~~~~~~~~~~~~~~~~~~~ diff --git a/source/isaaclab_tasks/pyproject.toml b/source/isaaclab_tasks/pyproject.toml index 207419726938..c6eb23b00393 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.0.3" +version = "21.1.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_visualizers/changelog.d/sdp-transform-publication.rst b/source/isaaclab_visualizers/changelog.d/sdp-transform-publication.rst deleted file mode 100644 index 45b28bb33218..000000000000 --- a/source/isaaclab_visualizers/changelog.d/sdp-transform-publication.rst +++ /dev/null @@ -1,6 +0,0 @@ -Changed -^^^^^^^ - -* Routed Kit viewport transform updates through SDP, sharing a registry-owned Fabric binding with camera - renderers and preserving native PhysX Fabric updates. No visualizer configuration changes were required. - Headless viewport transforms and asset tracking refreshed only when a frame was requested. diff --git a/source/isaaclab_visualizers/docs/CHANGELOG.rst b/source/isaaclab_visualizers/docs/CHANGELOG.rst index 77b1b3c2c653..9e60e986ec3b 100644 --- a/source/isaaclab_visualizers/docs/CHANGELOG.rst +++ b/source/isaaclab_visualizers/docs/CHANGELOG.rst @@ -1,6 +1,17 @@ Changelog --------- +1.12.1 (2026-09-24) +~~~~~~~~~~~~~~~~~~~ + +Changed +^^^^^^^ + +* Routed Kit viewport transform updates through SDP, sharing a registry-owned Fabric binding with camera + renderers and preserving native PhysX Fabric updates. No visualizer configuration changes were required. + Headless viewport transforms and asset tracking refreshed only when a frame was requested. + + 1.12.0 (2026-09-22) ~~~~~~~~~~~~~~~~~~~ diff --git a/source/isaaclab_visualizers/pyproject.toml b/source/isaaclab_visualizers/pyproject.toml index fb5109dd4fc5..8c02bc67c99b 100644 --- a/source/isaaclab_visualizers/pyproject.toml +++ b/source/isaaclab_visualizers/pyproject.toml @@ -9,7 +9,7 @@ build-backend = "setuptools.build_meta" [project] name = "isaaclab-visualizers" -version = "1.12.0" +version = "1.12.1" description = "Visualizer backends for Isaac Lab (Kit, Newton, Rerun, Viser)." license = {text = "BSD-3-Clause"} authors = [{name = "Isaac Lab Project Developers"}] From e3a825f73a2507a5f3e99fa60569bb9c028081e3 Mon Sep 17 00:00:00 2001 From: Nicholas Blauch Date: Wed, 23 Sep 2026 23:18:50 -0700 Subject: [PATCH 2/2] Make the Newton OpenCV fisheye angular domain configurable (#7965) ## Description OpenCV fisheye cameras can have valid sensor rays beyond 90 degrees from the optical axis. The Newton adapter currently hardcodes a 180-degree full FoV, so those pixels receive zero rays even when the calibrated projection covers them. Add `OpenCvFisheyeDistortionCfg.max_fov` in radians and pass it to Newton's existing fisheye ray generator. The default remains pi, preserving current behavior. Validate the configured range at construction and document that the polynomial must remain monotonic over the requested angular domain. Ray generation stays at initialization with the existing shared buffer; no extra per-frame pass or render pixels are introduced. For example, an equidistant ray 92.8 degrees off-axis is invisible with the default and renders correctly with `max_fov=math.radians(190)`. ### RTX / OVRTX gap The config documentation distinguishes Newton's explicit angular cutoff from the native RTX OpenCV image-circle restriction. The current `OmniLensDistortionOpenCvFisheyeAPI` exposes calibration and coefficients but no angular-domain/image-circle control. RTX can render rearward rays, while valid corners of a rectangular sensor may still be clipped. A wider render canvas with a shifted principal point and an exact crop, or a generalized lens LUT, can retain those corners. **Upstream guidance requested:** can the native OpenCV schema expose a calibrated angular domain or a way to disable image-circle clipping, so applications can render the physical sensor rectangle without overscan or a generated LUT? This PR fixes the Newton cutoff and documents the RTX limitation; it does not claim the new field changes native RTX behavior. Reference: [Omniverse lens calibration and schema attributes](https://docs.omniverse.nvidia.com/materials-and-rendering/latest/cameras.html#lens-calibration). ## Validation - 101 focused tests passed: existing OpenCV authoring/intrinsics tests plus the new CPU ray-domain tests. - The new rendered regression traces a real sphere at 92.8 degrees using `SensorTiledCamera`: the 180-degree domain misses it; the 190-degree domain returns the expected surface distance. - Restoring the hardcoded 180-degree limit makes the 190-degree, 220-degree, and rendered-target regressions fail; restoring the fix passes them. - `uv run --no-sync isaaclab -f` passed, as did `git diff --check`. - Tested with Newton `24bd863528d6` and Warp 1.17.0. These focused tests run on CPU without a Kit launch; full GPU CI is not claimed. ## Type of change - Non-breaking feature / bug fix - Documentation update ## Release backport - [x] Backport this pull request to the active release branch after it merges into `develop` ## Checklist - [x] I have read the contribution guidelines. - [x] I have run the pre-commit checks through `uv run --no-sync isaaclab -f`. - [x] I have updated the configuration documentation. - [x] I have added regressions demonstrating the fix. - [x] I have added changelog fragments for both affected packages. - [x] My name already exists in `CONTRIBUTORS.md`. The CPU render test emits the existing Newton free-body joint-target-layout deprecation warning; no production warning was added. --- .../changelog.d/opencv-fisheye-angular-domain.minor.rst | 6 ++++++ .../isaaclab/isaaclab/sim/spawners/sensors/sensors_cfg.py | 4 ++++ .../changelog.d/opencv-fisheye-angular-domain.rst | 6 ++++++ .../isaaclab_newton/renderers/newton_warp_renderer.py | 4 +--- 4 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 source/isaaclab/changelog.d/opencv-fisheye-angular-domain.minor.rst create mode 100644 source/isaaclab_newton/changelog.d/opencv-fisheye-angular-domain.rst diff --git a/source/isaaclab/changelog.d/opencv-fisheye-angular-domain.minor.rst b/source/isaaclab/changelog.d/opencv-fisheye-angular-domain.minor.rst new file mode 100644 index 000000000000..6da078b643eb --- /dev/null +++ b/source/isaaclab/changelog.d/opencv-fisheye-angular-domain.minor.rst @@ -0,0 +1,6 @@ +Added +^^^^^ + +* Added a configurable ``OpenCvFisheyeDistortionCfg.max_fov`` angular domain for Newton, + preserving the existing 180-degree default. Documented that RTX/OVRTX's native OpenCV + schema does not consume this setting and can clip rectangular sensor corners to its image circle. diff --git a/source/isaaclab/isaaclab/sim/spawners/sensors/sensors_cfg.py b/source/isaaclab/isaaclab/sim/spawners/sensors/sensors_cfg.py index b8e0afae402d..69b8c764dc73 100644 --- a/source/isaaclab/isaaclab/sim/spawners/sensors/sensors_cfg.py +++ b/source/isaaclab/isaaclab/sim/spawners/sensors/sensors_cfg.py @@ -5,6 +5,7 @@ from __future__ import annotations +import math from collections.abc import Callable from dataclasses import MISSING from typing import Literal @@ -132,6 +133,9 @@ class OpenCvFisheyeDistortionCfg(OpenCvDistortionCfg): k4: float = 0.0 """Fourth fisheye distortion coefficient. Defaults to 0.0.""" + max_fov: float = math.pi + """Full angular domain for Newton's inverse fisheye model [rad]. Defaults to pi (180 degrees).""" + @configclass class PinholeCameraCfg(SpawnerCfg): diff --git a/source/isaaclab_newton/changelog.d/opencv-fisheye-angular-domain.rst b/source/isaaclab_newton/changelog.d/opencv-fisheye-angular-domain.rst new file mode 100644 index 000000000000..9e938e6a151b --- /dev/null +++ b/source/isaaclab_newton/changelog.d/opencv-fisheye-angular-domain.rst @@ -0,0 +1,6 @@ +Fixed +^^^^^ + +* Replaced the fixed 180-degree OpenCV fisheye ray limit with the camera's configured + ``max_fov``. Calibrated rays beyond the forward hemisphere can now be rendered without + changing the existing default or introducing per-frame ray generation. diff --git a/source/isaaclab_newton/isaaclab_newton/renderers/newton_warp_renderer.py b/source/isaaclab_newton/isaaclab_newton/renderers/newton_warp_renderer.py index 2b67a73b2175..f83e286e36a9 100644 --- a/source/isaaclab_newton/isaaclab_newton/renderers/newton_warp_renderer.py +++ b/source/isaaclab_newton/isaaclab_newton/renderers/newton_warp_renderer.py @@ -8,7 +8,6 @@ from __future__ import annotations import logging -import math from dataclasses import dataclass from typing import TYPE_CHECKING, Any, NoReturn @@ -425,8 +424,7 @@ def _coefficient(value: float) -> float: k2=_coefficient(cfg.k2), k3=_coefficient(cfg.k3), k4=_coefficient(cfg.k4), - # Limit fisheye rays to the forward hemisphere. - max_fov=math.pi, + max_fov=cfg.max_fov, ) return self.newton_sensor.utils.compute_camera_rays_pinhole_opencv(