CoolFace
Datasetpublic

azithromycin/unitreerobotics_G1_Dex3_ObjectPlacement_Dataset

G1 Dex3 Object Placement Dataset TsFile Apache TsFile conversion of unitreerobotics/G1_Dex3_ObjectPlacement_Dataset, a LeRobot v3 robot-manipulation dataset. Source and attribution Original dataset: https://huggingface.co/datasets/unitreerobotics/G1_Dex3_ObjectPlacement_Dataset Original uploader/data author shown in the Hugging Face repository history: Henry-Ellis (https://huggingface.co/Henry-Ellis) Repository owner/organization: unitreerobotics (Unitree… See the full description on the dataset page: https://huggingface.co/datasets/azithromycin/unitreerobotics_G1_Dex3_ObjectPlacement_Dataset.

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
0likes42downloads
Dataset Card

G1 Dex3 Object Placement Dataset TsFile

Apache TsFile conversion of unitreerobotics/G1_Dex3_ObjectPlacement_Dataset, a LeRobot v3 robot-manipulation dataset.

Source and attribution

  • —Original dataset: https://huggingface.co/datasets/unitreerobotics/G1Dex3ObjectPlacement_Dataset
  • —Original uploader/data author shown in the Hugging Face repository history: Henry-Ellis (https://huggingface.co/Henry-Ellis)
  • —Repository owner/organization: unitreerobotics (Unitree Robotics)
  • —License: Apache-2.0; no paper or formal citation is supplied by the source card.
  • —Task: pick up toothpaste and a trash bag and place them into the blue storage container.
  • —Robot: 7-DOF dual-arm Unitree_G1 with three-fingered dexterous hands.
  • —Recording frequency: 30 Hz; source frame resolution 640x480.

Source layout and videos

The source train split is one Parquet shard (data/chunk-000/file-000.parquet) with 210 episodes, 98,266 frames, one task, and 30 fps. Source metadata paths:

  • —Numeric data: data/chunk-{chunkindex:03d}/file-{fileindex:03d}.parquet
  • —Videos: videos/{videokey}/chunk-{chunkindex:03d}/file-{file_index:03d}.mp4
  • —Four camera streams: observation.images.camlefthigh, observation.images.camrighthigh, observation.images.camleftwrist, and observation.images.camrightwrist. They are listed in the original repository videos tree at https://huggingface.co/datasets/unitreerobotics/G1Dex3ObjectPlacement_Dataset/tree/main/videos.
  • —Current source revision contains 9 physical MP4 shards and 840 logical episode videos.

Videos are not included in this TsFile repository. They remain at the original Hugging Face videos paths; episodeindex and frameindex preserve frame alignment.

Converted artifact

  • —TsFile: data/g1dex3objectplacementdatasettrain.tsfile
  • —Table: g1dex3objectplacementdatasettrain
  • —Rows: 98,266; episodes: 210; source split: train
  • —Time precision: milliseconds; Time = round(timestamp * 1000) and restarts from zero for each episode.
  • —Original timestamp is dropped because it is redundant with Time / 1000; source index is renamed to sample_index.

Schema

RoleColumnsSource / notes
TIMETimeINT64, milliseconds, TS_2DIFF + LZ4
TAGepisodeindex, taskindexOriginal source columns; TsFile stores TAG values as strings while source_dtype: int64 is recorded in meta/info.json
FIELDframeindex, sampleindexINT64, TS2DIFF + LZ4; sampleindex comes from source index
FIELDobservationstate0 ... observationstate27Flattened source observation.state[28], FLOAT, GORILLA + LZ4
FIELDaction0 ... action27Flattened source action[28], FLOAT, GORILLA + LZ4

All source numeric rows and 28-dimensional state/action elements are retained. The only dropped source column is timestamp; video/image columns are intentionally omitted because videos remain in the original dataset.

Conversion and validation

The dataset-specific converter in conversionsupport/scripts/converters/unitreeroboticsg1dex3objectplacement.py uses LeRobot normalization rules, sorts by episodeindex, taskindex, then Time, and writes one merged TsFile for the train split. Encodings/compression are explicit: FLOAT/DOUBLE GORILLA, INT32/INT64/Time TS_2DIFF, BOOLEAN RLE (no boolean field is present), and LZ4 compression.

Local validation passed: source/staged/TsFile row counts are all 98,266; 210 TAG devices are present; Time exactly matches round(timestamp * 1000); vector dimensions round-trip exactly; and the TsFile is non-empty and readable. See VALIDATION.md and validation_report.json.

Minimal read example

from tsfile import TsFileReader path = "data/g1dex3objectplacementdatasettrain.tsfile" reader = TsFileReader(path) columns = ["episodeindex", "taskindex", "frameindex", "sampleindex", "action0", "observationstate0"] with reader.querytable("g1dex3objectplacementdatasettrain", columns, batchsize=65536) as result: batch = result.readarrowbatch() print(batch.topandas().head())