机器人

在 NVIDIA Jetson 上使用 Hardware-in-the-Loop 设计机器人

Hardware-in-the-Loop( HIL )测试是一种强大的工具,用于验证复杂系统的性能,包括机器人和计算机视觉。这篇文章探讨了 HIL 测试是如何与NVIDIA Isaac platform.

NVIDIA Isaac 平台包括 NVIDIA Isaac Sim,一个模拟器,为测试机器人算法提供模拟环境,以及NVIDIA Isaac ROS,为 NVIDIA Jetson 优化的硬件加速软件,其中包含机器学习、计算机视觉和定位算法。通过在该平台上使用 HIL 测试,您可以验证和优化机器人软件堆栈的性能,从而获得更安全、更可靠、更高效的产品。

在这篇文章中,我们讨论了 HIL 系统的各个组件,包括 NVIDIA Isaac 平台的软件和硬件。我们研究了它们如何协同工作,以优化机器人和计算机视觉算法的性能。我们还探讨了使用 NVIDIA Isaac 平台进行 HIL 测试的好处,并将其与其他测试方法进行了比较。

NVIDIA Isaac 模拟

NVIDIA Isaac Sim基于 Omniverse ,为测试机器人和计算机视觉算法提供了一个照片真实、物理精确的虚拟环境。它使您能够对性能进行微调,而不会有损坏物理硬件的风险。模拟器也是高度可定制的,非常适合测试各种场景和用例。

您可以使用 NVIDIA Isaac Sim 创建更智能、更先进的机器人。该平台提供了一套工具和技术,可以帮助您构建复杂的算法,使机器人能够执行复杂的任务。

NVIDIA Isaac Sim 可以轻松协作、共享和导入通用场景描述( USD )格式的环境和机器人模型,方法是使用Omniverse NucleusOmniverse Connectors通过 Isaac ROS / ROS 2 接口、功能齐全的 Python 脚本以及用于导入机器人和环境模型的插件,这种集成实现了更高效、更有效的机器人模拟方法。

Diagram shows a robot model, environment model, or 3D assets as input into Omniverse and Isaac Sim, with NVIDIA RTX, MDL, and PhysX as components.
图 1 。 NVIDIA Isaac Sim 堆栈

您可以使用 ROS 或 ROS 2 或 Python 与 NVIDIA Isaac Sim 进行交互。运行 NVIDIA Isaac Gym 和 NVIDIA Isaac Cortex ,生成合成数据,或将其用于您的数字孪生。

NVIDIA Isaac Sim 内部使用 ROS Noetic 的定制版本roscpp对于 ROS 桥,可以与 Omniverse 框架和 Python 3 . 7 无缝配合。此版本与 ROS 旋律兼容。

NVIDIA Isaac Sim 目前支持 ROS 2 Foxy 和 Humble 用于 ROS 2 桥接。我们建议将 Ubuntu 20 . 04 用于 ROS 2 。

有关详细信息,请参阅NVIDIA Isaac Sim.

NVIDIA Isaac ROS

构建在机器人操作系统( ROS )之上,NVIDIA Isaac ROS提供一系列先进的功能和工具,帮助您打造更智能、更能干的机器人。这些功能包括高级映射和定位功能,以及物体检测和跟踪。有关最新功能的更多信息,请参阅Isaac ROS Developer Preview 3.

通过将 Isaac ROS 作为 NVIDIA Isaac 平台的一部分,您可以创建复杂的机器人应用程序,精确地执行复杂的任务。凭借其强大的计算机视觉和定位算法, Isaac ROS 对于任何希望创建高级机器人应用程序的开发人员来说都是一个有价值的工具。

Diagram shows Isaac ROS layered on Isaac Gem, with ROS2 nodes for image processing, DNN, and CV.
图 2 : Isaac ROS 和软件层

ROS 的 Isaac GEM 是为机器人社区发布的一组 GPU 加速 ROS 2 软件包,也是 NVIDIA Jetson 平台的一部分。

Isaac ROS 提供了一套用于感知和人工智能的软件包,以及被称为 NVIDIA Isaac ROS 传输( NITROS )的完整管道。这些软件包已针对 NVIDIA GPU 和 Jetson 平台进行了优化,具有图像处理和计算机视觉功能。

在这篇文章中,我们包括了如何为以下包运行 HIL 的示例:

  • NVIDIA Isaac ROS vslam
  • NVIDIA Isaac  ROS apriltag
  • NVIDIA Isaac  ROS nvblox
  • NVIDIA Isaac ROS 接近度细分

有关其他 Isaac ROS 软件包和最新的 Isaac ROS Developer Preview 3 的更多信息,请参阅NVIDIA Isaac ROS.

硬件规格和设置

对于此测试,您需要一个工作站或笔记本电脑和 NVIDIA Jetson :

  • 安装了 Ubuntu 20 . 04 的 x86 / 64 计算机
  • 带 NVIDIA RTX 的 NVIDIA 显卡 
  • 陈列
  • 键盘和鼠标
  • NVIDIA Jetson AGX Orin 或 NVIDIA Jetson Orin NX
  • NVIDIA JetPack 5 +(已测试 5 . 1 . 1 )
  • 路由器
  • 以太网电缆
Diagram shows a desktop with an NVIDIA graphics card connected by a router to an NVIDIA AGX Orin module.
图 3 。硬件设置

当在设备(如 NVIDIA Jetson 模块和 PC )之间传输大量数据时,通常首选使用有线以太网连接而不是 Wi-Fi 。这是因为以太网连接提供了更快、更可靠的数据传输速率,这对于实时数据处理和机器学习任务尤为重要。

要在 Jetson 模块和您的电脑之间建立以太网连接,请执行以下步骤:

  1. 获得一根以太网电缆和一个带有免费以太网端口的路由器。
  2. 将电缆的一端插入设备的以太网端口。
  3. 将电缆的另一端插入路由器上的任何空闲以太网端口。
  4. 打开设备,等待其完全启动。
  5. 通过查找以太网图标或使用网络诊断工具如ifconfigipconfig.

当您的电脑和 NVIDIA Jetson 准备就绪并连接后,请按照/NVIDIA-AI-IOT/isaac_demoGitHub 存储库。

运行演示并驾驶

在第一步中,在您的工作站上运行 NVIDIA Isaac Sim 。这个./isaac_ros.sh脚本运行了一个卡特机器人的演示。

Carter 1.0 是一个机器人平台,使用赛格威的差速器底座、用于 3D 范围扫描的 Velodyne P16 、 ZED 相机、 IMU 和 Jetson 模块作为系统的核心。与自定义安装支架一起,它为 NVIDIA Isaac 导航堆栈提供了一个强大而稳健的演示平台。

当模拟开始时,您会看到 NVIDIA Isaac Sim 的立体声相机输出。使用两个摄像头,机器人可以接收 NVIDIA Jetson 模块上运行的 Isaac ROS 的输入。

The Carter view from NVIDIA Isaac SIM. In this frame, the stereo camera output is shown.
图 4 。Carter 在 NVIDIA  Isaac  Sim 上

Isaac ROS 软件包将在本演示中试用

在这篇文章中,我们讨论了一些用于 AMR 机器人或与轮式机器人一起使用的 NVIDIA Isaac ROS 软件包。我们专注于用于本地化、映射和 AprilTag 检测的包,但您可以根据需要修改存储库以测试其他包。

Isaac ROS 视觉 SLAM

NVIDIA Isaac ROS 视觉 SLAM 结合了视觉里程计和同时定位与标测( SLAM )。

视觉里程计是一种用于估计相机相对于其起始位置的位置的技术。该技术涉及分析两个连续输入帧或立体声对以识别关键点集合的迭代过程。通过匹配这两个集中的关键点,可以确定摄影机的过渡和帧之间的相对旋转。

SLAM 是一种通过结合先前获得的轨迹知识来提高视觉 SLAM 准确性的方法。通过检测之前是否看到过当前场景(相机移动中的循环),它可以优化之前估计的相机姿势。

Screenshot of Isaac ROS with the 3D map generated by nvblox and visualized on rviz.
图 5 。 Isaac ROS  vslam和 nvblox的比较
Screenshot of terminal window shows the status of the NVIDIA Jetson GPU and RAM on NVIDIA Orin NX when Isaac ROS is running.
图 6 。 Isaac ROS vslam 和 nvblox 运行状态

Isaac ROS nvblox

nvblox 软件包有助于使用传感器观测实时构建机器人周围环境的 3D 模型。路径规划人员使用该模型来创建无碰撞路径。该软件包使用 NVIDIA CUDA 技术来加速进程以获得实时性能。该存储库包括用于 nvblox 库的 ROS 2 集成。

Workflow diagram shows how the NVIDIA Isaac ROS nvblox setup works in this demo. From left to right, the depth and RGB sensor output is used from nvblox mapping library to generate a cost map and a 3D output visualizzable from rviz.
图 7 。 Isaac ROS NVblox 工作流程
Screenshot shows the 3D mapping and localization running on NVIDIA Jetson Orin NX and the output available when you run on rviz.
图 8 。 Isaac ROS vs . lam 输出

如果您遵循/NVIDIA-AI-IOT/isaac_demo说明书

NVIDIA Isaac ROS apriltag

ROS 2 apriltag 软件包使用 NVIDIA GPU 加速图像检测,并发布姿势、 ID 和其他元数据。该包可与 ROS 2 节点进行 CPU AprilTag 检测。

这些标签是驱动机器人或操纵器从特定点开始动作或完成作业的基准。它们也被用于增强现实,以校准护目镜的里程计。这些标签在许多系列中都可用,但使用桌面打印机打印起来都很简单,例如图 9 中的标签。

Picture of six different AprilTag standards that NVIDIA Isaac ROS apriltag can detect.
图 9 。 AprilTags 代替二维码的例子
Screenshot shows that the Carter robot can detect two AprilTags in front of the camera. In this view the robot is also localized with NVIDIA Isaac ROS vslam and can generate a map with NVIDIA Isaac ROS nvblox.
图 10 。 Isaac ROS apriltag 检测演示

Isaac ROS 接近度分割

这个isaac_ros_bi3d该封装采用 Bi3D 模型,该模型已被优化以通过二进制分类来执行立体深度估计。该过程用于邻近度分割,这有助于识别某个范围内是否存在障碍物,并有助于在环境中导航时防止碰撞。

In this screenshot, Carter is making a 2D map starting from the obstacle detected with Isaac ROS proximity segmentation.
图 11 。 Isaac ROS 接近度分割

从 rviz 驱动 Carter

当读取 rviz 和 all 正在运行时, rviz 显示此输出。图 12 显示了卡特在地图和所有区块的中心位置。

Screenshot of rviz and command drive.
图 12 。使用 Isaac ROS vslam 和 Isaac ROS nvblox 构建地图的 rviz

在下面的视频中,您可以使用 rviz 在所有环境中驱动您的机器人,并查看由 nvblox 生成的地图。

视频 1 。 NVIDIA Orin NX 上的 HIL ,带有 Isaac ROS vslam 和 nvblox

您也可以使用 Foxglove 来测试模拟。

Screenshot shows gridded background and debugging panel for using Foxglove to visualize the output from NVIDIA Isaac ROS.
图 13 。使用 Foxglove 进行模拟测试

总结

在这篇文章中,我们向您展示了如何设置硬件在环并使用 NVIDIA Jetson Isaac ROS 模块进行测试,以及如何尝试 NVIDIA Isaac Sim 。请记住在您的桌面和 Jetson 模块之间使用有线连接。要显示所有遥测原始数据,您需要一个可靠的连接。

也可以随意测试刚刚添加到/isaac-ros_dev文件夹有关详细信息,请参阅位于的 readme . md 文件/NVIDIA-AI-IOT/isaac_demo.

有关详细信息,请参阅Isaac ROS webinar series.

 

 

Tags