cloudwalk-research/gr00t-g1-grab-bottle-right-hand-v2
Grab-Bottle (right hand) - v2 (distance-to-goal wandering removal) LeRobot v2.1 dataset for the Unitree G1 right-hand bottle-grab task. Curated from the 105-episode source set by removing non-purposeful back-and-forth arm motion ("wandering") via a distance-to-goal method, then splitting each episode into clean sub-episodes so GR00T's 40-step action window never spans a cut. It is the training data for the v2 GR00T N1.7 fine-tune the current validated production champion (11/12… See the full description on the dataset page: https://huggingface.co/datasets/cloudwalk-research/gr00t-g1-grab-bottle-right-hand-v2.
Grab-Bottle (right hand) - v2 (distance-to-goal wandering removal)
LeRobot v2.1 dataset for the Unitree G1 right-hand bottle-grab task. Curated from the 105-episode source set by removing non-purposeful back-and-forth arm motion ("wandering") via a distance-to-goal method, then splitting each episode into clean sub-episodes so GR00T's 40-step action window never spans a cut. It is the training data for the v2 GR00T N1.7 fine-tune
- the current validated production champion (11/12 across hand-placed bottle poses).
This is the first curation of the family; later sets replaced the distance-to-goal method with zero-wandering smoothing (radius-*, radius-20-merged) or DP resampling (speedup-3mm-*).
Implementation: `feat(curation): grab-bottle dataset curation + reprocessing pipeline` Branch: curated-datasetQuick facts
Collection setup
Same data collection as the 105-ep source set
- see that card for the full setup. In brief:
- 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
- Camera: Intel RealSense D435I on the G1 head; 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).
This card's dataset is the distance-to-goal curation of that source (see Curation method).
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 and observation.* base state.
Curation method
The problem
Raw teleop trajectories contain segments where the arm drifts away from the bottle and then returns - the operator corrects mid-reach. A policy trained on these learns to replicate the unstable back-and-forth behavior rather than committing to a purposeful reach.
Kinematic distance-to-goal
The dataset has no bottle pose annotation, so a proxy goal is used:
Goal = right-wrist position at the grasp instant. The grasp instant is detected as the first frame where the grip closes past 95% of its open->closed range (teleop.right_hand_joints sum: 0.9 open -> 6.0 closed).
Wandering = wrist moving away from this goal. Per-frame Euclidean distance from the right wrist (observation.eef_state[7:10], world frame) to the goal is computed and smoothed. Frames where the smoothed distance is rising faster than a threshold are marked as toxic.
Detection pipeline:
- Beginning cutoff: ignore all frames before the point of maximum wrist distance - that is the arm getting into position; the real reach only starts after it.
- Grip cutoff: never remove anything at or after the grasp - the grasp and all subsequent frames are always kept.
- Rising runs: between those two gates, find contiguous runs where smoothed distance rises faster than
rise_thresh. - `min_segment`: drop runs shorter than this (noise blips).
- `margin`: pad each surviving removal block on both sides.
- `min_gap`: merge removal blocks separated by a kept chunk shorter than this.
Golden parameters (tuned interactively with curate_tuner.py on episode 2 and spot-checked across the set):
Episode splitting: each set of frames surviving removal becomes its own output episode. Sub-episodes shorter than 40 frames are dropped (too short for any training samples under the 40-step action horizon).
What this dataset is - and is not
- Is: the first curation of the family and the training data for the v2 GR00T N1.7 fine-tune
- the current validated production champion (11/12).
- Is not: the source teleoperation set. For un-segmented demonstrations use the 105-ep source set.
- Is not: a zero-wandering or DP-resampled set. Later curations (
radius-*,speedup-3mm-*) replaced the distance-to-goal method; they are separate experiments, not supersets of this one. - 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-v2",
repo_type="dataset",
local_dir="data/real/gr00t-g1-grab-bottle-right-hand-v2",
)How to load
from lerobot.common.datasets.lerobot_dataset import LeRobotDataset
ds = LeRobotDataset(
"gr00t-g1-grab-bottle-right-hand-v2",
repo_id="cloudwalk-research/gr00t-g1-grab-bottle-right-hand-v2",
)
print(ds.num_episodes, ds.num_frames, ds.fps)How to use for fine-tuning & inference
This set trained the v2 GR00T N1.7 fine-tune (checkpoint-20000) - the validated production champion (11/12 across hand-placed bottle poses; grasps from poses where v1 failed). 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
- Right-hand-only, single task, single camera. Only the head
ego_viewwas recorded - no wrist cameras. Left-hand and locomotion dims reflect the largely stationary demonstrations. - Curated, not source. Episodes are clean sub-segments, so "episode length" is a clean-segment length (shorter than full demonstrations). Use the source set for the un-segmented distribution.
- First-generation curation. Uses the distance-to-goal method; later
radius-*sets use zero-wandering smoothing andspeedup-3mm-*sets use DP resampling. These are alternative curations, not incremental improvements of this set. - 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.
Lineage
This set is the first curation of the family - a distance-to-goal wandering removal on the 105-ep source set. Its direct siblings (same 105-ep source, different method) are the four zero-wandering-smooth-radius-{5,10,15,20} variants. The full family - including the both-source merges - 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, then curated with the distance-to-goal wandering-removal pipeline. Stored in the LeRobot v2.1 format.
Citation
@misc{cwrl_grab_bottle_v2_2026,
title = {GR00T G1 "grab the bottle" --- right-hand distance-to-goal wandering-removal curation (210 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-v2}
}
@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.
