2018-03-09 mBot 循線軌跡設計 (適應各種顏色與反光程度的平面)

資訊教育

mBot 循線軌跡設計 (適應各種顏色與反光程度的平面)

由於各種平面的顏色與反光程度不一,單使用黑色軌跡不足以讓 mBot 順利循線前進。使用常見的「PVC絕緣膠帶」,選擇「黑」「白」兩色,以「黑白黑」或「白黑白」的交錯方式佈設,將 mBot 的循線範圍限制在外側兩線內,可適應於一般地面環境。

2018-03-03 mBot 如何使用 Gyroscope (陀螺儀) 自行走直線

資訊教育

mBot 如何使用 Gyroscope (陀螺儀) 自行走直線

這裡我們嘗試運用外部感應器讓 mBot 自行走直線 (straight line),也就是利用感應器回傳的數值來修正 mBot 的行走方向。可運用的感應器有「羅盤 (compass)」、「陀螺儀 (gyroscope)」與「加速計 (accelerometer)」,三者的差異可參考「Difference between Accelerometer , Compass ,Gyros or Gyroscope」。

而「走直線」在此意味著盡可能讓 mBot 朝著初始位置 (initial position) 所指的方向前進。起初嘗試運用「電子羅盤」指引方向,但容易受到地球磁場以外的磁性物質干擾,不利於 mBot 正確找到方向。因此,選擇「陀螺儀」來偵測 mBot 車體偏移情形,及時轉向,回到初始指向的路線。

  1. 選用陀螺儀「Me 3-Axis Accelerometer and Gyro Sensor」,裝置於 mBot 上,讀取 Z 軸資訊取得車體偏移情形。
     
  2. 車體相對於平面的靜止情況下,Z 軸的數值雖然上下起伏,尚在一定範圍內,其數值仍具參考價值。如將 USB 電源供應改為電池供電後,將明顯發現 Z 軸數值不斷偏移,隨著時間而增加 (可為負值),這樣便無法正確運用 Z 軸的數值了解車體偏向情形。推測或許是 drift 的問題,可參考關鍵字「gyro drift」搜尋相關文件。
  3. 如何修正 mBot 陀螺儀 Z 軸數值偏移的問題呢?
    首先,透過簡單的程式來紀錄「時間」與「Z 軸數值」的對應關係,「時間」則是 mBot 內部的計時器數值。取樣的過程,可以加入時間間隔,每隔0.5秒、1秒,或是0.1秒皆可。避免過於頻繁讀取,感應器未能及時反應,而取得極端數值。

    將數值紀錄於清單 (list) 中,再將此資料匯出,透過相關統計軟體來分析與計算。
  4. 觀察「時間」與「Z 軸數值」對應關係,排除掉過大或過小的數值,推測可能為線性關係 (linear),進一步使用統計軟體(如「Linear regression calculator」)分析與確認。下表數值中,也會發現當 Z 軸數值小於 -180 後,將變成 180;而大於 180 後,將變成 -180。在後面的程式中會針對這個問題做處理。

    Z 軸數值每秒大概會有接近 -3.0 的增加。
  5. 實際程式
    透過 calc_drift 函式,可以依實際請況自動取樣計算合適的 drift 值。或依據實際經驗,指定 drift 值,如 calc_drift2 函式。這裡修正所需的經驗數值約是 3.34。
  6. 上述方法,雖不能完美的直線行走,尚能於適當距離內完成近似直線的軌跡。正所謂「失之毫釐,差之千里」,初始指向的些微差異,隨著時間變化,終將使得 mBot 與目標位置漸行漸遠。
  7. 借用 Micro:bit 或其他的「電子羅盤 (磁強計)」,增加額外的觀察資訊,提供 mBot 判斷方向或許值得一試。

    下圖程式,將 Micro:bit 讀取到的方位感應值稍做判斷後,以數位信號方式與 mBot 溝通。

2018-02-22 Scratch 遊戲設計—3D 迷宮 (3D Maze)

資訊教育

Scratch 遊戲設計—3D 迷宮 (3D Maze)

設計重點

  1. 運用切片層疊的方式製造深度,產生立體效果
  2. 偵測球體與牆面的碰撞

JavaScript 版本 (適合手機與行動裝置)

https://scratch.mit.edu/projects/205525319/

 

參考資源:

2018-02-21 Scratch 模擬設計—紅綠燈與小綠人動畫 (Traffic Light with Animations)

資訊教育

Scratch 模擬設計—紅綠燈與小綠人動畫 (Traffic Light with Animations)

設計重點

  1. 模擬燈號(綠、黃、紅)顯示的時間順序,運用造型變化功能
  2. 設計小綠人快走或跑步動畫

JavaScript 版本 (適合手機與行動裝置)

https://scratch.mit.edu/projects/205311495/

 

參考資源:

2018-02-15 Ortho Robot 一個 2D 與 3D 轉換的遊戲

資訊教育

Ortho Robot 一個 2D 與 3D 轉換的遊戲

http://stabyourself.net/orthorobot/

2018-01-25 Scratch 遊戲設計—蝴蝶拼圖遊戲 (Butterfly Puzzle)

2018-01-04 Code.org 初學者常見問題分析

2017-12-15 Micro:bit 資源分享

資訊教育

Micro:bit 資源分享

2017-12-13 Scratch 進階技巧—視差捲動 (Parallax scrolling)

資訊教育

Scratch 進階技巧—視差捲動 (Parallax scrolling)

透過不同「深度」的「圖層」變化,越底層的背景移動速度越慢,藉以營造出距離玩家不同遠近的視覺效果。

範例中,技巧性的藏入一白色橫條,避免移動到畫面邊界時出現延遲的問題,增進畫面的平順。

https://scratch.mit.edu/projects/193202835/

 

參考文件:

2017-12-09 Linux 下使用 BLE (Bluetooth Low Energy) 與 Micro:bit 溝通

更多消息