Skip to content

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

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

pull[bot] merged 3 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 : )

AntoineRichard and others added 3 commits September 29, 2026 07:59
# Description

Stabilize the DR Legs Kamino P-ADMM preset under bounded random joint
targets by disabling the
driven-joint solver effort limit only for Newton/Kamino. The PhysX
presets retain the authored
3.1 N m limit, and the Kamino penalty parameter is restored to its
original ``rho_0=0.02``.

Re-enable ``IsaacContrib-DrLegs-Walk`` in the contributed-environment
smoke suite and add coverage
proving that the nested effort-limit preset resolves to ``inf`` for
Newton/default and ``3.1`` for
both PhysX aliases.

The finite effort limit adds solver-side constraint rows; the failure is
in their interaction with
the closed-loop Kamino P-ADMM solve, rather than ordinary
controller-side torque clipping. This is a
temporary Isaac Lab workaround for
newton-physics/newton#4173. Its explicit
tradeoff is that Newton no longer enforces the robot's 3.1 N m
driven-joint torque cap until the
upstream constraint instability is fixed. PhysX behavior is unchanged.

Fixes #7625

## 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`

## Screenshots

Not applicable.

## Testing

- ``uv run isaaclab -f``
- ``uv run python tools/changelog/cli.py check develop``
- Effort-limit preset regression: failed for both Newton/default
variants before the fix; all four
  Newton and PhysX variants pass after the fix
- ``test_contrib_environments[IsaacContrib-DrLegs-Walk]`` (CUDA): passed
in 12/12 fresh 20-step runs
- Final focused CUDA run: 5/5 tests passed together

## 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 (not
applicable; no public API or workflow changed)
- [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
## Summary

Enable heterogeneous rigid-body and articulation cloning with the
**released OVPhysX 0.6.3 wheel**. No native patch, dependency update, or
monkey-patch is required.

- Build native copies from the clone plan. Worlds containing source
assets or USD-only physics import their complete composition; other
worlds copy from a complete original with one environment ID. This
preserves within-world contacts without destination placeholders.
- Keep the CPU full-USD path because 0.6.3 does not support CPU
environment-ID filtering.
- Preserve numeric environment ordering and contact-filter pairing.
Reuse resolved paths inside `OvPhysxView`; assets do not orchestrate
binding reuse.
- Check active D6 rotation axes and tendon layouts once per variant
prototype; native metadata validates the remaining body/joint layout.
Defer unused rendering bindings during headless startup.
- Match the scene's declared step rate to `SimulationCfg.dt`, fixing
oversized automatic contact offsets. Enable Kuka Allegro's existing
heterogeneous shapes preset for OvPhysX.

## Validation

- 26 focused clone/export tests passed, including selective USD
materialization that keeps unaffected worlds on native cloning.
- 16 heterogeneous integration cases passed on CPU and 16 on GPU, using
the unmodified 0.6.3 wheel. Coverage includes indexed state, contact
isolation, USD-only supports with and without their native ancestor,
incompatible D6/tendon layouts, and compatible disabled-joint and
translation-limit differences. Regression cases were verified to fail
before their fixes.
- Formatting and changelog checks passed. Docker/GPU CI requested with
`run-ci`; documentation validation is left to CI.

### Released-wheel benchmark

`Isaac-Lift-KukaAllegro`, 4096 environments, 16 object variants, RTX
5090 GPU 1, no renderer/viewer, seed 42. One warm sample; 20 warmup
steps followed by 100 measured steps, synchronized around the
measurement window.

| Environment creation | Environment step | Environment steps/s |
| ---: | ---: | ---: |
| 97.97 s | 86.05 ms | 47,600 |

Environment creation is `gym.make`, not whole-process startup. This
measurement uses stock OVPhysX. Further native startup optimizations are
submitted separately in
[NVIDIA-Omniverse/PhysX#532](NVIDIA-Omniverse/PhysX#532);
they are not required by this PR or included in its numbers.

```bash
CUDA_VISIBLE_DEVICES=1 PXR_WORK_THREAD_LIMIT=1 OVPHYSX_NVTX=0 \
uv run --extra ovphysx isaaclab benchmark runtime \
  --task Isaac-Lift-KukaAllegro --num_envs 4096 --seed 42 \
  --num_steps 100 --warmup_steps 20 --device cuda:0 --visualizer none physics=ovphysx
```

Deformable native cloning remains outside this PR. CPU
kinematic-velocity reset limitations and heterogeneous rendering-golden
coverage are unchanged.

## Type of change

- Bug fix
- Documentation update

## Release backport

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

## Checklist

- [x] Contribution guidelines and formatting checks reviewed.
- [x] Documentation and focused regression tests updated.
- [x] Changelog fragments cover the changed source packages.
- [x] Contributor name is present in `CONTRIBUTORS.md`.

---------

Co-authored-by: Octi Zhang <zhengyuz@nvidia.com>
## Summary

Enable pipelined rendering with
`OVRTXRendererCfg(async_rendering=True)`; the default stays synchronous.
Rendering overlaps the next simulation step, at the cost of returning
each camera's previous capture.

- Each camera owns its pending images. Matching capture pose,
calibration, and frame indices are in
`camera.data.info[output]["capture"]`; live camera fields remain
current.
- Reset discards pending observations and primes a fresh image. Partial
resets re-prime that camera's entire tiled product.
- SDP fills retained GPU buffers for transforms and geometry. OVRTX
writes are asynchronous, and buffers are reused only after consumption.
The same path handles deformable meshes, MPM particles, and cables.
- Preserve #8116: step all registered native render products, but
publish only requested cameras. Other renderers retain their existing
behavior.

Latency is one **capture**, not necessarily one physics step. Training
must account for this changed observation timing; learning performance
has not been evaluated here. The ovstage path remains synchronous. Its
async implementation and the existing fixed render timestep are separate
follow-ups.

## Validation

- 100 focused tests passed across renderer contracts, SDP bindings,
material updates, and camera lifecycle, plus four Cartpole golden-image
cases covering Newton and OVPhysX in sync and async modes. Native GPU
coverage checks mesh/particle/curve depth, source-buffer reuse, stream
changes, independent cameras, and resets.
- Actual Newton cloth, volume-deformable, cable, and MPM tasks passed
simulation, camera reads, and reset in both modes.
- `uv run isaaclab -f` and skill validation passed. Documentation build
is left to CI.

### Small-workload sync/async measurements

GPU 0 (RTX 5090), OVRTX legacy path, 128×128 RGB and depth, seed 42. One
warm sample per mode, 10 warmup / 50 measured environment steps,
including camera reads and a final drain. Cloth/soft/cable use Newton
MJWarp + VBD; MPM uses the UR10 particle-push coupled solver. These are
throughput checks, not training or scaling results.

| Workload | Envs | Env creation, sync / async | Env-steps/s, sync /
async | Throughput change |
|---|---:|---:|---:|---:|
| Franka cloth | 16 | 7.49 / 7.53 s | 628 / 744 | +18.4% |
| Franka soft body | 16 | 7.84 / 7.71 s | 612 / 755 | +23.5% |
| Franka cable | 16 | 6.59 / 6.59 s | 570 / 690 | +21.0% |
| UR10 MPM particles | 4 | 8.90 / 9.36 s | 173 / 203 | +17.3% |

No startup improvement is claimed.

## Type of change

- New feature (opt-in, non-breaking)

## Release backport

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

## Checklist

- [x] Followed the contribution guidelines
- [x] Ran formatting and lint checks
- [x] Updated documentation and package changelog fragments
- [x] Extended existing focused tests rather than adding a parallel
suite
- [x] No new implementation warnings

---------

Co-authored-by: pv-nvidia <197907000+pv-nvidia@users.noreply.github.com>
Co-authored-by: Octi Zhang <zhengyuz@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 eb6617c into mataylor-nvidia:develop Sep 29, 2026
9 of 10 checks passed
@github-actions github-actions Bot added documentation Improvements or additions to documentation infrastructure isaac-lab labels Sep 29, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

⤵️ pull documentation Improvements or additions to documentation infrastructure isaac-lab

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants