xxxxxxxxxx
// importazione di un servizio custom
#include <package_name/service_name.h>
// da questo momento hai accesso a 3 elementi nello stesso namespace:
// namespace package_name::service_name
// package_name::service_name::Request
// package_name::service_name::Response
// === CLIENT === //
// "bare" calling
// ros::service è un namespace
ros::service::call( "service_name", msg_instance )
// error handling in questo caso:
if( ros::service::call( "service_name", msg_instance ) ) { /*andata bene*/ }
// call usando un handle
ros::ServiceClient cl;
cl = nh.serviceClient<type>( "service" );
// il messaggio viene passato per reference
if( cl.call( service_request ) ) { /*tutto a posto*/ }
// attendere il servizio
cl.waitForExistence( ); // : bool
// default: attesa ad libitum
// con timeout
ros::Duration( 5.00 );
cl.waitForExistence( ros::Duration( 5.00 ) ); // : bool
// controlla se il servizio è stato istanziato correttamente
cl.exists( ); // : bool