• 沒有找到結果。

中 華 大 學

N/A
N/A
Protected

Academic year: 2022

Share "中 華 大 學"

Copied!
61
0
0

加載中.... (立即查看全文)

全文

(1)

中 華 大 學 碩 士 論 文

設計及實現對奕機器人完成井字遊戲 Design and implementation of a playing robot to

accomplish the tic-tac-toe game

系 所 別: 電機工程學系碩士班 學號姓名: E09601011 杜東興 指導教授: 許 駿 飛 博士

中 華 民 國 九十九 年 八 月

(2)

摘 要

機器人技術與產業已是世界各國列為前瞻優先發展的新科技產業,其為一高度 技術整合且高附加價值的明星產業,可預期的是機器人也即將進入家庭環境成為一般 民眾生活的一部分,尤其人民的生活水準提高,各項物質生活品質提升,對於精神生 活的重視也與日俱增,因此,開始出現「第四級幸福產業」,其目的主要讓消費者有 幸福、親密感、滿足、被關懷,並找到歸屬的產業,其中互動式機器人便佔有舉足輕 重之地位。

互動式機器人具備智慧、互動與情感科技特性,其整合應用語音辨識、影像辨 識、語意分析、學習成長智能、情緒建模、情意認知互動與感知計算等技術,配合知 覺或環境感測器,並具備聲音、動作、表情、情緒表達特性,提供休閒娛樂、歸屬撫 慰、互動溝通與知識代理等關係。本論文設計一個可與人互動之對奕機器人,其利用 光感測模組來正確辨識出棋子的顏色,進而得知玩家所下之棋步,同時利用最佳解優 先搜尋法作為遊戲人工智慧演算法,可以適時判斷出適當的棋步,非常穩健的下每一 步棋,如此即可與玩家產生互動關係,讓玩家有幸福與親密感等感觸。

關鍵字: 對奕機器人、互動式、FPGA晶片、遊戲人工智慧演算法

(3)

ABSTRACT

Robot technology and industry have been listing as top priority new technology industries for development in various countries, which is a high technology integration and star industries with high added value can be expected that the robots are able to enter the general population living. Especially people's living levels enhanced, the material life upgraded, and spiritual life attention steadily increased, so “Quaternary Economic Sector”

appears. Interactive robot plays a significant role and its main purpose is to provide consumers with happiness, intimacy, satisfaction, be caring, and finding the industry attribution.

Interactive robots have intelligence, interaction and emotional technology characteristics, and they integrate speech recognition, image recognition, semantic analysis, learning and growing intelligence, emotion modeling, cognitive interaction and perception computing technologies to coordinate with the perception or environmental sensors.

Besides, they have sound, movement, expression and emotional characteristics to provide entertainment, comfort attribution, interactive communication and knowledge agents. In this thesis, we design a chess robot to interact with human, using light sensor module to correctly identify the color of pieces, and recognizes the chess after users placed the chess, and adopts “Best-First Search” as game artificial intelligence algorithm to determine appropriately and stably playing of each steps, thus chess robot can interact with users, so users can feel happiness and intimacy.

Keywords: chess robot, interactive, FPGA chip, game artificial intelligence algorithms.

(4)

誌 謝

離開學校多年後,能夠再回到校園繼續完成研究所學業,一直都是我的夢想,

很感謝中華大學電機所提供我圓夢的機會。由於自己在研究所的求學過程中,需要同 時兼顧課業、工作與家庭,所以除了上班時間要專注於工作外,下班後也要花許多時 間來經營家庭與陪伴兩位活潑的女兒,因此,特別珍惜這份得來不易的成果,也感謝 其中所面臨到的各項挑戰與磨練。在此先感謝指導教授許駿飛老師,感謝許老師在這 些年來不辭辛勞的指導與鼓勵,讓我在技術領域及為人處事都能得到更多的成長。也 感謝邱健榮學長,許多艱難問題在他耐心的解說及指點後,都能順利解決並獲益良 多。也感謝聚積科技的劉興富經理、長官以及工作夥伴們,不論在工作或學業上都給 我許多鼓勵與幫助,讓我有足夠的毅力與勇氣克服許多難關。另外要特別感謝父母、

親愛的老婆和兩位可愛的女兒,是你們提供我源源不絕的前進動力,讓我在分身乏術 的時候,可以更專注於學習、無後顧之憂,也因為有你們親切地關心與鼓勵,才讓我 能順利完成學業。最後,學習是一條永無止盡的道路,東興將期許自己在各方面都能 繼續成長與精進,並對社會有所貢獻。

杜東興于中華大學

民國九十九年七月

(5)

目 錄

摘要 ...i

Abstract...ii

誌謝 ...iii

目錄 ...iv

表目錄 ...v

圖目錄 ...vi

第一章 序論 ...1

1.1 互動式機器人介紹 ... 1

1.2 FPGA 介紹 ... 7

1.3 研究目的 ... 9

1.4 論文架構 ... 11

第二章 對奕機器人硬體架構 ...12

2.1 系統方塊圖 ... 12

2.2 Altera DE0 實驗板介紹 ... 13

2.3 樂高機器人零件介紹 ... 14

第三章 對奕機器人軟體架構 ...17

3.1 Quartus II 介紹 ... 17

3.2 Verilog 介紹 ... 19

3.3 程式流程圖 ... 19

3.4 遊戲人工智慧演算法 ... 24

第四章 實驗結果 ...30

4.1 模組程式實現 ... 30

4.2 實際範例 ... 41

第五章 結論...51

5.1 結果 ... 51

5.2 未來研究...52

參考文獻

...

53

(6)

表目錄

表 1-1 電子寵物的四大分類表...2

表 4-1 演算法模組的控制訊號說明表...32

表 4-2 軟體模擬結果說明表(1/5) ...34

表 4-3 軟體模擬結果說明表(2/5) ...36

表 4-4 軟體模擬結果說明表(3/5) ...38

表 4-5 軟體模擬結果說明表(4/5) ...39

表 4-6 軟體模擬結果說明表(5/5) ...41

(7)

圖目錄

圖 1-1 日本本田公司所發表之 Asimo 機器人 ...3

圖 1-2 韓國科技先進研究院所推出之機器人...3

圖 1-3 導覽機器人「小美」...4

圖 1-4 室內多功能服務型機器人...4

圖 1-5 萬代電子雞遊戲機...5

圖 1-6 Chapit 互動機器人 ...5

圖 1-7 電子寵物 AIBO ...6

圖 1-8 具有人工智慧的 Probo ...6

圖 1-9 具有療癒功能的 Paro...7

圖 1-10 利用樂高積木設計開發的「下棋機器人」...10

圖 2-1 下棋機器人之硬體架構圖...12

圖 2-2 以樂高積木所設計實現的「下棋機器人」...13

圖 2-3 Altera DE0 實驗板 ...14

圖 2-4 丹麥樂高公司所推出的 LEGO Mindstorms NXT...15

圖 2-5 NXT 的感應器及伺服馬達...15

圖 3-1 Quartus II 設計流程圖 ...17

圖 3-2 Quartus II 軟體主畫面 ...18

圖 3-3 程式流程圖(1/2) ...22

圖 3-4 程式流程圖(2/2) ...23

圖 3-5 核心控制程式以有限狀態機方式實現...23

圖 3-6 井字遊戲的 1~2 步棋局...27

圖 3-7 井字遊戲的 3~4 步棋局...27

圖 3-8 井字遊戲的 5~6 步棋局...28

圖 3-9 井字遊戲的 7~9 步棋局...28

圖 4-1 井字遊戲演算法的模擬時序圖...30

圖 4-2 井字遊戲演算法模組的架構圖...31

圖 4-3 table_in 及 table_out 與井字遊戲棋局的對應圖 ...33

圖 4-4 table_in 與 table_out 的範例說明 ...33

(8)

圖 4-5 軟體模擬結果說明圖(1/5) ...35

圖 4-6 軟體模擬結果說明圖(2/5) ...37

圖 4-7 軟體模擬結果說明圖(3/5) ...38

圖 4-8 軟體模擬結果說明圖(4/5) ...40

圖 4-9 軟體模擬結果說明圖(5/5) ...41

圖 4-10 棋盤掃描順序及棋盤位置的定義...42

圖 4-11 「玩家先下」實際範例(1/4) ...43

圖 4-12 「玩家先下」實際範例(2/4) ...44

圖 4-13 「玩家先下」實際範例(3/4) ...45

圖 4-14 「玩家先下」實際範例(4/4) ...46

圖 4-15 「電腦先下」實際範例(1/4) ...47

圖 4-16 「電腦先下」實際範例(2/4) ...48

圖 4-17 「電腦先下」實際範例(3/4) ...49

圖 4-18 「電腦先下」實際範例(4/4) ...50

(9)

第一章 序論

1.1 互動式機器人介紹

機器人技術與產業也已是世界各國列為前瞻優先發展的新科技產業[1-3],日本 已將機器人列為新產業創造戰略七大領域之一,韓國也列為十大新世代成長動力產業 之一,並投入大量資金與人力積極發展。機器人產業是結合機械、自動化、電機、電 子、資訊軟體、通訊及創意內容等相關技術,為一高度技術整合且高附加價值的明星 產業,可預期的是機器人也即將進入家庭環境成為一般民眾生活的一部分,對於國家 發展與國家經濟及工業整體發展具有關鍵性指標的地位。機器人的關鍵技術涵蓋機械 結構設計、馬達設計與控制、即時影像/語音處理、感測電路設計與實現、嵌入式系 統軟硬體設計、微處理器應用與 IC 設計、智慧型控制技術、機電整合等等的專業知 識,是一個需要系統整合才能有效發展的研究領域。目前智慧型機器人產業已是全球 矚目的焦點之一,各國也不斷針對機器人產業進行各種相關資訊蒐集,並提出各種的 預測數據。

自產業用途走向服務用途、自工廠走入人群,已是機器人發展公認的趨勢與潮 流,可預期的是機器人也即將進入家庭環境成為一般民眾生活的一部分。智慧型機器 人產業尚屬起步階段,根據經濟部的資料顯示,目前的智慧型機器人大多集中於保 全、清潔、娛樂和互動上面的應用,未來可以結合不同領域的發展。國內則於「行政 院 2005 年產業科技策略會議」中,決定將智慧型機器人產業發展目標分為三個階 段。第Ⅰ階段:期間由目前至西元 2008 年,預估產值將達到新台幣 300 億元;第Ⅱ 階段:期間由西元 2009 至 2013 年,預估產值將達到新台幣 900 億元以上;第Ⅲ階 段:期間由西元 2014 至 2020 年,我國將成為智慧型機器人主要製造國[4]。

歷經台灣光復後這六十幾年的台灣社會發展,過去和現在的生活型態的變化非 常劇烈,臺灣社會從以農業為主的被殖民社會,轉變成為以工商業為主的社會,人民 的生活水準提高,各項物質生活品質提升,對於精神生活的重視也與日俱增。統計台 灣三大都會區寂寞人口達 107 萬,生活型態趨向「單身化」,再加上快節奏的都市生 活步調、緊張的社會關係,使得生活感受產生更多壓力,「寂寞」因而變成為都市男 女的集體感傷。因此,台灣開始出現「第四級幸福產業」,其目的主要讓消費者有幸 福、親密感、滿足、被關懷,並找到歸屬的產業,其中互動式機器人便佔有舉足輕重

(10)

之地位。

為排解心靈空虛、尋求慰藉,寵物市場規模逐漸擴大,然而有部分族群因受限 於居住環境或其他個人因素而無法飼養寵物。電子寵物因兼具寵物部分功能,如陪 伴、撫慰等,又不像真實寵物需花費太多精神照顧,因此成為目前最流行的科技玩具,

甚至其扮演的已不只是玩具的角色,而是進一步強調「陪伴」的作用,建立友伴關係 已為電子寵物之設計趨勢,如此,互動式機器人的開發更被寄予厚望。互動式機器人 具備智慧、互動與情感科技特性,其整合應用語音辨識、影像辨識、語意分析、學習 成長智慧、情緒建模、情意認知互動與感知計算等技術,配合知覺或環境感測器(視 覺、聽覺、觸覺、嗅覺、光源、溫度、距離、壓力、速度、紅外線、超音波等),並 具備聲音、動作、表情、情緒表達特性,提供休閒娛樂、歸屬撫慰、互動溝通與知識 代理等關係。電子寵物可分成以下四大分類表,如下表 1-1 所示[4]:

類別 說明 相關應用技術舉例

科技玩具型電子 寵物

於現有玩具加入語音或其他電子 科技元素提高互動娛樂性

電子聲光,邏輯程式控制,語音辨 識,情感科技規劃為相關應用技術 動作智慧型電子

寵物

運用感測與動作控制技術發展行 為擬真仿生寵物

環境感測, 控制元件,電動機構,

電子情緒,生命形式, 服務平臺 為相關應用技術

娛樂 3C 或家電 型電子寵物

結合 3C 產品或運用網路提供數位 內容與服務或是結合語音辨識與 控制等進行數位元代理家電控制

環境感測,語音辨識, 數位內容 合作,網路連接服務,即時通訊整 合,家電控制,訊息交換,服務平 臺為相關應用技術

虛擬互動型電子 寵物

常見為軟體或網路服務形態或嵌 入消費性電子產品,以圖文聲光或 其他內容形式進行互動

數位劇情,互動規劃,觸控面板,

通訊連結,網路社群整合為相關應 用技術

表 1-1、電子寵物的四大分類表[4]

以下分別就國內外相關研究舉例說明:

l Asimo 人形機器人[5]

日本本田公司(Honda)由 1986 年開始研發人形機器人,至今已研發超過 20 年,

(11)

當初在研發 ASIMO 時就希望可研發最平易近人的機器人為目標。ASIMO 代表 Advanced Step in Innovative Mobility,是由本田公司所研發,全球唯一可爬行樓 梯且可慢速奔跑的機器人。ASIMO 具有語音及人類臉部辨識的智慧功能,可使 用手勢與人類進行溝通,且 ASIMO 的手臂可以開關電燈、大門等,甚至還可以 為客人端茶。

圖 1-1、日本本田公司所發表之 Asimo 機器人[5]

l 韓國科技先進研究院成果[6]

韓國科技先進研究院隸屬於韓國產業部門,在機器人領域中,以發展服務用機 器人、個人用機器人及人型機器人為主要項目。表情微妙微肖的愛因斯坦造型 機器人 Albert Hubo,如圖 1-2(a)、管家機器人 JOY,如圖 1-2(b)、與集教育、娛 樂、保全、清掃等多樣功能於一身的家用清掃機器人,如圖 1-2(c),都是他們所 開發設計之智慧型機器人。

(a) (b) (c) 圖 1-2、韓國科技先進研究院所推出之機器人[6]

l 台灣大學導覽機器人「小美」[7]

台灣大學在黃漢邦教授帶領成功研發全自動智慧型導覽機器人「小美」,如圖 1-3

(12)

所示,利用人工智慧與控制技術,先是自動辨識人臉、判斷觀眾所在位置,接 著自動偵測路線,清楚帶領觀眾逐一導覽台大校史館館藏,還會表現「好開心」、

「好生氣」等八種表情與情緒音調。當訪客注視某處時,「小美」機器人的頭 部也會跟著轉動,感覺就像和訪客一起注視同一個地方,容易讓訪客覺得很親 近。另外一個特色就是可以建立 2D 和 3D 的地圖,也就是說,它今天可以放在 台大校史館、那他也可以放在北美館、也可以放在國美館,可以放在任何地方,

讓這個機器人把這個環境地圖整個建立起來,建立起來以後,它就可以根據這 地圖做導航跟進一步的解說。

圖 1-3、導覽機器人「小美」[7]

l 中正大學室內多功能服務型機器人[8]

中正大學羅仁權教授的研究團隊所研發設計的「室內多功能服務智慧型機器 人」,如圖 1-4,機器人設計以居家和企業保全為用途,以多重感測理論為基礎,

機械手臂可以端茶水、攙扶老人,並具有比對資料庫的五官擷取影像建檔以辨 識入侵者。除完善的保全功能外,還有語音功能,可應用於保全勤務,並可透 過語音系統,詳細解說企業概況,是一部兼具保全、居家照顧服務功能與擔任 企業親善大使的機器人。

圖 1-4、室內多功能服務型機器人[8]

l 萬代電子雞遊戲機[9]

(13)

電子雞自從 1996 年 11 月 23 日問世後,在全球引發一股飼養熱潮,至今超過 10 年全球電子雞已經銷售超過七千萬個。萬代宣佈在台推出第四代電子雞遊戲 機「塔麻可吉」,如圖 1-5 所示,結合紅外線傳輸、網路服務功能,讓玩家的塔 麻可吉可以與其他的塔麻可吉交朋友、談戀愛、生小孩,甚至可以讓塔麻可吉 進入虛擬世界去過生活。如果找到喜歡的對象,還可以結婚生子、繁衍下一代,

甚至可能繁衍很多代。玩家可藉由塔麻可吉附的密碼,免費登入塔麻可吉鎮網 站讓你的塔麻可吉在虛擬世界中 shopping、喝咖啡、看醫生等,過著擬人化的 生活,玩家在這虛擬世界中購買的物品,還可帶回隨身電子雞遊戲機上,拿來 自用送禮兩相宜。

圖 1-5、萬代電子雞遊戲機[9]

l 可以開燈,開電視的 Chapit[10]

Chapit 全部的功能都是家庭的生活範圍為主,是家庭的成員之一,為了讓生活 更佳便利及開心而設計的。如圖 1-6 的 Chapit 互動機器人,可以識別男人,女 人或小孩 100 個單詞的語音命令,最高可識別 10000 個單詞常用對話資料庫,

同時可以記錄與使用者的聊天資料,通過一定數量的語音資料分析,察覺使用 者心情,進行語言和行為交流,並且可以與家電進行連網控制,可以指揮 Chapit 開燈,開電視,也可通過網路遠端控制。

圖 1-6、Chapit 互動機器人[10]

(14)

l 新力公司的 AIBO[11]

AIBO 是 SONY 新力公司於 1999 年首次推出的電子機器寵物,目前推展到第五 代,如圖 1-7 所示。在 AIBO 的體內,有一片極小的晶片,就是它賦予機器狗智 慧,使它會像真狗一樣做出各種有趣的動作,同時也設定了它成長的過程,你 要是和它相處久了,它會記得你的聲音、你的動作,還有你的容貌。

圖 1-7、電子寵物 AIBO[11]

l 微軟公司的 Probo[12]

圖 1-8 的 Probo 主要的任務就是陪伴醫院裡的病童,讓孩子在有時頗痛苦的醫療 過程中,得到心靈上的慰藉。這項計畫將來預計會在比利時首都布魯賽爾市的 兩家醫院中進行實驗,將來希望透過這個具有社群互動能力,強調語言、人工 智慧、以及守護孩童心靈的機器人,能讓病童在接受治療的過程中更順利,並 能健康平安的出院。

圖 1-8、具有人工智慧的 Probo[12]

l 具療癒功能的 Paro[13]

帕羅(Paro)安裝有感知影像、視覺、聽覺、觸覺和姿勢的感測器,可以根據人們 對它的觸摸方式,相應地調整動作,如圖 1-9 所示。可以管理老年人的日常生活、

提醒他們按時吃藥。它們還可以用作通訊工具,為用戶提供無線語音和視頻連

(15)

接,與遠方的朋友和家人進行交流。帕羅最大的特點,是可以對人的接觸產生 交互反應。當你對著它"甜言蜜語"或愛撫一番時,帕羅會撲閃著眼睛,眨動長長 的睫毛、扭動身軀、發出小海豹般的叫聲;但如有人對它不理不睬;它則會表 現出委屈和憤怒。帕羅還有一套固定的作息時間,白天伴人玩耍,夜晚安然入 睡。其外形、動作和聲音充分刺激人的感官,讓人們有與之交流的感覺,從而 豐富人的生活,成為老年人的忠誠“伴侶”。

圖 1-9、具有療癒功能的 Paro[13]

1.2 FPGA 介紹

FPGA(Field Programmable Gate Array)為「場式可程式閘陣列」的簡稱,是一 個可供使用者程式化編輯邏輯閘元件的半導體晶片 FPGA 簡單來說就是可再程式化 的晶片,透過預先建立的邏輯區塊與可程式化電路,不需更改麵包板或焊接部分,即 可設定這些晶片以建置客制硬體功能,使用者可透過軟體開發數位運算系統並做編譯 [14-16]。另外,FPGA 有完全可重設特性,當使用者重新編譯不同的電路設計時,可 立刻擁有不同的電路特性。這在過去,工程師必須深入瞭解數位硬體設計,才有辦法 應用 FPGA 技術。高階設計工具的新技術可針對圖形化程式或 C 程式碼,轉換為數 位硬體電路,這變更了 FPGA 程式設計的規則。由於 FPGA 晶片在實際應用時具有 高度的靈活性,同時在佈局時可以輕易的完成重新配置,故可以輕易的配合各種應 用,因此近年來 FPGA 已成為各種電子相關產品不可缺少的基本元件,而且利用硬體 描述語言所完成的電路設計,可以經由開發工具做簡單的綜合與佈局,使之快速燒錄 到 FPGA 上進行測試,為現代 IC 設計驗證的技術主流。

目前來說 ASIC(Application-Specific Integrated Circuit)依然是市場上產品的主 流,它是指依特定用途而設計的特殊規格 IC,它相當省電並適用於具有特殊需求的

(16)

應用中,但 ASIC 不能重新設置,故其功能在產品開發過程中無法任意修正或改善;

因此任何線路的改變都必須重新設計與製造,如此不僅使得開發成本增加,甚至會影 響產品的上市時間。目前 ASIC 仍然主宰了主流的高效能晶片設計,但是隨著 FPGA 架構的演進,其可自訂的功能架構將可以滿足更多設計上的需求,這對於只能進行固 定功能的 ASIC 晶片而言,FPGA 將具有相當大的競爭優勢。

就開發所需金額而言 ASIC 的 90 奈米光罩費用就高達 100 萬美元左右,但這只 是其中的冰山一角而已,經市場調查數據統計來估算的話,生產一顆 ASIC 總成本估 計達 2,500 萬美元,其中有大半成本主要來自驗證工具。目前許多工程技術均不停的 在研究,以試圖提升晶片首次測試就能成功運作之可能性,以避免花費大量時間進行 驗證與大筆的光罩費用,如此才可提升該產品之市場競爭力。從系統應用角度來看,

FPGA 工作速度雖然比 ASIC 來得慢,且功率損耗也較 ASIC 來的高,但在整體設計 上 FPGA 較 ASIC 來的精簡。FPGA 主要優點在於可以快速的完成成品,所以 ASIC 在初期開發時往往採用 FPGA 來做初步的設計,直到完成整個設計與驗證的過程之後 再將之轉移到 ASIC 上,為的就是縮短 ASIC 進行驗證時的時間與避免金額高昂的光 罩費用[14]。

FPGA 成功整合 ASIC 與處理器架構的系統,使 FPGA 晶片可應用於所有產業。

FPGA 具有硬體時脈的速度與可靠性,僅需少量資源即可進行作業,可降低客制化 ASIC 設計費用。可程式化設計的晶片具有與軟體相同的特點「彈性」,與微處理器 所不同的是 FPGA 為硬體平行架構,因此在不同的硬體電路處理不同的作業時,並不 需要佔用相同的處理器資源,每個獨立的作業均可指派到專屬的硬體電路中,不影響 其他邏輯電路資源。因此,當新增其他硬體電路時,某電路的效能亦不會受到影響。

現今 FPGA 正朝向高密度的方向發展,除了有助於系統的縮小,同時也能提高產品的 穩定性,除了能夠大幅縮減設計開發的工作週期之外,同時也能有效的提升其設計效 率,另外在整體架構方面,除了 FPGA 原本具備的可程式邏輯閘之外,FPGA 架構也 不斷朝向整合更多的內建專用電路,由於在功能輸入方面全面採用標準的硬體描述語 言,因此當使用 FPGA 來進行專案設計時,可以完全不管實作時硬體邏輯閘的處理,

因為晶片開發商所提供的工具已為使用者進行了眾多處理程式,所以硬體設計者將可 以更專心於進行功能描述方面的設計工作。其擁有以下優點[14]:

l 硬體平行處理,提升系統效能

(17)

透過硬體的平行處理機制,FPGA 可突破循序執行(Sequential Execution)

的固定運算,在每時脈循環完成更多作業,以超越數位訊號處理器(Digital Signal Processor)的計算功能。

l 不需 ASIC 生產,縮短產品上市時間

對上市時間而言,FPGA 技術具有彈性與快速製作的功能,使用者不需進 行客制化 ASIC 設計的冗長過程,即可在硬體中測試或驗證某個電路觀念,僅需 數小時即可變更或替換 FPGA 設計。

l 無光罩費用,降低研發費用

由於 ASIC 硬體需要客制化以適用在不同系統上,FPGA 可程式化的特點不 需光罩費用,可大幅降低研發及重置費用,由於系統需求隨時在變,若與 ASIC 龐大的設計研發及修改費用相較,FPGA 硬體架構的設計成本實在微不足道。

l 專屬硬體資源,系統可靠度高

對於微處理器核心來說,每次只能執行 1 組指令碼,所以要藉由虛擬的作 業系統來處理許多重要的資源分配作業。FPGA 不需使用作業系統,可將發生問 題的機會降至最低,以專屬的硬體資源平行處理多項作業。

l 可重複規劃,方便產品長期維護

因為產品規格常隨時間而改變,ASIC 架構的介面可能面臨規格不符等問 題,由於 FPGA 晶片有即時升級(Field Upgradable)特性,可隨時因應新的需 要而做修改,不需像 ASIC 再重新設計或修改硬體基板,即可提升相關功能。

1.3 研究目的

機器人技術與產業已是世界各國列為前瞻優先發展的新科技產業,全世界在機 器人研發投入相當多的人力與成本,尤其是日本在機器人產業發展最為全面,機器人 產業為一高度技術整合且高附加價值的明星產業,可以預期在不久的將來機器人也將 進入家庭環境,成為一般民眾生活的一部分,對於國家經濟及工業整體發展有關鍵性 指標的地位。本論文利用樂高積木設計開發一個「下棋機器人」,如圖 1-10 所示,一 般的樂高模型完成之後是『靜』態模型,玩家可以自由想像並沈浸在觀賞之中。樂高 公司於 2006 年 9 月上旬推出教育用「LEGO Mindstorms NXT」[17, 18],Mindstorms 是將配備微處理器的 LEGO 公司的塑膠積木組裝起來,透過個人電腦程式所控制的

(18)

機器人,將模型加上馬達等動力元件,就可以進化為『動』態模型,有了動作,玩家 可以有更多的玩法。

圖 1-10、利用樂高積木設計開發的「下棋機器人」

歷經台灣光復後這六十幾年的台灣社會發展,過去和現在的生活型態的變化非 常劇烈,臺灣社會從以農業為主的被殖民社會,轉變成為以工商業為主的社會,人民 的生活水準提高,各項物質生活品質提升,對於精神生活的重視也與日俱增。統計台 灣三大都會區寂寞人口達 107 萬,生活型態趨向「單身化」,再加上快節奏的都市生 活步調、緊張的社會關係,使得生活感受產生更多壓力,「寂寞」因而變成為都市男 女的集體感傷。本論文所提出之「下棋機器人」會陪玩家下井字遊戲,利用 Quartus II 核心處理系統實現遊戲人工智慧,該遊戲人工智慧主要利用極大極小法,以考慮系統 和玩家最佳的棋步為前提,選擇下一步對系統最有利且傷害性最低的棋步,優點是可 以非常穩健的在下每一步棋。並利用 Verilog 硬體描述語言撰寫與硬體相關之介面程 式,包含馬達定位控制來控制棋盤位置、光感測器與觸碰開關來與使用者互動。透過 Quartus II 強大的處理能力,可很容易做到大規模的系統整合,更可以減少設計產品 週期。本論文所提出之以 FPGA 為基礎之下棋機器人開發環境將可很容易延伸至四子 棋、五子棋和黑白棋等棋奕類遊戲領域上。

(19)

1.4 論文架構

本論文共分為五個章節,第一章,在做本論文的引言,說明研究動機與目的、

系統特性以及相關文獻探討。第二章,在介紹對奕機器人的硬體架構,分別介紹系統 方塊圖、Altera DE0 實驗板及樂高機器人零件。第三章,在介紹對奕機器人的軟體架 構,分別介紹 Quartus II、Verilog、程式流程圖及遊戲人工智慧演算法。第四章,在 說明實驗結果,包含演算法模組程式的軟體模擬結果及實際範例的執行結果說明。第 五章,在總結本論文的研究結果,並對未來的研究方向做說明。

(20)

第二章 對奕機器人硬體架構

2.1 系統方塊圖

本論文所提出之「智慧型下棋機器人」,其硬體架構圖如圖 2-1 所示,其中 Altera DE0 多媒體開發平臺搭載了 Altera Cyclone III 系列中的 EP3C16 FPGA,是一套輕薄 型的開發板,十分適合本作品使用,伺服馬達-X 與伺服馬達-Y 用來控制棋盤的位置 移動,伺服馬達-Z 用來控制機器人下棋動作,光感應器用來擷取棋盤資訊,觸碰感 應器則用來感知玩家已完成下棋動作。

本論文利用樂高積木設計開發一個「下棋機器人」,如圖 2-2 所示,會陪玩家下 井字遊戲,該機器人利用 Quartus II 核心處理系統實現遊戲人工智慧,遊戲人工智慧 主要利用極大極小法,以考慮系統和玩家最佳的棋步為前提,選擇下一步對系統最有 利且傷害性最低的棋步,優點是可以非常穩健的在下每一步棋。並利用 Verilog 硬體 描述語言撰寫與硬體相關之介面程式,包含馬達定位控制來控制棋盤位置、光感測器 與觸碰開關來與使用者互動。透過 Quartus II 強大的處理能力,可很容易做到大規模 的系統整合,更可以減少設計產品週期。本論文所提出之以 FPGA 為基礎之下棋機器 人開發環境將可很容易延伸至四子棋、五子棋和黑白棋等棋奕類遊戲領域上。

圖 2-1、下棋機器人之硬體架構圖

(21)

圖 2-2、以樂高積木所設計實現的「下棋機器人」

2.2 Altera DE0 實驗板介紹

Altera DE0 FPGA 教育開發板是一套輕薄型的開發板,如圖 2-3 所示[16],其必 要的開發工具、參考設計和相關配件均一應俱全,相當簡單、容易上手,非常適合本 論文使用。DE0 搭載了 Altera Cyclone III 系列中的 EP3C16 FPGA,可提供 15,408 邏 輯單元(Logic Elements)以及 346 I/O 埠。DE0 開發板還搭配了豐富的週邊裝置描述 如下:

Altera Cyclone III 3C16 FPGA(含有 15,408 邏輯單元)

One 8M byte Single Data Rate Synchronous Dynamic RAM memory chip 4M byte NOR Flash 記憶體

SD card socket

內建 Altera 的 USB Blaster 電路 Altera 序列配置器

3 個按鈕開關 10 個滑動開關 10 個綠色 LED 4 個七段顯示器

16x2 LCD 介面(不包含 LCD 模組)

50 MHz 振盪器

(22)

VGA 輸出

一組 RS-232 訊號接腳(不包含 DB-9 連接器)

一組 PS/2 埠(若要同時接滑鼠與鍵盤,可使用 PS/2 Y Cable 做擴充)

兩組 40-pin 擴充槽

圖 2-3、Altera DE0 實驗板[16]

2.3 樂高機器人零件介紹

一般的樂高模型完成之後是「靜態模型」,玩家可以自由想像並沈浸於觀賞之 中。丹麥樂高(LEGO)公司於 2006 年 9 月,推出該公司和美國麻省理工學院共同 開發出的新款機器人套件「教育用 LEGO Mindstorms NXT」[17],如圖 2-4 所示。

LEGO Mindstorms NXT 是樂高公司最新一代的機器人,由配備微處理器的樂高 公司的塑膠積木組裝起來,透過個人電腦所製作的程式來控制的機器人。其最大優點 只要一組機器人套件,即可發揮天馬行空的想像力,輕鬆做出有趣又好玩的作品。此 時,若將模型加上馬達等動力元件,就可以進化為「動態模型」,有了動作,玩家可 以有更多的玩法。有了 NXT 主機及感應器,NXT 樂高機器人模型就能夠具備「互動」

的效果,針對周遭環境的變化,產生不同的對應動作。

(23)

圖 2-4、丹麥樂高公司所推出的 LEGO Mindstorms NXT[17]

樂高機器人 NXT 採用 32 位元微處理器,內建 USB 和藍芽技術。除了主機功能 增強,改採伺服控制馬達,能讓程式精確地調整速度,而感測器也變得多樣且功能更 強,例如超音波感應器、光感應器、顏色感測器、聲音感測器等。NXT 具有 4 個輸 入感應裝置,以及 3 部直流伺服馬達,可提供玩家多樣化的互動式控制選擇,如圖 2-5 所示,其中由左至右分別為[17]

l 觸碰感應器:可以感應已觸碰到物體或障礙物。

l 光感應器:可以辨識光亮、黑暗,以及不同的色階。

l 音源感應器:可以感應聲音分貝的大小數值。

l 超音波感應器:可以辨識障礙物的距離。

l 伺服馬達:可以控制正轉、反轉、轉速,以及旋轉角度。

圖 2-5、NXT 的感應器及伺服馬達

軟體方面也是以舊版的程式編輯軟體再做提升,一方面是配合一些新的硬體功 能,一方面也盡量將整體的圖像變得更漂亮,操作更人性化,還有豐富的教學系統;

此外,還有加入了許多支援系統,例如線上更新,可直接連結到官網下載新的元件。

這次除了透過 USB 來下載程式到 NXT 主機上面,還支援了藍芽無線傳輸功能,可以

(24)

透過電腦上的藍芽接收器來將程式直接下載到 NXT 主機,也因此,可以透過手機就 可以接收或發送訊息給 NXT 主機或者發展成透過手機來遙控樂高機器人...等。如果 肯花時間學,樂高在軟體上提供了一個很好學習和編輯的環境!! NXT 真的是一套很 棒的寓教於樂的樂高商品,想寫寫簡單的程式也可以玩得很開心。如果想寫很複雜的 程式搭配複雜的機械結構,也絕對可以透過 NXT 來實現。

(25)

第三章 對奕機器人軟體架構

3.1 Quartus II 介紹

Quartus II 是 Altera 專 門 為 其 產 品 , 所 提 供 的 電 子 設 計 自 動 化 ( EDA, Electronic Design Automation) 工 具 , 可 提 供 執 行 HDL 的 編 輯 ( Editor)、 模 擬

( Simulator)、合 成(Synthesis)、FPGA 佈 局( Layout)及 程 式 下 載( Netlist Download)。 Altera Quartus II 設計軟體提供完整的多平台設計環境,能直接滿足特 定設計需要,為可程式化單晶片系統(SOPC)提供全面的設計環境。Quartus II 軟體 含有 FPGA 和 CPLD 設計所有階段的解決方案[14]。在 Quartus II 純文字編輯器中,

利用 AHDL、Verilog HDL 或 VHDL 設計語言做設計。Verilog 和 VHDL 設計檔可以 包含 Quartus II 所支援構造的任意組合。還可以包含 Altera 提供的邏輯功能,使用 Quartus II 模擬器對設計進行功能與時序模擬。根據所需的資訊類型,可以進行功能 模擬以驗證設計的邏輯功能,也可以進行時序模擬,可在最快的元件速率上模擬時序 條件。

圖 3-1、Quartus II 設計流程圖

(26)

使用 Analysis & Synthesis 分析工具並合成 Verilog HDL 和 VHDL 設計。Analysis

& Synthesis 包括 Quartus II 系統合成,它完全支援 VHDL 和 Verilog HDL 語言,並提 供控制合成過程的選項。在 Quartus II 軟體中 Fitter 對設計進行佈局,使用由 Analysis

& Synthesis 建立的資料庫,將專案的邏輯和時序要求與元件的可用資源相匹配。它將 每個邏輯功能分配給最佳邏輯單元位置,進行佈線和時序分析,並選定相應的互連路 徑和接腳分配。Quartus II 提供了高效完成 FPGA 設計的最佳環境,可以更快地達到 時序逼近,滿足功耗預算,全面提升 Altera 元件的性能優勢,這一切都不會增加 FPGA 開發時間,可幫助使用者提高效率並縮短設計週期,並與現有可程式化邏輯設計流程 整合,以快速有效地達到性能和時序要求。

Quartus II 為每階段的設計流程提供圖形使用者介面(Graphic User Interface)、

EDA 工具介面以及命令行介面。可以在整個流程中只使用這些介面中的一個,也可 以在設計流程的不同階段使用不同介面,這些介面適用於每個設計的流程中,便利設 計者的使用。在 Quartus II 使用工具 Programmer Assembler 產生的 Programmer Object 檔和 SRAM Object 檔對 QuartusII 軟體支援的所有 Altera 元件進行編程或配置。可以 將 Programmer 與 Altera 編程硬體配合使用,例如 MasterBlaster™、ByteBlasterMV™、

ByteBlaster™II 或 USBBlaster™ 下載纜線,將 Netlist 下載至 CPLD 或 FPGA。由於 Quartus II 的模擬器只能接受自己所編輯的波形作為觸發輸入(Test Pattern),而不能 接受一般 HDL 所撰寫的測試平台(Test-Bench)。本論文利用 Altera Quartus II 進行新 增專案、程式設計、編譯與下載等流程,來實現下棋機器人系統設計。

圖 3-2、Quartus II 軟體主畫面

(27)

3.2 Verilog 介紹

所謂的 HDL(Hardware Description Language)即是「硬體描述語言」的意思,

利用撰寫程式方式來完成電路設計、功能模擬及驗證等動作,可用來描述在硬體線路 中同時執行的情形,硬體描述語言較普及的有 Verilog HDL 和 VHDL 兩種。由於早期 的電路設計是以手繪方式,然後購買所需元件並插在麵包板上,再使用示波器量測電 路特性是否符合設計要求。但隨著積體電路及半導體製程技術的進步,電路設計已愈 來愈複雜,早已不可能再用傳統手繪方式做設計,因而有了硬體描述語言,使得電路 設計更快速、更有效率。

Verilog HDL 是個一般性的硬體描述語言,易學又好用,語法與 C 語言相似,有 撰寫 C 語言經驗者可以很容易學會 Verilog HDL,它最早由一家名為 Gateway Design Automation 的公司,於 1984 所發表的硬體描述語言,企圖以程式語言介面當基礎,

創造一個以電腦輔助設計為導向的自動化電路設計環境[19-21]。Verilog HDL 允許在 同一個模組中有不同層次的描述法共同存在,設計者可以在同一個模組中,使用各種 不同層次的表示法來描述所設計的電路。邏輯合成(Synthesis)使硬體描述語言在數 位設計的地位變得更加重要,設計者不需再依靠人工方式使用邏輯閘來合成數位電 路,只要將電路的功能及資料傳送情形,用硬體描述語言描述出來,邏輯合成工具就 可以將所指定的功能用邏輯閘來實現整個電路。Verilog HDL 現今已發展成高密度數 位積體電路的主流設計語言,世界各國早已將其推廣在各大學與業界使用,具有極大 的發展潛力。Verilo HDL 的設計理念在數位電路設計、超大型積體電路設計、系統晶 片設計上均扮演非常重要的角色。

隨著超大型積體電路的規模越來越大,數位電路設計也越來越複雜,Verilog 語 言在硬體電路設計的優越性也將越來越顯著。目前動輒數百萬個邏輯閘數(Gate Count)規模的 FPGA 及 CPLD 已進入實用階段,Verilog 以強大的硬體描述語言能力、

規範的程式設計結構、簡潔靈活的程式設計風格,再次突顯它在數位積體電路中,不 可或缺的關鍵重要角色。

3.3 程式流程圖

在此所使用的平台為 Altera 公司的 Cyclon III,其中軟體核心程式為 Quartus II,

在此架構下規劃出智慧型井字遊戲機器人所需的外部電路與動作流程,並根據此動作

(28)

流程來劃分功能,程式流程圖如圖 3-3 與圖 3-4 所示,詳細介紹如下:

l 外部電路規劃

1. LEGO 觸碰開關(Switch Button):玩家藉由按下開關按鍵來告知系統,玩 家已下玩這一步棋,等待系統判斷出下棋位置的決定。

2. LEGO 觸碰開關介面電路:由於開關按鈕為機械開關且有彈跳現象,為克 服此問題,所以設計一個濾波電路,用以去除彈跳現象。

3. LEGO 光感測器(Light Sensor):系統以此判斷棋盤的每個位置是否有放 置色球,以及色球的顏色(例如:「紅色球」代表玩家,「藍色球」代表 系統)。

4. 類比數位轉換電路(ADC: Analog to Digital Converter):做為搭配 LEGO 光感測器所使用,由於光感測器是將所偵測到的訊號以類比電壓型態做輸 出,因此需要此轉換電路將類比電壓轉為數位訊號,然後再傳送到 FPGA 做訊號處理。

5. LEGO 直流馬達:本系統共需要 3 個馬達,其中棋盤的移動包含 2 個(X 軸與 Y 軸),外加 1 個電腦放置色球的馬達,該馬達具有光學編碼器,可 偵測出馬達已旋轉角度並推算出所在的位置,如此便能精確控制馬達所需 移動的位置。

6. LEGO 馬達驅動電路:藉此驅動電路來決定馬達的旋轉方向及其轉速。

l 動作流程說明

1. 三顆 LEGO 直流馬達擺放及旋轉到歸零點:在系統開啟電源前,需先將 X 軸與 Y 軸馬達擺放到初始化的原點(歸零點),並將放置色球的控制馬達 旋轉到歸零點,以便每次控制都可將色球準確的放置成功。

2. 系統初始化:當開啟系統電源,系統會將內部的參數初始化,並同時驅動 X 軸與 Y 軸馬達移動棋盤來到玩家放置色球的位置,等待玩家放置色球。

3. 等待碰觸按鈕以觸發中斷:當玩家決定好放置色球的位置後(第 1 球有放,

代表玩家先下;第 1 球不放,代表電腦先下),按下開關按鈕以發出中斷 訊號,系統將執行演算法以決定電腦放置色球的位置。

(29)

系統便移動棋盤,使光感測器讀到每個棋盤位置相對應的電壓值,再將所 得到的電壓值經由類比數位轉換電路轉成數位訊號,系統記錄該位置的狀 態(尚未放置色球,玩家已放紅色球,電腦已放藍色球)。(2).此系統具備記 憶功能,只要被玩家或電腦放置過色球的位置,系統下次判讀時便會跳過 此位置,以提升系統的執行效能。

5. 位置狀態的判讀與決定放置色球位置的演算法執行:當系統來到該位置並 判斷玩家是否有放置色球,若玩家無放置色球,便繼續來到下一個未被放 置過色球的位置;反之,若系統判斷到該位置有被玩家放置色球,則進入 演算法執行狀態,以決定電腦的最佳放球位置。

6. 系統移動棋盤到系統所需的放球位置與放球馬達的驅動:當系統決定出電 腦最佳放置色球的位置後,系統便開始移動棋盤來到相對應的位置,接著 轉動放球馬達,使色球擺放到相對應的位置,完成電腦下棋的動作。

7. 將棋盤移動到玩家放球位置並等待下次碰觸按鈕以觸發中斷:系統將棋盤 移動到玩家放球位置,等待玩家碰觸按鈕以發出中斷訊號,告訴系統做判 斷處理或直到最後球局結束(雙方和局、玩家獲勝、電腦獲勝)。

l 完成外部電路及動作流程的規劃後,程式分配如下:

1. 類比數位轉換電路資料擷取程式:負責讀取 ADC 的串列資料(Serial Data)

並轉換成並列資料(Parallel Data),以便系統做資料的運算及存取。

2. 馬達驅動電路程式:負責控制馬達的正反轉與轉速,其中馬達的轉速控制 是透過 PWM(Pulse Width Modulation)控制程式來完成。

3. 馬達光學解碼器程式(Photo Decoder Program):讀取馬達旋轉角度的資料,

藉此計算出馬達的移動相對位置。

4. 井字遊戲演算法程式:讀取玩家目前的最新棋步,系統以井字遊戲演算法 計算出電腦下一步的最佳下棋位置,然後做出相對應的處理。

(30)

圖 3-3、程式流程圖(1/2) 開始

按下按鈕?

系統初始化

是 否

移動棋盤來到 玩家端

移動棋盤到光 感測器端

檢查玩家放球 位置

下棋演算法計 算出系統最佳 放球位置

移動棋盤來到 系統端

轉動放球馬達 使色球落下

遊戲結束?

結束

外部觸發 中斷服務程式

設定按鈕旗標

結束 馬達轉動

副程式

讀取馬達 旋轉角度

結束 智慧型 馬達命令追蹤

角度差= 0 是 否

(31)

圖 3-4、程式流程圖(2/2)

l 核心控制程式以有限狀態機方式實現:

系統核心控制程式的重要動作流程,可使用「有限狀態機器」(Finite State Machine)圖示法來表示,由於這個下棋機器人的狀態個數是有限的,所以很適 合用以此方法來描述核心循序控制程式,藉由相對簡單的有限狀態來完成複雜 的系統控制。本程式的重要動作流程如圖 3-5 所示。

圖 3-5、核心控制程式以有限狀態機方式實現

(32)

3.4 遊戲人工智慧演算法

人工智慧(Artificial Intelligence)被廣泛定義為:一個電腦系統具有人類的知識 和行為,並具有學習、推理判斷來解決問題、記憶知識和了解人類自然語言的能力。

人工智慧的產生過程,在對於人類因問題和事物所引起的刺激和反應,以及所引發的 推理、解決問題、學習、判斷及思考決策等過程,將這些過程分解成一些基本步驟,

再透過程式設計,將這些人類解決問題的過程模組化或公式化,使得電腦能有一個結 構化的方法來設計或處理更複雜的問題[22-24]。

凡是研究如何製造出智慧機器或智慧系統,來模擬人類智慧活動的能力,以實 現人造智慧的一門科學,即稱為人工智慧系統。人工智慧是一種技術,而不是一項產 品,它的目的在讓電腦更能了解一般化的事物,凡是模擬人類「聽、說、讀、寫、看、

動作」等的電腦技術,都被歸類為人工智慧的範圍。最初的人工智慧起源於英國杜林

(A.M. Turing)設計了一款具記憶體、有儲存能力的杜林機(Turing Machine),它 暗示了電腦具有學習和思考能力,因為電腦只要執行新的程式,就能改變自己的「行 為」,這算是智慧的表現。

提到人工智慧,常讓人想到西洋棋的程式競賽,在 1997 年五月由 IBM 研發的 超級電腦「深藍」挑戰當時人類西洋棋冠軍 Gary Kasparov,最後結果由「深藍」獲 勝;這引起人們對人工智慧的廣泛注意與憧憬,也因此競相投入更多資源研究人工智 慧題材。在資訊科技眾多的領域裡面,人工智慧是極為重要的一環,它代表人類長久 以來的夢想:機器不再只是人類勞力的替代品,它可以在腦力方面的事務替我們分憂 解勞,甚至善解人意、撫慰心靈。

每個人大概都玩過電動玩具,早期的電玩遊戲都以單人遊戲為主,益智遊戲在 單人遊戲中佔有很大的部分,其中棋奕類的遊戲,包括象棋、圍棋、跳棋、五子棋、

西洋棋等,電腦並沒有大腦,只是一堆電子零件,它是如何做思考呢?怎麼知道下一 步棋該怎麼下呢?以下將討論如何使電腦具有人工智慧,並藉由遊戲演算法來增進電 腦的下棋能力。

井字遊戲(Tic-Tac-Toe)是一種規格很簡單的雙人遊戲,只要在畫有「井」字 的空格裡,一方畫「O」,另一方畫「X」,誰先畫完一橫列、一直行或對角線,誰就 獲勝。其所有可能的排列組合共有 39=19,683 種,比起西洋棋或其他遊戲動輒上兆種

(33)

於遇到問題時,能透過所累積的經驗與智慧來解決問題,因此人工智慧也就是在模擬 人類解決問題的能力。最常見的方法之一,就是驗證所有可能答案的正確性,如果用 這種方法,第一步就是先要找出所有可能的答案,然後一個一個地檢查它們的正確 性,於是有了搜尋的概念。依照搜尋目的不同,所發展的搜尋方法也不同。常見的競 局搜尋方法有:極大極小搜尋法(Mini-Maxing Search)、αβ 修剪搜尋法(Alpha-Beta Pruning)、漸深搜尋法(Tic Pruning)、經驗式修剪搜尋法(Heuristic Pruning)和最佳 解優先搜尋法(Best-First Search)等。這一類的搜尋法在棋弈類的遊戲中很普遍,例 如圍棋、象棋、西洋棋…等。以下將介紹常見的極大極小法,及本文所採用的最佳解 優先搜尋法。

l 極大極小法(Mini-Maxing Search)[22]

下棋時一人走一步,雙方都想要使自已的棋局保持優勢,同時使對方處於 劣勢。於是我們往往要考慮對手的應對走法,來決定下一步要怎麼走。同樣地,

對手也會預測我們的走法,不讓你稱心如意。極大極小法就是假設敵我雙方都 選擇最佳走法的一種有限深度、深度優先的搜尋方法。

它從根節點出發,呼叫走法產生函式產生可能走法,向下巡行到給定深度 後,在葉節點處使用評估函數判斷棋局好壞。自已希望選擇得到最大分數的走 法,反之對手的目標則是選取使評估函數得到最小值的走法,因此程式在不同 階段中,交互使用取極大值和極小值的走法,也就是這個名稱的由來。

在一般的雙人對奕遊戲中,人工智慧大都採用極大極小法(Mini-Maxing Method)來評估下一步棋該如何走。極大極小法是以目前的棋盤,考慮所有可 能的棋步,對於每一個新盤局的所有可能,就需要重新考慮所有可能的棋步,

依此原則一直推演下去,考量到很多步之後的所有可能棋局。

考量的棋步越多,相對勝算也就越大,然而計算量也將隨之激增,因此我 們需要設計一個評估函數(Evaluation Function)來評估每一個棋局對雙方的勝 算如何。假設畫「O」的一方定為極大(MAX),畫「X」的一方定為極小(MIN),

若評估函數所得到的數值越大,表示對「O」的一方越有利;相之,如果評估 函數所得到的數值越小,則表示對「X」的一方越有利。此種設計有一前提,

就是假設雙方都會以對自己有利的棋步走。

極大極小法在井字遊戲的評估函數為:F(k) =(MAX 仍有可能完成的行數、

(34)

列數、對角線數的總和)–(MIN 仍有可能完成的行數、列數、對角線數的總和)。 假如於盤局 k 獲勝一方已確定為 MAX,則 F(k) = ∞;相反的,假如於盤局 k 獲 勝一方已確定為 MIN,則 F(k) = – ∞。其中,k 表示尚未分出勝負的盤局;棋盤 的縱向為行、橫向為列。

l 最佳解優先搜尋法(Best-First Search)[22]

這個搜尋法只根據最佳化的評估函數,來選擇下一個搜尋的節點,當評估 函數的準確度愈高,則愈可能找到最佳的節點。假如評估函數的準確度不高,

很有可能無作用或導致錯誤的搜尋發生,所以它使用一些估算解答成本的測量 方式,並設法朝最低成本方向進行搜尋。為了使搜尋更精確,因此估計解答成 本的測量,必須加上到達結束狀態的路徑成本一起估計。由於本文的井字遊戲 人工智慧演算法採用「最佳解優先搜尋法」,因此將以該搜尋法說明如何評估棋 局的其他可能走法,再進一步評估更深層的更多可能解,最後由評估函數得知 這些可能走法中的那一個為最佳解,順利找出電腦最佳的棋步。

範例說明:有一井字遊戲,電腦以「O」表示,玩家以「X」表示,其評 估函數定義為:

F(i) =(同一行、同一列及對角線的其他空白個數)+

〔(同一行、同一列及對角線的「O」個數)x 2〕+ K(i)

K(i) = 0, 若該一行、該一列、或對角線的「X」各數,最多為 0 個 -1, 若該一行、該一列、或對角線的「X」各數,最多為 1 個 4, 若該一行、該一列、或對角線的「X」各數,最多為 2 個

1. 假設一開始的棋局全部都是空格,如圖 3-6(a)。

2. 若由電腦先下,依評估函數可算出:

F(P0) =(2 + 2 + 2)+〔(0 + 0 + 0)x 2〕+(0 + 0 + 0)= 6 F(P1) =(2 + 2 + 0)+〔(0 + 0 + 0)x 2〕+(0 + 0 + 0)= 4 F(P2) =(2 + 2 + 2)+〔(0 + 0 + 0)x 2〕+(0 + 0 + 0)= 6 F(P3) =(2 + 2 + 0)+〔(0 + 0 + 0)x 2〕+(0 + 0 + 0)= 4

(35)

F(P5) =(2 + 2 + 0)+〔(0 + 0 + 0)x 2〕+(0 + 0 + 0)= 4 F(P6) =(2 + 2 + 2)+〔(0 + 0 + 0)x 2〕+(0 + 0 + 0)= 6 F(P7) =(2 + 2 + 0)+〔(0 + 0 + 0)x 2〕+(0 + 0 + 0)= 4 F(P8) =(2 + 2 + 2)+〔(0 + 0 + 0)x 2〕+(0 + 0 + 0)= 6 3. 因此電腦選擇最大值 P4 位置,則棋局狀況如圖 3-6(b)。

4. 若對手選擇 P0 位置,則棋局狀況如圖 3-6(c)。

圖 3-6、井字遊戲的 1~2 步棋局 5. 依同樣的評估函數可算出:

F(P1) =(1 + 1 + 0)+〔(1 + 0 + 0)x 2〕+(0 -1 + 0)= 3 F(P2) =(2 + 1 + 1)+〔(0 + 0 + 1)x 2〕+(0 -1 + 0)= 5

F(P3) =(1 + 1 + 0)+〔(0 + 1 + 0)x 2〕+(-1 + 0 +0)= 3 F(P5) =(2 + 1 + 0)+〔(0 + 1 + 0)x 2〕+(0 + 0 + 0)= 5 F(P6) =(1 + 2 + 1)+〔(0 + 0 + 1)x 2〕+(-1 + 0 +0)= 5 F(P7) =(1 + 2 + 0)+〔(1 + 0 + 0)x 2〕+(0 + 0 + 0)= 5 F(P8) =(2 + 2 + 0)+〔(0 + 0 + 1)x 2〕+(0 + 0 -1)= 5

6. 由此可知,P2、P5、P6、P7 及 P8 都是很好的選擇。假設電腦選擇 P2 位置,

則棋局狀況如圖 3-7(d)。

7. 對手選擇 P6 位置,則棋局狀況如圖 3-7(e)。

圖 3-7、井字遊戲的前 3~4 步棋局

(36)

8. 依同樣的評估函數可算出:

F(P1) =(1 + 0 + 0)+〔(1 + 1 + 0)x 2〕+(0 -1 + 0)= 4 F(P3) =(0 + 1 + 0)+〔(0 + 1 + 0)x 2〕+(4 + 0 + 0)= 7

F(P5) =(1 + 1 + 0)+〔(1 + 1 + 0)x 2〕+(0 + 0 + 0)= 6 F(P7) =(1 + 1 + 0)+〔(1 + 0 + 0)x 2〕+(0 -1 + 0)= 3 F(P8) =(1 + 1 + 0)+〔(1 + 0 + 1)x 2〕+(0 -1 -1)= 4 9. 因此電腦選擇最大值 P3 位置,則棋局狀況如圖 3-8(f)。

10. 對手選擇 P5 位置,則棋局狀況如圖 3-8(g)。

圖 3-8、井字遊戲的 5~6 步棋局 11. 依同樣的評估函數可算出:

F(P1) =(1 + 0 + 0)+〔(1 + 1 + 0)x 2〕+(0 -1 + 0)= 4

F(P7) =(1 + 1 + 0)+〔(1 + 0 + 0)x 2〕+(0 -1 + 0)= 3 F(P8) =(0 + 1 + 0)+〔(1 + 0 + 1)x 2〕+(-1 -1 -1)= 2 12. 因此電腦選擇最大值 P1 位置,則棋局狀況如圖 3-9(h)。

13. 對手選擇 P7 位置,則棋局狀況如圖 3-9(i)。

14. 最後電腦選擇 P8 位置,雙方以和局結束,棋局狀況如圖 3-9(j)。

圖 3-9、井字遊戲的 7~9 步棋局

通常解決一個問題的演算法可能有千百種,然而是否恰當、實用、有效率、容 易實現都還是得先經過一番評估。如何從這麼多演算法中挑出最適合的,除了要先了

(37)

解一些演算法的基本概念外,還要多了解對於類似問題是否還有更好的解決方法。

在我們看來一些遊戲雖然玩起來很簡單,但要讓電腦學會如何判斷下一步該怎 麼走,卻又是另一回事,對於不同遊戲,除了要挑選適當的方法,還要先了解遊戲的 規則,才能加入適合的判斷條件,以提升程式執行效能。對於這種電腦會「思考」的 益智遊戲程式,人工智慧演算法佔有相當大的關係,也因為人工智慧的範疇非常大,

要寫出一個複雜的遊戲其實非常不容易,因此要對演算法和遊戲都有一定程度的了 解,才能完全實做出一個好的遊戲演算法。

(38)

第四章 實驗結果

4.1 模組程式實現

本文已在遊戲人工智慧演算法的章節中,針對所採用的「最佳解優先搜尋法」

做過詳細介紹,並以實際的井字遊戲當範例,說明系統是如何根據該評估函數來計算 並找出電腦最佳下棋位置。接下來,我們將在這些演算法的學理基礎上,再次引用該 井字遊戲範例,做為在 Quartus II 軟體開發模擬時的最佳對照組,這將有助於讀者同 時比對理論推導與程式模擬結果是否存有差異?或是兩者都可得到一致性的執行結 果?在此我們先不做回答,相信讀者在看過本章節的內容後,自然會有答案。

一般而言,我們在產品開發中的韌體設計階段,通常會先將開發中的程式透過 軟體模擬方式做問題除錯(Debug),並等到程式除錯完畢後,再把該程式下載到硬 體系統上做完整成品的除錯與實現。如此做法相較於省略掉軟體模擬的除錯過程,它 的好處在於可大幅降低系統軟硬體整合的複雜度,以及節省程式下載或解決非預期問 題的時間…等。因此,以下將介紹本對奕機器人在韌體設計階段,如何透過時序模擬 方式來驗證該井字遊戲演算法的正確性?使之能縮短韌體設計時間,避免寶貴時間的 浪費,並得到正確又可靠的執行結果。

圖 4-1 是根據上一章節所介紹過的井字遊戲範例,用來做為本次軟體模擬的依 據,完全遵照該井字遊戲範例所採用的「最佳解優先搜尋法」評估函數,作為演算法 試算和找出電腦最佳下棋位置的核心演算法。同時,本次時序模擬所選擇的棋步,也 跟該井字遊戲範例中,電腦和玩家在對奕過程所選擇的棋步相同,最後在 Quartus II 軟體平台上,所得到的井字遊戲演算法模擬結果時序圖。

圖 4-1、井字遊戲演算法的模擬時序圖

該圖的井字遊戲演算法模擬結果時序圖,完整呈現電腦及玩家在該棋局中的所

(39)

來得到電腦的最佳下棋位置,然後又如何透過具有人工智慧的井字遊戲演算法,來與 玩家產生遊戲的對奕互動。系統怎麼依照玩家的最新下棋位置,藉由演算法的試算並 找出具有對奕互動效果的電腦最佳下棋位置,讓棋局產生有趣的對奕效果。以下將針 對本模擬結果時序圖做完整的說明。

l 演算法模組架構

為實現該井字遊戲範例的人工智慧演算法,於是設計出一個能代表玩家已 完成下棋動作的新棋局狀態,在此以輸入訊號方式來表示。當棋局狀態經過井 字遊戲演算法的計算後,系統將產生電腦的最佳下棋位置,這些演算法的計算 與研判結果,在此以輸出訊號方式來表示。本演算法模組的控制訊號架構圖,

如圖 4-2 所示。

圖 4-2、井字遊戲演算法模組的架構圖

本井字遊戲演算法模組,分別有 4 組輸入及 4 組輸出訊號,這些訊號主要 讓我們在韌體設計階段,可以先透過 Quartus II 模擬軟體來產出控制訊號時序 圖,然後從時序圖上的控制訊號做推導,進一步了解本模組的模擬結果是否與 演算法理論相同,因此得知本模組程式的設計是否正確,以節省許多寶貴的問 題除錯時間。對於演算法模組的控制訊號說明表,如表 4-1 所示。

訊號名稱 (屬性)

資料

長度 功能說明

clock

(Input) 1-bit 作為模擬軟體的基礎時鐘(Clock)。

reset 1-bit 1.作為模擬軟體的重置(Reset)訊號。

(40)

(Input) 2.若 clock = “Low”,表示系統重置。

read_enable

(Input) 1-bit

1.作為啟動演算法模組的輸入觸發訊號。

2.若 read_enable 輸入一個上升緣觸發訊號,表示井 字遊戲演算法模組要開始做運算。

table_in

(Input) 18-bits

1.代表玩家已完成下棋動作,進入演算法運算前的 最新棋局狀態,共有 18-bit。

2.每一個棋局共有 9 個位置,每一個位置以 2-bit 來 表示。

busy

(Output) 1-bit

1.代表系統狀態的輸出訊號。

2.若 busy = “High”,表示系統忙碌,正在處理井字 遊戲演算法的運算,尚未算出電腦的最佳下棋位 置,不允許讀取結果。

max_position

(Output) 4-bits

1.代表系統完成演算法運算後,所找到的電腦最佳 下棋位置。

2.例如 max_position = 4,表示電腦的最佳下棋位置 為 P4 位置。

max_calculate

(Output) 4-bits

1.代表系統完成演算法運算後,該棋局的評估函數 最大值。

2.例如 max_calculate = 8,表示該棋局的評估函數最 大值為 8。

table_out

(Output) 18-bits

1.代表系統已完成演算法運算,找到電腦的最佳下 棋位置,並完成電腦下棋動作的最新棋局狀態,共 有 18-bits。

2.每一個棋局共有 9 個位置,每一個位置以 2-bit 來 表示。

表 4-1、演算法模組的控制訊號說明表

1. 控制訊號 table_in 及 table_out 的 Bit[1:0] 都是代表井字遊戲棋局的 P0 位 置,Bit[3:2] 表示棋局的 P1 位置,Bit[5:4] 表示棋局的 P2 位置,依此類

(41)

推…,Bit[17:16] 則表示棋局的 P8 位置,如圖 4-3 所示。

圖 4-3、table_in 及 table_out 與井字遊戲棋局的對應圖

2. 在 table_in 及 table_out 中,用來代表棋盤下棋狀態的這兩個位元 Bit[s:t],

其中 s = (n*2)+1,t = (n*2),n = 0、1、2…、8,表示如下:

(1). Bit[s:t] = “00”,代表該棋局位置未被玩家或電腦下過。

(2). Bit[s:t] = “01”,代表該棋局位置已被電腦下過。

(3). Bit[s:t] = “10”,代表該棋局位置已被玩家下過。

3. 範例說明:假設有一井字遊戲,電腦以「O」表示,玩家以「X」表示,

進行到電腦完成下棋動作,table_out = “00 00 00 00 01 00 01 00 10”,如圖 4-4(a) 所示。然後玩家也隨之完成下棋動作,table_in = “00 00 10 00 01 00 01 00 10”,如圖 4-4(b) 所示。則這兩個下棋步驟在實際井字遊戲的棋局位置 及狀態,如圖 4-4 所示。

圖 4-4、table_in 與 table_out 的範例說明

l 模擬結果說明

關於井字遊戲演算法的軟體模擬結果,是以 Quartus II 為模擬軟體平台,採 用與該井字遊戲範例相同的「最佳解優先搜尋法」評估函數,以及與電腦和玩 家相同的對弈棋步,最後得到與該評估函數理論值相同的模擬結果。軟體模擬

(42)

結果說明表(1/5),如下表 4-2 所示:

時間 控制事件 動作說明

T1 table_in =

“000000000000000000”

假設這是一個新開始的棋局,棋盤上的所有位置 都是空的,因此記錄目前的棋局狀態到 table_in 記憶體,如圖 4-5(a)。

T2 ready_enable = LàH busy = LàH

(1).若由電腦先下,當系統已確認所有的棋盤位置 狀態後,演算法模組收到 read_enable 上升緣觸發 訊號,表示系統要做演算法的運算。

(2).在收到 read_enable 上升緣觸發訊號的同時,

busy 訊號也跟著拉起來。由於兩者沒有時間上的 延遲,因此不會有時序上的錯誤發生。

(3).若 busy = “High”,代表系統正在處理演算法的 運算工作,系統狀態為忙碌。

T3

max_calculate = 8 max_position = 4 table_out =

“000000000100000000”

(1).在系統忙碌期間(busy = “High”),主控制程 式在完成演算法的運算後,將得知評估函數的最 大值為 8(max_calculate = 8),電腦的最佳下棋 位置為 P4(max_position = 4)。

(2).在電腦完成下棋動作後,系統將紀錄最新的棋 局狀態到 table_out = “000000000100000000”,表 示棋局位置 P4 已被電腦下過,如圖 4-5(b)。

T4 busy = H à L

(1).系統在 busy 送出下降緣觸發訊號前,已完成 演算法運算;然後在 busy 送出下降緣觸發訊號 後,讀出電腦最佳下棋位置的計算結果。

(2).若 busy = “Low”,代表系統不在忙碌狀態,此 時已完成演算法的運算,隨後電腦將完成下棋動 作,輪到玩家下棋。

表 4-2、軟體模擬結果說明表(1/5)

(43)

圖 4-5、軟體模擬結果說明圖(1/5)

軟體模擬結果說明表(2/5),如下表 4-3 所示:

時間 控制事件 動作說明

T5 table_in =

“000000000100000010”

(1).假設玩家選擇 P0 的下棋位置。

(2).系統會把當時的棋局狀態,記錄到 table_in =

“000000000100000010”,代表玩家已完成下棋動 作,如圖 4-6(c)。

T6 ready_enable = L à H busy = L à H

(1).當系統已辨識出玩家的下棋位置後,控制訊號 read_enable 收到上升緣觸發訊號,表示系統開始 執行演算法的運算。

(2).在收到 read_enable 上升緣觸發訊號的同時,

busy 訊號也跟著拉起來,兩者沒有時間上的延 遲,因此不會有時序上的錯誤發生。

(3).若 busy = “High”,代表系統正在處理演算法的 運算工作,系統為忙碌狀態。

(44)

T7

max_calculate = 5 max_position = 2 table_out =

“000000000100010010”

(1).在系統忙碌期間(busy = “High”),主控制程 式在完成演算法的運算後,將得知評估函數的最 大值為 5(max_calculate = 5),共有 5 個位置,

分別為 P2、P5、P6、P7 和 P8。此時系統選擇最 前面的 P2(max_position = 2),作為電腦的最佳 下棋位置。

(2).在電腦完成下棋動作後,系統將紀錄最新的 棋局狀態到 table_out = “000000000100010010”,

表示棋局位置 P2 已被電腦下過,如圖 4-6(d)。

T8 busy = H à L

(1).系統在 busy 送出下降緣觸發訊號前,已完成 演算法運算;然後在 busy 送出下降緣觸發訊號 後,讀出電腦最佳下棋位置的計算結果。

(2).若 busy = “Low”,代表系統不在忙碌狀態,此 時已完成演算法的運算,隨後電腦將完成下棋動 作,輪到玩家下棋。

表 4-3、軟體模擬結果說明表(2/5)

(45)

圖 4-6、軟體模擬結果說明圖(2/5)

軟體模擬結果說明表(3/5),如下表 4-4 所示:

時間 控制事件 動作說明

T9 table_in =

“000010000100010010”

(1).假設玩家選擇 P6 的下棋位置。

(2).系統會根據玩家的下棋位置,把新的棋局狀態 記錄到 table_in = “000010000100010010”,代表玩 家已完成下棋動作,如圖 4-7(e)。

T10 ready_enable = L à H busy = L à H

(1).當系統已辨識出玩家的下棋位置後,控制訊號 read_enable 收到上升緣觸發訊號,表示系統開始 執行演算法的運算。

(2).在收到 read_enable 上升緣觸發訊號的同時,

busy 訊號也跟著拉起來,兩者沒有時間上的延 遲,因此不會有時序上的錯誤發生。

(3).若 busy = “High”,代表系統正在處理演算法的 運算工作,系統為忙碌狀態。

(46)

T11

max_calculate = 7 max_position = 3 table_out =

“000010000101010010”

(1).在系統忙碌期間(busy = “High”),主控制程 式在完成演算法的運算後,將得知評估函數的最 大值為 7(max_calculate = 7),電腦的最佳下棋 位置為 P3(max_position = 3)。

(2).在電腦完成下棋動作後,系統將紀錄最新的棋 局狀態到 table_out = “000010000101010010”,表 示棋局位置 P3 已被電腦下過,如圖 4-7(f)。

T12 busy = H à L

(1).系統在 busy 送出下降緣觸發訊號前,已完成 演算法運算;然後在 busy 送出下降緣觸發訊號 後,讀出電腦最佳下棋位置的計算結果。

(2).若 busy = “Low”,代表系統不在忙碌狀態,此 時已完成演算法的運算,隨後電腦將完成下棋動 作,輪到玩家下棋。

表 4-4、軟體模擬結果說明表(3/5)

(47)

軟體模擬結果說明表(4/5),如下表 4-5 所示:

時間 控制事件 動作說明

T13 table_in =

“000010100101010010”

(1).假設玩家選擇 P5 的下棋位置。

(2).系統會根據玩家的下棋位置,把新的棋局狀態 記錄到 table_in = “000010100101010010”,代表玩 家已完成下棋動作,如圖 4-8(g)。

T14 ready_enable = L à H busy = L à H

(1).當系統已辨識出玩家的下棋位置後,控制訊號 read_enable 收到上升緣觸發訊號,表示系統開始 執行演算法的運算。

(2).在收到 read_enable 上升緣觸發訊號的同時,

busy 訊號也跟著拉起來,兩者沒有時間上的延 遲,因此不會有時序上的錯誤發生。

(3).若 busy = “High”,代表系統正在處理演算法的 運算工作,系統為忙碌狀態。

T15

max_calculate = 4 max_position = 1 table_out =

“000010100101010110”

(1).在系統忙碌期間(busy = “High”),主控制程 式在完成演算法的運算後,將得知評估函數的最 大值為 4(max_calculate = 4),電腦的最佳下棋 位置為 P1(max_position = 1)。

(2).在電腦完成下棋動作後,系統將紀錄最新的棋 局狀態到 table_out = “000010100101010110”,表 示棋局位置 P1 已被電腦下過,如圖 4-8(h)。

T16 busy = H à L

(1).系統在 busy 送出下降緣觸發訊號前,已完成 演算法運算;然後在 busy 送出下降緣觸發訊號 後,讀出電腦最佳下棋位置的計算結果。

(2).若 busy = “Low”,代表系統不在忙碌狀態,此 時已完成演算法的運算,隨後電腦將完成下棋動 作,輪到玩家下棋。

表 4-5、軟體模擬結果說明表(4/5)

參考文獻

相關文件

„ FPGA –現場可規劃邏輯陣列 (field- programmable

„ FPGA –現場可規劃邏輯陣列 (field- programmable gate

„ FPGA –現場可規劃邏輯陣列 (field- programmable

„ FPGA –現場可規劃邏輯陣列 (field- programmable

專案導向應用程式開發 階梯程式編輯畫面 狀態的監視與控制 階梯程式助憶碼輔助顯示 階梯程式註解功能

VAB 使用者無法使用 RIDE 提供的 Filter Design 公用程式設計濾波器,但是 使用 VAB 的 Filter 元件時,在元件特性選單可以直接指定此濾波器的規格,使用

FPPA 是 Filed Programmable Processor Array 的縮寫,簡 單的說:它就是一個可以平行處理的多核心單晶片微控器。與一般 微控器如 8051、pic,…

可程式控制器 (Programmable Logic Controller) 簡稱 PLC,是一種具有微處理機功能的數位電子 設備