謝杰騰 顏曉文
摘 要:隨著Android終端的發(fā)展,為了讓機(jī)器人的控制更加方便和人性化,提出以Android終端為研究重點(diǎn),應(yīng)用藍(lán)牙通信技術(shù)來實(shí)現(xiàn)安卓手機(jī)無線控制機(jī)器人運(yùn)動的方案。首先,利用Google開源的語音識別平臺來設(shè)計(jì)機(jī)器人控制軟件語音識別部分。其次,機(jī)器人的控制系統(tǒng)是用Ardunio控制板來驅(qū)動機(jī)器人的舵機(jī),為了控制機(jī)器人的多個關(guān)節(jié),將Arduino控制板和32路舵機(jī)控制板結(jié)合起來,這樣能控制更多的舵機(jī)從而達(dá)到對機(jī)器人的雙臂和雙足的控制。最后,本系統(tǒng)實(shí)現(xiàn)安卓手機(jī)和Arduino控制板之間的藍(lán)牙配對連接。試驗(yàn)表明,系統(tǒng)能夠較好地實(shí)現(xiàn)機(jī)器人地實(shí)時(shí)控制。
關(guān)鍵詞:機(jī)器人控制;Arduino ;Android ;語音識別 ;藍(lán)牙
中圖分類號:TP316 文獻(xiàn)標(biāo)識碼:A 文章編號:2095-1302(2015)03-00-02
0 引 言
能夠用語音與機(jī)器進(jìn)行交流,讓機(jī)器明白你說什么,這是人們長期以來夢寐以求的事情。隨著科學(xué)技術(shù)的不斷發(fā)展,出現(xiàn)了語音識別技術(shù),這使人類的這個理想逐漸得以實(shí)現(xiàn)。本文以Android智能機(jī)和Arduino開發(fā)板為實(shí)現(xiàn)工具,結(jié)合家用仿人機(jī)器人平臺,搭建好完整的語音識別控制系統(tǒng),用戶利用安卓手機(jī)提供的麥克風(fēng)語音命令,輸入語音信號經(jīng)處理、識別,得出結(jié)果作用于服務(wù)機(jī)器人的行動動作,從而提供一種高效的、穩(wěn)定的、實(shí)用性強(qiáng)的、高識別率的語音控制服務(wù)機(jī)器人系統(tǒng)。
1 系統(tǒng)總體方案設(shè)計(jì)
本文介紹的語音控制機(jī)器人服務(wù)系統(tǒng)包括安卓智能手機(jī)、Arduino主控制板、32路伺服舵機(jī)控制板以及機(jī)械系統(tǒng)四大部分組成。其中安卓手機(jī)不但充當(dāng)采集語音信號的作用和將采集完的的語音信號發(fā)送到谷歌語音云平臺進(jìn)行識別,并將識別的語音結(jié)果返回,而且還充當(dāng)發(fā)送控制標(biāo)志位的角色。對于機(jī)器人的控制界面是運(yùn)行在安卓操作系統(tǒng)上的應(yīng)用程序,該程序是利用eclipse和安卓插件搭建的平臺而開發(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)對機(jī)器臂的控制。通過Arduino控制板外接外部傳感器可以檢測外部的環(huán)境參數(shù),另外,為了實(shí)現(xiàn)藍(lán)牙的通信,利用Arduino控制板的串口外接RB Bluetooth Transceive藍(lán)牙轉(zhuǎn)串口模塊,利用該模塊可以將藍(lán)牙信號轉(zhuǎn)換成串口信號。軟件控終端用的是三星手機(jī)GTi8150,該手機(jī)的操作系統(tǒng)是Android 2.3版本。
圖1 系統(tǒng)框圖
本系統(tǒng)的通信部分涉及到三部分:第一處是安卓手機(jī)通過GPRS信號和谷歌云平臺的通信,該通信遵守GPRS通信的協(xié)議。第二處是安卓手機(jī)和控制板之間的通信,此處利用的是藍(lán)牙模塊來實(shí)現(xiàn)二者之間的無線通信,這里主要是從手機(jī)發(fā)送機(jī)器人的動作控制標(biāo)志位給主控制板。第三處則是舵機(jī)控制板和主控板之間通過串口的通信,其通信遵守串口的通信協(xié)議,這里主要是主控板將機(jī)器人的動作指令根據(jù)觸發(fā)的控制標(biāo)志位來發(fā)送給舵機(jī)控制板指令。
本系統(tǒng)的舵機(jī)控制板主要負(fù)責(zé)給各個舵機(jī)提供電源和解析發(fā)送過來的動作指令來控制舵機(jī)的目的。因?yàn)闄C(jī)器人的動作指令是根據(jù)舵機(jī)控制板的軟件生成的,生成指令是通過USB轉(zhuǎn)串口將PC和舵機(jī)控制板連接,而舵機(jī)則跟舵機(jī)控制板連接,當(dāng)連接成功后,就可以通過軟件控制和調(diào)節(jié)各個舵機(jī)的轉(zhuǎn)動角度。同時(shí)要注意動作完成時(shí)間參數(shù)的調(diào)節(jié),這個影響到舵機(jī)轉(zhuǎn)動的速度。調(diào)節(jié)逐個舵機(jī)來對機(jī)器人的動作步調(diào)來進(jìn)行規(guī)劃,規(guī)劃完成則保存相應(yīng)的指令,并編寫程序?qū)崿F(xiàn)對該arduino主控板的控制。所以這里舵機(jī)控制板能夠根據(jù)發(fā)送過來的動作指令來控制機(jī)器人的動作。
2.2 程序設(shè)計(jì)
系統(tǒng)軟件主要包括兩部分,一部分是安卓系統(tǒng)上的控制程序的設(shè)計(jì),包括語音識別的控制和手動按鍵的控制,另外一部分是Arduino控制板中程序的設(shè)計(jì)。
安卓系統(tǒng)端軟件的設(shè)計(jì)主要是利用手機(jī)的麥克風(fēng)功能實(shí)現(xiàn)語音的輸入,并且通過谷歌的語音引擎來實(shí)現(xiàn)對輸入語音的識別,該系統(tǒng)軟件語音識別部分流程如圖2所示。
當(dāng)換成手動輸入時(shí),直接根據(jù)相應(yīng)的按鍵發(fā)送相應(yīng)的觸發(fā)標(biāo)志到Arduino控制板。本系統(tǒng)的特色主要是實(shí)現(xiàn)語音的控制。
Arduino控制板端的程序主要是根據(jù)手機(jī)端發(fā)送過來的信號來發(fā)送相應(yīng)的指令給舵機(jī)控制板來控制機(jī)器臂,其Arduino控制端程序流程圖如圖3所示。
圖2 語音識別編程流程圖 圖3 Arduino控制端程序流程圖
手機(jī)端控制系統(tǒng)是基于Android 2.1系統(tǒng)所編寫的,所用開發(fā)工具為Eclipse集成開發(fā)環(huán)境,Eclipse是著名的跨平臺的自由集成開發(fā)環(huán)境(IDE)。最初主要用來Java語言開發(fā),但是目前亦有人通過插件使其作為其他計(jì)算機(jī)語言比如C++、Python和Android的開發(fā)工具,在此開發(fā)環(huán)境下開發(fā)軟件非常的方便。設(shè)計(jì)本系統(tǒng)手機(jī)端軟件的程序界面,為了盡快實(shí)現(xiàn)程序的功能,本程序沒有對軟件界面設(shè)計(jì)做特別美化的設(shè)計(jì),僅包含我們所用到的幾個按鈕和圖形顯示,以實(shí)現(xiàn)我們的功能為最大目標(biāo),設(shè)計(jì)手機(jī)端控制界面如圖4所示。
3 測試與試驗(yàn)分析
該系統(tǒng)組裝并調(diào)試,測試該系統(tǒng),控制的機(jī)器人如圖5所示,通過安卓手機(jī)軟件實(shí)現(xiàn)機(jī)器人的運(yùn)動控制,通過觸擊按鍵或者語音的輸入來對每組命令進(jìn)行循環(huán)測試??梢暂斎氲恼Z音命令有前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、停止、擁抱、敬禮、叉腰、招手等動作。
具體測試步驟:
連接好線路,打開電源,觀察知識點(diǎn)正常亮起,觸擊控制界面的藍(lán)牙連接按鈕,觀察指示燈,以確保手機(jī)藍(lán)牙和Arduino開發(fā)板的配對連接成功。否則,得檢查系統(tǒng)的連接是否正確。
圖4 手機(jī)端控制界面 圖5 機(jī)器人
藍(lán)牙配對連接成功后,先測試手動操作是否成功,分別觸擊前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、停止按鈕,觀測機(jī)器人是否根據(jù)對應(yīng)的指令做相應(yīng)的運(yùn)動。循環(huán)測試多次,保證系統(tǒng)的穩(wěn)定。
測試完手動操作按鈕之后,接下來測試語音控制的輸入,觸擊語音輸入控制按鈕,會出來一個虛擬的麥克風(fēng),對著手機(jī)話筒說出前進(jìn),后退等控制命令,觀測機(jī)器人是否能夠根據(jù)你的語音來實(shí)現(xiàn)相應(yīng)的運(yùn)動。循環(huán)測試多次,保證系統(tǒng)的穩(wěn)定。
最后試驗(yàn)分析,該控制程序能夠穩(wěn)定的實(shí)現(xiàn)都機(jī)器人運(yùn)動的控制,達(dá)到了預(yù)訂的目標(biāo)和效果。
4 結(jié) 語
設(shè)計(jì)基于Android系統(tǒng)手機(jī)和Arduino控制板的機(jī)器人控制系統(tǒng),通過接收人的語音或者按鍵來操作機(jī)器人的運(yùn)動狀態(tài),采用安卓智能手機(jī)來進(jìn)行語音的處理和谷歌云平臺對語音的識別,利用藍(lán)牙來進(jìn)行數(shù)據(jù)的通信,舵機(jī)控制板軟件規(guī)劃出機(jī)器人的各種動作并且生成的動作指令,最后由控制板來實(shí)現(xiàn)完成該相應(yīng)的動作。利用了藍(lán)牙無線通信,擺脫有線困擾,使得系統(tǒng)有廣泛的適用范圍。
參考文獻(xiàn)
[1] 田澤.嵌入式系統(tǒng)開發(fā)與應(yīng)用教程[M].北京: 北京航空航天大學(xué)出版社,2005.
[2] 李全利.單片機(jī)原理及接口技術(shù)[M].北京: 高等教育出版社,2009.
[3]蔡睿妍.Arduino的原理及應(yīng)用[J].電子設(shè)計(jì)工程,2012(16):155-157.
[4] 崔才豪,張玉華,楊樹財(cái). 用Arduino 控制板的光引導(dǎo)運(yùn)動小車設(shè)計(jì)[J]. 自動化儀表,2011(9):29-32.
[5] 何彪,周開班. 基于NFC 技術(shù)的藍(lán)牙對象交換方法[J]. 微計(jì)算機(jī)信息, 2009(6) :133-134.