Robotics StackExchange | Archived questions

Is it possible to communicate between different ROS2 versions?

Hi,

I'm asking this question because I've made work Galactic and Galactic devices on the same subnet and ROSDOMAINID but never I've tried with Galactic and Humble on the same subnet and ROSDOMAINID.

Do you guys see any potential problem by doing that? or is it similar by doing Galactic and Galactic?

Best,

Asked by andrestoga on 2022-09-12 06:39:07 UTC

Comments

Answers

Previously, I was sure this shouldn't be a problem, but @gvdhoorn here explained that DDS implementation also matters.

A quick note:

Middleware abstraction will be the same, even if DDS implementations differ.

the abstraction perhaps, but there is currently no guarantee of cross-vendor compatibility. Cyclone DDS and Fast-DDS are known to be incompatible for instance (see ros2/rmw_cyclonedds#184).

This essentially means only Fast-DDS can be used with micro-ROS, unless the application does not use services nor actions (ie: only topics).

For the OP, this wouldn't pose a problem, as both Foxy and Humble use Fast-DDS by default. But Galactic would be incompatible, and so would anyone trying to use Cyclone DDS with micro-ROS.

@gvdhoorn

Asked by ljaniec on 2022-09-12 07:13:48 UTC

Comments

Does that mean that I need to switch from Cyclone DDS to Fast-DDS in Galactic in order to be compatible with the device running Humble with Fast-DDS?

Asked by andrestoga on 2022-09-12 07:52:57 UTC

I am afraid so, unless if your project doesn't use services or actions.

Here is a list of inter-vendor communication configurations that are not supported.

Luckily, working with multiple DDS implementations is quite simple.

Asked by ljaniec on 2022-09-12 07:57:53 UTC

Or someone could address the incompatibilities described in ros2/rmw_cyclonedds#184.

Asked by gvdhoorn on 2022-09-12 12:37:18 UTC