- ROS機器人項目開發11例(原書第2版)
- (印)拉姆庫瑪·甘地那坦 郎坦·約瑟夫
- 440字
- 2021-01-26 17:17:30
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是開源的。