返回Blog

跨体机器人训练:你能跨越不同的机器人吗?

关于对多种机器人类型进行培训的研究表明,以改善通用化,

部分: [机器人租指南]

T4)

训练22种不同类型的机器人提高了23个的性能,但效果有重要限制.

跨体体假设

跨体育学习的核心要求:训练一个机器人政策从多种不同机器人类型的数据 不同的臂设计,不同的DOF数量,不同的动力学 产生一个模型,更好地将新机器人和新任务概括到一个机器人类型训练的模型. 这种假设是从语言模型类比 (训练更多多元化的文本帮助) 直观的,但对于机器人来说不显而易见,其中行动空间,动力学和物理能力在平台之间基本不同.

假设实际上是重要的,因为机器人数据昂贵.在RCSV,在 [OpenArm]T5) 上收集100个专家示范大约需要4个小时的操作时间,每小时75美元,这相当于每项任务300美元.如果你能利用其他实验室收集的100,000个机器人示范,你每次有用训练示例的实际成本会下降大小. 问题是,来自WidowX的数据是否真的有助于培训一个OpenArm的政策,如果是这样,

开放的X体:证据

开放X-Embodiment项目 (Padalkar等同,2023年;RTX合作论文) 是这一假设的最全面的测试.数据集包含22种机器人类型的527个技能,代表了全球实验室贡献的160,000+机器人事件. 关键结果:RT-X,训练用全套多体体数据集,在完成的通用化任务上超过了单机机器人专家的性能约50%.

许多人认为,这是一种非常重要的技术,但这些技术的技术也很重要.

详细数据集统计

Dataset Robot Types Episodes Skills Environments Format
Open X-Embodiment (OXE) 22 160,266 527 160+ RLDS (TensorFlow)
DROID 22 (different set) 76,000 350+ 564 RLDS + HDF5
RoboSet 3 100,000+ 12 100+ HDF5
Bridge V2 1 (WidowX) 60,096 13 24 RLDS
RT-1 Robot Action 1 (Everyday Robot) 130,000 700+ 1 RLDS
RCSV Shared Pool 5 25,000+ 40+ 30+ LeRobot HDF5

据悉,OXE数据集分布不均:大约60%的集集集来自3种机器人类型 (WidowX,Franka,Everyday Robot).其余19种机器人类型每次贡献10005,000集.这种不平衡是重要的,因为多体体的好处部分是由最富有数据的平台驱动的. 当你训练完整的OXE数据集时,你主要学习了WidowX/Franka/Everyday Robot操纵,

RT-2-X: 证明跨体体效果的VLA

RT-2-X扩展了RT-2视觉语言行动模型,以消耗整个OXE数据集.该架构是一个55B参数PaLM-E模型,它以图像和语言指示作为输入和输出.

  • **+50%在新兴评估上:**需要新型物体组合或空间关系的任务,这些任务并非直接在任何单个机器人训练数据中.
  • **+25%在分发任务中:**即使在单机数据集中得到良好表现的任务中,多体化模型更好.
  • 零射转: RT-2-X能够控制机器人,但在训练中没有成功率,尽管性能明显低于精细调节的机器人.

55B参数数量是一个重要的背景:这不是一个可以在实验室GPU运行的模型. 推理需要多个A100或H100s.大多数团队的实际版本是一个较小的模型 (17B) 根据OXE数据进行调整,该模型可以在可部署的规模上捕获大部分跨体体效益.

十月:实用跨体体基础模型

据悉,Octo (Ghosh等同类,2024) 是大多数团队应该开始使用的跨体体转移模型.它是93M参数变压器,从OXE数据集中训练800K机器人集,专门为新机器人和任务进行高效的细节调整而设计.

  • ** 架构:** 变压器具有特定模式的图像代号符号 (ViT),语言 (T5) 和自觉感知 (多层感知器). 动作头是具体的实施.
  • 精细调节成本: 50200次示范+24小时使用单个A100GPU.这在大多数研究实验室的范围内.
  • **性能:**Octo,精细调整了100个目标机器人演示,在WidowX,Franka和其他测试的平台上,在选择和位置任务上超过了2540%的训练从零开始.
  • 传输速度: 93M参数在单个RTX 4090上运行在15 Hz或在Jetson AGX Orin 上运行在8 Hz上,足以实现实时操纵控制.
# Fine-tuning Octo on your own robot data (simplified)
# Requires: pip install octo-model jax[cuda]

from octo.model.octo_model import OctoModel
from octo.data.dataset import make_single_dataset

# Load pre-trained cross-embodiment model
model = OctoModel.load_pretrained("hf://rail-berkeley/octo-base")

# Load your target robot dataset (LeRobot HDF5 or RLDS format)
target_dataset = make_single_dataset(
    dataset_kwargs={
        "name": "my_openarm_dataset",
        "data_dir": "/data/openarm_pick_place/",
        "image_obs_keys": {"primary": "image_wrist", "secondary": "image_overhead"},
        "state_obs_keys": ["joint_positions"],
        "language_key": "language_instruction",
    },
    traj_transform_kwargs={"window_size": 2},
    frame_transform_kwargs={"image_size": (256, 256)},
)

# Fine-tune with new action head for your robot's action space
# OpenArm: 6 joint positions + 1 gripper = 7D action space
model = model.finetune(
    target_dataset,
    action_dim=7,
    action_head="diffusion",       # or "mse" for deterministic
    learning_rate=3e-4,
    batch_size=256,
    num_steps=50_000,              # ~2 hours on A100
    save_dir="./octo_openarm_finetuned/",
)

体内规模

通过DROID论文 (Khazatsky等,2024) 扩大了这一分析,以关注规模.在22个机器人和564个环境中76K轨迹.对跨体体现性相关的关键DROID发现:添加不同机器人类型的示范改善了目标机器人上的散政策和ACT性能,即使其他机器人类型在动态上完全不同 (WidowX与WidowX相对). 例如, UR5).

虽然这些数据的增长并不均,但在多个领域,包括在移动操作器中,也提供了积极的信号,表明共享视觉和语义表示在不同的物理平台上携带有用信息.

机器人转移效益

Source Robot Target Robot Similarity Success Rate (Target Only) Success Rate (+Source Data) Improvement
WidowX-XL WidowX 250 Very High 62% 81% +19%
Franka Panda UR5e High (both 7-DOF) 55% 68% +13%
OpenArm WidowX 250 Moderate (6 vs 6 DOF) 62% 71% +9%
Franka Panda WidowX 250 Moderate (7 vs 6 DOF) 62% 70% +8%
Mobile Manipulator WidowX 250 Low 62% 65% +3%
Allegro Hand WidowX 250 Very Low 62% 62% +0%

转移效益与动态相似性有关,但即使是中等相似性的机器人也提供了有意义的改善. 实际的结论是,如果你在目标机器人上进行了100个示范, 添加1000多个比较类似机器人的示范,

为什么跨体移植工作

似乎有三个机制负责:

1. 共有视觉功能: 无论机器人执行任务的哪个,视觉输入 (对象,工作空间,任务结构) 都是一样的. 训练用22种机器人类型的模型开发了对操纵相关的功能更丰富的视觉表示. 边缘检测在可抓取的表面周围,对象状态估计 (开放/关闭,完整/空),空间关系编码 (上,内,旁边) 比训练在单个机器人.视觉编码器即使没有行动解码器,也从数据多样性中受益.

2. VLA中的行动空间抽象: OpenVLA 和 RT-2-X 等视觉语言-行动模型代表了标记化,抽象空间中的行动,部分分离任务知识与特定机器人动态. 当行动被分为桶 (例如 256个桶/维度) 时,来自WidowX的"移动右"代币具有与来自法兰卡的"移动右"代币的类似的语义意义,尽管潜在的联合轨迹完全不同.这种抽象允许任务级知识转移到不同的机器.

**3.语言定位:**当语言指令是模型输入的一部分 (如RT-2-X,Octo,OpenVLA),模型学习跨实施体验的共享语言行为映射. "取红杯"意味着不管机器人执行它. 这种共享语言的基础提供了一个普遍的任务表示,即使运动执行策略不同,它也可以完美地转移到实施体中.

转移失败的地方

  • ** 动力学非常不同:** 轮式移动平台和固定基臂之间的传输接近零.行动空间的不匹配太大,无法克服共享视觉特征.移动基 (vx,vy,omega) 的操作对6DOF臂的联合位置操作没有有用的梯度信息.
  • ** 抓手类型不匹配:** 并行 jaws gripper 的数据转移到吸管杯机器人并没有好转.接触相互作用模型太不同.并行 jaw 数据转移到其他并行机器人 (即使有不同的手指几何),但从并行手示范中学到的抓手阶段行为对吸管的抓手具有积极的危害.
  • DOF规模不匹配: 7DOF武器的数据转移到其他 7DOF武器的数据很好,但到 4DOF武器的数据差.维度差异会造成行动空间覆盖问题: 7DOF臂可以从许多角度接近物体,而 4DOF臂则受到限制.
  • **速度和动力不匹配:**高速工业武器的数据 (周期时间 <0.5s) 转移不佳到研究武器,同时也具有35s的周期时间. 视觉观测可能会相似的框架,但行动序列的节奏不同.
  • 接触式与无接触式任务: 接触式任务 (螺丝,插入,抛光) 的数据为无接触式任务 (接触式,视觉检查) 提供了最小的转移效益,反之亦然.

实用联合培训设置

如果您想利用您的特定机器人和任务的跨体现数据, 以下是RCSV的经验中最好的工作流程:

步骤1:选择您的数据库

在OXE集合中,选择与目标相似的DOF和抓住器类型的机器人数据集.对于一个并行 jaws gripper的6DOF臂 (如[OpenArm]T6)),最好的来源是:桥V2 (WidowX,60K集),DROID子集 (6-DOF臂,~15K集),以及RCSV共享池 (OpenArm +相似,~10K集). 避免移动操纵,精明的手,以及高DOF数据集它们增加了训练成本,而没有收益.

步骤2:规范行动空间

不同机器人具有不同的联合配置,因此原始联合空间操作不会转移.标准方法是将所有操作转换为终端效应空间: (dx, dy, dz,droll, dpitch, dyaw, gripper).这7D 德尔塔终端效应表现在所有单臂操纵器中具有任何DOF数量和任何抓住器. 转换使用每个机器人的前进动力学 (URDF + FK溶解器),并且是每数据集的一次预处理步骤.

# Action space normalization: joint space -> EE delta space
import numpy as np
from lerobot.common.robot_devices.robots.configs import OpenArmConfig

def joint_to_ee_delta(joint_actions, joint_states, robot_config):
    """Convert joint-space actions to end-effector delta actions.

    This normalization is required for cross-embodiment training:
    different robots have different joints but share the same
    6D end-effector space.
    """
    ee_deltas = []
    for i in range(len(joint_actions)):
        # FK at current state
        ee_current = robot_config.forward_kinematics(joint_states[i])
        # FK at next state (current + action)
        ee_next = robot_config.forward_kinematics(
            joint_states[i] + joint_actions[i, :robot_config.n_joints]
        )
        # Delta in EE space
        delta_pos = ee_next[:3] - ee_current[:3]
        delta_rot = quaternion_to_axis_angle(
            quaternion_multiply(ee_next[3:7], quaternion_inverse(ee_current[3:7]))
        )
        gripper = joint_actions[i, -1]  # gripper action passes through
        ee_deltas.append(np.concatenate([delta_pos, delta_rot, [gripper]]))
    return np.array(ee_deltas)

步骤3:数据集混合策略

目标机器人数据和跨体体数据之间的混合比重很重要.太多的跨体体数据压倒了目标特定细节;太少没有益处.根据目标数据集规模,我们的建议比率:

  • 模型需要多样性,因为它具有很少的目标信号.
  • 50200目标演示: Mix 1:5.这是交叉体现提供最相对的好处的地方.
  • **2001,000目标演示:**混合 1:2.跨体现数据有助,但边际效益正在减少.只关注最高质量的跨体现数据集.
  • **>1,000个目标演示:**跨体现式预训练仍然有利 (使用它作为初始化),但在细调中混合提供了减少的回报.从Octo或OpenVLA检查点训练,然后仅根据目标数据进行细调.

第四步:培训的配置

使用体现条件训练:将可学习的体现符号 (每个机器人类型的一个) 添加到模型的输入序列中.这允许模型学习体现特定的行为模式,同时在所有机器人之间共享视觉和任务表示.在目标机器人推断过程中,模型使用机器人体现符号. 费用:A100上8小时,进行全额联合训练,200万次混合节目.

接脸勒罗伯特的联合训练

通过HuggingFace的LeRobot框架来运行跨体现式联合培训,

# LeRobot co-training config (YAML)
# Save as: configs/co_train_openarm.yaml

dataset:
  # Primary: your target robot data
  repo_id: "svrc/openarm_pick_place_v2"
  mix_datasets:
    # Cross-embodiment data, weighted by similarity
    - repo_id: "lerobot/bridge_v2"
      weight: 0.3    # WidowX - moderate similarity
    - repo_id: "lerobot/droid_franka"
      weight: 0.2    # Franka - moderate-high similarity
    - repo_id: "svrc/shared_pool_6dof"
      weight: 0.4    # RCSV pool - high similarity
  action_space: "ee_delta_7d"  # Normalized EE space

policy:
  name: "diffusion"
  pretrained: "lerobot/diffusion_oxe_base"  # OXE pre-trained
  chunk_size: 16
  n_obs_steps: 2
  n_diffusion_steps: 100

training:
  batch_size: 256
  learning_rate: 1e-4
  num_epochs: 200
  eval_freq: 10
  device: "cuda"

# Run: python lerobot/scripts/train.py --config configs/co_train_openarm.yaml

测量跨体体益

为了知道跨体体数据是否真的帮助您的具体案例,

  1. 基本线: 仅使用您的目标机器人数据进行训练.
  2. +跨体现: 训练您的目标数据与跨体现数据混合.相同的模型架构,相同的超参数,相同的评估协议.
  3. +预训练的 init: 从Octo/OpenVLA检查点开始,然后仅对目标数据进行细节调整.
  4. 全管道: 在精细调节过程中从预训练的检查点开始并混合交叉体体数据.

在我们的经验中,选项3 (预训练 init + 仅针对目标的细节调整) 比选项2 (随机 init + 混合训练) 超过大多数团队.预训练的视觉表示是转移效益的主要来源,并且它们来自检查点.选项4提供了进一步的510%的改善,但增加了训练时间和复杂性.

**RCSV建议:**对于在目标机器人上进行<200次示范的团队,请从选项3开始:下载Octo基点,在单个A100上进行24小时的数据调整,并进行评估. 复杂性很大,边际优势通常较3大.

目前的限制

  • 负转移是真实的: 添加非常不同机器人数据 (不同DOF,不同抓住器类型,不同的任务域) 与仅针对目标的训练相比,可能会损害性能.
  • **行动空间正常化丢失信息:**转换为EE delta空间会丢弃冗余分辨率信息 (臂肘/肩膀配置如何变化).对于手臂配置重要任务 (进入混乱环境,避免肘部的障碍),在EE空间联合训练后,有时需要细节调整关节空间.
  • **数据集质量差异:**OXE和DROID数据集在示范质量上有着巨大的差异.一些贡献实验室拥有专业运营商;其他使用初学者运营商或部分自动化系统.来自跨体体源的低质量示范可以引入破坏目标政策的噪音.仔细监督您的跨体体混合.
  • **计算成本尺度线性:**更多的跨体体数据意味着比较多的训练计算.对于一个GPU的初创公司,一个完整的OXE联合训练运行需要35天.预训练的检查站 (Octo, OpenVLA) 抵消了这一成本
  • Sim-to-real gap compounds: 如果您的跨体体数据包含模拟数据 (有些OXE数据集这样做),则sim-to-real gap增加了跨体体差距. 除非您已验证它们帮助您的具体任务,否则将从您的跨体体组中过模拟衍生的数据集.

未来:世界机器人基金会模型

机器人领域正在向基于数百种机器人类型,数百万集和数千项任务的基础模型发展.类似于如何在数十亿网页上训练GPT.如GR-2 (ByteDance),pi0 (物理智能) 和下一代RT-X模型等项目正在扩大到这一愿景. 随着这些模型的成熟, 跨体体转移将从"仔细的联合训练配方"转变为"下载检查点,调整30分钟,部署".

对于今天的团队建设,实际建议是:将数据收集到标准格式 (LeRobot HDF5或RLDS),并提供完整的校准元数据,以便随着这些基础模型的出现,您可以从这些基础模型中获益.

通过RCSV共享数据

随着RCSV的 [数据服务]T7收集示范数据,您可以为其他平台提供访问跨体体预训练数据而向共享池提供匿名示范. 通过利用跨体现器传输效应,这可以减少您每任务的有效数据需求.该游泳池目前包含OverArm,WidowX,Franka,UR5e和Unitree Z1平台的25,000+集,每周增加新贡献.

对于希望在自己的硬件上收集的数据进行贡献的团队,RCSV提供了一个验证管道,该管道检查格式的合规性,示范质量 (顺度,成功率,摄像头校准),以及隐私 (在摄像头视图中没有可识别信息).验证的贡献可以与池中的任何数据进行代价的数据信用.

相关阅读

行动政策解释 · 模仿学习中的常见错误 · 开始与远程操作 · RCSV数据集 · 机器人词典

跨体体预训练的

通过RCSV的共享数据库提供了5个机器人平台的跨体体预训练数据.

探索数据服务 与数据工程师谈话