CoolFace
Datasetpublic

THULab/thomas0829_bimanual_so100_stack_blocks

Bimanual SO100 Stack Blocks TsFile Apache TsFile edition of thomas0829/bimanual_so100_stack_blocks, a LeRobot v2.1 bimanual SO-100 block-stacking dataset. Source and attribution Original dataset: https://huggingface.co/datasets/thomas0829/bimanual_so100_stack_blocks Repository owner and contributor: thomas0829 License: Apache-2.0 Task: Pick the first block from the table and stack it on the second block. Train split: 50 episodes, 27,228 frame rows, one task, 30… See the full description on the dataset page: https://huggingface.co/datasets/THULab/thomas0829_bimanual_so100_stack_blocks.

sourceHugging Faceapache-2.0updated 1mo agoView on Hugging Face
0likes43downloads
Dataset Card

Bimanual SO100 Stack Blocks TsFile

Apache TsFile edition of `thomas0829/bimanual_so100_stack_blocks`, a LeRobot v2.1 bimanual SO-100 block-stacking dataset.

Source and attribution

The source card does not provide a paper, external homepage, or BibTeX citation. Please cite the original Hugging Face dataset and thomas0829 when using this data.

TsFile schema

Time = round(timestamp * 1000) as INT64 milliseconds and restarts at zero in each episode. The source timestamp column is removed because Time / 1000 represents it in seconds. index is renamed to sample_index; frame_index is retained.

ColumnsTsFile typeRole
TimeINT64/TIMESTAMPTIME
episode_index, task_indexSTRING device segmentsTAG
frame_index, sample_indexINT64FIELD
action_0 ... action_11FLOATFIELD
observation_state_0 ... observation_state_11FLOATFIELD

The 12 action and 12 state elements retain the source ordering: left shoulder pan/lift, elbow flex, wrist flex/roll, gripper, then the same six joints for the right arm. Vector fields are flattened into scalar fields; dots in the source vector name become underscores. No numeric rows or vector dimensions are dropped.

Storage uses GORILLA + LZ4 for FLOAT/DOUBLE, TS_2DIFF + LZ4 for INT32/INT64 and Time, and RLE + LZ4 for BOOLEAN. TAG values use the TsFile table/device mechanism.

Original videos

The original 150 MP4 files are at `videos/` and are not included in this TsFile dataset. Their source path template is videos/chunk-{episode_chunk:03d}/{video_key}/episode_{episode_index:06d}.mp4 for observation.images.left (640 x 480), observation.images.right (640 x 480), and observation.images.top (1280 x 720). Each stream is AV1, 30 fps, and has one video per episode. Use episode_index and frame_index to align numeric rows with the matching original video frame.

Read example

python
from tsfile import TsFileReader

reader = TsFileReader("data/thomas0829_bimanual_so100_stack_blocks.tsfile")
with reader.query_table(
    "thomas0829_bimanual_so100_stack_blocks",
    ["episode_index", "task_index", "Time", "frame_index", "action_0"],
    batch_size=4096,
) as result:
    print(result.read_arrow_batch().to_pandas().head())
reader.close()