Repository navigation
Conversation
23c2ef8 to
99025bd
Compare
507b309 to
43ede30
Compare
Greptile SummaryThis PR adds the dexterous task convergence work across direct and manager environments. The main changes are:
Confidence Score: 4/5The handover manager reset observation path needs a fix before merging.
source/isaaclab_tasks/isaaclab_tasks/core/handover/mdp/observations.py Important Files Changed
Reviews (1): Last reviewed commit: "Calibrate camera benchmark gates from fu..." | Re-trigger Greptile |
| episode_length_buf = getattr(env, "episode_length_buf", None) | ||
| if reset_actions is None or action_name not in reset_actions or episode_length_buf is None: | ||
| return raw_action | ||
| return torch.where((episode_length_buf == 0).unsqueeze(-1), reset_actions[action_name], raw_action) |
There was a problem hiding this comment.
When a manager handover env autoresets, reset_handover_state stores the terminal raw action and episode_length_buf stays 0 for the first observation of the new episode. This branch then reports the previous episode’s action for the newly reset state, while the Direct handover path reports the current step action, so RSL-RL can train on stale actions at episode boundaries.
Add a behavioral Metrics/success_rate signal (goal-reach streaks per episode) and threshold-independent episode orientation-error diagnostics to the Direct reorientation environments, with the shared helpers in isaaclab_tasks.core.utils and torch math tests. The task logic is torch-first per the mainline convention; success gates task health while reward stays diagnostic. Also fix hand resets that could initialize joints below their lower position limits.
Add the RSL-RL runner configuration for the Shadow handover Direct task and success-rate metrics on the torch-first path, fix handover construction on Newton (renamed distal joints), and land the camera Direct renderer presets with configuration validation. RSL-RL observations now read from the public environment-owned obs_buf on all Direct env bases (reset stores the buffer like step), replacing the adapter-side private hook.
…isualizer teardown (#6411) ## Review Map - **Exact changes**: a stacked PR's page shows the cumulative diff of its dependency chain; the link pins the commit range that is the PR's own contribution. - Links pin specific SHAs and can go stale after a branch update — the table on #6324 is refreshed first. | PR | Status | Depends on | Exact changes | |---|---|---|---| | #6410 [Docs] Environment overview regen |  | — | — | | 📌 #6411 Part 1/8: Newton cloner/cubric/visualizer fixes (this PR) |  | — | — | | #6412 Part 2/8: OVPhysX articulation + manager runtime |  | — | — | | #6413 Part 3/8: Reorient Direct, torch |  | — | — | | #6414 Part 4/8: MARL-to-single-agent fix + handover/camera Direct |  | #6413 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6414/changes/6e8a63e4e028b2d43676ea30c446b9dc9068c7b5..5cb00e7cb5cc813b202521272e043007cd255194) | | #6418 Part 5/8: Reorient manager counterparts |  | #6413 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6418/changes/79f87501ac4c81de93a71dab00dc443da62113aa..e7c9a9a3fae3a7972b0c5165ae683abffb7d0e0f) | | #6421 Part 6/8: Handover + camera manager counterparts |  | #6413, #6414, #6418 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6421/changes/01c9f4d8c5c35a5688b2a5bb90209e16b8f81b99..835a5815ec49b11aada1d20a76c177054505e6e7) | | #6415 Part 7/8: Benchmark success-rate utilities + docs |  | #6413, #6414, #6418, #6421 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6415/changes/e1abb6b1790ccc57af42551eebccf743633f1f13..d6348539aa8032d9668c20a8fea462c5d88d3af9) | | #6582 Part 8/8: Warp variants → experimental (draft; merges last) |  | #6413 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6582/changes/21dbb1769c4e30c8e9e5b0f563c2dae24c230349..83e1587cadd9712a60615ed2a3cb2d177c2ac24d) | | #6324 [DO-NOT-MERGE] Lumped validation reference |  | ALL | — | ## Summary - Fixes Newton cloner label rows, the cubric IAdapter version audit (exact-match fallback to the CPU hierarchy path), and visualizer teardown. - Retains an in-tree `ignore_paths` workaround for custom-frequency USD traversal; it becomes redundant once the Newton pin advance (#6584) merges — this PR then only needs a rebase. ## Stacking - Independent; based on `develop`. ## Review history - Approved. The Newton pin + MuJoCo overrides were split out to #6584 via revert commits (2026-07-17) so this PR's CI runs against develop's pins.
Applies the P3-owned share of the lump review-response commits: - Default the dexterous tasks to newton_mjwarp (from 3f9ce324). - Drop solver defaults matching the backend + inline the scene preset via preset() instead of a wrapper class (from 29e189bf). - Simplify the Direct reorientation reward computation (from bfb73735). - Source the actuated-joint and fingertip body-name lists from the robot assets instead of the config module (from 34676102). Deferred to their owning layers: the core/utils relocation (S17) lands at the manager layer where reorient/mdp/events.py is introduced, and the handover default/preset changes land with the handover part.
P4-owned share of the lump review-response commits: - Default the handover task to newton_mjwarp and add the ovphysx object preset alias (from 3f9ce324, 29e189bf). - Source the handover joint/body name lists from the robot assets (from 34676102). S17 (core/utils relocation) defers to the manager layer where reorient/mdp/events.py is introduced.
Rebuilt from the reviewed lump so the manager counterparts land with the review rounds folded in: inline section values per file (drift guarded by the value-parity test incl. sim), identity from the common modules, the OpenAI variant in its own module, and no sim mixins. Lump review commits folded: 2c22af0af0d, 792e400dad0, 42675b64f13, 1f05f850886, c6140f990d7, 173e9dc5a8d, 2727616f475, 17324935bda, 3659a335515, ee272c912b6, cdaadac660c.
P5-owned share of the lump review-response commits: - Relocate the shared reset/rotation helpers into reorient/mdp/events.py and EpisodeErrorRecorder into reorient/mdp/rewards.py, removing the core/utils.py module (S17, from 428297c2). - Default the reorient manager cfgs to newton_mjwarp and source the hand name lists from the robot assets (from 3f9ce324, 34676102). - Repoint the Direct env to the relocated helpers.
Rebuilds P6 on the updated P4+P5, folding the P6-owned share: - Repoint handover to the relocated reorient.mdp helpers after the core/utils.py removal (S17 handover side, from 428297c2). - Inherits N2/preset/reward/names fixes via the rebuilt P4 and P5.
…6415-fold # Conflicts: # source/isaaclab_tasks/isaaclab_tasks/core/handover/handover_manager_env_cfg.py # source/isaaclab_tasks/isaaclab_tasks/core/handover/mdp/events.py # source/isaaclab_tasks/isaaclab_tasks/core/handover/mdp/rewards.py # source/isaaclab_tasks/isaaclab_tasks/core/reorient/config/allegro_hand/allegro_hand_manager_env_cfg.py # source/isaaclab_tasks/isaaclab_tasks/core/reorient/config/shadow_hand/shadow_hand_camera_manager_env_cfg.py # source/isaaclab_tasks/isaaclab_tasks/core/reorient/config/shadow_hand/shadow_hand_manager_env_cfg.py # source/isaaclab_tasks/isaaclab_tasks/core/reorient/config/shadow_hand/shadow_hand_openai_manager_env_cfg.py # source/isaaclab_tasks/isaaclab_tasks/core/reorient/mdp/events.py # source/isaaclab_tasks/isaaclab_tasks/core/reorient/mdp/rewards.py
Move the warp implementation of the Shadow reorientation and handover Direct environments (kernels, environments, kernel behavior tests) from the mainline task package to isaaclab_tasks_experimental, following the torch-first mainline convention. The variants register under -Direct-Warp-v0 IDs and reuse the stable configurations and agents. The Allegro warp variant keeps its existing legacy registration.
Mirror the mainline rename (reorient_reward) in the experimental warp package: the launcher is family-scoped, not paradigm-scoped, and the package already lives under direct/. Pure rename; no behavioral change.
Repoints the shadow-hand env.rst source links to the renamed _direct_ modules and lists ovphysx on the OpenAI-FF illustrated row (C1), completing the dexterous environment docs in the series.
The environment overview updates for the dexterous series belong in the dedicated docs PR (isaac-sim#6410), not the benchmark part. Reverts env.rst to the base version here.
Documents the dexterous reorientation and handover tasks' newton/ovphysx physics backends in the comprehensive table, and repoints the shadow-hand source links to the renamed _direct_ config modules. Stacked on Part 6 so every referenced task/module exists; inserted as the series' docs update.
44fbfa5 to
1c2e62f
Compare
The vision env renders through the Isaac RTX tiled camera, whose render products require the Fabric cloning path. The Newton backend disables Fabric cloning, so under Newton the rgb annotator has no render products at num_envs > 1 and the default RGB/depth/semantic render fails. Override the camera env's backend PresetCfgs to default to PhysX in __post_init__; Newton stays selectable via physics=newton_mjwarp.
…eorientation Direct tasks (#6413) ## Review Map - **Exact changes**: a stacked PR's page shows the cumulative diff of its dependency chain; the link pins the commit range that is the PR's own contribution. - Links pin specific SHAs and can go stale after a branch update — the table on #6324 is refreshed first. | PR | Status | Depends on | Exact changes | |---|---|---|---| | #6411 Part 1/9: Newton cloner/cubric/visualizer fixes |  | — | merged | | #6412 Part 2/9: OVPhysX articulation + manager runtime |  | — | merged | | 📌 #6413 Part 3/9: Reorient Direct, torch (this PR) |  | — | [changes](https://github.com/isaac-sim/IsaacLab/pull/6413/changes/f4895f0f9ee..d29afc75e71) | | #6414 Part 4/9: MARL-to-single-agent fix + handover/camera Direct |  | #6413 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6414/changes/d29afc75e71..b10a84948f8) | | #6418 Part 5/9: Reorient manager counterparts |  | #6413 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6418/changes/d29afc75e71..707d37f8f99) | | #6421 Part 6/9: Handover + camera manager counterparts |  | #6413, #6414, #6418 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6421/changes/707d37f8f99..b50ac8906fc) | | #6410 Part 7/9: Environment overview docs |  | #6421 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6410/changes/b50ac8906fc..af259c0778d) | | #6415 Part 8/9: Benchmark success-rate utilities |  | #6421 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6415/changes/b50ac8906fc..c7f2f019d8b) | | #6582 Part 9/9: Warp variants → experimental (draft; merges last) |  | #6413 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6582/changes/d29afc75e71..167c28578b3) | | #6324 [DO-NOT-MERGE] Lumped validation reference |  | ALL | — | ## Summary - Adds a behavioral `Metrics/success_rate` signal (goal-reach streaks per episode) and threshold-independent episode orientation-error diagnostics to the Direct reorientation environments; success gates task health, reward stays diagnostic. - Task logic is **torch-first** per the mainline convention (plain torch buffers; `.torch` accessors only at the core-lib boundary). This supersedes the earlier warp-first revision of this PR; the warp implementation moved to `isaaclab_tasks_experimental` (#6582). - Lands shared helpers in `isaaclab_tasks.core.utils` (`EpisodeErrorRecorder`, `sample_joint_positions_within_limits`) with torch math tests; fixes hand resets below lower joint limits. ## Stacking - First stack PR; based on `develop`. ## Validation - Kit-free torch math + utils tests green; Direct state training on Newton: success rate 0.85–1.00, reward ≈3600–3900 at 2000 iterations, frame-verified policy video. Full integrated evidence: #6324. ## Review history - The earlier warp-era review rounds on this PR are superseded by the torch restack (2026-07-16); the warp implementation and its review-polished kernels live on in #6582.
… and enable handover Direct RSL-RL (#6414) ## Review Map - **Exact changes**: a stacked PR's page shows the cumulative diff of its dependency chain; the link pins the commit range that is the PR's own contribution. This PR (#6414) is now rebased directly onto `develop`, so its own **Files changed** tab is its contribution. - Links pin specific SHAs and can go stale after a branch update — the table on #6324 is refreshed first. | PR | Status | Depends on | Exact changes | |---|---|---|---| | #6411 Part 1/9: Newton cloner/cubric/visualizer fixes |  | — | merged | | #6412 Part 2/9: OVPhysX articulation + manager runtime |  | — | merged | | #6413 Part 3/9: Reorient Direct, torch |  | — | merged | | 📌 #6414 Part 4/9: MARL-to-single-agent fix + handover/camera Direct (this PR) |  | — (on develop) | Files changed tab | | #6418 Part 5/9: Reorient manager counterparts |  | #6413 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6418/changes/d29afc75e71..707d37f8f99) | | #6421 Part 6/9: Handover + camera manager counterparts |  | #6414, #6418 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6421/changes/707d37f8f99..b50ac8906fc) | | #6410 Part 7/9: Environment overview docs |  | #6421 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6410/changes/b50ac8906fc..af259c0778d) | | #6415 Part 8/9: Benchmark success-rate utilities |  | #6421 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6415/changes/b50ac8906fc..c7f2f019d8b) | | #6582 Part 9/9: Warp variants → experimental (draft; merges last) |  | — | [changes](https://github.com/isaac-sim/IsaacLab/pull/6582/changes/d29afc75e71..167c28578b3) | | #6324 [DO-NOT-MERGE] Lumped validation reference |  | ALL | — | ## Summary Converts the two-hand Shadow Hand **handover** task from multi-agent (MARL) to **single-agent** (enabling RSL-RL training), fixes the underlying MARL→single-agent observation bridge, and consolidates the shared Shadow Hand definitions into the asset. - **MARL → single-agent bridge (general, broader than this task).** Single-agent RL libraries train `DirectMARLEnv` tasks via `multi_agent_to_single_agent`; the bridge dropped the latest observations from the public buffer. Fixed generally — RSL-RL observations read from the env-owned `obs_buf`, stored by `reset` like `step` on all env bases (`DirectRLEnv`, `DirectMARLEnv`, the experimental warp base). Every MARL task + single-agent runner benefits; handover is the first consumer. - **Handover Direct → single-agent + RSL-RL.** Single-agent conversion, RSL-RL runner config, shared identity in `handover_common`, success-rate reward metrics, and a fix for its Newton construction failure (see below). - **Shadow Hand Newton robot → the asset.** Moved the Newton (MJWarp) robot cfg into `isaaclab_assets` as `SHADOW_HAND_NEWTON_CFG` (beside `SHADOW_HAND_CFG`); reorient and handover consume it as **siblings** (neither imports the other). Reorient uses the default gains; handover overrides only the finger stiffness/damping to `20/2` for its catch. - **Shadow camera cleanup.** Renamed the camera Direct modules to `shadow_hand_direct_camera_env[_cfg]`; moved cube-keypoint math to the shared, unit-tested `reorient/mdp/observations.py` (replacing the per-env `compute_keypoints` shim); and added OVPhysX physics presets to the handover and camera Direct environments. The camera env config is otherwise unchanged from develop. ### Behavior changes **Reorient-on-Newton is unchanged.** The Newton hand definition moves **verbatim** into `SHADOW_HAND_NEWTON_CFG` — same joint expressions, effort limits, gains, friction and armature — so its config diff vs `develop` is purely the move, and the Direct env config has no diff at all. Handover changes in three ways: - Its **default physics backend moves from PhysX to Newton** (MJWarp), matching the reorientation tasks. Pass `physics=physx` for the previous backend. - Its `distal_passive` actuator group is **removed**. It targeted `robot0_(FF|MF|RF|LF)J0` — joints that **do not exist** on the Newton asset (its fingers are numbered `J1`–`J4`/`J5`), so constructing the environment raised `No joints found for actuator group`. The `fingers` group already drives those joints, and the comment justifying the group (USD-baked `stiffness=286/damping=57`) does not apply to this asset, which authors no drive stiffness at all. - Two orientation fixes: the goal orientation was initialized to a 180-degree rotation instead of identity, and the Newton root rotation replaced the asset's baked rotation instead of composing with it, leaving both palms rotated 90 degrees. Two pre-existing discrepancies were found while verifying against the asset and are left for a follow-up, since each is a behavior change needing its own validation: the config sets `armature=2e-3` where the asset authors `0.0002`, and the per-finger `J1`/`J2` pair is coupled by a fixed tendon that the MJWarp solver currently skips — the actuator gains are what hold that pair together today, which is why the `J4` knuckle-abduction joints cannot simply be added to the driven set. ## Notes - Rebased onto **latest develop**; clean 3-commit history: `Add single-agent flattening for MARL Direct environments` / `Convert Shadow Hand handover to single-agent Direct with RSL-RL` / `Clean up Shadow reorient/camera tasks and consolidate the Newton hand`. ## Validation - Kit-free suite green: handover, keypoint math, the MARL adapter, and new checks pinning the RSL-RL wrapper observation contract (verified to fail against the previous implementation). - Camera Direct reaches training takeoff under `rsl_rl` (frame-verified videos); its env config now matches develop's established vision env. - **Reorient-on-Newton vs `develop`** (`rsl_rl`, 2048 envs, 1500 iterations, 4 runs per config): this branch spans 524–664 reward, `develop` spans 654–822 — overlapping distributions whose per-config spreads (140–168) exceed the gap between them. The move is additionally verified at the config level: the Newton robot configuration is character-for-character identical to `develop`'s. - **Handover-on-Newton** trains end-to-end on this branch (reward 1314), which the `develop` config cannot do at all — it fails during construction. Full evidence: #6324.
…nager runtime (isaac-sim#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 isaac-sim#6324 (Part 2 of 11). ## Dependencies - None. ## Series review map Full integrated diff + training/validation evidence: the lumped validation PR isaac-sim#6324 (DO-NOT-MERGE). | Part | PR | |---|---| | Docs: regenerate the environment overview table | isaac-sim#6410 | | Part 1/11: Newton runtime fixes (cloner rows, cubric fallback, viz teardown) | isaac-sim#6411 | | **Part 2/11: OVPhysX runtime fixes (this PR)** | isaac-sim#6412 | | Part 3/11: success-rate metrics for the Direct reorientation tasks | isaac-sim#6413 | | Part 4/11: RSL-RL training for the handover Direct task | isaac-sim#6414 | | Part 5/11: success-rate support in the benchmark utilities | isaac-sim#6415 | | Part 6/11: renderer presets for the Direct camera task | isaac-sim#6416 | | Part 7/11: OVPhysX presets for the dexterous tasks | isaac-sim#6417 | | Part 8/11: Allegro manager counterpart | isaac-sim#6418 | | Part 9/11: Shadow + OpenAI manager counterparts | isaac-sim#6419 | | Part 10/11: Shadow camera manager counterpart | isaac-sim#6420 | | Part 11/11: Shadow handover manager counterpart | isaac-sim#6421 | --- ### Exact changes in this PR - OVPhysX backend changes + tests: isaac-sim@1f7a433
…isualizer teardown (isaac-sim#6411) ## Review Map - **Exact changes**: a stacked PR's page shows the cumulative diff of its dependency chain; the link pins the commit range that is the PR's own contribution. - Links pin specific SHAs and can go stale after a branch update — the table on isaac-sim#6324 is refreshed first. | PR | Status | Depends on | Exact changes | |---|---|---|---| | isaac-sim#6410 [Docs] Environment overview regen |  | — | — | | 📌 isaac-sim#6411 Part 1/8: Newton cloner/cubric/visualizer fixes (this PR) |  | — | — | | isaac-sim#6412 Part 2/8: OVPhysX articulation + manager runtime |  | — | — | | isaac-sim#6413 Part 3/8: Reorient Direct, torch |  | — | — | | isaac-sim#6414 Part 4/8: MARL-to-single-agent fix + handover/camera Direct |  | isaac-sim#6413 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6414/changes/6e8a63e4e028b2d43676ea30c446b9dc9068c7b5..5cb00e7cb5cc813b202521272e043007cd255194) | | isaac-sim#6418 Part 5/8: Reorient manager counterparts |  | isaac-sim#6413 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6418/changes/79f87501ac4c81de93a71dab00dc443da62113aa..e7c9a9a3fae3a7972b0c5165ae683abffb7d0e0f) | | isaac-sim#6421 Part 6/8: Handover + camera manager counterparts |  | isaac-sim#6413, isaac-sim#6414, isaac-sim#6418 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6421/changes/01c9f4d8c5c35a5688b2a5bb90209e16b8f81b99..835a5815ec49b11aada1d20a76c177054505e6e7) | | isaac-sim#6415 Part 7/8: Benchmark success-rate utilities + docs |  | isaac-sim#6413, isaac-sim#6414, isaac-sim#6418, isaac-sim#6421 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6415/changes/e1abb6b1790ccc57af42551eebccf743633f1f13..d6348539aa8032d9668c20a8fea462c5d88d3af9) | | isaac-sim#6582 Part 8/8: Warp variants → experimental (draft; merges last) |  | isaac-sim#6413 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6582/changes/21dbb1769c4e30c8e9e5b0f563c2dae24c230349..83e1587cadd9712a60615ed2a3cb2d177c2ac24d) | | isaac-sim#6324 [DO-NOT-MERGE] Lumped validation reference |  | ALL | — | ## Summary - Fixes Newton cloner label rows, the cubric IAdapter version audit (exact-match fallback to the CPU hierarchy path), and visualizer teardown. - Retains an in-tree `ignore_paths` workaround for custom-frequency USD traversal; it becomes redundant once the Newton pin advance (isaac-sim#6584) merges — this PR then only needs a rebase. ## Stacking - Independent; based on `develop`. ## Review history - Approved. The Newton pin + MuJoCo overrides were split out to isaac-sim#6584 via revert commits (2026-07-17) so this PR's CI runs against develop's pins.
…eorientation Direct tasks (isaac-sim#6413) ## Review Map - **Exact changes**: a stacked PR's page shows the cumulative diff of its dependency chain; the link pins the commit range that is the PR's own contribution. - Links pin specific SHAs and can go stale after a branch update — the table on isaac-sim#6324 is refreshed first. | PR | Status | Depends on | Exact changes | |---|---|---|---| | isaac-sim#6411 Part 1/9: Newton cloner/cubric/visualizer fixes |  | — | merged | | isaac-sim#6412 Part 2/9: OVPhysX articulation + manager runtime |  | — | merged | | 📌 isaac-sim#6413 Part 3/9: Reorient Direct, torch (this PR) |  | — | [changes](https://github.com/isaac-sim/IsaacLab/pull/6413/changes/f4895f0f9ee..d29afc75e71) | | isaac-sim#6414 Part 4/9: MARL-to-single-agent fix + handover/camera Direct |  | isaac-sim#6413 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6414/changes/d29afc75e71..b10a84948f8) | | isaac-sim#6418 Part 5/9: Reorient manager counterparts |  | isaac-sim#6413 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6418/changes/d29afc75e71..707d37f8f99) | | isaac-sim#6421 Part 6/9: Handover + camera manager counterparts |  | isaac-sim#6413, isaac-sim#6414, isaac-sim#6418 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6421/changes/707d37f8f99..b50ac8906fc) | | isaac-sim#6410 Part 7/9: Environment overview docs |  | isaac-sim#6421 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6410/changes/b50ac8906fc..af259c0778d) | | isaac-sim#6415 Part 8/9: Benchmark success-rate utilities |  | isaac-sim#6421 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6415/changes/b50ac8906fc..c7f2f019d8b) | | isaac-sim#6582 Part 9/9: Warp variants → experimental (draft; merges last) |  | isaac-sim#6413 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6582/changes/d29afc75e71..167c28578b3) | | isaac-sim#6324 [DO-NOT-MERGE] Lumped validation reference |  | ALL | — | ## Summary - Adds a behavioral `Metrics/success_rate` signal (goal-reach streaks per episode) and threshold-independent episode orientation-error diagnostics to the Direct reorientation environments; success gates task health, reward stays diagnostic. - Task logic is **torch-first** per the mainline convention (plain torch buffers; `.torch` accessors only at the core-lib boundary). This supersedes the earlier warp-first revision of this PR; the warp implementation moved to `isaaclab_tasks_experimental` (isaac-sim#6582). - Lands shared helpers in `isaaclab_tasks.core.utils` (`EpisodeErrorRecorder`, `sample_joint_positions_within_limits`) with torch math tests; fixes hand resets below lower joint limits. ## Stacking - First stack PR; based on `develop`. ## Validation - Kit-free torch math + utils tests green; Direct state training on Newton: success rate 0.85–1.00, reward ≈3600–3900 at 2000 iterations, frame-verified policy video. Full integrated evidence: isaac-sim#6324. ## Review history - The earlier warp-era review rounds on this PR are superseded by the torch restack (2026-07-16); the warp implementation and its review-polished kernels live on in isaac-sim#6582.
… and enable handover Direct RSL-RL (isaac-sim#6414) ## Review Map - **Exact changes**: a stacked PR's page shows the cumulative diff of its dependency chain; the link pins the commit range that is the PR's own contribution. This PR (isaac-sim#6414) is now rebased directly onto `develop`, so its own **Files changed** tab is its contribution. - Links pin specific SHAs and can go stale after a branch update — the table on isaac-sim#6324 is refreshed first. | PR | Status | Depends on | Exact changes | |---|---|---|---| | isaac-sim#6411 Part 1/9: Newton cloner/cubric/visualizer fixes |  | — | merged | | isaac-sim#6412 Part 2/9: OVPhysX articulation + manager runtime |  | — | merged | | isaac-sim#6413 Part 3/9: Reorient Direct, torch |  | — | merged | | 📌 isaac-sim#6414 Part 4/9: MARL-to-single-agent fix + handover/camera Direct (this PR) |  | — (on develop) | Files changed tab | | isaac-sim#6418 Part 5/9: Reorient manager counterparts |  | isaac-sim#6413 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6418/changes/d29afc75e71..707d37f8f99) | | isaac-sim#6421 Part 6/9: Handover + camera manager counterparts |  | isaac-sim#6414, isaac-sim#6418 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6421/changes/707d37f8f99..b50ac8906fc) | | isaac-sim#6410 Part 7/9: Environment overview docs |  | isaac-sim#6421 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6410/changes/b50ac8906fc..af259c0778d) | | isaac-sim#6415 Part 8/9: Benchmark success-rate utilities |  | isaac-sim#6421 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6415/changes/b50ac8906fc..c7f2f019d8b) | | isaac-sim#6582 Part 9/9: Warp variants → experimental (draft; merges last) |  | — | [changes](https://github.com/isaac-sim/IsaacLab/pull/6582/changes/d29afc75e71..167c28578b3) | | isaac-sim#6324 [DO-NOT-MERGE] Lumped validation reference |  | ALL | — | ## Summary Converts the two-hand Shadow Hand **handover** task from multi-agent (MARL) to **single-agent** (enabling RSL-RL training), fixes the underlying MARL→single-agent observation bridge, and consolidates the shared Shadow Hand definitions into the asset. - **MARL → single-agent bridge (general, broader than this task).** Single-agent RL libraries train `DirectMARLEnv` tasks via `multi_agent_to_single_agent`; the bridge dropped the latest observations from the public buffer. Fixed generally — RSL-RL observations read from the env-owned `obs_buf`, stored by `reset` like `step` on all env bases (`DirectRLEnv`, `DirectMARLEnv`, the experimental warp base). Every MARL task + single-agent runner benefits; handover is the first consumer. - **Handover Direct → single-agent + RSL-RL.** Single-agent conversion, RSL-RL runner config, shared identity in `handover_common`, success-rate reward metrics, and a fix for its Newton construction failure (see below). - **Shadow Hand Newton robot → the asset.** Moved the Newton (MJWarp) robot cfg into `isaaclab_assets` as `SHADOW_HAND_NEWTON_CFG` (beside `SHADOW_HAND_CFG`); reorient and handover consume it as **siblings** (neither imports the other). Reorient uses the default gains; handover overrides only the finger stiffness/damping to `20/2` for its catch. - **Shadow camera cleanup.** Renamed the camera Direct modules to `shadow_hand_direct_camera_env[_cfg]`; moved cube-keypoint math to the shared, unit-tested `reorient/mdp/observations.py` (replacing the per-env `compute_keypoints` shim); and added OVPhysX physics presets to the handover and camera Direct environments. The camera env config is otherwise unchanged from develop. ### Behavior changes **Reorient-on-Newton is unchanged.** The Newton hand definition moves **verbatim** into `SHADOW_HAND_NEWTON_CFG` — same joint expressions, effort limits, gains, friction and armature — so its config diff vs `develop` is purely the move, and the Direct env config has no diff at all. Handover changes in three ways: - Its **default physics backend moves from PhysX to Newton** (MJWarp), matching the reorientation tasks. Pass `physics=physx` for the previous backend. - Its `distal_passive` actuator group is **removed**. It targeted `robot0_(FF|MF|RF|LF)J0` — joints that **do not exist** on the Newton asset (its fingers are numbered `J1`–`J4`/`J5`), so constructing the environment raised `No joints found for actuator group`. The `fingers` group already drives those joints, and the comment justifying the group (USD-baked `stiffness=286/damping=57`) does not apply to this asset, which authors no drive stiffness at all. - Two orientation fixes: the goal orientation was initialized to a 180-degree rotation instead of identity, and the Newton root rotation replaced the asset's baked rotation instead of composing with it, leaving both palms rotated 90 degrees. Two pre-existing discrepancies were found while verifying against the asset and are left for a follow-up, since each is a behavior change needing its own validation: the config sets `armature=2e-3` where the asset authors `0.0002`, and the per-finger `J1`/`J2` pair is coupled by a fixed tendon that the MJWarp solver currently skips — the actuator gains are what hold that pair together today, which is why the `J4` knuckle-abduction joints cannot simply be added to the driven set. ## Notes - Rebased onto **latest develop**; clean 3-commit history: `Add single-agent flattening for MARL Direct environments` / `Convert Shadow Hand handover to single-agent Direct with RSL-RL` / `Clean up Shadow reorient/camera tasks and consolidate the Newton hand`. ## Validation - Kit-free suite green: handover, keypoint math, the MARL adapter, and new checks pinning the RSL-RL wrapper observation contract (verified to fail against the previous implementation). - Camera Direct reaches training takeoff under `rsl_rl` (frame-verified videos); its env config now matches develop's established vision env. - **Reorient-on-Newton vs `develop`** (`rsl_rl`, 2048 envs, 1500 iterations, 4 runs per config): this branch spans 524–664 reward, `develop` spans 654–822 — overlapping distributions whose per-config spreads (140–168) exceed the gap between them. The move is additionally verified at the config level: the Newton robot configuration is character-for-character identical to `develop`'s. - **Handover-on-Newton** trains end-to-end on this branch (reward 1314), which the `develop` config cannot do at all — it fails during construction. Full evidence: isaac-sim#6324.
…anager counterparts (#6418) ## Review Map - **Exact changes**: a stacked PR's page shows the cumulative diff of its dependency chain; the link pins the commit range that is the PR's own contribution. - Links pin specific SHAs and can go stale after a branch update — this table on #6324 is refreshed first. | PR | Status | Depends on | Exact changes | |---|---|---|---| | #6411 Part 1/10: Newton cloner/cubric/visualizer fixes |  | — | merged | | #6412 Part 2/10: OVPhysX articulation + manager runtime |  | — | merged | | #6413 Part 3/10: Reorient Direct, torch |  | — | [changes](https://github.com/isaac-sim/IsaacLab/pull/6413/changes/f4895f0f9ee..d29afc75e71) | | #6414 Part 4/10: MARL-to-single-agent fix + handover/camera Direct |  | #6413 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6414/changes/d29afc75e71..b10a84948f8) | | 📌 #6418 Part 5/10: Reorient manager counterparts |  | #6413 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6418/changes/3ea6f7bbf6c..0271783ea17) | | #6421 Part 6/10: Handover + camera manager counterparts |  | #6413, #6414, #6418 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6421/changes/b31b04eaf71..0cae3d87be4) | | #6410 Part 7/10: Environment overview docs |  | #6421 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6410/changes/b50ac8906fc..af259c0778d) | | #6954 Part 8/10: OpenAI Shadow variants → contrib (draft) |  | #6421 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6954/changes/0cae3d87be4..b0d2d8448af) | | #6415 Part 9/10: Benchmark success-rate utilities |  | #6421 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6415/changes/b50ac8906fc..c7f2f019d8b) | | #6582 Part 10/10: Warp variants → experimental (draft; merges last) |  | #6413 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6582/changes/d29afc75e71..167c28578b3) | | #6324 [DO-NOT-MERGE] Lumped validation reference |  | ALL | — | ## Summary Adds manager-based counterparts for the Shadow cube reorientation task and aligns the existing Allegro manager task with the Direct contracts. - **3 manager tasks** mirror their Direct counterparts: `Isaac-Reorient-Cube-Shadow`, `-Shadow-Camera` and `-Allegro`. - The OpenAI variants move to the contributed tasks **unchanged**. They encode a paper-specific training regime, so they get no manager counterpart. - `Metrics/success_rate` now means the same thing in both workflows. - The in-hand cube is one object per hand instead of one per physics backend. ## 1. Manager tasks match the Direct contracts Observations, actions, rewards, terminations, reset distributions and timing were brought to the Direct values. A value-parity test asserts the decimation / episode length / simulation step triple, the orientation success tolerance and the fall distance, so drift on either side fails CI. The Allegro observation space changes size, so existing manager checkpoints must be retrained. Domain randomization becomes opt-in through `presets=randomized`, replacing a configuration-file flag that the command line could not override. ## 2. OpenAI variants move to the contributed tasks `Isaac-Reorient-Cube-Shadow-OpenAI-{FF,LSTM}-Direct` become `IsaacContrib-Reorient-Cube-Shadow-OpenAI-{FF,LSTM}-Direct`. Both identifiers are kept: they share one environment configuration and differ only in their agent configuration, so collapsing them would leave the recurrent policy unreachable — the training entry point selects an agent configuration by workflow, not by name. ## 3. One success rate, defined once `Metrics/success_rate` named two quantities. The manager tasks reported goals reached over goals presented; the Direct tasks reported a per-episode success bit drawn at `success_count_threshold`. The curves were not comparable despite sharing a name and measuring the same task. Both now report the per-attempt rate, and `success_count_threshold` is removed as unused. The goal accounting moves into a `SuccessTracker` beside `EpisodeErrorRecorder`, which also suppresses success detection for the single step after an automatic reset — where the goal has been drawn but no physics has run against it, so a reset pose inside the success threshold would otherwise bank a goal the policy never earned. ## 4. One in-hand cube per hand, not per backend The cube was a `PresetCfg` with a variant per physics backend, so each hand manipulated a different object depending on the backend. On Shadow the branches disagreed on size and spawn height: PhysX spawned a 60 mm rigid body at `z=0.6`, Newton a 54 mm **articulation with no joints** at `z=0.535`. A policy trained on one backend was not solving the same task as one trained on the other. Each hand now declares a single `CUBE_CFG`. Shadow keeps the PhysX values; Allegro keeps its 1.2 scale. The `mass_props` density overrides are dropped: the asset authors an absolute `physics:mass` of 0.216 kg, which takes precedence over density, so they never applied on either backend. ## 5. Configuration hierarchy flattened, classes named by role Every manager task overrode all seven of the shared base's sub-configurations, so the base carried pre-alignment defaults that each task then undid. The environment configurations now derive from `ManagerBasedRLEnvCfg` directly. Removed: `ReorientObjectEnvCfg`, the shared sub-configurations no task constructed, and `reorient_common`. `isaaclab_tasks.core.utils` moves to `isaaclab_tasks.core.reorient.utils`, which the hand-over task already imports from. One naming convention now applies throughout, since `SceneCfg`, `EventCfg` and `ObservationsCfg` are each defined in dozens of files and gave no clue which base a task was specializing. Classes shared across files carry the task prefix; the `Base` suffix marks only those a subclass must complete by supplying fields the parent leaves unset, so the observation halves are named as parts rather than templates. Classes nested inside another configuration drop the prefix. Registered and preset-selectable configurations always name their task and hold fields only, with their helpers declared beside them. ## Validation Eight arms, 1500 iterations, 8192 environments, `physics=newton_mjwarp`, one L40 each. All exited cleanly with no regression in reward. | Arm | reward before | reward after | |---|---|---| | `Isaac-Reorient-Cube-Shadow` | 67.08 | 66.24 | | `-Shadow` `presets=asymmetric` | 42.08 | 52.95 | | `-Shadow-Direct` | 3532.95 | 3967.58 | | `-Allegro` | 25.22 | 34.03 | | `-Allegro` `presets=randomized` | 16.03 | 39.59 | | `-Allegro-Direct` | 656.78 | 1003.11 | | `IsaacContrib-…-OpenAI-FF-Direct` | 2757.56 | 4533.21 | | `IsaacContrib-…-OpenAI-LSTM-Direct` | — | 2585.54 | The LSTM arm resolves `ShadowHandAsymLSTMPPORunnerCfg`, confirming the recurrent policy is reachable through its own identifier. ### Known failure `test_rendering_shadow_hand[newton-isaacsim_rtx-rgb]` fails; it passes on `develop`. Only the `rgb` modality is affected — depth, normals and all three segmentations pass on the same backend, so the cube move is not an obvious explanation. Root cause is not yet established.
…mera manager counterparts (#6421) ## Review Map - **Exact changes**: a stacked PR's page shows the cumulative diff of its dependency chain; the link pins the commit range that is the PR's own contribution. - Links pin specific SHAs and can go stale after a branch update — this table on #6324 is refreshed first. | PR | Status | Depends on | Exact changes | |---|---|---|---| | 📌 #6421 Part 6/10: Handover + camera manager counterparts |  | — | [changes](https://github.com/isaac-sim/IsaacLab/pull/6421/changes/b31b04eaf71..0cae3d87be4) | | #6410 Part 7/10: Environment overview docs |  | #6421 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6410/changes/b50ac8906fc..af259c0778d) | | #6415 Part 9/10: Benchmark success-rate utilities |  | #6421 | [changes](https://github.com/isaac-sim/IsaacLab/pull/6415/changes/b50ac8906fc..c7f2f019d8b) | | #6582 Part 10/10: Warp variants → experimental (draft; merges last) |  | — | [changes](https://github.com/isaac-sim/IsaacLab/pull/6582/changes/d29afc75e71..167c28578b3) | | #6324 [DO-NOT-MERGE] Lumped validation reference |  | ALL | — | ## Summary Completes manager coverage of the dexterous task families by adding manager-based counterparts for the Shadow handover and Shadow camera reorientation tasks. - **2 manager tasks** added: `Isaac-Shadow-Handover` and `Isaac-Reorient-Cube-Shadow-Camera`. - **The last 2 `-Play` registrations** in `isaaclab_tasks` are removed. ## 1. Handover manager counterpart The fused handover reward became a plain reward term, with success and goal-distance bookkeeping moved to `HandoverCommand`, which owns the goal. It reports `Metrics/success_rate` as a per-episode bit, matching the handover Direct environment. `HandoverCommand.command` builds its pose per call rather than returning a persistent buffer, so consumers that store it across steps are not aliased to live data. The task keeps no observation, reset or event code of its own. Every observation is a framework term or a reorientation one: fingertip pose is `body_pose_w`, the object block is the root pose, root velocities, the generated command and the reorientation goal-quaternion difference, and only the fingertip velocity stays task-local because the framework has no `body_vel_w`. Both hands reset through the reorientation hand reset, one term per hand. The object and goal block was previously observed once per agent with identical values, so a single copy now carries the same information. `presets=randomized` adds the domain-randomization terms to the reset, matching how the reorientation manager tasks expose theirs. The reset and action observations use the framework terms rather than task-local ones, following Part 5: the object resets through `reset_root_state_with_random_orientation` and both hands observe `last_action`, leaving only the two-hand joint and PD-target reset task-local. This samples the object's reset orientation uniformly over SO(3) where the Direct task composes X/Y rotations, and reports zero actions on the reset step where the Direct task reports the pre-reset action. ## 2. Camera manager counterpart The camera task runs on PhysX by default: the RTX render modalities require Fabric cloning, which Newton does not support, so the inherited default could not render. Newton remains selectable with `physics=newton_mjwarp` for the state-only observation groups. The feature-extractor observation term ignored its declared `feature_extractor_cfg` parameter and read the environment configuration instead; it now honours the parameter. ## 3. Camera playback moves to `play_mode` `Isaac-Reorient-Cube-Shadow-Camera-Play` and `-Camera-Direct-Play` were the last `-Play` registrations left in `isaaclab_tasks`; every other task moved to `play_mode` in #6676 — Remove the _PLAY configs. Their playback environment count and inference feature extractor now live in `play_mode` overrides on the manager and Direct camera configurations. The override mutates the feature extractor rather than replacing it. Replacing the object resets every field the caller does not name, which silently re-enabled the CNN in `ShadowHandCameraBenchmarkEnvCfg` — a configuration whose entire purpose is to disable it. ## 4. Reorientation action configuration The action term is named through a module path, so loading a task configuration no longer imports the USD bindings. ## Validation Trained at 4096 environments, 1500 iterations, seed 42, on one L40 (`jichuanh-autorun-8gpu`). Success rate is logged per reset batch, so the figures below are the mean and range over the final eight batches rather than a single value. | Task | Backend | Success rate | Range | |---|---|---|---| | `Isaac-Shadow-Handover` (manager) | `newton_mjwarp` | 0.756 | 0.745 - 0.779 | | `Isaac-Shadow-Handover-Direct` (reference) | `newton_mjwarp` | 0.697 | 0.563 - 0.875 | | `Isaac-Shadow-Handover` (manager) | `isaacsim_physx` | 0.999 | 0.992 - 1.000 | The manager task matches the Direct reference it replaces on the same backend. The spread between backends is a pre-existing property of the Newton Shadow Hand actuation, not something this pull request introduces; it is tracked separately. `Isaac-Reorient-Cube-Shadow-Camera` was smoke-tested rather than trained to convergence: 300 iterations at 256 environments through the Kit renderer completes cleanly. Its rendering matrix and golden images are covered separately. `presets=randomized` converges more slowly than the default and does not plateau within 1500 iterations. A longer run is in progress to set an appropriate iteration budget.
Review Map
Summary
Metrics/success_rate), and PhysX/Newton/OVPhysX presets for the assigned dexterous tasks (Allegro + Shadow reorientation, OpenAI FF/LSTM, camera, handover).Direct vs manager training reference (qualifying campaign, seed 42)
Cell format:
reward|eplen|success_rate|{trained}iter(finalTrain/mean_reward,Train/mean_episode_length,Metrics/success_rate).Iteration budgets: 500 (Allegro), 3000 (all other rows). Every cell's source run consumed its full budget — verified cell-by-cell against the runs' event files (all three metrics of each cell match one run's final-iteration scalars). Cells read reward | episode length | success rate | iterations actually trained.
¹ Post-fix handover-Newton rows (Part 4's Newton fixes), full-budget qualifying runs on the warp-first environment code.
² Same success-rate definition as the other reorientation rows. Camera learning takes off late (reward ~400 plateau until a sharp transition; PhysX evidence crosses reward 1000 near iter ~1000, Newton near iter ~2300 — see ³); these rows' policies remained pre-takeoff at the recorded budget, so success at the 0.1 rad tolerance reads 0.00 and reward is the tracked pre-takeoff signal. The criterion itself is unchanged and proven reachable.
³ Full-budget qualifying run on the current branch head (seed 42, rgb_depth preset, Newton renderer, 1225 envs, rl_games workflow with its asymmetric actor-critic recipe): crossed reward 1000 at iter ~2300, tail-50 reward 1307, success rate 0.83 with ≥0.3 sustained for 43 consecutive iterations. Note the workflow difference: the other camera cells (and the rest of the table) are rsl_rl runs; the camera task has so far reached takeoff only under the rl_games recipe (also PhysX evidence: reward 1018, success 0.91 by iter ~1025), while the rsl_rl camera recipe remains pre-takeoff at full budget — a training-recipe sensitivity to be reconciled, not a physics/backend gap. Superseded on the torch tree: the torch-rework rsl_rl camera run reaches takeoff (reward > 1000, sr peak 1.0) by ~1500 iterations — the rsl_rl/rl_games recipe sensitivity no longer reproduces after the rework.
⁴ OVPhysX rows validated 2026-07-21/22 (same protocol: seed 42, 8192 envs, rsl_rl, full budget; env pins
ovphysx==0.4.13+omniverseclient 2.72.1— the paired versions published on pypi.nvidia.com). First OVPhysX validation of these tasks.⁵ The OpenAI variants' stock stepping (
dt=1/60, decimation 3) is unstable on the OVPhysX runtime: grasp contact is lost and the cube free-falls from reset (~9-step episodes from iteration 0), while Kit-PhysX trains the identical config. Probes isolate the physics step size as the sole trigger; every other ovphysx-enabled task in the tree steps at 1/120 or finer. These cells run atdt=1/120, decimation 2 (the state rows' stepping). Success rate is the cross-backend comparison metric for these rows: the finer stepping triples the per-episode step count, so cumulative reward and episode length are not comparable to the dt=1/60 reference cells.Reward scales differ per family; the Direct-vs-manager pair per row is the comparison that matters.
Torch re-validation (post-rework). Verified runs on the torch tree; the table below remains the warp-era campaign record.
Phase-2 requirement fulfillment
🟢 Met 🟡 Partial / queued 🔴 Gap ⚪ Not applicable
118 N/A cells are excluded. Success-related acceptance criteria (P2-C3–C7 and dependent P2-D1–D2) are deferred pending definition; no provisional threshold is treated as a requirement. Reward and episode length remain diagnostic only. Previously validated evidence is retained wherever the code path is unchanged by this diff (the OVPhysX path always used the production assets); only artifacts tied to the removed asset are queued for re-run. Sim-to-sim and sim-to-real are later waves and excluded. Current PR head:
5d7ddbbee82.Allegro cube reorientation — 🟢 49 · 🟡 15 · 88%
Isaac-Reorient-Cube-Allegro-DirectIsaac-Reorient-Cube-AllegroIsaac-Reorient-Cube-Allegro-PlayP2-S1· Assigned registration accounted forP2-S2· Manager-based training environmentP2-S3· Direct/Manager contracts comparableP2-S4· Rendering identified by Camera nameP2-S5· Play/Eval implementation consolidatedP2-B1· New asset evaluated; fallback justifiedP2-B2· PhysX / Newton / OV presets resolveP2-B3· PhysX constructs and trainsP2-B3· Newton constructs and trainsP2-B3· OVPhysX constructs and trainsP2-B4· Supported renderer matrix worksP2-B5· Camera framing and ground are usableP2-C1· RSL-RL configuration providedP2-C2· Success rate logged efficientlyP2-C3· Success criterion defined and configuredP2-C4· Success met within iteration/time budgetP2-C5· Multi-seed sanity checkP2-C6· Policy replay meets success criterionP2-C7· Two-reviewer behavior validationP2-C8· Reward and episode length tracked (non-gating)P2-Q1· Task-code hygieneP2-Q2· Independent package dependenciesP2-Q3· Variants and selections documentedP2-Q4· Open-issue auditP2-Q5· Automated contract checksP2-D1· Current-asset qualifying checkpointP2-D2· Replay/video and publication artifactsP2-D3· Runtime performance recordedP2-D4· Dashboard metrics recordedP2-D5· Recurring benchmark schema compatibleShadow state cube reorientation — 🟢 36 · 🟡 14 · 86%
Isaac-Reorient-Cube-Shadow-DirectIsaac-Reorient-Cube-ShadowP2-S1· Assigned registration accounted forP2-S2· Manager-based training environmentP2-S3· Direct/Manager contracts comparableP2-S4· Rendering identified by Camera nameP2-S5· Play/Eval implementation consolidatedP2-B1· New asset evaluated; fallback justifiedP2-B2· PhysX / Newton / OV presets resolveP2-B3· PhysX constructs and trainsP2-B3· Newton constructs and trainsP2-B3· OVPhysX constructs and trainsP2-B4· Supported renderer matrix worksP2-B5· Camera framing and ground are usableP2-C1· RSL-RL configuration providedP2-C2· Success rate logged efficientlyP2-C3· Success criterion defined and configuredP2-C4· Success met within iteration/time budgetP2-C5· Multi-seed sanity checkP2-C6· Policy replay meets success criterionP2-C7· Two-reviewer behavior validationP2-C8· Reward and episode length tracked (non-gating)P2-Q1· Task-code hygieneP2-Q2· Independent package dependenciesP2-Q3· Variants and selections documentedP2-Q4· Open-issue auditP2-Q5· Automated contract checksP2-D1· Current-asset qualifying checkpointP2-D2· Replay/video and publication artifactsP2-D3· Runtime performance recordedP2-D4· Dashboard metrics recordedP2-D5· Recurring benchmark schema compatibleShadow OpenAI FF cube reorientation — 🟢 36 · 🟡 14 · 86%
Isaac-Reorient-Cube-Shadow-OpenAI-FF-DirectIsaac-Reorient-Cube-Shadow-OpenAI-FFP2-S1· Assigned registration accounted forP2-S2· Manager-based training environmentP2-S3· Direct/Manager contracts comparableP2-S4· Rendering identified by Camera nameP2-S5· Play/Eval implementation consolidatedP2-B1· New asset evaluated; fallback justifiedP2-B2· PhysX / Newton / OV presets resolveP2-B3· PhysX constructs and trainsP2-B3· Newton constructs and trainsP2-B3· OVPhysX constructs and trainsP2-B4· Supported renderer matrix worksP2-B5· Camera framing and ground are usableP2-C1· RSL-RL configuration providedP2-C2· Success rate logged efficientlyP2-C3· Success criterion defined and configuredP2-C4· Success met within iteration/time budgetP2-C5· Multi-seed sanity checkP2-C6· Policy replay meets success criterionP2-C7· Two-reviewer behavior validationP2-C8· Reward and episode length tracked (non-gating)P2-Q1· Task-code hygieneP2-Q2· Independent package dependenciesP2-Q3· Variants and selections documentedP2-Q4· Open-issue auditP2-Q5· Automated contract checksP2-D1· Current-asset qualifying checkpointP2-D2· Replay/video and publication artifactsP2-D3· Runtime performance recordedP2-D4· Dashboard metrics recordedP2-D5· Recurring benchmark schema compatibleShadow OpenAI LSTM cube reorientation — 🟢 36 · 🟡 14 · 86%
Isaac-Reorient-Cube-Shadow-OpenAI-LSTM-DirectIsaac-Reorient-Cube-Shadow-OpenAI-LSTMP2-S1· Assigned registration accounted forP2-S2· Manager-based training environmentP2-S3· Direct/Manager contracts comparableP2-S4· Rendering identified by Camera nameP2-S5· Play/Eval implementation consolidatedP2-B1· New asset evaluated; fallback justifiedP2-B2· PhysX / Newton / OV presets resolveP2-B3· PhysX constructs and trainsP2-B3· Newton constructs and trainsP2-B3· OVPhysX constructs and trainsP2-B4· Supported renderer matrix worksP2-B5· Camera framing and ground are usableP2-C1· RSL-RL configuration providedP2-C2· Success rate logged efficientlyP2-C3· Success criterion defined and configuredP2-C4· Success met within iteration/time budgetP2-C5· Multi-seed sanity checkP2-C6· Policy replay meets success criterionP2-C7· Two-reviewer behavior validationP2-C8· Reward and episode length tracked (non-gating)P2-Q1· Task-code hygieneP2-Q2· Independent package dependenciesP2-Q3· Variants and selections documentedP2-Q4· Open-issue auditP2-Q5· Automated contract checksP2-D1· Current-asset qualifying checkpointP2-D2· Replay/video and publication artifactsP2-D3· Runtime performance recordedP2-D4· Dashboard metrics recordedP2-D5· Recurring benchmark schema compatibleShadow Camera cube reorientation — 🟢 100 · 🟡 28 · 89%
Isaac-Reorient-Cube-Shadow-Camera-DirectIsaac-Reorient-Cube-Shadow-CameraIsaac-Reorient-Cube-Shadow-Camera-Direct-PlayIsaac-Reorient-Cube-Shadow-Camera-PlayIsaac-Reorient-Cube-Shadow-Camera-Benchmark-DirectIsaac-Reorient-Cube-Shadow-Camera-BenchmarkP2-S1· Assigned registration accounted forP2-S2· Manager-based training environmentP2-S3· Direct/Manager contracts comparableP2-S4· Rendering identified by Camera nameP2-S5· Play/Eval implementation consolidatedP2-B1· New asset evaluated; fallback justifiedP2-B2· PhysX / Newton / OV presets resolveP2-B3· PhysX constructs and trainsP2-B3· Newton constructs and trainsP2-B3· OVPhysX constructs and trainsP2-B4· Supported renderer matrix worksP2-B5· Camera framing and ground are usableP2-C1· RSL-RL configuration providedP2-C2· Success rate logged efficientlyP2-C3· Success criterion defined and configuredP2-C4· Success met within iteration/time budgetP2-C5· Multi-seed sanity checkP2-C6· Policy replay meets success criterionP2-C7· Two-reviewer behavior validationP2-C8· Reward and episode length tracked (non-gating)P2-Q1· Task-code hygieneP2-Q2· Independent package dependenciesP2-Q3· Variants and selections documentedP2-Q4· Open-issue auditP2-Q5· Automated contract checksP2-D1· Current-asset qualifying checkpointP2-D2· Replay/video and publication artifactsP2-D3· Runtime performance recordedP2-D4· Dashboard metrics recordedP2-D5· Recurring benchmark schema compatibleShadow handover — 🟢 34 · 🟡 16 · 84%
Isaac-Shadow-Handover-DirectIsaac-Shadow-HandoverP2-S1· Assigned registration accounted forP2-S2· Manager-based training environmentP2-S3· Direct/Manager contracts comparableP2-S4· Rendering identified by Camera nameP2-S5· Play/Eval implementation consolidatedP2-B1· New asset evaluated; fallback justifiedP2-B2· PhysX / Newton / OV presets resolveP2-B3· PhysX constructs and trainsP2-B3· Newton constructs and trainsP2-B3· OVPhysX constructs and trainsP2-B4· Supported renderer matrix worksP2-B5· Camera framing and ground are usableP2-C1· RSL-RL configuration providedP2-C2· Success rate logged efficientlyP2-C3· Success criterion defined and configuredP2-C4· Success met within iteration/time budgetP2-C5· Multi-seed sanity checkP2-C6· Policy replay meets success criterionP2-C7· Two-reviewer behavior validationP2-C8· Reward and episode length tracked (non-gating)P2-Q1· Task-code hygieneP2-Q2· Independent package dependenciesP2-Q3· Variants and selections documentedP2-Q4· Open-issue auditP2-Q5· Automated contract checksP2-D1· Current-asset qualifying checkpointP2-D2· Replay/video and publication artifactsP2-D3· Runtime performance recordedP2-D4· Dashboard metrics recordedP2-D5· Recurring benchmark schema compatible