Skip to content

[pull] develop from isaac-sim:develop - #80

Merged
pull[bot] merged 10 commits into
mataylor-nvidia:developfrom
isaac-sim:develop
Sep 29, 2026
Merged

pull[bot] merged 10 commits into
mataylor-nvidia:developfrom
isaac-sim:develop

Conversation

@pull

@pull pull Bot commented Sep 29, 2026 •

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

StafaH and others added 10 commits September 28, 2026 17:14
## Description

Coding and testing guidance was duplicated across the contribution
guide, `AGENTS.md`, skills, and the PR checklist, with conflicting
advice about test additions, tooling, and typing. Make the contribution
guide the shared source of truth and keep agent instructions focused on
workflow and links.

- Prefer plain functions for stateless work, inline trivial operations,
use direct attribute access, and keep comments concise. Retain classes
when state, lifecycle, or architectural interfaces justify them.
- Align test recommendations with the test-audit authoring and retention
gates: cover distinct risks, avoid duplicate fixtures and parameter
matrices, and prove retained coverage before pruning.
- Simplify the code skeleton and documentation examples; update uv
commands, stub packaging, return annotations, and lazy-import guidance.
- Synchronize the relevant skills and PR checklist, while preserving
current `develop` configuration guidance and moving its general style
rules into the guide.

## Type of change

- Documentation update

## Validation

- `uv run --extra dev isaaclab -f`
- `uv run --frozen isaaclab --docs` (Sphinx warnings treated as errors)
- `uv run --no-project python tools/skills/cli.py check` (24 skills)
- `git diff --cached --check`

## Checklist

- [x] Read the contribution guidelines and ran formatting/lint checks.
- [x] Updated documentation, agent routing, skills, examples, and the PR
checklist together.
- [x] Changes generated no new warnings.
- [x] Applied the test-audit policy: no new tests for documentation and
workflow-only changes.
- [x] No source packages changed; no package changelog fragments
required.
- [x] Contributor is already listed in `CONTRIBUTORS.md`.

## Release backport

- [ ] <!-- backport-active-release --> Backport this pull request to the
active release branch after it merges into `develop`
## Description

A follow-up to #8068, #8090, and #8102: it inlines or removes
launch-stack helpers whose names cost the reader more than their bodies
do. This PR is pure cleanup with no behavior change; every public
removal is listed below with its replacement.

### Launcher (`isaaclab.app.sim_launcher`)

- **Arguments become a dict once.** `launch_simulation` and `scan`
convert launcher args with `vars(args_cli)`, the namespace's live
`__dict__`, so values resolved at launch (for example
`args_cli.headless`) still reach the caller. That removes `_get_arg` /
`_set_arg` and their three-way Namespace/dict/None branching on every
read.
- **Resolved once instead of twice:**
- the livestream mode is resolved during argument normalization and read
back afterwards;
- the "explicit `--viz` overrides the config" rule for the Kit
visualizer is part of the scan's visualizer intent.
- **Inlined:** the logging-level resolver (now private here), the
one-line `_is_*` config predicates, and the Kit-source list formatter.
- **`make_physics_cfg` is private** (`_make_physics_cfg`); only `scan`
used it.

### Settings (`isaaclab.app.settings_manager`)

- **One accessor:** `SettingsManager.instance()` is removed. It was
identical to `get_settings_manager()`.
- **One setter:** `set_bool` / `set_int` / `set_float` / `set_string`
are removed. They only called `set()`, which already dispatches on the
value's type. Only calls on Isaac Lab's settings manager changed; calls
on carb's settings interface are untouched.

### Kit launcher (`isaaclab_physx.app.KitLauncher`)

- **Inlined:** three single-use helpers (spectator-view check,
experience dependency check, deferred CUDA device).
- **Merged:** the stop-button and play-button toolbar helpers become one
`_set_toolbar_button_visible`, with each button's current behavior kept.
- **Renamed:** `add_app_launcher_args` → `add_launcher_args`, and
`ExplicitAction` → `_ExplicitAction` (internal).

Net: +239 / −405 (about −165 lines).

## Type of change

- Breaking change (removed `SettingsManager.instance`, the typed
`SettingsManager.set_*` forwarders, and `isaaclab.app.make_physics_cfg`;
renamed `KitLauncher.add_app_launcher_args`)

## Validation

All runs on GPU 0.

- **Launcher and runtime tests:**
- Kit launcher (84), visualizer intent (8), distributed device
resolution (11), runtime compatibility (27), `require_kit` (10);
- preset Kit decision (6), preset CLI (11), RL entrypoints (44), CLI
tests (234);
- app tests, including the `AppLauncher` shim, exit status, and Kit
startup;
- simulation context (26), Isaac RTX renderer contract (26), and the
changed contact-sensor and OvPhysX scene-data tests.
- **`test_simulation_context_visualizers`:** 44 passed, 1 failed. The
failing test needs `carb`, which only CI's image has, and it fails
identically on develop.
- **Training:** Cartpole runs 2 iterations with `isaacsim_physx` (Kit
starts) and with `newton_mjwarp` (no Kit).
- **Tutorial:** `create_empty.py` reaches setup and runs.
- **Not run:** the toolbar-button and livestream `isaacsim.exp.full`
paths need a GUI or a livestream.
- **Removed test:**
`test_deferred_cuda_device_synchronizes_torch_and_warp`. Its helper is
now inlined into Kit-only startup code.

## Release backport

- [x] <!-- backport-active-release --> Backport this pull request to the
active release branch after it merges into `develop`

## Checklist

- [x] I have read and understood the contribution guidelines
- [x] I have run the pre-commit checks
- [x] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [x] I have added changelog fragments for every touched package
…around (#7192)

## Summary

Kit-less installs move from OpenUSD 25.05 to **26.08** (`usd-exchange`
2.3.0 → 3.0.0), which retires the `PXR_WORK_THREAD_LIMIT`
heap-corruption workaround everywhere it was applied. Kit-backed runs
are unaffected.

> [!IMPORTANT]
> **Do not merge before `usd-optimize` 1.3.0 is published** (planned
2026-09-29). Kit-less `merge_mesh` needs its first OpenUSD 26.08 build:
until then `usd-optimize` 1.2.1 resolves and `merge_mesh` leaves meshes
unmerged, where it merges on develop today. On release, one commit adds
`usd-optimize>=1.3.0` to `override-dependencies` together with the
relock; then run the Docker CI.

# Description

`usd-exchange` 3.0.0 makes OpenUSD 26.08 its default flavor
([usd-exchange!257](https://gitlab-master.nvidia.com/omniverse/usd-exchange/usd-exchange/-/merge_requests/257)),
and the PyPI wheel ships that flavor. Kit serves its own OpenUSD (25.11,
including the Isaac Sim 6.2.0-alpha.12 CI image), so only the kit-less
`pxr` moves.

`[tool.uv] override-dependencies` moves the Isaac Sim 6.1 importer stack
onto 26.08; both entries come out when Isaac Sim 6.3 adopts usdex 3.0:

1. **`usd-exchange==3.0.0`** — `isaacsim-asset-isolated` and
`isaacsim-robot-schema` 6.1.0.0 pin `usd-exchange==2.3.0`. Both are pure
Python and bind usdex's Python API, so 3.0.0 satisfies them.
2. **`usd-optimize>=1.3.0`** (added with the relock once published) —
the only compiled OpenUSD consumer in the importer tree. The 6.1
importer also accepts its 25.05 builds (1.2.1 and older), which cannot
bind 26.08; 1.3.0 is its first 26.08 build.

## Type of change

- Breaking change (existing functionality will not work without user
modification)

Anything pinning Isaac Lab against OpenUSD 25.05 outside Kit must
re-resolve, and code compiled against the 25.05 `pxr` ABI must be
rebuilt.

## Changes

| File | Change |
| --- | --- |
| `pyproject.toml` | `usd-exchange==3.0.0`, `usd_exchange = "3.0.0"`,
and the `usd-exchange` override |
| `tools/wheel_builder/uv-overrides.txt`,
`source/isaaclab/test/install_ci/uv_pip/uv-overrides.txt` | regenerated
with `gen_uv_overrides.py` |
| `docs/source/refs/issues.rst` | known-issue example updated to the
current pin (`usd-exchange==3.0.0` → OpenUSD 26.08) |
| `uv.lock` | regenerated — vs develop: only `usd-exchange` 2.3.0 →
3.0.0 |
| `test_assets.py` | `Usd.ZipFileWriter` → `Sdf.ZipFileWriter` — OpenUSD
26.08 moved the zip API |

**Drops the OpenUSD work-thread-limit workaround, repo-wide.** Every
site was gated on `TODO: Remove once usd-core>=26.5`.

| File | Removed |
| --- | --- |
| `test_leapp_export_flow.py` | `PXR_WORK_THREAD_LIMIT` subprocess env,
`--limit_cpu_threads` args, `os` import |
| `leapp_initialized_checkpoints.py` | `limit_cpu_threads=1` and its
TODO |
| `export_common.py` | hidden `--limit_cpu_threads` CLI flag |
| `test_environments_isaacsim_physx.py` | `limit_cpu_threads=1` |
| `test_environments_newton.py` | `os.environ["PXR_WORK_THREAD_LIMIT"]`
+ orphaned `os` import |
| `rendering_test_utils.py` | `monkeypatch.setenv` + unused
`monkeypatch` arg |
| `test_contrib_environments_kitless.py` |
`os.environ["PXR_WORK_THREAD_LIMIT"]` + `os` import |
| `isaaclab_ov/test/conftest.py` | deleted — the workaround was its only
content |

## Tracking

- [ ] **`usd-optimize` 1.3.0 published** (planned 2026-09-29; upstream
[usd-optimize#2](NVIDIA-Omniverse/usd-optimize#2))
→ add `usd-optimize>=1.3.0` and relock in one commit, then Docker CI.
Validated ahead of time against the internal 26.08 build (1.2.4) from a
`uv.lock`: `merge_mesh` merges 5/5 with one OpenUSD runtime; converter
tests 28/28.
- [ ] Isaac Sim nvbug 6777354 — `merge_mesh_utils` discards
`executeOperation`'s result, so a failed merge is silent.
- [ ] Isaac Sim 6.3 moves its importer stack to usdex 3.0 — both
overrides come out then.
- [ ] Importer owners: `urdf_usd_converter` / `mujoco_usd_converter`
still call the deprecated `addDiffuseTextureToPreviewMaterial`; under
usdex 3.0 the authored shader prim is `ColorTexture`, not
`DiffuseTexture`.

## Validation

At develop `5faeb3430dd` (Newton suite at `5e6b21bf3e4`), kit-less on
desk, environments built from `uv.lock`:

| Suite | Result |
| --- | --- |
| metadata + override-mirror tests | 14/14 |
| URDF + MJCF converters | 28/28 |
| Newton MJWarp env smoke (workaround removed) | 33/33 |
| contrib kit-less envs (workaround removed) | 10 passed, 1 statically
skipped |
| LEAPP export, with RL extras (workaround removed) | 13 passed, incl.
Franka Lift / Reach / Open-Drawer; 5 need Isaac Sim (Kit lane, covered
by Docker CI) |
| `isaaclab_ov` kit-less (workaround removed) | 404 passed; the 64
failures are identical on develop (one-process device-lock artifact) |

**Docker CI** (`b545a92c88d`): every job passed except the usdz case in
`test_assets.py`, fixed in `4fca2f139f0`.

**Dependency audit.** Only `usd-exchange`'s own `pxr`/`usdex` link
OpenUSD's C++ ABI. Develop's new ovphysx 0.6.3, ovrtx 0.5.0, ovstage
0.2.0, newton 1.6.0 and torch 2.12 do not (ovrtx/ovstage ship `libusdrt`
plugins, not OpenUSD). `usd-core` is absent; `newton[importers]`, which
caps `usd-core<26.5`, is not installed.

**Earlier smoke (pre-6.1 base).** 18/18 training arms green across
isaacsim_physx / newton_mjwarp / ovphysx × three renderers, on a source
build and Docker `latest-develop`. The Kit lane on the 6.2 image is
exercised by this PR's Docker CI.

**Known, pre-existing — not introduced here.** `import usdex.core`
inside a running Kit process aborts (two OpenUSD ABIs in one process) at
both versions; no training or converter path does that import.

## Release backport

- [x] <!-- backport-active-release --> Backport this pull request to the
active release branch after it merges into `develop`

## Checklist

- [x] I have read and understood the [contribution
guidelines](https://isaac-sim.github.io/IsaacLab/develop/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
- [ ] No new tests: the change removes a workaround and bumps a pin; the
suites above cover the affected paths
- [x] I have added a changelog fragment under
`source/<pkg>/changelog.d/` for every touched package
- [x] I have added my name to the `CONTRIBUTORS.md` or my name already
exists there

---------

Co-authored-by: fanes <74020209+fatimaanes@users.noreply.github.com>
## Description

Restores OVRTX rendering throughput for multi-camera tasks. The
`duo_camera` preset was running roughly 6x slower than it should be.

**Always submit every registered render product.** OVRTX batches render
products within
a step, so naming only the requested subset makes any product that
re-enters the set on
a later step pay a flat ~350-700 ms penalty. Per guidance from the OVRTX
team, both
submission paths (`_render_legacy` and `_render_ovstage`) now pass every
registered
product to `Renderer.step()`. Output routing is unchanged: only the
requested cameras
are read back, and products left out of a request keep their previous
outputs.


## Type of change
- Bug fix (non-breaking change which fixes an issue)

## Release backport

- [x] <!-- backport-active-release --> Backport this pull request to the
active release branch after it merges into `develop`

## Checklist

Docker and GPU tests run on demand. Push the commits you want tested,
then
comment `run-ci` on the pull request.

- [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 added a changelog fragment under
`source/<pkg>/changelog.d/` for every touched package (do **not** edit
`CHANGELOG.rst` or bump `extension.toml` — CI handles that)
- [x] I have added my name to the `CONTRIBUTORS.md` or my name already
exists there
## Description

Follows #8111 (merged).

This is the first step toward launch and preset consistency: one
mechanism per decision. This PR removes parallel mechanisms that nothing
needs. Follow-ups will make `launch_simulation` the single place
visualizers and the device are decided, and replace `--physics` with
`physics=` presets.

### Changes

- **One preset-override parser.** `hydra_task_config` (no callers) is
removed, and its callback indirection is folded into
`resolve_task_config`. So is the second override parser
(`parse_overrides` / `apply_overrides`).
- `test_hydra.py` and the rendering test helper now go through
`register_task` / `resolve_task_config`, the production parser, instead
of a different one.
- Five parser-only tests are dropped. One of them tested behavior
production never had.
- **`--viz` parsed once.** `_parse_visualizer_csv` accepts the
argparse-parsed list, so `_normalize_launcher_args` no longer joins it
back into a string and parses it again. Invalid values still fail at
argparse time.
- **One visualizer type table** (with the deprecated `newton` →
`newton_gl` alias) lives in `isaaclab.visualizers.visualizer_cfg`.
`SimulationContext` consumes canonical names instead of remapping
aliases itself; the two tables disagreed about `none`.
- **`SimulationContext` setup:**
- `SettingsHelper` is removed, since `SettingsManager.set` already
dispatches on the value type;
- `get_physics_dt()` returns `cfg.dt`, and a `getattr(cfg.physics,
"dt")` that never matched is dropped;
- `initialize_visualizers(config_filter=None)` replaces a public/private
forwarder pair;
- the visualizer config list is normalized once instead of three times;
  - `build_simulation_context` reads `sim.has_gui`;
  - `use_stage` drops its Isaac Sim < 5 branch (the repo pins 6.1).

Net: +209 / −500.

## Type of change

- Breaking change (removed `hydra_task_config`, `parse_overrides`,
`apply_overrides`, and `SettingsHelper`; `initialize_visualizers` gained
`config_filter`)

## Validation

All runs on GPU 0.

- **Tests:**
  - `isaaclab/test/app` (27) and `isaaclab_physx/test/app` (90);
- hydra (67), preset CLI (11), preset Kit decision (6), runtime
compatibility (27), visualizer intent (8), distributed device (11),
agent preset composition (13);
- simulation context (26), stage utils (15), headless
`build_simulation_context` (7), RL entrypoints (44 + 27).
- **Training:** Cartpole with `physics=isaacsim_physx` and
`physics=newton_mjwarp` runs 2 iterations, and the run summary names
each backend correctly.
- **Pre-existing failures on this machine, identical on the base
branch:** one visualizer test that needs `carb`, and 8 golden-image
diffs in `test_rendering_cartpole_kitless`.

## Release backport

- [x] <!-- backport-active-release --> Backport this pull request to the
active release branch after it merges into `develop`

## Checklist

- [x] I have read and understood the contribution guidelines
- [x] I have run the pre-commit checks
- [x] My changes generate no new warnings
- [x] I have added changelog fragments for every touched package
…7698)

## Summary

Ensure environments close before the simulation runtime shuts down, even
when setup or execution is interrupted. Repeated Ctrl+C presses must not
interrupt that cleanup halfway through.

- Train/play and random/zero entrypoints register cleanup immediately
after creating the environment, using the standard library's
`ExitStack`. The callback closes the final wrapper, not the original
unwrapped environment.
- Ignore SIGINT only while closing the environment or Kit, then restore
the previous handler. Normal execution remains interruptible; no polling
flags or new context-manager framework.
- Pass exit status 130 to the runtime launcher for an unhandled
`KeyboardInterrupt`, rather than reporting success. Existing
training-loop handlers that save checkpoints remain unchanged.

## Validation

- 170 tests passed across the existing launcher, entrypoint, and
entrypoint-common suites. Extended existing tests; no new test files.
- The four regression cases failed against unmodified develop:
interrupted Kit cleanup, incorrect interrupt exit status, and
random-agent cleanup interrupted during reset or stepping.
- GPU 0: Cartpole Direct, 64 environments, Newton MJWarp, headless Kit +
Newton GL. Four rapid SIGINTs completed shutdown with
`SimulationContext` cleared and exit status 130.
- GPU 0: one RSL-RL training iteration completed and exited with status
0.
- `uv run isaaclab -f` passed, including changelog validation.

The full four-viewer GUI combination has not been revalidated locally.

## Release backport

- [x] <!-- backport-active-release --> Backport this pull request to the
active release branch after it merges into `develop`

## Type of change

- Bug fix

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: Octi Zhang <zhengyuz@nvidia.com>
## Description

Fix the eight broken Isaac Teleop link occurrences behind the repeated
**Documentation Links** failures on develop and PRs, including [this
develop
run](https://github.com/isaac-sim/IsaacLab/actions/runs/36514604515).

The upstream repository moved to
[NVIDIA/IsaacCapture](https://github.com/NVIDIA/IsaacCapture). GitHub
repository URLs redirect, but the old `nvidia.github.io/IsaacTeleop`
documentation URLs return 404. Update them to the corresponding
`IsaacCapture` pages, preserving the documented client versions.

Only eight URL replacements and a docs-only changelog marker. No checker
exclusions, relaxed status codes, retry changes, or new tests.

## Validation

- Reproduced HTTP 404 for all seven distinct old URLs (eight
occurrences).
- All seven replacements returned HTTP 200 without redirects; verified
the MANUS wrist-positioning anchor separately.
- No old `nvidia.github.io/IsaacTeleop` links remain in the checked
Markdown/reStructuredText sources.
- `uv run isaaclab -f` passed. Documentation builds and the full link
sweep are left to CI.

## Type of change

- Documentation update

## Release backport

- [x] <!-- backport-active-release --> Backport this pull request to the
active release branch after it merges into `develop`

## Checklist

- [x] Read the contribution guidelines.
- [x] Ran formatting and changelog checks.
- [x] Verified the changed links directly; the existing CI link checker
covers the regression.
- [x] Added a `.skip` fragment for the package README change.
# Description

Expose `CouplerAdmmCfg.contact_max_triangle_pairs` and
`contact_reduction_hashtable_size_factor` to size ADMM's internal
contact buffers independently of the outer Newton collision pipeline.
Both default to `None`, preserving Newton's defaults.

Pass explicit values through Newton's public `SolverCoupledADMM.Config`.
Older Newton builds reject unsupported overrides with a concise error.
Triangle-pair capacities must be below `2**20` with `latest` or `sticky`
matching; larger capacities remain supported with matching disabled.

## Upstream API

[Newton #4309](newton-physics/newton#4309) is
merged, and the private pipeline adapter has been removed. Newton source
`3d5de3f` supports both fields; published `1.6.1rc1` predates the merge
and exercises the unsupported-override path. Global dependency
declarations remain unchanged.

## Validation

- Focused coupler tests: **77 passed** with Newton source `3d5de3f`, and
**77 passed** with `1.6.1rc1` (73 unit tests and 4 runtime tests, run
per file).
- Covered capacity allocation, mesh contacts, matching, reset, stepping,
and unsupported overrides; boundary coverage includes `2**20 - 1`,
`2**20`, and larger capacities with matching disabled.
- `uv run isaaclab -f` and changelog validation passed.
- Full documentation build passed without warnings (`uv run --frozen
--isolated --extra test --extra dev -- make -C docs current-docs`).

## Type of change

- New feature (non-breaking change which adds functionality)
- Documentation update

## Release backport

- [x] <!-- backport-active-release --> Backport this pull request to the
active release branch after it merges into `develop`

## Checklist

- [x] I have read and understood the contribution guidelines.
- [x] I have run the pre-commit checks with `uv run isaaclab -f`.
- [x] I have made corresponding changes to the documentation.
- [ ] My changes generate no new warnings (the focused tests report
existing upstream deprecation warnings).
- [x] I have added tests that prove my fix is effective or that my
feature works.
- [x] I have added a changelog fragment for every touched package.
- [x] My name already exists in `CONTRIBUTORS.md`.

---------

Co-authored-by: Kelly Guo <kellyg@nvidia.com>
## Description

`Isaac-RenderBenchmark-Franka-Cabinet` did not declare an `ovphysx`
preset, and its automatic `physx` preset lacked the OvPhysX
configuration. Add both so `presets=ovphysx,ovrtx` and
`presets=physx,ovrtx` can select physics without Kit.

Default an unset `BENCHMARK_MODE` to `None`. Physics and camera
rendering still run, while benchmark animation and render/physics scope
profiling remain disabled. Explicit `render` and `physics_render` modes
remain supported, and scope timings still require their separate
profiling flags. Collecting scope timings still requires an explicit
mode; an unset mode produces no timing file for the sweep to read.

Update regression coverage, documentation, and migration guidance for
the changed default. The renderer sweep script and its tests match the
PR base; the additional mode parameterization and command-comment change
were removed.

## Type of change

- Bug fix
- Behavior change: the canonical task's default benchmark mode is now
`None`

## Validation

- All 17 renderer-sweep unit tests passed after restoring the script and
tests to the PR base.
- All repository formatting and pre-commit checks passed with `uv run
isaaclab -f`.
- The changed documentation page parsed without warnings. Full
documentation validation encountered unrelated OvPhysX API import and
duplicate-object warnings.
- A full GPU rendering benchmark was not run.

## Release backport

- [x] <!-- backport-active-release --> Backport this pull request to the
active release branch after it merges into `develop`

## Checklist

- [x] I have read and understood the contribution guidelines
- [x] I have made corresponding changes to the documentation
- [x] I have added tests that prove my fix is effective
- [x] I have added a changelog fragment for the changed package
- [x] My name already exists in `CONTRIBUTORS.md`
- [x] All pre-commit checks passed with `uv run isaaclab -f`
# Description

> [!IMPORTANT]
> Confirm the pull request base before submitting. Target `develop` for
all
> contributions. The `release/3.0.0-beta2` branch is a frozen stable
landing
> snapshot and is not used for ongoing maintenance.

<!--
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

- [ ] 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 added a changelog fragment under
`source/<pkg>/changelog.d/` for every touched package (do **not** edit
`CHANGELOG.rst` or bump `extension.toml` — CI handles that)
- [ ] 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: angehu-nv <angelinah@nvidia.com>
Co-authored-by: AntoineRichard <antoiner@nvidia.com>
Co-authored-by: Kelly Guo <kellyg@nvidia.com>
Co-authored-by: Mustafa Haiderbhai <mhaiderbhai@nvidia.com>
Co-authored-by: Fatima Anes <fanes@nvidia.com>
@pull pull Bot locked and limited conversation to collaborators Sep 29, 2026
@pull pull Bot added the ⤵️ pull label Sep 29, 2026
@pull
pull Bot merged commit eeb6e04 into mataylor-nvidia:develop Sep 29, 2026
14 of 21 checks passed
@github-actions github-actions Bot added documentation Improvements or additions to documentation infrastructure isaac-lab isaac-mimic labels Sep 29, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants