基于Android手機語音和Arduino控制板的機器人控制系統(tǒng)
引 言
能夠用語音與機器進(jìn)行交流,讓機器明白你說什么,這是人們長期以來夢寐以求的事情。隨著科學(xué)技術(shù)的不斷發(fā)展,出現(xiàn)了語音識別技術(shù),這使人類的這個理想逐漸得以實現(xiàn)。本文以 Android 智能機和 Arduino 開發(fā)板為實現(xiàn)工具,結(jié)合家用仿人機器人平臺,搭建好完整的語音識別控制系統(tǒng),用戶利用安卓手機提供的麥克風(fēng)語音命令,輸入語音信號經(jīng)處理、識別,得出結(jié)果作用于服務(wù)機器人的行動動作,從而提供一種高效的、穩(wěn)定的、實用性強的、高識別率的語音控制服務(wù)機器人系統(tǒng)。
1 系統(tǒng)總體方案設(shè)計
本文介紹的語音控制機器人服務(wù)系統(tǒng)包括安卓智能手機、 Arduino 主控制板、32 路伺服舵機控制板以及機械系統(tǒng)四大 部分組成。其中安卓手機不但充當(dāng)采集語音信號的作用和將采 集完的的語音信號發(fā)送到谷歌語音云平臺進(jìn)行識別,并將識 別的語音結(jié)果返回,而且還充當(dāng)發(fā)送控制標(biāo)志位的角色。對 于機器人的控制界面是運行在安卓操作系統(tǒng)上的應(yīng)用程序,該 程序是利用 eclipse 和安卓插件搭建的平臺而開發(fā)出來的,通 過在安卓操作系統(tǒng)的手機運行調(diào)試應(yīng)用程序,直到達(dá)到滿意 的效果??傮w框架圖如圖 1 所示。
2 分析及設(shè)計
2.1 硬件總體設(shè)計 本系統(tǒng)的硬件控制部分由 Arduino Mega2560 和奧松公司 的 32 路伺服電機組成,實現(xiàn)對機器臂的控制。通過 Arduino 控制板外接外部傳感器可以檢測外部的環(huán)境參數(shù),另外,為 了實現(xiàn)藍(lán)牙的通信,利用 Arduino 控制板的串口外接 RB Bluetooth Transceive 藍(lán)牙轉(zhuǎn)串口模塊,利用該模塊可以將藍(lán)牙 信號轉(zhuǎn)換成串口信號。軟件控終端用的是三星手機 GTi8150, 該手機的操作系統(tǒng)是 Android 2.3 版本。

本系統(tǒng)的通信部分涉及到三部分 :第一處是安卓手機通 過 GPRS 信號和谷歌云平臺的通信,該通信遵守 GPRS 通信 的協(xié)議。第二處是安卓手機和控制板之間的通信,此處利用的 是藍(lán)牙模塊來實現(xiàn)二者之間的無線通信,這里主要是從手機 發(fā)送機器人的動作控制標(biāo)志位給主控制板。第三處則是舵機 控制板和主控板之間通過串口的通信,其通信遵守串口的通信 協(xié)議,這里主要是主控板將機器人的動作指令根據(jù)觸發(fā)的控 制標(biāo)志位來發(fā)送給舵機控制板指令。
本系統(tǒng)的舵機控制板主要負(fù)責(zé)給各個舵機提供電源和解 析發(fā)送過來的動作指令來控制舵機的目的。因為機器人的動作 指令是根據(jù)舵機控制板的軟件生成的,生成指令是通過 USB 轉(zhuǎn)串口將 PC 和舵機控制板連接,而舵機則跟舵機控制板連 接,當(dāng)連接成功后,就可以通過軟件控制和調(diào)節(jié)各個舵機的 轉(zhuǎn)動角度。同時要注意動作完成時間參數(shù)的調(diào)節(jié),這個影響到 舵機轉(zhuǎn)動的速度。調(diào)節(jié)逐個舵機來對機器人的動作步調(diào)來進(jìn) 行規(guī)劃,規(guī)劃完成則保存相應(yīng)的指令,并編寫程序?qū)崿F(xiàn)對該 arduino 主控板的控制。所以這里舵機控制板能夠根據(jù)發(fā)送過來的動作指令來控制機器人的動作。
2.2 程序設(shè)計
系統(tǒng)軟件主要包括兩部分,一部分是安卓系統(tǒng)上的控制 程序的設(shè)計,包括語音識別的控制和手動按鍵的控制,另外 一部分是 Arduino 控制板中程序的設(shè)計。
安卓系統(tǒng)端軟件的設(shè)計主要是利用手機的麥克風(fēng)功能實 現(xiàn)語音的輸入,并且通過谷歌的語音引擎來實現(xiàn)對輸入語音 的識別,該系統(tǒng)軟件語音識別部分流程如圖 2 所示。
當(dāng)換成手動輸入時,直接根據(jù)相應(yīng)的按鍵發(fā)送相應(yīng)的觸 發(fā)標(biāo)志到 Arduino 控制板。本系統(tǒng)的特色主要是實現(xiàn)語音的 控制。
Arduino 控制板端的程序主要是根據(jù)手機端發(fā)送過來 的信號來發(fā)送相應(yīng)的指令給舵機控制板來控制機器臂,其 Arduino 控制端程序流程圖如圖 3 所示。

手機端控制系統(tǒng)是基于 Android 2.1系統(tǒng)所編寫的,所用 開發(fā)工具為 Eclipse 集成開發(fā)環(huán)境,Eclipse 是著名的跨平臺的 自由集成開發(fā)環(huán)境(IDE)。最初主要用來 Java 語言開發(fā),但 是目前亦有人通過插件使其作為其他計算機語言比如 C++、 Python 和 Android 的開發(fā)工具,在此開發(fā)環(huán)境下開發(fā)軟件非 常的方便。設(shè)計本系統(tǒng)手機端軟件的程序界面,為了盡快實現(xiàn) 程序的功能,本程序沒有對軟件界面設(shè)計做特別美化的設(shè)計, 僅包含我們所用到的幾個按鈕和圖形顯示,以實現(xiàn)我們的功能 為最大目標(biāo),設(shè)計手機端控制界面如圖 4 所示。
3 測試與試驗分析
該系統(tǒng)組裝并調(diào)試,測試該系統(tǒng),控制的機器人如圖 5 所示,通過安卓手機軟件實現(xiàn)機器人的運動控制,通過觸擊按鍵或者語音的輸入來對每組命令進(jìn)行循環(huán)測試??梢暂斎氲恼Z音命令有前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、停止、擁抱、敬禮、叉腰、招手等動作。
具體測試步驟:
連接好線路,打開電源,觀察知識點正常亮起,觸擊控制界面的藍(lán)牙連接按鈕,觀察指示燈,以確保手機藍(lán)牙和Arduino 開發(fā)板的配對連接成功。否則,得檢查系統(tǒng)的連接是否正確。
圖4 手機端控制界面圖5 機器人
藍(lán)牙配對連接成功后,先測試手動操作是否成功,分別觸擊前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、停止按鈕,觀測機器人是否根據(jù)對應(yīng)的指令做相應(yīng)的運動。循環(huán)測試多次,保證系統(tǒng)的穩(wěn)定。
測試完手動操作按鈕之后,接下來測試語音控制的輸入, 觸擊語音輸入控制按鈕,會出來一個虛擬的麥克風(fēng),對著手機話筒說出前進(jìn),后退等控制命令,觀測機器人是否能夠根據(jù)你的語音來實現(xiàn)相應(yīng)的運動。循環(huán)測試多次,保證系統(tǒng)的穩(wěn)定。
最后試驗分析,該控制程序能夠穩(wěn)定的實現(xiàn)都機器人運動的控制,達(dá)到了預(yù)訂的目標(biāo)和效果。
結(jié) 語
設(shè)計基于Android 系統(tǒng)手機和 Arduino 控制板的機器人控制系統(tǒng),通過接收人的語音或者按鍵來操作機器人的運動狀態(tài),采用安卓智能手機來進(jìn)行語音的處理和谷歌云平臺對語音的識別,利用藍(lán)牙來進(jìn)行數(shù)據(jù)的通信,舵機控制板軟件規(guī)劃出機器人的各種動作并且生成的動作指令,最后由控制板來實現(xiàn)完成該相應(yīng)的動作。利用了藍(lán)牙無線通信,擺脫有線困擾,使得系統(tǒng)有廣泛的適用范圍。