• 沒有找到結果。

中華大學資訊工程學系

N/A
N/A
Protected

Academic year: 2022

Share "中華大學資訊工程學系"

Copied!
27
0
0

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

全文

(1)

中華大學資訊工程學系

系統開發專題報告

Lego NXT-藍芽足球機器人

Lego NXT-The Robot Plays the Soccer By Using Bluetooth Device

專題生:洪智賢

指導教授:周智勳 教授

專題編號 PRJ2011-CSIE-10000

執行時間:100 年七月至 101 年 1 月

(2)

目錄

page

背景與目的

2

(一)專題系統架構

3

(二)方法說明

5

(三)實驗過程與結果

16

(四)專題心得

23

(五)總結與未來展望

25

(六)參考文獻

25

致謝

26

(3)

背景與目的

背景:結合 Lego NXT 主機及超音波 SENSOR、視訊裝置、藍芽裝置,利用電腦上視訊裝置 所擷取之圖片,C#讀取之並進行影像處理,把運算結果轉換成機器人之動作命令,再透 過藍芽裝置,把要傳達給機器人之動作命令傳給 Lego NXT 機器人

目的:將上述的機器人動作命令傳給 Lego NXT 機器人,使之能夠找到足球,並且邊踢足球 邊移動還要能夠閃避障礙物,最後在距離球門一定之距離內,能夠成功把球踢到球門之 中。

Figure 1.1:LEGO NXT主機- Intelligent NXT Brick

Figure 1.2:超音波SENSOR- Ultrasonic Sensor

(4)

Figure 1.4:視訊裝置- Web Camera

Figure 1.5:組裝過後的 Lego NXT 足球機器人(主機+超音波 SENSOR)

Figure 1.6:Lego NXT 足球機器人與球場之全景圖

(一) 專題系統架構

(5)

1.1 實作前之規劃

a.使用 Web Camera 在每一個單位時間內對 Lego NXT 足球機器人、足球、球門同時進行 拍照動作。

b.利用C#來讀取 Web Camera 每一個單位時間所擷取之圖片。

c.再利用讀取之圖片進行影像處理,讀取相關Pixel之座標進行運算

,最後根據運算完之結果,並決定Lego NXT機器人下一次單位時間要做的動作。

d.透過電腦上藍芽裝置,把決定好的動作命令傳給Lego NXT主機。

e.當Lego NXT主機接受到命令時,會把命令轉換成自己能夠辨識的程式碼,並且執行這單 位時間所辨識之程式碼。

1.2 系統運作流程圖

(6)

(二)方法說明

說明:這裡將介紹系統架構流程圖中,各個流程要如何實作出來。

===========================================================

a.開啟 Webcam 並且拍照存檔到資料夾

說明:利用 C#的 MSDN 內建函式實作出來,以及利用自己寫的類別所創之物件來存檔

電腦端 a.開啟 Webcam 並且拍照存檔到 資料夾

b.到目的資料夾,讀取 此單位時間所照之圖 片

c.找圖片中代表球、球 門、車頭、車尾這四個 位置的座標

d.用這四個座標, 算出機器人下一秒 該做的動作,並且 把 output 轉成藍芽 訊息

藍芽裝置

e.電腦端算出 機器人要做之 動作的藍芽訊 息

Lego NXT 主機

f.順時針旋轉 g.逆時針旋轉 h.在能夠閃障 礙物的情況下 直走

i.射門

(7)

Figure 2.1:開啟/關閉 Webcam

Figure 2.2:用 Webcam 拍照

Figure 2.3:將拍照之圖存到目的資料夾

(8)

==================================

b.到目的資料夾,讀取此單位時間所照之圖片

說明:把照之圖片 show 出來,用C#內建函式實作在的主程式的類別

Figure 2.4:加在主程式的類別中

c.找圖片中代表球、球門、車頭、車尾這四個位置的座標 說明:

(1)先把 C#主程式的屬性改成 unsafe,因為讀圖片中之 pixel 座標會牽涉到記憶體修改。

(2)在主程式的類別中,先分析圖片中 RGB 資訊,利用 Bitmap 將 image 包起來,取 得 pixel 顏色資訊。

(3) 在主程式的類別中實作出以下功能,I.先鎖住存放圖片的記憶體 ,II.取得 pixel 資料的起始位址 ,III.計算每行的像點所佔據的 byte 總數,IV.直接利用指標, 把影像 資料取出來。

(4)先使用 C#工具箱的 timer1_Tick,再利用創到類別之物件把讀取之圖拿來分析 RGB 資 訊

(5)宣告要代表球、車頭、車尾、球門的四個座標,並且找出四個顏色的 RGB,利用兩個 FOR 迴圈找出此圖所有的座標之 RGB 資料,如果有符合有座標符合這四個顏色的 RGB 中其

(9)

中一個顏色的 RGB,既將此座標當作該位置的座標(EX:找到球的座標,球的顏色的 RGB 為 [255,0,0])

Figure 2.5:如何把讀取之圖,將之分析其 RGB 資訊

Figure 2.6:用高效率的方式,把圖的資訊完整分析出來(pixel 數、定義所有 pixel 之 RGB)

(10)

Figure 2.7:宣告四個座標,並且定義四個顏色之 RGB,然後讀取此圖所有的 pixel 把符合球、車頭、車尾、球門代表這四個部份的顏色座標一一找出來

d.用這四個座標,算出機器人下一秒該做的動作,並且把 output 轉成藍芽訊息

說明:算出機器人的動作總共有四種 (1) 順/逆時針旋轉

利用球/球門、車頭、車尾這三個座標,用車尾當原點在利用剩下兩個座標所在 之象限的分布位置來觀察是否順/逆時針

先分成三種情形討論

(11)

I.球/球門跟車頭之象限差為 1/-1

由 I、II 象限來看,象限差為 1,所以就是車頭需逆時針找球,在看 III、IV 象限,象限差為-1,所以就 是車頭需順時針找球

II. 球/球門跟車頭之象限差為|2|

計算球跟原點(車尾)(X,Y)跟創的新座標(X,Y+5)或者(X,Y-5),這三點算出夾角,如果此角度>車尾車頭 X 軸之角度,則逆時針,否則順時針

III. 球/球門跟車頭之象限差為 0

再上圖之第一象限來看,計算球跟原點(車尾)(X,Y)跟創的新座標(X,Y-5),如果(新座標+原點+車頭 三點算兩個向量)的夾角<(新座標+原點+球三點算兩個向量)的夾角,則順時針,反之逆時針。其 他向量亦可用此觀念推倒來求出,機器人如何順/逆時針轉到球之正面。

Figure 2.8:先定義象限位置

車尾

車頭

球 球

車頭 車頭 球

(12)

Figure 2.9:實作利用象限差判斷順/逆時針

Figure 2.10:最後把符合條件集中再逆時針,反之順時針

(2) 直走

當機器人跟球/球門成一直線,則直走找球/球門

(13)

Solve:利用科西不等式概念延伸之算式

I.先利用球/球門 車頭 車尾 三個座標,算出兩個向量 U1=(x1-x2,y1-y2)=(X1,Y1)

U2=(x3-x2,y3-y2)=(X2,Y2) II.在取兩個 NORM

NORM1=X1^2+Y1^2 NORM2=X2^2+Y2^2 III.取內積

內積=X1*X2+Y1*Y2

IV.取 COSΘ

車頭

車尾

Θ

180-Θ

(14)

內積

COSΘ= --- NORM1*NORM2

V.180-

Θ就是轉的角度,使車子能夠正面向球,達到直走找求目的

Figure 2.11:判斷機器人如何轉到正面

(3)射門

當機器人帶球找球門時,如果轉到跟球門適當的角度便會直走找球門,如果再射程範圍內 便會射門

Figure 2.12:如何判斷射門條件

==========================================================

(15)

e.電腦端算出機器人要做之動作的藍芽訊息

說明: 主程式會把要傳的訊息用 BYTE 的方式存在一個正確的通訊協定的陣列(長

度:2BYTE) 然後傳給機器人,其中這通訊協定包含了是否回傳訊息,傳到第幾個信箱,以 及要傳的訊息(EX:數字)轉成 16 進位 code

Figure 2.13:C#上要傳的訊息轉成認可的藍芽通訊協定的訊息

f、g、h、i:NXT機器人收到訊息做的四個動作

(16)

(1) 用 BrixCC 內建的函式來接收訊息

(2) 再利用 switch 把收到的訊息一一對應該動作

Figure 2.14:NXT 接收訊息

Figure 2.15:利用 switch 把收到的訊息轉成動作

(17)

(三)實驗過程與結果

3-1 架構環境 i.先準備好材料

Webcam*1

藍芽裝置*1 Lego NXT 主機*1

(18)

超音波 SENSOR*1 紅色塑膠球*1

用 Lego 材料做成之球門 用瓦楞紙做的圍牆*1

用四個白色瓦楞紙做的草皮*1

ii.場地製作流程

a. 先把 Webcame 跟藍芽裝置安裝再電腦上 b. 超音波 SENSOR 安裝再機器人身上

c. 把 Lego 材料安裝在機器人身上

-輪子*3(兩個大輪子當作左右胎,小輪子當輔助腳) -馬達*2(用來前進,後退,轉彎)

-綠色以及水藍色色紙+塑膠板(用來當作車頭.車尾之區分) -彎曲塑膠零件數個,直線塑膠零件數個(組裝控球把手)

d. 紅色塑膠球放置任意點

e. 用 Lego 零件組成的球門放置任意點,並放上紫色色紙(用來給 Webcam 擷取圖片用以判 別位置)

f.架上瓦楞紙做的圍牆跟鋪上四片瓦楞版做的草皮

(19)

Figure 3.1:Lego 足球機器人與場地全景圖*3

iii.開始主程式 C#,並利用 C#開啟視訊準備擷取照片並下達指令 Figure 3.2:執行主程式並開啟視訊準備要下達指令

(20)

3-2 為何進行實驗

目的:測試所寫之 Lego NXT 藍芽足球機器人是否可以執行下列功能 a. 能夠找球

b. 閃避障礙物

c. 當找到球把球控在自己身邊 d. 成功把球踢進球門

3-3 進行實驗與檢討

實驗 I:

目的:希望機器人能夠閃避障礙物並且找足球,最後把球順利的踢進球門 靜態實驗圖:12 張 (觀看順序為由左到右,由上到下)

(21)

檢討與改進:

機器人雖然能夠順利把球踢進球門而且成功的閃避障礙物,可是筆者在圖片 12 時,是設定 射門的時候自動把程式關掉,停止指令,所以沒有成功拍到射門鏡頭,這是因為射門的指 令,所花的動作時間超過一秒,筆者設定的時間是 1 秒鐘擷取一張照片所以機器人是要在 1 秒鐘內接收完指令並且執行完動作,如果沒有辦法達成,會造成訊息無法傳進機器人,而 機器人會一直重複執行上一秒所作之動作

解決方法:

i. 因為射門動作超過1秒,所以可以讓擷取圖片的時間加長,或者減少射門動作的時 間,減少至 1 秒內。

(22)

機器人不能在接收到下一秒指令。

實驗 II

目的:希望機器能夠把球踢進左邊球門,並且能夠順利的拍到射門的畫面,因為射門的動 作仍超過一秒,所使用的方法為當機器人接受到射門的指令時,立刻把程式關掉,不會 讓機器人收到下一秒指令

靜態實驗圖 16 張

(23)

檢討與改進:

其實拍這部實驗影片,前 30 秒都卡在同一個點,之後才順利把球踢到球門 改進:下一個時間將加大機器人的馬力,並且加重球的重量使之不會卡點 實驗 III

目的:希望機器能夠把球踢進右邊球門,並且能夠順利的拍到射門的畫面 靜態實驗圖 16 張

(24)

檢討與改進:

機器人成功的找到球,並且能夠控球然後把球踢到球門,成功的地方在於轉彎的馬力增 強了約 15,而且利用紅色色紙加重了紅色塑膠球的重量,使之更穩定推進球門

缺點:如果球的重量加太多,射門會不容易成功,必須斟酌。

(四)專題心得 I.遇到的困難跟解決的方法

a.機器人如何知道要拿到球

困難:因為機器人再 360 度跟球之絕對距離=( (X1-X2)^2+(Y1-Y2)^2 ) ^ ½ ),幾乎都完 全不同

(25)

所以沒辦法用只有一個固定的絕對距離來讓機器人知道他拿到球

解決方法:用建表的方式把所有角度跟機器人與球的絕對距離一一記錄起來 Figure 4.1:計算車頭跟球之距離

Figure 4.2:判斷機器人是否拿到球

優點:當建表完整度夠,就可以讓機器人順利把球推進球門 缺點:i.時間長

ii.換場地跟視訊裝置拉高高度就要重新寫

b.場地會因為燈光的因素而使球,球門,車頭,車尾的 RGB 變化,嚴重可能會使運算結果錯誤,導致很難把球踢進球門 解決方法:利用 ColorPix 軟體,在現場調整 RGB 既可

優點:可以使運算恢復

缺點:換場地就要重新算 RGB,耗時

c.場地可能造成機器人卡點

(26)

解決方法:買平滑場地地板(EX.壓克力板) 優點:不容易卡點

缺點:球可能容易甩出去(調弱機器人馬力既可)

II.學習心得

心得:能夠學到藍芽通訊協定跟影像處理跟機器人的 AI 實作,很開心,未來希望能夠 繼續研究機器人 AI 的領域,雖然要計算的東西跟場地的狀況研究要思考,有時候 AI 並不 是只靠單純的演算法推倒,而還要考慮環境會不會影響變數運算

===========================================================

(五)總結與未來展望

寫完這次的樂高機器人踢足球,遇到的困難都要好好的思考,而不是土法鍊鋼的把條件寫 死,像機器人跟場地會受燈光的因素,而造成 RGB 混亂,使運算錯誤,這可以用觀察顏色跟 亮度的關係來寫出一套演算法來解決,可是因為時間問題無法完成,還有機器人跟球之絕 對距離也可以用演算法算出圖中紅色足球的中心跟車頭黃色的中心,使絕對距離可以固 定,這些未來應該好好思考。

(六)參考文獻

[1]樂高藍芽通訊協定: http://www.codeproject.com/KB/cs/nxtBluetooth.aspx

[2]視訊拍照影像處理 http://ppt.cc/ZWb0

[3]樂高所有運作之技巧 BLOG

(27)

http://www.blogger.com/profile/12376832463978326433

[4]OPENCV 安裝教學

http://www.dotblogs.com.tw/chou/category/2293.aspx?Show=All

[5]樂高論壇 1

http://note.tcc.edu.tw/515.html

[6]藍芽 BLOG

http://meyl0101.pixnet.net/blog/post/4978803

[7]專門討論藍芽的論壇

http://it360.tw/forum/forum_posts.asp?TID=7556&KW=%E8%97%8D%E8%8A%BD

[8]OPENCV 影像處理論壇

http://www.opencv.org.cn/index.php

[9] Robot fun 機器人論壇

http://www.robofun.net/forum/forumdisplay.php?fid=68

致謝

感謝周老師的指導,周老師提供的演算法以及解決方法都很實用,能夠碰到機器人 AI 實作 跟藍芽通訊協定以及影像處理這三個領域很充實。

參考文獻

相關文件

• 與資訊科技科、常識科、視藝科進行跨 科合作,提升學生資訊素養能力。圖書

援助對象 領取綜援,或學校書簿津貼 (全津/半津),以及經 學 校識別

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

健康及道德議題 (3 小時) • 辨別使用資訊及通訊科技對健康造成的 威脅;建議在使用資訊及通訊科技時,實

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

Windows/ Linux/ Mac 各種平台的開發套件,使我們能夠透過各種平台來開發 Android 軟體,所有的 Android 應用程式都是使用 Java

智慧型手機是一種運算能力及功能比傳統手機更強的手機。 通常使用的作 業系統有: Symbian 、 Windows Mobile 、 iOS 、 Linux (含 Android 、 Maemo 和 WebOS) 、.. Palm

台灣的手機擁有率是世界第一,帄均 2270 萬人中將近 1870 萬擁