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.
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
Note on naming. Theemptytoken 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. Theworst-positionspart 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):
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).
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.
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-mergedset 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
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
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:
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 5550The 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
- 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. - Right-hand-only, single task. Left-hand and locomotion dims reflect the largely stationary demonstrations.
- Single camera. Only the head
ego_viewwas recorded — no wrist cameras. - Not zero-wandering curated. Use
radius-20-mergedfor the frame-cleaned version. - Deployment needs the SONIC stack. Actions are
motion_token+ hand joints for theUNITREE_G1_SONICembodiment; they only produce motion through the SONIC WBC + ZMQ deploy pipeline, not on a bare G1. - `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.
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
@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.
