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