智慧型機器手臂–第二部分:程式設計

目錄

第1步:製作App

我們已經設法打造了一個能夠處理語音命令的機器手臂。人們說出要求後,該手臂會找到目標物體並將其交給指定人物(它可以區分不同的人)。此外,它還可以播放線上音樂或告訴您當前的天氣情況。

該應用程式的軟體部分用Visual Studio 2015完成。Visual Studio簡單易用,並且提供了很多功能。其中一個功能就是Emgu CV—一個用於調用OpenCv函數的包裝函數公用程式。此功能通過Visual Studio Windows Forms實現,在處理圖像時非常重要。

如果想啟動項目,您只需在電腦上安裝Emgu CV即可。具體步驟如下:

1. 下載 EmguCV
您可以點擊 本頁“構建範例” 下方的超連結下載Emgu CV專案:

robotic arm

圖1 如何下載 EmguCV

2. 添加文件
由於您需要使用添加公用程式,因此應將它們包含在Visual Studio中。OpenCV基於C/C++語言開發,如果您想在C#中使用,那麼需要添加DLL(動態連結公用程式)檔——處理視頻時必須包含DLL檔。參考檔位於Visual Studio菜單的Solution Explorer處。

robotic arm

圖2 參考檔位置

如果您想添加更多檔案,請點擊References -> Add references,然後從下載的檔中選擇以下內容:

robotic arm

圖3 參考管理器(Reference Manager)

更多資訊可以參考以下連結:http://www.emgu.com/wiki/index.php/Setting_up_EMGU_C_Sharp

 

3. 範例

在下載的公用程式中,您可以找到更多使用影片處理(動態偵測、人臉辨識和相機擷取)的程式碼示例。

robotic arm

圖4 OpenCV應用示例

4. Arduino 程式

Arduino代碼具有4個命令:up/down負責控制伺服器;reset是指在出現問題時重置機器手臂位置;某個部件沒有動作時則使用do nothing 。程式具有四個自由度:

  • circle – 手臂可以旋轉;
  • base – 調整網路相機的傾斜度;
  • elbow – 旨在獲取手臂的最佳位置;
  • wrist – 調整抓握力。

每個伺服馬達都被下達一個控制指令去使用不同的引腳:Elbow使用引腳7;Base使用引腳8;Circle使用引腳9;Wrist使用引腳10。對於伺服器控制,C#應用程式通過序列傳輸發送4個字母,每個狀態對應於一個具體的馬達控制指令:

if(cmd == ‘A’) state = 1; control(1, posCircle);
if(cmd == ‘B’) state = 2; control(2, posBase);
if(cmd == ‘C’) state = 3; control(3, posElbow);
if(cmd == ‘D’) state = 4; control(4, posGH);

根據伺服馬達的運動角度,代碼分為控制和命令指令。

case 1中,Circle(旋轉)運動的命令為left/right(左/右)。

Case 1:

 

case 2 和 case 3中,我們考慮基座和肘部的伺服馬達,這意味著他們可以上/下(up/down) 引導手臂;遇到錯誤時,機器手臂會把自己設置為posBase = 50; posElbow = 50;

Case 2:

 

Case 3:

 

case 4中,我們需要控制爪鉗,這個非常簡單—將其初始位置設置為posGH = 50;

 

請將以下代碼添加到Arduino UNO中,以進行機器手臂控制: