基于FPGA打造ROS 2定义硬件 自适应机器人获得灵活大脑(上)

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

传统的机器人软件开发,是使用预定义的架构和约束条件在给定机器人CPU中进行功能程序设计。然而采用自我调整运算后,构建机器人行为则是在进行架构程序设计。透过采用自我调整运算,机器人专家能在运行中适配机器人运算系统的一个或多个属性(如它的确定性、功耗、安全态势或吞吐量)。

机器人专家花费大量时间,以运算图形式构建机器人行为,解决已知的机器人任务。他们经常使用现代的C++语言,透过高阶软件工程操作,构建复杂的实时系统。然而,他们并不是硬件工程师。机器人专家普遍缺乏硬件和嵌入式技术专业知识,因而妨碍了FPGA等自我调整运算技术的广泛采用。本文在既往研究的启发下,介绍机器人自适应运算的基础知识,并提出一种生成ROS 2软件定义硬件的架构。与过去的其他方法相比,本架构假定面对的是没有硬件或嵌入式技术专业知识的机器人专家,可说是以机器人专家为中心的角度提出的。

本文首先将指出开发机器人时选择正确运算平台的重要性,以及机器人内部软硬件之间的重要关系。然后使用工厂做模拟,简要讲解CPU、GPU、FPGA和ASIC的运算原理并回顾相关研究文献,发现FPGA因低功耗、高性能、确定性、可重配置能力、安全性和自适应特征,在用于机器人时具有显著的优势。此外,作者回顾了有关将ROS整合到FPGA平台的既往研究,发现这些研究都从硬件工程师的角度出发,导致做出的设计决策往往严重制约性能空间。出于这个原因,本文从ROS 2机器人专家的视角提出建议,即全面考虑ROS 2的硬件加速。这一视角能体现:优化流程中、流程内、网络内(含底层)的ROS 2运算图交互;以及加速ROS上运行的应用。

在此将提出一种能够实现上述目标的架构。该架构由一套ROS 2套件构成,能够将硬件加速整合到ROS工作空间。这种架构适用于各种平台(支持边缘、工作站、数据中心或云端)和各种技术(支持FPGA和GPU),并且能够轻松地移植到其他电路板上。该架构的核心组件已经在Apache 2.0授权下开源,对三种电路板的基本支持也已经过展示。此外,提供的架构还适用于各种应用,将来可以透过包含catkin扩展(非ament)轻松移植到ROS。

机器人软件系统
机器人是一种系统级的系统,它由感知周边环境的传感器、根据感知采取行动的致动器和负责处理数据的运算构成,用于对其应用做出连贯一致的响应。在很大程度上机器人技术是一种系统整合的艺术,从软件的角度和硬件的角度看皆是如此。以往的研究揭示,在机器人领域中多达70%的资源被用于整合,而不是用于开发最终应用。直到最近,随着较低端的工业机器人走向大规模普及化,机器人公司才开始在硬件基础上着重软件开发。尽管如此,机器人仍然是高度专业化的系统,旨在以高可靠性和高精度执行一系列任务。因此,机器人内部的硬件和软件能力之间的关系十分重要。

大多数机器人透过内部网络交换信息并满足时序要求。从这种意义上来讲,机器人属于一种时间敏感型网络。

机器人系统机载资源通常有限,包括内存、I/O和磁盘或运算功能,进而阻碍了系统整合进程,使之难以满足非结构化、动态和不断变化环境的实时性要求。随着机器人内部网络安全的发展,这一点更是如此,因为它经常会在使用寿命方面给机器人带来新的要求,这需要修改机器人的逻辑,进而对实时环路产生影响。因此,为机器人系统选择合适的运算平台至关重要,该平台既要简化系统整合、符合功耗限制,同时也要适应机器人应用不断变化的需求。

自我调整机器人是指那些能够成功应对新状况的机器人。要成为一个名副其实的自我调整机器人,必须具备以下三大基本特征中的至少一项:自我调整行为、自我调整机电一体化(Adaptive Mechatronics)、自我调整运算。拥有全部三大基本特征的机器人,则可被视为「全自我调整机器人」。

总而言之,机器人是能够以高可靠性和高精度执行一系列任务的高度专业化的系统。机器人内部的硬件和软件能力之间的关系十分重要。因此,为机器人系统选择合适的运算平台至关重要。该平台既要能够简化系统整合、符合功耗需求,同时也要能够适应机器人应用不断变化的需求。

自我调整机电一体化是一个业已存在数十年的概念。学者Clément Gosselin从机械的角度探讨这个课题,并将自适应系统定义为能够成功响应新状况的系统。此外,他还将该机器人机械系统定义为自适应系统,即透过高度依赖机械属性,能够适应外部的新状况。他还举出了各种纯粹依靠机械构造的自适应机器人系统的雏形示例,包括自我调整机器人手。此外,Ivanov也从纯机械角度研究自我调整机器人,在研究中他提议自我调整机器人应考虑使用自适应电力驱动装置,根据载荷改变电力驱动装置的输出。他将这种自我调整行为命名为自调节(Self-regulation),并认为自适应电力驱动装置能在机器人应用中实现高能效。透过采用传感器输入控制机制将这项研究延伸到机电一体化领域,产生了一项有关采用传感器回馈实现自我调整机器人控制的研究。示例包括视觉回馈或力传感器回馈等。

机器人的自我调整行为并非新颖概念。它可追溯到上世纪80年代中期Brooks提出的使用行为的机器人方法和他的包容式架构(Subsumption Architecture)。在上世纪90年代,不同的研究小组都在研究如何让机器人具备灵活应变能力和自我组织能力,进而提高机器人的自主性。他们往往是透过某种控制机制(使用某种形式的人工神经网络与机器人的传感器和致动器相连)来实现的。后来的Ziemke在其研究中总结了这种方法,提出了自我调整神经机器人的概念。这种概念创造性地率先使用「自我调整机器人」一词,指代用人工神经系统和自适应技术控制自主主体。最近,在《Robotic Fabrication in Architecture, Art and Design 2018》的机器人专辑中,作者援引「自我调整机器人」的说法,指透过添加感知和处理实现的完全自我调整行为(与Ivanov提出的「自我调整机器人」概念不同,后者主要关注机械构造角度)。根据原文,自我调整机器人是指能够透过加装传感器,适应不断变化的环境条件和材料特性,同时在一定程度上保持可预测性的机器人。与该研究同时代、同思路的Mayoral-Vilches等提出自主适配机器人的概念。利用硬件模块化和人工智能(指上世纪90年代的自我调整神经机器人趋势)节省构建这种机器人所需的工作量和时间。

自适应运算是自适应机器人第三大基本特征。对于机器人而言,它指的是机器人能够在运行过程中适配其运算系统的一个或多个属性(如确定性、功耗或吞吐量)。正如「What is Adaptive Computing?」中介绍的,FPGA是实现自我调整运算较理想的技术。FPGA最早由赛灵思(Xilinx)联合创始人之一Freeman在1984年提出,它为自我调整运算奠定了基础。FPGA兼具通用性和强大功能,同时效率高、成本低。因为在FPGA上实现其他处理架构,还可以实现并行处理,因此FPGA可以用于处理几乎任何机器人内部的任务。让FPGA成为自适应运算的另一特征在于,能够针对每一种机器人应用的需求专门客制化数据路径宽度和寄存器长度。如何在机器人中使用自我调整运算的示例包括为加速运动规画而设计的运算流水线、分布式同步或时间敏感型弹性通讯等。

何种平台更适合机器人运算
CPU和通用GPU(GPGPU)是两种广泛使用的商业运算平台,因为它们可用性高且具有通用性。这些运算技术的通用性,是机器人专家对其特别感兴趣的原因。但是通用性的代价是:
1.通用平台的固定架构难以适应新的机器人场景。追加功能往往需要追加硬件,这通常也意谓着要花时间对新的硬件进行新的系统整合度。
2.通用性必然导致其在时效上的缺陷,进而影响确定性形成(难以满足严格的实时性要求)。
3.其功耗通常比专用运算架构(如FPGA或ASIC)高一到两个数量级。
4.固定的、不具备灵活应变能力的架构,导致其对网络安全威胁和恶意行为的抵御能力减弱。熔毁(Meltdown)或者幽灵(Spectre)等网络攻击示例表明,如果缺乏重新配置数据流流水线的能力,运算平台最终将丧失安全性。

总体而言,CPU、GPU和ASIC等采用固定架构的组件,在为开发者提供优势的同时,也让其付出了代价。它们所缺乏的灵活应变能力,导致缺乏时效性、能耗增加。而且由于无法透过重新配置架构来提高硬件的抗风险能力,因此在日新月异的网络威胁面前更加脆弱。

.CPU工业模拟
图1是CPU的工业模拟,它将CPU理解成一系列车间,并且每个车间安排一位技能非常娴熟的工人。

图1 CPU的工业模拟

这些工人每人都能使用通用工具生产出几乎任何产品。每位工人按顺序使用不同的工具,将原材料制造为成品,一次生产一件产品。根据任务的性质,这种串行生产流程可能用到大量步骤。这些车间基本(不考虑快取的情况下)彼此独立,工人能全身心地完成不同任务,不必担心干扰或协调问题。尽管CPU十分灵活,但它的底层硬件是固定的。CPU仍然在基本的冯纽曼架构(或者更确切地说,储存程序计算机)上运行。数据从内存读取到处理器进行运算,然后写回到内存。基本上每个CPU都以串行方式运行,一次一个指令。同时架构以算术逻辑单元(ALU)为中心,每次运算都需要将数据输入到ALU并从ALU输出数据。

.GPU工业模拟
GPU也可以用车间和工人模拟,但它们的数量要大得多,并且工人的专业化程度也要高很多,如图2所示。

图2 GPU的工业模拟

GPU工人只能使用特定的工具,每人能完成的任务种类要少得多,但他们完成任务的效率非常高。GPU工人在重复做相同的少量任务时效率最高,尤其是当他们全体同时做同一件事情时。GPU解决了CPU的主要缺陷之一,即并行处理大量数据的能力。

虽然GPU比CPU拥有非常多的核心,但GPU采用的依然是固定的硬件架构。GPU的核心仍然包含某种类型的冯纽曼处理器。一条指令就能处理上千条或者更多数量的数据,尽管通常必须对同时处理的每一条资料进行相同的运算。原子处理元在数据向量上运算(而非CPU情况下的数据点),但仍然是每个ALU执行一条固定的指令。因此,用户仍然需要透过固定的数据路径,从内存将数据传递给这些处理单元。与CPU相似,GPU也采用固定硬件构建,对所有的机器人应用而言,其基本架构和数据流都是固定不变的。

.FPGA工业模拟
如果说CPU和GPU是工人按照顺序依次将输入加工成输出的车间,那么FPGA就是灵活的自我调整工厂,能够针对手中的具体任务客制化创设装配线和传送带(图3)。

图3 FPGA的工业模拟

这种灵活应变能力,意谓着FPGA架构师可以先构建工厂、装配线和工位,然后根据所需完成的任务对它们进行量身客制化,而不是使用通用工具。这些工厂中的原材料由分配在装配在线的工人小组逐步加工成成品。每名工人都重复地完成同样的任务,同时半成品透过传送带在工人间进行传递。这样能大幅提升生产力,并保证以最佳方式充分利用资源和电力。在这个模拟中,工厂是OpenCL加速核心,装配线是数据流流水线,工位是OpenCL运算功能。

.ASIC工业模拟
与FPGA类似,ASIC也建造工厂,但是ASIC中的工厂是最终形态,不能改动(图4)。换言之,这些ASIC内部只有纯机械,工厂内不存在人类认知,所有装配线和传送带是固定的,不允许变更自动化流程。ASIC的这种专用型固定架构赋予它们极高的能效,以及大量规模化生产下的最低价格。但遗憾的是,ASIC的开发通常需要耗时多年,而且不支持进行任何变更,这将会导致前期投入的资产很快跟不上未来生产力提升的变化。

图4 ASIC的工业模拟

FPGA在机器人中具有重要作用
CPU和GPU擅长控制流程运算。它们的控制驱动机器模型使用控制令牌,控制令牌提示应执行指令的时间。这赋予CPU和GPU完全的控制力,能轻松实现复杂的数据和控制结构。然而,这样做的代价是效率较低且难以毫无差错地准确程序设计。相反地,FPGA擅长数据流运算。它们遵循数据驱动机器的模式,一旦所有操作数可用就执行指令。这样的结果就是FPGA能释放巨大的并行性和吞吐量潜力,同时避免出错或产生副作用。

总体而言,作为CPU和GPU通用平台的替代技术,FPGA能够自我调整生成客制化运算架构,满足机器人的需求。因为拥有前所未有的灵活性,并能缩短设计周期,同时降低开发成本,FPGA已经在各类知名工业机器人制造商和医疗机器人应用中被大量采用。在「A Survey of FPGA- based Robotic Computing」中,读者可以看到一项有关使用FPGA的机器人运算的调研报告,该报告展示了FPGA在机器人应用领域的广泛适用性。以下是对FPGA特征的详细描述。

.自我调整
当同时需要控制流程和数据流时,CPU和GPU因为延迟和响应时间问题无法使用,而FPGA则能生成客制化运算架构,满足严格的实时要求和多重关键性要求。CPU和GPU所采用的固定运算架构,限制了它们的整体能力,包括响应时间和延迟。

.高性能
FPGA透过建立深度流水线化的数据路径(流运算)来提升运算性能,而不是像CPU和GPU那样依靠运算单元数量的增加。流运算的工作原理是一个运算单元产生的数据立即被流水线中的下一个运算单元处理,这样就免去了资料流通道中「提取-运算-储存(Fetch-compute-store)」的环节,便于数据产生者和消费者的运算操作,进而提升了性能。相反,由于存在架构固定、核心数量固定、指令集固定、内存架构僵化等多重限制,CPU和GPU只能以牺牲性能的方式进行运算。

.高能效
速度和功耗是数字电路的基本质量因子(Figure of Merit, FOM)。功率是表示数字电路频率和触发率的函数。FPGA透过并行和直接执行算法调节频率。FPGA保持较低频率和较低切换率(无指令获取)进行运算,但与CPU和GPU的等效运算性能相比,FPGA在更高的频率下具有更大的并行性优势,得以实现更好的功率指数和更高的能效。

.不浪费算力
FPGA借助灵活性实现芯片利用率最大化以提升性能。动态功能交换,其过去被称为「部分重配置(DFX)」,允许在CPU上运行的线程化应用分时共享FPGA。由此当给定线程正在处理FPGA生成的结果时,另一线程能使用FPGA进行不同的运算。

.可预测
FPGA帮助CPU和GPU卸除严格意义的实时运算,在运行时间上提供纳秒(ns)级预测能力,而且不会受到与GPU和CPU运算有关的软件变更或抖动的影响。

.可重配置
机器人算法仍处于高速演进发展中,FPGA能够按需进行动态重配置和更新。此外,还可以轻松地对FPGA进行重新程序设计以满足异构需求,实现CPU和GPU才能提供的通用能力。

.安全
FPGA能够按需灵活地构建安全电路,保障机器人数据流的安全。此外,FPGA能充分利用重配置功能修正其硬件架构的缺陷(避免硬件风险)。这样设计人员就能迅速解决在固定运算架构上难以解决或者无法解决的安全风险(避免未来的风险,例如「熔毁」和「幽灵」)。 然而也有观点认为,尽管FPGA是机器人专家心目中较理想的运算基干,但是它们提供的灵活性是以增加复杂性和所需的设计技能为代价的。「A Survey of FPGA- based Robotic Computing」列出了部分所需的额外技能。该研究团队认为只有能够全面综合地运用含多核心CPU、GPU和FPGA在内的所有技术,才能实现最优异的机器人性能。但随着技术进步,目前已有业者提供的整合式系统单芯片(SoC)解决方案,是将CPU通用软件的可程序设计能力与FPGA自适应硬件功能结合在同一组件中。

最新文章

最新文章