Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

ROS2, Micro-ROS & intra-process

Dear (Micro-)ROS developers,

From an applied research point of view, we are interested in understanding to what extent we will be able to use ROS2 inside a machine control environment. Based on current positioning and experience with DDS and ROS2, we seem to reach the limits once the realtime needs exceed the boundaries of a single Node.

The multi-priority initiative of Micro-ROS and the focus on intra-process & RT optimizations in the mainstream ROS2 seem promising to us, so we would like to follow-up on this. Unfortunately, when reading the documentation and posts, I get somewhat confused about how you plan to realize the realtime aspects of communication. Some fragments of what I've been reading from different sources:

  • From Micro-ROS: Multiple executors could be hosted in the same process/node, each having their own queue for messages (or in fact their handlers) of the corresponding priority (based on their handlers' callbackgroup priority).

  • From ROS2 info: ROS2 does not create its own queuing mechanism, but instead relies on the queues already available in the DDS middleware.

  • From ROS2: use_intra_process_comms() … if true, messages will go through a special intra-process communication code path. So I guess, excluding DDS. Then how will they get queued / priority managed?

  • (RTI) DDS has a Transport_Priority_QoS defined per DataWriter, which is then to be kept in sync with the cbGroup priority?

No need to answer the individual questions/observations above, since they originate from my confusion around the topic or misinterpretation of available info.

Questions:

  • It would be helpful though, to have a realtime/intraprocess design document giving an overview of the current vision. Is that available?

  • Is there a clear timeline/plan that you are adhering to for this RT-evolution?