機(jī)器人系統(tǒng)實(shí)驗(yàn)室的工作重點(diǎn)之一就是為機(jī)器人研究搭建基于CPU+FPGA的異構(gòu)計(jì)算平臺(tái)。引入異構(gòu)平臺(tái),是由于機(jī)器人研究需要同時(shí)引入時(shí)間和空間計(jì)算模型。CPU作為時(shí)間計(jì)算模型的完美代表,指令按時(shí)間順序一條一條執(zhí)行, 可以實(shí)現(xiàn)靈活多變的控制;加速器則更像一種空間計(jì)算模型,利用空間的并行從而一次性完成大量數(shù)據(jù)處理,使復(fù)雜的計(jì)算得到加速處理。在這樣一個(gè)充滿(mǎn)挑戰(zhàn)的實(shí)驗(yàn)室,機(jī)器人大腦“HERO”誕生了!
硬件介紹
HERO平臺(tái)全稱(chēng)為Heterogeneous Extensible Robot Open Platform,是英特爾中國(guó)研究院專(zhuān)為智能機(jī)器人(包括服務(wù)機(jī)器人、醫(yī)療機(jī)器人、自動(dòng)駕駛汽車(chē)等)打造的一套低功耗、高性能、體積小的異構(gòu)系統(tǒng)平臺(tái)方案。在此方案中,CPU作為控制中心, 與FPGA和其他專(zhuān)用加速器芯片(如Movidius的VPU)搭配,能夠提供高效的性能。整套HERO硬件系統(tǒng)采用了英特爾酷睿™系列CPU,搭載英特爾Arria 10 GX系列1150型FPGA作為異構(gòu)加速器。
HERO平臺(tái)的硬件結(jié)構(gòu)
英特爾酷睿™是英特爾主流架構(gòu)的CPU系列。與傳統(tǒng)PC相比,在辦公、游戲和視頻處理方面都有了很大的性能提高,并且具有豐富的IO功能,提供了各種高速、低速接口。HERO平臺(tái)搭載了一塊第七代酷睿™i5-7600T , 具體性能指標(biāo)參考如下:
對(duì)于FPGA,HERO平臺(tái)選用了英特爾最新產(chǎn)品——Arria 10 GX 1150。這款產(chǎn)品資源豐富:內(nèi)部集成了1150K個(gè)邏輯單元,可以作為算法處理的基本功能單元;還集成了單精度浮點(diǎn)乘法器和加法器硬核各1518個(gè),運(yùn)算實(shí)力暴增,最高速率可達(dá)1.366TFLOPS;綜合片內(nèi)豐富的存儲(chǔ)布線(xiàn)資源以及對(duì)外高速內(nèi)存接口,保證了FPGA在機(jī)器人控制算法以及神經(jīng)網(wǎng)絡(luò)推理端的性能加速。
CPU和FPGA之間通過(guò)第三代8通道PCIe高速接口進(jìn)行通信,帶寬最高可以達(dá)到80Gbps。目前整套系統(tǒng)采用緊湊型主板疊加全高半長(zhǎng)PCIe板卡,保證其物理尺寸控制在17cm(長(zhǎng))x17cm(寬)x9cm(高)以?xún)?nèi),嬌小玲瓏的身材能解決機(jī)器人空間體積受限的難題,并在性能和功耗兩者之間取得了很好的平衡,在盡可能實(shí)現(xiàn)性能最大化的前提下將功耗最小化,整機(jī)功耗最高預(yù)算不超過(guò)90W。和采用GPU作為加速器、動(dòng)輒消耗幾百瓦功耗的系統(tǒng)相比起來(lái),HERO平臺(tái)的功耗是不是低到讓你超級(jí)興奮?
眼尖的你一定發(fā)現(xiàn)了A10 FPGA PCIe加速卡是由兩層電路板疊加構(gòu)成。沒(méi)錯(cuò),你說(shuō)得對(duì)! FPGA加速卡由FPGA核心模塊和IO模塊兩部分組成。核心模塊由FPGA和高速DDR4內(nèi)存組成,是系統(tǒng)最核心的組成部分。其大小為12cm(長(zhǎng))x8cm(寬),對(duì)外通過(guò)FMC連接器提供約200個(gè)可配置IO,功能可由用戶(hù)自定義。這樣FPGA核心模塊就可以通過(guò)連接IO模塊對(duì)外提供客戶(hù)訂制的外設(shè)接口,比如I2C、I2S、串口、USB、網(wǎng)口等,從而接入機(jī)器人使用的傳感器和執(zhí)行單元,并完成相互間的通信。
設(shè)計(jì)Flow支持
傳統(tǒng)的FPGA編程方式令多數(shù)軟件工程師望而卻步,而HERO平臺(tái)為大家?guī)?lái)了福音。除了傳統(tǒng)的專(zhuān)業(yè)編程模型,HERO平臺(tái)專(zhuān)門(mén)定制的BSP(Board Support Package)還支持基于OpenCL的flow開(kāi)發(fā),給廣大的算法和軟件工程師提供了友好的編程接口。
OpenCL系統(tǒng)開(kāi)發(fā)示意圖
上圖顯示了一個(gè)定制化系統(tǒng)要支持OpenCL Flow所需的軟件以及FPGA硬件支持?梢钥闯觯瑢(duì)于一個(gè)用戶(hù)定制化的SDK,在host系統(tǒng)端需要提前定義好內(nèi)存映射,而在FPGA端則需要提供完整的數(shù)據(jù)通路以及控制通路,才能支持OpenCL Kernel的實(shí)時(shí)動(dòng)態(tài)加載和運(yùn)行。
作為定制化的SDK平臺(tái),為了支持OpenCL Flow,HERO平臺(tái)上移植了完整的FPGA板級(jí)支持包(Board Support Package),作為HERO SDK的一個(gè)組成部分提供給用戶(hù),F(xiàn)有HERO SDK BSP的FPGA邏輯部分主要包括高速通信接口PCIe IP核、內(nèi)存DMA控制器、片外高速內(nèi)存DDR4接口,以及和FPGA內(nèi)部模塊之間的通信接口。如果用戶(hù)想增加FPGA與外部接口之間的通訊, HERO平臺(tái)也有相應(yīng)的BSP參考設(shè)計(jì),能夠指導(dǎo)客戶(hù)更好、更快地實(shí)現(xiàn)各種靈活多變的外部接口。
HERO平臺(tái)優(yōu)點(diǎn)
這一長(zhǎng)串的專(zhuān)業(yè)介紹是不是讓你有點(diǎn)眼(tou)花(yun)繚(nao)亂(zhang)?別著急,這就為大家總結(jié)HERO平臺(tái)的優(yōu)勢(shì):
體積小巧:設(shè)計(jì)緊湊,體型小巧,能夠被輕松地集成到各類(lèi)機(jī)器人或者車(chē)上。如果應(yīng)用只需要FPGA做算法加速,則平臺(tái)的尺寸可以做到與核心模塊差不多大,整個(gè)設(shè)計(jì)會(huì)更小。如果需要引出IO接口,用戶(hù)也可以根據(jù)需要對(duì)IO板量體裁衣。
靈活度高:精心設(shè)計(jì)了雙板結(jié)構(gòu)——核心板和IO板,兩板之間互相獨(dú)立。核心板主要負(fù)責(zé)算法和控制,IO板管理各種傳感器,這種設(shè)計(jì)的好處在于方便不同用戶(hù)進(jìn)行裁剪設(shè)計(jì),F(xiàn)PGA的選型可以根據(jù)算法的復(fù)雜度進(jìn)行調(diào)配,IO的配置也可以根據(jù)應(yīng)用的要求進(jìn)行裁剪。你的機(jī)器人你做主,你的IO你說(shuō)了算!算法實(shí)現(xiàn)不滿(mǎn)意,可以改;IO連接不滿(mǎn)意,可以改;系統(tǒng)結(jié)構(gòu)不滿(mǎn)意,還可以改。是不是很贊?
接口豐富:HERO平臺(tái)提供了約200個(gè)IO接口供你自由選擇,向上支持高達(dá)16Gbps的高速串行接口,向下也能hold住各種低速接口。對(duì)于視覺(jué)、控制、自動(dòng)駕駛等應(yīng)用都可以支持。
如果你什么都不想改,就想直接拿來(lái)用,也沒(méi)問(wèn)題!HERO平臺(tái)提供的基礎(chǔ)IO模塊,已經(jīng)貼心地為你設(shè)計(jì)好了各種可能用到的高速 or低速、常用or不常用、標(biāo)準(zhǔn)or不標(biāo)準(zhǔn)的接口,基本能滿(mǎn)足你的所有想法。聽(tīng)起來(lái)是不是很心動(dòng)?
HERO平臺(tái)應(yīng)用
HERO平臺(tái)的應(yīng)用前景廣闊。以服務(wù)機(jī)器人為例,其主要作用是幫助人完成任務(wù)和動(dòng)作。為了實(shí)現(xiàn)這一目標(biāo),研發(fā)人員需要在機(jī)器人上實(shí)現(xiàn)各種復(fù)雜的應(yīng)用控制技術(shù),包括視覺(jué)、定位、運(yùn)動(dòng)、抓取等。FPGA可以在這些關(guān)鍵應(yīng)用上發(fā)揮極大的價(jià)值,讓復(fù)雜算法的處理變得高效而實(shí)時(shí),帶給用戶(hù)良好的體驗(yàn)。
此外,HERO平臺(tái)上移植的同步定位與地圖構(gòu)建(SLAM)算法,比單獨(dú)使用CPU高出了十幾倍的頻率,讓機(jī)器人不再“迷失方向”。平臺(tái)還針對(duì)機(jī)器人的雙臂運(yùn)動(dòng)規(guī)劃集成了現(xiàn)今最廣泛的抓取平臺(tái)——MoveIt!,并在此基礎(chǔ)上進(jìn)行了運(yùn)動(dòng)規(guī)劃、碰撞檢測(cè)等核心難題的研究,實(shí)現(xiàn)了機(jī)器人實(shí)時(shí)、高精度的運(yùn)動(dòng)規(guī)劃 。