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.
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
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())
