CAVE 的 Robocon雜誌專欄:輕鬆使用Android裝置控制樂高機器人,2013年1月號來囉!http://pansci.tw/archives/32950
2012年可是紮紮實實寫了六篇呢!一起回顧一下吧。
以下節錄本期精彩內容, 請各位好朋友點選文章最上端連結來看全文唷.
===========================================
本期的App Inventor機器人專欄要藉由手機的傾斜程度來控制機器人的動作。本範例使用了姿態感測器(Orientation Sensor)的X、Y軸向資訊來共同決定樂高機器人的左右馬達電力,並同時控制畫面上的CAVE小圖案移動。本範例與2012年7月號的〈單點觸控〉的 概念很相似,只是訊號來源由觸控點座標改為姿態感測器變化量而已。在數學運算上用到了sin與cos等基礎三角函數,對於學生來說是個相當不錯的練習機 會。
姿態感測器主要感應手機方位的變化,回傳了三個軸向的傾斜角度,分別是X軸:俯仰(Pitch)、Y軸:翻滾(Roll)與Z軸:旋轉(Yaw)。
所有的計算都是在OrientationSensor1.OrientationChanged事件中完成,只要姿態感測器任一軸向的資訊有改變就會自動呼叫本事件並執行其中內容。以下依序說明:
1.移動CAVE小圖案:使用ImageSprite.MoveTo指令,將XY欄位指定為ImageSprite.X – roll以及ImageSprite.Y – pitch,這樣當您搖晃手機時,可愛的CAVE小圖案也會在畫面上漂來漂去,相當有趣。請注意當CAVE小圖案沿著Y軸正向移動時,這時候增加的是pitch而不是roll,不要搞錯囉!
2.更新變數:
- angle = OrientationSensor.Angle – 45:取得手機傾斜角並進行偏量補償,方便馬達電力計算。
- power = OrientationSensor.Magnitude * 200:OrientationSensor.Magnitude是一個介於0到1之間的小數,代表手機的傾斜程度,您可以調整200這個常數來放大或縮小傾斜程度對於機器人電力的影響。雖然馬達電力範圍為-100到100,但超過也沒關係,馬達電力不會因此而受影響。
- LMotor = cos(angle) * power:左馬達電力
- RMotor = sin(angle) * power:左馬達電力
*註:您可以堅持老派風格,也就是使用pitch與roll變數值,搭配三角函數計算之後一樣能有相同的機器人控制效果。但本範例使用姿態感測器的angle與Magnitude這兩項變數,也是另一種作法。
3.顯示變數於標籤上:將 pitch與roll的資訊更新在Label_Orientation標籤上,並將左右馬達電力LMotor與RMotor更新在Label_Motor 標籤上。為避免單一字串過長,我們使用make text指令將多個字串組合在一起,這在各程式語言中都是常見的技巧。
4.轉動馬達:最後把LMotor與RMotor變數值分別指定給NxtDrive_B與NxtDrive_C的MoveforwardIndefinitely指令就可以讓兩個馬達根據手機傾斜狀況來運動了。
圖8a 手機向前傾斜,機器人前進,馬達電力為(52,49)。
圖8b 手機向右傾斜,機器人原地右轉,馬達電力為(55,-57)。
圖8c 兩個向左後方傾斜,機器人向左後方轉彎,馬達電力為(-37,-7)。
歡迎大家由這個下載本程式來玩玩看!或掃描以下的QRCode也可以唷!更多有趣的機器人app請在Google Play搜尋「CAVE 教育團隊」就找得到了。