随着自主性提升、传感器数量与种类以及传感器融合算法的日益增加,机器人正变得越来越复杂。为了运行这些日益复杂的工作负载,必须利用硬件加速,使机器人应用能够以更快的速度和更高的效率运行更大规模的工作负载。
NVIDIA Isaac ROS 始终致力于为 ROS 开发者提供加速计算软件包和工具,用以开发高性能且节能的机器人应用。
NVIDIA 率先将加速计算纳入了 ROS 2,并不断改进更新版本。在过去的两年中,NVIDIA 已增加了 20 多个硬件加速 ROS 软件包,支持最新发行的 ROS 2。
团队去年与 Open Robotics 一起,在提供硬件加速器的计算平台上加入了适应和类型协商以提高 ROS 的性能。他们还实现了用于 Isaac ROS 的适应和类型协商—— NITROS(NVIDIA Isaac Transport for ROS)。
最新发布的 NVIDIA Isaac ROS Developer Preview 3(DP3)包括重要功能的更新和提升。
NVIDIA Isaac ROS Developer Preview 3
NVIDIA Isaac ROS DP3 加入了许多新的功能,让 ROS 社区能够从硬件加速中获益,主要包括:用于自动定位机器人的新地图定位器,带有人类检测功能的更新版 NvBlox、用于对 ROS 2 图像进行实际基准测试的全新 ROS 2 基准测试工具,以及开源 NITROS 软件包。
不到半秒就能在地图中自动定位
移动机器人(比如用于仓库或服务的机器人等)在开始进入空间之前,需要知道它们在地图中的初始位姿。向机器人提供这种初始位姿信息的最常见方法是手动设置,不过这种方法不仅要在整个过程中增加人工干预,还可能需要 30 秒以上的时间。
使用新的 Isaac ROS 地图定位 ROS 软件包,就不需要手动设置机器人的初始位置和方向。该软件包使用激光雷达测距扫描,可在不到半秒的时间内自动估计在所占网格地图中的位姿。定位器可以与平面激光雷达或 3D 激光雷达同时工作,并且可用于初始化移动机器人的导航。
这个 ROS 软件包通过 GPU 加速并利用 NITROS 创建没有通信开销的高效 ROS 流程,已经与 Nav2 集成。
图 1 NVIDIA Isaac ROS 地图定位软件包
在不到半秒的时间内自动计算出初始全局位姿
移除三维重建中的人类
Isaac ROS NvBlox 提供了一个用于三维重建的 GPU 加速软件包,并利用传感器观测数据绘制了机器人周边环境的代价地图。这些都对路径规划器生成无碰撞路径十分有用。
在人群中移动的机器人需要首先检测到人类,然后根据与他们的接近程度选择不同的路线。尽管人类应该成为代价地图的一部分(用来计算无碰撞路径),但不应该成为三维重建的一部分。三维重建应该只包含静态障碍物。
Isaac ROS DP3 版本所包含的 Isaac ROS NvBlox 软件包更新版本可以检测和划分人类,并提供人类的代价地图以避免发生碰撞。同样,它还提供用于三维重建的静态代价地图,以避免与静态物体发生碰撞。
图 2 Isaac ROS NvBlox 软件包
在三维重建过程中检测并移除人类
对 ROS 图像进行标准的基准测试
对 ROS 图像进行的基准测试应反映出在实际工作负载下的性能。对整个 ROS 图像(而不是一个特定的 ROS 节点)进行基准测试十分重要,该测试将包含 RCL 中指示实际性能的消息传输成本。
Isaac ROS DP3 包含 ROS 2 的开源基准测试工具。该工具不需要通过修改节点来度量结果,而且可以将输入的 rosbag 数据集标准化,以便对基准结果进行独立验证。
图 3 ROS 2 基准架构
该基准测试工具采用行业最佳实践,并专门为了测量实时机器人应用中的节点图吞吐量和延迟而进行了专业强化。亮点包括:
- 可靠的结果:在多秒内进行 N 次(默认 N=5 )自动性能测试,舍弃结果的最小和最大值以减少误差。基准结果在日志文件中报告,以便导入用户所选择的可视化工具中。
- 输入数据集:可在 CCv4.0 归属许可证下从 NGC 下载,r2b data set 2023 为 rosbag 的图像提供一致的输入,并且用户可根据需要添加额外的输入数据。
- 输入图像分辨率:各种计算硬件可根据机器人应用的不同以合适的分辨率处理图像。
- 输入和输出传输时间:RCL 发布和接收进程间和进程内消息的时间包含在测量结果中,能够准确表示机器人应用中的预期情况,避免了去除消息传递成本后的夸大结果。
- 输入和输出类型自适应:使用标准 ROS 类型输入数据或者使用类型适应和类型协商。
- 基准参数:用于测试的参数包括数据输入长度、发布速率和输入数据大小,并且可通过配置文件自定义。
- 吞吐量自动查找器:测量图像的峰值吞吐量,在 topic 下降到 <1% 的情况下,要求自动找到图像的峰值吞吐量。吞吐量自动查找器能够高效查找峰值吞吐量的输入数据发布速率。
- 实时延迟:根据固定的 topic 发布速率实时测量延迟。该数据显示以预期的固定发布速率向实时系统传输内容,吞吐量会显示机器人应用可能的峰值性能。
- 云原生:测试可以作为自动化测试的一部分在 Kubernetes 上执行,也可以作为现代软件开发的一部分在 CI/CD 每日夜间测试中执行。也可以在本地开发者系统上进行测试。
- 黑盒测试:在基准测试中直接使用所有性能测量工具,将节点图像作为二进制文件进行测试。这期间不会修改被测试的图像中的代码,并且可以用相同的工具以一种自然的方式进行包含从开源到专有解决方案的性能测试。
- 透明性:JSON 中的结果包含用于运行基准测试的参数,包括用于独立结果验证的输入 rosbag 的 MD5 算法的数据。
支持 NVIDIA Jetson 新增平台
Isaac ROS DP3 增加了对 NVIDIA Jetson 系列最新产品 NVIDIA Jetson Orin Nano 和 NVIDIA Jetson Orin NX 的支持。它还支持新发布的 NVIDIA Jetson Orin Nano 开发者套件。所有 Jetson Orin 和 Xavier 系列的模块和开发者套件均支持 Isaac ROS。
图 4 Isaac ROS DP3
支持 Jetson Orin 系列的模块和开发者套件
新版本还增加了对新发布的 NVIDIA Ada Lovelace architecture 和 NVIDIA GeForce RTX 40 GPU 的支持。
从此更新版本开始,NITROS 加速的 Isaac ROS 软件包中的大部分内容均已开源。作为 ROS 开发者,您现在可以扩展这些软件包、解决您遇到的任何问题并向 Isaac ROS 社区投稿。
总结
NVIDIA Isaac ROS Developer Preview 3 是一项重大更新,让 ROS 社区能够从硬件加速中获益,从而更轻松地构建高性能节能机器人应用。该版本的亮点主要包括:可对 ROS 2 图像进行实际基准测试的全新 ROS 2 基准测试工具;可对机器人进行自动定位的全新地图定位器;开源的 NITROS 软件包;以及带有人类检测功能的更新版 NvBlox。
其他资源:
- 报名参与网络研讨会:使用 ros2\\\_benchmark 测量机器人应用性能。(https://gateway.on24.com/wcc/experience/elitenvidiabrill/1407606/3998202/isaac-ros-webinar-series)
- 阅读 Isaac ROS 四月更新,了解更多细节和Isaac ROS DP3 中新增的功能。(https://discourse.ros.org/t/isaac-ros-april-update-open-source-orin-nano-lovelace-gpu-s/30755)
- 访问 GitHub 上的 Isaac ROS 并开始使用 Isaac ROS DP3。(https://github.com/NVIDIA-ISAAC-ROS)
- 在 NVIDIA Isaac ROS 论坛上与其他用户进行交流。(https://forums.developer.nvidia.com/c/agx-autonomous-machines/isaac/isaac-ros/600)