Introspection avec des outils en ligne de commande
Table des matières
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é.