自適應(yīng)計(jì)算在機(jī)器人領(lǐng)域的應(yīng)用
序言
2021年 4 月, 賽靈思創(chuàng)新性地推出自適應(yīng)系統(tǒng)模塊(SOM)產(chǎn)品組合 Kria SOM。作為一種量產(chǎn)型小尺寸嵌入式板卡,該平臺經(jīng)濟(jì)實(shí)惠、開箱即用,最主要是賽里思通過工具創(chuàng)新,借助SOM賦能上百萬軟件開發(fā)者,使其可以獲益于賽靈思自適應(yīng)計(jì)算平臺的高性能和靈活性優(yōu)勢,而且可以使其將應(yīng)用部署時(shí)間縮短多達(dá) 9 個月。
“一石激起千層浪”, Kria 的出現(xiàn),在其所面向的廣泛的邊緣應(yīng)用領(lǐng)域引起積極的反響,而機(jī)器人應(yīng)用就是其中之一。
傳統(tǒng)的機(jī)器人軟件開發(fā),是基于預(yù)定義的架構(gòu)和約束條件在給定機(jī)器人 CPU 中進(jìn)行功能編程。然而采用自適應(yīng)計(jì)算后,構(gòu)建機(jī)器人行為則是在進(jìn)行架構(gòu)編程。通過采用自適應(yīng)計(jì)算,機(jī)器人專家能在運(yùn)行中適配機(jī)器人計(jì)算系統(tǒng)的一個或多個屬性(如它的確定性、功耗、安全態(tài)勢或吞吐量)。
然而,機(jī)器人專家并不是硬件工程師,他們普遍缺乏與嵌入式技術(shù)相關(guān)的專業(yè)知識。本文將從當(dāng)今熱門的?。⒆赃m應(yīng)機(jī)器人"概念入手,從 ROS 2 機(jī)器人專家的視角介紹自適應(yīng)計(jì)算,并提出一種能夠讓 FPGA 在 ROS 2 生態(tài)系統(tǒng)中起主要作用的架構(gòu)。這個架構(gòu)適用于多種平臺和多種技術(shù),并且便于移植。架構(gòu)的核心組件在 Apache 2.0 許可證下提供,為機(jī)器人專家充分運(yùn)用自適應(yīng)計(jì)算,實(shí)現(xiàn)軟件定義硬件鋪平了道路。
其中 :
● “連載一:什么是自適應(yīng)機(jī)器人”通過三大基本特征,征剖析自適應(yīng)機(jī)器人的概念產(chǎn)生、發(fā)展及特點(diǎn)
● “連載二:工業(yè)類比CPU/GPU,ASIC和FPGA,誰更適合機(jī)器人計(jì)算”通過工業(yè)車間操作流程進(jìn)行類比,形象展示不同處理器平臺對于機(jī)器人系統(tǒng)的權(quán)衡利弊
● “連載三:為什么 FPGA 能在機(jī)器人中起到重要作用” 介紹機(jī)器人自適應(yīng)計(jì)算的概念,對自適應(yīng)計(jì)算的核心技術(shù)與功能進(jìn)行總體介紹,并詳解 FPGA 在機(jī)器人應(yīng)用中發(fā)揮的作用,以及有關(guān)軟件定義硬件的概念
● “連載四:如何理解面向機(jī)器人的“軟件定義硬件””通過比較傳統(tǒng)機(jī)器人軟件編程和基于賽靈思自適應(yīng)解決方案平臺的編程模式進(jìn)行比較,介紹軟件定義硬件的實(shí)現(xiàn)方法
● “連載五:為什么是通過 ROS 2集成自適應(yīng)計(jì)算?”簡要介紹 ROS 2 及其與自適應(yīng)計(jì)算的淵源
● “連載六:自適應(yīng)計(jì)算平臺實(shí)現(xiàn) ROS 之路”則分享了前期業(yè)界在自適應(yīng)計(jì)算及在機(jī)器人操作系統(tǒng)上的相關(guān)研究。
● “連載七:用ROS 2 在機(jī)器人內(nèi)部集成自適應(yīng)計(jì)算的新架構(gòu)”介紹了本文提出的架構(gòu),以及如何利用這個架構(gòu)為 ROS 2 集成自適應(yīng)計(jì)算功能,并使其發(fā)揮重要作用。
機(jī)器人專家花費(fèi)大量時(shí)間,以計(jì)算圖形式構(gòu)建機(jī)器人行為,解決手里的機(jī)器人任務(wù)。他們經(jīng)常使用現(xiàn)代的 C++ 語言,通過高級軟件工程操作,構(gòu)建復(fù)雜的實(shí)時(shí)系統(tǒng)。然而,他們并不是硬件工程師。機(jī)器人專家普遍缺乏硬件和嵌入式技術(shù)專業(yè)知識,因而妨礙了 FPGA 等自適應(yīng)計(jì)算技術(shù)的廣泛采用。本文在既往研究的啟發(fā)下,介紹機(jī)器人自適應(yīng)計(jì)算的基礎(chǔ)知識,并提出一種生成 ROS 2 軟件定義硬件的架構(gòu)。與過去的其他方法相比,本文提出的方法是假設(shè)面向的是沒有硬件或嵌入式技術(shù)專業(yè)知識的機(jī)器人專家,是以機(jī)器人專家為中心的角度提出的。
本文首先總結(jié)了開發(fā)機(jī)器人時(shí)選擇正確計(jì)算平臺的重要性,以及機(jī)器人內(nèi)部軟硬件之間的重要關(guān)系。然后使用工廠做類比,簡要講解 CPU、GPU、FPGA 和 ASIC 的計(jì)算原理并回顧相關(guān)研究文獻(xiàn),發(fā)現(xiàn) FPGA 因低功耗、高性能、確定性、可重配置能力、安全性和自適應(yīng)特征,在用于機(jī)器人時(shí)具有顯著的優(yōu)勢。此外,本文也回顧了有關(guān)將 ROS 集成到 FPGA 平臺的既往研究,發(fā)現(xiàn)這些研究都從硬件工程師的角度出發(fā),導(dǎo)致做出的設(shè)計(jì)決策往往嚴(yán)重制約性能空間。出于這個原因,本文從ROS 2 機(jī)器人專家的視角提出了一個提出建議,即全面考慮 ROS 2 的硬件加速。這一視角能體現(xiàn):a) 優(yōu)化流程中、流程內(nèi)、網(wǎng)絡(luò)內(nèi)(含底層)的 ROS 2 計(jì)算圖交互;以及 b) 加速 ROS 上運(yùn)行的應(yīng)用。
本文提出一種能夠?qū)崿F(xiàn)上述目標(biāo)的架構(gòu)。該架構(gòu)由一套 ROS 2 包構(gòu)成,能夠?qū)⒂布铀偌傻?ROS 工作空間。這種架構(gòu)適用于各種平臺(瞄準(zhǔn)支持邊緣、工作站、數(shù)據(jù)中心或云)和各種技術(shù)(支持 FPGA 和 GPU),并且能夠輕松地移植到其他電路板上。該架構(gòu)的核心組件已經(jīng)在 Apache 2.0 許可證下公開,對三種電路板的基本支持也已通過演示。此外,提供的架構(gòu)還適用于各種應(yīng)用,將來可以通過包含 catkin 擴(kuò)展( 非 ament)輕松移植到 ROS。
連載二:工業(yè)類比CPU/GPU,ASIC和FPGA,誰更適合機(jī)器人計(jì)算
CPU 和通用 GPU (GPGPU) 是兩種廣泛使用的商業(yè)計(jì)算平臺,因?yàn)樗鼈兛捎眯愿咔揖哂型ㄓ眯?。這些計(jì)算技術(shù)的通用性,是機(jī)器人專家對其特別感興趣的原因。但是通用性的代價(jià)是:
1.通用平臺的固定架構(gòu)難以適應(yīng)新的機(jī)器人場景。追加功能往往需要追加硬件,這也往往意味著要花時(shí)間對新的硬件進(jìn)行新的系統(tǒng)集成度。
2.通用性必然導(dǎo)致其在時(shí)效上的缺陷,從而影響確定性形成(難以滿足嚴(yán)格的實(shí)時(shí)性要求)。
3.其功耗通常比專用計(jì)算架構(gòu)(如 FPGA 或 ASIC)高一到兩個數(shù)量級 (1)。
4.其固定的、不具備靈活應(yīng)變能力的架構(gòu),導(dǎo)致其對網(wǎng)絡(luò)安全威脅和惡意行為的抵御能力減弱。熔毀 ( Meltdown ) 或者幽靈 ( Spectre ) 等網(wǎng)絡(luò)攻擊示例表明,如果缺乏重新配置數(shù)據(jù)流流水線的能力,計(jì)算平臺最終將喪失安全性。
總體而言,CPU、GPU 和 ASIC 等采用固定架構(gòu)的器件,在其為開發(fā)者提供優(yōu)勢的同時(shí),也讓其付出了代價(jià)。它們所缺乏的靈活應(yīng)變能力,導(dǎo)致其缺乏時(shí)效性,能耗增加。而且由于它們無法通過重新配置架構(gòu)來提高硬件的抗風(fēng)險(xiǎn)能力,因此在網(wǎng)絡(luò)威脅面前更加脆弱。
CPU的工業(yè)類比
圖1是 CPU 的工業(yè)類比,它將 CPU 理解成一系列車間,并且每個車間安排一位技能非常嫻熟的工人。
圖1 CPU 的工業(yè)類比
這些工人每人都能使用通用工具生產(chǎn)出幾乎任何產(chǎn)品。每位工人按順序使用不同的工具,將原材料制造為成品,一次生產(chǎn)一件產(chǎn)品。根據(jù)任務(wù)的性質(zhì),這種串行生產(chǎn)流程可能用到大量步驟。這些車間基本(不考慮緩存的情況下)彼此獨(dú)立,工人能全身心地完成不同任務(wù),不必?fù)?dān)心干擾或協(xié)調(diào)問題。盡管CPU 十分靈活,但它的底層硬件是固定的。CPU 仍然在基本的馮諾依曼架構(gòu)(或者更確切地說,存儲程序計(jì)算機(jī))上運(yùn)行。數(shù)據(jù)從存儲器讀取到處理器進(jìn)行運(yùn)算,然后寫回到存儲器?;旧厦總€ CPU 都以串行方式運(yùn)行,一次一個指令。同時(shí)架構(gòu)以算術(shù)邏輯單元 (ALU) 為中心,每次運(yùn)算都需要將數(shù)據(jù)輸入到 ALU 并從 ALU 輸出數(shù)據(jù)。
CPU的工業(yè)類比
GPU 也可以用車間和工人類比,但它們的數(shù)量要大得多,并且工人的專業(yè)化程度也要高很多,如圖2所示。
圖2 GPU 的工業(yè)類比
GPU 工人只能使用特定的工具,每人能完成的任務(wù)種類要少得多,但他們完成任務(wù)的效率非常高。GPU 工人在重復(fù)做相同的少量任務(wù)時(shí)效率最高,尤其是當(dāng)他們?nèi)w同時(shí)做同一件事情時(shí)。GPU 解決了 CPU 的主要缺陷之一,即并行處理大量數(shù)據(jù)的能力。
雖然 GPU 比 CPU 擁有非常多的核,但 GPU 采用的依然是固定的硬件架構(gòu)。GPU 的核仍然包含某種類型的馮諾依曼處理器。一條指令就能處理上千條或者更多數(shù)量的數(shù)據(jù),盡管通常必須對同時(shí)處理的每一條數(shù)據(jù)進(jìn)行相同的運(yùn)算。原子處理元在數(shù)據(jù)矢量上運(yùn)算(非 CPU 情況下的數(shù)據(jù)點(diǎn)),但仍然是每個 ALU 執(zhí)行一條固定的指令。因此,用戶仍然需要通過固定的數(shù)據(jù)路徑,從存儲器將數(shù)據(jù)傳遞給這些處理單元。與 CPU 相似,GPU 也采用固定硬件構(gòu)建,對所有的機(jī)器人應(yīng)用而言,其基本架構(gòu)和數(shù)據(jù)流都是固定不變的。
FPGA 的工業(yè)類比
如果說 CPU 和 GPU 是工人按照順序依次將輸入加工成輸出的車間,那么 FPGA 就是靈活的自適應(yīng)工廠,能夠針對手中的具體任務(wù)定制創(chuàng)設(shè)裝配線和傳送帶(參見圖 3)。
圖3 FPGA 的工業(yè)類比
這種靈活應(yīng)變能力,意味著 FPGA 架構(gòu)師可以先構(gòu)建工廠、裝配線和工位,然后根據(jù)所需完成的任務(wù)對它們進(jìn)行量身定制,而不是使用通用工具。這些工廠中的原材料由分配在裝配線上的工人小組逐步加工成成品。每名工人都重復(fù)地完成同樣的任務(wù),同時(shí)半成品通過傳送帶在工人間進(jìn)行傳遞。這樣能大幅提升生產(chǎn)力,并保證以最佳方式充分利用資源和電力。在這個類比中,工廠是 OpenCL 加速內(nèi)核,裝配線是數(shù)據(jù)流流水線,工位是 OpenCL 計(jì)算功能。
ASIC的工業(yè)類比
與 FPGA 類似,ASIC 也建造工廠,但是 ASIC 中的工廠是最終形態(tài),不能改動(參見圖 4)。換言之,這些 ASIC 內(nèi)部只有機(jī)器人,工廠內(nèi)不存在人類認(rèn)知。這些裝配線和傳送帶是固定的,不允許變更自動化流程。ASIC 的這種專用型固定架構(gòu)賦予它們極高的能效,以及大批量規(guī)?;a(chǎn)下的最低價(jià)格。但遺憾的是,ASIC 的開發(fā)通常需要耗時(shí)多年,而且不支持進(jìn)行任何變更,這將會導(dǎo)致前期投入的資產(chǎn)很快跟不上未來生產(chǎn)力提升的變化。
圖4 ASIC 的工業(yè)類比
表1和表2總結(jié)的是將 ROS 和 ROS 2 分別實(shí)現(xiàn)在圖 1 所示一些自適應(yīng)計(jì)算平臺的既往研究。圖 4 所示的是歷年來最具相關(guān)性的成果。
圖 1 賽靈思自適應(yīng)計(jì)算解決方案
表1 在自適應(yīng)計(jì)算平臺上實(shí)現(xiàn) ROS 的既往研究
表2 有關(guān)在自適應(yīng)計(jì)算平臺上運(yùn)行 ROS 的既往研究
圖2 ROS 與 ROS 2 演進(jìn)變革
圖2反映出科研界對促進(jìn)自適應(yīng)計(jì)算發(fā)展的興趣越來越濃厚。從 ROS 的角度來看,可以將過去的研究分為三類:第一類研究提出幫助機(jī)器人專家充分利用硬件加速功能,將 ROS 計(jì)算圖的一部分卸載到可編程邏輯 (FPGA) 并進(jìn)行加速的工具和方法。第二類研究提出加速 ROS 底層的概念,特別是用網(wǎng)絡(luò)堆棧優(yōu)化節(jié)點(diǎn)間的網(wǎng)絡(luò)內(nèi)交互。根據(jù)"Real-time Linux communications: an evaluation of the linux communication stack for real- time robotic applications"的描述,網(wǎng)絡(luò)堆棧是 ROS 通信的瓶頸,"Acceleration of publish/subscribe messaging in ROS-compliant FPGA component"等研究對實(shí)時(shí)分布式系統(tǒng)有參考價(jià)值。第三類研究提出用自適應(yīng)計(jì)算優(yōu)化 ROS 計(jì)算圖。
除了在用戶空間層面加速特定應(yīng)用和 ROS 庫,值得一提的還有在流程間、流程內(nèi)乃至網(wǎng)絡(luò)內(nèi)的層面上加速 ROS 節(jié)點(diǎn)間的交互。由于機(jī)器人行為建立在 ROS 節(jié)點(diǎn)交互的結(jié)果之上,因此用于這個用途的加速器通過從總體上減少 ROS 和 ROS 2 計(jì)算圖數(shù)據(jù)流,顯著影響總時(shí)延。也就是說,在考慮 ROS 和 ROS 2 時(shí),必須應(yīng)用全面的硬件加速視圖。這種視圖能體現(xiàn):a) 對流程中、流程內(nèi)、網(wǎng)絡(luò)內(nèi)(含底層) ROS 計(jì)算圖交互的優(yōu)化;以及 b) 對 ROS 上運(yùn)行的應(yīng)用的加速。
要點(diǎn)總結(jié):在考慮 ROS 和 ROS 2 時(shí),必須應(yīng)用全面的硬件加速視圖。這種視圖能體現(xiàn):a) 對流程中、流程內(nèi)、網(wǎng)絡(luò)內(nèi)(含底層)的 ROS 計(jì)算圖交互的優(yōu)化;以及 b) 對 ROS 上運(yùn)行的應(yīng)用的加速。
根據(jù)圖 2 列出的既往研究,還可以得出另一個結(jié)論。過去的大多數(shù)方法主要都是從硬件工程師的視角解決自適應(yīng)計(jì)算與 ROS 的集成問題,其提出的大多數(shù)工具和方法都有一個先決條件,即最終用戶必須具備嵌入式流和硬件流的既有經(jīng)驗(yàn)。這往往意味著需要熟悉 RTL、HDL 和 HLS 等概念,或能熟練使用 Vivado? 設(shè)計(jì)套件或 Vitis? 統(tǒng)一軟件平臺等工具。類似地,部署到嵌入式目標(biāo)也需要用戶在一定程度上熟悉 Yocto,OpenEmbedded 以及相關(guān)工具。大多數(shù)從事 ROS 研發(fā)的機(jī)器人專家不具備這樣的能力。要集成自適應(yīng)計(jì)算,需要采用一種以 ROS 為中心的方法。硬件和嵌入式流程必須直接集成到 ROS 生態(tài)系統(tǒng)中,提供的體驗(yàn)與機(jī)器人專家在其桌面工作站上構(gòu)建 ROS 工作空間時(shí)的體驗(yàn)相似。在充分利用所有既往研究結(jié)果和經(jīng)驗(yàn)的基礎(chǔ)上,下一章節(jié)將提出一種以 ROS 為中心的架構(gòu),用于集成自適應(yīng)計(jì)算。
連載七:用ROS 2 在機(jī)器人內(nèi)部集成自適應(yīng)計(jì)算的新架構(gòu)
圖 1 所示的架構(gòu)將硬件加速集成到 ROS 2 中,同時(shí)堅(jiān)持以機(jī)器人專家為中心的理念。不要求熟悉非 ROS 工具(如 Vivado 或 Vitis 工具),或熟悉 OpenEmbedded 或 Yocto。此外,該架構(gòu)構(gòu)建在開放的標(biāo)準(zhǔn)之上,以 C++ 和 OpenCL 作為生成加速內(nèi)核的目標(biāo)計(jì)算語言。通過這種方法,機(jī)器人領(lǐng)域的大多數(shù)用戶都可以受益于硬件加速的功能。該架構(gòu)基于三大支柱構(gòu)建:ROS 構(gòu)建系統(tǒng) (ament)、ROS 元構(gòu)建工具 (colcon) 以及嵌入式固件 (firmware)。
圖1 ROS 2 硬件加速工作組 (HAWG) 初始架構(gòu)
第一個支柱是 ament ROS 2 構(gòu)建系統(tǒng)的擴(kuò)展。ament_vitis(1)通過一系列 CMake 宏和實(shí)用工具實(shí)現(xiàn)這些擴(kuò)展,將 Vitis 工具包含到 ROS 2 生態(tài)系統(tǒng)內(nèi)。提議的架構(gòu)是一種適用于幾乎任何加速技術(shù)的架構(gòu),即 ament_acceleration 抽象層從框架和軟件平臺(如 Vitis 工具)抽象構(gòu)建系統(tǒng)擴(kuò)展,為 FPGA 和 GPU 提供支持。作為替代加速技術(shù)的例子,圖 10 里包含了 ament_rocm,展現(xiàn)未來集成 ROCm5(2)軟件開發(fā)平臺的潛力,以實(shí)現(xiàn) HPC/超大規(guī)模級 GPU 計(jì)算。在后臺,ament_acceleration 的每次專門優(yōu)化都需要對應(yīng)的庫。例如,ament_vitis 依靠 Vitis 和賽靈思運(yùn)行時(shí) (XRT) 庫(3)。后者是一種開源的標(biāo)準(zhǔn)化軟件接口,用于簡化應(yīng)用代碼和加速內(nèi)核之間的通信。Vitis 工具和 XRT 完全對機(jī)器人工程師隱藏,不僅簡化了加速內(nèi)核的創(chuàng)建,而且還幫助機(jī)器人專家專注于計(jì)算圖像的改進(jìn)。通過提供猶如任何其他 ROS 封裝的體驗(yàn),以這種方式實(shí)現(xiàn)簡化加速內(nèi)核創(chuàng)建工作的目標(biāo)。圖 2 所示的代碼列表 1 展示的是使用 ament_vitis ROS 封裝的示例。宏 vitis_acceleration_kernel 提供靈活性,允許用戶無縫地?cái)U(kuò)展CMakeLists.txt 并選擇加速 ROS 封裝的哪些部分。
圖2 代碼列表 1
第二個支柱擴(kuò)展“colcon”ROS 元構(gòu)建工具,以集成硬件加速專用流。
第三個支柱是嵌入式固件。表達(dá)為 acceleration_firmware(1),第三個支柱旨在為硬件加速平臺提供固件專用工件,這樣就能針對這些工件編譯加速內(nèi)核,從而簡化流程并保持ROS 開發(fā)流程。提出的架構(gòu)在構(gòu)建時(shí)特意考慮到各種硬件加速平臺,可以支持邊緣(嵌入式)器件,以及適用于工作站、數(shù)據(jù)中心乃至云硬件加速的 PCIe? 加速器。平臺選擇通過在 ROS 工作空間資源(在 src/ 下)中加入特定的 acceleration_firmware 庫(acceleration_firmware_xilinx)來實(shí)現(xiàn)。構(gòu)建過程中的平臺選擇(本例中為賽靈思 Zynq UltraScale+? MPSoC ZCU102 平臺)通過 colcon mixins 來實(shí)現(xiàn)。通過這種方式,colcon build -build- base=build-zcu102 -install-base=install-zcu102 -merge-install -mixin zcu102 將為 ZCU102 硬件平臺構(gòu)建完整的 ROS 2 工作空間,交叉編譯 ROS 封裝,在運(yùn)行中視情況為 ZCU102 平臺生成內(nèi)核。所有中間步驟完全實(shí)現(xiàn)自動化,而且產(chǎn)生的 install-zcu102 目錄能直接在硬件中使用。
為了容納中間工件并在嵌入式流程中提供靈活性,acceleration_firmware 在 ROS 2 工作空間中引入新的子文件夾結(jié)構(gòu),即 <ros2-workspace-path>/acceleration/firmware/<platform> 路徑。
圖 3 是 acceleration_examples ROS 2 封裝構(gòu)建完成后,該架構(gòu)的工作方式預(yù)演。流程從 colcon 構(gòu)建 ROS 2 工作空間開始(圖 3,插圖編號 1)。無需使用特殊的旗標(biāo),只是對應(yīng)的封裝和硬件加速工作組 (HAWG) 基礎(chǔ)設(shè)施必須位于工作空間的 src 目錄內(nèi)。colcon 將為開發(fā)工作站架構(gòu)構(gòu)建每一個封裝。這其中包含 ament_vitis Cmake 宏(圖 3,插圖編號 1),該宏將一系列 CMake 擴(kuò)展部署到產(chǎn)生的本地 ROS 2 疊加工作空間中。
這些擴(kuò)展與本地 Vitis 安裝(1)(圖 3,插圖編號 3)相連,對ROS 2 包直接提供其功能。換句話說,ROS 2 包能從它們的 CMakeLists.txt 文件使用這些宏,并且使用賽靈思的硬件加速工具。
固件包(如 acceleration_firmware_kv260)是該架構(gòu)的重要組件。切換加速器時(shí),只需用適用于新的目標(biāo)加速器的包替換這個包即可。任意一個有效的固件包都應(yīng)包含固件工件和 CMake 邏輯,以便在 ROS 疊加工作空間中正確地為實(shí)現(xiàn)硬件加速目的而解包、部署和配置固件(圖 3,插圖編號 4)。此外,有效的固件包應(yīng)包含根文件系統(tǒng)、根文件系統(tǒng)的 sysroot(用于交叉編譯)或在構(gòu)建時(shí)自動生成 ROS 2 mixins(2) 的模板,以簡化嵌入式流程和其他方面。如需進(jìn)一步詳細(xì)了解,請參閱任何官方固件包的完整工件列表。
總之,首先調(diào)用 colcon 構(gòu)建(圖 3,插圖編號 3),讓 ROS 2 工作空間為硬件加速做好準(zhǔn)備并將文件部署在本地疊加內(nèi)(圖 3,插圖編號 2、3 和 4)。在此之后,從本地疊加第二次調(diào)用帶 -mixin<target-board> 旗標(biāo)的 colcon 構(gòu)建,將進(jìn)行交叉編譯(圖 3,插圖編號 51)并根據(jù)需要為目標(biāo)加速器硬件生成加速器(圖 3,插圖編號 52)。從這一點(diǎn)開始,colcon_acceleration 包有助于其余流程的進(jìn)一步自動化。這部分已超出本文所要探討的內(nèi)容。
下列三種不同的電路開發(fā)板已經(jīng)獲得基本支持:賽靈思 Zynq UltraScale+ MPSoC ZCU102,ZCU104 以及 Kria? KV260 視覺 AI 入門套件。
圖3 HAWG 初始架構(gòu)內(nèi) ROS 2 包之間的交互走查
要點(diǎn)總結(jié):在既往研究的啟發(fā)下,當(dāng)前研究提出一種以 ROS 2 為中心的架構(gòu),讓硬件加速在 ROS 生態(tài)系統(tǒng)中發(fā)揮關(guān)鍵作用。圖 12 體現(xiàn)的提議被模塊化成不同的 ROS 2 包,它們的構(gòu)建方式與任何其他 ROS 包一樣。這種架構(gòu)適用于各種平臺(瞄準(zhǔn)邊緣、工作站、數(shù)據(jù)中心或云提供支持),也適用于各種技術(shù)(支持 FPGA 和 GPU ),并且只需提供對應(yīng)的專業(yè) acceleration_firmware,就能輕松地將其移植到其他電路板。
表 4 總結(jié)了這里提出的方法與以前的工作的比較。
表4 ROS 與 ROS 2 各類自適應(yīng)計(jì)算集成方法比較表(含賽靈思 ament_vitis)
資源獲取:
1. 如需獲取 ament_vitis,請?jiān)L問鏈接:https://github.com/ros-acceleration/ament_vitis
2. 如需獲取 ROCm,請?jiān)L問鏈接:https://github.com/RadeonOpenCompute/ROCm
3. 如需獲取 XRT,請?jiān)L問鏈接:https://github.com/Xilinx/XRT
4. 如需獲取 acceleration_firmware,請?jiān)L問:https://github.com/ros-acceleration/acceleration_firmware。參見 acceleration_firmware_xilinx,查看專為賽靈思平臺優(yōu)化的具體示例。
評論