psibot-ai/ExusData
数据集数据集查看器文件和版本Pull Requests讨论

ExusData 中文说明

English README

演示视频

如果当前环境无法直接播放视频,可打开: assets/exusdata-demo.mp4

1. 数据集概览

ExusData 是 PsiBot 新发布的新一代大规模真实世界多模态数据集。它覆盖视觉、语言和动作等关键维度,提供高真实度、高密度、可直接复用的人类行为数据,为具身智能训练提供基础数据支撑。

AtomGit AI 社区发布地址:https://ai.atomgit.com/psibot-ai/ExusData

依托 PsiBot 自研的、面向数据采集设计的外骨骼手套系统,ExusData 能够实现最高毫米级的定位精度,并捕捉双手和双臂的完整自由度,同时保留真实任务中的自然操作行为。ExusData 同时包含基于外骨骼手套采集的数据和裸手数据,将高精度结构化采集与自然人类交互行为结合,为具身模型提供更丰富、更全面的学习样本。

基于软硬件一体化的数据采集流程,ExusData 提升了数据一致性、可复用性和泛化价值,并进一步推动具身智能从实验室研究走向真实工业应用。

本次发布面向视觉-动作建模、操作学习、模仿学习以及多模态具身智能研究。

数据集以 clip 为基本索引单元,以 Zarr volume 为存储单元。每个子集都包含 manifest.json、任务元数据、clip 索引、标注文件以及压缩后的 .zarr.tar 数据包。

2. 数据子集

子集描述Clip 数Volume 数主要模态
ego第一视角视觉数据集313,6742,765RGB、深度、头部相机内参、头部 IMU
glove-origin原始外骨骼手套操作数据集95,383793RGB、深度、头部位姿、腕部位姿、手部关节状态、指尖关键点
glove-rep-bg换背景后的手套操作数据集3,52669RGB、深度、头部位姿、腕部位姿、手部关节状态、指尖关键点
glove-with-tactile带触觉信号的外骨骼手套操作数据集36,780310手套核心模态以及左右手触觉信号

每个子集都是自包含的,可以独立下载和读取。

3. 目录结构

ExusData/
├── ego/
│   ├── manifest.json
│   ├── task.json
│   ├── index/
│   │   └── clips.parquet
│   ├── annotations/
│   │   ├── clip_annotations.parquet
│   │   └── clip_steps.parquet
│   └── tasks/
│       └── <task_key>/
│           └── <volume_id>.zarr.tar
├── glove-origin/
├── glove-rep-bg/
└── glove-with-tactile/

4. Manifest

每个子集都包含一个 manifest.json。

manifest.json 提供该子集的简要摘要:

字段说明
tasks子集中包含的任务 key 列表
modalities子集中包含的模态列表
volume_count子集中的 Zarr volume 数量
clip_count子集中的 clip 数量

示例:

{
  "tasks": ["task_0001", "task_0002"],
  "modalities": ["head_rgb", "head_depth"],
  "volume_count": 1,
  "clip_count": 1
}

5. 元数据文件

task.json

任务元数据,用于记录 task_0001 等任务 key 与任务名称之间的映射关系。

index/clips.parquet

子集的全局 clip 索引。每一行对应一个 clip,并指向某个 Zarr volume 内的一段时间范围。

常见字段包括:

字段说明
clip_id稳定的 clip 标识符
task_key任务 key,例如 task_0001
volume_idVolume 标识符
rel_path对应 .zarr volume 的相对路径
start_idxClip 在 volume 内的起始帧索引
end_idxClip 在 volume 内的结束帧索引
num_framesClip 的帧数

annotations/clip_annotations.parquet

Clip 级语言标注和摘要描述。

annotations/clip_steps.parquet

Clip 内部的 step 级语言标注。

6. 模态说明

所有时间序列模态都以时间维作为第一维。同一个 clip 内的所有可用模态都对齐到统一的 10 FPS 时间轴。

模态说明
head_rgb头部相机 RGB 图像序列
head_depth头部相机深度图序列
head_camera_intrinsics头部相机内参
head_tracker2head_camera头部 tracker 到头部相机的外参变换
head_pose头部位姿序列
head_imu头部 IMU 序列,存在于 ego 子集
left_wrist_pose左腕位姿序列
right_wrist_pose右腕位姿序列
left_qpos左手关节状态
right_qpos右手关节状态
left_fingertip左手指尖关键点
right_fingertip右手指尖关键点
left_glove_tactile左手手套触觉信号,存在于 glove-with-tactile 子集
right_glove_tactile右手手套触觉信号,存在于 glove-with-tactile 子集

深度数据约定

head_depth 存储头部相机深度帧,数据类型为 float32,单位为毫米。

无效或未返回的深度像素使用 0.0 表示。当前发布版本不提供单独的深度有效性 mask。

手部状态字段

手套相关子集包含左右手的 ITW hand retarget 结果。

left_qpos 和 right_qpos 是 float32 数组,shape 为 (T, 30)。每一行记录对应 ITW hand 模型的 30 个 revolute joint position。关节顺序如下:

0-5    Index_Joint1..6
6-11   Little_Joint1..6
12-17  Middle_Joint1..6
18-23  Ring_Joint1..6
24-29  Thumb_Joint1..6

ITW URDF 中每根手指还包含一个 fixed Joint7,这些 fixed joints 不属于 30 维 qpos 向量。

left_fingertip 和 right_fingertip 是 float32 数组,shape 为 (T, 11, 3)。最后一维为 [x, y, z],11 个关键点顺序如下:

0   thumb fingertip
1   index fingertip
2   middle fingertip
3   ring fingertip
4   little fingertip
5   thumb proximal link
6   index proximal link
7   middle proximal link
8   ring proximal link
9   little proximal link
10  wrist

qpos 和 fingertip 数组保留 retarget 输出中的顺序。可视化代码和 ITW hand URDF assets 见 tools/exusdata_render/README_zh.md。

7. 帧率与时间对齐

发布数据统一归一化到 10 FPS 时间轴。

start_idx、end_idx 和 num_frames 都基于这个统一时间轴定义。对于同一个 clip,所有可用模态都可以使用相同的帧范围进行切片。

这里的对齐指多模态之间的时间对齐,不保证各模态具有相同空间分辨率,也不表示像素级配准。

8. 存储格式

Volume 使用 Zarr v3 目录格式存储,并以 .zarr.tar 压缩包形式发布。

解压后,每个 volume 包含根目录下的 zarr.json,各模态数组位于 data/<modality>/ 下。

示例:

000001.zarr/
├── zarr.json
└── data/
    ├── head_rgb/
    ├── head_depth/
    └── ...

9. 下载方式

数据集发布在 AtomGit AI 社区: https://ai.atomgit.com/psibot-ai/ExusData

推荐在页面中点击“下载”或“使用数据集”获取平台生成的下载方式。若希望使用命令行并按路径选择下载数据,可使用 Git LFS。

安装并初始化 Git LFS:

git lfs install

先克隆仓库索引,但不立即下载全部大文件:

GIT_LFS_SKIP_SMUDGE=1 git clone https://atomgit.com/psibot-ai/ExusData.git ExusData
cd ExusData

只下载某个子集的元数据:

git lfs pull --include="glove-origin/manifest.json,glove-origin/task.json,glove-origin/index/*.parquet,glove-origin/annotations/*.parquet"

下载某个子集下的一个任务:

git lfs pull --include="glove-origin/tasks/task_0001/*.zarr.tar"

下载单个 volume:

git lfs pull --include="glove-origin/tasks/task_0001/000001.zarr.tar"

10. 最小读取示例

from pathlib import Path
import tarfile

import pandas as pd
import zarr

root = Path("./ExusData")
subset = "glove-origin"

clips = pd.read_parquet(root / subset / "index" / "clips.parquet")
clip = clips.iloc[0]

archive_path = root / subset / f"{clip['rel_path']}.tar"
extract_dir = archive_path.with_suffix("")

if not extract_dir.exists():
    with tarfile.open(archive_path) as tar:
        tar.extractall(archive_path.parent)

group = zarr.open_group(extract_dir, mode="r")

start = int(clip["start_idx"])
end = int(clip["end_idx"])

head_rgb = group["data/head_rgb"][start:end]
head_depth = group["data/head_depth"][start:end]

print("clip_id:", clip["clip_id"])
print("head_rgb:", head_rgb.shape)
print("head_depth:", head_depth.shape)

11. License

ExusData 基于 Creative Commons Attribution 4.0 International License (CC BY 4.0) 发布。

使用、再分发或基于本数据集构建衍生内容时,使用方应对 psibot-ai/ExusData 进行适当署名。本许可覆盖数据集发布本身,不免除使用方遵守适用法律、隐私要求、伦理要求以及第三方权利的责任。数据集不得用于身份识别、监控、重新识别或其他有害用途。

12. 引用

@dataset{ExusData,
  title={ExusData: A Large-Scale Real-World Multimodal Dataset for Embodied Intelligence},
  author={PsiBot},
  year={2026},
  publisher={AtomGit AI Community},
  url={https://ai.atomgit.com/psibot-ai/ExusData},
  note={Dataset}
}