Hello everyone!
I’m excited to finally ask folks for comments on a REP that myself and several others have been working on for more than a year.
REP-2011 is all about how to handle messages (and services and actions) which change over time.
I’m sure than many of you have encountered the need change a message in your project from time to time, and it is the same in the core of ROS.
Though uncommon, changing message types can be very disruptive.
The hope is that these new tools will make it easier to handle evolving types over time, both in ROS 2 core itself and in your projects.
This REP proposes some new tools we can build to help:
- detect when types have changed
- empower the user to describe how to handle conversions between versions of messages
- actually do the conversions when necessary
The REP also describes the changes we need to make to ROS 2 in order to support these new tools, including:
- a way to track the version of messages and warn when they do not match
- a way to get the description of a type from remote nodes
- a way to create publishers and subscriptions (and interpret the messages you receive) with only the description of the type at run-time
Some of these features are also useful in other tools like ros2 topic or ros2 bag and others.
The REP is not completely finished yet, and is not ready for voting on, but the core ideas are developed enough to solicit feedback from the community and for us to start the reference implementation of the various parts.
So please take a look:
https://github.com/ros-infrastructure/rep/pull/358
And leave any feedback you like, and we’ll get to it as soon as we can.
Also, we have a ROSCon talk accepted for the upcoming event in Kyoto, so watch there for more details.
Thanks to @methylDragon, @tanyouliang, and the folks at Apex.AI who have helped out on the REP!