Tasks Overview#
RoboEval includes 8 task families with 28 total variations designed to test different aspects of bimanual manipulation.
Task Families#
Task Family |
Variations |
Description |
|---|---|---|
4 |
Grasp pot by handles and lift without tilting |
|
3 |
Stack books on shelves requiring precise placement |
|
4 |
Pick books from table and transfer between hands |
|
4 |
Stack blocks requiring bimanual coordination |
|
5 |
Transfer cube between robot hands (includes vertical handover) |
|
3 |
Rotate valve wheel with continuous bimanual coordination |
|
4 |
Pack objects into a box requiring spatial reasoning |
|
5 |
Lift tray with objects maintaining balance (includes drag-over variant) |
Variation Types#
Most tasks have 4 standard variations:
- Base - Static configuration
Objects appear in same position every episode
- Position - Positional randomization
Object positions randomized within workspace
- Orientation - Rotational randomization
Object orientations randomized (typically ±30° around Z-axis)
- Position and Orientation - Full randomization
Both position and orientation randomized
Quick Reference#
# Lift Pot (4 variations)
from roboeval.envs.lift_pot import (
LiftPot, LiftPotPosition,
LiftPotOrientation, LiftPotPositionAndOrientation
)
# Stack Single Book Shelf (3 variations)
from roboeval.envs.stack_books import (
StackSingleBookShelf, StackSingleBookShelfPosition,
StackSingleBookShelfPositionAndOrientation
)
# Pick Single Book From Table (4 variations)
from roboeval.envs.stack_books import (
PickSingleBookFromTable, PickSingleBookFromTablePosition,
PickSingleBookFromTableOrientation, PickSingleBookFromTablePositionAndOrientation
)
# Stack Two Blocks (4 variations)
from roboeval.envs.manipulation import (
StackTwoBlocks, StackTwoBlocksPosition,
StackTwoBlocksOrientation, StackTwoBlocksPositionAndOrientation
)
# Cube Handover (5 variations)
from roboeval.envs.manipulation import (
CubeHandover, CubeHandoverPosition, CubeHandoverOrientation,
CubeHandoverPositionAndOrientation, VerticalCubeHandover
)
# Rotate Valve (3 variations)
from roboeval.envs.rotate_utility_objects import (
RotateValve, RotateValvePosition, RotateValvePositionAndOrientation
)
# Pack Box (4 variations)
from roboeval.envs.pack_objects import (
PackBox, PackBoxPosition, PackBoxOrientation, PackBoxPositionAndOrientation
)
# Lift Tray (5 variations)
from roboeval.envs.lift_tray import (
LiftTray, LiftTrayPosition, LiftTrayOrientation,
LiftTrayPositionAndOrientation, DragOverAndLiftTray
)
Task Progression Stages#
Each task defines progression stages for fine-grained evaluation:
Example: LiftPot
Stage 0: Initial state
Stage 1: Left gripper grasping pot
Stage 2: Right gripper grasping pot
Stage 3: Pot lifted 0.1m above table
Stage 4: Success (pot stable and level)
Access stages during execution:
obs, reward, terminated, truncated, info = env.step(action)
current_stage = info['metrics']['stage']
Metrics#
All tasks provide rich metrics:
Success rate - Binary task completion
Task progression - Furthest stage reached
Coordination quality - Bimanual synchronization
Trajectory efficiency - Path length and smoothness
Safety - Collision avoidance
See Metrics for details.
Choosing a Task#
For Learning Bimanual Coordination:
StackTwoBlocks- Basic block stackingLiftPot- Coordinated liftingLiftTray- Balance and coordination
For Precision and Placement:
PickSingleBookFromTable- Precise grasping and placementStackSingleBookShelf- Shelf alignmentPackBox- Spatial reasoning
For Continuous Coordination:
RotateValve- Continuous bimanual motionDragOverAndLiftTray- Complex multi-stage manipulation
For Hand-to-Hand Transfer:
CubeHandover- Horizontal transferVerticalCubeHandover- Vertical transfer
For Testing Generalization:
Use
Positionvariations for position robustnessUse
Orientationvariations for rotation robustnessUse
PositionAndOrientationfor full randomization