CoolFace
Datasetpublic

czc20033/piper_dual_act

Piper 双臂机械臂数据集 · 摞杯子任务 Bimanual manipulation dataset collected on 4× AgileX Piper 6-DoF arms (leader–follower teleoperation) with 3 cameras, in LeRobot v3.0 format. Ready for ACT and VLA training out of the box. 配套代码、环境配置与实测调参结论见 GitHub 仓库(见页面底部)。 快速开始 · Quick start from lerobot.datasets import LeRobotDataset ds = LeRobotDataset("czc20033/piper_dual_act") print(ds.meta.total_episodes, ds.meta.total_frames, ds.meta.fps) s = ds[0] s["observation.state"]… See the full description on the dataset page: https://huggingface.co/datasets/czc20033/piper_dual_act.

sourceHugging Facecc-by-4.0updated 2mo agoView on Hugging Face
0likes532downloads
Dataset Card

Piper 双臂机械臂数据集 · 摞杯子任务

Bimanual manipulation dataset collected on 4× AgileX Piper 6-DoF arms (leader–follower teleoperation) with 3 cameras, in LeRobot v3.0 format. Ready for ACT and VLA training out of the box.

配套代码、环境配置与实测调参结论见 GitHub 仓库(见页面底部)。


快速开始 · Quick start

python
from lerobot.datasets import LeRobotDataset

ds = LeRobotDataset("czc20033/piper_dual_act")
print(ds.meta.total_episodes, ds.meta.total_frames, ds.meta.fps)

s = ds[0]
s["observation.state"]              # (14,)  float32  从臂实际关节角
s["action"]                         # (14,)  float32  主臂关节角(人的意图)
s["observation.images.top"]         # (3, 480, 640) float32, 0~1
s["task"]                           # "把三个杯子摞起来"

训练 ACT:

bash
lerobot-train \
  --dataset.repo_id=czc20033/piper_dual_act \
  --policy.type=act --policy.device=cuda --policy.push_to_hub=false \
  --batch_size=8 --steps=30000 \
  --dataset.eval_split=0.1 --eval_steps=2500 \
  --output_dir=./outputs/act_piper --job_name=act_piper

RTX 5090 上约 14.4 步/秒,3 万步约 35 分钟,显存约 8 GB。

⚠️ --dataset.eval_split 必须配合 `--eval_steps=N`, 只写 evalsplit 的话验证永远不会执行(`evalsteps` 默认为 0)。

数据概览 · Overview

任务 Task把三个杯子摞起来 / Stack three cups
段数 Episodes50
帧数 Frames65,108
频率 FPS30
单段时长36 ~ 60 秒(中位 42 秒)
体积 Size1.88 GB
格式 FormatLeRobot v3.0
机器人 Robotpiper_dual_arm

特征 · Features

键 Key类型形状含义
actionfloat32(14,)主臂(人手拖动的一侧)关节角 —— 人的意图
observation.statefloat32(14,)从臂(实际执行的一侧)关节角 —— 机器人状态
observation.images.topvideo(480, 640, 3)ZED 2i,工作台正上方俯视
observation.images.left_wristvideo(480, 640, 3)RealSense D405,左臂腕部
observation.images.right_wristvideo(480, 640, 3)RealSense D405,右臂腕部

14 维向量顺序

[0..5]  左臂 J1~J6      [7..12]  右臂 J1~J6
[6]     左夹爪          [13]     右夹爪

单位统一为度(degree),夹爪也是开合角度。 LeRobot 训练时会按每维统计量自动归一化,单位本身不影响训练。

关于 action 与 state 的差值

两者含义对齐,差值即主从跟随误差。实测:

  • 12 个关节:平均误差 0.06° ~ 2.24°,跟随很准
  • 夹爪:误差较大(右夹爪均值约 38°)。这是正常的物理现象 —— 夹住物体时主臂被人手捏到底、从臂被物体挡住合不拢,差值即握力信息。 松开物体后跟随立即恢复。

⚠️ 数据多样性说明(请务必阅读)

我们量化了 50 段之间的相似度:

单段内关节的平均运动幅度   57.7°
任意两段之间的平均逐点差    9.4°
比值                        16%

各段起始姿态的标准差仅 5.9° —— 这 50 段本质上是同一条轨迹加了抖动, 每次杯子摆放位置和起始姿态都很接近。

这意味着:用这份数据训出的策略,在训练时见过的杯子位置附近表现尚可, 换到明显不同的位置容易失效。它更适合作为流程验证 / 基线复现的素材, 而非位置泛化能力的评测集。

我们主动公开这个数字,是为了让你对结果有正确预期。


采集方式 · Collection

关节空间主从遥操作:左主臂 → 左从臂,右主臂 → 右从臂。 人手拖动主臂(主臂不使能、开重力补偿),从臂复现其关节角。

采集程序的要点:

  • 主从对齐后自动接入:把主臂掰到从臂附近,六关节全进容差即自动开始跟随
  • 速率限幅:限幅器从"从臂当前实际位姿"起步,接入瞬间绝不突跳
  • 通信看门狗:任一路主臂数据静默即两侧同时急停
  • 人工判定:每段结束由人点「成功」或「丢弃」,只有成功的段落进数据集

硬件 · Hardware

设备型号
机械臂AgileX Piper 六轴 × 4
通信bytewerk candleLight USB-CAN × 4,1 Mbps
顶部相机Stereolabs ZED 2i(按 UVC 用,取左目)
腕部相机Intel RealSense D405 × 2
主机Ubuntu 24.04,RTX 5090 32G

实测调参结论 · Findings

在这份数据上真机验证过,部分结论与直觉相反

  1. 1.当前推荐配置:ResNet-18(默认 backbone)+ chunk_size=100 + 训练 15 万步, 部署时执行满整个 chunk。这是真机实测的最佳组合。
  1. 1.评估模型前,先确认部署链路是对的。 我们一开始测出「3 万步 > 5 万步 > 15 万步」, 差点得出"训久了会过拟合"的结论。后来发现那轮测试的速率限幅是错的 (关节限在 30°/s,而演示数据实际最高 284°/s;夹爪又完全不限速), 手臂被拖慢、夹爪提前闭合,所有模型都抓不准,排名自然失真。 改成合理值后重测,15 万步反而最好
  1. 1.训练 loss 和验证 loss 都不足以选模型。 训练 loss 从 0.091 单调降到 0.043 毫无反弹; 划 10% 做的验证 loss 在 2~4 万步后也走平,分辨不出 3 万和 15 万的差别 —— 因为验证集和训练集的杯子位置太像。这份数据上最终必须靠真机测试。
  1. 1.推理时执行满整个 chunk 最好。 n_action_steps=100(每 3.3 秒才看一眼相机) 直觉上像缺陷,但实测优于每 10 步重规划和时序集成。 原因:训练损失是对整 100 步一起算的,且 n_obs_steps=1 模型无记忆, 频繁重规划会让它反复改主意。
  1. 1.部署时速率限幅要按演示数据定。 本数据集实测关节最高 284°/s、 夹爪最高 738°/s。限幅设低了会拖慢手臂而夹爪照常瞬发 → 抓空。
  1. 1.视觉 backbone:验证 loss 上 CLIP ViT-B/16 冻结 (0.186) < CLIP 微调 (0.201) < ResNet-18 (0.213),冻结优于微调符合"参数多 + 数据少 = 过拟合"的预期。 但真机实测下来我们最终仍采用原版 ResNet-18 —— 这再次说明验证 loss 在这份数据上分辨力有限。
不同 chunk_size 之间的验证 loss 不可直接比较 —— 预测 20 步只需猜对 0.67 秒,预测 100 步要猜对 3.3 秒,后者天然更难。

隐私 · Privacy

发布前抽取 544 帧跑过人脸检测,18 处检出经人工逐帧核对全部为误报 (红框落在桌面、铝型材、传感器外壳上)。视频中未发现人物出镜

画面中可见实验室环境:桌椅、显示器(均黑屏)、另一台机械臂、设备箱, 无可辨认文字

注:采样率约 0.8%,且 Haar 检测器对侧脸/小脸不敏感,不能保证 100%。 如发现问题请提 issue,我们会处理。


许可 · License

数据以 CC BY 4.0 发布。使用请注明来源。 配套代码以 MIT 发布。

引用 · Citation

bibtex
@misc{piper_dual_act_2026,
  title  = {Piper Dual-Arm ACT Dataset: Cup Stacking},
  author = {czc20033},
  year   = {2026},
  howpublished = {\url{https://huggingface.co/datasets/czc20033/piper_dual_act}}
}