Les services sont une autre méthode de communication pour les nœuds (les nodes).
Les services sont basés sur un modèle d'appel/réponse (client / serveur) alors que les topics sont sur un modèle de publieur et abonné (publisher / subscriber).
Alors que les topics permettent aux nœuds de s’abonner à des flux de données et de recevoir des mises à jour en continu, les services ne fournissent des données que lorsqu’ils sont explicitement appelés par un client.
Un service ROS2 est donc constitué de deux éléments :
- un serveur (service server) qui attend les requêtes ;
- un client (service client) qui envoie une demande et attend une réponse.
Le fonctionnement est comparable à :
- un navigateur web qui demande une page à un serveur ;
- ou un programme qui demande une mesure ponctuelle à un capteur.
Les services sont particulièrement adaptés :
- aux commandes ponctuelles ;
- aux demandes de configuration ;
- aux calculs à la demande ;
- aux actions immédiates.
Exemples typiques :
- demander la position actuelle d’un robot ;
- remettre un compteur à zéro ;
- activer ou désactiver un moteur ;
- demander une photographie à une caméra ;
- effectuer un calcul.
En revanche, les services ne sont pas adaptés aux données continues comme :
- les images vidéo ;
- les mesures lidar ;
- les vitesses moteur ;
- les flux de capteurs.
Dans ces cas, on utilise plutôt les topics.


- Pour lister les services:
ros2 service list
ou avec plus d'informationsros2 service type <service_name>
pour voir le type de tous les services actifs ros2 service list -t
rqt est un utilitaire très important pour observer les nodes, les topics et les services