KRS Unleashed: 1——開(kāi)始
Kria機(jī)器人堆棧(KRS)是由硬件加速工作組(HAWG)開(kāi)發(fā)的機(jī)器人操作系統(tǒng)(ROS 2)的超集。它最初是由Xilinx/AMD為他們的Kria SoM系列開(kāi)發(fā)的,通過(guò)將他們的Vitis統(tǒng)一工具鏈集成到ROS 2中,將硬件加速引入機(jī)器人生態(tài)系統(tǒng)。關(guān)于如何使用KRS和FPGA機(jī)器人實(shí)現(xiàn)第一個(gè)項(xiàng)目的文章已經(jīng)發(fā)表,如Whitney Knitter的系列。
然而,最近KRS的發(fā)展還遠(yuǎn)遠(yuǎn)不夠,更復(fù)雜的場(chǎng)景還不存在。KRS Unleashed是對(duì)原始Kria Robotics Stack (KRS)的架構(gòu)修訂,專(zhuān)注于放松內(nèi)部組件之間的依賴(lài)關(guān)系,并提供更精簡(jiǎn)、更易于擴(kuò)展的環(huán)境。添加了更多的組件來(lái)強(qiáng)調(diào)這些改進(jìn)。
我是KRS Unleashed框架的作者,希望使用本系列來(lái)記錄預(yù)期的工作流程。
KRS釋放-概述
KRS Unleashed將最初的單一工作空間(很容易上手)分離為3個(gè)獨(dú)立的空間,以方便并行開(kāi)發(fā):
1. OS(操作系統(tǒng))工作區(qū)
2. KRS/ROS 2工作區(qū)
3. Vitis工作區(qū)
一般來(lái)說(shuō),在設(shè)計(jì)FPGA機(jī)器人應(yīng)用程序時(shí),必須開(kāi)發(fā)和集成許多不同的組件,以形成整個(gè)硬件/軟件協(xié)同設(shè)計(jì)系統(tǒng)。
操作系統(tǒng)工作空間
由于ROS 2是一個(gè)相當(dāng)廣泛的框架,因此需要在主板上支持包括完整網(wǎng)絡(luò)堆棧在內(nèi)的操作系統(tǒng)。必須安裝ROS 2、FPGA支持和用戶(hù)應(yīng)用程序的依賴(lài)關(guān)系,并針對(duì)sysroot創(chuàng)建交叉編譯工具鏈。
Kria SoM的操作系統(tǒng)需要一個(gè)可擴(kuò)展平臺(tái)設(shè)計(jì)(XSA)來(lái)描述未來(lái)硬件加速器、時(shí)鐘信號(hào)等的潛在接口。最初的KRS流依賴(lài)于已經(jīng)基于不可更改的XSA的Ubuntu操作系統(tǒng)。
Ubuntu 22.04和24.04是開(kāi)發(fā)ROS 2的絕佳選擇,因?yàn)樗鼈円彩荝OS 2附帶的主要發(fā)行版,將依賴(lài)問(wèn)題減少到最低限度,并為開(kāi)發(fā)人員提供了一個(gè)熟悉的環(huán)境。
然而,商業(yè)用例可能對(duì)基于嵌入式Linux/Petalinux的更復(fù)雜的系統(tǒng)感興趣,以加強(qiáng)系統(tǒng)并減少抖動(dòng)。類(lèi)似地,對(duì)自定義板和自定義XSA的支持在最初的流程中是有限的。
新的OS工作區(qū)包含創(chuàng)建SD卡映像所需的設(shè)置,并為交叉編譯準(zhǔn)備一個(gè)系統(tǒng)根環(huán)境。原始的Ubuntu流程被提取到一個(gè)簡(jiǎn)單的可調(diào)用腳本中。此外,還添加了一個(gè)用于Petalinux流的腳本,它需要一個(gè)XSA和一個(gè)bsp文件。
關(guān)于如何使用此流的詳細(xì)信息將在下一篇文章中提供。
基米-雷克南/ ROS2工作區(qū)
該模塊主要通過(guò)跟蹤功能進(jìn)行了簡(jiǎn)化和擴(kuò)展。當(dāng)前的核心工作區(qū)只包含5個(gè)包,它們對(duì)其他工作區(qū)的依賴(lài)非常輕。用于構(gòu)建項(xiàng)目的命令與KRS中的相同,但是它的可配置性更強(qiáng),以支持更多的固件。刪除固件創(chuàng)建和HLS也大大加快了編譯時(shí)間。
關(guān)于KRS工作空間的詳細(xì)信息將在第3條中提供。
Vitis工作區(qū)
Vitis工作區(qū)是一個(gè)全新的流程,取代了舊的隱式HLS。雖然在ROS 2中直接合成內(nèi)核乍一看很不錯(cuò),但開(kāi)發(fā)這樣的內(nèi)核是很棘手的。幾乎沒(méi)有錯(cuò)誤反饋,沒(méi)有有用的測(cè)試,語(yǔ)法高亮,…這意味著該流程僅用于在開(kāi)發(fā)后合成已知工作的內(nèi)核。
相反,我們開(kāi)發(fā)了一個(gè)腳本化的Vitis工作區(qū)流,它基于新的Vitis Python API在GUI中自動(dòng)點(diǎn)擊來(lái)創(chuàng)建平臺(tái)、HLS、軟件和系統(tǒng)組件,配置、構(gòu)建和連接它們,并將最終的工件捆綁在一個(gè)export_folder中。由于流程完全基于Vitis工作區(qū)概念,用戶(hù)可以在任何時(shí)間點(diǎn)在Vitis Unified中簡(jiǎn)單地打開(kāi)工作區(qū),調(diào)試、分析或手動(dòng)與之交互。
關(guān)于這個(gè)過(guò)程的細(xì)節(jié)將在第4條中解釋。
在開(kāi)發(fā)板上集成和部署
最后的第5篇文章將解釋如何從SW開(kāi)始開(kāi)發(fā)應(yīng)用程序,向其添加內(nèi)核,交叉編譯,分析一些跟蹤并將所有內(nèi)容放到主板上。
本文編譯自hackster.io





