ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

I find the notion of action server "limited" to one goal rather restrictive... Is it possible to have a process with more than one action server?

There is a difference between limitation to one goal and limitation to one action server.

  • There is no limit to how many action servers a node can have. It is perfectly possible to have one ROS node with multiple action servers; just pass them different topic names on creation.
  • Each SimpleActionServer is limited to one goal; whenever there is a new incoming goal, the currently pending goal is cancelled. This behaviour is a simplification of the actionlib API which catches most use cases.
  • If you want to have a more sophisticated handling of goals, you are free to do so using the actionlib API directly (without the SimpleActionServer). You could have multiple goals executing in parallel, queue goals, and generally do whatever you want.

Just a side remark: if you have separate functionalities which you would ordinarily implement as separate ROS nodes, but which have to run in the same process for technical reasons, you could consider implementing them as nodelets.