wb_discard_pointed_cup_to_trash
收藏资源简介:
该数据集包含从Unitree G1人形机器人获取的全身遥操作数据,采用LeRobot v2.1格式。任务是人类指示机器人拿起一个杯子并放入指定的垃圾桶。数据集共41个episode,30514帧(约17分钟,30fps),每个episode长度540-1130帧。提供两个分支:main分支的手部状态和动作为全零(仅用于身体/运动任务),real_inspair分支包含Inspire手部估计(0.50-1.00)和二进制开/关触发。观测状态包括43维关节向量(腿、腰、臂、手),动作也是43维。视频数据包括胸部和头部摄像头,以及手部或身体姿态覆盖层。姿态标注包含MediaPipe手部关键点和RTMO身体骨架关键点,并以parquet列形式存储。数据按episode组织为parquet文件和mp4视频片段。
数据集概述
数据集名称:wb_discard_pointed_cup_to_trash
任务描述:捡起人类指向的杯子,然后将其丢入人类指向的垃圾桶。
基本信息
| 项目 | 详情 |
|---|---|
| 许可协议 | Apache-2.0 |
| 任务类别 | 机器人学 (robotics) |
| 语言 | 英语 |
| 数据规模 | 10K < N < 100K 帧 |
| 格式 | LeRobot v2.1(每集一个 parquet 文件和一个视频片段) |
数据统计
- 总集数:41 集
- 总帧数:30,514 帧(约 17 分钟,30 fps)
- 单集长度:540–1130 帧(中位数 739 帧)
- 相机:2 个 640×480 H.264 摄像头
- 状态/动作维度:均为 43 维关节向量
- 数据划分:训练集 0–41 集(无验证/测试划分)
分支说明
数据集提供两个分支,仅在灵巧手维度上有所不同,其余列(身体关节、时间戳、索引)完全一致:
| 分支 | 手部状态(维度 22–28 / 36–42) | 手部动作 | 适用场景 |
|---|---|---|---|
| main | 全零(未记录) | 原始 Dex3 遥操作向量(含负值) | 仅需身体/运动控制 |
| real_inspair | Inspire 估计值(0.50–1.00) | Inspire 原生指令(0.50–1.00),最后一槽为二进制开合触发信号 | 涉及手部相关需求 |
重要提示:若需训练抓取任务,请使用
real_inspair分支。main分支的手部状态列全为零,模型无法从中学习有效信息。加载方式:LeRobotDataset("DaoyuanZhu/wb_discard_pointed_cup_to_trash", revision="real_inspair")。
数据模式(Schema)
observation.state 和 action 均为 43 维,排列顺序如下:
| 范围 | 部位 | 内容 |
|---|---|---|
| 0–11 | 腿部 | 左右腿各含 hip_pitch, hip_roll, hip_yaw, knee, ankle_pitch, ankle_roll |
| 12–14 | 腰部 | yaw, roll, pitch |
| 15–21 | 左臂 | shoulder_pitch/roll/yaw, elbow, wrist_roll/pitch/yaw |
| 22–28 | 左手 | index_0, index_1, middle_0, middle_1, thumb_0, thumb_1, thumb_2 |
| 29–35 | 右臂 | shoulder_pitch/roll/yaw, elbow, wrist_roll/pitch/yaw |
| 36–42 | 右手 | index_0, index_1, middle_0, middle_1, thumb_0, thumb_1, thumb_2 |
在 real_inspair 分支中,Inspire 手部报告 6 维估计值(槽位 22–27 / 36–41 有值,槽位 28 / 42 保持零填充);动作侧对应槽位为原生指令,最后一槽为二进制触发信号(0.0 / 1.0)。
注意:
real_inspair的手部状态为估计值(从记录过 Inspire 反馈的采集转移而来),原始设备无手部传感,应描述为“估计/转移的 Inspire 手部状态”,而非记录的真实值。
视频信息
所有视频均为 H.264 编码:
| 视频键 | 内容 |
|---|---|
cam_chest |
胸部相机原始画面 |
cam_chest_hand_overlay |
胸部相机 + MediaPipe 手部关键点叠加 |
cam_chest_pose_overlay |
胸部相机 + RTMO 身体骨架叠加 |
cam_head |
头部相机原始画面 |
cam_head_hand_overlay |
头部相机 + MediaPipe 手部关键点叠加 |
cam_head_pose_overlay |
头部相机 + RTMO 身体骨架叠加 |
姿态标注
关键点以 parquet 列形式随帧存储,无需单独标注文件:
| 列 | 来源 | 内容 |
|---|---|---|
human_hand.<cam>.landmarks_uv |
MediaPipe Hands | 每只手 21 点,像素 u/v,左手槽位在前 |
human_hand.<cam>.landmarks_2d |
MediaPipe Hands | 归一化 x/y/z 坐标 |
human_hand.<cam>.world_landmarks |
MediaPipe Hands | 类度量世界坐标 x/y/z |
human_hand.<cam>.valid / .score |
— | 左右手存在标志和置信度 |
human_body.<cam>.landmarks_uv |
RTMO(rtmo-m_16xb16-600e_body7) |
COCO-17 身体关键点,像素 u/v |
human_body.<cam>.landmarks_2d |
RTMO | 归一化坐标 |
human_body.<cam>.scores / .valid |
— | 逐关键点置信度和逐帧标志 |
全零坐标且 valid = 0 表示未检测到目标,无 NaN 值。
标注过滤方法
- 身体检测:按回合后处理——分数阈值、基于边界框包含关系的重复抑制(普通 IoU 会漏掉吞没真实框的虚假大框)、片段合并、基于运动轨迹的单一身份锁定(轨迹基于饱和掩码的躯干色调直方图合并)。时间重叠的轨迹永不合并,因为同时可见的检测不可能属于同一个人。
- 手部候选:锚定在中心人物的手腕上——距手腕超过半肩宽的检测被拒绝,以此排除手形道具。
文件布局
data/chunk-000/episode_000000.parquet 每集一个 parquet 文件 videos/chunk-000/<video_key>/episode_000000.mp4 每集每个视频键一个剪辑 meta/info.json 特征模式 meta/episodes.jsonl 集索引和长度 meta/tasks.jsonl 任务字符串 meta/stats.json 各特征统计
加载方法
python from lerobot.common.datasets.lerobot_dataset import LeRobotDataset
ds = LeRobotDataset("DaoyuanZhu/wb_discard_pointed_cup_to_trash", revision="real_inspair") print(ds.meta.features.keys()) sample = ds[0]
对于 LeRobot v3.0+,需先运行官方升级命令: bash python -m lerobot.datasets.v30.convert_dataset_v21_to_v30 --repo-id=DaoyuanZhu/wb_discard_pointed_cup_to_trash
许可协议
Apache-2.0



