物理 AI 赋能的机器人 需要在物理世界中自主感知、规划和执行复杂任务,其中包括在动态和不可预测的环境中安全、高效地运输和操控物体。
借助机器人仿真,开发者可以通过虚拟机器人学习和测试来训练、模拟和验证这些先进的系统。在部署之前,这一切都发生在基于物理的数字环境表示中,如仓库和工厂。
在本文中,我们将向您展示如何利用 ROS 2 软件包和 NVIDIA Isaac Sim (基于 NVIDIA Omniverse 平台构建的参考应用) 来模拟和验证机器人堆栈。我们还将讨论 NVIDIA Isaac Sim 可以为 AI 机器人解锁的用例。
Isaac Sim 基于 Universal Scene Description (USD) 构建,后者是 Isaac Sim 中用于仿真的基础框架。作为开发者,您可以使用 Isaac Sim 轻松高效地设计、导入、构建和共享机器人模型和虚拟训练环境。USD 还有助于通过 ROS 2 接口、全功能 Python 脚本以及用于导入机器人和环境模型的通用插件简化机器人大脑与虚拟世界之间的连接。
支持 ROS 2 工作流的 Isaac Sim
Isaac Sim 到 ROS 2 的工作流类似于通过 Gazebo 等其他机器人模拟器执行的工作流。在高层次上讲,它首先将您的机器人模型引入预构建的 Isaac Sim 环境。下一步是向机器人添加传感器,然后将相关组件连接到 ROS 2 动作图形,并通过您的 ROS 2 软件包控制机器人来模拟机器人。
URDF:Isaac Sim 的通用起點
Isaac Sim 中的 ROS 2 工作流通常始于通过 URDF 导入器导入机器人模型。URDF 是一种广泛接受的格式,用于在仿真工具中处理机器人模型。
此外,您还可以使用内置向导从第三方工具和服务中引入其他文件、数据和环境。通过回答几个简单的问题,您可以找到相关步骤,将正确的资产(例如 robot models、tools 和 sensors)引入仿真场景。
预填充场景和 SimReady 素材
与任何机器人仿真类似,您需要一个用于仿真机器人动作的场景。从简单的办公室环境到仓库等复杂的大型环境,Isaac Sim 提供了许多预构建的 3D 场景。此外,您还可以通过 USD Connections 从其他工具中引入更复杂的 3D 场景。
除了 3D 场景之外,您还可以利用 一千多个 SimReady 资产 ,这些资产是物理精准的 3D 对象,包含准确的物理属性、行为和连接的数据流,以在模拟数字世界中表现现实世界。
添加传感器
传感器使机器人能够感知周围环境并采取必要的行动。人形机器人、操纵器和自动移动机器人等机器人拥有多个板载传感器,包括立体摄像头、2D 和 3D 激光雷达以及雷达。此外,机器人还拥有接触和惯性传感器等物理传感器。
Isaac Sim 包含许多来自 Intel、Orbbec、Stereolabs、HESAI、SICK、SLAMTEC 等制造商的 第三方传感器 。你还可以为模拟构建自己的自定义传感器。
利用 NVIDIA RTX 技术,您可以从物理级准确的模拟中生成逼真的图像。然后,这些渲染的图像可用于训练 AI 模型和软件在环中。
连接到 ROS 2
Isaac Sim 通过 ROS 2 桥接器扩展程序 连接到 ROS 2.This 扩展程序由专为 ROS 开发者设计的各种 OmniGraph (OG) 节点 组成。OG 节点与 ROS 节点不同。OG 节点提供封装的功能,可以在连接的图形结构中使用,以在仿真中执行复杂的任务。
例如,要将时间发布到 ROS,我们将使用两个主要 OG 节点。第一个节点将读取模拟时间,即 Isaac 读取模拟时间节点。此节点的输出将是 ROS 2 时钟发布 Clockr OG 节点的输入。
ROS 2 桥接器提供对各种用于机器人任务的 OG 节点的访问权限。这些 OG 节点可用于发布来自模拟摄像头或激光雷达的数据,发布机器人的转换树以及订阅速度消息。还可以修改队列大小、主题名称、上下文和 QoS 等参数。可以连接这些节点以构建 ROS 2 Action Graph,从而通过热门的 ROS 2 软件包实现导航和操作等复杂任务。
启用 ROS 2 桥接器可访问 rclpy (适用于 Python 的 ROS 2 客户端库)。这样就可以编写包含节点、服务和操作的自定义 ROS 2 代码,这些节点、服务和操作可以在使用 Python 编写脚本时直接访问和修改场景和模拟机器人的数据。
通过在运行 Isaac Sim 之前获取工作空间,可以启用 ROS 2 自定义消息支持。还可以编写自定义 Python 或 C++ OG 节点以满足任务的特定要求(例如,发布自定义消息主题的联系人传感器状态)。
转向感知 AI 机器人
前面的部分详细介绍了 Isaac Sim 到 ROS 2 的工作流,该工作流应反映您现有的工作流。在以下部分中,我们将了解 Isaac Sim 的一些功能,这些功能适用于将使用感知和认知模型的 AI 机器人。
从简单模拟扩展到复杂模拟
要实现大规模自主,您需要在复杂多样的环境中仿真机器人。Isaac Sim 的 OpenUSD 基础使其在机器人工作流方面具有高度可扩展性和可扩展性。通过对真实工厂的所有关键元素进行建模,您可以快速将仿真从工作单元中的单个机器人扩展到工厂或仓库等复杂环境中的多个机器人。以下视频展示了在 Isaac Sim 中运行的复杂仿真示例。
生成用于模型训练的合成数据
训练为这些机器人提供动力支持的感知 AI 模型需要大量数据。在大多数情况下,很难获取真实数据。此外,真实数据的多样性可能不足以捕捉大量场景和边缘案例。
为了克服这种数据差距,可以使用 Isaac Sim 中的传感器生成合成数据。该功能的主要功能之一是域随机化,您可以在其中更改模拟场景中的许多参数(包括位置、光照、颜色、纹理、背景等),以生成各种训练数据集。使用合成数据的另一个好处是,您可以快速迭代以改进模型 KPI。
FoundationPose 是一种用于对象姿态和跟踪的统一基础模型,完全基于 synthetic data 进行训练,无需任何 fine-tuning 即可进行部署。通过从机器人扩展到更大的场景, synthetic data 被用于开发 AI 模型 ,这些模型用于提高零售和仓库环境的运营效率。
多智能体软件在环测试
设施和仓库通常位于多种类型的机器人中,例如工业机械臂、AMRs,甚至是需要自主执行复杂任务的人形机器人。Isaac Sim 可用于测试和验证在现实世界中难以涵盖的众多场景中运行自己的感知堆栈的整个机器人群的行为和性能。
更多工作流程和用例
Isaac Sim 可以灵活地根据您的特定需求创建定制的机器人模拟器和扩展程序,从而扩展到其他工作流程和用例。这种灵活性支持高级机器人学习技术和可扩展训练,使其能够适应各种用例。
机器人学习
Isaac Sim 已进一步扩展到所需的机器人学习,以确保机器人能够以可重复和高效的方式执行任务。例如, Isaac Lab ,这是一个基于 Isaac Sim 构建的轻量级开源参考框架,用于逼真和快速的模拟。Isaac Lab 使用强化学习和模仿学习等方法,为开发者提供在多 GPU 和多节点系统上扩展机器人策略训练的方法。
自定义模拟器和扩展程序
Isaac Sim 还可用于为您的用例构建自定义机器人模拟器或扩展程序。 Foxglove ,是 NVIDIA Inception 计划为初创公司的成员,该公司为机器人开发者构建了可视化工具,使他们能够获得切实可行的见解,从而促进更有效的协作、验证和更快的迭代。
Foxglove 扩展程序使用 WebSocket 协议 将任何 Isaac Sim 项目无缝链接到 Foxglove 可视化界面 。它会自动检测模拟阶段中的所有摄像头、IMUs 和 articulations,从而在 Foxglove 中提供其数据以及完整的 Transform Tree。为防止数据流过多,只有当用户在 Foxglove 中 toggled on 时,才会查询 sensors。
开始使用机器人仿真
本文介绍了如何将现有 ROS 工作流连接到 Isaac Sim 进行测试和验证。此外,我们还探讨了 Isaac Sim 支持的一些功能和工作流,这些功能和工作流可用于生成合成数据,以及对支持感知 AI 的机器人进行软件在环测试。
要开始使用 NVIDIA Isaac Sim,请 免费下载标准许可证 。要开始在 Isaac Sim 上使用 ROS 工作流,请查看以下资源:
通过 NVIDIA 开发者论坛 、 Discord 服务器 和 YouTube 频道 加入机器人社区。通过 LinkedIn 、 Instagram 、 X 和 Facebook 保持最新状态。