機器人技術處于工業 4.0、人工智能和邊緣革命的前沿。讓我們看看如何創建 FPGA 控制的機器人手臂。
介紹
機器人技術與人工智能和機器學習一起處于工業 4.0 和邊緣革命的最前沿。
因此,我認為創建一個基礎機器人手臂項目會很有趣,我們可以回過頭來添加幾個功能,例如:
此示例將使用一個機器人手臂,該機器人手臂在 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 構建
一旦完成了PL設計,我們就可以構建設計并將其導出到軟件。
軟件設計
我們將在軟件中開發大部分應用程序。由于我們希望在多種模式下使用它,并在將來進行升級時使用它,因此我們需要一種模塊化方法。
因此,為每個關節開發了一個可以根據需要調用和使用的函數。每個關節都能夠接收無符號的 8 位值,然后將該 8 位值與 90 度 (1.5 ms) 脈沖寬度相加或相減,以獲得所需的角度。
我這樣做有幾個原因:
因此,我們需要確保操縱桿和手臂之間的運動對齊。
兩個操縱桿中,第一個連接到 JA,第二個連接到 JB(JA和JB是PMOD接口,就是普通的GPIO)。
JA 當沿 X 方向移動時,將向前或向后移動手臂;當沿 Y 方向移動時,它將上下移動手臂。
JB 在 X 方向移動時會旋轉手腕,在 Y 方向移動時會上下移動手腕。
每個移動函數的代碼都非常相似,并且可以在后面提供的代碼找到,但是,下面提供了向上向下函數以供參考
void up_dwn(u8 YData){
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;
u16 signal;
if( YData < 128 ){
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
+關注
關注
1626文章
21665瀏覽量
601806 -
機器人
+關注
關注
210文章
28191瀏覽量
206505 -
人工智能
+關注
關注
1791文章
46845瀏覽量
237535 -
伺服系統
+關注
關注
14文章
561瀏覽量
39179 -
驅動電機
+關注
關注
9文章
406瀏覽量
30693
發布評論請先 登錄
相關推薦
評論