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





