• 沒有找到結果。

中 華 大 學

N/A
N/A
Protected

Academic year: 2022

Share "中 華 大 學"

Copied!
63
0
0

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

全文

(1)

中 華 大 學 碩 士 論 文

利用 Matlab RWTH 工具箱設計解魔術方塊機 器人

Design of a Rubik’s Cube Solver Robot using Matlab RWTH toolbox

系 所 別: 電機工程學系碩士班 學號姓名: M09701024 鮑柏年 指導教授: 黃 啟 光 博士

中 華 民 國 九十九 年 八 月

(2)

摘要 摘要 摘要摘要

智慧型機器人結合了電子、機械、自動化與人工智慧,並且廣泛的應用於工 業以及服務業和娛樂用途,是近年來備受矚目的產業之一。在此,本論文以 PC 為基礎設計一解魔術方塊機器人,並利用樂高積木的組裝快速與低成本的特性架 設所需的實驗機構。在論文中,透過 MATLAB 的影像擷取與影像處理取得魔術 方塊的六面色值,並帶入魔術方塊解題器中解題,最後將解題資訊轉換成馬達控 制訊號進行魔術方塊的轉正動作。整體的實驗過程結合了程式設計與運用,以及 硬體設備的應用。

關鍵字 關鍵字 關鍵字

關鍵字::::智慧型機器人智慧型機器人智慧型機器人、智慧型機器人、、魔術方塊、魔術方塊魔術方塊、魔術方塊、、影像處理、影像處理影像處理。影像處理。。 。

(3)

Abstract

Robotics industry, a technology integration and high skill value-added industries, is a combination of mechanical, automation, electrical, electronics, information software, communications and creative content related to technology. In this thesis, a robot for a Rubik's cube game is developed based on Matlab and LEGO mindstorms NXT. In the Matlab part, a CCD Web camber is used to obtain the color information of the real-time Rubik's cube though image acquisition toolbox and image processing toolbox. And, a Rubik's cube solver is used to obtain the solve actions. In the LEGO mindstorms NXT part, a robot’s arm used the DC servomotor to get the action form the Rubik's cube solver. From the experimental results, the favorable results can be achieved by the proposed robot setup.

Keyword: intelligent robot, Rubik's cube, image processing

(4)

致謝 致謝 致謝 致謝

在研究所兩年的求學生涯中,承蒙指導教授黃啟光博士在學業上及研究方面 給予悉心的指導與鼓勵,以及許駿飛教授的諄諄教誨與指點迷津,帶領我走向更 深的領域,探索以往未曾想過的問題。學習過程中,老師總是不厭其煩的教導,

從最基本的一步一步向上累積;同時在待人處事、人生規劃方面亦給予寶貴的意 見,讓我對生涯規劃以及研究態度更加積極,謹此致上由衷的謝意。其次要感謝 實驗室的許多學長、同學以及學弟的幫忙指導與精神上的鼓勵,其中特別感謝同 學沈漢賢在數學以及程式方面給予的寶貴意見。僅將此篇論文獻給關心我鼓勵我 的人,在我遇到難題困惑沮喪時默默支持我的人,深深的感謝他們使我得以完成 此論文,願與他們分享此榮耀。

鮑柏年 謹識於中華大學 2010 年 8 月

(5)

目錄 目錄 目錄 目錄

摘要... i

Abstract ... ii

致謝... iii

目錄... iv

圖目錄... v

表目錄... vii

第一章 序論... 錯誤錯誤錯誤錯誤! 尚未定義書籤尚未定義書籤尚未定義書籤。尚未定義書籤。。 。 1-1 智慧型機器人介紹 ... 1

1-2 樂高機器人介紹 ... 6

1-3 研究背景與目的 ... 9

第二章 機器平台介紹... 13

2-1 整體架構 ... 13

2-2 NXT 控制盒 ... 14

2-3 LEGO 伺服馬達... 16

2-4 BricxCC 與 NXC 介紹... 18

2-5 MATLAB 影像擷取與處理工具箱 ... 21

2-6 RWTH Toolbox 介紹 ... 26

第三章 解魔術方塊機器人設計... 30

3-1 影像處理與結果 ... 30

3-2 魔術方塊解題與結果 ... 36

第四章 結論與未來研究... 52

4-1 結論 ... 52

4-2 未來研究 ... 53

參考文獻... 54

(6)

圖目錄 圖目錄 圖目錄 圖目錄

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

圖 1-2 具有人工智慧的 Probo ... 3

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

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

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

圖 1-6 QB 遠端臨場機器人 ... 6

圖 1-7 樂高 Mindstorms NXT 機器人 ... 7

圖 1-8 NXT-G 使用介面 ... 8

圖 1-9 各種多階與非標準魔術方塊 ... 10

圖 1-10 以 PC 為基礎之解魔術方塊機器人 ... 10

圖 1-11 以 PC 為基礎之解魔術方塊樂高機器人 ... 10

圖 1-12 以 Andriod 為基礎之解魔術方塊樂高機器人 ... 11

圖 1-13 以 NXT 為基礎之解魔術方塊樂高機器人 ... 11

圖2-1 解魔術方塊機器人示意圖... 13

圖 2-2 NXT 控制盒 ... 14

圖 2-3 LEGO 伺服馬達解析圖... 16

圖 2-4 光學編碼器 AB 相訊號 ... 17

圖 2-5 BricxCC 程式開發環境 ... 19

圖 2-6 Watching the Brick 的資料圖表化功能(光感應器) ... .20

圖 2-7 影像擷取圖樣 ... .23

圖 2-8 影像處理樣本 ... 25

圖 2-9 PC 與 NXT 連線圖 ... 26

圖 2-10 ECRobot NXT 模組方塊 ... 28

(7)

圖 2-11 ECRobot simulink 環境 ... 29

圖 3-1 魔術方塊六面影像 ... 30

圖 3-2 由圖 3-1 轉換的灰階圖案 ... 31

圖 3-3 由圖 3-2 轉換的二元化影像 ... 32

圖 3-4 各色面展開圖 ... 35

圖 3-5 LBL 基本解法流程圖 ... 37

圖 3-6 解題器模擬圖 ... 38

圖 3-7 魔術方塊的 6 個面色值代入解題器中 ... 39

圖 3-8 解題器解題過程 ... 41

圖 3-9 方塊六面位置定義 ... 42

圖 3-10 機器人的翻轉方塊與旋轉方塊 ... 42

(8)

表目錄 表目錄 表目錄表目錄

表 2-1 MATLAB 影像轉換 ... 24 表 3-1 魔術方塊 6 色取樣 ... 33 表 3-2 白色面九格方塊像素值 ... 34

(9)

第一章第一章

第一章第一章 序論序論序論序論

1.1 智慧型機器人介紹智慧型機器人介紹智慧型機器人介紹智慧型機器人介紹

機器人產業是結合機械、自動化、電機、電子、資訊軟體、通訊及創意內容 等相關技術,為一高度技術整合且高附加價值的明星產業,可預期的是機器人也 即將進入家庭環境成為一般民眾生活的一部分,對於國家發展與國家經濟及工業 整體發展具有關鍵性指標的地位。機器人的關鍵技術涵蓋機械結構設計、馬達設 計與控制、即時影像/語音處理、感測電路設計與實現、嵌入式系統軟硬體設計、

微處理器應用與 IC 設計、智慧型控制技術、機電整合等等的專業知識,是一個 需要系統整合才能有效發展的研究領域[1-4]。

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

智慧型機器人是一種多功能的多軸全自動或半自動機械裝置,可透過程式化 動作執行各項生產活動,或結合人工智慧與感測技術的應用,提供人類生活、健 康、安全、娛樂等方面的服務。智慧型機器人產業尚屬起步階段,根據經濟部的 資料顯示,目前的智慧型機器人大多集中於保全、清潔、娛樂和互動上面的應用,

未來可以結合不同領域的發展。國內則於「行政院 2005 年產業科技策略會議」

中,決定將智慧型機器人產業發展目標分為三個階段。第Ⅰ階段:期間由目前至 西元 2008 年,預估產值將達到新台幣 300 億元;第Ⅱ階段:期間由西元 2009 至 2013 年,預估產值將達到新台幣 900 億元以上;第Ⅲ階段:期間由西元 2014 至 2020 年,我國將成為智慧型機器人主要製造國[5]。以下分別就國內外相關研究

(10)

舉例說明:

 Asimo 人形機器人[6]

日本本田公司(Honda)由 1986 年開始研發人形機器人,至今已研發超過 20 年,不論機器人可模擬人類動作到何種程度,但總需要時間才能讓人們接受,本 田當初在研發 ASIMO 時就希望可研發最平易近人的機器人為目標。ASIMO 代 表 Advanced Step in Innovative Mobility,是由本田公司所研發,全球唯一可爬行 樓梯且可慢速奔跑的機器人。ASIMO 具有語音及人類臉部辨識的智慧功能,可 使用手勢與人類進行溝通,且 ASIMO 的手臂可以開關電燈、大門等,甚至還可 以為客人端茶。

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

 微軟公司的 Probo[7]

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

(11)

圖 1-2 具有人工智慧的 Probo[7]

 具療癒功能的 Paro[8]

帕羅(Paro)安裝有感知影像、視覺、聽覺、觸覺和姿勢的感測器,可以根據 人們對它的觸摸方式,相應地調整動作,如圖 1-3 所示。可以管理老年人的日常 生活、提醒他們按時吃藥。它們還可以用作通訊工具,為用戶提供無線語音和視 頻連接,與遠方的朋友和家人進行交流。帕羅最大的特點,是可以對人的接觸產 生交互反應。當你對著它"甜言蜜語"或愛撫一番時,帕羅會撲閃著眼睛,眨動長 長的睫毛、扭動身軀、發出小海豹般的叫聲;但如有人對它不理不睬;它則會表 現出委屈和憤怒。帕羅還有一套固定的作息時間,白天伴人玩耍,夜晚安然入睡。

其外形、動作和聲音充分刺激人的感官,讓人們有與之交流的感覺,從而豐富人 的生活,成為老年人的忠誠“伴侶”。

圖 1-3 具有療癒功能的 Paro[8]

(12)

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

台灣大學在黃漢邦教授帶領成功研發全自動智慧型導覽機器人「小美」,如 圖 1-4 所示,利用人工智慧與控制技術,先是自動辨識人臉、判斷觀眾所在位置,

接著自動偵測路線,清楚帶領觀眾逐一導覽台大校史館館藏,還會表現「好開心」、

「好生氣」等八種表情與情緒音調。當訪客注視某處時,「小美」機器人的頭部 也會跟著轉動,感覺就像和訪客一起注視同一個地方,容易讓訪客覺得很親近。

另外一個特色就是可以建立 2D 和 3D 的地圖,也就是說,它今天可以放在台大 校史館、那他也可以放在北美館、也可以放在國美館,可以放在任何地方,讓這 個機器人把這個環境地圖整個建立起來,建立起來以後,它就可以根據這地圖做 導航跟進一步的解說。

圖 1-4 導覽 機器人「小美」[9]

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

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

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

(13)

圖 1-5 室內多功能服務型機器人[10]

 美國 Anybots 的 QB 遠端臨場機器人[11]

QB 是一個遠端臨場機器人,如圖 1-6,目的為讓使用者能在遠端透過網際 網路,同時在數個地方與他人互動。如同身歷其境的參與任何一個遠方的會議,

不僅利於需要遠端工作的人使用。也可以應用於一些緊急狀況。QB 機器人的攝 影機是用於操作者可以了解機器人的位置以及他所面對的障礙物。機器人的移動 仍然要依靠遠端的使用者操作。因此可另外加入電腦視覺的分析。例如利用影像 辨認以尋找遠端環境的人或物體、用影像追蹤使機器人跟隨特定的人,或是建立 工作環境的地圖讓遠端的操縱更加便利。

圖 1-6 QB 遠端臨場機器人[11]

(14)

1.2 樂高機器人介紹樂高機器人介紹樂高機器人介紹樂高機器人介紹

樂高機器人套件(LEGO MINDSTORMS Robotics Invention System)目前最 著名的機器人學習的案例。樂高機器人套件是針對 12 歲以上的小孩或大人,對 機器人有興趣(或者啟發自動控制教育)的教育玩具。這項產品計畫始於 1986,

由丹麥樂高公司和美國麻省理工學院的媒體實驗室(Media Lab)進行的一項「可 程式積木(Programmable Brick)」的合作案。一般的樂高模型完成之後是『靜』

態模型,玩家可以自由想像,沈浸於觀賞之中。將模型加上馬達等動力元件,就 可以進化為『動』態模型,有了動作,玩家可以有更多的玩法。樂高 Mindstorms NXT 是樂高最新一代的機器人。樂高(LEGO)已于 2006 年 9 月上旬推出樂高公 司和美國麻省理工學院共同開發的機器人組件新款“教育用 LEGO Mindstorms NXT”,如圖 1-7 所示。Mindstorms 是將配備微處理器的 LEGO 公司的塑料積木 組裝起來,通過個人電腦制作的程序來控制的機器人[12]。

在圖 1-7 中,中間是 NXT 所使用的"中央控制積木",週邊的電子零件由左 上角那個長的像雞腿的零件開始 ,順時針依序是馬達、馬達、馬達、超音波距 離感測器、光源感應器、音源感測器以及觸碰感應器。"中央控制積木"就跟 RCX 那一大塊黃色的積木功能一樣 ,程式設計師將寫好的程式灌入至此積木,然後 交由該積木去控制與他連結的 I/O 零件去執行程式,馬達可以說是 NXT 的主要 輸出零件,機器人需要運動的部分就要交給馬達去執行,NXT 除了這個輸出方 式外,還可以藉由中央控制積木的螢幕和音源來輸出,所以你可以編寫一首簡單 的歌交給 NXT 播放,至於 NXT 的輸入部分,超音波距離感應器主要藉由發射 超音波,然後接收自己發射出去的超音波,得到兩者之間所需的時間來計算與物 體的距離,光源感應器有兩種模式,一種是自己發出光線然後測反射回來光線,

另一種是接收來自外界的紅外線,音源感應器就是收音機接收來自外界的聲音,

觸碰感應器可以偵測該感應器是被壓住或鬆開[12]。

由於樂高機器人套件的彈性化,擁有著讓使用者自行開發、設計、組合成各

(15)

式不同類型的樂高機器人模式,也因此這樣的應用也被常拿來做教育上的教學,

讓小朋友透過樂高的組合,來設計不同類型的與功能的機器人,全球各地甚至舉 辦了樂高機器人相互競賽,並吸引不少的小朋友參與。而這樣的學習模式其實可 以讓學生來學習「控制流程」的設計,當中更有包含「邏輯分析」、「創意思考」、

「問題解決」、「合作學習」...等概念,讓各組的學生發揮溝通、思考、邏輯、合 作等不同方式,來組合拼湊出最佳化的機器人。世界各地許多知名的研究機構也 皆以這樂高機器人的使用來發展各式的學習模式以及各種不同的計畫。

圖 1-7 樂高 Mindstorms NXT 機器人[12]

整套的樂高 NXT 配件中也附帶了 NXT-G 這套圖像化控制軟體,G 即是 graphical 的意思。NXT-G 是由美商國家儀器公司的 LabVIEW 軟體所支援,而使 用介面與 MATLAB 的 simulink 類似,它將所有的程式包成一個一個的方塊,使 用者只需拖曳方塊再設定相關參數後就可以執行,對於樂高機器人很陌生的人也 可以很容易上手,如圖 1-8。但與文字程式相比,圖像化界面的程式再用性較低,

且與相同功能的文字程式碼相比,由圖像化介面所完成的程式會用掉比較多的記 憶體,執行上的效率也較慢。這也促使了許多高階樂高玩家致力於開發可以讓 C 語言及 Java 等高階程式語言可以直接控制 NXT 的程式環境。

(16)

圖 1-8 NXT-G 使用介面 (a)程式環境

圖 1-8 NXT-G 使用介面 (b)程式範例

(17)

1.3 研究研究研究研究背景與背景與背景與背景與目的目的目的目的

魔術方塊是匈牙利首都布達佩斯的一位年輕建築系教授愛爾伯-魯畢克的作 品,原本他是因為向學生教授建築學的一些理念所致做出的教具,沒想到卻變成 今日的魔術方塊,魔術方塊是一個非常奇特的結構,26 個小立方塊能自由的圍 繞一個同樣大小的中心塊轉動,魯畢克教授在這些小方塊的表面上,塗上了不同 的顏色,這樣就能一目了然瞭解每個方塊的轉動。它的遊戲規則是在打亂之後,

用最少的動作復原到最初的位置,1975 年這套遊戲申請了專利,1977 年上市之 後立刻吸引全世界千萬人投入,當中還包括一些數學家,因為它總共有約四千三 百億的變化[13-15]。到了近幾年,市面上更推出了多階魔術方塊例如 5x5 與 7x7 等等,以及由不規則型的小方塊組合而成的魔術方塊,更有非正方體造型的方塊,

如圖 1-9 所示,這使的魔術方塊的變化性及求解公式的複雜性又更上了一層樓。

以下分別就舉例說明幾種比較常見之解魔術方塊機器人:如圖 1-10 所示,主要 以 PC 為基礎之解魔術方塊機器人,其透過 CCD 將六個面之魔術方塊資訊傳至 PC 個人電腦,利用程式計算解方塊步驟,再透過伺服介面卡控制機器手臂動作 達到解方塊之目的,但是該架構往往需要昂貴之機構設計費用。針對此缺點,有 研究者利用樂高積木設計組合成所需之機器手臂,如圖 1-11 所示,如此可以大 大減少開發之成本與時間。

(a) (b)

(18)

(c) (d) 圖 1-9 各種多階與非標準魔術方塊[16]

圖 1-10 以 PC 為基礎之解魔術方塊機器人[17]

(a) (b) 圖 1-11 以 PC 為基礎之解魔術方塊樂高機器人[18.19]

(19)

Android 平 台 除 了 愈 來 愈 普 及,憑 著 Open Source 優 勢 Android 平台 首 先就是其開發性,開發的平臺允許任何移動終端廠商加入到 Android 聯盟中來。

開放的平台 也會帶來更大競爭,如此一來,消費者將可以用更低的價位購得心儀 的手機。一些研究者利用 Android 平台智慧型手機將解方塊程式寫入計算所需之 解方塊步驟,再利用藍牙通訊介面將動作命令傳送至 NXT 中央控制積木,利用 中央控制積木控制手臂動作達到解方塊目的,如圖 1-12 所示。更有不少研究者 直接利用 NXT 中央控制積木來計算解方塊之步驟,如圖 1-13 所示,如此即可不 需使用 PC 或手機來計算解方塊動作。但是,這樣單純以 NXT 中央控制積木來 實現解魔術方塊機器人時,往往侷限於 NXT 軟體開發環境與運算能力,時常無 法快速解題或需較多步驟才能達到解方塊之目的。

圖 1-12 以 Andriod 為基礎之解魔術方塊樂高機器人[20]

(a) (b) 圖 1-13 以 NXT 為基礎之解魔術方塊樂高機器人[21]

(20)

本研究將以 PC 為基礎設計所需之解魔術方塊機器人,在機構設計部分,本 論文利用樂高積木設計組合所需之機器人,如此可以大大減少開發之成本與時間。

接著,並透過 CCD Web Camera 將六個面之魔術方塊資訊傳至個人電腦,在 MATLAB 環境下利用影像處理技術得知該方塊顏色分佈之情狀,再進一步計算 解方塊所需之步驟,最後,在電腦使用 MATLAB 的 I/O 功能下,透過藍芽傳輸 傳送指令至樂高機器人。本論文所提出之 MATLAB 遠端遙控樂高機器人解決方 案,可以有立即執行程式設計無需額外的工具與在 MATLAB 環境下進行研發與 除錯工作等優點。如此,所提出之架構除了十分適合解魔術方塊機器人使用,還 十分適合各種不同功能之智慧型機器人使用。

除了 MATLAB RWTH Toolbox 之外,可用來控制 NXT 的高階程式環境還有 NXC、LabView for LEGO MINDSTORMS NXT、Microsoft Robotics Developer Studio 等。其中也有由美商國家儀器公司 LabView 軟體所支援的 NXT-G 圖像化 控制軟體,它將程式包成一個方塊,只需要拖拉方塊並且設定參數就可執行,不 過與同功能的程式碼相比是比較耗費記憶體的。

(21)

第二章第二章

第二章第二章 機器平台介紹 機器平台介紹機器平台介紹機器平台介紹

2.1 整體架構整體架構整體架構整體架構

為了讓電腦讀取魔術方塊的六個面

旋轉這二個動作,本章將對機器人平台加以探討 工具箱軟體的開發環境與

器人的實驗環境,其架構示意圖如圖 MATLAB 影像處理,MATLAB 令,NXT 主機及樂高伺服馬達 的平台部分與架設影像擷取裝置部分 塊的六面色值,再使用 RWTH 在本章中將逐步詳細介紹

機器平台介紹 機器平台介紹 機器平台介紹 機器平台介紹

為了讓電腦讀取魔術方塊的六個面,並且讓機器人完成翻轉與旋轉魔術方塊 本章將對機器人平台加以探討。實驗環境主要利用

軟體的開發環境與樂高 NXT 主機及其積木零組件來完成解魔術方塊機 其架構示意圖如圖 2-1 所示,包含了機影像擷取裝置

MATLAB 魔術方塊模擬器解題,RWTH 工具箱 伺服馬達,而積木部分則分為翻轉的手臂部分

的平台部分與架設影像擷取裝置部分。透過影像擷取與影像處理軟體讀取魔術方 RWTH 工具箱對 NXT 控制盒下達馬達控制指令

在本章中將逐步詳細介紹,再將整個實驗環境的架設作一說明。

圖 2-1 解魔術方塊機器人示意圖

並且讓機器人完成翻轉與旋轉魔術方塊 實驗環境主要利用 MATLAB 主機及其積木零組件來完成解魔術方塊機

包含了機影像擷取裝置,電腦 工具箱的控制指 而積木部分則分為翻轉的手臂部分,旋轉方塊 透過影像擷取與影像處理軟體讀取魔術方 控制盒下達馬達控制指令。以下

(22)

2.2 NXT 控制盒控制盒控制盒控制盒

在 NXT 之前,樂高公司在 1999 年發表了第一代智慧型主機:RCX。RCX 有 3 個輸入端與 3 個輸出端,可以接上多種感應器與馬達,組成一台簡易的機器 人。搭配 Robolab 這套圖像化軟體,透過紅外線傳輸將電腦上的程式下載到 RCX 上並執行。經過數年之後,樂高公司在 2005 年發表了新一代智慧型主機:NXT。

除了在硬體效能方面有大幅度的提升之外,也提供了更多種的感應器選擇。

以下則對 NXT 控制盒做詳細介紹[12]:

(1)處理器與記憶體:

主核心為 32 位元的 ARM7 微處理器,負責管理所有燒錄的執行檔,擁有 256K 快閃記憶體與 64K 內存 RAM,以及 8 位元 AVR 微控制器,負責管理 I/O 的控制,擁有 4K 快閃記憶體與 512B 內存 RAM。ARM (Advanced RISC Machine) 是一個 32 位元精簡指令集微處理器架構,並且廣泛運用在許多嵌入式系統設計 上,其特點就是耗電量低,故普遍應用在行動通訊領域。AVR(Automatic Voltage Regulor) 微 控 制 器 是 1997 年 由 ATMEL 公 司 研 發 出 的 增 強 型 內 建 快 閃 的 RISC(Reduced Instruction Set Computing)精簡指令集 8 位元單晶片,其具有高可 靠性,高速度,低功耗的特性,並廣泛應用在電腦外部設備,工業儀器,通訊設 備等領域。

圖 2-2 NXT 控制盒

(23)

(2)傳輸方式與 I/O 端子:

在電腦與 NXT 之間的傳輸,可透過 USB 2.0 (PC-NXT)與藍芽(PC-NXT 或 NXT-NXT)二種方式完成。而 NXT 擁有 3 個馬達輸出端與 4 個感應器輸入端,

並使用 6 芯傳輸線連接馬達與感應器,此傳輸線也支援 I2C 傳輸協定,包括了一 個用於將來使用的 IEC 61158 Type 4/EN 50 170 相容接口。

(3)使用者介面:

包含了一個 64x100 像素的可程式化液晶顯示面板,與左右鍵及橘色的功能 鍵,以及 8KHz 音質的揚聲器。透過功能鍵與左右鍵可以開啟 NXT 的使用介面,

可進行檔案的執行與刪除,或是在指定輸入端連接感應器,便可顯示該感應器的 讀值。在使用介面中也可編輯簡易的圖形化程式並且執行,但最多只可編輯 5 個工作方塊,對於複雜的動作還是必須使用高階的程式軟體。

(4)感應器:

NXT 支援的感應器約可分為 2 種:類比感應器與 I2C 感應器。類比感應器 有觸碰感應器,光感應器,聲音感應器等等,這類感應器將讀取到的值輸入 NXT 主機進行類比數位轉換。I2C 感應器有超音波感應器,紅外線感應器,以及一些 近年來開發的新型感應器。I2C(Inter Integrated Circuit)為一個串列匯流排介面,

利用二條訊號控制線(SCL,SDA)在二個 IC 之間傳送資料,並且有主(Master)從 (Slave)機制。其優點為佔用空間非常小,可大幅減少電路空間,並且確保資料不 失真,故近年來所開發的較複雜類型感應器皆運用 I2C 數位介面傳輸,也有將以 往的類比類型溫度感應器數位化,藉以提高精確度。在傳送速率上,傳統的類比 感應器將讀取的值輸入 NXT 主機進行類比數位轉換,I2C 感應器則是將感應結 果以一次一位元的串列傳送方式輸入 NXT 主機,所以在速率上是較類比感應器 慢的。

(5)電源:

6 個 3 號電池或充電鋰電池。其中感應器的供電為 4.3V,電流因感應器種類

(24)

2.3 LEGO 伺服馬達伺服馬達伺服馬達 伺服馬達

工業用伺服馬達可以精準的控制馬達轉動角度,而樂高公司也在 NXT 上推 出了內建角度感應器的伺服馬達,藉以做到定位(positioning),並且使用了很多 齒輪來達到增大扭力的效果,其構造如圖 2-3 所示,相較於上一代的 RCX 馬達,

以體積變大及高成本換取了功能更強大的馬達[12]。NXT 馬達將一個圓分為 360 等份,每個控制單位為 1 度,這對於一些嚴格要求馬達轉動角度的專題得以進 行。

圖 2-3 樂高伺服馬達解析圖

而此角度感應器為一個光學編碼器,利用一組發光二極體或是其他光源來發 光,使用光電晶體來感測。在發光二極體與光電晶體之間有一轉盤,通常是聯接 在馬達的轉軸上,而轉盤上有可透光與不可透光的區域,當馬達轉動時會帶動轉 盤,一照一暗的產生一個方波訊號。此方波訊號的頻率相對應於馬達的轉動速度,

而方波的數量則對應於馬達轉動的角度。若在感測端加入第二組光電晶體,將原 來的孔距定義成 360 度,並且讓二組光電晶體排列相位相差成 90 度。當圓盤轉 動時便可產生二個相位差 90 度的 AB 方波,若 A 方波領先 B 方波,則馬達正轉;

反之則馬達反轉,如圖 2-4 所示。

至於 NXT 馬達的速度控制方面,有別於一般的直流馬達透過電壓大小來改 變馬達速度,而是採用 PWM(Pulse width Modulation)脈波寬度調變方式來調整對 馬達的供電時間,藉以達到改變馬達轉速。一般來說 PWM 的頻率會在 1KHz 以 光學編碼器

(25)

上,一個週期約為 1 毫秒,以 50%工作週期來說相當於供電 0.5 毫秒/停止供電 0.5 毫秒。由於 1KHz 的頻率會有 1000 個週期,所以即使是 10%的工作週期馬達 的運作看起來也不會斷斷續續的。

(a)

(b)

圖 2-4 光學編碼器 AB 相訊號 (a)編碼器做正向運轉 (b)編碼器做反向運轉 轉 動 速 度 較 慢 時 轉 動 速 度 較 快 時

A脈 波

B脈 波

轉 動 速 度 較 慢 時 轉 動 速 度 較 快 時 A脈 波

B脈 波

轉 動 速 度 較 慢 時 轉 動 速 度 較 快 時 A脈 波

B脈 波

轉 動 速 度 較 慢 時 轉 動 速 度 較 快 時 A脈 波

B脈 波

(26)

2.4 BricxCC 與與 NXC 介紹介紹介紹介紹

在 2001 年,Dave Baum 發表了 NQC(Not Quite C):給 RCX 使用的類 C 語 言,程式環境是 RCX Command Center,後來改版成 Bricx Command Center。Bricx Command Center(BricxCC)是一個整合型程式環境,支援了樂高智慧型主機以及 第三方的程式語言[22-23]。

到了 2006 年 NXT 發表後,John C. Hansen 依照 NXT 的硬體設備發展了 NXC (Not eXactly C)。NXC 依照 NXT 規格對應了 C 語言語法並完整支援所有 NXT 的硬體功能與多種外接感應器,可在 Bricx command Center 中進行編譯,更提供 了許多方便的直接控制介面。

而 NXC 與 BricxCC 具有以下優點:

(1)免費且更新迅速:

NXC 與 BricxCC 都是免費的,在官方網站上也時常有測試檔與各種說明。

(2)相容性高:

使用樂高標準韌體,不需要安裝新的韌體,可與 NXT-G 交叉測試。

(3)穩定可靠:

BricxCC 經過歷代版本的更新後,已是一個成熟的程式環境,穩定性已比 NQC 大幅提高。

(4)上手快速:

從安裝 BricxCC 撰寫簡單的 NXC 程式,並且組裝樂高積木到機器人動起來 不會超過 30 分鐘。而且 NXC 有許多特有語法來存取感應器與馬達的參數。

NXC 包括了算數和邏輯運算、資料轉移、控制流程、條件指令、以及它特 有的程式指令,程式設計者只需懂得 C 或 C++ 程式語言就足以撰寫程式。在 BricxCC 介面中可以選擇使用何種樂高智慧型主機,以及與電腦的連接方式和韌 體,也可以選擇使用別種程式環境例如 NQC 與 NBC。BricxCC 會依使用者選擇

(27)

的程式種類編譯成硬體語言,只要 Compile 無誤便會產生一個 rxe 檔,這是 NXT 唯一辨識的執行檔。利用 BricxCC 的燒錄功能與 USB 傳輸線或藍芽,便可下載 燒錄檔至 NXT,再透過執行功能或是 NXT 上的橘色功能鍵便可執行並驗證程式 功能。BricxCC 的程式開發環境如圖 2-5 所示。

圖 2-5 BricxCC 程式開發環境

BricxCC 也有提供 NXT 與電腦連線的即時控制功能 Direct Control,這功能 包含了對指定輸出腳位的馬達進行正反轉的控制與運轉速度,以及馬達的剎車模 式,指定輸入腳位的感應器種類,也可選擇感應器的存取模式如預設的 RAW 值 與布林值,以及百分比值等等。在 Watching the Brick 功能中,則可以即時觀察 各輸入輸出腳位的馬達相關參數與感應器的值,也可以將這些讀取的值使用圖表 模式顯示出來,如圖 2-6 所示。另外也有 Brick Piano 可以讓 NXT 即時發音,可 以在此編輯發音並轉換成 NXC 程式碼。

(28)

圖 2-6 Watching the Brick 的資料圖表化功能(光感應器)

至於 NXC 對於馬達的控制方式約可分為無控制模式、速度控制模式、同步 模式、角度控制模式與 PID 控制模式五種。在無控制模式中,顧名思義的不會 對馬達給予誤差修正量,只是純粹的令馬達轉哪個方向,速度多快而已。速度控 制模式中,當給定馬達轉動速度參數後,如果給予馬達一個外力負載,則 NXT 會試著加大馬達的控制量以維持給定的速度參數。同步模式中,可以對指定的二 個馬達設定同步百分比,在此模式中若對其中一個馬達強加負載,則另一個馬達 速度也會跟著慢下來,至於同步百分比則指二個馬達的同步比率,舉例來說設 0 的話二個馬達會以同樣速度轉同一方向,設 20 的話則其中一個馬達速度會比另 一個慢一些,100 的話則是二個馬達以同樣速度轉不同方向。最後 PID 模式中,

由於 PID 控制器是內建於 NXT 中的,所以使用者只需要設定設定 P 值、I 值、D 值就可以令馬達旋轉指定的角度,而 NXT 預設的 PID 值分別為 96、32、32,若 觀察不同的 PID 值例如只給 P 值其他為 0,則誤差無法抵銷以至馬達不能剛好轉 到指定角度;若 P 值為 0 只給 ID 值,則轉動的誤差會變大;若只給 PI 值而 D 值為 0,則馬達會轉過頭再轉回來修正。

(29)

2.5 MATLAB 影像擷取與處理工具箱影像擷取與處理工具箱影像擷取與處理工具箱影像擷取與處理工具箱

MATLAB 與 Simulink 影像處理工具提供工程師,科學家及研究人員一個直 覺式,彈性化的環境來解決複雜的影像處理問題。並廣泛運用於航太及國防、遠 距感應技術、生物科技、醫學影像、科學影像及材料科學等等。且適用於各種動、

靜態影像處理,搭配影像擷取卡、網路攝影機等裝置擷取影像,進行影像增強、

轉換、計算、濾波器設計等影像分析及演算法發展之應用,提供在處理複雜的影 像問題時,做更有效率及最適當的影像處理。

論文中主要使用的 2 個工具箱模組[24]:

 影像擷取工具箱

影像擷取工具箱可直接在 MATLAB 或 Simulink 的環境下,將與電腦相容的 影像硬體裝置所擷取的影像與動態影片匯入 MATLAB 裡做分析處理,並支援許 多硬體供應商的產品。

 影像處理工具箱

影像處理工具箱提供一個完整的開發環境進行影像分析、處理、視覺化及演 算法開發功能。可以恢復雜訊或著降低影像、增強影像、粹取功能、分析陰影、

結構,紀錄 2 個影像,並且管理色彩裝置檔案。

搭配影像擷取工具箱並因應 LEGO 積木所架設的機器人平台,適合本實驗 機構的影像擷取裝置有 CCD 與網路攝影機,兩者的相異點為:

 CCD 需要額外電源供應。

 網路攝影機一般視訊直接用 USB 接到電腦後,灌入驅動程式即可使用,可 是 CCD 需要利用影像擷取器連接至電腦。

 CCD 所擷取的影像畫質解析度較高,但是相對的處理資料量也較大。

而整體實驗架構中,影像擷取部分主要用以抓取並辨識魔術方塊一個面上的 九宮格色塊,故在此選擇了架設容易但解析度較低的網路攝影機。在使用網路攝 影機的實作情況則可以利用影像擷取工具箱裡面介紹的方法以及 function 實現,

(30)

其步驟如下:

步驟一:安裝與設定影像擷取裝置

安裝影像擷取設備的驅動程式並且連接至電腦,再使用相關應用軟體預覽影 像畫面。若使用 CCD 則需多安裝影像擷取卡的驅動程式。

步驟二:檢視影像擷取工具箱唯一辨識的影像擷取裝置檢索資訊

要判斷 MATLAB 是否和網路攝影機連接上,要看 DeviceIDs 這個參數是否 有正確 值,再進行下一個步驟,一般正確的數值會是 1,若 MATLAB 沒有讀到 網路攝影機,則該值是 0,在此情形下須透過 imaqreset 指令清除所有影像擷取 物件,訊息如下:

info =

AdaptorDllName: [1x67 char]

AdaptorDllVersion: '3.3 (R2009a)' AdaptorName: 'winvideo' DeviceIDs: {[1]}

DeviceInfo: [1x1 struct]

若網路攝影機與 MATLAB 連接妥當,則可觀看影像擷取裝置相關資訊,其 中 DefaultFormat 為擷取圖像時的解析度,DeviceName 為網路攝影機名稱,訊息 如下:

dev_info =

DefaultFormat: 'RGB24_640x480' DeviceFileSupported: 0

DeviceName: '09-ASE200' DeviceID: 1

ObjectConstructor: 'videoinput('winvideo', 1)'

(31)

步驟三:創驗視訊輸入物件

在此步驟為創建 MATLAB 與影像擷取裝置的連接通道,可運用 videoinput 指令並且再參照步驟二獲得的資訊進行相關設定。訊息如下:

vid = videoinput('winvideo',1,'RGB24_640x480') Summary of Video Input Object Using '09-ASE200'.

Acquisition Source(s): input1 is available.

Acquisition Parameters: 'input1' is the current selected source.

10 frames per trigger using the selected source.

RGB24_640x480' video data to be logged upon START.

步驟四:預覽視訊

由於是使用 USB 連接到電腦,所以在擷取影像時沒有太大的困難,可由 preview(vid)預覽,以下是 Demo 影像:

圖 2-7 影像擷取圖樣 步驟五:設定影像擷取物件屬性

當創建完視訊輸入物件之後,可用 getselectedsource 指令檢視其相關屬性,

並可利用 set function 更改相關參數,例如影像擷取禎數等等。

步驟六:擷取影像

(32)

可以使用 imwrite 將影像存成硬碟檔案。

在取得影像資訊之後便可利用影像處理工具箱進行影像處理,在 MATLAB 中會將影像存取成依格式而具有不同維度的矩陣,舉例來說圖 2-6 是一個 640x480 像素的 RGB 影像,並且每一點像素都有 RGB 三個值,則存取成一個三 維 640x480 矩陣。之後的一般處理方式有轉換圖像的資料類型進行數學運算,或 是影像類型方便處理,可參照表 2-2。處理的方式有對於灰階像素對比不明顯的 圖片進行直方圖等化(histogram equalization)處理以增強明暗度,灰階影像的不同 閥值二元化處理,使用濾波函數針對影像邊緣的銳利化或是去除影像雜訊以及去 除模糊來復原影像,利用膨脹與侵蝕來處理影像中的形狀,區域的填充與連通以 及骨架化處理等等[25]。

函數 用途 格式

ind2gray 索引轉灰階 y= ind2gray(x,map) gray2ind 灰階轉索引 [y,map]= gray2ind(x) rgb2gray RGB 轉灰階 y= rgb2gray(x) gray2rgb 灰階轉 RGB y= gray2rgb(x)

rgb2ind RGB 轉索引 [y,map]= rgb2ind (x) ind2rgb 索引轉 RGB y= ind2rgb (x,map)

表 2-1 MATLAB 影像轉換

圖 2-8 為簡易的樣本處理,將原始的 RGB 彩色圖經過灰階轉換並且經過直 方圖等化處理,再利用 Otsu 演算法取得的最佳閥值二元化,之後再經過 3x3 元 素全為 1 的矩陣侵蝕 2 次。

(33)

圖 2-8 影像處理樣本 (a)原始灰階影像 (b)histeq 處理後的灰階影像 (c)Otsu 最佳閥值二元化 (d)以 ones(3,3)二次侵蝕

(a) (b)

(c) (d)

(34)

2.6 RWTH Toolbox 介紹介紹介紹介紹

RWTH Mindstorm NXT Toolbox 為德國亞琛大學電機工程學系 2007 年發表 的以 MATLAB 為基礎的 LEGO 機器人程式開發環境,可以利用 MATLAB function 與機器人直接性的互動,並且支援藍芽遠端操控 NXT 智慧型主機,如圖 2-9 所 示。工具箱設計概念最大的優點就是可以將機器人應用與 MATLAB 的複雜數學 運算結合在一起,提供了機器人更多人工智慧與其他運用的無限可能。從 2007 年到 2008 年該學系已經成功運用 RWTH Mindstorm NXT Toolbox 完成了 200 個 機器人專題。

圖 2-9 PC 與 NXT 連線圖[12]

另外也有搭配 Real-Time Workshop 和 Real-Time Workshop Embedded Coder 使用的 simulink 模擬工具,以下則對此 simulink 模擬工具及其套件軟體作一介 紹:

(1)Cygwin

由於 Linux 嵌入式系統為現在最普遍使用的,如果要使用 simulink 來進行 NXT 的實作與模擬則必須具備 Linux 的作業環境。而 Cygwin 便是一個 Windows

(35)

作業工具,並且提供 GNUARM 的相容環境。主程式可在官方網站下載:

http://www.cygwin.com,在安裝過程中需點選 Devel 底下的 Make 執行檔。

(2)GNUARM

這是一個在 Linux 作業系統下的 toolchain,由於無法直接在 Windows 底下 執行,所以必須將軟體安裝在 Cygwin 底下並搭配使用。主程式可在官方網站下 載:http://www.gnuarm.com。

(3)NeXTTool

NeXTTool 使用了 LEGO Mindstorms NXT 的驅動來傳輸電腦與 NXT 的資料,

可以進行燒錄,檢視 NXT 的資訊如感應器讀值、儲存在內的檔案或是下載新的 韌體等等。工具軟體可在 http://bricxcc.sourceforge.net/utilities.html 下載,並且將 資料夾放置在 Cygwin 下。

(4)NXT standard firmware

Simulink 的模擬功能如果要連線 NXT 下載燒錄檔則必須更新版本較高的韌 體(1.06 或更高)。韌體可在 http://bricxcc.sourceforge.net/lms_arm_jch.zip 下載,再 將檔案存放至 NeXTTool 目錄下,並且使用 cmd 命令提示字元鍵入關鍵字 nexttool /com=usb –firmware=lms_arm_nbcnxc_107.rfw 更新韌體。

(5)Embedded Coder Robot NXT

以 NXT 的 ARM 系統為基礎而設計出來的 Simulink 程式,可以拉圖或是設 計控制器模組,而模組方塊的架構與各元素的定義為定點與浮點設計。工具可在 MATLAB 官方網站下載,資料夾必須放置在 MATLAB 的安裝路徑最頂端。

(6)nxtOSEK

nxtOSEK 是 NXT 程序化控制器的即時運作系統(RTOS,Real-Time Operating Systems),包含了 leJOS NXJ 以及 TOPPERS OSEK RTOS 的 I/O 驅動,並且使 NXT 智慧型可運行 ANSI C/C++程序。程式可在 http://lejos-osek.sourceforge.net 下載,將資料夾存放至第五個介紹的軟體 ecrobotNXT 下的 environment 裡。

(36)

安裝完以上六個軟體後便可執行位於第五個介紹的 ecrobotNXT 資料夾下的 ecrobotnxtsetup.m 以完成最後的程序,其中需要注意所有的資料夾路徑中不可存 在有空格或是參雜全形半形字體的資料夾,否則 m-file 會抓取不到路徑。之後便 可在 simulink 找到新增的模組工具箱 ECRobot NXT Blockset,其模組方塊如圖 2-10 所示:

圖 2-10 ECRobot NXT 模組方塊

其中 ExpFcnCalls scheduler 是控制 Function-Call Subsystems 的執行時間,可 以設定多個 Function-Call Subsystems 並給予特定的時間參數,並且用 Subsystems 方塊涵蓋起來,在 Function-Call Subsystems 裡面可以給予一些特定功能排程,例 如令馬達跑弦波訊號,如圖 2-11 所示,分別給予三個 Function-Call 不同的時間 參數 100ms、500ms、1000ms。

(37)

(a) (b)

(c) (d)

圖 2-11 (a)整體架構方塊 (b)scope 數據圖,橫軸為時間,縱軸為徑度 (c)subsystems 內的三個 Function-Call (d) Function-Call 內的模組方塊

(38)

第三章第三章

第三章第三章 解魔術方塊機器人設計解魔術方塊機器人設計解魔術方塊機器人設計解魔術方塊機器人設計

3-1 影像處理與結果影像處理與結果影像處理與結果影像處理與結果

在本節中,將依照第二章介紹的影像擷取工具箱與影像處理工具箱,擷取魔 術方塊的六個面,並處理分析六個面的色值。其中如圖 3-1 所示,先以網路攝影 機擷取好魔術方塊的六個面,並寫入硬碟成 bmp 檔,由於每個面的九個小方塊,

位於正中間的小方塊是無論如何轉動方塊都不會移動位置的,這是因為它是軸心 方塊,同時也是六面顏色的判斷。

(a) (b)

(b) (d)

(e) (f)

圖 3-1 魔術方塊六面影像 (a)白色面 (b)綠色面 (c)黃色面 (d)藍色面 (e)橘色 面 (f)紅色面

(39)

擷取完影像後便可以進行影像處理,首先依照表 2-1 的轉換指令將原始的彩 色圖案轉換成灰階圖案,如圖 3-2 所示。

(a) (b)

(b) (d)

(e) (f)

圖 3-2 由圖 3-1 轉換的灰階圖案 (a)白色面 (b)綠色面 (c)黃色面 (d)藍色面 (e)橘色面 (f)紅色面

之後再選擇適當的閥值把灰階圖案轉換成黑白的二元化圖案,如圖 3-3 所示,

並經過相關的處理將方塊周圍以外的白色區域去除,以取得影像中最感興趣的地

(40)

(a) (b)

(c) (d)

(e) (f)

圖 3-3 由圖 3-2 轉換的二元化影像 (a)白色面 (b)綠色面 (c)黃色面 (d)藍色面 (e)橘色面 (f)紅色面

取得了最感興趣的部分後,接下來則是取得魔術方塊的邊框位置,在 2-5 的 影像處理介紹中提到,MATLAB 的影像處理是將原始影像轉換成相對應大小的 矩陣,因影像的 RGB、灰階格式的不同而具有不同的維度,並且每一點的像素 會因應顏色的不同而有不同的值,例如 RGB 影像的三個值皆為 0 到 255,灰階 影像也是 0 到 255 的值,二元化影像則是 0(黑)和 1(白),而影像的像素座標

(41)

域最小的 x 軸座標、y 軸座標以及最大的 x 軸座標、y 軸座標,這二點約等於是 影像中魔術方塊的左上點與右下點。

在取得了魔術方塊的對角二個點後,便可以透過最大與最小軸座標計算出魔 術方塊一個邊的長度,由於實驗中的方塊是標準魔術方塊,所以每一邊的長度以 及每一面的九個小方塊邊長都是固定的,故取得了邊長後再除以三就是小方塊的 邊長。得到約略的九個小方塊的涵蓋區域後便可以分辨它們的顏色,通常一個小 面顏色的 RGB 值並不是均勻分佈的,會因為環境光的影響而改變色值,所以在 此對每一個小方塊取 9 個等距離的點,透過計算這 9 個點的像素值的平均來判斷 這一小面是屬於何種顏色。在判斷顏色之前必須要有魔術方塊的六個顏色 RGB 值,在此先做了六個顏色的取樣並四捨五入,可參考表 3-1:

顏色 R 值 G 值 B 值

紅 148 0 0

橙 255 64 0

黃 180 135 24

綠 0 47 54

藍 0 0 94

白 186 182 192

表 3-1 魔術方塊 6 色取樣

依照表 3-1 的取樣結果設定好適當的 RGB 判斷區間,來針對每一面的九個 顏色進行判斷,在此以白色面即圖 3-1(a)來作一判斷,從以上說明取得白色面的 九格像素平均值,如表 3-2 所示,其中白色面方塊因為印有商標所以會有較大的 偏差,可以加大中心方塊的判斷區間,或著經過其他 5 面的中心方塊色彩判斷將 印有文字的白色面歸類為白色。

(42)

方塊位置 R 值 G 值 B 值

左上 0 26 30

中上 255 56 0

右上 166 162 172

左中 0 24 26

正中心 159 154 151

右中 0 0 75

左下 0 0 71

中下 140 0 0

右下 170 164 174

表 3-2 白色面九格方塊像素值

透過程式的判斷式將白色面的色彩進行歸類,黃色歸類為 1、綠色歸類為 2、

紅色歸類為 3、橙色歸類為 4、藍色歸類為 5、白色歸類為 6,用 3x3 矩陣顯示則

可得到 2 4 6 2 6 5

5 3 6,而其他的色面分別為:紅色面 5 3 2 6 3 6

6 5 5、橙色面 3 6 1 4 4 1 1 5 6、

黃色面 5 2 4 1 1 3

1 5 2、綠色面 3 2 4 1 2 1

3 6 1、藍色面 2 3 3 4 5 4 4 2 4。

若將得到的 6 面值畫成一個展開圖可以得到一個較明顯的色彩分佈,由於軸 心方塊是固定不動的,同時也是各色面的原始顏色根據,若以白色面來觀看其他 4 個鄰面的顏色,則一定固定為紅綠橙藍依順時鐘排列,而另一面則一定是黃色,

如圖 3-4 所示:

(43)

2 3 3

4 5 4

4 2 4

3 6 1 2 4 6 5 5 6 2 5 1

4 4 1 2 6 5 6 3 6 3 1 1 1 5 6 5 3 6 2 3 5 4 2 5

3 2 4

1 2 1

3 6 1

圖 3-4 各色面展開圖

(44)

3.2 魔術方塊解題魔術方塊解題魔術方塊解題魔術方塊解題與與結果結果結果結果

在取得 6 面的顏色後就可以進行解題,解題的方式可以透過魔術方塊的特有 公式或是用程式模擬器求解。在特有公式的部分,有分為基本解與快速解,許多 人會認為魔術方塊是一個面一個面慢慢解的,但實際上魔術方塊的解法是一層一 層解的,基本的解法是先轉好第一層,再轉好第二層,最後再轉好第三層,這個 基本的轉法稱為 LBL,也就是 Layer By Layer。此解法的出現是由魔術方塊推出 的 30 年來,許多的玩家不斷的討論與經驗累積整理出來的,並且普遍流傳在坊 間之中,對於熟記解題公式的人來說多半可以在 1 分鐘左右解完方塊。至於要能 夠在 30 秒甚至是 20 秒內解完魔術方塊,其目的已不是單純的解題而是講求時間,

盡可能的減少公式以增快解題速度,這類的解法稱為「速解魔方」。至於速解公 式的始祖,美國賓漢頓大學教授弗雷德里奇(Jessica Fridrich)[13-15],她設計 了 70 幾個公式並且可以 17 秒解完方塊,而現今的許多速解公式大部分都是改編 她的公式。在此則對 LBL 基礎解法作一詳細介紹,大致上的解法為先轉好第一 層的十字形,並且邊塊的顏色必須與鄰面,相同如圖 3-5(a),然後再轉正 4 個角 塊,顏色也必須與 3 個鄰面相同,如圖 3-5(b),如此第一層就轉完了。接著將第 二層的邊塊互換使 2 個鄰面顏色相符合,如圖 3-5(c)。最後第三層也是先轉好該 色面的十字形,不過與第一層不同的是十字形的邊塊不用與鄰面符合,如圖 3-5(d),之後再針對 4 個角塊進行互換與翻面至 3 個鄰面相符,如圖 3-5(e)、3-5(f),

最後再對 4 個邊塊互換至與鄰面相符合,如圖 3-5(g),如此便可解完方塊,其詳 細流程如以下所示:

圖 3-5 (a)步驟一 圖 3-5 (b)步驟二

(45)

圖 3-5 (c)步驟三 圖 3-5 (d)步驟四

圖 3-5 (e)步驟五 圖 3-5 (f)步驟六

圖 3-5 (g)步驟七

圖 3-5 LBL 基本解法流程圖[26]

魔術方塊的解法除了記公式之外也可以利用魔術方塊解題器,隨著電腦資訊 的發展,已有許多數學家將推算出的演算法程式化,實現在 C 語言或是 Java,

以及 MATLAB 等程式環境,除了兼具快速解題之外還附帶模擬的魔術方塊影像 可以觀察解題過程。在論文中則是使用程式模擬器求解,而解題器是由 Alexander Mueller 所設計的,這是一個寫在 MATLAB 底下的 m-file,可以在 MATLAB 網 頁上下載:http://www.mathworks.com/matlabcentral/fileexchange/8461,開啟後如 圖 3-6 所示:

(46)

圖 3-6 解題器模擬圖

在視窗中可以翻轉魔術方塊的各個面,也可以拖曳方塊觀察各個面的色彩分 佈,或是隨機產生一個轉亂的方塊,然後進行自動求解與手動求解。在此將魔術 方塊的 6 個面色值代入解題器中,如圖 3-7 所示:

(a) (b)

(47)

(e)

圖 3-7 (a)黃紅綠色面 (b)黃藍紅色面 (c)黃橙藍色面 (d)黃綠橙色面 (e)紅綠白 色面

按下解題鍵後便會產生一連串的解題動作,例如某色面向右轉 90 度或是向 左轉 90 度以及旋轉 180 度,以目前的方塊來說,會產生以下的動作:綠色面右 轉 90 度>黃色面左轉 90 度>橙色面左轉 90 度>綠色面旋轉 180 度>紅色面右 轉 90 度>橙色面左轉 90 度>黃色面左轉 90 度>藍色面旋轉 180 度>白色面右 轉 90 度>黃色面旋轉 180 度>紅色面左轉 90 度>綠色面右轉 90 度>白色面右 轉 90 度>藍色面左轉 90 度>紅色面左轉 90 度>解題完成。再將上述動作轉換 成馬達控制指令後,可藉由 PC 端藍芽無線模組將命令傳至 NXT 控制盒控制馬 達動作,以達到實際解題的目的。而圖 3-10(a)~3-10(s)為解題器的解題過程:

(a) (b)

(48)

(c) (d)

(e) (f)

(g) (h)

(i) (j)

(49)

(s)

圖 3-8 解題器解題過程

(k) (l)

(m) (n)

(50)

由於機台設計的限制

動作,和手臂夾住方塊旋轉方塊底面

旋轉多少度,則必須將該色面移至底面以進行夾住旋轉該色面的第一層 人的實際解題動作必須設計過

機器人動作以及方塊變化做一探討

圖 3

 機器人動作:

機器人的動作共有:

機器手臂翻轉方塊一次

(反)轉 180 度、反轉

由於機台設計的限制,機器人只能做方塊翻面的推動作與原地旋轉換面的轉 和手臂夾住方塊旋轉方塊底面。為了配合解題器所產生的動作

則必須將該色面移至底面以進行夾住旋轉該色面的第一層 人的實際解題動作必須設計過,以符合解題器解題過程的方塊變化 機器人動作以及方塊變化做一探討:

圖 3-9 方塊六面位置定義

3-10 機器人的翻轉方塊與旋轉方塊

:方塊平台正轉 90 度、正(反)轉 180 度、

機器手臂翻轉方塊一次、二次、三次,手臂夾住方塊上二層正轉

反轉 90 度。根據目標轉動色面的位置來搭配以上的動作 機器人只能做方塊翻面的推動作與原地旋轉換面的轉

為了配合解題器所產生的動作,如某色面 則必須將該色面移至底面以進行夾住旋轉該色面的第一層,則機器 以符合解題器解題過程的方塊變化。以下則針對

、反轉 90 度,

手臂夾住方塊上二層正轉 90 度、正 根據目標轉動色面的位置來搭配以上的動作,

(51)

例如目標色面在方塊的頂面,則手臂翻轉二次使該色面移至方塊的底面,再 進行手臂夾住旋轉的動作;或是目標色面在左面,則需方塊平台反轉 90 度,

之後手臂翻轉方塊一次,接著手臂夾住方塊旋轉。

 方塊色面變化:

對於一個標準的魔術方塊來說,由於內部軸心的設計使的方塊每一面的中心 小方塊無論方塊如何轉亂都不會轉動到它,故此小方塊被用來判別魔術方塊 的色面,同時,這小方塊的另一面也會被固定,例如白色面的對面必定是黃 色,綠色的對面必定是藍色,紅色面的對面必定是橙色,如此只要知道三個 並非互為相對面的色面,就可以知道方塊的六個色面位置。若給予色面數字 編號來表示:黃色為 1、綠色為 2、紅色為 3、橙色為 4、藍色為 5、白色為 6,則每個相對面的編號相加之和恰好為 7,綜合以上各點可以方便於用數 字來表示方塊目前的狀態。

現在取三個互不為相對面的色面之編號放入 1x3 的陣列之中,在此取黃色、

綠色、紅色:

1 2 3

其中,元素 1 為方塊的底面,元素 2 為方塊的前面,元素 3 為方塊的右面。

配合機器人的動作來觀看陣列的變化,如平台旋轉和手臂翻轉,可得到以下規律,

其中 R 是指平台正轉 90 度,L 是指平台反轉 90 度,2R(2L)是指平台旋轉 180 度:

 平台正轉 90 度:

1 2 3 1 4 2

(52)

原地旋轉並不會改變方塊頂面和底面的顏色,所以元素 1 的內容不變。前面 的顏色會被原本右面的相對面取代,也就是7  column3。右面的顏色會 被 原 本 的 前 面 取 代 。 則 結 論 可 知 原 本 的column3被替換成 4,然後 column2與column3互換,如下所示:

 平台反轉 90 度:

1 2 3 1 3 5 

元素 1 的內容不變。前面的顏色會被原本的右面取代。右面的顏色會被原本 前面的相對面取代,也就是7  column2。則結論可知原本的column2被 替換成 5,然後column2與column3互換,如下所示:

 手臂翻轉一次:

1 2 3 5 1 3 

底面被原本的前面之相對面取代,也就是7  column2。前面被原本的底 面取代。翻滾的動作並不會改變右面與左面的顏色,所以元素 3 的內容不變。

則結論可知原本的column2被替換成 5,然後column1與column2互 換,如下所示:

而平台旋轉 180 度以及手臂翻轉二次、三次,可以由以上三種變化規律衍生 出來。至於手臂夾住方塊旋轉的動作,由於上二層被夾住固定,不會動到位於第 二層的中心小方塊,所以六面的顏色不會改變,如以下所示,其中 r 是指夾住旋 轉 90 度,ℓ是指夾住旋轉-90 度,2r(2ℓ)是指夾住旋轉 180 度:

(53)

夾住正轉 90 度:

1 2 3 1 2 3  夾住反轉 90 度:

1 2 3 1 2 3

綜合以上的變化規律以及機器人的解題動作,可以列出一個較為完整的陣列 變化,在此以解題器的步驟一為例,而方塊的起始狀態定為 1 2 3:

1 2 3 1 4 2 1 5 4 2 1 4 2 1 4 

其中,由於機台的限制所以必須將目標色面轉至底面,也就是元素 1 的內容 必須與目標面的顏色編號相同。在步驟一中目標面位於前面,所以機器人必須先 平台旋轉 180 度然後手臂翻一次面,再夾住方塊正轉 90 度。而目標面的可能位 置共有 6 種,它們的機台動作與陣列變化如下所示,為了簡化,在此只列出目標 面A與相對面A,其餘為X:

 case I:目標面位於底面 A X X 夾住旋轉

無須旋轉翻面,可以直接夾住旋轉。

 case II:目標面位於前面

X A X X X A X A X A X X 夾住旋轉 

先旋轉 180 度再翻一次面,然後夾住旋轉。則可得知 case II 的動作為 RRT。

 case III:目標面位於右面



(54)

先正轉 90 度再翻一次面,然後夾住旋轉。則可得知 case III 的動作為 RT。

 case IV:目標面位於左面

X X A X A X A X X 夾住旋轉 

先反轉 90 度再翻一次面,然後夾住旋轉。則可得知 case IV 的動作為 LT。

 case V:目標面位於後面

X A X A X X 夾住旋轉 

翻一次面,然後夾住旋轉。則可得知 case V 的動作為 T。

 case VI:目標面位於頂面

A X X X A X A X X 夾住旋轉 

翻二次面,然後夾住旋轉。則可得知 case VI 的動作為 TT。

之後我們可以利用以上 6 種情況來設計機器人的動作,並且配合解題器所產 生出的解題過程。

最後可以發現,雖然解題器的過程只有 15 個步驟,但是由於機台的動作限 制,換成機器人的動作可能會有大約 70 個步驟,在此則設計了一個對應於解題 器結果的機器人動作對照程式,將所有步驟的目標色面編號以及夾住旋轉多少度 列成陣列,如下所示:

2 1 4 2 3 4 1 5 6 1 3 2 6 5 3 目標色面 r ℓ ℓ 2r r ℓ ℓ 2r r 2r ℓ r r ℓ ℓ 旋轉度數 為了方便設計,將旋轉度數的英文代號改以數字表示:

1 3 3 2 1 3 3 2 1 2 3 1 1 3 3 旋轉度數

(55)

其中旋轉度數的 1 為正轉 90 度,2 為旋轉 180 度,3 為反轉 90 度。再配合 先前的目標色面位置與機器人動作進行判斷,以及各機器人動作的方塊色面變化 規律進行狀態更新,可產生以下所示,方塊的起始狀態為 1 2 3:

步驟一:

case II : RRT

revolve right 180 平台旋轉 180 度 turn once 翻轉一次

catch and revolve 90 夾住旋轉 90 度 ind =

2 1 4 方塊現在的狀態

步驟二:

case II : RRT

revolve right 180 平台旋轉 180 度 turn once 翻轉一次

catch and revolve -90 夾住旋轉-90 度 ind =

1 2 3 方塊現在的狀態

步驟三:

case VI : LT

revolve left 90 平台反轉 90 度 turn once 翻轉一次 catch and revolve -90 夾住旋轉-90 度

(56)

4 1 5 方塊現在的狀態

步驟四:

case VI : LT

revolve left 90 平台反轉 90 度 turn once 翻轉一次

catch and revolve 180 夾住旋轉 180 度 ind =

2 4 6 方塊現在的狀態

步驟五:

case V : T

turn once 翻轉一次 catch and revolve 90 夾住旋轉 90 度 ind =

3 2 6 方塊現在的狀態

步驟六:

case IV : TT

turn twice 翻轉二次 catch and revolve -90 夾住旋轉-90 度 ind =

4 5 6 方塊現在的狀態

步驟七:

(57)

revolve left 90 平台反轉 90 度 turn once 翻轉一次 catch and revolve -90 夾住旋轉-90 度 ind =

1 4 2 方塊現在的狀態

步驟八:

case VI : LT

revolve left 90 平台反轉 90 度 turn once 翻轉一次

catch and revolve 180 夾住旋轉 180 度 ind =

5 1 3 方塊現在的狀態

步驟九:

case V : T

turn once 翻轉一次 catch and revolve 90 夾住旋轉 90 度 ind =

6 5 3 方塊現在的狀態

步驟十:

case IV : TT

turn twice 翻轉二次 catch and revolve 180 夾住旋轉 180 度

(58)

1 2 3 方塊現在的狀態

步驟十一:

case III : RT

revolve right 90 平台正轉 90 度 turn once 翻轉一次 catch and revolve -90 夾住旋轉-90 度 ind =

3 1 2 方塊現在的狀態

步驟十二:

case III : RT

revolve right 90 平台正轉 90 度 turn once 翻轉一次 catch and revolve 90 夾住旋轉 90 度 ind =

2 3 1 方塊現在的狀態

步驟十三:

case VI : LT

revolve left 90 平台反轉 90 度 turn once 翻轉一次 catch and revolve 90 夾住旋轉 90 度 ind =

6 2 4 方塊現在的狀態

(59)

步驟十四:

case V : T

turn once 翻轉一次 catch and revolve -90 夾住旋轉-90 度 ind =

5 6 4 方塊現在的狀態

步驟十五:

case VI : LT

revolve left 90 平台反轉 90 度 turn once 翻轉一次 catch and revolve -90 夾住旋轉-90 度 ind =

3 5 1 方塊現在的狀態

由以上可以得到更完整的機器人動作資訊,而這些動作都是連貫下來的,並 且隨時更新方塊的目前狀態。

起始位置到步驟四:

1 2 3  !!" 2 1 4 ℓ !!" 1 2 3ℓ " 4 1 5# !" 2 4 6 

步驟五到步驟九:

3 2 6ℓ " 4 5 6ℓ " 1 4 2# !" 5 1 3 6 5 3 # !"

步驟十到步驟十四:

1 2 3  " 3 1 2  " 2 3 1 " 6 2 4ℓ 5 6 4ℓ "

步驟十五:

(60)

第四章第四章

第四章第四章 結論與未來 結論與未來結論與未來結論與未來研究研究研究 研究

4.1 結論結論結論結論

本論文以 PC 為基礎設計解魔術方塊機器人,並運用樂高積木組合成理想的 實驗機構,樂高積木的組合具有多變化性以及塑膠材料的低成本特性,可大幅減 少機構的組裝時間及成本的開銷。接著是讓 PC 取得魔術方塊的 6 面顏色資訊,

這裡使用了網路攝影機為影像擷取裝置,與 CCD 相較之下雖然畫素較低,但具 有 USB 隨插即用的優點,也不需安裝影像擷取卡,同時設備成本也較低。之後 利用 MATLAB 的影像擷取工具箱將網路攝影機的影像擷取至資料庫,並透過影 像處理工具箱對擷取的影像進行灰階及二元化處理,適當的去除影像的白點以求 得方塊的邊框座標,如此便可得知九個小方塊的涵蓋區域,再針對這九個小方塊 進行顏色的判斷。最後,利用魔術方塊解題器套入 6 個色面的色彩分佈進行解題,

並將解題步驟轉換為馬達的控制資訊,透過 NXT 與樂高積木組合成的機構將方 塊的各色面轉正。整體實驗結合了程式設計與運用,以及硬體設備的應用。

(61)

4-2 未來未來未來未來研究研究研究 研究

本論文設計的解魔術方塊機器人尚有許多不足的地方,例如在未來的發展上 可以將 PC 端的 MATLAB 魔術方塊解題器之演算法則,實現在 NXT 控制盒上。

也可以增加 NXT 基底的影像擷取模組,如 NXTCam。並且可以改善解解題器的 演算法試著減少解題步驟,以達到快速解題的目的。而機構的部分可以改善機器 手臂的架構,論文中的機構只使用 2 個馬達,對於某些翻面動作是較為不便的,

可以試著加入更多的馬達來省去不必要的翻面動作。

參考文獻

相關文件

• 承接視覺藝術科作為高中課程的 選修科,並繼續推動本科課程的 發展,教育局於2020/21學年開

大學教育資助委員會資助大學及絕大部分專上院 校接納應用學習中文(非華語學生適用)的「達 標」

1.本招生以參與「工業工程與設備管理產學攜手專班」之國立霧峰農工 104 學年度日間部機 械科、國立秀水高工 104

「思有合一」外,還可以用“arche”(始基)的觀念來理解萬物存在之基

(Samuel, 1959) Some studies in machine learning using the game of checkers. Picture extracted from the original paper of Samuel for

電機工程學系暨研究所( EE ) 光電工程學研究所(GIPO) 電信工程學研究所(GICE) 電子工程學研究所(GIEE) 資訊工程學系暨研究所(CS IE )

張庭瑄 華夏技術學院 數位媒體設計系 廖怡安 華夏技術學院 化妝品應用系 胡智發 華夏技術學院 資訊工程系 李志明 華夏技術學院 電子工程系 李柏叡 德霖技術學院

本計劃旨在根據修訂初中中國歷史課程的調適 課程大綱,發展適合非華語生使用的學與教資