本發(fā)明涉及云機器人技術(shù)領(lǐng)域,尤其涉及一種云機器人系統(tǒng)及實現(xiàn)方法。
背景技術(shù):
隨著機器人技術(shù)的發(fā)展,機器人的用途越來越廣。同時,機器人的概念也越來越寬,已從狹義的機器人,開始向機器人技術(shù)擴展。傳統(tǒng)機器人在處理需求大量數(shù)據(jù)和高計算量的任務(wù)時,由于其自身計算能力、存儲能力等方面的限制,表現(xiàn)通常不夠理想。當(dāng)今時代是云計算的時代,只有把機器人和云計算結(jié)合起來,才能順應(yīng)時代發(fā)展的潮流,才能突破傳統(tǒng)機器人發(fā)展中遇到的瓶頸——計算能力、存儲能力、學(xué)習(xí)能力,使機器人發(fā)展到一個全新的時代,即云機器人時代。云機器人可以按需得到資源(計算資源、存儲資源等),可以更便利地共享信息。
云機器人就是云計算(Cloud Computing)與機器人學(xué)的結(jié)合,機器人本身不需要存儲所有資料信息或具備超強的計算能力,只是在需要的時候可以連接相關(guān)服務(wù)器并獲得所需信息。云機器人不僅可以卸載復(fù)雜的計算任務(wù)到云端,還可以接收海量數(shù)據(jù),并分享信息和技能。而目前,對于云計算的定義有很多種說法。廣為接受的是美國國家標準與技術(shù)研究院(NIST)的定義:云計算是一種按使用量付費的模式,這種模式提供可用的、便捷的、按需的網(wǎng)絡(luò)訪問,進入可配置的計算資源共享池,這些資源能夠被快速提供,只需投入很少的管理工作,或與服務(wù)供應(yīng)商進行很少的交互。
云機器人的研究目前尚處于起步階段。部分研究機構(gòu)已經(jīng)開始從實驗仿真和驗證平臺的角度研究云機器人,也有一些大型科技公司開始試用云機器人。RoboEarth是一個由荷蘭Eindhoven大學(xué)主導(dǎo)的歐盟項目,該項目的主要目標是開發(fā)一個“機器人萬維網(wǎng)”,它可以被看做是一個網(wǎng)上的大型數(shù)據(jù)庫,在這個數(shù)據(jù)庫中機器人可以共享通用對象、環(huán)境以及其他各種任務(wù)的數(shù)據(jù)庫。歐洲的科學(xué)家們于2013年推出了Raptuya——個幫助機器人應(yīng)付人類世界的在線信息數(shù)據(jù)庫,Raptuya的推出是RoboEarth項目的第一步。該項目旨在讓機器人可以下載互聯(lián)網(wǎng)上的信息,以學(xué)習(xí)它們的環(huán)境、軟件組件、對象、圖像以及如何執(zhí)行某些任務(wù)。
DavinCi是由新加坡ASORO實驗室承擔(dān)的云機器人項目,以提供認知機器人服務(wù)為目標。DAvinCi是一個PaaS系統(tǒng),它主要的組成部分為分布式ROS架構(gòu)、Hadoop分布式文件系統(tǒng)(HDFS)和Map/Reduce框架。在Map/Reduce中實現(xiàn)FastSLAM算法,地圖通過SaaS與環(huán)境中的其他機器人共享。該系統(tǒng)目前處于早期發(fā)展階段,它在減少地圖構(gòu)建和探索時間以及減少額外的傳感器方面取得了一定的成功。
Google公司的無人駕駛汽車原型于2014年5月28日發(fā)布。該車上除了具有各種先進的傳感器外,最重要的是其收集到的所有數(shù)據(jù)都要發(fā)送到它的數(shù)據(jù)中心即云上,并通過云上的海量數(shù)據(jù)和超強計算能力,來保證其行駛的安全與準確。
與國外相比,國內(nèi)對云機器人領(lǐng)域的研究并不多。北京理工大學(xué)的王全玉等人將云計算的理念應(yīng)用到機器人遙操作中,設(shè)計了機器人云操作平臺。浙江大學(xué)的姚敏教授及其團隊研究了異構(gòu)多機器人系統(tǒng)協(xié)同技術(shù),以SOA的方式設(shè)計實現(xiàn)異構(gòu)機器人的服務(wù),重點放在服務(wù)的構(gòu)造和重構(gòu)算法。清華大學(xué)的都志輝教授、浙江大學(xué)的胡華梁教授與美國亞利桑那州立大學(xué)的陳以農(nóng)教授合作,利用微軟的機器人開發(fā)工具MRDS和可視化編程語言VPL(Visual Programming Language)實現(xiàn)了若干RaaS原型系統(tǒng)。
盡管國內(nèi)外在云機器人領(lǐng)域取得了一系列成果,但是如何才能使傳統(tǒng)機器人高效地變?yōu)樵茩C器人,這一問題已成為全世界專家技術(shù)人員新的挑戰(zhàn)。
技術(shù)實現(xiàn)要素:
針對現(xiàn)有技術(shù)的缺陷,本發(fā)明提供一種云機器人系統(tǒng)及實現(xiàn)方法,能接收機器人發(fā)出的請求消息,自動創(chuàng)建配置云中虛擬資源,使機器人按需使用云中資源。
一方面,本發(fā)明提供一種云機器人系統(tǒng),包括基于RabbitMQ的消息中間件、基于JSON的消息解析器和基于OpenStack SDK的虛擬資源自動配置模塊;
基于RabbitMQ的消息中間件用于接收機器人請求消息,并根據(jù)機器人上消息生產(chǎn)者(即消息發(fā)送程序)中的隊列聲明和路由規(guī)則,將機器人請求消息存儲到不同的消息隊列,通過RabbitMQ將機器人請求消息轉(zhuǎn)發(fā)給相應(yīng)的消息消費者(即消息接收程序);
基于JSON(JavaScript Obiect Notation,一種輕量級的數(shù)據(jù)交換格式)的消息解析器用于解析RabbitMQ消息消費者接收的請求信息,得到有用信息,并將該有用信息作為虛擬資源的參數(shù)傳遞給可執(zhí)行函數(shù);所述虛擬資源的參數(shù)包括創(chuàng)建配置計算資源、存儲資源和網(wǎng)絡(luò)資源;
基于OpenStack SDK的虛擬資源自動配置模塊包括多個基于OpenStack SDK的可執(zhí)行函數(shù),用于根據(jù)基于JSON的消息解析器解析出的有用信息參數(shù),調(diào)用OpenStack API自動創(chuàng)建配置云中虛擬資源,實現(xiàn)利用該云中虛擬資源對機器人進行控制。
另一方面,本發(fā)明還提供一種云機器人實現(xiàn)方法,采用上述的云機器人系統(tǒng)實現(xiàn),包括以下步驟:
步驟1、利用基于RabbitMQ的消息中間件接收機器人發(fā)出的請求消息,根據(jù)機器人上消息生產(chǎn)者(即消息發(fā)送程序)中的隊列聲明和路由規(guī)則,將機器人請求消息存儲到不同的消息隊列,通過RabbitMQ將機器人請求消息轉(zhuǎn)發(fā)給相應(yīng)的消息消費者(即消息接收程序),具體方法為:
步驟1.1、導(dǎo)入消息生產(chǎn)者相應(yīng)的RabbitMQ的客戶端模塊;
步驟1.2、根據(jù)IP地址、端口號、虛擬主機名、用戶名和密碼建立與RabbitMQ服務(wù)器的連接;
步驟1.3、在連接內(nèi)部建立相互隔離的消息通道,消息通道內(nèi)創(chuàng)建指定名稱的隊列;
步驟1.4、指定交換器和路由鍵,將請求消息主體發(fā)送到指定的隊列中,關(guān)閉連接,等待消息消費者接收此請求消息;
步驟1.5、導(dǎo)入消息消費者相應(yīng)的RabbitMQ的客戶端模塊;
步驟1.6、根據(jù)IP地址、端口號、虛擬主機名、用戶名和密碼建立與RabbitMQ服務(wù)器的連接;
步驟1.7、在連接內(nèi)部建立相互隔離的消息通道,消息通道內(nèi)創(chuàng)建指定名稱的隊列;
步驟1.8、通過內(nèi)置的回調(diào)函數(shù)將相應(yīng)隊列上的請求消息傳遞給消息消費者,完成機器人請求消息的轉(zhuǎn)發(fā);
步驟2、利用基于JSON的消息解析器解析RabbitMQ轉(zhuǎn)發(fā)來的機器人請求消息,解析出有用信息,作為虛擬資源的參數(shù)傳遞給可執(zhí)行函數(shù),具體方法為:
步驟2.1、導(dǎo)入json模塊;
步驟2.2、將機器人請求消息載入json.loads()函數(shù);
步驟2.3、得到請求消息中鍵的列表;
步驟2.4、對鍵的列表循環(huán)解析,得到鍵值對數(shù)據(jù),即解析出的創(chuàng)建配置虛擬資源參數(shù);
步驟3、利用基于OpenStack SDK的虛擬資源自動配置模塊,根據(jù)解析器解析出的參數(shù),運行可執(zhí)行函數(shù),自動創(chuàng)建、配置云中虛擬資源,利用云中虛擬資源實現(xiàn)對機器人的復(fù)雜控制,每個可執(zhí)行函數(shù)實現(xiàn)的方法相同,具體方法為:
步驟3.1、導(dǎo)入OpenStack相應(yīng)服務(wù)的客戶端模塊,系統(tǒng)時間模塊,其中包含認證信息,聲明使用OpenStack各模塊客戶端的版本信息;
步驟3.2、判斷所述認證信息是否取得了認證,即判斷是否取得了相應(yīng)的權(quán)限,如果取得了相關(guān)認證,則運行可執(zhí)行函數(shù)主體,通過調(diào)用相應(yīng)OpenStack API,創(chuàng)建、配置相應(yīng)云中虛擬資源,執(zhí)行步驟3.3,否則,發(fā)出錯誤提示信息;
步驟3.3、根據(jù)創(chuàng)建配置的云中虛擬資源對機器人進行控制。
由上述技術(shù)方案可知,本發(fā)明的有益效果在于:本發(fā)明提供的一種云機器人系統(tǒng)及實現(xiàn)方法,系統(tǒng)結(jié)構(gòu)簡單穩(wěn)定,有良好的實際效果和較高的實用價值,所述實現(xiàn)方法能接收機器人發(fā)出的請求消息,自動創(chuàng)建配置云中虛擬資源。當(dāng)機器人需要運行不同的控制算法時,通過修改機器人請求消息,可動態(tài)調(diào)整云中的虛擬資源,實現(xiàn)機器人按需使用云中資源,是一種全新的云機器人實現(xiàn)方法,有效促進云機器人的發(fā)展。
附圖說明
圖1為本發(fā)明實施例提供的云機器人系統(tǒng)結(jié)構(gòu)框圖;
圖2為本發(fā)明實施例提供的云機器人系統(tǒng)結(jié)構(gòu)示意圖;
圖3為本發(fā)明實施例提供的云機器人實現(xiàn)方法流程圖;
圖4為本發(fā)明實施例提供的基于RabbitMQ的消息中間件消息生產(chǎn)者流程圖;
圖5為本發(fā)明實施例提供的基于JSON的消息解析器解析流程圖。
具體實施方式
下面結(jié)合附圖和實施例,對本發(fā)明的具體實施方式作進一步詳細描述。以下實施例用于說明本發(fā)明,但不用來限制本發(fā)明的范圍。
一種云機器人系統(tǒng),如圖1所示,包括三部分:基于RabbitMQ的消息中間件、基于JSON的消息解析器和基于OpenStack SDK的虛擬資源自動配置模塊。
基于RabbitMQ的消息中間件用于接收機器人請求消息,并根據(jù)機器人上消息生產(chǎn)者(即消息發(fā)送程序)中的隊列聲明和路由規(guī)則,將機器人請求消息存儲到不同的消息隊列,通過RabbitMQ將機器人請求消息轉(zhuǎn)發(fā)給相應(yīng)的消息消費者(即消息接收程序)。
基于JSON的消息解析器用于解析RabbitMQ消息消費者接收的請求信息,得到有用信息,并將該有用信息作為虛擬資源的參數(shù)傳遞給可執(zhí)行函數(shù);所述虛擬資源的參數(shù)包括創(chuàng)建配置計算資源、存儲資源和網(wǎng)絡(luò)資源。
基于OpenStack SDK的虛擬資源自動配置模塊包括多個基于OpenStack SDK的可執(zhí)行函數(shù),用于根據(jù)基于JSON的消息解析器解析出的有用信息參數(shù),調(diào)用OpenStack API自動創(chuàng)建配置云中虛擬資源,利用該云中虛擬資源對機器人進行控制。
一種云機器人實現(xiàn)方法,如圖3所示,首先利用基于RabbitMQ的消息中間件接收、存儲、轉(zhuǎn)發(fā)機器人請求信息,再利用基于JSON的消息解析器解析請求消息,得到創(chuàng)建配置云中虛擬資源的參數(shù),最后基于OpenStack SDK的虛擬資源自動配置模塊根據(jù)解析出的參數(shù)信息自動創(chuàng)建配置網(wǎng)絡(luò)、虛擬機等云中資源,使虛擬機與機器人能相互連接、相互通信,進而根據(jù)云中虛擬資源對機器人進行控制。虛擬機內(nèi)部集成了Ubuntu操作系統(tǒng)和ROS(Robot Operating System),可運行相應(yīng)的機器人算法,實現(xiàn)機器人的復(fù)雜控制,本實施例中的云機器人系統(tǒng)如圖2所示。
如圖4所示,為基于RabbitMQ的消息中間件消息生產(chǎn)者流程圖。本實施例中有多個消息生產(chǎn)者(請求消息的發(fā)送程序)和消息消費者(請求消息的接收程序)。首先要在RabbitMQ服務(wù)器上創(chuàng)建虛擬主機,并設(shè)定用戶名和密碼,為之后生產(chǎn)者、消費者與服務(wù)器建立連接作準備。消息生產(chǎn)者流程如下:
(1)導(dǎo)入消息生產(chǎn)者相應(yīng)的RabbitMQ的客戶端模塊,導(dǎo)入的模塊是程序的集合,可以直接調(diào)用使用;
(2)根據(jù)IP地址、端口號、虛擬主機名、用戶名和密碼建立與RabbitMQ服務(wù)器的連接;
(3)在連接內(nèi)部建立相互隔離的消息通道,在消息通道內(nèi)創(chuàng)建指定名稱的隊列;
(4)指定交換器和路由鍵,將請求消息主體發(fā)送到指定的隊列中;
(5)關(guān)閉連接。
消息生產(chǎn)者通過上面的流程將消息發(fā)送至指定的隊列上,等待消息消費者接收此消息。
本實施例中,消息消費者的流程與消息生產(chǎn)者大致相同,在導(dǎo)入相應(yīng)模塊后,通過IP地址、端口號、虛擬主機名、用戶名和密碼與RabbitMQ服務(wù)器建立連接,創(chuàng)建通道,指定名稱創(chuàng)建隊列,通過內(nèi)置的回調(diào)函數(shù)callback()函數(shù)將該隊列上的消息被傳遞給此消費者,完成消息的轉(zhuǎn)發(fā)。消息消費者要一直等待請求消息的到來,所以不需要關(guān)閉連接等操作,具體實施中,按CTRL+C鍵可以人為強制關(guān)閉連接。
如圖5所示,為基于JSON的消息解析器進行解析的流程圖,其流程如下:
(1)導(dǎo)入json模塊;
(2)將機器人請求消息載入json.loads()函數(shù);
(3)得到請求消息中鍵的列表;
(4)由鍵的列表進行循環(huán)解析,得到鍵值對數(shù)據(jù),即解析出的創(chuàng)建配置虛擬資源參數(shù)。
本實施例中,基于OpenStack SDK的虛擬資源自動配置模塊主要包含5個可執(zhí)行函數(shù),涵蓋了對云平臺基本的操作,其名稱、所需參數(shù)和對應(yīng)的功能如表1所示.
表1可執(zhí)行函數(shù)信息表
每個可執(zhí)行函數(shù)實現(xiàn)的總體流程大致類似:先導(dǎo)入相應(yīng)模塊,包含認證信息,聲明使用OpenStack各模塊客戶端的版本信息等,其次判斷是否取得了認證,即判斷是否取得了相應(yīng)的權(quán)限,如果取得了相關(guān)認證,則執(zhí)行函數(shù)主體,通過調(diào)用相應(yīng)OpenStack API,創(chuàng)建配置相應(yīng)虛擬資源,否則發(fā)出錯誤提示信息。
最后應(yīng)說明的是:以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述實施例所記載的技術(shù)方案進行修改,或者對其中部分或者全部技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明權(quán)利要求所限定的范圍。