国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

機器人中間件消息實時性保證機制的研究與實現

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

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

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

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

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

引言

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

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

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

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

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

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

1 研究背景與相關工作

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

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

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

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

1.2 相關研究工作

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

1.2.1 DDS

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

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

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

1.2.2 ROS實時性現有解決方案

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

(1)與PR2機器人實現相關的實時代碼

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

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

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

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

2 ROS消息實時性實現的內核擴展

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

2.1 基于協議插件的ROS/DDS集成架構

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

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

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

2.2 DDS協議插件

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

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

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

·DataReader池,用來保存本結點所訂閱Toipc對應的DDS DataReader;

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

·消息轉換,用來在DDS和ROS消息之間進行雙向轉換;

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

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

2.3 實時性相關API的添加

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

3 測試與實驗結果

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

3.1 實驗平臺

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

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

內存:ECC DDR4,8Gb。

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

交換機:NETGEAR GS108T。

3.2 ROS原生協議與DDS協議的對比

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

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

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

3.3 修改后ROS內核的實時能力測試

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

4 結束語

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

猜你喜歡
實時性
基于規(guī)則實時性的端云動態(tài)分配方法研究
高技術通訊(2021年3期)2021-06-09 06:57:24
基于虛擬局域網的智能變電站通信網絡實時性仿真
航空電子AFDX與AVB傳輸實時性抗干擾對比
淺談嵌入式系統(tǒng)的實時性問題
卷宗(2016年11期)2017-03-24 10:40:53
LonWorks總線實時性能分析與仿真研究
淺析PCM設備在電力通信網絡中的應用和發(fā)展
科技資訊(2016年28期)2017-02-28 09:37:41
計算機控制系統(tǒng)實時性的提高策略
關于對風力送絲系統(tǒng)的智能化改造
一種滿足實時性需求的測發(fā)控軟件改進技術
航天控制(2016年6期)2016-07-20 10:21:36
OpenCV在攝像機標定上的應用
軟件(2015年4期)2015-06-19 12:09:42
铜鼓县| 东乌珠穆沁旗| 莲花县| 旬阳县| 西畴县| 布拖县| 九江市| 金塔县| 沾化县| 徐水县| 瑞丽市| 固安县| 莱州市| 乌鲁木齐县| 卢湾区| 望城县| 永仁县| 石嘴山市| 定州市| 嘉兴市| 清水河县| 大宁县| 鹿泉市| 固安县| 囊谦县| 钟山县| 濮阳市| 木兰县| 偏关县| 民和| 大姚县| 白玉县| 喀喇沁旗| 陇川县| 沭阳县| 安康市| 包头市| 太康县| 尉犁县| 东乌| 泸州市|