Top Banner
修平科技大學 資訊網路技術系 實務專題報告 智慧型樂高機器人 指導教授:陳松雄 老師 組長: BN98008 郭冠廷 組員: BN98015 梁迺翔 103 2 7
79

修平科技大學 - ir.hust.edu.twir.hust.edu.tw/bitstream/310993100/4329/1/智慧型樂高機器人.pdf · 修平科技大學. 資訊網路技術系. 實務專題報告. 智慧型樂高機器人.

May 30, 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
  • 修平科技大學

    資訊網路技術系

    實務專題報告

    智慧型樂高機器人

    指導教授:陳松雄 老師

    組長: BN98008 郭冠廷

    組員: BN98015 梁迺翔

    中 華 民 國 103 年 2 月 7 日

  • 摘 要

    在這次專題中我們利用 LEGO MINDSTORMS NXT去設計製作出智慧

    型樂高機器人並實行階段性的目標,再用內建的圖形介面設計

    (NXT-G)讓機器人擁有判斷能力來執行動作。我們可以依我們需要的

    指令與不斷修改機身以及程式,得到我們想像中機器人所能做的動作

    及指令。

    我們依據場地與規則,來實現機器人的設計跟程式方面的呈現

    ,在遙控智慧型機器人車體的設計,以及訊號的傳導,感測器的運

    用,我們都面臨很多的考驗,而在專題製作的過程中,即便遇到許

    多困難的難題,我們也要將樂高機器人發揮到最好的呈現。

  • 目錄

    第一章 緒論 .................................................... 8

    1-1 研究動機與目的 .......................................... 8

    第二章 樂高機器人 .............................................. 9

    2-1 NXT軟硬體介紹介紹 ....................................... 9

    2-1-1 主機 ............................................... 10

    2-1-2 接觸感測器 .......................................... 11

    2-1-3 聲音感測器 .......................................... 11

    2-1-4 光感測器 ............................................ 12

    2-1-5 超音波感測器 ........................................ 12

    2-1-6 伺服電動機 .......................................... 13

    2-2 軟體介紹 ............................................... 15

    第三章 藍芽傳輸 ............................................... 20

    3-1 藍芽 ................................................... 20

    3-2 藍芽協定 ............................................... 20

    3-3 藍芽緣起及目的 ......................................... 21

    3-4 NXT藍芽傳輸原理 ........................................ 22

    3-5 NXT藍芽連線介紹 ........................................ 24

    3-5-1 NXT藍芽連線的主要功能: ............................. 24

    3-5-2 藍芽相關設定 ........................................ 25

    1

  • 3-5-3 建立 NXT與 NXT之間的藍芽連接 ........................ 26

    第四章 開發與設計 ............................................. 27

    4-1 藍芽控制 ............................................... 27

    4-1-1 藍芽遙控傳送指令 .................................... 27

    4-1-2 NXT端程式 .......................................... 28

    4-1-3 宣告變數、等待連線 .................................. 29

    4-1-4 命令處理 ............................................ 30

    4-1-5 完成程式如 .......................................... 31

    4-1-6 NXT藍芽命令接收解說 ................................ 32

    4-1-7 手機端程式 .......................................... 38

    4-1-8 圖形化介面 .......................................... 38

    4-1-9 程式架構 ............................................ 39

    4-1-10 程式撰寫 ........................................ 40

    4-1-11 NXT藍芽接收程式 ................................. 46

    4-1-12 實作圖片 ........................................ 58

    4-2 光感路線偵測 ........................................... 59

    4-2-1 介紹 ............................................... 59

    4-2-2 光感組裝簡易機器人 .................................. 59

    4-2-3 光感路線偵測程式 .................................... 64

    4-2-4 光感路線偵測實作圖 .................................. 67

    2

  • 4-3 超音波路障偵測 ......................................... 70

    4-3-1 超音波路障偵測簡易組裝 .............................. 70

    4-3-2 超音波路障偵測程式 .................................. 72

    第五章 結論 ................................................... 75

    參考資料 ......................................................... 76

    3

  • 圖表目錄

    (圖一 NXT 具有四個輸入端, 與三個輸出端).........................9

    (圖二 NXT主機外觀)..............................................10

    (表格一 主機規格) ...............................................10

    (圖三 觸碰式感應器)......................... ....................11

    (圖四 聲音感應器)......................... ......................11

    (圖五 光感應器器)......................... ......................12

    (圖六 超音波外觀)......................... ......................12

    (圖七 伺服電動機)......................... ......................14

    (圖八 NXT軟體介面)......................... .....................15

    (圖九 軟體控制版面) ......................... ...................19

    (表格二 藍芽規格)......................... ......................21

    (圖十 藍芽傳輸原理).............................................22

    (表格三 藍芽顯示圖像)...........................................24

    (表格四 藍芽相關設定)...........................................25

    (表格五 建立 NXT與 NXT之間的藍芽連接)............................26

    (表格六 命令碼與動作對應).......................................27

    (圖十一 傳送指令示意圖).........................................28

    (圖十二 NXT端程式流程圖)........................................28

    4

  • (圖十三 NXT程式碼)........................................... ...29

    (圖十四 NXT程式碼)........................................... ...29

    (圖十五 NXT程式碼)........................................... ...30

    (圖十六 NXT程式碼)........................................... ...30

    (圖十七 NXT程式碼)........................................... ...31

    (表格七 NXT通訊封包)........................................... .33

    (表格八 指令的封包格式).........................................33

    (表格九 命令型態)........................................... ...34

    (表格十 命令說明)........................................... ...35

    (表格十一 命令對照表)........................................... 36

    (圖十八 手機控制圖形介面).......................................38

    (圖十九 程式執行流程圖).........................................39

    (表格十二 元件對應類別)..........................................40

    (圖二十 斷線按鈕設定圖).........................................42

    (圖二一 建立藍芽裝置清單).......................................43

    (圖二二 設定動作指令圖).........................................44

    (圖二三 處理藍芽通訊)........................................... 45

    (圖二四 拉出迴圈)........................................... ...46

    (圖二五 拉出藍芽)........................................... ...47

    (圖二六 拉出判斷式)........................................... .48

    5

  • (圖二七 藍芽連接判斷式).........................................49

    (圖二八 再拉一格判斷式到上一個判斷式裡).........................50

    (圖二九 設定判斷式)........................................... .51

    (圖三十 拉出元件並設定).........................................52

    (圖三一 拉出元件並設定).........................................53

    (圖三二 拉出元件並設定).........................................54

    (圖三三 拉出元件並設定).........................................54

    (圖三四 拉出元件並設定).........................................55

    (圖三五 拉出元件並設定).........................................56

    (圖三六 拉出元件並設定).........................................57

    (圖三七 遙控流程圖)........................................... ..58

    (圖三八 伺服電動機組裝圖).......................................59

    (圖三九 輪胎組裝圖)........................................... ..60

    (圖四十 兩邊伺服電動機完成圖)...................................60

    (圖四一 增加固定器)........................................... ..61

    (圖四二 後輪固定器)........................................... ..61

    (圖四三 後輪組裝完成圖).........................................62

    (圖四四 NXT組裝完成圖).........................................62

    (圖四五 光感組裝)........................................... ...63

    (圖四六 光感組裝完成圖).........................................63

    6

  • (圖四七 無窮迴圈)...............................................64

    (圖四八 Switch).................................................64

    (圖四九 光源設定圖).............................................65

    (圖五十 光感應程式完成圖).......................................66

    (圖五一 光感場地)...............................................67

    (圖五二 程式流程圖).............................................68

    (圖五三 行進示意圖).............................................69

    (圖五四 NXT組裝完成機器人)......................................70

    (圖五五 超音波組裝).............................................71

    (圖五六 超音波組裝).............................................71

    (圖五七 超音波組裝完成圖).......................................71

    (圖五八 超音波程式完成圖).......................................72

    (圖五九 超音波場地).............................................73

    (圖六十 程式流程圖).............................................74

    7

  • 第一章 緒論

    1-1 研究動機與目的

    比爾蓋茲預言「機器人學將成為下一個熱門領域」,曾經以為過了孩童時

    期就不會再碰到樂高機器人了,沒想到長大後還有機會可以接觸,甚至成為樂

    高研究者的一份子。

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

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

    腦程式語言教學,為學生聰明才智的發揮提供了一個絕佳展示的機會。因為機

    器人技術對現代工業設計、機械、電子、感測器、電腦軟硬體、人工智慧等諸

    多領域都有所涉及。

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

    程中可以運用各種程式的撰寫方式去控制機器人完成每一項的機器人任務。因

    此在學習撰寫程式和實際操作的過程中,會有效地提高學生的思考邏輯和判斷

    能力。

    8

  • 第二章 樂高機器人

    2-1 NXT 軟硬體介紹介紹

    新一代的機器人,NXT。主要特色在於新的智慧方塊 intel l igentblock,

    可以透過 USB 2.0 與藍芽技術作為溝通的工具。透過藍芽技術,NXT 除了可以

    用電腦程式控制外, 還可以透過 PDA、手機或者具有藍芽傳輸功能的電腦來做

    控制。增加其應用的廣度。另外 NXT 的馬達已改進成為伺服馬達, 可以直接控

    制轉動角度, 而不需像以往需要透過角度感應器來做控制。NXT 具有四個輸入

    端, 與三個輸出端。 輸入端包含: 超音波偵測器、聲音偵測器、觸碰開關、

    光感測器。輸出端則可控制三部伺服馬達。

    (圖一 NXT 具有四個輸入端, 與三個輸出端)

    9

  • 2-1-1 主機

    (圖二 NXT主機外觀)

    (表格一 主機規格)

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

    記憶體:256Kbytes FLASH ; 64Kbytes RAM

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

    記憶體:24Kbytes FLASH; 512 Byte RAM

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

    輸入端: 4 個(可連接碰觸聲音光源與超音波感測器)

    輸出端:3 個馬達

    顯示設備:100X64 向數液晶顯示面板

    10

  • 2-1-2 接觸感測器

    當觸碰感測器被壓下時回傳值為 1, 未按下的時候回傳為 0,此類型的感

    測器可作為機械模型的啟動/停止開關,在機械手臂前端可利用觸碰感應偵測是

    否碰到物體,如果有則執行動作,如果無則繼續指令。舉例來說:一個簡單

    的開關(想像成家裡的門鈴按鈕),沒有碰到物體時是『關閉』的狀態,

    碰到東西就會使得檢測電路變成『打開』的狀態。

    (圖三 觸碰式感應器)

    2-1-3 聲音感測器

    聲音感測器可以偵測周遭的聲音大小,其量測單位可以為分貝(DB)或 DBA

    (是在一個電子電路內,求得一聲頻訊號電平的量測單位), 透過聲音感測器

    你可以利用聲音大小的變化來改變機器人的行為。NXT 主機以百分比方式來

    表示聲音的大小。

    (圖四 聲音感應器)

    11

  • 2-1-4 光感測器

    此種感應器可偵測物體反射物的亮度,反射數值為 0~100,數值 0 為最

    暗、100 為最亮,顏色較暗的物體,光感應器回傳值較低;顏色較亮的

    物體,光感應器回傳值較高。在國際奧林匹克比賽中常有軌跡賽, 就可以利

    用光源感測器使的機器人可以沿著軌跡行走。

    (圖五 光感應器器)

    2-1-5 超音波感測器

    超音波感應器是一種數位感應器,它具有內建的晶片可以分析並送出資

    料,利用這一顆感應器,我們可以讓機器人「看到」物體並在撞到之前躲開。

    我們可以把超音波感應器當作一個聲納,它會發出一連串的超音波,當物

    體反射回來的時間,再轉換成距離回傳給 NXT,預設的距離單位是公分。可以偵

    測與物體的距離其有效的範圍大約為 2.5 公尺。

    (圖六 超音波外觀)

    12

  • 2-1-6 伺服電動機

    這個裝置可以說是機器人的雙腳, 裝上馬達後樂高機器人就可以自由移動

    或執行某個動作,因為 NXT 伺服馬達內建角度感應器, 所以我們可以更精確的

    控制機器人的行為, 例如讓 A 馬達順時針旋轉 30 度或是逆時針旋轉 5 圈。

    而指令可分為 4大類:

    1.無控制模式、2.速度控制模式、3.同步模式、4.轉速表模式。

    1.無控制模式

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

    使 NXT不會理會馬達轉動的角度跟我們起初所設定的目標角度是否有差異。它

    只會照著給予多少數值,而下去轉動而已。

    2. 速度控制模式

    使用速度模式時,即使因摩擦力或者人為使馬達轉速變慢,NXT將會加大對

    馬達的電力輸出,來維持當初所設定的速度。

    13

  • 3. 同步模式

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

    度有一點差異,就會依據雙方的狀況就調整,一個快另一個就快,而一個慢另

    一個也就慢,不論直走、左右轉或者是原地旋轉都可以保持同步。

    4. 轉速表模式

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

    讓機體不會因為摩擦力或者外力的影響,而沒有轉到當初所設定的角度目標。

    簡單來說,就是你要它轉幾度,他就會轉到幾度,不會因外力而少轉或是多轉。

    (圖7 伺服電動機)

    14

  • 2-2 軟體介紹

    (圖八 NXT軟體介面)

    模組面板:模組面板分為 基本模組面板、自行定義模組面板、完整模組面板

    三部分。

    15

  • 而基本面板內又包含 7個功能模組,分別是:

    輸出功能模組、紀錄功能模組、聲音功能模組、顯示功能模組、等待功能模組

    、迴圈功能模組、參數條件分支功能模組。

    >輸出功能模組:可以設置 A、B、C 三個輸出埠連接方式,馬達輸

    出方向、電力強度和持續時間等。

    >紀錄功能模組:記錄 A、B、C 埠輸出動作,可以設定記錄的時間

    ,經由播放的功能,將剛才 NXT 執行的動作複製出來。

    >聲音功能模組:透過程式下載聲音檔案到 NXT,並保存在 Sound

    Files檔中,也可以自己編寫聲音檔

    >顯示功能模組:可以顯示圖案和文字,也可以將馬達和各感應器的

    資料顯示在 NXT螢幕上。

    >等待功能模組 :分別有時間和感應器等待,包括觸控感應器、分

    貝感應器、光感應器和超音波感應器等。

    >迴圈功能模組:包括無限迴圈、時間迴圈、感應器迴圈、次數迴圈

    和邏輯判斷迴圈。

    >參數條件分支功能模組:分支條件感應器和參數值的判斷,感應器

    分支包括觸控、分貝、光感、超音波、溫度、角度、計時器、藍

    芽通訊和 NXT 按鈕,參數值分支包括數位判斷、邏輯判

    斷和文字判斷。

    16

  • 自行定義模組面板:分別為自行定義的模組和網路上下載的模組,而透過自行

    定義模組,我們可以設定自己的功能模組,比如說修改功能模組的參數或將幾

    個不同的功能模組做成一個新的模組,變成一個新的功能,模組將自動保存在

    LEGO Creations檔夾中,方便我們以後使用。

    >能自己設計模組,根據需求可以設計成不同的圖示並進行命名。

    >可以從網路上下載模組。

    17

  • 完整模組面板:包括所有編程模組,能完成 VB、C 語言所有的功能。面板包括

    六個功能模組,每個功能模組裡包含了子模組,從上到下分別為基本功能模組

    、輸出功能模組、感應器設定模組、結構模組、資料運算模組、高級功能模組

    >基本功能模組:基本面板裡所有的功能模組。

    >輸出功能模組:包括馬達、燈泡、藍芽、聲音和NXT顯示器輸出模

    組。

    >可以設定 NXT 感應器、RCX 感應器、計時感應器、NXT 按鈕和接

    收資訊(透過藍芽)模組。

    >包括等待、迴圈、參數條件分支功能模組和停止輸出功能模組。

    >可以定義變數,進行資料運算,包括加、減、乘、除、判斷大於

    小於等於、參數範圍和邏輯判斷。

    >包括文字模組、數位轉換文字模組、保持啟動模組、檔案儲存模組、

    校準模組、重置馬達模組。

    18

  • 控制面板:

    (圖九 軟體控制版面)

    (1) (圖九 數字 1)點擊後會彈出 NXT 視窗,能查看 NXT 連接狀態、可用記憶

    體空間、電池電量和版本等資訊。

    (2) (圖九 數字 2)此按鈕為下載程式到 NXT,需人為操作才能執行程式。

    (3) (圖九 數字 3)此按鈕下載程式到 NXT,當下載成功後 NXT 會自動執行剛

    下載的程式。

    (4) (圖九 數字 4)此按鈕下載被選中的程式到 NXT 並運行,可以單獨下載程

    式中的副程式進行調整。

    (5) (圖九 數字 5)此按鈕為停止,中斷正在下載的程式。

    19

  • 第三章 藍芽傳輸

    3-1 藍芽

    藍芽是一種無線傳輸的技術, 可以讓桌上及筆記型電腦、行動電話、PDA、

    印表機、掃瞄器、數位相機, 甚至是家電用品之間進行短距離的無線連結,原

    理就是在 ISM 頻帶的頻率中傳輸語音及數據, 每一種具備藍芽技術的裝置皆

    擁有標準的位址, 可以讓您使用低功率的無線電進行一對一或一對七的連結,

    傳輸範圍最遠可達 10 公尺(未來即將達到 1 00 公尺), 藍芽不僅具有每秒 1MB

    的高傳輸率,同時也可以使用 pi n 碼進行加密編碼,由於具備每秒 16 00 hop

    的 hop pin g 率, 因此很難被電磁波攔截及阻斷。

    3-2 藍芽協定

    無線通訊技術已漸漸受到重視, 其中藍芽( Bluetooth) 無線技術以提

    供低價位、低功率消耗, 並可同時提供語音資料傳輸而吸引眾多目光。

    20

  • (表格二 藍芽規格)

    Speed(速率) 11MB

    Physical Layer(調變方式)

    FHSS ( 跳頻展頻, Frequency Hop

    Spread Spectrum)

    使用範圍 個人小區域網路

    應用範圍 NoteBook、PDA、行動電話、印表機

    傳輸距離 30feet(約近 10M)

    傳輸方向 採放射狀無方向性

    3-3 藍芽緣起及目的

    藍芽技術最早由 Er icsson 及 Nokia 為聯結其行動電話與其他可攜式裝置

    而發展的技術。為了使藍芽成為新一代的短距離無線通訊標準, Ericsson、

    Nokia、Intel、Toshiba 及 IBM 在 1998 年 5 月共同成立 Bluetooth SIG 來負

    責相關規格的制定及推廣。到 2001年 7 月為止, 全球共有 2491 個會員。藍

    芽技術選擇在無需額外授權的 2.4GHz ISM 頻帶上作無線傳輸, 除了要達到取

    代有線的目的外, 尚可提供無線上網, 不同裝置間的資料同步和資料交換, 以

    及連結不同的電子設備等應用。

    21

  • 3-4 NXT 藍芽傳輸原理

    (圖十 藍芽傳輸原理)

    NXT 的藍芽傳輸方式採用主從式架構。由一個特定的 NXT(主)控制其

    他 NXT(從),因此在特定 NXT 上開啟藍芽目錄並搜尋其他的 NXT(注意:此

    時主、從的相對關係就已決定),當搜尋到其他的 NXT 後,須為加入的第

    二個 NXT 設定連結序號(1、2、3)。當第一次進行連結時,二個 NXT 上會

    顯示請輸入認證碼的畫面,此時須輸入同一組自訂密碼。NXT(主)的連結

    目錄中會顯示另一個 NXT(從)的名稱及連結序號。在另一 NXT(從)上,則

    會顯示 NXT(主)的名稱及連結序號,其連結序號必為 0。當以上二個 NXT

    皆顯示正確訊息後,表示 NXT(主)已與另一 NXT(從)連結完成。若 NXT(主)

    與多個 NXT 進行連結(最多為 3 個),即重覆上述程序即可。

    22

  • 藍芽網路架構:

    1. NXT 藍芽網路並非為廣播模式,當你想傳送訊息給多台 NXT 時,一次

    只能針對單一 NXT 進行傳送。

    2. 若是 Salve A 要傳送給 Salve B,那就得先上傳到 Master 上再下傳

    到 Salve B,Salve 對 Salve 是不能互相通訊的。

    3. 單台 NXT 不能同時擔任 Master & Salve,因為 Salve 唯一的通訊對

    象只有 Master。

    23

  • 3-5 NXT 藍芽連線介紹

    3-5-1 NXT藍芽連線的主要功能:

    1. 可與有藍芽功能的設備進行通訊,如:手機、電腦等。

    2. NXT之間可以使用藍芽互相傳輸程式溝通。

    3. 可以搜索其他藍芽設備。

    4. 能記住前一個連接的設備並快速連接。

    5. 可以將 NXT 隱藏。

    6. 可以關閉藍芽以節省電源。

    NXT藍芽顯示圖像(表格三):可告知目前藍芽連接的狀況,若沒有藍芽圖像則

    代表藍芽未開啟

    (表格三 藍芽顯示圖像)

    NXT藍芽已打開,但

    對其他藍芽設備而言

    是隱藏情況。

    NXT藍芽已打開,對

    其他藍芽設備而言是

    顯示情況。

    NXT藍芽已打開,並

    且以連接到其他藍芽

    設備。

    24

  • 3-5-2 藍芽相關設定

    (表格四 藍芽相關設定)

    隱藏選擇:我們可以

    將 NXT設定成對其他

    藍芽設備為顯示或隱

    藏。

    密碼設定:第一次連

    接藍芽設備到 NXT 都

    需要輸入默認密碼

    1234 或自己設定的

    密碼,而其他的藍芽

    必須知道密碼才能連

    接。

    藍芽設定:藍芽關閉

    時 NXT就不能發送和

    接收資料,只能透過

    USB下載程式。但為

    了節省電量,可以在

    不使用藍芽情況下進

    行關閉。

    25

  • 3-5-3 建立 NXT與 NXT之間的藍芽連接

    (表格五 建立 NXT與 NXT之間的藍芽連接)

    螢幕上選擇藍芽子功

    能表。

    選擇 Search功能表

    後,NXT會自動搜尋其

    他藍芽設備,而搜尋範

    圍為 0-30米內的藍芽

    設備(也許範圍會超過

    30米)。

    幾秒鐘後,NXT會把搜

    索到的藍芽設備顯示

    在螢幕上

    26

  • 第四章 開發與設計

    4-1 藍芽控制

    4-1-1 藍芽遙控傳送指令

    我們先整理出被遙控的 NXT機器人所有的動作,包含「前進」、「後退」、「左轉」、

    「右轉」以及「速度」的控制,參考(表格六)。

    (表格六 命令碼與動作對應)

    編號 變數 狀態

    0 STOP 停止

    1 FWD 前進

    2 BACK 後退

    3 LEFT 左轉

    4 RIGHT 右轉

    我們用一個整數型別的變數來代表這些命令,電腦再將這些變數傳給 NXT,NXT

    則根據變數值來決定它所要執行的動作,如(圖十一)。例如:電腦希望 NXT

    前進,則傳送命令碼「1」給 NXT,NXT發現接收到的數字是 1,便開始前進。

    27

  • (圖十一 傳送指令示意圖)

    4-1-2 NXT端程式

    NXT機器人在這次專題中,必須不斷接收、執行命令,NXT的程式流程圖如

    (圖十二)

    (圖十二 NXT端程式流程圖)

    28

  • 4-1-3 宣告變數、等待連線

    PART1:首先定一各個命令碼,同時宣告裝置命令來接收命令碼。如(圖十三)

    (圖十三 NXT程式碼)

    PART2:接著在第 14行等待藍芽連線,接收到連線要求後在第 15行建立輸入串

    流。如(圖十四)

    (圖十四 NXT程式碼)

    29

  • 4-1-4 命令處理

    完成連線後,NXT用無窮迴圈不斷接收手機命令。一開始在第 23行接收手機的

    命令,接下來從 24到 48行判斷命令的類型並執行應有的動作。如(圖三十)

    (圖十五)

    (圖十五 NXT程式碼)

    (圖十六 NXT程式碼)

    30

  • 4-1-5 完成程式如

    (圖十七 NXT程式碼)

    31

  • 4-1-6 NXT藍芽命令接收解說

    1.而當藍芽通訊時,NXT使用的是 COMM Module功能,所以在撰寫 NXT遠端控制

    的時候,必須符合 NXT的封包交換規範。

    LEGO對於 NXT通訊建立有 NXT Communication protocol來定義它的功能,

    適用於有線(USB)與無線(Bluetooth)兩種方式,而主要的用途類型有:

    (1)System Command:用於上傳/下載檔案以及刪除內存於 NXT Flash的檔案。

    (2)Direct Command:直接執行與控制 NXT Input/Output module功能,以及

    透過信箱傳送與接收信息(Message command)。對於上述這些通訊類型,在

    protocol中制訂有各個功能的封包格式,使用時,需要遵循定義的規範才能正

    確執行。

    2.NXT Message Command訊息交換指令

    在 NXT Communication Protocol的 Direct command中,Message Command是定

    義交換字串資料的指令,含:MessageWrite與 MessageRead兩個指令,都是以

    NXT信箱作為傳送與接收訊息的標的。

    32

  • 下列表格是 NXT樂高機器人的通訊封包,封包長度為 2位元

    (表格七 NXT通訊封包)

    封包長度 資料欄位

    Length,LSB Length,MSB

    Command

    Type

    Command Byte5 Byte6 Etc

    CMD0 CMD1 COM2 CMD3

    下列表格是 MessageWrite指令的封包格式

    (表格八 指令的封包格式)

    Byte 0

    0x80 (為 Direct command,且不須回

    覆訊息)

    Byte 1 0x09 (指令碼)

    Byte 2 信箱代號(0 – 9)

    Byte 3 傳送的字串長度,含結尾 null code

    Byte 4 – N

    傳送的字串資料,結尾須加上 null

    code

    33

  • 命令型態(Command Type):長度 1位元,Bit7代表 NXT是否須要回應命令

    (表格九 命令型態)

    內容 命令型態 是否需要回應

    0x00 直接命令 須要回應

    0x01 系統命令 須要回應

    0x02 回應命令 NXT 回應

    0x80 直接命令 不須回應

    0x81 系統命令 不須回應

    34

  • NXT命令說明:

    (表格十 命令說明)

    0x0C 0x00

    命令長度,此命令是從 12 bytes+2

    length bytes,在十六進制中 12為

    0x0C或 0x000X0C

    0x80

    準備直接命令,NXT控制命令是直接命

    令的一部分,每個命令都可以要求從

    NXT的回應消息

    0x04

    設置輸出狀態的命令,此命令控制

    NXT

    0x02 指電動機其連接到 C端口

    0X64

    功率設定的百分比,0X64%就是 100%

    的十六進制

    0x07 Output mode byte.輸出模式位元

    0x00 Regulation mode byte.調節模式位元

    0x20 馬達運轉狀態,0x20為運轉

    0x00 0x00 0x00 0x00 為測試運轉的極限,0x00為持續運轉

    35

  • NXT命令對照表

    (表格十一 命令對照表)

    Cmd 0x01

    Output 0x02

    Input 0x03

    Button 0x04

    Comm 0x05

    IOCtrl 0x06

    Led 0x07

    Sound 0x08

    Loader 0x09

    Displan 0x0A

    Low Speed 0x0B

    UI 0x0C

    success 0x00

    No more handles 0x81

    No space 0x82

    No more files 0x83

    36

  • End of file expected 0x84

    End of file 0x85

    Not a linear file 0x86

    File not found 0x87

    Handle all ready closed 0x88

    No write buffers 0x89

    Undefined error 0x8A

    File is busy 0x8B

    No write buffers 0x8C

    Append not possible 0x8D

    File is full 0x8E

    File exists 0x8F

    Module not found 0x90

    Out of boundary 0x91

    Illegal file name 0x92

    Illegal handle 0x93

    37

  • 4-1-7 手機端程式

    我們使用電腦去設計手機遙控 NXT機器人藍芽程式,程式裡面包含了視窗介面、

    事件、物件概念及 NXT的連線設定。

    4-1-8 圖形化介面

    圖形化介面得特色就是事件導向,把要執行的命令當作不同的事件來執行個種

    動作,所以必須針對不同的事件來做出不同的處理方式。如,(圖十八)

    (圖十八 手機控制圖形介面)

    38

  • 4-1-9 程式架構

    程式執行流程圖如,(圖十九) ,當開始連線到 NXT,判斷是否連接成功,若成

    功則顯示視窗,若失敗則顯示錯誤視窗並關閉。

    (圖十九 程式執行流程圖)

    39

  • 4-1-10 程式撰寫

    (表格十二 元件對應類別)

    元件類別 父類別 名稱 元件用途

    LisPicker Basic NXTList

    Text欄位請輸入

    「連線」

    TableArrangement

    Screen

    Arrangement

    TableArrangement1 表格排列個按鈕

    Button Basic ButtonFoward

    位於

    TableArrangement

    之下 Text欄位請

    輸入「前進」

    Button Basic ButtonLeft

    位於

    TableArrangement

    之下 Text欄位請

    輸入「左轉」

    40

  • Button Basic ButtonBackward

    位於

    TableArrangement

    之下 Text欄位請

    輸入「後退」

    Button Basic ButtonRight

    位於

    TableArrangement

    之下 Text欄位請

    輸入「右轉」

    Button Basic ButtonStop

    位於

    TableArrangement

    之下 Text欄位請

    輸入「停止」

    Button Basic ButtonBeep

    位於

    TableArrangement

    之下 Text欄位請

    輸入「嗶嗶」

    Button Basic ButtonDisconnect

    Text欄位請輸入

    「斷線」

    41

  • *BluctoothClient Other stuff BluctoothClient 藍芽通訊

    *NxtDrive

    LEGO(R)

    MINDSTORMS(R)

    NxtDriveB NXT馬達

    *NxtDrive

    LEGO(R)

    MINDSTORMS(R)

    NxtDriveC NXT馬達

    *NxtDriveCommands

    LEGO(R)

    MINDSTORMS(R)

    NxtDriveCommands NXT主機端功能

    *表示非可視內容

    PART1:一開始先將斷線按鈕設為不可按,這是避免一開始誤按而造成程式的錯

    誤,如,(圖二十)

    (圖二十 斷線按鈕設定圖)

    42

  • PART2:建立藍芽裝置清單,並在成功連線後將相關得按鈕設為可按

    如,(圖二一)

    (圖二一 建立藍芽裝置清單)

    43

  • PART3:接著設定前進、後退、左轉、右轉的動作,在以下 when ButtonFoward.Click

    中 NxtDrive後面的數字代表馬達運轉的能量,如,(圖)編號 1,NxtDriveB為

    100、NxtDriveC為 100代表 B、C兩個馬達正在全速運轉。

    如,(圖二二)

    (圖二二 設定動作指令圖)

    44

  • PART4:最後則是按下斷線按鈕後處理藍芽通訊,並回復各個元件到連線前的狀

    態,如,(圖二三)

    (圖二三 處理藍芽通訊)

    45

  • 4-1-11 NXT藍芽接收程式

    假如 NXT本身無藍芽連接軟體,以下是如何在 NXT寫出一個藍芽接收程式

    1. 先拉出一個迴圈,如(圖二四)

    (圖二四 拉出迴圈)

    46

  • 2. 拉出藍芽控制加入迴圈並展開,如(圖二五)

    (圖二五 拉出藍芽)

    47

  • 3. 在拉出一個判斷式,連在藍芽控制的後面 設定為「對」,如(圖二六)

    (圖二六 拉出判斷式)

    48

  • 4. 從藍芽控制拉一條連線開關到判斷式,如(圖二七)

    (圖二七 藍芽連接判斷式)

    49

  • 5. 再拉一個判斷式放入原本的判斷式裡面,如(圖二八)

    (圖二八 再拉一格判斷式到上一個判斷式裡)

    50

  • 6. 再由藍芽控制連接設定為數字判斷,如(圖二九)

    (圖二九 設定判斷式)

    51

  • 7. 現在要設定接收指令,設定為左前轉,如(圖三十)

    (圖三十 拉出元件並設定)

    52

  • 8. 設定接收指令,設定為直走,如(圖三一)

    (圖三一 拉出元件並設定)

    53

  • 9. 設定接收指令,設定為右前方,如(圖三二)

    (圖三二 拉出元件並設定)

    10. 設定接收指令,設定為左轉,如(圖三三)

    (圖三三 拉出元件並設定)

    54

  • 11. 設定接收指令,設定接收指令,設定為全部停止,如(圖三四)

    (圖三四 拉出元件並設定)

    55

  • 12. 設定接收指令,設定為右轉,如(圖三五)

    (圖三五 拉出元件並設定)

    56

  • 13. 設定接收指令,設定為後退,完成圖,如(圖三六)

    (圖三六 拉出元件並設定)

    57

  • 4-1-12 實作圖片

    1.藍芽遙控流程圖

    (圖三七 遙控流程圖)

    開始實作時,要先啟動手機與 NXT的藍芽選項,並

    進行配對,密碼自訂(如:1234) ,配對成功後並可

    測試 NXT是否正常執行指令,並做修正

    58

  • 4-2 光感路線偵測

    4-2-1 介紹

    “巡線”特指讓機器人沿著場地中一條固定線路(通常是黑線)行進的任務。

    4-2-2 光感組裝簡易機器人

    1.左邊伺服電動機組裝圖,如(圖三八)

    (圖三八 伺服電動機組裝圖)

    59

  • 2.裝上輪胎,如(圖三九)

    (圖三九 輪胎組裝圖)

    3.左右邊伺服電動機完成圖,如(圖四十)

    (圖四十 兩邊伺服電動機完成圖)

    60

  • 4.兩個伺服電動機中間固定裝置,如(圖四一)

    (圖四一 增加固定器)

    5.增加車後小輪固定裝置,如(圖四二)

    (圖四二 後輪固定器)

    61

  • 6.裝上小輪,如(圖四三)

    (圖四三 後輪組裝完成圖)

    1. 完成圖,如(圖四四)

    (圖四四 NXT組裝完成圖)

    62

  • 8.光感安裝圖,先組裝一個固定器如(圖四五)

    (圖四五 光感組裝)

    9. 光感安裝圖,安裝在 NXT機器人上如(圖四六)

    (圖四六 光感組裝完成圖)

    63

  • 4-2-3 光感路線偵測程式

    1. 無窮迴圈[Loop]

    程式無限次重複執行,如(圖四七)

    (圖四七 無窮迴圈)

    2. 將[Switch]命令方塊,放進[Loop]中

    功能:在指定狀況下,執行上半部指令,或執行下半部指令,如(圖四八)

    (圖四八 Switch)

    64

  • 3. 設定感應器為「光源」:

    -Sensor: Light Sensor

    連接埠預設值為 3號孔:

    -Port: 3

    設定光感值:

    [View] (黑線+白底) ÷2

    Light: >50

    (圖四九 光源設定圖)

    65

  • 4. 程式完成圖

    開始執行後光源感應器自動感測光源亮度並判斷,如感光是白色執行上面指

    令,如感光是黑色執行下面指令,並無限循環,如(圖五十)

    (圖五十 光感應程式完成圖)

    66

  • 4-2-4 光感路線偵測實作圖

    1.規則說明

    (圖五一 光感場地)

    場地規格:起點,長 200cm,寬 100cm

    黑線寬度 3cm

    任務:光感機器人由起點出發,沿著黑線前進,到終點時迴轉,再回到原黑線

    上進行來回移動

    67

  • 2.程式流程圖

    (圖五二 程式流程圖)

    當按下開始按鈕,機器人便會啟動並開始偵測光度,當遇到黑色線伺服電

    動機B無窮轉動,伺服電動機C停止,當遇到白色線伺服電動機C無窮轉動,

    伺服電動機B停止,並無限循環。

    68

  • 執行示意圖,如(圖五三)

    (圖五三 行進示意圖)

    4.遇到問題及解決方案

    問題(一):光感無法執偵測黑線及白線

    解決(二):從新調整感應數值,並馬上測試微調,直到能正確執行指令

    問題(二):第一次測試時發現速度過快來,機器來不及偵測

    解決(二):將伺服電動機轉動速度調慢並測試

    69

  • 4-3 超音波路障偵測

    4-3-1 超音波路障偵測簡易組裝

    1. 依原先光感應的 NXT機器人,如(圖五四)

    (圖五四 NXT組裝完成機器人)

    70

  • 2. 安裝超音波固定架,如(圖五五) (圖五六)

    (圖五五 超音波組裝) (圖五六 超音波組裝)

    3. 安裝超音波於 NXT上,如(圖五七)

    (圖五七 超音波組裝完成圖)

    71

  • 4-3-2 超音波路障偵測程式

    (圖五八 超音波程式完成圖)

    如(圖五八) 整個程式是三個迴圈,整個事件一個迴圈,進入第一個選擇是一

    個,進入第三個選擇是一個

    72

  • 4-3-3 超音波路障偵測實作圖

    1. 規則說明

    (圖五九 超音波場地)

    場地規格:如(圖五九) ,場地,長 170CM,寬 150CM,路線寬度 25CM

    任務:超音波機器人由起點出發,沿著場地路線前進,並偵測障礙躲避,到終

    點無撞到障礙即可

    73

  • 2. 程式流程圖

    (圖六十 程式流程圖)

    按下開始紐,BC兩輪無限前進,直到超音波偵測到障礙,並做出第一個指令

    (右轉 90度) ,完成後持續偵測障礙,若無障礙即可直接前進,若有障礙立即

    執行下一個指令(左轉 90度兩次) ,完成後繼續前行

    74

  • 第五章 結論

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

    缺一不可。

    硬體部份,搭配組裝較容易的樂高積木,就能輕鬆地製作出我們想要的智慧

    型機器人。過程中,不但激發了我們的想像力及創造力,如何從無到有,從一

    推零件組裝成一台可以執行任務的機體,相對的也磨練了組員間的溝通、學習

    如何虛心接受他人的想法;程式方面,都是利用官方所提供的簡易軟體來製作,

    而我們從指導老師及圖書館那裡借到兩本介紹 NXT的書,很剛好的它是用官方

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

    研究過程中,以網路及手邊資料來進行組裝一些功能簡單的樂高機器人來增

    加熟練度,以及寫一些小小的程式測試,順便熟悉一下軟體的使用度。

    而後方便我們可以開始寫一些比較複雜的程式軟體來進行樂高機器測試。

    75

  • 參考資料

    LEGO.com Mindstorms

    http://www.lego.com/en-us/mindstorms/?domainredir=mindstorms.lego.co

    m

    寶寶啾與大寶寶日誌-Android 藍芽連結 NXT 控制馬達

    http://bigbabaychu.blogspot.tw/2012/06/android-nxt.html

    玩玩機器人,設計創意無窮-利用藍芽技術,讓電腦可控制 NXT主機

    http://cmackimo.blogspot.tw/2011/08/nxt.html

    探奇自然科學教室 http://tw.myblog.yahoo.com/touch_classroom/

    手機遙控 NXT樂高機器人

    http://tw.myblog.yahoo.com/touch_classroom/article?mid=5780

    樂高 Mindstorms NXT

    http://zh.wikipedia.org/wiki/%E6%A8%82%E9%AB%98Mindstorms_NXT

    76

    http://mindstorms.lego.com/http://bigbabaychu.blogspot.tw/http://cmackimo.blogspot.tw/

  • Appinventor 中文學習網

    http://www.appinventor.tw/

    77

    http://www.appinventor.tw/

    修平科技大學樂高專題報告緒論研究動機與目的

    樂高機器人NXT軟硬體介紹介紹主機接觸感測器聲音感測器光感測器超音波感測器伺服電動機

    軟體介紹

    藍芽傳輸藍芽藍芽協定藍芽緣起及目的NXT藍芽傳輸原理NXT藍芽連線介紹NXT藍芽連線的主要功能:藍芽相關設定建立NXT與NXT之間的藍芽連接

    開發與設計藍芽控制藍芽遙控傳送指令NXT端程式宣告變數、等待連線命令處理完成程式如NXT藍芽命令接收解說手機端程式圖形化介面程式架構程式撰寫NXT藍芽接收程式實作圖片

    光感路線偵測介紹光感組裝簡易機器人光感路線偵測程式光感路線偵測實作圖

    超音波路障偵測超音波路障偵測簡易組裝超音波路障偵測程式

    結論參考資料