Services

Client

class rclpy.client.Client(context, client_handle, srv_type, srv_name, qos_profile, callback_group)

Create a container for a ROS service client.

Warning

Users should not create a service client with this constuctor, instead they should call Node.create_client().

Parameters:
  • context (Context) – The context associated with the service client.
  • client_handleHandle wrapping the underlying rcl_client_t object.
  • srv_type (~SrvType) – The service type.
  • srv_name (str) – The name of the service.
  • qos_profile (QoSProfile) – The quality of service profile to apply the service client.
  • callback_group (CallbackGroup) – The callback group for the service client. If None, then the nodes default callback group is used.
call(request)

Make a service request and wait for the result.

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

Parameters:request (~SrvTypeRequest) – The service request.
Return type:~SrvTypeResponse
Returns:The service response.
Raises:TypeError if the type of the passed request isn’t an instance of the Request type of the provided service when the client was constructed.
call_async(request)

Make a service request and asyncronously get the result.

Parameters:request (~SrvTypeRequest) – The service request.
Return type:Future
Returns:A future that completes when the request does.
Raises:TypeError if the type of the passed request isn’t an instance of the Request type of the provided service when the client was constructed.
destroy()
handle
remove_pending_request(future)

Remove a future from the list of pending requests.

This prevents a future from receiving a response and executing its done callbacks.

Parameters:future (Future) – A future returned from call_async()
Return type:None
service_is_ready()

Check if there is a service server ready.

Return type:bool
Returns:True if a server is ready, False otherwise.
wait_for_service(timeout_sec=None)

Wait for a service server to become ready.

Returns as soon as a server becomes ready or if the timeout expires.

Parameters:timeout_sec (Optional[float]) – Seconds to wait. If None, then wait forever.
Return type:bool
Returns:True if server became ready while waiting or False on a timeout.

Service

class rclpy.service.Service(service_handle, srv_type, srv_name, callback, callback_group, qos_profile)

Create a container for a ROS service server.

Warning

Users should not create a service server with this constuctor, instead they should call Node.create_service().

Parameters:
  • context – The context associated with the service server.
  • service_handle – Capsule pointing to the underlying rcl_service_t object.
  • srv_type (~SrvType) – The service type.
  • srv_name (str) – The name of the service.
  • callback_group (CallbackGroup) – The callback group for the service server. If None, then the nodes default callback group is used.
  • qos_profile (QoSProfile) – The quality of service profile to apply the service server.
destroy()
handle
send_response(response, header)

Send a service response.

Parameters:
  • response (~SrvTypeResponse) – The service response.
  • header – Capsule pointing to the service header from the original request.
Raises:

TypeError if the type of the passed response isn’t an instance of the Response type of the provided service when the service was constructed.

Return type:

None