RCX NXT RCX NXT USB NXT Java C NXT RCX NXT - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4332/1/樂高機器.pdf · 樂高機器人可分為rcx及nxt,rcx採用了8位元微處理器,以

Post on 28-Oct-2019

13 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

Transcript

簡介

樂高機器人可分為 RCX及 NXT,RCX採用了 8位元微處理器,以

紅外線的方式傳輸資料,兩者差異在於 NXT採用 32位元微處理器、

內建 USB和藍芽,可以讓使用者做出藍芽裝置(例如平板或手機、電

腦)控制的機器人。

我們用的教材是 NXT,它具有七個端口,四個用來連接感應器的連接

埠、另外三個用來連接直流馬達;大部分的人都是利用功能較強的

Java程式開發軟體來實作,而我們用 C語言來撰寫程式;NXT的傳輸

方式相較於 RCX方便多了,只需一條傳輸線即可完成傳輸作業,可以

在 NXT主機內存取多個程式檔案及直接覆蓋檔案的功能,這種程式的

傳輸過程比起嵌入式晶片的燒錄來說更為簡易與快速。

1

目錄

簡介 ---------------------------------------------------01

目錄 ---------------------------------------------------02

前言 ---------------------------------------------------04

研究動機 -----------------------------------------------05

研究目的 -----------------------------------------------06

甘特圖 -------------------------------------------------07

第一章 樂高介紹------------------------------------------08

1.1樂高主要元件 --------------------------------------13

1.2 NXT功能說明 --------------------------------------14

1.3 NXT主機規格 --------------------------------------15

1.4 NXT元件說明-直流馬達 -----------------------------16

1.5 NXT元件說明-觸碰感應器 ---------------------------18

1.6 NXT元件說明-顏色感應器 ---------------------------19

1.7 NXT元件說明-超音波感應器 -------------------------20

1.8 NXT各元件基本程式碼 ------------------------------21

第二章 NXT編寫程式簡介 ---------------------------------23

2.1BRICX CC軟體使用介紹 ------------------------------24

2

第三章 場地介紹-----------------------------------------31

3.1 機器人須完成目標-------------------------------33

3.2機器人-堆高機拆解圖 -----------------------------34

3.3樂高-堆高機組裝與說明 ---------------------------36

3.4樂高-堆高機組裝完成圖 ---------------------------37

3.5機器端與控制端程式碼流程圖 ----------------------38

3.6樂高-堆高機控制端程式碼 -------------------------39

3.7樂高-堆高機機器端程式碼 -------------------------40

3.8製作時所面臨問題與解決方式 ----------------------45

第四章 成果展示-----------------------------------------51

第五章 結論 --------------------------------------------55

第六章 參考文獻 ----------------------------------------56

3

前言

智慧型機器人是一種多功能的半自動或是全自動機械裝置,可透過程

式化動作執行各項生產。智慧型機器人是結合機械、自動化、電機、

光學、墊子、資訊軟體、通訊、安全系統、創意內容等相關技術,未

來運用之範圍非常廣泛,應用層面除了產業用機器人外,更可擴展到

服務性機器人和軍事用機器人,機器人也正不斷的在我們的生活周遭

引起新的話題。

發展出許多各式智能化機器人,其功能可分成工業型、服務型兩

種型態。日本、美國與歐洲等國因為汽車工業需求帶動工業機器人蓬

勃發展,目前全世界約有100 萬個這種類型的機器人投注於所謂的

「自動化生產」的行列,未來工業機器人的人口數只會增加不會減少。

服務型機器人至目前先進各國都列為發展得重點項目之一,服務型機

器人未來將用在居家看護、保全、環境清潔、互動學習、醫療服務、

大樓火災救助與防治、製造業搬運、警用或是軍事偵察與農業等用

途。

近年內,有關智能化機器人的理論、技術與應用日趨熱絡。基本

上服務型機器人目前的用途分兩種情況:一為危險環境或是重複無趣

的人力勞務,其二是幫助與輔助人類行為減低因功能喪失所導致的行

為不便性,增加生活環境舒適。

我們這組專題是模擬製造業搬運,不需要人工操作堆高機,用NXT

內建的藍芽來控制我們所組合的NXT機器人,而在工作中的機器人會

有一些警示的聲響,跟後退時防止撞到物品或工作人員的安全裝置,

在較暗空間裡也有顏色來給周遭的工作人員做警示。

4

研究動機

當初為了專題找了幾個同樣對樂高有興趣的朋友,一起投

入樂高機器人的研究,曾經以為過了孩童時期就不會再碰到樂

高機器人了,沒想到長大後還有機會可以接觸,讓我對樂高機

器人一直充滿一種熱情,甚至成為樂高研究者的一份子。剛開

始不懂得從何做起,只好不斷向老師求教,漸漸對於程式撰寫

以及拼裝機器人越來越有概念。

隨著科技的進步,工業與運輸業也逐漸走向自動化。而我

們這組做「樂高堆高機」的動機是看到 DISCOVERY播放製造汽

車的節目,看到目前製造汽車都由機械手臂配合電腦生產,但

是在搬運貨物卻還是依靠人力,所以我們利用樂高模擬自動搬

運的過程。

5

研究目的

自動化是 21世紀的發展方向,在新世紀高科技機器人教育開展

高科技技術。機器人教育的活動,是發展青少年個性的良好途徑。而

機器人教育輔助電腦程式語言教學,為學生聰明才智的發揮提供了一

個絕佳展示的機會。因為機器人技術對現代工業設計、機械、電子、

感測器、電腦軟硬體、人工智慧等諸多領域都有所涉及。

現在所面臨的環境問題,也許人類必須另尋星球居住,在那之前我們

是否能夠奉獻一點力量,用機器人代替人類前往火星或者其他星球勘

查其地理環境,成為全人類的先驅者。

而且機器人所要完成的每一個精確動作都是由程式來控制的,學

生在學習過程中可以運用撰寫程式的方式去控制機器人完成每一項

的機器人任務。因此在學習撰寫程式和實際操作的過程中,會有效地

提高學生的思考邏輯和判斷能力。

6

甘特圖

(圖 1)甘特圖

我們依照甘特圖所排出的行程,來完成這次的專題。

7

第一章 樂高介紹

樂高(LEGO),幾乎是每個孩童都玩過的益智玩具,通常在一個

大箱子裡有許多不同顏色,不同尺寸,呈長方體、正方體或其他立

體形狀的塑膠塊,一面呈構狀,另一面有多個圓柱形的突出物,可

以讓塑膠塊適度的咬合在一起;可架在一塊綠色的底盤上,由下往

上開始建構成品。而創造出各種不同形狀的作品。但是樂高積木不

管組裝的如何逼真、有趣,終究只是一堆靜態的成本,樂高公司並

不以此為滿足。它仍在思考如何能使樂高產品更加活潑生動、更富

有教育意義、甚至要能與時代脈動結合為目標。

於是樂高公司在1984年開始與美國麻省理工學院合作,並由媒

體實驗室的Resnick, M與Papert, S共同主導、希望研發出結合現

代科技與傳統玩具的新世紀教具。經過15年的研發,樂高公司與美

國麻省理工學院終於在1998年推出革命性的樂高微電腦積木,並將

LEGO積木和一種名為Logo Language,適合國小兒童學習的簡單程

式語言結合在一起。學生只要點選簡單的圖形,就能依照想像力,

隨意設計電腦程式。並透過組合好的各式各樣經由電腦積木控制的

機器人,或含有動力裝置的高科技玩具,來啟發孩子無限創作的空

間,且快速建立強大的邏輯概念,因應數位化、電腦化教育的要求。

8

經由樂高公司與麻省理工學院長期的合作開發,終於將樂高積木

與電腦課程相結合,並發展出一系列適合幼稚園、中小學到大學的創

意科學電腦樂高課程。這套課程的教學理論是以建構式教學為主軸,

強調結合日常生活的科學知識,讓教師、家長、及孩童透過實際動手

做的互動過程,建構累積經驗與知識,讓孩子從實驗中進行探索、思

考問題,培養孩子創造及解決問題的能力,以建構自己的知識體系,

並啟發孩童多元的智能。

自從電腦樂高推出後,已引起教育專家及為人父母者廣泛注意並

爭相推薦,於是業者就在1998年推出LEGO MINDSTORMS開始上市發售,

MINDSTORMS一詞來自於Papert於1980年出版之著作

「MINDSTORMS-computers, andpowerful」。而台灣亦在1999年元月

引進此產品(台灣代理商貝登堡公司譯為樂高機器人)上市發售。2006

年樂高公司又推出新一代LEGO MINDSTORMS (NXT),功能更為強大,

操作介面也更容易上手,更適合國小學童使用。只要一組樂高機器人

套件,就能做出好玩、有趣的作品,讓孩子擁有最有效率的學習。剛

開始的學習以模仿為主,經由模仿動物特性、生活中常見機械動作的

原理加以學習。再來則是發現生活中的問題而加以改善。最後則是發

揮自己的想像,將在現實生活中上未能實現的,也許可以在樂高機器

人表現出來。這套產品包含圖形化控制軟體(The LEGO® MINDSTORMS®

9

EducationNXT Software),可程式控制積木(NXT)及零件組。零件組

包含各式各樣的積木組件,例如:齒輪、槓桿、輪胎、關節等,還有

一些輸入、輸出裝置。輸入裝置有碰觸感應器、光源感應器、音源感

應器及超音波感應器;輸出裝置則有馬達及燈泡等。這些輸出、輸入

裝置與可程式控制積木搭配後,可以依據程式的指定及輸入裝置所回

傳的數值,做一些控制的動作。例如:使用者可以在軟體上設計程式,

當聲音的分貝大到某一程度時,馬達就開始運作,操作組裝之機器人

進行動作。

操作樂高機器人的程式語言稱為LOGO程式語言,LOGO程式語言是

美國麻工學院Seymour Papert與其研究夥伴(Bolt,Beranek& Newman

機構的DanielBobrow及Wallace Feurzeig)於1960年代所發展出的程

式語言。目的在提供一種簡易而功能強大的電腦程式語言,幫助兒童

跨出學習撰寫程式語言的第一步。Papert從1984年開始與樂高公司合

作,研發新一代的樂高產品。讓孩子可以按照自己的創意,使用電腦

程式來控制樂高玩具。經過15年的研發,終於在1998年推出ROBOLAB。

這是一套用圖形撰寫程式的軟體,學生可以按照自己的想法,使用滑

鼠來點選圖形,然後把這些圖形串連起來,就可以變成操控可程式控

制積木的程式。

10

樂高公司在2006年所推出的新一代的樂高機器人

(LEGOMINDSTORMSNXT),同時提供兩種視覺化的NXT 程式開發環境:

The LEGO®MINDSTORMS® Education NXT Software與ROBOLAB 2.9。搭

配的操作軟體The LEGO® MINDSTORMS® Education NXT Software也是

使用LabView引擎開發的圖形化編程軟體,該軟體易於操作,具有循

序漸進式的友好使用者介面。整個編程介面只使用43個命令圖示,編

輯程式速度快,功能更為強大,並有39個活動案例可供參考。

11

1.1樂高主要元件

樂高機器人的零件除了基本組裝積木之外,還可以跟元件做結合

完成更具有挑戰性的任務,這裡有幾個比較常用的元件,分別是 NXT

主控制器、直流馬達、聲音感應器、觸碰式感應器、光感應器、超音

波感應器。其中 NXT主控制器為樂高機器人的核心,機器人所有的動

作都必須由使用者事先撰寫程式之後再將程式載入 NXT之內,如此一

來便可驅動機器人,而直流馬達可加上齒輪並連接一些積木當作機器

人活動的架構,同時再搭配上感應器的輔助,便可使機器人具備高度

的智慧型功能。以下便針對這幾個常用到的元件分別作詳細的說明。

12

1.2 NXT功能說明

樂高平台所實作之機器人主要是利用一個可程式化之積木

來控制其機體本身的所有動作,稱為 NXT,此 NXT控制器乃是

由丹麥樂高公司與美國麻省理工學院所開發,外觀如(圖 2)所

示,其核心為 32位元微處理器。在表面部分有 4顆按鈕,左右

兩邊三角形為選擇,中間橘色為(開機/確定),底下灰色則為(關

機/取消)。另外 NXT還具有 3個輸出端與 4個輸入端,輸出端

主要是安裝直流馬達並透過程式來控制其動作,輸入端則是連

接聲音感應器、觸碰感應器、光感應器、超音波感應器,透過

程式來控制其動作。

(圖 2)NXT主機外觀 13

1.3 NXT主機規格 (表 1)NXT主機規格

微處理器:32 位元 ARM7 微處理處

記憶體:256K FLASH , 64K RAM

輔助處理器:8 位元 AVR處理器

記憶體:4Kbytes FLASH; 512 Byte RAM

通訊方式: USB 2.0與藍芽無線傳輸

輸入端: 4 個(可連接感應器,例如:觸碰感應器)

輸出端:3 個(直流馬達)

顯示設備:100 X 64像素液晶顯示面板

電池:充電鋰電池(或 3號電池 X6)

14

1.4 NXT元件說明—直流馬達

直流馬達外觀如(圖 3)所示,乃是樂高機器人運作之核心,

缺少此元件便無法動作,可利用內部程式來控制轉速,而根據

機器人本身安裝的齒輪數量與齒輪大小的不同,其轉速也不盡

相同。每個馬達都有內建角度感應器,它可以讓你精確的控制

機器人的動作,而馬達的指令可分為 4 大類:

(圖 3)直流馬達

1.無控制模式

2.速度控制模式

3.同步模式

4.轉速表模式。

15

1. 無控制模式

簡單來說,就是沒有特別去設定馬達的模式就是無控制模

式了,此模式會使 NXT 不會理會馬達轉動的角度跟我們起

初所設定的目標角度是否有差異。它只會照著給予多少數

值,而下去轉動而已。

2. 速度控制模式

使用速度模式時,即使因摩擦力或者人為使馬達轉速變慢,

將會加大對馬達的電力輸出,來維持當初所設定的速度。

3. 同步模式

如果你想要兩個馬達速度一樣的話,就要用此模式了,只

要兩個馬達的速度有一點差異,就會依據雙方的狀況就調

整,一個快另一個就快,而一個慢另一個也就慢,不論直

走、左右轉或者是原地旋轉都可以保持同步。

4. 轉速表模式

此模式會利用 NXT 裡面的角度感應器,角度感應器可以控

制轉動的角度,讓機體不會因為摩擦力或者外力的影響,

而沒有轉到當初所設定的角度目標。簡單來說,就是你要

它轉幾度,他就會轉到幾度,不會因外力少轉或是多轉。

16

1.5 NXT元件說明—觸碰感應器

有別於光感應器,觸碰式感應器必須要與某物體有所接觸才會

有動作,當觸碰感應器被壓下時,回傳值為真(true); 未按下

的回傳值為假(false),其外觀如(圖 4)所示,此類型感應器可

以作為機械模型的啟動/停止開關。

(圖 4)觸碰感應器

17

1.6 NXT元件說明—顏色感應器

顏色感應器有兩種功能:一、辨識顏色,二、偵測光線的強弱變化(類

似光感應器)。顏色感應器會發出三種顏色光線(紅藍綠)。在顏色辨

識的功能應用,大多都用三種不同顏色的積木,讓感應器辨識,再控

制機器人的動作。外觀如(圖 5)所示。

(圖 5)顏色感應器

18

1.7 NXT元件說明—超音波感應器

超音波感應器是一種數位感應器(圖 6),它具有內建的晶片可以分析

並送出資料,利用這一顆感應器,我們可以讓機器人「看到」物體並

在撞到之前躲開。它會發出一連串的超音波,當物體反射回來的時間,

再轉換成距離回傳給 NXT,預設的距離單位是公分。雖然最遠距離為

200公分,但是因感應器本身的關係,我們實測當距離超過 30公分

以上就會開始不準了。

(圖 6)超音波感應器

19

1.8 NXT各元件基本程式碼

直流馬達基本程式(圖 7):

(圖 7)直流馬達基本程式

觸碰感應器基本程式(圖 8):

(圖 8)觸碰感應器基本程式

顏色感應器基本程式(圖 9):

(圖 9)顏色感應器基本程式

20

超音波應器基本程式(圖 10):

(圖 10)超音波應器基本程式

21

第二章 NXT 編寫程式簡介

LEGO MindStorms Education NXT是用來設計 NXT機器人程式的

軟體,為圖形化程式編輯軟體,NXT-G (G代表 Graphic)的設計

界面和一般視窗軟體相似,操作相當容易。

2001 年 Dave Baum 發表了 NQC(Not Quite C), 是一套給樂

高 RCX 主機使用的類 C 語言,程式環境是RCX Command Center,

之後樂高 NXT機器人發表,John C. Hansen 等人將 NQC 語言延

伸改版為 Bricx Command Center。Bricx Command Center(簡

稱 BricxCC)是一個整合開發環境(IDE),可讓我們用 NXC,類似

C/C++的語法來撰寫程式,並透過 NBC來編譯成 rxe 的 NXT,支

援所有樂高智慧型主機以及眾多的第三方程式語言。

22

2.1 BRICX CC 軟體使用介紹

這次專題我們選擇用 BRICX CC軟體來編寫。以下是介紹 BRICX CC軟

體使用:

第一步驟:

安裝完 BRICX CC會在你的電腦桌面上建立一個捷徑,如(圖 11)

(圖 11)BRICX CC捷徑

23

第二步驟:

將 NXT主機電源打開並以 USB線連接電腦。打開 BricxCC後,電腦會

出現一個「Find Bricx(搜尋主機)」畫面來詢問你主機連接方式與種

類。

我們樂高是用NXT機種同時也是用USB載入程式,所以Port選擇USB、

BRICK Type選擇「NXT」和 Firmware(韌體)選「Standard」。如(圖

12)

(圖 12)輸入選擇

補充:要將程式傳到 NXT主機時,電腦要先安裝「LEGO MINDSTORMS NXT

driver(驅動程式)」,否則無法上傳程式。如(圖 13)

如果 USB線沒有連接也可以啟動 BricxCC,但要載入程式時要重新連

接 NXT,只要執行 Tools裡的「Find Bricx(搜尋主機)」即可。如(圖

14)

24

(圖 13)安裝「LEGO MINDSTORMS NXT driver」

(圖 14)搜尋主機

↑安裝NXT drive驅

動要選第二個選項

25

第三步驟:

進入 BRICX CC常用到的功能介紹。如(圖 15)

(圖 15)功能介紹

1. 為開啟新檔。快速鍵為 Ctrl+N。

2. 為編譯程式。先編譯成功才能上傳,如果編譯有錯誤會在電腦

螢幕上顯示那些地方有錯誤。快速鍵為 F5。

3. 為下載程式。會先自動做編譯動作再正式執行下載,所以也可

直接按下載,快速鍵為 F6。

4. 為執行程式,執行已上傳的程式,也可按 NXT主機的橘色按鈕。

快速鍵為 F7。

5. 為停止執行中的程式,快速鍵為 F8。

26

第四步驟:

偏好設定,點擊 Edit後,選擇 Preferences(圖 16)會跳出 Commom、

Editor、Options等頁面設定功能讓使用者選擇。如(圖 17)

(圖 16)偏好設定

(圖 17)功能介面

27

將 Common頁面下的程式語言改成 NXC。在存檔時,程式的副檔名就

會是「.nxc」。

第五步驟:

「Color標籤」是編輯程式碼所呈現的顏色,預設函數是藍色、數值

是紅色、巨集是紫色;「Editor Font」為設定字體大小。如(圖 18)

(圖 18)顏色標籤

「Line numbers」顯示程式碼行號,程式編譯錯誤時容易清楚是那幾

行有誤。如(圖 18)

28

第六步驟:

「Code completion」:幫助使用者找到程式碼。如(圖 19)

(圖 19)Code completion

NXC的程式可包含好幾個 task(任務),每個程式一定要有一個(並只

能有一個)名為main的task,每個task名稱不可重複。「//」和「/**/」

為 NXC的註解指令,字體用斜體字顯示,不影響程式編譯執行。「//」

只能用一行做註解;「/* */」是用在較長或跨行註解用。如(圖 20)

(圖 20)

29

第三章 場地介紹

場地介紹:

1. 長 100公分,寬 116公分。場地設計共有四個點

2. 車子在場地的中間為起點

3. 兩個載貨區,兩個卸貨區。每個載貨區長 8公分,寬 21公分。每

個卸貨區長 8公分,寬 21公分。(如圖 21、22、23)

4. 每個地區矗立起一面紙板,作為超音波感測距離用

(圖 21)場地空拍

30

(圖 22)場地正面

(圖 23)場地設計圖

31

3.1 機器人須完成目標

1. 控制端與機器端能進行藍芽連線。

2.用一顆觸碰鈕在控制端讓機器端開始執行作業和暫停作業。

3.超音波感應器能判斷遠近距離,能依照所設定的距離範圍,讓顏色

感應器燈個別亮出三種顏色不同的燈。

4.利用超音波感應器在離牆壁約 20公分內時,機器端停止前進並執

行卸載貨。

5.利用聲響高頻來得知機器端在行走;用低頻聲代表制止做卸載貨動

作。

6.機器端會判斷應該是要載貨還是卸貨。

7.機器端往後行走時,觸碰感應器碰到障礙物時,機器端停止行動並

發出重低音警告聲。

32

3.2 機器人-堆高機拆解圖

(圖 24)機器端輸入輸出埠

(圖 25)升降設備與觸碰和顏色感應器

33

(圖 26)行走輪與機台固定和升降設備固定

(圖 27)後輪與底盤

34

3.3 樂高-堆高機組裝與說明

主機共使用了三個輸入端,分別用在超音波感應器、顏色感應器

及觸碰感應器;三個輸出端都使用,分別前輪、後輪、起降馬達。

機器端 2個大輪作前輪、2個小輪作後輪,前輪來控制車的動作

(例如,前進、停止及往右退後)。顏色感應器跟觸碰感應器一起裝在

起降馬達上面。讓警示燈更加明顯。顏色感應器裝置在觸碰感應器的

前面。而顏色感應器不是用來偵測顏色,而是作為 LED使用來告知距

離障礙物的遠近。觸碰感應器做用於堆高機後退時碰到障礙物,透過

此感應器來告知機器端要立即停止目前的工作與發出聲響。不少 NXT

機器人會用到光感應器讓機器人順著地板上的黑線直行走,行走黑線

範圍執行的任務,例如停止、轉彎。光感應器能透過黑白兩色而達到

精準效果。而超音波有偵測上的誤差,所以我們嘗試用超音波感應器

抓住精準距離去執行任務。裝超音波感應器的同時也要考慮到適當的

位置。

35

3.4 樂高-堆高機組裝完成圖

(圖 28)堆高機正面實體照

(圖 29)堆高機後面實體照

(圖 30)控制端實體照

36

3.5 機器端與控制端程式碼流程圖

(圖 31)

1. 進行藍芽連線。

2. 程式開始執行。

3. 遙控端啟動,機器端會接收遙控端訊息。

4. 當遙控端按下觸碰元件(按下是開始,放開則暫停),車子開始行

走。在行走過程中發出高頻聲音來警告周遭的人員,機器行走中。

5. 機器行走中超音波便開始偵測障礙物。

6. 行走與偵測障礙物的同時,顏色感應器也會由遠至近來安排順序

亮燈(順序為 綠→藍→紅)。

7. 離障礙物約 20cm左右,會執行以下三個動作: 37

(1)顏色感應器會亮紅燈,同時機器端也會發出長聲重低音並停止前

進。

(2)若是機器端在裝載區,會將貨物升起。若是機器端在卸貨區,會

將貨物放下。

(3)當機器端升起/下降動作完成時,會向右退後再轉 90度。

(4)當機器端後退若有碰撞到障礙物,便會停止 0.7秒之後往前走,

執行下個動作。

8. 每執行完一次裝貨或卸貨,count和 f1與 f2值各加 1。

9.當遙控端的觸碰器未感應到觸碰,此時機器端所有動作將會結束。

10.結束

38

3.6 樂高-堆高機控制端程式碼

(圖 32)控制端程式碼

←按鈕壓

下或放開

39

3.7 樂高-堆高機機器端程式碼

(圖 33)機器端第一段程式碼

←依照距

離規定而

讓燈改變

指定顏色

←要用在超音波感

應器的巨集

40

(圖 34)機器端第二段程式碼

←車子後

面之觸碰

感應器任

←無障

礙物的

正常下

41

(圖 35)機器端第三段程式碼

←第一次遇

到障礙物的

情況下

42

(圖 36)機器端第四段程式碼

←Count 的

值為單數

的情況

下,跟第一

次所偵測

到動作是

一樣的

43

(圖 37)機器端第五段程式碼

←讓在車子的主機顯

示值在螢幕上面

←表示遙控端的

按鈕已放開

44

3.8 製作時所面臨問題與解決方式

第 1個問題:我們製作時想要超音波感應器所偵測到的距離,可依照

距離 40公分、30公分、20公分,顏色感應器能分別亮綠、藍、紅燈。

因此我們在程式碼的子任務 aaa設定兩個條件,就是「if」和「else

if」,寫程式條件順序會關係到邏輯問題。因為程式碼是由上往下的

執行如果第一個條件就寫距離為 40公分大範圍條件的話,那它就只

會執行 40公分的大範圍而不執行 30、20公分較小範圍。

解決方式:因此我們後來發現程式要的條件順序要「由小到大」、「由

近到遠」才正確的程式邏輯。

45

第 2個問題:在關於升降時,我們也遇到問題,就是以「count值(升

降共幾次)」,再「count%2==1(count除以 2餘數為 1表示單數)」與

「count%2==0(表示雙數)」來判斷要升起還是下降。但是發現到只有

兩個條件是不夠的,因為偵測到障礙物距離是第一次的話,相對

count=1,於是 1%2=0而誤以為 1是雙數。

解決方式:需要多加一個「count==1」的條件,執行升起的功能。

第 3個問題:機器端升降的上升功能,寫升降馬達程式有發現到使用

「RotateMotor」指令最多只能讓馬達轉動 360度,使升起高度不夠

高。

解決方式:用「OnFwd(前進)」讓馬達上升到標準的高度。

46

第 4個問題:使用顏色感應器的燈表示機器端是否正在行走之外,另

外我們有再延伸試著要不要再裝一顆「NXT小 LED」(如圖 38)來加已

明顯表示機器端是否正在行走。而這顆「NXT小 LED」(如圖 38)需要

接在輸出埠而配合「OnFwd(前進)」、「OnRev(後退)」的指令就會發亮。

由於三個輸出埠都已使用在前進與後退、升降馬達上,所以試著接在

輸入埠看能不能像輸出埠一樣,至少還能單向執行(只能執行一個作

動),結果是不行的,因此打消這個念頭。

(圖 38)NXT小 LED

47

第 5個問題:關於藍芽傳輸部分,我們曾經有試著看操控端能不能按

一下機器端就開始動作,再按一下機器端就暫停,然後再按一下機器

端開始執行。因此在遙控端程式試著用「int」整數函數看能不能傳

到機器端,後來我們知道 NXT藍芽只能用布林函數傳輸 0或 1的數

值。

解決方式:持續按住觸碰感應紐,讓機器端動作,當放開時就停止動

作。

第 6個問題:關於藍芽傳輸部分,嘗試過要讓遙控端螢幕顯示現在機

器端是在載貨區還是卸貨區(顯示 1表示載貨;顯示 0表示卸貨)。為

何用 0、1數字來替代,因為 NXT藍芽是使用布林函數在傳數。

(圖 39)機器端載貨程式碼

(圖 40)機器端卸貨程式碼

P.S:紅框部分是要將 0或 1傳到控制端,讓控制端螢幕顯示所收到

的布林函數。

48

(圖 41)控制端程式碼

P.S:程式碼的 if和 else,如果收到的 x值等於 1,則顯示 1能知道

現在機器端在載貨;反之顯示 0,表示卸貨。

經過我們嘗試幾次程式編寫和實驗,結果控制端螢幕只會顯示 0數字。

因此打消這個念頭。

接收來自機器端傳的布林

函數,代入布林函數(bool)x

設計布林變數 x,是用來接收訊息用

49

第 7個問題:我們原本是用 360度的圓形底盤(如圖 42紅色框框部分),

實驗後發現會造成機器端直走時方向會偏掉、往右退後無法呈 90

度。

解決方式:用 2個小輪當後輪。

(圖 42) 360度後輪底盤

第 8個問題:升降設備的叉架原本只裝兩根(如圖 43),之後發現有

時載貨時會因為叉架太短造成貨物容易掉落。

解決方式:增加為四根叉架,其中中間用較長的樂高組合零件來降低

貨物掉落的機率。

(圖 43)叉架

50

第四章 成果展示

(圖 44)超音波感應器未感應到物體,顏色感應器亮綠燈

(圖 45)超音波感應器有感應到物體(接近中),顏色感應器亮藍燈

51

(圖 46)超音波感應器感應到物體堆高機停止往前,顏色感應器亮紅

(圖 47)將物體移動到下一個區域

52

(圖 48)將物體移動到下一個區域前,顏色感應器亮綠燈

(圖 49)將物體移動到接近下一個區域前,顏色感應器亮藍燈

53

(圖 50)將物體放在指定區域,顏色感應器亮紅燈

(圖 51)將物體放到定位,往下一個區域繼續執行下個任務

54

第五章 結論

在這次的智慧型機器人實作中,分為組裝及程式兩個部份,兩者

相輔相成,缺一不可。硬體部份,搭配組裝較容易的樂高積木,就能

輕鬆製作出我們想要的智慧型機器人。過程中,不但激發了組員們的

想像力及創意,如何從無到有,從一堆零件中組成一台可以執行任務

的機體,相對的也磨練了組員間的溝通、學習如何虛心接受他人的想

法;程式方面,大部分的人都是利用功能較強大的 Java程式開發軟

體來實作,而我們決定使用較容易編寫的程式語言去撰寫,而我們在

之前修 C語言的課時就有上到這類機器人程式撰寫,也很剛好的它是

用 C語言來撰寫程式,就此我們就用 C語言去撰寫,在編寫程式的過

程中,也是大大的考驗撰寫程式者的耐心。

初期的研究過程中,以網路及手邊資料來進行組裝一些功能簡單

的樂高機器人來增加熟練度,以及寫一些小小的程式測試,也藉此熟

悉一下軟體的使用度。例如:直流馬達與 NXT主機的結合、NXT主機

的結合、重要元件的感應器裝置及運用。

中期的研究重點在於各個功能的結合,到一機多功能的機器人。

例如:加上一顆顏色感應器跟超音波感應器的配合,當超音波感應器

到了多少距離,顏色感應器就要亮什麼顏色。

後期目標規劃場地並將此作品完成,呈現在專題的報告上,讓各

位老師看見我們專題的成果與努力。

55

第六章 參考文獻

[1]曾吉弘、謝宗翰、侯俊宇,“機器人新視界 NXC與 NXT(初版)”,

藍海文化事業股份有限公司,2010年 7 月出版

[2]康仕仲、張慰慈、古凱元、紀宏霖,“智慧型機器人程式開發與實

作(初版)”,精誠資訊股份有限公司,2009年 9月出版

[3] 李榮芳、譚孟君、李宜軒、李宜珊,“樂高機器人遊樂園篇:LEGO

MINDSTORMS NXT組裝及圖形化程式”, 碁峰資訊股份有限公司, 2010

年 06月 18日出版

[4] 邱信仁, “NXT 樂高機器人 2e:創意樂趣,隨心所欲!(第二

版)”, 藍海文化, 2011年 09月 01日出版

56

top related