壹、課程說明 - tn.edu.twicerc.tnssh.tn.edu.tw › download › tm › 102-16.pdf ·...

13
壹、課程說明 單元名稱 機器人實作課程教學-LEGO NXT-G 進階應用 單元摘要 LEGO NXT-G 圖控程式進階應用 設計者 郭銘哲 教師 (國立岡山高級中學) 學習目標 1.發展學生對於機器人學的興趣與認知。 2.引起學生學習機器人程式撰寫的興趣。 3.培養學生使用程式解決問題的能力。 課綱範圍 2.電腦解題程序 2-1問題分析 2-2解題方法設計 2-3測試與修正 3.演算法概論 3-1演算法特性 3-2演算法表示方法 3-2-1演算法基本元件 3-2-2演算法基本元件組合 3-3資料結構與演算法3-4 演算法與電腦解題 教學節數 6 先備知識 (如具備程式語言基礎知識且操作過 LEGO 機器人更佳) 評量方法 1.問題解決實作測驗 2.隨堂問答 分享方式 參考資源

Upload: others

Post on 06-Jul-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

  • 壹、課程說明

    單元名稱 機器人實作課程教學-LEGO NXT-G 進階應用

    單元摘要 LEGO NXT-G 圖控程式進階應用

    設計者 郭銘哲 教師 (國立岡山高級中學)

    學習目標

    1.發展學生對於機器人學的興趣與認知。

    2.引起學生學習機器人程式撰寫的興趣。

    3.培養學生使用程式解決問題的能力。

    課綱範圍

    2.電腦解題程序 2-1問題分析

    2-2解題方法設計

    2-3測試與修正

    3.演算法概論 3-1演算法特性

    3-2演算法表示方法

    3-2-1演算法基本元件

    3-2-2演算法基本元件組合

    3-3資料結構與演算法※

    3-4 演算法與電腦解題

    教學節數 6 節

    先備知識 無(如具備程式語言基礎知識且操作過 LEGO 機器人更佳)

    評量方法 1.問題解決實作測驗

    2.隨堂問答

    分享方式

    參考資源

  • 貳、教學活動計畫

    節次:1 教材(教具)資源:LEGO 9797 套件

    教學活動名稱:樂高任務機器人組裝 時間:50 分鐘

    教學活動說明: 由學生自行組裝樂高機器人

    在這一個階段我們建議讓學生組裝簡單的機器人構型即可,主要的機構必須讓所

    有的感測器皆可以安裝在機器人身上並且不會互相干擾與影響即可。可參考附圖的形

    式,如此一來即可減少組裝的時間,否則以ㄧ般的學生按照樂高組裝說明書的安裝過

    程至少需要用掉 1~2 節課的時間對於資訊課的有限時間來說太久了。

    組裝正面圖示

    組裝上方圖示

    另外建議,如果學校的 LEGO 機器人套件夠多的話,採取兩人ㄧ組的方式,對於學

    生的上課使用情形較佳。並且除非不同班級的機器人構型使用上有很大的不同,否則

  • 的話其實可以第一次組裝完成後即不需再更改(至少在做基本練習時是不需要的)。只

    須要求學生在每一節下課後將 NXT 的主機及感測器的重要組件(有充電與集中保管的

    需要)拆下即可,其餘部份可直接放置在 LEGO 整理箱中即可。如此可簡化不同班級在

    每一次上課前的準備工作,且又可確認重要組件的保管與妥善率。

    節次:2 教材(教具)資源:LEGO 9797 套件、NXT-G 軟體

    教學活動名稱:

    1、LEGO NXT-G 簡介(10 分鐘)。

    2、NXT-G 操作面板介紹與基本練習(40 分鐘)。

    時間:50 分鐘

    教學活動說明: 1.LEGO NXT-G 簡介

    LEGO MindStorms Education NXT2.0 這套軟體是由美商國家儀器公司 (National

    Instruments, NI)以該公司的 LabVIEW 圖形化程式平台為核心所發展出來的圖控軟體共包含

    NXT 2.0 Programming 與 NXT 2.0 Data Logging 兩個部分。被稱作 NXT-G(G 代表 Graphic)。

    NXT-G 的操作介面相當簡便惟缺少繁體中文版較為遺憾。

    NXT-G 的操作面板基本上分為一般命令面板、完整命令面板及自訂面板三種主要形式。

    三種面板形式分別呈現不同的內容選擇。在一般命令面板中包含有一些常用命令方塊;完整

    命令面板提供進階使用,包含有所有 NXT 內建的命令方塊;自訂命令面板提供使用者自行創

    建方塊。

  • 2. NXT-G 操作面板介紹與基本練習

    (1)程式編輯區

    在程式編輯區中提供了使用者編寫程式的空間,使用者可以將在命令面板中所選取的命

    令方塊依序排列與連接即可。在編輯區中可見到由 LEGO 積木圖形所構成的起始「Start」命

    令位置(如下圖左),進行程式編寫時須將第一個方塊放入「Start」命令位置,接著依程式執行

    順序將命令方塊依序放入(如下圖右)。

    (2)命令參數面板

    命令參數面板用於設定每一個命令方塊的參數,由於每一個命令方塊其實包含了許多的

    功能,例如:「Move」可選擇控制的是哪一個連接埠(Port)上的馬達,馬達的旋轉方向,或是

    同時控制兩個或三個馬達,馬達輸出動力大小、、、、等,因此在使用每一個命令方塊時都

    需要依據實際所要執行的動作(功能)做參數設定。

    (3)NXT 主機控制面板

    主機控制面板包含了五個部分,分別是 :NXT 視窗「NXT Windows」、 :下載並

    執行自選程式「Download and run selected」、 :程式下載並執行「Download and run」、 :

    程式下載「Download」、 :程式停止「Stop」等。 讓使用者看到 NXT 主機內相關資訊

    的現況,例如:主機名稱、電量、記憶體容量等。 讓使用者在程式編寫需要測試單一或部

    分特定步驟功能是否正確時使用,其執行與下載的程式內容只有使用者在程式編輯區中所圈

    選的部分。 將使用者所有編寫好的程式內容下載入 NXT 主機的記憶體中並執行。 單

    純將編寫好的程式下載儲存在 NXT 主機的記憶體中,由使用者在 NXT 主機上自行選擇是否

    執行。 可停止程式執行(僅限於電腦與 NXT 主機連線狀態)

  • (4)NXT 基本練習

    利用NXT-G一般命令面板的功能完成一個讓 LEGO機器人可前進 10秒後並且左迴轉(同

    時螢幕顯示左轉)後前進 60 公分的程式。

    參考作法:程式可編排如下圖:以三個 Move 與一個 Display 構成。

    第一個 Move 的參數可設定如下圖:(直接前進 10 秒)

    Display 的參數可設定如下圖:(以文字方式顯示 Turn Left)

    第二個 Move 的參數可設定如下圖:(左輪不轉,只轉動右輪,並且轉動 730 度,因為要讓 LEGO

    機器人轉直角約需輪子轉動 375 度)。

    第三個 Move 的參數可設定如下圖:(可利用轉動的圈數來控制前進的距離,因為 LEGO 機器

    人的輪子轉一圈約 17.85 公分)。

  • 節次:3 教材(教具)資源:LEGO 9797 套件、NXT-G 軟體

    教學活動名稱:

    1、一般命令面板實作練習(50 分鐘)。 時間:50 分鐘

    教學活動說明:

    1.NXT-G 程式編寫過程與方式(使用一般命令面板 Common palette):

    在正式開始 NXT-G 程式編寫之前,先介紹一下程式編寫的過程與方式,由於 NXT-G 是一

    套圖控式軟體,因此其程式編寫過程相當直覺化。程式編寫方式一樣是套用程式語言的三大

    結構:循序結構、重複結構、選擇結構,因此在 NXT-G 的命令方塊中就具備了迴圈方塊(Loop

    Block)、選擇方塊(Switch Block)。只要使用者將解題流程構思完成後,不論使用者想編寫的

    功能為何,其過程步驟大致相同,1.新增命令方塊(將各命令方塊在點選後放置於程式編輯

    區)、2.設定參數(設定個別命令方塊的參數)、3.下載與執行(將編寫的程式下載至 NXT 主機中

    執行、4.修正與除錯(視 NXT 主機的執行情況修正程式內容或命令參數)。

    以聲音控制為例:

    假定情況如下:機器人再前進 10 秒鐘後先靜止 1 秒鐘,接著以喇叭發出 Good Job 的語音。

    步驟一:新增命令方塊

    用滑鼠在命令列面板點選所要使用的命令方塊,接著將滑鼠移動至命令方塊要放置的位

    置後按下滑鼠左鍵即可將命令方塊放置於定位。依此方式依序將各命令方塊排列好即可。

    步驟二:設定參數

    在程式編輯區上點選所要修改參數的命令方塊,即可讓參數面板自動更換為該命令用的

    參數面板。以 Sound 這一個命令(方塊)為例,在參數面板上可以看到 Action(可選擇執行哪一

    種檔案)、Control(可選擇播放或停止聲音)、Volume(可調整音量大小)、Function(是可選擇是

    否重複撥放)、、等項目。藉由這些項目的調整的可以控制這一個聲音命令方塊在執行時的功

    能表現方式。

    新增(刪除)命令方塊 命令方塊參數設定 下載與執行

    修正與除錯

  • 步驟三:下載與執行

    程式中的每一個命令方塊參數皆設定完畢並確認程式完成後即可點選 NXT 主機控制面

    板中的下載與執行按鈕 。下載完成後 NXT 即會開始依程式設定執行。

    步驟四:修正與除錯

    在程式執行的過程中一定會發現有些命令方塊執行的功能度不如預期或是不太正確,這

    時就需回頭修正命令方塊的參數或是檢視程式的程序結構是否正確,需不需要調整。

    節次:4 教材(教具)資源:LEGO 9797 套件、NXT-G 軟體

    教學活動名稱:

    一、一般命令面板實做練習(50 分鐘)。 時間:50 分鐘

    教學活動說明: 學生範例練習:

    範例一:觸碰往返自走車

    設計一台會自行在固定範圍內以光線感應紅線不斷往返行走的機器人(如上圖)。直到 Touch

    Sensor 撞到物體被按下後迴圈停止(因此學生必須先自行在機器人車體上設置可朝向地面的

    光線感測器,並且確認 Touch Sensor 在機器人撞到物體後可被確實按下)。請先將機器人的光

    感應器接上 NXT 主機的 3 號輸入埠。並將馬達(Motor)分別接上輸出埠的 B 和 C。

    步驟一:.

    自等待方塊(Wait Block)中選擇 Light Block 並且在 Until 參數中設定 Light > 50,Port 為 3;接

    著放入移動控制方塊(Move Block)在 Light 命令之後,並設定驅動 BC 馬達且馬達正轉 3 圈

    (Rotation 3)。

    步驟二:

    重複上一步驟將 Light Block與Move Block接續放入並設定 Light Block並且在Until參數中設

    定 Light < 50,Port 為 3;Move Block 設定驅動 BC 馬達且馬達逆轉 5 圈(Rotation 5)。

  • Step3.

    最後將迴圈方塊(Loop Block)放入並將 Step2 中完成的各命令方塊放入(Loop Block)中()如下

    圖,最後點選 Loop Block 中將終止條件的參數設定為 Control:Sensor;Sensor=Touch Sensor;

    Port =1 即可。

    學生延伸練習一:讓學生思考如何利用超音波(Ultrasonic Sensor)感測器做出類似的功能,讓

    機器人在兩組障礙物之中來回移動。提示:本練習可用 Loop 為程式的主要結構。

    學生延伸練習二:讓學生思考如何利用聲音感應器做出以聲音大小為行進方向依據的機器

    人。例如:聲音值超過 50 則前進小於 50 則後退。或者是超過 80 左轉,小於 30.右轉 70~40

    前進等變化。提示:本練習可用 Switch 為程式的主要結構。

  • 節次:5 教材(教具)資源:LEGO 9797 套件、NXT-G 軟體

    教學活動名稱:

    一、一般命令面板實做練習(50 分鐘)。 時間:50 分鐘

    教學活動說明:

    範例二:跟隨機器人

    利用 Switch 與 Loop 設計一台會自動保持一定距離跟隨主人移動的機器人。

    步驟一:

    在程式編輯區中放入迴圈方塊(Loop Block),接著在 Loop Block 再放入選擇方塊(Switch Block)

    如下圖。

    並將 Switch Block 的參數設定如下:Sensor=Ultrasonic Sensor;Port = 4;Distance < 60;距離

    單位為公分(Centimeters)。

    步驟二:

    接著將兩個 Move Block 依序放入選擇方塊(Switch Block) Distance < 60 的區塊中並且分別設

    定為停止及馬達逆轉 2 圈。

  • 步驟三:

    在選擇方塊(Switch Block)中Distance >= 60公分的區塊中放入一個Move Block並且設定Move

    Block 的參數為馬達正轉;持續轉動(Duration)方式=無限(Unlimited)。

    最後將 Loop Block 中的終止條件的參數設定為 Control:Sensor;Sensor=Sound Sensor;Port =

    2;Sound > 50 即可。

    實際運作時,機器人會再與前方物體保持約 60 公分的距離亦步亦趨,若對著機器人大喊「停

    止」則程式結束機器人完全停止。

    學生延伸練習一:讓學生思考如何運用其他的感測器或是條件作為終止程式執行。例如:設

    一一台只有在光線夠亮時才能會執行跟隨動作的機器人,當光線太暗或關閉時則會靜止不動。

  • 節次:6 教材(教具)資源:LEGO 9797 套件、NXT-G 軟體

    教學活動名稱:

    一、完整命令面板實做練習-資料線(50 分鐘)。 時間:50 分鐘

    教學活動說明:

    資料線(Data Wires)使用練習:

    通常會在想要編輯較為複雜的程式時才使用完整命令版,但是較為複雜的程式往往就牽

    涉到資料線(Data Wires)的功能,資料線具有一個很重要的功能就是在命令方塊(Programming

    Blocks)之間傳遞資料。在大多數的命令方塊內都具備資料集線器(Data Hub)的功能,只要點選

    就會出現。實際上在一般命令面板(Common Palette)的操作模式時命令方塊(Programming

    Blocks)一樣具備有資料集線器(Data Hub)與資料線(Data Wires)的功能。只是在完整命令面板

    (Complete palette)的模式下,可使用運算子的功能配合資料線(Data Wires)的功能時更能發揮功

    能。

    資料線(Data Wires)有三種主要型態,分別是 Number data wire (yellow)數字資料線(黃色)、

    Logic data wire (green)邏輯資料線(綠色)、 Text data wire (orange)文字資料線(橘色)。另外如果

    資料線的連接有錯誤,例如無法傳送資料則會以灰色顯示無錯誤的資料線 Broken data wire

    (gray)。

    下圖是一個利用聲音感測器(Sound)、迴圈(Loop)和資料線資料線(Data Wires)製作一個會隨音

    量大小改變速度的機器人的程式編輯。可看到只需要將聲音感測器(Sound Sensor)的音量輸

    出至驅動方塊(Move Block)的動力輸出項目,即可利用聲音感測器所測到的音量大小作為動力

    輸出的大小依據。

    學生練習範例:跟隨機器人進階

  • 利用在前一節課中所編即可自動保持固定距離(60 公分)跟隨的機器人,以資料線(Data Wires)

    與 Range 命令方塊改寫成一台會自動跟隨,但是跟隨距離保持在 25~75 公分之間且後退時會

    亮紅燈的機器人。

    參考程式如附圖:

    提示:可利用 Range 的命令方塊接收超音波感測器所測到的距離範圍,並且藉以限制在 25~75

    之間。其餘則請參看附圖與前一小節之練習。(注意:如果 Switch 未將參數改為 Control=Value

    則 Type 端點不會出現)

    附註:

    完整命令面板裡面的指令非常的多,其所包含的分類與命令方塊如下。

    一般(Common)

    包含有在一般面板(Common palette)出現過的 Move、Record/Play、Sound、Display、Wait、Loop、

    Switch 等命令方塊。

    行動(Action)

    包含有 Motor、Sound、Display、Send Message、Lamp 五種主要的命令方塊。

    感測器(Sensor)

    包含有 Touch Sensor、Sound Sensor、Light Sensor、Ultrasonic Sensor、NXT Buttons、Rotation

    Sensor、Timer、Receive Message、Temperature Sensor 等命令方塊。

    流程(Flow)

    包含有 Wait、Loop、Switch、Stop 等命令方塊。

    資料(Data)

    包含有 Logic、Math、Compare、Range、Random、Variable、Constant 等命令方塊

    進階(Advanced)

    包含有 Number to Text、Text、Keep Alive、File Access、Calibrate、Reset Motor、Start Datalog、

    Stop Datalog、Bluetooth Connection 等命令(方塊)。

    其中有許多是在一般命令面板中看不到的,例如:燈(Lamp),可使用套件中所附的 LED 燈;

    傳送訊息(Send Message),可利用藍芽裝置傳送訊息給其他 NXT 主機;另外資料命令(Data)、

  • 中所包含的 Logic、Math、Compare、Range、Random、Variable、Constant 等命令方塊及進階

    (Advanced)中所包含的 Number to Text、Text、Keep Alive、File Access、Calibrate、Reset Motor、

    Start Datalog、、、等。

    補充資料 A NXT 視窗「NXT Windows」

    1. NXT 視窗「NXT Windows」

    在「NXT Windows」功能中可以看到 NXT 主機的名稱、電池存量、連線方式、記憶體存量、

    韌體版本等許多的資訊,並且可以加以修改。例如:更改主機名稱就可以在 NXT Data 視窗

    中的 Name 項目直接輸入新名稱,並點選右方的輸入鍵就可以了。萬一記憶體空間滿了造成

    程式無法下載至 NXT 主機中執行時,要清除記憶體內容則只需在 Memory 視窗中點選「Delete

    All」即可將 NXT 主機內的記憶體清空。