As users of ROS 2, and probably anyone else who’s considered trying it out, are aware, ROS 2 doesn’t yet have an implementation for actions.
There have been some sporadic efforts to rectify this situation, and we are now at the point where several of us are actively moving forward to design and implement ROS 2 actions, and Open Robotics has scheduled a few developers to work on actions for the Crystal release.
There is a pull request here for an actions design document, but it needs a lot of work. There is also an experimental implementation done by @mkhansen of Intel to hash out some ideas and support their navstack2 work.
Some of our goals are:
- Make actions a first-class citizen in ROS 2, the same as topics and servers, rather than as a separate library.
- Implement actions in
rclso that all other client libraries (C++, Python, Ada, …) can get actions with exactly the same behaviour without needing to reimplement them.
- Allow introspection and interaction with actions from the command line via a
ros2 actioncommand. As a side effect, make sure actions don’t pollute the output of
- Improve the actions API over ROS 1, where such improvements are needed.
- Improve the actions state machine if necessary.
- Take advantage of any DDS features that can improve actions, whatever they may be.
What we need to know from you is, how well do actions work for you in ROS 1? What do you like and what do you hate? What would you change and what do you think must stay the same?
And of course please feel free to comment on or add to the design document or try out implementation ideas!