Skip to content

Adds heterogeneous dexsuite to Newton backend#5024

Open
ooctipus wants to merge 8 commits intoisaac-sim:developfrom
ooctipus:feature/heterogeneous_dexsuite
Open

Adds heterogeneous dexsuite to Newton backend#5024
ooctipus wants to merge 8 commits intoisaac-sim:developfrom
ooctipus:feature/heterogeneous_dexsuite

Conversation

@ooctipus
Copy link
Collaborator

Description

This PR enables heterogeneous dexsuite with newton backend

Fixes # (issue)

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (existing functionality will not work without user modification)
  • Documentation update

Screenshots

Please attach before and after screenshots of the change if applicable.

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
  • I have updated the changelog and the corresponding version in the extension's config/extension.toml file
  • I have added my name to the CONTRIBUTORS.md or my name already exists there

@ooctipus ooctipus requested a review from Mayankm96 as a code owner March 14, 2026 06:15
@github-actions github-actions bot added enhancement New feature or request isaac-lab Related to Isaac Lab team labels Mar 14, 2026
@greptile-apps
Copy link
Contributor

greptile-apps bot commented Mar 14, 2026

Greptile Summary

This PR enables heterogeneous dexsuite (multi-asset object spawning) with the Newton physics backend. It switches shape primitives from ShapeCfg variants (CuboidCfg, SphereCfg, CapsuleCfg, ConeCfg) to MeshCfg variants (MeshCuboidCfg, MeshSphereCfg, MeshCapsuleCfg, MeshConeCfg) for Newton compatibility, tunes solver parameters, adds body armature to the Newton ModelBuilder, and removes the validation guard that previously blocked Newton + multi-asset configurations.

  • Newton cloner: Adds default_body_armature = 0.001 to both the global and per-prototype ModelBuilder and reorders imports
  • Dexsuite env config: Replaces Shape primitives with Mesh equivalents, adds collision_props with contact_offset=0.002, lowers ground plane by 1cm, reduces env_spacing from 3 to 2.0, and removes the Newton multi-asset validation error
  • Kuka Allegro config: Increases nconmax (70→200), switches use_mujoco_contacts to False, reduces env_spacing
  • Issue found: The object_physics_material EventTerm field was renamed to OBJECT_PHYSICS_material, which breaks the project's snake_case naming convention and could break downstream curriculum configurations that reference the field by name

Confidence Score: 3/5

  • PR is mostly safe but contains a field rename that breaks naming conventions and may break curriculum references
  • The core physics changes (Mesh primitives, armature, solver tuning) appear correct and well-motivated. However, the rename of object_physics_material to OBJECT_PHYSICS_material is a naming convention violation that could silently break curriculum configurations referencing the old field name. The removal of the Newton multi-asset validation guard is intentional per the PR's purpose.
  • Pay close attention to source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/dexsuite/dexsuite_env_cfg.py — the OBJECT_PHYSICS_material rename needs to be reverted to object_physics_material

Important Files Changed

Filename Overview
source/isaaclab_newton/isaaclab_newton/cloner/newton_replicate.py Reorders imports and adds default_body_armature = 0.001 to both the global and per-prototype ModelBuilder instances. Changes are straightforward and consistent.
source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/dexsuite/config/kuka_allegro/dexsuite_kuka_allegro_env_cfg.py Tunes Newton solver parameters (nconmax 70→200, use_mujoco_contacts True→False) and reduces env_spacing from 3 to 2.0 for Newton backend compatibility.
source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/dexsuite/dexsuite_env_cfg.py Switches shape primitives from ShapeCfg (CuboidCfg, SphereCfg, etc.) to MeshCfg variants (MeshCuboidCfg, MeshSphereCfg, etc.) for Newton compatibility, adds collision_props/contact_offset, removes Newton multi-asset validation guard, and renames object_physics_material to OBJECT_PHYSICS_material which breaks naming conventions and may break curriculum references.
source/isaaclab_tasks/isaaclab_tasks/utils/presets.py Adds missing trailing newline required by pre-commit end-of-file-fixer hook. No functional change.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[DexsuiteReorientEnvCfg] -->|scene config| B[SceneCfg]
    B -->|object spawn| C[ObjectCfg / MultiAssetSpawnerCfg]
    C -->|"was: CuboidCfg, SphereCfg..."| D[ShapeCfg variants - Rigid only]
    C -->|"now: MeshCuboidCfg, MeshSphereCfg..."| E[MeshCfg variants - Newton compatible]
    E -->|collision_props + contact_offset| F[OBJECT_PHYSICS dict]
    
    A -->|physics config| G{Physics Backend?}
    G -->|PhysX| H[PhysxCfg]
    G -->|Newton| I[NewtonCfg]
    
    I -->|cloner| J[newton_replicate.py]
    J -->|ModelBuilder| K[default_body_armature = 0.001]
    J -->|per-prototype builder| K
    
    I -->|solver tuning| L[MJWarpSolverCfg]
    L -->|nconmax: 200| M[Increased contact capacity]
    L -->|use_mujoco_contacts: False| N[Disabled MuJoCo contacts]
    
    A -->|validate_config| O{Newton + MultiAsset?}
    O -->|"was: raise ValueError"| P[Blocked]
    O -->|"now: allowed"| Q[Heterogeneous spawn enabled]
Loading

Last reviewed commit: b99c260

)

object_physics_material = EventTerm(
OBJECT_PHYSICS_material = EventTerm(
Copy link
Contributor

Choose a reason for hiding this comment

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

Field name breaks naming convention

The rename from object_physics_material to OBJECT_PHYSICS_material deviates from the project's consistent snake_case convention for EventTerm field names. Every other similar field across the codebase (robot_physics_material, object_physics_material in inhand_env_cfg.py, shadow_hand_env_cfg.py, etc.) uses lowercase snake_case. The MIXED_CASE name also appears to be an unintentional collision with the new OBJECT_PHYSICS dict constant defined on line 40.

Additionally, the curriculum system references this field by name (e.g., "events.object_physics_material.func.material_buckets" in curriculums.py), so this rename could break downstream curriculum configurations that depend on the original name.

Suggested change
OBJECT_PHYSICS_material = EventTerm(
object_physics_material = EventTerm(

@AntoineRichard AntoineRichard changed the title Heterogeneous dexsuite in newton engine Adds heterogeneous dexsuite to Newton backend Mar 16, 2026
Copy link
Collaborator

@AntoineRichard AntoineRichard left a comment

Choose a reason for hiding this comment

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

LGTM. @ooctipus did you end-up trying Tobi's PR so that we don't have to offset the base?

Copy link
Collaborator

Choose a reason for hiding this comment

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

@ooctipus could you create an issue to Newton about these defaults?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

plane = AssetBaseCfg(
prim_path="/World/GroundPlane",
init_state=AssetBaseCfg.InitialStateCfg(),
init_state=AssetBaseCfg.InitialStateCfg(pos=(0.0, 0.0, -0.01)),
Copy link
Collaborator

Choose a reason for hiding this comment

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

The famous trick! Did you end-up trying Tobi's PR?

@AntoineRichard AntoineRichard force-pushed the feature/heterogeneous_dexsuite branch from 1827d85 to de9c7cb Compare March 16, 2026 15:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request isaac-lab Related to Isaac Lab team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants