[Docs] Move Newton out of experimental and add physical-backends hub#5637
Conversation
Adds a new docs/source/overview/core-concepts/backends/ hub with per-backend sub-pages and a feature-support matrix, addressing IsaacLab-Internal#876. Newton: the existing newton-physics-integration content moves wholesale from experimental-features/ to backends/newton/. The intro is reframed from "experimental feature branch" to "beta backend" and the relative literalinclude path in using-kamino.rst is fixed for the new depth. PhysX: new full page set (index, installation, configuration, supported-features) modeled on the Newton structure, covering PhysxCfg parameters and the common GPU buffer tuning knobs. OvPhysX: short stub flagged as highly experimental with pointers to the in-flight integration PRs (isaac-sim#5426, isaac-sim#5459). The page will be expanded once those land. Cross-references in features/visualization.rst, overview/reinforcement-learning/rl_existing_scripts.rst, and multi_backend_architecture.rst are updated to the new paths. The Experimental Features toctree now contains only bleeding-edge.
Refer to issue isaac-sim#5634 from the OvPhysX backend stub so readers can follow the doc-expansion work scheduled to happen once the in-flight OvPhysX integration PRs land.
Verification agents flagged five issues against the previous two commits and one issue-isaac-sim#876 gap that the first pass missed. 1. Newton using-kamino.rst literalinclude path was one level short (../../../../../ → ../../../../../../). The previous depth resolved to a non-existent /docs/source/isaaclab_tasks/... and would have broken the sphinx build. 2. PhysX supported-features.rst listed Ray Caster, Visuo-tactile, and Camera as PhysX-specific sensors. Ray Caster and Camera are implemented in isaaclab core (backend-agnostic); Visuo-tactile lives in isaaclab_contrib. Reframe the section to separate PhysX-implemented sensors from backend-agnostic ones. Drop the unverifiable "path-traced" qualifier on the RTX renderer claim. 3. OvPhysX stub referenced only PR isaac-sim#5426 and PR isaac-sim#5459. The actual in-flight set spans six PRs: isaac-sim#5426 (merged), isaac-sim#5459, isaac-sim#5422, isaac-sim#5421, isaac-sim#5570, isaac-sim#5589. List them all with merge state, and reword "primary covered surfaces" to reflect that most are still open PRs. 4. backends/index.rst feature matrix said OvPhysX sensor coverage was "Partial" — actually only RigidObject is merged. Replace the matrix rows with concrete "In-flight (PR #...)" / "Not yet" cells. 5. Issue isaac-sim#876 asked to "review the limitations list and update it." The previous pass only reworded the intro. Refresh the task list against develop's actual newton_mjwarp coverage, add Shadow Hand / Shadow Hand Over / cabinet / dexsuite / rough-terrain locomotion, and replace the rigid bullet list with a discovery recipe so the list stops bit-rotting.
Tidies up the Newton subdir layout so file names mirror the PhysX subdir and the per-solver split asked for in isaac-sim#876. * solver-transitioning.rst → mjwarp-solver.rst Retitled "MJWarp Solver"; intro rewritten as a solver doc (no longer framed as a PhysX→Newton transition). * using-kamino.rst → kamino-solver.rst Retitled "Kamino Solver". Label renamed from `newton-using-kamino` to `newton-kamino-solver` to match the new file name. * limitations-and-known-bugs.rst → supported-features.rst Retitled "Supported Features" to mirror PhysX's same-named page. Newton index toctree updated, and the doc/ref cross-references in supported-features.rst and the Newton index updated to the new names.
Renames docs/source/overview/core-concepts/backends/ to physical-backends/ for clarity: distinguishes physics-engine backends from other 'backend' notions in Isaac Lab (renderers, scene-data backend, etc.). Updates the toctree entry in core-concepts/index.rst plus the four external cross-references (multi_backend_architecture See-Also, features/visualization.rst, rl_existing_scripts.rst, and the top-level index).
New page physical-backends/solver-comparison.rst surfaces the user-visible behavioural differences between PhysX TGS, Newton MJWarp, and Newton Kamino. Most tasks share USD assets across backends, but friction model, contact resolution, restitution gating, constraint stabilization, CCD, and substepping all diverge enough that retuning is expected when porting. The page is organized as side-by-side tables per topic (friction, contact pipeline, restitution, stabilization, convergence, articulation coordinates, substepping, GPU buffers) plus a porting checklist for when moving a task across solvers. Each table cell references the concrete config attribute that controls the behavior, so readers can jump directly to the relevant tuning knob. Featherstone and XPBD Newton solvers exist in source/isaaclab_newton but are not yet wired into any Isaac Lab task; the page calls that out and omits them from the comparison. Linked from the physical-backends hub toctree.
There was a problem hiding this comment.
Documentation Review
This is a well-structured documentation PR that successfully reorganizes the physics backend documentation and addresses the requirements from issue #876.
✅ Strengths
Structure and Organization
- Excellent choice of
physical-backends/directory name to distinguish from other "backend" concepts (renderers, scene-data) - Per-backend subdirectories (
physx/,newton/,ovphysx/) with consistent page structure - Proper toctree entries added to
core-concepts/index.rst - Newton appropriately reframed from "experimental feature branch" to "beta backend"
Content Quality
- Feature Support Matrix in
index.rstprovides clear at-a-glance comparison - New
solver-comparison.rstis comprehensive — covers friction, contact, restitution, stabilization, convergence, articulation coordinates, substepping, and GPU buffers with a practical porting checklist - PhysX documentation fills a previous gap (configuration.rst, supported-features.rst)
- Newton's supported-features.rst includes the discovery recipe (
grep -rln newton_mjwarp) which prevents the list from bit-rotting
Cross-References
- All updated cross-references in
visualization.rst,rl_existing_scripts.rst, andmulti_backend_architecture.rstuse correct paths - The literalinclude path fix in
kamino-solver.rst(6 levels up from new location) is correct - Label rename
newton-using-kamino→newton-kamino-solverproperly applied
⚠️ Minor Observations
-
Unverifiable internal references: Several
:doc:and:ref:targets reference pages/labels that should exist ondevelopbut aren't in this diff — the CI "Check for Broken Links" pass suggests these are valid:../../schema_cfgs../../sensors/camera:ref:\hydra-backend-solver-presets``:ref:\isaaclab-installation-root``
-
OvPhysX PR tracking: The in-flight PR list in
ovphysx/index.rstis comprehensive (#5421, #5422, #5426, #5459, #5570, #5589) with merge states noted — this will need periodic updates as PRs land, but the tracking issue (#5634) link provides the follow-up path.
CI Status
- ✅ pre-commit: pass
- ✅ Check for Broken Links: pass
- ✅ labeler: pass
- ⏳ Build Latest Docs: pending (standard for docs PRs)
Verdict
LGTM — This is a thorough documentation restructure that improves discoverability of backend information and properly addresses #876. The structure is maintainable and the content is accurate.
Automated review by Isaac Lab Review Bot
Greptile SummaryThis PR moves Newton's physics-integration docs out of
Confidence Score: 4/5Documentation-only restructure; safe to merge with one factual inconsistency to fix first. The hub feature matrix and the Newton detail page give contradictory information about Ray Caster support — the matrix marks it Yes for Newton but the Newton supported-features.rst sensor list omits it entirely. A user landing on the detail page gets the wrong picture. Everything else — renamed files, updated cross-references, new PhysX pages, solver-comparison table, and literalinclude path corrections — is accurate and well-executed. newton/supported-features.rst (Ray Caster omission) and physx/configuration.rst (softened wording for enable_stabilization contact-sensor impact) Important Files Changed
|
| * ``enable_stabilization``: extra solver stabilization pass; recommended only | ||
| when ``dt`` is large (< 30 Hz). May affect contact-sensor force reports. |
There was a problem hiding this comment.
Inconsistent severity for
enable_stabilization contact-sensor impact
The physx/supported-features.rst in this same PR says enable_stabilization "can corrupt contact-force readings" — a concrete breakage. This page softens it to "may affect contact-sensor force reports," which understates the risk for anyone who misses the stronger wording in the other file.
| * ``enable_stabilization``: extra solver stabilization pass; recommended only | |
| when ``dt`` is large (< 30 Hz). May affect contact-sensor force reports. | |
| * ``enable_stabilization``: extra solver stabilization pass; recommended only | |
| when ``dt`` is large (< 30 Hz). Corrupts contact-sensor force-magnitude | |
| readings — disable it if you rely on the contact sensor for force observations. |
| Supported Surface | ||
| ----------------- |
There was a problem hiding this comment.
Unusual section heading "Supported Surface"
"Supported Surface" reads as an incomplete phrase (short for "API surface"). Standard Isaac Lab docs use "Supported Features" or "Supported APIs" for this kind of inventory section; aligning here keeps the page skimmable alongside the PhysX equivalent.
| Supported Surface | |
| ----------------- | |
| Supported APIs | |
| -------------- |
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!
There was a problem hiding this comment.
Documentation Review: Physical Backends Restructure
This PR delivers an excellent restructuring of the physics backend documentation, addressing issue #876 comprehensively. The changes move Newton from experimental status to a first-class backend with its own documentation hub alongside PhysX and the new OvPhysX stub.
✅ Strengths
Structure & Organization
- Clean parallel structure across all three backends (PhysX, Newton, OvPhysX)
- Logical progression from hub page → backend-specific pages → solver-specific pages
- The
solver-comparison.rstpage is particularly valuable for users porting tasks between backends
Technical Accuracy
- Feature support matrix accurately reflects current state with appropriate "In-flight (PR #...)" annotations for OvPhysX
- Solver behavioral differences (friction models, contact handling, convergence) are well-documented with concrete config attribute references
- The porting checklist in
solver-comparison.rstprovides actionable guidance
Cross-Reference Hygiene
- All old paths (
experimental-features/newton-physics-integration/) properly updated to new locations - RST label
newton-using-kaminocorrectly renamed tonewton-kamino-solver - The
literalincludepath inkamino-solver.rstcorrectly updated for new directory depth
CI Validation
pre-commitpassesCheck for Broken Linkspasses (validates cross-references)Check changelog fragmentspasses (docs-only, no fragment required per precedent)
📋 Minor Suggestions (Non-blocking)
-
physx/supported-features.rstline 38: The Camera doc reference:doc:\../../sensors/camera`` will work, but consider adding a brief inline description of what's covered there for users scanning quickly. -
physical-backends/index.rstFeature Matrix: The matrix references a "limitations" page for each backend, but Newton uses "supported-features.rst" instead. Consider consistent naming or updating the matrix text. -
Future consideration: Once the "Build Latest Docs" CI job completes successfully, the rendered pages should be spot-checked to ensure the toctree hierarchy renders as expected.
🔍 Verification Summary
| Check | Status |
|---|---|
| Cross-references updated | ✅ |
| Literalinclude paths correct | ✅ |
| RST labels consistent | ✅ |
| Toctrees complete | ✅ |
| Feature matrix accurate | ✅ |
| Solver comparison thorough | ✅ |
| No orphaned files | ✅ |
Well-structured documentation reorganization that significantly improves the discoverability and completeness of physics backend information. The solver comparison page alone is a valuable addition for the Isaac Lab user community.
Resolve conflicts created by the docs reshuffle: * Drop newton-physics-integration toctree entry from docs/index.rst; keep the new visuo_tactile_sensor entry added on develop. * Drop stale experimental-features/newton-physics-integration/index.rst (replaced by physical-backends/newton/). * Move warp-environments.rst and warp-env-migration.rst from develop into physical-backends/newton/ and register them in the new newton index. * Retarget rl_existing_scripts note to the new Newton landing page. * Fix warp-environments cross-ref limitations-and-known-bugs -> supported-features after the rename.
* Newton supported-features.rst: rename "Supported Surface" -> "Supported APIs" for symmetry with the PhysX page, and add Ray Caster/Camera to the backend-agnostic sensor block so the page matches the hub feature matrix. * PhysX configuration.rst: align the enable_stabilization caveat with supported-features.rst — flag it as corrupting contact-sensor force-magnitude readings rather than softening to "may affect".
There was a problem hiding this comment.
Updated Review: Post-Merge & Greptile Fixes
The PR has been updated since my previous review (85dffc53 → b2c12f80) with two commits:
1. Merge from develop (32fe6da)
Conflict resolution successfully integrated the new warp environment documentation (warp-environments.rst, warp-env-migration.rst) into the new physical-backends/newton/ structure:
- ✅ Warp env docs moved from
experimental-features/to the Newton backend subdirectory - ✅ Newton index toctree updated to include warp env pages
- ✅ Cross-reference in
warp-environments.rstupdated fromlimitations-and-known-bugs→supported-features - ✅
rl_existing_scripts.rstnote retargeted to the new Newton landing page
2. Greptile Review Fixes (b2c12f8)
Addressed prior review feedback:
- Newton
supported-features.rst: Renamed "Supported Surface" → "Supported APIs" for symmetry with the PhysX page - Newton
supported-features.rst: Added Ray Caster and Camera to the backend-agnostic sensor block for consistency with the hub feature matrix - PhysX
configuration.rst: Aligned theenable_stabilizationcaveat wording withsupported-features.rst(now explicitly states it "corrupts contact-sensor force-magnitude readings")
Verification Summary
| Check | Status |
|---|---|
| Merge conflicts resolved correctly | ✅ |
| Warp env docs integrated into Newton structure | ✅ |
| Cross-references updated post-merge | ✅ |
| Greptile suggestions addressed | ✅ |
pre-commit passes |
✅ |
Check for Broken Links CI passes |
✅ |
Changes look good. The merge was handled cleanly and the greptile fixes improve consistency across the PhysX and Newton documentation pages.
Description
Restructures the physics-backend documentation to give each backend a first-class home and to add the cross-backend orientation pages asked for in isaac-sim/IsaacLab-Internal#876.
Structure
Highlights
experimental-features/viagit mv; framing changes from "experimental feature branch" to "beta backend." The Experimental Features toctree now contains onlybleeding-edge.mjwarp-solver,kamino-solver) replace the oldsolver-transitioning/using-kaminofiles, matching Fixes comment in run_articulation.py #876's "sub-sections for the Newton solvers" ask.isaaclab_physx.physics.PhysxCfg, mirroring the Newton structure.solver-comparison.rstcovers friction, contact pipeline, restitution, stabilization, convergence, articulation coordinates, substepping, and GPU buffers across PhysX TGS, Newton MJWarp, and Newton Kamino. Each cell points at the concrete config attribute that controls the behavior, with a porting checklist at the end.supported-features.rstlist refreshed againstdevelop's actualnewton_mjwarpcoverage (adds Shadow Hand, Shadow Hand Over, cabinet, dexsuite, rough-terrain locomotion). Replaces the bit-rotting bullet list with a discovery recipe (grep -rln newton_mjwarp source/isaaclab_tasks/).docs/index.rst,core-concepts/index.rst,multi_backend_architecture.rst,features/visualization.rst, andoverview/reinforcement-learning/rl_existing_scripts.rst.Fixes isaac-sim/IsaacLab-Internal#876
Type of change
Screenshots
N/A — docs-only restructure. New page tree visible from the table-of-contents in
core-concepts/.Checklist
pre-commitchecks with./isaaclab.sh --formatsource/<pkg>/changelog.d/for every touched package (N/A — docs-only; matches precedent of Fix leapp docs #5512 and 4aeb4d6 which shipped without fragments)CONTRIBUTORS.mdor my name already exists there