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