案例:用機(jī)器人手臂mybot 280玩井字游戲
本案例設(shè)計了一個將計算機(jī)視覺與機(jī)器人控制相結(jié)合,與機(jī)械臂玩井字游戲的項目。
該項目由Karteek Menda創(chuàng)建,他在Github、YouTube和Medium上開源并發(fā)布了相關(guān)內(nèi)容。
井字游戲是一種經(jīng)典的雙人游戲,玩家輪流在3×3網(wǎng)格上做標(biāo)記。在水平、垂直或?qū)蔷€上成功放置3個標(biāo)記的玩家獲勝。
在這個項目中,我們將構(gòu)建一個簡單的人機(jī)對抗機(jī)器人系統(tǒng)。
myCobot 280 Pi
由大象機(jī)器人公司開發(fā)的myCobot 280系列代表了一系列6自由度協(xié)作機(jī)器人手臂,主要用于研究,教育,科學(xué)和技術(shù)應(yīng)用。mybot 280 Pi,配備樹莓派作為其控制板,設(shè)計為用戶友好,易于初學(xué)者學(xué)習(xí)和使用。
AI Kit 2023
AI Kit 2023包括一套教育設(shè)備,如攝像頭、鋁型材和木塊。附帶的視覺定位代碼可在gibook教程中獲得,允許用戶直接訪問它。這使用戶能夠快速學(xué)習(xí)計算機(jī)視覺識別和機(jī)器人控制,同時促進(jìn)二次開發(fā)。
極大極小算法
極大極小算法是一種常用于雙人回合制博弈的決策算法。極大極小算法的主要目標(biāo)是考慮所有可能的走法及其潛在結(jié)果,確定棋手的最佳走法。
以下是對極大極小算法工作原理的簡化解釋:
1. 評估功能:根據(jù)玩家位置的優(yōu)勢或劣勢為每個可能的移動分配一個值,而負(fù)值可能意味著劣勢。
2. 遞歸搜索:在決策樹中探索未來的移動,在最大化和最小化參與者之間交替進(jìn)行。
3. 回溯:將值傳回樹,最大的玩家選擇最高值,最小的玩家選擇最低值。
4. 最優(yōu)移動:樹的根表示初始游戲狀態(tài),算法選擇具有最高值的子節(jié)點移動,假設(shè)兩個玩家都是最優(yōu)的。
設(shè)置項目
1. 設(shè)置環(huán)境
PIP安裝openv -python
PIP安裝pymycobot
2. 設(shè)定游戲規(guī)則
3. 檢測ArUco定位
該函數(shù)識別圖像中的2個ArUco標(biāo)記,并計算每個標(biāo)記的中心坐標(biāo)(X, Y)。然后返回得到的X和Y坐標(biāo)以供進(jìn)一步使用,例如坐標(biāo)轉(zhuǎn)換、相機(jī)校準(zhǔn)或機(jī)器人定位。
4. 繪制游戲板
5. 顏色檢測
這部分代碼通過HSV顏色規(guī)則區(qū)分背景和棋子,得到棋子的中心坐標(biāo)。
6. 與攝像頭集成
這部分代碼使用計算機(jī)視覺實現(xiàn)了一個實時井字游戲。這款游戲涉及人類玩家和AI。它與攝像機(jī)交互,處理幀以檢測移動,并相應(yīng)地更新游戲板。
7、玩井字游戲
總結(jié)
本項目展示了如何利用機(jī)器人手臂myCobot 280 Pi構(gòu)建一個人機(jī)對抗的項目,突出了其技術(shù)能力、互動樂趣和教育價值。
本文編譯自hackster.io