作者:VíctorMayoral-Vilches跟GiulioCorradi,賽靈思公司
連載七:用ROS2正在機(jī)器人外部集成自順應(yīng)計較的新架構(gòu)
圖1所示的架構(gòu)將硬件加速集成到ROS2中,同時保持以機(jī)器人專家為中間的理念。沒有要求熟習(xí)非ROS對象(如Vivado或ViTIs對象),或熟習(xí)OpenEmbedded或Yocto。另外,該架構(gòu)構(gòu)建正在開放的尺度之上,以C++++跟OpenCL作為天生加速內(nèi)核的方針計較語言。經(jīng)由過程這類方式,機(jī)器人范疇的大多數(shù)用戶皆可以受益于硬件加速的功用。該架構(gòu)基于三大支柱構(gòu)建:ROS構(gòu)建體系、ROS元構(gòu)建對象和嵌入式固件。
圖1:ROS2硬件加速工作組初始架構(gòu)
煤矸石分揀機(jī)器人機(jī)械手設(shè)計第一個支柱是amentROS2構(gòu)建體系的擴(kuò)展。ament_viTIs經(jīng)由過程一系列CMake宏跟實用工具實現(xiàn)這些擴(kuò)展,將ViTIs對象包括到ROS2生態(tài)系統(tǒng)內(nèi)。發(fā)起的架構(gòu)是一種合用于簡直任何加速技巧的架構(gòu),即ament_acceleraTIon籠統(tǒng)層從框架跟軟件平臺籠統(tǒng)構(gòu)建體系擴(kuò)展,為FPGA跟GPU供給撐持。作為替換加速技巧的例子,圖10里包括了ament_rocm,展示將來集成ROCm5軟件開發(fā)平臺的潛力,以實現(xiàn)HPC/超大規(guī)模級GPU計較。正在后盾,ament_acceleration的每次專門優(yōu)化皆須要對應(yīng)的庫。例如,ament_vitis依賴Vitis跟賽靈思運轉(zhuǎn)時。后者是一種開源的標(biāo)準(zhǔn)化軟件接口,用于簡化使用代碼跟加速內(nèi)核之間的通訊。Vitis對象跟XRT完整對機(jī)器人工程師潛藏,不只簡化了加速內(nèi)核的創(chuàng)立,并且借資助機(jī)器人專家專注于計較圖象的改善。經(jīng)由過程供給如同任何其他ROS封裝的體驗,以這類方法實現(xiàn)簡化加速內(nèi)核創(chuàng)立事情的方針。圖2所示的代碼列表1展現(xiàn)的是利用ament_vitisROS封裝的示例。宏vitis_acceleration_kernel供給靈活性,容許用戶無縫天擴(kuò)展并取舍加速ROS封裝的哪些部門。
圖2:代碼列表1
第二個支柱擴(kuò)展“colcon”ROS元構(gòu)建對象,以集成硬件加速公用流。
第三個支柱是嵌入式固件。抒發(fā)為acceleration_firmware,第三個支柱致力于為硬件加速平臺供給固件公用工件,如許便能針對這些工件編譯加速內(nèi)核,從而簡化流程并連結(jié)ROS開辟流程。提出的架構(gòu)正在構(gòu)建時特地思量到各類硬件加速平臺,可以撐持邊緣器件,和合用于工作站、數(shù)據(jù)中心甚至云硬件加速的PCIe?加速器。平臺取舍經(jīng)由過程正在ROS事情空間資源中參加特定的acceleration_firmware庫(acceleration_firmware_xilinx)去實現(xiàn)。構(gòu)建進(jìn)程中的平臺取舍(本例中為賽靈思ZynqUltraScale+?MPSoCZCU102平臺)經(jīng)由過程colconmixins去實現(xiàn)。經(jīng)由過程這類方法,colconbuild-build-base=build-zcu102-install-base=install-zcu102-merge-install-mixinzcu102將為ZCU102硬件平臺構(gòu)建完全的ROS2事情空間,穿插編譯ROS封裝,正在運轉(zhuǎn)中視環(huán)境為ZCU102平臺天生內(nèi)核。一切中央步調(diào)完整實現(xiàn)自動化,并且發(fā)生的install-zcu102目次能間接正在硬件中利用。
引進(jìn)郵件分揀機(jī)器人為了包容中央工件并正在嵌入式流程中供給靈活性,acceleration_firmware正在ROS2事情空間中引入新的子文件夾布局,即《ros2-workspace-path》/acceleration/firmware/《platform》門路。
圖3是acceleration_examplesROS2封裝構(gòu)建實現(xiàn)后,該架構(gòu)的事情方法預(yù)演。流程從colcon構(gòu)建ROS2事情空間起頭。無需利用特別的旗標(biāo),只是對應(yīng)的封裝跟硬件加速工作組基礎(chǔ)設(shè)施必需位于事情空間的src目次內(nèi)。colcon將為開辟工作站架構(gòu)構(gòu)建每一個封裝。那此中包括ament_vitisCmake宏,該宏將一系列CMake擴(kuò)展布置到發(fā)生的當(dāng)?shù)豏OS2疊加事情空間中。
這些擴(kuò)展與當(dāng)?shù)豓itis裝置相連,對ROS2包間接供給其功用。換句話說,ROS2包能從它們的文件利用這些宏,而且利用賽靈思的硬件加速對象。
自動分揀機(jī)器人調(diào)閾值固件包(如acceleration_firmware_kv260)是該架構(gòu)的緊張組件。切換加速器時,只需用合用于新的方針加速器的包替代這個包便可。隨意率性一個無效的固件包都應(yīng)包括固件工件跟CMake邏輯,以便正在ROS疊加事情空間中精確地為實現(xiàn)硬件加速目標(biāo)而解包、布置跟設(shè)置固件。另外,無效的固件包應(yīng)包括根文件系統(tǒng)、根文件系統(tǒng)的sysroot或正在構(gòu)建時自動天生ROS2mixins的模板,以簡化嵌入式流程跟其他方面。如需進(jìn)一步具體相識,請參閱任何官方固件包的完全工件列表。
總之,起首挪用colcon構(gòu)建,讓ROS2事情空間為硬件加速做好籌備并將文件布置正在當(dāng)?shù)丿B加內(nèi)(圖3,插圖編號2、3跟4)。在此之后,從當(dāng)?shù)丿B加第二次挪用帶-mixin《target-board》旗標(biāo)的colcon構(gòu)建,將停止穿插編譯并依據(jù)須要為方針加速器硬件天生加速器。從這一點起頭,colcon_acceleration包有助于其余流程的進(jìn)一步自動化。這部分已超越本文所要商量的內(nèi)容。
下列三種分歧的電路開發(fā)板曾經(jīng)取得根本撐持:賽靈思ZynqUltraScale+MPSoCZCU102,ZCU104和Kria?KV260視覺AI入門套件。
快遞分揀機(jī)器人發(fā)展前景圖3:HAWG初始架構(gòu)內(nèi)ROS2包之間的交互走查
要點總結(jié):正在既往研討的開導(dǎo)下,以后研討提出一種以ROS2為中間的架構(gòu),讓硬件加速正在ROS生態(tài)系統(tǒng)中施展關(guān)鍵作用。圖12表現(xiàn)的發(fā)起被模塊化成分歧的ROS2包,它們的構(gòu)建方法與任何其他ROS包一樣。這類架構(gòu)合用于各類平臺(對準(zhǔn)邊緣、工作站、數(shù)據(jù)中心或云供給撐持),也合用于各類技巧,而且只需供給對應(yīng)的專業(yè)acceleration_firmware,便能輕松天將其移植到其他電路板。
表4總結(jié)了這里提出的方式與之前的事情的比力。
表4:ROS與ROS2各種自順應(yīng)計較集成方式比力表(含賽靈思ament_vitis)
快遞智能分揀機(jī)器人分揀機(jī)器人揚中五軸分揀機(jī)器人