• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于SAPI的雙驅(qū)雙向AGV語音控制系統(tǒng)的設(shè)計(jì)

    2020-04-27 09:19:48張栗銘張雪峰李歡歡寇海波
    關(guān)鍵詞:驅(qū)動(dòng)輪雙向指令

    陳 亞,張栗銘,張雪峰,李歡歡,寇海波

    (北京石油化工學(xué)院機(jī)械工程學(xué)院,北京 102617)

    隨著科技的不斷發(fā)展,機(jī)器人被廣泛地運(yùn)用在工業(yè)、醫(yī)療以及軍事等領(lǐng)域[1]。讓各種機(jī)器聽懂人類的語言并根據(jù)獲得的信息完成相應(yīng)的任務(wù),可以使人的雙手從控制機(jī)器人工作中解脫出來,從而大幅提高工作效率[2]。語音識(shí)別技術(shù)的研究目的就是讓機(jī)器“聽懂”人類的語言,使機(jī)器人能夠更好地為人類服務(wù)[3]。目前對(duì)特定人語音孤立詞識(shí)別的主要方法包括動(dòng)態(tài)時(shí)間規(guī)整(DTW)、矢量量化(DQ)和隱馬爾可夫模型(HMM)等[4]。Microsoft公司的Speech SDK語音開發(fā)包就是以HMM為基礎(chǔ)建立并提供有語音應(yīng)用程序編程接口SAPI,是構(gòu)建語音識(shí)別平臺(tái)的基礎(chǔ),能夠使語音技術(shù)與機(jī)器人控制系統(tǒng)有機(jī)結(jié)合。使用Speech SDK語音開發(fā)包能夠縮短開發(fā)周期,方便進(jìn)行二次開發(fā)[5]。

    筆者采用Speech SDK語音開發(fā)包構(gòu)建雙驅(qū)雙向AGV的語音識(shí)別開發(fā)平臺(tái),在基于平板電腦及其外圍模塊的控制方式基礎(chǔ)上增加語音識(shí)別功能,在完成語音的準(zhǔn)確識(shí)別后,驅(qū)動(dòng)雙驅(qū)雙向AGV實(shí)現(xiàn)前進(jìn)、后退、停止、左轉(zhuǎn)、右轉(zhuǎn)等一系列動(dòng)作。該系統(tǒng)既能保證雙驅(qū)雙向AGV穩(wěn)定可靠地運(yùn)行,又能實(shí)現(xiàn)對(duì)雙驅(qū)雙向AGV實(shí)時(shí)的語音控制,豐富了人機(jī)交互方式,幫助企業(yè)提高了生產(chǎn)效率[6]。

    1 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)

    1.1 雙驅(qū)雙向AGV語音識(shí)別控制系統(tǒng)結(jié)構(gòu)

    以雙驅(qū)雙向AGV為控制對(duì)象,采用PMAC (programmable multi-axes controller)運(yùn)動(dòng)控制卡作為控制器,并基于Speech SDK語音開發(fā)包構(gòu)建具有語音識(shí)別功能的雙驅(qū)雙向AGV控制系統(tǒng),該系統(tǒng)結(jié)構(gòu)如圖1所示。

    雙驅(qū)雙向AGV控制系統(tǒng)主要由2部分組成:上位機(jī)(工業(yè)平板電腦)和下位機(jī)(PMAC運(yùn)動(dòng)控制卡),共同構(gòu)成開放式控制系統(tǒng)。其中上位機(jī)為工業(yè)平板電腦,選用對(duì)微軟語音開發(fā)包兼容性好、安全性高、多任務(wù)處理穩(wěn)定可靠的Window XP操作系統(tǒng),該操作系統(tǒng)支持麥克風(fēng)作為外設(shè)對(duì)語音輸入進(jìn)行數(shù)據(jù)采集,判斷并識(shí)別語音,激活響應(yīng)函數(shù),控制雙驅(qū)雙向AGV的運(yùn)動(dòng),同時(shí)處理其他傳感器信息實(shí)現(xiàn)對(duì)AGV的實(shí)時(shí)導(dǎo)航糾偏控制。下位機(jī)為PMAC運(yùn)動(dòng)控制卡,主要負(fù)責(zé)實(shí)時(shí)采集外圍傳感器信號(hào),并將數(shù)據(jù)通過網(wǎng)口送入上位機(jī),實(shí)時(shí)處理上位機(jī)發(fā)出的指令,驅(qū)動(dòng)電機(jī)完成相應(yīng)動(dòng)作。筆者采用工業(yè)平板電腦+PMAC運(yùn)動(dòng)控制卡作為雙驅(qū)雙向AGV的控制系統(tǒng),不僅結(jié)構(gòu)簡(jiǎn)單、開發(fā)周期短、穩(wěn)定性好,而且可擴(kuò)展性強(qiáng),具有對(duì)運(yùn)動(dòng)實(shí)時(shí)控制的能力。

    1.2 系統(tǒng)工作原理

    用戶通過麥克風(fēng)輸入語音指令,上位機(jī)接收用戶語音信號(hào),提取語音命令,與語音模板中的信息匹配,若匹配成功,則執(zhí)行響應(yīng)函數(shù),創(chuàng)建新線程并給下位機(jī)發(fā)送運(yùn)動(dòng)指令,實(shí)現(xiàn)對(duì)雙驅(qū)雙向AGV的運(yùn)動(dòng)控制,運(yùn)動(dòng)結(jié)束,則關(guān)閉線程;若匹配失敗,則繼續(xù)匹配。下位機(jī)接收上位機(jī)的運(yùn)動(dòng)指令,并根據(jù)上位機(jī)對(duì)磁導(dǎo)航傳感器的處理信息,驅(qū)動(dòng)直流無刷電機(jī)差速運(yùn)轉(zhuǎn),實(shí)現(xiàn)對(duì)雙驅(qū)雙向AGV的運(yùn)動(dòng)控制。

    2 雙驅(qū)雙向AGV運(yùn)動(dòng)控制分析

    運(yùn)動(dòng)學(xué)模型的建立是實(shí)現(xiàn)對(duì)AGV語音控制的基礎(chǔ)。雙驅(qū)雙向AGV通過非接觸式的磁條導(dǎo)引方式沿著預(yù)定路線循跡行走,雙驅(qū)雙向AGV的運(yùn)動(dòng)學(xué)模型如圖2所示。通過實(shí)時(shí)調(diào)節(jié)前后驅(qū)動(dòng)模塊左右驅(qū)動(dòng)輪A、B、C、D的速度,利用差速糾偏原理協(xié)調(diào)控制驅(qū)動(dòng)電機(jī),實(shí)現(xiàn)雙驅(qū)雙向AGV沿預(yù)定軌跡行駛的運(yùn)動(dòng)控制。

    假定A和B為第1個(gè)驅(qū)動(dòng)模塊左右輪,運(yùn)動(dòng)速度分別為Va和Vb,C和D為第2個(gè)驅(qū)動(dòng)模塊左右輪,運(yùn)動(dòng)速度分別為Vc和Vd,2個(gè)驅(qū)動(dòng)模塊間距為S,2個(gè)驅(qū)動(dòng)輪間距為L(zhǎng),驅(qū)動(dòng)輪半徑為R。A輪和B輪中點(diǎn)的速度為Vo1,C輪和D輪之間的中點(diǎn)的速度為Vo2。假定整個(gè)AGV是一個(gè)剛體在平面內(nèi)運(yùn)動(dòng),AGV 2個(gè)驅(qū)動(dòng)模塊左右各輪在平面內(nèi)只做純滾動(dòng),無滑動(dòng)情況出現(xiàn)。

    根據(jù)不同的運(yùn)動(dòng)路線,雙驅(qū)雙向AGV的運(yùn)動(dòng)可分為直線運(yùn)動(dòng)和轉(zhuǎn)彎運(yùn)動(dòng)。當(dāng)雙驅(qū)雙向AGV沿著直線運(yùn)動(dòng)時(shí),2個(gè)驅(qū)動(dòng)模塊的4個(gè)驅(qū)動(dòng)輪的速度相等。AGV沿著軌跡在運(yùn)動(dòng)的過程中不可避免的會(huì)產(chǎn)生一定的偏差,當(dāng)AGV運(yùn)動(dòng)發(fā)生偏差時(shí),根據(jù)磁導(dǎo)航傳感器采集到的位置信息確定AGV偏離磁條中心的距離,通過糾偏算法,調(diào)節(jié)一側(cè)驅(qū)動(dòng)輪的速度下降,另一側(cè)驅(qū)動(dòng)輪的速度維持不變,利用差速原理實(shí)時(shí)調(diào)整兩驅(qū)動(dòng)模塊左右驅(qū)動(dòng)輪速度,控制AGV保持直線運(yùn)動(dòng)。

    當(dāng)AGV進(jìn)入彎道時(shí),轉(zhuǎn)彎過程可以分為3個(gè)階段,如圖3所示。第1階段,第1個(gè)驅(qū)動(dòng)模塊進(jìn)入彎道,開始轉(zhuǎn)彎,第2個(gè)驅(qū)動(dòng)模塊仍沿直線軌跡運(yùn)動(dòng);第2階段,2個(gè)驅(qū)動(dòng)模塊都進(jìn)入彎道,同時(shí)轉(zhuǎn)彎;第3階段,第1個(gè)驅(qū)動(dòng)模塊已經(jīng)完成轉(zhuǎn)彎,開始沿直線軌跡運(yùn)動(dòng),第2個(gè)驅(qū)動(dòng)模塊仍在轉(zhuǎn)彎。

    通過分析計(jì)算[7],得到在這3個(gè)階段4個(gè)驅(qū)動(dòng)輪的瞬時(shí)速度關(guān)系為:

    (1)第1階段:

    其中:R為磁條鋪設(shè)半徑;θ為第1個(gè)驅(qū)動(dòng)模塊轉(zhuǎn)過的角度。

    (2)第2階段:

    Va=Vc, Vb=Vd

    (3)第3階段:

    其中:σ為第2個(gè)驅(qū)動(dòng)模塊轉(zhuǎn)過的角度。

    通過分析4個(gè)驅(qū)動(dòng)輪在轉(zhuǎn)彎不同階段的瞬時(shí)速度關(guān)系,當(dāng)接收到轉(zhuǎn)彎的語音指令后,控制驅(qū)動(dòng)輪的運(yùn)動(dòng)速度繼而實(shí)現(xiàn)對(duì)雙驅(qū)雙向AGV的轉(zhuǎn)彎運(yùn)動(dòng)。

    3 軟件設(shè)計(jì)

    3.1 軟件總體結(jié)構(gòu)

    基于SAPI的雙驅(qū)雙向AGV軟件控制流程如圖4所示。首先系統(tǒng)進(jìn)行語音識(shí)別模塊初始化,SAPI提供了完善的COM接口,根據(jù)COM規(guī)范的要求,首先調(diào)用CoInitializeEx函數(shù)對(duì)COM庫(kù)進(jìn)行初始化。當(dāng)進(jìn)程不再使用COM庫(kù)函數(shù)時(shí),必須調(diào)用CoUninitializeEx函數(shù)釋放系統(tǒng)資源[8]。然后初始化語音識(shí)別的各接口,完成識(shí)別引擎、識(shí)別上下文接口的創(chuàng)建,并設(shè)置識(shí)別消息和感興趣的事件,最后對(duì)識(shí)別的語音內(nèi)容建立語法規(guī)則,完成語音識(shí)別平臺(tái)的構(gòu)建。用戶通過麥克風(fēng)輸入語音指令,進(jìn)程對(duì)識(shí)別的語音進(jìn)行匹配,如果匹配成功,則根據(jù)識(shí)別的語音內(nèi)容進(jìn)行消息響應(yīng),從而驅(qū)動(dòng)AGV執(zhí)行相應(yīng)的動(dòng)作;如果匹配失敗,則繼續(xù)進(jìn)行語音識(shí)別并匹配。

    3.2 基于SDK5.1的語音平臺(tái)

    微軟的SDK提供有語音應(yīng)用程序編程接口SAPI(Speech Application Programming Interface)、語音聽寫引擎TTS(Text To Speech)以及連續(xù)語音識(shí)別引擎MCSR (Microsoft Continuous Speech Recognition)[9]。SAPI是基于COM技術(shù)實(shí)現(xiàn)的組件編程接口,封裝了操作系統(tǒng)底層硬件,提供具有高度適應(yīng)性的直接語音管理、訓(xùn)練向?qū)Ч芾?、資源、語音識(shí)別SR(Speech Recognition)管理等,所以,語音識(shí)別SAPI的調(diào)用符合COM規(guī)范。SAPI層、應(yīng)用程序接口API層和設(shè)備驅(qū)動(dòng)接口DDI(DeepSpar Disk Imager)層三者之間的結(jié)構(gòu)圖如圖5所示。

    應(yīng)用程序是通過SAPI與API(Application Programming Interface)層之間進(jìn)行交互,語音引擎是通過SAPI與DDI(DeepSpar Disk Imager)層進(jìn)行通信[10]。利用接口函數(shù),屏蔽了底層驅(qū)動(dòng)與識(shí)別算法的開發(fā),大大簡(jiǎn)化了語音開發(fā)的難度。根據(jù)開發(fā)的XML(Extensible Markup Language)文件確定需要匹配的詞匯,開發(fā)者可以根據(jù)需要定義詞匯,大大降低詞匯檢索量,提高識(shí)別速度。

    3.3 語音識(shí)別模塊軟件實(shí)現(xiàn)

    利用SAPI開發(fā)語音應(yīng)用程序,將程序嵌入到機(jī)器人運(yùn)動(dòng)控制系統(tǒng)中,通過用戶的語音輸入使雙驅(qū)雙向AGV接受指令,實(shí)現(xiàn)機(jī)器人前進(jìn)、后退、轉(zhuǎn)向以及停止等動(dòng)作,具體步驟如下。

    (1)創(chuàng)建XML文件(CmdCtrl.xml),定義需要機(jī)器人識(shí)別的命令。

    前進(jìn)

    后退

    左轉(zhuǎn)

    右轉(zhuǎn)

    停止

    (2)語音識(shí)別系統(tǒng)初始化。語音識(shí)別系統(tǒng)初始化包含多個(gè)步驟,初始化模塊流程圖如圖6所示。

    通過CoInitializeEx函數(shù)初始化COM接口,在程序的頭文件中定義建立語音識(shí)別需要的接口對(duì)象。

    //語音識(shí)別引擎對(duì)象

    CComPtr m_cpRecognizer;

    //語音命令的語法對(duì)象

    CComPtr m_cpCmdGrammar;

    //語音識(shí)別的上下文接口對(duì)象

    CComPtr m_cpRecoCtxt;

    //初始化COM口

    CoInitializeEx(NULL,COINIT_APARTMENTTHREADED) ;

    //創(chuàng)建識(shí)別引擎:共享型服務(wù)

    hr=m_cpRecognizer.CoCreateInstance (CLSID_SpInprocRecognizer);

    //創(chuàng)建識(shí)別的上下文接口

    hr=m_cpRecognizer->CreateRecoContext (&m_cpRecoCtxt);

    //設(shè)置識(shí)別消息

    hr=m_cpRecoCtxt->SetNotifyWindowMessage (m_hWnd,WM_RECOEVENT,0,0);

    //設(shè)置觸發(fā)事件

    Const ULONGLONG ullInterest=SPFEI (SPEI_RECOGNITION);

    hr=m_cpRecoCtxt-> SetInterest(ullInterest,ullInterest);

    //設(shè)置語法規(guī)則

    Hr=m_cpRecoCtxt-> CreateGrammar (100,&m_cpCmdGrammar);

    //加載語法詞典

    Hr=m_cpCmdGrammar-> LoadCmdFromFile (wszXMLFile,SPLO_DYNAMIC);

    (3)語音識(shí)別系統(tǒng)初始化之后,識(shí)別引擎開始工作,當(dāng)系統(tǒng)匹配到正確的命令輸入,在消息響應(yīng)函數(shù)中對(duì)動(dòng)作進(jìn)行實(shí)現(xiàn)。

    //消息相應(yīng)函數(shù)RecoEvent()

    void CSpeechReco::RecoEvent()

    {

    };

    (4)在程序退出之前需要卸載系統(tǒng)資源,即在析構(gòu)函數(shù)中釋放COM。

    CoUninitializeEx();

    雙驅(qū)雙向AGV控制系統(tǒng)識(shí)別到正確的指令后,執(zhí)行相應(yīng)動(dòng)作。

    3.4 人機(jī)交互界面的軟件實(shí)現(xiàn)

    基于微軟提供的Microsoft Visual C++6.0面向?qū)ο蟮目梢暬砷_發(fā)環(huán)境開發(fā)了人機(jī)交互界面,結(jié)果如圖7所示。該控制程序采用的是命令識(shí)別模式自定義匹配詞匯,通過點(diǎn)擊“語音識(shí)別”,完成語音初始化的創(chuàng)建,經(jīng)麥克風(fēng)輸入命令,再由系統(tǒng)匹配識(shí)別,從而控制AGV完成“前進(jìn)”、“后退”、“左轉(zhuǎn)”、“右轉(zhuǎn)”以及“停止”等相關(guān)動(dòng)作指令。

    4 語音實(shí)驗(yàn)

    針對(duì)雙驅(qū)雙向AGV的語音識(shí)別以及指令控制效果進(jìn)行實(shí)驗(yàn)測(cè)試。實(shí)驗(yàn)選擇在安靜的環(huán)境下進(jìn)行,實(shí)驗(yàn)場(chǎng)地如圖8所示。任意選擇1人完成語音樣本的錄入,即前進(jìn)、后退、停止、左轉(zhuǎn)、右轉(zhuǎn)等指令。并隨機(jī)抽取5人,其中男生2人、女生3人完成語音字典中的5條指令,規(guī)定每位測(cè)試者隨機(jī)讀取5條指令20次,實(shí)驗(yàn)結(jié)果如表1所示。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)語音識(shí)別模塊的正確識(shí)別率達(dá)到90%以上。

    表1 語音實(shí)驗(yàn)結(jié)果

    5 結(jié)論

    以雙驅(qū)雙向AGV為控制對(duì)象,基于SAPI語音應(yīng)用程序編程接口完成了語音系統(tǒng)的開發(fā),通過麥克風(fēng)輸入語音,再經(jīng)語音識(shí)別處理能夠控制雙驅(qū)雙向AGV完成前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、停止等動(dòng)作。該系統(tǒng)不僅增加了人機(jī)交互的多樣性,而且也降低了設(shè)備操作的復(fù)雜性,提高了企業(yè)自動(dòng)化水平和生產(chǎn)效率。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)語音模塊在安靜的環(huán)境下的正確識(shí)別率達(dá)90%,并且雙驅(qū)雙向AGV能在用戶的指令下正確完成相應(yīng)的運(yùn)動(dòng)。

    猜你喜歡
    驅(qū)動(dòng)輪雙向指令
    聽我指令:大催眠術(shù)
    雙向度的成長(zhǎng)與自我實(shí)現(xiàn)
    出版人(2022年11期)2022-11-15 04:30:18
    基于正交試驗(yàn)的整車驅(qū)動(dòng)輪滾動(dòng)阻力因素分析
    電驅(qū)動(dòng)輪輪轂設(shè)計(jì)及有限元分析
    管外爬行機(jī)器人驅(qū)動(dòng)輪動(dòng)力特性與模態(tài)分析
    一種新型掘進(jìn)機(jī)行走驅(qū)動(dòng)輪設(shè)計(jì)方案
    ARINC661顯控指令快速驗(yàn)證方法
    LED照明產(chǎn)品歐盟ErP指令要求解讀
    一種軟開關(guān)的交錯(cuò)并聯(lián)Buck/Boost雙向DC/DC變換器
    一種工作頻率可變的雙向DC-DC變換器
    阿拉善右旗| 顺平县| 余姚市| 潍坊市| 米林县| 濮阳市| 芒康县| 武安市| 浙江省| 渝中区| 繁峙县| 榆中县| 色达县| 安康市| 赤城县| 神池县| 奉贤区| 辽源市| 桑植县| 勃利县| 札达县| 班戈县| 利辛县| 绥滨县| 贡山| 青田县| 房产| 达州市| 招远市| 黎川县| 鸡东县| 吉木乃县| 贡觉县| 阿克| 江门市| 天台县| 郑州市| 哈尔滨市| 囊谦县| 鄱阳县| 桃源县|