When exploring options for the next generation communication system of ROS, the initial options were to either improve the ROS 1.x transport or build a new middleware using component libraries such as ZeroMQ, Protocol Buffers, and zeroconf (Bonjour/Avahi). However, in addition to those options, which both involved us building a middleware from parts or scratch, other end-to-end middlewares were considered. During our research, one middleware that stood out was DDS.

DDS is the new communication system middleware layer for ROS 2. DDS provides a publish-subscribe transport which is very similar to ROS’s publish-subscribe transport. It uses the “Interface Description Language (IDL)” as defined by the Object Management Group (OMG) for message definition and serialization.

The default discovery system provided by DDS, which is required to use DDS’s publish-subscribe transport, is a distributed discovery system. This allows any two DDS programs to communicate without the need for a tool like the ROS master. This makes the system more fault tolerant and flexible. It is not required to use the dynamic discovery mechanism, however, as multiple DDS vendors provide options for static discovery.

DDS has an extensive list of varied installations which are typically mission critical. DDS has been used in: