Notions

Les aperçus conceptuels fournissent des informations générales de niveau relativement élevé sur les principaux aspects du ROS 2.

Les Core Stack Developer Concepts sont des articles conceptuels beaucoup plus détaillés destinés aux développeurs qui envisagent de modifier ou de contribuer au noyau ROS 2 :

Aperçu rapide des concepts de ROS 2

ROS 2 est un middleware basé sur un mécanisme de publication/abonnement anonyme qui permet la transmission de messages entre différents processus ROS.

Au cœur de tout système ROS 2 se trouve le graphe ROS. Le graphe ROS fait référence au réseau de nœuds dans un système ROS et aux connexions entre eux par lesquelles ils communiquent.

Concepts graphiques

  • Nœuds : un nœud est une entité qui utilise ROS pour communiquer avec d’autres nœuds.

  • Messages : type de données ROS utilisé lors de l’abonnement ou de la publication d’un sujet.

  • Sujets : les nœuds peuvent publier des messages dans un sujet et s’abonner à un sujet pour recevoir des messages.

  • Découverte : Le processus automatique par lequel les nœuds déterminent comment se parler.

Nœuds

Un nœud est un participant au graphe ROS. Les nœuds ROS utilisent une bibliothèque cliente ROS pour communiquer avec d’autres nœuds. Les nœuds peuvent publier ou s’abonner à des sujets. Les nœuds peuvent également fournir ou utiliser des services et des actions. Il existe des paramètres configurables associés à un nœud. Les connexions entre les nœuds sont établies via un processus de découverte distribué. Les nœuds peuvent être situés dans le même processus, dans différents processus ou sur différentes machines. Ces concepts seront décrits plus en détail dans les sections qui suivent.

Bibliothèques clientes

Les bibliothèques clientes ROS permettent aux nœuds écrits dans différents langages de programmation de communiquer. Il existe une bibliothèque cliente ROS principale (RCL) qui implémente les fonctionnalités communes nécessaires pour les API ROS de différentes langues. Cela rend les bibliothèques clientes spécifiques à un langage plus faciles à écrire et leur comportement est plus cohérent.

Les bibliothèques clientes suivantes sont gérées par l’équipe ROS 2 :

  • rclcpp = bibliothèque cliente C++

  • rclpy = bibliothèque cliente Python

De plus, d’autres bibliothèques clientes ont été développées par la communauté ROS. Voir l’article ROS 2 Client Libraries pour plus de détails.

Découverte

La découverte des nœuds se produit automatiquement via le middleware sous-jacent de ROS 2. Elle peut être résumée comme suit :

  1. Lorsqu’un nœud est démarré, il annonce sa présence aux autres nœuds du réseau avec le même domaine ROS (défini avec la variable d’environnement ROS_DOMAIN_ID). Les nœuds répondent à cette annonce avec des informations sur eux-mêmes afin que les connexions appropriées puissent être établies et que les nœuds puissent communiquer.

  2. Les nœuds annoncent périodiquement leur présence afin que des connexions puissent être établies avec de nouvelles entités, même après la période de découverte initiale.

  3. Les nœuds s’annoncent auprès d’autres nœuds lorsqu’ils se déconnectent.

Les nœuds n’établiront des connexions avec d’autres nœuds que s’ils ont des paramètres compatibles Quality of Service.

Prenez la démo talker-listener par exemple. L’exécution du nœud locuteur C++ dans un terminal publiera des messages sur un sujet, et le nœud d’écoute Python s’exécutant dans un autre terminal s’abonnera aux messages sur le même sujet.

Vous devriez voir que ces nœuds se découvrent automatiquement et commencent à échanger des messages.

Sécurité

ROS 2 inclut la capacité de sécuriser les communications entre les nœuds dans le graphe de calcul ROS 2. Semblable à la découverte, la sécurité passe par le middleware ROS 2 sous-jacent (à condition qu’il prenne en charge les plugins de sécurité correspondants). Aucune installation de logiciel supplémentaire n’est nécessaire pour activer la sécurité ; cependant, le middleware nécessite des fichiers de configuration pour chaque participant du graphe ROS. Ces fichiers permettent le chiffrement et l’authentification, et définissent des politiques à la fois pour les nœuds individuels et pour le graphe ROS global. ROS 2 ajoute également un interrupteur principal « marche/arrêt » pour contrôler le comportement de sécurité.

Les utilitaires ROS peuvent créer une ancre de confiance faisant autorité pour une application ROS, ou une autorité de certification externe peut être utilisée.

Consultez l’article ROS 2 Security pour plus de détails ou les fonctionnalités de sécurité ROS.