对于机器人而言,什么才最重要?

能够暴力弹跳的复杂机械装置?各类价格昂贵的传感器?或像EVE那样以萌神外形征服世界?

No,no,no!最重要的是:能在复杂的环境中完成特定工作,做一个有益于人民的机器人(好正的三观!)

为了实现这一崇高目标,机器人要眼观六路,耳听八方,行走天下,胸有丘壑。而这一切都离不开一颗强劲的大脑——高性能计算平台和高效算法。

通用处理器在计算性能和能效上越来越难以满足日益庞大、多样化的数据处理需求。借助由GPU、FPGA和其他智能引擎等协处理器与CPU一起组成的异构计算平台来提升计算性能,已成为当下学术界和工业界的研究热点。异构计算作为一种特殊的并行计算方式,能够根据每个计算子系统的结构特点为其分配不同的计算任务,在提高计算性能、能效比和实时性保障方面体现出传统架构所不具备的优势,逐渐在各种计算需求量较大的场合得到应用。针对数据中心场景,英特尔已经宣布要通过Xeon+FPGA平台和Xeon Phi系列产品来推动异构计算的实施。

那么,在我们所关心的机器人领域,情况又是如何?

一、机器人需要怎样的计算平台

机器人是复杂的机电一体化装置,综合运用了机械与精密机械、微电子与计算机、自动控制与驱动、传感器与信息处理以及人工智能等多学科的最新研究成果。

048ednc20170621 (机器人系统和系统中的传感器)

为了将这些成果融合起来,真正形成认知、感受和行动的能力,使机器人能够理解并应对真实的世界,准确完成操作任务,其搭载的计算平台需满足多种要求,包括:

1)感知能力:具备丰富的I/O接口,支持USB 3、UART、I2C等多种I/O协议,用以接收各类传感器数据。

2)控制能力:能够控制各个运动部位,如底盘、手臂、手指和头部,完成多个维度的动作,并且具备实时性和安全性方面的保障。

3)计算能力:既要应对大量数据的处理开销,更要满足各类智能算法巨大的计算需求。

4)功耗控制:要在满足以上能力的同时尽可能降低功耗,避免成为电池杀手。

5)易用性:必须提供友好的编程模型,使机器人的应用开发快速、准确。

现有的计算平台很难满足以上需求,搭建适用于机器人的异构计算平台已经迫在眉睫!CPU+FPGA的方案以其独特的优势进入我们眼帘。

二、什么是FPGA

自1985年问世以来,FPGA这种可编程逻辑器件凭借在性能、上市时间、成本、稳定性和长期维护方面的优势,在通信、医疗、工控和安防等领域占有一席之地。特别是近两年,随着云计算、高性能计算和人工智能的繁荣,拥有先天优势的FPGA更是得到了前所未有的关注。

FPGA由六部分组成:可编程输入/输出单元、基本可编程逻辑单元、嵌入式块RAM、丰富的布线资源、底层嵌入功能单元和内嵌专用硬核。英特尔首席执行官科再奇曾这样描述:“你可以把FPGA想象成一堆gate,能够随时编程。FPGA可以用作多个领域的加速器,例如在加密的同时进行面部搜索,并能在微秒内重新编程。其成本远低于大规模单个定制部件,并具有更高的灵活性。”

随着工艺的发展,技术的进步,FPGA的性能、指标都达到了新高度。新的Arria10系列FPGA 和 SoC 功耗比前一代 FPGA 和 SoC 低 40%,具有业界唯一的硬核浮点数字信号处理 (DSP) 模块,其速率高达每秒 1.5万亿次浮点运算 (1.5 TFLOPS)。

049ednc20170621 (FPGA的结构)

即便拥有上述优势,传统上FPGA的开发难度还是令诸多程序员望而却步。然而,随着OpenCL标准的出现,FPGA的应用门槛正在大幅降低。基于OpenCL的开发框架,用户可以摆脱传统的基于硬件描述语言(HDL)的开发流程,转而采用更高效、也更符合广大程序员背景的软件开发流程。

OpenCL 标准是第一个开放、免版税、统一的编程模型,能够在异构系统上加速算法实现,支持使用基于 C 的编程语言进行跨平台开发,例如 CPU、GPU、DSP和FPGA。支持OpenCL的异构系统一般通过PCle总线实现主机与硬件加速器(或者一个内核与另一个没有主机控制的内核)之间的通信,而这一切并不需要程序开发者的关注。相反,开发者只需了解OpenCL 定义的标准化的应用程序接口 (API)。如今,各个主流的深度学习框架都提供OpenCL的支持。英特尔正计划推出基于FPGA的CNN的多种网络实现。

050ednc20170621 (OpenCL的编程模型)

三、基于CPU+FPGA的异构计算平台

我们机器人系统实验室今年的工作重点便是为机器人搭建基于CPU+FPGA的异构计算平台。根据我们的经验,FPGA能够在一些关键的机器人应用中发挥极大的价值。例如,我们将机器人自身定位的算法(SLAM)移植到FPGA中执行,实现了比CPU高出十多倍的定位频率,从而允许机器人以双倍的速度运动,而不会“迷失方向”。

为了打造通用的机器人计算平台,我们选用了英特尔提供给移动平台使用的CPU和Arria 10系列的FPGA。两者通过高带宽,低延迟的I/O接口(如PCIe)进行通信。FPGA中可以包含多种加速模块。我们会提供一套通用接口,便于模块开发者包装、发布已有的设计。

051ednc20170621 (机器人的异构计算平台)

在软件层面,我们会构建加速模块的配置、安装和消息传递机制,便于第三方将所需的加速模块集成到应用中,并设计一些定位、控制、视觉识别和物体建模的常用模块,以及软件的集成包,供用户作为参考设计或直接选用。

有了如此智慧的大脑,机器人将变得更加耳聪,眼明,腿快,手稳,融入我们的日常生活,为人类提供更好的服务。

(来源:英特尔中国研究院)

20160630000123