CoolFace
Datasetpublic

cloudwalk-research/gr00t-g1-grab-bottle-right-hand-speedup-3mm-cycle-removed-v1

Grab-Bottle (right hand) - DP-resampled 3 mm/frame + cycle removal LeRobot v2.1 dataset for the Unitree G1 right-hand bottle-grab task. Extends the DP-resampled variant by automatically detecting and removing return cycles in wrist-space - segments where the arm travels away from a point and then returns to (approximately) the same position. Such cycles teach the policy to backtrack rather than commit to a goal-directed motion. No fine-tune has been produced from this variant… See the full description on the dataset page: https://huggingface.co/datasets/cloudwalk-research/gr00t-g1-grab-bottle-right-hand-speedup-3mm-cycle-removed-v1.

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

Grab-Bottle (right hand) - DP-resampled 3 mm/frame + cycle removal

LeRobot v2.1 dataset for the Unitree G1 right-hand bottle-grab task. Extends the DP-resampled variant by automatically detecting and removing return cycles in wrist-space - segments where the arm travels away from a point and then returns to (approximately) the same position. Such cycles teach the policy to backtrack rather than commit to a goal-directed motion. No fine-tune has been produced from this variant yet. A `v8` model card exists as a placeholder — training pending, no weights published.

Each detected cycle is cut out of the episode. The remaining contiguous portions are emitted as independent sub-episodes. The region around the grasp point is always protected.

metricvalue
source episodes200 active + 20 static
output episodes405 (sub-episode splitting)
DP-kept frames47,944
training samples (40-action chunks)~32,150
vs DP-only variant-20% frames, -38% training samples
sub-episodes discarded (< 40 frames)86
episodes saved by grasp-protection rule0

Quick facts

Episodes405 (clean sub-segments)
Frames47,944 @ 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
Mean episode length~2.4 s (~118 f)
Sources105ep-v1 (105 ep) + 115ep-v3 (115 ep)
CurationDP resample (3 mm/frame, max_K=40) + cycle detection + sub-episode splitting
CollectionPICO 4 Ultra teleop (headset + 2 controllers, 3-pt VR) + 2 ankle trackers -> SMPL retargeting (CloudWalk Robotics Lab)
VisibilityPublic
LicenseApache-2.0

Collection setup

Same data collection as the 105-ep source set and the worst-positions 115-ep set

  • —see those cards 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).

Source datasets

#DatasetEpisodes usedTreatment
ds1gr00t-g1-grab-bottle-right-hand-105ep-v1all 105 (0-104)DP + cycle removal
ds2gr00t-g1-grab-bottle-right-hand-worst-positions-empty-115ep-v30-94DP + cycle removal
ds2same95-114 (static)as-is (no DP, no cycle removal)

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), x2
observation.images.ego_view480×640×3head camera (video)

See meta/info.json for the full feature schema, including teleop.* retargeting fields and observation.* base state.

Curation method

Step 1 - DP resampling

Identical to the base dataset. Wrist XYZ from observation.eef_state[7:10] (world frame). The DP solver keeps frames where consecutive wrist displacement is ~3 mm/frame.

ParamValue
target3.0 mm/frame
max_K40 frames

Step 2 - cycle detection

Operates entirely in DP-frame space (duration is counted in kept frames, not original frames).

For each DP-frame starting point a, find the future DP frame b with the minimum XYZ return distance (epsilon) among all frames at least min_dur kept-frames away. Score the candidate: score = epsilon / dur^k.

Candidates are filtered by hard caps and then greedily selected in score order (best first, non-overlapping).

Score formula: score = epsilon / dur^2

  • —Lower = better (tight return + long duration).
  • —dur_exp=2 ensures that when a half-cycle and a full cycle overlap, the full cycle wins if its dur^2 advantage outweighs its larger epsilon.
ParamValueMeaning
epsilon_max50 mmmax XYZ return distance to qualify as a cycle
min_dur20 DP framesminimum cycle duration
dur_exp2.0score exponent
grasp_zone30 DP framesprotected window around the grasp point
max_score50 x 10^-6hard cap - rejects loose candidates

Step 3 - episode splitting

Detected cycles are cut out. The contiguous portions between cycles become separate sub-episodes. Sub-episodes shorter than 40 DP-kept frames are discarded.

Grasp-protection rule: the last sub-episode is never discarded if it contains the grasp frame, regardless of length. The grasp is the reward signal; losing it destroys training value. This rule was triggered 0 times in this run (the min-frames filter discards pre-grasp segments, not post-grasp ones).

What this dataset is - and is not

  • —Is: the DP-resample + cycle-removal variant - the DP-only baseline with return-cycle segments cut out and the survivors split into sub-episodes.
  • —Is: a curation experiment - no fine-tune has been produced from it yet. The fine-tuned sibling is v7 (from the DP-only baseline).
  • —Is not: zero-wandering curated; it replaces wandering detection with cycle detection. It is not a superset of the DP-only baseline (cycles are removed, not retained).
  • —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-speedup-3mm-cycle-removed-v1",
    repo_type="dataset",
    local_dir="data/real/gr00t-g1-grab-bottle-right-hand-speedup-3mm-cycle-removed-v1",
)

How to load

python
from lerobot.common.datasets.lerobot_dataset import LeRobotDataset

ds = LeRobotDataset(
    "gr00t-g1-grab-bottle-right-hand-speedup-3mm-cycle-removed-v1",
    repo_id="cloudwalk-research/gr00t-g1-grab-bottle-right-hand-speedup-3mm-cycle-removed-v1",
)
print(ds.num_episodes, ds.num_frames, ds.fps)

How to use for fine-tuning & inference

No fine-tune has been produced from this variant - it is a curation experiment stacking cycle removal on the DP-only baseline (that baseline trained v7). To fine-tune this variant yourself, use the Isaac-GR00T stack on NVIDIA B200 GPUs, then serve with:

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 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.Right-hand-only, single task, single camera. Only the head ego_view was recorded - no wrist cameras. Left-hand and locomotion dims reflect the largely stationary demonstrations.
  2. 2.Curated, not source. Episodes are clean sub-segments (cycles cut out), so "episode length" is short (~118 f). Use the sources for the un-segmented distribution.
  3. 3.No fine-tune yet. A curation experiment; the DP-only baseline trained v7. A `v8` model card exists as a placeholder (training pending, no weights).
  4. 4.Empty-scene episodes kept as-is. ds2 eps 95-114 (no bottle, no movement) are included raw.
  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.

Lineage

This set is the DP-resample + cycle-removal variant. Its direct sibling is the DP-only baseline (same DP resampling, no cycle removal -> v7). It shares its two sources with radius-20-merged but uses a different method. 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- (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; 115ep eps 0-94 curated, 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-v1 (this)105ep-v1 + 115ep-v340547,944DP resample + cycle detection + sub-episode splitting -> v8 fine-tune (placeholder, training pending — no weights published)

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 DP resampling + wrist-space cycle removal. Stored in the LeRobot v2.1 format.

Citation

bibtex
@misc{cwrl_grab_bottle_speedup_3mm_cycle_removed_v1_2026,
  title        = {GR00T G1 "grab the bottle" --- right-hand DP-resampled + cycle-removal curation (405 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-speedup-3mm-cycle-removed-v1}
}

@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.