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