2012-03-07

MATLAB SIMULINK內建支援NXT樂高機器人


幾年前就有玩家利用MATLAB控制NXT樂高機器人,但是過程比較複雜,需要安裝驅動程式,設定一堆東西。

(請參考RWTH - Mindstorms NXT Toolbox for MATLAB

現在MATLAB SIMULINK R2012a 直接內建支援NXT樂高機器人。學生版也可以使用。

LEGO MINDSTORMS NXT Support with MATLAB and Simulink

這樣設計的用意是:原本在電腦上模擬的動態控制可以落實到真正硬體應用,SIMULINK目前支援兩種硬體,

包含LEGO MINDSTORMS NXT Support with SimulinkBeagleBoard Support with Simulink

(請參考Simulink說明:Run Simulink Models on Supported Target Hardware

使用上,除了簡單方便的安裝方式,還支援許多感應器:包括陀螺儀,加速度計,彩色感應器等。

MATLAB部落格也發文介紹自家產品,請參考Running Simulink models on LEGO MINDSTORMS NXT

簡單連結下面兩個影片比一比:

使用前:




使用後:






(別忘了MATLAB是採用nxtOSEK的韌體!

高中以上學校的老師或同學可以試試看,說不定今年的MATLAB研討會就會展示NXT呢?!

2012.3.18更新:

謝謝大雄老師很熱心地測試,請參考本篇文章回應的討論。





2 則留言:

  1. 忍不住要跳出來替nxt-g喊冤一下。

    雖然我本身也是matlab的愛好者,但是matlab用線性尋跡,g用二元循跡,這個比較差太多辣~~~
    (但是就算g的程式架構改成跟matlab的一樣,彎道應該也沒matlab來的順,我猜)

    邱老師要替nxt-g平反呀XD
    [版主回覆03/14/2012 10:37:21]謝謝大雄老師的平反說明。

    這種使用前使用後的比較,的確需要仔細思考比較的基準。

    我想原始文章裡只是要說明作者一開始利用NXT-G控制NXT,後來發現MATLAB也可以寫程式操縱NXT。

    其實拿NXT-G與MATLAB比較,當然不太公平。我在文中也請大家注意第2部影片是使用nxtOSEK軔體。

    我不是程式設計專家,但就我的認知,控制機器人需要經過下列的程序才能完成:

    程式-->編譯器-->軔體-->硬體

    在硬體相同的情況下,就算程式架構一模一樣,還是會受到編譯器與軔體的影響。

    MATLAB用到nxtOSEK的軔體,所以當然沒得比。

    但是再想一想,NXC,LVEE,不都是可以使用NXT官方軔體嗎?

    那麼這三者(NXT-G, NXC, LV)的表現又如何呢?

    我不得不說這就是NXT-G可憐的地方,(真不知道NI在搞什麼,為了凸顯LABVIEW的功能才是強大的?)

    其實NXT-G可以更好,更強 (請LEGO不要用『為了適合小朋友使用』的話術來塘塞我)

    或許一個好的軟體可以簡易親民,也能夠變化萬千,才不辜負(禁錮)NXT硬體啊!

    還請大雄老師試試以NXT-G模擬MATLAB程式,試試看P control架構是否能夠降低編譯器及軔體的影響。

    回覆刪除
  2. 昨天找時間去台中玩樂高手教室測試,測試結果是P control是可以有效改善機器人運動方式。

    其中最讓我驚訝一點是,如果真的照著SIMULINK介紹頁的程式碼去模擬,你的車子是跑不動的!!!
    這點,相信很多人在沒有實作之前是沒想到的。

    http://www.youtube.com/watch?v=BU7CF09l9xk

    [版主回覆03/18/2012 11:43:54]比例控制的確有效,感謝大雄老師的測試!

    其實仔細觀看原作者的影片,你會發現MATLAB的程式碼跟部落格網頁也不相同喔!

    (可見有一點模糊焦點的味道)

    大雄老師更改兩個變數,提升機器人的速度,大家可以學習看看。

    我想是不是不用更改Steering參數,只要將10的基速值提高,就能加速呢?

    歡迎大家提出討論。


    回覆刪除

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