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.

async 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

Raises

TypeError if the type of the passed goal isn’t an instance of the Goal type of the provided action when the service was constructed.

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

Raises

TypeError if the type of the passed goal isn’t an instance of the Goal type of the provided action when the service was constructed.

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.

property 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

property goal_id
property stamp
property 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.

property action_type
add_to_wait_set(wait_set)

Add entities to wait set.

destroy()

Destroy the underlying action server handle.

async 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.

ABORT = 4
CANCELED = 5
CANCEL_GOAL = 2
EXECUTE = 1
SUCCEED = 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 user defined goal request message from an ActionClient.

abort()
canceled()
destroy()
execute(execute_callback=None)
property goal_id
property is_active
property is_cancel_requested
publish_feedback(feedback)
property request
property status
succeed()
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.