Skip to content

Add the Newton 1.5.2 conformance runner, report and collision-variant tool - #2

Open
joocjun wants to merge 1 commit into
mainfrom
rlwrld/newton-conformance
Open

joocjun wants to merge 1 commit into
mainfrom
rlwrld/newton-conformance

Conversation

@joocjun

@joocjun joocjun commented Sep 16, 2026

Copy link
Copy Markdown
Collaborator

Why

The SimReady runtime tests (FET003 drops, FET005 grasp-and-lift) exist for Isaac Sim / PhysX only. DexBench also runs its scenes on Newton, and a package that passes Prop-Robotics-Neutral 2.0.0 and the PhysX grasp-and-lift can still be unusable there: MuJoCo-Warp collides every mesh as one 64-vertex convex hull, so a bowl is a lid, a convexDecomposition depends on CoACD at every load, and a planar piece is refused. We needed the same three runtime tests on Newton, for all 171 handled props, to know which packages hold and what the engine needs from an asset that PhysX did not.

godmiddag_bowl_16 with the package colliders (one hull): the pads close inside the "lid" and tip the bowl the same bowl with its Newton collision variant: pinched at the rim, lifted, shaken, set down

What

nv_core/testing_tools/rlwrld-newton-conformance/:

  • newton15_cert.py: mirrors parse, ground drop (1 cm), slope drop (15°, walled) and grasp-and-lift (two-pad gantry on the authored grasp_identifier_01: close, lift, hold 1 s, shake 1 cm at 2 Hz, hold, open) on the standalone Newton 1.5.2 wheel. Verdict wording follows NVIDIA's so results compare line by line. Every asset runs in its own subprocess.
  • newton15_cert_report.py: the comparison report against the PhysX verdicts.
  • make_newton_variant.py (+ rlwrld_sidecar.py): authors usd/variants/<name>_newton.usd inside a package, a flattened copy whose sdf, convexDecomposition and unauthored mesh colliders become pre-decomposed convex pieces (CoACD, ≤ 32 hulls per collider, ≤ 64 vertices per hull, pieces thinner than 1 mm extruded to 1 mm), parsed back through Newton's importer before acceptance.
  • examples/: grasp-and-deform demos for tetrahedral fruit and a cloth polybag on Newton's VBD solver, assets SimReady has no runtime test for.

Results on the 171 handled props (2026-09-16)

test pass fail
parse (Newton importer) 171 0
ground drop 171 0
slope drop 170 1
grasp-and-lift, line on the body, tuned contacts 152 19
grasp-and-lift, stock Newton contact settings 0 171

The 19 grasp failures were almost all colliders. With the variants (85 packages, 2460 pieces) the bowls, plates and the dragon cutlery hold, grasp holds go from 74 to 79 of the 85, and the importer replaces or thickens nothing (before: 87 colliders replaced, 1002 pieces thickened).

dragon_spoon_19cm on its hull: the pads close on nothing with the variant: held through the shake
harmynta_deep_plate_22 on its hull: dropped at lift with the variant: held
ikea_365_bowl_rounded_16 hull, then variant hex_nut_m20 variant, 32 pieces sus304_flat_bar: a 3 mm sheet no engine's pads can pinch

What Newton needs that PhysX did not

Every mesh collider becomes one convex hull; no zero-thickness pieces; CoACD at load for decompositions; mass-scaled contact stiffness (the stock settings hold 0 of 171 pinches, the runner uses solref 4 ms, elliptic cone, impratio 10, condim 4 on the pads); torsional friction off by default; soft contacts creep, so rest and hold checks need tolerances; authored poses are not always rest poses, so the line rides with the body; hulls cap at 64 vertices. And one importer issue: UsdPhysics.LoadUsdPhysicsFromRange corrupts the heap in about one load of four on a body with many collision prims; the runner sets PXR_WORK_THREAD_LIMIT=1 before opening a stage.

Deformables

apple plum polybag with cotton

What it is not

Not an engine plugin for simready-benchmark but a standalone runner that mirrors the tests' procedure so verdicts can be compared, and not a SimReady requirement: a package's profile pass stays a PhysX/Kit statement, and the Newton verdicts are recorded beside it. Full write-up: docs/rlwrld/newton_conformance.md.

… tool

SimReady's runtime tests exist for Isaac Sim / PhysX only. This adds a
standalone runner that mirrors parse, ground drop, slope drop and the
grasp-and-lift on the Newton 1.5.2 wheel (MuJoCo-Warp), a report that
compares its verdicts with PhysX line by line, and a tool that authors a
Newton collision layer inside a package (pre-decomposed convex pieces with
a 1 mm thickness floor) for the colliders the importer cannot honour, plus
two soft-body grasp examples for deformable packages.

On 171 handled props: all parse and survive both drops; 152 hold the
grasp on the body line with tuned contact settings, 0 with the stock ones.
The failures are colliders: MuJoCo-Warp reduces every mesh collider to a
64-vertex hull, so a bowl is a lid. With the variants (85 packages) the
bowls, plates and cutlery hold, 74 -> 79 grasps, nothing replaced or
thickened by the importer. Findings and frame strips in
docs/rlwrld/newton_conformance.md; the runner single-threads USD's work
pool because LoadUsdPhysicsFromRange races on many-collider bodies.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant