Repository navigation
[pull] develop from isaac-sim:develop - #82
Merged
Merged
Conversation
# 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>
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
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 : )