置頂文字

歡迎來訪 !! 如有任何問題歡迎一起討論或是 eMail 給我 legorunmail@Gmail.com

2010年9月21日 星期二

樂高 NXT 軌跡車三

樂高 LEGO NXT 軌跡車加上超音波感應器是這次的設計重點,因為我們要在黑線上放一些障礙物,看樂高 LEGO NXT 軌跡車是否能避開障礙物繼續前進


所需材料:
  1. 白色珍珠板一塊約2公尺*1公尺
  2. 黑色膠帶一卷
  3. LEGO NXT 本體
  4. Motor 驅動馬達兩個
  5. Light Sensor 光感應器一個
  6. Ultrasonic Sensor 超音波感應器一個
  7. LEGO建構零件
  8. 想像力...................^_^

目標:讓LEGO NXT 軌跡車沿著黑色膠帶前進並且遇到障礙物時能避開後再繼續前進


沿用上次的車體那就來個 LEGO NXT 「障礙」越野的 Pose !!


    這次 NXC 程式的撰寫重點就是讓 LEGO NXT 同時運作兩件事(Task):A 持續前進 、B 偵測前方障礙物時要停止並後退一些再繞過障礙物繼續前進,實際測試時你會發現LEGO NXT 遇到障礙物時會發生突然前進又後退的困擾意外。

    這是因為 AB兩件事同時發生沒有先後順序導致 LEGO NXT 無所適從,這時我們需要一個交通號誌類似路口的紅綠燈「Mutex」,看AB Task誰先取得 Mutex 的控制權誰就執行而另一個Task就要先暫停等待對方程序完成。


NXC 程式碼:




程式執行影片


NXC 的一些小範例

這篇文章要介紹一些 NXC 的範例:


LEGO NXT 走直線問題:

一開使以為要讓LEGO NXT走直線是件容易的事情,不就是讓左右馬達輸出相同的Power就OK了,但實地執行時會發現NXT越走越歪為什麼呢??  這是因為2顆獨立的馬達會因為某些物理或現場因素造成在相同Power輸出下2顆馬達轉速不同所以會越走越歪。


NXC的解決方式是利用2顆馬達同步化 ,也就是NXT會監控2顆馬達的轉速當NXT發現兩邊差異過大時會自動調節讓兩邊盡可能轉速一致達到直線行走。


NXC 同步指令:OnFwdSync(Outputs,Power,Turnpct)

.直線行走:OnFwdSync(OUT_AC,50,0)

.原地360度迴轉:OnFwdSync(OUT_AC,50,100)





LEGO NXT 驅動馬達的指定角度設定與讀取:

NXC 角度指令:RotateMotor(Outputs, Power, Degrees)
指定馬達轉動到特定角度就停止的指令但不是每次都很準,因為LEGO NXT 認為已經轉到的角度不一定會剛好等於驅動馬達實際轉到的角度。




NXC 讀取角度指令:MotorTachoCount (Output)
讀取驅動馬達從一開始到讀取時的「累計」角度,可用於計算距離。

2010年9月20日 星期一

樂高 NXT 軌跡車二

    如果你用「一左一右」前進方式的LEGO NXT 軌跡車,會發現NXT速度較慢而驅動馬達走走停停,難道沒有更好的方式嗎??   當然有......因為到羅馬的方式不只有一種,現在介紹另一種方式是同時供電給兩顆驅動馬達,但電力會因光感應器的數值變化而持續「左右微調」的 PID控制方式,這次只用到 Proportional(比例)就夠了下次再加入 I 與 D。

P:Proportional(比例)     I:Integrative(積分)   D: Derivative(微分)

參考資料 :J. Sluka 網站的內容

    很多人說學數學只要會加減乘除就夠了幹麼學微積分上超市買菜又用不到,但這時候玩LEGO NXT你就會用到了,邏輯與數學在LEGO NXT上是非常重要的學習領域,而且從玩LEGO NXT的遊戲中學習邏輯與數學是最自然不過了因為你要現學現用才能玩 。


目標:讓LEGO NXT 軌跡車用「較平順」的走法沿著黑色膠帶前進


這是在下的組裝的第一種 NXT車體前面有超音波感應器能偵測前方是否有障礙物 ,旁邊有光感應器用來維持NXT軌跡車在黑色路線上前進






























第二種 NXT車體重點在於很容易加裝各種感應器與已安裝第三顆驅動馬達備用







NXC:程式碼




























範例影片








樂高 NXT 軌跡車一

利用光感應器尋著黑線走幾乎是玩LEGO NXT的基本課題,有點像學寫程式的第一個範例永遠都是「Hello World」!!

所需材料:
  1. 白色珍珠板一塊約2公尺*1公尺
  2. 黑色膠帶一卷
  3. LEGO NXT 本體
  4. Motor 驅動馬達兩個
  5. Light Sensor 光感應器一個
  6. LEGO建構零件
  7. 想像力...................^_^

目標:讓LEGO NXT 軌跡車沿著黑色膠帶前進

    首先用黑色膠帶在白色珍珠板上圍成一個類似橢圓形的空間這將是NXT軌跡車要走的路線,再來就是組成一台軌跡車,要注意的是安裝光感應器時發光面盡可能與地面成90度且越接近地面越好(約0.5公分以內),這是因為光感應器容易受到其他光源的干擾,會造成LEGO NXT在讀取光感應器時數據偏差。


    這是在下的組裝成品外觀 大家可以自發揮只要類似即可,最重要的是光感應器安裝位置盡可能在中央。


















































    這是LEGO NXT 軌跡車 NXC程式碼,當Light Sensor的讀取數值 >=45 時代表在白色區域所以
    對A Port馬達供電50同時對C Port馬達停止供電,而遇到當Light Sensor的讀取數值 <45 時代表在黑色區域所以對C Port馬達供電50同時對A Port馬達停止供電,如此一來LEGO NXT 軌跡車就會一左一右的前進。






























    實際執行時的畫面

    樂高 NXT 抓球機器人

    這是一個會自動找尋桌面上球體的 NXT,所以頭頂上的超音波感應器遇到球體時會用抓子抓取球體。







































     



























































    樂高 NXT 搬運機器人

    這幾天試著組裝一個搬運機器人,同樣也是用超音波感應器來搜尋桌面上的物件,這次是用搬運的方式來移動物件。


    這次加裝「光線感應器 」用來判斷 LEGO NXT 是否走到桌面邊緣防止掉落,另外在馬達上也安裝一個「碰觸感應器」用來停止馬達搬運的開關。




























































    網路上 NXT 影片分享

    玩 LEGO NXT 除了自己組裝與寫程式還要多參考別人的分享案例,正所謂「人外有人、天外有天」尤其是 NXT 外觀變化多端有些網友的組裝外觀就是很酷,所以這篇文張是專門分享這些網址資訊。