[Backport release/3.0.0] Bundle #7272, #7121, #7183, #7306, #7305, and #7303 - #7313
Conversation
# Description Scene-wide gravity randomization accepted `uniform`, `log_uniform`, and `gaussian`, but the PhysX and OvPhysX paths always sampled uniformly. This change forwards the validated configured distribution to both scene-wide backend paths. Newton behavior is unchanged. The focused regression exercises full event dispatch with deterministic Gaussian sampling on both affected backends. Tested with: - `uv run --extra test -m pytest source/isaaclab/test/envs/test_gravity_randomization.py source/isaaclab/test/envs/test_mdp_event_selectors.py -q` (7 passed) - `uv run --extra test --extra ovphysx -m pytest source/isaaclab_ov/test/physics/test_ovphysx_gravity.py -q` (1 passed) - `uv run isaaclab -f` - `uv run python tools/changelog/cli.py check develop --include-worktree` ## 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) - [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 (not applicable; no public API change) - [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 - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there (cherry picked from commit 0081477)
There was a problem hiding this comment.
Isaac Lab Review Bot
The patch correctly caches the validated gravity distribution and forwards it through the PhysX and OvPhysX scene-wide randomization paths instead of forcing uniform sampling. The focused regression test and changelog fragment cover the user-visible fix.
- Design and architecture: Backend dispatch and ownership remain unchanged. The cached distribution is used only by the two scene-wide backend paths, while Newton continues using its existing per-environment sampling implementation.
- API: The public call signature, defaults, parameter names, and gravity unit documentation are unchanged. The existing contract that distribution selection is cached during initialization is preserved, and the required source-package changelog fragment is present.
- Implementation: The distribution is validated before either backend can use it, and both changed calls pass the cached value to the existing randomization helper. Tensor placement, shapes, backend conversions, and gravity sinks remain unchanged. The parameterized regression test exercises both PhysX and OvPhysX dispatch with deterministic Gaussian sampling.
No blocking issues. No inline issue met the actionable-evidence threshold; the assessment above records the review feedback.
Automated review; human maintainers own approval decisions.
Greptile SummaryThis backport makes scene-wide PhysX and OvPhysX gravity randomization honor the distribution validated during event initialization.
Confidence Score: 5/5The PR appears safe to merge, with no actionable correctness, security, or quality issues identified. The configured distribution is already validated during term initialization, the shared helper accepts each supported distribution, and both backend paths convert the sampled result into the expected three-value gravity representation. Important Files Changed
Reviews (1): Last reviewed commit: "Fix gravity distributions for PhysX and ..." | Re-trigger Greptile |
…im#7121) # Description `FactoryBase._get_backend()` can be called before a `SimulationContext` has been created, but it previously dereferenced `SimulationContext.instance().physics_manager` unconditionally. `SimulationContext.instance()` returns `None` before initialization, so backend resolution could fail before any fallback was applied. Following maintainer confirmation, the pre-context fallback is now `newton`. Initialized backend resolution remains unchanged for Newton, PhysX, and OV PhysX contexts. A separate follow-up should update `SimulationCfg(physics=None)` to default to Newton as well; that broader configuration-default change is intentionally outside this PR. ## Validation Adds unit coverage for backend resolution with `SimulationContext._instance` unset and verifies the `newton` fallback. ## Type of change - Bug fix --------- Signed-off-by: Sylvester Kaczmarek <16242628+sylvesterkaczmarek@users.noreply.github.com> Co-authored-by: ooctipus <zhengyuz@nvidia.com> (cherry picked from commit 9f65e3d)
# Description Streamlines the getting-started documentation and points environment discovery to the interactive browser. - Refreshes the quickstart GIFs with OVRTX rendering. - Uses the Franka drawer task for the zero, random, and trained-policy comparison. - Adds a page-scoped generator at `tools/docs/media/generate_quickstart.sh` so the media can be reproduced. - Preserves environment-browser preview assignments without the removed catalog page. ## Validation - `tools/docs/media/generate_quickstart.sh` - `uv run --frozen isaaclab -f` - `uv run --frozen --isolated --extra test -- make -C docs current-docs` - Existing focused environment-browser checks (cherry picked from commit 3fcc9c6)
# Description Reduces `isaaclab_newton` CI runtime while preserving distinct behavioral coverage. - Tests actuator target-mode configuration directly instead of launching a simulation for pure configuration behavior. - Preserves singleton and batched coverage at initialization boundaries, then uses representative batched layouts for downstream behavior. - Consolidates redundant rigid-object and rigid-object-collection parameter matrices. - Keeps the complete contact lifecycle shape matrix while narrowing the secondary horizontal-collision matrix to representative primitive and mesh cases. - Combines contact-sensor metadata checks into one scene. - Removes simulation-backed print/string smoke tests and replaces tautological self-comparisons with cross-view behavioral assertions. ## Before and after measurement Measured with the CI-style per-file test runner on the same workstation, using a new empty Warp cache for each revision. Both revisions use the repository-default Warp backward configuration: | Revision | Cases | Result | Wall time | |---|---:|---|---:| | `upstream/develop` (`c4a275975`) | 1,180 | 0 failures, 0 errors | 30m 44.38s | | This PR (`552b329a8`) | 907 | 0 failures, 0 errors | 21m 41.56s | This saves **9m 02.82s (29.4%)** in a cold-cache run. Both measurements executed all 35 Newton test files. Measurement command: ```bash TEST_FILTER_PATTERN=isaaclab_newton \ WARP_CACHE_PATH=<new-empty-cache> \ uv run --no-sync python -m pytest tools -q ``` ## Type of change - Test and CI performance improvement (non-breaking) ## Validation - Full optimized Newton suite: 35 files, 907 cases, 0 failures, 0 errors. - Full untouched baseline suite: 35 files, 1,180 cases, 0 failures, 0 errors. - Focused changed suites all pass: articulation, rigid object, rigid object collection, contact sensor, frame transformer, IMU, joint wrench, and PVA. - Ruff and Ruff format hooks pass for all changed Python files. - `git diff --check` passes. - `uv run --no-sync isaaclab -f` passes all applicable hooks; the repository-wide changelog checker reports pre-existing fragment immutability/missing-fragment issues in unrelated packages. This PR includes an `isaaclab_newton` `.skip` fragment. ## Checklist - [x] I have read and followed the contribution guidelines. - [x] I have run the relevant tests and included the results above. - [x] I have formatted and linted the changed files. - [x] I have added the appropriate changelog fragment. ## Screenshots Not applicable. (cherry picked from commit 6aad90b)
## Summary - Disable Warp backward code generation before pytest collection to reduce cold kernel compile times. - Keep lightweight tooling compatible when Warp is not installed. - Run the test matrix when the root pytest configuration changes; the cache warmer uses the same configuration. ## Validation - Warp-free tools tests: 29 passed - `uv run isaaclab -f` (cherry picked from commit 1c9ba90)
…port-7272-release-3.0.0
## Summary - make resolve_task_config and parse_env_cfg the task configuration composition boundary, with explicit programmatic overrides - remove late preset fallback handling from environments, simulation, launch scanning, camera validation, benchmarks, and RL summaries - require runtime consumers to receive concrete physics, renderer, and camera configurations - route scripts, tools, integrations, and relevant tests through registered task composition This is a separate follow-up to isaac-sim#7301; it does not mix the earlier preset ownership cleanup into this PR. ## Validation - 129 Hydra and Shadow Hand camera tests passed - 31 benchmark capture and RL entrypoint tests passed - 23 experimental frontend tests passed, 1 skipped - 5 custom-coupling tests passed - representative composition audit confirmed six task trees contain no remaining PresetCfg nodes - Python compile checks passed for all changed runtime and script paths - ruff and ruff-format passed The full format command passes every hook except the changelog comparison, which uses the stale local origin/develop ref and flags six pre-existing upstream fragments that this branch does not modify. This PR includes all required package fragments. (cherry picked from commit 393fc37)
Description
Backports six merged PRs to
release/3.0.0as separate provenance-preserving cherry-picks:0081477fea2c9fc19974769f65e3d4fd2cce8acd84e13fcc9c6b82499d58d3d3c46aad90be0ae9a786cc028a1c9ba908cf1a2dc8ce948e393fc37d2b0249a5cb97d8#7272 forwards the validated
uniform,log_uniform, orgaussiandistribution through both scene-wide backend paths. Newton behavior is unchanged.#7121 makes factory resolution fall back to Newton when no
SimulationContextexists while retaining the visualizer contract of reporting no active backend before context creation.#7183 is documentation-only. #7306 and #7305 change test infrastructure only; they do not change runtime behavior.
#7303 makes
resolve_task_configandparse_env_cfgthe task-composition boundary. Runtime consumers now require concrete physics, renderer, and camera configurations and no longer attempt late preset fallback after Hydra composition.The branch was synchronized with the current
release/3.0.0tip containing #7301 before #7303 was applied. All six source cherry-picks applied without conflicts. A file-by-file existence, mode, and blob audit confirmed that every #7303 path matches its merged source commit exactly.Validation
#7272
release/3.0.0tip — both PhysX and OvPhysX cases failed as expected.uv run --extra test --frozen python -m pytest -q source/isaaclab/test/envs/test_gravity_randomization.py source/isaaclab/test/envs/test_mdp_event_selectors.py— 7 passed.uv run --extra test --extra ovphysx --frozen python -m pytest -q source/isaaclab_ov/test/physics/test_ovphysx_gravity.py— 1 passed.#7121
NoneType.physics_managerfailure.uv run --extra test --frozen python -m pytest -q source/isaaclab/test/utils/test_backend_utils.py source/isaaclab/test/visualizers/test_visualizer.py— 18 passed.#7183
uv run --frozen --extra test python -m pytest --noconftest -q tools/test/test_environ_docs.py— 26 passed.#7306
#7305
conftest.pysuccessfully with Warp unavailable.wp.config.enable_backward is False.#7303
Repository gates
git diff --check upstream/release/3.0.0...HEAD— passed.