99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

用軟件開發(fā)FPGA:機械臂設計保姆級教程

Xilinx賽靈思官微 ? 來源:老石談芯 ? 作者:老石 ? 2022-12-15 11:49 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

去年這個時候發(fā)過一篇文章《我在隔離酒店,做了一個AI視覺加速器》,介紹了如何在半個小時之內用FPGA開發(fā)一個AI視覺加速器,而且完全用軟件庫搭建,不用寫一行RTL代碼。之所以能這么方便,就是因為當時用的是名叫KRIA SOM的開發(fā)套件,支持用Python進行純軟件的FPGA開發(fā)。

如今一年過去了,KRIA系列今年又推出了一個新的入門套件,名叫KR260。細心的朋友可能發(fā)現(xiàn)了,和之前的KV260只有一字之差。之前的V代表的是Vision、視覺,而這里R指的就是機器人 Robotics。

很高興這次也第一時間收到了AMD 賽靈思寄來的KR260,據說我們也是全國最早拿到這個板卡的。在今天的文章里,我會帶大家來一起近距離感受一下這個板卡的細節(jié)、特點和優(yōu)勢。

但和之前有那么億點點不同的是,我們并沒有簡單運行一下賽靈思的實例程序就完事兒了,而是花了幾個星期的時間,真正用這個板卡開發(fā)了一個機械控制器。

完成功能還是其次,真正的目的是更好的感受一下這種新型開發(fā)方式到底有多便捷。順便帶大家一起來看下,一個完整的項目開發(fā)周期都需要經歷哪些階段,我們踩了哪些坑,如何解決的問題,都會給大家一一呈現(xiàn)。這個項目的源代碼和文檔,也都會進行開源,鏈接在文末,希望能幫到更多感興趣的朋友。

4c24664a-7c14-11ed-8abf-dac502259ad0.png

在開發(fā)過程中我們一直在嘗試回答的一個問題,就是這種基于軟件開發(fā)的新型FPGA開發(fā)方法,是否會成為未來的主流?折騰完我們的答案是:

很有可能,但前面的路可能還很長。

KR260,到底是什么?

KR260的全稱,是Kria KR260開發(fā)套件。其中Kria是整個產品系列的名字。前面說過,KR260的R,指的就是機器人。也就是說,這個板卡就是為了機器人的相關應用而特別設計的,比如這篇文章介紹的機械臂的控制開發(fā)。事實上,除了機器人應用之外,KR260還能用于工業(yè)控制、通信,在板卡上還有攝像頭接口,所以也可以用來做工業(yè)視覺的應用。

接下來我們就看下KR260這個開發(fā)板。它最大的特點,就是采用了SoM - System on Module的形式。也就是說它其實是有兩塊板卡,上面帶風扇的部分就是FPGA卡本身,里面裝著一個定制版的SoC芯片,而下面的這個部分就是母板,叫做base board或者carrier board。母板上包含了各種接口,最明顯的就是這4個RJ45以太網端口,以及一個SFP+10G光口,這些都是為了做工業(yè)通信的;此外還有4個USB3.0,主要設計用來做為多個攝像頭的接口。

4c5122ac-7c14-11ed-8abf-dac502259ad0.jpg

這種使用兩種板卡的SoM模式,本質就是一種模塊化的設計方法。我們可以分別設計這些核心板和母板,來滿足不同應用場景的需要。

比如在一個設計的開發(fā)階段,我們肯定需要一個有著很多接口和調試功能的開發(fā)板,這樣就可以把母板上的IO接口做多一些、調試手段做豐富一些,方便我們的開發(fā)。當開發(fā)調試結束、需要實際應用和部署的時候,可能就不需要這些額外的調試接口和IO了,留著它們反而會成為方便別人入侵的安全隱患。在這種情況下,就可以在母板上保留必要功能,而FPGA的部分保持不變,這樣能快速組成一個可以部署的產品化系統(tǒng)。

同理,當FPGA芯片更新?lián)Q代的時候,我們其實也可以保持母板不變,只需要更換上面的FPGA核心板就可以了。特別是可以復用很多母板上的資源,項目文件很多也不需要大修和重寫,非常方便。

具體到這個KR260,它的FPGA核心板其實是一個Zynq UltraScale+ FPGA芯片。這是一個16納米的器件,包含4核ARM Cortex-A53處理器,以及圍繞它搭建的一系列SoC子系統(tǒng),包括嵌入式GPU、內存控制器,還有各種IO和總線控制單元等等???a target="_blank">編程邏輯部分,包含25.6萬個可編程邏輯單元,144個BRAM、64個URAM,這些都是片上的存儲單元,此外還有1200多個DSP。

母板的部分前面說過,有四個以太網、4個USB3.0,此外還有顯示接口、樹莓派接口等等,能很大程度滿足開發(fā)的需求。

不過我覺得,Kria系列的最大特點,除了這種模塊化的板卡設計之外,更多的是它的開發(fā)方法。

不寫RTL的FPGA開發(fā)

玩過FPGA的朋友應該都知道,F(xiàn)PGA開發(fā)起來非常麻煩,特別是和基于CPU或者GPU的這些軟件開發(fā)相比。比如我們要玩Raspberry Pi,直接接上電源連上外設,然后開始寫python去開發(fā)就好了。

相比之下,F(xiàn)PGA完全是兩個概念,傳統(tǒng)的開發(fā)方法要用特別的硬件設計語言Verilog、VHDL或者SystemVerilog,以及相應的仿真和測試的方法,這個學起來就很麻煩了;此外還要用特別的開發(fā)軟件,比如賽靈思的Vivado或者Vitis,這個也需要大量的學習成本。

4c744c64-7c14-11ed-8abf-dac502259ad0.png

不僅如此,F(xiàn)PGA的編譯和調試時間很長,一個普通大小的工業(yè)級FPGA設計,編譯時間通常也需要幾個小時之久,這就勸退了很多開發(fā)者和應用廠商。

所以FPGA一直是很多開發(fā)者又愛又恨的存在,一方面FPGA有各種的好處,比如可以用來做并行計算和硬件加速,同時功耗又很低;但另一方面,F(xiàn)PGA的學習和開發(fā)方法非常的復雜和繁瑣,這個也是制約FPGA大規(guī)模發(fā)展的最主要因素。

但是,包括KR260在內的Kria系列FPGA的開發(fā)方法就有很大不同,我們不需要Vitis、不需要使用RTL語言,而是通過Python語言進行開發(fā),就能很快跑起來一個應用。對于KR260來說,它還有一個重要的特性,就是能支持運行機器人操作系統(tǒng)ROS2。它雖然名字里有「操作系統(tǒng)」,但其實并不是像windows、linux那樣的操作系統(tǒng),它更多的是一個中間件和編程框架,包含了一整套開源的軟件庫和工具,專門用來做機器人編程。

ROS的作用是抽象機器人控制和傳感器驅動的過程,讓不同協(xié)議的器件之間能夠互相通信。起到了一個總線的作用,不需要交互協(xié)議,所有的控制用Python,C++這些高層語言完成就可以了。所以通過支持ROS,就能進一步提升KR260的易用性和它的開發(fā)效率。

接下來我們就一起來看一下,如何使用KR260開發(fā)一個機械臂控制系統(tǒng)。

機械臂控制器的開發(fā)過程

去年我們玩KV260的時候用的是賽靈思的官方示例,在很短時間之內就完成了一個視覺加速器的開發(fā)。那么這次用KR260,我們挑戰(zhàn)了一下更高難度,想嘗試一下實際開發(fā)起來是一種怎樣的體驗,也想體驗一下ROS系統(tǒng)的使用,以及這種開發(fā)方式帶來的好處。

機械臂的控制,是機器人領域的主要應用之一。我們要實現(xiàn)的功能其實并不是特別復雜,就是通過攝像頭定位不同顏色的小方塊,然后通過機械臂對小方塊進行抓取和分類放置。

我們用的都是現(xiàn)成的機械臂硬件,和稚暉君大佬自研一切肯定沒法比。我們這次開發(fā)的主要目的,其實就是評估KR260和ROS系統(tǒng)的易用性,看看它是不是真的像賽靈思宣傳里說的那么好用。

確定功能之后,就是梳理出具體的開發(fā)步驟,主要分以下這么幾步:

第一步,配置KR260的Ubuntu環(huán)境。我們接下來所有的開發(fā),都要基于Ubuntu操作系統(tǒng),所以這一步是基礎。具體做法可以參考賽靈思給出的一些步驟,鏈接我都整合在開發(fā)文檔里,點擊文末「閱讀全文」就可以看到。不過需要注意的是,這里需要選擇支持KR260的Ubuntu版本,不能隨便下。這個要到賽靈思的官網,找到Ubuntu Desktop22.04 LTS的映像,確保它支持KR260,然后下載,并且燒錄到SD卡里。

燒錄好SD卡之后,就是把線纜插到KR260上,注意以太網口不要插錯,也插上SD卡,連接鍵盤鼠標,上電啟動Ubuntu。這一步的最后,就是為Ubuntu LTS設置一下賽靈思的開發(fā)環(huán)境,用這里的幾個命令就可以了。

sudo snap install xlnx-config --classic --channel=2.x

xlnx-config.sysinit

第二步,配置KR260的ROS2環(huán)境。對于KR260+Ubuntu22.04這樣的環(huán)境來說,目前只有ROS2 Humble Hawksbill這個版本。在安裝之前,需要先安裝一系列的依賴、配置源、然后再下載ROS包進行安裝。這部分內容我就快進了,所有的命令代碼和文檔都是開源的,有條件的小伙伴可以試試看。安裝好之后可以做一些簡單的信息收發(fā)的測試,沒問題的話就證明ROS2已經正常運行在KR260上了。

第三步,在KR260上安裝jupyter lab方便調試。先下載依賴、配置一下遠程登錄,然后重啟一下就好了。

第四步,搭建機械臂的硬件結構。這一步其實獨立于FPGA開發(fā),我們用的是現(xiàn)成的機械臂硬件,主要涉及一些組裝和調試的工作。某寶上其實有很多機械臂開發(fā)件在賣,但是大家在買的時候一定要注意,問清楚控制接口到底是什么協(xié)議。這里我們踩了一個大坑,后面會介紹。

第五步,就是開發(fā)實際的功能了。功能主要包含兩塊,一塊是對機械臂動作的控制,一塊是通過攝像頭進行物體和顏色的識別。對于機械臂動作的控制,是通過動作組來實現(xiàn)的,每個動作組包含初始化、復位、抓取、轉移、放置,這五個基本的行為。

每個行為的本質其實就是對機械臂里對應的舵機進行控制,比如控制舵機旋轉的角度和方向等等,這些都可以通過Python來進行精確的編程控制。由于我們支持多種顏色的物體在多個區(qū)域的抓取和放置,因此而每個行為又包含很多個動作。比如同樣的一個抓取的動作,在不同區(qū)域就需要控制舵機轉動的次數、角度和順序,這些就組成了一個動作組。

我們把每個動作都做成一個函數,然后通過不同函數的組合調用,又組成更高層的函數,來完成不同的行為。這樣一級一級下來,呈現(xiàn)給最上層用戶的,就是幾個可以調用的函數接口。當然最后這些都會用ROS集成起來。

攝像頭識別的部分,使用OpenCV來實現(xiàn)。主要的工作有兩個部分,分別是顏色識別、以及物體中心坐標定位。每部分的具體操作在下圖中所示:

4ceeb74c-7c14-11ed-8abf-dac502259ad0.jpg

4d167e12-7c14-11ed-8abf-dac502259ad0.jpg

別著急,還有第六步,也就是最后一步,就是把這些分立的功能通過ROS連接起來。相當于前一步我們做的都是一個個磚塊,現(xiàn)在可以把磚砌成房子了。除了識別算法和控制算法,ROS還可以直接驅動攝像頭,并且通過CV bridge把攝像頭的圖像傳遞給識別算法。識別出物體的輪廓和坐標之后,自動判斷下一步要執(zhí)行的動作,然后在ROS里發(fā)送給機械臂完成執(zhí)行。

踩坑總結

開發(fā)過程肯定不是一帆風順的,一些搭環(huán)境裝軟件的小問題就不說了,我們在開發(fā)過程中遇到的最大問題,其實是KR260目前存在的一些限制。

一開始我們想用一個性能更好、功能更強的機械臂,買好了抱回來之后發(fā)現(xiàn),那個機械臂的控制端口用的是I2C總線。根據KR260目前板卡的設計和引腳分配我們發(fā)現(xiàn),必須要把這個I2C總線連到KR260的FPGA端。但是問題就來了,目前賽靈思提供的Ubuntu系統(tǒng)還不能訪問FPGA PL端的新增AXI 設備,需要修改Ubuntu系統(tǒng)。

然后很自然的就想試試其他操作系統(tǒng),比如我們試過Petalinux,并且成功修改了設備樹,實現(xiàn)和I2C的通信,但是問題又來了,Petalinux不支持ROS,也沒辦法下載大部分依賴的安裝包和支持庫。我們試用KR260就是為了體驗ROS開發(fā)來的,所以這條路也走不通了。

所以最后的方案,就是選了另外一個支持USB串口驅動的機械臂,并且直接在Ubuntu+ROS的環(huán)境下完成了前面的開發(fā)。

事實上,這并不是什么bug,而是一些相關的功能和支持還沒完全開放。比如說不定過一段時間賽靈思就更新了Ubuntu版本,添加了對FPGA PL端IO資源的訪問支持。也就是說,可以直接從FPGA的可編程硬件部分訪問各種外設,這樣肯定就方便更多了。

除此之外,一些其他的踩坑總結以及解決方案,也以文檔的形式列出來了,感興趣的朋友可以查看我們的Github鏈接:

https://github.com/shilicon/kr260_robotic_arm

小結

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

關于Kria KR260的學習資料,還有這個基于KR260的機械臂控制項目的具體細節(jié)、步驟和代碼,我們都總結成了詳細的文檔,獲取方式在置頂評論里,想要學習和上手的朋友可以從這里開始。也歡迎點擊文末「閱讀原文」做一個小調查,有任何反饋也歡迎留言告訴我,祝玩的順利!

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1645

    文章

    22049

    瀏覽量

    618354
  • amd
    amd
    +關注

    關注

    25

    文章

    5587

    瀏覽量

    136352
  • 機械臂
    +關注

    關注

    13

    文章

    554

    瀏覽量

    25378

原文標題:用軟件開發(fā)FPGA:機械臂設計保姆級教程

文章出處:【微信號:賽靈思,微信公眾號:Xilinx賽靈思官微】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    知識分享 | 敏捷方法在基于模型的軟件開發(fā)項目中的應用

    傳統(tǒng)的瀑布式軟件開發(fā)流程存在諸多局限,這使得應用敏捷原則變得尤為重要,尤其是面對復雜且不斷變化的開發(fā)環(huán)境時。作為最高效的軟件開發(fā)方法之一,基于模型的開發(fā)(MBD)具有諸多優(yōu)勢。將敏捷原
    的頭像 發(fā)表于 07-16 16:52 ?297次閱讀
    知識分享 | 敏捷方法在基于模型的<b class='flag-5'>軟件開發(fā)</b>項目中的應用

    我國軟件開發(fā)者數量突破940萬

    2024開放原子開發(fā)者大會20到21日在武漢舉辦。工業(yè)和信息化部負責人透露,我國軟件開發(fā)者數量突破940萬。 開源就是開放軟件的源代碼,在遵守許可協(xié)議的前提下,任何人都可以使用、修改甚至再發(fā)布源代碼
    的頭像 發(fā)表于 12-24 13:52 ?473次閱讀

    我國軟件開發(fā)者數量超過940萬

    在近日舉辦的開放原子開發(fā)者大會上,工業(yè)和信息化部負責人傳來了一則令人振奮的消息:我國軟件開發(fā)者數量已經突破940萬大關。這一數據不僅彰顯了我國在軟件開發(fā)領域的雄厚實力,也預示著我國在全球軟件開
    的頭像 發(fā)表于 12-23 11:08 ?612次閱讀

    “雙保險”鎖緊機制:YM28系列連接器為機械提供高牢靠的大電流連接

    機械因其精準性、智能性、高效性等特點,在工業(yè)制造、物流倉儲、醫(yī)療手術等領域如魚得水、應用甚廣。在機械大展身手的背后,其實有一股不可忽視的力量在支撐,那就是承擔電氣化連接的工業(yè)
    的頭像 發(fā)表于 11-20 01:03 ?656次閱讀
    “雙保險”鎖緊機制:YM28系列連接器為<b class='flag-5'>機械</b><b class='flag-5'>臂</b>提供高牢靠的大電流連接

    BQ7690x軟件開發(fā)指南

    電子發(fā)燒友網站提供《BQ7690x軟件開發(fā)指南.pdf》資料免費下載
    發(fā)表于 11-07 10:19 ?1次下載
    BQ7690x<b class='flag-5'>軟件開發(fā)</b>指南

    北京軟件開發(fā)公司有那些?做軟件的公司有哪些?

    北京作為中國的科技創(chuàng)新中心之一,擁有眾多提供軟件開發(fā)服務的公司。以下是一些在北京地區(qū)較為知名的軟件開發(fā)公司: 華盛恒輝科技有限公司:是一家專注于高端軟件定制開發(fā)服務和高端建設的服務機構
    的頭像 發(fā)表于 10-28 15:02 ?1267次閱讀

    TMS320C6201 DSP軟件開發(fā)技術

    電子發(fā)燒友網站提供《TMS320C6201 DSP軟件開發(fā)技術.pdf》資料免費下載
    發(fā)表于 10-26 09:25 ?0次下載
    TMS320C6201 DSP<b class='flag-5'>軟件開發(fā)</b>技術

    PGA460軟件開發(fā)指南

    電子發(fā)燒友網站提供《PGA460軟件開發(fā)指南.pdf》資料免費下載
    發(fā)表于 10-09 10:30 ?7次下載
    PGA460<b class='flag-5'>軟件開發(fā)</b>指南

    PGA450-Q1軟件開發(fā)指南

    電子發(fā)燒友網站提供《PGA450-Q1軟件開發(fā)指南.pdf》資料免費下載
    發(fā)表于 09-30 14:25 ?1次下載
    PGA450-Q1<b class='flag-5'>軟件開發(fā)</b>指南

    ECU電控軟件開發(fā)及測試介紹

    本文重點介紹符合AutoSar架構的應用軟件開發(fā)、MBD開發(fā)模式下的軟件質量評估與優(yōu)化方案、復雜場景下的ECU性能壓力測試方案。
    的頭像 發(fā)表于 09-26 14:25 ?4052次閱讀
    ECU電控<b class='flag-5'>軟件開發(fā)</b>及測試介紹

    TUSS44x0軟件開發(fā)指南

    電子發(fā)燒友網站提供《TUSS44x0軟件開發(fā)指南.pdf》資料免費下載
    發(fā)表于 09-14 10:59 ?0次下載
    TUSS44x0<b class='flag-5'>軟件開發(fā)</b>指南

    BQ769x2軟件開發(fā)指南

    電子發(fā)燒友網站提供《BQ769x2軟件開發(fā)指南.pdf》資料免費下載
    發(fā)表于 08-26 09:12 ?1次下載
    BQ769x2<b class='flag-5'>軟件開發(fā)</b>指南

    OrangePi AIpro應用:機械應用開發(fā)指南

    2024世界人工智能大會上,香橙派攜OrangePiAIpro20T在世博展覽館H1-A301展區(qū)亮相,給大家?guī)鞟I+互動的沉浸式體驗。其中,搭載OrangePiAIpro開發(fā)板的智能機械吸引了
    的頭像 發(fā)表于 08-19 16:42 ?1069次閱讀
    OrangePi AIpro應用:<b class='flag-5'>機械</b><b class='flag-5'>臂</b>應用<b class='flag-5'>開發(fā)</b>指南

    BQ769x2 軟件開發(fā)指南

    電子發(fā)燒友網站提供《BQ769x2 軟件開發(fā)指南.pdf》資料免費下載
    發(fā)表于 08-12 14:41 ?0次下載

    嵌入式軟件開發(fā)與AI整合

    嵌入式軟件開發(fā)與AI整合是當前技術發(fā)展的重要趨勢之一。隨著人工智能技術的快速發(fā)展,嵌入式系統(tǒng)越來越多地集成了AI算法,以實現(xiàn)更復雜的智能功能。以下是關于嵌入式軟件開發(fā)與AI整合的詳細分析
    的頭像 發(fā)表于 07-31 09:25 ?1366次閱讀
    嵌入式<b class='flag-5'>軟件開發(fā)</b>與AI整合