[pull] develop from isaac-sim:develop - #63
Merged
Merged
Conversation
# Description Part of the series that splits the core cleanup in #7949 into small, reviewable pieces. An audit of the backend asset classes (after the tendon issues in #7985 / #7990) found two public API signatures that always fail on one backend. This PR fixes both. It is independent of #7985 / #7990. ## Fixes - **Newton, deprecated joint friction writers.** `Articulation.write_joint_friction_coefficient_to_sim` (deprecated) was overridden in Newton to pass `joint_friction_coeff` positionally to the keyword-only `write_joint_friction_coefficient_to_sim_index`, and to forward `full_data`, which that method does not accept. It always raised `TypeError`, and so did the deprecated `write_joint_friction_to_sim`, which the base class routes through it. The override is removed, so Newton uses the base class implementation that PhysX and OVPhysX match (keyword forwarding to the index writer). - **PhysX, `RigidObjectCollection` mask writers.** `write_body_link_pose_to_sim_mask`, `write_body_com_pose_to_sim_mask`, `write_body_com_velocity_to_sim_mask`, and `write_body_link_velocity_to_sim_mask` took `body_ids` instead of the `body_mask` that the base class, OVPhysX, and Newton declare, so `body_mask=` raised `TypeError` on PhysX. They now take `body_mask`. `body_ids` still works but emits a `DeprecationWarning` (passing both raises `ValueError`). ## Tests - `test/assets/test_articulation_iface.py`: new `test_deprecated_joint_friction_writers` calls both deprecated friction writers on every backend; it fails for Newton on `develop`. - `test/assets/test_rigid_object_collection_iface.py`: the mask writer tests skipped `body_mask` for the link/com variants (with a note about this mismatch). The workaround and note are removed, so `body_mask` is exercised for all six mask writers on every backend. PhysX is only available in these tests with Kit; I confirmed under Kit that all four PhysX writers reject `body_mask=` on `develop` and accept it here. The full file passes locally for Newton and OVPhysX (1276 passed). ## 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 - [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 The `isaaclab_newton` CI job is the longest package-test job (~33 min, ~28 min of which is test wall time). This PR removes duplicated coverage from the Newton test suite: tests that built the same scene to check overlapping contracts are merged, tests that only round-tripped a Warp array are removed, and parametrize matrices whose extra axes exercised no distinct code path are trimmed. Test-only change. **Contact sensor** - `test_contact_lifecycle`: 32 → 8 items. Each shape still runs once, and device × collision pipeline rotate across the shapes so every (device, pipeline) pair runs on at least two shapes. The sensor has no shape- or device-specific branch. - `test_first_transition_with_aged_clock`: 12 → 4 items (CUDA only; clock ages 2.5 s and 30 s). The float32 clock accumulates identically on every device, and the largest age bounds the drift. **Articulation / rigid objects** - Bookkeeping tests that hard-coded `["cuda:0", "cpu"]` (ordering, rebind, post-step hook, native gain write, branching fixture) and the four velocity/effort-limit propagation tests now use `test_devices(DeviceScope.CUDA)`. This also makes them honor the multi-GPU runtime mask, which the hard-coded lists ignored. - Merged into a sibling test that already built the same fixture: - pose + velocity ordered-cache invalidation → one build (the velocity cache is repopulated after the pose write, so only the velocity write can invalidate it); - `test_initialization_hand_with_tendons` → the tendon-target test; - `test_newton_clear_callbacks_deregisters_post_step_hook` → the post-step hook test; - `test_get_mass_matrix_symmetry_pd` → `test_dynamics_accessor_shapes`. - Dropped `num_articulations=1` from `test_dynamics_accessor_shapes`; `test_heterogeneous_scene_per_view_shapes` already asserts the same shapes and diagonals at N=1 for both assets. - Removed the three `*set_material_properties` tests. They wrote a Warp binding and asserted that the same binding read back, so no Isaac Lab code was under test. **Actuators / manager** - Removed `TestDelayedPDAuthoring`. `TestDelayedPDEquivalence` (2–4 step delay) diverges if the delay is not authored. - Folded `test_active_manager_create_builder_registers_mpm_attributes` and `test_mpm_end_to_end_with_particle_custom_attributes` into `test_mpm_project_outside_colliders_gates_projection`, which runs the same builder, particles, reset and step. ### Measured impact (local RTX PRO 6000, warm Warp cache, one process per file as in CI) | File | Before | After | |---|---:|---:| | assets/test_articulation.py | 238.9 s | 198.0 s | | sensors/test_contact_sensor.py | 72.3 s | 45.2 s | | physics/test_newton_manager_abstraction.py | 43.2 s | 38.2 s | | assets/test_rigid_object_collection.py | 45.8 s | 42.7 s | | assets/test_rigid_object.py | 44.6 s | 41.1 s | | assets/test_newton_actuators_newton.py | 42.9 s | 39.4 s | | **Total** | **487.7 s** | **404.6 s (−17%)** | All changed files pass locally. ### Not in this PR: most of the remaining time is kernel compilation A cold vs warm Warp-cache run of the whole Newton suite locally is 1300 s vs 780 s, so **~40% of the job is kernel compilation**. The `warm-warp-cache` job only warms rigid environments, so the Newton unit tests (Kamino's blocked-Cholesky tile kernels alone take ~45 s, plus Fabric sync, MPM, VBD, cable, …) recompile on every PR. That is a CI change, addressed separately. ## Type of change - Test-only cleanup (no user-facing 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` - [ ] 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 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 Apply configured observation noise to explicit resets in `DirectRLEnv` and `DirectMARLEnv`. A private `_compute_observations()` method in each base class now owns observation computation and noise application for reset, step, and terminal-observation capture. Task implementations continue to provide raw observations through `_get_observations()`; single-agent critic observations remain clean, and multi-agent noise is limited to configured agents. This is an independent alternative to #7998 that addresses the same issue with one observation processing path per direct environment type. Fixes #7968 ## Type of change - Bug fix (non-breaking change which fixes an issue) ## Testing - Focused CPU unit tests: 7 passed. The two enabled-noise reset cases failed on unchanged `develop` and passed with this change. - `uv run --frozen isaaclab -f`: passed, using a temporary local base ref at the current upstream `develop` head for the changelog check. - No simulator integration or GPU tests were 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 run the pre-commit checks - [x] I have updated the reset method documentation - [x] My changes generate no new warnings in the tests run - [x] I have added regression tests that fail without the fix and pass with it - [x] I have added a changelog fragment - [x] My name is already in `CONTRIBUTORS.md`
# Description Adds `isaaclab-auditing-tests` (`skills/developer/test-audit/`), a developer skill for deciding whether a test earns its cost. It has three modes: - **Authoring gate:** four questions every new test must answer (contract, credible regression, why existing coverage misses it, whether it needs a test-only production seam), plus a junk-pattern checklist. - **Audit:** read-only discovery, then an evidence record for every deletion or merge candidate (what it detects, the remaining stronger proof, history, risk) before any edit. - **Campaign:** `campaign.md`, the order of work for pruning a whole package's test surface. The skill is adapted from OpenClaw's [`test-audit`](https://github.com/openclaw/openclaw/tree/80930af448ebabc84174146b56bc106d37fab3b4/.agents/skills/test-audit) (MIT; the license is included as `LICENSE-openclaw.txt`). The adaptation: - replaces Vitest, plugin, and `$crabbox` tooling with `uv run python -m pytest`, the per-file CI runner in `tools/conftest.py`, and the repository's PR and changelog skills; - adds the Isaac Lab duplication patterns found while consolidating the Newton tests in #8003: cartesian parametrize products whose axes select no distinct branch, CPU/GPU variants of device-independent bookkeeping (scope with `test_devices(DeviceScope.CUDA)`), and a new scene per assertion when a sibling already builds the fixture; - requires a production mutation that turns the keeper red whenever a merged or deleted test's "stronger proof" does not carry its assertions verbatim. That last rule comes from applying the skill to #8003 after it merged. `TestDelayedPDAuthoring` was removed there because `TestDelayedPDEquivalence` was assumed to cover delay authoring. With delay authoring disabled in `schemas_actuators.py`, the equivalence test still passes and the authoring test fails. That test, and three material-property tests with no remaining proof, will be restored in the follow-up audit PR that uses this skill. Validated with `uv run --no-project python tools/skills/cli.py check` (24 skills). ## Type of change - Documentation update (agent skill) ## 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 - [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 ## Release backport - [x] <!-- backport-active-release --> Backport this pull request to the active release branch after it merges into `develop`
# Description Package curated Isaac Lab showcases and focused examples in the released wheel. Run them without a source checkout through `uvx isaaclab demo <name>` and `uvx isaaclab example <name>`. This change: - keeps one repository-level `examples/` tree: six showcases in `examples/demos/`, 24 focused programs in `examples/` and topic folders such as `examples/mpm/` and `examples/sensors/`, and shared data in `examples/assets/`; - adds the Zoo showcase, including `--num_envs` support, while classifying the Newton dominoes scene as an example; - packages that tree privately in the unified wheel and provides stable CLI catalogs with argument forwarding; - reuses the Isaac Lab terminal startup screen for demos and examples, and adds a Newton GL selector for compatible packaged programs; - keeps operational workflows and utilities under `scripts/`; - updates documentation, the interactive command builder, standalone tests, wheel checks, and migration notes; and - removes the temporary `ppisp_camera_ovrtx.py` QA script. There is no linked issue. ## Type of change - New feature (non-breaking change which adds functionality) - Breaking change (existing functionality will not work without user modification) - Documentation update ## Release backport - [x] <!-- backport-active-release --> Backport this pull request to the active release branch after it merges into `develop` ## Screenshots Not applicable. ## Validation - `uv run isaaclab -f` — passed. - `uv run --extra test python -m pytest -q source/isaaclab/test/cli/test_installed_workflow_entrypoints.py source/isaaclab/test/app/test_loading_screen.py source/isaaclab/test/app/test_standalone_scripts.py source/isaaclab_visualizers/test/test_newton_visualizer_viewer_release.py` — 109 passed; 334 simulator-launch cases skipped by the existing opt-in gate. - `uv run --isolated --extra dev -- make -C docs current-docs` — full HTML build succeeded without warnings. - Built the unified `isaaclab-3.0.0` wheel, installed it in a clean environment, and resolved all six demos, 24 examples, and the domino asset from the installed package. - `uv run isaaclab demo zoo --help` and `uv run isaaclab example newton-dominoes --help` — passed. The existing install-CI wheel smoke fixture could not run locally because its legacy `isaaclab.sh -u` setup did not create the expected environment; the direct wheel build and isolated install checks above passed. ## 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 `uv run isaaclab -f` - [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 --------- Co-authored-by: Maximilian Krause <maximiliank@nvidia.com>
…llers (#7854) # Description Added Newton 1.6 model-free differential IK, joint impedance, and OSC through `cfg.use_newton=True`; the original Lab controllers remain the default. Consolidates #6693, #7482, and the differential-IK portion of #6654. Ackermann remains in its separate draft. Both paths share constructor, command, and compute signatures and return independent results. Controller selection is independent of the physics backend. Newton initializes from compute inputs, or from supplied DiffIK limits when avoidance is enabled. Existing callers and tutorials retain their setup; SO101 retains its wrist-orientation mask through a Newton-only Jacobian adaptation. Newton uses float32 computation. Its OSC selects motion before inertia decoupling, requires at least six joints for decoupling, and retains motion-force coupling that fails three hybrid force-tracking cases. Those Newton cases run as strict expected failures; Lab cases remain active, and thresholds are unchanged. Convergence checks now apply masks in the actual control frame. Newton DiffIK requires joint limits before the first compute when avoidance is enabled; later limit updates retain its buffers. Its `pinv` also rejects fewer controlled joints than active task axes. These differences prevent blanket replacement of the Lab path. Joint impedance retains the same control law, subject to Newton's precision boundary. Includes the position-only SVD and joint-impedance gain-clamping/batched-inertia fixes. ## Type of change - New feature, bug fix, documentation update ## Release backport - [ ] <!-- backport-active-release --> Backport to the active release branch ## Validation - Post-merge CPU controller suite: **204 passed, 3 CUDA capture tests skipped**. Formatting and changelog checks passed. - Focused GPU hybrid simulation with current controller/test overlays, 16 environments: **3 Lab passed, 3 Newton xfailed**. This was not a full-repository run of the final head. - Warning-free current documentation build passed. - Matched full-policy Lab/Newton videos were recorded for Reach-Franka-OSC on PhysX/MJWarp and Drawer DiffIK on MJWarp. SO101 keyboard rollout and training equivalence remain unverified. - Fresh Docker/GPU CI requested for the updated head; results pending. ## Checklist - [x] Contribution guidelines followed; contributor already listed - [x] Pre-commit checks run with `uv run isaaclab -f` - [x] Documentation and package changelog fragments updated - [x] Both-backend and regression tests added - [ ] Newton hybrid force-tracking limitations resolved - [ ] Changes generate no new warnings --------- Co-authored-by: Mustafa H <34825877+StafaH@users.noreply.github.com> Co-authored-by: Mustafa Haiderbhai <mhaiderbhai@nvidia.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.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 : )