AY-Robots 公共数据集目录,显示在 SO-100 级别机械臂上记录的 LeRobot 数据集
数据集Open X-EmbodimentDROIDSO-100LeRobot

在 SO-100 上使用 DROID、BridgeData V2 和 Open X

AY-Robots ResearchAugust 23, 202618 分钟阅读

DROID、BridgeData V2 和 Open X-Embodiment 转换为 6 自由度和 7 自由度机械臂上的 7 维末端执行器动作。SO-100 接收 6 个关节位置。哪些可以迁移,哪些不可以,以及替代方案。

简要版本

  • 所有这三个LeRobot构建版本共享一个约定:一个7维末端执行器动作[x, y, z, roll, pitch, yaw, gripper]和一个带填充槽的8维状态。SO-100接收六个绝对关节位置。
  • 该7维向量是转换器的产物:DROID自身的RLDS动作字段是6个关节速度加上一个夹持器位置,笛卡尔视图在action_dict中。
  • 四个时钟:DROID 15 fps,BridgeData V2 5 fps,google_robot切片 3 fps,SO-100录制 30 fps。
  • 您无法将它们与您自己的数据合并。validate_all_metadata会在fps、robot_type或features中第一个不同之处引发错误,而这三者都不同。
  • 可迁移的是预训练权重,而非剧集。开源数据占pi0预训练混合物的9.1%。
  • 它们最便宜的实际用途是一个测试夹具:一个已知良好的2 GB、100个剧集的DROID样本,可在您周末录制之前验证您的管道。

Google Cloud存储桶上有一个百万轨迹的公共数据集,以及一个SO-100在桌上,其零件成本为110到150欧元。为什么前者不能教后者?它部分可以,但几乎所有迁移都没有发生在人们期望的地方,而看起来最简单的部分根本不起作用。

以下内容:DROIDBridgeData V2Open X-Embodiment内部是什么,它们各自与低成本的5自由度机械臂的冲突点,以及替代方案。以下所有数字均来自其所属的论文、数据集卡片或源文件。

这三个数据集实际包含什么

DROIDBridgeData V2Open X-Embodiment
机器人Franka Panda, 7 DoF, Robotiq 2F-85WidowX 250, 6 DoF, ~4,000 USD rig22 embodiments, 60 datasets, 34 labs
规模76k trajectories, 350 hours60,096 trajectories1M+ trajectories, 527 skills
多样性564 scenes, 84 tasks, 50 collectors24 environments, 13 skills160,266 tasks, 21 institutions
构成全部遥控操作50,365 次遥控操作,9,731 次脚本操作按来源实验室
控制频率15 Hz5 Hz可变,3 fps 及以上
摄像头2 个 ZED 2 外部摄像头,1 个 ZED Mini 腕部摄像头最多 4 个,大多数情节只使用固定摄像头实验室使用的任何型号
原始下载1.7 TB RLDS,8.7 TB 原始立体数据JPEG 存档按数据集划分的 TFDS 存储桶
入口点是 LeRobot 转换版本,而非原始存储桶

很少有人还会下载 1.7 TB 的 RLDS TFRecords。社区组织 IPEC-COMMUNITY 已将 Open X-Embodiment 的大部分内容以 LeRobot 数据集 形式重新发布,采用 AV1 视频编码,其中 DROID 数据集大小为 392 GB。这将是您将要使用的版本,其 meta/info.json 是您首先需要阅读的文件。

DROID

三者中最标准化的。所有地方都使用一套设备:一个配备 Robotiq 2F-85 夹持器的 Franka Panda 机器人,两个可调节的 ZED 2 立体摄像头和一个腕部 ZED Mini 摄像头,通过 Meta Quest 2 控制器进行遥控操作,通过 Polymetis 以 15 Hz 的频率在关节和 末端执行器 空间中记录。语言标签后来通过 tasq.ai 添加,每个 情节

  • 7.6万条轨迹,350小时,564个场景,84项任务,50个收集器分布在三大洲。
  • 主要结果是协同训练,而非独立训练:与域内演示按50/50比例混合的批次,在分布内绝对成功率上比次优方法高出22个百分点,在分布外高出17个百分点。
  • IPEC-COMMUNITY/droid_lerobot:92,233个片段,27,044,326帧,franka,15 fps,codebase_version v2.0,三个180x320的AV1流,392 GB。
  • 一个2 GB、100个片段的调试样本位于gs://gresearch/robotics/droid_100。从那里开始。

BridgeData V2

最接近业余爱好者设置:一个WidowX 250 6自由度机械臂,在24个环境和13项技能中,以5 Hz的速度收集了60,096条轨迹。请注意其构成:50,365条专家远程操作演示,加上9,731条来自随机脚本化的抓取放置策略,因此大约16%不是人类演示,这对于模仿学习质量很重要。通常的下载,IPEC-COMMUNITY/bridge_orig_lerobot,报告有53,192个片段和1,893,026帧,以5 fps的速度,robot_type widowx:少于论文中的60,096,因此请从meta/info.json读取计数,而不是引用两者中的任何一个。

Open X-Embodiment

这并非传统意义上的数据集:来自34个实验室的60个现有机器人数据集被汇集到一个RLDS集合中,涵盖22种机器人实体和超过一百万条轨迹。BridgeData V2作为bridge_orig包含在其中;google_robot切片,fractal20220817_data,转换为87,212个剧集,帧率为3 fps。

这种汇集方式带有一个论文中明确指出的注意事项。对于RT-X实验,作者将每个源转换为7自由度末端执行器动作,但不跨数据集对齐坐标系,并允许动作值根据每个机器人原始的控制方案是绝对或相对位置或速度。他们的结论是:相同的动作向量可能对不同的机器人产生非常不同的运动。

The AY-Robots dataset directory listing public LeRobot datasets with episode counts and task descriptions
The public dataset directory at /directory: datasets already in LeRobot form, already matching a supported arm.

不匹配,分为四部分

具身不匹配通常被视为一个模糊的问题。它实际上有四种,它们失败的方式不同,其中两种无法通过脚本修复。

1. 自由度

SO-100 有五个手臂关节和一个夹爪。如果按电机数量计算,它是一个 6 自由度机械臂,SmolVLA 论文中也这样称呼;如果按定位机构计算,它是 5 自由度,LeRobot 在其逆运动学文档字符串中也这样称呼,该文档描述了 5 自由度 SO-101 上的软姿态 IK,其中手腕仅部分跟踪姿态。Franka 有七个定位关节。这种差异决定了哪些姿态是存在的:一个 5 自由度机械臂通常无法同时达到任意位置和姿态,因此求解器会返回最接近的结果,这与演示的运动不同。背景知识:自由度.

python
# src/lerobot/robots/so_follower/so_follower.py
motors = {
    "shoulder_pan":  Motor(1, "sts3215", norm_mode_body),
    "shoulder_lift": Motor(2, "sts3215", norm_mode_body),
    "elbow_flex":    Motor(3, "sts3215", norm_mode_body),
    "wrist_flex":    Motor(4, "sts3215", norm_mode_body),
    "wrist_roll":    Motor(5, "sts3215", norm_mode_body),
    "gripper":       Motor(6, "sts3215", MotorNormMode.RANGE_0_100),
}
# action keys are "<motor>.pos"; send_action sync_writes them to
# "Goal_Position"  ->  a 6-D ABSOLUTE JOINT POSITION command


# openpi/src/openpi/policies/droid_policy.py
def make_droid_example() -> dict:
    return {
        "observation/exterior_image_1_left": np.random.randint(256, size=(224, 224, 3), dtype=np.uint8),
        "observation/wrist_image_left":      np.random.randint(256, size=(224, 224, 3), dtype=np.uint8),
        "observation/joint_position":        np.random.rand(7),   # seven Franka joints
        "observation/gripper_position":      np.random.rand(1),
        "prompt": "do something",
    }
# state = concat(joint_position, gripper_pos)  ->  8-D
左图:LeRobot 的 SO 追随器,来自 src/lerobot/robots/so_follower/so_follower.py。右图:openpi 的 DROID 策略输入。六对八。

因此,现成的 DROID 检查点并非捷径。Physical Intelligence 在 gs://openpi-assets/checkpoints/pi05_droid 提供了 pi05_droid,而同一份赞扬其广泛性的 README 文件也警告说,这些专家检查点可能无法推广到您的设置。它的状态是八个 Franka 关节编号,图像键是 exterior_image_1_left 和 wrist_image_left。没有标志能将其转换为六电机 SO-100 命令。

2. 动作向量的实际含义

比维度更深。在 LeRobot 转换中,所有三者都表示夹持器在笛卡尔空间中的位置。SO-100 表示六个伺服电机的位置。转换需要运动学模型和求解器,而不是重塑。

属性LeRobot 形式的 OXE、DROID 和 BridgeLeRobot 中的 SO-100
动作向量7 维:x、y、z、roll、pitch、yaw、夹持器6 维:每个电机一个目标位置
状态向量8 维,带填充槽 (google_robot 使用四元数)6 维,每个电机一个
坐标系笛卡尔坐标系,数据集之间未对齐关节空间,按臂校准
绝对或相对两者皆可,由源实验室决定绝对目标位置
单位按数据集归一化,然后离散化默认度数 (use_degrees=True),否则 -100 到 100
静默故障将增量读作绝对值未校准的机械臂
7维笛卡尔向量是转换器的约定,而非DROID的

openx2lerobot 的 README 文档记录了其转换的每个数据集的统一8维状态和7维动作,pad 槽位即来源于此。DROID 自己的 RLDS 模式有所不同:其顶层 action 是一个7向量,包含6个关节速度加上1个夹持器位置,而 cartesian_positioncartesian_velocityjoint_positionjoint_velocity 则位于 action_dict 之下。openpi 读取关节空间视图,而 LeRobot 构建则提供笛卡尔视图。两者都不是六个绝对伺服角度。

LeRobot 确实提供了缺失的部分:SO follower 包含一个运动学处理器,其中有 InverseKinematicsEEToJoints 和 ForwardKinematicsJointsToEE 步骤。其键包括 ee.x、ee.y、ee.z 以及一个旋转向量 ee.wx、ee.wy、ee.wz 和 ee.gripper_pos,因此即使是方向编码也与文件中的滚转-俯仰-偏航不同。IK 步骤接受一个 orientation_weight,默认值为 0.01,其文档字符串说明对于欠驱动机械臂的仅位置 IK 应设置为 0.0。你可以搭建这个桥梁,但每个借用动作的方向部分都将保持近似。

3. 控制速率

DROID 为 15 Hz,BridgeData V2 为 5 Hz,google_robot 切片为 3 fps;pi0 的作者将其混合模型的开源部分描述为 2 到 10 Hz 之间的低频控制。LeRobot 的 DatasetRecordConfig 默认设置为 fps 30,episode_time_s 60,reset_time_s 60,num_episodes 50。一个在 5 Hz 数据上训练的学会了一个动作覆盖 200 ms。以 30 Hz 重放时,机械臂会缓慢移动;如果天真地重采样,则会模糊夹持器关闭的帧。它还会与产生不良交互:一个 100 步的分块在 5 Hz 下是 20 秒,而在 30 Hz 下是 3.3 秒。

4. 摄像头

BridgeData V2 每 50 条轨迹随机化两个摄像头姿态,其项目页面指出,大部分数据无论如何都只包含固定视角。DROID 使用了可调节的 ZED 2 支架以及一个腕部 ZED Mini。你用肉眼定位了两个 USB 网络摄像头。摄像头姿态对于来说不是一个恼人的变量;它很大程度上是视觉编码器所关注的,并且文件格式中没有任何内容表明姿态有所不同。

吞噬你一天的陷阱

各部分组合得足够好,可以运行。数据集加载,训练开始,损失下降,检查点出现,没有错误。然后策略在机械臂上没有任何可识别的动作,你花了一天时间在训练脚本中寻找错误。其实没有错误:模型为你的房间里不存在的机器人学习了一个笛卡尔动作分布。从 损失下降,策略无动作 开始排查,而不是从你的超参数开始。

无论如何尝试合并数据时会发生什么

显而易见的计划是拼接:几千个 DROID 剧集加上你的 50 个。LeRobot 拒绝了,并且拒绝的理由指出了三个不同的地方。

  1. 1
    拉取 100 集样本,而不是完整的 1.7 TB

    2 GB 足以查看其结构。

    bash
    pip install gsutil tensorflow tensorflow-datasets
    gsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/
  2. 2
    将 RLDS 转换为 LeRobot 格式

    openx2lerobot 封装了 OXE 标准转换,并标注了机器人类型和控制频率。README 文件将此内容放在 convert.sh 中。

    bash
    git clone https://github.com/Tavish9/any4lerobot.git
    cd any4lerobot/openx2lerobot
    
    python openx_rlds.py \
        --raw-dir ~/tensorflow_datasets/droid_100/1.0.0 \
        --local-dir ~/lerobot_droid100 \
        --repo-id you/droid100_lerobot \
        --use-videos
  3. 3
    在做任何其他事情之前,先阅读 meta/info.json

    此文件决定你当天后续的工作是否顺利。

    bash
    python -c "import json;d=json.load(open('meta/info.json'));\
    print(d['codebase_version'], d['robot_type'], d['fps']);\
    print(d['features']['action']['shape'], d['features']['observation.state']['shape'])"
  4. 4
    尝试合并并阅读错误信息

    merge 会加载每个数据集,然后 validate_all_metadata 会根据列表中的第一个数据集检查 fps、robot_type 和 features,并在第一次不匹配时报错。

    bash
    lerobot-edit-dataset \
        --new_repo_id you/mixed \
        --operation.type merge \
        --operation.repo_ids "['you/droid100_lerobot', 'you/my_so100_task']"
    
    # ValueError: Same fps is expected, but got fps=30 instead of 15.

参考值来自你列表中第一个列出的数据集,这就是为什么消息会抱怨你的 30 fps 而不是 DROID 的 15 fps。修复 fps 后,你会遇到 robot_type 检查;修复它之后,你会遇到 feature 检查,action 的特征是 7 对 6。任何排序都无法通过,并且相同的守卫在记录时通过 sanity_check_dataset_robot_compatibility 运行。

不要硬编码 robot_type 来规避检查

在当前的 LeRobot main 中,so100_followerso101_follower 都注册到一个共享的 SOFollowerRobotConfig 上,因此真实记录中的字符串不一定是你所期望的。请从你自己的 meta/info.json 中读取它,并将你不得不禁用的检查视为正在告诉你一些事情的检查。

那么实际传输的是什么?

传输的是权重,而非经验片段。每个现代通用策略在预训练中都吸收了其中一部分,当你一个已发布的时,你继承的已经是那些拥有足够算力的人妥善协调过的结果。pi0的论文坦率地指出了其预训练混合数据中的比例:按时间步计算,9.1%是开源数据,包括OXE、Bridge v2和DROID。这个数字是pi0的;每个供应商的混合数据都不同。

SO-100项目中的公共跨具身数据
优势
  • 视觉和语言先验:编码器见过数千个厨房和马克杯,并知道“红色积木”指的是什么。
  • 关于操作结构的先验:接近、抓取、抬起、运输、释放,即使数字不同,这些操作也是具身无关的。
  • 一个已知的良好测试数据集。如果你的任务无法过拟合100个DROID经验片段,那么问题出在你的设置上。
  • 参考点:在小规模数据集领域,RT-1-X的平均成功率比原始方法或RT-1高出50%,而RT-2-X在涌现技能方面比RT-2高出约3倍。
权衡
  • 没有可用的动作监督。7自由度笛卡尔目标不是6自由度关节指令。
  • 没有相机姿态迁移,数据中也没有任何信息表明姿态不同。
  • 没有时序迁移:3、5和15帧/秒的源数据与30帧/秒的记录器不匹配。
  • 没有夹持器迁移。Robotiq 2F-85和STS3215上的打印夹爪在力、行程和动力学特性上有所不同。
  • 即使对于其作者来说,仅凭规模也不够:在大型数据集领域,RT-1-X并未超越仅在该数据集上训练的RT-1。
  • 无法减少你所需的自有经验片段数量。
模型层是否迁移?原因
视觉编码器是,强烈物体和场景是具身无关的
语言基础指令是文本,而非几何形状
跨模态融合大部分是关注提示中命名的物体
本体感受编码器输入维度和关节语义不同
动作头在你不使用的7自由度笛卡尔空间上训练
归一化统计否,且危险外部统计数据会改变每个指令

这就是为什么SmolVLA在低成本机械臂上表现不同。其论文从 Hugging Face 中选择了 481 个社区数据集,这些数据集根据具体形态类型、事件数量、数据质量和帧覆盖率进行筛选:22.9K 个事件,10.6M 帧,并在真实的 SO-100 和 SO-101 机械臂上进行了评估。小规模且匹配的数据优于大规模但不匹配的数据。比较ACT 与 SmolVLA 对比

值得尝试的三条路径

路径 A:从已吸收数据的检查点进行微调

大多数人应该选择这条路径。你无需接触 DROID 或 Open X-Embodiment:选择一个预训练已吸收跨形态数据的策略,记录你自己的事件,然后进行微调。

策略参数最少剧集数据集格式GPU 等级推理基础检查点
GR00T N1.7~3 B, ~40 M 经过微调训练50LeRobot v2.0 or v2.1A100 or H100 80 GB每步 152 毫秒nvidia/GR00T-N1.7-3B
GR00T N1.5~3 B50LeRobot v2.0 or v2.1A100 or H100 80 GB165 毫秒nvidia/GR00T-N1.5-3B
Pi0.5~3 B, PaliGemma 主干50LeRobot v3.0A100 or H100 80 GB485 毫秒lerobot/pi05_base
SmolVLA~450 M30LeRobot v3.0RTX 4090 or any 24 GB245 毫秒lerobot/smolvla_base
ACT~80 M50LeRobot v3.0RTX 4090 or any 24 GB20 毫秒无,从头开始

ACT 是一个特殊的边缘情况:没有基础模型,因此任何公共数据都无法触及它。这并非自动成为劣势,因为每动作步 20 毫秒的速度使其成为五种模型中唯一能实现快速闭环的,正如ACT 页面所述。请根据任务选择,使用五种模型对比GR00T N1.7 对比 Pi0.5,以及竞技场中的 85 个模型共 332 项基准测试结果。

路径 B:使用 DROID 作为测试夹具

这个 100 剧集样本是您本月将下载到的最好的 2 GB 数据,而且不是用于训练的。这是一个您知道是正确的数据集。在其上运行您的转换器、加载器和一个简短的 GPU 任务;任何失败都意味着在成本低廉时发现了一个基础设施错误。NVIDIA 也以同样的方式进行大规模操作:GR00T N1.7 卡列出了四个经过后期训练的变体,用于 SimplerEnv 中的 Bridge 和 Fractal,以及 DROID 和 LIBERO。

路径 C:刻意录制您自己的数据

三十到五十个听起来相对于 76,000 来说很少,但您要记住,这些是唯一包含您的机械臂、您的摄像头和您的桌子的数据。在 LeRobot 的默认设置下,50 个片段相当于 100 分钟的实际运行时间。请参阅、和。

AY-Robots 录制教程页面,展示了从远程操作会话中捕获 LeRobot 数据集的步骤
在 /learn/record-your-first-dataset 上的录制演练:公共数据无法替代的步骤。

从公共数据到可用策略的两种方法

All of this runs on your own machine plus a rented GPU. Knowing the manual path matters because when something breaks you will know which layer broke.

  1. 1
    Install LeRobot with the extras the scripts need

    The record and train entry points each declare their own extra.

    bash
    pip install 'lerobot[core_scripts]'   # lerobot-record
    pip install 'lerobot[training]'      # lerobot-train
    pip install gsutil tensorflow tensorflow-datasets
  2. 2
    Get a small, known-good slice

    100 DROID episodes, 2 GB.

    bash
    gsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/
  3. 3
    Convert to LeRobot form

    Writes the unified 8-D state and 7-D action, annotating robot type and control frequency.

    bash
    python openx_rlds.py \
        --raw-dir ~/tensorflow_datasets/droid_100/1.0.0 \
        --local-dir ~/lerobot_droid100 \
        --repo-id you/droid100_lerobot \
        --use-videos
  4. 4
    Check the version against your trainer

    The converter README documents v3.0 output; the published IPEC-COMMUNITY datasets report v2.0. GR00T wants v2.0 or v2.1 and crashes on v3.0; Pi0.5, SmolVLA and ACT want v3.0. Mind the gap: the only conversion script on LeRobot main goes 2.1 to 3.0.

    bash
    python src/lerobot/scripts/convert_dataset_v21_to_v30.py \
        --repo-id=you/droid100_lerobot
  5. 5
    Record your own episodes

    Defaults: 30 fps, 60 s per episode, 60 s reset, 50 episodes. The teleoperator type is so100_leader.

    bash
    lerobot-record \
      --robot.type=so100_follower \
      --robot.port=/dev/ttyACM0 \
      --robot.cameras="{front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}}" \
      --teleop.type=so100_leader \
      --teleop.port=/dev/ttyACM1 \
      --dataset.repo_id=you/so100_pick_block \
      --dataset.num_episodes=50 \
      --dataset.single_task="Pick up the red block and put it in the bowl"
  6. 6
    Fine-tune on your data only

    Weights from public data, actions from your own. Do not mix the datasets.

    bash
    lerobot-train \
      --policy.path=lerobot/smolvla_base \
      --dataset.repo_id=you/so100_pick_block \
      --policy.device=cuda \
      --batch_size=4 \
      --steps=20000
Where the time actually goes

Not in training; the GPU job is hours. The conversion, the version mismatch and the moment you find your dataset is v2.0 and your trainer wants v3.0 are days. Read dataset rejected as v3 first.

AY-Robots 桌面客户端下载页面,该客户端用于从远程操作会话中记录 LeRobot 格式的数据集
位于 /download 的桌面客户端直接从远程操作会话写入 LeRobot 数据集,绕过了 RLDS 转换。

每种路径的成本

路径存储人工时间GPU 成本移动机械臂的可能性
单独转换的 DROID392 GB转换天数4 到 12 USD非常低,动作空间错误
DROID 与您的剧集合并两者被 validate_all_metadata 阻止不适用无,它不运行
SmolVLA,30 到 50 个自己的剧集几 GB100 分钟录制1 到 3 USD
GR00T N1.7,50 个自己的剧集几 GB100 分钟录制4 到 12 USD
从头开始的 ACT,50 个自己的剧集几 GB100 分钟录制1 到 3 USD高,20 毫秒推理
作为测试夹具的 DROID 样本2 GB一个下午一次短运行高,作为验证

不对称性是关键:借用数据最多的路径是最昂贵的,也最不可能移动你的手臂。不到两小时的你自己的远程操作胜过别人的一兆字节的Franka数据。还没有机械臂?/live无需注册即可直播物理SO-100。然后训练你的第一个策略,以及SO-100上的SmolVLA以获取具体指南。

一个合理的默认计划

下载 2 GB DROID 样本,并用它来验证您的管道。忽略其余的 1.7 TB。使用固定摄像头记录 50 集的单个任务。首先微调 SmolVLA,因为在 24 GB 显卡上,以最少 30 集的数据进行迭代成本最低,然后使用相同数据尝试 GR00T N1.7。在您的任务上进行比较,而不是在基准测试上。

录制与您的机械臂匹配的数据集

桌面客户端可以直接从遥操作会话中写入 LeRobot 格式的数据集:匹配的机械臂、匹配的帧率、匹配的动作空间。无需 RLDS 转换,无需重新映射。

获取桌面客户端
我可以在 DROID 上训练策略并在我的 SO-100 上运行吗?

不直接支持。在 LeRobot 构建中,DROID 动作是 Franka Panda 机械臂在 15 fps 下的 7 自由度末端执行器指令;在原始 RLDS 中,它们是 6 个关节速度加上一个夹持器位置。SO-100 接受 6 个绝对关节位置。您需要一个逆运动学层,即便如此,一个 5 自由度手腕也无法重现任意 6 自由度姿态。

我可以将 DROID 或 Bridge 的片段与我自己的 SO-100 片段混合使用吗?

不能。validate_all_metadata 要求 fps、robot_type 和 feature schema 完全相同,并在第一次不匹配时引发 ValueError。这三者都不同:15 或 5 fps 对比 30,franka 或 widowx 对比您的机械臂,动作形状 7 对比 6。重写元数据以通过检查并不能解决语义问题。

那么 Open X-Embodiment 对低成本机械臂来说就没用了吗?

不能,但它的价值通过预训练权重而非片段传递给您。包括 OXE、Bridge v2 和 DROID 在内的开源数据集占 pi0 预训练混合的 9.1%,NVIDIA 发布的 GR00T N1.7 变体在 Bridge、Fractal、DROID 和 LIBERO 上进行了后训练。您不能做的是将这些片段附加到您自己的录制中。

哪种策略从公共跨实体数据中获益最多?

Pi0.5 和 GR00T 模型拥有最多的跨实体预训练,但 SmolVLA 在低成本机械臂上通常表现最佳:其预训练集包含 481 个社区数据集、22.9K 个片段和 10.6M 帧,并在真实的 SO-100 和 SO-101 机械臂上进行了评估。ACT 则相反:没有基础模型,每个动作步骤 20 ms。

我实际需要多少个自己的片段?

SmolVLA 需要 30 个,GR00T N1.7、GR00T N1.5、Pi0.5 和 ACT 需要 50 个。在 LeRobot 默认的每个片段 60 秒和重置 60 秒的设置下,50 个片段相当于 100 分钟的实际运行时间。借用的跨实体数据并不能降低这些数字。

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started