【自适应计算在机器人领域的应用】连载七:用ROS 2在机器人内部集成自适应计算的新架构

机器人

532人已加入

描述

作者: Víctor Mayoral-Vilches 和 Giulio Corradi,赛灵思公司

连载七:用ROS 2 在机器人内部集成自适应计算的新架构

图 1 所示的架构将硬件加速集成到 ROS 2 中,同时坚持以机器人专家为中心的理念。不要求熟悉非 ROS 工具(如 Vivado 或 Vitis 工具),或熟悉 OpenEmbedded 或 Yocto。此外,该架构构建在开放的标准之上,以 C++ 和 OpenCL 作为生成加速内核的目标计算语言。通过这种方法,机器人领域的大多数用户都可以受益于硬件加速的功能。该架构基于三大支柱构建:ROS 构建系统 (ament)、ROS 元构建工具 (colcon) 以及嵌入式固件 (firmware)。

赛灵思

图 1: ROS 2 硬件加速工作组 (HAWG) 初始架构

第一个支柱是 ament ROS 2 构建系统的扩展。ament_vitis(1)通过一系列 CMake 宏和实用工具实现这些扩展,将 Vitis 工具包含到 ROS 2 生态系统内。提议的架构是一种适用于几乎任何加速技术的架构,即 ament_acceleration 抽象层从框架和软件平台(如 Vitis 工具)抽象构建系统扩展,为 FPGA 和 GPU 提供支持。作为替代加速技术的例子,图 10 里包含了 ament_rocm,展现未来集成 ROCm5(2)软件开发平台的潜力,以实现 HPC/超大规模级 GPU 计算。在后台,ament_acceleration 的每次专门优化都需要对应的库。例如,ament_vitis 依靠 Vitis 和赛灵思运行时 (XRT) 库(3)。后者是一种开源的标准化软件接口,用于简化应用代码和加速内核之间的通信。Vitis 工具和 XRT 完全对机器人工程师隐藏,不仅简化了加速内核的创建,而且还帮助机器人专家专注于计算图像的改进。通过提供犹如任何其他 ROS 封装的体验,以这种方式实现简化加速内核创建工作的目标。图 2 所示的代码列表 1 展示的是使用 ament_vitis ROS 封装的示例。宏 vitis_acceleration_kernel 提供灵活性,允许用户无缝地扩展CMakeLists.txt 并选择加速 ROS 封装的哪些部分。

赛灵思

图 2: 代码列表 1

第二个支柱扩展“colcon”ROS 元构建工具,以集成硬件加速专用流。

第三个支柱是嵌入式固件。表达为 acceleration_firmware(1),第三个支柱旨在为硬件加速平台提供固件专用工件,这样就能针对这些工件编译加速内核,从而简化流程并保持ROS 开发流程。提出的架构在构建时特意考虑到各种硬件加速平台,可以支持边缘(嵌入式)器件,以及适用于工作站、数据中心乃至云硬件加速的 PCIe® 加速器。平台选择通过在 ROS 工作空间资源(在 src/ 下)中加入特定的 acceleration_firmware 库(acceleration_firmware_xilinx)来实现。构建过程中的平台选择(本例中为赛灵思 Zynq UltraScale+™ MPSoC ZCU102 平台)通过 colcon mixins 来实现。通过这种方式,colcon build -build- base=build-zcu102 -install-base=install-zcu102 -merge-install -mixin zcu102 将为 ZCU102 硬件平台构建完整的 ROS 2 工作空间,交叉编译 ROS 封装,在运行中视情况为 ZCU102 平台生成内核。所有中间步骤完全实现自动化,而且产生的 install-zcu102 目录能直接在硬件中使用。

为了容纳中间工件并在嵌入式流程中提供灵活性,acceleration_firmware 在 ROS 2 工作空间中引入新的子文件夹结构,即 《ros2-workspace-path》/acceleration/firmware/《platform》 路径。

图 3 是 acceleration_examples ROS 2 封装构建完成后,该架构的工作方式预演。流程从 colcon 构建 ROS 2 工作空间开始(图 3,插图编号 1)。无需使用特殊的旗标,只是对应的封装和硬件加速工作组 (HAWG) 基础设施必须位于工作空间的 src 目录内。colcon 将为开发工作站架构构建每一个封装。这其中包含 ament_vitis Cmake 宏(图 3,插图编号 1),该宏将一系列 CMake 扩展部署到产生的本地 ROS 2 叠加工作空间中。

这些扩展与本地 Vitis 安装(1)(图 3,插图编号 3)相连,对ROS 2 包直接提供其功能。换句话说,ROS 2 包能从它们的 CMakeLists.txt 文件使用这些宏,并且使用赛灵思的硬件加速工具。

固件包(如 acceleration_firmware_kv260)是该架构的重要组件。切换加速器时,只需用适用于新的目标加速器的包替换这个包即可。任意一个有效的固件包都应包含固件工件和 CMake 逻辑,以便在 ROS 叠加工作空间中正确地为实现硬件加速目的而解包、部署和配置固件(图 3,插图编号 4)。此外,有效的固件包应包含根文件系统、根文件系统的 sysroot(用于交叉编译)或在构建时自动生成 ROS 2 mixins(2) 的模板,以简化嵌入式流程和其他方面。如需进一步详细了解,请参阅任何官方固件包的完整工件列表。

总之,首先调用 colcon 构建(图 3,插图编号 3),让 ROS 2 工作空间为硬件加速做好准备并将文件部署在本地叠加内(图 3,插图编号 2、3 和 4)。在此之后,从本地叠加第二次调用带 -mixin《target-board》 旗标的 colcon 构建,将进行交叉编译(图 3,插图编号 51)并根据需要为目标加速器硬件生成加速器(图 3,插图编号 52)。从这一点开始,colcon_acceleration 包有助于其余流程的进一步自动化。这部分已超出本文所要探讨的内容。

下列三种不同的电路开发板已经获得基本支持:赛灵思 Zynq UltraScale+ MPSoC ZCU102,ZCU104 以及 Kria™ KV260 视觉 AI 入门套件。

赛灵思

图 3:HAWG 初始架构内 ROS 2 包之间的交互走查

要点总结:在既往研究的启发下,当前研究提出一种以 ROS 2 为中心的架构,让硬件加速在 ROS 生态系统中发挥关键作用。图 12 体现的提议被模块化成不同的 ROS 2 包,它们的构建方式与任何其他 ROS 包一样。这种架构适用于各种平台(瞄准边缘、工作站、数据中心或云提供支持),也适用于各种技术(支持 FPGA 和 GPU ),并且只需提供对应的专业 acceleration_firmware,就能轻松地将其移植到其他电路板。

表 4 总结了这里提出的方法与以前的工作的比较。

赛灵思

表 4:ROS 与 ROS 2 各类自适应计算集成方法比较表(含赛灵思 ament_vitis)

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分