Summary
Enable manipulation tasks to run on the OVPhysX backend. Integration task with staged approach.
Target environments (in order):
- `Isaac-Repose-Cube-Allegro-Direct-v0` — needs Articulation + RigidObject only
- `Isaac-Lift-Cube-Franka-v0` — adds FrameTransformer
- `Isaac-Stack-Cube-Franka-v0` — adds RigidObjectCollection
What Needs to Work
- Robot arm control (joint position targets)
- Object interaction (contact forces between gripper and objects)
- Frame tracking (end-effector pose relative to base)
- Object state observations
- Episode resets (both robot and objects)
- Gripper control (prismatic joints with force limits)
Dependencies
Spec
Full design spec: `docs/superpowers/specs/2026-04-20-ovphysx-manipulation-design.md`
Parent issue: #5315
📋 Full Design Spec (click to expand)
OVPhysX Manipulation Support — Design Spec
Issue: #5322 — [OVPHYSX] Support for manipulation
Date: 2026-04-20
Status: Draft
Summary
Enable manipulation tasks to run on the OVPhysX backend. Like rough terrain locomotion, this is an integration task that validates core components work together for robotic manipulation.
Target environments:
Isaac-Repose-Cube-Allegro-Direct-v0 (in-hand reorientation — simplest, uses Articulation + RigidObject)
Isaac-Lift-Cube-Franka-v0 (cube lifting — uses Articulation + RigidObject + FrameTransformer)
Isaac-Stack-Cube-Franka-v0 (cube stacking — uses Articulation + RigidObjectCollection + FrameTransformer)
Prerequisites
| Component |
Issue |
Required For |
| Articulation |
PR #4852 (done) |
Robot arm control |
| RigidObject |
#5316 |
Manipulated objects |
| RigidObjectCollection |
#5317 |
Multi-object tasks (stacking) |
| FrameTransformer |
#5320 |
End-effector tracking |
| ContactSensor |
New issue |
Grasp detection (DexSuite) |
| SceneDataProvider |
New issue |
Visualization |
Staged approach:
- Allegro hand repose — needs Articulation + RigidObject only (fewest deps)
- Franka cube lift — adds FrameTransformer
- Franka cube stack — adds RigidObjectCollection
What Needs to Work
- Robot arm control — Joint position targets for Franka/Allegro
- Object interaction — RigidObject responds to contact forces from gripper
- Frame tracking — FrameTransformer reports end-effector pose relative to base
- Object state observations — Position, orientation, velocity of manipulated objects
- Episode resets — Reset both robot and object to initial states
- Gripper control — Open/close for Franka parallel jaw (action space)
Potential Blockers
Object-robot contact: Verify ovphysx handles articulation-rigid body contact correctly. The DexCube must respond to forces from the Allegro hand or Franka gripper.
Gripper joint limits: Franka gripper has prismatic joints with force limits. Verify ovphysx joint limit and force clamping works.
Implementation Steps
-
Allegro hand repose (first — validates RigidObject):
- Add OVPhysX config variant
- Run for 100 steps, verify cube falls and hand contacts it
- Verify resets work
-
Franka cube lift (second — validates FrameTransformer):
- Add OVPhysX config variant
- Verify EE frame transformer outputs sensible relative poses
- Verify cube pickup physics
-
Franka cube stack (third — validates RigidObjectCollection):
- Add OVPhysX config variant
- Verify multi-object state tracking
- Verify independent object resets
Task Configuration Changes
@configclass
class FrankaLiftOvPhysxEnvCfg(FrankaCubeLiftEnvCfg):
sim: SimulationCfg = SimulationCfg(
physics_cfg=OvPhysxCfg(...)
)
Validation
# Stage 1: Allegro hand
./isaaclab.sh -p source/isaaclab_tasks/isaaclab_tasks/direct/allegro_hand/allegro_hand_env.py \
--num_envs 4
# Stage 2: Franka lift (manager-based, needs rsl_rl or similar)
./isaaclab.sh -p -m pytest source/isaaclab_tasks/test/test_environments.py \
-k "Isaac-Lift-Cube-Franka-v0"
# Stage 3: Franka stack
./isaaclab.sh -p -m pytest source/isaaclab_tasks/test/test_environments.py \
-k "Isaac-Stack-Cube-Franka-v0"
Training validation
- Run 10K steps of Allegro hand repose training
- Verify reward signal and learning
Dependencies
Estimated Scope
- OVPhysX task config files: ~50 lines each (3 configs)
- Integration bug fixes: variable
- No new core implementation
Summary
Enable manipulation tasks to run on the OVPhysX backend. Integration task with staged approach.
Target environments (in order):
What Needs to Work
Dependencies
Spec
Full design spec: `docs/superpowers/specs/2026-04-20-ovphysx-manipulation-design.md`
Parent issue: #5315
📋 Full Design Spec (click to expand)
OVPhysX Manipulation Support — Design Spec
Issue: #5322 — [OVPHYSX] Support for manipulation
Date: 2026-04-20
Status: Draft
Summary
Enable manipulation tasks to run on the OVPhysX backend. Like rough terrain locomotion, this is an integration task that validates core components work together for robotic manipulation.
Target environments:
Isaac-Repose-Cube-Allegro-Direct-v0(in-hand reorientation — simplest, uses Articulation + RigidObject)Isaac-Lift-Cube-Franka-v0(cube lifting — uses Articulation + RigidObject + FrameTransformer)Isaac-Stack-Cube-Franka-v0(cube stacking — uses Articulation + RigidObjectCollection + FrameTransformer)Prerequisites
Staged approach:
What Needs to Work
Potential Blockers
Object-robot contact: Verify ovphysx handles articulation-rigid body contact correctly. The DexCube must respond to forces from the Allegro hand or Franka gripper.
Gripper joint limits: Franka gripper has prismatic joints with force limits. Verify ovphysx joint limit and force clamping works.
Implementation Steps
Allegro hand repose (first — validates RigidObject):
Franka cube lift (second — validates FrameTransformer):
Franka cube stack (third — validates RigidObjectCollection):
Task Configuration Changes
Validation
Training validation
Dependencies
Estimated Scope