How is DDS implemented?

There are multiple DDS implementations supported in ROS-2 since different vendors offer different features. For instance, RTI's Connext may be specifically implemented either for microcontrollers or toward applications requiring safety certifications. In all cases, DDS is implemented through a special layer called the ROS middleware interface layer (or rmw), as shown here:

ROS-2 middleware layer

The user code is the topmost block and contains the user logic or the algorithm. In ROS-1, the user code usually sits on top of the ROS client library (such as roscpp or rospy) and these libraries help the user connect their code with other components in ROS (such as nodes, topics, or services). Unlike the ROS-client library in ROS-1, the ROS-client library in ROS-2 is split into two layers:

  • One specific to the programming language (such as rclcpp, rclpy, or rcljava) so that it can handle threading processes such as rosspin and intra-process communication like memory management
  • One common layer called rcl, implemented in C, that handles the names, services, parameters, time, and console logging

The ROS middleware layer, rmw, is also a C implementation and connects with the DDS implementations on top of the hardware layer. This layer is responsible for the service calls, node discovery, graph events, and publish/subscribe calls with Quality of Services (QoS). QoS in ROS-2 is a measure of performance across nodes in the network. By default, ROS-2 follows eProsima's Fast RTPS implementation since it is open source.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
13.59.122.162