使用 ROS 2 和 NVIDIA Isaac Sim 模拟和测试机器人的初学者指南

机器人模拟使开发人员能够通过虚拟机器人学习和测试来训练、模拟和验证这些先进系统。这一切都发生在部署之前基于物理的环境数字表示中,例如仓库和工厂。

在本文中,我们将向您展示如何利用ROS 2软件包和NVIDIA Isaac Sim (基于NVIDIA Omniverse平台构建的参考应用程序)来模拟和验证您的机器人堆栈。我们还将讨论 Isaac Sim 可以为支持 AI 的机器人解锁的用例。

Isaac Sim 建立在通用场景描述 (OpenUSD)之上,这是 Isaac Sim 中模拟的基础框架。作为开发人员,您可以使用 Isaac Sim 轻松高效地设计、导入、构建和共享机器人模型和虚拟训练环境。OpenUSD 还有助于通过ROS 2界面、功能齐全的 Python 脚本和用于导入机器人和环境模型的多功能插件,简化机器人大脑与虚拟世界之间的连接。

Isaac Sim 与 ROS 2 工作流程

Isaac Sim 到 ROS 2 的工作流程与使用其他机器人模拟器(例如Gazebo)执行的工作流程类似。从高层次上讲,它首先将您的机器人模型带入预构建的 Isaac Sim 环境。下一步需要向机器人添加传感器,然后将相关组件连接到 ROS 2 动作图,并通过您的 ROS 2 包控制机器人来模拟机器人。

该图表显示了 Isaac Sim 到 ROS 的工作流程,从导入机器人模型到将机器人添加到模拟环境、设置传感器和模拟场景。
图 1. Isaac Sim 到 ROS 的工作流程

URDF:Isaac Sim 中模拟的常见起点

Isaac Sim 中的 ROS 2 工作流程通常从通过URDF 导入器导入机器人模型开始。URDF是一种在模拟工具中处理机器人模型的广泛接受的格式。

此外,您还可以使用内置向导从第三方工具和服务引入其他文件、数据和环境。通过回答几个简单的问题,您可以找到相关步骤,将正确的资产(例如机器人模型、工具和传感器)引入到您的模拟场景中。

Isaac Sim 中的导入向导面板的屏幕截图,其中标有导入正确资产的关键步骤编号。
图 2. Isaac Sim 中的导入向导

预填充场景和 SimReady 资产

与任何机器人模拟类似,您需要一个场景来模拟机器人的动作。Isaac Sim 提供许多预建的 3D 场景,从简单的办公环境到大型复杂  环境(例如仓库)。此外,您还可以通过USD Connections从其他工具中引入更复杂的 3D 场景。

带有货架箱子的仓库的数字孪生。
图 3. Isaac Sim 中预填充仓 澳洲华人 库场景的示例
除了 3D 场景之外,您还可以利用一千多个SimReady 资源,这些资源是物理上精确的 3D 对象,包含精确的物理属性、行为和连接的数据流,以在模拟的数字世界中表示现实世界。

网格布局中的 SimReady 资产示例。
图 4.Isaac Sim 中可用的 SimReady 资产

特殊数据

添加传感器

传感器使机器人能够感知周围环境并采取必要的行动。人形机器人、机械手和 AMR 等机器人具有多个机载传感器,包括立体摄像头、2D 和 3D 激光雷达和雷达。此外,机器人还具有物理传感器,例如接触传感器和惯性传感器。

Isaac Sim 包含来自  等制造商的 许多第三方传感器。您还可以构建自己的自定义传感器进行模拟。

利用NVIDIA RTX 技术,您可以通过物理精确模拟生成逼真的图像。然后,这些渲染的图像可用于训练 AI 模型和软件在环。

连接到 ROS 2

Isaac Sim 通过ROS 2 Bridge 扩展连接到 ROS 2。此扩展由为 ROS 开发人员设计的各种OmniGraph (OG)节点组成。OG 节点与 ROS 节点不同。OG 节点提供了一个封装的功能,可以在连接的图形结构中使用,以在模拟中执行复杂的任务。

例如,要将时间发布到 ROS,我们将使用两个主要 OG 节点。第一个节点将读取模拟时间,即 Isaac 读取模拟时间节点。此节点的输出将成为 ROS 2 时钟发布 Clockr OG 节点的输入。

屏幕截图显示了连接到 ROS 2 Publish Clock OG 节点中的时间戳发布者的读取模拟时间节点。
图 5. 将时钟时间从 Isaac Sim 发布到 ROS 2
ROS 2 Bridge 提供对各种 OG 节点的 最佳商业文档云存储 访问,这些节点对机器人任务非常有用。这些 OG 节点可用于发布来自模拟相机或激光雷达的数据、发布  机器人的变换树以及订阅速度消息。还可以修改它们的参数,如队列大小、主题名称、上下文和 QoS。它们可以连接起来构建 ROS 2 动作图,从而使用流行的 ROS 2 包实现导航和操作等复杂任务。

启用 ROS 2 Bridge 可访问rclpy,即适用于 Python 的 ROS 2 客户端库。这样就可以编写包含节点、服务和操作的自定义 ROS 2 代码,在使用 Python 编写脚本时,这些代码可以直接访问和修改来自场景和模拟机器人的数据。

通过在运行 Isaac Sim 之前获取工作区,即可启用 ROS 2 自定义消息支持。还可以根据任务特定要求编写自定义 Python 或 C++ OG 节点(例如,在自定义消息主题上发布接触传感器状态)。

转向感知人工智能机器人

前面的部分详细介绍了 Isaac Sim 到 ROS 2 的工作流程,该工作流程应该反映您现有的工作流程。在以下部分中,我们将介绍 Isaac Sim 的一些功能,这些功能适用于将使用感知和认知模型的 AI 机器人。

从简单到复杂的模拟

为了实现大规模自主,您需要在 cg 线索 复杂多样的环境中模拟机器人。Isaac Sim 的 OpenUSD 基础使其在机器人工作流程方面具有高度的可扩展性和可扩展性。通过对真实工厂的所有关键元素进行建模,您可以快速将模拟从工作单元中的单个机器人扩展到复杂环境(例如工厂或仓库)中的多个机器人。下面的视频演示了您可以在 Isaac Sim 中运行的复杂模拟的示例。

视频 1. 重工业的未来始于数字孪生

用于模型训练的合成数据生成
训练这些机器人所需的感知 AI 模型需要大量数据。在大多数情况下,现实世界的数据极难获取。此外,现实世界的数据可能不够多样化,无法捕捉到大量场景和极端情况。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注