• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      機器人中間件消息實時性保證機制的研究與實現(xiàn)

      2015-12-25 07:51:57樊澤棟丁博史殿習張鵬飛
      軟件 2015年10期
      關(guān)鍵詞:實時性

      樊澤棟++丁博++史殿習++張鵬飛

      摘要:在分布計算環(huán)境下機器人領(lǐng)域?qū)W(wǎng)絡(luò)消息傳輸?shù)膶崟r性有著迫切的需求。目前主流的機器人中間件ROS(Robot Operatmg System)尚不能提供對消息實時性的支持。在傳統(tǒng)分布計算件領(lǐng)域,對網(wǎng)絡(luò)消息傳輸?shù)膶崟r性的研究已經(jīng)非常深入,并涌現(xiàn)出很多優(yōu)秀的研究成果(例如OpenSplice DDS)。本文將OpenSplice DDS集成到ROS內(nèi)核的通信層,使之成為ROS底層可選的通信協(xié)議之一,從而實現(xiàn)ROS網(wǎng)絡(luò)消息傳輸?shù)膶崟r性。實驗表明,修改后的ROS內(nèi)核具有更好的可伸縮性和消息優(yōu)先級等實時保證能力。

      關(guān)鍵詞:機器人中間件;實時性;分布計算環(huán)境;ROS

      中圖分類號:TP31 文獻標識碼:A DOI: 10.3969/j.issn.1003-6970.2015.10.006

      引言

      隨著機器人軟件日趨復雜,特別是機器人分布式應(yīng)用的普及,中間件等軟件基礎(chǔ)設(shè)施在機器人軟件領(lǐng)域的地位也日趨重要,其作用主要表現(xiàn)在兩個方面:(1)通過平臺化實現(xiàn)軟件重用,即通過規(guī)范化、模塊化的編程模型(例如面向機器人領(lǐng)域的構(gòu)件模型)來實現(xiàn)機器人應(yīng)用邏輯的有效重用。(2)為分布異構(gòu)提供必要支持。即通過中間件的引入,使得機器人應(yīng)用的開發(fā)者無需關(guān)心底層的分布性,實現(xiàn)異構(gòu)機器人計算結(jié)點之間的互聯(lián)互通。

      目前,由著名機器人公司W(wǎng)illow Garage開發(fā)和維護的ROS(Robot Operating System)是國際上比較主流的開源機器人中間件,并逐漸成為機器人領(lǐng)域的事實標準。ROS的首要設(shè)計目標是提高機器人研究和開發(fā)過程中的代碼重用,使得開發(fā)者可以將精力聚焦在新的使能技術(shù)上。它具有如下一些顯著的特點:

      (1)元操作系統(tǒng)。ROS雖然名為“操作系統(tǒng)”,但它是一個元操作系統(tǒng),即運行在已有的通用操作系統(tǒng)之上(如Ubuntu)的一層基礎(chǔ)軟件。在這個意義上,它更符合傳統(tǒng)中間件的定義。

      (2)分布式架構(gòu)。一個機器人內(nèi)部往往有多個計算/信息處理結(jié)點,因此ROS本身設(shè)計為一個分布式、點對點的架構(gòu)。在每個結(jié)點的通用操作系統(tǒng)之上,它提供了與機器人密切相關(guān)的各類服務(wù)(如多個計算節(jié)點之間的消息發(fā)布/訂閱能力)。

      (3)微內(nèi)核和“瘦”化設(shè)計。ROS內(nèi)部基于微內(nèi)核設(shè)計,它不追求構(gòu)造一個單一化的巨大的機器人開發(fā)和運行環(huán)境,而是通過微內(nèi)核集成了大量的工具和模塊。

      但是,ROS目前尚不能提供對實時性的支持,而在分布計算環(huán)境下機器人領(lǐng)域?qū)崟r性又有著極為迫切的需要?;诖爽F(xiàn)狀,本文對ROS的內(nèi)核進行修改,將OpenSplice DDS集成到ROS中,實現(xiàn)ROS對網(wǎng)絡(luò)消息傳輸?shù)膶崟r陛的支持。本文后續(xù)內(nèi)容組織如下:第2節(jié)闡述研究背景與相關(guān)工作,第3節(jié)給出ROS消息實時性實現(xiàn)的內(nèi)核擴展方法,第4節(jié)進行測試并得出實驗結(jié)果,第5節(jié)結(jié)束語。

      1 研究背景與相關(guān)工作

      1.1 機器人分布計算環(huán)境下的消息實時性

      隨著機器人應(yīng)用規(guī)模的增長和應(yīng)用領(lǐng)域的擴展,分布計算技術(shù)在機器人應(yīng)用中日趨重要,主要表現(xiàn)在兩個方面:(1)真實機器人需要感知和處理多種環(huán)境信息,在動態(tài)變化的環(huán)境中遂行復雜任務(wù),本身往往具有多個信息處理結(jié)點;(2)人們希望機器人能完成更加復雜的作業(yè),這些復雜的作業(yè)由單一機器人已難以完成,需要多機器人通過分布計算相互協(xié)調(diào)與合作共同完成。

      機器人與物理世界緊密結(jié)合,物理世界的時間約束直接映射到機器人軟件上,因此實時性是機器人軟件的重要特性,機器人分布計算軟件也不例外??紤]如下的機器人分布計算場景:用于偵查和作戰(zhàn)的無人機系統(tǒng)通常由無人機、地面控制站和配套網(wǎng)絡(luò)通信設(shè)施組成(見圖1)。例如一個典型的美軍“捕食者”系統(tǒng)包括四架無人機、一個地面控制站和一個“特洛伊精神II”數(shù)據(jù)分發(fā)系統(tǒng)。無人機需要向后臺傳輸飛行狀態(tài)數(shù)據(jù)、實時圖像信息等多種類型數(shù)據(jù),這些數(shù)據(jù)有不同的優(yōu)先級和預(yù)期傳輸時延,例如飛行狀態(tài)數(shù)據(jù)雖然數(shù)據(jù)量較少,但必須高優(yōu)先級、低延時傳送,否則可能會造成遠程操控的時滯,這對于高速飛行的無人機可能是致命的;而高分辨率的地面圖像信息主要用于情報搜集,這些圖像以流的形式持續(xù)向后臺傳送,需要占用很大的帶寬,但可以以低先級傳遞,必要時可以通過丟幀等方式來避免網(wǎng)絡(luò)擁堵。

      因此,要滿足機器人分布計算場景的需求,在消息層面需要提供消息優(yōu)先級設(shè)置、預(yù)期傳輸延遲設(shè)置、自動夭折時限設(shè)置、時間過濾周期設(shè)置等與時間相關(guān)的服務(wù)質(zhì)量保證能力。這些消息傳輸過程中的時間約束即為本文所稱的消息實時性。

      1.2 相關(guān)研究工作

      針對上節(jié)提出的消息實時性需求,本小節(jié)將具體闡述兩個方面的相關(guān)工作:首先是介紹在傳統(tǒng)中間件領(lǐng)域是如何實現(xiàn)消息實時性的;其次是介紹目前ROS已有的實時性實現(xiàn)方案。

      1.2.1 DDS

      在企業(yè)計算和互聯(lián)網(wǎng)計算領(lǐng)域,DDS是目前實現(xiàn)消息實時性的主流中間件解決方案。在許多大型網(wǎng)絡(luò)化實時系統(tǒng)中,最為關(guān)鍵的是數(shù)據(jù)(如嵌入式設(shè)備運行狀態(tài)、各類環(huán)境數(shù)據(jù))的實時交換,即數(shù)據(jù)必須按照服務(wù)質(zhì)量QoS(如各類實時約束)分發(fā)給感興趣的訂閱者。為此,OMG組織發(fā)布了消息實時中間件DDS(Data Distribution Service for Real-timeSystems)。在DDS中消息的傳輸采用的是基于主題的訂閱/發(fā)布模型。在此模型下,數(shù)據(jù)的發(fā)送者不是直接將消息發(fā)送給接收者,而是先將消息發(fā)送到主題(topic)上,然后所有訂閱了這個消息訂閱者從主題接受消息而不需要知道消息的發(fā)布者。通過此模型,DDS中消息的發(fā)送者和接受者在時間和空間上是松耦合的,這樣DDS可以較好的應(yīng)用在高度動態(tài)的環(huán)境下,例如分布式機器人環(huán)境。

      與其它消息中間件相比(例如Advanced MessageQueuing Protocol).DDS具有以下兩個優(yōu)點:(1)服務(wù)質(zhì)量設(shè)置。DDS定義了較為全面的與時間相關(guān)的服務(wù)質(zhì)量QoS控制策略,例如消息的傳輸優(yōu)先級、消息自動夭折、傳輸延遲控制、基于時間過濾消息等等。(2)擴展性強。首先DDS采用的是點對點的傳輸模式,其次DDS支持UDP/IP組播,這使得DDS具有良好的可擴展性。由于DDS具有上述優(yōu)點,DDS數(shù)據(jù)分發(fā)服務(wù)已在國防、電信、航空、分布控制、工業(yè)自動化等領(lǐng)域得到廣泛的運用。

      OpenSplice DDS是由PrismTech公司研發(fā)的開源實現(xiàn),是目前唯一完全兼容OMG DDS標準的中間件,提供了對所有DCPS描述和DLRL對象描述的支持,能夠為系統(tǒng)應(yīng)用提供在正確的時間和地點獲取正確的數(shù)據(jù)的能力。因而本文將采用OpenSplice DDS來實現(xiàn)機器人中間件ROS的消息實時性。

      1.2.2 ROS實時性現(xiàn)有解決方案

      上文已經(jīng)提到ROS作為當前主流的機器人中間件不能提供對實時性的支持,但是ROS支持與實時代碼的集成,即在ROS應(yīng)用中嵌入其他實時性保證的類包。目前在此方面主要有兩類具有代表性的實踐:

      (1)與PR2機器人實現(xiàn)相關(guān)的實時代碼

      PR2機器人是Willow Garage公司自身的產(chǎn)品,在其實現(xiàn)過程中需要一些實時代碼,這些包的名稱都是pr2_*的形式。例如,PR2機器人的主控軟件包(原文是Main loop that runs the robot)pr2.etherCAT、控制器軟件包pr2_controller_manager等都提供了對硬實時的支持。

      (2) ROS與Orocos實時工具包的集成

      Orocos是一個面向機器人控制的開源軟件框架,其上的軟件以O(shè)rocos構(gòu)件的形式組織。Orocos工具鏈中的實時工具包提供了對操作系統(tǒng)實時能力(如線程調(diào)度能力)的高層抽象,以及Orocos構(gòu)件的運行容器。開發(fā)人員可以基于Orocos實時工具包快速開發(fā)出具有實時性保證的機器人控制構(gòu)件。Orocos的底層可以直接是標準的Linux內(nèi)核,也可以是RTAI/LXRT或Xenomai軟件框架,后二者基于標準Linux提供了硬實時的編程接口。

      上述兩種ROS實時性解決方案都是只支持機器人本地計算節(jié)點內(nèi)部的實時性,而對分布環(huán)境下網(wǎng)絡(luò)消息的傳輸不能提供實時性保證機制。

      2 ROS消息實時性實現(xiàn)的內(nèi)核擴展

      本文在ROS Indigo版本的基礎(chǔ)上,增加消息傳輸優(yōu)先級和傳輸延遲控制、消息自動夭折機制、基于時間的過濾四個方面的實時性保證機制。為實現(xiàn)這一目的,本文對ROS內(nèi)核進行了擴展,將DDS引入到了ROS內(nèi)核中,提出了基于ROS/DDS的集成架構(gòu),進而設(shè)計實現(xiàn)了ROS中的DDS協(xié)議插件,并引入了可供上層應(yīng)用使用的實時性相關(guān)API。

      2.1 基于協(xié)議插件的ROS/DDS集成架構(gòu)

      從本文2.2.1節(jié)的分析可以看出,DDS是分布式實時消息傳遞的成熟中間件規(guī)范,在消息層面上能夠支持較為全面的實時性支持,并且相關(guān)產(chǎn)品已經(jīng)在實時嵌入式系統(tǒng)、工業(yè)控制系統(tǒng)等領(lǐng)域得到廣泛應(yīng)用。因此,本文直接選取符合DDS規(guī)范的開源實現(xiàn)OpenSplice DDS,將其集成到ROS的消息通信層中,替代已有的ROS消息通信機制,從而為ROS提供所需的消息實時性保證能力。

      如圖2所示,本文主要對ROS內(nèi)核做了如下修改:1)選取符合DDS規(guī)范的開源實現(xiàn),將之集成到ROS內(nèi)核的消息通信層,成為ROS底層的可選通信協(xié)議之一;2)將ROS應(yīng)用層的現(xiàn)有API(消息發(fā)布/訂閱等方法)映射到DDS實現(xiàn)上,使得上層應(yīng)用可以通過ROS API進行常規(guī)的消息發(fā)送和接收;3)新增實時相關(guān)的消息發(fā)布/訂閱API,并將之映射到底層DDS的實時特性。當上層應(yīng)用調(diào)用新增的實時API進行消息發(fā)送和接收時,修改后的ROS內(nèi)核將提供消息優(yōu)先級、傳輸延遲、消息自動夭折、基于時間的過濾能力等。

      為了盡可能保持ROS現(xiàn)有API的兼容性,本文主要在ROS內(nèi)核底部的消息通信層進行修改。鑒于DDS是直接面向消息發(fā)布/訂閱機制的中間件,內(nèi)部已經(jīng)封裝了連接管理、緩沖區(qū)管理等機制,因此本文采用DDS接管ROS全部的消息通信層工作的方法來實現(xiàn)機器人的消息實時性。

      2.2 DDS協(xié)議插件

      如前所述,在基于協(xié)議插件的集成架構(gòu)中,DDS協(xié)議插件將接管ROS通信層的全部工作。因此,協(xié)議插件實際上起到了在ROS消息發(fā)送和接收兩個緩沖區(qū)與OpenSplice DDS之間的橋接作用,其設(shè)計方案如圖3所示:

      圖3中,DDS協(xié)議插件的核心類是DDSBroker類和DDSListener類:前者負責完成DDS消息中間件的初始化、Topic的創(chuàng)建等管理工作,并從發(fā)送消息緩沖區(qū)中獲取ROS消息,轉(zhuǎn)換成DDS消息進行發(fā)送;后者將接收到的DDS消息解包,還原成ROS消息,將之放入到ROS的接收消息緩沖區(qū)中。此外,DDS協(xié)議插件中還包括了如下一些內(nèi)部模塊:

      ·DataWriter池,用來保存本結(jié)點所發(fā)布Topic對應(yīng)的DDS DataWriter;

      ·DataReader池,用來保存本結(jié)點所訂閱Toipc對應(yīng)的DDS DataReader;

      ·Topic映射,用來在ROS Topic和DDS Topic的語法格式之間進行轉(zhuǎn)換;

      ·消息轉(zhuǎn)換,用來在DDS和ROS消息之間進行雙向轉(zhuǎn)換;

      ·出錯處理,將DDS異常映射到ROS的錯誤處理中。

      此外,集成架構(gòu)還需要解決的另一個挑戰(zhàn)是與官方ROS版本的兼容性:當系統(tǒng)的多個結(jié)點中,部份是官方ROS版本(未集成DDS協(xié)議),部份是集成了DDS協(xié)議的版本,能否實現(xiàn)互聯(lián)互通互操作?為實現(xiàn)這一目標,本文擴展ROS中原有的協(xié)議協(xié)商機制,增加對DDS消息協(xié)議協(xié)商的支持。當兩個ROS結(jié)點之間建立連接時,將通過雙方都支持的XMLRPC協(xié)議進行協(xié)商,并優(yōu)先選擇DDS協(xié)議。如果有一方不支持DDS協(xié)議,將降級使用TCP或其它可用協(xié)議。同時,用戶也可以通過ROS應(yīng)用層API中的Transport_hint機制來指定優(yōu)先使用的底層通信協(xié)議。

      2.3 實時性相關(guān)API的添加

      修改后的ROS內(nèi)核具有消息傳輸優(yōu)先級和傳輸延遲控制、消息自動夭折機制、基于時間的過濾等實時性保證能力。這些能力是以應(yīng)用層API新增方法的形式所直觀展現(xiàn)出來的。除了所有ROS原有的API外,本文在ROS內(nèi)核中增加消息優(yōu)先級設(shè)置、預(yù)期傳輸延遲設(shè)置、自動夭折時限設(shè)置、時間過濾周期設(shè)置等API,從而使得上層應(yīng)用可以使用新增的實時性保證能力(如表l所示)。

      3 測試與實驗結(jié)果

      本節(jié)主要對修改后的ROS內(nèi)核性能和實時進行的測試,以驗證本文工作的有效性。

      3.1 實驗平臺

      本文測試實驗平臺為兩臺服務(wù)器,通過千兆帶寬交換機相連,具體配置如下:

      中央處理器:Intel Xeon E5-2403 v3 4核處理器,主頻1.8GHz。

      內(nèi)存:ECC DDR4,8Gb。

      操作系統(tǒng):Ubuntu 14.04。

      交換機:NETGEAR GS108T。

      3.2 ROS原生協(xié)議與DDS協(xié)議的對比

      首先,我們對改進后的ROS的吞吐量進行測試,并將結(jié)果與ROS的官方版本進行對比。吞吐量的測試主要分為兩個方面:

      (1)1對l測試,即1個消息發(fā)布者對1個消息訂閱者,發(fā)送的單個消息的大小從100B到50KB。測試結(jié)果如圖4 (a)所示,修改后的ROS內(nèi)核到達帶寬最大容量的速度要比ROS官方版本慢,這是因為確保消息傳輸?shù)膶崟r代碼以及網(wǎng)絡(luò)消息附加字段會帶來的一定的額外開銷。

      (2)1對n測試,即一個消息的發(fā)布者對n個消息的訂閱者(n=l、2、…、5),其中每個消息的大小為20KB。實驗結(jié)果如圖4(b)所示,當消息的訂閱者不斷增加時,可以發(fā)現(xiàn)ROS官方版本的吞吐量會急速下降,而改進后的ROS相對來說較為穩(wěn)定;并且當訂閱者的數(shù)量達到4個及以上時,改進后的ROS的吞吐量會超過ROS的官方版本。

      3.3 修改后ROS內(nèi)核的實時能力測試

      為了驗證修改后的ROS的實時性是否有效,本小節(jié)選取消息優(yōu)先級作為測試的對象。測試方法如下:為了測試出消息優(yōu)先級設(shè)定的效果,本次實驗選定了三種不同優(yōu)先級的消息(high、normal、low),分別在三個不同的話題上進行發(fā)布,每個消息的大小為SKB;消息的發(fā)布者不停的在這三個話題上發(fā)布消息,直到訂閱這三個話題的訂閱者接受到的消息達到300條。實驗結(jié)果如圖4(c)所示,可以發(fā)現(xiàn)改進后的ROS收到高優(yōu)先級的消息數(shù)為179條,收到低優(yōu)先級的消息數(shù)為l條;而ROS的官方版本接收到不同優(yōu)先級的消息的數(shù)量相同。因此,修改后的ROS能夠?qū)崟r性提供有效的支持。

      4 結(jié)束語

      本文主要針對機器人中間件ROS實時性支持不足的現(xiàn)狀,提出了“ROS+DDS”框架以此來實現(xiàn)ROS的消息實時性。具體是將OpenSplice DDS集成到ROS內(nèi)核的通信層,作為ROS底層的可選消息協(xié)議之一以此來實現(xiàn)實時性。通過實驗證明,改進后的ROS能夠?qū)崟r性提供較為有效的支持。下一步我們將繼續(xù)優(yōu)化“ROS+DDS”框架以實現(xiàn)ROS直接調(diào)用DDS的通信層進行消息的實時傳輸。

      猜你喜歡
      實時性
      基于規(guī)則實時性的端云動態(tài)分配方法研究
      基于虛擬局域網(wǎng)的智能變電站通信網(wǎng)絡(luò)實時性仿真
      航空電子AFDX與AVB傳輸實時性抗干擾對比
      淺談嵌入式系統(tǒng)的實時性問題
      卷宗(2016年11期)2017-03-24 10:40:53
      LonWorks總線實時性能分析與仿真研究
      淺析PCM設(shè)備在電力通信網(wǎng)絡(luò)中的應(yīng)用和發(fā)展
      科技資訊(2016年28期)2017-02-28 09:37:41
      計算機控制系統(tǒng)實時性的提高策略
      關(guān)于對風力送絲系統(tǒng)的智能化改造
      一種滿足實時性需求的測發(fā)控軟件改進技術(shù)
      航天控制(2016年6期)2016-07-20 10:21:36
      OpenCV在攝像機標定上的應(yīng)用
      軟件(2015年4期)2015-06-19 12:09:42
      资兴市| 堆龙德庆县| 叶城县| 大丰市| 郸城县| 嘉善县| 嘉定区| 盐源县| 韩城市| 和林格尔县| 搜索| 长汀县| 花莲市| 玉林市| 越西县| 庆云县| 长顺县| 西昌市| 蒙自县| 华宁县| 上饶县| 新野县| 布尔津县| 禹州市| 吴堡县| 左权县| 永昌县| 浮梁县| 潜江市| 隆子县| 三明市| 宁强县| 赣榆县| 开平市| 衡南县| 丰都县| 林芝县| 高州市| 沿河| 马山县| 新化县|