Top Banner
i 崑山科技大學 資訊工程系 專題製作報告 隨身導覽機器人 生:鄭郁翰、郭冠佑、張家翔 指導老師:黃慶祥 中華民國一百年六月
70

崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework...

Aug 13, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

i

崑山科技大學

資訊工程系

專題製作報告

隨身導覽機器人

學 生:鄭郁翰、郭冠佑、張家翔

指導老師:黃慶祥

中華民國一百年六月

Page 2: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

ii

Page 3: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

iii

隨身導覽機器人

學 生:鄭郁翰 Student: Cheng , Yu-Han

郭冠佑 Kuo , Guan-You

張家翔 Chang , Chia-Hshiang

指導老師:黃慶祥 Advisor: Ching-Shiang Huang

崑山科技大學

資訊工程系

專題報告

A Report

Submitted to Department of Information Engineering

Kun Shan University

in Partial Fulfillment of the Requirements

for the Degree of Bachelor

in

Information Engineering

June 2011

Tainan, Taiwan, Republic of China

中華民國一百 年六 月

Page 4: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

1

隨身導覽機器人

學生:鄭郁翰、郭冠佑、張家翔

指導老師:黃慶祥

崑山科技大學資訊工程系

摘 要

隨身導覽機器人主要應用於博物館等展覽場合中,功能目的在於跟隨

在訪客身後,與訪客一同參訪博物館,當機器人偵測到於展覽物品附

近時,將會撥放相關的導覽影音檔案,對訪客進行講解說明。

本系統以開放原始碼套件「ARToolkit」作為實作之基礎,其原本於擴

增實境之應用上,本專題中取其標記辨識方式作為機器人追蹤定位之

基本,透過標記位置的辨識,使機器人能判斷出訪客的方位後,再進

行移動跟隨,達到「隨身」的目的;與此同時,機器人具備RFID讀取

感應器,隨時地偵測附是否有導覽物的存在,以提供訪客導覽服務。

有鑑於實際的展場應用,我們將影像標記的呈現方式,設計在一種簡

易的背心上,將標記印製在背心後方,讓訪客容易穿脫背心,並在穿

上後,就能帶著機器人參訪展館,有效的幫助使用上的便利。

Page 5: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

2

目 錄

授權書 ............................................................................................................................. iii

摘要 ................................................................................................................................... 1

目錄 ................................................................................................................................... 2

第一章 緒論 .................................................................................................................. 4

1.1 研究動機與目的 ............................................................................................... 4

1.2 研究背景 ........................................................................................................... 5

第二章 相關研究 ........................................................................................................ 10

2.1 MICROSOFT .NET FRAMEWORK ...................................................................... 10

2.2 MICROSOFT VISUAL BASIC .............................................................................. 11

2.3 ARTOOLKIT ..................................................................................................... 13

2.4 無線射頻辨識技術 ........................................................................................ 14

第三章 系統架構 ........................................................................................................ 18

3.1 概述 ................................................................................................................ 18

3.2 標記辨識模組 ................................................................................................ 20

3.3 機器人移動之控制 ........................................................................................ 21

3.4 RFID導覽之架構 ........................................................................................... 22

第四章 系統實現 ........................................................................................................ 23

4.1 主控制程式 .................................................................................................... 23

4.2 標記辨識程式 ................................................................................................ 29

4.3 導覽影音檔配置 ............................................................................................ 30

4.4 標記背心設計 ................................................................................................ 33

4.5 RFID READER ................................................................................................. 37

4.6 控制板 ............................................................................................................ 37

4.7 電腦主機 ........................................................................................................ 38

4.8 主機電力來源 ................................................................................................ 39

Page 6: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

3

第五章 成果 ................................................................................................................ 41

5.1 成品展示 ......................................................................................................... 41

5.2 程式開啟步驟 ................................................................................................. 44

第六章 結論 ................................................................................................................ 49

參考文獻 ....................................................................................................................... R-1

附錄A 主控制程式之程式碼 .................................................................................. R-2

Page 7: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

4

第一章

緒論

1.1 研究動機與目的

目前世界各國對於研究接待用的導覽機器人正方興未艾,但是由於

現階段導覽機器人技術層面高,導致價格偏高,數量不多,許多也

以租用方式流通,而許多場合並不需要價格如此高昂的導覽機器人

進行,故如何降低成本,使之適合更多一般的展覽場合,進而更容

易普及於市場是相當重要的。

事實上,國內已經有不少展覽會場具備基礎的導覽裝置,例如

在許多博物館中都備有所語音導覽設備可供借用,透過Wi-Fi

Phone / PDA就可以在館中「自助式參觀」,另外也有展場中設置

了許多導覽資訊站設備,但其功能僅限於訪客在固定位置使用,其

主要之導覽系統仍然在於PDA上透過無線網路的應用;由此可見,

國內許多博物館雖然已經建置了導覽系統,提供訪客可以自助參

訪,但是多數仍然停留在訪客被動查詢的腳步,而不如實際的導覽

人員主動介紹,最後淪為資訊檢索的工具罷了。

Page 8: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

5

有鑑於此,如何設置一個適合展場應用,能夠達到容易部屬、

價格適宜的導覽系統是需要重視的,但更重要得是,如何能夠使

其更加與訪客進行互動,使之能如同真實的導覽人員一般貼身導

覽解說,更是研究的最大重點與目標。

1.2 研究背景

儘管國內許多博物館目前建置的導覽系統多數仍處於無線網路

與手持裝置的搭配運用;但事實上,已經有不少實用化的導覽機器

人問世,有的更已經投入市場。

1.2.1 Rhino與Minerva

在 1990 年代期間,美、德兩國透過學術(包含馬里蘭大學、

波昂大學、阿亨大學)合作的方式,開啟了導覽機器人發展計

劃。

Page 9: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

6

主要就是針對室內定位導航技術進行研究,以雷射掃描裝

置與超音波探測裝置為基礎,作為機器人判斷室內環境狀況、

知道自身位置的方式,使機器人具有辨識周邊靜態或動態障礙

物位置的能力,進而自主地建立環境地圖,並進行迴避或行進

路線規劃的判斷與執行。

1.2.2 Wakamaru

由日本著名汽車大廠三菱重工所開發,是以居家服務、導覽服

務為目的而設計的。

Wakamaru 以兩輪差動驅動方式進行移動,主要是以一部

全向式攝影機與一部前方攝影機作為探知周邊環境狀況的方

法,搭配紅外線與超音波感測器,檢知近距離障礙物的距離物

置。藉由影像辨識技術 Wakamaru 能認識所有者和家人的臉,

Page 10: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

7

並主動打招呼,進行交流。外出時,也可以透過手機操作

Wakamaru,來觀察家中情況。

1.2.3 Enon

由富士通公司所開發,正在神奈川縣八千代市的某家購物中

心服務,擔任機器人店員的任務。

enon 以兩輪差動驅動方式進行移動,共計搭載了 6 台攝影

機,作為四周環境資訊的主要獲得方式。利用觸摸式 LCD 顯視

器,以視覺圖像提供眾多便於操作的訊息。在機器人的設計

上,安排了置物的空間,能夠載重 10kg 的重物。

1.2.4 PGR01與Jinny

韓國 ROBOTECH 公司的 PGR(Post Guide Robot)01 主要是針對

Page 11: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

8

郵局內的使用需求來設計。Jinny 則由韓國科學與技術研究所與

Bonavision 公司智慧型機器人研究中心共同開發,針對博物館

的需求而設計,於 2004 年 9 月開始安裝在韓國國立科學博物

館中,進行導覽任務。

PGR01 機身前的觸碰螢幕可提供各種所需的資訊,如:尋找

區號、列印郵寄地址、以及提供相關資料等功能。Jinny 能夠與

遊客交流、回答遊客提出的問題,在行走、導覽的同時可以配

合動作和神情,同時能夠監測到障礙物並避開。

1.2.5 EMIEW

由日立公司所開發,適合進行餐廳的接待或旅館的搬運行李工

作,實際上 EMIEW 正在一些國際級飯店運作中。

Page 12: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

9

EMIEW 採用倒立式二輪移動機構,以內藏的感測器計算重

心的傾斜角度,再配合控制車輪的驅動,達到安定地移動。且

藉由聽覺與視覺感測器的幫助,EMIEW 能夠在 1 公尺左右的距

離,朝向聲音的來源進行聲音的分析辨識與人臉的辨別,同時

EMIEW 具有各 6 自由度的雙腕,能夠進行提取物品或搬運物品

的動作

Page 13: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

10

第二章

相關研究

2.1 Microsoft .NET Framework

.NET Framework 是由微軟開發,一個致力於敏捷軟體開發(Agile

software development)、快速應用開發(Rapid application

development)、平臺無關性和網路透明化的軟體開發平臺。.NET

是微軟為下一個十年對伺服器和桌上型軟體工程邁出的第一步。

NET包含許多有助於網際網路和內部網應用迅捷開發的技術。

.NET Framework是微軟公司繼Windows DNA之後的新開發平臺。.NET

Framework是以一種採用系統虛擬機執行的編程平臺,以通用語言

執行庫(Common Language Runtime)為基礎,支援多種語言(C#、

VB.NET、C++、Python等)的開發。

.NET也為應用程式介面(API)提供了新功能和開發工具。這些革

新使得程式設計員可以同時進行Windows應用軟體和網路應用軟體

以及元件和服務(web服務)的開發。.NET提供了一個新的反射性

Page 14: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

11

的且物件導向程式設計編程介面。.NET設計得足夠通用化從而使許

多不同高階語言都得以被彙集。

2.2 Microsoft Visual Basic

2.2.1 概述

Visual Basic(VB)是由微軟公司開發的包含協助開發環境的事件

驅動程式語言。它源自於BASIC程式語言。VB擁有圖形使用者介面

(GUI)和快速應用程式開發(RAD)系統,可以輕易的使用DAO、

RDO、ADO連線資料庫,或者輕鬆的建立ActiveX控制項。程式設計

師可以輕鬆的使用VB提供的元件快速建立一個應用程式。

2.2.2 語言特性

VB的中心思想就是要便於程式設計師使用,無論是新手或者專家。

VB使用了可以簡單建立應用程式的GUI系統,但是又可以開發相當

複雜的程式。VB的程式是一種基於表單的視覺化元件安排的聯合,

並且增加代碼來指定組建的屬性和方法。因為預設的屬性和方法已

經有一部分定義在了元件內,所以程式設計師不用寫多少代碼就可

以完成一個簡單的程式。過去的版本裡面VB程式的效能問題一直被

放在了桌面上,但是隨著電腦速度的飛速增加,關於效能的爭論已

經越來越少。

表單控制項的增加和改變可以用拖放技術實作。一個排列滿控制項

的工具箱用來顯示可用控制項(比如文字域或者按鈕)。每個控制

Page 15: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

12

項都有自己的屬性和事件。預設的屬性值會在控制項建立的時候提

供,但是程式設計師也可以進行更改。很多的屬性值可以在執行時

候隨著使用者的動作和修改進行改動,這樣就形成了一個動態的程

式。舉個例子來說:表單的大小改變事件中加入了可以改變控制項

位置的代碼,在執行時候每當使用者更改窗口大小,控制項也會隨

之改變位置。在文字域中的文字改變事件中加入相應的代碼,程式

就能夠在文字輸入的時候自動翻譯或者阻止某些字元的輸入。

VB的程式可以包含一個或多個表單,或者是一個主表單和多個子表

單,類似於作業系統的樣子。有很少功能的對話方塊窗口(比如沒

有最大化和最小化按鈕的表單)可以用來提供彈出功能。

VB的元件既可以擁有使用者介面,也可以沒有。這樣一來伺服器端

程式就可以處理增加的模組。

VB使用參照計數的方法來進行垃圾收集,這個方法中包含有大量的

物件,提供基本的物件導向支援。因為越來越多組建的出現,程式

設計師可以選用自己需要的擴充功能函式庫。和有些語言不一樣,

VB對大小寫不敏感,但是能自動轉換關鍵詞到標準的大小寫狀態,

以及強制使得符號表入口的實體的變數名稱遵循書寫規則。預設情

況下字串的比較是對大小寫敏感的,但是可以關閉這個功能。

Page 16: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

13

VB使得大量的外界控制項有了自己的生存空間。大量的第三方控制

項針對VB提供。VB也提供了建立、使用和重用這些控制項的方法,

但是由於語言問題,從一個應用程式建立另外一個並不簡單。

2.3 ARToolkit

ARToolKit 是一個 C/C++ 語言編寫的函式庫,透過此函式庫可以

讓我們輕鬆的編寫擴增實境應用程式。擴增實境 (Augmented Reality)

是將電腦虛擬的影像覆蓋到真實世界畫面中,這個技術在工業、教育、

藝術方面都存在著極大的前景。

對於開發一個 AR 程式來說,最困難的部分在於即時 (real-time)

的將虛擬影像覆蓋到使用者的視覺,並且和真實世界中的物件精確對

齊。ARToolKit 以電腦圖學計算相機 (Camera) 和標記 (Marker) 之

間的相對位置,使開發者能夠將他們的虛擬物件依據標記在真實環境

上的相關資訊覆蓋到真實環境中。ARToolKit 提供快速和準確的標記

追蹤 (Marker Tracing),能使開發者快速的開發出許多有趣的 AR 程

式。

2.4 無線射頻辨識技術

無線射頻辨識即RFID(Radio Frequency IDentification,RFID)技術,

又稱電子標籤,是一種通訊技術,可通過無線電訊號識別特定目標並

讀寫相關數據,而無需識別系統與特定目標之間建立機械或光學接

觸。RFID標籤分為被動,半被動(也稱作半主動),主動三類。

Page 17: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

14

2.4.1 RFID標籤的類別

被動式

被動式標籤沒有內部供電電源。其內部積體電路通過接收到的電磁

波進行驅動,這些電磁波是由RFID讀取器發出的。當標籤接收到足

夠強度的訊號時,可以向讀取器發出數據。這些數據不僅包括ID號

(全球惟一代碼),還可以包括預先存在於標籤內EEPROM (電可

擦拭可編程唯讀記憶體)中的數據。

由於被動式標籤具有價格低廉,體積小巧,無需電源的優點。目前

市場的RFID標籤主要是被動式的。

半被動式

一般而言,被動式標籤的天線有兩個任務:

1.接收讀取器所發出的電磁波,藉以驅動標籤IC

2.標籤回傳信號時,需要靠天線的阻抗作切換,才能產生0與1

的變化。

問題是,想要有最好的回傳效率的話,天線阻抗必須設計在「開路

與短路」,這樣又會使信號完全反射,無法被標籤IC接收,半主動

式標籤就是為了解決這樣的問題。半主動式類似於被動式,不過它

多了一個小型電池,電力恰好可以驅動標籤IC,使得IC處於工作的

狀態。這樣的好處在於,天線可以不用管接收電磁波的任務,充分

作為回傳信號之用。比起被動式,半主動式有更快的反應速度,更

好的效率。

主動式

Page 18: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

15

與被動式和半被動式不同的是,主動式標籤本身具有內部電源供應

器,用以供應內部IC所需電源以產生對外的訊號。一般來說,主動

式標籤擁有較長的讀取距離和較大的記憶體容量可以用來儲存讀取

器所傳送來的一些附加訊息。

2.4.1 技術及性能參數

無線射頻辨識標籤是目前無線射頻辨識技術的關鍵。無線射頻辨識

標籤可存儲一定容量的資訊並具一定的資訊處理功能,讀寫設備可

通過無線電訊號以一定的數據傳輸率與標籤交換資訊,作用距離可

根據採用的技術從若干厘米到1千米不等。

識別標籤的外形尺寸主要由天線決定,而天線又取決於工作頻率和

對作用距離的要求。目前有四種頻率的標籤在使用中比較常見。他

們是按照他們的無線電頻率劃分:低頻標籤(125或134.2 kHz),

高頻標籤(13.56 MHz),超高頻標籤(868~956 MHz)以及微波標

籤(2.45 GHz)。由於目前尚未制定出針對超高頻標籤使用的全球

規範,所以此類標籤還不能夠在全球統一使用。而超高頻標籤的應

用目前也最受人們的注意,此類標籤主要應用在物流領域。頻率越

高,作用距離就越大,數據傳輸率也就越高,識別標籤的外形尺寸

就可以做得更小,但成本也就越高。目前面向消費者的識別標籤外

形尺寸需求,一般以信用卡或商品條形碼為準。

2005年初每標籤的價格仍在30歐分左右,大批量(十億個以上)生

產的無線射頻辨識標籤的價格可望在2008年降至10歐分以下。

Page 19: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

16

鑒於標籤和讀寫設備之間無需建立機械或光學接觸,密碼技術在整

個無線射頻辨識技術領域中的地位必將日益提高。隨著無線射頻辨

識的普及,不同廠家的標籤和讀寫設備之間的兼容性也將成為值得

關注的問題。

此外,使用壽命、使用環境和可靠性也是重要參數。無線射頻辨識

技術還包括了一整套資訊科技基礎設施,包括:

無線射頻辨識標籤,又稱射頻標籤、電子標籤,主要由存有識別代

碼的大規模集成線路晶片和收發天線構成,目前主要為無源式,使

用時的電能取自天線接收到的無線電波中的能量;

無線射頻辨識讀寫設備以及

與相應的資訊服務系統,如進存銷系統的聯網等。

將射頻類別技術與條碼(Barcode)技術相互比較,射頻類別擁有許

多優點,如:

可容納較多容量。

通訊距離長。

難以複製。

對環境變化有較高的忍受能力。

Page 20: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

17

可同時讀取多個標籤。

相對地有缺點,就是建置成本較高。不過目前透過該技術的大量使

用,生產成本就可大幅降低。

Page 21: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

18

第三章

系統架構

3.1 概述

本系統主要分為三大模組,核心為「主控制程式」部分,為蒐集

RFID、影像辨識結果,進行機器人要執行的動作判斷,並發出動作指

令;實際各單元之架構如下。

Page 22: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

19

標記辨識模組主要用於透過攝影機取得影像,判斷出目標物之相

對位置,而機器人控制模組則透過此訊號,計算出機器人應該如何移

動才能持續跟隨目標物。其機器人跟隨之運作流程如下圖所示。

Page 23: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

20

3.2 標記辨識模組

本系統核心為辨識特殊標記來確認目標位置,進而達到跟隨之目

的;本模組使用開放原始碼套件ARToolkit作為實作之基礎,透過其

本身檢測標記之能力,我們將持續檢測的結果傳送到機器人控制模

組進行跟隨之應用。

Page 24: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

21

3.3 機器人移動之控制

透過追蹤圖像所得之機器人與目標物之相對位置資訊,計算出機器

人應當如何移動才能持續跟隨目標物,並且依照其計算發出相對應

之控制訊號。

其控制方式主要優先權為先判斷機器人與目標物之距離,若在一定

距離之內則不再前進,其次才是判斷在一定距離之外時,若判斷目

標物於機器人正前方,則機器人直線進行,若為偏左或偏右,則執

行轉彎之動作。其具體控制方式,如下列出之程式虛擬碼。

Z:機器人與標記之前後距離(Z軸)

X:機器人與標記之左右距離(X軸)

if (Z<1000)則不動 (小於1公尺)

else{

if( Z >1000 And X/Z>2.6 And X/Z<-2.6) //(2.6與-2.6為自訂之門檻值)

{直行}

else if( Z/X < 2.6 And Z/X > 0)

{左轉}

else if (Z/X > -2.6 And Z/X < 0)

{右轉}

}

Page 25: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

22

3.4 RFID導覽之架構

以超高頻RFID感應器辨識展覽物是否在附近,停下腳步進行語音導

覽,結束後繼續跟隨。以下為RFID導覽之架構圖

我們設計將導覽檔案以XML文件進行描述,當程式啟動時載入該文

件,文件中紀錄了該展覽品之RFID卡號、導覽檔存放位置等等,當

偵測到一個RFID卡片存在時,會先與該XML文件進行比對,如果於該

文件內代表為目標展覽物,並且取出該文件內所描述之導覽影音檔

案。

Page 26: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

23

第四章

系統實現

4.1 主控制程式

本「隨身導覽機器人」之程式碼主要分為以ARToolkit為基礎的辨

識標記程式,以及RFID偵測程式與主要的控制程式,RFID偵測程式

目前已經編譯為DLL,於主控程式中呼叫使用。本主控程式主要處

理由標記辨識模組與RFID辨識所得之資訊,判斷如何控制機器人。

本程式以Visual Basic .NET 撰寫實作。

4.1.1 機器人移動控制

主控制程式將蒐集影像辨識之結果,進行移動方式的判斷;以下

副程式為與控制板進行連線的建立設定。必須先進行成功連接才

能繼續進行其他控制,例如前進、左轉、右轉等控制。

Page 27: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

24

對於機器人的控制,實際是將訊號透過序列連接埠傳送到控制板

上,我們將不同的控制訊號寫在不同的副程式中,以下為左轉的

實作程式,一般會在目標物偏向攝影機左邊時被主控制程式呼

叫。

以下為右轉的實作程式,一般會在目標物偏向攝影機右邊時被主

控制程式呼叫。

Page 28: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

25

以下為右轉的實作程式,一般會在目標物被判定於中間時會被主

控制程式呼叫。

以下為命令機器人停止的實作程式,一般會在偵測不到目標物或

距離與目標物過近等其他不需進行移動的狀況被呼叫。

Page 29: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

26

4.1.2 程式初始化

本程式執行後,會先載入導覽檔案的設定檔(XML設定檔),並且進

行RFID以及機器人移動控制之通訊埠之連接。

Page 30: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

27

4.1.3 依據標記控制機器人

程式中主要有兩個Timer控制項,分別為接受RFID訊號來進行導覽

以及接收ARToolkit辨識結果來控制機器人,用以處理標記辨識結

果之Timer控制項其關鍵程式碼如下:

由於辨識之程式目前是以剪貼簿之方式進行資料之傳遞,故Timer

每次觸發時都先取出辨識結果資料,在取出他的x,y,z值後,在進

設計出要進行左轉、右轉、直行、停止之條件。若沒有偵測到標記

將是停止不動(呼叫turnOff()方法)

Page 31: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

28

4.1.4 依據RFID偵測進行導覽語音撥放

依據RFID偵測之結果,若為導覽品,則撥放相對應之導覽檔案。此

檔覽資料設定是在外部的XML檔案中,依據實際需求可做動態調整更

改。

以上程式碼片段中,AxWindowsMediaPlayer1.URL為設定導覽語音撥放

檔位置,Me.BackgroundImage為設定導覽圖片位置;其中變數MediaDir

為導覽檔放置位置,此變數為程式碼最上方宣告,可進行動態變更。

如下所示,預設為C:\MediaDir\

Page 32: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

29

4.2 標記辨識程式

透過ARToolkit的偵測,我們可以取得目標物件之三維座標我們可從

從中取得與目標之間的距離(如下圖Z值),也可透過該目標位於相機

偏向左方或右方來判斷其與機器人的相對位置(如下圖Y值);再依據

此兩值來進行機器人的跟隨判斷資料,下圖為ARToolkit偵測目標標

記物之測詴程式。

以下程式碼片段為判斷標記是否為指定標記圖案之關鍵程式碼,若偵

測不為目標辨識之標記, 則直接拋出「null」字串表示無偵測到標

記(令主控制程式發出停止訊號)。

Page 33: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

30

若有偵測到標記物,則將X、Y、Z軸之資訊傳至主控程式,本專題傳

遞之方式為透過系統剪貼簿方式。

4.3 導覽影音檔配置

本「隨身導覽機器人」之核心功能即為提供導覽服務,而導覽內容

也可能因為環境不同所變化,故本「隨身導覽機器人」將設定方式

Page 34: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

31

以XML設定檔為之,未來依據實際應用場合,只需編寫其中設定,即

可在不需更動程式碼的狀況下變更導覽檔。以下為設定檔範例。

每一個List標籤均為一個導覽品。其設定格式如下

<item>

<title>導覽品的名稱(可隨意輸入)<title>

Page 35: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

32

<path>導覽品資料夾名稱</path>

<rfidcode>RIFD卡號</rfidcode>

</item>

其導覽檔案放置方式詳見如下,程式碼中預設放在C:\MediaDir\

中,可動態變更主控程式的Media變數改變。

C:\MediaDir\底下之內容應該如下圖所示,每個資料夾是獨立放置

各個不同的導覽品介紹。也就是說,一個導覽品會有一個資料夾,

這個資料夾名稱就是用來設定XML檔案內的「path」屬性(導覽品資

料夾名稱)

Page 36: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

33

打開每個導覽品資料夾後,會看到有兩個主要檔案;圖片應該被命

名為image.jpg,語音檔應該被命名為explain.mp3,程式才能正常

讀取。

所以,若要新增一個導覽品,只要在MediaDir內新增一個資料夾(名

稱自訂),並把導覽語音與圖片放進去(要把檔案名稱設定為

explain.mp3與image.jpg),然後將之新增在XML設定檔中即可。

4.4 標記背心設計

4.4.1 標記檔製作

ARToolkit標記為一黑色外框,其內放置圖案,程式判斷時先找

到黑色外框後,在判斷其內之圖案是否與所要找的目標標記相

同,此即該標記之「Mark ID」,該圖案上、下、左、右翻轉後

均不可相同(即不對稱),下圖為本系統所使用之標記。

Page 37: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

34

隨身導覽機器人所辨識之標記是可以被更換的,程式運作方式為透

過攝影機抓取影像,先由影像中辨識出黑色方框後,在辨識方塊內

的圖案是否與程式設定的相同,而以下為黑色方框的範例。

將設計號的圖案置入黑框後,即可將其列印出來,透過ARToolkit

附屬的「mk_patt.exe」進行測詴與產生標記檔,「mk_patt.exe」

進入後將所列印的圖形放在攝影機前面,程式會自動辨識。如果有

辨識到,應該會與下圖一樣呈現紅色相間的外框。

Page 38: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

35

辨識到後,在點擊視窗即可完成,並會於文字指令介面的視窗出現

「Enter filename」的輸入等待,此即表示程式詢問要將標記檔存

成什麼名稱,輸入欲儲存之檔案名稱並按下Enter即可。

Page 39: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

36

4.4.2 實體背心製作

ARToolkit本身為透過辨識特殊之圖像標記確認出目標位置,例如可

以將之印在紙上、製成圖卡;但本系統為因應使用環境之不同需求,

特別設計一套解決方式-將標記印製於背心上,讓使用者只要穿上

背心,就能令機器人進行自動跟隨之行為。下圖為背心實際穿著使

用之實體照。

Page 40: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

37

4.5 RFID reader

為了能夠偵測到附近的展覽物,機器人上設置了RFID reader,隱

藏於機器人前方妝飾內,可於機器人行進時偵測附近的環境是否有

展覽物的存在,以下為RFID感應器之實體照。

4.6 控制板

本專題利用攝影機抓取影像以ARtoolkit影像模組,再以三維座標計

算出機器人的移動方式,透過RS-232傳輸到控制馬達的微處理器

上,微處理器再執行相對應之控制程式,以下為控制板。

Page 41: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

38

4.7 電腦主機

本導覽機器人之控制中心為一電腦主機,本專題之各項程式碼也運行

於此;為符合導覽機器人之需求,本專題使用之電腦主機為含有觸控

螢幕、揚聲器之All-in-One電腦,其部屬方式如下:

Page 42: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

39

主機具備有觸控顯示器與揚聲器,可於偵測在展覽品時顯示導覽圖片

或展場資訊,及進行語音導覽。此主機雖內建有網路攝影機,但為求

偵測目標標記之精準度,我們以外接USB攝影機之方式來接收影像,其

攝影機之放置方式亦如圖中所示。

4.8 主機電力來源

本導覽機器人所用之電腦主機所需之電力電壓為19伏特直流電,我們

採用之電源裝置為將充電式電池置於機器人內部。其部署方式如下,

紅色所框圈處為電池置放處。

Page 43: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

40

Page 44: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

41

第五章

成果

5.1 成品展示

下圖為隨身導覽機器人正在與訪客講解說明有關展覽物的使用狀況。

(立牌模擬展覽物,藏有RFID卡片)

Page 45: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

42

下圖隨身導覽機器人位於訪客身後,透過攝影機辨識訪客所穿著之標

記背心,進行跟隨。

下圖為特製標記背心。

Page 46: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

43

下圖為導覽機器人整體拍攝圖。

Page 47: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

44

5.2 程式開啟步驟

本章節說明「隨身導覽機器人」之PC端程式啟動方式,其操作前必須

先將控制板與電腦主機進行連接,並且將導覽影音正確置放與設定(依

展場需要設定)。以下為程式啟動之詳細步驟。

1.進入系統之裝置管理員,確認RFID reader與控制板與電腦主機串列

埠正確連接上,找到分別的COM連接埠;例如下圖之機器人為COM3,RFID

reader為COM5。

Page 48: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

45

2. 開 啟 影 像 標 記 模 組 之 執 行 檔 程 式 ( rangeTest.exe )

,並設定其畫面撥放速率(建議調整為最高)與輸出大小,設定完後按

下確定

3. 成功開啟標記辨識程式,如下圖,將會出現一個攝影機擷取畫面。

(正常來說,如果在此畫面將標記放在攝影機前,標記在畫面中會顯

示被一個綠色框所包圍)

Page 49: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

46

4.開啟主控制程式(robot.exe),先設定其機器人控制之COM埠(第一步

驟所記下的),輸入完畢後按下確定(第四步驟與第五步驟設定方式為

方便測詴或因應現場不同狀況所設,實際使用應將連接埠設定於程式

之中,讓程式開啟後即可馬上運作。

Page 50: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

47

5. 設定其RFID之COM埠(第一步驟所記下的),輸入完畢後按下確定

Page 51: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

48

6.在以上設定完後,出現以下畫面代表成功開啟。

若程式已成功進入如上之畫面,表示已經成功開啟,可詴著將標記放

在機器人前方(需距離一公尺以上),若機器人可正常前進,表示機

器人連接正常。

Page 52: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

49

第六章

結論

本專題以ARToolkit為基礎搭配攝影機取得特殊標誌的三維座標

參數計算出距離與範圍,再送出控制指令來控制馬達,達到跟隨訪客

的目的,且機器人內配有超高頻RFID偵測展覽品,偵測到之後會替訪

客做展覽品文字與語音上的介紹。機器人的自動跟隨與RFID偵測,可

應用在各種展覽、博物館、美術館,透過機器人詳細的介紹,讓訪客

覺得如實體導覽員一般。

本導覽機器人並不僅只限制使用於展覽會場,由於本身具有跟隨

訪客的功能,若能將其延伸到購物賣場,只要將機器人加掛載貨箱,

能讓訪客將身上的行李放上,就能協助訪客放下肩上重擔,協助載運

行李。

Page 53: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

R-1

參考文獻

1. ARToolKit Documentation , http://www.hitl.washington.edu/artoolkit/

2. “全球導覽機器人產品現況報導” , 機器人世界情報網 , 精密機械研究發展中

心 張昫揚 , http://www.robotworld.org.tw/index.htm?pid=10&News_ID=665

3. 維基百科 , http://zh.wikipedia.org/

Page 54: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

R-2

4. 附錄 A

主控制程式之程式碼

Imports System

Imports System.IO.Ports

Imports System.Data

Imports System.Xml

Imports YuHanLib

Imports System.Net

Public Class Form1

Dim port As Integer = 0 '232 無回應警告

Dim system_init As Boolean = False '系統初始化狀況

Dim rs232_data_in As String = ""

Dim RFIDtag As RFIDreader

Dim ds As New XmlDocument

Dim xn As XmlNodeList

Dim MediaDir As String = "C:\MediaDir\"

Dim bgimg As Image = Image.FromFile("bgimg.jpg")

Dim saveCode As String = ""

Dim saveCount As Integer = 0

Dim pwd As String

Dim z_num As Double = 1000

Dim rfid_port As String

Page 55: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

R-3

Dim robot_port As String

Private Sub Form1_Click(ByVal sender As Object, ByVal e As

System.EventArgs) Handles Me.Click

AxWindowsMediaPlayer1.Ctlcontrols.stop()

RFIDtag.GetTagIDTable()

Me.BackgroundImage = bgimg

Timer3.Enabled = True

Timer2.Enabled = True

End Sub

Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As

System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed

End

Me.Close()

End Sub

Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As

System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown

If e.KeyCode = Keys.Down Then

back()

ElseIf e.KeyCode = Keys.Up Then

straight()

ElseIf e.KeyCode = Keys.Right Then

turnRight()

ElseIf e.KeyCode = Keys.Left Then

turnLeft()

Page 56: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

R-4

ElseIf e.KeyCode = Keys.End Then

turnOff()

ElseIf e.KeyCode = Keys.A Then

If Timer1.Enabled = True Then

Timer1.Enabled = False

Else

Timer1.Enabled = True

End If

ElseIf e.KeyCode = Keys.R Then

If Timer2.Enabled = True Then

Timer2.Enabled = False

Else

saveCode = ""

saveCount = 0

Timer2.Enabled = True

End If

ElseIf e.KeyCode = Keys.B Then

Dim tempa As Integer = CDbl(InputBox("設定 Z 值最小距離(單位:

公厘)"))

If tempa > 1 Then

z_num = tempa

End If

End If

End Sub

Page 57: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

R-5

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles MyBase.Load

MaximizeBox() = False

Me.BackgroundImage = bgimg

ds.LoadXml(My.Computer.FileSystem.ReadAllText("ItemList.xml"))

xn = ds.SelectNodes("/list/item")

system_init = True

robot_port = "COM3"

rfid_port = "COM5"

RobotConn(robot_port, "9600")

While chack_232() = False

SerialPort2.Close()

SerialPort2.Dispose()

RobotConn(robot_port, "9600")

End While

RFIDtag = New RFIDreader(rfid_port, "57600")

Timer2.Enabled = True

Page 58: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

R-6

'setSpeed(4)

End Sub

Sub RobotConn(ByVal port As String, ByVal baudrate As String)

Dim clr As String

Try

If SerialPort2.IsOpen = False Then

SerialPort2.PortName() = port

SerialPort2.BaudRate() = baudrate

SerialPort2.Open()

port = 0

clr = SerialPort2.ReadExisting() '清除暫存

End If

Catch ex As Exception

MsgBox(ex.Message)

End Try

End Sub

Function chack_232() '檢查是否正常連上機器人

Dim ST(5) As Byte

ST(0) = Val("&H01")

ST(1) = Val("&H03")

ST(2) = Val("&H53")

ST(3) = Val("&H54")

ST(4) = Val("&HFF")

Page 59: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

R-7

SerialPort2.Write(ST, 0, 5)

port = 0

While (1)

port = port + 1

If SerialPort2.BytesToRead >= 4 Then

Dim ch As String = SerialPort2.ReadExisting

If ch.StartsWith("EVST") Then

Dim STOK(7) As Byte

STOK(0) = Val("&H01")

STOK(1) = Val("&H05")

STOK(2) = Val("&H53")

STOK(3) = Val("&H54")

STOK(4) = Val("&H4F")

STOK(5) = Val("&H4B")

STOK(6) = Val("&HFF")

SerialPort2.Write(STOK, 0, 7)

'Button13.Enabled = True

'Button1.Enabled = False

'MsgBox("連 線 成 功")

port = 0

Dim cls As String = SerialPort2.ReadExisting

If SerialPort2.IsOpen = True Then

Timer1.Enabled = True

End If

Return True

End If

Page 60: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

R-8

ElseIf port >= 32760 Then

'MsgBox("回 應 時 間 閒 置 過 久")

'SerialPort2.Dispose()

'Button1.Text = "系 統 連 線"

'Button1.ForeColor = Color.Green

'ComboBox1.Enabled = True

'ComboBox2.Enabled = True

Return False

End If

End While

Return False

End Function

Private Sub SerialPort2_DataReceived1(ByVal sender As Object, ByVal e

As System.IO.Ports.SerialDataReceivedEventArgs) Handles

SerialPort2.DataReceived

If SerialPort2.IsOpen = True Then

If SerialPort2.ReadByte = Val("&H02") Then

rs232_data_in = ""

For i As Integer = 1 To Val(SerialPort2.ReadByte)

rs232_data_in = rs232_data_in & Chr(SerialPort2.ReadByte)

Next

If rs232_data_in.StartsWith("XYZ") Then

RS_xyz = rs232_data_in

ElseIf rs232_data_in.StartsWith("XY") Then

RS_xy = rs232_data_in

Page 61: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

R-9

ElseIf rs232_data_in.StartsWith("CO") Then

RS_co = rs232_data_in

ElseIf rs232_data_in.StartsWith("EN") Then

RS_en = rs232_data_in

ElseIf rs232_data_in.StartsWith("UL") Then

RS_ul = rs232_data_in

End If

End If

End If

End Sub

Private Sub turnLeft()

If system_init = True Then

If SerialPort2.IsOpen = True Then

Dim UPASLT(9) As Byte

UPASLT(0) = Val("&H01")

UPASLT(1) = Val("&H07")

UPASLT(2) = Val("&H55")

UPASLT(3) = Val("&H50")

UPASLT(4) = Val("&H41")

UPASLT(5) = Val("&H53")

UPASLT(6) = Val("&H4C")

UPASLT(7) = Val("&H54")

UPASLT(8) = Val("&HFF")

SerialPort2.Write(UPASLT, 0, 9)

Else

Page 62: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

R-10

MsgBox("系 統 尚 未 連 線")

End If

End If

End Sub

Private Sub turnRight()

If system_init = True Then

If SerialPort2.IsOpen = True Then

Dim UPASRT(9) As Byte

UPASRT(0) = Val("&H01")

UPASRT(1) = Val("&H07")

UPASRT(2) = Val("&H55")

UPASRT(3) = Val("&H50")

UPASRT(4) = Val("&H41")

UPASRT(5) = Val("&H53")

UPASRT(6) = Val("&H52")

UPASRT(7) = Val("&H54")

UPASRT(8) = Val("&HFF")

SerialPort2.Write(UPASRT, 0, 9)

Else

MsgBox("系 統 尚 未 連 線")

End If

End If

End Sub

Private Sub turnLeft_退後版()

If system_init = True Then

If SerialPort2.IsOpen = True Then

Page 63: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

R-11

Dim DNASRT(9) As Byte

DNASRT(0) = Val("&H01")

DNASRT(1) = Val("&H07")

DNASRT(2) = Val("&H44")

DNASRT(3) = Val("&H4E")

DNASRT(4) = Val("&H41")

DNASRT(5) = Val("&H53")

DNASRT(6) = Val("&H52")

DNASRT(7) = Val("&H54")

DNASRT(8) = Val("&HFF")

SerialPort2.Write(DNASRT, 0, 9)

Else

MsgBox("系 統 尚 未 連 線")

End If

End If

End Sub

Private Sub turnRight_退後版()

If system_init = True Then

If SerialPort2.IsOpen = True Then

Dim DNASLT(9) As Byte

DNASLT(0) = Val("&H01")

DNASLT(1) = Val("&H07")

DNASLT(2) = Val("&H44")

DNASLT(3) = Val("&H4E")

DNASLT(4) = Val("&H41")

DNASLT(5) = Val("&H53")

Page 64: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

R-12

DNASLT(6) = Val("&H4C")

DNASLT(7) = Val("&H54")

DNASLT(8) = Val("&HFF")

SerialPort2.Write(DNASLT, 0, 9)

Else

MsgBox("系 統 尚 未 連 線")

End If

End If

End Sub

Private Sub straight()

If system_init = True Then

'前進

If SerialPort2.IsOpen = True Then

Dim UPSY(7) As Byte

UPSY(0) = Val("&H01")

UPSY(1) = Val("&H05")

UPSY(2) = Val("&H55")

UPSY(3) = Val("&H50")

UPSY(4) = Val("&H53")

UPSY(5) = Val("&H59")

UPSY(6) = Val("&HFF")

SerialPort2.Write(UPSY, 0, 7)

Else

MsgBox("系 統 尚 未 連 線")

End If

End If

Page 65: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

R-13

End Sub

Private Sub back()

If system_init = True Then

If SerialPort2.IsOpen = True Then

Dim DNSY(7) As Byte

DNSY(0) = Val("&H01")

DNSY(1) = Val("&H05")

DNSY(2) = Val("&H44")

DNSY(3) = Val("&H4E")

DNSY(4) = Val("&H53")

DNSY(5) = Val("&H59")

DNSY(6) = Val("&HFF")

SerialPort2.Write(DNSY, 0, 7)

Else

MsgBox("系 統 尚 未 連 線")

End If

End If

End Sub

Private Sub turnOff()

'停止

If system_init = True Then

If SerialPort2.IsOpen = True Then

Dim HLT(6) As Byte

HLT(0) = Val("&H01")

HLT(1) = Val("&H04")

HLT(2) = Val("&H48")

Page 66: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

R-14

HLT(3) = Val("&H4C")

HLT(4) = Val("&H54")

HLT(5) = Val("&HFF")

SerialPort2.Write(HLT, 0, 6)

Else

MsgBox("系 統 尚 未 連 線")

End If

End If

End Sub

Private Sub setSpeed(ByVal speed As Integer)

Dim SP(6) As Byte

SP(0) = Val("&H01")

SP(1) = Val("&H04")

SP(2) = Val("&H53")

SP(3) = Val("&H50")

SP(4) = speed + 49

SP(5) = Val("&HFF")

SerialPort2.Write(SP, 0, 6)

End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Timer1.Tick

Try

If SerialPort2.IsOpen = True Then

Dim clipboardTemp = My.Computer.Clipboard.GetText()

If clipboardTemp <> "null" Then

Page 67: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

R-15

Dim cam_value As String() = clipboardTemp.Split(",")

Dim x As Double = CDbl(cam_value(0))

Dim y As Double = CDbl(cam_value(1))

Dim z As Double = CDbl(cam_value(2))

Dim aaa As Double = 4

If x <> 0 Then

If z >= z_num And (z / x >= aaa Or z / x <= aaa - aaa * 2)

Then

straight()

ElseIf z / x < aaa And z / x > 0 And z >= z_num Then

turnRight()

ElseIf z / x > aaa - aaa * 2 And z / x < 0 And z >= z_num Then

turnLeft()

Else

turnOff()

End If

Else

If z >= 1000 Then

straight()

End If

End If

Else

'停止

turnOff()

End If

End If

Page 68: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

R-16

Catch ex As Exception

turnOff()

End Try

End Sub

Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Timer2.Tick

If AxWindowsMediaPlayer1.playState <> 3 And

AxWindowsMediaPlayer1.playState <> 6 And

AxWindowsMediaPlayer1.playState <> 9 Then

Dim dt As DataTable = RFIDtag.GetTagIDTable()

If dt.Rows.Count > 0 Then

For i As Integer = 0 To dt.Rows.Count - 1

Dim temp As String = dt.Rows(i).ItemArray(0)

For Each node As XmlNode In xn

If temp.Equals(node("rfidcode").InnerText) Then

AxWindowsMediaPlayer1.URL = MediaDir &

node("path").InnerText & "\" & "explain.mp3"

Me.BackgroundImage = Image.FromFile(MediaDir &

node("path").InnerText & "\" & "image.jpg")

AxWindowsMediaPlayer1.Ctlcontrols.play()

' turnOff()

saveCode = temp

Page 69: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

R-17

saveCount = 0

Timer2.Enabled = False

Exit Sub

End If

Next

Next

End If

End If

End Sub

Private Sub AxWindowsMediaPlayer1_PlayStateChange(ByVal sender As

Object, ByVal e As AxWMPLib._WMPOCXEvents_PlayStateChangeEvent)

Handles AxWindowsMediaPlayer1.PlayStateChange

If AxWindowsMediaPlayer1.playState = 1 Or

AxWindowsMediaPlayer1.playState = 2 Or

AxWindowsMediaPlayer1.playState = 10 Then

RFIDtag.GetTagIDTable()

Me.BackgroundImage = bgimg

Timer3.Enabled = True

Timer2.Enabled = True

End If

End Sub

Private Sub Timer3_Tick(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Timer3.Tick

If saveCount > 60 Then

Page 70: 崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/14157/2/專題製作.pdf · 2.1 Microsoft .NET Framework .NET Framework 是由微軟開發,一個致力於敏捷軟體開發

R-18

saveCount = 0

saveCode = ""

Timer3.Enabled = False

Exit Sub

Else

saveCount += 1

End If

End Sub

End Class