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 帧图像 + 当前语言指令 → 下一步动作

典型预处理包括:

  1. 选择一个 canonical camera view;
  2. 图像 resize / crop / normalize;
  3. 文本 instruction tokenization;
  4. 动作归一化或离散化;
  5. 按 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 的构建可以理解为以下流程:

各实验室原始机器人数据

数据清洗与字段映射

统一 episode / step 结构

转换为 RLDS / TFRecord

加入元数据与语言指令

形成可下载 TFDS 数据集

数据混合 mixture

训练 RT-X / OpenVLA / Octo 等策略模型

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 推荐路线

明确目标机器人与任务

筛选 OXE 相关子集

统一图像/语言/action schema

转换为本地训练格式

预训练或加载已有 VLA

目标机器人少量数据微调

仿真/离线回放评估

真实机器人闭环测试

失败样本回流继续微调

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 和具身智能研究的意义在于:

  1. 提供机器人基础模型的数据底座:支撑 RT-X、OpenVLA、Octo 等路线;
  2. 推动跨本体学习:让模型从多个机器人数据中学习可迁移技能;
  3. 降低数据接入门槛:通过 RLDS/TFDS 统一数据加载;
  4. 暴露真实工程难点:动作空间、坐标系、机器人差异、数据不均衡仍然需要额外处理;
  5. 更适合预训练而非直接部署:实际项目中应采用“OXE 预训练 + 目标机器人微调 + 安全控制”的路线。

对于工程落地,最推荐的策略是:

不要一开始全量吃 OXE
先筛选相似机器人/相似任务子集
统一图像、语言和动作 schema
训练小模型或微调开源 VLA
再用目标机器人数据做闭环适配

参考资料

  1. Open X-Embodiment 官方项目页:https://robotics-transformer-x.github.io/
  2. Open X-Embodiment GitHub:https://github.com/google-deepmind/open_x_embodiment
  3. Open X-Embodiment / RT-X 论文:https://arxiv.org/abs/2310.08864
  4. Google DeepMind Blog - Scaling up learning across many different robot types:https://deepmind.google/blog/scaling-up-learning-across-many-different-robot-types/
  5. RLDS GitHub:https://github.com/google-research/rlds
  6. RLDS Blog:https://research.google/blog/rlds-an-ecosystem-to-generate-share-and-use-datasets-in-reinforcement-learning/
  7. OpenVLA 项目页:https://openvla.github.io/
  8. OpenVLA GitHub:https://github.com/openvla/openvla
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐