One robot holds a peg, the other a plate with a hole; get the peg through the hole
robosuite-twoarm-peginhole-pandarobosuiteFranka PandaManipulationhard
Instruction
Two Franka Emika Panda (7-DoF) with its parallel-jaw gripper arms face each other across a table: robot0 on the -y side, robot1 on the +y side. The scene is robosuite's TwoArmPegInHole environment (MuJoCo).
Goal: Robot0 holds a peg (a cylinder fixed to its hand) and robot1 holds a square plate with a hole (fixed to its hand). Bring them together so the peg passes through the hole. robosuite's TwoArmPegInHole check: the peg's axis is nearly parallel to the hole's axis (|cos| > 0.95), the peg's centre is within 6 cm of the hole's axis, and it sits between 12 cm in front of and 14 cm behind the hole. Both must still hold after robo done.
Call robo done when finished; the check is made after the robot then holds still for 10 steps, so the result must last.
This robot
- The action has 12 numbers: robot0's
DX DY DZ DROLL DPITCH DYAW, then robot1's, each in [-1, 1]: robosuite's OSC_POSE end-effector commands, 20 steps per second, all in the world frame. DX/DY/DZ = 1.0 asks for a 5 cm move (held at 1.0 a hand travels about 1.1 cm per step); DROLL/DPITCH/DYAW rotate that hand about the world x/y/z axes (1.0 asks for 0.5 rad). robo move-toandrobo gripare not available (two robots); userobo act.- World frame, metres: +x points away from the table edge between the robots, +y to the robot1 side, +z up.
robo observefields: for each robot i in 0, 1:roboti_hand_pos,roboti_hand_quat(x, y, z, w), and, if it has a gripper,roboti_gripper_open(finger-pad distance, metres) androboti_gripper_yaw_deg(direction of the fingertip line in the table plane, degrees from +x, in [-90, 90)) (neither robot has a gripper);peg_pos(centre of the peg),peg_axis(unit vector along the peg),peg_quat,hole_pos,hole_quat,hole_center(centre of the hole),hole_axis(unit normal of the plate through the hole), and robosuite's own alignment numbers:peg_hole_cos(|cos| of the angle between the two axes),peg_hole_d(distance of the peg's centre from the hole's axis, m),peg_hole_t(position of the hole's centre along the peg's axis relative to the peg's centre, m).robo observe --imagesaves thefrontviewcamera; add--camera robot0_eye_in_handfor the wrist camera. Images are 320x320.- The step budget is 500 steps.
- The action has 12 numbers: 6 for robot0, then 6 for robot1 (no grippers). At the start the peg points down and the plate stands upright, so the axes are about 90 degrees apart; turning one wrist the whole way is hard, so share the turn between the two arms.
How the robot is controlled and scored
You are controlling a simulated robot. Read the task below, then solve it by running the robo command in your shell (start with robo info and robo observe). Keep going until the task is done, then call robo done once. Do not stop to ask questions; there is no human to answer.
How to control the robot
You are the robot's policy. You act only through the robo command in your shell. There is no other way to move the robot, and you cannot read or change the simulator, the scoring, or other files to succeed; the episode server judges the final physical state itself.
robo info # action space, available skills, step budget
robo observe # robot and object state as numbers
robo observe --image # also saves a camera image and prints its path (open it to look)
robo act DX DY DZ GRIP [--repeat N] # low-level action, applied N times (N <= 50)
robo move-to X Y Z [--grip G] # skill: move the gripper toward a point (if enabled for this task)
robo grip G [--steps N] # skill: hold position and set the gripper (+1 close, -1 open)
robo done "short summary" # end the episode and ask for scoring
robo give-up "reason" # end the episode without claiming success- Positions are in metres in the world frame (x, y on the table plane, z up).
- The episode has a fixed step budget (see
robo info); every simulated step counts, including skills. - Unless the task says otherwise, success is judged about 10 steps after you call
robo done, with the robot holding still, so the goal must still be true when the robot stops. - Work in small steps and re-observe after each motion. Call
robo doneexactly once when finished.
Run this task
ROBOUSE_ORACLE_TOKEN=$(openssl rand -hex 16) \
bench eval run \
-d arise-initiative/robosuite@0.2 \
--registry https://robouse.ai/hub/registry.json \
--agent oracle \
--include robosuite-twoarm-peginhole-pandaPinned to robohub commit e472b1a1e041. The verifier and the reference solution are not published.
| Trial | |||||
|---|---|---|---|---|---|
| GPT-6 Astra · Codex | Solved | 149 / 500 | 2 min | Trial Compare | |
| Kimi K3 · Claude Code | Solved | 105 / 500 | 5 min | Trial Compare | |
| Kimi K3 · mini-swe-agent | Solved | 453 / 500 | 12 min | Trial Compare | |
| GLM-5.3 · mini-swe-agent | Solved | 203 / 500 | 22 min | Trial Compare | |
| GLM-5.3 · Claude Code | Solved | 295 / 500 | 12 min | Trial Compare | |
| GLM-5.3 · Codex | Infra failure | 132 / 500 | 2 min | Trial Compare |
No model matches.Clear the filter or change the models in the comparison set.
These trials ran on version 0.1, now deprecated (superseded by 0.2).