Using Multiple Middleware Implementations Concurrently? [ROS2]

asked 2021-07-14 16:56:15 -0500

shonigmann gravatar image

While considering the tradeoffs between different DDS vendors, and different middleware altogether, I started wondering how much room there would be to customize your system's use of different middleware's for different purposes.

I know you can set QoS settings at the publisher/subscriber/server/client level, and you can choose middleware at runtime... but could you choose middleware at the publisher/subscriber/server/client level?

Would it, for instance, be possible to use one middleware implementation for a robot's (onboard) inter/intra process communication where latency and bandwidth are less of a concern, and select a different middleware implementation for communication between different machines (e.g between a robot and a ground node with high latency or low reliability)?

If possible, what would the drawbacks be? Presumably you'll suffer a hit on the memory footprint by loading multiple middleware libraries?

I'm definitely not an expert in networking or middleware so any feedback to satisfy my curiosity would be great. Cheers!

edit retag flag offensive close merge delete

Comments

1

AFAIK, and AFAIU, right now, this is not possible. Middleware selection is through an environment variable, and the shared library which provides the RMW implementation is then loaded at process start.

Whether it could be possible is something else.

gvdhoorn gravatar image gvdhoorn  ( 2021-07-15 03:49:11 -0500 )edit

Thank you for the quick feedback

shonigmann gravatar image shonigmann  ( 2021-07-15 11:46:26 -0500 )edit