機器人技術處于工業 4.0、人工智能和邊緣革命的前沿。讓我們看看如何創建 FPGA 控制的機器人手臂。
介紹
機器人技術與人工智能和機器學習一起處于工業 4.0 和邊緣革命的最前沿。
因此,我認為創建一個基礎機器人手臂項目會很有趣,我們可以回過頭來添加幾個功能,例如:
逆運動學 - 確定末端執行器的位置。
AI / ML - 操作期間的對象分類。
網絡控制——實現邊緣遠程控制。
此示例將使用一個機器人手臂,該機器人手臂在 Zynq SoC 的控制六個伺服系統。可以使用簡單的軟件界面或使用兩個操縱桿進行直接控制。
伺服控制
我們需要做的第一件事是弄清楚如何控制伺服位置。伺服電機是最簡單的驅動電機之一,也是機器人技術的理想選擇,因為只要我們保持相同的驅動信號,它們就能保持相對位置。
那么伺服的驅動信號是什么呢?我們使用的同類伺服系統中的大多數都使用 60Hz PWM 波形。在 60Hz 波形的 16.66 ms 周期中,信號將在 0.5 ms 到 2.5 ms 之間為高電平。信號的持續時間將驅動伺服器在 0 到 180 度之間運動。
0.5 ms 脈沖驅動 0 度位置,而 2.5 ms 脈沖將驅動 180 度位置。因此,可以通過將信號驅動為 1.5 ms 脈沖來維持 90 度。
因此,增加或減少脈沖13.9 us寬度會使舵機移動 1 度。
接下來要解決的是如何生成驅動信號,PWM 擴展板(上圖)使用四個 8 位寄存器來驅動每個 PWM 信號。
on 寄存器定義信號變高的計數,off 寄存器定義信號變低的計數。
因此,我們可以將開啟時間設置為 0,然后定義關閉信號的計數,以獲得所需的信號寬度。
Vivado 構建
Zynq PS - 這是 Zynq 處理系統
一旦完成了PL設計,我們就可以構建設計并將其導出到軟件。
軟件設計
我們將在軟件中開發大部分應用程序。由于我們希望在多種模式下使用它,并在將來進行升級時使用它,因此我們需要一種模塊化方法。
因此,為每個關節開發了一個可以根據需要調用和使用的函數。每個關節都能夠接收無符號的 8 位值,然后將該 8 位值與 90 度 (1.5 ms) 脈沖寬度相加或相減,以獲得所需的角度。
我這樣做有幾個原因:
從操縱桿讀取的值也是 8 位。
因此,我們需要確保操縱桿和手臂之間的運動對齊。
兩個操縱桿中,第一個連接到 JA,第二個連接到 JB(JA和JB是PMOD接口,就是普通的GPIO)。
JA 當沿 X 方向移動時,將向前或向后移動手臂;當沿 Y 方向移動時,它將上下移動手臂。
JB 在 X 方向移動時會旋轉手腕,在 Y 方向移動時會上下移動手腕。
每個移動函數的代碼都非常相似,并且可以在后面提供的代碼找到,但是,下面提供了向上向下函數以供參考
voidup_dwn(u8YData){ SendBuffer[0]=0x0A; SendBuffer[1]=0x00; XIic_Send(iic.BaseAddress,IIC_SLAVE_ADDR,(u8*)&SendBuffer,sizeof(SendBuffer),XIIC_STOP); SendBuffer[0]=0x0B; SendBuffer[1]=0x00; XIic_Send(iic.BaseAddress,IIC_SLAVE_ADDR,(u8*)&SendBuffer,sizeof(SendBuffer),XIIC_STOP); SendBuffer[0]=0x0C; u16signal; if(YData128?){ ??signal?=?122?+?(YData?*?1.91); ?} ?else?if?(YData?==?128){ ??signal?=?369; ?} ?else{ ??signal?=?369?+?((YData?-?128)?*?1.91); ?} ?u8?cent_l_off,?cent_h_off; ?cent_l_off?=?(u8)signal; ?cent_h_off?=?(u8)?(signal>>8); SendBuffer[1]=cent_l_off; XIic_Send(iic.BaseAddress,IIC_SLAVE_ADDR,(u8*)&SendBuffer,sizeof(SendBuffer),XIIC_STOP); SendBuffer[0]=0x0D; SendBuffer[1]=cent_h_off; XIic_Send(iic.BaseAddress,IIC_SLAVE_ADDR,(u8*)&SendBuffer,sizeof(SendBuffer),XIIC_STOP); }
軟件應用程序結構的其余部分是:
初始化 PWM 擴展板和 Pmod 操縱桿。
對手臂進行自檢并將所有伺服系統定位在 90 度。
通過 RS232 接收命令或來自操縱桿的命令。
當然,如果我們希望在命令中進行硬編碼來執行重復任務,我們也可以。
初步測試
一旦 Vivado 構建和初始軟件可用,下一步就是確保軟件能夠正確移動伺服系統。
當移動操縱桿時,可以使用示波器測量 PWM 信號。
隨著操縱桿的移動,脈沖寬度逐漸從 0.5 ms 變為 2.5 ms。
審核編輯:湯梓紅
-
FPGA
+關注
關注
1643文章
21925瀏覽量
612603 -
機器人
+關注
關注
212文章
29313瀏覽量
211048 -
人工智能
+關注
關注
1804文章
48509瀏覽量
245319 -
機器學習
+關注
關注
66文章
8481瀏覽量
133913
原文標題:FPGA/SoC控制機械臂
文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
STM32的醫療康復機器人手臂控制系統
用意念控制的植入式機器人手臂
以ARM為傳感器 自動跟蹤機器人手臂相機位置
怎樣使用Android手機的藍牙控制機器人手臂
在未來機器人手臂將可以替代人類的雙手
Arduino與樹莓派打造Chatbot語音控制機器人手臂

機器人手臂使用哪種型號的泰和承比較合適
Arduino機器人手臂
用于Arduino Due的DIY Braccio機器人手臂護罩

評論