Humanoid Challenge

Overview

The data process produces a paired dataset: object manipulation demonstrations recorded in the real world, each paired with a simulated robot trajectory.

Task: pick up the mug and place it on the plate. The mug and plate are moved to a new random position by hand before each demonstration.

Data pipeline in two rows: setup, calibrate, record; then an action flow branch and a real2sim branch (hand path, retarget, sim replay, success check) that join on the robot's clock before the data splits SetupD405 camera+ ArUco markeron the tableCalibrateintrinsics checkedmarker pose =table frameRecordmy hand movesthe mug ontothe plate165 episodesHand pathMediaPipe hand+ depth → pinch;mug and platefrom grasp/releaseRetargetpinch → gripper,rim-graspconstraintsReplay in simLIBERO Panda20 HzSuccess?cup on the plateafter 1 sTrack pointsCoTracker: 6 hand points · SAM 2 mask → 8 mug points+ D405 depth → 3D flow in the table frameBRANCH 1 · ACTION FLOWBRANCH 2 · REAL2SIMRobot clockflow pauseswhere thereplay pausesData splitssuccesses:train 80val 10 · test 10failed 46
One episode (20261009_112208) on the robot's clock, 20 Hz: the paired real video, its action flow, and the sim robot's replay with its gripper and third-person cameras.

Environment setup

Left: D405 colour image of the desk with the table marker's axes drawn on it, red x pointing away from the camera, green y to the left, blue z up. Right: the aligned depth image.
D405 colour image with the table frame drawn on the marker (x red, y green, z up blue), and the aligned depth image.

Real2sim

Demo 1

Demo 2

Raw hand path vs final process

165 recorded episodesraw hand pathfinal process
no usable hand path (hand lost, no grasp found)1414
replayed in sim151151
cup on plate31 (19 %)100 (61 %)
failed13465

Raw hand path: the gripper follows the pinch point with none of the three rules.

Episode 111418: raw fails, final succeeds

Raw: the gripper comes down on the rim and the cup is never lifted. Final: it stays above until it is over the rim, then pauses to close.

Action flows

hand  float32 [6, 16, 4]   wrist, thumb tip, index tip, index / middle / pinky knuckle
cup   float32 [8, 16, 4]   8 points on the mug
      points × 16 steps at 10 Hz (now … +1.5 s) × (x, y, z, visible)
      x, y, z in metres, table frame · visible = 0 → hidden, mask it
At every frame, the flow sample that starts there: the next 16 steps (1.5 s) of the 6 hand and 8 mug points.

Flow on the robot's clock (what the dataset uses)

The same two demos on the robot's clock. Amber border: the real video is held while the robot pauses.

Data splits

splitepisodeswhat it ishas
train80sim replay succeededvideo, flow, robot data
test20sim replay succeeded, held outvideo, flow, robot data
failed46replayed, cup not on the platevideo, flow, robot data
not usable19hand lost or no grasp found: no replayvideo (17 also flow)
total165

Train and test are the 100 successful episodes shuffled with seed 0. Robot steps at 20 Hz: 18,622 in train + test, 7,876 in failed.

Top view of the table: cup start position of every episode, coloured by split; the marker is at the origin0-10-20-30-40-50-60-70-80-90-40-30-20-10010y, cm (left +)x, cm (away from camera +)
train 80 test 20 failed 46 not usable 17 of 19 (2 have no flow) marker. Cup start position per episode, table frame, top view.

Third-party dependencies

toolused for
Intel RealSense SDK (pyrealsense2 2.58)D405 colour + depth recording, factory intrinsics
OpenCV 4.11 (ArUco)marker detection and pose (table frame), video reading, drawing
MediaPipe Hand Landmarker 0.1021 hand points per frame; starts the hand tracks
CoTracker3 (offline, commit 82e02e8)tracks the 6 hand and 8 mug points through the video
SAM 2.1 Hiera-L (commit 2b90b9f)mug mask in every frame; picks the mug points

Limitations