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

作者: 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)

ACR10R外置开合式互感器 单相导轨式多功能电力仪表用于光伏逆变
高通公司将投资73亿卢比,购买Reliance Jio公司0.15%的股份
photonicSENS已与Qualcomm(高通)达成合作
IBM公司介绍新款多功能处理器Wire-Speed Powe
宝马加快了全新3系国产化的进程 预计明年在铁西工厂正式投产
【自适应计算在机器人领域的应用】连载七:用ROS 2在机器人内部集成自适应计算的新架构
基于STM32F407的FreeRTOS学习笔记(5)
有哪些睡觉可以使用的降噪耳机?睡眠降噪蓝牙耳机推荐
数字式时间继电器抗干扰的方法
晶圆级CSP的装配工艺流程
快充充电器为什么可以快充
我国传感器产业发展仍面临诸多挑战
经济寒冬将至?科技创投陷“钱荒”意味着什么?
土壤测定仪的功能特点
三元锂与氢燃料电池对比 哪个更安全
LED巨头Lumileds换帅,Jonathan Rich博士担任新CEO
惠及消费类产品的智能线性执行器
利用PLC及特殊模块实现电子束焊接机专用控制电路的设计
IT领袖Cognizant让人工智能超越爬山
爆苹果将大规模推荐迄今最便宜的MacBook