基于Android手機語音和Arduino控制板的機器人控制系統
引 言
能夠用語音與機器進行交流,讓機器明白你說什么,這是人們長期以來夢寐以求的事情。隨著科學技術的不斷發(fā)展,出現了語音識別技術,這使人類的這個理想逐漸得以實現。本文以 Android 智能機和 Arduino 開發(fā)板為實現工具,結合家用仿人機器人平臺,搭建好完整的語音識別控制系統,用戶利用安卓手機提供的麥克風語音命令,輸入語音信號經處理、識別,得出結果作用于服務機器人的行動動作,從而提供一種高效的、穩(wěn)定的、實用性強的、高識別率的語音控制服務機器人系統。
1 系統總體方案設計
本文介紹的語音控制機器人服務系統包括安卓智能手機、 Arduino 主控制板、32 路伺服舵機控制板以及機械系統四大 部分組成。其中安卓手機不但充當采集語音信號的作用和將采 集完的的語音信號發(fā)送到谷歌語音云平臺進行識別,并將識 別的語音結果返回,而且還充當發(fā)送控制標志位的角色。對 于機器人的控制界面是運行在安卓操作系統上的應用程序,該 程序是利用 eclipse 和安卓插件搭建的平臺而開發(fā)出來的,通 過在安卓操作系統的手機運行調試應用程序,直到達到滿意 的效果。總體框架圖如圖 1 所示。
2 分析及設計
2.1 硬件總體設計 本系統的硬件控制部分由 Arduino Mega2560 和奧松公司 的 32 路伺服電機組成,實現對機器臂的控制。通過 Arduino 控制板外接外部傳感器可以檢測外部的環(huán)境參數,另外,為 了實現藍牙的通信,利用 Arduino 控制板的串口外接 RB Bluetooth Transceive 藍牙轉串口模塊,利用該模塊可以將藍牙 信號轉換成串口信號。軟件控終端用的是三星手機 GTi8150, 該手機的操作系統是 Android 2.3 版本。
本系統的通信部分涉及到三部分 :第一處是安卓手機通 過 GPRS 信號和谷歌云平臺的通信,該通信遵守 GPRS 通信 的協議。第二處是安卓手機和控制板之間的通信,此處利用的 是藍牙模塊來實現二者之間的無線通信,這里主要是從手機 發(fā)送機器人的動作控制標志位給主控制板。第三處則是舵機 控制板和主控板之間通過串口的通信,其通信遵守串口的通信 協議,這里主要是主控板將機器人的動作指令根據觸發(fā)的控 制標志位來發(fā)送給舵機控制板指令。
本系統的舵機控制板主要負責給各個舵機提供電源和解 析發(fā)送過來的動作指令來控制舵機的目的。因為機器人的動作 指令是根據舵機控制板的軟件生成的,生成指令是通過 USB 轉串口將 PC 和舵機控制板連接,而舵機則跟舵機控制板連 接,當連接成功后,就可以通過軟件控制和調節(jié)各個舵機的 轉動角度。同時要注意動作完成時間參數的調節(jié),這個影響到 舵機轉動的速度。調節(jié)逐個舵機來對機器人的動作步調來進 行規(guī)劃,規(guī)劃完成則保存相應的指令,并編寫程序實現對該 arduino 主控板的控制。所以這里舵機控制板能夠根據發(fā)送過來的動作指令來控制機器人的動作。
2.2 程序設計
系統軟件主要包括兩部分,一部分是安卓系統上的控制 程序的設計,包括語音識別的控制和手動按鍵的控制,另外 一部分是 Arduino 控制板中程序的設計。
安卓系統端軟件的設計主要是利用手機的麥克風功能實 現語音的輸入,并且通過谷歌的語音引擎來實現對輸入語音 的識別,該系統軟件語音識別部分流程如圖 2 所示。
當換成手動輸入時,直接根據相應的按鍵發(fā)送相應的觸 發(fā)標志到 Arduino 控制板。本系統的特色主要是實現語音的 控制。
Arduino 控制板端的程序主要是根據手機端發(fā)送過來 的信號來發(fā)送相應的指令給舵機控制板來控制機器臂,其 Arduino 控制端程序流程圖如圖 3 所示。
手機端控制系統是基于 Android 2.1系統所編寫的,所用 開發(fā)工具為 Eclipse 集成開發(fā)環(huán)境,Eclipse 是著名的跨平臺的 自由集成開發(fā)環(huán)境(IDE)。最初主要用來 Java 語言開發(fā),但 是目前亦有人通過插件使其作為其他計算機語言比如 C++、 Python 和 Android 的開發(fā)工具,在此開發(fā)環(huán)境下開發(fā)軟件非 常的方便。設計本系統手機端軟件的程序界面,為了盡快實現 程序的功能,本程序沒有對軟件界面設計做特別美化的設計, 僅包含我們所用到的幾個按鈕和圖形顯示,以實現我們的功能 為最大目標,設計手機端控制界面如圖 4 所示。
3 測試與試驗分析
該系統組裝并調試,測試該系統,控制的機器人如圖 5 所示,通過安卓手機軟件實現機器人的運動控制,通過觸擊按鍵或者語音的輸入來對每組命令進行循環(huán)測試??梢暂斎氲恼Z音命令有前進、后退、左轉、右轉、停止、擁抱、敬禮、叉腰、招手等動作。
具體測試步驟:
連接好線路,打開電源,觀察知識點正常亮起,觸擊控制界面的藍牙連接按鈕,觀察指示燈,以確保手機藍牙和Arduino 開發(fā)板的配對連接成功。否則,得檢查系統的連接是否正確。
圖4 手機端控制界面圖5 機器人
藍牙配對連接成功后,先測試手動操作是否成功,分別觸擊前進、后退、左轉、右轉、停止按鈕,觀測機器人是否根據對應的指令做相應的運動。循環(huán)測試多次,保證系統的穩(wěn)定。
測試完手動操作按鈕之后,接下來測試語音控制的輸入, 觸擊語音輸入控制按鈕,會出來一個虛擬的麥克風,對著手機話筒說出前進,后退等控制命令,觀測機器人是否能夠根據你的語音來實現相應的運動。循環(huán)測試多次,保證系統的穩(wěn)定。
最后試驗分析,該控制程序能夠穩(wěn)定的實現都機器人運動的控制,達到了預訂的目標和效果。
結 語
設計基于Android 系統手機和 Arduino 控制板的機器人控制系統,通過接收人的語音或者按鍵來操作機器人的運動狀態(tài),采用安卓智能手機來進行語音的處理和谷歌云平臺對語音的識別,利用藍牙來進行數據的通信,舵機控制板軟件規(guī)劃出機器人的各種動作并且生成的動作指令,最后由控制板來實現完成該相應的動作。利用了藍牙無線通信,擺脫有線困擾,使得系統有廣泛的適用范圍。