Skip to content

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

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

[Task Clean-up][OVPhysX] Dexterous Part 7/11: Add OVPhysX presets to the dexterous tasks#6417
hujc7 wants to merge 7 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 (series reference) #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.

Review updates (2026-07-11)

Series review map

Full integrated diff + training/validation evidence: the lumped validation PR #6324 (DO-NOT-MERGE).

Part PR
Docs: regenerate the environment overview table #6410
Part 1/11: Newton runtime fixes (cloner rows, cubric fallback, viz teardown) #6411
Part 2/11: OVPhysX runtime fixes #6412
Part 3/11: success-rate metrics for the Direct reorientation tasks #6413
Part 4/11: RSL-RL training for the handover Direct task #6414
Part 5/11: success-rate support in the benchmark utilities #6415
Part 6/11: renderer presets for the Direct camera task #6416
Part 7/11: OVPhysX presets for the dexterous tasks (this PR) #6417
Part 8/11: Allegro manager counterpart #6418
Part 9/11: Shadow + OpenAI manager counterparts #6419
Part 10/11: Shadow camera manager counterpart #6420
Part 11/11: Shadow handover manager counterpart #6421

Builds on: #6412. This PR's own commits relative to each parent branch:

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 5 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.
The handover env cfg reads SIM_DT and VEL_OBS_SCALE from the shared
constants module instead of literals. The cfg-content test files
(Shadow cfg, OVPhysX preset acceptance) are dropped per the
tests-assert-behavior principle; the consolidated kernel behavior
suite ships with Part 11.
The Shadow and handover Direct configurations define their scalar
task parameters as flat literal fields (read live by the Direct
environments), replacing the shared-constants indirection, and pick
up the renamed *_task_base structural modules.
hujc7 added a commit that referenced this pull request Jul 17, 2026
…nager runtime (#6412)

## Summary

- Fixes OVPhysX actuator joint indices to follow the common actuator
indexing contract.
- Fixes OVPhysX initialization alongside Kit by reusing Kit's registered
PhysX schema provider.
- Fixes the OVPhysX manager to support both the declared public runtime
API and the current runtime API.
- Regression tests included. Validated by full dexterous training runs
on the OVPhysX backend; split out of the lumped validation branch #6324
(Part 2 of 11).

## Dependencies

- None.

## Series review map

Full integrated diff + training/validation evidence: the lumped
validation PR #6324
(DO-NOT-MERGE).

| Part | PR |
|---|---|
| Docs: regenerate the environment overview table |
#6410 |
| Part 1/11: Newton runtime fixes (cloner rows, cubric fallback, viz
teardown) | #6411 |
| **Part 2/11: OVPhysX runtime fixes (this PR)** |
#6412 |
| Part 3/11: success-rate metrics for the Direct reorientation tasks |
#6413 |
| Part 4/11: RSL-RL training for the handover Direct task |
#6414 |
| Part 5/11: success-rate support in the benchmark utilities |
#6415 |
| Part 6/11: renderer presets for the Direct camera task |
#6416 |
| Part 7/11: OVPhysX presets for the dexterous tasks |
#6417 |
| Part 8/11: Allegro manager counterpart |
#6418 |
| Part 9/11: Shadow + OpenAI manager counterparts |
#6419 |
| Part 10/11: Shadow camera manager counterpart |
#6420 |
| Part 11/11: Shadow handover manager counterpart |
#6421 |


---
### Exact changes in this PR

- OVPhysX backend changes + tests:
1f7a433
@hujc7

hujc7 commented Jul 18, 2026

Copy link
Copy Markdown
Collaborator Author

Closing as part of the series restructure: the OVPhysX runtime fixes merged via #6412 (Part 2/8), and the remaining preset wiring is carried by the restacked parts. The full series layout is tracked in the Review Map at the top of #6324.

@hujc7 hujc7 closed this Jul 18, 2026
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