想到我曾經發過一篇文章介紹如何利用App Inventor 2 撰寫應用程式,在手機平板透過藍牙遙控mBot。(請參考探奇文章:App Inventor 2 控制 mBot)
再加上前一陣子Makeblock公司推出新版的mBot App Inventor 函式庫(Ver 1.9),邱老師當然想挑戰看看,利用 App Inventor 2 寫一個 App,以聲音控制mBot。
其實整個聲控計畫的想法很單純,利用現成的Google 語音辨識,將辨識出來的口語命令對應到相對的mBot機器人指令。
首先設計使用介面,將需要的按鍵,文字框拖放到主畫面。
mBot的函式庫需要自行從Extension輸入URL網址匯入,語音辨識 SpeechRecognizer 則是從Media類別拖拉出來(如下圖)
這兩個函式庫都是隱藏不可見的,所以會列在主畫面的下方。
全部程式很簡單,設置按鍵按下後的動作。
以下面這張圖說明程式操作流程:
1. 按下按鍵,藍牙連接mBot。(Call MBot1.ConnectToRobot)
2. 藍牙連接成功後(When MBot1.Connected),mBot亮綠燈(Call MBot1.SetRGBLEDColor),另外還加上一個蜂鳴器發聲指令(Call MBot1.PlayNote),提醒玩家藍牙已經連接,不過發聲指令似乎沒有作用。
4. 根據語音辨識結果,將這個字串( SpeechRecognizer1.Result)與口語命令單字比較,若是相同,就執行相對應的mBot機器人命令。
改版之後的mBot 函式庫1.9,新增了一些指令,藍牙連接也比較簡單,在這裡直接連接藍牙,不用從清單選擇連線對象。
(或許太過簡單,偶爾藍牙連線會失敗,導致App閃退(確實原因暫時不明))
藍牙連線寫得很完整,如果藍牙沒有開啟,會自動開啟藍牙。還會像Makeblock App,主動要求你將手機平板靠近mBot機器人。
連線中,
連線成功時,畫面會像下圖顯示mBot的藍牙地址 Mac Address
為了維持藍牙正常連接,我還特地增加停止藍牙連線的按鍵,斷線後會告知『No device Connected』
連線之後的操作很簡單,按下『語音辨識』按鍵,出現Google語音視窗,對這手機說出命令單字,目前有『前進、後退、停止、紅燈、藍燈、綠燈』6個命令,也就是6個If指令。
說出指令,辨識完成,會將剛才的口語辨識結果寫在螢幕畫面。
橫向螢幕也ok,需要Android 4.0以上才能執行(?)
示範影片如下:
這個程式非常陽春,還可以擴充許多東西。
語音辨識的結果需要完整句子,比較不容易出錯,Google會自動根據前後文調整字句,這樣辨識度會更高。再利用字串處理,挑出關鍵字,控制能力會更好。
不過語音辨識反應速度較慢,所以我特別製作一個Stop按鍵,萬一出現語音辨識錯誤或失敗,還可以手動緊急停止mBot。
我已經將Apk及aia檔案放在『mBot 機器人 mBlock 教學問答』臉書社團的檔案庫,
歡迎大家下載安裝。下一步或許就去繳交Google Play Developer註冊費,將App上架。
你有什麼好主意呢?歡迎討論!
沒有留言:
張貼留言
探奇歡迎大家留言討論!謝謝分享你的意見。