跳到主要内容

Fourier ActionNet 数据集

数据主要来自两个来源:机器人端摄像头端。HDF5 文件包含机器人端的数据,而摄像头端的数据存储在对应的 episode 文件夹中。数据集中还包含一个 metadata.json 文件,记录了所有 episode 的 ID 及其对应的提示信息。

下载数据集

首先,你可以在线下载数据集(以 .tar 文件形式提供)。下载后,使用以下命令解压所有文件:

find . -type f -name "*.tar" | xargs -I {} tar -xf {}

解压后,数据集的目录结构如下:

├── 01JH00FCRH6EIBDXTA # episode id
│   └── top
│   ├── depth.mkv # z16 depth video encoded in mkv format
│   ├── rgb.mp4 # h264 rgb video
│   └── timestamps.json
├── 01JH00FCRH6EIBDXTA.hdf5
├── 01JH00FRJ5YISEASEL
│   └── top
│   ├── depth.mkv
│   ├── rgb.mp4
│   └── timestamps.json
├── 01JH00FRJ5YISEASEL.hdf5
├── Metadata.json # metadata of the task, including prompt and all episodes id of the task
...

数据查看器

我们提供了一个简单的数据查看器,用于可视化数据。

首先,你需要安装依赖,有两种方式:

# Install dependencies
pip install -r requirements.txt
# Install with optional dependencies in the main package
pip install -e .[fourier_viz]

安装依赖后,你可以启动数据查看器。使用以下命令来运行:

# Usage with help message:
python scripts/fourier_viz.py -h

# Example usage:
python scripts/fourier_viz.py -d DATASET_PATH -e EPISODE_ID

数据准备

由于我们的训练流程依赖于 LeRobotDatasetV2 格式,你可以使用以下命令将数据集轻松转换为该格式。我们希望我们的数据集能助力令人振奋的人形机器人时代。

python scripts/convert_to_lerobot_v2.py --raw-dir DATASET_PATH --repo-id FourierIntelligence/ActionNet

数据结构

机器人端的数据在每个 episode 中存储为一个 HDF5 文件。以下展示了单个 episode 的 HDF5 文件结构。 HDF5 文件结构

01JH00FCRH6EIBDXTA.hdf5
├── action # Robot action data
│ ├── hand [12,x] or [24,x] # Dexhand data with Fourier hand
│  ├── pose [27,x] # End link data
│  └── robot [32 or 29] # All joint data in humanoids.
├── state # Robot state data
│  ├── hand [12,x] or [24,x]
│  ├── pose [27,x]
│  └── robot [32 or 29]
├── timestamp # Timestamp for both state and action
└── attributes # HDF5 attributes

Metadata.json(元数据文件)

metadata.json
{
{
"id": "01JH00FCRH6EIBDXTA",
"prompt": "Pick the lemon and put it in the box.",
}
...
}

数据说明

机器人端数据(hdf5)

机器人端数据主要分为三类:机器人状态(state)机器人动作(action)时间戳(timestamp)。每类数据都包含与机器人操作相关的具体内容。值得注意的是,状态和动作数据的结构类似。以下是详细说明:

  • 手部数据(Hand Data): 数据包含 (12, x) 或 (24, x) 维度。对于 6 自由度(DOF)的 Fourier 手,包含 12 个数据点(左手 6 个,右手 6 个);对于 12 自由度的手,则包含 24 个数据点(每只手 12 个)。
  • 位姿数据(Pose Data): 数据维度为 (27, x),包括双臂及头部的末端位姿信息。在我们的数据集中,旋转矩阵的前两列 表示姿态数据,位置向量 表示位置数据。因此每个末端(左臂、右臂、头部)共有 9 个数据点。
  • 机器人数据(Robot Data): 包含机器人的关节位置数据。对于 GR1-T1GR1-T2 机器人,共有 32 个数据点;对于 GR2 机器人,共有 29 个数据点,覆盖了所有关节位置。

摄像头端数据(rgb 与 depth)

摄像头端的数据存储在每个 episode 对应的文件夹中,格式如下:

  • rgb.mp4: 包含使用 H264 编码的 RGB 视频。
  • depth.mkv: 包含使用 Z16 编码的深度视频。
  • timestamps.json: 包含每帧的时间戳信息,用于同步摄像头与机器人数据。

注意:在原始数据集中,所有状态与动作数据已根据同一 hdf5 内的时间戳对齐,因此共享同一个时间戳数组。对于摄像头端数据,在运行转换脚本后会与机器人端数据对齐。

更多详细介绍请参考 Fourier ActionNet 数据集