機(jī)器人聲控系統(tǒng)的研究一直是機(jī)器人研究的主要內(nèi)容之一。傳統(tǒng)的聲音控制系統(tǒng)一般采用PC 機(jī)作為核心平臺對機(jī)器人進(jìn)行控制,雖然其具有處理能力強(qiáng)大、語音庫完備、系統(tǒng)更新能力強(qiáng)等優(yōu)點(diǎn),但是PC 機(jī)體積大,功耗大,成本高,不適合于中、小型機(jī)器人使用。本文以SPCE061A 為核心,設(shè)計了一套機(jī)器人聲控系統(tǒng),和傳統(tǒng)的PC 機(jī)聲控系統(tǒng)相比較,具有成本低、體積小、耗能低和使用靈活方便等特點(diǎn)。
本系統(tǒng)采用的機(jī)器人平臺是北京博創(chuàng)興盛機(jī)器人技術(shù)有限公司提供的 Voyager II 型地面移動機(jī)器人,該機(jī)器人采用了模塊化的設(shè)計理念,高負(fù)載能力的直流伺服控制,可選配聲納、紅外、視覺、羅盤、GPS 等傳感器和機(jī)械手等執(zhí)行器。完全可以滿足聲控系統(tǒng)的設(shè)計要求。本文提出了一種以凌陽單片機(jī)為核心的Voyager II 型機(jī)器人聲控系統(tǒng)的設(shè)計方案, 該產(chǎn)品具有低成本、低功耗、體積小和使用靈活方便等特點(diǎn),不僅適合于中、小型機(jī)器人使用,還適合與教學(xué)科研使用。
系統(tǒng)的整體設(shè)計分為硬件設(shè)計和軟件設(shè)計兩部分,下面首先介紹一下系統(tǒng)的硬件設(shè)計。
?
系統(tǒng)硬件結(jié)構(gòu)
?
根據(jù)機(jī)器人平臺情況, 聲控系統(tǒng)的硬件結(jié)構(gòu)主要由微處理器單元、供電單元、聲音采集單元和串口輸出單元四部分組成,如圖所示:
DSP的聲控系統(tǒng)設(shè)計與實(shí)現(xiàn)“ src=”/uploadfile/DSP/uploadfile/201412/20141214052908362.jpg“ width=”359“ height=”231“ /》
1 微處理器單元
本系統(tǒng)采用凌陽公司的16 位單片機(jī)SPCE061A 作為核心控制芯片,內(nèi)置32K 閃存,其較高的處理速度能使芯片非??焖俚奶幚韽?fù)雜的數(shù)字信號, 適用于語音識別等應(yīng)用領(lǐng)域。
SPCF061A 的工作頻率范圍為0.32-49.152MHz.具備8 通道10位ADC 輸入功能, 內(nèi)置了具有自動增益控制的麥克風(fēng)輸入功能。雙通道10 位DAC 音頻輸出功能及A、B 兩個I/ 0 口輸入輸出功能。具有集成度高、性能可靠、價格低廉、功耗小等特點(diǎn)。這些特點(diǎn)充分體現(xiàn)了微控制器工業(yè)發(fā)展的新趨勢。目前,凌陽單片機(jī)SPCE061A 的應(yīng)用越來越廣,深受廣大用戶的歡迎。
2 聲音采集單元
聲音采集單元的換能器采用駐極體話筒, 通過話筒將采集到的聲音信號通過MIC_IN 通道傳送給CPU,MIC_IN 通道專門用于對語音信號進(jìn)行采樣。語音信號經(jīng)MIC 轉(zhuǎn)換成電信號,由電容將其中的直流成分濾除, 然后輸入到集成在SPCE061A 內(nèi)部的前置放大器中。SPCE061A 的內(nèi)部增益控制電路AGC 能隨時跟蹤、監(jiān)視前置放大器輸出的音頻信號的電平,當(dāng)輸入信號過大時,自動減小放大器增益;當(dāng)輸入信號減小時,自動增大放大器增益。這樣即可以使A/D 轉(zhuǎn)換器接收到的信號一直保持在最佳電平,又可以使聲音損失減至最少,從而提高語音識別的精度。
3 外接供電單元
外接 供電單元是聲控系統(tǒng)的選配單元, 由于聲控系統(tǒng)的能耗很低,可以外接3 個1.5V 電池,作為外接供電單元給系統(tǒng)供電。在沒有選配外接供電單元時,也可以直接使用Voyager II 型地面移動機(jī)器人的蓄電池為關(guān)濟(jì)實(shí): 講師工學(xué)碩士聲控系統(tǒng)供電,Voyager II 型機(jī)器人的蓄電池供電電壓為24V, 將24V 電壓先經(jīng)過7805 轉(zhuǎn)換成5V電壓, 然后使用SPY0029 將5V 電壓轉(zhuǎn)換成3.3V 電壓給SPCE061A 供電。
4 存儲器單元
存儲器單元也是聲控系統(tǒng)的選配單元, 當(dāng)需要識別的語音資源較少時,則使用單片機(jī)中 集成的FLASH 存儲器,就可以滿足要求。當(dāng)語音資源較豐富時,就需要連接外部存儲器單元,對語音資源進(jìn)行存儲。為了保證系統(tǒng)的兼容性, 選用凌陽公司的SPR4096 作為外部存儲器, LASHSPR4096 內(nèi)部有512K×8bits F和4K×8bits SRAM 在進(jìn)行FLASH 編程或擦除的時候,可以并發(fā)執(zhí)行SRAM 的讀寫,SPR4096 內(nèi)置了一個總線存儲器接口和一個串行接口,它允許單片機(jī)通過8_bit 并行模式或者1_bit 串行模式訪問FLASH SDRAM 的存儲區(qū)。在本系統(tǒng)中,將SPR4096的SCK 和SDA 與SPCE061A 的IOB0 和IOB1 連接, 構(gòu)成串行數(shù)據(jù)通信。
5 串口輸出單元
由于SPCE061A 單片機(jī)的輸入、輸出電平是TTL 電平,而Voyager II 型機(jī)器人配置的是RS-232 標(biāo)準(zhǔn)串行接口,二者的電氣規(guī)范不一致。因此,要完成SPCE061A 和機(jī)器人之間的串行通信,必須對SPCE061A 輸出的TTL 電平進(jìn)行電平轉(zhuǎn)換,本系統(tǒng)中使用MAXIM 公司的MAX232 作為電平轉(zhuǎn)換芯片。MAX232 使用單電源供電, 只需外接5 個0.1uF 的電容, 就可以實(shí)現(xiàn)SPCE061A 和Voyager II 型機(jī)器人之間的電平轉(zhuǎn)換。
?
系統(tǒng)軟件設(shè)計
?
軟件設(shè)計中最重要的部分就是編寫語音識別程序。語音識別過程本質(zhì)上是一種多維模式識別過程。針對凌陽單片機(jī)編寫語音識別程序,主要可以分為:訓(xùn)練、辨識、辨識結(jié)果輸出三部分。
2 語音識別程序
語音識別程序是整個程序編寫過程中最重要的部分, 主要可以分為辨識器初始化、識別過程實(shí)時監(jiān)控、獲取辨識結(jié)果和終止辨識四部分。
2.1 辨識初始化
辨識初始化使用void BSR_InitRecognizer (int AudioSource)函數(shù)來實(shí)現(xiàn)。當(dāng)參數(shù)AudioSource 取1 時為LINE_IN 電壓模擬量輸入;當(dāng)參數(shù)AudioSource 取0 時為MIC 語音輸入。
2.2 識別過程實(shí)時監(jiān)控
該功能調(diào)用void BSR_EnableCOUIndicator()函數(shù)來實(shí)現(xiàn),主要用來辨識是否正常工作。如果辨識正常,CPU 會產(chǎn)生一個占空比為50%的方波。如果CPU 超載,則會產(chǎn)生不穩(wěn)定的波形,這時為了避免語音辨識產(chǎn)生錯誤信息,就需要刪除命令或者優(yōu)化程序。
2.3 獲取辨識結(jié)果
該功能調(diào)用int BSR_GetResult()函數(shù)來實(shí)現(xiàn),當(dāng)無命令識別出來時,返回值為0;當(dāng)識別器未初始化或識別未激活返回-1;當(dāng)識別不合格時返回-2;當(dāng)識別出來時,返回命令的序號。
2.4 終止辨識
該功能調(diào)用void BSR_StopRecognizer()函數(shù)實(shí)現(xiàn),主要用于停止識別,并關(guān)閉FIQ_TMA 中斷。
3 辨識結(jié)果輸出
通過BSR_GetResult()可以得到命令的序列號,將命令的序列號改寫成Voyager II 型機(jī)器人的相關(guān)協(xié)議, 然后通過RS232口傳輸給機(jī)器人即可達(dá)到語音控制的目的。
4 串口通信程序
為了方便用戶對Voyager II 型機(jī)器人進(jìn)行二次開發(fā), 北京博創(chuàng)興盛機(jī)器人技術(shù)有限公司提供了標(biāo)準(zhǔn)串行接口, 并制定了詳細(xì)的通信協(xié)議,供用戶使用。為了提高通信的效率和穩(wěn)定性,在Voyager II 型機(jī)器人內(nèi)部,先將RS-232 標(biāo)準(zhǔn)電平轉(zhuǎn)換為TTL電平,再將TTL 電平通過MAX491 轉(zhuǎn)換為RS-485 的標(biāo)準(zhǔn)電平。
由于協(xié)議中,只支持一個主機(jī),所以在本聲控系統(tǒng)中,將聲控系統(tǒng)的單片機(jī)作 為整個硬件系統(tǒng)的主機(jī), 即整個硬件系統(tǒng)的最高管理者,其地址默認(rèn)為0.其他設(shè)備的地址默認(rèn)為1-255.具體分配如下:系統(tǒng)設(shè)備占用地址0x01-0x0F;電機(jī)設(shè)備地址 0x100-0x1F;系統(tǒng)保留地址為0x20-0x7F;用戶設(shè)備地址:0x80-0xAF;在系統(tǒng)運(yùn)行過程中,主機(jī)一直占用自己的TXD 線,從機(jī)的RXD 線在不進(jìn)行通信時為高阻狀態(tài),只有在接收到與自己地址相符的數(shù)據(jù)幀時,才能占用總線,一旦通信結(jié)束,立即釋放總線,回到高阻狀態(tài)。
主機(jī)和從機(jī)采用標(biāo)準(zhǔn)的“一問一答”通信機(jī)制,如果主機(jī)的命令需要有數(shù)據(jù)反饋,則返回需要的數(shù)據(jù);如果不需要數(shù)據(jù)反饋,就返回上位機(jī)發(fā)送的命令。
下面,以控制機(jī)器人前進(jìn)為例說明串口通信的協(xié)議格式:
?。?)發(fā)送固定通信字頭兩字節(jié):0x55 0xAA
(2)發(fā)送接收設(shè)備地址:0x01
?。?)發(fā)送數(shù)據(jù)長度:0x04
(4)發(fā)送命令字:0x26
?。?)發(fā)送左電機(jī)速度兩字節(jié):0x00 0x06
?。?)發(fā)送右電機(jī)速度兩字節(jié):0x00 0x06
?。?)發(fā)送數(shù)據(jù)效驗(yàn)和:0x3A
在明確了協(xié)議格式和需要發(fā)送的內(nèi)容之后, 就可以編寫串口通信程序。首先,根據(jù)SPCE061A 的PLL 頻率和需要設(shè)定的波特率,計算出P_UART_BaudScalarHigh 和P_UART_BaudScalar-Low 的取值,完成串口參數(shù)的設(shè)定。在完成設(shè)定后,將需要發(fā)送的數(shù)據(jù)存儲到P_UART_Data 中,SPCE061A 就可以將數(shù)據(jù)發(fā)送給Voyager II 型機(jī)器人。由于,SPCE061A 的串口每次只能發(fā)送1個字節(jié)的數(shù)據(jù),所以需要采用循環(huán)的方式,依次將通信內(nèi)容發(fā)送給Voyager II 型機(jī)器人。Voyager II 型機(jī)器人收到指令后, 就可以按照指令,進(jìn)行相應(yīng)的動作。
總結(jié)
本系統(tǒng)采用了低成本 的DSP-SPCE061A 作為主控芯片,和傳統(tǒng)的基于PC 機(jī)的語音識別系統(tǒng)相比, 雖然識別的語音庫相對較少,但是其具有低成本、低功耗、體積小和使用靈活方便等特點(diǎn),不僅適合于中、小型機(jī)器人,還適合于教學(xué)科研使用。所以,本聲控系統(tǒng) 具有良好的市場前景和廣闊的使用空間。
評論
查看更多