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.
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 fps, and 50 Parquet episode files.
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.
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
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()