操作機器人的過程中,做台小車讓它能隨想法前進、後退、左轉、右轉是最基本的,前進、後退很簡單,只要讓兩個輪子同樣轉速正轉或逆轉就可以了,單純使用 Large Motor 分別控制兩個馬達就可以達到,不過,對於同時控制兩個馬達,可以使用 Move Steering 或 Move Tank
會比較方便。
使用 Move Steering
在〈EV3 Tutorial(4)Block 自訂與管理〉中使用過 Move Steering,這個 Block 可以則直接控制兩個馬達,Steering 設為 0
時,兩個馬達會以同樣方向與轉速運作,你可以使用其他選項來控制同時正轉或逆轉。
那麼轉彎呢?既然名為 Move Steering,表示使用它來控制車輛轉彎的話,方式是掌舵是類似的,EV3 主機會依 Steering 的數值設定,幫你分配兩個馬達的得到的 Power 設定值,以 Power 及 Rotations 為正值的情況來說,設定為 0
時,兩個馬達會以同樣的 Power 設定值轉動,此時 Steering 的箭頭圖示也會是直線:
Steering 設定為 25
到 50
之間時,上圖中,C 馬達得到的 Power 會小於 B 馬達,同樣時間內,C 馬達轉動的圈數就會小於 B 馬達,這時就會產生右轉的效果,設定為 50
時,C 馬達得到的 Power 設定值是 0
,也就是會停止不動,只有 B 馬達會轉動,如果你設計的車子兩輪間距,差不多是 EV3 主機的寬度,這時「差不多」是以右輪為圓心轉一個直角(Steering 圖示也會呈現直角狀態,不過摩擦力的關係,實際上轉動會小於 90
度):
當 Moving Steering 設定超過 50
,C 馬達得到的 Power 設定值為負值,也就是會逆轉,設定越接近 100
,C 馬達得到的 Power 設定值負值越大,這時就會如 Steering 圖示,以一個更小的圓轉動超過 90
度:
簡單來說,設定為 100
時,C 馬達的轉動方向開始與 B 馬達相反,而轉圈數相同,如果你設計的車子兩輪間距,差不多是 EV3 主機的寬度,這時「差不多」會達到以兩輪間中點為圓心、原地旋轉差不多 180
度的效果(摩擦力的關係,實際上轉動會小於 180
度):
依此規則,以 Power 及 Rotations 為正值的情況來說,0
~ 100
的設定範圍下,就是 B 全力正轉,而 C 從全力正轉到全力逆轉的過程,反之,0
~ -100
的設定範圍下,就是 C 全力正轉,而 B 從全力正轉到全力逆轉的過程。
在 Rotations 設定為 1
的情況下,如果設定為 Steering
設定為 25
,C 馬達差不多只轉半圈,設定為 50
時不轉,設定為 75
時逆轉半圈,設定為 100
時逆轉一圈。
瞭解 Move Steering 的運作,主要是在需要精確控制轉動時使用,這會比盲目測試各種數值來希望有符合角度、轉動半徑的結果來得實際一些,畢竟你設計的車子兩輪間距,不一定會「差不多」是 EV3 主機的寬度。
想精確控制就需要一點數學了,來出個小題目,想讓車子能像下圖轉動個四分之一圓,你要怎麼設計呢(基本上是兩輪圓周長分別與內圓與外圓軌跡長度的關係)?
你可能會有各種轉動需求,試著解解這題,對其他轉動需求要如何計算就會有幫助。
使用 Move Tank
Move Steering 藉由調整 Steering 的值,讓 EV3 去分配兩個馬達得到的 Power 設定值,有時你希望獨立地控制兩個馬達的 Power 設定值,這時可以使用 Move Tank:
我是沒開過坦克,不過猜想坦克也可以獨立地控制兩邊輪子的轉動吧!因此這個元件才取名為 Move Tank。
如果 Rotations 或 Degree 都是正值,馬達的 Power 設定值為正,就會以 Rotations 或 Degree 設定的值正轉,Power 設定值為負就是逆轉了,如果 B、C 馬達的 Power 設定值各為 100
與 25
,而 Degree 設定為 360
,那 B 馬達會轉約 360
度,而 C 馬達會轉約 90
度,也就是分配到的比率正是 100 : 25
,使用 Rotations 設定時,也是類似的推算。
上面的題目,當然也可以使用 Move Tank 來達到目的,你可以試著算算看,不過來看看另一個題目,想讓車子以兩輪間距中點為圓心來原地右轉 n 度,該怎麼計算?
在 B 與 C 的 Power 功率值一正一負而絕對值相同下,例如 50
、-50
,算出來的公式是得讓 Move Tank 接受 n * R / r
的值(基本上是其中一輪的圓周長與 n 度下畫出來的圓周長關係)。
當然,最好的方式,就是將這類轉動自訂 Block,這樣你要轉幾度,就只要設定 n 值就可以了:
在圖型化程式設計的環境中,彈性不見得是最重要的考量,盡量讓程式畫面簡潔會是重點,要多使用適當的註解,輔助程式流程的意圖。
灰色註解文字,可以在 EV3 開發環境右上點選「Comment」圖示來新增,藍色註解方塊,則可以在藍色的 Advanced Block 區新增。