[Task Clean-up][OVPhysX] Dexterous Part 7/11: Add OVPhysX presets to the dexterous tasks#6417
[Task Clean-up][OVPhysX] Dexterous Part 7/11: Add OVPhysX presets to the dexterous tasks#6417hujc7 wants to merge 7 commits into
Conversation
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.
Greptile SummaryThis PR adds OVPhysX physics presets to the Shadow Hand reorientation and handover environments, and fixes the Shadow Hand task frame on OVPhysX by clearing
Confidence Score: 4/5Safe 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
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
%%{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
|
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.
…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
Summary
Dependencies
handover_env_cfg.py: this PR carries the identical distal-joint hunks, so either merge order is clean.Review updates (2026-07-09)
Review updates (2026-07-11)
Series review map
Full integrated diff + training/validation evidence: the lumped validation PR #6324 (DO-NOT-MERGE).
Builds on: #6412. This PR's own commits relative to each parent branch: