王清珍,張珊珊,陳 浩
(鄭州科技學(xué)院信息工程學(xué)院,鄭州 450064)
在多機(jī)器人編隊(duì)過(guò)程中需要大量的控制數(shù)據(jù),動(dòng)態(tài)變化計(jì)算量大,采用機(jī)器人本地計(jì)算有一定局限性,在云端進(jìn)行數(shù)據(jù)存儲(chǔ)和算法實(shí)現(xiàn)便成為一種新的解決思路。在這一技術(shù)領(lǐng)域中已有很多研究人員展開(kāi)嘗試,獲得了一定成果。Mishra等人提出了云存儲(chǔ)數(shù)據(jù)的存儲(chǔ)安全訪問(wèn)授權(quán)方式[1],為多機(jī)器人協(xié)作編隊(duì)控制云實(shí)現(xiàn)提供了理論依據(jù),并在阿里云服務(wù)器上布局機(jī)器人控制數(shù)據(jù)庫(kù)實(shí)例。在多自主移動(dòng)機(jī)器人的路徑規(guī)劃、編隊(duì)成形與編隊(duì)保持控制方面,孫玉嬌等人提出基于領(lǐng)航者的多機(jī)器人系統(tǒng)編隊(duì)控制[2]。另外,黃金梭等人在基于視覺(jué)和工業(yè)機(jī)器人的動(dòng)態(tài)抓取技術(shù)[3]中提出相機(jī)檢測(cè)和機(jī)器人動(dòng)態(tài)抓取系統(tǒng)模型,為實(shí)現(xiàn)多自主移動(dòng)機(jī)器人編隊(duì)的流暢性提供了研究樣例。
在借鑒前人研究成果優(yōu)點(diǎn)的基礎(chǔ)上,提出一套新解決方案,所實(shí)現(xiàn)的系統(tǒng)將視覺(jué)定位編隊(duì)位置與云端相結(jié)合,相機(jī)定位后數(shù)據(jù)存儲(chǔ)在云端,動(dòng)態(tài)編隊(duì)在云端計(jì)算,大量信息數(shù)據(jù)都放在云服務(wù)器中運(yùn)行,進(jìn)行實(shí)時(shí)性分析、計(jì)算,大大減輕機(jī)器人自身負(fù)重。
云服務(wù)器端數(shù)據(jù)庫(kù)利用電腦PC端作為控制端,創(chuàng)建、存儲(chǔ)并更新機(jī)器人的位置信息和編隊(duì)控制信息,與MCU端進(jìn)行實(shí)時(shí)數(shù)據(jù)收集,并傳輸控制信息。MCU做為數(shù)據(jù)信息傳輸?shù)闹虚g媒介,本身所帶的攝像頭采集機(jī)器人的位置信息發(fā)給MCU,實(shí)現(xiàn)對(duì)機(jī)器人位置坐標(biāo)檢測(cè),與云服務(wù)器發(fā)送的位置信息進(jìn)行比對(duì),完成視覺(jué)定位。MCU與多個(gè)機(jī)器人通過(guò)無(wú)線模塊的TCP/IP協(xié)議進(jìn)行通信,與云服務(wù)器、編隊(duì)機(jī)器人分別連接,在編隊(duì)過(guò)程中進(jìn)行數(shù)據(jù)傳輸。系統(tǒng)總體結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)總體結(jié)構(gòu)圖
所選服務(wù)器為阿里云的云服務(wù)器[4],通過(guò)云端存儲(chǔ)計(jì)算多自主機(jī)器人編隊(duì)的控制信息。云端系統(tǒng)配置使用Linux系統(tǒng)Ubuntu版本,選擇合適的運(yùn)行內(nèi)核,重新登入,進(jìn)入管理控制臺(tái)的云服務(wù)器ECS,選擇合適的地域以及需要的系統(tǒng)盤(pán)。進(jìn)入實(shí)例選擇Linux系統(tǒng)盤(pán)進(jìn)行配置,配置時(shí)首先設(shè)置密碼。
在Linux界面連接云服務(wù)器,在遠(yuǎn)程連接操控云服務(wù)器時(shí),云服務(wù)器有公網(wǎng)IP和私網(wǎng)IP之分,這兩個(gè)IP地址是遠(yuǎn)程連接控制云服務(wù)器的ID,也就是后期多機(jī)器人編隊(duì)時(shí)的通信ID。進(jìn)行VNC遠(yuǎn)程連接后就進(jìn)入了操作界面。在此,遠(yuǎn)程連接的工具選用PuTTY。
使用PC作為客戶端控制云服務(wù)器,借助PuTTY工具連接云服務(wù)器,輸入云服務(wù)器的公網(wǎng)IP,即可實(shí)現(xiàn)連接。
由于云服務(wù)器無(wú)可視化界面,需要利用PuTTY工具提供終端操作界面以便于操作控制。在終端界面的命令框中輸入超級(jí)用戶名和密碼,顯示的實(shí)例名稱(chēng),如:root@i-2zed2cbgi4jm1qics65k??刂圃贫说牟僮髋c本地服務(wù)器的操作命令一致。
利用WinSCP實(shí)現(xiàn)本地與云服務(wù)器的連接。將本地文件放入云服務(wù)器的某個(gè)目錄下或文件中,進(jìn)行機(jī)器人的位置信息、編隊(duì)控制信息傳輸。連接時(shí)需要提供云主機(jī)IP地址、超級(jí)用戶名、密碼,登錄后呈現(xiàn)出傳輸界面。當(dāng)需要傳輸時(shí),只需將本地文件拖拽進(jìn)云服務(wù)器的界面即可完成上傳。
多自主移動(dòng)機(jī)器人進(jìn)行編隊(duì)的數(shù)據(jù)包含編隊(duì)隊(duì)形、路徑規(guī)劃、目標(biāo)位置坐標(biāo)等信息。位置坐標(biāo)信息會(huì)隨著運(yùn)動(dòng)而不斷改變。把實(shí)際位置坐標(biāo)與采集檢測(cè)位置坐標(biāo)進(jìn)行比對(duì)加以定位,實(shí)現(xiàn)多機(jī)器人的位置微調(diào),以達(dá)到隊(duì)形的保持和呈現(xiàn)流暢的隊(duì)形。
建立數(shù)據(jù)庫(kù)的表格,其中字段包括機(jī)器人序號(hào)R_id、機(jī)器人顏色標(biāo)簽Color、位置坐標(biāo)Location、實(shí)時(shí)傳輸時(shí)間Time等,具體如表1所示。
表1 云端存儲(chǔ)數(shù)據(jù)庫(kù)信息
借助Navicat premium工具將云端數(shù)據(jù)庫(kù)可視化,用pyMySQL創(chuàng)建數(shù)據(jù)庫(kù),對(duì)公網(wǎng)IP、用戶名、登錄密碼、數(shù)據(jù)庫(kù)名稱(chēng)和傳輸?shù)拇诘冗M(jìn)行操作。創(chuàng)建表格后運(yùn)用SQL語(yǔ)句將位置坐標(biāo)信息插入到數(shù)據(jù)表,在編隊(duì)過(guò)程中實(shí)時(shí)更新數(shù)據(jù)表。
MCU與云端之間選擇TCP/IP協(xié)議進(jìn)行通信,通信傳輸流程如圖2所示。
圖2 通信傳輸流程圖
此處MCU的主要作用是作為中介發(fā)送和接收信息。為實(shí)現(xiàn)多自主移動(dòng)機(jī)器人的編隊(duì)控制,MCU與云主機(jī)需要雙向接收和發(fā)送數(shù)據(jù)。將兩端分別編程為發(fā)送(client)和接收(server)兩種模式,采用TCP/IP協(xié)議的套接字(Socket)進(jìn)行通信。云服務(wù)器與機(jī)器人通信是通過(guò)MCU進(jìn)行中間傳輸通信,MCU作為發(fā)送端,云服務(wù)器作為接收端,進(jìn)行數(shù)據(jù)的打包傳輸。運(yùn)用TCP/IP協(xié)議實(shí)現(xiàn)多機(jī)器人編隊(duì)方便快捷,安全性高。
與云端通信采用python語(yǔ)言編寫(xiě)代碼,通過(guò)Socket進(jìn)行數(shù)據(jù)傳輸。測(cè)試數(shù)據(jù)的發(fā)送端發(fā)送的是攝像頭檢測(cè)位置坐標(biāo),通過(guò)Socket傳輸至云端。接收端與發(fā)送端的詳細(xì)數(shù)據(jù)如表2所示。
表2 發(fā)送端與接收端數(shù)據(jù)
可見(jiàn),發(fā)送端輸出的三個(gè)顏色坐標(biāo),與在輸出端收到的坐標(biāo)完全相同,表明每個(gè)顏色的坐標(biāo)數(shù)據(jù)都一一對(duì)應(yīng)無(wú)誤,云服務(wù)器與MCU通信成功。隨后又進(jìn)行了多組數(shù)據(jù)測(cè)試,得到了同樣理想的結(jié)果。
多自主移動(dòng)機(jī)器人的編隊(duì)采用領(lǐng)航跟隨算法實(shí)現(xiàn),把動(dòng)態(tài)編隊(duì)過(guò)程的運(yùn)算部分存放在云端,定位的信息實(shí)時(shí)傳輸?shù)皆贫诉M(jìn)行數(shù)據(jù)庫(kù)更新,在云端完成存儲(chǔ)和計(jì)算[5]。
4.2.1 領(lǐng)航跟隨算法
在領(lǐng)航跟隨算法(Leader-Follower)中,位置坐標(biāo)的校正是通過(guò)視覺(jué)定位來(lái)實(shí)現(xiàn)的。攝像頭檢測(cè)機(jī)器人的位置坐標(biāo)是否與實(shí)際坐標(biāo)一致,不同時(shí)通過(guò)前后左右的調(diào)整移動(dòng)到實(shí)際坐標(biāo)位置,即進(jìn)行位置誤差微調(diào)。機(jī)器人編隊(duì)常見(jiàn)的隊(duì)形有線性隊(duì)形、菱形隊(duì)形、三角隊(duì)形等[6]。當(dāng)機(jī)器人變換隊(duì)形時(shí),云端服務(wù)器發(fā)送編隊(duì)指令控制領(lǐng)航者移動(dòng)到對(duì)應(yīng)的坐標(biāo),跟隨者隨著領(lǐng)航者發(fā)送的信息開(kāi)始移動(dòng),云端調(diào)用數(shù)據(jù)庫(kù)中的坐標(biāo)與實(shí)際坐標(biāo)進(jìn)行判斷,檢測(cè)每個(gè)機(jī)器人的位置是否正確。例如:線性隊(duì)形變換為三角形隊(duì)形時(shí),所建立的模擬坐標(biāo)系如圖3所示。編隊(duì)中各機(jī)器人通過(guò)最優(yōu)途徑到達(dá)編隊(duì)位置的過(guò)程中的坐標(biāo)變化如表3所示。
圖3 模擬坐標(biāo)及隊(duì)形變換圖
表3 編隊(duì)歸位過(guò)程模擬坐標(biāo)變化
可見(jiàn),當(dāng)編隊(duì)從線性變換為三角形時(shí),黑色、綠色、藍(lán)色分別向上移動(dòng),紅色坐標(biāo)和紫色坐標(biāo)不變,黃色向左移動(dòng),經(jīng)過(guò)最優(yōu)移動(dòng)路徑規(guī)劃編隊(duì)。云端大數(shù)據(jù)存儲(chǔ)和計(jì)算功能使機(jī)器人編隊(duì)效率更高。
4.2.2 視覺(jué)、編隊(duì)、云端結(jié)合
在機(jī)器人編隊(duì)視覺(jué)定位的過(guò)程中,領(lǐng)航者位置坐標(biāo)信息由兩個(gè)攝像頭進(jìn)行檢測(cè),最終將兩個(gè)攝像頭折合為一個(gè)坐標(biāo)定位[7]。視覺(jué)定位主要由MCU完成處理,包括利用OPencv庫(kù)對(duì)圖像進(jìn)行處理,通過(guò)檢測(cè)物體形狀和顏色,對(duì)所需顏色及形狀進(jìn)行分析識(shí)別,識(shí)別計(jì)算所得的坐標(biāo)信息即時(shí)上傳云端。檢測(cè)過(guò)程中用不同顏色的正方體代表不同的機(jī)器人進(jìn)行位置檢測(cè)。模擬與實(shí)際定位檢測(cè)攝像頭如圖4所示。
圖4 模擬與實(shí)際攝像頭定位檢測(cè)對(duì)比圖
多組檢測(cè)坐標(biāo)與實(shí)際坐標(biāo)對(duì)比如表4所示。檢測(cè)坐標(biāo)數(shù)據(jù)單位為mm,檢測(cè)數(shù)據(jù)與實(shí)際坐標(biāo)之間的誤差范圍為0~54mm,處在可接受的范圍內(nèi),對(duì)機(jī)器人編隊(duì)不會(huì)有太大影響。為使編隊(duì)隊(duì)形更加流暢,還需考慮信息傳輸過(guò)程中因傳輸帶寬所限而帶來(lái)的的延遲[8]問(wèn)題。
表4 檢測(cè)坐標(biāo)與實(shí)際坐標(biāo)對(duì)比表
設(shè)計(jì)的基于云的多自主移動(dòng)機(jī)器人編隊(duì)控制方案的最終實(shí)現(xiàn),說(shuō)明采用視覺(jué)定位、云存儲(chǔ)和云計(jì)算確實(shí)可以解決多機(jī)器人編隊(duì)過(guò)程中的位置誤差問(wèn)題,實(shí)驗(yàn)結(jié)果滿足編隊(duì)流暢性需求,方法適用于2D環(huán)境下多自主移動(dòng)機(jī)器人編隊(duì)控制。由于云服務(wù)器與MCU、機(jī)器人三者之間采用無(wú)線通信,現(xiàn)實(shí)使用中的控制指令下發(fā)和機(jī)器人位置坐標(biāo)上傳受傳輸帶寬的延遲限制,機(jī)器人編隊(duì)的部分動(dòng)作仍存在短暫不連貫,還有待未來(lái)進(jìn)一步研究解決。