Skip to content

[Task Clean-up][OVPhysX] Dexterous Part 7/11: Add OVPhysX presets to the dexterous tasks#6417

Open
hujc7 wants to merge 5 commits into
isaac-sim:developfrom
hujc7:jichuanh/task-cleanup-dex-part07
Open

[Task Clean-up][OVPhysX] Dexterous Part 7/11: Add OVPhysX presets to the dexterous tasks#6417
hujc7 wants to merge 5 commits into
isaac-sim:developfrom
hujc7:jichuanh/task-cleanup-dex-part07

Conversation

@hujc7

@hujc7 hujc7 commented Jul 8, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Adds OVPhysX physics presets to the Shadow Hand reorientation and handover environments (spawned without fixed-tendon overrides, which the OVPhysX runtime does not expose).
  • Fixes the Shadow Hand task frame on OVPhysX.
  • Ships preset-resolution acceptance tests for the Direct variants; the family-wide version covering the manager counterparts completes in Part 11.
  • Validated by full training runs on the OVPhysX backend; split out of the lumped validation branch [DO-NOT-MERGE][Task Clean-up] Dexterous: lumped validation branch (split into Parts 1-11) #6324 (Part 7 of 11).

Dependencies

Review updates (2026-07-09)

  • The Shadow/OpenAI Direct cfgs default their scalar fields from the per-variant task constants and promote shared scene/noise cfg objects to module scope, so the manager counterparts consume one source without instantiating a throwaway Direct cfg. The handover cfg carries the same treatment.

The Shadow Hand reorientation and handover environments gain OVPhysX
physics presets (spawned without fixed-tendon overrides, which the
OVPhysX runtime does not expose), and the Shadow Hand task frame is
corrected on OVPhysX.

Validated by full training runs on the OVPhysX backend.
@github-actions github-actions Bot added the isaac-lab Related to Isaac Lab team label Jul 8, 2026
@greptile-apps

greptile-apps Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR adds OVPhysX physics presets to the Shadow Hand reorientation and handover environments, and fixes the Shadow Hand task frame on OVPhysX by clearing fixed_tendons_props=None (since the OVPhysX runtime does not expose the fixed-tendon API). It also renames the distal-joint regex from J0J1 to match a new asset release, and ships acceptance tests for the Direct variants.

  • OVPhysX robot config is added to ShadowHandRobotCfg and _shadow_hand_cfg, spawning the same legacy PhysX USD but with fixed_tendons_props=None and the identity rotation; the corresponding OvPhysxCfg() is added to both PhysicsCfg classes.
  • Joint rename (robot0_(FF|MF|RF|LF)J0J1) corrects the Newton distal_passive actuator override to align with the current asset; docstrings are updated accordingly, though one module-level comment was missed.
  • Three new test files verify OVPhysX preset resolution across 15 env variants, pose consistency across backends, and the joint-name contract.

Confidence Score: 4/5

Safe to merge; the changes are additive config-only additions with no runtime logic changes, and training runs on the OVPhysX backend have been validated.

The only issue found is a single stale module-level comment in handover_env_cfg.py that still says J0 after the joint was renamed to J1 in both the code and the docstring. All OVPhysX preset additions are consistent: fixed_tendons_props is correctly cleared, rotations match the PhysX baseline, and joint_pos is preserved via SHADOW_HAND_CFG.init_state.replace(...) which carries {".*": 0.0}. The three new test files provide solid coverage across 15 env variants.

handover_env_cfg.py has the one stale comment; all other files are clean.

Important Files Changed

Filename Overview
source/isaaclab_tasks/isaaclab_tasks/core/handover/handover_env_cfg.py Adds OVPhysX robot and physics presets; renames distal-joint regex J0→J1 in Newton config. One module-level comment at line 131 still references J0 after the rename.
source/isaaclab_tasks/isaaclab_tasks/core/reorient/config/shadow_hand/shadow_hand_env_cfg.py Adds OVPhysX robot preset (fixed_tendons_props=None, identity rotation) and OvPhysxCfg to PhysicsCfg. Clean and consistent with the PhysX preset.
source/isaaclab_tasks/test/core/test_dexterous_ovphysx_presets.py New acceptance tests for OVPhysX preset resolution across 15 env variants, Newton scene/physics preset checks for Allegro and Handover, and play-env count check. Coverage is thorough for the Direct variants in scope.
source/isaaclab_tasks/test/core/test_handover_env_cfg.py New unit tests verifying asset USD paths match single-agent config, init-pose consistency across backends, normalized rotations, and Newton distal-joint override presence/value.
source/isaaclab_tasks/test/core/test_shadow_hand_env_cfg.py New unit tests covering event randomization, backend-specific asset paths, fixed_tendons_props nullification for OVPhysX, init rotation values, and the 20-action joint contract.
source/isaaclab_tasks/changelog.d/task-cleanup-dex-part07.minor.rst Changelog entry for added OVPhysX presets and the task-frame fix. Accurate and complete.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[resolve_presets called with preset key] --> B{preset key}
    B -- physx --> C[PhysxCfg\nSHADOW_HAND_CFG\nfixed_tendons_props set]
    B -- newton_mjwarp --> D[NewtonCfg\nShadowHandNewton USD\nJ1 distal_passive override]
    B -- ovphysx --> E[OvPhysxCfg\nSHADOW_HAND_CFG\nfixed_tendons_props = None]
    B -- default --> C
    C --> F[ShadowHandRobotCfg.physx\nrot=0,0,0,1]
    D --> G[ShadowHandRobotCfg.newton_mjwarp\nrot=-0.707,0.707\nJ1 passive actuator]
    E --> H[ShadowHandRobotCfg.ovphysx\nrot=0,0,0,1\nno tendon overrides]
    style E fill:#d4edda,stroke:#28a745
    style H fill:#d4edda,stroke:#28a745
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
    A[resolve_presets called with preset key] --> B{preset key}
    B -- physx --> C[PhysxCfg\nSHADOW_HAND_CFG\nfixed_tendons_props set]
    B -- newton_mjwarp --> D[NewtonCfg\nShadowHandNewton USD\nJ1 distal_passive override]
    B -- ovphysx --> E[OvPhysxCfg\nSHADOW_HAND_CFG\nfixed_tendons_props = None]
    B -- default --> C
    C --> F[ShadowHandRobotCfg.physx\nrot=0,0,0,1]
    D --> G[ShadowHandRobotCfg.newton_mjwarp\nrot=-0.707,0.707\nJ1 passive actuator]
    E --> H[ShadowHandRobotCfg.ovphysx\nrot=0,0,0,1\nno tendon overrides]
    style E fill:#d4edda,stroke:#28a745
    style H fill:#d4edda,stroke:#28a745
Loading

Comments Outside Diff (1)

  1. source/isaaclab_tasks/isaaclab_tasks/core/handover/handover_env_cfg.py, line 131 (link)

    P2 The module-level comment still references J0 after the joint was renamed to J1 in the code below it. This makes the comment misleading for anyone tracing why stiffness=10 is applied to those joints.

    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!

Reviews (1): Last reviewed commit: "Add OVPhysX presets to the dexterous tas..." | Re-trigger Greptile

hujc7 added 4 commits July 8, 2026 12:57
The earlier commit was meant to ship the reduced Direct-only test set
but the reduction was accidentally committed on a detached HEAD and
never reached the branch. The manager-importing test rows and the
handover configuration test move to the final manager PR, which is
where their imports resolve.
Mirrors the per-backend actuated-joint mapping, composed hand
rotations, and contact substeps shipped in the handover enablement PR;
this file remains the superset with the OVPhysX preset.
The handover cfg carries the Newton fixes from Part 4 plus the OVPhysX
presets; the Shadow cfg consumes the shared fingertip constants from
Part 3.
The Shadow and OpenAI Direct cfgs default their scalar fields from the
per-variant task constants and promote the shared scene and noise cfg
objects to module scope, so the manager counterparts consume one source
without instantiating a throwaway Direct cfg. The handover cfg carries
the same treatment plus the float64 hand-rotation composition.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

isaac-lab Related to Isaac Lab team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant