新闻中心

EEPW首页 > 业界动态 > 如何借助 ROS 2 实现基于 FPGA 的软件定义硬件

如何借助 ROS 2 实现基于 FPGA 的软件定义硬件

—— 自适应计算在机器人领域的应用
作者:时间:2021-11-12来源:电子产品世界收藏


本文引用地址:http://www.eepw.com.cn/article/202111/429606.htm

连载一:什么是自适应机器人?

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

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

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

自适应机器人是指那些能够成功应对新状况的机器人。要成为一个名副其实的自适应机器人,必须具备以下三大基本特征中至少一个:自适应行为、自适应机电一体化、自适应计算。拥有全部三大基本特征的机器人,则可被视为“全自适应机器人”。

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

自适应机电一体化 (Adaptive mechatronics)是一个业已存在数十年的概念。Gosselin 从机械的角度探讨这个课题,并将自适应系统定义为能够成功响应新状况的系统。此外,他还将自适应机器人机械系统定义为自适应系统,即通过高度依赖机械属性,能够适应外部的新状况。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 最早由赛灵思联合创始人之一 Freeman 在 1984 年提出,它为自适应计算奠定了基础。FPGA 兼具通用性和强大功能,同时效率高、成本低。因为在 FPGA 上实现其他处理架构,还可以实现并行处理,因此 FPGA 可以用于处理几乎任何机器人内部的任务。让 FPGA 成为自适应计算的另一特征在于,能够针对每一种机器人应用的需求专门定制数据路径宽度和寄存器长度。如何在机器人中使用自适应计算的示例包括为加速运动规划而设计的计算流水线、分布式同步或时间敏感型弹性通信等。有关机器人自适应计算的更多示例可参阅“A survey of FPGA-based robotic computing”和“A survey on FPGA-based sensor systems: towards intelligent and reconfigurable low-power sensors for computer vision, control and signal processing”。

连载三:为什么 FPGA 能在机器人中起到重要作用

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

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

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

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

●   高能效:速度和功耗是数字电路的基本品质因数 (FOM,figures of merit)。功率是表示数字电路频率和触发率的函数。 FPGA 通过并行和直接执行算法调节频率。FPGA 保持较低频率和较低切换率(无指令获取)进行计算,但与 CPU 和 GPU 的等效计算性能相比,FPGA 在更高的频率下具有更大的并行性优势,从而客户以实现更好的功率指数和更高的能效。

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

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

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

●   安全:FPGA 能够按需灵活地构建安全电路,保障机器人数据流的安全。此外,FPGA 能充分利用重配置功能修正其硬件架构的缺陷(避免硬件风险)。这样设计人员就能迅速解决在固定计算架构上难以解决或者无法解决的安全风险(避免未来的风险,例如“熔毁”和“幽灵”)。

然而也有观点认为,尽管 FPGA 是机器人专家心目中理想的计算基干,但是它们提供的灵活性是以增加复杂性和所需的设计技能为代价的。“A survey of FPGA- based robotic computing”列出了部分所需的额外技能。只有能够全面综合地运用含多核 CPU、GPU 和 FPGA 在内的所有这些技术,才能实现最优异的机器人性能。实际不然,赛灵思所提供这种集成式片上系统 (SoC) 解决方案,是将 CPU 通用软件的可编程能力与 FPGA 自适应硬件功能完美结合在了同一器件之中。

这些自适应 SoC 为机器人应用提供了软硬件兼有的高灵活性计算基础,并可提供高性能、低功耗、确定性、硬件可重配置、安全,以及自适应特性等价值。

要点总结:CPU 和 GPU 擅长控制流计算,而 FPGA 擅长数据流计算。自适应 SoC 解决方案为机器人应用提供了软硬件兼具的高灵活性计算基干,可提供低功耗、高性能、确定性、硬件可重配置、安全,以及自适应等特性。

连载四:如何理解面向机器人的“软件定义硬件”

术语“软件定义硬件software-defined hardware o”往往指将应用映射至 FPGA,从而通过软件创建运行时可重配置硬件。软件定义硬件旨在实现特定算法或计算的运行时效率最大化,是基于固定的冯诺依曼计算架构的 CPU 和 GPU或是成本高、同样功能不可变的 ASIC 的替代产品。因此,面向机器人的软件定义硬件,应被理解成能够通过软件重新编程和适配的运行时可重配置机器人硬件。.

传统的机器人软件编程是在预定义的架构和约束条件下,在给定机器人的 CPU 中进行功能编程。正如前文所述,一旦机器人遇到适配需求,就会导致复杂的系统集成操作。然而如果使用 FPGA,构建机器人的行为就是为解决任务的架构编程。机器人架构师可以纯粹从软件创建自己的硬件设计,并可以通过各种平台完成交付,如图1所示。

1636684009748687.png

图1 赛灵思自适应计算解决方案

对于机器人专家来说,有三种与 FPGA 技术交互的途径。首先是芯片级入手( chip-down)的方法(图 1a),既将片上系统 (SoC) 集成到定制设计的 PCB 中,以满足应用需求。这种方法最适合机器人制造商,是大批量和成本优化型批量的理想选择。第二种方法是采用系统模块 (SOM)(图 1b),将预装配电路板插入定制的承载电路板。SOM 帮助硬件工程师加快产品开发速度,将他们从计算平台上解放出来,把精力集中在更有价值的创新上。第三种方法是采用已经集成大量外设的完全装配好的电路板(图 1c)。对于高计算强度的运算而言,可直接插入工作站的完整电路板代表了最佳的权衡取舍。

要点总结:传统的机器人软件编程是在预定义的架构和约束条件下,在给定机器人的 CPU 中进行功能编程。而采用自适应计算后,构建机器人行为则是对架构的编程。

连载五:为什么是通过 ROS 2集成自适应计算?

机器人操作系统 (ROS) 是机器人应用开发的实际框架。在 Open Robotics 的维护和指导下,ROS 不仅是一种操作系统,也是一种框架。它由构建和管理机器人的不同工具构成,包括调试和可视化实用工具、编排工具、机器人库(如运动规划、导航、定位等),以及促进机器人系统开发的通信工具。

目前,原始版本的 ROS 文章已被引用 8,500 次以上,充分证明其在研究和学术领域得到广泛的认可,ROS 就诞生在这样的环境下。其主要目的是为开展前沿研发的用户提供所需的软件工具。在像 ROS-Industrial(简称 ROS-I)这样项目的支持下,ROS 在业界的热度持续增长。ROS-I 是一个开源计划,目的是将 ROS 软件的先进功能推广到工业应用。由于 ROS-I 联盟的带动,ROS 现已在业界成功部署。日前该联盟已拥有 80 多家成员,每年在欧洲、美国和亚洲举办会议,广聚数百位机器人专家和知名制造商。后者藉此机会,通过演示介绍他们自己的 ROS 驱动程序。

随着 ROS 超越学术层面开始进入工业和其他领域,ROS 的局限性也日渐凸显,如缺乏嵌入式支持和深度嵌入的原生支持,单机器人软件架构,无实时功能和缺乏安全性等。为了解决这些问题,Open Robotics 于 2014 年开始重新设计 ROS,由此 ROS 2 问世。ROS 2 通过将通信中间件与机器人逻辑分离,突破了大部分已知的局限性。具体而言,Open Robotics 选择“数据分发服务”(DDS) 作为初始通信中间件,并针对各种 DDS 解决方案构建适配器,同时对上层暴露 DDS 特性。尽管如此,ROS 核心层仍然保持免受通信中间件的影响。ROS 2 软件架构具体如图1所示:

1636684276841644.png

图1 软件架构

上层建立在中间件抽象层 (rmw) 上,后者负责将 ROS 抽象转译成具体的中间件。ROS 客户端库 (rcl) 不会暴露任何具体中间件的实现细节(如 DDS)。这样一来,rcl 保持免受中间件的影响,且能够轻松扩展到其他需要不同传输方式的应用。

ROS 拥有数千名活跃用户,目前已是规模最大的机器人专家群体。ROS 因研究而诞生,现已演进发展有十多年的时间,在各种应用领域得到广泛采用,并且还能服务于工业需求。

ROS 不仅提供工具、库和惯例,而且还拥有不断扩大的机器人专家社区。从概念上讲,ROS 在大多数方面围绕着被称为 ROS 计算图的抽象。计算图内的每个节点都能开展机器人计算,并通过用底层通信中间件实现的通用点对点数据总线与其他节点交换信息。数据总线内的通信通道按话题组织。因此,机器人的总体行为取决于计算图,而计算图可以实现在一部或多部计算机上(以分布方式)。这就完成了第二次抽象,也就是将计算图映射到机器人中可用的计算基干形成 ROS 数据层图。数据层图代表的是物理分组和连接,用于在计算图中实现建模行为。简单地说,其捕获的是机器人的物理现实,包括通信总线、机器人组件(包括传感器和/或致动器),以及计算图与现有机器人组件中可用的计算基干间的映射。

ROS 计算图可以涉及一个或多个机器人,并且本质上是模块化的,能够以分布式或集中式的方式实现。图 2 所示的是 ROS 计算图(图 2 的上部分)和数据层图(图 2 的下部分)。表 1 是对一些最重要的ROS概念的总结。

1636684299759999.png

(a) ROS 2 计算图:通过每个表示为节点的单独计算,为机器人总体行为建模的数据结构。

1636684329892163.png

(b) ROS 2 数据层图:表示用于在计算图中实现建模行为的物理分组和连接。

图2  ROS 抽象用于具备导航能力的 2 轮机器人

表1 ROS 最相关概念的总结

ROS 概念

 解读

计算图

通过每个表示为节点的单独运算,为机器人总体行为建模的数据结构。节点间按话题和其他抽象与其他计算节点通信。计算图不仅有助于将机器人行为可视化,而且也通过将每个机器人计算划分成节点,加快了设计流程。从电气工程师的角度来看,可以将计算图理解为机器人总体行为的原理图。

数据层图

表示在计算图中实现建模行为的物理分组和连接。从电气工程的角度来看,如果计算图映射的是原理图,那么数据层图对应的就是布局图。

节点

执行计算的流程。ROS 设计旨在以精细粒度级实现模块化;机器人控制系统通常由多个节点构成。节点执行任意逻辑都会影响到机器人的总体行为。

话题

数据总线(底层通信通道)内的连续数据流。数据总线上的节点可通过发布/订阅通信范式来交换信息。话题一般用于连续数据流(传感器数据、机器人状态等)。它们通常表示为多对多连接。数据可以随时在独立于任意发送方/接收方的情况下发布和订阅。

服务

数据总线上针对具体机器人任务的按需阻塞连接。在计算图中作为 RPC 实现。主要用于需要特定数据的较快速任务。在语义学上,用于处理请求。

行动

数据总线上的按需非阻塞连接,通常用于移动机器人的任何离散行为,或是运行较长时间但在执行过程中提供反馈的任何离散行为。行动可以是预先考虑过的。广泛用于启动较低级别的控制任务。在语义学上,用于现实世界的行动。

要点总结: ROS 计算图是一种为机器人总体行为建模的数据结构,而数据层图捕获的则是机器人组件(用于在计算图中实现建模行为)的物理分组和连接。



关键词:

评论


相关推荐

技术专区

关闭