2011-04-14

關於NXT樂高機器人的『實驗』


看了太多的流言終結者,探奇決定也來動手試試看。

成人的大腦由於學習太多,許多事情根據『經驗』判斷,都認為是理所當然,

結果等到學員提出問題時,才發現事情不是像『憨人』所想得這麼簡單,

我常常發生這種令人出糗的狀況,所以還是不要鐵齒,動手做做看。

今天要做的實驗有兩則:

1. NXT具備藍牙通訊,每台主機NXT(Master)可以連接三台從機(Slave),那麼可以無限制地連下去嗎?

也就是NXT M----- NXT S1------NXT SS1
                               |                           |
                               --NXT S2        ----NXT SS2
                               |                           |
                               --NXT S3         ---NXT SS3

從上面來看NXT S1這台機器具備了兩種身份,NXT M的一號從機,NXT SS1的主機。

探奇做了兩個實驗,

第一個實驗是手動藍牙連線,由NXT M連線到NXT S1,再由NXT S1連線到NXT SS1,三台NXT都出現『<>』圖形,表示連線成功。

接著從NXT M傳檔案到NXT S1,結果正常。再從NXT S1傳送檔案到NXT SS1,傳輸成功,但是NXT M變成『<』圖形,表示斷線,這時NXT M無法再次傳送檔案。

第二個實驗是手動連線,同樣依序連線,這次用NXT-G程式傳送藍牙訊號,NXT M送訊號到NXT S1,NXT S1無法正常送訊號給NXT SS1。

如果由NXT S1依序送訊號給NXT M及NXT SS1,只有NXT SS1收到訊號,同時間NXT S1與NXT M的藍牙斷線。

有點複雜,不過看起來 NXT-G是無法如此連線。

或許使用藍牙命令,各台NXT發訊前主動連線,發訊後主動斷線,也許可以多台連接。再實驗看看。不過藍牙連連斷斷實在很花時間。

不知道其他程式語言LabVIEW或NXC可以成功嗎?

還請大家一起實驗討論。

2. 連接三顆馬達到NXT主機,分別是ABC。執行NXT-G程式,程式中只有一個命令方塊,MOVE Block,同時勾選ABC,Duration選擇1 Rotation(一圈),預期執行後的結果是三顆馬達同時轉動一圈,結果卻是....

BC順利地轉動一圈,並且有PID控制,在快到一圈時減低速度,停在一圈的位置。

但是A馬達只轉了大約半圈就突然停止。

我可以很肯定A馬達沒有故障,因為只勾選一顆馬達或兩顆馬達,都是正常旋轉一圈,不論是AC還是BC,或是AB,單獨A馬達,都是正常。

探奇推想是NXT-G的Bug,還需要求證。

當你需要三顆馬達同時動作,並且控制轉動角度或圈數時,需要想想其他方法解決。

今天的NXT樂高機器人實驗結束,歡迎大家一起測試討論。




1 則留言:

  1. 邱老師您好,
    謝謝你進行這個試驗,其實我就是「藍芽通訊」網路流言的禍首,正好最近在試驗藍芽模組,對它們的運作有更進一步了解。
    NXT所用的藍芽模組是用 CSR 晶片,模組內部韌體只能設定 Master 或 Slave其中一種狀態,NXT-G及傳檔沒辦法兩者狀態切來切去。
    對於 NXC 及 leJOS 應該可以透過程式設計技巧變換,只是這程式會非常複雜,可惜我沒有那麼多NXT可以證明。
    [版主回覆04/18/2011 12:08:31]Bridan大大,您好:

    你有提到這方面的流言嗎?

    最近是有聽到一些同好認為NXT的藍牙功能可以無限連接,所以決定試試看,將實驗結果提出來討論。

    以目前NXT-G Block只能做到由Master主動連線,掌控藍牙狀態,所以應該也可以『通訊前建立連線,通訊後主動斷線』,將藍牙空出,不過這樣就無法『即時』通訊。

    至於NXC 或 leJOS程式就等待您完成後再作測試。


    回覆刪除

探奇歡迎大家留言討論!謝謝分享你的意見。