Add PhysX joint wrench sensor#1
Open
AntoineRichard wants to merge 41 commits into
Open
Conversation
…e Docker waits) (isaac-sim#5429) # Description Fixes two CI reliability problems: 1. **Stale pipelines not cancelled on new commits.** 2. **Manual cancellation didn't actually stop tests.** ## What changed - **Concurrency**: per-PR `cancel-in-progress` group on `build.yaml`, `docs.yaml`, `license-check.yaml`, `check-links.yml`; added missing `concurrency` blocks to `install-ci.yml`, `pre-commit.yaml`, `labeler.yml`. - **`run-tests` action**: backgrounded `docker wait` + bash `wait` builtin (signal-interruptible), `trap HUP|INT|TERM` that `docker kill`s the container, plus an `if: cancelled()` force-kill step as a safety net. - **`build.yaml` job conditions**: dropped `always() &&` from test jobs. `if: always()` makes a job uncancellable, which silently defeated the concurrency fix above. Behavior on success/failure is unchanged. ## Type of change - Bug fix (non-breaking change which fixes an issue) ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [ ] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there --------- Co-authored-by: Antoine RICHARD <antoiner@nvidia.com>
Add the PhysX backend implementation for JointWrenchSensor and migrate body incoming wrench observations off ArticulationData. Remove the old articulation data accessor and document the Isaac Lab 3.0 migration path.
Resolve nested USD articulation roots before creating the PhysX articulation view so classic Ant and Humanoid environments can use the joint wrench sensor from the asset prim path.
Resolve nested articulation roots for the Newton joint wrench sensor and let classic Ant and Humanoid Newton presets use the same wrench observation terms as PhysX.
Convert PhysX incoming joint wrenches from body1 frame at the body origin into the shared child-side joint frame with torque referenced at the child-side joint anchor.
# Description Improves performance across the board for asset writes. ## Type of change - Bug fix (non-breaking change which fixes an issue) ## Micro benchmarks ``` ┌─────────────────────────────────┬────────┬───────┬─────────┐ │ Method │ Before │ After │ Speedup │ ├─────────────────────────────────┼────────┼───────┼─────────┤ │ write_root_link_pose_to_sim │ 94 │ 81 │ 1.16x │ ├─────────────────────────────────┼────────┼───────┼─────────┤ │ write_root_com_pose_to_sim │ 111 │ 90 │ 1.23x │ ├─────────────────────────────────┼────────┼───────┼─────────┤ │ write_root_link_velocity_to_sim │ 128 │ 124 │ 1.03x │ ├─────────────────────────────────┼────────┼───────┼─────────┤ │ write_root_com_velocity_to_sim │ 110 │ 108 │ 1.02x │ ├─────────────────────────────────┼────────┼───────┼─────────┤ │ write_joint_state_to_sim │ 180 │ 127 │ 1.42x │ ├─────────────────────────────────┼────────┼───────┼─────────┤ │ write_joint_position_to_sim │ 98 │ 108 │ ~1.0x │ ├─────────────────────────────────┼────────┼───────┼─────────┤ │ set_joint_position_target │ 94 │ 107 │ ~1.0x │ ├─────────────────────────────────┼────────┼───────┼─────────┤ │ write_joint_stiffness_to_sim │ 171 │ 152 │ 1.13x │ ├─────────────────────────────────┼────────┼───────┼─────────┤ │ write_joint_damping_to_sim │ 177 │ 151 │ 1.17x │ ├─────────────────────────────────┼────────┼───────┼─────────┤ │ write_joint_armature_to_sim │ 170 │ 153 │ 1.11x │ ├─────────────────────────────────┼────────┼───────┼─────────┤ │ set_masses │ 177 │ 152 │ 1.16x │ ├─────────────────────────────────┼────────┼───────┼─────────┤ │ set_coms │ 350 │ 272 │ 1.29x │ ├─────────────────────────────────┼────────┼───────┼─────────┤ │ set_inertias │ 350 │ 280 │ 1.25x │ └─────────────────────────────────┴────────┴───────┴─────────┘ ``` ## Checklist - [ ] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [ ] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [ ] I have made corresponding changes to the documentation - [ ] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [ ] I have added my name to the `CONTRIBUTORS.md` or my name already exists there
…m#5441) # Description Added platform_system == 'Linux' marker to the isaacteleop dependency in isaaclab_teleop/setup.py so pip no longer fails to resolve it on Windows. The isaaclab_teleop package itself remains in the teleop and all extras unconditionally — only the native isaacteleop library is skipped on non-Linux platforms. Fixes # (issue) ## Type of change - Bug fix (non-breaking change which fixes an issue) ## Screenshots Please attach before and after screenshots of the change if applicable. ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there
## Summary - Remove PR-level path filters from required Docker and installation workflows so checks are always reported. - Add change-detection jobs that skip expensive self-hosted tests for docs-only PRs. - Add gate checks for branch protection: `Docker Tests Gate` and `Installation Tests Gate`. - Add a regression test that verifies required workflows do not use path filters and expose gate jobs. ## Testing - `./isaaclab.sh -p -m pytest .github/workflows/test_required_ci_gates.py -q` - `./isaaclab.sh -f` ## Follow-up for branch protection After this merges, update the required checks to require the gate checks instead of the individual Docker shards and installation job: - require `Docker Tests Gate` - require `Installation Tests Gate` - remove required checks for `Installation Tests`, `isaaclab (core) [1/3]`, `isaaclab (core) [2/3]`, `isaaclab (core) [3/3]`, `isaaclab_assets`, `isaaclab_contrib`, and `isaaclab_newton`
# Description <!-- Thank you for your interest in sending a pull request. Please make sure to check the contribution guidelines. Link: https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html 💡 Please try to keep PRs small and focused. Large PRs are harder to review and merge. --> Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change. Fixes # (issue) <!-- As a practice, it is recommended to open an issue to have discussions on the proposed pull request. This makes it easier for the community to keep track of what is being developed or added, and if a given feature is demanded by more than one party. --> ## Type of change <!-- As you go through the list, delete the ones that are not applicable. --> - Bug fix (non-breaking change which fixes an issue) - New feature (non-breaking change which adds functionality) - Breaking change (existing functionality will not work without user modification) - Documentation update ## Screenshots Please attach before and after screenshots of the change if applicable. <!-- Example: | Before | After | | ------ | ----- | | _gif/png before_ | _gif/png after_ | To upload images to a PR -- simply drag and drop an image while in edit mode and it should upload the image directly. You can then paste that source into the above before/after sections. --> ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [ ] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there <!-- As you go through the checklist above, you can mark something as done by putting an x character in it For example, - [x] I have done this task - [ ] I have not done this task --> --------- Co-authored-by: Piotr Barejko <pbarejko@nvidia.com>
# Description
`source/isaaclab_ovphysx/setup.py` lists `"ovphysx"` in
`install_requires`.
The default `./isaaclab.sh -i` flow auto-discovers every package under
`source/` and pip-installs each one, so the wrapper's hard dep on the
`ovphysx` PyPI wheel is fetched unconditionally. When that wheel is
unavailable (the common case for users who don't need the runtime), the
whole install aborts and unrelated cfg classes such as `OvPhysxCfg`
become unimportable.
This change makes the runtime an opt-in extra:
```python
INSTALL_REQUIRES: list[str] = []
EXTRAS_REQUIRE = {"ovphysx": ["ovphysx"]}
```
After the change:
- `./isaaclab.sh -i` (default) — installs `isaaclab_ovphysx`
wrapper-only,
cfg modules import without needing the `ovphysx` wheel.
- `pip install -e source/isaaclab_ovphysx[ovphysx]` — installs the
wrapper
with the `ovphysx` runtime alongside it for users who want it.
No CLI machinery is touched. Users who want the runtime use pip's
existing `[extra]` syntax directly; we don't need to surface it through
`./isaaclab.sh` since `isaaclab_ovphysx` is already installed by the
default all-scan.
## Type of change
- Bug fix (non-breaking change which fixes an issue)
## Checklist
- [x] I have read and understood the [contribution
guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html)
- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./isaaclab.sh --format`
- [ ] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [ ] I have updated the changelog and the corresponding version in the
extension's `config/extension.toml` file
- [x] I have added my name to the `CONTRIBUTORS.md` or my name already
exists there
Co-authored-by: Antoine RICHARD <antoiner@nvidia.com>
# Description Recent branch protection rules blocked force push from the doc deployment job to the gh-pages branch, breaking the documentation update pipeline of our built docs. This change removes the force push from the job, which shouldn't be necessary. ## Type of change <!-- As you go through the list, delete the ones that are not applicable. --> - Bug fix (non-breaking change which fixes an issue) - Documentation update ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [ ] I have added my name to the `CONTRIBUTORS.md` or my name already exists there <!-- As you go through the checklist above, you can mark something as done by putting an x character in it For example, - [x] I have done this task - [ ] I have not done this task -->
# Description Fixes three NVBugs from the Apr 28 SQA wave against Isaac Lab 3.0 Beta2. NVBugs fixed: - nvbug#6123115 - pip wheel install does not pull skrl - nvbug#6122694 - nlopt wheel build fails on DGX Spark (ARM64) - nvbug#6110670 - Win11 isaaclab.bat --install rejects setuptools<82.0.0 spec Changes: - Document that the bundled training scripts need the [all] extras with the pip wheel. - On ARM Linux, isaaclab.sh -i now installs swig and pre-installs nlopt 2.6.2 with --no-build-isolation. - On Windows, extract_python_exe prefers kit/python/python.exe over python.bat, and the .bat fallback wrapper now caret-escapes cmd.exe metacharacters. ## Type of change - Bug fix (non-breaking change which fixes an issue) ## Checklist - [x] I have read and understood the contribution guidelines - [x] I have run the pre-commit checks with ./isaaclab.sh --format - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [x] I have updated the changelog and the corresponding version in the extension's config/extension.toml file - [x] I have added my name to the CONTRIBUTORS.md or my name already exists there --------- Signed-off-by: Kelly Guo <kellyg@nvidia.com> Co-authored-by: Kelly Guo <kellyg@nvidia.com>
# Description Clear up docs on tutorials for deformable asset. No need to mention color of cubes (in case this changes in the future). ## Type of change - Documentation update ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there
## Description Centralizes multi-GPU device resolution in AppLauncher and launch_simulation() so that individual training scripts do not need per-script distributed device logic. ### Problem In distributed (multi-GPU) training, every RL script duplicates device resolution. This breaks when CUDA_VISIBLE_DEVICES restricts each process to a single GPU (e.g., SLURM), because local_rank=1 exceeds the visible device count. Additionally, physics backends like Newton/Warp that allocate on the current CUDA device during init may all default to cuda:0. ### Fix **app_launcher.py:** CUDA_VISIBLE_DEVICES-aware device ID resolution, early torch.cuda.set_device(), new self.device attribute. **sim_launcher.py:** New _resolve_distributed_device() helper centralizes device logic in launch_simulation(). After AppLauncher creation, propagates AppLauncher.device to env_cfg.sim.device. Handles kitless Newton path. Also treats PresetCfg renderers as non-Kit in _is_kit_camera(). **presets.py:** Adds newton and physx aliases to MultiBackendRendererCfg. ## Type of change - Bug fix (non-breaking change which fixes an issue) ## Checklist - [x] I have run the pre-commit checks - [x] My changes generate no new warnings - [x] I have read and understood the contribution guidelines --------- Co-authored-by: Kelly Guo <kellyguo11@users.noreply.github.com> Co-authored-by: Bob <bob@isaaclab.dev> Co-authored-by: Mustafa H <34825877+StafaH@users.noreply.github.com>
## 1. Summary Restores biped-specific reset overrides on H1, Cassie, Digit, G1 that were lost when the parent PR (isaac-sim#5248) consolidated startup events into the shared `EventsCfg`. Re-enables `add_base_mass` randomization on H1 and Cassie with the new log-uniform scale default. This PR contains only the biped-level deltas — Newton physics, shape margin, and quadruped enablement all live in isaac-sim#5248. ## 2. Dependencies 1. PR isaac-sim#5365 — `checked_apply` helper. 2. PR isaac-sim#5248 — quadruped Newton support, shared `RoughPhysicsCfg`, `NewtonShapeCfg(margin=0.01)`. ## 3. Changes ### 3.1 Restore biped reset overrides Bipeds have precise initial poses that should not be randomly scaled on reset. The shared `EventsCfg.reset_robot_joints` uses `position_range = (0.5, 1.5)`; bipeds override to `(1.0, 1.0)`: | Env | Override | |---|---| | H1 | `position_range = (1.0, 1.0)` | | Cassie | `position_range = (1.0, 1.0)` + leg `armature = 0.02` for stability on rough terrain | | Digit | `position_range = (1.0, 1.0)` | | G1 | `position_range = (1.0, 1.0)` | ### 3.2 Re-enable `add_base_mass` on H1 and Cassie Per-env `add_base_mass = None` overrides on H1 and Cassie (pre-existing biped convention from PR isaac-sim#444, reinforced by PR isaac-sim#4165's Newton NaN TODO) are removed. The parent PR's new log-uniform scale default `(1/1.25, 1.25)` is safer for bipeds than the old additive `(-5, 5)` kg (which was effectively ±25% on H1's torso vs ±100% on Cassie's pelvis). - **H1** inherits the shared default (symmetric ±25% scale, `body_names="torso_link"`). - **Cassie** overrides to `(1.0, 1.25)` asymmetric heavier-bias: lighter-than-nominal pelvis destabilizes Cassie's closed-loop Achilles rod coupling and hip PD response, while heavier-than-nominal dampens dynamics. | Variant | reward | ep len | vs disabled | |---|---:|---:|---:| | Disabled (`= None`) | +20.00 | 982 | ref | | Symmetric ±25% (`(1/1.25, 1.25)`) | +12.00 | 605 | -40% (regression) | | Asymmetric heavier `(1.0, 1.25)` | +18.00 | 935 | **+90%** (chosen) | H1 reward at iter 1499: `24.02` with mass rand on vs `23.58` with it disabled — essentially equal; re-enabling provides sim-to-real robustness at negligible training cost. ## 4. PhysX / Newton parity (1500 iter, 4096 envs, last30 avg) | Robot | PhysX 1500 | Newton 1500 | Newton/PhysX | |---|---:|---:|---:| | H1 | **+18.15** | **+24.05** | **132%** ✓ | | Cassie | **+19.57** | **+24.75** | **127%** ✓ | Both bipeds reach parity or better on Newton at full 1500-iter training. ## 5. Versions - `isaaclab_tasks` 1.5.25 → 1.5.26 ## Type of change - New feature (non-breaking). --------- Co-authored-by: ooctipus <zhengyuz@nvidia.com>
…isaac-sim#5432) # Description Adds a re-entrant context manager `disabled_fabric_change_notifies` that suspends the `omni::fabric::IFabricUsd` USD notice listener for the duration of bulk cloning. During `Sdf.CopySpec` loops in `usd_replicate`, every per-prim mutation otherwise fires `IFabricUsd::UsdNoticeListener::Handle` to do an immediate Fabric↔USD sync — for moderately heavy scenes that single hot path can dominate scene-load time. Toggling the listener's soft flag (`IFabricUsd.cpp:739`) gates the work without unregistering the listener, then the natural `SimulationContext.reset` path performs the catch-up resync in one pass. The same handler is what `isaacsim.core.cloner.Cloner.disable_change_listener` toggles, but this implementation reaches it through the underlying `omni::fabric::IFabricUsd` Carbonite interface directly, so the cloner has **no `isaacsim.core.simulation_manager` dependency**. Since `omni.fabric` has no public Python binding for `setEnableChangeNotifies`, acquisition is via a small ctypes module modelled on the in-tree `isaaclab_newton.physics._cubric` pattern. The context manager is wired in at the cloner-session boundary — `clone_from_template` and the two cloning regions in `InteractiveScene` — not inside `usd_replicate` itself, keeping the leaf USD-authoring primitive pure. ## Motivation This PR supersedes the approach taken in isaac-sim#5070 (still open). isaac-sim#5070 reaches the same toggle via `isaacsim.core.simulation_manager.SimulationManager.enable_fabric_usd_notice_handler`, which: 1. Adds an `isaacsim.core.simulation_manager` dependency to the cloner (project policy: avoid `isaacsim.*` implementation deps). 2. Implements via a state-dict pattern + a private `_manage_notice_handlers` kwarg leaked through public `usd_replicate`. 3. Disables the handler from inside `usd_replicate` and never re-enables it on exit (global-state leak that survives exceptions). This PR keeps isaac-sim#5070's measured perf win while replacing the above with a single context manager wired in at the orchestrator boundary, exception-safe, re-entrant, and IsaacSim-implementation-free. ### Architecture | Concern | Where it lives | |---|---| | ABI-coupled ctypes binding | `source/isaaclab/isaaclab/cloner/_fabric_notices.py` (private, ~135 lines) | | Public context manager | `disabled_fabric_change_notifies(stage, *, restore=True)` in `cloner_utils.py` | | Application | `clone_from_template` body and `InteractiveScene.clone_environments` | The `restore=False` kwarg, used at the two scene-init sites, opts out of the on-exit re-enable. This avoids the redundant `forceMinimalPopulate` batch that fires when the flag flips back on; downstream `SimulationContext.reset` performs the same Fabric resync as part of normal startup. `restore=True` (the default) is exception-safe and is what tests and any future direct callers get. When the Carbonite interface can't be acquired (e.g. running outside a live Kit application), the context manager falls through to a no-op so callers never break — they just don't get the perf win. ## Benchmarks `scripts/benchmarks/benchmark_startup.py`, RTX 5090, headless, warm run (2nd of 2 invocations after kernel/extension caches populate). | Task | num_envs | Backend | Before | After | Saved | % | |---|---:|---|---:|---:|---:|---:| | `Isaac-Cartpole-Direct-v0` | 4096 | PhysX | 7.41 s | 6.47 s | 0.94 s | −12.7% | | `Isaac-Cartpole-Direct-v0` | 4096 | Newton | 22.06 s | 22.01 s | 0.05 s | ~0% | | `Isaac-Velocity-Flat-Anymal-C-v0` | 4096 | PhysX | 28.09 s | 14.49 s | 13.60 s | **−48.4%** | | `Isaac-Velocity-Flat-Anymal-C-v0` | 4096 | Newton | 36.72 s | 32.99 s | 3.73 s | −10.1% | | `Isaac-Dexsuite-Kuka-Allegro-Reorient-v0` | 8192 | PhysX | 104.84 s | 41.94 s | 62.90 s | **−60.0%** | | `Isaac-Dexsuite-Kuka-Allegro-Reorient-v0` | 8192 | Newton | 81.00 s | 74.17 s | 6.83 s | −8.4% | Savings come entirely from `env_creation` (Scene Creation + Simulation Start) and `first_step`. Non-cloning phases (`app_launch`, `python_imports`, `task_config`) are unchanged within run-to-run noise. Newton kitless runs see smaller wins because Fabric is only touched when `omni.fabric` is loaded for rendering; PhysX with Kit is the primary beneficiary. The `first_step` collapse on heavy scenes (e.g. Dexsuite −93%, 10.8 s → 0.74 s) is the deferred Fabric resync work folding into the existing `SimulationContext.reset` pass with much less overhead than an eager `forceMinimalPopulate`. ## Type of change - New feature (non-breaking change which adds functionality) - Performance improvement ## Test plan - `pytest source/isaaclab/test/sim/test_cloner.py` → 18 passed - `pytest source/isaaclab_physx/test/sim/test_cloner.py` → 22 passed (2 xfailed/2 xpassed are pre-existing) - `./isaaclab.sh -f` (pre-commit) clean - Smoke test confirms `restore=True` round-trips the flag, `restore=False` leaves it off, and nested context managers are re-entrant. ## Follow-ups - File a Kit-team request for an `omni.fabric` Python binding to `setEnableChangeNotifies`, after which `_fabric_notices.py` can be deleted. - Consider an ABI-drift smoke test under `test_cloner.py` to catch Kit-side vtable changes in CI. ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there
# Description Document Kamino solver selection through the existing Hydra preset system. - Adds a "Backend and Solver Presets" section that explains how `newton` and `kamino` presets both use `NewtonCfg` but choose different solver configs. - Notes that Kamino is experimental and depends on assets being structured for Kamino. - Adds a brief mention from the Newton solver-transitioning page and updates the MuJoCo-Warp example to current public config APIs. Fixes: N/A ## Type of change - Documentation update ## Screenshots N/A. Documentation-only change. ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [x] I have made corresponding changes to the documentation - [ ] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] I have updated the changelog and the corresponding version in the extension config file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there
# Description This migrates json nsys trace definitions from omniperf benchmark to isaaclab itself. Part 1/2 - Added new nsys_trace.json (moved from omniperf benchmark) to decorate functions of interest in isaac traces without requiring decorators in the codebase. - Added a unit test to ensure the json stays in sync. ## Type of change - New feature (non-breaking change which adds functionality) ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [x] I have made corresponding changes to the documentation - [ ] My changes generate no new warnings *(Intentionally added new warnings in new test file)* - [x] I have added tests that prove my fix is effective or that my feature works - [ ] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file *(N/A - no package source files edited)* - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there
# Description Adds wheel versioning so QA can identify which build is newer and reproduce any wheel from its commit. The wheel follows PEP 440 local-version `<VERSION>+build<N>.<sha7>`. Downloading in QA env: ``` # Latest from develop RUN_ID=$(gh run list --workflow=wheel.yml --branch=develop -L 1 --json databaseId -q '.[0].databaseId') rm -rf ./out && gh run download "$RUN_ID" --pattern 'isaaclab-*' -D ./out # Latest from a specific PR branch RUN_ID=$(gh run list --workflow=wheel.yml --branch=<branch-name> -L 1 --json databaseId -q '.[0].databaseId') rm -rf ./out && gh run download "$RUN_ID" --pattern 'isaaclab-*' -D ./out # Specific run rm -rf ./out && gh run download <run-id> --pattern 'isaaclab-*' -D ./out # Find newly downloaded wheel file WHEEL_FILE=$(ls -1t ./out/isaaclab-*/*.whl | head -1) # Install it pip install --force-reinstall $WHEEL_FILE ``` ## Type of change - New feature (non-breaking change which adds functionality) ## Checklist - [x] I have read and understood the contribution guidelines - [x] I have run the pre-commit checks with `./isaaclab.sh --format` - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there
# Description Recent changes in Isaac Lab requires a newer version of Isaac Sim than what is available in the GitHub repo for Isaac Sim. Adds notes in the docs and readme to mention this incompatibility issue and specifies working commits and tags of Isaac Lab that can be used in conjunction with Isaac Sim from GitHub. ## Type of change - Documentation update ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [ ] I have added my name to the `CONTRIBUTORS.md` or my name already exists there <!-- As you go through the checklist above, you can mark something as done by putting an x character in it For example, - [x] I have done this task - [ ] I have not done this task -->
# Description Some tests arbitrarily times out due to inconsistent CI runs. This change adds a logic to rerun tests that have timed out in an attempt to reduce flaky timeout issues. ## Type of change <!-- As you go through the list, delete the ones that are not applicable. --> - Bug fix (non-breaking change which fixes an issue) ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [ ] I have added my name to the `CONTRIBUTORS.md` or my name already exists there <!-- As you go through the checklist above, you can mark something as done by putting an x character in it For example, - [x] I have done this task - [ ] I have not done this task -->
…c-sim#5470) # Description Two unrelated CI flakes in the same test infrastructure area, bundled because both are minimal targeted fixes. ### 1. `test_disabled_fabric_change_notifies_speedup_regression` (`source/isaaclab_physx/test/sim/test_cloner.py`) This is a wall-clock perf regression test that's intended to run **locally only** — it asserts a >= 1.2× speedup of clone+reset with listener suspension. The result is platform-sensitive (deferred Fabric resync in `sim.reset` can offset the scene-time savings on some hardware), so it was meant to be skipped in CI. The original guard was `if os.getenv(\"CI\", \"\").lower() in (\"true\", \"1\"): pytest.skip(...)` inside the test body. However, this project's CI doesn't set the `CI` env var — it selects tests via the `isaacsim_ci` pytest marker registered in `pyproject.toml` and applied module-wide via `pytestmark` at the top of `test_cloner.py`. Result: the env-var skip never fires, and the test runs (and occasionally flakes) on CI. Fix: replace the dead env-var branch with a top-level `@pytest.mark.skip(...)` decorator so the test is collected and skipped unconditionally regardless of how CI selects tests. The correctness of the suspension mechanism is still covered by `test_disabled_fabric_change_notifies_toggles_ifabricusd_flag`, which is unaffected. Re-enable the perf test manually when touching listener suspension. ### 2. `test_output_equal_to_usd_camera_when_intrinsics_set` (`source/isaaclab/test/sensors/test_ray_caster_camera.py`) Intermittent CI failure where the ray caster camera output mismatched the USD camera reference with inf-valued differences across all 518400 elements: ``` E Mismatched elements: 518400 / 518400 (100.0%) E Greatest absolute difference: inf at index (0, 0, 0, 0) (up to 0.0001 allowed) E Greatest relative difference: inf at index (0, 0, 0, 0) (up to 0.005 allowed) ``` Root cause: the test placed the camera at `eye=(0, 0, 5)` looking at `target=(0, 0, 0)`, which is colinear with the default up vector and produces a degenerate view transform. Fix: nudge `eye` to `(0.001, 0, 5)` for both the ray caster and USD camera, keeping them at identical poses while breaking the singularity. The underlying degeneracy is tracked in a separate internal ticket; this is the test-side mitigation. Fixes # (n/a) ## Type of change - Bug fix (non-breaking change which fixes an issue) ## Screenshots N/A — test infrastructure changes. ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there
# Description <!-- Thank you for your interest in sending a pull request. Please make sure to check the contribution guidelines. Link: https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html 💡 Please try to keep PRs small and focused. Large PRs are harder to review and merge. --> Patch newton model reqs issue where in some caes env configs were constructed in a way where newton model reqs were not correctly determined, leading to downstream issues. Also, revert the revert to physx scene data provider, since the fix above no longer requires the revert, which is non ideal since building newton model from usd fallback is slow. <!-- As a practice, it is recommended to open an issue to have discussions on the proposed pull request. This makes it easier for the community to keep track of what is being developed or added, and if a given feature is demanded by more than one party. --> ## Type of change <!-- As you go through the list, delete the ones that are not applicable. --> - Bug fix (non-breaking change which fixes an issue) ## Screenshots Please attach before and after screenshots of the change if applicable. <!-- Example: | Before | After | | ------ | ----- | | _gif/png before_ | _gif/png after_ | To upload images to a PR -- simply drag and drop an image while in edit mode and it should upload the image directly. You can then paste that source into the above before/after sections. --> ## Checklist - [ ] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [ ] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [ ] I have made corresponding changes to the documentation - [ ] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [ ] I have added my name to the `CONTRIBUTORS.md` or my name already exists there <!-- As you go through the checklist above, you can mark something as done by putting an x character in it For example, - [x] I have done this task - [ ] I have not done this task --> --------- Signed-off-by: matthewtrepte <mtrepte@nvidia.com> Co-authored-by: Kelly Guo <kellyg@nvidia.com> Co-authored-by: HuiDong Chen <huidongc@nvidia.com> Co-authored-by: myurasov-nv <168484206+myurasov-nv@users.noreply.github.com> Co-authored-by: hujc <leo.hu.sh@gmail.com> Co-authored-by: Antoine Richard <antoiner@nvidia.com> Co-authored-by: peterd-NV <peterd@nvidia.com>
# Description Added support to train a gear assembly/insertion policy for the Flexiv Rizon 4s robot. Defined new envs/tasks for this. Added required robot config for the Flexiv Rizon 4s with Grav gripper. Added documentation for a tutorial on training a gear assembly policy with Flexiv Rizon 4s. ## Type of change - New feature (non-breaking change which adds functionality) - Documentation update ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there --------- Co-authored-by: Kelly Guo <kellyg@nvidia.com>
…ts (isaac-sim#5434) ## Problem Every PR that touches `source/<pkg>/` updates `source/<pkg>/docs/CHANGELOG.rst` and `source/<pkg>/config/extension.toml`. Both files are append-only at the top, so concurrent PRs collide on the same lines. Contributors burn time resolving merge conflicts that say nothing about the actual change. Maintainers occasionally land an entry under the wrong version heading because the resolution is mechanical and easy to mis-do. ## Solution Adopt the towncrier-style fragment-per-PR pattern (used by pip, urllib3, Twisted, Trio, attrs, Sphinx, …): - Each PR adds **one fragment file** per touched package under `source/<pkg>/changelog.d/<slug>.<tier>.rst`. Different PRs touch different files — no conflict. - A **nightly CI workflow** rolls accumulated fragments into per-package `CHANGELOG.rst` entries, bumps each `extension.toml`, deletes consumed fragments, and pushes the result back to `develop`. - A **PR gate** rejects any PR that touches a managed package's source without adding a fragment, and rejects modifications to existing fragments (immutability). CHANGELOG.rst and extension.toml become append-only-by-CI files; humans never edit them. ## Contributor workflow (one fragment per touched package) ```bash # Branch: jdoe/fix-spawn-pose $EDITOR source/isaaclab/changelog.d/jdoe-fix-spawn-pose.rst ``` ```rst Fixed ^^^^^ * Fixed :meth:`~isaaclab.assets.Articulation.write_root_pose` ignoring the env-id mask. ``` Filename convention: | Filename | Effect | |---|---| | `<slug>.rst` | patch bump (`X.Y.Z → X.Y.Z+1`) | | `<slug>.minor.rst` | minor bump (`X.Y.Z → X.Y+1.0`) | | `<slug>.major.rst` | major bump (`X+1.0.0`) — breaking change | | `<slug>.skip` | no entry, no bump (CI / docs / test-only PRs) | The slug is any short, unique name. **Branch name with `/` replaced by `-` is the recommended default** — already in scope at commit time, naturally unique because of the `<user>/<feature>` branch convention. Within a batch, the highest tier wins for the package (`major > minor > patch`). ## What the nightly does `tools/changelog/cli.py compile --all` walks every package's `changelog.d/`, sorts fragments by merge time, merges sections across fragments (canonical order: Added, Changed, Deprecated, Removed, Fixed), prepends a single `X.Y.Z (YYYY-MM-DD)` block to `CHANGELOG.rst`, bumps `extension.toml`, and deletes the consumed files. One commit per night, with a body listing every package that bumped: ``` [CI][Auto Version Bump] Compile changelog fragments (schedule) Bumped packages: - isaaclab: 4.6.26 → 4.7.0 - isaaclab_physx: 0.5.29 → 1.0.0 - isaaclab_tasks: 1.5.32 → 1.5.33 ``` ## What's tested **Unit + integration (82 tests, all passing):** filename regex acceptance/rejection, bump-tier aggregation, cross-fragment section merge, immutability, missing-fragment-per-touched-package, version-pinning guards, content validation. Worked-example fixtures under `tools/changelog/tests/fixtures/integration/{01_patch_bump, 02_minor_bump, 03_major_bump}/` double as living demos. **Live end-to-end on a fork** (real GitHub Actions runners, not local mocks): 1. Single fragment dry-run + real run: ✓ produces correct CHANGELOG block, bumps extension.toml, deletes fragment, commits with the expected subject/body. 2. Multi-package multi-tier batch (7 simulated PRs across 3 packages, mixed Fixed/Added/Deprecated/Removed/Changed/Breaking, mixed patch/minor/major/skip): ✓ each package bumps to the right tier (`isaaclab: 4.6.26→4.7.0` minor, `isaaclab_physx: 0.5.29→1.0.0` major, `isaaclab_tasks: 1.5.32→1.5.33` patch), single commit lists all three. 3. Cross-fragment section merge (3 fragments → one Added section with 3 bullets, 2 fragments → one Fixed section with 2 bullets, one fragment contributing to both): ✓ bullets correctly merged in merge-time order. Fork test branch: <https://github.com/hujc7/IsaacLab/tree/test-changelog-nightly>. ## Setup checklist for upstream after merge The new workflow files are pinned by SHA per the existing CI conventions; no additional repo settings are required for the workflows to run. Two optional follow-ups maintainers may want: 1. **Add `CHANGELOG_PAT` secret** (fine-grained PAT with `contents:write` on the repo). Optional. Without it, the nightly's auto-commit uses `GITHUB_TOKEN` — sufficient to push, but pushes signed with `GITHUB_TOKEN` do not trigger downstream workflow runs (this is GitHub's by-design loop guard). Adding the PAT lets the auto-commit re-trigger the docs / Docker rebuilds. 2. **Branch protection on `develop`** may need an exception for `github-actions[bot]` so the auto-commit can push directly. If `develop` already accepts non-PR pushes from CI service accounts, no change. ## Files changed - `tools/changelog/cli.py` — single entry with `compile` and `check` subcommands. - `tools/changelog/tests/` — 82 tests + integration fixtures. - `.github/workflows/changelog-check.yml` — PR gate (per-PR). - `.github/workflows/nightly-changelog.yml` — nightly auto-compile (cron + workflow_dispatch). - `AGENTS.md` — contributor docs (+10 / -5 lines in the existing "Changelog" section). - `source/<pkg>/changelog.d/.gitkeep` — empty directory placeholders for every managed package.
# Description Adds the `scripts/**` path to the build.yaml filter to allow the CI workflow to run on changes to scripts. This is a followup to the new tests added in [PR 5397](isaac-sim#5397) and the existing tests in the scripts/tools folder. ## Type of change - New feature (non-breaking change which adds functionality) ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [ ] I have made corresponding changes to the documentation *(N/A)* - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works *(N/A)* - [ ] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file *(N/A)* - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there Co-authored-by: Kelly Guo <kellyg@nvidia.com> Co-authored-by: Piotr Barejko <pbarejko@nvidia.com>
…c-sim#5335) # Description The previous benchmark convergence checking was dependent on analyzing reward curves, which required maintaining expected reward thresholds for each environment, which is not sustainable or reliable. This change adds a new success metric `Metrics/success_rate` that can be instrumented by each environment to signal whether training succeeded or not, without requiring any special knowledge of that environment by the benchmark scripts. The results are logged to the json artifact. Threshold, window, and tag can be overridden via new CLI args. A new `--check_success` arg can also be used to optionally enable early-exit when success stabilizes. ## Type of change - New feature (non-breaking change which adds functionality) ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [ ] I have made corresponding changes to the documentation *(N/A)* - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works *(unit tests + manual e2e tests)* - [x] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there
# Description Adds a Newton and Base implementation for a `JointWrenchSensor` ## Type of change - New feature (non-breaking change which adds functionality) ## Checklist - [ ] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [ ] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [ ] I have made corresponding changes to the documentation - [ ] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [ ] I have added my name to the `CONTRIBUTORS.md` or my name already exists there <!-- As you go through the checklist above, you can mark something as done by putting an x character in it For example, - [x] I have done this task - [ ] I have not done this task --> --------- Signed-off-by: camevor <camevor@nvidia.com> Signed-off-by: Kelly Guo <kellyg@nvidia.com> Co-authored-by: Antoine RICHARD <antoiner@nvidia.com> Co-authored-by: Kelly Guo <kellyg@nvidia.com>
# Description FEATURE: adds new LEAPP export functionality that targets manged environments that using rsl_rl. Policies can be exported end to end. Also adds a new direct deployment environment to deploy exported policies, bypassing all the manager classes. ## Type of change - New feature (non-breaking change which adds functionality) ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there --------- Signed-off-by: frlai <frlai@nvidia.com>
# Description The renderer was previously held by the camera. this PR refactors this relationship, creating a RenderContext as a property of the SimulationContext to manage the renderer's lifetime independent of the camera(s) ## Type of change - refactor ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there <!-- As you go through the checklist above, you can mark something as done by putting an x character in it For example, - [x] I have done this task - [ ] I have not done this task --> --------- Signed-off-by: r-schmitt <139814266+r-schmitt@users.noreply.github.com> Co-authored-by: nvsekkin <72572910+nvsekkin@users.noreply.github.com>
CI cleanup that drops redundant aggregator gate jobs (skipped jobs already satisfy branch protection), fixes reporting of change-detection in the GitHub job summary, simplifies concurrency keys back to github.ref (run # was redundant). ## Type of change - Bug fix (non-breaking change which fixes an issue) ## Checklist - [x] I have read and understood the contribution guidelines - [x] I have run the pre-commit checks with `./isaaclab.sh --format` - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there
# Description Routes the visualizer-side cloning data through a per-group `ClonePlan` map and has the PhysX scene data provider pull a Newton model from those plans directly — replacing the clone-time `visualizer_clone_fn` callback and the `VisualizerPrebuiltArtifacts` payload introduced in isaac-sim#5398. ## Pipeline ``` InteractiveScene.clone_environments plans = clone_from_template(...) # dict[str, ClonePlan] sim.set_clone_plans(plans) # canonical owner ↓ PhysxSceneDataProvider.__init__ plans = sim.get_clone_plans() sources, destinations, mask = aggregate(plans) positions = read_env_xforms(stage) model, state = newton_visualizer_prebuild(...) ``` Single source of truth, single direction. No clone-time callback, no requirements push from sensors, no late-resolve refresh loop. ## Notable changes - **Add** `ClonePlan` (`dest_template`, `prototype_paths`, `clone_mask`); `SimulationContext.{get,set}_clone_plans`; `InteractiveScene.clone_plans` forwarder. - **Remove** `TemplateCloneCfg.visualizer_clone_fn`, `cloner.resolve_visualizer_clone_fn`, `VisualizerPrebuiltArtifacts`, `SimulationContext.{get,set,clear}_scene_data_visualizer_prebuilt_artifact`, `Camera._register_renderer_scene_data_requirements`, `create_newton_visualizer_prebuild_clone_fn`. - **Collapse** three calls to `_refresh_visualizer_clone_fn_from_requirements` into one `_aggregate_scene_data_requirements` after entities are constructed. - **Provider** derives flat `(sources, destinations, mask)` from per-group plans, recovering each source path as `dest_template.format(<first env using this prototype>)` and reading per-env positions off the env-template's `xformOp:translate`. ## Type of change - Bug fix - Breaking change *(removes the public symbols listed above. They were introduced in isaac-sim#5398 four days ago; the changelog fragments are filed as `.minor.rst` since the surface had no time to acquire dependents.)* ## Checklist - [x] I have read and understood the contribution guidelines - [x] I have run the `pre-commit` checks with `./isaaclab.sh --format` - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] I have added changelog fragments under `source/isaaclab/changelog.d/`, `source/isaaclab_newton/changelog.d/` (both `.minor.rst`), and `source/isaaclab_physx/changelog.d/` (`.skip` — private/internal changes only) - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there
… physics tuning) (isaac-sim#5312) ## 1. Summary Enable G1 rough-terrain training on Newton. The only engine-specific change is a `~1.7×` bump on `max_iterations` (Newton = 5000, PhysX = 3000). No physics, solver, reward, or action-space tuning — the G1 rough env config is identical on both backends. ## 2. Core finding — PhysX saturates at iter 3000; Newton matches by iter 5000 Ran both backends for 7500 iter on identical configs. **Reward alone is misleading** — PhysX reward oscillates +16 to +19 across its entire run past iter 3000 without improving. Episode length confirms the plateau: | iter | PhysX reward | PhysX ep_len | Newton reward | Newton ep_len | |---:|---:|---:|---:|---:| | 3000 | **+18.14** | **983** | +6.21 | 979 | | 4000 | +19.38 | 986 | +10.65 | 983 | | **5000** | **+18.04** | **978** | **+16.01** | **984** | | 5500 | +18.19 | 983 | +16.60 | 985 | | 6000 | +17.07 | 981 | +18.86 | 996 | | 6500 | +16.71 | 989 | +19.80 | 996 | | 7000 | +16.27 | 968 | +18.10 | 976 | | 7500 | +15.81 | — | +17.56 | 969 | - **PhysX plateau**: both metrics stable at iter 3000 (+18.14 / 983). No meaningful gain past iter 3000. - **Newton at iter 5000**: (+16.01 / 984) — matches PhysX quality on both reward and ep_len. - **Newton at iter 6000+**: equals or exceeds PhysX on both metrics. Episode length > 960 everywhere means the robot is stable (not falling) even when reward is low — reward alone is not a sufficient convergence signal. ## 3. Ablation record Tested at L40, 4096 envs, seed=42, Newton @ `381781c2` (1.2.0.dev0): | Variant | iter | Reward | Verdict | |---|---:|---:|---| | A0 — Vanilla Newton | 3000 | +6.21 | Newton slower but learning | | A1 — Newton armature 0.01 | 3000 | +5.14 | No help | | A2 — Newton armature 0.03 | 3000 | +6.43 | No help | | D0 — Vanilla Newton (extended) | 5000 | +16.01 | **Matches PhysX plateau quality** | | E0 — Vanilla PhysX | 3000 | +18.14 | PhysX plateau | Key observations: - Armature tuning (0.01, 0.03) does not change Newton's convergence rate on G1. - Damping preset (5 → 20) and finger-removal also tested in earlier rounds; no durable benefit once Newton is given enough iterations. - Newton catches PhysX by iter 5000 on vanilla config, so the framework-level `max_iterations` bump is sufficient on its own. ## 4. Change `source/isaaclab_tasks/isaaclab_tasks/manager_based/locomotion/velocity/config/g1/agents/rsl_rl_ppo_cfg.py`: ```python from isaaclab_tasks.utils import preset class G1RoughPPORunnerCfg(RslRlOnPolicyRunnerCfg): # Newton needs ~1.7x the PPO iterations to match PhysX on G1. PhysX saturates near iter 3000 # (reward ≈ +18, ep_len ≈ 980) and does not meaningfully improve on either metric past that — # reward oscillates +16 to +19 through iter 7500, ep_len stays flat. Newton reaches the same # (reward, ep_len) quality at iter 5000 (+16 / 984). Comparing reward alone is misleading: # ep_len confirms the robot is stable in both cases. The gap is sample-efficiency, not a # ceiling — no physics or reward tuning closes it. max_iterations = preset(default=3000, newton=5000) ``` G1 `rough_env_cfg.py` is unchanged on this branch — no finger removal, no armature preset, no damping preset. Precedent for per-robot `max_iterations` tuning: Allegro Hand (5000), Spot (20000). ## Type of change - New feature (non-breaking).
# Description Add RenderContext to documentation ## Type of change - Documentation update ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there
# Description Update omniverseclient pin to `2.71.1.7015`. Fixes # (issue) <!-- As a practice, it is recommended to open an issue to have discussions on the proposed pull request. This makes it easier for the community to keep track of what is being developed or added, and if a given feature is demanded by more than one party. --> ## Type of change <!-- As you go through the list, delete the ones that are not applicable. --> - Bug fix (non-breaking change which fixes an issue) - New feature (non-breaking change which adds functionality) - Breaking change (existing functionality will not work without user modification) - Documentation update ## Screenshots Please attach before and after screenshots of the change if applicable. <!-- Example: | Before | After | | ------ | ----- | | _gif/png before_ | _gif/png after_ | To upload images to a PR -- simply drag and drop an image while in edit mode and it should upload the image directly. You can then paste that source into the above before/after sections. --> ## Checklist - [ ] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [ ] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [ ] I have made corresponding changes to the documentation - [ ] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [ ] I have added my name to the `CONTRIBUTORS.md` or my name already exists there <!-- As you go through the checklist above, you can mark something as done by putting an x character in it For example, - [x] I have done this task - [ ] I have not done this task -->
# Description <!-- Thank you for your interest in sending a pull request. Please make sure to check the contribution guidelines. Link: https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html 💡 Please try to keep PRs small and focused. Large PRs are harder to review and merge. --> I am updating a small set of documentation fixes I found. I stumbled across one and then had claude scour the documentation to find any others. Claude found a bunch and after removing ones I didn't feel required fixing, this is the result. My prompt was ``` I need to scour the documentation and thoroughly check to see that the bash syntax being provided is correct. I need you to go through each rst document and read it in its entirety and pay special attention to the bash commands. Check to see if they are correct. Is this the correct syntax? Does it make sense? Go through the documentation in `docs/` with a very fine tooth comb, checking for any and all discrepancies and issues. ``` Fixes # (issue) <!-- As a practice, it is recommended to open an issue to have discussions on the proposed pull request. This makes it easier for the community to keep track of what is being developed or added, and if a given feature is demanded by more than one party. --> ## Type of change <!-- As you go through the list, delete the ones that are not applicable. --> - Documentation update ## Screenshots Here's a screenshot showing that the new `::` comment blocks in the batch code render properly and don't cause issues in the rst <img width="879" height="513" alt="Screenshot from 2026-05-04 15-59-20" src="https://github.com/user-attachments/assets/9e2585dd-9315-40c4-913a-41a33ccac460" /> <!-- Example: | Before | After | | ------ | ----- | | _gif/png before_ | _gif/png after_ | To upload images to a PR -- simply drag and drop an image while in edit mode and it should upload the image directly. You can then paste that source into the above before/after sections. --> ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there <!-- As you go through the checklist above, you can mark something as done by putting an x character in it For example, - [x] I have done this task - [ ] I have not done this task -->
# Description - In the Dexsuite env the success and failure markers are placed exactly at the same location. If both markers are visible, the rendering order will determine which one is visible in the camera output. Hide both markers to avoid this nondeterministic behavior. - Ordering of test cases appear to affect camera outputs for some reason, therefore I move the `newton_renderer` test cases after `isaacsim_rtx_renderer` test cases. Fixes # (issue) <!-- As a practice, it is recommended to open an issue to have discussions on the proposed pull request. This makes it easier for the community to keep track of what is being developed or added, and if a given feature is demanded by more than one party. --> ## Type of change <!-- As you go through the list, delete the ones that are not applicable. --> - Bug fix (non-breaking change which fixes an issue) - New feature (non-breaking change which adds functionality) - Breaking change (existing functionality will not work without user modification) - Documentation update ## Screenshots Please attach before and after screenshots of the change if applicable. <!-- Example: | Before | After | | ------ | ----- | | _gif/png before_ | _gif/png after_ | To upload images to a PR -- simply drag and drop an image while in edit mode and it should upload the image directly. You can then paste that source into the above before/after sections. --> ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there <!-- As you go through the checklist above, you can mark something as done by putting an x character in it For example, - [x] I have done this task - [ ] I have not done this task -->
# Description - Restores legacy `teleop_devices` config (`OpenXRDeviceCfg` / `ManusViveCfg` + `GR1T2RetargeterCfg`) on `PickPlaceGR1T2EnvCfg` alongside the existing `isaac_teleop` pipeline, re-enabling CI validation via `--teleop_device=handtracking`. - Updates `teleop_se3_agent.py` and `record_demos.py` to route between the two stacks: IsaacTeleop is used by default when configured; passing `--teleop_device` explicitly forces the legacy `teleop_devices` path (errors if no matching entry exists). - Removes automatic `--xr` inference from `--teleop_device` containing `"handtracking"`. Users who need XR with the legacy path should pass `--xr` explicitly. Fixes # (issue) ## Type of change - Bug fix (non-breaking change which fixes an issue) ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there --------- Co-authored-by: Kelly Guo <kellyg@nvidia.com>
…alizer (--visualizer) (isaac-sim#5474) # Description <!-- Thank you for your interest in sending a pull request. Please make sure to check the contribution guidelines. Link: https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html 💡 Please try to keep PRs small and focused. Large PRs are harder to review and merge. --> Extending Brian's original PR: Sync video recorder's (--video) renderer backend with the active visualizer (--visualizer) Change enable cross recording support for Renderers and Visualizers Also fixes https://nvbugs/6121118 <!-- As a practice, it is recommended to open an issue to have discussions on the proposed pull request. This makes it easier for the community to keep track of what is being developed or added, and if a given feature is demanded by more than one party. --> ## Type of change <!-- As you go through the list, delete the ones that are not applicable. --> - Bug fix (non-breaking change which fixes an issue) - New feature (non-breaking change which adds functionality) ## Screenshots Please attach before and after screenshots of the change if applicable. <!-- Example: | Before | After | | ------ | ----- | | _gif/png before_ | _gif/png after_ | To upload images to a PR -- simply drag and drop an image while in edit mode and it should upload the image directly. You can then paste that source into the above before/after sections. --> ## Checklist - [ ] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [ ] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [ ] I have made corresponding changes to the documentation - [ ] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [ ] I have added my name to the `CONTRIBUTORS.md` or my name already exists there <!-- As you go through the checklist above, you can mark something as done by putting an x character in it For example, - [x] I have done this task - [ ] I have not done this task --> --------- Signed-off-by: bdilinila <148156773+bdilinila@users.noreply.github.com> Signed-off-by: Kelly Guo <kellyg@nvidia.com> Signed-off-by: matthewtrepte <mtrepte@nvidia.com> Co-authored-by: Brian Dilinila <bdilinila@nvidia.com> Co-authored-by: HuiDong Chen <huidongc@nvidia.com> Co-authored-by: bdilinila <148156773+bdilinila@users.noreply.github.com> Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> Co-authored-by: Piotr Barejko <pbarejko@nvidia.com> Co-authored-by: myurasov-nv <168484206+myurasov-nv@users.noreply.github.com> Co-authored-by: Pascal Roth <57946385+pascal-roth@users.noreply.github.com> Co-authored-by: Antoine Richard <antoiner@nvidia.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: ClemensSchwarke <clemens.schwarke@gmail.com> Co-authored-by: rwiltz <165190220+rwiltz@users.noreply.github.com> Co-authored-by: Kelly Guo <kellyg@nvidia.com> Co-authored-by: Kelly Guo <kelly@nvidia.com> Co-authored-by: ooctipus <zhengyuz@nvidia.com> Co-authored-by: hougantc-nvda <127865892+hougantc-nvda@users.noreply.github.com> Co-authored-by: Piotr Barejko <piotrbarejko@protonmail.com>
# Conflicts: # docs/source/api/lab/isaaclab.sensors.rst # source/isaaclab/config/extension.toml # source/isaaclab/docs/CHANGELOG.rst # source/isaaclab/isaaclab/assets/articulation/base_articulation_data.py # source/isaaclab/isaaclab/sensors/joint_wrench/base_joint_wrench_sensor.py # source/isaaclab/isaaclab/sensors/joint_wrench/base_joint_wrench_sensor_data.py # source/isaaclab/isaaclab/sensors/joint_wrench/joint_wrench_sensor.py # source/isaaclab/isaaclab/sensors/joint_wrench/joint_wrench_sensor_cfg.py # source/isaaclab/isaaclab/sensors/joint_wrench/joint_wrench_sensor_data.py # source/isaaclab_newton/config/extension.toml # source/isaaclab_newton/docs/CHANGELOG.rst # source/isaaclab_newton/isaaclab_newton/sensors/joint_wrench/joint_wrench_sensor.py # source/isaaclab_newton/isaaclab_newton/sensors/joint_wrench/joint_wrench_sensor_data.py # source/isaaclab_newton/test/sensors/test_joint_wrench_sensor.py # source/isaaclab_physx/docs/CHANGELOG.rst # source/isaaclab_tasks/config/extension.toml # source/isaaclab_tasks/docs/CHANGELOG.rst
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Adds the PhysX backend for
JointWrenchSensoron top of isaac-sim#5412.The PhysX sensor creates only an articulation view and reads incoming joint wrenches directly from
ArticulationView.get_link_incoming_joint_force(), splitting the result into force and torque buffers for the shared joint-wrench sensor API.This also removes
ArticulationData.body_incoming_joint_wrench_bfrom the articulation data APIs, migrates manager/direct environments that used it toJointWrenchSensor, and documents the Isaac Lab 3.0 migration path.@camevor can you review?
Fixes # (issue)
N/A
Type of change
Screenshots
N/A
Tests
./isaaclab.sh -fdocker exec isaac-lab-base bash -lc "cd /workspace/isaaclab && ./isaaclab.sh -p -m pytest source/isaaclab_physx/test/sensors/test_joint_wrench_sensor.py"- 9 passeddocker exec isaac-lab-base bash -lc "cd /workspace/isaaclab && ./isaaclab.sh -p -m pytest source/isaaclab/test/test_mock_interfaces/test_mock_data_properties.py"- 253 passedChecklist
pre-commitchecks with./isaaclab.sh --formatconfig/extension.tomlfileCONTRIBUTORS.mdor my name already exists there