王清珍 張珊珊 陳 浩
(鄭州科技學(xué)院信息工程學(xué)院,鄭州,450064)
隨著科技的快速發(fā)展,大數(shù)據(jù)信息化世界已經(jīng)到來。在機(jī)器人領(lǐng)域,多機(jī)器人編隊協(xié)作完成各類任務(wù)的效率正逐漸提高,然而執(zhí)行任務(wù)產(chǎn)生大量的數(shù)據(jù)需要保存、調(diào)用,傳統(tǒng)方法對大量數(shù)據(jù)進(jìn)行實時分析計算時,存儲本地等待調(diào)用計算等數(shù)據(jù)信息增加了機(jī)器人自身負(fù)擔(dān),使數(shù)據(jù)傳輸出現(xiàn)響應(yīng)時間長、數(shù)據(jù)混亂、數(shù)據(jù)泄露、丟包等問題,使得本地存儲計算難以完善機(jī)器人的智能,是升級機(jī)器人前所未有的機(jī)遇和挑戰(zhàn)。
Ramasubbareddy等提出云存儲數(shù)據(jù)的存儲安全訪問授權(quán)方式[1],葉雄杰等人重點介紹了利用云服務(wù)器研究云端存儲及實時云端數(shù)據(jù)監(jiān)控;遲霆等人重點研究多機(jī)器人編隊控制與云計算的結(jié)合;平麗華,樊石等人主要研究了阿里云的遠(yuǎn)程機(jī)器人控制,但上述研究側(cè)重云服務(wù)器存儲和監(jiān)控,涉及云與多機(jī)器人協(xié)作編隊的內(nèi)容較少。在多自主移動機(jī)器人系統(tǒng)協(xié)調(diào)及合作控制方面,張建偉等提出基于全局視覺定位系統(tǒng)及單計算機(jī)多線程操作的方式,以模擬多自主機(jī)器人系統(tǒng)的分布式控制以及基于相對信息的局部控制[2];另外,王大偉等在基于邊緣計算的云原生機(jī)器人系統(tǒng)[3]中,提出云—邊—端融合的多機(jī)器人協(xié)同的智能系統(tǒng),這為實現(xiàn)多自主移動機(jī)器人編隊控制提供了理論依據(jù)。但是,編隊產(chǎn)生數(shù)據(jù)較多,領(lǐng)航者與跟隨者采集的信息都需要詳細(xì)分類,云服務(wù)器、多機(jī)器人編隊、視覺定位三者結(jié)合的研究者比較少。
針對這三者結(jié)合進(jìn)行研究,視覺定位編隊位置與云端相結(jié)合,相機(jī)定位后數(shù)據(jù)存儲云端、動態(tài)編隊云端計算,云服務(wù)器作為一個存儲信息和計算的服務(wù)器是未來發(fā)展的趨勢。將大量信息數(shù)據(jù)放在云服務(wù)器中運(yùn)行,并進(jìn)行實時性分析、計算,這大大減輕機(jī)器人自身負(fù)擔(dān),多自主移動機(jī)器人的編隊與云計算相結(jié)合更是值得研究的方向。
本文系統(tǒng)利用計算機(jī)(PC)端作為控制端操作云服務(wù)器,云服務(wù)器端創(chuàng)建數(shù)據(jù)庫、存儲接收到的數(shù)據(jù),樹莓派控制板作為數(shù)據(jù)信息傳輸?shù)闹虚g媒介。樹莓派的攝像頭負(fù)責(zé)視覺定位,實現(xiàn)對機(jī)器人位置坐標(biāo)檢測,樹莓派與多個機(jī)器人通過無線模塊的TCP/IP協(xié)議進(jìn)行通信,控制板與云服務(wù)器、編隊機(jī)器人分別連接,在編隊過程中進(jìn)行數(shù)據(jù)傳輸。系統(tǒng)總體結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)總體結(jié)構(gòu)圖
本文系統(tǒng)利用PC端控制云服務(wù)器,將其作為控制的客戶端。該系統(tǒng)選用PC端的Linux系統(tǒng)連接云端,通過指令配置云服務(wù)器的空間。PC端與云服務(wù)器的通信通過TCP/IP協(xié)議連接,采集到的數(shù)據(jù)也通過TCP/IP協(xié)議進(jìn)行傳輸,應(yīng)用client模式和接收server模式,基于TCP/IP協(xié)議的套接字(Socket)收發(fā)數(shù)據(jù)信息。在編隊過程中,樹莓派控制板與云服務(wù)器、機(jī)器人雙向通信。攝像頭與樹莓派主控芯片連接;在機(jī)器人移動過程中,攝像頭對每個機(jī)器人的位置坐標(biāo)信息進(jìn)行實時監(jiān)控,讀取出每個機(jī)器人的位置后,把每個坐標(biāo)信息的數(shù)據(jù)通過樹莓派傳輸給云端,云端接收到的大量的實時位置信息經(jīng)過控制端處理發(fā)送給MySQL數(shù)據(jù)庫;數(shù)據(jù)庫在傳輸數(shù)據(jù)之前,要進(jìn)行數(shù)據(jù)庫的創(chuàng)建,對數(shù)據(jù)庫進(jìn)行整理、創(chuàng)建數(shù)據(jù)表,當(dāng)信息輸入時,數(shù)據(jù)庫對信息進(jìn)行實時分類和儲存;云服務(wù)器對數(shù)據(jù)庫中領(lǐng)航者機(jī)器人的位置坐標(biāo)可以調(diào)用,計算當(dāng)前機(jī)器人位置信息是否正確,最終經(jīng)過計算返回正確的坐標(biāo)信息或下一步要執(zhí)行的編隊動作給樹莓派控制板;控制板發(fā)送指令控制領(lǐng)航者進(jìn)行位置調(diào)整或執(zhí)行下一編隊動作,跟隨者在領(lǐng)航者的領(lǐng)航下完成編隊。
云服務(wù)器適用于各種系統(tǒng),也能滿足計算和存儲的需求,本文系統(tǒng)使用的是阿里云的云服務(wù)器[4],通過云端存儲計算多自主機(jī)器人編隊控制的數(shù)據(jù)信息,使領(lǐng)航者機(jī)器人及其跟隨者機(jī)器人減少負(fù)擔(dān),提供安全的數(shù)據(jù)信息和高性能的云計算服務(wù)。
云服務(wù)器可分為不同的ECS類型,CPU與內(nèi)存的配比不同,運(yùn)行寬帶和內(nèi)核具有差異性。云端系統(tǒng)配置可以用Windows系統(tǒng)和Linux系統(tǒng),本系統(tǒng)使用的是Linux系統(tǒng)Ubuntu版本,其優(yōu)點在于Ubuntu版本提供了更優(yōu)化的系統(tǒng),操作方便,軟件更新較快,穩(wěn)定性更佳。選擇合適的內(nèi)核類型,會讓云服務(wù)器的服務(wù)更高效快速。
首先需要注冊購買云服務(wù)器,選擇合適的運(yùn)行內(nèi)核,進(jìn)入管理控制臺的云服務(wù)器ECS選擇合適的地域以及需要的系統(tǒng)盤。進(jìn)入實例:選擇Linux系統(tǒng)盤進(jìn)行配置,配置時記住設(shè)置的密碼,在Linux界面連接云服務(wù)器,在遠(yuǎn)程連接操控云服務(wù)器時,其中最重要的信息是云服務(wù)器的公網(wǎng)IP和私網(wǎng)IP,這兩個IP地址是遠(yuǎn)程連接控制云服務(wù)器的關(guān)鍵,也是后期多機(jī)器人編隊時通信的重要依據(jù)。
進(jìn)行VNC遠(yuǎn)程連接后進(jìn)入操作界面。遠(yuǎn)程連接的工具很多,有寶塔SSH遠(yuǎn)程連接、PuTTY連接等,在選用不同商家的云服務(wù)器的官網(wǎng)上會找到相應(yīng)的安裝包。
云服務(wù)器的系統(tǒng)除在第一次購買時可進(jìn)行配置外,后期也可自由更改配置。進(jìn)入實際的ID修改云服務(wù)器的系統(tǒng),先將云端實例中的系統(tǒng)盤停止,再進(jìn)行更換系統(tǒng)盤的操作,完成更改系統(tǒng)盤后,重新啟動方可繼續(xù)使用。
PC端做為客戶端控制云服務(wù)器,PC端與云主機(jī)連接選擇的工具是PuTTY,在連接云服務(wù)器時,輸入云服務(wù)器的公網(wǎng)IP即可連接。由于云服務(wù)器無可視化頁面,所以可以利用PuTTY的終端頁面進(jìn)行操作控制,在終端界面的命令框中輸入root用戶名稱和密碼,如:root@i-2zed2cbgi4jm1qics65k。控制云端的操作與本地服務(wù)器的操作命令一致。
將本地文件放入云服務(wù)器某個目錄或文件下,可通過一個遠(yuǎn)程傳輸工具進(jìn)行傳輸。WinSCP傳輸比較方便快捷,但利用WinSCP實現(xiàn)本地與服務(wù)器的連接需要用到云主機(jī)地址、root用戶名、密碼,登錄后呈現(xiàn)出傳輸頁面。當(dāng)需要傳輸時只需要拖住本地文件拉進(jìn)云服務(wù)器的頁面即可完成上傳,頁面如圖2所示。
圖2 WinSCP詳細(xì)界面圖
多自主移動機(jī)器人進(jìn)行編隊時,坐標(biāo)信息會隨著運(yùn)動而不斷改變,機(jī)器人編隊實時數(shù)據(jù)的分類處理,可表達(dá)多機(jī)器人編隊的位置準(zhǔn)確性。
運(yùn)用云端MySQL數(shù)據(jù)庫存儲數(shù)據(jù),創(chuàng)建數(shù)據(jù)庫,對數(shù)據(jù)庫進(jìn)行配置,創(chuàng)建數(shù)據(jù)表,將每個機(jī)器人的實時位置信息放在對應(yīng)的數(shù)據(jù)表中。
機(jī)器人進(jìn)行編隊時插入采集的信息或計算調(diào)用數(shù)據(jù)都可在數(shù)據(jù)庫中進(jìn)行查找,云端數(shù)據(jù)庫也是無可視化頁面的虛擬空間,為了方便直觀查看,設(shè)計者可在云服務(wù)器上搭建一個Web瀏覽客戶端,用root賬戶遠(yuǎn)程實時訪問MySQL數(shù)據(jù)庫的信息。
創(chuàng)建數(shù)據(jù)庫可以在終端輸入命令創(chuàng)建、利用Python語言運(yùn)行PyMySQL進(jìn)行創(chuàng)建。本文用PyMySQL創(chuàng)建數(shù)據(jù)庫,連接云端數(shù)據(jù)庫的必要操作元素有:
host:公網(wǎng)IP;user:用戶名;password:登錄密碼;database:數(shù)據(jù)庫名稱;port:允許的串口。
創(chuàng)建表格后,運(yùn)用SQL語句將位置信息插入到數(shù)據(jù)表。通過Navicat premium工具將云端的數(shù)據(jù)庫可視化。
建立數(shù)據(jù)庫的表格信息包括:R_id(機(jī)器人序號)、Color(機(jī)器人顏色)、Location(位置)、Time(實際傳輸時刻)等,具體結(jié)構(gòu)如表1所示。(本文中位置取值以0.1mm為單位,例如:703為70.3mm,下同)。
表1 云端存儲數(shù)據(jù)庫信息
對機(jī)器人編隊來說,機(jī)器人與云端通信是重要的部分,在進(jìn)行通信之前要進(jìn)行通信協(xié)議選取。
在無線通信研究領(lǐng)域,前人提出了TCP/IP協(xié)議進(jìn)行通信,目前,最常用的協(xié)議是TCP/IP協(xié)議。TCP/IP協(xié)議仍是一個協(xié)議簇,由FTP、SMTP、TCP、UDP、IP等協(xié)議構(gòu)成選擇TCP/IP協(xié)議進(jìn)行通信,通信結(jié)構(gòu)圖如圖3所示。
圖3 通信傳輸圖
本系統(tǒng)主要利用樹莓派控制板作為媒介發(fā)送和接收信息,樹莓派與云主機(jī)需要雙向接收和發(fā)送數(shù)據(jù)。兩端需要進(jìn)行編程發(fā)送(client)模式和接收(server)模式?;赥CP/IP協(xié)議的套接字(Socket)進(jìn)行通信,云服務(wù)器的IP及其運(yùn)用的端口是通信協(xié)議最基礎(chǔ)的部分,本文的云服務(wù)器與機(jī)器人通信是通過樹莓派進(jìn)行中間傳輸通信,樹莓派作為發(fā)送端,云服務(wù)器作為接收端,進(jìn)行數(shù)據(jù)的打包傳輸。多機(jī)器人編隊運(yùn)用TCP/IP協(xié)議方便快捷,安全性高。
與云端通信采用Python語言編寫代碼,通過Socket進(jìn)行數(shù)據(jù)傳輸,測試數(shù)據(jù)的發(fā)送端,發(fā)送的是攝像頭檢測的位置坐標(biāo),通過Socket傳輸云端,接收端與發(fā)送端的數(shù)據(jù)相同,當(dāng)發(fā)送端輸出[320.0,-540.0,‘blue’,0.0]、[564.0,251.5,‘green’,0.0]、[-692.0,28.5,‘red’0.0]三個顏色的坐標(biāo)時,輸出端收到的坐標(biāo)也為[320.0,-540.0,‘blue’,0.0]、[564.0,251.5,‘green’,0.0]、[-692.0,28.5,‘red’0.0],每個顏色的坐標(biāo)數(shù)據(jù)都一一對應(yīng)無錯誤,表示云服務(wù)器與樹莓派通信成功,經(jīng)過多組數(shù)據(jù)測試也驗證了兩者通信無錯誤,接收到的位置坐標(biāo)如表2所示。
表2 發(fā)送端與接收端的數(shù)據(jù)
運(yùn)用云服務(wù)器進(jìn)行多機(jī)器人編隊時,將本由機(jī)器人承擔(dān)的運(yùn)算部分存放在云端,定位的信息即時傳輸?shù)皆贫藬?shù)據(jù)庫,在云端存儲和計算[5]解決了傳統(tǒng)本地計算模式帶來的計算資源有限性與編隊系統(tǒng)對運(yùn)算速度高要求之間的問題,使機(jī)器人更專注于環(huán)境采集和任務(wù)執(zhí)行,增強(qiáng)編隊的靈活性、準(zhǔn)確性和實時性。
3.2.1 領(lǐng)航跟隨算法
多機(jī)器人編隊用到領(lǐng)航跟隨法與視覺定位,通過視覺定位判斷編隊機(jī)器人的位置是否正確。編隊的實現(xiàn)主要基于領(lǐng)航跟隨法(Leader-Follower)[6]的思想,常見的編隊隊形有線性隊形、菱形隊形、三角形隊形。當(dāng)機(jī)器人變換隊形時,云端服務(wù)器發(fā)送編隊指令控制領(lǐng)航者移動到對應(yīng)的坐標(biāo),跟隨者隨著領(lǐng)航者發(fā)送的信息開始移動;云端調(diào)用數(shù)據(jù)庫中的坐標(biāo)與實際坐標(biāo)進(jìn)行判斷,檢測每個機(jī)器人的位置是否正確。如:線性隊形變換為三角形隊形時,機(jī)器人隊形如圖4所示,編隊機(jī)器人通過最優(yōu)途徑到達(dá)編隊位置,變化如表3所示。
圖4 機(jī)器人的隊形及變換
表3 編隊坐標(biāo)變化表 單位/0.1mm
數(shù)據(jù)包含:顏色標(biāo)志:紅、黑、紫、藍(lán)、綠和黃;角色標(biāo)志:領(lǐng)航和跟隨者;位置坐標(biāo):橫坐標(biāo)和縱坐標(biāo),變換的角度。可以看出,當(dāng)線性變換為三角形編隊時,紅色坐標(biāo)和紫色坐標(biāo)不變,黑色、綠色、藍(lán)色分別向上移動,黃色向左移動。經(jīng)過最優(yōu)移動途徑編隊,再結(jié)合云端大數(shù)據(jù)存儲和計算功能,機(jī)器人編隊效率提高。
3.2.2 視覺、編隊、云端結(jié)合
在機(jī)器人編隊視覺定位的過程中,領(lǐng)航者位置坐標(biāo)信息由兩個攝像頭進(jìn)行檢測,最終將兩個攝像頭折合為一個坐標(biāo)定位;視覺定位主要運(yùn)用樹莓派進(jìn)行處理,樹莓派利用OpenCV庫對圖像進(jìn)行處理,通過檢測物體形狀和顏色[7],對所需顏色以及形狀進(jìn)行分析識別,識別計算所得的坐標(biāo)信息及時存儲云端。檢測過程中用不同顏色的正方體代表不同的機(jī)器人進(jìn)行位置檢測,圖5為攝像頭的定位檢測校正,圖6為實際攝像頭的定位檢測。
圖5 攝像頭的定位檢測校正圖
圖6 實際攝像頭檢測圖
多組檢測坐標(biāo)與實際坐標(biāo)對比如表4所示,檢測的坐標(biāo)數(shù)據(jù)單位為mm,檢測的數(shù)據(jù)與實際坐標(biāo)之間的誤差最大為5.41cm,不過誤差在可行的范圍內(nèi),對機(jī)器人的編隊不會有太大影響。
表4 檢測坐標(biāo)與實際坐標(biāo)對比表 單位/0.1mm
控制攝像頭定位采用Python語言編寫,攝像頭定位時,由于獲取的坐標(biāo)信息僅為圖像中像素坐標(biāo),并非系統(tǒng)中真實的運(yùn)動坐標(biāo),所以,待信息穩(wěn)定后將像素坐標(biāo)轉(zhuǎn)化為真實坐標(biāo),坐標(biāo)信息處理后,通過Socket傳入云服務(wù)器存儲。攝像頭實時檢測機(jī)器人的位置是否正確,編隊隊形是否是預(yù)期所想,如果編隊發(fā)生錯誤,云端收到當(dāng)前錯誤進(jìn)行計算后返回正確編隊信息,使機(jī)器人改變當(dāng)前錯誤位置,重新調(diào)整編隊隊形。
視覺檢測多機(jī)器人的顏色和形狀進(jìn)行定位,定位后的位置信息傳入云服務(wù)器進(jìn)行計算判斷,如果通過視覺檢測錯誤,將信息傳入云服務(wù)器,云端檢測出錯誤信息對這些錯誤分析計算,最后輸出正確的位置信息,控制機(jī)器人進(jìn)行位置修改。
云服務(wù)器進(jìn)行分析計算相對傳統(tǒng)的本地計算速度較快、計算準(zhǔn)確,減少了本地運(yùn)算出現(xiàn)的問題和機(jī)器人自身運(yùn)算的負(fù)擔(dān)。樹莓派與云服務(wù)器的傳輸、發(fā)送信息,都運(yùn)用安全性和穩(wěn)定性較高的TCP/IP協(xié)議C/S模式通信。
本研究選用的是雙核 4GiB的阿里云服務(wù)器,在樹莓派與云服務(wù)器的通信過程中,網(wǎng)絡(luò)傳輸會存在延時,由于數(shù)據(jù)在云邊鏈路中串行傳輸需要花費(fèi)時間,因此會有一定程度上的延時,網(wǎng)絡(luò)的擁堵也會使其發(fā)生變化。本文在信息傳輸時對上述情況進(jìn)行了研究檢測,檢測結(jié)果如表5所示。
表5 延遲檢測表 單位/ms
表5所列為寬帶傳輸下進(jìn)行的5次測試,計算出的延時時間以及平均延時時間。延時是客觀存在的,具有一定的波動性,有上升或下降,但基本會在一個穩(wěn)定的區(qū)間內(nèi)。筆者對實驗中存在的延時進(jìn)行了避免及克服:機(jī)器人進(jìn)行編隊時,當(dāng)機(jī)器人到達(dá)指定的編隊位置時,會進(jìn)行編隊的隊形短暫保持,這正好規(guī)避了寬帶的延時,使整個程序正常運(yùn)行。
本文的研究是基于云服務(wù)器的多自主移動機(jī)器人的編隊控制,設(shè)計了基于視覺的移動機(jī)器人編隊定位方案,采用領(lǐng)航跟隨算法設(shè)計編隊隊形,運(yùn)用無線通信模塊與云服務(wù)器連接通信。通過理論分析以及實驗,證明了多機(jī)器人編隊與云服務(wù)器結(jié)合是可實現(xiàn)的研究,云服務(wù)器的存儲和計算相對傳統(tǒng)本地計算效率更高。最早的機(jī)器人編隊研究將數(shù)據(jù)的分析計算放在機(jī)器人自身,使編隊時機(jī)器人自身負(fù)擔(dān)加大、數(shù)據(jù)計算混亂、響應(yīng)傳輸緩慢,將數(shù)據(jù)在云服務(wù)器進(jìn)行計算處理,減少了本地負(fù)擔(dān)以及機(jī)器人自身系統(tǒng)的配置要求。
本文的研究還存在一些不足之處,由于單個攝像獲取的照射面積較小,本文采用兩個攝像頭進(jìn)行檢測定位[8],攝像頭處理速度較慢。樹莓派與云服務(wù)器的通信方面也有不足之處,在未來的研究中,筆者計劃選用單個照射面積較大的攝像頭,云端連接時端口要提前開放等。
本研究對未來規(guī)劃發(fā)展:各類領(lǐng)域機(jī)器人在執(zhí)行任務(wù)時,采集的數(shù)據(jù)在存儲和計算方面可結(jié)合云服務(wù)器提高效率;云服務(wù)器也可用于企業(yè)數(shù)據(jù)的存放;基于云服務(wù)器的多自主移動機(jī)器人編隊,可用于多機(jī)器人協(xié)作代替人類完成危險性較高的任務(wù)。