专栏是的,软件工程师也能玩转异构计算

看点:通俗易懂的教你如何充分发挥FPGA的性能,让自己的算法在HERO平台上快到飞起。

HERO是一套性能强大、配置灵活、接口丰富的异构计算平台,适合作为服务机器人和小型无人车等智能自主系统的运算核心。集成的英特尔酷睿i5/i7CPU和,英特尔Arria10FPGA芯片,能够实时处理大量数据并运行多种智能算法。对于算法研究者和软件工程师,如何才能充分发挥FPGA的性能,让自己的算法在HERO平台上快到飞起?本文将告诉你答案。

为什么要异构计算

完成不同的任务需要采用不同的芯片架构。对于要求高并行、低时延的计算和控制任务,如视觉处理、自主定位、运动规划和控制等,FPGA可以凭借强大的并行计算能力轻松应对。而CPU作为高速的串行处理器,从大吞吐量的例行性计算中解放出来,可专注于高层次的任务规划、决策和人机交互等。二者相辅相成,组成机器人的最强大脑。

事实上,人脑也是类似的工作机制。心理学家认为人脑中有两套系统,一套是完全自动、高度并行的,随时处理大量数据,得到高层次的抽象信息,好比FPGA的功能;另一套系统是你的“意识”,接收这些抽象信息,进行思考,类似CPU。例如人在开车时,识别车道、区分车与行人等任务根本无需占用大脑的思维带宽,老司机甚至能在谈笑间变道超车。这些都得益于强大又灵活的异构大脑。

HEROSDK

HEROSDK是与HERO平台配套的软件集合,可以帮助开发者快速打造基于HERO平台的机器人产品。HEROSDK目前包含了SLAM、智能导航、视觉重定位、运动规划、人物识别和语音交互等诸多机器人和无人车所需的功能模块。其中,SLAM、运动规划和部分深度神经网络模型已经实现了FPGA加速。整套系统基于ROS(RobotOperationSystem)构建,灵活便捷。FPGA逻辑设计则采用OpenCL编程模型,直接以C语言进行开发。另外,系统还配备了基于英特尔SGX技术开发的整套安全机制,确保机器人或无人车即便在被黑客远程入侵的情况下也不会做出危险动作。

HEROSDK的异构计算案例

下面就为大家介绍几个基于HEROSDK的异构计算案例,看看我们是如何更好的将运动规划、定位导航应用在智能机器人上:

1、异构计算案例1:利用FPGA加速的机器人运动规划

今年9月底召开的机器人领域 会议IROS上,尽管深度学习已成为热门话题,但排名首位的关键词仍是MotionPathPlanning。提到运动规划,目前最常用的是基于采样的算法,典型代表包括RRT、PRM及其变种。这类算法会在机器人的配置空间中随机采样,并将位置接近的有效采样点相连接,构成树状或图状结构,最终在其中找到一条连接起始点和目标点的通路。

采样法普遍面临的问题是无法确保路径的质量——采样越多,越有可能找到更短的路径,但计算所需的时间也越长。实际上,在整个路径规划过程中,绝大多数的时间用于判断采样点的有效性,这是因为有效性判断会涉及机器人自身的碰撞检测(如手和头是否相撞),以及机器人与环境之间的碰撞检测,而无论是机器人本体还是环境,一般都有非常复杂的模型。例如研究中常用的Baxter双臂机器人,仅躯干部分的模型便包含两万个三角形——这还是专为碰撞检测简化过的。而我们开发所用的Jedi双臂机器人,全身的模型包含近五十万个三角形。因此,我们首先将三角网格模型之间的碰撞检测任务选为FPGA加速的目标。

如上图所示,HERO平台采用MoveIt!作为运动规划的框架。OMPL是MoveIt!默认的规划算法库,也是开发基于采样的机器人运动规划算法的 框架。它在规划过程中会通过虚函数接口调用MoveIt!提供的碰撞检测方法,而实际的碰撞检测则由HCL(HEROCollisionLibrary)执行——这是专为HERO平台开发的具备FPGA加速功能的碰撞检测库,替换了MoveIt!原本使用的碰撞检测库FCL。为了充分发挥FPGA的性能,我们对OMPL和MoveIt!也做了修改,使之能够一次发起多个检测请求,从而减少CPU与FPGA交互的数量。最终针对自碰撞检测请求,HCL的处理速度达到了FCL的近两倍。

2、异构计算案例2:利用FPGA加速的SLAM算法

长期







































北京中科医院是骗子
北京中科医院是骗子



转载请注明:http://www.xxcyfilter.com/zyfl/8223.html