本發(fā)明涉及一種機(jī)器人操作系統(tǒng)的方法,特別是涉及一種在多機(jī)器人上運(yùn)行多主節(jié)點(diǎn)機(jī)器人操作系統(tǒng)的方法。
背景技術(shù):
機(jī)器人系統(tǒng)由驅(qū)動(dòng)裝置、傳感裝置和控制系統(tǒng)、復(fù)雜機(jī)械以及后臺(tái)的決策系統(tǒng)組成,所有設(shè)備通過(guò)相互協(xié)同和相互影響,共同決定機(jī)器人的功能和行為特征;為了滿足機(jī)器人軟件日益復(fù)雜的需求,許多機(jī)器人軟件平臺(tái)應(yīng)運(yùn)而生,機(jī)器人軟件平臺(tái)當(dāng)前最為活躍的是機(jī)器人操作系統(tǒng),其已成為機(jī)器人應(yīng)用軟件平臺(tái)的事實(shí)標(biāo)準(zhǔn)。
機(jī)器人操作系統(tǒng)包含控制算法、傳感器驅(qū)動(dòng)等多個(gè)軟件節(jié)點(diǎn)模塊,并分布式運(yùn)行于機(jī)器人的多個(gè)異構(gòu)計(jì)算機(jī)硬件節(jié)點(diǎn)上,如機(jī)器人的傳感器節(jié)點(diǎn)、計(jì)算單元節(jié)點(diǎn)和執(zhí)行器節(jié)點(diǎn),通過(guò)分布式處理框架組合形成完整的機(jī)器人控制軟件系統(tǒng)整合了多個(gè)軟件模塊和硬件模塊,系統(tǒng)中包含中心主節(jié)點(diǎn)軟件模塊,其提供所有其他應(yīng)用軟件節(jié)點(diǎn)的注冊(cè)注銷信息和軟件節(jié)點(diǎn)間通訊所需的配置和狀態(tài)信息。
另一方面,多機(jī)器人協(xié)作是目前工業(yè)界機(jī)器人應(yīng)用和研究的熱點(diǎn),具有巨大的潛力,多個(gè)機(jī)器人協(xié)同工作,能夠完成單個(gè)機(jī)器人無(wú)法完成的任務(wù),或改善工作過(guò)程,并獲得更優(yōu)的系統(tǒng)性能;多機(jī)器人系統(tǒng)可以突破單機(jī)器人系統(tǒng)在感知、決策及執(zhí)行能力等方面受到的限制,甚至完成單個(gè)機(jī)器人無(wú)法實(shí)現(xiàn)的任務(wù),如果多機(jī)器人系統(tǒng)上運(yùn)行單一的機(jī)器人操作系統(tǒng),其主中心節(jié)點(diǎn)很難選擇配置在哪個(gè)機(jī)器人上,多機(jī)器人間的連接發(fā)生改變時(shí),主中心節(jié)點(diǎn)的丟失會(huì)照成全系統(tǒng)的崩潰;如每個(gè)機(jī)器人上運(yùn)行一個(gè)機(jī)器人操作系統(tǒng),就需要一套方法使本地的機(jī)器人操作系統(tǒng)正確訂閱遠(yuǎn)程機(jī)器人操作系統(tǒng)上的發(fā)布信息,否則多機(jī)器人的消息會(huì)引起沖突。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種在多機(jī)器人上運(yùn)行多主節(jié)點(diǎn)機(jī)器人操作系統(tǒng)的方法,實(shí)現(xiàn)了每個(gè)機(jī)器人獨(dú)立運(yùn)行一套包含主節(jié)點(diǎn)的機(jī)器人操作系統(tǒng),增加了系統(tǒng)的靈活性。
本發(fā)明是通過(guò)下述技術(shù)方案來(lái)解決上述技術(shù)問(wèn)題的:一種在多機(jī)器人上運(yùn)行多主節(jié)點(diǎn)機(jī)器人操作系統(tǒng)的方法,其包括以下步驟:
步驟一,基于單個(gè)機(jī)器人操作系統(tǒng),提供多機(jī)協(xié)同框架;使用多機(jī)協(xié)同框架的多機(jī)器人系統(tǒng)包含一系列基于機(jī)器人操作系統(tǒng)的單機(jī)器人操作系統(tǒng),每個(gè)機(jī)器人操作系統(tǒng)獨(dú)立運(yùn)行,擁有獨(dú)立的主中心節(jié)點(diǎn);多機(jī)協(xié)同框架由若干模塊組成,運(yùn)行在每個(gè)機(jī)器人上,是單機(jī)器人操作系統(tǒng)的擴(kuò)展;多機(jī)協(xié)同框架在運(yùn)行過(guò)程中通過(guò)端對(duì)端的拓?fù)浣Y(jié)構(gòu)進(jìn)行聯(lián)系,分布式設(shè)計(jì)機(jī)制去中心化,可以更靈活的組織實(shí)現(xiàn)復(fù)雜的功能,適應(yīng)多機(jī)器人協(xié)同的挑戰(zhàn);
步驟二,完成多機(jī)間的同步和發(fā)現(xiàn);多機(jī)協(xié)同框架的節(jié)點(diǎn)發(fā)現(xiàn)與同步模塊負(fù)責(zé)將多個(gè)包含主節(jié)點(diǎn)的單機(jī)器人操作系統(tǒng)合并成一個(gè)系統(tǒng)網(wǎng)絡(luò)視圖,通過(guò)調(diào)用本地機(jī)器人操作系統(tǒng)主節(jié)點(diǎn)的接口,獲取本地系統(tǒng)的狀態(tài)信息和本地對(duì)外部的接口信息;調(diào)用本地機(jī)器人操作系統(tǒng)主節(jié)點(diǎn)的接口獲取本地信息的頻率由配置參數(shù)決定,隨后加上時(shí)間戳的本地狀態(tài)信息和接口信息在輕量級(jí)分布式發(fā)布訂閱通訊總線上進(jìn)行廣播,每個(gè)機(jī)器人都能維護(hù)一份全局系統(tǒng)的視圖;
步驟三,多機(jī)間信息交互;同步模塊負(fù)責(zé)注冊(cè)遠(yuǎn)程有效的消息或服務(wù)到本地的主中心節(jié)點(diǎn),在注冊(cè)時(shí),加上遠(yuǎn)程機(jī)器人標(biāo)識(shí)符前綴,以區(qū)分不同機(jī)器人間的信息;外部消息轉(zhuǎn)換模塊在外部消息到達(dá)每個(gè)機(jī)器人內(nèi)部時(shí),完成內(nèi)外消息命名空間的轉(zhuǎn)化;
步驟四,基于能力描述,動(dòng)態(tài)分配和運(yùn)行任務(wù);能力描述模塊能夠表示分布系統(tǒng)中的機(jī)器人的資源能力,包括底層硬件計(jì)算資源、傳感器資源和基礎(chǔ)支撐軟件資源;應(yīng)用管理模塊按照應(yīng)用所需資源和機(jī)器人能力提供資源之間的匹配關(guān)系,動(dòng)態(tài)的安排和部署應(yīng)用軟件;應(yīng)用軟件原有的啟動(dòng)文件不需要修改,應(yīng)用管理模塊就能夠啟動(dòng)或停止應(yīng)用軟件在機(jī)器人上的運(yùn)行;進(jìn)一步,應(yīng)用管理模塊提供一個(gè)可在基于linux操作系統(tǒng)的開發(fā)機(jī)上運(yùn)行的可視化工具,直觀的展示各個(gè)機(jī)器人上的資源情況和任務(wù)運(yùn)行的狀態(tài)。
優(yōu)選地,所述多機(jī)協(xié)同框架包括:
節(jié)點(diǎn)發(fā)現(xiàn)與同步模塊,多機(jī)節(jié)點(diǎn)間基于自組織網(wǎng)絡(luò),完成節(jié)點(diǎn)的動(dòng)態(tài)發(fā)現(xiàn),同步節(jié)點(diǎn)的加入、退出,并在每個(gè)節(jié)點(diǎn)在以去中心化的形式維護(hù)全部網(wǎng)絡(luò)的拓?fù)湫畔?,?jié)點(diǎn)間通訊基于輕量級(jí)實(shí)時(shí)發(fā)布訂閱通訊總線機(jī)制,實(shí)現(xiàn)機(jī)間節(jié)點(diǎn)的動(dòng)態(tài)發(fā)現(xiàn);
外部消息轉(zhuǎn)換模塊,節(jié)點(diǎn)間交換的外部消息通過(guò)消息轉(zhuǎn)換模塊到達(dá)每個(gè)節(jié)點(diǎn)的內(nèi)部,在消息轉(zhuǎn)換模塊完成節(jié)點(diǎn)內(nèi)外消息命名空間的轉(zhuǎn)化;基于節(jié)點(diǎn)發(fā)現(xiàn)的元信息,在多機(jī)間的外部消息上添加了基于每個(gè)機(jī)器人的標(biāo)識(shí)符前綴,經(jīng)過(guò)消息轉(zhuǎn)換模塊處理外部信息的數(shù)據(jù)封裝,轉(zhuǎn)換成內(nèi)部系統(tǒng)可用的數(shù)據(jù)命名空間,實(shí)現(xiàn)數(shù)據(jù)交互和共享;
能力描述服務(wù)模塊,能力描述服務(wù)提供對(duì)單個(gè)機(jī)器人的資源能力的在線描述,主要為傳感器抽象構(gòu)件集和通用服務(wù)構(gòu)件集提供的能力接口,通過(guò)標(biāo)準(zhǔn)的xml格式描述的能力接口,指明底層基礎(chǔ)平臺(tái)的計(jì)算資源、通訊資源、存儲(chǔ)資源、感知資源的能力,完成各種邏輯設(shè)備狀態(tài)、屬性和信息的管理;
應(yīng)用管理模塊,應(yīng)用管理器完成應(yīng)用任務(wù)的安裝部署流程,在統(tǒng)一的協(xié)同框架下,可將感知、決策、執(zhí)行的功能任務(wù)按照機(jī)器人能力描述分布式地動(dòng)態(tài)部署于多個(gè)機(jī)器人平臺(tái)上,根據(jù)任務(wù)所需的配置,通過(guò)和能力描述服務(wù)提供的底層基礎(chǔ)平臺(tái)的能力匹配,完成軟件任務(wù)在多個(gè)平臺(tái)上的部署加載和動(dòng)態(tài)激活;應(yīng)用管理器負(fù)責(zé)對(duì)任務(wù)的注冊(cè)和注銷,提供邏輯任務(wù)的加載、卸載、運(yùn)行、停止的功能行為的控制封裝接口。
優(yōu)選地,所述步驟二通過(guò)調(diào)用本地機(jī)器人操作系統(tǒng)主節(jié)點(diǎn)的接口,獲取本地系統(tǒng)的狀態(tài)信息和本地對(duì)外部的接口信息
優(yōu)選地,所述步驟三通過(guò)外部消息轉(zhuǎn)換模塊完成內(nèi)外消息命名空間的轉(zhuǎn)化。
本發(fā)明的積極進(jìn)步效果在于:本發(fā)明通過(guò)在多機(jī)器人系統(tǒng)中,每個(gè)機(jī)器人獨(dú)立運(yùn)行一套包含主節(jié)點(diǎn)的機(jī)器人操作系統(tǒng),同時(shí)本地的機(jī)器人操作系統(tǒng)可以訂閱遠(yuǎn)程機(jī)器人操作系統(tǒng)的信息,通過(guò)命名空間的轉(zhuǎn)換,實(shí)現(xiàn)數(shù)據(jù)交互和共享,這樣避免了在多機(jī)器人系統(tǒng)上運(yùn)行單一的機(jī)器人操作系統(tǒng)時(shí)引入的主中心節(jié)點(diǎn)選擇的困難,又能夠在機(jī)器人上使用機(jī)器人操作系統(tǒng)軟件,并且獲取遠(yuǎn)程的信息;每個(gè)機(jī)器人根據(jù)其硬軟件配置生成能力描述視圖,多機(jī)系統(tǒng)能夠根據(jù)不同機(jī)器人的硬軟件能力進(jìn)行任務(wù)匹配,動(dòng)態(tài)分配和監(jiān)控在每個(gè)機(jī)器人上執(zhí)行的任務(wù),以形成一個(gè)自適應(yīng)的多機(jī)器人系統(tǒng),當(dāng)外界環(huán)境改變或目標(biāo)改變時(shí),多機(jī)器人系統(tǒng)上執(zhí)行的任務(wù)能夠動(dòng)態(tài)安排,增加了整個(gè)系統(tǒng)的靈活性;當(dāng)多機(jī)器人間的網(wǎng)絡(luò)連接發(fā)生改變時(shí),單個(gè)機(jī)器人上的運(yùn)行的機(jī)器人操作系統(tǒng)軟件不受到影響,當(dāng)任務(wù)在不同機(jī)器人上動(dòng)態(tài)分配、啟動(dòng)或停止時(shí),原有的任務(wù)配置和啟動(dòng)文件也不需要進(jìn)行修改,保持了系統(tǒng)的易用性。
附圖說(shuō)明
圖1為本發(fā)明的系統(tǒng)流程圖。
圖2為多機(jī)協(xié)同框架的模塊示意圖。
具體實(shí)施方式
下面結(jié)合附圖給出本發(fā)明較佳實(shí)施例,以詳細(xì)說(shuō)明本發(fā)明的技術(shù)方案。
如圖1所示,本發(fā)明在多機(jī)器人上運(yùn)行多主節(jié)點(diǎn)機(jī)器人操作系統(tǒng)的方法包括以下步驟:
步驟一,基于單個(gè)機(jī)器人操作系統(tǒng),提供多機(jī)協(xié)同框架;使用多機(jī)協(xié)同框架的多機(jī)器人系統(tǒng)包含一系列基于機(jī)器人操作系統(tǒng)的單機(jī)器人操作系統(tǒng),每個(gè)機(jī)器人操作系統(tǒng)獨(dú)立運(yùn)行,擁有獨(dú)立的主中心節(jié)點(diǎn);多機(jī)協(xié)同框架由若干模塊組成,運(yùn)行在每個(gè)機(jī)器人上,是單機(jī)器人操作系統(tǒng)的擴(kuò)展;多機(jī)協(xié)同框架在運(yùn)行過(guò)程中通過(guò)端對(duì)端的拓?fù)浣Y(jié)構(gòu)進(jìn)行聯(lián)系,分布式設(shè)計(jì)機(jī)制去中心化,可以更靈活的組織實(shí)現(xiàn)復(fù)雜的功能,適應(yīng)多機(jī)器人協(xié)同的挑戰(zhàn);
步驟二,完成多機(jī)間的同步和發(fā)現(xiàn);多機(jī)協(xié)同框架的節(jié)點(diǎn)發(fā)現(xiàn)與同步模塊負(fù)責(zé)將多個(gè)包含主節(jié)點(diǎn)的單機(jī)器人操作系統(tǒng)合并成一個(gè)系統(tǒng)網(wǎng)絡(luò)視圖,通過(guò)調(diào)用本地機(jī)器人操作系統(tǒng)主節(jié)點(diǎn)的接口,獲取本地系統(tǒng)的狀態(tài)信息和本地對(duì)外部的接口信息;調(diào)用本地機(jī)器人操作系統(tǒng)主節(jié)點(diǎn)的接口獲取本地信息的頻率由配置參數(shù)決定,隨后加上時(shí)間戳的本地狀態(tài)信息和接口信息在輕量級(jí)分布式發(fā)布訂閱通訊總線上進(jìn)行廣播,每個(gè)機(jī)器人都能維護(hù)一份全局系統(tǒng)的視圖;
步驟三,多機(jī)間信息交互;同步模塊負(fù)責(zé)注冊(cè)遠(yuǎn)程有效的消息或服務(wù)到本地的主中心節(jié)點(diǎn),在注冊(cè)時(shí),加上遠(yuǎn)程機(jī)器人標(biāo)識(shí)符前綴,以區(qū)分不同機(jī)器人間的信息;外部消息轉(zhuǎn)換模塊在外部消息到達(dá)每個(gè)機(jī)器人內(nèi)部時(shí),完成內(nèi)外消息命名空間的轉(zhuǎn)化;
步驟四,基于能力描述,動(dòng)態(tài)分配和運(yùn)行任務(wù);能力描述模塊能夠表示分布系統(tǒng)中的機(jī)器人的資源能力,包括底層硬件計(jì)算資源、傳感器資源和基礎(chǔ)支撐軟件資源;應(yīng)用管理模塊按照應(yīng)用所需資源和機(jī)器人能力提供資源之間的匹配關(guān)系,動(dòng)態(tài)的安排和部署應(yīng)用軟件;應(yīng)用軟件原有的啟動(dòng)文件不需要修改,應(yīng)用管理模塊就能夠啟動(dòng)或停止應(yīng)用軟件在機(jī)器人上的運(yùn)行;進(jìn)一步,應(yīng)用管理模塊提供一個(gè)可在基于linux操作系統(tǒng)的開發(fā)機(jī)上運(yùn)行的可視化工具,直觀的展示各個(gè)機(jī)器人上的資源情況和任務(wù)運(yùn)行的狀態(tài)。
如圖2所示,多機(jī)協(xié)同框架包括以下模塊:
節(jié)點(diǎn)發(fā)現(xiàn)與同步模塊,多機(jī)節(jié)點(diǎn)間基于自組織網(wǎng)絡(luò),完成節(jié)點(diǎn)的動(dòng)態(tài)發(fā)現(xiàn),同步節(jié)點(diǎn)的加入、退出,并在每個(gè)節(jié)點(diǎn)在以去中心化的形式維護(hù)全部網(wǎng)絡(luò)的拓?fù)湫畔ⅲ?jié)點(diǎn)間通訊基于輕量級(jí)實(shí)時(shí)發(fā)布訂閱通訊總線機(jī)制,實(shí)現(xiàn)機(jī)間節(jié)點(diǎn)的動(dòng)態(tài)發(fā)現(xiàn);
外部消息轉(zhuǎn)換模塊,節(jié)點(diǎn)間交換的外部消息通過(guò)消息轉(zhuǎn)換模塊到達(dá)每個(gè)節(jié)點(diǎn)的內(nèi)部,在消息轉(zhuǎn)換模塊完成節(jié)點(diǎn)內(nèi)外消息命名空間的轉(zhuǎn)化;基于節(jié)點(diǎn)發(fā)現(xiàn)的元信息,在多機(jī)間的外部消息上添加了基于每個(gè)機(jī)器人的標(biāo)識(shí)符前綴,經(jīng)過(guò)消息轉(zhuǎn)換模塊處理外部信息的數(shù)據(jù)封裝,轉(zhuǎn)換成內(nèi)部系統(tǒng)可用的數(shù)據(jù)命名空間,實(shí)現(xiàn)數(shù)據(jù)交互和共享;
能力描述服務(wù)模塊,能力描述服務(wù)提供對(duì)單個(gè)機(jī)器人的資源能力的在線描述,主要為傳感器抽象構(gòu)件集和通用服務(wù)構(gòu)件集提供的能力接口,通過(guò)標(biāo)準(zhǔn)的xml(可擴(kuò)展標(biāo)記語(yǔ)言)格式描述的能力接口,指明底層基礎(chǔ)平臺(tái)的計(jì)算資源、通訊資源、存儲(chǔ)資源、感知資源的能力,完成各種邏輯設(shè)備狀態(tài)、屬性和信息的管理;
應(yīng)用管理模塊,應(yīng)用管理器完成應(yīng)用任務(wù)的安裝部署流程,在統(tǒng)一的協(xié)同框架下,可將感知、決策、執(zhí)行的功能任務(wù)按照機(jī)器人能力描述分布式地動(dòng)態(tài)部署于多個(gè)機(jī)器人平臺(tái)上,根據(jù)任務(wù)所需的配置,通過(guò)和能力描述服務(wù)提供的底層基礎(chǔ)平臺(tái)的能力匹配,完成軟件任務(wù)在多個(gè)平臺(tái)上的部署加載和動(dòng)態(tài)激活;應(yīng)用管理器負(fù)責(zé)對(duì)任務(wù)的注冊(cè)和注銷,提供邏輯任務(wù)的加載、卸載、運(yùn)行、停止的功能行為的控制封裝接口。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:本發(fā)明通過(guò)在多機(jī)器人系統(tǒng)中,每個(gè)機(jī)器人獨(dú)立運(yùn)行一套包含主節(jié)點(diǎn)的機(jī)器人操作系統(tǒng),同時(shí)本地的機(jī)器人操作系統(tǒng)可以訂閱遠(yuǎn)程機(jī)器人操作系統(tǒng)的信息,通過(guò)命名空間的轉(zhuǎn)換,實(shí)現(xiàn)數(shù)據(jù)交互和共享,這樣避免了在多機(jī)器人系統(tǒng)上運(yùn)行單一的機(jī)器人操作系統(tǒng)時(shí)引入的主中心節(jié)點(diǎn)選擇的困難,又能夠在機(jī)器人上使用機(jī)器人操作系統(tǒng)軟件,并且獲取遠(yuǎn)程的信息;每個(gè)機(jī)器人根據(jù)其硬軟件配置生成能力描述視圖,多機(jī)系統(tǒng)能夠根據(jù)不同機(jī)器人的硬軟件能力進(jìn)行任務(wù)匹配,動(dòng)態(tài)分配和監(jiān)控在每個(gè)機(jī)器人上執(zhí)行的任務(wù),以形成一個(gè)自適應(yīng)的多機(jī)器人系統(tǒng),當(dāng)外界環(huán)境改變或目標(biāo)改變時(shí),多機(jī)器人系統(tǒng)上執(zhí)行的任務(wù)能夠動(dòng)態(tài)安排,增加了整個(gè)系統(tǒng)的靈活性;當(dāng)多機(jī)器人間的網(wǎng)絡(luò)連接發(fā)生改變時(shí),單個(gè)機(jī)器人上的運(yùn)行的機(jī)器人操作系統(tǒng)軟件不受到影響,當(dāng)任務(wù)在不同機(jī)器人上動(dòng)態(tài)分配、啟動(dòng)或停止時(shí),原有的任務(wù)配置和啟動(dòng)文件也不需要進(jìn)行修改,保持了系統(tǒng)的易用性。
本發(fā)明在多機(jī)器人系統(tǒng)中,每個(gè)機(jī)器人能夠運(yùn)行獨(dú)立的一套包含主節(jié)點(diǎn)的機(jī)器人操作系統(tǒng),單個(gè)機(jī)器人操作系統(tǒng)之間沒有依賴,同時(shí)多機(jī)器人間可交換信息,本地的機(jī)器人操作系統(tǒng)可以訂閱遠(yuǎn)程機(jī)器人操作系統(tǒng)的消息。當(dāng)多機(jī)器人間的網(wǎng)絡(luò)連接發(fā)生改變時(shí),例如任意機(jī)器人加入或退出多機(jī)器人系統(tǒng)時(shí),單個(gè)機(jī)器人上的運(yùn)行的機(jī)器人操作系統(tǒng)軟件不受到影響,也不需要重新配置。每個(gè)機(jī)器人根據(jù)其硬軟件配置生成能力描述視圖,多機(jī)系統(tǒng)能夠根據(jù)不同機(jī)器人的能力,動(dòng)態(tài)安排和監(jiān)控在每個(gè)機(jī)器人上執(zhí)行的任務(wù)。
以上所述的具體實(shí)施例,對(duì)發(fā)明的解決的技術(shù)問(wèn)題、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說(shuō)明,所應(yīng)理解的是,以上所述僅為發(fā)明的具體實(shí)施例而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。