合肥工業(yè)大學(xué)(宣城校區(qū))信息工程系 望明星 張 萌 吳仲修 高 鑫 董智源
伴隨著自動化、計(jì)算機(jī)、人工智能以及傳感器等技術(shù)的飛速發(fā)展[1]。以仿生學(xué)知識為指導(dǎo),研究自然界中擁有優(yōu)良的協(xié)調(diào)控制能力和高超運(yùn)動能力的各種生物,并將研究成果應(yīng)用到現(xiàn)實(shí)領(lǐng)域,已成為研究人員感興趣的熱點(diǎn)之一。六足機(jī)器人更是仿生學(xué)對多足昆蟲研究的典型代表。多足機(jī)器人與輪式、履帶式移動機(jī)器人相比,具有獨(dú)特的優(yōu)越性能,尤其在地形不規(guī)則和崎嶇不平的環(huán)境中,穩(wěn)定性好、能耗較小,而且能適應(yīng)各種復(fù)雜的環(huán)境[2]。同時,人機(jī)交互領(lǐng)域的發(fā)展趨勢之一就是自然便捷的語音技術(shù)。機(jī)器人的應(yīng)用范圍正不斷向非結(jié)構(gòu)化環(huán)境延伸 。在這種情況下,機(jī)器人的控制系統(tǒng)至關(guān)重要。
本文就是基于多足昆蟲的仿生學(xué)研究,在充分了解其運(yùn)動方式、系統(tǒng)組成形式和控制模式的基礎(chǔ)上,結(jié)合非特定人語音技術(shù),設(shè)計(jì)了一款能夠?qū)崿F(xiàn)特定功能的多足機(jī)器人控制系統(tǒng)。
圖1 六足機(jī)器人控制流程
六足機(jī)器人主要包括Arduino主控制板、語音模塊、20路舵機(jī)控制板、藍(lán)牙模塊和超聲波模塊。舵機(jī)控制模塊的輸入信號與Arduino的第一串口輸出信號連接;語音識別模塊的輸出信號與Arduino的第二串口輸入信號連接;超聲波模塊的輸出信號與Arduino的第三串口輸入信號連接;手柄控制器模塊的無線通信輸出信號與舵機(jī)控制模塊的藍(lán)牙輸入信號連接;舵機(jī)控制模塊的輸出信號與六足機(jī)器人舵機(jī)模塊連接;六足機(jī)器人舵機(jī)模塊由十八路舵機(jī)組成,整體控制流程如圖1所示。其中Arduino控制板作為主控制器,能夠接收、處理外界信息,具有決策功能;語音和藍(lán)牙模塊可以隨時接受外部信息,以便實(shí)現(xiàn)對機(jī)器人的實(shí)時控制;手柄控制器可以直接控制機(jī)器人的運(yùn)動;舵機(jī)控制板負(fù)責(zé)控制機(jī)器人的運(yùn)動協(xié)調(diào)。
不同于人機(jī)交互的傳統(tǒng)鍵控、觸控等方式,語音控制方式具有獨(dú)特的自然性和智能性。系統(tǒng)采用WEGASUN-M6語音識別模塊,利用上位機(jī)軟件對語音識別模塊的工作模式、詞條指令和各項(xiàng)參數(shù)進(jìn)行設(shè)置。該語音模塊既可獨(dú)立運(yùn)行,也可通過TTL串口與單片機(jī)相連接,通過串口接收指令和返回結(jié)果,達(dá)到語音控制的效果。模塊支持中文和英文的識別,識別距離為5米,能夠智能地降噪、過濾并識別非特定人的語音。模塊還支持串口點(diǎn)播擴(kuò)展TF卡里的MP3文件,并具有文字合成語音播放的功能。
圖2 WEGASUN-M6語音模塊
機(jī)器人基于代碼開源、靈活便捷的電子設(shè)計(jì)平臺Arduino。該平臺包括一塊實(shí)現(xiàn)電路功能的電路板以及一套類似于C語言和Java的IDE集成開發(fā)環(huán)境。系統(tǒng)選用Arduino Mega 2560作為機(jī)器人的主控電路板,它以ATmega 2560為處理器核心,具有54路的數(shù)字I/O口。其中的16路作為PWM輸出,16路作為模擬輸入和4路UART接口。硬件電路的串口通信連接如圖3所示,波特率統(tǒng)一設(shè)置為9600 Baud/s。
機(jī)器人有十八路舵機(jī),為準(zhǔn)確協(xié)調(diào)的相互配合完成各種動作,可將舵機(jī)控制板通過2路UART接口與Mega 2560相連,作為二級控制器。舵機(jī)控制板以ARM內(nèi)核作為處理器,能夠生成穩(wěn)定的多路PWM信號,最多同時控制32路舵機(jī)??刂瓢鍍?nèi)置存儲芯片,可以存儲步態(tài)動作。
圖3 串口通信連接圖
六足機(jī)器人對環(huán)境極強(qiáng)的適應(yīng)性體現(xiàn)在冗余的仿生肢體結(jié)構(gòu)上[3]。機(jī)器人的行走、轉(zhuǎn)彎等動作需要十八個舵機(jī)相互協(xié)調(diào)、配合,所以相應(yīng)的步態(tài)程序設(shè)計(jì)比較復(fù)雜。本文通過在上位機(jī)中對十八路舵機(jī)的角度和速度進(jìn)行控制,來規(guī)劃設(shè)計(jì)六足機(jī)器人的不同動作,如圖4所示。
圖4 上位機(jī)界面
圖中,只列出了8個舵機(jī)位。舵機(jī)位的不同序號,表示1~18路舵機(jī),所屬列下面的數(shù)字表示該位置舵機(jī)的角度度數(shù),變化范圍是從0到180度;時間列下面的參數(shù)是舵機(jī)運(yùn)行到該位置時執(zhí)行指令所用的時間,可以在軟件中進(jìn)行修改,達(dá)到調(diào)整姿態(tài)的目的;動作序號列下面的數(shù)字表示成功完成一組動作,所有舵機(jī)角度變化的全過程。六足機(jī)器人典型的步態(tài)有:三角步態(tài)、四角步態(tài)、五角步態(tài)、橫向步態(tài)和定點(diǎn)轉(zhuǎn)彎步態(tài)等[4]。三角步態(tài)是六足機(jī)器人適用性最強(qiáng)的步態(tài),將六只足分為兩組,左前足、左后足、右中足為一組,右前足、右后足、左中足為一組,兩組分別形成三角形的支架。機(jī)器人依靠兩組足相互交替地完成抬起、支撐和擺動等動作,實(shí)現(xiàn)穩(wěn)定的行走。在三角步態(tài)的基礎(chǔ)上,上位機(jī)中設(shè)計(jì)了六足機(jī)器人的前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)步態(tài),使它可以適應(yīng)各種復(fù)雜地形。
Arduino mega 2560的串口2和語音模塊連接,接收語音模塊解析后的語音指令。在上位機(jī)軟件中可以對WEGASUN-M6語音識別??爝M(jìn)行設(shè)置。語音模塊有3種不同的識別模式,如表1所示:
表1
@AsrMode#2$是軟件中模式的設(shè)置格式,@AsrMode#2$中的2可以設(shè)置成0-2中的任一數(shù)字,不同的數(shù)字分別對應(yīng)不同模式。因?yàn)閷υ捘J綍r刻對環(huán)境中的口令詞條進(jìn)行識別操作,容易造成誤識別。因此我們選擇了自定義模式,設(shè)置了特定的喚醒詞。選擇了識別模式后,可以分別設(shè)置“識別詞條”和“反饋語文本”,例如:
@WriteFlashText#|001前進(jìn)|002收到$
其中,“前進(jìn)”是語音模塊可以識別的詞條,內(nèi)部軟件通過001來代表該指令。收到前進(jìn)的指令后會反饋發(fā)出“收到”的語音,內(nèi)部軟件通過002來代表該指令??梢砸淮涡栽O(shè)置多條詞條,最多可設(shè)置3500字節(jié),約1750字。$是設(shè)置格式的結(jié)束符。
語音模塊收到指令后對后臺詞條指令庫進(jìn)行搜索,并向Arduino控制板返回與指令匹配的指令號;Arduino控制板通過內(nèi)置程序識別指令號,調(diào)用舵機(jī)控制板中預(yù)先存入的動作組,實(shí)現(xiàn)語音對機(jī)器人的動作控制。
本文設(shè)計(jì)了一種基于Arduino和語音技術(shù)的六足機(jī)器人控制系統(tǒng),并在此基礎(chǔ)上增加了藍(lán)牙控制、串口控制和手柄控制。給機(jī)器人設(shè)置了多種動作組,可以通過語音實(shí)時的對機(jī)器人進(jìn)行各種步態(tài)的控制。交互方式友好便捷,多種控制方式的加入也使得系統(tǒng)更加穩(wěn)健。
[1]儲忠.六足仿生機(jī)器人的運(yùn)動步態(tài)研究[D].合肥:合肥工業(yè)大學(xué)計(jì)算機(jī)與信息學(xué)院,2007,1~51.
[2]王洪斌,李程,王躍靈等.基于Arduino和藍(lán)牙技術(shù)的六足機(jī)器人控制系統(tǒng)設(shè)計(jì)[J].黑龍江大學(xué)自然科學(xué)學(xué)報,2015,32(4):533~537.
[3]李滿宏,張明路,張建華,張小俊 六足機(jī)器人關(guān)鍵技術(shù)綜述[J].機(jī)械設(shè)計(jì),2015,32(10):1~7.
[4]劉鵬飛.六足機(jī)器人步態(tài)分析與控制研究[D].秦皇島:燕山大學(xué)電氣工程學(xué)院,2015:1~60.