馬成武
【摘 要】慧魚模型,是創(chuàng)新性極高的一種教學工具,可以組成各式各樣的模型機器人,可以模擬眾多現(xiàn)實場景。本研究是基于LabVIEW平臺,用慧魚模型設計一個人工智能五子棋機器人,最終完成了軟件和硬件的搭建。
【關鍵詞】慧魚模型;LabVIEW;人工智能;五子棋
中圖分類號: TP18 文獻標識碼: A 文章編號: 2095-2457(2018)35-0008-002
DOI:10.19694/j.cnki.issn2095-2457.2018.35.004
Research on Intelligent Backgammon Robot Based on Fischer Fish Model and LabVIEW
MA Cheng-wu
(School of Information and Mechanical Engineering, Shanghai Normal University, Shanghai 201418, China)
【Abstract】Fischer model is a kind of teaching tools with extremely high innovation, which is able to make various model robots and simulate many real situations. As for this research project, we design an intelligent gobang playing robot based on LabVIEW with the fischer model, and finally finishboth of the software and the hardware.
【Key words】Fischer model; LabVIEW; Artificial Intelligence; Gobang
0 引言
慧魚模型是在阿門·費舍爾先生于1964年發(fā)明的“六面可拼接體”的基礎上發(fā)展而成的技術含量很高的工程技術類智取拼裝模型,適合設計方案的探究和論證。Arduino 是一款便捷靈活、方便上手的開源電子原型平臺,能通過各種各樣的傳感器來感知環(huán)境,通過控制燈光、馬達和其他的裝置來反饋、影響環(huán)境,從而開發(fā)出很多互動作品。LabVIEW是一種程序開發(fā)環(huán)境,使用的是圖形化編輯語言編寫程序,具有強大的信號處理、分析和連接功能。
本研究課題設計了一款基于慧魚模型和LabVIEW的人工智能五子棋機器人,基本實現(xiàn)了人與機器之間的五子棋對弈功能。硬件部分利用慧魚模型組裝和搭建控制系統(tǒng)電路,負責采集棋盤落子信息、準確完成落子等。軟件部分利用Arduino和LabVIEW開發(fā)環(huán)境編寫相關程序,負責處理棋盤落子信息、發(fā)送下一步落子坐標、驅動硬件部分完成落子等,結合各種傳感器的反饋實現(xiàn)對慧魚模型基本的控制,最終實現(xiàn)機電一體化的完整設計。
1 設計內容
1.1 硬件部分
智能五子棋機器人的硬件,主要包括攝像頭、棋盤、機械臂(橫軸和豎軸)、直流電機、電磁鐵、指示燈、小滑輪以及各種用以連接、固定、支撐的部件等。
1.2 軟件部分
LabVIEW控制程序
Labview程序由四個部分組成:圖像讀取部分,圖像處理部分,五子棋算法部分,串口通信部分。
1.2.1 圖像讀取部分
圖像讀取部分的功能為通過攝像頭將棋盤拍攝下來以便后續(xù)進行圖像處理。
首先要用IMAQ Creat函數(shù)創(chuàng)建彩色和灰度圖像的圖像緩存,然后用IMAQdx模塊的一系列函數(shù)配置攝像頭,攝像頭直接采集到的是彩色圖像,利用IMAQ xtarctSingleColorPlane函數(shù)將其轉化為灰度圖像,其中Color Plane設置為Green。之所以轉化為灰度圖像,是因為五子棋只涉及到黑、白和棋盤底色三種顏色,將圖像黑白化讀取像素值即可,不需要其他復雜的顏色分析。
1.2.2 圖像處理部分
圖像處理部分是對之前得到的灰度圖像進行處理,將攝像頭拍到的棋盤轉化成數(shù)組,作為五子棋算法程序的輸入。
由于棋盤的規(guī)格為16×16,所以在前面板創(chuàng)建了一個16×16的二維數(shù)組,數(shù)組的每一格和棋盤的每一格對應。該二維數(shù)組用二重循環(huán)寫入,循環(huán)參數(shù)為15。在這個循環(huán)中,第一次讀取圖像上(32,30)點的像素,根據(jù)像素值確定其為黑、白還是空格,黑記為2,白記為1,空記為0,寫入數(shù)組的(1,1)格。第二次在(32,30)點的基礎上縱坐標加30(棋盤圖像上每一格的長寬都是30),得到數(shù)組上(2,1)格的信息。以此類推,最終整個數(shù)組都被寫入。
1.2.3 五子棋算法部分
五子棋算法計算的是機器落子的位置。輸入為棋盤數(shù)組,輸出一個長度為5的字符串OUTPUT,代表落子位置和是否獲勝。
要實現(xiàn)五子棋的算法,直接用Labview編寫較為繁瑣,因此選擇更為合適的C語言編寫程序。Labview的調用庫函數(shù)節(jié)點可以調用dll庫,而dll可以由C程序生成,這樣就可以在Labview里調用C語言編寫的程序, Labview程序框圖如圖3所示。
調用庫函數(shù)節(jié)點的輸入為array,即棋盤數(shù)組;輸出為X,Y,WIN,對應表1的三個標志。確(下轉第15頁)(上接第9頁)定好輸入輸出之后,用Visual C++6.0來生成dll文件。首先創(chuàng)建一個空的dll工程,然后在工程的source files創(chuàng)建一個.C文件,在工程的header files中創(chuàng)建一個.h文件。
在所創(chuàng)建的頭文件中添加如下代碼:
#ifndef FUNCTIONS_H
#define FUNCTIONS_H
__declspec( dllexport ) int testarray(int *array,int *X,int *Y,int *WIN);
#endif
__declspec( dllexport )不可缺少,它是用來聲明所創(chuàng)建的dll文件是用來給外部調用的。
在所創(chuàng)建的頭文件中添加如下代碼:
1.2.4 串口通信部分
串口通信部分是將OUTPUT發(fā)送到串口,利用Arduino控制電機的運動。程序框圖如圖4所示,
2 結果和結論
Arduino控制器是一款性能優(yōu)良的控制器,通過Arduino控制程序,實現(xiàn)了機器自動識別,自動落子,自動判斷勝負,可以實現(xiàn)人機博弈,是人機一體化的設計。
【參考文獻】
[1]修金鵬.Arduino與Labview互動設計[M].北京:清華大學出版社,2014:35-40.
[2]Arduino官網(wǎng),http://arduino.cc/en/Main/arduinoBoardUno.
[3]巴雷特,Arduino高級開發(fā)權威指南,機械工業(yè)出版社,2014,20,33-36.
[4]沃倫,亞當斯,莫勒,Arduino機器人權威指南,電子工業(yè)出版社,2014,24-25.