CoolFace
Datasetpublic

tysyuvraj/g1-apple2plate-lerobot-v21

g1-apple2plate-lerobot-v21 Teleoperated pick-and-place demonstrations on a Unitree G1 humanoid: pick up an apple (red or green) and place it on a plate. The dataset also includes correction / redirect episodes in which the arm begins reaching toward the wrong apple and then redirects to the correct one — useful for training recovery behaviour and for closed-loop intent-correction research. Recorded for fine-tuning NVIDIA GR00T N1.7. Stored in LeRobot v2.1 format (the version… See the full description on the dataset page: https://huggingface.co/datasets/tysyuvraj/g1-apple2plate-lerobot-v21.

sourceHugging Faceapache-2.0updated 3mo agoView on Hugging Face
0likes391downloads
Dataset Card

g1-apple2plate-lerobot-v21

Teleoperated pick-and-place demonstrations on a Unitree G1 humanoid: pick up an apple (red or green) and place it on a plate. The dataset also includes correction / redirect episodes in which the arm begins reaching toward the wrong apple and then redirects to the correct one — useful for training recovery behaviour and for closed-loop intent-correction research.

Recorded for fine-tuning NVIDIA GR00T N1.7. Stored in LeRobot v2.1 format (the version GR00T's data loader consumes).

Robot

PlatformUnitree G1 humanoid
Embodiment presetUnitree_G1_Dex1_UpperBody_2Cam
End-effectorDex1 parallel gripper (per arm)
State / action dim16 (dual-arm joints + grippers)
Camerascam_head, cam_right_wrist
Control frequency30 Hz

State / action layout (meta/modality.json)

Index rangeComponent
0:7left arm (7 joints)
7:14right arm (7 joints)
14:15left gripper
15:16right gripper

Both observation.state and action use this identical 16-D layout.

Dataset statistics

Episodes186
Frames28,994
FPS30
LeRobot codebase versionv2.1
Size~783 MB

Composition

Source bucketEpisodesLanguage instruction
green_apple2plate61pick up the green apple and place it on the plate.
red_apple2plate60pick up the red apple and place it on the plate.
red2green_correction32pick up the green apple and place it on the plate.
green2red_correction33pick up the red apple and place it on the plate.

Only two distinct task strings appear across all four buckets. This is deliberate: the correction episodes are labelled with the final target's normal instruction, not a special "correction" phrase. At deployment, when the operator says "not that one, the other one," the controller simply sends the new target's standard instruction — there is no dedicated correction command reaching the policy. A redirect episode should therefore look to the model like: instruction says "green", the arm happens to start near the red apple → go get the green one.

Correction episodes — how they were prepared

In the two *_correction buckets the arm starts by reaching toward the wrong apple, then redirects. The initial reach-toward-the-wrong-object segment was trimmed from each of those episodes so that behaviour cloning does not imitate the mistake. Concretely, the leading frames were removed and each episode's data.json was verified so that:

  • —the removed frames form a contiguous prefix (frames 0..N-1 only — no mid-episode gaps that would create false temporal jumps), and
  • —every remaining frame's referenced camera images exist on disk.

Episodes with non-contiguous or end-of-episode gaps were flagged for manual review rather than trimmed. The clean-pick-place buckets (green_apple2plate, red_apple2plate) were left untrimmed.

Features

observation.state            float32 [16]
action                       float32 [16]
observation.images.cam_head          video (RGB, 30fps)
observation.images.cam_right_wrist   video (RGB, 30fps)
timestamp, frame_index, episode_index, index, task_index

Usage

python
from lerobot.datasets.lerobot_dataset import LeRobotDataset

ds = LeRobotDataset("tysyuvraj/g1-apple2plate-lerobot-v21")
print(ds.meta.total_episodes, ds.meta.total_frames)
sample = ds[0]

Requires a LeRobot version that reads codebase v2.1 (e.g. lerobot==0.3.3). Newer LeRobot releases default to v3.0 and expect a different on-disk layout.

GR00T N1.7 fine-tuning

The meta/modality.json maps the 16-D state/action into GR00T's arm/gripper groups and the two cameras, so the dataset can be passed directly to GR00T's fine-tuning pipeline with embodiment tag new_embodiment.

Provenance & notes

  • —Converted from Unitree's raw JSON teleoperation format via the unitree_lerobot converter, using LeRobot 0.3.3 (which writes v2.1).
  • —A separate v3.0-format copy of the same recordings exists at tysyuvraj/g1-apple2plate-lerobot; this v2.1 repo is the one compatible with GR00T N1.7.
  • —Same robot embodiment as the earlier monster-tray-pickplace dataset, so the modality configuration is shared.