Skip to content

Add backend-agnostic deformable pick-and-place#922

Draft
TuurStuyck wants to merge 5 commits into
mainfrom
tstuyck/feature/deformable-pick-place
Draft

Add backend-agnostic deformable pick-and-place#922
TuurStuyck wants to merge 5 commits into
mainfrom
tstuyck/feature/deformable-pick-place

Conversation

@TuurStuyck

@TuurStuyck TuurStuyck commented Jul 17, 2026

Copy link
Copy Markdown
Collaborator

Summary

Deformable pick-and-place, backend/variant-agnostic

Detailed description

  • Adds a deformable (FEM soft-body) pick-and-place task on the Newton VBD backend: pre-tetrahedralized sphere/cube assets, nodal-state reset events, centroid-based success/drop, and a registered maple-table environment.
  • Introduces a physics-preset registry (physics_presets.py) as the single source of truth (backend, config, soft-body capability, replicate_physics) and a backend-neutral deformable spawn adapter (deformable_spawn.py) — the only place naming PhysX/Newton cfg classes. Adding a new Newton solver variant is one registry entry.
  • Reparents DeformableObject onto a cfg-agnostic ObjectBase (new SpawnableObjectBase holds the rigid machinery), so deformables are a clean peer of rigid objects rather than a special case.
  • Selects the physics backend by asset capability (requires_soft_body_solver()) and registry metadata instead of ObjectType/name checks, and unifies the deformable terminations with the rigid predicate layer.
  • No consumer (builder, predicates, scene, placement, asset base) names a backend, variant, or ObjectType.DEFORMABLE; verified by tests (registry drift/metadata, per-object spawn numeric-equivalence, hierarchy, builder matrix) and the end-to-end Newton smoke test.

Introduce a deformable (FEM soft-body) pick-and-place task on the Newton VBD
backend: pre-tetrahedralized sphere/cube TetMesh assets and their generator,
nodal-state reset events, centroid-based success/drop, and a registered
maple-table environment. Enable the Newton path for the DROID gripper (Robotiq
collision meshes) and GR1T2 (Isaac Sim 6 URDF export), and wire deformable
support through the scene, placement, and relation-solver interfaces.

Signed-off-by: tstuyck <tstuyck@nvidia.com>
Introduce physics_presets.py as the single source of truth mapping each preset
to its backend, config, soft-body capability, and replicate_physics policy, and
generate ArenaPhysicsCfg from it. Add deformable_spawn.py: a backend-neutral
DeformableMaterial and a single build_deformable_spawn adapter (the only place
naming PhysX/Newton deformable cfg classes), plus backend_object_preset which
fans one per-backend spawn builder across every registry variant. Adding a new
Newton solver variant is now one registry entry.

Signed-off-by: tstuyck <tstuyck@nvidia.com>
Split the rigid-shaped machinery out of ObjectBase into a new
SpawnableObjectBase (parent of Object/ObjectReference) so ObjectBase only
declares the config- and pose-accessor contract. Reparent DeformableObject as a
peer that provides its own hooks and is declared backend-neutrally (usd_path +
DeformableMaterial), and shrink the procedural sphere/cube library objects to
neutral material declarations naming no backend or preset.

Signed-off-by: tstuyck <tstuyck@nvidia.com>
Replace the ObjectType.DEFORMABLE scan and newton-name string checks in the env
builder with registry-driven queries: requires_soft_body_solver() on the asset
plus the preset registry's soft-body and replicate_physics metadata. The builder
no longer names any backend, variant, or object type.

Signed-off-by: tstuyck <tstuyck@nvidia.com>
Make the predicate pose/velocity accessors dispatch on asset type so they work
for rigid and deformable objects alike, add a velocity gate to
objects_in_proximity and an object_is_below_height predicate, and repoint the
deformable task at them. Removes the bespoke deformable-centroid termination
functions.

Signed-off-by: tstuyck <tstuyck@nvidia.com>
@TuurStuyck
TuurStuyck force-pushed the tstuyck/feature/deformable-pick-place branch from dd30a52 to 0a8dff1 Compare July 24, 2026 22:45
@TuurStuyck TuurStuyck changed the title Add deformable pick-and-place task Add backend-agnostic deformable pick-and-place Jul 24, 2026
@TuurStuyck
TuurStuyck changed the base branch from alex/feature/upgrade_lab_to_beta2 to main July 24, 2026 22:46
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