Cherry-pick Antoine PRs to release/3.0.0-beta2#5965
Conversation
## Summary - Enabled the Spot Newton MJWarp preset to use the Newton collision pipeline instead of MuJoCo contacts. - Increased Spot MJWarp constraint/contact capacity and set the Newton shape margin used by other rough-terrain locomotion presets. ## Test Plan - [x] `./isaaclab.sh -p -c "from isaaclab_tasks.core.velocity.config.spot.flat_env_cfg import PhysicsCfg; cfg = PhysicsCfg().newton_mjwarp; print(cfg.solver_cfg.njmax, cfg.solver_cfg.nconmax, cfg.solver_cfg.use_mujoco_contacts, cfg.collision_cfg.max_triangle_pairs, cfg.default_shape_cfg.margin)"` - [x] `SKIP=check-git-lfs-pointers ./isaaclab.sh -f` - [ ] `./isaaclab.sh -f` (blocked locally because `git-lfs` is not installed) (cherry picked from commit d7e852e)
- Pins the OVPhysX optional runtime dependency to `ovphysx==0.4.13`. - Pins CI direct OV runtime installs to the same `ovphysx` version. - Adds an `isaaclab_ovphysx` changelog fragment. - `PATH=/tmp/git-lfs-local/root/usr/bin:$PATH ./isaaclab.sh -f` - `./isaaclab.sh -p tools/changelog/cli.py check develop` - `./isaaclab.sh -p -c "import tomllib; tomllib.load(open(\"source/isaaclab_ovphysx/pyproject.toml\",\"rb\")); tomllib.load(open(\"pyproject.toml\",\"rb\")); print(\"toml ok\")"` No tests added per request. (cherry picked from commit 7e54511)
## Summary - Removed `scripts/tools/wrap_warp_to_torch.py`, which is obsolete now that `ProxyArray` exposes explicit `.torch` access. - Removed the ProxyArray static scanner exemption for the deleted helper. - Added an `isaaclab` changelog fragment for the removal. ## Test Plan - [x] `./isaaclab.sh -p -m pytest source/isaaclab/test/test_scripts_torcharray_patterns.py` - [x] `env PATH=/tmp/git-lfs-3.7.1/git-lfs-3.7.1:$PATH ./isaaclab.sh -f` - [x] `rg -n "wrap_warp_to_torch|wrap_warp_to_py" docs --glob '!core'` returned no matches Closes isaac-sim#5057 (cherry picked from commit ac7fd8a)
There was a problem hiding this comment.
🤖 Isaac Lab Review Bot
Summary
Cherry-pick of 5 PRs from develop to release/3.0.0-beta2:
- #5940 – Enable Spot Newton MJWarp preset (Newton collision pipeline, increased capacity/margin)
- #5959 – Pin
ovphysx==0.4.13runtime dependency - #5924 – Remove obsolete
wrap_warp_to_torch.pymigration helper - #5956 – Deprecate
MJWarpSolverCfg.ls_parallel(kept as ignored compat field with deprecation warning) - #5923 – Fix pre-trained policy action grad leak (benchmark wrapped with
torch.inference_mode())
The PR also notes a cherry-pick conflict resolution for #5959: the release branch setup.py packaging path was preserved while applying the ovphysx==0.4.13 pin.
Cherry-Pick Correctness
- ✅ No merge conflict markers (
<<<<<<<,=======,>>>>>>>) found in the diff - ✅ All 33 files changed cleanly — removals of
ls_parallelusage are consistent across all task configs, tests, and documentation - ✅ The
ls_parallelfield is properly deprecated (kept with__post_init__warning + ignored in_build_solver) rather than hard-removed, preserving backward compatibility - ✅ Changelog fragments added for all affected packages (
isaaclab,isaaclab_newton,isaaclab_contrib,isaaclab_tasks,isaaclab_tasks_experimental,isaaclab_ovphysx) - ✅ Documentation updates are internally consistent (migration guide, solver docs, solver comparison all aligned)
- ✅ CI workflow pins match the
setup.pypin (ovphysx==0.4.13) - ✅ OVPhysX test docstrings updated from version-specific
ovphysx<=0.3.7to generic "The OVPhysX runtime" phrasing
Findings
No issues found. The cherry-pick is clean with no conflict artifacts. The conflict resolution for #5959 (keeping release branch packaging paths while applying the version pin) is correctly described and the changes are consistent. All ls_parallel removals from call sites are paired with the deprecation infrastructure in the cfg class, ensuring no breakage for downstream code that still passes the parameter.
Verdict
No issues found — clean cherry-pick ready for merge.
Update (cd7d0e9): 4 additional files changed since last review:
scripts/benchmarks/benchmark_startup.py— Wrapsenv.step(actions)intorch.inference_mode()context (part of #5923 fix, consistent with PR intent)source/isaaclab/isaaclab/utils/math.py— Docstring correction:T_{AB}described as "frame B to A" instead of "frame A to B" (matches actual convention used in code —t01= position of frame 1 w.r.t. frame 0, i.e. transform from 1→0)source/isaaclab/isaaclab/cloner/__init__.pyi— Fixes lazy exports: removescfg_source_path/path_source_path, addsresolve_clone_plan_source(API rename reflected in stub)source/isaaclab/changelog.d/— Two new changelog fragments (docstring-only skip + cloner fix entry)
✅ No issues. Changes are consistent with original PR scope (cherry-picks from develop). The math docstring fix corrects a genuine documentation error.
Update (99d683f): 1 file added since last review:
source/isaaclab_tasks/changelog.d/antoiner-spot-newton-mjwarp-preset.rst— Changelog fragment for the Spot Newton MJWarp preset fix (documents the collision pipeline correction from #5940)
✅ No issues. Trivial changelog addition consistent with existing PR scope.
Greptile SummaryThis cherry-pick from
Confidence Score: 4/5Safe to merge; all changes are targeted deprecations, dependency pins, and config updates with no risk of data loss or crash. The deprecation path for ls_parallel is implemented consistently across config, manager, tests, and docs. The ovphysx==0.4.13 exact-equality pin is intentional to block a known breaking release and is mirrored across all three affected files. The only minor concern is that the strict == pin will block future patch releases of ovphysx, which may need revisiting as the library evolves. source/isaaclab_ovphysx/setup.py — the exact-equality pin for ovphysx may need to be relaxed once a known-good patch release is available. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A["User creates MJWarpSolverCfg(ls_parallel=True)"] --> B["@configclass __init__"]
B --> C["_combined __post_init__\n(user + _custom_post_init)"]
C --> D{"ls_parallel == True?"}
D -- Yes --> E["warnings.warn(DeprecationWarning)\nstacklevel=5"]
E --> F["Set ls_parallel = False"]
D -- No --> G["No-op"]
F --> H["NewtonMJWarpManager.__init__"]
G --> H
H --> I["ignored = {class_type, solver_type, ls_parallel}"]
I --> J["kwargs = cfg.to_dict() filtered by SolverMuJoCo signature - ignored"]
J --> K["SolverMuJoCo(model, **kwargs)"]
Reviews (1): Last reviewed commit: "Fix pre-trained policy action grad leak ..." | Re-trigger Greptile |
|
|
||
| EXTRAS_REQUIRE = { | ||
| "ovphysx": ["ovphysx"], | ||
| "ovphysx": ["ovphysx==0.4.13"], |
There was a problem hiding this comment.
The exact
== pin means any ovphysx version other than 0.4.13 — including future bug-fix releases like 0.4.14 — will be refused by pip. A compatible-release (~=0.4.13) or upper-bounded range (>=0.4.13,<0.5) would block known-breaking minor bumps while still allowing patch releases.
| "ovphysx": ["ovphysx==0.4.13"], | |
| "ovphysx": ["ovphysx~=0.4.13"], |
Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
# Description Fixes a latent autograd leak in `PreTrainedPolicyAction.apply_actions`. When environments are stepped outside `torch.inference_mode()`, the low-level policy output can require gradients; copying that output into `self.low_level_actions` makes the persistent action buffer require gradients as well. Warp later rejects that tensor when accessing `__cuda_array_interface__`. This runs the low-level policy under `torch.no_grad()` and detaches its output before copying it into the action buffer. No new dependencies are required. @pascal-roth FYI for upstream review. Fixes: N/A ## Type of change - Bug fix (non-breaking change which fixes an issue) ## Screenshots N/A. ## 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 ## Verification - `./isaaclab.sh -f` was run first. All non-LFS hooks passed, but `check-git-lfs-pointers` failed because `git-lfs` is not installed in this environment. - `SKIP=check-git-lfs-pointers ./isaaclab.sh -f` passed. - Focused inline check with normal grad mode enabled confirmed the policy output requires grad before the action term runs, while `low_level_actions.requires_grad`, `low_level_actions.grad_fn`, and the downstream action tensor remain detached after `apply_actions()`. - No automated test was added for this change. (cherry picked from commit 43f875f)
a4ba64d to
2385b42
Compare
# Description Restores the package-level `isaaclab.cloner.resolve_clone_plan_source` lazy export used by the Newton RayCaster backend. This fixes Newton RayCaster task construction failures where `isaaclab_newton.sensors.ray_caster` could not import the helper from `isaaclab.cloner`. The PR also removes stale cloner stub exports that no longer have implementations, so every name in `isaaclab.cloner.__all__` resolves. These stale names were not caught by existing tests because no code or test imported or accessed `path_source_path` or `cfg_source_path`; `lazy_export()` can import the package and resolve other names without touching every `__all__` entry. No new dependencies are required for this change. @OctiZhangOctiZhang (), could you review? Fixes # (no linked issue) ## Type of change - Bug fix (non-breaking change which fixes an issue) ## Screenshots Not applicable. ## Checklist - [x] 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` - Ran `./isaaclab.sh -f`; `ruff` formatted one file, then the full hook set was blocked because `git-lfs` is not installed in this environment. - Ran `SKIP=check-git-lfs-pointers ./isaaclab.sh -f` after formatting; all non-LFS hooks passed. - [x] I have made corresponding changes to the documentation - No documentation update was needed for this import/export fix. - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - No test was added for this simple lazy-export correction. Validation was done with the Newton RayCaster repro and a one-off import scan. Note: existing `from isaaclab.cloner import _fabric_notices` test imports do not cover this lazy-export path because `_fabric_notices` is a real package submodule, while `resolve_clone_plan_source` is a function that must be declared in `__init__.pyi` for `lazy_export()` to expose it. - [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 (cherry picked from commit 0fea540)
# Description
Updates the transformation-matrix docstrings in
`combine_frame_transforms()` and `subtract_frame_transforms()` on
`develop` to state that `T_{AB}` maps from frame B to frame A, matching
isaac-sim#5819 on `main`.
No new dependencies.
Fixes # N/A - follow-up to isaac-sim#5819 for `develop`.
## Type of change
- Documentation update
## Screenshots
Not 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` (`./isaaclab.sh -f`; all hooks pass except
`check-git-lfs-pointers`, which fails because `git-lfs` is not installed
locally)
- [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 (not applicable: docstring-only change)
- [x] I have added a changelog fragment under
`source/<pkg>/changelog.d/` for every touched package
(`source/isaaclab/changelog.d/antoiner-fix-transform-docs-develop.skip`)
- [x] I have added my name to the `CONTRIBUTORS.md` or my name already
exists there (`Antoine Richard`)
Signed-off-by: Junette Hsin <junetter@gmail.com>
Co-authored-by: Junette Hsin <junetter@gmail.com>
(cherry picked from commit dc0a80d)
9299553
into
isaac-sim:release/3.0.0-beta2
Summary
Cherry-picked these merged PRs from
developtorelease/3.0.0-beta2:Release-Branch Notes
setup.pypackaging path and applied theovphysx==0.4.13pin there.isaaclab_taskschangelog fragment for the Enable Spot Newton MJWarp preset #5940 Spot preset change.Verification
./isaaclab.sh -f./isaaclab.sh -p tools/changelog/cli.py check release/3.0.0-beta2./isaaclab.sh -p -m pytest source/isaaclab/test/test_scripts_torcharray_patterns.py./isaaclab.sh -p -c "from pathlib import Path; import ast; ast.parse(Path('source/isaaclab/isaaclab/cloner/__init__.pyi').read_text()); print('cloner stub syntax ok')"