机器人“芯”脏革新,FPGA为啥这么牛
图7 CNN性能对比 (单位:毫秒)
图8展示了FPGA与CPU在执行CNN时的耗能对比。在执行一次CNN运算,使用CPU耗能36焦,而使用FPGA只耗能10焦,取得了3.5倍左右的节能比。与SLAM计算相似,通过用FPGA加速与节能,让深度学习实时计算更容易在移动端运行。
图8 CNN能耗对比 (单位:焦)
FPGA与ROS机器人操作系统的结合
上文介绍了FPGA对感知算法的加速以及节能,可以看出FPGA在感知计算上相对CPU与GPU有巨大优势。本节介绍FPGA在当今机器人行业被使用的状况,特别是FPGA在ROS机器人操作系统中被使用的情况。
机器人操作系统(ROS),是专为机器人软件开发所设计出来的一套操作系统架构。它提供类似于操作系统的服务,包括硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间消息传递、程序发行包管理,它也提供一些工具和库用于获取、建立、编写和执行多机融合的程序。ROS的首要设计目标是在机器人研发领域提高代码复用率。ROS是一种分布式处理框架(又名Nodes)。这使可执行文件能被单独设计,并且在运行时松散耦合。这些过程可以封装到数据包(Packages)和堆栈(Stacks)中,以便于共享和分发。ROS还支持代码库的联合系统,使得协作亦能被分发。ROS目前被广泛应用到多种机器人中,逐渐变成机器人的标准操作系统。在2015年的DARPA Robotics Challenge比赛中,有过半数的参赛机器人使用了ROS。
随着FPGA技术的发展,越来越多的机器人使用上了FPGA,在ROS社区中也有越来越多的声音要求ROS兼容FPGA。一个例子是美国Sandia国家实验室的机器人手臂Sandia Hand。如图9所示,Sandia Hand使用FPGA预处理照相机以及机器人手掌返回的信息,然后把预处理的结果传递ROS的其它计算Node。
图9 ROS在Sandia Hand中对FPGA的支持
为了使ROS与FPGA之间可以连接,Sandia Hand使用了Rosbridge机制。 Rosbridge通过JSON API来连接ROS与非ROS的程序。比如一个ROS的程序可以通过JSON API连接一个非ROS的网络前端。在Sandia Hand的设计中,一个ROS Node通过JSON API连接到FPGA计算器,FPGA传递数据以及发起计算指令,然后从FPGA取回计算结果。
Rosbridge为ROS与FPGA的联通提供了一种沟通机制,但是在这种机制中,ROS Node并不能运行在FPGA上,而且通过JSON API的连接机制也带来了一定的性能损耗。为了让FPGA与ROS更好的耦合,最近日本的研究人员提出了ROS-Compliant FPGA的设计,让ROS Node可以直接运行在FPGA上。如图10所示,在这个设计中,FPGA了实现一个输入的接口,这个接口可以直接订阅ROS的topic,使数据可以无缝连接流入FPGA计算单元中。另外,FPGA上也实现了一个输出接口, 让FPGA上的ROS Node可以直接发表数据,让订阅这个topic的其他ROS Node可以直接使用FPGA产出的数据。在这个设计中,开发者只要把自己开发的FPGA计算器插入到ROS-compliant的FPGA框架中,便可以无缝连接其他ROS Node。
图10 FPGA成为ROS的一部分
最近跟ROS的运营机构Open Source Robotics Foundation沟通中发现,越来越多的机器人开发者使用FPGA作为传感器的计算单元以及控制器,对FPGA融入ROS的需求越来越多。相信ROS很快将会拿出一个与FPGA紧密耦合的解决方案。
展望未来
FPGA具有低能耗、高性能以及可编程等特性,十分适合感知计算。特别是在能源受限的情况下,FPGA相对于CPU与GPU有明显的性能与能耗优势。除此之外,由于感知算法不断发展,我们需要不断更新机器人的感知处理器。相比ASIC,FPGA又具有硬件可升级可迭代的优势。由于这些原因,笔者坚信FPGA在机器人时代将会是最重要的芯片之一。由于FPGA的低能耗特性,FPGA很适合用于传感器的数据预处理工作。可以预见,FPGA与传感器的紧密结合将会很快普及。而后随着视觉、语音、深度学习的算法在FPGA上的不断优化,FPGA将逐渐取代GPU与CPU成为机器人上的主要芯片。
- 更多机器人参与日本地震搜救工作(03-28)
- e络盟引入欧姆龙E2A系列柱状距离传感器(05-16)
- 工业机器人与生产转型间的关系剖析(06-19)
- 工业机器人大规模应助力改变固有体系(07-29)
- 钕铁硼传统旺季 检测机器人将派上大用场(11-12)
- 大数据——Google机器人个性专利(04-15)