so101-can-butler
收藏资源简介:
该数据集包含在低成本SO-101机械臂上进行的**人类触发的易拉罐递送**远程操作演示。机械臂最初保持静止,直到人的手出现在垫子上,然后机械臂伸出、抓取易拉罐并将其递给人。数据集使用SO-101跟随臂(采用Feetech STS3215舵机),由SO-101领导臂远程控制。总共包含44个演示片段(episodes),14,324帧图像,帧率为15 fps。摄像头配置:顶部Orbbec Gemini 2摄像头(`observation.images.top`)和腕部摄像头(`observation.images.wrist`),分辨率均为640×480。数据使用LeRobot v0.6.1的`lerobot_record`工具记录,许可证为Apache-2.0。任务分为两类:把易拉罐递给我(28个片段,行为:等待手出现、伸出、抓取、递送)和保持静止并等待(16个片段,行为:无手出现时保持不动)。负样本用于训练策略识别手的出现作为触发信号。建议排除片段0和12,因为其中机械臂在手进入画面之前就开始移动。数据集强调密度而非多样性,通过集中记录同一区域同一物体来消除歧义。
This dataset contains teleoperation demonstrations of **human-triggered can delivery** performed on a low-cost SO-101 robotic arm. The arm initially remains stationary until a human hand appears on the mat, then extends, grasps the can, and delivers it to the person. The dataset uses the SO-101 follower arm (equipped with Feetech STS3215 servos) remotely controlled by the SO-101 leader arm. It includes a total of 44 demonstration episodes, 14,324 frames at 15 fps. Camera configuration: top Orbbec Gemini 2 camera (`observation.images.top`) and wrist camera (`observation.images.wrist`), both with resolution 640×480. Data was recorded using the LeRobot v0.6.1 `lerobot_record` tool, licensed under Apache-2.0. Tasks are divided into two categories: hand me the can (28 episodes, actions: wait for hand, extend, grasp, deliver) and stay still and wait (16 episodes, actions: remain motionless when no hand appears). Negative samples are used to train the policy to recognize the appearance of a hand as a trigger signal. Episodes 0 and 12 are recommended to be excluded because the arm starts moving before the hand enters the frame. The dataset emphasizes density over diversity, eliminating ambiguity by focusing on the same area and object.
SO-101 Can Butler 数据集概述
基本信息
- 许可证: Apache-2.0
- 数据集大小: 10K<n<100K
- 任务类型: 机器人学(机器人操作)
- 数据格式: Parquet 文件(路径为
data/*/*.parquet) - 录制工具: LeRobot v0.6.1,使用
lerobot_record命令 - 机器人: SO-101 从臂(Feetech STS3215 舵机),由 SO-101 主臂遥操作控制
数据集内容
本数据集包含人类触发的易拉罐递送任务的遥操作演示:机器人静止不动,直到人的手出现在垫子上,然后机器人伸手、抓取易拉罐并将其递出。
数据规模
- 总片段数: 44 个(其中 42 个推荐使用,片段 0 和 12 因手臂先于手进入画面而建议排除)
- 总帧数: 14,324 帧(15 fps)
- 任务数: 2 个任务
任务说明
| 任务字符串 | 片段数 | 行为描述 |
|---|---|---|
Hand me the can |
28 | 等待手出现,伸手,抓取,递送 |
Stay still and wait |
16 | 无手出现:保持静止 |
包含负样本是刻意的设计——它们用于教会策略手的出现是触发信号,没有这些负样本的策略会在空桌子上移动。
传感器与数据结构
- 相机:
- 顶部相机 (Orbbec Gemini 2):
observation.images.top,640×480 - 腕部相机:
observation.images.wrist,640×480
- 顶部相机 (Orbbec Gemini 2):
- 每个数据帧包含:
observation.state: 6 维向量(从臂实际姿态:肩部偏航、肩部俯仰、肘部弯曲、腕部弯曲、腕部滚动,单位为度;夹爪为 0-100)action: 6 维向量(主臂指令姿态,单位为度;夹爪为 0-100)- 两个相机视频流、时间戳、帧索引、片段索引、任务索引
数据采集设计("密度优于多样性"原则)
本数据集替代了之前一个 47 片段的版本,后者在 22 次真实测试中 0 次成功抓取。修复方法不是增加数据量,而是减少分布范围:
- 抓取姿态分布(肩部偏航):标准差从 37.6° 降至 9.6°,范围从 132° 降至 26°
- 将原本 2 种物体(瓶+罐)缩减为 1 种
- 集中同一区域、同一物体进行录制,消除图像相似但动作不同的歧义
自动成功验证方法
利用夹爪伺服电机的指令位置与实际位置之差来评分(无需视觉和人工标注):
score = median(achieved − commanded)在保持阶段计算held判定条件:score ≥ 1.5- 人类演示且确实握住罐子的分数:最小 1.84,中位数 7.57
- 失败的机器人尝试分数:−0.41 到 0.52
该方法保证两个群体之间有明显分离,且未观察到误报。
训练成果
- 使用 SmolVLA 微调(20k 步,租用 RTX 4090 成本约 $2.30)
- 自主抓取成功率:3 次尝试全部成功
- 模型地址:
espejelomar/smolvla-so101-can-butler
局限性与范围
- 单一物体(铝箔包裹的罐子,约 66mm 直径)在单一工作区域
- 任务设计为人类触发,非自主取物数据集
- 单个操作者,演示风格一致,手的外观和接近方式缺乏多样性
- 44 个片段规模较小,仅足够微调预训练 VLA,不适合从零训练
- 已知硬件问题: Gemini 2 的深度流无法感知机器人橙色 PLA 材质(深度返回为零),限制了若干手臂检测方案
引用
bibtex @misc{espejel2026so101canbutler, title = {SO-101 Can Butler: human-triggered can handover demonstrations}, author = {Espejel, Omar}, year = {2026}, url = {https://huggingface.co/datasets/espejelomar/so101-can-butler} }



