延續先前的水果分類器教學,今天來和機器人結合吧。一樣使用 MIT App Inventor 的 Personal Image Classifier 網站來訓練以下三種路牌。請實際印出來並放在之後機器人要執行的環境中來行走,這樣效果會比較好。最後把訓練好的 .model 檔上傳到您的 App Inventor 專案中。離線視覺辨識app 就完成囉! 訓練神經網路請參考本文 https://blog.cavedu.com/2019/08/27/app-inventor-image-classifier
樂高機器人組裝範例,基本上就是雙輪器人搭配一個可以放手機的地方就可以囉。其實按照這樣的架構,除了樂高機器人以外,其他任何支援藍牙或 W-Fi的機器人平台 (Arduino / 7697 / microbit) 都可以依樣畫葫蘆。但有了EV3元件 (CAVEDU寫的喔) 就不需要寫 EV3 端的程式,可以節省很多時間了! App Inventor結合其他物聯網開發板的文章請參考:http://www.appinventor.tw/iot App Inventor端 請先與EV3配對完成,這樣才能在app 的 listpicker 中找到它。 Designer頁面設定請由MIT App Inventor 網站下載 personalImageClassifier擴充檔,或由此下載 .aia原始檔。再匯入您的 App Inventor 專案即可。請注意,PIC元件無法像 Sound元件一樣,無法透過程式指令在執行過程中修改所使用的 model (Sound元件可以隨時修改其 Source 來源檔案) 本專案元件說明如下,您之後可以根據個人需要來修改介面配置:
BlocksSTEP1 PIC元件相關設定 當PIC元件準備完成之後,把在PIC網站上訓練好的模型的 ModelLabel 顯示在Label 上。可以先檢查有沒有匯入錯的辨識模型檔。 STEP2 如果PIC元件發生錯誤的話,把 errorCode 顯示出來 STEP3 EV3的藍牙連線設定 按下 ListPicker,選擇已配對好的EV3,連線成功的話就會讓 Clock 的 timer 啟動來辨識物體。斷線的則一如往常簡單,呼叫 BluetoothClient 的 Disconnect 指令就好。
| STEP4 連續辨識影像 水果辨識器的做法是按下按鈕才辨識一次,但在此希望機器人能連續辨識來做出對應的粽剁,所以改用 Clock。在此設定 clock 的 Timerinterval 為100,請根據實際狀況來調整這個參數,太快太慢都要拿捏一下。 STEP5 取得辨識結果與信心指數並控制機器人 在PIC元件的 GotClassification事件中,所回傳的 result 是 (類別名稱, 信心指數) 的清單,例如 (apple, 0.763)。信心指數原為 0~1之間的小數,在此 x 100 轉換為百分比。 在此先檢查信心指數 (value) 是否大於60,並進一步根據辨識結果來執行對應的動作。EV3motor 的 RotateSyncIndefinetly 可設定 power (馬達轉速) 與 turnRatio (轉彎百分比)turnRatio 設為 0 代表前進不轉彎,> 0 則代表右轉,一路到 100 就會變成原地右轉,但轉彎的效果會根據您機器人的架構而定。 < 0 則代表左轉。 如果您發現 turnRatio > 0 機器人卻左轉的話,請把左右馬達的電線對調即可。 注意,在此使用了 local variable 區域變數 (class, value),如果您覺得不太習慣的話,改用全域變數也可以。 執行畫面開啟程式會直接開啟相機鏡頭並顯示於app中的 WebViewer元件,隨後會看到 ModelLabel (模型可分辨的影像類別)。點選 Listpicker 來選取您的EV3 (利如下圖中的 00:16:53:49:28:47),連線成功之後機器人就會開始移動。沒看到路牌就會前進,如果看到路牌就會執行對應的左轉、右轉與停止等動作,一起來玩玩看吧!
相關連結: |