Actions

Action Client

class rclpy.action.client.ActionClient(node, action_type, action_name, *, callback_group=None, goal_service_qos_profile=<rclpy.qos.QoSProfile object>, result_service_qos_profile=<rclpy.qos.QoSProfile object>, cancel_service_qos_profile=<rclpy.qos.QoSProfile object>, feedback_sub_qos_profile=<rclpy.qos.QoSProfile object>, status_sub_qos_profile=<rclpy.qos.QoSProfile object>)

ROS Action client.

Constructor.

Parameters:
  • node – The ROS node to add the action client to.
  • action_type – Type of the action.
  • action_name – Name of the action. Used as part of the underlying topic and service names.
  • callback_group – Callback group to add the action client to. If None, then the node’s default callback group is used.
  • 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_sub_qos_profile – QoS profile for the feedback subscriber.
  • status_sub_qos_profile – QoS profile for the status subscriber.
add_to_wait_set(wait_set)

Add entities to wait set.

destroy()

Destroy the underlying action client handle.

execute(taken_data)

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()

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

is_ready(wait_set)

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

send_goal(goal, **kwargs)

Send a goal and wait for the result.

Do not call this method in a callback or a deadlock may occur.

See send_goal_async() for more info about keyword arguments.

Unlike send_goal_async(), this method returns the final result of the action (not a goal handle).

Parameters:goal (action_type.Goal) – The goal request.
Returns:The result response.
Return type:action_type.Result
send_goal_async(goal, feedback_callback=None, goal_uuid=None)

Send a goal and asynchronously get the result.

The result of the returned Future is set to a ClientGoalHandle when receipt of the goal is acknowledged by an action server.

Parameters:
  • goal (action_type.Goal) – The goal request.
  • feedback_callback (function) – Callback function for feedback associated with the goal.
  • goal_uuid – Universally unique identifier for the goal. If None, then a random UUID is generated.
Type:

unique_identifier_msgs.UUID

Returns:

a Future instance to a goal handle that completes when the goal request has been accepted or rejected.

Return type:

rclpy.task.Future instance

server_is_ready()

Check if there is an action server ready to process requests from this client.

Returns:True if an action server is ready, False otherwise.
take_data()

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

wait_for_server(timeout_sec=None)

Wait for an action sever to be ready.

Returns as soon as an action server is ready for this client. :param timeout_sec: Number of seconds to wait until an action server is available.

If None, then wait indefinitely.
Returns:True if an action server is available, False if the timeout is exceeded.
class rclpy.action.client.ClientGoalHandle(action_client, goal_id, goal_response)

Goal handle for working with Action Clients.

accepted
cancel_goal()

Send a cancel request for the goal and wait for the response.

Do not call this method in a callback or a deadlock may occur.

Returns:The cancel response.
cancel_goal_async()

Asynchronous request for the goal be canceled.

Returns:a Future instance that completes when the server responds.
Return type:rclpy.task.Future instance
get_result()

Request the result for the goal and wait for the response.

Do not call this method in a callback or a deadlock may occur.

Returns:The result response.
get_result_async()

Asynchronously request the goal result.

Returns:a Future instance that completes when the result is ready.
Return type:rclpy.task.Future instance
goal_id
stamp
status

Action Server

class rclpy.action.server.ActionServer(node, action_type, action_name, execute_callback, *, callback_group=None, goal_callback=<function default_goal_callback>, handle_accepted_callback=<function default_handle_accepted_callback>, cancel_callback=<function default_cancel_callback>, goal_service_qos_profile=<rclpy.qos.QoSProfile object>, result_service_qos_profile=<rclpy.qos.QoSProfile object>, cancel_service_qos_profile=<rclpy.qos.QoSProfile object>, feedback_pub_qos_profile=<rclpy.qos.QoSProfile object>, status_pub_qos_profile=<rclpy.qos.QoSProfile object>, result_timeout=900)

ROS Action server.

Constructor.

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.
add_to_wait_set(wait_set)

Add entities to wait set.

destroy()

Destroy the underlying action server handle.

execute(taken_data)

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()

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

is_ready(wait_set)

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

notify_execute(goal_handle, execute_callback)
notify_goal_done()
register_cancel_callback(cancel_callback)

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)

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)

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)

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()

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

class rclpy.action.server.CancelResponse

Possible cancel responses.

ACCEPT = 2
REJECT = 1
class rclpy.action.server.GoalEvent

Goal events that cause state transitions.

CANCEL = 2
EXECUTE = 1
SET_ABORTED = 4
SET_CANCELED = 5
SET_SUCCEEDED = 3
class rclpy.action.server.GoalResponse

Possible goal responses.

ACCEPT = 2
REJECT = 1
class rclpy.action.server.ServerGoalHandle(action_server, goal_info, goal_request)

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 original goal request message from an ActionClient.
destroy()
execute(execute_callback=None)
goal_id
is_active
is_cancel_requested
publish_feedback(feedback_msg)
request
set_aborted()
set_canceled()
set_succeeded()
status
rclpy.action.server.default_cancel_callback(cancel_request)

No cancellations.

rclpy.action.server.default_goal_callback(goal_request)

Accept all goals.

rclpy.action.server.default_handle_accepted_callback(goal_handle)

Execute the goal.