Hardware-in-the-Loop(硬件在环,HIL)测试是一种强大的工具,用于验证和核实包括机器人技术和计算机视觉在内的复杂系统的性能。本文探讨了 HIL 测试是如何通过 NVIDIA Isaac 平台应用于这些领域的。
NVIDIA Isaac 平台由 NVIDIA Isaac Sim 和 NVIDIA Isaac ROS 组成。前者是一个仿真器,为测试机器人算法提供仿真环境,后者是针对 NVIDIA Jetson 优化的硬件加速软件,其中包含机器学习、计算机视觉和定位算法。基于 NVIDIA Isaac 平台进行 HIL 测试,您可以验证和优化机器人软件栈的性能,从而获得更安全、更可靠、更高效的产品。
下文将讨论 HIL 系统的各个组件,包括 NVIDIA Isaac 平台的软件和硬件。此外还会研究它们如何协同工作,以优化机器人和计算机视觉算法的性能。我们也将探讨使用 NVIDIA Isaac 平台进行 HIL 测试的好处,并与其他测试方法进行比较。
NVIDIA Isaac Sim
基于 Omniverse 的 NVIDIA Isaac Sim 为测试机器人和计算机视觉算法提供了一个照片级真实、物理精准的虚拟环境,使用户能够在无损坏物理硬件风险的前提下对性能进行微调。同时,该仿真器也是高度可定制的,是测试各种场景和用例的理想选择。
您可以利用 NVIDIA Isaac Sim 创造更智能、更先进的机器人。平台提供了一套能够帮您构建复杂算法的工具和技术,使机器人能够执行复杂的任务。
通过使用 Omniverse Nucleus 和 Omniverse Connectors,NVIDIA Isaac Sim 可以轻松协作、共享和导入通用场景描述(USD)格式的环境和机器人模型。通过集成 Isaac ROS/ROS 2 接口、全功能的 Python 脚本,以及用于导入机器人和环境模型的插件,可以实现更加高效和有效的机器人仿真。
图 1. NVIDIA Isaac Sim 堆栈
您可以使用 ROS 或 ROS 2,又或是 Python 与 NVIDIA Isaac Sim 进行交互。运行 NVIDIA Isaac Gym 和 NVIDIA Isaac Cortex,生成合成数据,或者将其用于数字孪生。
NVIDIA Isaac Sim 在内部采用定制版本的 ROS Noetic,使用 roscpp 构建用于 ROS Bridge,与 Omniverse 框架和 Python 3.7 无缝协作。这个版本与 ROS Melodic 兼容。
NVIDIA Isaac Sim 目前支持 ROS 2 Foxy 和 Humble 的 ROS 2 Bridge,建议将 Ubuntu 20.04 用于 ROS 2。
了解更多详细信息,请参阅 NVIDIA Isaac Sim(https://developer.nvidia.com/isaac-sim)。
NVIDIA Isaac ROS
NVIDIA Isaac ROS 建立在机器人操作系统(ROS)之上,提供了一系列先进的功能和工具,帮您打造更智能、更强大的机器人。这些功能包括先进的绘图和定位,以及物体检测和跟踪。有关最新功能的更多信息,请参阅 Isaac ROS Developer Preview 3 (https://developer.nvidia.com/blog/build-high-performance-robotic-applications-with-nvidia-isaac-ros-developer-preview-3/)。
通过使用 NVIDIA Isaac 平台的 Isaac ROS,您可以创建复杂的机器人应用程序,精确地执行复杂的任务。凭借强大的计算机视觉和定位算法,Isaac ROS 对于任何希望创建高级机器人应用程序的开发人员来说都是一个有价值的工具。
图 2. Isaac ROS 和软件层
Isaac GEMs for ROS 是一套为机器人社区发布的 GPU 加速 ROS 2 软件包,是 NVIDIA Jetson 平台的一部分。
Isaac ROS 提供了一套用于感知及 AI 的软件包,以及被称为 NVIDIA Isaac Transport for ROS (NITROS) 的完整管线。这些软件包已经针对 NVIDIA GPU 和 Jetson 平台进行了优化,具有图像处理和计算机视觉的功能。
在这篇文章中,我们收录了如何为以下软件包运行 HIL 的示例:
NVIDIA Isaac ROS vslam
NVIDIA Isaac ROS apriltag
NVIDIA Isaac ROS nvblox
NVIDIA Isaac ROS Proximity segmentation
有关其他 Isaac ROS 软件包和最新 Isaac ROS Developer Preview 3 的更多信息,请参阅 NVIDIA Isaac ROS (https://developer.nvidia.com/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)
路由器
以太网电缆
图 3. 硬件设置
当在设备之间(如 NVIDIA Jetson 模块和电脑)传输大量数据时,通常首选使用有线以太网连接而不是 Wi-Fi。这是因为以太网连接提供了更快、更可靠的数据传输速率,对于实时数据处理和机器学习任务尤为重要。
在 Jetson 模块和电脑之间建立以太网连接,您需要按照以下步骤操作:
准备一根以太网电缆和一个带有免费以太网端口的路由器。
将电缆的一端插入设备的以太网端口。
将电缆的另一端插入路由器上其他未使用的以太网端口。
打开设备,等待其完全启动。
通过查找以太网图标,或使用如 ifconfig 或 ipconfig 的网络诊断工具。
当电脑和 NVIDIA Jetson 准备就绪并连接后,请按照 /NVIDIA-AI-IOT/isaac_demo (https://github.com/NVIDIA-AI-IOT/isaac_demo)进行操作。
运行 Demo 和驱动
第一步,在工作站上运行 NVIDIA Isaac Sim。使用 ./isaac_ros.sh 脚本运行一个 Carter 机器人的 Demo。
Carter 1.0 是一个机器人平台,使用了 Segway 的差速器底座、一个用于 3D 范围扫描的 Velodyne P16、一个 ZED 摄像头、一个 IMU 以及一个作为系统核心的 Jetson 模块,与定制的安装支架一起,为 NVIDIA Isaac 导航堆栈提供了一个强大而坚固的演示平台。
当仿真开始时,您可以看到 NVIDIA Isaac Sim 的立体相机进行输出。使用两个摄像头,机器人已经准备好接收在 NVIDIA Jetson 模块上运行的 Isaac ROS 的输入。
图 4. NVIDIA Isaac Sim 上的 Carter
在 Demo 中试用 Isaac ROS 软件包
在这篇文章中,我们探讨用于 AMR 机器人或轮式机器人的 NVIDIA Isaac ROS 软件包。我们会重点讨论用于定位、绘图和 AprilTag 检测的软件包,您也可以根据需要修改资源库,以测试其他需要使用的软件包。
Isaac ROS Visual SLAM
NVIDIA Isaac ROS Visual SLAM 采用了视觉里程计和同步定位与建图技术(SLAM)的结合。
视觉里程计用于估计摄像机相对于其起始位置的位置。该技术涉及分析两个连续输入帧或立体声对识别关键点集合的迭代过程。通过匹配这两个集合的关键点,可以确定摄像机的过渡和帧之间的相对旋转。
SLAM 是一种通过结合先前获得的轨迹来增强视觉 SLAM 准确性的方法。通过检测当前场景是否曾被看过(摄像机运动的循环),就可以优化先前估计的摄像机姿势。
图 5. Isaac ROS vslam 和 nvblox
图 6. Isaac ROS vslam 和 nvblox 运行状态
Isaac ROS nvblox
nvblox 软件包通过使用传感器观测数据,实时建立机器人周围环境的 3D 模型,路径规划人员可以使用该模型来创建无碰撞路径。软件包使用 NVIDIA CUDA 技术来加速这一过程,以获得实时性能。这个存储库包括用于 nvblox 库的 ROS 2 集成。
图 7. Isaac ROS NVblox 工作流程
图 8. Isaac ROS vs.lam 输出
按照 /NVIDIA-AI-IOT/isaac_demo (https://github.com/NVIDIA-AI-IOT/isaac_demo) 进行操作,Isaac ROS vslam 软件包即可在 Demo 上运行。
NVIDIA Isaac ROS apriltag
ROS 2 apriltag 软件包使用 NVIDIA GPU 来加速图像中的检测,并发布位姿、ID 和其他元数据。这个软件包可与 ROS 2 节点的 CPU AprilTag 检测相媲美。
这些标签是驱动机器人或操纵者从特定点开始动作或完成作业的基准。它们也被用于增强现实,以校准观察孔的测距。这些标签在许多系列中都可用,也易用桌面打印机打印,如图 9 中的标签。
图 9. AprilTags 代替二维码的例子
图 10. Isaac ROS apriltag 检测 Demo
Isaac ROS proximity segmentation
isaac_ros_bi3d 软件包采用了一个 Bi3D 模型,该模型经过优化,通过二元分类可执行立体深度评估。这个过程被用于 proximity segmentation,有助于识别某个范围内是否存在障碍物,并有助于在环境中导航时防止碰撞。
图 11. Isaac ROS proximity segmentation
使用 rviz 驱动 Carter
当读取 rviz 并全部运行时,rviz 显示了下图中的输出。图 12 显示了 Carter 在地图的中心和所有区块的位置。
图 12. 使用 Isaac ROS vslam 和
Isaac ROS nvblox 构建地图的 rviz
以下视频展示的是您可以使用 rviz 在所有环境中驱动机器人,并查看由 nvblox 生成的地图。
视频 1. NVIDIA Orin NX 上的 HIL,基于
Isaac ROS vslam 和 nvblox
您也可以使用 Foxglove 来测试仿真。
图 13. 使用 Foxglove 进行仿真测试
总结
在这篇文章中,我们向您展示了如何设置 HIL 和使用 NVIDIA Jetson Isaac ROS 模块进行测试,以及如何尝试 NVIDIA Isaac Sim。请在桌面电脑和 Jetson 模块之间使用有线连接。想要显示所有遥测的原始数据,您需要一个可靠的连接。
您也可以测试刚刚添加到 /isaac-ros_dev 文件夹的其他 NVIDIA Isaac ROS 软件包。更多详细信息,请参阅 readme . md 文件,位置是 /NVIDIA-AI-IOT/isaac_demo (https://github.com/NVIDIA-AI-IOT/isaac_demo)。
更多详细信息,请参阅 Isaac ROS 系列网络研讨会(https://gateway.on24.com/wcc/experience/elitenvidiabrill/1407606/3998202/isaac-ros-webinar-series)。