Actions in ROS 2

I agree that the client state machine should be refined, if possible. I’ve found that a concise state machine, like in the Simple Action Client, is useful for writing applications on top of. Maybe we can try to reconcile the Simple Action Client and underlying Action Client state machines.

On a similar note (echoing @andreaskoepf’s last point), the possible state transitions in the server seem more complex than they need to be. This leads to concurrency issues (mentioned on the wiki). It would be nice to have a more robust, and perhaps more intuitive, state machine for the server from a user perspective.

IMO, it would be ideal for the server and client to follow the same state machine, rather than having subtle differences as in the ROS 1 documentation.