RMW layer for Eclipse Cyclone DDS

update: Eclipse Cyclone DDS has been refactored to build easily with ROS 2 using colcon. Drop it in and build it, try it and give feedback. We really like GitHub issues😁 rmw_cyclonedds is being contributed in ROS 2 Eloquent.

tip: if your wifi has problems with multicast, then configuring DDS to use multicast only for discovery (SPDP - Simple Endpoint Discovery Protocol) can fix that

<AllowMulticast>spdp</AllowMulticast>

cyclonedds autodetects wifi and self-configures for SPDP

excerpted from another thread, @eboasson says: Eclipse Cyclone DDS today gives you a pretty decent small message latency over loopback on 8 year old 3.5GHz Xeon E3-1270 running Ubuntu 16 … you see it comes out rather well for the small ones, even though it uses the loopback interface, and fares not so badly against the latencies mentioned earlier using a shared memory transport for the large ones.

size       latency [0]
(bytes!)   (microseconds)
-------------------------
      4 [1]     10
     16         11
    128         11
   1024         13
   4096         16 [2]
  16384         28
  32768         44
  60000         67
 100000        103
 200000        202
 500000        473
1000000       1088

[0] median latency as measured by doing round-trips as fast as possible and halving the measured round-trip time, using reliable communications …
[1] keyless topic of one int32_t, the others have an int32_t key field
(always set to 0) and an octet sequence;
[2] this is with a fragmenting threshold set large enough to not fragment the ones that fit in a single UDP datagram; with the default setting the numbers are worse.

2 Likes