2007-03-26

NXT-G MOVE 和 MOTOR 指令的不同

曾經答應要翻譯文章,解釋MOVE 與MOTOR的不同。拖到現在,真是不好意思。


LEGO ENGINEERING 2.0的資料庫,有兩個地方分別解釋MOVE與MOTOR不同之處。


請參閱Motor vs. Move (Part I: The Control Algorithm)或是Knowledge base


簡單說明如下:


MOTOR指令可以單純地控制馬達轉動或停止。就好像一個開關,雖然可以馬達設定轉動時間(或是轉動圈數),但是可能產生跑過頭的現象(特別是馬力太大的時候),也就是Oevrshooting。這一點可能影響機器人行走時的精確性。


MOVE指令則提供了內建的控制模式,NXT透過角度感應器,在馬達快要完成指定動作時,放慢馬達旋轉速度,精確停在指定角度(或旋轉圈數)。


就好比開汽車遇到紅燈。使用MOTOR指令,在停車線才猛力採煞車,車輛勢必因為慣性,衝出停車線。


使用MOVE指令,則在停止線前50公尺放慢速度,輕採煞車,車子可以準確地停在煞車線之前。


Motor vs. Move (Part I: The Control Algorithm)有很精彩的影片示範,


使用MOVE指令時,機器人可以停在樂高人偶前;使用MOTOR指令,機器人衝過頭,撞倒人偶,再後退。


如果想要精確控制機器人的動作,例如定點停止,尋找軌跡(避免衝過頭),也許可以考慮使用MOVE指令。不用真的去管PID Control這些複雜的控制演算法。(反正筆者也不懂


探奇教室也做了一段簡單測試,歡迎觀賞。



我們同樣使用POWER=75,Duration=1 rotation


使用MOVE指令:馬達旋轉從六點鐘方向逆時針旋轉,轉到1點鐘時,速度放慢,最後停止在六點鐘方向(大概超過一點點再迴轉)。


使用MOTOR指令:馬達沒有任何減速動作,衝出超過約25-30度,才再迴轉至六點鐘方向。


瞭解MOVE與MOTOR指令的差異,可以幫助我們更精確地使用這些功能。


歡迎討論,謝謝!


沒有留言:

張貼留言

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