Skip to content

Adds heterogeneous dexsuite to Newton backend#5024

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

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

Conversation

@ooctipus
Copy link
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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?

@ooctipus ooctipus force-pushed the feature/heterogeneous_dexsuite branch from 05658fb to 2f29829 Compare March 23, 2026 22:53
ClawLabby pushed a commit to ClawLabby/IsaacLab that referenced this pull request Apr 1, 2026
- Switch to MeshCuboidCfg/MeshSphereCfg/MeshCapsuleCfg/MeshConeCfg for multi-asset
- Enable Newton heterogeneous objects (PR isaac-sim#5024 support)
- Set use_mujoco_contacts=False (Newton collision pipeline, avoids mjWarp normal inversion)
- Add default_body_armature=0.001 for Newton model building stability
- Reduce env_spacing to 2.0
- Add contact_offset=0.002 for object collision props
- Lower ground plane by 0.01 to prevent contact artifacts
@kellyguo11 kellyguo11 moved this to In review in Isaac Lab Apr 17, 2026
ClawLabby pushed a commit to ClawLabby/IsaacLab that referenced this pull request Apr 18, 2026
- Switch to MeshCuboidCfg/MeshSphereCfg/MeshCapsuleCfg/MeshConeCfg for multi-asset
- Enable Newton heterogeneous objects (PR isaac-sim#5024 support)
- Set use_mujoco_contacts=False (Newton collision pipeline, avoids mjWarp normal inversion)
- Add default_body_armature=0.001 for Newton model building stability
- Reduce env_spacing to 2.0
- Add contact_offset=0.002 for object collision props
- Lower ground plane by 0.01 to prevent contact artifacts
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

Status: In review

Development

Successfully merging this pull request may close these issues.

3 participants