hand_tracking_lerobot_dataset
收藏手部追踪机器人数据集概述
数据集简介
专业级手部追踪数据集,采用LeRobot格式,专为训练AI驱动的机器人系统设计,适用于Figure AI和Physical Intelligence等公司。
数据集内容
- 视频数据:第一人称视角录制的手部操作任务视频
- 关节位置:42个手部关节的3D坐标(x、y、z)和方向角度(roll、pitch、yaw)
- 时间数据:所有帧的时间同步关节位置
- 元数据:完整的片段信息和数据集统计信息
数据集统计
- 总片段数:5
- 总帧数:16,861
- 帧率:约60 fps(各片段可变)
- 关节数:42(每只手21个关节×2只手)
- 每个关节维度:6(x、y、z、roll、pitch、yaw)
- 状态向量大小:252(42个关节×6个维度)
数据结构
lerobot_dataset/ ├── data/ │ └── chunk-000/ │ ├── episode_000000.parquet │ ├── episode_000001.parquet │ ├── episode_000002.parquet │ ├── episode_000003.parquet │ └── episode_000004.parquet ├── videos/ │ └── chunk-000/ │ └── cam_high/ │ ├── episode_000000.mp4 │ ├── episode_000001.mp4 │ ├── episode_000002.mp4 │ ├── episode_000003.mp4 │ └── episode_000004.mp4 ├── meta/ │ └── info.json └── README.md
关节结构
每只手包含21个关节,遵循MediaPipe手部标志点结构:
左/右手关节:
- 手腕
- 拇指:CMC、MCP、IP、指尖
- 食指:MCP、PIP、DIP、指尖
- 中指:MCP、PIP、DIP、指尖
- 无名指:MCP、PIP、DIP、指尖
- 小指:MCP、PIP、DIP、指尖
每个关节维度:
x、y、z:3D位置(归一化坐标)roll、pitch、jaw:方向角度(度)
数据格式
Parquet文件
每个片段存储为Parquet文件,包含以下列:
episode_index:片段编号(int32)frame_index:片段内帧编号(int32)timestamp:从片段开始的时间(秒,float32)observation.state:252个float32值的数组,表示所有关节位置action:252个float32值的数组(与observation.state相同,用于模仿学习)
状态向量布局
observation.state数组组织为:
[左手手腕_x, 左手手腕_y, 左手手腕_z, 左手手腕_roll, 左手手腕_pitch, 左手手腕_jaw, 左手拇指_cmc_x, ..., 右手小指_指尖_jaw]
总计:42个关节×6个维度=252个值
片段信息
| 片段 | 运行名称 | 帧数 | 帧率 | 持续时间(秒) |
|---|---|---|---|---|
| 0 | Run_1 | 3,625 | 59.8 | ~60.6 |
| 1 | Run_2 | 3,921 | 59.6 | ~65.8 |
| 2 | Run_3 | 2,941 | 59.9 | ~49.1 |
| 3 | Run_4 | 3,388 | 59.5 | ~57.0 |
| 4 | Run_5 | 2,986 | 59.6 | ~50.1 |
数据收集
设备
- 相机:iPhone(头戴式或固定位置)
- 追踪:MediaPipe Hands(模型复杂度0)
- 分辨率:可变
- 帧率:约60 fps
处理流程
- 使用MediaPipe提取手部标志点
- 3D位置归一化到相机坐标
- 从手掌几何计算方向角度
- 按关节/维度存储为时间序列数据
质量说明
- 当手部未被检测到时,某些帧可能包含NaN值
- 数据与视频逐帧同步
- 关节位置已归一化(x、y通常在0-1范围内)
- 方向角度以度为单位
训练分割
- 训练集:片段0-3(4个片段,约13,875帧)
- 测试集:片段4(1个片段,约2,986帧)
使用要求
- Python 3.7+
- pandas
- pyarrow(用于Parquet支持)
- numpy
- plotly(用于可视化,可选)




