CoolFace
Datasetpublic

cloudwalk-research/gr00t-g1-grab-bottle-right-hand-worst-positions-empty-115ep-v3

GR00T G1 Grab-Bottle — right hand, worst-positions, 115 episodes LeRobot v2.1 dataset for the Unitree G1 right-hand bottle-grab task. This is a hard-pose teleoperation set — 115 episodes collected deliberately at the bottle positions where prior fine-tuned policies performed worst (the model would approach the bottle but stop ~10 cm short of contact and fail to grasp). It was recorded to fill the policy's reach-distance distribution gap. Manually cleaned at the episode level; no… See the full description on the dataset page: https://huggingface.co/datasets/cloudwalk-research/gr00t-g1-grab-bottle-right-hand-worst-positions-empty-115ep-v3.

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

GR00T G1 Grab-Bottle — right hand, worst-positions, 115 episodes

LeRobot v2.1 dataset for the Unitree G1 right-hand bottle-grab task. This is a hard-pose teleoperation set — 115 episodes collected deliberately at the bottle positions where prior fine-tuned policies performed worst (the model would approach the bottle but stop ~10 cm short of contact and fail to grasp). It was recorded to fill the policy's reach-distance distribution gap. Manually cleaned at the episode level; no automated frame-level curation applied.

Together with the 105-ep source set, this set is a source input to the `radius-20-merged` dataset (502 ep / 120,017 frames), which trains the v6 GR00T N1.7 fine-tune. In that merge, episodes 0–94 are zero-wandering curated and episodes 95–114 are kept as-is (static empty-scene episodes — no bottle on the table, no robot movement — that round out the stationary distribution).

Quick facts

Episodes115
Frames78,621 @ 50 fps
FormatLeRobot v2.1
Cameraego_view 640×480 (head), H.264 yuv420p, no audio
RobotUnitree G1 (29-DoF body) + Inspire FTP hands (7-DoF/hand: 6 finger joints + 1 grip pad, via InspireFTPGripMapper)
Task instruction"grab the bottle" (single task, RIGHT hand)
State dim43 (observation.state)
Actionaction.motion_token [64] (latent) + action.wbc [43] whole-body
Episode lengthmin 4.1 s (203 f), mean 13.7 s (683 f), max 21.3 s (1064 f)
Collected2026-06-22
Data collectionPICO 4 Ultra teleop (headset + 2 controllers, 3-pt VR) + 2 ankle trackers → SMPL retargeting (CloudWalk Robotics Lab)
VisibilityPublic
LicenseApache-2.0
Note on naming. The empty token in the dataset name (worst-positions-empty-115ep-v3) marks the 20 empty-scene episodes (eps 95–114): the table has no bottle and the robot does not move. The worst-positions part is the other 95 episodes (eps 0–94), which target the bottle placements where prior models failed. In downstream merges these two groups are treated separately — eps 0–94 are curated, eps 95–114 (the empty scenes) are kept as-is.

Why this set exists

Earlier fine-tunes (notably the v2 champion) converged to an approach pose but did not always push the final ~10 cm to contact. This set adds demonstrations at exactly those hard reaches so the policy sees enough contact-distance examples to close the gap. It is a distribution-filling set, not a general-purpose re-collection.

Curation (manual, episode-level)

Recorded as a single 144-episode session, then cleaned in two passes (episode deletion + reindex; no frame-level editing):

passactionepisodes
raw sessioncollected 2026-06-22144
round 1deleted 17 bad episodes (failed / corrupted / frozen-token runs)144 → 127
round 2moved out 12 more episodes (kept in a curated-out backup)127 → 115
finalreindexed 0..114, contiguous115

Survivor array columns (joint states, actions, SMPL, video) are byte-identical to the raw session — only episode_index / index were rewritten and bad episodes removed. episodes_stats.jsonl is present for normalization.

Round-2 moved-out episodes (original indices): 6, 8, 13, 65, 67, 75, 84, 85, 89, 92, 95, 126. A full 144-episode backup is retained off-dataset as a safety net.

Collection setup

  • —Robot: Unitree G1 (29-DoF body) + Inspire FTP hands (7-DoF/hand: 6 finger joints + 1 grip pad, via InspireFTPGripMapper)
  • —Whole-body controller: SONIC WBC
  • —Teleoperation: PICO 4 Ultra (headset + 2 controllers, 3-point VR tracking) + 2 ankle trackers → SMPL retargeting
  • —Operator pose: stationary manipulation (no walking in the recorded segments)
  • —Camera: Intel RealSense D435I on the G1 head, streamed to the workstation
  • —Hand control: grip buttons close the Inspire FTP right hand during the grasp
  • —Task prompt: the teleop demonstrations were collected under the task prompt "grab the bottle"; the same prompt is used to invoke the policy at inference (see the model cards' "Prompt conditioning" caveat).

[image]

Collection grid. The bottle was placed at 12 fixed positions spanning one half-side of the table (the table is fixed relative to the robot); this "worst-positions" set deliberately targets the hard poses on that grid. These are the same 12 positions reused for the closed-loop evaluation of the fine-tuned models (see e.g. the v6 model card), so training and eval share one geometry.

Action and state layout

This is a GR00T + SONIC dataset, not a flat-joint-vector dataset. The policy action is emitted as a 64-D latent `motion_token` (decoded by the SONIC whole-body controller into whole-body joint commands) plus 7-D left/right hand-joint targets — it only produces motion through the SONIC WBC + ZMQ deploy pipeline, not on a bare G1.

FieldShapeMeaning
observation.state43leftleg 6 + rightleg 6 + waist 3 + leftarm 7 + lefthand 7 + rightarm 7 + righthand 7
action.wbc43whole-body joint targets (same layout as observation.state)
action.motion_token64latent action token decoded by the SONIC WBC
observation.eef_state14left/right wrist pos (3) + abs quat (4), ×2
observation.images.ego_view480×640×3head camera (video)

See meta/info.json for the full feature schema, including teleop.* retargeting fields (SMPL joints/pose, VR 3-point pose, planner state) and observation.* base state (root orientation, projected gravity, init base quat).

What this dataset is — and is not

  • —Is: a hard-pose source set, episode-level curated. Deliberately biased toward the worst-performing bottle placements.
  • —Is not: zero-wandering curated. The radius-20-merged set applies the automated kinematic curation (eps 0–94) on top of this.
  • —Right-hand only, single camera, single task — see caveats below.

How to download

python
from huggingface_hub import snapshot_download

snapshot_download(
    repo_id="cloudwalk-research/gr00t-g1-grab-bottle-right-hand-worst-positions-empty-115ep-v3",
    repo_type="dataset",
    local_dir="data/real/gr00t-g1-grab-bottle-right-hand-worst-positions-empty-115ep-v3",
)

How to load

python
from lerobot.common.datasets.lerobot_dataset import LeRobotDataset

ds = LeRobotDataset(
    "gr00t-g1-grab-bottle-right-hand-worst-positions-empty-115ep-v3",
    repo_id="cloudwalk-research/gr00t-g1-grab-bottle-right-hand-worst-positions-empty-115ep-v3",
)
print(ds.num_episodes, ds.num_frames, ds.fps)

How to use for fine-tuning & inference

This set (merged with the 105-ep set, radius-20 curated) trained the v6 GR00T N1.7 fine-tune (checkpoint-10000, checkpoint-20000). Fine-tuning was run on NVIDIA B200 GPUs with the Isaac-GR00T stack; see the model card for the exact hyperparameters.

To run the resulting policy in inference (policy server), from an Isaac-GR00T environment:

bash
python -m gr00t.eval.run_gr00t_server \
    --model-path <checkpoint-dir> \
    --embodiment-tag UNITREE_G1_SONIC \
    --device cuda:0 --host 0.0.0.0 --port 5550

The server must be launched with the same UNITREE_G1_SONIC embodiment tag used in training. Closed-loop control of the G1 is driven by the SONIC WBC in GR00T-WholeBodyControl; see the NVlabs VLA inference tutorial.

Caveats

  1. 1.Distribution-biased. Collected at hard reaches on purpose; not a uniform sample of the task space. Combine with the 105-ep set (or use radius-20-merged) for balanced training.
  2. 2.Right-hand-only, single task. Left-hand and locomotion dims reflect the largely stationary demonstrations.
  3. 3.Single camera. Only the head ego_view was recorded — no wrist cameras.
  4. 4.Not zero-wandering curated. Use radius-20-merged for the frame-cleaned version.
  5. 5.Deployment needs the SONIC stack. Actions are motion_token + hand joints for the UNITREE_G1_SONIC embodiment; they only produce motion through the SONIC WBC + ZMQ deploy pipeline, not on a bare G1.
  6. 6.`empty` name token — see the note above: the 20 empty-scene episodes (eps 95–114, no bottle/no movement).

Lineage

As a source set, this dataset's direct descendants are the both-source curations: radius-20-merged (→ v6), speedup-3mm-v1 (→ v7), and speedup-3mm-cycle-removed-v1. In each, eps 0–94 (worst-positions) are processed and eps 95–114 (empty scenes) kept as-is. The full family is in the table below.

DatasetDerived fromEpisodesFramesNotes
105ep-v1— (source)10570,680Base teleoperation set → v1 fine-tune
worst-positions-empty-115ep-v3 (this)— (source)11578,621Worst-positions + 20 empty-scene episodes (eps 95–114, no bottle/no movement)
right-hand-v2105ep-v121062,772Distance-to-goal wandering removal → v2 fine-tune (production champion)
zero-wandering-smooth-radius-5105ep-v141748,577Zero-wandering r=5 (most aggressive) → v4 fine-tune
zero-wandering-smooth-radius-10105ep-v137149,578Zero-wandering r=10 (experiment, no fine-tune)
zero-wandering-smooth-radius-15105ep-v134250,634Zero-wandering r=15 (experiment, no fine-tune)
zero-wandering-smooth-radius-20105ep-v131450,496Zero-wandering r=20 (least aggressive) → v5 fine-tune
radius-20-merged105ep-v1 + 115ep-v3502120,017Both sources, zero-wandering r=20, grasp-frame preservation; this set's eps 0–94 curated, eps 95–114 as-is → v6 fine-tune
speedup-3mm-v1105ep-v1 + 115ep-v322060,163DP wrist-Cartesian resample 3mm/frame, max_K=40, NO segment removal → v7 fine-tune (trained 2026-06-25, checkpoint-20000 only)
speedup-3mm-cycle-removed-v1105ep-v1 + 115ep-v340547,944DP resample + cycle detection + sub-episode splitting (no fine-tune yet)

Attribution

Collected at the CloudWalk Robotics Lab (CW-RL) using PICO 4 Ultra teleoperation on the Unitree G1 with the SONIC whole-body controller. Stored in the LeRobot v2.1 format.

Citation

bibtex
@misc{cwrl_grab_bottle_worst_positions_115ep_v3_2026,
  title        = {GR00T G1 "grab the bottle" --- right-hand worst-positions teleoperation set (115 episodes, SONIC WBC)},
  author       = {{CloudWalk Robotics Lab}},
  year         = {2026},
  howpublished = {Hugging Face dataset repository},
  url          = {https://huggingface.co/datasets/cloudwalk-research/gr00t-g1-grab-bottle-right-hand-worst-positions-empty-115ep-v3}
}

@article{gr00t_n1_2025,
  title         = {{GR00T N1}: An Open Foundation Model for Generalist Humanoid Robots},
  author        = {{NVIDIA}},
  year          = {2025},
  eprint        = {2503.14734},
  archivePrefix = {arXiv},
  url           = {https://arxiv.org/abs/2503.14734}
}

@article{sonic_2025,
  title         = {{SONIC}: Whole-Body Controller for Humanoid Robot Teleoperation},
  year          = {2025},
  eprint        = {2511.07820},
  archivePrefix = {arXiv},
  url           = {https://arxiv.org/abs/2511.07820}
}

@software{lerobot2024,
  title  = {{LeRobot}: State-of-the-art Machine Learning for Real-World Robotics in {PyTorch}},
  author = {{Hugging Face}},
  url    = {https://github.com/huggingface/lerobot},
  year   = {2024}
}

License

Released under Apache-2.0 by CloudWalk Research. Demonstrations were collected on hardware owned by CloudWalk; the SONIC WBC and GR00T stacks retain their respective upstream licenses. Research preview — closed-loop deployment on a physical humanoid requires human oversight.