官术网_书友最值得收藏!

2.3.2 DDS的實現

由于不同的DDS供應商提供具有不同功能的DDS實現,因此ROS-2支持多種DDS實現。例如,RTI的Connext是專門用于微控制器或需要安全認證的應用程序的DDS實現。所有的DDS實現都是通過一個稱為ROS中間件層(rmw)的特殊層實現的,如圖2.3所示。

圖2.3 ROS-2中間件層

用戶代碼是最上面的塊,包含用戶邏輯或算法。在ROS-1中,用戶代碼通常位于ROS客戶端庫(如roscpp或rospy)的頂部,這些庫幫助用戶將其代碼與ROS中的其他組件(如節點、話題或服務)連接起來。與ROS-1中的ROS客戶端庫不同,ROS-2中的ROS客戶端庫分為兩層:

·一是對應于特定編程語言客戶端庫(如rclcpp、rclpy或rcljava)的功能層,用于處理諸如rosspin之類的線程處理和諸如內存管理之類的進程內通信。

·二是名為rcl的公共層,用C語言實現,用來處理名稱、服務、參數、時間和控制臺日志記錄。

ROS中間件層rmw也是用C語言實現的,它與位于硬件層頂部的DDS實現相連接。該層負責服務調用、節點發現、圖形事件和具有服務質量(Quality of Services,QoS)的發布/訂閱調用。ROS-2中的QoS是網絡中跨節點性能的度量。默認情況下,ROS-2遵循eProsima的快速RTPS實現,因為快速RTPS是開源的。

主站蜘蛛池模板: 若羌县| 张家川| 祁阳县| 奉节县| 佛冈县| 墨脱县| 且末县| 盘山县| 嵊泗县| 堆龙德庆县| 新乡市| 郓城县| 霍邱县| 三穗县| 仙居县| 新乡县| 如皋市| 海宁市| 卢湾区| 乌兰浩特市| 广昌县| 临猗县| 齐齐哈尔市| 玉田县| 崇明县| 卓资县| 峨山| 蒙自县| 夏津县| 获嘉县| 赤城县| 大厂| 麦盖提县| 布拖县| 瑞金市| 郯城县| 安远县| 本溪| 南召县| 宁晋县| 大关县|