This is a short summary of what we discussed today:
We need to add an API to extract timers (and maybe other ROS 2 entities) from a Waitable, to allow the Events Executor to correctly register its callbacks.
We noted that currently all executors assume that Waitables entities are “fixed” although the API nor the docs mention it. We should add a disclaimer in the docs and be clear that a “dynamic” waitable is not supported.
A long discussion around improvements of ROS IDL. One of the main use-cases is the ability to define parameters that contain array of types, for example currently you can’t easily have an array of poses as a parameter and you need to either have a flat representation or give a different name to each pose (parameters prefix) and then rework them in C++.
There are several issues related to this, for example the possibility of nested and recursive types in ROS IDL.
Recursion is problematic as some applications need to pre-allocate message buffers or may want to bound them to achieve zero-copy shared memory. Recursion would make these use-cases more difficult, but definitely not impossible.
Parameters values could be “binary blobs” that get de-serialized using the standard ROSIDL tools on the receiving side.
A problem here is that the serialization protocol depends on the RMW selected, so things like replaying a bag may not work if you move between RMWs with different serialization protocols.
We don’t want to introduce yet another serialization protocol, because this would become a dependency of everything in ROS.
We could use a YAML or JSON string that gets parsed.
I’m in the process of making the working group “official” under the new ROS governance (OSRA and PMC).
Among the necessary work, I’ll definitely make sure to use a dedicated and common place for the meeting notes.