如果当前环境无法直接播放视频,可打开: assets/exusdata-demo.mp4
ExusData 是 PsiBot 新发布的新一代大规模真实世界多模态数据集。它覆盖视觉、语言和动作等关键维度,提供高真实度、高密度、可直接复用的人类行为数据,为具身智能训练提供基础数据支撑。
AtomGit AI 社区发布地址:https://ai.atomgit.com/psibot-ai/ExusData
依托 PsiBot 自研的、面向数据采集设计的外骨骼手套系统,ExusData 能够实现最高毫米级的定位精度,并捕捉双手和双臂的完整自由度,同时保留真实任务中的自然操作行为。ExusData 同时包含基于外骨骼手套采集的数据和裸手数据,将高精度结构化采集与自然人类交互行为结合,为具身模型提供更丰富、更全面的学习样本。
基于软硬件一体化的数据采集流程,ExusData 提升了数据一致性、可复用性和泛化价值,并进一步推动具身智能从实验室研究走向真实工业应用。
本次发布面向视觉-动作建模、操作学习、模仿学习以及多模态具身智能研究。
数据集以 clip 为基本索引单元,以 Zarr volume 为存储单元。每个子集都包含 manifest.json、任务元数据、clip 索引、标注文件以及压缩后的 .zarr.tar 数据包。
| 子集 | 描述 | Clip 数 | Volume 数 | 主要模态 |
|---|---|---|---|---|
ego | 第一视角视觉数据集 | 313,674 | 2,765 | RGB、深度、头部相机内参、头部 IMU |
glove-origin | 原始外骨骼手套操作数据集 | 95,383 | 793 | RGB、深度、头部位姿、腕部位姿、手部关节状态、指尖关键点 |
glove-rep-bg | 换背景后的手套操作数据集 | 3,526 | 69 | RGB、深度、头部位姿、腕部位姿、手部关节状态、指尖关键点 |
glove-with-tactile | 带触觉信号的外骨骼手套操作数据集 | 36,780 | 310 | 手套核心模态以及左右手触觉信号 |
每个子集都是自包含的,可以独立下载和读取。
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/每个子集都包含一个 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
}task.json任务元数据,用于记录 task_0001 等任务 key 与任务名称之间的映射关系。
index/clips.parquet子集的全局 clip 索引。每一行对应一个 clip,并指向某个 Zarr volume 内的一段时间范围。
常见字段包括:
| 字段 | 说明 |
|---|---|
clip_id | 稳定的 clip 标识符 |
task_key | 任务 key,例如 task_0001 |
volume_id | Volume 标识符 |
rel_path | 对应 .zarr volume 的相对路径 |
start_idx | Clip 在 volume 内的起始帧索引 |
end_idx | Clip 在 volume 内的结束帧索引 |
num_frames | Clip 的帧数 |
annotations/clip_annotations.parquetClip 级语言标注和摘要描述。
annotations/clip_steps.parquetClip 内部的 step 级语言标注。
所有时间序列模态都以时间维作为第一维。同一个 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..6ITW 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 wristqpos 和 fingertip 数组保留 retarget 输出中的顺序。可视化代码和 ITW hand URDF assets 见 tools/exusdata_render/README_zh.md。
发布数据统一归一化到 10 FPS 时间轴。
start_idx、end_idx 和 num_frames 都基于这个统一时间轴定义。对于同一个 clip,所有可用模态都可以使用相同的帧范围进行切片。
这里的对齐指多模态之间的时间对齐,不保证各模态具有相同空间分辨率,也不表示像素级配准。
Volume 使用 Zarr v3 目录格式存储,并以 .zarr.tar 压缩包形式发布。
解压后,每个 volume 包含根目录下的 zarr.json,各模态数组位于 data/<modality>/ 下。
示例:
000001.zarr/
├── zarr.json
└── data/
├── head_rgb/
├── head_depth/
└── ...数据集发布在 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"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)ExusData 基于 Creative Commons Attribution 4.0 International License (CC BY 4.0) 发布。
使用、再分发或基于本数据集构建衍生内容时,使用方应对 psibot-ai/ExusData 进行适当署名。本许可覆盖数据集发布本身,不免除使用方遵守适用法律、隐私要求、伦理要求以及第三方权利的责任。数据集不得用于身份识别、监控、重新识别或其他有害用途。
@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}
}