王清珍,張珊珊,陳 浩
(鄭州科技學院信息工程學院,鄭州 450064)
在多機器人編隊過程中需要大量的控制數據,動態變化計算量大,采用機器人本地計算有一定局限性,在云端進行數據存儲和算法實現便成為一種新的解決思路。在這一技術領域中已有很多研究人員展開嘗試,獲得了一定成果。Mishra等人提出了云存儲數據的存儲安全訪問授權方式[1],為多機器人協作編隊控制云實現提供了理論依據,并在阿里云服務器上布局機器人控制數據庫實例。在多自主移動機器人的路徑規劃、編隊成形與編隊保持控制方面,孫玉嬌等人提出基于領航者的多機器人系統編隊控制[2]。另外,黃金梭等人在基于視覺和工業機器人的動態抓取技術[3]中提出相機檢測和機器人動態抓取系統模型,為實現多自主移動機器人編隊的流暢性提供了研究樣例。
在借鑒前人研究成果優點的基礎上,提出一套新解決方案,所實現的系統將視覺定位編隊位置與云端相結合,相機定位后數據存儲在云端,動態編隊在云端計算,大量信息數據都放在云服務器中運行,進行實時性分析、計算,大大減輕機器人自身負重。
云服務器端數據庫利用電腦PC端作為控制端,創建、存儲并更新機器人的位置信息和編隊控制信息,與MCU端進行實時數據收集,并傳輸控制信息。MCU做為數據信息傳輸的中間媒介,本身所帶的攝像頭采集機器人的位置信息發給MCU,實現對機器人位置坐標檢測,與云服務器發送的位置信息進行比對,完成視覺定位。MCU與多個機器人通過無線模塊的TCP/IP協議進行通信,與云服務器、編隊機器人分別連接,在編隊過程中進行數據傳輸。系統總體結構如圖1所示。

圖1 系統總體結構圖
所選服務器為阿里云的云服務器[4],通過云端存儲計算多自主機器人編隊的控制信息。云端系統配置使用Linux系統Ubuntu版本,選擇合適的運行內核,重新登入,進入管理控制臺的云服務器ECS,選擇合適的地域以及需要的系統盤。進入實例選擇Linux系統盤進行配置,配置時首先設置密碼。
在Linux界面連接云服務器,在遠程連接操控云服務器時,云服務器有公網IP和私網IP之分,這兩個IP地址是遠程連接控制云服務器的ID,也就是后期多機器人編隊時的通信ID。進行VNC遠程連接后就進入了操作界面。在此,遠程連接的工具選用PuTTY。
使用PC作為客戶端控制云服務器,借助PuTTY工具連接云服務器,輸入云服務器的公網IP,即可實現連接。
由于云服務器無可視化界面,需要利用PuTTY工具提供終端操作界面以便于操作控制。在終端界面的命令框中輸入超級用戶名和密碼,顯示的實例名稱,如:root@i-2zed2cbgi4jm1qics65k。控制云端的操作與本地服務器的操作命令一致。
利用WinSCP實現本地與云服務器的連接。將本地文件放入云服務器的某個目錄下或文件中,進行機器人的位置信息、編隊控制信息傳輸。連接時需要提供云主機IP地址、超級用戶名、密碼,登錄后呈現出傳輸界面。當需要傳輸時,只需將本地文件拖拽進云服務器的界面即可完成上傳。
多自主移動機器人進行編隊的數據包含編隊隊形、路徑規劃、目標位置坐標等信息。位置坐標信息會隨著運動而不斷改變。把實際位置坐標與采集檢測位置坐標進行比對加以定位,實現多機器人的位置微調,以達到隊形的保持和呈現流暢的隊形。
建立數據庫的表格,其中字段包括機器人序號R_id、機器人顏色標簽Color、位置坐標Location、實時傳輸時間Time等,具體如表1所示。

表1 云端存儲數據庫信息
借助Navicat premium工具將云端數據庫可視化,用pyMySQL創建數據庫,對公網IP、用戶名、登錄密碼、數據庫名稱和傳輸的串口等進行操作。創建表格后運用SQL語句將位置坐標信息插入到數據表,在編隊過程中實時更新數據表。
MCU與云端之間選擇TCP/IP協議進行通信,通信傳輸流程如圖2所示。

圖2 通信傳輸流程圖
此處MCU的主要作用是作為中介發送和接收信息。為實現多自主移動機器人的編隊控制,MCU與云主機需要雙向接收和發送數據。將兩端分別編程為發送(client)和接收(server)兩種模式,采用TCP/IP協議的套接字(Socket)進行通信。云服務器與機器人通信是通過MCU進行中間傳輸通信,MCU作為發送端,云服務器作為接收端,進行數據的打包傳輸。運用TCP/IP協議實現多機器人編隊方便快捷,安全性高。
與云端通信采用python語言編寫代碼,通過Socket進行數據傳輸。測試數據的發送端發送的是攝像頭檢測位置坐標,通過Socket傳輸至云端。接收端與發送端的詳細數據如表2所示。

表2 發送端與接收端數據
可見,發送端輸出的三個顏色坐標,與在輸出端收到的坐標完全相同,表明每個顏色的坐標數據都一一對應無誤,云服務器與MCU通信成功。隨后又進行了多組數據測試,得到了同樣理想的結果。
多自主移動機器人的編隊采用領航跟隨算法實現,把動態編隊過程的運算部分存放在云端,定位的信息實時傳輸到云端進行數據庫更新,在云端完成存儲和計算[5]。
4.2.1 領航跟隨算法
在領航跟隨算法(Leader-Follower)中,位置坐標的校正是通過視覺定位來實現的。攝像頭檢測機器人的位置坐標是否與實際坐標一致,不同時通過前后左右的調整移動到實際坐標位置,即進行位置誤差微調。機器人編隊常見的隊形有線性隊形、菱形隊形、三角隊形等[6]。當機器人變換隊形時,云端服務器發送編隊指令控制領航者移動到對應的坐標,跟隨者隨著領航者發送的信息開始移動,云端調用數據庫中的坐標與實際坐標進行判斷,檢測每個機器人的位置是否正確。例如:線性隊形變換為三角形隊形時,所建立的模擬坐標系如圖3所示。編隊中各機器人通過最優途徑到達編隊位置的過程中的坐標變化如表3所示。

圖3 模擬坐標及隊形變換圖

表3 編隊歸位過程模擬坐標變化
可見,當編隊從線性變換為三角形時,黑色、綠色、藍色分別向上移動,紅色坐標和紫色坐標不變,黃色向左移動,經過最優移動路徑規劃編隊。云端大數據存儲和計算功能使機器人編隊效率更高。
4.2.2 視覺、編隊、云端結合
在機器人編隊視覺定位的過程中,領航者位置坐標信息由兩個攝像頭進行檢測,最終將兩個攝像頭折合為一個坐標定位[7]。視覺定位主要由MCU完成處理,包括利用OPencv庫對圖像進行處理,通過檢測物體形狀和顏色,對所需顏色及形狀進行分析識別,識別計算所得的坐標信息即時上傳云端。檢測過程中用不同顏色的正方體代表不同的機器人進行位置檢測。模擬與實際定位檢測攝像頭如圖4所示。

圖4 模擬與實際攝像頭定位檢測對比圖
多組檢測坐標與實際坐標對比如表4所示。檢測坐標數據單位為mm,檢測數據與實際坐標之間的誤差范圍為0~54mm,處在可接受的范圍內,對機器人編隊不會有太大影響。為使編隊隊形更加流暢,還需考慮信息傳輸過程中因傳輸帶寬所限而帶來的的延遲[8]問題。

表4 檢測坐標與實際坐標對比表
設計的基于云的多自主移動機器人編隊控制方案的最終實現,說明采用視覺定位、云存儲和云計算確實可以解決多機器人編隊過程中的位置誤差問題,實驗結果滿足編隊流暢性需求,方法適用于2D環境下多自主移動機器人編隊控制。由于云服務器與MCU、機器人三者之間采用無線通信,現實使用中的控制指令下發和機器人位置坐標上傳受傳輸帶寬的延遲限制,機器人編隊的部分動作仍存在短暫不連貫,還有待未來進一步研究解決。