置頂文字

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

2010年9月27日 星期一

樂高 NXT 升降平台

樂高 LEGO NXT 升降結構有很多種有興趣的人可以參考網路資料的樣式外觀再加以變化,而升降關節的連動機構是組裝重點,必須要不相互衝突又要能活動順暢。


所需材料:
  1. LEGO NXT 本體
  2. Motor 驅動馬達一個
  3. LEGO建構零件

目標:讓 LEGO NXT 能上下移動



第一部分先組裝升降的連動機構,在活動關節部份要用活動專用插銷這樣馬達在運轉時比較順暢,如果用一般插銷會比較緊驅動馬達的出力要比較大























































































先測試升降連動機構是否順暢














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 外觀變化多端有些網友的組裝外觀就是很酷,所以這篇文張是專門分享這些網址資訊。






























































    2010年9月12日 星期日

    第一篇 Blog 文章與樂高機器人 LEGO NXT 試玩

    常看別人的 Blog 文章沒想到有一天自己也會來寫個 Blog 趕潮流.....真是事事難料,其實一切的一切只是懶得把散落四處的 LEGO NXT 資料整合存在硬碟裡面 ( 生活中我有四台電腦工作沒人知道那台的資料最完整  ^_^ ) 因此寫在 Blog 成了最理想的儲存空間,隨處可寫隨處可存這就是網路與Blog的魅力.....這個 Blog 會存活多久 ? 我也不知道.....因為有人說「散漫」才是王道。


    第一篇 Blog 文章真是不知從何開始,在下雙手停在鍵盤上數十分鐘後腦中浮現國小時老師有說「起承轉合」是寫作的四大要素,因此要慎重構思這是第一篇文章千萬不能砸鍋,但隨即想想我只是個路人甲怎樣都輪不到我長篇大論.....隨意吧...想到什麼寫什麼 !!


    那就 Action !!


    在瀏覽網路時無意間知道 樂高 有出這種有可以自己寫程式操控並且有馬達可活動的科技積木,當下買一套(9797 + 9645)來玩,花了一點時間瞭解 NXT-G 軟體設計與 Upload 方式後,LEOG NXT 真的就會自行運作,當然過程中無數次的失敗與重來是一定要的啦

    在這推薦一個樂高資訊網站  探奇自然科學教室  ,邱老師非常熱心的收集樂高相關訊息並時常更新Blog內容有時還會有好康的團購資訊,建議大家一定要常去逛逛會有許多意想不到的收穫。

    首先要介紹一下LEGO NXT 有那些主要零件

    下面這張照片說明了 NXT 本體有4個輸入端與3個輸出端,而NXT與電腦連結的方式有USB與藍芽







    這些輸入端感應器與輸出端馬達的外觀與名稱如下:





    只有這些感應器可以使用嗎???當然不只囉   HiTechnic  這家公司專門為 LEGO NXT 生產許多不同功能的感應器如GPS、色彩感應器、壓力感應器等,有興趣的網友可以前往該公司網站瞧瞧


    NXT-G:當你買LEGO NXT 套件時裡面應該都有附一片開發軟體 NXT-G,這是LEGO NXT的圖形開發程式(英文介面),裡面有些範例讓初學者參考(國內也有出版 NXT-G 參考書),NXT-G 還有進階的Data Line 這部份比教複雜但是可以提供更多樣的設計變化。

     




    NXC:我是用Bricx Command Center  NXC 作為程式開發環境,這是一套免費的程式可以上網下載,安裝後你大概可以看到這樣的介面,雖然是用C語言開發但用的都是基本指令組合,有興趣的網友可以試試。

     

    RobotC :這是付費的開發工具由卡內基美隆大學出版的商業產品


    LabVIEW :這是很多 NXT-G 進階使用者的選擇,LabVIEW是圖形化開發介面但提供比NXT-G更多的功能與自由度。

    leJOS (NXJ) :這是用Java來撰寫程式,Java的應用非常廣泛目前熱門的Google Phone 作業系統 Android就是利用Java,Java的資源非常多且大部分免費。


    MRDS :微軟在機器人領域當然也不會缺席,目前有一套(Microsoft Robotics Developer Center)IDE 這是一套圖形化的開發介面(國內也有出版品),MRDS提供許多功能但是NXT必須跟電腦一直連線也就是程式執行時是電腦與NXT同時運作,電腦會讀取NXT的感應器資料做分析再傳送新的指令給NXT動作,但這一來一回的運算有時會感到NXT動作的延遲。如果你要用VS.NET C#、VB開發當然也可以網路上有許多資源等待你去發掘。

     








    其他的開發程式還相當多有機會再介紹 ,目前我選用BricxCC NXC作為主要開發工具,因為除了免費取得外其實際執行速度還蠻不錯的,往後在 Blog 上都將使用NXC 作為NXT的執行程式。