THULab/unitreerobotics_G1_Dex3_BlockStacking_Dataset
G1 Dex3 Block Stacking TsFile This repository is an Apache TsFile conversion of unitreerobotics/G1_Dex3_BlockStacking_Dataset, a LeRobot manipulation dataset for stacking three cubic blocks on a desktop in red, yellow, and blue order. Source dataset Original dataset: https://huggingface.co/datasets/unitreerobotics/G1_Dex3_BlockStacking_Dataset Author / repository owner: Unitree Robotics (unitreerobotics) Source-tree contributors shown by Hugging Face: Henry-Ellis… See the full description on the dataset page: https://huggingface.co/datasets/THULab/unitreerobotics_G1_Dex3_BlockStacking_Dataset.
G1 Dex3 Block Stacking TsFile
This repository is an Apache TsFile conversion of `unitreerobotics/G1_Dex3_BlockStacking_Dataset`, a LeRobot manipulation dataset for stacking three cubic blocks on a desktop in red, yellow, and blue order.
Source dataset
- Original dataset: https://huggingface.co/datasets/unitreerobotics/G1Dex3BlockStacking_Dataset
- Author / repository owner: Unitree Robotics (
unitreerobotics) - Source-tree contributors shown by Hugging Face:
Henry-Ellis,lv-1 - License: Apache-2.0
- Robot: Unitree G1, 7-DOF dual-arm, with three-finger Dex3 hands
- Recording frequency: 30 Hz
- Cameras: two head-mounted streams (
cam_left_high,cam_right_high) and two wrist-mounted streams (cam_left_wrist,cam_right_wrist) - Resolution: 640x480 RGB; source video codec is AV1
- Split:
train(0:301episodes) - Episodes / rows / tasks: 301 / 281,196 / 1
- Source data shards: 1 chunk / 1 Parquet file; source card reports 1,204 video files
- Source frame file:
data/chunk-{chunk_index:03d}/file-{file_index:03d}.parquet
The task description in the original card is to stack three 5 cm cubic blocks on black tape on the desktop from bottom to top in red, yellow, and blue order.
Converted files
- TsFile:
data/unitreerobotics_g1_dex3_blockstacking.tsfile - Table:
unitreerobotics_g1_dex3_blockstacking - Rows: 281,196
- Episodes: 301
- Episode files: 1 merged table-model TsFile
- Time precision: milliseconds
- Source metadata:
meta/tasks.parquet,meta/episodes/..., andmeta/stats.jsonare retained;meta/info.jsondocuments the conversion.
Schema
Time = round(timestamp * 1000). The source timestamp is in seconds and restarts at zero for each episode, so Time is monotonic within each (episode_index, task_index) device. The source timestamp column is dropped after synthesis because it is redundant with Time / 1000.
Vector columns are flattened row-major while preserving source prefixes:
observation.state[28]->observation_state_0...observation_state_27action[28]->action_0...action_27
The source index is renamed to sample_index; frame_index, episode_index, and task_index are preserved. No numeric state/action rows are dropped. Image/video feature columns are not written into TsFile because the local source Parquet contains numeric references only.
Encoding and compression
The compact TsFile profile is used to avoid producing a file larger than the source Parquet:
- FLOAT/DOUBLE:
GORILLA+LZ4 - INT32/INT64:
TS_2DIFF+LZ4 - Time:
TS_2DIFF+LZ4 - BOOLEAN:
RLE+LZ4(no BOOLEAN fields are present in this dataset) - TAG columns: TsFile table/device TAG mechanism
The staged Parquet and local validation report are kept outside the upload set under .conversion_work/.
Videos and attribution
Videos are not included in this TsFile repository. They remain in the original Hugging Face dataset at:
- `videos/observation.images.cam_left_high`
- `videos/observation.images.cam_left_wrist`
- `videos/observation.images.cam_right_high`
- `videos/observation.images.cam_right_wrist`
The source metadata video pattern is videos/{video_key}/chunk-{chunk_index:03d}/file-{file_index:03d}.mp4. episode_index and frame_index remain unchanged in the TsFile so consumers can align a time-series row with its original video frame.
Read example
import sys
sys.path.insert(0, r"D:\\code\\.deps")
from tsfile import TsFileReader
path = r"D:\\code\\py\\unitreerobotics_G1_Dex3_BlockStacking_Dataset\\data\\unitreerobotics_g1_dex3_blockstacking.tsfile"
reader = TsFileReader(path)
table = reader.get_all_table_schemas()["unitreerobotics_g1_dex3_blockstacking"]
columns = [c.get_column_name() for c in table.get_columns() if c.get_column_name() != "Time"]
with reader.query_table("unitreerobotics_g1_dex3_blockstacking", columns, batch_size=65536) as result:
batch = result.read_arrow_batch()Citation
Please cite the original Unitree Robotics dataset repository and the LeRobot project when using this conversion. No separate paper or BibTeX entry was provided in the source dataset card.
