顯示具有 樂高機器人教學 LEGO NXT-G 標籤的文章。 顯示所有文章
顯示具有 樂高機器人教學 LEGO NXT-G 標籤的文章。 顯示所有文章

2013-08-28

2013 WRO 國小組 競賽程式設計 教學



今年WRO機器人競賽的校際盃比賽與全國初賽都已經告一段落,




探奇認為今年的國小組題目,許多老師及同學應該都會基本的作法,也就是:




辨識色瓶顏色,走到對應顏色區域,擊出色瓶。

每打一次色瓶,根據機器人的位置,找出移動的方法。

或是每打一次色瓶,移動到中間基準線(或第一條黑色線),再重複辨識打擊的動作…


邱老師是想破頭才想到這種平面電梯的處理方式,所以我想大部分的新手老師或新手同學需要接受訓練,

才能體會平面電梯的作法,所以探奇邱老師與大家分享這樣的程式設計。


還請有豐富經驗的老師教練及參賽選手多多指導。


以下是本文開始:
 

探奇曾經多次發文介紹國小組題目的相關資料,硬體設計已經有一些討論,現在就程式設計進行探討。


 


主要程式


 


首先需要清楚知道比賽時機器人的動作要求,根據2103 WRO 國小組比賽規則,機器人需要分段完成下列動作:


 


1.      機器人出發,到第一條黑線。


2.      根據色瓶顏色分別丟入相同顏色的對應區域


3.      推動紙筒罐子到指定區塊


4.      經過障礙區


5.      回到終點


 


依據上面的流程,我們可以寫出2013WROelem1程式,如下圖:


 



 


 


比賽場地的顏色區域為:第一區綠色,第二區藍色,第三區紅色。


 


設定三個顏色變數,名稱為Green, Blue, Red,將相對應的區域數目寫入變數中。


 


機器人出發到第一條黑線停止,接著進入判定色塊顏色的My Block 程式 – ColorKick




判斷色塊程式


 



 


上面是ColorKick程式圖,


 


先說明相關變數,Now表示機器人現在所在位置,


 


Key表示機器人需要前往的位置,也就是偵測的色瓶顏色區域。


 


流程如下:


 


1.      Now變數寫入1,因為機器人停在第一條黑線,也就是第一個顏色區域。


2.      根據顏色感應器偵測顏色值,將設定好的顏色變數值寫入變數Key


3.      依照「平面電梯」的遊戲方式,將Key-Now,得到結果Res


4.      Res有五種狀況,正數表示機器人向前,負數表示機器人後退,數字表示區域數。0就是不用移動。


5.      機器人到達指定區域後,驅動A馬達將色瓶擊出。


6.      變更現在的位置記錄,將Key數值寫入Now


7.      重複相同的判斷動作五次,跳出迴圈。結束My Block


 


接下來在主程式中關於推動紙筒罐子、通過障礙區,相信大家可以自行控制機器人前進轉彎。


 


後續程式改進


 


每次比賽除了基本規則外,還有所謂的驚喜規則,這是為了辨識大家的機器人設計程度,同時提高比賽難度,也增加參賽者的挑戰心,以及觀賽者的緊張氣氛,讓比賽增添許多樂趣。


 


一般的驚喜規則可能是在機器人行進的路程中放置障礙物,或是機器人必須將額外物品帶回終點。


 


今年國小組的驚喜規則有可能是改變顏色區域的順序,甚至增加色瓶的顏色種類。


 


針對顏色區域順序改變,我們只要修改主程式的前半段,就能因應。


 


下圖是2013 WROelem2程式


 



 


原本的顏色區域為固定,第一區綠色,第二區藍色,第三區紅色。現在先將所有顏色區域變數設為3


 


機器人到達第一條黑線後,需要轉彎推進,藉由另一顆顏色感應器偵測區域的顏色。將1寫入相對應的顏色區域變數。機器人退回第一條黑線


 


機器人前進到第二條黑線,重複上述相同動作,偵測第二區域的顏色。


 


機器人退回第二條黑線後,將機器人目前位置設定為2 ( Now = 2 )(圖中的程式未設定)


 


接著執行ColorKick程式,進行打擊色瓶動作。


 


比賽開始


 


以上是2013WRO國小組競賽的程式設計教學討論,只是最基本的程式。當大家了解之後,一起進行腦力激盪及思考實驗,還可以有更多的變化及改進。




競賽的準備過程是辛苦的,結果可能帶來歡樂或是失望,不論如何都是成為更進一步的動力。大家能夠盡力完成比賽挑戰,就是最棒的學習經驗。祝大家玩得快樂高興。




2013-06-16

平面電梯 - 用NXT模擬電梯的NXT-G程式



(這篇文章的圖片因為部落格搬家而遺失,請到隨意窩分站觀看文章)
http://blog.xuite.net/touch_classroom/twblog/116580876



平面電梯 - NXT模擬電梯的NXT-G程式


2013  探奇教室,這個課程是為了學習分區移動的概念。



電梯系統



探奇很早就想利用NXT樂高機器人製作電梯模型,但是因為一台NXT主機只能控制三顆馬達及最多四顆感應器,不能完整作出電梯的所有動作,只好分段進行。



電梯系統可以分為車廂,車廂通道以及各樓層的閘門,每個部分都有自己的機構及電控模組。我們首先從車廂開始思考,車廂中也有各種不同的控制,例如車廂門的開閉,除了馬達移動車廂門,也需要有感應器偵測車廂門是否關閉完全。又如車廂中的照明及風扇,長時間的待機狀態下可以自動暫停運轉主。





平面電梯





網路上有許多樂高做成的電梯模型,不論是使用繩子拉動,還是齒輪齒條的組合,似乎都需要很多積木才能完成,既然沒有時間及足夠的積木完成創作,那麼就在地板貼出三條黑線,玩玩「平面電梯」,讓機器人在三條黑線中任意來回移動,應該也是很有趣的挑戰。





樓層選擇按鍵

 

整個車廂中對乘客最重要的就是「樓層選擇按鍵」。當乘客進入車廂後,會按下想抵達的樓層,電梯系統需要根據目前所在的樓層判斷電梯車廂需要上升還是下降?電梯車廂進行多少樓層的移動。



這聽起來好像很單純,事實上有點複雜。古人說:登高必自卑,我們先從基本開始,等到研究出一些結果,就可以擴充樓層數目。先將樓高設定為三層樓,依照目前電梯所在的樓層,當乘客進入電梯車廂後,按下想要到達的樓層,電梯的對應動作有多少種可能的組合呢?列表是一種最直接的解決方法:



電梯狀況組合表



目前電梯所在樓層

Now

乘客想要去的樓層

Key

電梯需要的動作

Res

1

1

1

不用動

2

1

2

向上1

3

1

3

向上2

4

2

1

向下1

5

2

2

不用動

6

2

3

向上1

7

3

1

向下2

8

3

2

向下1

9

3

3

不用動



從上面的表格分析,三個樓層,總共有九種組合,小朋友可以直接將9種組合完全寫出來,程式就依照這就種組合進行判斷,例如:



如果電梯目前在1樓,乘客按下2樓,車廂就向上1層。



或者是這種狀況,如果電梯目前在3樓,乘客按下1樓,車廂就向下2層。



程式構想

平面電梯的程式分為幾個部分:1 接受按鍵,2 狀況決定,3 對應動作,4 更新現況。



接受按鍵

NXT主機上的三個按鍵代表樓層按鈕,向左鍵是1樓,橘色鍵是2樓,向右鍵是3樓。除了NX主機的按鍵,也可以使用三個觸碰感應器代表樓層。或是使用其他感應器也更有趣喔!



NXT-G中,只有Wait for Sensor能夠判別感應器的狀況,如果需要同時判別多個感應器,可以使用多個Switch Block 或是利用多工程式的寫法。



這裡先以多個Switch Block處理「接受按鍵」,順便也定義一些必要的變數,變數Key:代表乘客的按鍵;變數Now:表示現在樓層;變數Flag:表示是否已經按鍵;變數Res:狀況決定結果。

 

下圖是「接受按鍵」的程式,在迴圈中,不斷以Switch Block判別各個按鍵狀況,並且將按鍵結果儲存在變數Key,當按鍵按下時,同時也將變數Flag設定為真值,使程式跳出迴圈,進行後續動作。

 



狀況決定

「狀況決定」就是對照電梯狀況組合表,決定電梯需要的對應動作。這部分當然也是使用多個Switch Block 完成多種If Then情形。不過這裡先將結果儲存到變數Res,而不是將對應動作寫在這裡。原因是當NXT-G程式的動作太過複雜或是命令方塊太多時,很容易造成NXT-G軟體當機。將程式分成兩部分完成,除了減少軟體當機的風險外,程式也比較容易理解。



程式中第一個Switch Block以變數Now作判別,接著以變數Key作判別,總共有9種可能的情況。結果儲存到變數Res(19)

 





對應動作

等到狀況已經決定,再使用一個單獨的Switch Block執行電梯的對應動作,例如向上一層,向下兩層,或是不動(發出警告聲)

 



更新現況



電梯已經根據對應的動作進行移動,變數Now當然也要更新現況,所以程式的最後一部份需要將變數Key的數值存放在變數Now,也就是Now = Key

 



電梯模式數學方式處理

上面的程式很直覺,也很直接地將所有情況列出來。



為了因應各種狀況的發生,當然要將所有組合寫出來,雖然可以寫出來,但是9種狀況還是多了一些,有沒有可能簡化呢?觀察下面的表格,實際上電梯需要的動作只有五種,將乘客想去的樓層減去目前的樓層,剛好得到一些數字。





目前電梯所在樓層

Now

乘客想要去的樓層

Key

電梯需要的動作

Res = Key – Now

1

1

1

1-1=0  不用動

2

1

2

2-1=+1 上升1

3

1

3

3-1=+2 上升2

4

2

1

1-2=-1  下降1

5

2

2

2-2=0  不用動

6

2

3

3-2=+1 上升1

7

3

1

1-3=-2 下降2

8

3

2

2-3=-1 下降1

9

3

3

3-3=0  不用動



這五種情況分別是:下降2(-2),下降1(-1),不動(0),上升1(+1),上升2(+2)



正負符號對應上升或下降,數字對應樓層數目。數學還真是好用啊!



(這裡要說明一下,因為負數是上了國中才學習的,國小學生不一定全部都有負數的概念,所以有必要以加減的想法對國小學童說明負數的符號意義,就是「不夠,不足」。在這個題目,正負符號恰好是上升或下降的意思。)



改寫「狀況決定」部分的程式,變得超級簡單,就是將Key減掉 Now,得到Res的狀況數字。還可以直接連線到「對應動作」的Switch Block



同時對應動作的Switch Block也由9個選項減少至5個選項,大大減輕選項的管理負擔。

 

完成了三條黑線的平面電梯任務,還可以挑戰擴充更多的電梯樓層,試試看,是不是很輕鬆就能完成呢?



對應到WRO比賽



看到平面電梯的三條黑線,似乎跟2013 WRO國小組比賽色瓶分類區域的三條黑線很類似,其實只要將紅藍綠顏色對應到123的數字,就能將彩色感應器所感應到的色瓶(色塊)顏色,與機器人目前所在區域的顏色,一起判別,如此機器人就能走到對應的顏色區域,接著將色塊射出,就能完成任務。請大家參考看看!



探奇舊文章延伸閱讀:

2013 WRO 國小組比賽題目訓練教案

2013 WRO 國小組任務 課程教學的想法

2013-04-26

光源感應器軌跡車的程式寫法



探奇邱老師最近很偷懶,已經連續好多天沒有發文。還請見諒!

今天要介紹的是光源軌跡走法,這不是我所寫的,而是 The Roboticist所發的文章。

有單光源,雙光源以及三光源。

或許大家已經知道,請參考看看!

文章連結:

http://www.theroboticist.org/technology/lego-nxt/nxt-line-following/

網站內還有很多NXT-G的範例喔!

2012-10-18

NXT與NXT的藍牙連線方式

大家都知道NXT樂高機器人的主機具備藍牙功能,

藍牙通訊能擴展NXT與其他NXT的聯絡,共同合作完成任務。

下面就是探奇上課時的教學內容,請各位讀友參考。

首先是藍牙連線(配對),

請參考下面的圖片。




確定連線後,就可以將相對應的NXT-G程式下載到NXT主機與從機中,

(請參考探奇舊文章:NXT與NXT之間的藍牙接收發送程式

祝大家連線成功!

2012-09-25

『中文乐高』論壇的活動--看谁使用的模块最少


『中文乐高』論壇的活動--看谁使用的模块最少

這是大陸『中文樂高』論壇的會員活動,活動發起人是薛源,

活動內容需要使用最少的NXT-G命令方塊完成任務,

任務規則轉貼如下:(我直接貼簡體字)


规则:
1、下图的黑线画出了小车的行走路径(不使用光感、超感等进行检测,只是要求小车的行走路径符合下图的黑线形状)
2、小车在每个直角转弯之前要发出一个声音提醒。(什么声音都行,只要NXT发出声音就行)
3、不能使用自定义模块只能使用NXT——G自带模块
4、无需考虑每段路径的准确长度
5、转弯处是直角,不能弧线代替

機器人行進路線如下圖



我也遼下去參加,不過程式不夠周詳,還需要好好想想。

但是我從大家的發文學到不少喔!

歡迎大家一起討論!

2012-09-23

單光源軌跡車的終點設計


探奇在舊文章『單光源軌跡車的終點處理方式』提出幾個建議,

關於如何安排單光源軌跡的終點,最簡單的方式就是更改終點,讓光源感應器測到的光源值與軌跡和背景有較大的差異。


鋁箔紙

鋁箔紙有不錯的反光效果,測得的光源值比地板的背景值還高,所以很容易讓機器人到達終點停車。




請參考探奇示範影片:







彩色電工膠帶



電工膠帶一直是NXT樂高機器人的好朋友,除了黑色膠帶搭配白色壁報紙,還有其他作法。

這種在特力屋購買的仿地毯地墊,正面是深藍色的絨毛,背面是白色塑膠,剛好可以用來安排軌跡路徑,

絨毛反光少的特性,更是最佳的軌跡終點。



經過簡單的光源測試,搭配地墊白色背景,只有黑色,綠色,藍色,灰色等四種顏色可以使用,又因為光源值不太相同,需要動些腦筋,調整光源中間值,以適合四種顏色的軌跡線。這應該是不錯的挑戰。



請參考探奇示範影片:





這個課程可以這樣規劃:

1. 從『量測記錄各種顏色軌跡及不同材質終點的光源值』開始,

2. 比較分析數據,思考如何調整中間值(threshold),

3. 測試尋跡

4. 加上自動計時功能

5. 加上自動折返功能

6. 以地墊組合安排不同軌跡的競賽。

上面第四及第五點對大家都是不錯的挑戰喔!

歡迎讀友一起討論!

下篇再來探討『各種光源值分析』以及『使用軟體處理單光源軌跡終點』的程式。



2012-09-21

NXT-G 的 Switch block 補充說明



探奇在『NXT樂高機器人:創意樂趣,隨心所欲』書本,第15章『猜猜我是誰』,提到如何增加Switch的選項,書中的範例只增加到三個選項。

也許有讀友注意到,如果增加的選項超過五個時,在Switch Block上方也只能顯示5個分頁標籤,除非在Switch中放入一些命令方塊,擴大Switch的圖示。

但是當Switch只有顯示5個分頁標籤,我們該如何切換第6個以後的分頁選項呢?

有兩種方式:

1. 請直接到參數區,點選Conditions的項次,橘色背景的選項表示現在Switch Block顯示的分頁。



2. 直接擴大Switch Block的圖示:

請將滑鼠游標移到Switch Block裡面的積木軌道,游標會變成左右箭頭狀(如下圖)



按住滑鼠左鍵,向右拖拉,就可以延長積木軌道,擴大Switch Block的圖示,上方的分頁標籤也都出現了。

在參數區Conditions的第6個選項是橘色背景,Switch Block的第6個分頁標籤也是變成淺橘色。




這種延長積木軌道的方法可以在任何地方使用,也可以用來縮短積木軌道,但是請大家小心拖移,萬一發生奇怪的狀況,例如積木軌道亂跳,請多多利用復原(Undo)回復原狀,避免程式錯亂。

另外要告訴大家的是如何在Switch Block中執行『多工程式』,

一般來說,Switch Block或是Loop Block的軌道都只有一條,由於橘色邊界的包圍,沒有足夠的空間放置多工的命令方塊。我們可以利用命令方塊的資料集線器『擴大』圖示。

首先在Switch Block中放入一些命令方塊,打開資料集線器。

(下圖中我以上面的Switch 分頁直接示範,其實打開一個命令方塊的資料集線器就可以了。)



接著把需要多工空間的資料集線器收起來。



放入你所需要多工的命令方塊。(下圖)



再按住Shift鍵,拖拉積木軌道將多工的命令方塊連接起來。(下圖)




最後記得將用來『擴大圖示範圍』的命令方塊刪除。

同樣的,請讀友小心延伸積木軌道,老話一句,發生特殊狀況時,請不用心急,使用復原(Undo)回歸到拉線前的狀態。隨時記住儲存你的程式,避免發生欲哭無淚的情形。

其實在Switch 或 Loop中也可以使用另一個Switch Block作為『擴大圖示範圍』的命令方塊,效果也不錯喔!

(看看『寵物娃娃』中,Switch包住Switch的效果,空間是不是很大呢?!)

如果擔心拉動積木軌道常常凸槌,建議讀友還是將你需要的多工程式以My Block包起來,直接放入My Block,可以省去不少麻煩喔!





祝大家玩得愉快!

2012.9.23更新:

收到海龜老師來信補充,

如果想將資料線拉到Switch Block裡面,需要取消Flat view,讓Switch Block變成分頁顯示方式。

下圖左邊是Flat view平面展開模式,所以資料線無法拉入Switch Block 內部(紅色圈框)。

下圖右邊是將Switch改為分頁顯示模式(取消Flat view),資料線可以分別拉入不同選項(綠色圈框)。





感謝海龜老師的指導補充,歡迎大家一起討論。


2012-08-27

Khan Academy的LEGO NXT-G教學


Khan Academy 由Salman Khan創辦,目前已經有超過2700部的教學影片,教學內容包含語文、數學、科學、財經等專業知識。

前兩天在網路上偶然發現Khan Academy在幾年前就已經使用樂高機器人舉辦活動,請參考這篇報導:Khan Academy: Out of the Screen, Into the Physical World

(這種提倡『遠離螢幕,走回現實』的活動,不正是探奇希望樂高機器人幫助孩子離開虛擬的遊戲世界,重新在現實生活中尋找親自動手的樂趣嗎?!)

他們使用樂高機器人進行相撲賽,可以到http://youtu.be/PcebYbQ31RA觀看比賽影片。

在2012年6月,Brit Cruise,Khan Academy的一員,也在Youtube上發佈一些LEGO NXT的教學影片,有興趣的讀友不妨看看。

例如:Lego NXT: intro to switch statements,還有其他LEGO NXT教學影片可以到Brit Cruise的Youtube頻道觀看。

(這些影片並還沒有正式納入Khan Academy中)

最後要提到的是Brit Cruise有一部介紹樂高機器人的影片,

Lego Robots. Anything is possible!


片中說明生活中機器人可以做的事,樂高也都可以做到。影片的對比效果很不錯喔!


2012-08-24

研發養成所的NXT新題目--NXT digital voice recorder

研發養成所的Bridan先生在他的部落格發文提供大家NXT的挑戰題目,

這次的題目是『NXT digital voice recorder

轉貼題目如下:

『設計—個錄音機,按左鍵可以錄音三秒鐘,按右鍵撥放聲音』

樂高機器人的聲音感應器只能感應聲音大小,所以需要記錄的就是音量大小,取樣頻率。

(可惜無法知道頻率高低)

比起讓機器人模仿敲擊節奏,這個挑戰會比較困難,

讀友也可以想一想喔!

2012.09更新:

剛剛寫了一個程式,還請大家指正。

https://docs.google.com/open?id=0B8aMeqYeJfEIM0dRYW1BUmk3bzA

有很多改善空間,因為下列因素:

1. NXT因為軔體緣故,聲音大小只有四段,(leJOS可以八段)

2. 取樣頻率不容易調整。

3. 發聲也不連續。

4. File Access很慢。

5.應該用換軔體,改用其他語言會改善。



2012-08-20

Mountain Lion OS X 10.8 and NXT-G

根據國外玩家的報告,有人將蘋果的作業系統更新至Mountain Lion OS X 10.8,結果造成NXT-G無法正常執行。

不知道台灣地區是否有玩家遇到這種情況?

在The NXT STEP,WARNING: Mountain Lion OS X 10.8 and NXT-G

文中說明要用到這篇樂高官方網頁文章的iso檔,這個光碟檔案在Windows下也可以安裝喔!

(不知道教育版的NXT-G是不是也有同樣問題?)

2012-08-15

單光源軌跡車的終點處理方式


探奇在『NXT樂高機器人:創意樂趣,隨心所欲』書中有討論單光源軌跡車的章節,

在探奇部落格也有多篇文章討論單光源軌跡車,請參考探奇舊文章:

NXT樂高機器人軌跡車的研究---PID控制

樂高NXT機器人單光源軌跡車的實驗(4/8增補)

NXT彩色感應器軌跡車

在實驗測試過程中都是使用封閉式路徑,讓機器人繞圈圈,不斷前進,永無止盡。

直到探奇看到『有趣的樂高機器人趣味競賽:Xander的新文章--GIA Tooling Team Building Event』,

邱老師才想到一個問題,如何使用單光源行走開放式軌跡路徑,又能讓機器人知道路徑終點,自動停止呢?

一般來說可以改變路徑環境,有幾種方式:

1. 路徑終點的環境變化一:

例如在路徑終點設置『牆壁』或『障礙物』,可以利用觸碰感應器或超音波感應器偵測終點。

(探奇課程中的雪中送炭就是這類應用)

2. 路徑終點的環境變化二:

在路徑終點貼上鋁箔,藉由光感數值的不同,讓機器人偵測終點。這是從Xnader的文章得到的點子。


這些方法都要在環境上動手腳,有點麻煩。

如果路徑環境不改變,也不用額外貼上鋁箔,只用一顆光源感應器呢?
讀友可以想一想如何利用軟體解決問題,歡迎討論!

(下面是我的想法,請讀友先想一想,看看我們是否有相同的想法










1. 利用角度感應器 (Rotation Sensor)

2. 利用計時器 (Timer)

雖然應用軟體控制無法立即使機器人停止,但還是有一點效果。

你的看法呢?














2012-07-29

電腦以藍牙遙控樂高機器人


探奇曾經在很久以前介紹過『透過網路遠端控制NXT』,文中提到作者Anders Søborg也提供藍牙汽車遙控程式,讓你能在電腦端以藍牙遙控你的樂高機器人。

下載網頁如下:網頁連結http://www.norgesgade14.dk/bluetoothremote.php



進入網頁後請向下拉動,會出現Download vehicle remote字樣,請點擊下載。




下載後請解壓縮,執行nxt-remote.exe檔案。

進入程式後如下圖:

我們需要設定藍牙的模擬Comport,探奇的筆電是Com 38,以下拉式選單設定好之後,再按下Connect,過一會兒就會連線。




如果不知道藍牙裝置的Com port,請先以Windows的藍牙『新增無線裝置』尋找NXT主機,

連線後,再按下Bluetooth設定,




你應該可以在COM連接埠的分頁看到COM38的連出設定。



輸入你的COM port號碼,按下Connect,就如下圖,顯示Connected,表示連線正常。

接下來要設定你的左右輪胎馬達,一般來說,從機器人後方(獨立輪)向前(大輪胎)看,左輪都是Motor C,右輪都是Motor B。

Speed是前進後退的馬力(速度);Spin Speed是機器人轉彎的馬力(速度);Turn Radio是機器人轉彎的弧度,讓機器人轉得急一點還是緩一點。



終於可以使用視窗下方的Drive箭頭控制樂高機器人了,先按BEEP,試試你的喇叭!

依照箭頭方向,點擊滑鼠按下箭頭,機器人就會動作,放開滑鼠按鍵,就停止動作。



你也可以設定使用鍵盤操作,例如WSAD鍵,W表示前進,S表示後退等。



類似的功能也能在BricxCC找到,如果你無法以藍牙連線,也能用USB連線操縱。

如果懶得安裝BricxCC,可以下載 test release,解壓縮後直接執行。

剛好John Hansen先生在7/24發表新版的test release,韌體也更新為

lms_arm_nbcnxc_132_20120724_1125.rfw

祝大家玩得愉快!