
智慧枢纽
摘要
为了模拟和验证机器人堆栈,开发者可以利用ROS 2软件包配合NVIDIA Isaac Sim仿真训练平台,这是一款基于NVIDIA Omniverse平台的参考应用,实现基于物理的数字环境建模中的虚拟机器人学习和测试。
Isaac Sim 基于通用场景描述(OpenUSD)构建,允许开发者设计、导入和共享机器人模型和虚拟训练环境,并通过 ROS 2 桥梁扩展连接 ROS 2,实现导航和操作等复杂任务。
Isaac Sim 支持合成数据生成用于模型训练、多智能体软件环路测试和机器人学习等功能,使其成为多种机器人应用场景的多功能工具,包括感知型 AI 机器人。
Isaac Sim 搭配 ROS 2 工作流程
Isaac Sim到 ROS 2 的工作流程类似于其他机器人模拟器(如 Gazebo)的工作流程。从大体上讲,首先是将你的机器人模型带入预建的 Isaac Sim 环境。下一步是为机器人添加传感器,然后将相关组件连接到 ROS 2 动作图,并通过 ROS 2 软件包控制机器人进行模拟。
图片
1. Isaac Sim to ROS workflow
URDF:Isaac Sim模拟的常见起点
Isaac Sim 中的 ROS 2 工作流程通常从通过 URDF 导入器导入机器人模型开始。URDF是一种广泛接受的仿真工具中机器人模型的格式。
此外,你还可以使用内置的向导,引入第三方工具和服务中的额外文件、数据和环境。通过回答几个简单问题,你可以找到相关步骤,将合适的资产如机器人模型、工具和传感器引入你的仿真场景。
图片
Figure 2. The import wizard in Isaac Sim
预填充场景与SimReady资源
和任何机器人模拟一样,你需要一个场景来模拟机器人的动作。Isaac Sim 提供许多预建的 3D 场景,从简单的办公环境到大型复杂环境如仓库。此外,你还可以通过USD Connections从其他工具导入更复杂的3D场景。
图片
Figure 3. A sample prepopulated warehouse scene in Isaac Sim
图3.Isaac Sim中预填充的仓库场景示例
除了3D场景,你还可以利用一千多个SimReady资产,这些是物理上非常精确的3D对象,涵盖了准确的物理属性、行为和连接的数据流,用来在模拟数字世界中表现真实世界。
图片
Figure 4. SimReady assets available in Isaac Sim
图4.Isaac Sim中提供的SimReady资产
添加传感器
传感器使机器人能够感知环境并采取必要行动。人形机器人、机械臂和AMR(Autonomous Mobile Robot)等机器人配备了多个机载传感器,包括立体摄像头、2D和3D激光雷达以及雷达。此外,机器人还配备了接触和惯性传感器等物理传感器。
Isaac Sim 包含了许多来自英特尔、Orbbec、Stereolabs、HESAI、SICK、SLAMtec 等厂商的第三方传感器。你也可以自己定制传感器进行模拟。
利用NVIDIA RTX技术,你可以从物理精确的模拟中生成逼真的图像。这些渲染后的图像可用于训练AI模型和软件循环。
连接ROS 2
Isaac Sim通过ROS 2桥接延伸连接到ROS 2。该扩展由为ROS开发者设计的多个OmniGraph(OG)节点组成。OG节点和ROS节点不同。OG 节点提供了一个封装功能,可用于连接的图结构中执行复杂模拟任务。
例如,为了发布时间到ROS,我们将使用两个主要的原始节点。第一个节点会读取模拟时间,是Isaac读仿真时间节点。该节点的输出将作为 ROS 2 时钟发布时钟 OG 节点的输入。
图片
Figure 5. Publish clock time from Isaac Sim to ROS 2
图5.将时钟时间从Isaac Sim发布到ROS 2
ROS 2 桥接器为机器人任务提供了多种 OG 节点的访问。这些原始节点可用于发布模拟相机或激光雷达的数据,发布机器人的变换树,并订阅速度消息。它们的参数如队列大小、主题名称、上下文和服务质量(QoS)也可以被修改。它们可以连接起来构建ROS 2动作图,从而实现复杂的任务,如导航和操作,使用流行的ROS 2软件包。
启用ROS 2桥接器可以访问rclpy,即Python的ROS 2客户端库。这使得你可以编写包含节点、服务和动作的自定义ROS 2代码,这些代码可以在用Python脚本时直接访问和修改场景和模拟机器人的数据。
ROS 2 的自定义消息支持是通过在运行 Isaac Sim 前先获取工作区来实现的。自定义的 Python 或 C++ OG 节点也可以根据任务特定需求编写(例如,在自定义消息主题上发布接触传感器状态)。
转向感知型人工智能机器人
前面的部分详细介绍了Isaac Sim到ROS 2的工作流程,应该能镜像你现有的工作流程。在接下来的章节中,我们将介绍Isaac Sim在AI驱动机器人中的一些功能,这些机器人将使用感知和认知模型。
从简单到复杂模拟的扩展
要实现大规模自主,你需要在复杂多样的环境中模拟机器人。Isaac Sim 基于 OpenUSD 的基础使其在机器人工作流程中高度可扩展且可扩展。通过建模真实工厂的所有关键元素,你可以快速将模拟从工作单元中的单个机器人扩展到复杂环境中的多个机器人,如工厂或仓库。下面的视频展示了在Isaac Sim中运行的复杂模拟示例。
Video 1. The future of heavy industries starts as a digital twin
用于模型训练的合成数据生成
训练驱动这些机器人的感知AI模型需要大量数据。在大多数情况下,获取真实世界的数据极其困难。此外,现实世界的数据可能不够多样化,无法捕捉众多场景和边缘案例。
为弥补这一数据缺口,可以使用Isaac Sim中的传感器生成合成数据。其中一个关键功能是域随机化,你可以在模拟场景中更改许多参数,包括位置、光照、颜色、纹理、背景等,生成多样化的训练数据集。使用合成数据的另一个好处是你可以快速迭代以提升模型KPI。
FoundationPose是一个统一的基础模型,用于物体姿态和跟踪,完全基于合成数据训练,且可无需微调即可部署。从机器人扩展到更大场景,合成数据被用来开发AI模型,这些模型被用来提升零售和仓库环境中的运营效率。
多智能体软件环路测试
设施和仓库通常存在多种机器人,如工业机械臂、AMR,甚至需要自主执行复杂任务的人形机器人。Isaac Sim 可用于测试和验证整个机器人队伍在多种场景中运行感知堆栈的行为和性能,这些场景在现实世界中难以涵盖。
图片
Figure 6. Isaac Sim can be used to scale software-in-loop testing for multiple robots
图6.Isaac SIM可用于扩展多个机器人的软件在环测试
更多工作流程和用例
Isaac Sim 可以通过灵活地创建定制机器人模拟器和扩展,扩展到更多工作流程和用例,满足您的具体需求。这种多功能性支持先进的机器人学习技术和可扩展的培训,使其能够适应各种应用场景。
机器人学习
Isaac Sim 进一步扩展到机器人学习,确保机器人能够以可重复且高效的方式完成任务。例如,Isaac Lab,一个基于Isaac Sim构建的轻量级开源参考框架,用于逼真的快速模拟。Isaac Lab 采用强化和模仿学习等方法,并为开发者提供了在多 GPU 和多节点系统上扩展机器人策略训练的方法。
自定义模拟器和扩展
Isaac Sim 也可以用来为你的用例构建自定义机器人模拟器或扩展。Foxglove是NVIDIA初创计划的成员,为机器人开发者打造可视化工具,帮助他们获得可作的洞察,促进更有效的协作、验证和更快迭代。
Foxglove 扩展使用 WebSocket 协议,将任何 Isaac Sim 项目无缝连接到 Foxglove 可视化界面。它自动检测模拟阶段的所有摄像头、IMU和关节,并使其数据与完整的变换树一起在Foxglove中可用。为防止过多数据流,只有用户在 Foxglove 中开启时才会查询传感器。
图片
Figure 7. The Foxglove custom extension that helps visualize and debug simulation scenarios
图7.FoxGlove自定义扩展帮助可视化和调试模拟场景
开始机器人模拟
本文解释了如何将现有ROS工作流程连接到NVIDIA机器人仿真训练平台Isaac Sim进行测试和验证。此外,我们还探讨了Isaac Sim为合成数据生成和机器人驱动感知AI实现的软件在环路测试中所支持的一些功能和工作流程。
要开始使用 NVIDIA Isaac Sim,请免费下载标准许可证。想开始使用 Isaac Sim 的 ROS 工作流程,请查看以下资源:
[1]Isaac Sim ROS 2 Reference Architecture
https://docs.omniverse.nvidia.com/isaacsim/latest/ros_ros2_tutorials.html#isaac-sim-short-ros-2-reference-architecture
[2]Introductory Tutorials on Isaac Sim and ROS/ROS 2
https://docs.omniverse.nvidia.com/isaacsim/latest/ros_ros2_tutorials.html
[3]Robotics Simulation Use Case
https://www.nvidia.com/en-us/use-cases/robotics-simulation/
[4]Introduction to Robotic Simulations in Isaac Sim Self-Paced Course
https://learn.nvidia.com/courses/course-detail?course_id=course-v1:DLI+S-OV-03+V1
原文:
https://developer.nvidia.com/blog/a-beginners-guide-to-simulating-and-testing-robots-with-ros-2-and-nvidia-isaac-sim/