Skip to content

[Docs] Move Newton out of experimental and add physical-backends hub#5637

Merged
AntoineRichard merged 8 commits into
isaac-sim:developfrom
AntoineRichard:antoiner/docs-backend-pages
May 19, 2026
Merged

[Docs] Move Newton out of experimental and add physical-backends hub#5637
AntoineRichard merged 8 commits into
isaac-sim:developfrom
AntoineRichard:antoiner/docs-backend-pages

Conversation

@AntoineRichard

Copy link
Copy Markdown
Collaborator

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

docs/source/overview/core-concepts/physical-backends/
├── index.rst                 ← user-facing hub + feature-support matrix
├── solver-comparison.rst     ← cross-backend behavioural differences
├── physx/
│   ├── index.rst
│   ├── installation.rst
│   ├── configuration.rst     ← PhysxCfg tuning knobs
│   └── supported-features.rst
├── newton/
│   ├── index.rst
│   ├── installation.rst
│   ├── supported-features.rst   (was experimental-features/.../limitations-and-known-bugs.rst)
│   ├── mjwarp-solver.rst        (was experimental-features/.../solver-transitioning.rst)
│   └── kamino-solver.rst        (was experimental-features/.../using-kamino.rst)
└── ovphysx/
    └── index.rst             ← stub flagged as highly experimental; tracking issue #5634

Highlights

Fixes isaac-sim/IsaacLab-Internal#876

Type of change

  • Documentation update

Screenshots

N/A — docs-only restructure. New page tree visible from the table-of-contents in core-concepts/.

Checklist

  • I have read and understood the contribution guidelines
  • I have run the pre-commit checks with ./isaaclab.sh --format
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works (N/A — docs-only)
  • I have added a changelog fragment under source/<pkg>/changelog.d/ for every touched package (N/A — docs-only; matches precedent of Fix leapp docs #5512 and 4aeb4d6 which shipped without fragments)
  • I have added my name to the CONTRIBUTORS.md or my name already exists there

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.
@github-actions github-actions Bot added the documentation Improvements or additions to documentation label May 15, 2026

@isaaclab-review-bot isaaclab-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.rst provides clear at-a-glance comparison
  • New solver-comparison.rst is 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, and multi_backend_architecture.rst use correct paths
  • The literalinclude path fix in kamino-solver.rst (6 levels up from new location) is correct
  • Label rename newton-using-kaminonewton-kamino-solver properly applied

⚠️ Minor Observations

  1. Unverifiable internal references: Several :doc: and :ref: targets reference pages/labels that should exist on develop but 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``
  2. OvPhysX PR tracking: The in-flight PR list in ovphysx/index.rst is 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-apps

greptile-apps Bot commented May 15, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR moves Newton's physics-integration docs out of experimental-features/ and adds a new physical-backends/ hub under core-concepts/, giving PhysX, Newton, and OvPhysX first-class, symmetrical home pages. The old experimental-features/newton-physics-integration/ subtree is cleanly removed and all cross-references across docs/index.rst, multi_backend_architecture.rst, visualization.rst, and rl_existing_scripts.rst are updated.

  • New hub page (physical-backends/index.rst) provides a feature-support matrix and backend-selection guide; Newton and OvPhysX each get dedicated sub-directories matching the new PhysX structure.
  • New PhysX pages (configuration.rst, supported-features.rst, installation.rst) mirror the Newton structure and document PhysxCfg tuning knobs.
  • New solver-comparison.rst covers friction, contact, restitution, stabilization, convergence, articulation coordinates, substepping, and GPU buffers side-by-side, with a concrete porting checklist.
  • Newton supported-features.rst refreshes the old limitations-and-known-bugs list with newly validated tasks (Shadow Hand, rough-terrain locomotion, cabinet, dexsuite) and replaces the static bullet list with a grep discovery recipe.

Confidence Score: 4/5

Documentation-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

Filename Overview
docs/source/overview/core-concepts/physical-backends/index.rst New hub page with feature-support matrix; matrix lists Ray Caster as Newton-supported but the Newton sub-page omits it from the sensor list
docs/source/overview/core-concepts/physical-backends/newton/supported-features.rst New supported-features page replacing limitations-and-known-bugs; sensor list omits Ray Caster which is claimed as supported in the hub matrix
docs/source/overview/core-concepts/physical-backends/solver-comparison.rst New cross-backend porting reference covering friction, contact, restitution, stabilization, convergence, articulation coords, substepping, and GPU buffers; accurate and well-structured
docs/source/overview/core-concepts/physical-backends/physx/configuration.rst New PhysX configuration reference; enable_stabilization severity described inconsistently ("may affect" here vs "can corrupt" in supported-features.rst)
docs/source/overview/core-concepts/physical-backends/newton/kamino-solver.rst Renamed from using-kamino.rst; literalinclude path updated with correct number of parent-directory traversals for the new location
docs/source/overview/core-concepts/physical-backends/ovphysx/index.rst New stub page for the highly-experimental OvPhysX backend; clearly gated with a warning and linked to tracking issue #5634

Comments Outside Diff (1)

  1. docs/source/overview/core-concepts/physical-backends/newton/supported-features.rst, line 463-466 (link)

    P1 Ray Caster missing from Newton sensor list

    The hub physical-backends/index.rst feature matrix marks "Frame Transformer / Ray Caster / PVA / Joint-Wrench Sensor = Yes" for Newton, but this page's sensor list omits Ray Caster. The PhysX supported-features.rst explains that Ray Caster is "backend-agnostic (implemented in isaaclab core)", which is why it works with Newton — but that context is absent here. A reader coming directly to the Newton page will incorrectly conclude Ray Caster is unsupported, contradicting the hub matrix.

Reviews (1): Last reviewed commit: "Add cross-backend solver comparison page" | Re-trigger Greptile

Comment on lines +67 to +68
* ``enable_stabilization``: extra solver stabilization pass; recommended only
when ``dt`` is large (< 30 Hz). May affect contact-sensor force reports.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 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.

Suggested change
* ``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.

Comment on lines +25 to +26
Supported Surface
-----------------

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 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.

Suggested change
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!

@isaaclab-review-bot isaaclab-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.rst page 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.rst provides actionable guidance

Cross-Reference Hygiene

  • All old paths (experimental-features/newton-physics-integration/) properly updated to new locations
  • RST label newton-using-kamino correctly renamed to newton-kamino-solver
  • The literalinclude path in kamino-solver.rst correctly updated for new directory depth

CI Validation

  • pre-commit passes
  • Check for Broken Links passes (validates cross-references)
  • Check changelog fragments passes (docs-only, no fragment required per precedent)

📋 Minor Suggestions (Non-blocking)

  1. physx/supported-features.rst line 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.

  2. physical-backends/index.rst Feature 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.

  3. 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".

@isaaclab-review-bot isaaclab-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated Review: Post-Merge & Greptile Fixes

The PR has been updated since my previous review (85dffc53b2c12f80) 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.rst updated from limitations-and-known-bugssupported-features
  • rl_existing_scripts.rst note 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 the enable_stabilization caveat wording with supported-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.

@AntoineRichard AntoineRichard merged commit dded726 into isaac-sim:develop May 19, 2026
39 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant