楊一帆,張亦凡,朱林峰,梅術(shù)龍
(武漢商學(xué)院 機(jī)電工程學(xué)院,湖北 武漢 430056)
當(dāng)今世界,對(duì)于人工智能的研究正在火熱地進(jìn)行,特別是在人機(jī)對(duì)弈方面,谷歌公司研發(fā)的 AlphaGo 人工智能系統(tǒng)打敗了世界圍棋冠軍,震驚全球。而在國(guó)內(nèi),人機(jī)對(duì)弈也有不小的發(fā)展。中國(guó)象棋作為一種從兩軍對(duì)壘中抽象出來(lái)的智力游戲,一向以其變化多端著稱,具有較高的博弈復(fù)雜度。近些年來(lái),隨著機(jī)器人技術(shù)的發(fā)展尤其是視覺(jué)識(shí)別系統(tǒng),機(jī)器人的功能越來(lái)越豐富,具有娛樂(lè)功能的智能機(jī)器人已經(jīng)成為一個(gè)重要的研究方向,象棋對(duì)弈智能機(jī)器人正是在這樣的背景下應(yīng)運(yùn)而生。
文章設(shè)計(jì)了一款基于視覺(jué)識(shí)別的象棋對(duì)弈機(jī)器人平臺(tái),分別由負(fù)責(zé)識(shí)別棋子與棋盤信息的視覺(jué)系統(tǒng)結(jié)構(gòu)、負(fù)責(zé)搬運(yùn)棋子的機(jī)械臂執(zhí)行機(jī)構(gòu)、棋盤平臺(tái)3 部分組成(見圖1),通過(guò)前兩部分結(jié)構(gòu)協(xié)調(diào)運(yùn)作,能夠完成在棋盤上的精準(zhǔn)落子,因此構(gòu)建可靠的視覺(jué)系統(tǒng)結(jié)構(gòu)和靈活的機(jī)械臂執(zhí)行機(jī)構(gòu)具有十分關(guān)鍵的意義。棋子擺放完成后,通過(guò)頂上的視覺(jué)傳感器識(shí)別,確認(rèn)每顆棋子的坐標(biāo)。在視覺(jué)傳感器識(shí)別完成后,識(shí)別的信息發(fā)送到電腦上位機(jī)中,實(shí)現(xiàn)計(jì)算機(jī)對(duì)棋盤的監(jiān)控。隨后通過(guò)上位機(jī)對(duì)機(jī)械臂進(jìn)行控制,機(jī)械手的控制系統(tǒng)主要由樹莓派主控板和舵控?cái)U(kuò)展板組成,另外還包括多個(gè)輔助硬件模塊。
圖1 對(duì)弈平臺(tái)總體
通過(guò)視覺(jué)攝像頭將棋局的實(shí)時(shí)畫面?zhèn)鬏數(shù)诫娔X端程序,相當(dāng)于人的眼睛,能夠達(dá)到保持象棋棋局的正常進(jìn)行以及對(duì)選手操作合理化的判定效果,所以對(duì)視覺(jué)系統(tǒng)結(jié)構(gòu)的設(shè)計(jì)也顯得尤為重要。
如圖2 所示,視覺(jué)系統(tǒng)安裝于棋盤平臺(tái)一側(cè),主要由基座、支架1、支架2、視覺(jué)攝像頭四部分組成,視覺(jué)攝像頭采用Open MV 攝像頭,具有結(jié)構(gòu)小巧、功耗低的特點(diǎn),且支持大量的視覺(jué)算法。攝像頭安裝于支架2上,俯視整個(gè)棋盤。利用攝像頭將整個(gè)棋局的畫面通過(guò)USB 線實(shí)時(shí)傳輸?shù)絇C 裁判端程序進(jìn)行圖像處理與結(jié)果的精準(zhǔn)判別,再通過(guò)PC 端對(duì)棋盤上落子點(diǎn)的坐標(biāo)校準(zhǔn),從而控制機(jī)械臂達(dá)到精確抓放棋子的要求。
圖2 視覺(jué)系統(tǒng)
2.2.1 機(jī)械臂參數(shù)選擇與仿真
在象棋對(duì)弈機(jī)器人的設(shè)計(jì)中,為了滿足中國(guó)象棋對(duì)弈的要求,同時(shí)使結(jié)構(gòu)盡可能簡(jiǎn)單,操作方便。選用關(guān)節(jié)型機(jī)械臂,結(jié)構(gòu)主要分為基座、大臂、小臂、末端執(zhí)行器四部分,底座為腰關(guān)節(jié)可旋轉(zhuǎn),連接底座與大臂的關(guān)節(jié)為肩關(guān)節(jié),連接大臂與小臂的部分為肘關(guān)節(jié),連接小臂與末端執(zhí)行器的部分為腕關(guān)節(jié),大臂與小臂通過(guò)基座在垂直平面內(nèi)自由運(yùn)動(dòng)。機(jī)械臂設(shè)計(jì)的一個(gè)關(guān)鍵點(diǎn)是其自由度的選擇,通過(guò)模仿人類手臂在象棋對(duì)弈過(guò)程中的特點(diǎn)與動(dòng)作需求,所以本設(shè)計(jì)采用四自由度的機(jī)械臂,即腰、肩、肘、腕四關(guān)節(jié)各一個(gè)自由度。機(jī)械臂通過(guò)腰關(guān)節(jié)控制左右旋轉(zhuǎn),肩關(guān)節(jié)與肘關(guān)節(jié)共同完成上下擺動(dòng),在腕關(guān)節(jié)末端接末端執(zhí)行器,通過(guò)執(zhí)行器完成棋子的抓取與落下[1]。
機(jī)械臂的結(jié)構(gòu)設(shè)計(jì)還需要考慮多種因素,包括運(yùn)動(dòng)方案、受力等多個(gè)方面。最主要還是以下方面:(1)執(zhí)行器必須擁有足夠的導(dǎo)向性能,這是為了防止手臂出現(xiàn)坐標(biāo)問(wèn)題,因?yàn)樵谶\(yùn)動(dòng)過(guò)程中會(huì)產(chǎn)生頻繁的相對(duì)運(yùn)動(dòng),為此,可以選擇正方形的機(jī)械臂來(lái)提高導(dǎo)向性。(2)機(jī)械手的剛度要足夠大,這是為了避免機(jī)械手因?yàn)槭芰^(guò)大導(dǎo)致規(guī)模變形。(3)要選擇合理的手臂截面形狀。
最后通過(guò)Matlab 軟件中的Robotics Toolbox(機(jī)器人仿真工具箱)可以很好地對(duì)機(jī)械臂進(jìn)行運(yùn)動(dòng)學(xué)仿真[2],用于針對(duì)機(jī)械臂模型設(shè)計(jì)的可靠性進(jìn)行驗(yàn)證。據(jù)實(shí)驗(yàn)數(shù)據(jù)表示,隨機(jī)從棋盤上的一點(diǎn)運(yùn)動(dòng)到另一點(diǎn)的過(guò)程中,各關(guān)節(jié)運(yùn)動(dòng)均未出現(xiàn)錯(cuò)誤,機(jī)械臂在D-H 坐標(biāo)系下的運(yùn)動(dòng)范圍也滿足棋盤大小的要求。在抓取或放置棋子時(shí),會(huì)先移動(dòng)到相應(yīng)棋盤格點(diǎn)的上方,然后在z 軸方向下降,以達(dá)到目標(biāo)位置。
2.2.2 末端執(zhí)行器選擇
控制棋子的方式可以分為抓取和吸附。抓取方式主要是通過(guò)模仿人手來(lái)進(jìn)行棋子的抓取。吸附方式是通過(guò)電磁和氣壓對(duì)棋子進(jìn)行吸附抓取。象棋棋子為餅狀,若選擇抓取式,可能會(huì)導(dǎo)致棋子在抓取過(guò)程中多次脫落,考慮到棋子本身質(zhì)量較輕,且外表面光滑以及對(duì)于機(jī)器的維護(hù),選擇氣動(dòng)吸附式執(zhí)行器。同時(shí)也為了盡量使得機(jī)構(gòu)的結(jié)構(gòu)簡(jiǎn)單、控制方便,而真空式吸盤除了滿足上述多個(gè)需求外[3],還具有吸力大、干凈衛(wèi)生的特點(diǎn),所以綜合考慮決定末端執(zhí)行器采用真空式空氣吸盤。
2.2.3 機(jī)械臂控制方式
控制器是機(jī)械臂最核心的部分[4],控制器的優(yōu)劣直接關(guān)系到機(jī)械臂的性能。為了更好地控制機(jī)械臂,可以選擇多CPU 分布式控制方式,通過(guò)在主機(jī)和單軸的CPU 之間設(shè)計(jì)并行的串口完成程序指令和傳感器完成預(yù)定動(dòng)作和任務(wù),同時(shí)通過(guò)負(fù)責(zé)的兩個(gè)位機(jī)的通信來(lái)保證數(shù)據(jù)的可靠及穩(wěn)定,如圖3 所示。
圖3 機(jī)械臂校準(zhǔn)流程
機(jī)器人想要很好地執(zhí)行命令是需要優(yōu)良的走法為基礎(chǔ),通過(guò)計(jì)算出來(lái)的走法來(lái)命令機(jī)器人運(yùn)動(dòng)。中國(guó)象棋是兩方相互博弈的過(guò)程,參與的雙方對(duì)于整個(gè)棋盤的任何一個(gè)棋子的身份都要清楚,還有哪一個(gè)位置有棋子也是必須要知道的。想要實(shí)現(xiàn)機(jī)器人對(duì)弈,以下的基礎(chǔ)是不可缺少的,第一個(gè)是棋局的表示方法,能夠讓機(jī)器人知道對(duì)方所走的棋步;第二個(gè)是產(chǎn)生最合理的走法規(guī)則,使博弈過(guò)程能夠更加健康地進(jìn)行;第三個(gè)是從很多種看似合理的棋步走法當(dāng)中選出最優(yōu)的走法;第四個(gè)是對(duì)當(dāng)前棋盤局勢(shì)做一個(gè)好壞的評(píng)估。想要計(jì)算出最優(yōu)的棋步,就需要對(duì)場(chǎng)上的局勢(shì)進(jìn)行評(píng)估,棋子之間的關(guān)系也是需要進(jìn)行估值的。棋子間價(jià)值關(guān)系的評(píng)估可以很好地提高估值的有效性,常常是博弈估值必不可少的重要內(nèi)容。
極大極小值算法是一種找出失敗的最大可能性中的最小值的算法(即最小化對(duì)手的最大得益)。雙方對(duì)弈時(shí),通常使用摸索的方法,即假設(shè)一方在走某一步棋之后對(duì)方會(huì)有何種走法與之應(yīng)對(duì),然后在對(duì)方可能的走棋之后,己方又可以進(jìn)行何種走法。極大極小值搜索就與這一過(guò)程類似,與局面估值相結(jié)合,局面估值越高則紅方的優(yōu)勢(shì)越大,局面估值越低則黑方的優(yōu)勢(shì)越大。當(dāng)紅方走棋時(shí),會(huì)選擇估值最大的局面對(duì)應(yīng)的走法,相反,當(dāng)黑方走棋時(shí),會(huì)選擇估值最小的局面對(duì)應(yīng)的走法。圖4 展示了一個(gè)極大極小搜索過(guò)程,粗箭頭表示最佳路徑片段。
圖4 極大極小值算法步驟
極大極小值算法是一種簡(jiǎn)單搜索。在當(dāng)前深度下,搜索博弈樹所有分支,搜索過(guò)程覆蓋博弈樹所有路徑,也就意味著這種搜索無(wú)任何風(fēng)險(xiǎn),得到的走法也是該博弈樹下的最佳走法,但是由于搜索過(guò)程也包含一些意義較小的節(jié)點(diǎn),使得搜索時(shí)間耗費(fèi)巨大,降低了搜索效率,因此以如今的計(jì)算機(jī)計(jì)算能力很難達(dá)到很深的搜索層數(shù)。
隨著人口老齡化的加劇,娛樂(lè)機(jī)器人越來(lái)越受到企業(yè)界和研究者的關(guān)注。圖像識(shí)別技術(shù)和人工智能技術(shù)作為娛樂(lè)機(jī)器人的一種,與國(guó)際機(jī)器人進(jìn)行融合。不僅能放松取悅用戶,還能提高使用者的智力,象棋機(jī)器人由ARM 主控模塊、棋盤識(shí)別模塊和運(yùn)動(dòng)控制模塊三大模塊組成。ARM 主控模塊作為系統(tǒng)核心,為整個(gè)系統(tǒng)的運(yùn)行提供了“ARM+嵌入式Linux”架構(gòu)的軟硬件平臺(tái)。在宿主機(jī)上建立嵌入式開發(fā)環(huán)境,然后將U-Boot 啟動(dòng)引導(dǎo)程序、根文件系統(tǒng)以及Linux 系統(tǒng)內(nèi)核移植到ARM 硬件系統(tǒng)平臺(tái)上。ARM 主控模塊同時(shí)是機(jī)器人行棋的決策中心,根據(jù)象棋博弈程序所決策出機(jī)器人下一步最佳走棋步驟,這些設(shè)計(jì)中最主要的有4個(gè)部分,即步法產(chǎn)生、局面表達(dá)、局面評(píng)價(jià)和博弈樹搜索算法,其中博弈樹搜索算法是關(guān)鍵,決定著機(jī)器人的智力高低。
通過(guò)對(duì)攝像頭的顏色閾值處理來(lái)精確地識(shí)別不同的顏色與形狀[5],并通過(guò)給定的代碼demo 來(lái)實(shí)現(xiàn)操作。最需要改進(jìn)的地方是關(guān)于棋局下法的問(wèn)題,如何更快地贏得棋局是最主要的問(wèn)題。這個(gè)問(wèn)題可以通過(guò)優(yōu)化結(jié)構(gòu)代碼,加深邏輯運(yùn)算來(lái)完成。對(duì)于機(jī)械臂而言,還有許多地方需要改善。機(jī)械手和傳感器的改進(jìn)[6],作為控制的對(duì)象,其自身的結(jié)構(gòu)、實(shí)際運(yùn)行效果將直接影響性能。文章所用的機(jī)械手,尤其是機(jī)械手的手爪部分要進(jìn)一步改進(jìn),加入壓力等傳感器,為控制提供較為完整的信息。第二部分是自動(dòng)控制算法的完善研究,機(jī)械手的自動(dòng)協(xié)同工作需要完善控制算法,特別是求解輸入?yún)?shù)和求解機(jī)器人的反向運(yùn)動(dòng)方程,還需要更多的優(yōu)化算法,使得所得到的控制參數(shù)更準(zhǔn)確、更完整。在此基礎(chǔ)上,今后還應(yīng)繼續(xù)改進(jìn)、完善,以提高該機(jī)械手系統(tǒng)的穩(wěn)定性和可靠性。