DICE: Continuous Dexterous In-Hand Die Reorientation via Asymmetric Actor-Critic PPO
Autonomous sequential reorientation of a 6-faced die using a 20-DoF Shadow Hand in Isaac Lab across nominal, symmetric, and adverse physical regimes
Dexterous in-hand manipulation, reorienting complex geometries within an articulated robotic hand without external fixtures or gravity drops, remains one of the core frontiers in robotics. The challenge stems from high-dimensional continuous action spaces (20 actuated degrees of freedom), discontinuous multi-point contact dynamics, and the constant risk of object loss under slippery or shifting physical properties.
Most conventional in-hand manipulation benchmarks treat reorientation as a single-shot task: an object begins in the palm, the controller turns it toward a fixed target orientation, and the episode terminates upon reaching the target. While useful for isolated motion analysis, single-shot training produces policies that cannot chain multiple reorientations together, as the terminal hand configuration for one command is rarely a stable starting posture for the next.
DICE formulates in-hand manipulation as a continuous, multi-command Markov Decision Process (MDP). A 20-DoF anthropomorphic Shadow Hand receives a continuous stream of semantic face-up commands (faces 1 through 6 on a standard die). Upon successfully stabilizing a requested face upward, the environment instantly issues a new non-identical command without resetting the hand or object, forcing the policy to discover robust, reusable gaits for continuous finger gaiting and dynamic in-hand rolling.
Video Demonstrations
The following rollouts illustrate the learned behavior across nominal, variation, and adverse conditions. All clips are presented at 0.5× playback speed (rendered from 60 Hz control trajectories) to enable close inspection of finger contact patterns and gait transitions. Seed 9 is used consistently as the representative presentation seed across all three rollouts.
1. Nominal Semantic Success (Oblique & Top-Down Views)
The target-face indicator shifts only after the commanded face aligns within \(16.2^\circ\) (\(\text{Alignment} \ge 0.96\)), velocity settles under \(1.0\text{ rad/s}\), and the posture is stabilized for all 20 consecutive confirmation steps. The synchronized top-down camera provides immediate visual confirmation of the upward-facing pip patterns.
2. Symmetric Physics Variation (\(\pm 20\%\) Mass & Friction)
The side-by-side comparison confirms that the policy maintains smooth dynamic finger coordination and reorientation speed under \(\pm 20\%\) perturbations in mass, static friction, and dynamic friction.
3. Adverse Retention Boundary (\(1.5\times\) Mass, \(0.7\times\) Friction)
The adverse rollout captures the exact retention fatigue mechanism: the hand completes 10 sequential reorientations rapidly, but the reduced friction margin causes gradual slip over repeated contact handoffs, eventually leading to a drop at \(t = 8.07\text{ s}\).
Task Formulation & Target Sequencing
The object is a standard 6-faced die with opposite faces summing to seven:
\[\mathbf{n}_1 = [0, 0, 1]^\top, \quad \mathbf{n}_2 = [1, 0, 0]^\top, \quad \mathbf{n}_3 = [0, 1, 0]^\top\] \[\mathbf{n}_4 = [0, -1, 0]^\top, \quad \mathbf{n}_5 = [-1, 0, 0]^\top, \quad \mathbf{n}_6 = [0, 0, -1]^\top\]Given the current cube orientation represented by rotation matrix \(R_{\text{cube}} \in \mathrm{SO}(3)\), the commanded face normal \(k \in \{1,\dots,6\}\) is projected into world coordinates:
\[\mathbf{n}_{\text{world}} = R_{\text{cube}} \mathbf{n}_k\]
Geometric Target Encoding
To provide the policy with smooth, frame-consistent steering information, the target geometry is parameterized by:
- World-Frame Commanded Normal: \(\mathbf{n}_{\text{world}} \in \mathbb{R}^3\).
- Cosine Alignment: The projection of the commanded face onto the world-up vector \(\hat{\mathbf{z}} = [0, 0, 1]^\top\): \(\text{Alignment} = \mathbf{n}_{\text{world}} \cdot \hat{\mathbf{z}} = \cos \theta\)
- Cross-Product Rotation Axis Error: The axis around which the die must rotate to bring the requested face to the top: \(\mathbf{e}_{\text{axis}} = \mathbf{n}_{\text{world}} \times \hat{\mathbf{z}}\)
Three-Gate Confirmation & Seamless Transition
A command is completed only when the policy satisfies three simultaneous physical gates for 20 consecutive simulation steps (\(h_t \ge 20\), approximately \(0.333\text{ s}\) at 60 Hz control frequency):
- Orientation Gate: \(\text{Alignment} \ge 0.9\) (\(\theta \le 25.8^\circ\)).
- Position Gate: In-hand spatial displacement \(\|\mathbf{p}_{\text{cube}} - \mathbf{p}_{\text{target}}\| \le 0.05\text{ m}\).
- Settling Velocity Gate: Cube angular velocity \(\|\boldsymbol{\omega}_{\text{cube}}\| \le 1.0\text{ rad/s}\).
The moment \(h_t\) reaches 20, the agent receives a command completion bonus, and a new target face \(k_{\text{new}} \neq k_{\text{current}}\) is sampled uniformly. The policy must immediately transition to turning the die toward the new target without resetting the simulation state.
Reward Design: Overcoming the “Loitering” Trap
A classic pathology in goal-conditioned continuous manipulation is policy loitering. When using static posture rewards proportional to alignment:
\[r_{\text{static}}(s) \propto \max(0, \cos \theta)\]A policy that rotates the die to a partial angle (such as \(45^\circ\), where \(\cos 45^\circ \approx 0.707\)) receives a constant positive reward on every control step. Over a 1,440-step episode, simply sitting motionless at \(45^\circ\) yields hundreds of reward points without risking an object drop. When faced with the difficult challenge of breaking contact to execute a full flip, gradient descent readily falls into this suboptimal local minimum.
[ Static Posture Reward ]
Sitting still at 45° ────────► Steady +0.707 reward per step (Farms 1,000+ points with zero drop risk)
Attempting final flip ───────► High risk of dropping die (-100 penalty)
Result ──────────────────────► Policy freezes in place ("Loitering Pathology")
[ DICE Progress Shaping ]
Sitting still at 45° ────────► Δθ = 0 ──► Exactly 0.0 reward
Rotating toward target ──────► Δθ > 0 ──► Positive proportional progress reward
Rotating away from target ───► Δθ < 0 ──► Negative penalty
Dropping hold early ─────────► Accumulated hold shaping is clawed back immediately
To eliminate static reward farming, DICE decomposes the objective into dynamic progress terms and strict clawback shaping:
1. Angular-Error Progress Reward
The absolute angular error is computed via:
\[\theta_t = \arccos\left(\operatorname{clamp}(\mathbf{n}_{\text{world}} \cdot \hat{\mathbf{z}}, -1, 1)\right)\]The policy is rewarded strictly on the differential reduction in angular error:
\[r_{\text{progress}} = 40 \cdot (\theta_{t-1} - \theta_t)\]- Stationary state (\(\theta_t = \theta_{t-1}\)): Yields identically zero reward.
- Active reorientation (\(\theta_t < \theta_{t-1}\)): Provides a smooth, linear positive gradient regardless of whether the die is far from or close to the target.
- Backwards rotation (\(\theta_t > \theta_{t-1}\)): Incurs an immediate negative penalty.
2. Signed Hold Progress Shaping
To incentivize the 20-step stabilization gate without creating a farmable hold reward, hold progress is shaped differentially:
\[r_{\text{hold}} = c_{\text{hold}} \cdot \frac{h_t - h_{t-1}}{H_{\text{hold}}}\]where \(H_{\text{hold}} = 20\). If the policy sustains the hold (\(h_t = h_{t-1} + 1\)), it receives a positive increment. Crucially, if the hold breaks before reaching 20 (\(h_t = 0\) while \(h_{t-1} > 0\)), the numerator becomes negative, clawing back all accumulated hold shaping.
3. Command Completion & Drop Bonuses
- Command Success: \(+250\) raw bonus (\(+25\) scaled).
- Episode Drop Penalty: \(-100\) raw penalty (triggered if object height falls below the palm threshold).
4. Raw-Action Boundary Regularization
To prevent policy saturation and action-clipping aliasing while preserving bounded joint actuator targets, the policy is penalized for raw Gaussian outputs exceeding \(|a| > 0.9\):
\[r_{\text{bound}} = -\sum_{i=1}^{20} \left( \max(0, |a_i| - 0.9) \right)^2\]Actor-Critic Architecture
In complex robotic systems, there is a stark gap between what is observable on a deployed physical robot versus what is accessible inside a physics simulator. DICE addresses this using an Asymmetric Actor-Critic architecture:
┌────────────────────────────────────────────────────────────┐
│ PHYSX SIMULATION ENVIRONMENT │
│ (Isaac Lab 2.3.2 / 2,048 Vectorized Envs) │
└─────────────────────────────┬──────────────────────────────┘
│
┌──────────────────────┴──────────────────────┐
▼ ▼
┌─────────────────────────────┐ ┌─────────────────────────────┐
│ DEPLOYABLE ACTOR (126-D) │ │ PRIVILEGED CRITIC (247-D) │
├─────────────────────────────┤ ├─────────────────────────────┤
│ Hand Joint Angles (24)│ │ Full Actor Features (126)│
│ Hand Joint Velocities (24)│ │ Fingertip 6D Wrenches (30)│
│ Applied Target Buffer (20)│ │ Fingertip 6D Velocities (30)│
│ Fingertip Pos (Cube) (15)│ │ Local Object Position (3)│
│ Fingertip Vel (Cube) (15)│ │ World Object Quaternion (4)│
│ Relative Object Pose (9)│ │ World Object Linear Vel (3)│
│ Continuous 6D Rotation (6)│ │ World Object Angular Vel (3)│
│ Commanded Normal & Align (4)│ │ Raw Hand Joint Angles (24)│
│ Rotation Axis Error (3)│ │ Raw Hand Joint Vels (24)│
│ Hold Counter Progress (1)│ │ (Centralized Privileged │
│ Bounded Tactile Proxies (5)│ │ Physics Supervision) │
└──────────────┬──────────────┘ └──────────────┬──────────────┘
│ │
▼ ▼
┌─────────────────────────────┐ ┌─────────────────────────────┐
│ ACTOR NETWORK π(a|s) │ │ CRITIC NETWORK V(s) │
├─────────────────────────────┤ ├─────────────────────────────┤
│ [512, 512, 256, 128] MLP │ │ [512, 512, 256, 128] MLP │
│ ELU Activations + LayerNorm│ │ ELU Activations + LayerNorm│
└──────────────┬──────────────┘ └──────────────┬──────────────┘
│ │
▼ ▼
┌─────────────────────────────┐ ┌─────────────────────────────┐
│ 20-DoF Joint Target Action│ │ Generalized Advantage (GAE)│
│ (Executed on Shadow Hand) │ │ (Centralized PPO Update) │
└─────────────────────────────┘ └─────────────────────────────┘
- Deployable Actor Observation (126 Dimensions):
- Hand Proprioception (48-D): 24 normalized joint angles (\([-1, 1]\)) and 24 scaled joint velocities (\(0.2 \times \dot{q}\)).
- Controller State (20-D): Previous smoothed joint targets applied to the low-level actuator.
- Cube-Frame Fingertip Kinematics (30-D): Relative 3D positions and linear velocities of all 5 fingertips expressed directly in the cube’s local coordinate frame (\(R_{\text{cube}}^\top (\mathbf{p}_{\text{tip}} - \mathbf{p}_{\text{cube}})\)).
- Cube Kinematics (9-D): Translation relative to nominal in-hand rest position, linear velocity, and angular velocity.
- Cube Orientation (6-D): Continuous 6D rotation representation (first two column vectors of \(R_{\text{cube}}\)), eliminating quaternion sign ambiguities.
- Command Geometry (7-D): Commanded normal in world coordinates (3-D), cosine alignment (1-D), and rotation axis error (3-D).
- Hold Progress (1-D): Normalized step count \(h_t / 20 \in [0, 1]\).
- Fingertip Load Proxies (5-D): Vector-norm magnitudes of incoming joint reaction wrenches scaled and clamped into \([0, 1]\) to serve as tactile contact proxies.
- Privileged Critic State (247 Dimensions):
- Contains the full 126-D actor observation.
- Ground-Truth Contact Wrenches (30-D): Full 6D incoming force and torque vectors for all 5 fingertips in body frame.
- Spatial Velocities (30-D): Full 6D linear and angular spatial velocities for all 5 fingertips.
- Ground-Truth Dynamics (13-D): Environment-local position, world-frame \((w, x, y, z)\) quaternion, and linear/angular velocities.
- Raw Joint States (48-D): Unnormalized joint positions and velocities.
By training an asymmetric value function \(V(s)\), the critic accurately estimates state values and provides low-variance generalized advantage estimates (\(\text{GAE}(\gamma=0.99, \lambda=0.95)\)) without requiring the actor to rely on unmeasurable privileged states at deployment time.
Training Pipeline & Hyperparameters
Training is executed using the GPU-accelerated RSL-RL library integrated into NVIDIA Isaac Lab (Isaac Sim 5.1 / PhysX 5.3):
| Hyperparameter | Value | Description |
|---|---|---|
| Simulation Environment | DICE-Shadow-Train-v0 | 20-DoF Shadow Hand with stock instanceable DexCube |
| Concurrent Environments | 2,048 | Fully vectorized GPU environments |
| Control Frequency | 60 Hz | Control step \(\Delta t = 1/60\text{ s}\) with PhysX sub-stepping |
| Rollout Length | 32 steps / env | 65,536 transitions per PPO iteration |
| Total Iterations | 5,000 | 327.68 million total environment transitions |
| Hardware | NVIDIA L4 GPU | 23.7 GB GPU VRAM (cloud headless workflow) |
| Actor Architecture | MLP [512, 512, 256, 128] | ELU activations, observation normalization |
| Critic Architecture | MLP [512, 512, 256, 128] | ELU activations, state normalization |
| Optimizer | Adam (\(\text{lr} = 3 \times 10^{-4}\)) | Fixed learning rate, no decay schedule |
| Discount & GAE | \(\gamma = 0.99, \lambda = 0.95\) | Generalized Advantage Estimation |
| Exploration Noise | \(\sigma_{\text{init}} = 0.6\) | Learned diagonal Gaussian std, zero entropy bonus |
| Action Clamping | \([-1, 1]\) | Bounded controller target space |
The 5-checkpoint nominal screening sweep and candidate selection metrics across the 5,000 iterations are documented in full within the GitHub Repository.
Empirical Evaluation
To evaluate policy robustness, the frozen model_4000.pt checkpoint was tested for 1,000 full 24-second episodes (1,440 steps) across three distinct physical regimes:
- Nominal Condition (
DICE-Shadow-Eval-v0): Nominal 60 mm cube mass (\(0.216\text{ kg}\)) and default friction coefficients. - Symmetric Held-Out Physics Variation (
DICE-Shadow-Robust-v0): Object mass and static/dynamic friction coefficients randomly sampled within \(\pm 20\%\) of nominal (\([0.8, 1.2]\)), with dynamic friction constrained to not exceed static friction. - Adverse Heavy/Slippery Stress Condition (
DICE-Shadow-Adverse-v0): A deliberate worst-case physical corner with \(1.5\times\) object mass and \(0.7\times\) static and dynamic friction.
[ EVALUATION BENCHMARK: 1,000 EPISODES PER CONDITION ]
Nominal Condition (Mass 1.0x, Friction 1.0x)
├─ Command Completion: 97.09%
├─ Drop Rate: 9.70% (CI: 8.02%–11.69%)
└─ Median Latency: 0.617 s (90.54 cmds/min)
Symmetric Held-Out Variation (Mass ±20%, Friction ±20%)
├─ Command Completion: 97.07% (Δ = -0.02%)
├─ Drop Rate: 9.50% (CI: 7.84%–11.48%)
└─ Median Latency: 0.617 s (89.00 cmds/min)
► Result: Zero statistically resolvable degradation under ±20% material shifts
Adverse Heavy/Slippery Stress (Mass 1.5x, Friction 0.7x)
├─ Command Completion: 95.92% (Δ = -1.17%)
├─ Drop Rate: 45.30% (CI: 42.24%–48.40%)
└─ Median Latency: 0.650 s (82.00 cmds/min)
► Result: High per-command success retained; long-horizon retention fatigue exposed
Detailed Benchmark Comparison
| Metric | Nominal | Symmetric Physics Variation (\(\pm 20\%\)) | Adverse Stress (\(1.5\times\) mass, \(0.7\times\) friction) |
|---|---|---|---|
| Evaluation Episodes | 1,000 | 1,000 | 1,000 |
| Successful / Issued Commands | 33,334 / 34,334 | 33,072 / 34,072 | 23,514 / 24,514 |
| Issued-Command Completion | 97.09% | 97.07% | 95.92% |
| Episode Drop Rate | 9.70% | 9.50% | 45.30% |
| Wilson 95% CI for Drop Rate | \([8.02\%, 11.69\%]\) | \([7.84\%, 11.48\%]\) | \([42.24\%, 48.40\%]\) |
| Mean Completed Commands / Episode | 33.334 | 33.072 | 23.514 |
| Median Completed Commands / Episode | 37 | 37 | 32 |
| Throughput (Commands / Sim Minute) | 90.536 | 89.000 | 81.996 |
| Median Command Latency | 0.617 s | 0.617 s | 0.650 s |
| Episodes Completing \(\ge 1\) Command | 97.40% | 98.10% | 96.70% |
| Minimum Per-Face Completion | 96.88% (Face 3) | 96.80% (Face 5) | 95.11% (Face 6) |
| Deterministic Action OOB Rate | 20.77% | 20.77% | 20.91% |
Note on Command Completion Metric: Because new commands are issued immediately after each success, exactly one command remains active when an episode reaches timeout. Issued-command completion is defined as:
\[\text{Completion Rate} = \frac{\text{Completed Commands}}{\text{Completed Commands} + \text{Episodes}}\]Thus, in the adverse condition, \(23,514 / 24,514 = 95.92\%\) indicates that when the policy is executing a command, it overwhelmingly succeeds; it is not a claim that drops never occur.
Deep Failure Decomposition: Long-Horizon Retention Fatigue
The jump in drop rate under the adverse condition (from \(9.70\%\) to \(45.30\%\)) provides a transparent look into the policy’s physical boundary. Decomposing the 453 adverse drop episodes reveals that this is an accumulated long-horizon retention breakdown, not an inability to reorient the die:
| Adverse Drop Breakdown | Value |
|---|---|
| Total Evaluated Episodes | 1,000 |
| Total Dropped Episodes | 453 (45.3%) |
| Episodes completing \(\ge 1\) command before dropping | 424 (93.6% of drops) |
| Episodes completing \(\ge 10\) commands before dropping | 219 (48.3% of drops) |
| Episodes completing \(\ge 20\) commands before dropping | 109 (24.1% of drops) |
| Episodes completing \(\ge 30\) commands before dropping | 40 (8.8% of drops) |
| Mean completed commands prior to drop | 11.49 commands |
| Median completed commands prior to drop | 9 commands |
| Median time elapsed before drop | 7.28 seconds |
| Mean commands in surviving episodes (no drop) | 33.47 commands |
Under \(1.5\times\) mass and \(0.7\times\) friction, the tangential friction cone narrows while the inertial forces required to accelerate the die increase. The policy successfully executes 9 to 11 consecutive reorientations on average before a momentary slip compounds into an unrecoverable grasp failure.
Key Takeaways
- Continuous Multi-Command MDP: Conditioning on dynamic goal sequences without episode resets trains agents to find reusable, steady-state manipulation gaits rather than brittle, terminal one-shot trajectories.
- Progress-Based Reward Shaping: Replacing static alignment bonuses with differential angular progress (\(\Delta \theta_t\)) and clawback hold shaping cleanly eliminates policy loitering and enforces active manipulation.
- Asymmetric State Representation: Supplying ground-truth 6D fingertip wrenches and spatial velocities exclusively to the centralized critic provides high-quality value baselines while keeping the 126-D actor fully deployable.
- Transparent Robustness Boundaries: Rigorous testing across 1,000-episode panels reveals that moderate (\(\pm 20\%\)) material shifts are fully absorbed without performance loss, while severe heavy/slippery stress exposes a long-horizon retention boundary that provides a concrete roadmap for future domain randomization.
All code, environment definitions, training scripts, and evaluation logs are open-source in the GitHub Repository.