国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于中國象棋機(jī)器人的人工智能實(shí)驗(yàn)平臺(tái)設(shè)計(jì)

2020-09-29 12:51:04王志遠(yuǎn)黃嘉龍湯浩楠陳衛(wèi)峰
無線電工程 2020年10期
關(guān)鍵詞:中國象棋下位棋盤

陳 磊,王志遠(yuǎn),黃嘉龍,湯浩楠,陳衛(wèi)峰

(揚(yáng)州大學(xué) 信息工程學(xué)院,江蘇 揚(yáng)州 225127)

0 引言

近幾年,隨著科學(xué)技術(shù)的創(chuàng)新,特別是人工智能技術(shù)的發(fā)展,機(jī)器人技術(shù)逐漸應(yīng)用到人們的生產(chǎn)、生活的各個(gè)角落。機(jī)器人技術(shù)[1-3]是一種集合了機(jī)械學(xué)、力學(xué)、電子學(xué)、生物學(xué)、控制論、人工智能和系統(tǒng)工程等多種學(xué)科于一體的綜合性高新技術(shù),隨著機(jī)器人技術(shù)的快速發(fā)展與成熟,各式各樣的機(jī)器人開始融入人們的生活,并且發(fā)揮著舉足輕重的作用。

機(jī)器博弈[4-5]是博弈游戲與計(jì)算機(jī)技術(shù)的結(jié)合,是人工智能領(lǐng)域里一個(gè)重要研究領(lǐng)域,在國際上已經(jīng)開展了半個(gè)多世紀(jì)。中國象棋是從兩軍對(duì)陣中抽象出來的一種博弈游戲,下棋的雙方無時(shí)不在調(diào)動(dòng)自己的一切智能,進(jìn)行演繹、推算。在人工智能領(lǐng)域始終將棋類的機(jī)器博弈作為最具挑戰(zhàn)性的研究方向之一[6]。目前,下棋機(jī)器人可采用機(jī)器人手臂實(shí)現(xiàn)運(yùn)動(dòng)結(jié)構(gòu),控制較為復(fù)雜,成本高。棋盤上感知棋子位置,可以在棋子中放入射頻芯片,棋盤上放入射頻識(shí)別芯片讀卡器[7],或用多個(gè)霍爾傳感器實(shí)現(xiàn)[8],但應(yīng)用傳感器數(shù)量太多,系統(tǒng)硬件實(shí)現(xiàn)困難。

本文旨在設(shè)計(jì)一個(gè)小型化、智能化的中國象棋機(jī)器人硬件實(shí)驗(yàn)平臺(tái),平臺(tái)的上位機(jī)可以用樹莓派或計(jì)算機(jī)實(shí)現(xiàn),用攝像頭識(shí)別棋子位置,機(jī)械結(jié)構(gòu)控制方便。系統(tǒng)可以直接與人進(jìn)行對(duì)弈,通過語音進(jìn)行提示,可以讓使用者有較好的臨場(chǎng)感。同時(shí)基于本實(shí)驗(yàn)平臺(tái),可以設(shè)計(jì)驗(yàn)證人工智能中常用的圖像識(shí)別、深度搜索和人機(jī)博弈等算法。

1 系統(tǒng)總體設(shè)計(jì)

本系統(tǒng)的實(shí)現(xiàn)包括機(jī)械結(jié)構(gòu)、上位機(jī)控制程序和下位機(jī)控制程序的設(shè)計(jì)。下位機(jī)通過串口與上位機(jī)通信,主要負(fù)責(zé)棋子取放的運(yùn)動(dòng)控制,上位機(jī)負(fù)責(zé)象棋的走棋算法和對(duì)棋子、棋盤的圖像識(shí)別處理等復(fù)雜運(yùn)算功能,對(duì)弈過程中的實(shí)時(shí)信息通過上位機(jī)控制音箱進(jìn)行語音播報(bào)。系統(tǒng)結(jié)構(gòu)框圖如圖1所示。

圖1 系統(tǒng)結(jié)構(gòu)框圖

2 機(jī)械結(jié)構(gòu)設(shè)計(jì)

中國象棋是一種對(duì)弈游戲,棋盤為長(zhǎng)方形,決定了象棋機(jī)器人的執(zhí)行結(jié)構(gòu)采用直角坐標(biāo)控制較為方便[9]。本系統(tǒng)平臺(tái)采用直角坐標(biāo)機(jī)器人,運(yùn)動(dòng)控制系統(tǒng)共有3個(gè)方向的運(yùn)動(dòng),每個(gè)運(yùn)動(dòng)軸分別對(duì)應(yīng)于直角坐標(biāo)系中的X,Y,Z軸。X,Y軸是水平面內(nèi)相互垂直的運(yùn)動(dòng)軸,Z軸是垂直于水平面的上下方向的運(yùn)動(dòng)軸。

通過對(duì)X,Y軸運(yùn)動(dòng)的控制,可以確定取放棋子的位置,所以X,Y軸要保證運(yùn)動(dòng)精度。系統(tǒng)采用42型步進(jìn)電機(jī)帶動(dòng)同步輪,同步輪帶動(dòng)運(yùn)動(dòng)履帶來實(shí)現(xiàn)X,Y方向的精確運(yùn)動(dòng)控制[10]。同步輪直徑為22.3 mm,步進(jìn)電機(jī)的步進(jìn)角為1.8°,所以運(yùn)動(dòng)精度可以達(dá)到每步0.35 mm。Z軸用來控制棋子的拿起和放下,只需要保證拿起棋子時(shí),棋子底面高于其他棋子即可,不需要嚴(yán)格的精度,因而系統(tǒng)采用推桿電機(jī)連接微型直流吸盤式電磁鐵,實(shí)現(xiàn)對(duì)棋子的取放功能。

系統(tǒng)由上位機(jī)控制固定于棋盤正上方的攝像頭獲取棋子的位置,與電機(jī)的運(yùn)動(dòng)控制形成一個(gè)閉環(huán)運(yùn)動(dòng)系統(tǒng),機(jī)械結(jié)構(gòu)如圖2所示。

圖2 中國象棋機(jī)器人機(jī)械結(jié)構(gòu)

3 硬件電路系統(tǒng)

中國象棋機(jī)器人硬件電路的主要功能是實(shí)現(xiàn)機(jī)械結(jié)構(gòu)的運(yùn)動(dòng)控制,由下位機(jī)控制實(shí)現(xiàn)。下位機(jī)的主控制器采用STM32F103RCT6單片機(jī)[11-12]。硬件電路框圖如圖3所示。

圖3 硬件電路框圖

下位機(jī)分別連接3路A4988步進(jìn)電機(jī)驅(qū)動(dòng)模塊,驅(qū)動(dòng)X,Y軸步進(jìn)電機(jī)和Z軸推桿電機(jī)。X,Y軸步進(jìn)電機(jī)配合攝像頭的圖像識(shí)別進(jìn)行運(yùn)動(dòng)定位,推桿電機(jī)用于抓取、移動(dòng)棋子。推桿電機(jī)的行程為10 mm,符合抓取棋子的高度要求。電磁鐵連接在推桿電機(jī)頂端,通電后產(chǎn)生足夠吸力,抓取象棋棋子。

4 軟件系統(tǒng)

系統(tǒng)軟件主要包括3部分:①下位機(jī)控制機(jī)械結(jié)構(gòu)運(yùn)動(dòng)的控制程序;② 上位機(jī)對(duì)被移動(dòng)棋子位置的圖像識(shí)別程序;③ 象棋算法程序。

下位機(jī)控制機(jī)械結(jié)構(gòu)運(yùn)動(dòng)的程序通過STM32單片機(jī)用C語言編程實(shí)現(xiàn),主程序流程如圖4所示。具體的運(yùn)動(dòng)方向和運(yùn)動(dòng)距離由上位機(jī)通過串口發(fā)送來的控制數(shù)據(jù)實(shí)現(xiàn)。

圖4 下位機(jī)主程序流程

識(shí)別棋子運(yùn)動(dòng)位置的算法[13-14],是上位機(jī)通過控制攝像頭捕獲棋盤畫面,用Python運(yùn)行OpenCV函數(shù)庫編程實(shí)現(xiàn)。已實(shí)現(xiàn)的系統(tǒng)中運(yùn)用了霍夫圓心檢測(cè)、HSV顏色提取和歸一化數(shù)組相結(jié)合的算法[15-16],如圖5所示。該算法成功的前提是棋盤初始化時(shí)棋子要放在正確位置,在對(duì)弈過程中,通過檢測(cè)棋子的圓心,根據(jù)棋盤變化來判定對(duì)手的棋子如何移動(dòng)。

圖5 進(jìn)行顏色分割后的棋盤及棋子

象棋的算法是在上位機(jī)中通過調(diào)用C++編程的中國象棋引擎實(shí)現(xiàn),主要包括局面表示、走法表示及生成、局面評(píng)估和搜索算法四大部分。中國象棋引擎棋力的高低主要由搜索算法的搜索深度決定。搜索深度越深,程序的棋力越強(qiáng)。系統(tǒng)中設(shè)定的初級(jí)、中級(jí)和高級(jí)不同難度,就是通過改變搜索深度來決定象棋機(jī)器人的棋力水平。搜索深度的優(yōu)先遍歷可用遞歸算法實(shí)現(xiàn),其中搜索深度與棋局結(jié)束條件作為遞歸終點(diǎn)。為了加快搜索速度,本系統(tǒng)使用Alpha-Beta剪枝算法[17]對(duì)搜索樹進(jìn)行剪枝。經(jīng)測(cè)算,當(dāng)搜索6層時(shí),Alpha-Beta搜索算法的效率是普通搜索算法的50~60倍。

5 系統(tǒng)調(diào)試

系統(tǒng)調(diào)試時(shí),幾個(gè)電機(jī)的參數(shù)設(shè)置對(duì)運(yùn)動(dòng)定位的精確性非常重要。系統(tǒng)X,Y軸電機(jī)是采用42型步進(jìn)電機(jī),步進(jìn)角是1.8°,通過對(duì)機(jī)械結(jié)構(gòu)的設(shè)計(jì)和反復(fù)測(cè)試,得到對(duì)應(yīng)步進(jìn)距離為每步0.35 mm。根據(jù)象棋棋盤每格的尺寸,以及步進(jìn)電機(jī)每個(gè)步進(jìn)字對(duì)應(yīng)的行進(jìn)距離,上位機(jī)可以推算出將棋子放置于不同位置需要的步進(jìn)脈沖數(shù),數(shù)據(jù)通過串口發(fā)送至下位機(jī)中進(jìn)行控制。

上電后系統(tǒng)初始化,電機(jī)歸位到棋盤一角,以此為基準(zhǔn)點(diǎn),進(jìn)行后面取放棋子的操作。每次取放結(jié)束后,Z軸的推桿電機(jī)都由X,Y軸的步進(jìn)電機(jī)歸位到棋盤上的基準(zhǔn)點(diǎn)位置,保證各步操作不會(huì)產(chǎn)生累積誤差,從而每次都能正確地取放棋子。對(duì)弈過程中,被象棋機(jī)器人吃掉的對(duì)方棋子,會(huì)被放置在棋盤下面的方格區(qū)域,以防止對(duì)后面的行棋產(chǎn)生影響。

6 結(jié)束語

本系統(tǒng)在直角坐標(biāo)運(yùn)動(dòng)系統(tǒng)的基礎(chǔ)上,通過攝像頭采集圖像進(jìn)行圖像識(shí)別,得到棋盤中棋子的變化。結(jié)合中國象棋引擎實(shí)現(xiàn)一個(gè)可以與人進(jìn)行對(duì)弈的中國象棋機(jī)器人。運(yùn)動(dòng)系統(tǒng)采用步進(jìn)電機(jī)實(shí)現(xiàn),保證系統(tǒng)執(zhí)行中的運(yùn)動(dòng)精度。上位機(jī)的功能,可以根據(jù)需要,采用計(jì)算機(jī)或樹莓派實(shí)現(xiàn)。目前系統(tǒng)已實(shí)現(xiàn)搜索深度為6步的象棋功能,從而可以控制不同難度等級(jí)的對(duì)弈機(jī)器人模式。系統(tǒng)可以作為人工智能算法的訓(xùn)練實(shí)驗(yàn)平臺(tái),可以在中國象棋的決策系統(tǒng)、圖像識(shí)別和視覺技術(shù)中進(jìn)行相應(yīng)的算法驗(yàn)證。此外,還可以增加語音控制功能,用以設(shè)計(jì)、驗(yàn)證語音控制算法,實(shí)現(xiàn)語音控制對(duì)弈象棋的功能。

猜你喜歡
中國象棋下位棋盤
發(fā)射機(jī)房監(jiān)控系統(tǒng)之下位機(jī)
馬踏連營
馬踏連營
讀寫算(上)(2016年12期)2016-12-13 10:50:39
景洪電廠監(jiān)控系統(tǒng)下位機(jī)數(shù)據(jù)傳輸網(wǎng)絡(luò)改造
圍觀黨“下位”,吐槽帝“登基”
中國象棋博弈程序中邊界判斷的優(yōu)化方法研究
棋盤人生
CAN總線并發(fā)通信時(shí)下位機(jī)應(yīng)用軟件設(shè)計(jì)
為業(yè)余棋手診脈
棋藝(2014年7期)2014-09-09 09:42:59
棋盤里的天文數(shù)字
福鼎市| 太保市| 松桃| 新河县| 都江堰市| 枣庄市| 江华| 建阳市| 容城县| 安吉县| 衡阳市| 大厂| 化隆| 呼图壁县| 漠河县| 金寨县| 高淳县| 清苑县| 筠连县| 蒙城县| 馆陶县| 崇州市| 通河县| 石河子市| 马公市| 无棣县| 景宁| 通许县| 东乡| 孟州市| 洪泽县| 蕉岭县| 中卫市| 兴业县| 太和县| 铜梁县| 大厂| 东丰县| 伊宁市| 临洮县| 定日县|