Introspection avec des outils en ligne de commande

ROS 2 comprend une suite d’outils de ligne de commande pour l’introspection d’un système ROS 2.

Usage

Le point d’entrée principal des outils est la commande ros2, qui elle-même comporte diverses sous-commandes pour l’introspection et le travail avec des nœuds, des sujets, des services, etc.

Pour voir toutes les sous-commandes disponibles, exécutez :

ros2 --help

Voici des exemples de sous-commandes disponibles :

  • action : Introspecter/interagir avec les actions ROS

  • bag : Enregistrer/jouer un rosbag

  • composant : gérer les conteneurs de composants

  • démon : introspecter/configurer le démon ROS 2

  • médecin : Vérifiez la configuration du ROS pour les problèmes potentiels

  • interface : affiche des informations sur les interfaces ROS

  • launch : exécuter/introspecter un fichier de lancement

  • cycle de vie : Introspecter/gérer les nœuds avec des cycles de vie gérés

  • nœud : Introspecter les nœuds ROS

  • param : introspecter/configurer les paramètres sur un nœud

  • pkg : packages Introspect ROS

  • run : exécuter les nœuds ROS

  • sécurité : configurer les paramètres de sécurité

  • service : introspection/appel des services ROS

  • srv : Introspecter les types srv

  • test : exécuter un test de lancement ROS

  • sujet : Introspecter/publier les sujets ROS

  • trace : outils de traçage pour obtenir des informations sur l’exécution des nœuds ROS (uniquement disponible sur Linux)

Exemple

Pour produire l’exemple typique de locuteur-auditeur à l’aide d’outils de ligne de commande, la sous-commande topic peut être utilisée pour publier et faire écho à des messages sur un sujet.

Publiez des messages dans un seul terminal avec :

$ ros2 topic pub /chatter std_msgs/String "data: Hello world"
publisher: beginning loop
publishing std_msgs.msg.String(data='Hello world')

publishing std_msgs.msg.String(data='Hello world')

Echo des messages reçus dans un autre terminal avec :

$ ros2 topic echo /chatter
data: Hello world

data: Hello world

Dans les coulisses

ROS 2 utilise un processus de découverte distribué pour que les nœuds se connectent les uns aux autres. Comme ce processus n’utilise délibérément pas de mécanisme de découverte centralisé (comme le maître ROS dans ROS 1), les nœuds ROS peuvent mettre du temps à découvrir tous les autres participants du graphe ROS. Pour cette raison, il existe un démon de longue durée en arrière-plan qui stocke des informations sur le graphique ROS pour fournir des réponses plus rapides aux requêtes, par ex. la liste des noms de nœuds.

Le démon est automatiquement lancé lorsque les outils de ligne de commande appropriés sont utilisés pour la première fois. Vous pouvez exécuter ros2 daemon --help pour plus d’options d’interaction avec le démon.

Mise en œuvre

Le code source de la commande ros2 est disponible sur https://github.com/ros2/ros2cli

L’outil ros2 a été implémenté comme un framework qui peut être étendu via des plugins. Par exemple, le package sros2 fournit une sous-commande security qui est automatiquement détectée par l’outil ros2 si le ``sros2` ` le paquet est installé.