去年我們玩KV260的時候用的是官方示例,在很短時間之內(nèi)就完成了一個視覺加速器的開發(fā)。那么這次用KR260,我們挑戰(zhàn)了一下更高難度,想嘗試一下實際開發(fā)起來是一種怎樣的體驗,也想體驗一下ROS系統(tǒng)的使用,以及這種開發(fā)方式帶來的好處。
—— 老石
Kria 系列是AMD Xilinx 專門針對邊緣部署而精心設計的 SOM 產(chǎn)品組合,從入門套件到量產(chǎn)型 SOM,可簡化系統(tǒng)開發(fā),助力加速產(chǎn)品上市進程。Kria 系列產(chǎn)品的發(fā)布引發(fā)了業(yè)界廣泛的關注,也產(chǎn)生了很多基于該系列板卡的設計案例,今天要向大家推薦的是來自業(yè)界知名開發(fā)者“老石”的一個視頻項目。
關于Kria KR260的學習資料,還有這個基于KR260的機械臂控制項目的具體細節(jié)、步驟和代碼,我們都總結成了詳細的文檔。大家可以點擊“閱讀原文”填寫問卷(該問卷為不記名形式)后即可獲取。
(以下內(nèi)容全文摘自“老石談芯”有關KR260 的開發(fā)記錄)
基于軟件開發(fā)的新型FPGA開發(fā)方法,是否會成為未來的主流?
KR260入門套件的最大特點就是采用了SoM - System on Module的形式,也就是說它其實是有兩塊板卡,上面這個帶黑色風扇的部分就是FPGA卡本身,里面裝著一個定制版的SoC芯片,而下面的這個部分就是母板,我們叫它base board或者carrier board。母板上包含了各種接口,最明顯的就是這4個RJ45以太網(wǎng)端口,以及一個SFP+10G光口,這些都是為了做工業(yè)通信的;此外還有4個USB3.0,主要設計用來做為多個攝像頭的接口。


不寫RTL的FPGA開發(fā)
FPGA一直是很多開發(fā)者又愛又恨的存在,一方面FPGA有各種的好處,比如可以用來做并行計算和硬件加速,同時功耗又很低;但另一方面,F(xiàn)PGA的學習和開發(fā)方法非常的復雜和繁瑣,這個也是制約FPGA大規(guī)模發(fā)展的最主要因素。
但是,包括KR260在內(nèi)的Kria系列FPGA的開發(fā)方法就有很大不同,我們不需要Vitis、不需要使用RTL語言,而是通過Python語言進行開發(fā),就能很快跑起來一個應用。對于KR260來說,它還有一個重要的特性,就是能支持運行機器人操作系統(tǒng)ROS2。它雖然名字里有「操作系統(tǒng)」,但其實并不是像windows、linux那樣的操作系統(tǒng),它更多的是一個中間件和編程框架,包含了一整套開源的軟件庫和工具,專門用來做機器人編程。ROS的作用是抽象機器人控制和傳感器驅(qū)動的過程,讓不同協(xié)議的器件之間能夠互相通信。起到了一個總線的作用,不需要交互協(xié)議,所有的控制用Python,C 來完成。

機械臂控制器的開發(fā)過程
這次使用KR260,我們挑戰(zhàn)了一下更高難度,想嘗試一下實際開發(fā)起來是一種怎樣的體驗,也想體驗一下ROS系統(tǒng)的使用,以及這種開發(fā)方式帶來的好處。
機械臂的控制,是機器人領域的主要應用之一。我們要實現(xiàn)的功能其實并不是特別復雜,就是通過攝像頭定位不同顏色的小方塊,然后通過機械臂對小方塊進行抓取和分類放置。我們這次開發(fā)的主要目的,其實就是評估KR260和ROS系統(tǒng)的易用性。
確定功能之后,就是梳理出具體的開發(fā)步驟,主要分以下這么幾步:
??上下滑動查看更多內(nèi)容??

踩坑總結
開發(fā)過程肯定不是一帆風順的,一些搭環(huán)境裝軟件的小問題就不說了,我們在開發(fā)過程中遇到的最大問題,其實是KR260目前存在的一些限制。一開始我們想用一個性能更好、功能更強的機械臂,買好了抱回來之后發(fā)現(xiàn),那個機械臂的控制端口用的是I2C總線。根據(jù)KR260目前板卡的設計和引腳分配我們發(fā)現(xiàn),必須要把這個I2C總線連到KR260的FPGA端。但是問題就來了,目前賽靈思提供的Ubuntu系統(tǒng)還不能訪問FPGA PL端的新增AXI 設備,需要修改Ubuntu系統(tǒng)。
然后很自然的就想試試其他操作系統(tǒng),比如我們試過Petalinux,并且成功修改了設備樹,實現(xiàn)和I2C的通信,但是問題又來了,Petalinux不支持ROS,也沒辦法下載大部分依賴的安裝包和支持庫。
最后的方案,就是選了另外一個支持USB串口驅(qū)動的機械臂,并且直接在Ubuntu+ROS的環(huán)境下完成了前面的開發(fā)。
事實上,這并不是什么bug,而是一些相關的功能和支持還沒完全開放。比如說不定過一段時間賽靈思就更新了Ubuntu版本,添加了對FPGA PL端IO資源的訪問支持。也就是說,可以直接從FPGA的可編程硬件部分訪問各種外設,這樣肯定就方便更多了。
所以,回到了項目剛剛開始的問題:
基于軟件開發(fā)的新型FPGA開發(fā)方法,是否會成為未來的主流?
折騰完我們的答案是,很有可能,但(前面的路還有很多)。詳細的踩坑總結以及解決方案,我們以文檔的形式列出來了,感興趣的朋友可以點擊這里,或“閱讀原文”填寫問卷(該問卷為不記名形式)后即可獲取。

小結
這期視頻帶大家一起看了一下賽靈思最新的Kria KR260機器人開發(fā)套件的開發(fā)全過程。在這個過程中,可以不接觸到FPGA的底層硬件內(nèi)容。如果你是個軟件開發(fā)者,可以利用這個平臺直接進行上層機器人相關軟件和算法的開發(fā)和加速,這個就大大降低了使用FPGA的門檻。這個過程也很有趣,同時也能慢慢接觸到軟硬件協(xié)同開發(fā)的知識細節(jié),并且鍛煉這方面的技能。

