曾經答應要翻譯文章,解釋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指令的差異,可以幫助我們更精確地使用這些功能。
歡迎討論,謝謝!
沒有留言:
張貼留言
探奇歡迎大家留言討論!謝謝分享你的意見。