Collecting Human Demos

Note

Make sure you have followed the Installation guide before proceeding.

OpenTau supports training VLAs on human demonstration data collected in LeRobot format. There are two ways to collect human demos:

  1. RecordHuman VR app (recommended) — record hand and head poses directly from a PICO VR headset with 3D tracking.

  2. MediaPipe video conversion — extract poses from ordinary MP4 videos using MediaPipe landmark detection.

Note

RecordHuman is recommended because it captures a full 7-D pose (3D position + quaternion orientation) for every hand joint in camera space and tracks head movement through space, giving richer action representations. MediaPipe, by contrast, only provides 3D positions relative to the hand’s own center, so it cannot capture how the hand moves through the scene.

Option 2: MediaPipe Video Conversion

If you don’t have a VR headset, you can convert ordinary MP4 videos of human demonstrations into LeRobot datasets. The human_video_to_lerobot.py script uses MediaPipe for pose (third-person / exo) or hand (first-person / ego) landmark detection and writes frames, 3D landmarks as state, and next-step landmarks as action.

Each video becomes one episode with:

  • Frames as observation.images.camera

  • 3D pose or hand landmarks as observation.state

  • Next-step landmarks as action

  • A task prompt you provide (e.g. “Pick up the cup”)

Converting videos

From the project root, run the conversion script. The output path is the LeRobot dataset root and must not exist yet.

Single video (exo — third-person pose):

python -m opentau.scripts.human_video_to_lerobot \
    /path/to/demo.mp4 \
    ./datasets/my_exo_dataset \
    --prompt "Pick up the red block"

Single video (ego — first-person hands):

python -m opentau.scripts.human_video_to_lerobot \
    /path/to/ego_demo.mp4 \
    ./datasets/my_ego_dataset \
    --prompt "Open the drawer" \
    --mode ego

Use a specific FPS for the dataset (e.g. 10 Hz). The overlay video (if requested) still uses the original video FPS:

python -m opentau.scripts.human_video_to_lerobot \
    /path/to/demo.mp4 \
    ./datasets/my_dataset \
    --prompt "Place the cup on the table" \
    --fps 10

Save a landmark-overlay video for inspection:

python -m opentau.scripts.human_video_to_lerobot \
    /path/to/demo.mp4 \
    ./datasets/my_dataset \
    --prompt "Pick up the cup" \
    --overlay /path/to/overlay.mp4