NVIDIA 中国开发者日活动 中国・苏州 | 2025 年 11 月 14 日 了解详情
计算机视觉/视频分析

借助 NVIDIA Isaac Sim 构建合成数据流水线,训练更智能的机器人

随着机器人承担的动态移动任务日益增多,开发者需要具备物理级精度且能够跨环境和工作负载高效扩展的仿真系统。训练用于执行这些任务的机器人策略与模型依赖大量高质量数据,而现实世界中的数据采集通常既昂贵又耗时。

合成数据,利用 NVIDIA Isaac Sim 中的模拟环境生成,是扩展数据生成过程的一种有效方法。

在本博客中,我们将探讨:

  1. 使用 NVIDIA Omniverse NuRec 引入环境素材,构建模拟环境。
  2. 将仿真就绪(SimReady)资产添加至仿真场景中。
  3. 利用 MobilityGen 在 Isaac Sim 或 NVIDIA Isaac Lab 中生成合成数据。
  4. 通过 NVIDIA Cosmos 世界基础模型(WFM)对生成的数据进行增强。

使用 Omniverse NuRec 构建 3D 数字孪生

Omniverse NuRec 是一项基于真实传感器数据,用于重建和渲染 3D 交互式仿真的技术。重建的环境可应用于机器人、自动驾驶以及工业和地理空间等领域,支持合成数据生成、AI 模型训练及模型行为测试。

Isaac Sim 支持基于 NuRec Gaussian 的神经辐射场(NeRF)、3D Gaussian Splatting(3DGS)以及 3D Gaussian Unscented Transform(3DGUT)。渲染数据采用 OpenUSD 格式,适用于仿真场景。您可以在 Isaac Sim 中加载兼容的资源和场景,并通过 OmniNuRecVolumeAPI 属性对渲染效果进行控制。如需了解更多关于 NuRec 在机器人应用中的使用案例,请参考相关文档

将 SimReady 资产添加至模拟场景中

SimReady 资产是基于 OpenUSD 的高精度 3D 模型,具备内置的语义标注、密集字幕以及基于 USDPhysics 的物理特性,可显著简化机器人仿真的配置流程。

SimReady Warehouse 01 资产包包含大量用于托盘、存储机架和坡道等对象的 USD 模型,可直接拖放到场景中使用。针对机器人及相关应用场景,可进一步探索 物理 AI 数据集

以下视频演示了如何在 Isaac Sim 中将 SimReady 资产添加到场景中。

视频 1。通过简单的拖放操作,为仓库场景添加符合物理规律的 3D 对象

通过这种方式,我们可以在仿真中轻松构建包含多个对象的场景。这些模拟环境的一个重要用途是收集用于训练机器人策略的合成数据,相关内容我们将在下一节中详细介绍。

采用 SimReady 标准化工作流程,在 OpenUSD 中设计、验证并实施统一的 3D 资产规范。

使用 MobilityGen 生成合成数据

MobilityGen 是一个基于 Isaac Sim 构建的移动机器人数据生成工作流。它支持多种数据采集方式,包括通过键盘和游戏手柄进行远程操作的手动方法,以及采用随机加速和随机路径跟随的自动化方法。

在以下示例中,您将学习如何使用 MobilityGen 为 Isaac Sim 中的 H1 人形机器人 生成数据。该工作流同样适用于其他类型的机器人,例如四足机器人和自主移动机器人(AMR),并已在 SpotCarter 机器人上完成验证。

尽管 MobilityGen 的数据可用于训练机器人的移动策略,但在数据中引入视觉多样性时,性能将得到提升。下一节中,我们将探讨如何利用 NVIDIA Cosmos 增强数据的视觉多样性。

下文概述了使用 MobilityGen 生成数据的具体步骤。

  1. 构建占用地图: 这是一种基于网格的环境表示方法,用于描述机器人所处空间,其中每个网格单元表示该位置被障碍物占据的概率。
  2. 记录轨迹: 当移动机器人在环境中行进时,系统会记录其运动轨迹,包含每一时刻的位置、速度和朝向信息。
  3. 回放和渲染: 支持对生成的轨迹进行回放,以便评估性能并实现数据的可视化呈现。

以下视频展示了如何在 Isaac Sim 中利用 MobilityGen 生成合成数据。

视频 2。创建占用地图,用于训练不同机器人平台上的移动模型。
视频 3。记录无碰撞路径,并从机器人视角采集 RGB 和深度摄像头数据

在以下示例中,我们将使用 Isaac Sim 提供的仓库环境来运行 MobilityGen。您也可以利用上一节中介绍的 SimReady 素材,自行构建相应的环境。

构建占用地图的步骤

  1. 加载仓库阶段:
    1. 打开内容浏览器(窗口 > 浏览器 > 内容)。 在 Isaac Sim/Environments/Simple_Warehouse/warehouse_multiple_shelves.usd 中加载仓库 USD 文件。
  2. 创建占用地图:
    1. 选择“Tools”(工具)>“Robotics”(机器人)>“Occupancy Map”(占用地图),以打开扩展程序。 在“Occupancy Map”(占用地图)窗口中,将 Origin 设置为:
      1. X:2.0 Y:0.0 Z:0.0
      2. 注意:要在文本框中输入数值,请按 Ctrl + 左键单击以激活输入模式。
    2. 在“Occupancy Map”(占用地图)窗口中,将“Upper Bound”(上限)设置为:
      1. X:10.0 Y:20.0 Z:2.0(假设机器人可在 2 米高的立交桥下通行)
    3. 将“Lower Bound”(下限)设置为:
      1. X:-14.0 Y:-18.0 Z:0.1(假设机器人可越过高于 5 厘米的障碍物)
    4. 单击“Calculate”(计算)以生成占用地图。 单击“Visualize Image”(可视化图像)查看生成结果。 在“Visualization”(可视化)窗口的“Rotate Image”(旋转图像)下方,选择 180。 在“Visualization”(可视化)窗口的“Coordinate Type”(坐标类型)下,选择“ROS Occupancy Map Parameters File YAML”(ROS 占用地图参数文件 YAML)。 单击“Regenerate Image”(重新生成图像)。 将生成的 YAML 文本复制到剪贴板。 在所选的文本编辑器中,创建一个新文件,命名为: ~/MobilityGenData/maps/warehouse_multiple_shelves/map.yaml (注意:在 Windows 系统中,请将 ~ 替换为自定义的目录路径) 将从“Visualization”(可视化)窗口复制的 YAML 文本粘贴至该文件中。 修改其中的行: image: warehouse_multiple_shelves.png 为: image: map.png 保存文件。 返回“Visualization”(可视化)窗口,单击“Save Image”(保存图像)。 在树状资源管理器中,打开文件夹: ~/MobilityGenData/maps/warehouse_multiple_shelves 在文件名输入框中,输入: map.png 单击“Save”(保存)。

请确认您当前是否存在名为~/MobilityGenData/maps/warehouse_multiple_shelves/的文件夹,且该文件夹中包含map.yamlmap.png两个文件。

记录轨迹的步骤

创建环境地图后,您即可使用 MobilityGen 生成数据:

  1. 启用 MobilityGen UI 扩展程序。
    1. 前往Window > Extensions,然后搜索 MobilityGen UI
    2. 单击 MobilityGen UI 扩展程序的切换开关。
    3. 注意:此时应会出现两个窗口。其中一个为 MobilityGen 用户界面,另一个用于显示占用地图及可视化效果。窗口初次出现时可能相互遮挡,因此建议将它们分别拖动至窗口窗格中,以便同时查看这两个窗口。
  2. 构建场景:
    1. MobilityGen 窗口的 Stage 下,粘贴以下 USD 路径:
      http://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/Isaac/5.0/Isaac/Environments/Simple_Warehouse/warehouse_multiple_shelves.usd
    2. MobilityGen 窗口的 Occupancy Map 区域,输入此前创建的 map.yaml 文件的路径:
      ~/MobilityGenData/maps/warehouse_multiple_shelves/map.yaml
    3. Robot 下拉菜单中,选择 H1Robot
    4. Scenario 下拉菜单中,选择 KeyboardTeleoperationScenario
    5. 单击 Build
      数秒后,请确认场景是否成功加载,并检查占用地图是否正常显示。
  3. 使用以下按键试驾机器人:
    1. W – 向前移动
    2. A – 向左转
    3. S – 向后移动
    4. D – 向右转
  4. 开始录制:
    1. 单击 Start recording 以启动日志记录。
    2. 操控机器人在场景中移动。
    3. 完成操作后,单击 Stop recording 以结束录制。

默认情况下,数据现在会记录到~/MobilityGenData/recordings

回放与渲染步骤

在记录轨迹(包括机器人位姿等数据)后,您即可回放该场景。

  1. 使用 Isaac Sim 自带的 replay_directory.py Python 脚本。在 Isaac Sim 目录下执行以下命令即可运行该脚本:
./python.sh standalone_examples/replicator/mobility_gen/replay_directory.py --render_interval 40 --enable isaacsim.replicator.mobility_gen.examples

脚本完成后,请确认您拥有 ~/MobilityGenData/replays 文件夹,其中包含已渲染的传感器数据。您可以打开该文件夹以浏览和探索相关数据。

有关如何加载和处理开源 MobilityGen GitHub 仓库中记录数据的示例。建议您运行 Gradio 可视化脚本,以直观展示所记录的数据。

如需了解更多信息(例如如何添加自定义机器人),请参阅使用 MobilityGen 生成数据的教程。

使用 NVIDIA Cosmos 增强生成式训练数据

使用 MobilityGen 生成数据后,通过 Cosmos Transfer 从合成机器人数据生成逼真的视频。该方法增加了视觉多样性,有助于缩小 仿真与现实之间的差距,并提升策略在实际部署中的表现。

A high-level diagram showing the SDG workflow, which includes generating synthetic data using MobilityGen and augmenting the data using Cosmos Transfer. This generates high-quality datasets for training robot models, and results in improved simulation-to-real performance.
图 1。高级 SDG 工作流程包含使用 MobilityGen 生成合成数据,并通过 Cosmos Transfer 进行数据增强,从而构建用于训练机器人模型的高质量数据集。

Cosmos Transfer 是一种 WFM,能够根据 RGB、深度、分割等多种视频模式的输入生成逼真的视频。除了输入视频外,您还可以提供文本提示,用于具体指导希望生成的视频内容。以下是提示示例:

A realistic warehouse environment with consistent lighting, perspective, and camera motion. Preserve the original structure, object positions, and layout from the input video. Ensure the output exactly matches the segmentation video frame-by-frame in timing and content. Camera movement must follow the original path precisely.

视频 4 展示了如何在 MobilityGen 数据上运行 Cosmos Transfer,以引入视觉上的变化。

视频 4。处理 Isaac Sim 合成数据,将仓库场景转化为逼真的训练数据集

视频 5。生成逼真视频的推理过程

如视频所示,使用 Cosmos Transfer 运行推理的示例命令如下:

export CUDA_VISIBLE_DEVICES="${CUDA_VISIBLE_DEVICES:=0,1,2,3}"
export CHECKPOINT_DIR="${CHECKPOINT_DIR:=./checkpoints}"
export NUM_GPU="${NUM_GPU:=4}"
PYTHONPATH=$(pwd) torchrun --nproc_per_node=$NUM_GPU --nnodes=1 --node_rank=0 cosmos_transfer1/diffusion/inference/transfer.py \
    --checkpoint_dir $CHECKPOINT_DIR \
    --video_save_folder outputs/example1_single_control_edge \
    --controlnet_specs assets/inference_cosmos_transfer1_single_control_edge.json \
    --offload_text_encoder_model \
    --offload_guardrail_models \
    --num_gpus $NUM_GPU

在实验室的闭环评估过程中,基于合成数据与 Cosmos 增强数据训练的策略表现 consistently 优于仅使用合成数据训练的策略。这类结合了合成数据和 Cosmos 增强数据的训练策略,能够有效应对以下场景:

  • 绕过透明的障碍物。
  • 避开与背景融为一体的障碍物,例如灰色地板上的灰色电线杆。
  • 靠近障碍物行驶,以缩短到达目标位置的总距离。
  • 在光线较暗的环境中实现稳定导航。
  • 在狭窄通道中完成精准通行。

您可以对任何真实或合成的视频数据运行 Cosmos Transfer。另一个示例是使用 Cosmos 进行合成数据集增强的教程。该教程介绍了如何在 Isaac Sim 中利用 Replicator 生成合成数据。

入门指南

NVIDIA 提供丰富的 OpenUSD 资源,助您加速学习进程。从自定进度的 Learn OpenUSD数字孪生机器人 培训课程入手,逐步掌握本指南所涵盖的核心技能。

对于希望在机器人领域职业发展上更进一步的专业人士,OpenUSD Development 认证提供了一项专业级考试,用以验证您在使用 OpenUSD 构建、维护和优化 3D 内容流程方面的专业能力。您可在 NVIDIA GTC 华盛顿特区现场获取 OpenUSD 认证,并在物理 AI 与机器人日期间深入了解用于机器人开发的合成数据。

收听即将推出的 OpenUSD 预览体验计划直播,与 NVIDIA 开发者社区保持紧密联系。通过 InstagramLinkedInXThreadsYouTube 关注 NVIDIA Omniverse,及时掌握最新资讯。

 

标签