Open X-Embodiment 数据集详解
Open X-Embodiment 数据集详解
版本:2026-04-28
适用场景:VLA / 机器人基础模型 / 模仿学习 / 多机器人跨本体迁移 / OpenVLA、RT-X、Octo、SmolVLA + LeRobot 方案调研
0. 一句话概括
Open X-Embodiment,常简称 OXE / OpenX,是一个面向通用机器人策略学习的真实机器人轨迹数据集集合。
它不是单一机器人、单一任务、单一实验室采集的数据集,而是把多个机构、多个机器人形态、多个任务场景中的真实机器人演示数据统一到较一致的数据格式中,用于训练“跨机器人本体”的通用策略模型。
从研究定位看,它相当于机器人学习领域的一次“数据汇总与格式统一”尝试:
过去很多机器人策略模型只能在一个机器人、一个环境、一个任务上训练和泛化;OXE 希望通过多机器人、多任务、多场景数据混合,让模型学习更通用的视觉-语言-动作映射。
1. 背景:为什么需要 Open X-Embodiment?
1.1 传统机器人学习的核心痛点
传统机器人学习通常存在以下问题:
| 痛点 | 具体表现 | 结果 |
|---|---|---|
| 数据孤岛 | 每个实验室、机器人平台、任务都单独采集数据 | 数据难以复用 |
| 本体差异大 | 机械臂自由度、夹爪、相机位置、控制接口不同 | 一个模型很难直接迁移 |
| 任务差异大 | pick-place、open door、wipe table、drawer/cabinet 等任务分散 | 缺乏通用技能表达 |
| 格式不统一 | 数据字段、动作含义、图像来源、时间同步方式不同 | 训练管线难以复用 |
| 模型专用化 | 通常一个机器人/一个任务训练一个策略 | 泛化和规模化能力差 |
在 NLP/CV 中,大规模预训练模型通常建立在大规模统一数据上,例如图文数据、网页文本、图像分类/检测数据。机器人领域也需要类似的数据底座,但机器人数据比图文数据更难统一,因为它不仅包含图像和语言,还包含动作、关节状态、末端执行器状态、控制频率、成功/失败标记等序列信息。
1.2 OXE 的核心目标
Open X-Embodiment 的目标可以概括为:
把分散的真实机器人演示数据
↓
统一为可训练、可加载、可混合的数据格式
↓
支持跨机器人、跨任务、跨场景的通用策略预训练
↓
服务 RT-X / OpenVLA / Octo / π0 / SmolVLA 等 VLA 或机器人基础模型
2. 数据集整体规模与组成
根据 Open X-Embodiment / RT-X 官方论文与项目页,OXE 的典型公开描述如下:
| 维度 | 规模 / 描述 |
|---|---|
| 数据类型 | 真实机器人轨迹 / real robot trajectories |
| 轨迹数量 | 100 万级以上 real robot trajectories / episodes |
| 机器人本体 | 22 种 robot embodiments |
| 数据来源 | 约 60 个已有机器人数据集 |
| 机构 / 实验室 | 多个研究机构与机器人实验室合作构建 |
| 技能数量 | 527 个 skills |
| 任务数量 | 160,266 个 tasks |
| 任务类型 | 以操作类 manipulation 为主,也包含双臂、移动/四足等不同本体数据 |
| 统一格式 | RLDS episode format,底层通常为 TFRecord / TensorFlow Datasets 生态 |
| 典型下游模型 | RT-1-X、RT-2-X、OpenVLA、Octo、π0 系列、其他 VLA / generalist robot policy |
需要注意,论文、项目页、博客中对“机构数量 / 实验室数量 / 数据集数量”的表述可能存在统计口径差异。例如有的地方按 institutions 统计,有的地方按 labs 统计,有的地方按已纳入数据集版本统计。工程上应以当前官方 GitHub、Google Sheet、TFDS catalog 或 GCS bucket 中实际可用的数据集为准。
3. 什么是 X-Embodiment?
3.1 Embodiment 的含义
在机器人学习中,embodiment 指机器人“身体形态”和执行接口的组合,包括:
- 机械臂型号,例如 Franka、UR5、xArm、Kuka、WidowX 等;
- 夹爪类型,例如 parallel gripper、suction gripper、多指手等;
- 摄像头布局,例如 workspace camera、wrist camera、multi-view camera;
- 关节自由度、末端执行器坐标系、动作控制模式;
- 是否为单臂、双臂、移动机械臂、四足机器人等。
3.2 X-Embodiment 的含义
X-Embodiment 可以理解为“跨本体”或“跨机器人形态”。
它关心的问题是:
能不能训练一个模型,让它从多个机器人平台的数据中学习通用技能,并迁移到新的机器人、任务和环境?
这与传统单机器人模仿学习不同:
传统方式:
Franka 数据 → Franka 策略
UR5 数据 → UR5 策略
xArm 数据 → xArm 策略
X-Embodiment 方式:
Franka + UR5 + xArm + Kuka + WidowX + ... 数据
↓
统一训练一个更通用的视觉-语言-动作策略
↓
再适配到具体机器人
4. OXE 数据内容:一条轨迹里通常有什么?
OXE 的核心单位是 episode / trajectory,也就是一次机器人执行任务的完整轨迹。
每个 episode 又由一系列 step 组成,每个 step 记录当前观测、动作和一些辅助字段。
一个抽象结构如下:
episode:
episode_metadata:
dataset_name: bridge / fractal20220817_data / kuka / ...
robot: Franka / xArm / Kuka / WidowX / ...
task_language: "pick up the red block"
success: optional
scene_id: optional
steps:
- observation:
image: RGB workspace camera
wrist_image: optional
depth: optional
state: optional proprioception / joint / gripper state
natural_language_instruction: text instruction
action:
vector: robot action
reward: optional
discount: optional
is_first: true / false
is_last: true / false
is_terminal: optional
实际字段会随子数据集而变化。OXE 统一的意义不是让所有数据天然完全相同,而是将它们组织到相同的 episode/step 结构中,便于统一读取、过滤、混合和训练。
5. 数据格式:RLDS + TFRecord / TFDS
5.1 RLDS 是什么?
RLDS 是 Reinforcement Learning Datasets 的缩写,用于描述序列决策类数据。它适合表示:
- 强化学习数据;
- 离线强化学习数据;
- 模仿学习演示数据;
- 人类或专家控制轨迹;
- 机器人操作序列。
RLDS 的基本思想是:
Dataset = 多个 Episode
Episode = 多个 Step
Step = Observation + Action + Reward + Discount + Step Flags
对于机器人学习,最重要的是 Observation 和 Action。Reward 在很多模仿学习数据中可能并不是核心字段,实际训练 VLA 时常常更关注:
视觉图像 + 语言指令 + 历史上下文 → 下一步动作
5.2 OXE 为什么使用 RLDS?
OXE 使用 RLDS 的好处:
| 优点 | 说明 |
|---|---|
| 统一序列结构 | 不同机器人轨迹都可以表示成 episode/step |
| 支持多模态 | 图像、深度、点云、状态、语言、动作都可以作为字段 |
| 易于 TFDS 加载 | 与 TensorFlow Datasets / tf.data 生态兼容 |
| 适合并行读取 | TFRecord shard 可以支持大规模数据加载 |
| 便于转换 | 可进一步转换到 PyTorch、JAX、LeRobot、WebDataset、Zarr 等格式 |
6. Observation 空间详解
6.1 常见 Observation 字段
OXE 中的 observation 可能包含:
| 字段 | 类型 | 说明 |
|---|---|---|
image / workspace image |
RGB 图像 | 主视角图像,常作为 VLA 模型输入 |
wrist_image |
RGB 图像 | 腕部相机图像,部分数据集包含 |
depth |
深度图 | 部分机器人平台提供 |
pointcloud |
点云 | 少数数据集可能包含 |
state |
向量 | 关节角、末端位姿、夹爪状态等 |
natural_language_instruction |
字符串 | 任务语言描述 |
proprio / proprioception |
向量 | 机器人自身状态,例如 joint / gripper / ee pose |
6.2 训练 VLA 时通常怎么用?
对于 RT-1-X / RT-2-X / OpenVLA 这类模型,常见输入形式是:
RGB 图像 + 语言指令 → 动作 token / 动作向量
或者加入历史帧:
最近 N 帧图像 + 当前语言指令 → 下一步动作
典型预处理包括:
- 选择一个 canonical camera view;
- 图像 resize / crop / normalize;
- 文本 instruction tokenization;
- 动作归一化或离散化;
- 按 batch 混合多个子数据集。
7. Action 空间详解
7.1 统一到末端执行器动作
RT-X 论文中,为了跨机器人训练,作者将动作粗略对齐到末端执行器相关的动作空间。常见动作维度包括:
x, y, z, roll, pitch, yaw, gripper
也就是 6D 位姿变化 + 夹爪开合。
可以表示为:
action = [Δx, Δy, Δz, Δroll, Δpitch, Δyaw, gripper]
但需要注意:不同数据集中动作含义不一定完全相同。
同一个数值可能表示:
- 绝对位置;
- 相对位移;
- 速度;
- 控制器命令;
- 归一化后的控制量。
7.2 为什么动作空间仍然困难?
即便统一成 7D action,也仍然存在以下问题:
| 问题 | 说明 |
|---|---|
| 坐标系不一致 | 不同机器人末端坐标系、相机坐标系、世界坐标系定义不同 |
| 控制频率不同 | 有的机器人高频控制,有的低频采样 |
| 动作语义不同 | absolute / delta / velocity 混用 |
| 夹爪定义不同 | open/close、连续开合量、多指手状态不一致 |
| 非机械臂本体 | 双臂、四足、移动机器人动作空间更复杂 |
所以 OXE 的“统一”更准确地说是工程上的粗对齐与格式统一,不是物理意义上完全等价的控制接口统一。
8. 数据构建流程
OXE 的构建可以理解为以下流程:
8.1 原始数据接入
原始数据可能来自:
- 人类遥操作;
- 机器人自动采集;
- 任务脚本或专家策略;
- 实验室已有的公开数据集;
- 不同机器人平台的多任务实验。
8.2 数据标准化
标准化通常包括:
- episode 边界确定;
- step 时间顺序整理;
- 图像字段命名与压缩;
- action 字段映射;
- language instruction 统一;
- success / terminal / reward 字段处理;
- 数据集元数据写入。
8.3 数据混合
训练通用策略时,不是简单把所有数据拼接即可,还需要考虑:
- 各子数据集采样比例;
- 大数据集是否过度主导;
- 是否按机器人类型平衡;
- 是否按任务类型平衡;
- 是否过滤失败轨迹;
- 是否只选择有语言指令的数据;
- 是否统一图像分辨率;
- 是否统一动作频率。
9. 任务类型与技能分布
OXE 以真实机器人操作任务为主,常见任务包括:
| 任务族 | 示例 |
|---|---|
| Pick and place | pick block, place object into bowl |
| Drawer / cabinet | open drawer, close cabinet |
| Door / fridge | open door, open fridge |
| Object rearrangement | move apple near cloth, put can on table |
| Tool / household | wipe table, use spatula, move utensil |
| Long-tail skills | assembling, cleaning, pushing, pulling |
| 多机器人任务 | 双臂协作、移动平台相关任务等 |
整体上,pick-place 类任务占比较高,这是当前机器人操作数据集的共性。
但 OXE 的价值在于:它把大量不同环境、不同物体、不同机器人上的操作数据放在一起,使模型能接触到更长尾的动作模式和场景变化。
10. 与 RT-X 的关系
10.1 RT-X 是什么?
RT-X 不是单个固定模型名,而是指基于 OXE 数据训练出来的跨本体机器人策略系列。官方实验中主要包括:
| 模型 | 基础架构 | 说明 |
|---|---|---|
| RT-1-X | RT-1 | 高效 Transformer 机器人控制模型,使用 OXE 混合数据训练 |
| RT-2-X | RT-2 | 大型视觉-语言-动作模型,进一步利用跨本体机器人数据 |
10.2 RT-X 的核心训练思路
OXE 多机器人数据
↓
图像 + 语言指令 + 动作序列
↓
统一动作表达 / tokenization
↓
Transformer / VLA 模型训练
↓
得到跨机器人泛化策略
10.3 实验意义
官方结果显示,多机器人数据混合训练能带来正迁移:
- 在小数据机器人任务上,RT-1-X 相比单独数据集训练的模型平均成功率提升明显;
- RT-2-X 在部分 emergent skill / 空间关系任务上表现出比原 RT-2 更强的泛化能力;
- 说明跨本体数据对高容量模型更有价值。
11. 与 OpenVLA / Octo / SmolVLA / LeRobot 的关系
11.1 OpenVLA
OpenVLA 是一个 7B 参数级开源 VLA 模型,训练数据来自 OXE 的大规模真实机器人演示子集。
它的典型输入输出是:
输入:当前 RGB 图像 + 语言指令
输出:离散化动作 token / 机器人动作
OpenVLA 的意义在于:
- 权重、代码、训练方式更开放;
- 可在新机器人上做参数高效微调;
- OXE 成为它的核心机器人数据底座之一。
11.2 Octo
Octo 也是面向通用机器人策略的模型路线,通常同样利用大规模多机器人数据进行预训练。
从工程视角看,Octo / OpenVLA / RT-X 都说明了一个趋势:
机器人策略模型正在从“单任务小模型”
走向
“多任务、多机器人、大数据预训练 + 少量下游适配”
11.3 SmolVLA + LeRobot
对于工程资源有限的场景,例如 Jetson / Orin / 单卡工作站 / 小型机械臂,直接从 OXE 训练 7B VLA 通常不现实。更实用的路线是:
OXE 子集筛选
↓
转换为 LeRobot / 自定义 PyTorch 格式
↓
训练 SmolVLA / ACT / Diffusion Policy / 小型 VLA
↓
在目标机器人少量数据上微调
↓
部署到边缘设备
建议优先选择与目标机器人接近的数据子集:
| 目标机器人 | 优先筛选 |
|---|---|
| 单臂 + 平行夹爪 | Franka / UR5 / xArm / WidowX 类数据 |
| 桌面操作 | BridgeData、Franka、WidowX、Google Robot 类任务 |
| 移动物体 / 桌面 pick-place | pick-place、rearrangement、drawer/cabinet 子集 |
| 低算力部署 | 只保留单视角 RGB + 语言 + 7D action |
12. 数据加载示例
12.1 TFDS 加载示例
注意:具体 dataset name 需要以官方列表 / TFDS catalog / Google Sheet 为准。
import tensorflow_datasets as tfds
dataset_name = "bridge" # 示例名称,实际以官方可用名称为准
ds = tfds.load(dataset_name, split="train")
for episode in ds.take(1):
steps = episode["steps"]
for step in steps.take(1):
obs = step["observation"]
action = step["action"]
print(obs.keys())
print(action)
12.2 如果 tfds.load 找不到数据集
官方 GitHub FAQ 中给出一种手动下载方式,典型形式如下:
gsutil -m cp -r gs://gdm-robotics-open-x-embodiment/{dataset_name} ~/tensorflow_datasets/
下载后再使用:
import tensorflow_datasets as tfds
ds = tfds.load("{dataset_name}", split="train")
12.3 转 PyTorch / LeRobot 的思路
def convert_episode_to_samples(episode):
samples = []
steps = list(episode["steps"])
for t in range(len(steps) - 1):
step = steps[t]
image = step["observation"]["image"]
instruction = step["observation"]["natural_language_instruction"]
action = step["action"]
sample = {
"image": image,
"instruction": instruction,
"action": action,
"timestep": t,
}
samples.append(sample)
return samples
工程上更推荐先写一个统一中间格式:
sample:
dataset: string
robot: string
episode_id: string
step_id: int
image_path: string
wrist_image_path: optional
instruction: string
state: optional vector
action: vector
action_space: delta_ee_pose_gripper
success: optional bool
这样后续可以同时服务:
- OpenVLA fine-tuning;
- SmolVLA;
- LeRobot;
- ACT;
- Diffusion Policy;
- 自研 VLA / policy transformer。
13. 训练 VLA 时的推荐数据处理流程
13.1 选择子集
不要一开始就全量使用 OXE。建议按目标机器人和任务筛选:
目标机器人:单臂 + 平行夹爪
目标任务:桌面 pick-place / open drawer
目标输入:单 RGB workspace camera
目标输出:7D delta end-effector action
筛选条件:
- 有语言指令;
- 有 RGB 图像;
- action 可映射到目标机器人动作空间;
- 成功轨迹优先;
- 控制频率与目标系统接近;
- 任务场景与目标任务接近。
13.2 图像预处理
建议流程:
decode RGB
↓
resize 到 224 / 256 / 320
↓
center crop 或保持长宽比 padding
↓
normalize
↓
可选:JPEG 重编码 / WebDataset 打包
13.3 文本预处理
语言指令建议统一:
lowercase
去除多余标点
同义任务归一化
过滤空 instruction
构建 task vocabulary / instruction template
示例:
"pick up the red block"
"pick the red block"
"grab red cube"
可以归一为:
"pick up the red block"
13.4 动作预处理
动作是 OXE 训练中最关键、也最容易出错的部分。
推荐保存三层动作:
raw_action: 原始数据动作
canonical_action: 统一后的 7D action
target_robot_action: 映射到目标机器人控制接口后的动作
常见处理:
- clip 极端值;
- normalize 到 [-1, 1];
- 分维度计算 mean/std;
- gripper 单独二值化或归一化;
- delta pose 与 absolute pose 明确区分;
- 不同机器人单独保存 action metadata。
13.5 训练样本构造
VLA 训练样本可以是:
input:
image: current_rgb
instruction: language
output:
action: next_action
也可以加入历史:
input:
image_history:
- t-2
- t-1
- t
instruction: language
output:
action: action_t
对于策略模型,历史帧通常有利于判断:
- 物体是否已经抓起;
- 夹爪是否接触目标;
- 当前动作处于任务哪个阶段;
- 是否需要继续移动或终止。
14. OXE 的优势
| 优势 | 说明 |
|---|---|
| 规模大 | 百万级真实机器人轨迹,比多数单实验室数据集大很多 |
| 真实机器人数据 | 相比纯仿真数据,更贴近真实视觉和控制噪声 |
| 多机器人本体 | 支持研究跨机器人迁移和通用策略 |
| 多任务 | 覆盖大量 manipulation 技能 |
| 统一格式 | RLDS / TFDS 降低数据加载门槛 |
| 已被主流模型采用 | RT-X、OpenVLA、Octo 等路线都与 OXE 强相关 |
| 开源协作属性 | 适合作为机器人基础模型研究公共数据底座 |
15. OXE 的局限
15.1 数据分布不均衡
虽然 OXE 覆盖多个机器人,但不同机器人和任务的数据量并不均衡。某些机器人或数据集贡献的轨迹远多于其他机器人,可能导致模型更偏向大数据来源。
15.2 动作空间没有真正物理统一
即便映射为 7D end-effector action,不同机器人之间仍然存在:
- 坐标系差异;
- 控制器差异;
- 速度/位移/绝对位姿语义差异;
- 夹爪动作语义差异;
- 相机外参差异。
所以模型学到的“动作 token”并不能无条件直接迁移到任意机器人。
15.3 失败样本和负样本不足
许多演示数据偏成功轨迹。
这对模仿学习有利,但对以下能力不足:
- 判断失败;
- 自主恢复;
- 学习 reward;
- 识别 near-miss;
- 强化学习后续优化。
15.4 数据清洗成本高
工程上使用 OXE 通常会遇到:
- 子数据集字段不完全一致;
- 图像 key 不统一;
- action 维度不同;
- 部分数据集下载失败或版本不匹配;
- TFDS / tfds-nightly 版本差异;
- 数据体量大,存储和 IO 压力高。
15.5 与目标机器人仍有 domain gap
即使目标机器人也是机械臂,仍然可能有:
- 相机视角不同;
- 夹爪形状不同;
- 桌面高度不同;
- 物体类别不同;
- 控制延迟不同;
- 动作尺度不同。
因此 OXE 更适合做预训练数据底座,而不是完全替代目标机器人数据。
16. 工程落地建议:如何把 OXE 用到自己的 VLA 项目?
16.1 推荐路线
16.2 对单臂桌面操作的建议Open X-Embodiment 数据集详解
如果目标是类似:
- 机械臂抓取;
- 桌面物体移动;
- 简单装配;
- 开关抽屉;
- 放入容器;
- 视觉语言指令控制;
推荐数据策略:
OXE 中筛选相近机器人和桌面操作任务
+
自己采集 1k ~ 10k 条目标机器人演示
+
用 OpenVLA / SmolVLA / ACT / Diffusion Policy 微调
+
真实机器人小步测试
16.3 对 Jetson / Orin 部署的建议
Jetson / Orin 不适合从头训练大规模 OXE 模型,更适合:
| 阶段 | 设备 |
|---|---|
| OXE 数据处理 | 工作站 / 服务器 |
| 大模型预训练 / 微调 | 多卡 GPU / 云 GPU |
| 小模型微调 | 单卡 4090/5090/A6000 等 |
| 推理部署 | Jetson Orin NX / AGX Orin |
| 在线闭环 | ROS2 + TensorRT / ONNXRuntime / MNN |
边缘部署建议:
- 图像输入控制在 224/256/320;
- 策略频率从 3Hz/5Hz/10Hz 起步;
- 大 VLA 可蒸馏到小策略;
- 只保留目标任务相关动作维度;
- 使用 ROS2 action server / service 封装策略推理;
- 高风险动作加入安全约束层。
17. 与其他机器人数据集的对比
| 数据集 | 主要特点 | 与 OXE 的关系 |
|---|---|---|
| BridgeData | 桌面操作、WidowX 等平台数据 | OXE 中常见重要来源之一 |
| DROID | 大规模多场景机器人操作数据,含原始高质量数据 | 可与 OXE 互补,用于更丰富真实场景 |
| RoboNet | 多机器人操作视频数据 | 更早期的多机器人数据尝试 |
| LIBERO | 仿真 benchmark,适合长期任务和评测 | 可用于离线评估 / sim fine-tune |
| ALOHA / Mobile ALOHA | 双臂遥操作数据,适合精细操作 | 与 OXE 在双臂数据方向互补 |
| RH20T | 人类遥操作多模态机器人数据 | 可扩展多传感器学习 |
| OXE-AugE | 对 OXE 做机器人本体增强的数据扩展 | 试图缓解 OXE 本体不均衡问题 |
18. 对 VLA 模型训练的启示
18.1 数据比模型更关键
OXE 说明:
机器人基础模型要有泛化能力,不能只依赖模型结构,还必须依赖大规模、多样化、跨机器人数据。
18.2 动作 token 化是核心问题
VLA 模型不是普通 VLM。它不仅要理解图像和语言,还要输出可执行动作。
因此动作表示决定了模型能否真正闭环控制机器人。
关键设计包括:
- action normalization;
- action discretization;
- action tokenizer;
- gripper special token;
- terminate token;
- robot embodiment embedding;
- action chunking;
- diffusion action head。
18.3 Embodiment adapter 很重要
更合理的跨本体模型不应只靠一个统一 action vector,而应显式建模机器人差异:
image + language + robot_spec + state
↓
policy backbone
↓
embodiment-specific action head / adapter
其中 robot_spec 可以包含:
- 自由度;
- gripper 类型;
- link geometry;
- action scale;
- camera calibration;
- control mode;
- URDF / kinematic embedding。
18.4 OXE 更适合“预训练 + 适配”
最合理的使用方式不是:
直接用 OXE 训练一个模型,然后零样本控制任何机器人
而是:
OXE 预训练通用视觉-语言-动作能力
↓
目标机器人少量数据微调
↓
加入安全控制器和任务约束
↓
真实环境闭环部署
19. 推荐的本地目录结构
openx_project/
├── configs/
│ ├── dataset_mixture.yaml
│ ├── action_mapping.yaml
│ ├── robot_spec.yaml
│ └── train_vla.yaml
├── data/
│ ├── raw_tfds/
│ ├── converted_lerobot/
│ ├── webdataset/
│ └── metadata/
├── scripts/
│ ├── list_tfds_features.py
│ ├── inspect_episode.py
│ ├── convert_rlds_to_lerobot.py
│ ├── build_mixture.py
│ └── validate_action_stats.py
├── src/
│ ├── datasets/
│ │ ├── rlds_reader.py
│ │ ├── lerobot_writer.py
│ │ └── action_normalizer.py
│ ├── policies/
│ │ ├── smolvla_policy.py
│ │ ├── openvla_adapter.py
│ │ └── diffusion_policy.py
│ └── ros2/
│ ├── vla_policy_node.py
│ └── safety_filter.py
└── outputs/
├── action_stats.json
├── dataset_report.md
└── debug_videos/
20. 推荐配置示例
dataset:
name: openx_subset
source_format: rlds
output_format: lerobot
image_keys:
primary: image
wrist: wrist_image
use_wrist: false
use_depth: false
use_language: true
max_episodes_per_dataset: 50000
mixture:
datasets:
- name: bridge
weight: 1.0
- name: kuka
weight: 0.5
- name: fractal20220817_data
weight: 1.0
balance_by_robot: true
balance_by_task: false
image:
resolution: 256
crop: center
normalize: imagenet
action:
type: delta_ee_pose_gripper
dims: 7
normalize: per_dataset
clip_quantile: 0.99
gripper_mode: binary
training:
model: smolvla
batch_size: 64
history_frames: 2
predict_horizon: 1
lr: 1.0e-4
precision: bf16
21. 最小可行实验方案
如果你的目标是快速验证 OXE 对自己机器人项目是否有价值,建议不要直接全量训练,而是做一个最小实验:
Step 1:选择 1~3 个子数据集
选择标准:
- 与目标机器人相近;
- 与目标任务相近;
- 有 RGB + language + action;
- episode 数量适中。
Step 2:写 episode inspect 工具
检查:
- 图像 key;
- action shape;
- instruction 是否为空;
- episode 长度分布;
- gripper 取值范围;
- action mean/std;
- 是否存在异常 NaN / Inf。
Step 3:转成本地统一格式
建议先转成:
image 文件 + metadata.jsonl
其中 metadata.jsonl:
{
"episode_id": "xxx",
"step": 12,
"image": "images/xxx_000012.jpg",
"instruction": "pick up the red block",
"action": [0.01, -0.02, 0.0, 0.0, 0.0, 0.01, 1.0],
"dataset": "bridge",
"robot": "widowx"
}
Step 4:训练小策略
优先选择:
- ACT;
- Diffusion Policy;
- SmolVLA;
- 小型 Transformer policy;
- OpenVLA LoRA 微调。
Step 5:真实机器人小闭环测试
必须加入:
- 动作限幅;
- 工作空间限制;
- 速度限制;
- 夹爪安全策略;
- 急停;
- 失败回退;
- 低频率试跑。
22. 常见坑位清单
| 坑位 | 现象 | 建议 |
|---|---|---|
| dataset name 不匹配 | DatasetNotFoundError |
用官方 GitHub / Google Sheet / TFDS catalog 核对名称 |
| TFDS 版本问题 | 本地找不到 builder | 尝试 tfds-nightly 或手动下载 |
| action 语义搞错 | 机器人乱动 | 明确 absolute / delta / velocity |
| 坐标系不一致 | 方向相反或尺度异常 | 保存并验证 action metadata |
| gripper 反了 | open/close 逻辑相反 | 单独画 gripper 曲线检查 |
| 图像 key 不一致 | dataloader 报错 | 写 dataset-specific key mapping |
| 数据过大 | IO 慢、存储爆炸 | 先抽样、resize、JPEG/WebDataset |
| 数据分布不均衡 | 模型偏向某机器人 | mixture weight / balanced sampler |
| 只用成功轨迹 | 模型不会恢复 | 补充失败和 near-miss 数据 |
| 零样本部署 | 成功率不稳定 | 目标机器人少量微调必不可少 |
23. 总结
Open X-Embodiment 的核心价值不是“某个单独数据集特别干净”,而是:
大规模真实机器人轨迹
+ 多机器人本体
+ 多任务语言标注
+ 统一 RLDS/TFDS 格式
+ 可训练通用 VLA / robot policy
它对 VLA 和具身智能研究的意义在于:
- 提供机器人基础模型的数据底座:支撑 RT-X、OpenVLA、Octo 等路线;
- 推动跨本体学习:让模型从多个机器人数据中学习可迁移技能;
- 降低数据接入门槛:通过 RLDS/TFDS 统一数据加载;
- 暴露真实工程难点:动作空间、坐标系、机器人差异、数据不均衡仍然需要额外处理;
- 更适合预训练而非直接部署:实际项目中应采用“OXE 预训练 + 目标机器人微调 + 安全控制”的路线。
对于工程落地,最推荐的策略是:
不要一开始全量吃 OXE
先筛选相似机器人/相似任务子集
统一图像、语言和动作 schema
训练小模型或微调开源 VLA
再用目标机器人数据做闭环适配
参考资料
- Open X-Embodiment 官方项目页:https://robotics-transformer-x.github.io/
- Open X-Embodiment GitHub:https://github.com/google-deepmind/open_x_embodiment
- Open X-Embodiment / RT-X 论文:https://arxiv.org/abs/2310.08864
- Google DeepMind Blog - Scaling up learning across many different robot types:https://deepmind.google/blog/scaling-up-learning-across-many-different-robot-types/
- RLDS GitHub:https://github.com/google-research/rlds
- RLDS Blog:https://research.google/blog/rlds-an-ecosystem-to-generate-share-and-use-datasets-in-reinforcement-learning/
- OpenVLA 项目页:https://openvla.github.io/
- OpenVLA GitHub:https://github.com/openvla/openvla
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)