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