使用MyCobot 280 M5機(jī)械臂完成人與機(jī)器人之間的互動(dòng)游戲——經(jīng)典的石頭剪刀布
今天我收到了一個(gè)包裹,里面有幾件大象機(jī)器人公司的產(chǎn)品。貨物包裝良好,運(yùn)輸過程中不受機(jī)械沖擊。該包裝包含myCobot 280 M5機(jī)械臂,myCobot相機(jī)法蘭2.0和myCobot自適應(yīng)夾具。還有一個(gè)g形底座2.0,用于將機(jī)器人手臂連接到底座上。
該套件的主要部件是機(jī)械臂。Тhe盒子中包含機(jī)械臂、電源、USB電纜和連接外部模塊的電線。也有基本的說明,證書和鏈接。從第一眼看,它顯然是堅(jiān)固的和高質(zhì)量的,我將稍后檢查它的功能。
MyCobot 280是6自由度協(xié)作機(jī)器人(Cobot),重量為850克,有效載荷為250克,有效工作半徑為280毫米。它體積小,但功能強(qiáng)大??蛇m應(yīng)科研、教育、智能家居、商業(yè)研究等多種應(yīng)用場(chǎng)景。顧名思義,這款機(jī)型的特點(diǎn)是m5堆疊,有三個(gè)按鈕以及大量的輸入/輸出端口和引腳,用于控制額外的外部設(shè)備。它支持多種編程語言,如Python, c++, Arduino, c#等,以及Windows, Android, Mac OSX和Linux平臺(tái)。機(jī)械臂整體結(jié)構(gòu)簡(jiǎn)潔時(shí)尚,包含6臺(tái)高性能伺服電機(jī),響應(yīng)快,慣性小,旋轉(zhuǎn)平穩(wěn)。
在我開始描述我的自定義項(xiàng)目之前,我想描述一種簡(jiǎn)單的“拖動(dòng)教學(xué)”方法。拖拽教學(xué)是一種直觀的方法,用于編程機(jī)器人手臂的運(yùn)動(dòng),特別是在協(xié)作機(jī)器人和專門的工業(yè)機(jī)器人中常見。操作員不需要使用復(fù)雜的代碼,而是直接抓住機(jī)器人手臂,引導(dǎo)它沿著想要的路徑運(yùn)動(dòng)。然后,機(jī)器人可以在正常運(yùn)行速度下高精度地再現(xiàn)記錄的路徑。通過這種方式,我們可以最容易地捕捉到這個(gè)機(jī)械臂的性能,比如運(yùn)動(dòng)的準(zhǔn)確性、速度和平穩(wěn)性。
以下是對(duì)主要項(xiàng)目的描述,該項(xiàng)目將展示所有三個(gè)組件的功能:機(jī)械臂、相機(jī)和抓手。所以我決定開發(fā)一個(gè)著名的“石頭剪刀布”游戲的版本,在這個(gè)游戲中,每個(gè)玩家同時(shí)用伸出的手在三種形狀中做出一種——石頭、布和剪刀。
在特定的時(shí)刻,將顯示在顯示器上,并通過音頻信號(hào),人類和機(jī)器人將顯示三種形狀中的一種,然后,根據(jù)游戲規(guī)則,宣布獲勝者。讓我強(qiáng)調(diào)一下,機(jī)器人完全隨機(jī)地生成一個(gè)形狀,并且在它接收到人類顯示的形狀信息的同時(shí)。
讓我們從Python部分開始。在這里,我們使用myCobot Camera法蘭2.0,它通過USB電纜連接到PC。在Win10和Win11操作系統(tǒng)下,攝像頭會(huì)自動(dòng)安裝。首先,應(yīng)該在PC上安裝具有適當(dāng)支持(庫)的Python環(huán)境。Python版本3.11是從給定的鏈接安裝的,在安裝過程中應(yīng)該選中“Add Python to PATH”選項(xiàng)。
Python程序可以使用多個(gè)工具來執(zhí)行給定的任務(wù)。首先,我用OpenCV庫創(chuàng)建了一個(gè)代碼,但是確定手的形狀的能力相對(duì)較弱。然后我用TensorFlow平臺(tái)創(chuàng)建了一個(gè)運(yùn)行良好的代碼,但是整個(gè)安裝過程非常復(fù)雜。最后,我找到了使用b谷歌的MediaPipe框架的最簡(jiǎn)單但功能強(qiáng)大的解決方案。
需要在CMD(命令提示符)中依次運(yùn)行以下兩行來安裝多個(gè)組件:
Python -m PIP install——upgrade PIP
Python -m PIP install "mediapipe==0.10.20
在本文的末尾,給出了名為“MediaPIPE_Code”的Python代碼。我們只需要啟動(dòng)這個(gè)Python腳本,并在cmd窗口中選擇安裝M5Stack微控制器的串行端口。在我的例子中,它是COM17(意味著選項(xiàng)1)?,F(xiàn)在出現(xiàn)了一個(gè)帶有攝像機(jī)的窗口,現(xiàn)在我們需要在攝像機(jī)前顯示適當(dāng)?shù)男螤?。正如你所看到的,這個(gè)程序可以非常準(zhǔn)確地檢測(cè)這三種形狀。在命令窗口中,可以看到發(fā)送到串口的結(jié)果。
接下來是Arduino部分,這部分要復(fù)雜得多,所以我將嘗試詳細(xì)解釋安裝方法。首先,讓我們?cè)贏rduino IDE中安裝專門用于此M5Stack微控制器的支持。
接下來,我們需要安裝支持庫。
進(jìn)入Sketch——> Include Library——> Manage Library,在搜索框中輸入M5Stack。我將安裝M5Stack庫0.4.5版本
以同樣的方式安裝“MyCobotBasic”庫。
現(xiàn)在我們將做一些簡(jiǎn)單的測(cè)試來檢查機(jī)械臂和PC之間的通信,以及庫的功能。在Arduino中,我們選擇適當(dāng)?shù)亩丝?在我的情況下是COM17)并上傳名為“First communication TEST”的代碼。
在這個(gè)階段,不需要連接12V電源。如果一切正常,M5Stack顯示器上將顯示某些信息。我們還可以測(cè)試按鈕的功能。
接下來,我們連接12v電源和夾具,并上傳以下代碼,命名為“系統(tǒng)測(cè)試代碼”。此代碼首先將所有伺服(關(guān)節(jié))設(shè)置為默認(rèn)位置(0度),然后逐一測(cè)試所有伺服電機(jī)以及抓手。
如果這部分也有效,那么我們就完成了測(cè)試,我們需要繼續(xù)執(zhí)行特定任務(wù),即石頭剪刀布互動(dòng)游戲“人類vs機(jī)器人”。
為此,我將機(jī)械臂固定在一個(gè)堅(jiān)固的基礎(chǔ)上以保持穩(wěn)定,并將相機(jī)放置在一個(gè)特殊的支架上,盡管我可以以某種方式將其直接安裝在機(jī)械臂上(例如,它可以直接安裝在夾具上方,但對(duì)于這個(gè)特定的項(xiàng)目,這是不可能的,因?yàn)橄鄼C(jī)和矩陣顯示器總是在相反的方向)。我這樣做是出于實(shí)際原因,為了保護(hù)相機(jī)在測(cè)試過程中不受不必要的手臂運(yùn)動(dòng)的影響,而且這種類型的安裝設(shè)備是通用的,可以用于其他項(xiàng)目。
因此,我們需要將myCobot Camera法蘭2.0攝像機(jī)連接到PC的USB端口并激活Python腳本。在M5Stack微控制器上,首先需要上傳名為“Rock_Paper_Scissors_Game”的代碼。
屏幕上顯示三個(gè)選項(xiàng)。開始時(shí),手臂處于任意位置?,F(xiàn)在我們按下B鍵,它會(huì)逐漸把手臂移到一個(gè)可以開始游戲的位置。當(dāng)它穩(wěn)定后,我們按下A鍵開始游戲?,F(xiàn)在機(jī)器人站直了,矩陣顯示亮起藍(lán)色,這表明游戲已經(jīng)開始。與此同時(shí),倒計(jì)時(shí)3,2,1開始,之后我們必須在鏡頭前用手展示一定的形狀。
在人類顯示出一個(gè)形狀之前,機(jī)器人會(huì)靜止不動(dòng),等待人類提供數(shù)據(jù)。
在接收到這些數(shù)據(jù)后,機(jī)器人立即隨機(jī)生成石頭、布或剪刀這三個(gè)字符中的一個(gè)。重復(fù)一下,石頭是一個(gè)封閉的抓手,紙是一個(gè)開放的抓手,剪刀是一個(gè)開閉的抓手動(dòng)畫。當(dāng)兩名球員都顯示自己的形狀時(shí),它會(huì)顯示在顯示屏上,上半部分為人類,下半部分為機(jī)器人?,F(xiàn)在決定了獲勝者,如果機(jī)器人獲勝,則TFT顯示屏上的綠色表面上出現(xiàn)“我贏了”的信息,上面的矩陣顯示屏也亮起綠色,機(jī)器人向后傾斜。如果男子獲勝,TFT顯示屏的紅色背景上會(huì)顯示“你贏了”的信息,上面的矩陣顯示屏亮起紅色,機(jī)器人身體前傾,即鞠躬。如果結(jié)果是平局,TFT顯示屏上的黃色背景上會(huì)顯示“平局”字樣,上面的矩陣顯示屏?xí)疗瘘S色,機(jī)器人會(huì)左右移動(dòng)。
游戲始終伴隨著適當(dāng)?shù)囊纛l效果。在此之后,游戲結(jié)束,機(jī)器人返回到“準(zhǔn)備玩的位置”?!癈”鍵具有在游戲任何時(shí)刻顯示總分的功能。按下該鍵,顯示比分,兩秒后自動(dòng)消失。
最后是簡(jiǎn)短的結(jié)論。這個(gè)項(xiàng)目展示了一個(gè)完整的人與機(jī)器人之間的互動(dòng)游戲-經(jīng)典的石頭剪刀布-使用MyCobot 280 M5機(jī)械臂。該機(jī)器人通過Python + MediaPipe視覺系統(tǒng)識(shí)別人類手勢(shì),并通過實(shí)時(shí)動(dòng)作、LED反饋、聲音和顯示在M5Stack TFT顯示屏上的屏幕結(jié)果做出響應(yīng)。它是硬件控制、人工智能手勢(shì)檢測(cè)和嵌入式編程的完美結(jié)合。
本文編譯自hackster.io





