Robotics StackExchange | Archived questions

Using Multiple Middleware Implementations Concurrently? [ROS2]

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!

Asked by shonigmann on 2021-07-14 16:56:15 UTC

Comments

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.

Asked by gvdhoorn on 2021-07-15 03:49:11 UTC

Thank you for the quick feedback

Asked by shonigmann on 2021-07-15 11:46:26 UTC

Answers