任 帥 張?jiān)骑w
(黑龍江科技大學(xué),黑龍江 哈爾濱150028)
智能象棋機(jī)器人以樹(shù)莓派為控制核心,由棋盤(pán)及棋子、光桿、傳送帶、齒輪、齒條等部分組成。該機(jī)器人的操作流程一般通過(guò)攝像頭來(lái)矯正棋盤(pán)并且對(duì)棋盤(pán)的位置進(jìn)行定位,然后在實(shí)時(shí)檢測(cè)棋子的位置的變動(dòng),通過(guò)玩家象棋在棋盤(pán)上的落子的位置,然后輸入到象棋的算法中,從而得到接下來(lái)得到象棋的應(yīng)下的坐標(biāo)位置。之后通過(guò)串口通信,把象棋落子的坐標(biāo)傳給stm32單片機(jī),單片機(jī)在控制舵機(jī)來(lái)完成棋子的抓取與放置的動(dòng)作,從而真正實(shí)現(xiàn)了人機(jī)交互的智能博弈象棋機(jī)器人。
本文設(shè)計(jì)了一種具有人機(jī)交互的象棋機(jī)器人。該結(jié)構(gòu)主要包括光軸、軸承、滑塊、支架等部分。在滑塊上存在四個(gè)直線軸承以方便光桿的運(yùn)動(dòng),在電機(jī)架上裝有兩個(gè)步進(jìn)電機(jī)用以控制光桿的移動(dòng),在機(jī)架旁邊裝有兩個(gè)支座用以支撐整個(gè)機(jī)械結(jié)構(gòu)。在滑塊上部放有一個(gè)接頭,并在光桿末尾也放置一個(gè)接頭用以安置光桿。在前部接頭上放置齒輪和齒條,通過(guò)驅(qū)動(dòng)舵機(jī)來(lái)使銜鐵裝置上下運(yùn)動(dòng)。設(shè)計(jì)的智能象棋機(jī)器人通過(guò)采用帶傳動(dòng)和導(dǎo)軌實(shí)現(xiàn)x,y 軸的運(yùn)動(dòng),從而使棋子達(dá)到準(zhǔn)確位置。通過(guò)齒輪齒條傳動(dòng)實(shí)現(xiàn)拾棋子和放棋子的動(dòng)作。智能象棋機(jī)器人整體外部側(cè)面結(jié)構(gòu)示意圖如圖1 所示。
圖1 整體外部結(jié)構(gòu)圖
在樹(shù)莓派上,移植使用opencv 做視覺(jué)處理部分,主要負(fù)責(zé)棋盤(pán)定位、局面判斷部分工作。
2.1.1 霍夫圓變換理論(Paul Hough)
Paul Hough 于1962 年提出一種簡(jiǎn)單的檢測(cè)圖形的算法,并將其命名為Hough 變換。 Hough 變換將圖像空間中的圖形檢測(cè)對(duì)應(yīng)為參數(shù)空間的投票統(tǒng)計(jì),將圖像空間和參數(shù)空間形成映射關(guān)系。通常將參數(shù)空間稱(chēng)作Hough 空間,投票的維數(shù)取決于檢測(cè)圖形的參數(shù)的個(gè)數(shù)。
結(jié)合opencvAPI 實(shí)現(xiàn)對(duì)圓形目標(biāo)的定位,相對(duì)于色彩匹配、模板匹配、深度學(xué)習(xí)等方式定位棋盤(pán)有著操作簡(jiǎn)單、穩(wěn)定性高、計(jì)算代價(jià)低、執(zhí)行效率高、可用于嵌入式平臺(tái)等優(yōu)勢(shì)。(圖2)
圖2 棋盤(pán)定位圖
2.1.2 仿射變換
仿射變換是一種由二維坐標(biāo)到二維坐標(biāo)之間的線性變換,保持二維圖形的“平直性”(即變換后直線還是直線,不會(huì)打彎,圓弧還是圓弧)和“平行性”(指保二維圖形間的相對(duì)位置關(guān)系不變,平行線還是平行線,相交直線的交角不變)。
利用仿射變換將已定位的四個(gè)定位點(diǎn)投影到方形矩陣中,避免了攝像頭畸變、攝像頭晃動(dòng)、俯視角度對(duì)圖像的影響,提高了運(yùn)行過(guò)程中的穩(wěn)定性及識(shí)別準(zhǔn)確性。
2.1.3 HSV 顏色空間
HSV 顏色空間反應(yīng)出了顏色的直觀性和人類(lèi)的視覺(jué)感知顏色完全吻合,其中顏色的種類(lèi)用色調(diào)H 表達(dá),色調(diào)H 的取值范圍為0°~360°,紅色用0°表示,綠色用120°,藍(lán)色用240°表示;顏色與光譜色程度相似就是飽和度S,飽和度S 表示顏色接近光譜色的程度。光譜色所占的比例越大,顏色接近光譜色的程度就越高,顏色的飽和度也就越高;顏色的明亮度就是V,明亮度表示顏色明亮的程度,所以色度和明亮信息能夠被HSV 顏色空間很好的區(qū)分。
通過(guò)霍夫圓變換對(duì)棋子進(jìn)行識(shí)別,后通過(guò)將棋子圖像提取轉(zhuǎn)為HSV 顏色空間,避免了不同光線條件下對(duì)顏色識(shí)別的影響,提高了設(shè)備的適應(yīng)能力。
2.2.1 對(duì)象棋中的文字進(jìn)行識(shí)別,采用knn(k 近鄰分類(lèi)算法)算法
knn 算法原理:存在一個(gè)樣本數(shù)據(jù)集合、每一個(gè)樣本數(shù)據(jù)都存在標(biāo)簽。在輸入沒(méi)有標(biāo)簽的新數(shù)據(jù)之后,將新數(shù)據(jù)的每個(gè)特征與樣本集數(shù)據(jù)的對(duì)應(yīng)特征進(jìn)行比較,然后提取出樣本集中最相似的分類(lèi)標(biāo)簽。通常來(lái)說(shuō),我們只選擇樣本數(shù)據(jù)集中前k 個(gè)最相似的數(shù)據(jù),最后,選擇這k 個(gè)相似數(shù)據(jù)中出現(xiàn)次數(shù)最多的分類(lèi),作為新數(shù)據(jù)的分類(lèi)。kNN 輸入需要特征矩陣,一般是固定大小的二值圖像。
文字識(shí)別流程:
(1)讀取樣本手寫(xiě)體txt 文件,轉(zhuǎn)化為1X1024 向量數(shù)。
(2)比較測(cè)試數(shù)據(jù)和樣本數(shù)據(jù)集的距離,返回k 近鄰中最相似的標(biāo)簽。
(3)比較標(biāo)簽與測(cè)試結(jié)果,計(jì)算正確率。
2.2.2 采用隨機(jī)森林算法對(duì)每一個(gè)棋子按照正確的走法向量,向后預(yù)測(cè)32 層
隨機(jī)森林是指利用多棵決策樹(shù)對(duì)樣本進(jìn)行訓(xùn)練并預(yù)測(cè)的一種算法。隨機(jī)森林在運(yùn)算量沒(méi)有顯著提高的前提下提高了預(yù)測(cè)精度,并且對(duì)多元公線性不敏感,結(jié)果對(duì)缺失數(shù)據(jù)和非平衡的數(shù)據(jù)比較穩(wěn)健,可以很好地預(yù)測(cè)多達(dá)幾千個(gè)解釋變量的作用。隨機(jī)森林基本單元是決策樹(shù),它的本質(zhì)屬于機(jī)器學(xué)習(xí)的集成學(xué)習(xí)方法,它相當(dāng)于集成了所有的分類(lèi)投票結(jié)果,將投票次數(shù)最多的類(lèi)別指定為最終的輸出。
具體實(shí)現(xiàn)過(guò)程如下:
(1)原始訓(xùn)練集為N,應(yīng)用bootstrap 法有放回地隨機(jī)抽取k個(gè)新的自助樣本集,并由此構(gòu)建k 棵分類(lèi)樹(shù),每次未被抽到的樣本組成了k 個(gè)袋外數(shù)據(jù)。
(2)設(shè)有mall 個(gè)變量,則在每一棵樹(shù)的每個(gè)節(jié)點(diǎn)處隨機(jī)抽取mtry 個(gè)變量,然后在mtry 中選擇一個(gè)最具有分類(lèi)能力的變量,變量分類(lèi)的閾值通過(guò)檢查每一個(gè)分類(lèi)點(diǎn)確定。
(3)每棵樹(shù)最大限度地生長(zhǎng), 不做任何修剪。
(4)將生成的多棵分類(lèi)樹(shù)組成隨機(jī)森林,用隨機(jī)森林分類(lèi)器對(duì)新的數(shù)據(jù)進(jìn)行判別與分類(lèi),分類(lèi)結(jié)果按樹(shù)分類(lèi)器的投票多少而定。
2.2.3 借鑒貪心算法通過(guò)對(duì)不同的棋子、不同的局面對(duì)棋子賦予分值,預(yù)測(cè)結(jié)束后推演出分值最佳的走法
貪心算法總是做出在當(dāng)前看來(lái)最好的選擇,也就是說(shuō)貪心算法并不從整體最優(yōu)考慮,它所做出的選擇只是在某種意義上的局部最優(yōu)選擇。貪心算法的基本思路是從問(wèn)題的某一個(gè)初始解出發(fā)逐步逼近給定的目標(biāo), 以盡可能快地求得更好的解。(圖3)
圖3 坐標(biāo)變換圖
2.3.1 脈沖生成算法:控制步進(jìn)電機(jī)
在原有的PWM 基礎(chǔ)上,在為其添加溢出中斷的功能,沒(méi)發(fā)出一周期的脈沖,就會(huì)發(fā)出一個(gè)定時(shí)器中斷信號(hào),在中斷服務(wù)函數(shù)中,對(duì)其計(jì)數(shù),當(dāng)達(dá)到預(yù)期值的時(shí)候,關(guān)閉定時(shí)器。這樣一個(gè)有固定個(gè)數(shù)的脈沖就可以精確的發(fā)出。
2.3.2 具體實(shí)現(xiàn)方式
通過(guò)串口實(shí)現(xiàn)上位機(jī)(樹(shù)莓派)與下位機(jī)(STM32)的數(shù)據(jù)傳輸,通過(guò)串口讀到x,y 軸需要運(yùn)動(dòng)的距離,計(jì)算出步進(jìn)電機(jī)需要輸入的脈沖數(shù),由STM32 發(fā)出脈沖控制兩個(gè)電機(jī)的運(yùn)動(dòng)。電機(jī)的正反向旋轉(zhuǎn)決定運(yùn)動(dòng)的方向。
該作品不僅能滿足一般的娛樂(lè)需求,而且有一定的應(yīng)用價(jià)值。當(dāng)今社會(huì)城市老人的孤獨(dú)問(wèn)題越來(lái)越受到社會(huì)的關(guān)注,象棋機(jī)器人正可與老人對(duì)弈,從一定程度上解決這個(gè)社會(huì)問(wèn)題。同時(shí),象棋機(jī)器人的圖像識(shí)別算法和機(jī)械控制算法為機(jī)器視覺(jué)和機(jī)器人控制提供了新的參考。另外,該作品還可用于教學(xué)演示及科技展覽,尤其適用于激發(fā)中小學(xué)生對(duì)科學(xué)的興趣愛(ài)好。
目前博弈機(jī)器人已經(jīng)有了一定程度的發(fā)展,國(guó)外已有相關(guān)產(chǎn)品上市,國(guó)內(nèi)也已經(jīng)開(kāi)始相關(guān)方面的研究,并取得了一些成果。2004 年我國(guó)首臺(tái)五子棋博弈機(jī)器人問(wèn)世,如今在中國(guó)科技館新館、鄭州科技館等科技館內(nèi)已有博弈機(jī)器人展出,然而這些機(jī)器人仍有體積龐大、成本過(guò)高等問(wèn)題存在。該作品在于將博弈機(jī)器人小型化、智能化,使其不僅是陳列在博物館的龐然大物,還是能夠真正為家庭提供娛樂(lè)的休閑用品。