虚幻锦标赛游戏引擎的多机器人模拟

虚幻锦标赛游戏引擎的多机器人模拟

随着越来越多的自主机器人被部署在现实世界场景中,对高保真多机器人仿真环境的需求正在迅速增长。在这篇文章中,我将回顾我们过去在Cogniteam对于模拟多个机器人,我们目前的进展NVIDIA Isaac Sim,以及如何Nimbus可以加快 Isaac Sim 多机器人仿真的开发和维护。

使用虚幻锦标赛游戏引擎的多机器人模拟

大约 20 年前,我在Cogniteam。我以一个用于多机器人任务分配和团队合作的机器人框架的想法开始了我们的机器人开发生涯。最初被称为 Cogni TAO ,该系统的简化版本后来被发布为 ROS decision_making

当时,多个机器人的用例很少,这些机器人的 3D 模拟是不可能的。因此,我为虚幻锦标赛 2000-2004 年的游戏引擎编写了一个 mod ,以实现四个机器人的模拟。我们由四名程序员组成的小团队花了大约 3 年的时间来开发一个可以可靠运行 15 分钟的模拟环境。

An image showing simulation of four robots.

Video from four robots.

图 1 。四个机器人的模拟(左)和机器人的视频(右)

该环境能够在五台最先进的台式机上模拟四个带有摄像头、 Hokuyo LiDAR 、里程计和地图的机器人,并远程接收每个机器人的视频馈送。我们的一位工程师编写了一个 C ++ TCP 客户端,该客户端将直接从游戏引擎在本地网络上传输数据,并以全屏方式显示。我们必须严格运行代码,以使机器人按时在正确的地方产卵。

Gazebo 多机器人仿真

10 年前, 2013 年,在 Gazebo 成为事实上的机器人模拟平台后,我们将工作转移到了 Gazebo 。三个程序员花了大约 2 年的时间在两台英特尔至强机器上模拟了 10 个机器人。他们使用了 ROSmove_base导航堆栈和对象检测使用 OpenCV Hough Circle 变换之前机器人团队用于演示的东西 TensorFlow 。我们当时的同事 Igor Makhtes 建造了 RQT plugin以控制和显示来自多个机器人的数据流(图 2 )。他花了 6 个月的时间才完成。

Screenshot of video feed and map view for 10 robots

图 2 。带 RQT 插件的 10 个机器人的视频馈送和地图视图

这些机器人必须相互通信,但也需要在无法连接时进行操作。为了实现这一点,每个都必须运行自己的 ROS 主机,并通过ROS multimaster网络。

NVIDIA Isaac Sim 多机器人仿真

几个月前,我请我们 Cogniteam 算法团队的计算机科学学生 Saar Moseri 使用云机器人生态系统建立一个多机器人模拟场景Nimbus和NVIDIA Isaac Sim。我们的内部测试团队和我希望使用 Nimbus 代理来控制我们的机器人并查看它们生成的数据。

萨尔花了大约 2 周的时间来熟悉环境并配置系统。图 3 显示了这项工作的结果3D植物,它在带有一台 NVIDIA GeForce RTX 3080 的Cogniteam 实验室运行。

An image showing multi-robot default setup in NVIDIA Isaac Sim

图 3 。 NVIDIA Isaac Sim 多机器人默认设置

萨尔使用了 Isaac Sim 文件,可通过NVIDIA NGC以安装和设置环境。使用Nimbus,他在模拟机上安装了一个代理,并创建了一个网关节点,通过 ROS 接收来自模拟的数据。

Nimbus robot editor

Nimbus configuration editor

图 4 。 Nimbus 机器人编辑器(左)和 Nimbus 配置编辑器(右)

然后我们创建了如图 5 所示的节点配置。

Screenshot of a Nimbus configuration graph with two boxes

图 5 。 Nimbus 简单任务配置move_base航行

两个构建块(已经容器化)是一个网关节点和一个用于 move_base 导航的节点。该配置已部署到 Cogniteam 实验室模拟桌面上运行的代理上Nimbus hub,包括用于 GMapping 、路径跟踪等的节点。

我和我的团队都被这种方法带来的无尽可能性惊呆了。在上述配置中,模拟的感觉数据通过支持 ROS 和 ROS 2 的 ROS gateway 从 Isaac Sim 到达。视图和控制功能由 Nimbus 启用。

开箱即用,这种设置使我们的团队能够执行基本的模拟任务,并在实验室本地模拟机器人车队的控制游戏开发核心技术,以及更多的功能。我们现在可以记录机器人的模拟运行和感官数据,远程 SSH 到模拟机中,全局监控模拟数据,甚至可以通过网络浏览器向我们的验证团队发送有关模拟进度的电子邮件和短信通知。

将 Isaac Sim 与 Nimbus 相结合,形成了一个统一的系统,该系统在功能上与可用的云模拟产品相似,但在本地机器上运行,不涉及额外的云模拟计算成本。此外,它还开辟了新的尖端模拟流程,例如硬件在环的模拟。当模拟在云中运行时,这是不可能的。图 6 显示了 Nimbus 中的控制、导航和映射的外观。

Nimbus robot WebRTC video monitoring

 Nimbus map view and autonomy control

图 6 。 Nimbus 机器人 WebRTC 视频监控(左)和 Nimbus 地图视图和自主控制(右)

要复制所述设置,请参考Isaac Sim 文档。然后访问 Nimbus要创建免费帐户,请登录并按照说明使用免费许可证创建机器人。

将机器人代理安装在 Isaac Sim 无头运行的同一桌面上后游戏开发核心技术,您将能够通过远程 SSH 提供模拟,并从 Nimbus 网站监控模拟机。

视频 1 。 Nimbus 和 NVIDIA Isaac Sim 演示视频

访问 Nimbus 集线器以部署 Isaac Sim 配置。由于所有东西都已经被容器化了(包括 Isaac Sim ),并且控制是基于浏览器的,所以您不需要安装任何应用程序。机器上的代理将设置执行所需的一切。

然后游戏图片,在该代理的监视器页面上,添加对与您的设置相关的任何数据的监视。在代理设置中,您可以通过在 ROS 流上添加条件来定义通知,例如:

“if GoalStatus == ABORTED”
send sms/mail to simulation@your-company.com

Cogniteam 很乐意在此过程中为您提供帮助。您可以通过联系我们 。

总结

对于自主机器人的成功部署,仿真是关键。多次运行同一场景对测试至关重要,但多机器人模拟不同。开发高保真多机器人模拟环境很复杂,需要时间,但可以使用 NVIDIA Isaac Sim 和 Nimbus 进行简化,如本文所述。

我和我的团队将出席ICRA 20235 月 29 日至 6 月 2 日,在伦敦( C22 展位),展示了我们在以色列远程运行的机器人和模拟的浏览器界面。

要了解有关 Isaac Sim 的更多信息,请查看 NVIDIA DeveloperIsaac ROS 论坛。

文章来源:https://developer.nvidia.com/zh-cn/blog/develop-a-multi-robot-environment-with-nvidia-isaac-sim-ros-and-nimbus/