AY-Robots 词汇表中关于 LeRobot 数据集格式的条目,该格式是平台上每个训练器所使用的,无论情节是记录的还是生成的。
合成数据仿真到现实Isaac Lab模仿学习MimicGenSO-101

机器人策略的合成数据:仿真如何提供帮助

AY-Robots ResearchAugust 23, 202631 分钟阅读

仿真可以将少量演示扩展成数千个。以下是已发布数据真正说明的内容、仿真到现实差距的影响,以及仍需记录的内容。

每隔几个月,就会有人发现手动录制五十个剧集是缓慢的,并询问模拟器是否可以替代人工生成。这是一个合理的问题。坦率的答案有三部分:生成数据确实有帮助,它不能完全取代真实录制,而这两者之间的比例完全取决于你所指的合成数据类型。

本页将介绍已发表工作实际测量的内容,您今天可以在低成本机械臂(例如SO-100)上运行的内容,以及仿真到现实的差距如何吞噬收益。简而言之,在详细介绍之前:报告最大倍增效果的系统会倍增一小组真实人类演示。它们并没有消除对真实演示的需求。

您需要了解的内容

  • 在操作中,有四种不相关的技术被称为合成数据:轨迹倍增、物理模拟展开、视频世界模型和图像空间增强。它们以不同的方式失效,并具有不同的价值。
  • MimicGen 将不到 200 个人类演示转化为 18 项任务中超过 50,000 个生成演示。在其 Square D0 任务中,从 10 个人类演示生成的 200 个演示达到了 79% 的成功率,而 200 个真实人类演示的成功率为 84%。
  • RoboCasa 是一个反例:72,000 个生成演示的成功率为 47.6%,而 1,250 个人类演示的成功率为 28.8%。这是一个 58 倍的数量优势,而非同等条件下的胜利。
  • 仿真与现实协同训练研究报告称,实际任务性能平均提高了 38%。其方法是在混合数据上进行协同训练,而非仅进行仿真到现实的迁移。
  • GR00T N1 基于 780,000 条仿真轨迹(相当于 6,500 小时,在 11 小时内生成)和从 88 小时真实数据中生成的 827 小时神经轨迹。这 88 小时真实数据仍然是金字塔的顶端。
  • 对于 SO-101,目前有一个可用的开放式流程:在 Isaac Lab 中使用 LeIsaac,通过物理主臂进行遥操作,使用 Isaac Lab Mimic 进行倍增,导出为 LeRobot 格式,然后对 GR00T 进行微调。
  • AY-Robots 不生成合成数据。它使用您提供的 LeRobot 数据集进行训练,无论该数据集是如何生成的,并且训练器根据模型需要至少 30 到 50 个剧集。

四种不同的事物被称为合成数据

在比较数据之前,有必要先区分不同的类别,因为一篇报告100倍乘数效应的论文和一篇报告5个百分点成功率提升的论文,通常是从不同角度描述同一个流程。共同点在于,LeRobot 数据集 中的某些内容是由机器生成的,而非从物理机械臂上记录下来的。不同之处在于具体是哪一部分。

类别保持真实的部分生成的部分报告的乘数效应主要失效模式
轨迹倍增(MimicGen, DexMimicGen, Isaac Lab Mimic)少量人类演示、物体网格、物理引擎适应新物体姿态和场景布局的新轨迹每次重置分布从10个人类演示到1,000个;从60个到21,000个;从不到200个到超过50,000个生成尝试失败。Isaac Lab在简单情况下将候选成功率定为高达70%,在困难情况下则低于1%
任务模拟器中的物理推演(Isaac Lab, robosuite, RoboCasa)物理引擎和资产库由脚本控制器、规划器或强化学习驱动的完整片段仅受限于GPU运行时间模拟机械臂并非您的机械臂。接触和伺服动力学是近似值
视频世界模型(DreamGen, Cosmos Transfer)少量真实遥操作片段用作条件新行为的逼真视频,以及随后恢复的伪动作GR00T N1中从88小时到827小时,大约10倍动作是推断的,而非测量的。一个看似合理的视频可能包含一个不合理的动作
图像空间增强(随机裁剪、颜色抖动)除像素之外的一切您已有片段的扰动视图1x,它不创建新轨迹几何增强打破了图像与动作标签之间的关联

只有前三种是本文所指的合成数据。第四种值得一提,因为它常被纳入同一讨论,并且是列表中迄今为止最便宜的。如果您尚未启用训练器自带的增强功能,请在安装模拟器之前完成此操作。

在生成任何数据之前,您可以查看真实的合成数据

NVIDIA 在 Hugging Face 上发布了用于 GR00T N1 训练后模拟轨迹,名称为 nvidia/PhysicalAI-Robotics-GR00T-X-Embodiment-Sim,大小约为 1.87 TB,遵循 cc-by-4.0 许可。它细分为 9,000 条跨实体双臂 Panda 和 GR1 轨迹、240,000 条人形桌面轨迹、72,000 条单臂 Panda 厨房轨迹以及 102 条 Unitree G1 运动操作轨迹。使用 huggingface-cli download --include "gr1_arms_only.CanSort/**" 下载其中一个子集并观看几个片段,是校准生成轨迹外观的最快方法,除了带宽之外不产生任何费用。

已发布数据实际说明了什么

以下是证据基础,数据均来自原始资料而非新闻稿的摘要。以下每一行都来自2026年8月23日阅读的论文或项目页面。

系统输入生成数据报告结果
MimicGen, CoRL 2023少于200个人类演示;一对一比较中为10个人类演示超过50,000个演示,18项任务,四种机械臂(Panda, Sawyer, IIWA, UR5e)Square D0:从10个人类演示中生成的200个演示达到79%,而200个人类演示达到84%
DexMimicGen, 202460个源人类演示21,000个用于双臂灵巧机器人的演示模拟中的双臂灵巧任务,以及从真实到模拟再到真实的类人机器人罐头分拣部署
RoboCasa, 20241,250个人类演示(25个原子任务中每个任务50个),100个评估任务,超过150个物体类别100,000个MimicGen轨迹;其中72,000个演示子集是主要比较依据在人类数据集上总体为28.8%,而在完全生成的数据集上为47.6%,仅对未见过的物体实例进行评估
模拟与真实协同训练, 2025真实演示加上模拟数据集,两个领域(机械臂和类人机器人)一种混合,而非替代模拟数据将真实世界任务性能平均提升了38%
DreamGen, 2025来自单一环境中抓取放置任务的遥操作数据合成视频加上来自潜在动作模型或逆动力学模型的伪动作类人机器人在已知和未知环境中展现22种新行为
GR00T N1数据金字塔, 202588小时的内部GR-1遥操作827小时的神经轨迹(约10倍);780,000个模拟轨迹,相当于6,500小时,在11小时内生成神经轨迹在RoboCasa上,在30、100和300个演示/任务的制度下分别增加了4.2、8.8和6.8个百分点,并在8个真实GR-1任务中平均增加了5.8个百分点
将乘数理解为轨迹数量,而非能力

乘数是行数。MimicGen自身的一对一比较显示,生成数据略低于相同数量的人类数据(79% 对 84%),而GR00T N1的消融实验在已有真实数据小时数的模型基础上增加了个位数百分点。RoboCasa确实击败了人类数据,47.6% 对 28.8%,但这是用72,000个生成演示对比1,250个人类演示。数量可以带来覆盖范围,但无法带来你的演示中从未包含的信息。

每一次诚实的消融实验都遵循相同的模式。合成数据以低成本扩大覆盖范围。它不会凭空创造关于你的夹具、伺服下垂、照明或桌面高度的信息,这些信息必须在真实演示中有所体现。如果你的策略失败是因为末端执行器关闭晚了半秒,再多的模拟变化也无法解决。那是一个夹具时序问题在真实录制中。

MimicGen 的一项发现值得你在自己的录制会话中借鉴,因为它与通常的建议相悖。该项目在 Square D2 上生成了两个数据集,一个由来自高质量人类操作员的 10 个演示作为种子,另一个由来自低质量操作员的 10 个演示作为种子,两者均取自 robomimic 多人 Square 数据集。在这两个数据集上训练的策略取得了可比的结果,作者将其解读为在大规模数据体系下,数据质量可能不那么重要的一个迹象。请仔细阅读,这是一个关于十个种子演示的声明,而不是关于你的五十个真实片段。这意味着一个略显粗糙的种子集并不是阻碍你获得可用生成数据集的障碍。这并不意味着你共同训练的真实片段可以粗糙,因为这些片段承载着模拟器所不具备的信息。

AY-Robots 公共数据集目录,列出了已录制的 LeRobot 数据集及其片段数量。
位于 /directory 的公共数据集目录。这里的每个条目都是真实的录制片段。合成数据是此类数据之上的一个乘数,而不是替代品。

虚实鸿沟,具体而言

这个差距通常被视为一个单一的量,但这并没有帮助。它至少包含五个独立的失配,并且在110到150欧元之间的业余机械臂上与在Franka机械臂上的大小不同。

  • 接触与摩擦。Isaac Lab明确指出,在相同的硬件以及相同的Isaac Sim和PhysX版本下,模拟是可复现的,但由于浮点精度和舍入误差,结果会因不同的硬件配置而异,并且PhysX不保证任何包含非刚体(如布料或软体)场景的确定性。
  • 驱动。一个在7.4 V下运行的Feetech STS3215总线舵机在负载下会下垂,存在间隙,并随着发热而改变行为。SO-101的MJCF模型从一个不相关的项目中借用了其电机参数,而不是在您的机械臂上进行识别。
  • 渲染。相机噪声、卷帘快门、自动曝光以及您桌子的确切色调均未包含在渲染中。这是Cosmos-Transfer1旨在弥合的差距的一半:其机器人增强工作流将一个机器人合成示例映射到来自分割、深度或边缘条件化的多个真实示例。
  • 时序。模拟器以固定速率步进。真实的控制循环则不然,并且模型本身每个动作步长需要20到485毫秒,具体取决于您选择的模型。请参阅推理延迟
  • 物体统计。模拟场景是从某人记录的分布中采样的。您的厨房桌子则不是。

模拟的SO-100实际了解您的机械臂多少

这部分决定了上述任何一点是否值得您投入周末时间,而第一个令人惊讶的是SO-100和SO-101并未得到同等对待。TheRobotStudio的SO-ARM100仓库将其模拟资产保存在Simulation/。SO100文件夹只包含一个URDF文件,别无其他。SO101文件夹包含URDF和MuJoCo文件:scene.xml、so101_new_calib.xml、so101_old_calib.xml、匹配的URDF文件以及一个joints_properties.xml文件。如果您想要一个物理模型而不是运动学链,那么您需要SO-101文件。

它们是使用 onshape-to-robot 插件从 Onshape 中设计的 CAD 模型生成的,这意味着运动学和视觉网格与 CAD 模型一样好。动力学是另一回事,存储库自己的 README 坦率地提到了三件事。由于在仿真和规划过程中存在碰撞行为问题,基础碰撞网格已被移除。STS3215 电机属性是根据 Open Duck Mini 项目调整的,而不是在 SO-101 上测量的。LeRobot 夹持器约定(其中 0 表示完全闭合,100 表示完全打开)尚未明确反映在 URDF 和 MuJoCo 文件中。上述每一点都可能导致纯粹在该模型中训练的策略在您的实际环境中表现不同。

耗费一天的校准约定

随附的 MuJoCo 文件中有两种零位约定,scene.xml 通过其包含的机器人文件来选择其中一种。在默认的 so101_new_calib.xml 中,每个关节的虚拟零位位于其关节范围的中间。在 so101_old_calib.xml 中,零位是机器人水平完全伸展时的配置。如果您的模拟回合使用一种约定,而您记录的真实回合使用另一种,那么混合数据集中的每个关节角度都会偏移数十度,损失仍然会下降,并且策略会自信地做出错误的事情。在联合训练之前,请检查两边的约定,并首先阅读校准损失下降,策略无所作为

域随机化及其无法解决的问题

解决这一差距的标准答案是停止尝试匹配现实,而是通过足够宽的分布进行训练,使现实落在其中。Tobin 及其同事在 2017 年展示了这一方法的强大版本:一个仅在具有非真实随机纹理的模拟图像上训练的对象检测器,完全没有在真实图像上进行预训练,却能以 1.5 厘米的精度定位真实物体,并对干扰物和部分遮挡保持鲁棒性。

Isaac Lab 揭示了与您附加到环境配置的事件术语相同的理念。这些是旋钮,通过它们在 isaaclab.envs.mdp 中的实际函数名称,因此您可以去阅读它们而不是猜测。

事件函数它扰动了什么
randomize_rigid_body_material接触摩擦和恢复
randomize_rigid_body_mass, randomize_rigid_body_com物体和连杆质量,质心偏移
randomize_actuator_gains关节控制器刚度和阻尼
randomize_joint_parameters, randomize_fixed_tendon_parameters关节摩擦、电枢和限制
randomize_visual_texture_material, randomize_visual_color外观,间隙的光度一半
randomize_physics_scene_gravity重力矢量
apply_external_force_torque, push_by_setting_velocity运行时扰动
reset_root_state_uniform, reset_joints_by_offset每个回合重置时的初始状态分布

这就是限制,也是人们常犯的错误。随机化拓宽了策略在您构建的模型中看到的分布。它不能引入模拟器未表示的物理效应。如果 PhysX 没有模拟您的 STS3215 伺服系统的反冲和热下垂,那么随机化它们的刚度并不能让策略学到任何关于反冲的知识。这就是为什么一个在模拟训练策略下抽搐然后下垂 的手臂不是一个随机化预算问题。它是一个建模问题。

手动路径:在 Isaac Lab 中生成数据

Isaac Gym 是旧版软件。NVIDIA 自己的页面标题是“Isaac Gym - 现已弃用”,并表示开发者可以下载并继续使用它,但它不再受支持,而是指向 Isaac Lab。如果您想了解历史,我们涵盖了两者: 和 。对于 2026 年的新工作,请从 Isaac Lab 开始。

  1. 1
    安装 Isaac Sim 和 Isaac Lab

    pip 安装页面指出,这些说明适用于 Isaac Sim 5.X,它需要 Python 3.11。源代码克隆为您提供了后续步骤所需的脚本。

    bash
    pip install "isaacsim[all,extscache]==5.1.0" \
        --extra-index-url https://pypi.nvidia.com
    
    git clone https://github.com/isaac-sim/IsaacLab.git --branch main
    cd IsaacLab
    sudo apt install cmake build-essential
    ./isaaclab.sh --install
    
    # smoke test
    ./isaaclab.sh -p scripts/tutorials/00_sim/create_empty.py
  2. 2
    记录大约十个人工演示

    Isaac Lab 文档明确指出:后续步骤需要大约 10 个成功的演示才能成功。其提示同样具体。保持演示简短,采取直接路径而不是沿着任意轴移动,并且不要暂停,因为策略不清楚何时以及为何暂停。

    bash
    ./isaaclab.sh -p scripts/tools/record_demos.py \
        --task Isaac-Stack-Cube-Franka-IK-Rel-v0 \
        --device cpu \
        --teleop_device spacemouse \
        --dataset_file ./datasets/dataset.hdf5 \
        --num_demos 10
  3. 3
    标注子任务边界

    Mimic 将输入演示拆分为子任务,以便它可以重新计时和重新定位这些片段。--auto 标志可以在没有人参与的情况下完成此操作,适用于定义了自动标注的任务;如果没有它,您需要按 B 暂停,按 N 继续,并按 S 标记边界。请注意,任务 ID 会获得一个 -Mimic 后缀。

    bash
    ./isaaclab.sh -p scripts/imitation_learning/isaaclab_mimic/annotate_demos.py \
        --device cpu \
        --task Isaac-Stack-Cube-Franka-IK-Rel-Mimic-v0 \
        --auto \
        --input_file ./datasets/dataset.hdf5 \
        --output_file ./datasets/annotated_dataset.hdf5
  4. 4
    生成倍增数据集

    这是将 10 变为 1000 的步骤。Mimic 对每个候选应用布尔成功标准,并且只保留那些完成了任务的候选,因此输出数量低于尝试数量。文档指出,在简单情况下,候选成功率高达 70%,而对于困难任务和复杂机器人,则低于 1%:Franka 堆立方体任务约为 50%,GR1T2 抓取放置任务为 65% 到 80%,其中 1000 个演示需要 18 到 40 分钟(在 RTX ADA 6000 上以 80% 的利用率运行需要 19 分钟)。

    bash
    ./isaaclab.sh -p scripts/imitation_learning/isaaclab_mimic/generate_dataset.py \
        --device cpu \
        --num_envs 10 \
        --generation_num_trials 1000 \
        --headless \
        --input_file ./datasets/annotated_dataset.hdf5 \
        --output_file ./datasets/generated_dataset.hdf5
  5. 5
    将 HDF5 转换为 LeRobot 数据集

    上述所有操作都会生成 robomimic 格式的 HDF5,而 Isaac Lab 核心本身不提供 LeRobot 转换器:其文档只说您可以将生成的数据集转换为 LeRobot 格式。有两个项目提供了实际的转换器。IsaacLab-Arena 提供了一个完全由 YAML 配置驱动的 GR00T 目标转换器,而 LeIsaac 则为 SO-101 路线提供了自己的转换器对(见下文)。

    bash
    # IsaacLab-Arena, GR00T LeRobot format
    python isaaclab_arena_gr00t/lerobot/convert_hdf5_to_lerobot.py \
        --yaml_file isaaclab_arena_gr00t/lerobot/config/gr1_manip_config.yaml
固定您的版本,不要信任 main 分支

在 2026 年 8 月 23 日,main 分支的 Isaac Lab 文档带有 Isaac Sim 6.0.1 徽章,并在其版本切换器中提供了 release/3.0.0 和 v3.0.0-beta2 以及 v2.3.2,而同一棵树上的 pip 安装页面仍然固定 isaacsim[all,extscache]==5.1.0 并将说明描述为适用于 Isaac Sim 5.X。NVIDIA 的 synthetic-manipulation-motion-generation 蓝图容器再次更旧:Isaac Lab 2.0.2 基于 Isaac Sim 4.5.0。LeIsaac 自己的兼容性表将 Isaac Sim 5.1 与 Isaac Lab v2.3.0 配对。这些代码库的更新速度快于文档的协调。选择一个版本,记录下来,如果您遵循三个月前编写的教程,请预期脚本路径和标志名称可能已经更改。

为什么生成尝试会失败,以及如何更改

候选成功率在 70% 到 1% 以下之间波动并非神秘现象,Isaac Lab 记录了常见的陷阱,而不是让你去猜测。每一个陷阱都是你在录制时可以控制的,这就是为什么在录制十个种子演示之前阅读这份清单,而不是在第一次令人失望的生成运行之后再阅读,会更有价值。

  • 演示过长。更长的时间范围使策略更难学习。从靠近第一个物体开始,并尽量减少运动。
  • 演示不平滑。不规则运动使策略难以理解,更好的远程操作硬件能提供更好的数据:文档明确指出 SpaceMouse 优于键盘。
  • 停顿。停顿难以学习,因为策略不清楚为何以及何时停顿。保持运动流畅。
  • 子任务过多。子任务越多,轨迹段之间的拼接就越多,导致运动不平滑,生成成功率降低。在手臂不太可能与任何物体碰撞的地方标注边界。
  • 无动作噪声。动作噪声使生成的策略更鲁棒。
  • 录制裁剪过紧。如果录制在成功条件触发的精确帧停止,它可能在回放时不会再次触发。在末尾留出缓冲。
  • 非确定性回放。Isaac Lab 中的物理模拟在 env.reset 后无法确定性复现,因此一些人类演示在回放时会失败。收集比所需更多的演示,并保留那些通过标注的。所有进入 Mimic 生成的 HDF5 文件的内容都是成功的演示,即使回放后来失败,也可以用于训练。

拼接子任务段之间的插值步骤有其自身的调节旋钮,所需的插值步骤数量取决于机器人移动的速度以及物体重置分布的宽度。具有大重置分布的复杂任务会在段之间留下更大的间隙,这需要更多的插值步骤才能呈现为连续运动。如果您的生成视频显示机械臂在不同阶段之间突然移动,那么在指责种子演示之前,这是您需要查看的参数。

在 SO-101 上使用相同管道,配合真实主导臂

对于阅读此页面的任何人来说,这都是一个有趣的选择,因为它是唯一一个将集成到 Isaac Lab 中,并允许您使用已有的物理主控臂来驱动它。LeIsaac(撰写本文时版本为 0.4.0)是集成到 LeRobot 的 EnvHub 中的官方模仿学习模拟平台。其兼容性表列出了三种工作组合;最新的组合将 Isaac Sim 5.1 与 Isaac Lab v2.3.0、CUDA 12.8、PyTorch 2.7.0 和 Python 3.11 配对,文档建议 50 系列显卡使用 Isaac Sim 5.0 或更高版本。

bash
git clone https://github.com/LightwheelAI/leisaac.git --recursive
conda create -n leisaac python=3.11 && conda activate leisaac
conda install -c "nvidia/label/cuda-12.8.1" cuda-toolkit
pip install -U torch==2.7.0 torchvision==0.22.0 \
  --index-url https://download.pytorch.org/whl/cu128
pip install "isaacsim[all,extscache]==5.1.0" --extra-index-url https://pypi.nvidia.com
sudo apt install cmake build-essential
cd leisaac/dependencies/IsaacLab && ./isaaclab.sh --install && cd ../..
pip install -e source/leisaac
pip install -e "source/leisaac[lerobot]"
pip install numpy==1.26.0
从源代码安装 LeIsaac。numpy 版本锁定在官方说明中,并非权宜之计。

设置完成后,/dev/ttyACM0 上的主控臂将驱动模拟的从动臂,并直接记录到 HDF5。循环与您从实际录制中了解的相同,只是从动臂在 PhysX 中是一个刚体。

bash
python scripts/environments/teleoperation/teleop_se3_agent.py \
    --task=LeIsaac-SO101-PickOrange-v0 \
    --teleop_device=so101leader \
    --port=/dev/ttyACM0 \
    --num_envs=1 \
    --device=cuda \
    --enable_cameras \
    --record \
    --dataset_file=./datasets/dataset.hdf5
环境 ID任务描述机器人
LeIsaac-SO101-PickOrange-v0拾取三个橙子并放入盘中,然后将机械臂复位到静止状态单臂 SO101 追随者
LeIsaac-SO101-LiftCube-v0举起红色立方体单臂 SO101 追随者
LeIsaac-SO101-CleanToyTable-v0将两个字母 e 物体放入盒子中,然后将机械臂复位到静止状态单臂 SO101 追随者
LeIsaac-SO101-CleanToyTable-BiArm-v0双臂执行相同任务双臂 SO101 追随者
LeIsaac-SO101-FoldCloth-BiArm-v0折叠布料,然后将机械臂复位到静止状态。只有 DirectEnv 变体支持 check_success双臂 SO101 追随者
LeIsaac-LeKiwi-CleanupTrash-v0从地板上拾取纸巾垃圾并扔进垃圾桶LeKiwi

这些 ID 大多也存在一个 -Direct-v0 变体,并且 python scripts/environments/list_envs.py 会打印当前列表。您还可以完全跳过 HDF5 绕行,在远程操作期间通过添加三个标志来写入 LeRobot 格式。文档本身提出了两个注意事项:记录器会自动跳过每个 episode 的前 5 帧,以避免初始状态的不稳定性,并且它可能会导致远程操作出现轻微延迟,这正是那种会悄然改变演示特征的情况。它也只刷新任务标记为成功的 episode。

bash
python scripts/environments/teleoperation/teleop_se3_agent.py \
    --task=LeIsaac-SO101-PickOrange-v0 \
    --teleop_device=so101leader \
    --port=/dev/ttyACM0 \
    --num_envs=1 --device=cuda --enable_cameras --record \
    --use_lerobot_recorder \
    --lerobot_dataset_repo_id=<your-user>/<dataset-name> \
    --lerobot_dataset_fps=30

乘法步骤随后在这些录制内容上运行。LeIsaac 将 Isaac Lab Mimic 封装在四个命令中,因为 Mimic 从末端执行器和物体姿态中泛化轨迹:将关节空间动作转换为基于 IK 的动作,进行标注,生成,然后转换回关节空间。

bash
python scripts/mimic/eef_action_process.py \
  --input_file ./datasets/mimic-lift-cube-example.hdf5 \
  --output_file ./datasets/processed_mimic-lift-cube-example.hdf5 \
  --to_ik --headless

python scripts/mimic/annotate_demos.py --device cuda \
  --task LeIsaac-SO101-LiftCube-Mimic-v0 \
  --input_file ./datasets/processed_mimic-lift-cube-example.hdf5 \
  --output_file ./datasets/annotated_mimic-lift-cube-example.hdf5 \
  --enable_cameras

python scripts/mimic/generate_dataset.py --device cuda \
  --num_envs 1 --generation_num_trials 10 \
  --input_file ./datasets/annotated_mimic-lift-cube-example.hdf5 \
  --output_file ./datasets/generated_mimic-lift-cube-example.hdf5 \
  --enable_cameras

python scripts/mimic/eef_action_process.py \
  --input_file ./datasets/generated_mimic-lift-cube-example.hdf5 \
  --output_file ./datasets/final_generated_mimic-lift-cube-example.hdf5 \
  --to_joint --headless

然后转换为 LeRobot。这是平台格式规则生效的步骤,LeIsaac 恰好提供了你需要的两个转换器:isaaclab2lerobot.py 写入 LeRobot v2,这是 GR00T 加载器所接受的格式,而 isaaclab2lerobotv3.py 写入 v3,用于 Pi0.5SmolVLAACT。这两个脚本接受相同的参数,但固定了不同的 lerobot 版本,并且只转换成功的片段。

bash
pip install lerobot==0.3.3
pip install numpy==1.26.0

python scripts/convert/isaaclab2lerobot.py \
    --task_name=LeIsaac-SO101-PickOrange-v0 \
    --repo_id=<your-user>/so101_pick_orange_sim \
    --hdf5_root=./datasets \
    --hdf5_files=dataset.hdf5
GR00T 的 LeRobot v2 输出。对于 v3 训练器,请替换为 isaaclab2lerobotv3.py,并使用 lerobot 0.4.2。
存在无 GPU 的备用方案

LeIsaac 文档记录了在 NVIDIA Brev 上运行整个堆栈的方法:部署,点击 80 端口链接打开基于浏览器的 VS Code Server,并使用 --kit_args="--no-window --enable omni.kit.livestream.webrtc" 驱动四个预安装的场景,通过在相同地址后附加 /viewer 来查看渲染。如果你的办公桌下没有工作站显卡,这是一种更经济的方式来确定你的任务的模拟版本是否接近真实情况,然后再投入硬件。

训练策略的两种途径

您自行构建场景、生成数据、租用 GPU 并部署服务。如果任务需要无法物理搭建的环境变化,或者您需要可重复的评估,这是正确的选择。

  1. 安装 Isaac Sim 5.1 和 Isaac Lab,如果您的机器人是 SO-101,则安装 LeIsaac 堆栈。
  2. 建模或导入场景。这是通常无人预算且耗时最长的一步。
  3. 通过模拟跟随器记录大约 10 个干净的演示。
  4. 标注子任务,运行 generate_dataset.py,并接受失败数据被丢弃。
  5. 将 HDF5 转换为 LeRobot 格式,GR00T 选择 v2,其他选择 v3。
  6. 无论如何,在物理机械臂上记录真实片段,然后混合训练。
  7. 租用 GPU,运行微调,在机械臂旁边提供检查点服务。
资源来源说明
本地模拟 GPUNVIDIA 合成操作蓝图要求 Ubuntu 22.04 和配备 48 GB 显存的 NVIDIA RTX A6000
世界模型节点相同的蓝图要求配备 80 GB 显存的 H100 或更高型号,位于独立于 Isaac Lab 模拟的节点上
容器版本该蓝图镜像中 Isaac Sim 4.5.0 上的 Isaac Lab 2.0.2
生成吞吐量Isaac Lab 报告在 18 到 40 分钟内生成 1000 个 GR1T2 抓取放置演示,在 RTX ADA 6000 上以 80% 的成功率耗时 19 分钟
神经轨迹成本GR00T N1 报告其 827 小时的“梦想”大约需要 105,000 L40 GPU 小时,相当于 3,600 块 L40 GPU 运行约 1.5 天
真实成本是日历时间,而非 GPU 时间

生成 1000 条轨迹只需一个下午。但要让您的场景、相机外参、物体网格和伺服模型足够精确,以使这些轨迹能够成功迁移,则需要数周时间。请为建模而非采样预留预算。

视频世界模型:最新层,也是测量最少的一层

DreamGen 背后的理念是,一个适应目标机器人形态的视频生成模型,可以在您从未访问过的场景中想象出合理的片段。该流程分为四个阶段:微调视频世界模型,生成逼真的合成机器人视频,使用潜在动作模型或逆动力学模型恢复伪动作序列,然后根据结果训练机器人策略。NVIDIA 的 GR00T-dreams 仓库正是实现了这一点。

主要成果真实且值得认真对待:仅在一个环境中进行单一抓取放置任务的遥操作数据,就在可见和不可见环境中为一个人形机器人产生了22种新行为。但其局限性也同样真实,并体现在第三阶段。

视频世界模型作为数据源
优点
  • 它们在现实世界中真正昂贵的维度上实现了扩展:新场景、新物体布局、新指令措辞。
  • GR00T-dreams 列出了其动作提取和微调脚本支持的四种实体:franka、gr1、robocasa 和 so100。这并非仅限于人形机器人的技术。
  • Cosmos-Transfer1 直接解决了差距的光度学一半,将一个机器人合成示例通过分割、深度或边缘条件映射到多个真实示例。Isaac Lab 本身在 scripts/tools/cosmos 下提供了其提示工具。
  • DreamGen 工作发布了 DreamGen Bench,这是一个视频生成基准,显示基准性能与下游策略成功之间存在强相关性,因此你可以在训练前筛选生成结果。
权衡
  • 动作由模型恢复,而非编码器测量。一个看起来正确的视频可能包含你的机械臂无法执行的关节轨迹。
  • 生成成本高昂。GR00T N1报告称,在L40上生成一秒视频需要两分钟,其827小时的神经轨迹大约需要105,000 L40 GPU小时,相当于3,600块L40 GPU工作约1.5天。
  • 测得的增益为个位数:在RoboCasa上,三种数据方案分别获得4.2、8.8和6.8分,在8个真实GR-1任务上平均获得5.8分,这还是在一个已经拥有真实数据的模型基础上。
  • 没有已发布的方案能端到端地验证这适用于7.4 V爱好级舵机机械臂。你将是移植,而非遵循。
切勿向STS3215提供12 V电压

这与仿真无关,但每当有人从仿真机械臂转向真实机械臂并临时搭建电源时,就会出现这个问题。SO-100、SO-101和LeKiwi机械臂都使用7.4 V的Feetech STS3215舵机。向它们提供12 V电压会损坏它们,而LeKiwi尤其是一个陷阱,因为它的底座导轨就是12 V。在接线之前,请参阅SO-100硬件页面

协同训练是真正显示出增益的方法

如果从文献中汲取一条操作经验,那就是这条。模拟与真实世界协同训练研究(Maddukuri 及其同事,2025)旨在寻找一种简单的方法,利用模拟数据解决基于视觉的机器人操作任务,涵盖机器人手臂和人形机器人这两个领域,其结论是应在混合数据上进行训练。模拟数据将真实世界任务性能平均提高了 38%,该论文明确指出,即使模拟数据与真实世界数据之间存在显著差异,这一结论也依然成立。

最后那句话比 38% 更重要。这意味着模拟不必是完美的数字孪生也能发挥作用,前提是混合数据中包含真实数据作为锚点。仅模拟传输是一条昂贵的路径:同一篇论文指出,仅在模拟中训练策略并将其转移到真实世界通常需要大量人工努力来弥合现实差距。协同训练通过从不要求策略自行弥合差距,从而省去了大部分努力。

AY-Robots 策略比较表,显示了 GR00T N1.7、GR00T N1.5、Pi0.5、SmolVLA 和 ACT 的参数、GPU 层级、推理延迟和最小剧集数。
在 /policies 处的五种可训练策略。最小剧集列是决定合成数据是锦上添花还是达到可训练数据集的唯一途径的数字。

实际上,在此平台上,协同训练意味着一件事:将两组剧集放入同一个LeRobot 数据集中,保持一致的相机键、一致的关节顺序和一致的单位,然后运行一次正常的微调。训练表单中没有混合权重旋钮。如果你想要 3:1 的模拟到真实比例,你可以通过在数据集中放入每种剧集的数量来表达。

模拟最划算的胜利不是训练数据

它是评估。为比较两个,每项任务运行数十次真实试验,需要一整天的机械臂时间,而且机械臂在试验之间会发生漂移。SIMPLER(Li及同事,2024)构建了模拟环境,其目的是评估真实策略而非训练它们,然后测量了模拟排名预测真实排名的准确性。单个SIMPLER环境在消费级RTX 4090上以640x512分辨率每秒渲染3,500个模拟步骤,在500 Hz的模拟频率下,这比真实评估快7倍。

评估协议MMRV(越低越好)Pearson r(越高越好)
验证MSE0.3750.308
SIMPLER,变体聚合0.1430.778
SIMPLER,视觉匹配0.0560.924

这些是六个常见开源检查点在三个Google Robot任务组上的平均值:三个处于不同训练阶段的RT-1检查点、RT-1-X、RT-2-X和Octo-Base。真实侧的试验次数并非统一,在引用之前值得了解:拾取可乐罐任务75次试验,移近任务60次,打开和关闭抽屉任务54次,以及更长的抽屉和苹果任务27次。与验证MSE的比较是其有用之处。通过验证损失进行模型选择会使这些检查点排名不佳,而视觉匹配下0.924的Pearson r意味着如果一个检查点在SIMPLER中得分更高,那么它很可能在实际测试中也得分更高。这是一个可重复的隔夜记分板,它不需要你相信任何关于模拟到真实训练迁移的说法。

The AY-Robots Arena leaderboard, a sortable table of 85 vision-language-action models with 332 benchmark results, each value linked to its source paper or model card.
The Arena at /arena collects 332 benchmark results across 85 models. Almost all of them are simulated benchmarks, which is exactly the point of the SIMPLER argument: simulation is a good scoreboard long before it is a good data source.

如果您想了解这些基准数据能和不能告诉您关于一个的更广泛背景,我们已在中单独撰写了相关内容。

本平台不提供帮助的方面

明确界限可以节省大家的时间。AY-Robots 是一个记录、训练和部署平台。它不包含模拟器。

  • 没有 Isaac Lab,没有 MimicGen,没有世界模型,没有场景创作。如果您想要生成的数据,您需要在其他地方生成并带来结果。
  • 训练器只消耗 LeRobot 数据集。模拟器导出必须先转换才能作为输入,并且必须是正确的版本:GR00T N1.5 和 N1.7 对应 v2.0 或 v2.1,Pi0.5、SmolVLA 和 ACT 对应 v3.0。
  • GR00T 的微调入口点是一个 tyro CLI,它不暴露任何种子,因此 GR00T 运行无法实现位对位复现。如果您正在进行仔细的模拟与真实消融实验,这是一个真正的限制。lerobot 自己的默认种子是 1000,而 ACT、SmolVLA 和 Pi0.5 形式确实暴露了一个种子字段。
  • 梯度累积实际上只应用于两个 GR00T 训练器。对于 Pi0.5 和 SmolVLA,该字段存在于表单中,但 lerobot 0.5.1 没有此标志,因此它不起作用。
  • 对于快速任务,推理必须靠近伺服系统。控制循环每个动作步骤需要 20 到 485 毫秒,具体取决于模型,增加公共互联网往返会使一个有效的策略变得犹豫不决。远程推理适用于慢速的抓取放置任务,不适用于快速的反应性运动。
在这里可以做到,在其他地方却很难做到的事情

无需拥有机械臂即可记录协同训练混合的真实部分。/live 流式传输一个物理 SO-100,无需注册,基于队列,并且存在操作员程序是因为必须有人来驱动它们。如果您的瓶颈是您有一个模拟器但没有真实的实验,那么这就是该平台弥补的空白。

一个您可以辩护的预算

将两条路径与各自实际发布的数据并列比较,对于低成本机械臂上的单任务项目,决策通常会水到渠成。

项目仿真优先录制优先
前期建模场景、网格、相机放置、伺服模型。数天到数周
数据收集仿真中约10个演示,然后生成30到50个真实片段,数小时的远程操作
所需硬件Isaac Lab蓝图需要48 GB显卡,Cosmos舞台需要80 GB显卡一个机械臂和一台笔记本电脑
训练成本与右侧列相同,训练器不关心数据来源4090层级1到3美元,A100或H100层级4到12美元
最佳回报证据协同训练时平均真实世界增益38%,神经轨迹带来4到9个百分点以上所有衡量指标的基线
失败情况您的任务依赖于接触、可变形物体或伺服柔顺性您需要无法物理布置的环境变化

对于SO-100上的第一个策略,请选择录制。通过录制演练首次训练运行,您将以一杯咖啡的价格获得一个可部署的检查点,并且您将拥有未来任何协同训练混合的真实数据部分。当您拥有一个可用的基线和可以明确指出的特定泛化失败(例如一个只在一种设置下有效)的策略时,再考虑使用模拟器。

您的桌上还没有机械臂吗?

在浏览器中驱动真实的SO-100机械臂,基于队列,无需注册,在您花费一个周末在模拟器中建模之前,先看看一个真实片段究竟是怎样的。

驱动真实机械臂

一个尊重证据的方案

  1. 1
    首先记录真实基线

    SmolVLA 30 个回合,ACT、GR00T N1.7 和 Pi0.5 各 50 个回合。训练一次。该策略失败之处即为合成数据的规格。

  2. 2
    指出泛化失败的原因

    物体姿态?光照?桌面高度?干扰物?指令的不同措辞?合成数据一次只能擅长其中一项,如果您无法指出是哪一项,则毫无用处。

  3. 3
    选择涵盖范围最广且成本最低的方法

    姿态和布局变化:轨迹乘法。光照和纹理:首先图像增强,其次世界模型。全新场景:物理模拟,并接受建模成本。

  4. 4
    生成后,积极筛选淘汰

    生成尝试会失败,Isaac Lab 自身的候选成功率根据任务不同,从 70 percent 到低于 1 percent 不等。只保留成功的、完成任务的轨迹,并在信任批次数据之前,以视频形式目测样本。

    bash
    python scripts/mimic/generate_dataset.py --device cuda \
        --num_envs 8 --generation_num_trials 500 \
        --input_file ./datasets/annotated.hdf5 \
        --output_file ./datasets/generated.hdf5 --enable_cameras
  5. 5
    协同训练,而非替换

    将生成的 episodes 与真实的 episodes 合并到一个具有相同相机键和关节顺序的 LeRobot 数据集中。38 percent 的数字是协同训练的数字。

  6. 6
    在真实机械臂上评估,且仅限于此

    模拟评估是一个很好的排名信号(在 SIMPLER 的视觉匹配设置中,Pearson r 0.924),但它不是验收测试。在相信它之前,请在测试台上运行检查点。

如果您更愿意从真实录制本身的清单开始,数据收集指南涵盖了相机放置、动作分块的影响以及导致模仿学习数据集无法使用的故障模式。有关格式本身的详细信息,请参阅数据集文档,以及超参数方面,请参阅训练文档

我能否完全使用合成数据训练机器人策略?

对于真实机械臂上的操作任务,不可靠。每一个具有显著成果的已发表结果都是协同训练或在真实数据基础上进行增强的结果。MimicGen 自己的比较显示,在同一任务中,200 个生成的 demos 达到 79 percent,而 200 个人类 demos 达到 84 percent;2025 年的 sim-and-real 协同训练论文指出,仅在 simulation 中训练并进行 transferring 通常需要大量人工努力来弥合 reality gap。RoboCasa 确实显示生成数据以 47.6 against 28.8 percent 的比例击败了人类数据,但这仅限于在生成两者的 simulator 内部,且使用了 72,000 个生成 demos 对比 1,250 个人类 demos。

如果我生成合成 episodes,我仍然需要多少真实 episodes?

在 AY-Robots 上,训练器需要 SmolVLA 至少 30 episodes,ACT、GR00T N1.5、GR00T N1.7 和 Pi0.5 各 50 episodes,无论这些 episodes 来自何处。Isaac Lab 的 Mimic documentation 指出,生成需要大约 10 个成功的人类 demonstrations 作为 seed。这些是回答不同问题的不同数字:10 是 generator 所需的,30 to 50 是 trainer 所需的。

模拟数据必须是 LeRobot 格式吗?

要在此平台上训练,是的。Isaac Lab 和 LeIsaac 都生成 robomimic-flavoured HDF5。Isaac Lab core 不附带 LeRobot converter,但 LeIsaac 附带用于 LeRobot v2 的 isaaclab2lerobot.py 和用于 v3 的 isaaclab2lerobotv3.py,而 IsaacLab-Arena 附带一个由 YAML config 驱动的、针对 GR00T 的 convert_hdf5_to_lerobot.py。请注意 version:GR00T N1.5 和 N1.7 使用 LeRobot v2.0 或 v2.1,而 Pi0.5、SmolVLA 和 ACT 使用 v3.0。v3.0 dataset 会使 GR00T loader 崩溃,必须将其转换为 v2.1。

到 2026 年,Isaac Gym 仍然是值得学习的正确选择吗?

不。NVIDIA 自己的 product page 标题为“Isaac Gym - Now Deprecated”,并指出这是 legacy software,developers 可以 download 并继续使用,但它不再受 supported,并指出 Isaac Lab 是其 replacement。Isaac Lab 提供了从 IsaacGymEnvs、从 OmniIsaacGymEnvs 和从 Orbit 的 migration guides,因此现有 environment 是 portable 而非 lost。

我可以在 Isaac Lab 中使用 SO-100 或 SO-101 吗?

SO-101 可以,而且是正确地。TheRobotStudio repository 提供了 SO-101 的 URDF 和 MJCF files,这些 files 是使用 onshape-to-robot 从 Onshape CAD model 生成的,LeIsaac 提供了 ready-made Isaac Lab tasks,例如 LeIsaac-SO101-PickOrange-v0,支持从 physical SO101 leader arm 进行 teleoperation。对于 SO-100,同一个 repository 只提供了一个 single URDF,没有 MuJoCo model。无论如何,请注意 SO-101 README 中所述的 limits:base collision meshes 被 removed 是因为 problematic collision behaviour,STS3215 motor properties 是根据 Open Duck Mini project 调整而非在 SO-101 上 identified 的;以及 0-closed to 100-open gripper convention 尚未在 model files 中 reflected。

该平台会为我运行模拟吗?

不。AY-Robots 从真实 teleoperation 中记录 LeRobot datasets,在 rented GPUs 上 fine-tunes 五种 supported policies,并将 resulting checkpoint 服务回 arm。其中没有 simulator、没有 synthetic data generation,也没有 scene authoring 功能。如果您在其他地方 generate data 并将其转换为 valid LeRobot dataset,trainers 将完全像接受 real recordings 一样接受它。

Sources

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started