張開宇,高國偉,2,毛浩龍
(1.北京信息科技大學 傳感器重點實驗室,北京 100101;2.北京信息科技大學 現代測控技術教育部重點實驗室,北京 100192;3.北京信息科技大學 自動化學院,北京 100096)
隨著機器人技術的發展,機器人在越來越多的領域中發揮著重要作用[1-2]。單獨的機器人工作能力有限,而復合功能機器人價格高昂,制造和維護成本都高于數個功能單一的機器人[3]。在軍事方面,機器人群體可以輕松地完成多方位偵查,排雷,打擊目標等復雜任務,在工業方面,可以完成焊接、組裝、車床沖壓等,在民用方面如智能噴灑,智能除草等方面[4-5]。
機器人集群控制是為了使多個機器人統一由單獨的控制系統來進行控制,從而形成高度協調的控制系統,從而可以使機器人集群高效協調工作完成單個機器人無法勝任的復雜工作。針對自主機器人群體的控制方式主要有:領航員-跟隨法[6-7]、基于行為法[8]、虛擬結構法[9]以及近年來學者提出的距離測量法[10]等。這些方法適用性較低,無法在現場靈活地改變動作,或者在編程的時候無法直觀地看到機器人的動作而導致編程困難,調試繁瑣。通過改進的領航跟隨型迭代學習法[11]等算法可實現機器人的接收自適應動作指令,但這些方法對機器人的硬件要求很高,形成機器人編隊時成本昂貴。
在進行多個自主機器人編隊算法設計時需要考慮如何通過簡單的相互作用,使控制大量的機器人等諸多問題。
該系統采用MQTT協議通信,記憶儲存模塊儲存動作代碼,使得機器人可以實時地同上位機相互傳輸信號,操作人員可以及時地做出更改指令,糾正錯誤,規范動作,切換和終止任務等操作,有效的解決了無法及時糾正錯誤動作,更改提前編寫的動作程序等問題。可以完成信息共享,直接消除了機器人個體之間的動作沖突,形成了由統一控制中心進行的多個機器人協調工作的控制系統,是實現多個機器人協調工作的有效技術途徑。并且因為具有儲存模塊,即使與上位機斷開鏈接,也可以根據提前編好的指令進行運轉。通過對三臺機器人的控制測試,該系統滿足對機器人編隊控制的要求,成本低廉,對機器人硬件要求不高,易于廣泛推廣。
IBM公司于1988年發布MQTT協議,將其構建在TCP/IP上,,它主要面向通信資源受限且通信任務比較輕的局域網中[12]。因為MQTT帶寬極低、成本低廉、易于實現所以經常被使用在寒旱地區以及野外進行環境監測。采用四足機器人對該系統進行測試,其每個機器人具有12個靈活度,控制難度超過一般的輪式或者履帶式機器人。但是,其具有優秀的適應能力,可以實現翻越障礙物,進行跳躍,上階梯等動作。動力強,穩定性良好等特性使得其具有十分高的研究價值。因此選擇對四足機器人進行控制既可以檢驗該控制方案是否具有可行性,也可以檢測其在實際應用中是否具有較高的使用價值。
MQTT傳輸的消息分為:主題(topic)和負載(payload)兩個部分,topic部分包含消息名,payload是實際要傳輸的內容。因為每個消息都會有一個主題,所以MQTT可以根據主題來區分消息來發送到哪個客戶端。同時MQTT具有以下特點:
1)使用的發布/訂閱消息模式后,MQTT提供多消息分發實現與應用程序解耦。
2)具有對負載信息屏蔽的消息傳輸機制。
3)可以設置消息服務質量等級(QoS):當QoS=0時,無論接受方是否接受到了消息,最多發送一次消息;當QoS=1時,為了確保消息確實到達,至少發送一次。當QoS=2時,消息發送一次,是最高等級,不允許消息丟失。
系統由三部分組成:機器人終端,服務器,人機交互平臺。其中服務器和人機交互平臺可以在同一PC端實現。在機器人連接到服務器后,人機交互平臺即可發送各項參數和信息給機器人,同時機器人可以反饋運動信息給平臺。
為了檢測該操作系統對軟件以及上位機的硬件配置要求,實驗選擇了筆記本電腦,其配置為酷睿處理器i5-4200U(1.6~2.6 GHz),4 G內存,GT750M顯卡。機器人選擇了具有12個靈活度的四足機器人,其核心為ESP8266控制模塊,內部集成了WiFi模塊可連接到控制路由器上,在局域網內形成多個機器人信息交互網絡。該系統開發采用目前流行的開源軟件Arduino作Windows端開發IDE,其上位機通過LinuxQt或Android與操作員進行交互,并且顯示各個機器人的狀態信息。通過上位廣播對各個機器人進行控制,各個機器人收到上位機的網絡控制動作命令后,依次有序的執行并匯報,從而使得機器人之間協調有序的進行動作,實現機器人之間的合作完成任務。機器人采用了舵機控制模塊,AD采樣模塊,穩壓模塊等。通過IIC總線通信和控制12個伺服電機實現動作。整個軟件設計如圖2所示。

圖1 MQTT控制系統發布訂閱模式

圖2 軟件設計框圖
在無線局域網情況下,Wireshark的使用讓該控制系統可以在Linux環境中抓取控制中心與外界通訊時的IEEE 802.11的抓包文件(即Pcap),篩選并獲取MQTT協議的數據包。獲取MQTT協議的數據包后開始進行串口調試,在串口調試完可以進行對MQTT協議的數據包的解讀,串口調試見圖3。

圖3 串口調試
如果機器人運行過程發生異常,異常信息就會通過集成MQTT客戶端發送到服務器上,人機交互平臺就可以接收到異常信息,從而實施相應的對策。
操作員可以通過PC端或者手機應用客戶端實現隨時隨地地檢測機器人運動狀態,手機客戶端(遠程客戶端)以“推拉”的方式接收消息,定期地向服務器詢問是否有消息發出稱為“拉”,服務器主動向遠程客戶端發送消息稱為“推”。該系統考慮到手機的待機時長,采用推的方式將信息發送給客戶端。
在Android客戶端設計中,將MQTT集成到ServicePush模塊中,連接到服務器以后便可以訂閱相關主題。當有主題推送時,Android客戶端便可以直接查看在線機器人的運作狀態。
四足爬行機器人是仿生機器人,其結構如蜘蛛。四足爬行機器人根據蜘蛛的生理結構,運動方式和動作行為原理設計出來,在實際中具有很強的工作能力和市場前景[13-17]。實驗使用了具有12個自由度的四足仿蜘蛛機器人,其12個自由度的控制對該控制系統具有一定的考驗。并且該系統是基于機器人集群控制,各種集群控制的算法可以自由選擇、自行切換,方便高效。
四足機器人硬件電路采用主控芯片,舵機控制模塊,顯示模塊等其部分組成。
2.1.1 主控芯片
如圖4所示,主控芯片采用了ESP8266芯片,其工作溫度在-20~80 ℃之間,適應各種場合,并且內置射頻模塊,2.5 GHz的接收發射器。其自帶WIFI射頻,802.11 b和802.11 g的基帶。內置了TCP/IP協議等使得與上位機連接是不在依靠有線傳輸。

圖4 主控MCU最小系統電路
2.1.2 舵機控制模塊
舵機控制模塊使用PCA9685將數字信號轉換為伺服電機可以識別多的PWM控制信號,其電路如圖5所示。使用IIC與ESP8266進行通信從而達到控制伺服電機的目的。PCA9685本身自帶四個IIC地址,每個IIC最多支持四路PWM信號的輸出,并且各路信號均為12位分辨率。該舵機控制模塊可實現自上電復位和軟件復位的功能,不必設計手動復位電路。

圖5 舵機控制電路
2.1.3 顯示模塊
如圖6所示,四足機器人采用1.3寸的OLED液晶顯示,128×64點陣滿足調試需求,在室內和陽光下都可以看見。在調試完程序以后,考慮到機器人功耗問題,在正常運行時將關閉OLED。

圖6 OLED電路
機器人打開電源后會直接進入調試模式,ESP8266通過集成的WIFI開始搜索服務器終端并連接,MQTT中間件便開始發送報文,報文中包括連接件的用戶名(ssid)和密碼(password),ssid和password正確便可以開始進行匹配。在控制中心和機器人匹配成功后,控制系統便可以直接控制機器人,匹配調試過程見圖7。

圖7 匹配調試圖
圖7中ssid是連接的WIFI名稱,password是密碼文件,host是tcpServer服務器的IP地址,同時也是手機在路由器上的IP。tcpPort是監控端地址。
如果機器人在運行過程中發生異常狀況如:停機或動作模式不正確等,這些異常數據會通過集成的MQTT終端發送到上位機中,操作人員便可以根據情況做出處理。同時,MQTT終端會時時地將機器人的12個舵機的運動位置發送到上位機中,當舵機的運動位置長時間不更新時便可以根據是否有連接中斷信息通知來判斷機器人死機或者掉線。
四足機器人爬行分解如圖8所示,在該系統控制下,機器人爬行時以左前腿右后腿同時向前,并且左前腿和右后腿的膝關節微微抬起,到達指定位置后左前腿右后腿的漆關節落下支撐機器人軀體,右前腿和左后腿重復左前腿右后腿動作,完成一次前進動作。

圖8 四足機器人爬行示意圖

a.髖關節;b.膝關節;c.足關節。圖9 四足爬行機器人側面
機器人左前腿和右前腿的驅動函數如圖10所示,其運動相位差半個運動周期,表示了這兩只前腿是模仿四足動物的兩條前腿進行交替運動的。

圖10 左前腿和右前腿的驅動函數圖
該控制系統相比于其他設計系統具有以下的優點:
1)具有可以使機器人動作復現功能。使用動作復現功能完全避開了傳統邊調整參數邊進行動作演示的編程方法,人機交互更加容易,編程更加簡單。
2)成本低廉。在實驗中,只使用了配置很低的筆記本電腦,便可以完全控制3臺機器人,并且實現了控制系統的全部功能,相比與其他昂貴的控制中心,該系統具有很高的性價比。
3)豐富的功能。該系統可以將一臺已經設置好動作的機器人的代碼同時發送到所有相同型號的機器人終端,并且可以運行各種機器人集群控制算法,在多個器人同時工作時可以針對某個機器人進行動作糾正,更改動作模式等操作。
4)該系統可在各種終端上運行。該系統可以在Linux,Windows以及具有無線傳輸功能的平板電腦上運行。
實驗采用四足爬行機器人作為控制對象,四足爬行機器人可以完成較為復雜的動作,成本相對六足機器人和仿人機器人低廉,并且設計上比較簡單。
將具有12個伺服電機的四足機器人的四肢擺放成特定的動作形態,此時的伺服電機的角度如圖11所示。激活機器人后,上位機同時對所有連接到服務器的機器人進行運動指令傳輸,分配任務。機器人接收到上位機的運動控制指令后,按序列匯報并執行動作指令。上位機進入程序端后,開始創建udpsocket文件來實現對用戶IP地址,監聽地址以及本地端口進行判斷。

圖11 運動控制應用界面
運動控制中,可以記錄每個伺服電機的時時的角度位置,在恢復初始狀態后進行運動播放使得每個伺服電機按照時間記錄的角度進行動作重復,及實現了人“手把手教”,操作一次后機器人便可以模仿。
實驗中使用了三個相同的四足爬行機器人來進行機器人集群控制實驗。給三個機器人設置了電位脈沖,當機器人在工作狀態時給控制終端發送的是高電位,當停止工作時發送低電位。實驗使得三臺機器人同時接受指令工作,并且在2.5秒時給第三臺機器人發送停止工作的信號,得到的電位脈沖如圖12所示。

圖12 機器人運作和停止脈沖圖
由圖12可知,當在2.5 s發送停止工作信號給三號機器人時,三號機器人立即停止工作,在5.3 s時給與工作信號后立刻啟動開始繼續工作。
經過實驗檢測,該系統可以滿足遠程控制的需求,并且對在線機器人動作指令運行錯誤時可以及時關停機器人。
針對機器人集群控制存在的動作編程繁瑣,單個機器人成本較高,協同工作時不易對單個機器人進行控制的問題,提出了一種新穎的集中控制技術,其優勢是將單個機器人需要計算的路徑,動作全部集中到控制中心去計算,在后期升級中也只需對控制中心進行升級,成本低廉,控制方便。在實驗中可以同時對3個機器人進行控制,并且可以在數個機器人同時工作時對單個機器人進行精確地控制。設計的用戶界面,也可以更好地實現人機互動。此外該系統的還可以使機器人復現動作,這將大大降低對機器人動作編程的難度,對具有更加復雜結構的機器人動作編程具有巨大的優勢,并且為機器人動作編程提供了新的思路。