DDS, an intro

DDS is a real-time, embedded “data-centric” pub-sub communication framework. It has a long history and is very well described. Although many documentation shows the area when it is described (a bit old-school). However, it is very alive!

A big benefits of DDS: It is truly distributed

  • It has no central server
  • This makes it robust;
  • There is no single-point-failure

A drawback of DDS: it has a steep learning curve

  • It has many, advances features
  • It is simple to use; after one grasp the concepts
  • These DDS-Demonstrators will help to understand & use DDS

The “DDS-stack” is independent of the platform (hardware & OS), the used programming language, and the supplier! Unlike many other protocol, both the “wire-protocol” and the “API” are standardized. This should make it possible to “plug and play” several implementations - at least on paper. Part of this program is to play and experiment with those promises; as well as with other features [1].

DDS is implemented by several suppliers and comes in multiple packages. There are also some ‘open’ or ‘community’ editions. Given the goal of the DDS-Demonstrators, we will restrict ourselves to open-source implementations.(e.g. CycloneDDS and eProsima Fast RTPS).
We focus on CycloneDDS, an Eclipse-Foundation project [2]. And will add eProsima Fast RTPS, as we expect it may be smaller, more suitable for really small embedded systems. Again, we have to experiment with that [3].

More info

Footnotes

[1]We already have some indications this is different in practice. By example: a least one (working) python-binding is only able to talks to nodes with the same python-binding. More on that later.
[2]Which is a quite trivial selection method. We also like it has Dutch roots (like DDS itself).
[3]We also like eProsima Fast RTPS as it be used in ROS (Robot Operating System); which we also use.