• 沒有找到結果。

LEGO NXT 機器人 3D 模擬軟體

第三章 研究方法

第五節 LEGO NXT 機器人 3D 模擬軟體

本研究使用陳玥汝(2010)所開發的 LEGO NXT 機器人 3D 模擬軟體,為了 符合教學規劃與實施內容,將模擬軟體進行修改並設計符合教學需要的 3D 地圖環 境。本章先說明 LEGO NXT 機器人 3D 模擬軟體的功能分析,接著介紹軟體開發 工具與地圖環境設計與實作要點。

壹、LEGO NXT 機器人 3D 模擬軟體的功能分析

陳玥汝(2010)為了提升模擬 LEGO 機器人的效果,開發 LEGO NXT 機器人 3D 模擬軟體,在 3D 模擬環境中模擬出機器人在真實環境的行為,以及提供更多 感應器模擬功能。此軟體的設計架構共分為五個模組:

一、機器人行為動作模擬模組

負責模擬機器人行為動作,所有與機器人行為有關的服務都必須透過此模組 模擬,機器人操控指令簡化模組與使用者介面模組可經由此模組模擬機器人行為 動作。

二、3D 環境模擬模組

負責模擬 3D 環境與此環境中的物理現象,將模擬出的畫面傳到使用者介面模 組。

三、使用者介面模組

可透過機器人操控指令簡化模組呼叫機器人行為動作模擬模組,或是直接使 用機器人行為動作模擬模組對機器人進行操控。

四、程式編輯器模組

使用機器人操控指令簡化模組的指令來編輯程式,並提供除錯、編譯程式等 功能。程式語言是 C#。

五、機器人操控指令簡化模組

使用者可經由程式編輯器模組使用本模組簡化後的指令控制機器人行為動作 模擬模組。使用者介面模組可決定啟動或停止本模組所提供的指令。

各模組的功能與關係,如圖 3.3 所示。

圖 3.3 LEGO NXT 機器人 3D 模擬軟體系統架構(資料來源:陳玥汝,2010)

了解此模擬軟體的系統架構與模組關係之後,因為模擬軟體只有一個固定的 3D 地圖環境,為了搭配本研究教學設計的問題情境,需修改 3D 環境模擬模組,

新增符合本研究需要的 3D 地圖環境,並且為了將撰寫程式的流程簡化與調整模擬 軟體的操作介面,也需要將使用者介面模組進行修改。

貳、軟體開發工具

LEGO NXT 機器人 3D 模擬軟體是基於 MRDS(Microsoft Robotics Developer Studio)與 Microsoft Visual Studio 2008 進行開發。其中 MRDS 提供 3D 環境模擬 並內建機器人套件模組,而 Microsoft Visual Studio 則是整合開發環境,透過 Microsoft Visual Studio 進行程式編輯,將使用者建立的程式與 MSRDS 溝通後產生 3D 模擬的執行結果。

因此本研究採用此兩套開發工具將模擬軟體進行修改,並針對 3D 環境模擬模 組與使用者介面模組這兩部分進行深入了解,研究在模擬軟體中新增與修改 3D 地 圖環境的方法。

参、教學範例設計

依據文獻中機器人程式設計教學相關資料與研究者的教學經驗,擬定適合初 學者進行機器人程式設計實作的問題情境,運用於各個教學單元中,作為程式設 計的教學範例。下一個階段則依據教學範例,進行 3D 地圖環境實作。

以下說明各個單元教學範例的設計要點。

單元一:直線折返車(範例 1-1)

1. 學習目標

學習如何撰寫程式、程式執行的基本觀念以及如何使用機器人的移動指令包 含前進、後退、速度控制等。

2. 問題情境

設計一段程式,讓機器人可以在地板上前進、後退共折返 2 次,並且嘗試改 變它行走的速度。

3. 地圖設計:使用陳玥汝(2010)開發的原始地圖環境,如圖 3.15。

單元二:自走巡邏車(範例 1-2)

1. 學習目標

學習如何使用機器人的移動指令-轉彎以及程式設計的重複結構。

2. 問題情境

設計一段程式,讓機器車可以在地板上前進、右轉,走一個正方形的軌跡回 到原位。嘗試使用迴圈指令,來簡化上述的問題,並且修改程式讓機器人可以任 何方式在房間裡自動進行巡邏。

3. 地圖設計:使用原始地圖環境,如圖 3.15。

單元三:單光源軌道車-初賽(範例 2)

1. 學習目標

學習如何使用機器人的光源感應器,以及程式設計的選擇結構(條件判斷)。

並且學習分析機器人是如何沿著黑線前進。

2. 問題情境

設計程式使得在黑色橢圓形軌道上面的機器人,可以沿著地圖上的黑色軌道 前進繞圈行走,並且嘗試改變機器人行走的速度與方法,使得它能夠走得越順暢、

花越少時間越好。

3. 地圖設計:須使用橢圓形軌道如圖 3.4 所示。

圖 3.4 橢圓形軌道地圖設計

單元四:單光源軌道車-複賽(範例 3)

1. 學習目標

學習如何使用機器人的光源感應器,以及程式設計的選擇結構(多重條件判 斷)。並且學習分析機器人是如何沿著彎彎曲曲的黑線前進。

2. 問題情境

設計程式使得在黑色軌道上的機器人,可以沿著地圖上彎彎曲曲的黑色漸層 軌道繞圈行走,這個彎曲的軌道有左、右轉彎。並且嘗試改變機器人行走的速度 與方法,使得機器車能夠走得越順暢、花越少時間越好。

3. 地圖設計:變形軌道如圖 3.5 所示。

圖 3.5 變形軌道地圖設計

單元五:瘋狂碰碰車(範例 4)

1. 學習目標

學習如何使用機器人的碰撞感應器,以及程式設計的選擇結構。並且學習分 析在機器人撞到障礙物之後,要如何動作,才能夠順利迴轉。

2. 問題情境

設計程式使得在紅色圍牆內的機器人自動向前進,直到撞到障礙物,機器人 迴轉 180 度再繼續前進。思考在迴轉時要如何設計才可以順利過關。

3. 地圖設計

原本規劃為迷宮如圖 3.6 所示,利用碰撞感應器,令機器人從迷宮的起點進行 走訪至離開迷宮,但是在進行 3D 地圖環境測試時發現,機器人容易因為碰撞與轉 彎產生的誤差,以致於機器人在迷宮中迷走,造成不斷進行參數校正而阻礙了學 習的重點,因此更改設計,簡化成圍牆如圖 3.7 所示。

圖 3.6 迷宮地圖設計

圖 3.7 圍牆地圖設計

單元六:混合挑戰賽(範例 5)

1. 學習目標

學習如何綜合應用機器人的光源與碰撞感應器,以及程式設計的選擇結構,

並且學習分析如何運用變數與運算來改變機器人繞圈的方向。

2. 問題情境

撰寫程式使得機器人沿著地圖上黑色橢圓形軌道前進,但是在另一端有個紅 色障礙物擋住去路,當機器人撞到障礙物時,迴轉 180 度再繼續前進。思考機器 人在不同的前進方向是如何動作,當撞到障礙物又要如何調整才能順利過關。

3. 地圖設計

原本教學規劃的是圖 3.8 的變形軌道與障礙物,但是在教學過程中發現原本的 設計比較複雜,在教學活動的進行中可能會因為時間不夠讓學生完成實作,而阻 礙學習進行,因此進行教學調整,將地圖修改成如圖 3.9 的橢圓形軌道與障礙物,

將變形軌道簡化成橢圓形軌道,保留學習的重點,降低部分複雜度。

圖 3.8 變形軌道與障礙物地圖設計

圖 3.9 橢圓形軌道與障礙物地圖設計

肆、3D 地圖環境實作

原始的 LEGO NXT 機器人 3D 模擬軟體只有一個固定的 3D 地圖環境,而為了 搭配本研究各個單元設計的問題情境,必須新增符合教學需要的 3D 地圖環境。因 此在了解模擬軟體的系統架構與模組關係之後,研究在模擬軟體中新增與修改 3D 地圖環境的方法。

其中與 3D 環境模擬模組有關的程式碼片段都在 newMAP.xml 檔案中,查詢相 關參考資料並進行程式碼分析,結果發現可將新增地圖的點陣圖片以物件表面填 充材料的方式,替換掉原始的地圖場景,另外需要注意是否需要將圖片進行旋轉,

以保持原本的長寬比例。

而新增、修改或移除模擬環境中的物件,也是在 newMAP.xml 檔案中進行。

找到物件相對應的程式碼片段,對其 x、y、z 座標進行修改,可移動其位置,亦 可修改數值調整物件的重量,但必須注意在調整 LEGO NXT 機器人的位置時,因 為其碰撞感應器與機器人本體,是兩段不同的程式碼,並未群組在一起,因此需 要同步修改,以免感應器失靈。

以下是依據各單元問題情境的地圖設計,在模擬軟體中新增的 3D 地圖環境。

如圖 3.10 橢圓形軌道、圖 3.11 變形軌道、圖 3.12 圍牆、圖 3.13 橢圓形軌道與障 礙物等 3D 地圖環境所示。

圖 3.10 橢圓形軌道 3D 地圖環境

圖 3.11 變形軌道 3D 地圖環境

圖 3.12 圍牆 3D 地圖環境

圖 3.13 橢圓形軌道與障礙物 3D 地圖環境

伍、簡化操作介面與程序

原始的 LEGO NXT 機器人 3D 模擬軟體在畫面上同時有兩台機器人,分別保 留三個待執行的程式,因為研究者考量適合初學者的教學環境不宜複雜,以直覺 易操作為佳,因此欲修改模擬環境為一台機器人,且只執行一個程式的操作環境 以達到簡化的目的。在實作中,除了將第二台機器人物件移除,同時也移除了其 相關的模擬模組,並且修改 DriveControl.Designer.cs 檔案中使用者介面模組的程式 碼片段,移除不需要的介面按鈕,簡化使用者操作介面。原始操作介面如圖 3.14,

簡化過的操作介面如圖 3.15 所示。

簡化執行程式的程序,以降低不當操作造成的錯誤發生。調整執行程式的程 序以 script(run.bat 檔案)執行程式,當執行 run.bat 時會自動 rebuild 專案並執行 機器人模擬,程式錯誤訊息仍保留在 console 介面,提供除錯的資訊。因此學生只 需要以程式編輯器將程式碼撰寫在 new.cs 檔案中,並執行 run.bat 即可觀看程式執 行的結果。

圖 3.14 原始版本的模擬軟體操作介面

圖 3.15 簡化過的模擬軟體操作介面