[ros-users] [Discourse.ros.org] [Next Generation ROS] Ros2 and DDS messaging

Andreas Köpf ros.discourse at gmail.com
Sat Mar 25 19:19:03 UTC 2017

After reading more of the ROS2 design documents some points become clearer to me.
Please correct me if I got something wrong:

- ROS2 only uses a subset of the DDS functionality while hiding all of the middleware implementation details (e.g. IDL definitions) to the package author (who creates ROS specific msg, srv files etc.).
- The protocols on top of DDS used by ROS2 for services and actions (preemptable serices) are ROS specific.
- It was decided to completely hide the fact that DDS is used in order to keep the way open for non-DDS middleware implementations.
- Non-ROS DDS nodes could subscribe to ROS2 nodes but the other way round is only possilbe if the DDS node would restrict itself to the ROS2 compatible feature/type subset and adhere to the ROS2 naming-rules.
- All ROS2 messages are effectively serialized twice. First from language specific ROS2 message classes to a representation that can be processed by the selected DDS middleware library and then from the DDS library to a format that goes over the wire.
- Interop with non-ROS DDS nodes was not the driving factor for the ROS2 design. Relevant points for the choice of DDS were standardization, stability, security, professional impls etc.

So it seems the DDS<->ROS2 interop is mostly a one-way thing by design, e.g. it is not possible to access all DDS featues via the ROS2 API. A ROS2 node that had to communicated with DDS nodes usind complex IDL definitions had to interact with a concrete DDS implementation beside of the ROS libs (middleware implementation specific).

[Visit Topic](https://discourse.ros.org/t/ros2-and-dds-messaging/1556/6) or reply to this email to respond.

More information about the ros-users mailing list