張開宇,高國偉,2,毛浩龍
(1.北京信息科技大學(xué) 傳感器重點(diǎn)實(shí)驗(yàn)室,北京 100101;2.北京信息科技大學(xué) 現(xiàn)代測(cè)控技術(shù)教育部重點(diǎn)實(shí)驗(yàn)室,北京 100192;3.北京信息科技大學(xué) 自動(dòng)化學(xué)院,北京 100096)
隨著機(jī)器人技術(shù)的發(fā)展,機(jī)器人在越來越多的領(lǐng)域中發(fā)揮著重要作用[1-2]。單獨(dú)的機(jī)器人工作能力有限,而復(fù)合功能機(jī)器人價(jià)格高昂,制造和維護(hù)成本都高于數(shù)個(gè)功能單一的機(jī)器人[3]。在軍事方面,機(jī)器人群體可以輕松地完成多方位偵查,排雷,打擊目標(biāo)等復(fù)雜任務(wù),在工業(yè)方面,可以完成焊接、組裝、車床沖壓等,在民用方面如智能噴灑,智能除草等方面[4-5]。
機(jī)器人集群控制是為了使多個(gè)機(jī)器人統(tǒng)一由單獨(dú)的控制系統(tǒng)來進(jìn)行控制,從而形成高度協(xié)調(diào)的控制系統(tǒng),從而可以使機(jī)器人集群高效協(xié)調(diào)工作完成單個(gè)機(jī)器人無法勝任的復(fù)雜工作。針對(duì)自主機(jī)器人群體的控制方式主要有:領(lǐng)航員-跟隨法[6-7]、基于行為法[8]、虛擬結(jié)構(gòu)法[9]以及近年來學(xué)者提出的距離測(cè)量法[10]等。這些方法適用性較低,無法在現(xiàn)場(chǎng)靈活地改變動(dòng)作,或者在編程的時(shí)候無法直觀地看到機(jī)器人的動(dòng)作而導(dǎo)致編程困難,調(diào)試繁瑣。通過改進(jìn)的領(lǐng)航跟隨型迭代學(xué)習(xí)法[11]等算法可實(shí)現(xiàn)機(jī)器人的接收自適應(yīng)動(dòng)作指令,但這些方法對(duì)機(jī)器人的硬件要求很高,形成機(jī)器人編隊(duì)時(shí)成本昂貴。
在進(jìn)行多個(gè)自主機(jī)器人編隊(duì)算法設(shè)計(jì)時(shí)需要考慮如何通過簡單的相互作用,使控制大量的機(jī)器人等諸多問題。
該系統(tǒng)采用MQTT協(xié)議通信,記憶儲(chǔ)存模塊儲(chǔ)存動(dòng)作代碼,使得機(jī)器人可以實(shí)時(shí)地同上位機(jī)相互傳輸信號(hào),操作人員可以及時(shí)地做出更改指令,糾正錯(cuò)誤,規(guī)范動(dòng)作,切換和終止任務(wù)等操作,有效的解決了無法及時(shí)糾正錯(cuò)誤動(dòng)作,更改提前編寫的動(dòng)作程序等問題??梢酝瓿尚畔⒐蚕?,直接消除了機(jī)器人個(gè)體之間的動(dòng)作沖突,形成了由統(tǒng)一控制中心進(jìn)行的多個(gè)機(jī)器人協(xié)調(diào)工作的控制系統(tǒng),是實(shí)現(xiàn)多個(gè)機(jī)器人協(xié)調(diào)工作的有效技術(shù)途徑。并且因?yàn)榫哂袃?chǔ)存模塊,即使與上位機(jī)斷開鏈接,也可以根據(jù)提前編好的指令進(jìn)行運(yùn)轉(zhuǎn)。通過對(duì)三臺(tái)機(jī)器人的控制測(cè)試,該系統(tǒng)滿足對(duì)機(jī)器人編隊(duì)控制的要求,成本低廉,對(duì)機(jī)器人硬件要求不高,易于廣泛推廣。
IBM公司于1988年發(fā)布MQTT協(xié)議,將其構(gòu)建在TCP/IP上,,它主要面向通信資源受限且通信任務(wù)比較輕的局域網(wǎng)中[12]。因?yàn)镸QTT帶寬極低、成本低廉、易于實(shí)現(xiàn)所以經(jīng)常被使用在寒旱地區(qū)以及野外進(jìn)行環(huán)境監(jiān)測(cè)。采用四足機(jī)器人對(duì)該系統(tǒng)進(jìn)行測(cè)試,其每個(gè)機(jī)器人具有12個(gè)靈活度,控制難度超過一般的輪式或者履帶式機(jī)器人。但是,其具有優(yōu)秀的適應(yīng)能力,可以實(shí)現(xiàn)翻越障礙物,進(jìn)行跳躍,上階梯等動(dòng)作。動(dòng)力強(qiáng),穩(wěn)定性良好等特性使得其具有十分高的研究價(jià)值。因此選擇對(duì)四足機(jī)器人進(jìn)行控制既可以檢驗(yàn)該控制方案是否具有可行性,也可以檢測(cè)其在實(shí)際應(yīng)用中是否具有較高的使用價(jià)值。
MQTT傳輸?shù)南⒎譃椋褐黝}(topic)和負(fù)載(payload)兩個(gè)部分,topic部分包含消息名,payload是實(shí)際要傳輸?shù)膬?nèi)容。因?yàn)槊總€(gè)消息都會(huì)有一個(gè)主題,所以MQTT可以根據(jù)主題來區(qū)分消息來發(fā)送到哪個(gè)客戶端。同時(shí)MQTT具有以下特點(diǎn):
1)使用的發(fā)布/訂閱消息模式后,MQTT提供多消息分發(fā)實(shí)現(xiàn)與應(yīng)用程序解耦。
2)具有對(duì)負(fù)載信息屏蔽的消息傳輸機(jī)制。
3)可以設(shè)置消息服務(wù)質(zhì)量等級(jí)(QoS):當(dāng)QoS=0時(shí),無論接受方是否接受到了消息,最多發(fā)送一次消息;當(dāng)QoS=1時(shí),為了確保消息確實(shí)到達(dá),至少發(fā)送一次。當(dāng)QoS=2時(shí),消息發(fā)送一次,是最高等級(jí),不允許消息丟失。
系統(tǒng)由三部分組成:機(jī)器人終端,服務(wù)器,人機(jī)交互平臺(tái)。其中服務(wù)器和人機(jī)交互平臺(tái)可以在同一PC端實(shí)現(xiàn)。在機(jī)器人連接到服務(wù)器后,人機(jī)交互平臺(tái)即可發(fā)送各項(xiàng)參數(shù)和信息給機(jī)器人,同時(shí)機(jī)器人可以反饋運(yùn)動(dòng)信息給平臺(tái)。
為了檢測(cè)該操作系統(tǒng)對(duì)軟件以及上位機(jī)的硬件配置要求,實(shí)驗(yàn)選擇了筆記本電腦,其配置為酷睿處理器i5-4200U(1.6~2.6 GHz),4 G內(nèi)存,GT750M顯卡。機(jī)器人選擇了具有12個(gè)靈活度的四足機(jī)器人,其核心為ESP8266控制模塊,內(nèi)部集成了WiFi模塊可連接到控制路由器上,在局域網(wǎng)內(nèi)形成多個(gè)機(jī)器人信息交互網(wǎng)絡(luò)。該系統(tǒng)開發(fā)采用目前流行的開源軟件Arduino作Windows端開發(fā)IDE,其上位機(jī)通過LinuxQt或Android與操作員進(jìn)行交互,并且顯示各個(gè)機(jī)器人的狀態(tài)信息。通過上位廣播對(duì)各個(gè)機(jī)器人進(jìn)行控制,各個(gè)機(jī)器人收到上位機(jī)的網(wǎng)絡(luò)控制動(dòng)作命令后,依次有序的執(zhí)行并匯報(bào),從而使得機(jī)器人之間協(xié)調(diào)有序的進(jìn)行動(dòng)作,實(shí)現(xiàn)機(jī)器人之間的合作完成任務(wù)。機(jī)器人采用了舵機(jī)控制模塊,AD采樣模塊,穩(wěn)壓模塊等。通過IIC總線通信和控制12個(gè)伺服電機(jī)實(shí)現(xiàn)動(dòng)作。整個(gè)軟件設(shè)計(jì)如圖2所示。
圖1 MQTT控制系統(tǒng)發(fā)布訂閱模式
圖2 軟件設(shè)計(jì)框圖
在無線局域網(wǎng)情況下,Wireshark的使用讓該控制系統(tǒng)可以在Linux環(huán)境中抓取控制中心與外界通訊時(shí)的IEEE 802.11的抓包文件(即Pcap),篩選并獲取MQTT協(xié)議的數(shù)據(jù)包。獲取MQTT協(xié)議的數(shù)據(jù)包后開始進(jìn)行串口調(diào)試,在串口調(diào)試完可以進(jìn)行對(duì)MQTT協(xié)議的數(shù)據(jù)包的解讀,串口調(diào)試見圖3。
圖3 串口調(diào)試
如果機(jī)器人運(yùn)行過程發(fā)生異常,異常信息就會(huì)通過集成MQTT客戶端發(fā)送到服務(wù)器上,人機(jī)交互平臺(tái)就可以接收到異常信息,從而實(shí)施相應(yīng)的對(duì)策。
操作員可以通過PC端或者手機(jī)應(yīng)用客戶端實(shí)現(xiàn)隨時(shí)隨地地檢測(cè)機(jī)器人運(yùn)動(dòng)狀態(tài),手機(jī)客戶端(遠(yuǎn)程客戶端)以“推拉”的方式接收消息,定期地向服務(wù)器詢問是否有消息發(fā)出稱為“拉”,服務(wù)器主動(dòng)向遠(yuǎn)程客戶端發(fā)送消息稱為“推”。該系統(tǒng)考慮到手機(jī)的待機(jī)時(shí)長,采用推的方式將信息發(fā)送給客戶端。
在Android客戶端設(shè)計(jì)中,將MQTT集成到ServicePush模塊中,連接到服務(wù)器以后便可以訂閱相關(guān)主題。當(dāng)有主題推送時(shí),Android客戶端便可以直接查看在線機(jī)器人的運(yùn)作狀態(tài)。
四足爬行機(jī)器人是仿生機(jī)器人,其結(jié)構(gòu)如蜘蛛。四足爬行機(jī)器人根據(jù)蜘蛛的生理結(jié)構(gòu),運(yùn)動(dòng)方式和動(dòng)作行為原理設(shè)計(jì)出來,在實(shí)際中具有很強(qiáng)的工作能力和市場(chǎng)前景[13-17]。實(shí)驗(yàn)使用了具有12個(gè)自由度的四足仿蜘蛛機(jī)器人,其12個(gè)自由度的控制對(duì)該控制系統(tǒng)具有一定的考驗(yàn)。并且該系統(tǒng)是基于機(jī)器人集群控制,各種集群控制的算法可以自由選擇、自行切換,方便高效。
四足機(jī)器人硬件電路采用主控芯片,舵機(jī)控制模塊,顯示模塊等其部分組成。
2.1.1 主控芯片
如圖4所示,主控芯片采用了ESP8266芯片,其工作溫度在-20~80 ℃之間,適應(yīng)各種場(chǎng)合,并且內(nèi)置射頻模塊,2.5 GHz的接收發(fā)射器。其自帶WIFI射頻,802.11 b和802.11 g的基帶。內(nèi)置了TCP/IP協(xié)議等使得與上位機(jī)連接是不在依靠有線傳輸。
圖4 主控MCU最小系統(tǒng)電路
2.1.2 舵機(jī)控制模塊
舵機(jī)控制模塊使用PCA9685將數(shù)字信號(hào)轉(zhuǎn)換為伺服電機(jī)可以識(shí)別多的PWM控制信號(hào),其電路如圖5所示。使用IIC與ESP8266進(jìn)行通信從而達(dá)到控制伺服電機(jī)的目的。PCA9685本身自帶四個(gè)IIC地址,每個(gè)IIC最多支持四路PWM信號(hào)的輸出,并且各路信號(hào)均為12位分辨率。該舵機(jī)控制模塊可實(shí)現(xiàn)自上電復(fù)位和軟件復(fù)位的功能,不必設(shè)計(jì)手動(dòng)復(fù)位電路。
圖5 舵機(jī)控制電路
2.1.3 顯示模塊
如圖6所示,四足機(jī)器人采用1.3寸的OLED液晶顯示,128×64點(diǎn)陣滿足調(diào)試需求,在室內(nèi)和陽光下都可以看見。在調(diào)試完程序以后,考慮到機(jī)器人功耗問題,在正常運(yùn)行時(shí)將關(guān)閉OLED。
圖6 OLED電路
機(jī)器人打開電源后會(huì)直接進(jìn)入調(diào)試模式,ESP8266通過集成的WIFI開始搜索服務(wù)器終端并連接,MQTT中間件便開始發(fā)送報(bào)文,報(bào)文中包括連接件的用戶名(ssid)和密碼(password),ssid和password正確便可以開始進(jìn)行匹配。在控制中心和機(jī)器人匹配成功后,控制系統(tǒng)便可以直接控制機(jī)器人,匹配調(diào)試過程見圖7。
圖7 匹配調(diào)試圖
圖7中ssid是連接的WIFI名稱,password是密碼文件,host是tcpServer服務(wù)器的IP地址,同時(shí)也是手機(jī)在路由器上的IP。tcpPort是監(jiān)控端地址。
如果機(jī)器人在運(yùn)行過程中發(fā)生異常狀況如:停機(jī)或動(dòng)作模式不正確等,這些異常數(shù)據(jù)會(huì)通過集成的MQTT終端發(fā)送到上位機(jī)中,操作人員便可以根據(jù)情況做出處理。同時(shí),MQTT終端會(huì)時(shí)時(shí)地將機(jī)器人的12個(gè)舵機(jī)的運(yùn)動(dòng)位置發(fā)送到上位機(jī)中,當(dāng)舵機(jī)的運(yùn)動(dòng)位置長時(shí)間不更新時(shí)便可以根據(jù)是否有連接中斷信息通知來判斷機(jī)器人死機(jī)或者掉線。
四足機(jī)器人爬行分解如圖8所示,在該系統(tǒng)控制下,機(jī)器人爬行時(shí)以左前腿右后腿同時(shí)向前,并且左前腿和右后腿的膝關(guān)節(jié)微微抬起,到達(dá)指定位置后左前腿右后腿的漆關(guān)節(jié)落下支撐機(jī)器人軀體,右前腿和左后腿重復(fù)左前腿右后腿動(dòng)作,完成一次前進(jìn)動(dòng)作。
圖8 四足機(jī)器人爬行示意圖
a.髖關(guān)節(jié);b.膝關(guān)節(jié);c.足關(guān)節(jié)。圖9 四足爬行機(jī)器人側(cè)面
機(jī)器人左前腿和右前腿的驅(qū)動(dòng)函數(shù)如圖10所示,其運(yùn)動(dòng)相位差半個(gè)運(yùn)動(dòng)周期,表示了這兩只前腿是模仿四足動(dòng)物的兩條前腿進(jìn)行交替運(yùn)動(dòng)的。
圖10 左前腿和右前腿的驅(qū)動(dòng)函數(shù)圖
該控制系統(tǒng)相比于其他設(shè)計(jì)系統(tǒng)具有以下的優(yōu)點(diǎn):
1)具有可以使機(jī)器人動(dòng)作復(fù)現(xiàn)功能。使用動(dòng)作復(fù)現(xiàn)功能完全避開了傳統(tǒng)邊調(diào)整參數(shù)邊進(jìn)行動(dòng)作演示的編程方法,人機(jī)交互更加容易,編程更加簡單。
2)成本低廉。在實(shí)驗(yàn)中,只使用了配置很低的筆記本電腦,便可以完全控制3臺(tái)機(jī)器人,并且實(shí)現(xiàn)了控制系統(tǒng)的全部功能,相比與其他昂貴的控制中心,該系統(tǒng)具有很高的性價(jià)比。
3)豐富的功能。該系統(tǒng)可以將一臺(tái)已經(jīng)設(shè)置好動(dòng)作的機(jī)器人的代碼同時(shí)發(fā)送到所有相同型號(hào)的機(jī)器人終端,并且可以運(yùn)行各種機(jī)器人集群控制算法,在多個(gè)器人同時(shí)工作時(shí)可以針對(duì)某個(gè)機(jī)器人進(jìn)行動(dòng)作糾正,更改動(dòng)作模式等操作。
4)該系統(tǒng)可在各種終端上運(yùn)行。該系統(tǒng)可以在Linux,Windows以及具有無線傳輸功能的平板電腦上運(yùn)行。
實(shí)驗(yàn)采用四足爬行機(jī)器人作為控制對(duì)象,四足爬行機(jī)器人可以完成較為復(fù)雜的動(dòng)作,成本相對(duì)六足機(jī)器人和仿人機(jī)器人低廉,并且設(shè)計(jì)上比較簡單。
將具有12個(gè)伺服電機(jī)的四足機(jī)器人的四肢擺放成特定的動(dòng)作形態(tài),此時(shí)的伺服電機(jī)的角度如圖11所示。激活機(jī)器人后,上位機(jī)同時(shí)對(duì)所有連接到服務(wù)器的機(jī)器人進(jìn)行運(yùn)動(dòng)指令傳輸,分配任務(wù)。機(jī)器人接收到上位機(jī)的運(yùn)動(dòng)控制指令后,按序列匯報(bào)并執(zhí)行動(dòng)作指令。上位機(jī)進(jìn)入程序端后,開始創(chuàng)建udpsocket文件來實(shí)現(xiàn)對(duì)用戶IP地址,監(jiān)聽地址以及本地端口進(jìn)行判斷。
圖11 運(yùn)動(dòng)控制應(yīng)用界面
運(yùn)動(dòng)控制中,可以記錄每個(gè)伺服電機(jī)的時(shí)時(shí)的角度位置,在恢復(fù)初始狀態(tài)后進(jìn)行運(yùn)動(dòng)播放使得每個(gè)伺服電機(jī)按照時(shí)間記錄的角度進(jìn)行動(dòng)作重復(fù),及實(shí)現(xiàn)了人“手把手教”,操作一次后機(jī)器人便可以模仿。
實(shí)驗(yàn)中使用了三個(gè)相同的四足爬行機(jī)器人來進(jìn)行機(jī)器人集群控制實(shí)驗(yàn)。給三個(gè)機(jī)器人設(shè)置了電位脈沖,當(dāng)機(jī)器人在工作狀態(tài)時(shí)給控制終端發(fā)送的是高電位,當(dāng)停止工作時(shí)發(fā)送低電位。實(shí)驗(yàn)使得三臺(tái)機(jī)器人同時(shí)接受指令工作,并且在2.5秒時(shí)給第三臺(tái)機(jī)器人發(fā)送停止工作的信號(hào),得到的電位脈沖如圖12所示。
圖12 機(jī)器人運(yùn)作和停止脈沖圖
由圖12可知,當(dāng)在2.5 s發(fā)送停止工作信號(hào)給三號(hào)機(jī)器人時(shí),三號(hào)機(jī)器人立即停止工作,在5.3 s時(shí)給與工作信號(hào)后立刻啟動(dòng)開始繼續(xù)工作。
經(jīng)過實(shí)驗(yàn)檢測(cè),該系統(tǒng)可以滿足遠(yuǎn)程控制的需求,并且對(duì)在線機(jī)器人動(dòng)作指令運(yùn)行錯(cuò)誤時(shí)可以及時(shí)關(guān)停機(jī)器人。
針對(duì)機(jī)器人集群控制存在的動(dòng)作編程繁瑣,單個(gè)機(jī)器人成本較高,協(xié)同工作時(shí)不易對(duì)單個(gè)機(jī)器人進(jìn)行控制的問題,提出了一種新穎的集中控制技術(shù),其優(yōu)勢(shì)是將單個(gè)機(jī)器人需要計(jì)算的路徑,動(dòng)作全部集中到控制中心去計(jì)算,在后期升級(jí)中也只需對(duì)控制中心進(jìn)行升級(jí),成本低廉,控制方便。在實(shí)驗(yàn)中可以同時(shí)對(duì)3個(gè)機(jī)器人進(jìn)行控制,并且可以在數(shù)個(gè)機(jī)器人同時(shí)工作時(shí)對(duì)單個(gè)機(jī)器人進(jìn)行精確地控制。設(shè)計(jì)的用戶界面,也可以更好地實(shí)現(xiàn)人機(jī)互動(dòng)。此外該系統(tǒng)的還可以使機(jī)器人復(fù)現(xiàn)動(dòng)作,這將大大降低對(duì)機(jī)器人動(dòng)作編程的難度,對(duì)具有更加復(fù)雜結(jié)構(gòu)的機(jī)器人動(dòng)作編程具有巨大的優(yōu)勢(shì),并且為機(jī)器人動(dòng)作編程提供了新的思路。