合肥工業大學(宣城校區)信息工程系 望明星 張 萌 吳仲修 高 鑫 董智源
伴隨著自動化、計算機、人工智能以及傳感器等技術的飛速發展[1]。以仿生學知識為指導,研究自然界中擁有優良的協調控制能力和高超運動能力的各種生物,并將研究成果應用到現實領域,已成為研究人員感興趣的熱點之一。六足機器人更是仿生學對多足昆蟲研究的典型代表。多足機器人與輪式、履帶式移動機器人相比,具有獨特的優越性能,尤其在地形不規則和崎嶇不平的環境中,穩定性好、能耗較小,而且能適應各種復雜的環境[2]。同時,人機交互領域的發展趨勢之一就是自然便捷的語音技術。機器人的應用范圍正不斷向非結構化環境延伸 。在這種情況下,機器人的控制系統至關重要。
本文就是基于多足昆蟲的仿生學研究,在充分了解其運動方式、系統組成形式和控制模式的基礎上,結合非特定人語音技術,設計了一款能夠實現特定功能的多足機器人控制系統。

圖1 六足機器人控制流程
六足機器人主要包括Arduino主控制板、語音模塊、20路舵機控制板、藍牙模塊和超聲波模塊。舵機控制模塊的輸入信號與Arduino的第一串口輸出信號連接;語音識別模塊的輸出信號與Arduino的第二串口輸入信號連接;超聲波模塊的輸出信號與Arduino的第三串口輸入信號連接;手柄控制器模塊的無線通信輸出信號與舵機控制模塊的藍牙輸入信號連接;舵機控制模塊的輸出信號與六足機器人舵機模塊連接;六足機器人舵機模塊由十八路舵機組成,整體控制流程如圖1所示。其中Arduino控制板作為主控制器,能夠接收、處理外界信息,具有決策功能;語音和藍牙模塊可以隨時接受外部信息,以便實現對機器人的實時控制;手柄控制器可以直接控制機器人的運動;舵機控制板負責控制機器人的運動協調。
不同于人機交互的傳統鍵控、觸控等方式,語音控制方式具有獨特的自然性和智能性。系統采用WEGASUN-M6語音識別模塊,利用上位機軟件對語音識別模塊的工作模式、詞條指令和各項參數進行設置。該語音模塊既可獨立運行,也可通過TTL串口與單片機相連接,通過串口接收指令和返回結果,達到語音控制的效果。模塊支持中文和英文的識別,識別距離為5米,能夠智能地降噪、過濾并識別非特定人的語音。模塊還支持串口點播擴展TF卡里的MP3文件,并具有文字合成語音播放的功能。

圖2 WEGASUN-M6語音模塊
機器人基于代碼開源、靈活便捷的電子設計平臺Arduino。該平臺包括一塊實現電路功能的電路板以及一套類似于C語言和Java的IDE集成開發環境。系統選用Arduino Mega 2560作為機器人的主控電路板,它以ATmega 2560為處理器核心,具有54路的數字I/O口。其中的16路作為PWM輸出,16路作為模擬輸入和4路UART接口。硬件電路的串口通信連接如圖3所示,波特率統一設置為9600 Baud/s。
機器人有十八路舵機,為準確協調的相互配合完成各種動作,可將舵機控制板通過2路UART接口與Mega 2560相連,作為二級控制器。舵機控制板以ARM內核作為處理器,能夠生成穩定的多路PWM信號,最多同時控制32路舵機。控制板內置存儲芯片,可以存儲步態動作。

圖3 串口通信連接圖
六足機器人對環境極強的適應性體現在冗余的仿生肢體結構上[3]。機器人的行走、轉彎等動作需要十八個舵機相互協調、配合,所以相應的步態程序設計比較復雜。本文通過在上位機中對十八路舵機的角度和速度進行控制,來規劃設計六足機器人的不同動作,如圖4所示。

圖4 上位機界面
圖中,只列出了8個舵機位。舵機位的不同序號,表示1~18路舵機,所屬列下面的數字表示該位置舵機的角度度數,變化范圍是從0到180度;時間列下面的參數是舵機運行到該位置時執行指令所用的時間,可以在軟件中進行修改,達到調整姿態的目的;動作序號列下面的數字表示成功完成一組動作,所有舵機角度變化的全過程。六足機器人典型的步態有:三角步態、四角步態、五角步態、橫向步態和定點轉彎步態等[4]。三角步態是六足機器人適用性最強的步態,將六只足分為兩組,左前足、左后足、右中足為一組,右前足、右后足、左中足為一組,兩組分別形成三角形的支架。機器人依靠兩組足相互交替地完成抬起、支撐和擺動等動作,實現穩定的行走。在三角步態的基礎上,上位機中設計了六足機器人的前進、后退、左轉、右轉步態,使它可以適應各種復雜地形。
Arduino mega 2560的串口2和語音模塊連接,接收語音模塊解析后的語音指令。在上位機軟件中可以對WEGASUN-M6語音識別模快進行設置。語音模塊有3種不同的識別模式,如表1所示:

表1
@AsrMode#2$是軟件中模式的設置格式,@AsrMode#2$中的2可以設置成0-2中的任一數字,不同的數字分別對應不同模式。因為對話模式會時刻對環境中的口令詞條進行識別操作,容易造成誤識別。因此我們選擇了自定義模式,設置了特定的喚醒詞。選擇了識別模式后,可以分別設置“識別詞條”和“反饋語文本”,例如:
@WriteFlashText#|001前進|002收到$
其中,“前進”是語音模塊可以識別的詞條,內部軟件通過001來代表該指令。收到前進的指令后會反饋發出“收到”的語音,內部軟件通過002來代表該指令。可以一次性設置多條詞條,最多可設置3500字節,約1750字。$是設置格式的結束符。
語音模塊收到指令后對后臺詞條指令庫進行搜索,并向Arduino控制板返回與指令匹配的指令號;Arduino控制板通過內置程序識別指令號,調用舵機控制板中預先存入的動作組,實現語音對機器人的動作控制。
本文設計了一種基于Arduino和語音技術的六足機器人控制系統,并在此基礎上增加了藍牙控制、串口控制和手柄控制。給機器人設置了多種動作組,可以通過語音實時的對機器人進行各種步態的控制。交互方式友好便捷,多種控制方式的加入也使得系統更加穩健。
[1]儲忠.六足仿生機器人的運動步態研究[D].合肥:合肥工業大學計算機與信息學院,2007,1~51.
[2]王洪斌,李程,王躍靈等.基于Arduino和藍牙技術的六足機器人控制系統設計[J].黑龍江大學自然科學學報,2015,32(4):533~537.
[3]李滿宏,張明路,張建華,張小俊 六足機器人關鍵技術綜述[J].機械設計,2015,32(10):1~7.
[4]劉鵬飛.六足機器人步態分析與控制研究[D].秦皇島:燕山大學電氣工程學院,2015:1~60.