ROS2 and DDS
22 August 2021
[ C++ , robotics ]

What is ROS2 ?

ROS2 (Robot Operating System 2) is an open-source software development kit for robotics applications . ROS2 provides the robotics tools, libraries, and capabilities that developers need to develop their applications, allowing them to spend their time on the work that is important for their business . ROS2 is designed to be modular, scalable, and reliable, with an emphasis on decentralized communication . ROS2 is built on top of DDS (Data Distribution Service), which provides data connectivity, extreme reliability, and a publish-subscribe pattern for sending and receiving data, events, and commands among the nodes

ROS2 is a robotics middleware that provides a framework for building distributed robotic systems. The architecture of ROS2 consists of several important abstraction layers distributed across many components. ROS2 uses DDS (Data Distribution Service) as its middleware, which reduces coupling, increases scalability, and improves performance, reliability, security, and flexibility. DDS is responsible for discovery, publish and subscribe mechanics, request-reply mechanics for services, and serialization of message types

The ROS2 architecture is designed to be modular, scalable, and reliable, with an emphasis on decentralized communication. ROS2 is designed to meet the challenges set forth by modern robotic systems in new and exploratory domains at all scales. The ROS2 architecture includes the following main components:

  • ROS 2 Client Libraries: The ROS 2 Client Libraries provide the API for interacting with ROS 2. The client libraries are available in several programming languages, including C++, Python, and others.

  • ROS 2 Middleware: The ROS 2 Middleware provides the communication layer between ROS 2 nodes. DDS is the default middleware used in ROS 2, but other middleware can be used as well.

  • ROS 2 Tools: The ROS 2 Tools provide a set of command-line tools for working with ROS 2, including tools for building, running, and debugging ROS 2 applications.

  • ROS 2 Build System: The ROS 2 Build System provides a set of tools for building ROS 2 applications, including support for CMake and other build systems.

  • ROS 2 Quality of Service (QoS): The ROS 2 Quality of Service (QoS) settings allow users to configure the reliability, durability, and other properties of ROS 2 communication

What is DDS (Data Distribution Service)

DDS (Data Distribution Service) is a middleware protocol and API standard that provides data connectivity, extreme reliability, and a publish-subscribe pattern for sending and receiving data, events, and commands among the nodes . DDS is a networking middleware that simplifies complex network programming and allows the user to specify quality of service (QoS) parameters to configure discovery and behavior mechanisms up-front . DDS implements a publish-subscribe pattern for sending and receiving data, events, and commands among the nodes . Nodes that produce information (publishers) create “topics” (e.g., temperature, location, pressure) and publish “samples”. DDS delivers the samples to subscribers that declare an interest in that topic . DDS allows the user to specify quality of service (QoS) parameters to configure discovery and behavior mechanisms up-front . DDS simplifies distributed applications and encourages modular, well-structured programs . DDS also automatically handles hot-swapping redundant publishers if the primary fails . Subscribers always get the sample with the highest priority whose data is still valid

DDS is designed to scale up and down, allowing deployments that range from resource-constrained embedded systems to large-scale systems-of-systems . DDS is designed to meet the challenges set forth by modern robotic systems in new and exploratory domains at all scales . DDS is the most advanced data distribution technology and is a key building-block for many existing and upcoming systems-of-systems . DDS is used in all classes of critical applications to implement a reliable communication layer between sensors, controllers, and actuators . DDS is used in various industries, including finance, air traffic control, defense, aerospace, smart grids, and complex supervisory and telemetry systems . In summary, DDS is a middleware protocol and API standard that provides data connectivity, extreme reliability, and a publish-subscribe pattern for sending and receiving data, events, and commands among the nodes. DDS is designed to meet the challenges set forth by modern robotic systems in new and exploratory domains at all scales. DDS is used in various industries, including finance, air traffic control, defense, aerospace, smart grids, and complex supervisory and telemetry systems. DDS simplifies distributed applications and encourages modular, well-structured programs.

References

  1. https://www.science.org/doi/10.1126/scirobotics.abm6074
  2. https://community.rti.com/ros
  3. https://en.wikipedia.org/wiki/Data_Distribution_Service
  4. https://www.rti.com/products/dds-standard