ROS Concurrency

ROS Concurrency

I still have a little trouble understanding how ROS Concurrency works.

I understand that:

  • You can use a MultithreadedExecutor (see ROS Executor) where you can add nodes to the executor, and multithread them
  • The callbacks are by default ran in sequential order (since they are all in a default mutex callback group, see ROS Callback Group). This out of the box prevents dataraces when multiple callbacks are triggered. However, it seems to be within the same node

I don’t understand how the publisher and subscriber are linked. Because there is some sort of queue used under the hood right. I get that if it is Inter-process comms, the DDS is involved which will copy the necessary data.

But in intra-process comms, how does it work? See ROS Intra-Process Communication.