wb_handover_pointed_hanging_clothes
收藏资源简介:
来自Unitree_G1_WholeBody_RGB的全身遥操作数据,以LeRobot v2.1格式发布。任务:取下人类指着的衣架上的衣服,然后递给人类。
Whole-body teleoperation data from Unitree_G1_WholeBody_RGB, released in LeRobot v2.1 format. Task: Remove the clothes from the hanger pointed by the human, then hand them to the human.
数据集概述
数据集名称:wb_handover_pointed_hanging_clothes
任务描述:机器人需要从人类指向的衣架上取下衣服,然后将衣服递给人类。这是一个全身遥操作数据集,基于 Unitree_G1_WholeBody_RGB 人形机器人采集,采用 LeRobot v2.1 格式发布。
许可协议:Apache-2.0
任务类别:机器人学(robotics)
基础统计
- 片段数(Episodes):80
- 帧数(Frames):52,524 帧(约 29 分钟,30 fps)
- 片段长度范围:501–1,017 帧(中位数 651 帧)
- 摄像头:2 × 640×480 分辨率,H.264 编码
- 状态/动作维度:43-D / 43-D 关节向量
- 数据划分:训练集
0:80
数据集分支说明
该数据集包含两个分支,仅在灵巧手维度上存在差异,其余列(身体关节、时间戳、索引等)完全一致:
| 分支 | 手部状态(维度 22–28 / 36–42) | 手部动作 | 适用场景 |
|---|---|---|---|
main |
全零(从未记录) | 原始 Dex3 遥操作向量,含负值 | 仅需身体/运动控制 |
real_inspair |
Inspire 估计值(0.50–1.00) | Inspire 原生指令(0.50–1.00),末尾槽位含二进制开/合触发信号 | 需要任何手部相关信息 |
注意:如需训练抓取相关任务,必须使用 real_inspair 分支,否则 main 分支的手部状态列全为零,模型无法从中学到任何手部信息。
加载示例: python from lerobot.common.datasets.lerobot_dataset import LeRobotDataset ds = LeRobotDataset("DaoyuanZhu/wb_handover_pointed_hanging_clothes", revision="real_inspair")
数据模式(Schema)
observation.state 和 action 均为 43 维,排列顺序如下:
- 0–11:腿部——左右腿的髋关节 pitch/roll/yaw、膝关节、踝关节 pitch/roll
- 12–14:腰部——yaw、roll、pitch
- 15–21:左臂——肩部 pitch/roll/yaw、肘部、腕部 roll/pitch/yaw
- 22–28:左手——index_0、index_1、middle_0、middle_1、thumb_0、thumb_1、thumb_2
- 29–35:右臂——肩部 pitch/roll/yaw、肘部、腕部 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 反馈的采集数据中转移),而非直接记录的 Ground Truth。
视频数据
所有视频均为 H.264 编码,可兼容任何标准播放器:
| 键名 | 内容 | 编码 |
|---|---|---|
observation.images.cam_chest |
胸部摄像头原始画面 | h264 |
observation.images.cam_chest_hand_overlay |
胸部摄像头 + MediaPipe 手部关键点叠加 | h264 |
observation.images.cam_chest_pose_overlay |
胸部摄像头 + RTMO 人体骨骼叠加 | h264 |
observation.images.cam_head |
头部摄像头原始画面 | h264 |
observation.images.cam_head_hand_overlay |
头部摄像头 + MediaPipe 手部关键点叠加 | h264 |
observation.images.cam_head_pose_overlay |
头部摄像头 + RTMO 人体骨骼叠加 | h264 |
姿态标注
关键点以 parquet 列形式存在(每帧一行),无需单独的标注文件:
| 列名 | 来源 | 内容 |
|---|---|---|
observation.human_hand.<cam>.landmarks_uv |
MediaPipe Hands | 每只手 21 个关键点,像素 u/v 坐标(先左手后右手) |
observation.human_hand.<cam>.landmarks_2d |
MediaPipe Hands | 归一化 x/y/z 坐标 |
observation.human_hand.<cam>.world_landmarks |
MediaPipe Hands | 类度量世界坐标 x/y/z |
observation.human_hand.<cam>.valid / .score |
— | 左右手存在标志及手性置信度 |
observation.human_body.<cam>.landmarks_uv |
RTMO rtmo-m_16xb16-600e_body7 |
COCO-17 人体关键点,像素 u/v |
observation.human_body.<cam>.landmarks_2d |
RTMO | 归一化关键点 |
observation.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 # 特征 schema meta/episodes.jsonl # 片段索引和长度 meta/tasks.jsonl # 任务字符串 meta/stats.json # 每特征统计信息
加载方式
python from lerobot.common.datasets.lerobot_dataset import LeRobotDataset
ds = LeRobotDataset("DaoyuanZhu/wb_handover_pointed_hanging_clothes", revision="real_inspair") print(ds.meta.features.keys()) sample = ds[0]
版本兼容说明
数据集以 v2.1 布局发布(每个片段一个 parquet + 一个视频片段),可直接在旧版 lerobot 上加载。在 lerobot v3.0+ 上需先运行官方升级命令:
python -m lerobot.datasets.v30.convert_dataset_v21_to_v30 --repo-id=DaoyuanZhu/wb_handover_pointed_hanging_clothes



