rclpy.action.server module

class rclpy.action.server.ActionServer(node: Node, action_type: ~typing.Type[~rclpy.type_support.Action[~rclpy.type_support.GoalT, ~rclpy.type_support.ResultT, ~rclpy.type_support.FeedbackT]], action_name: str, execute_callback: ~typing.Callable[[~rclpy.action.server.ServerGoalHandle[~rclpy.type_support.GoalT, ~rclpy.type_support.ResultT, ~rclpy.type_support.FeedbackT]], ~rclpy.type_support.ResultT], *, callback_group: Optional[CallbackGroup] = None, goal_callback: ~typing.Callable[[action_msgs.srv._cancel_goal.CancelGoal.Request], ~rclpy.action.server.GoalResponse] = <function default_goal_callback>, handle_accepted_callback: ~typing.Callable[[~rclpy.action.server.ServerGoalHandle[~rclpy.type_support.GoalT, ~rclpy.type_support.ResultT, ~rclpy.type_support.FeedbackT]], None] = <function default_handle_accepted_callback>, cancel_callback: ~typing.Callable[[action_msgs.srv._cancel_goal.CancelGoal.Request], ~rclpy.action.server.CancelResponse] = <function default_cancel_callback>, goal_service_qos_profile: rclpy.qos.QoSProfile = rclpy.qos.qos_profile_services_default, result_service_qos_profile: rclpy.qos.QoSProfile = rclpy.qos.qos_profile_services_default, cancel_service_qos_profile: rclpy.qos.QoSProfile = rclpy.qos.qos_profile_services_default, feedback_pub_qos_profile: rclpy.qos.QoSProfile = rclpy.qos.QoSProfile, status_pub_qos_profile: rclpy.qos.QoSProfile = rclpy.qos.qos_profile_action_status_default, result_timeout: int = 10)

Bases: Generic[GoalT, ResultT, FeedbackT], Waitable[ServerGoalHandleDict[GoalT]]

ROS Action server.

Create an ActionServer.

Parameters:
  • node – The ROS node to add the action server to.

  • action_type – Type of the action.

  • action_name – Name of the action. Used as part of the underlying topic and service names.

  • execute_callback – Callback function for processing accepted goals. This is called if when ServerGoalHandle.execute() is called for a goal handle that is being tracked by this action server.

  • callback_group – Callback group to add the action server to. If None, then the node’s default callback group is used.

  • goal_callback – Callback function for handling new goal requests.

  • handle_accepted_callback – Callback function for handling newly accepted goals. Passes an instance of ServerGoalHandle as an argument.

  • cancel_callback – Callback function for handling cancel requests.

  • goal_service_qos_profile – QoS profile for the goal service.

  • result_service_qos_profile – QoS profile for the result service.

  • cancel_service_qos_profile – QoS profile for the cancel service.

  • feedback_pub_qos_profile – QoS profile for the feedback publisher.

  • status_pub_qos_profile – QoS profile for the status publisher.

  • result_timeout – How long in seconds a result is kept by the server after a goal reaches a terminal state.

property action_type: Type[Action[GoalT, ResultT, FeedbackT]]
add_to_wait_set(wait_set: rpyutils.import_c_library.WaitSet) None

Add entities to wait set.

destroy() None

Destroy the underlying action server handle.

async execute(taken_data: ServerGoalHandleDict[GoalT]) None

Execute work after data has been taken from a ready wait set.

This will set results for Future objects for any received service responses and call any user-defined callbacks (e.g. feedback).

get_num_entities() NumberOfEntities

Return number of each type of entity used in the wait set.

is_ready(wait_set: rpyutils.import_c_library.WaitSet) bool

Return True if one or more entities are ready in the wait set.

notify_execute(goal_handle: ServerGoalHandle[GoalT, ResultT, FeedbackT], execute_callback: Callable[[ServerGoalHandle[GoalT, ResultT, FeedbackT]], ResultT] | None) None
notify_goal_done() None
register_cancel_callback(cancel_callback: Callable[[action_msgs.srv._cancel_goal.CancelGoal.Request], CancelResponse] | None) None

Register a callback for handling cancel requests.

The purpose of the cancel callback is to decide if a request to cancel an on-going (or queued) goal should be accepted or rejected. The callback should take one parameter containing the cancel request and must return a CancelResponse value.

There can only be one cancel callback per ActionServer, therefore calling this function will replace any previously registered callback.

Parameters:

cancel_callback – Callback function, if None, then unregisters any previously registered callback.

register_execute_callback(execute_callback: Callable[[ServerGoalHandle[GoalT, ResultT, FeedbackT]], ResultT]) None

Register a callback for executing action goals.

The purpose of the execute callback is to execute the action goal and return a result when finished.

The callback should take one parameter containing goal request and must return a result instance (i.e. action_type.Result).

There can only be one execute callback per ActionServer, therefore calling this function will replace any previously registered callback.

Parameters:

execute_callback – Callback function. Must not be None.

register_goal_callback(goal_callback: Callable[[SendGoalServiceRequest[GoalT]], GoalResponse] | None) None

Register a callback for handling new goal requests.

The purpose of the goal callback is to decide if a new goal should be accepted or rejected. The callback should take the goal request message as a parameter and must return a GoalResponse value.

There can only be one goal callback per ActionServer, therefore calling this function will replace any previously registered callback.

Parameters:

goal_callback – Callback function, if None, then unregisters any previously registered callback.

register_handle_accepted_callback(handle_accepted_callback: Callable[[ServerGoalHandle[GoalT, ResultT, FeedbackT]], None] | None) None

Register a callback for handling newly accepted goals.

The provided function is called whenever a new goal has been accepted by this action server. The function should expect an instance of ServerGoalHandle as an argument, which represents a handle to the goal that was accepted. The goal handle can be used to interact with the goal, e.g. publish feedback, update the status, or execute a deferred goal.

There can only be one handle accepted callback per ActionServer, therefore calling this function will replace any previously registered callback.

Parameters:

goal_callback – Callback function, if None, then unregisters any previously registered callback.

take_data() ServerGoalHandleDict[GoalT]

Take stuff from lower level so the wait set doesn’t immediately wake again.

class rclpy.action.server.CancelResponse(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

Bases: Enum

Possible cancel responses.

ACCEPT = 2
REJECT = 1
class rclpy.action.server.GoalResponse(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

Bases: Enum

Possible goal responses.

ACCEPT = 2
REJECT = 1
class rclpy.action.server.ServerGoalHandle(action_server: ActionServer[GoalT, ResultT, FeedbackT], goal_info: action_msgs.msg.GoalInfo, goal_request: GoalT)

Bases: Generic[GoalT, ResultT, FeedbackT]

Goal handle for working with Action Servers.

Accept a new goal with the given action server.

Instances of this class should only be constructed in the ActionServer class. Instances for accepted goals will be passed to the user-defined goal execution functions.

If the goal fails to be accepted, then a RuntimeError is raised.

Parameters:
  • action_server – The ActionServer to accept the goal.

  • goal_info – GoalInfo message.

  • goal_request – The user defined goal request message from an ActionClient.

abort() None
canceled() None
destroy() None
execute(execute_callback: Callable[[ServerGoalHandle[GoalT, ResultT, FeedbackT]], ResultT] | None = None) None
property goal_id: unique_identifier_msgs.msg.UUID
property is_active: bool
property is_cancel_requested: bool
publish_feedback(feedback: FeedbackMessage[FeedbackT]) None
property request: GoalT
property status: int
succeed() None
rclpy.action.server.default_cancel_callback(cancel_request: action_msgs.srv._cancel_goal.CancelGoal.Request) Literal[CancelResponse.REJECT]

No cancellations.

rclpy.action.server.default_goal_callback(goal_request: SendGoalServiceRequest[Any]) Literal[GoalResponse.ACCEPT]

Accept all goals.

rclpy.action.server.default_handle_accepted_callback(goal_handle: ServerGoalHandle[Any, Any, Any]) None

Execute the goal.