Concepts généraux¶

Regardons le système ROS d’un point de vue de très haut niveau. Pas besoin de s’inquiéter de la façon dont tout ce qui suit fonctionne, nous couvrirons cela plus tard.

ROS commence avec le ROS Master. Le maître permet à tous les autres morceaux de logiciel ROS (nœuds) de trouver et de parler entre eux.De cette façon, nous n’avons pas besoin de jamais dire spécifiquement « Envoyer ces données de capteur à cet ordinateur à 127.0.0.1.Nous pouvons simplement dire au nœud 1 d’envoyer des messages au nœud 2.

Comment les nœuds font-ils cela ? En publiant et en s’abonnant à des sujets.

Disons que nous avons une caméra sur notre Robot. Nous voulons être en mesure de voir les images de la caméra, à la fois sur le Robot lui-même, et sur un autre ordinateur portable.

Dans notre exemple, nous avons un Nœud de caméra qui s’occupe de la communication avec la caméra, un Nœud de traitement d’image sur le robot qui traite les données d’image,et un Nœud d’affichage d’image qui affiche les images sur un écran. Pour commencer, tous les nœuds se sont enregistrés auprès du maître.Pensez au maître comme à une table de consultation où tous les nœuds se rendent pour trouver où envoyer exactement les messages.

En s’enregistrant auprès du maître ROS, le nœud de caméra déclare qu’il publiera un sujet appelé /image_data (par exemple).Les deux autres nœuds enregistrent qu’ils sont abonnés au sujet /image_data.

Donc, dès que le nœud de la caméra reçoit des données de la caméra, il envoie le message /image_data directement aux deux autres nœuds. (Par le biais de ce qui est essentiellement TCP/IP)

Maintenant, vous vous dites peut-être : que faire si je veux que le nœud de traitement d’image demande des données au nœud de caméra à un moment précis ? Pour ce faire, ROS met en œuvre des services.

Un nœud peut enregistrer un service spécifique auprès du maître ROS, tout comme il enregistre ses messages.Dans l’exemple ci-dessous, le nœud de traitement d’image demande d’abord /image_data, le nœud de caméra rassemble les données de la caméra, puis envoie la réponse.