56
簡介 樂高機器人可分為 RCX NXTRCX 採用了 8 位元微處理器,以 紅外線的方式傳輸資料,兩者差異在於 NXT 採用 32 位元微處理器、 內建 USB 和藍芽,可以讓使用者做出藍芽裝置(例如平板或手機、電 腦)控制的機器人。 我們用的教材是 NXT,它具有七個端口,四個用來連接感應器的連接 埠、另外三個用來連接直流馬達;大部分的人都是利用功能較強的 Java 程式開發軟體來實作,而我們用 C 語言來撰寫程式; NXT 的傳輸 方式相較於 RCX 方便多了,只需一條傳輸線即可完成傳輸作業,可以 NXT 主機內存取多個程式檔案及直接覆蓋檔案的功能,這種程式的 傳輸過程比起嵌入式晶片的燒錄來說更為簡易與快速。 1

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位元微處理器,以

  • Upload
    others

  • View
    13

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 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位元微處理器,以

簡介

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

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

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

腦)控制的機器人。

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

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

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

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

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

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

1

Page 2: 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位元微處理器,以

目錄

簡介 ---------------------------------------------------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

Page 3: 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位元微處理器,以

第三章 場地介紹-----------------------------------------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

Page 4: 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位元微處理器,以

前言

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

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

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

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

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

引起新的話題。

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

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

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

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

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

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

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

途。

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

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

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

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

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

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

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

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

4

Page 5: 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位元微處理器,以

研究動機

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

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

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

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

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

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

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

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

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

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

運的過程。

5

Page 6: 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位元微處理器,以

研究目的

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

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

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

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

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

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

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

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

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

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

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

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

6

Page 7: 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位元微處理器,以

甘特圖

(圖 1)甘特圖

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

7

Page 8: 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位元微處理器,以

第一章 樂高介紹

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

8

Page 9: 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位元微處理器,以

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

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

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

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

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

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

並啟發孩童多元的智能。

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

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

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

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

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

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

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

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

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

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

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

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

9

Page 10: 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位元微處理器,以

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

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

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

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

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

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

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

進行動作。

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

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

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

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

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

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

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

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

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

制積木的程式。

10

Page 11: 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位元微處理器,以

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

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

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

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

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

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

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

11

Page 12: 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位元微處理器,以

1.1樂高主要元件

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

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

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

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

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

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

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

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

12

Page 13: 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位元微處理器,以

1.2 NXT功能說明

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

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

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

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

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

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

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

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

程式來控制其動作。

(圖 2)NXT主機外觀 13

Page 14: 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位元微處理器,以

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

Page 15: 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位元微處理器,以

1.4 NXT元件說明—直流馬達

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

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

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

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

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

(圖 3)直流馬達

1.無控制模式

2.速度控制模式

3.同步模式

4.轉速表模式。

15

Page 16: 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位元微處理器,以

1. 無控制模式

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

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

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

值,而下去轉動而已。

2. 速度控制模式

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

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

3. 同步模式

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

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

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

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

4. 轉速表模式

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

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

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

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

16

Page 17: 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位元微處理器,以

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

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

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

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

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

(圖 4)觸碰感應器

17

Page 18: 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位元微處理器,以

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

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

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

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

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

(圖 5)顏色感應器

18

Page 19: 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位元微處理器,以

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

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

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

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

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

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

以上就會開始不準了。

(圖 6)超音波感應器

19

Page 20: 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位元微處理器,以

1.8 NXT各元件基本程式碼

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

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

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

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

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

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

20

Page 21: 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位元微處理器,以

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

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

21

Page 22: 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位元微處理器,以

第二章 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

Page 23: 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位元微處理器,以

2.1 BRICX CC 軟體使用介紹

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

體使用:

第一步驟:

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

(圖 11)BRICX CC捷徑

23

Page 24: 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位元微處理器,以

第二步驟:

將 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

Page 25: 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位元微處理器,以

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

(圖 14)搜尋主機

↑安裝NXT drive驅

動要選第二個選項

25

Page 26: 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位元微處理器,以

第三步驟:

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

(圖 15)功能介紹

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

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

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

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

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

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

快速鍵為 F7。

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

26

Page 27: 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位元微處理器,以

第四步驟:

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

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

(圖 16)偏好設定

(圖 17)功能介面

27

Page 28: 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位元微處理器,以

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

會是「.nxc」。

第五步驟:

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

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

(圖 18)顏色標籤

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

行有誤。如(圖 18)

28

Page 29: 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位元微處理器,以

第六步驟:

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

(圖 19)Code completion

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

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

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

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

(圖 20)

29

Page 30: 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位元微處理器,以

第三章 場地介紹

場地介紹:

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

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

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

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

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

(圖 21)場地空拍

30

Page 31: 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位元微處理器,以

(圖 22)場地正面

(圖 23)場地設計圖

31

Page 32: 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位元微處理器,以

3.1 機器人須完成目標

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

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

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

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

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

行卸載貨。

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

作。

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

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

發出重低音警告聲。

32

Page 33: 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位元微處理器,以

3.2 機器人-堆高機拆解圖

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

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

33

Page 34: 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位元微處理器,以

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

(圖 27)後輪與底盤

34

Page 35: 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位元微處理器,以

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

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

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

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

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

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

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

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

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

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

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

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

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

位置。

35

Page 36: 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位元微處理器,以

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

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

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

(圖 30)控制端實體照

36

Page 37: 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位元微處理器,以

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

(圖 31)

1. 進行藍芽連線。

2. 程式開始執行。

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

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

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

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

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

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

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

Page 38: 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位元微處理器,以

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

進。

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

將貨物放下。

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

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

執行下個動作。

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

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

10.結束

38

Page 39: 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位元微處理器,以

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

(圖 32)控制端程式碼

←按鈕壓

下或放開

39

Page 40: 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位元微處理器,以

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

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

←依照距

離規定而

讓燈改變

指定顏色

←要用在超音波感

應器的巨集

40

Page 41: 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位元微處理器,以

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

←車子後

面之觸碰

感應器任

←無障

礙物的

正常下

41

Page 42: 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位元微處理器,以

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

←第一次遇

到障礙物的

情況下

42

Page 43: 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位元微處理器,以

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

←Count 的

值為單數

的情況

下,跟第一

次所偵測

到動作是

一樣的

43

Page 44: 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位元微處理器,以

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

←讓在車子的主機顯

示值在螢幕上面

←表示遙控端的

按鈕已放開

44

Page 45: 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位元微處理器,以

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

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

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

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

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

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

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

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

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

45

Page 46: 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位元微處理器,以

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

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

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

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

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

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

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

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

高。

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

46

Page 47: 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位元微處理器,以

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

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

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

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

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

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

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

(圖 38)NXT小 LED

47

Page 48: 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位元微處理器,以

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

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

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

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

值。

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

作。

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

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

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

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

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

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

的布林函數。

48

Page 49: 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位元微處理器,以

(圖 41)控制端程式碼

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

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

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

因此打消這個念頭。

接收來自機器端傳的布林

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

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

49

Page 50: 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位元微處理器,以

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

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

度。

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

(圖 42) 360度後輪底盤

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

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

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

貨物掉落的機率。

(圖 43)叉架

50

Page 51: 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位元微處理器,以

第四章 成果展示

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

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

51

Page 52: 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位元微處理器,以

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

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

52

Page 53: 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位元微處理器,以

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

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

53

Page 54: 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位元微處理器,以

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

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

54

Page 55: 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位元微處理器,以

第五章 結論

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

55

Page 56: 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位元微處理器,以

第六章 參考文獻

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

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

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

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

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

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

年 06月 18日出版

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

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

56