Utiliser ros2doctor
pour identifier les problèmes
Objectif : Identifiez les problèmes dans votre configuration ROS 2 à l’aide de l’outil ros2doctor
.
Niveau du tutoriel : Débutant
Durée : 10 minutes
Contenu
Arrière-plan
Lorsque votre configuration ROS 2 ne fonctionne pas comme prévu, vous pouvez vérifier ses paramètres avec l’outil ros2doctor
.
ros2doctor
vérifie tous les aspects de ROS 2, y compris la plate-forme, la version, le réseau, l’environnement, les systèmes en cours d’exécution et plus encore, et vous avertit des erreurs possibles et des raisons des problèmes.
Conditions préalables
ros2doctor
fait partie du paquet ros2cli
. Tant que ros2cli
est installé (ce que toute installation normale devrait avoir), vous pourrez utiliser ros2doctor
.
Ce tutoriel utilise turtlesim pour illustrer certains des exemples.
Tâches
1 Vérifiez votre configuration
Examinons votre configuration générale de ROS 2 dans son ensemble avec ros2doctor
. Tout d’abord, sourcez ROS 2 dans un nouveau terminal, puis entrez la commande :
ros2 doctor
Cela effectuera des vérifications sur tous vos modules de configuration et renverra des avertissements et des erreurs.
Si votre configuration ROS 2 est en parfait état, vous verrez un message similaire à celui-ci :
All <n> checks passed
Cependant, il n’est pas rare que quelques avertissements soient renvoyés. Un UserWarning
ne signifie pas que votre configuration est inutilisable ; c’est plus probablement juste une indication que quelque chose est configuré d’une manière qui n’est pas idéale.
Si vous recevez un avertissement, il ressemblera à ceci :
<path>: <line>: UserWarning: <message>
Par exemple, ros2doctor
trouvera cet avertissement si vous utilisez une distribution ROS 2 instable :
UserWarning: Distribution <distro> is not fully supported or tested. To get more consistent features, download a stable version at https://index.ros.org/doc/ros2/Installation/
Si ros2doctor
ne trouve que des avertissements dans votre système, vous recevrez toujours le message Tous les <n> contrôles réussis
.
La plupart des vérifications sont classées comme des avertissements plutôt que comme des erreurs. C’est principalement à vous, l’utilisateur, de déterminer l’importance des retours de ros2doctor
. S’il trouve une erreur rare dans votre configuration, indiquée par UserWarning: ERROR:
, la vérification est considérée comme ayant échoué.
Un message semblable à celui-ci s’affichera à la suite de la liste des commentaires sur les problèmes :
1/3 checks failed
Failed modules: network
Une erreur indique que le système manque de paramètres ou de fonctions importants qui sont cruciaux pour ROS 2. Les erreurs doivent être corrigées pour garantir le bon fonctionnement du système.
2 Vérifier un système
Vous pouvez également examiner un système ROS 2 en cours d’exécution pour identifier les causes possibles des problèmes. Pour voir ros2doctor
fonctionner sur un système en cours d’exécution, lançons Turtlesim, qui a des nœuds qui communiquent activement entre eux.
Démarrez le système en ouvrant un nouveau terminal, en alimentant ROS 2 et en saisissant la commande :
ros2 run turtlesim turtlesim_node
Ouvrez un autre terminal et sourcez ROS 2 pour exécuter les commandes téléop :
ros2 run turtlesim turtle_teleop_key
Maintenant, exécutez à nouveau ros2doctor
dans son propre terminal. Vous verrez les avertissements et les erreurs que vous aviez la dernière fois que vous avez exécuté ros2doctor
sur votre configuration, si vous en aviez. Suivront quelques nouveaux avertissements concernant le système lui-même :
UserWarning: Publisher without subscriber detected on /turtle1/color_sensor.
UserWarning: Publisher without subscriber detected on /turtle1/pose.
Il semble que le nœud /turtlesim
publie des données sur deux sujets auxquels vous n’êtes pas abonné, et ros2doctor
pense que cela pourrait éventuellement entraîner des problèmes.
Si vous exécutez des commandes pour renvoyer les sujets /color_sensor
et /pose
, ces avertissements disparaîtront car les éditeurs auront des abonnés.
Vous pouvez essayer cela en ouvrant deux nouveaux terminaux pendant que turtlesim est toujours en cours d’exécution, en alimentant ROS 2 dans chacun et en exécutant chacune des commandes suivantes dans leur propre terminal :
ros2 topic echo /turtle1/color_sensor
ros2 topic echo /turtle1/pose
Ensuite, exécutez à nouveau ros2doctor
dans son terminal. Les avertissements éditeur sans abonné
auront disparu. (Assurez-vous d’entrer Ctrl+C
dans les terminaux où vous avez exécuté echo
).
Essayez maintenant de quitter la fenêtre turtlesim ou de quitter le teleop et de relancer ros2doctor
. Vous verrez plus d’avertissements indiquant éditeur sans abonné
ou abonné sans éditeur
pour différents sujets, maintenant qu’un nœud du système n’est plus disponible.
Dans un système complexe avec de nombreux nœuds, ros2doctor
serait inestimable pour identifier les raisons possibles des problèmes de communication.
3 Obtenez un rapport complet
Alors que ros2doctor
vous informera des avertissements concernant votre réseau, votre système, etc., l’exécuter avec l’argument --report
vous donnera beaucoup plus de détails pour vous aider à analyser les problèmes.
Vous voudrez peut-être utiliser --report
si vous recevez un avertissement concernant la configuration de votre réseau et que vous souhaitez savoir exactement quelle partie de votre configuration est à l’origine de l’avertissement.
C’est également très utile lorsque vous devez ouvrir un ticket d’assistance pour obtenir de l’aide avec ROS 2. Vous pouvez copier et coller les parties pertinentes de votre rapport dans le ticket afin que les personnes qui vous aident puissent mieux comprendre votre environnement et fournir une meilleure assistance.
Pour obtenir un rapport complet, saisissez la commande suivante dans le terminal :
ros2 doctor --report
Ce qui renverra une liste d’informations classées en cinq groupes :
NETWORK CONFIGURATION
...
PLATFORM INFORMATION
...
RMW MIDDLEWARE
...
ROS 2 INFORMATION
...
TOPIC LIST
...
Vous pouvez comparer les informations ici avec les avertissements que vous recevez en exécutant ros2 doctor
. Par exemple, si ros2doctor
a renvoyé l’avertissement (mentionné précédemment) indiquant que votre distribution n’est « pas entièrement prise en charge ou testée », vous pouvez consulter la section ROS 2 INFORMATION
du rapport :
distribution name : <distro>
distribution type : ros2
distribution status : prerelease
release platforms : {'<platform>': ['<version>']}
Ici, vous pouvez voir que le statut de distribution
est prerelease
, ce qui explique pourquoi il n’est pas entièrement pris en charge.
Résumé
ros2doctor
vous informera des problèmes de configuration et d’exécution de ROS 2. Vous pouvez obtenir un aperçu plus approfondi des informations derrière ces avertissements en utilisant l’argument --report
.
Gardez à l’esprit que ros2doctor
n’est pas un outil de débogage ; cela n’aidera pas les erreurs dans votre code ou du côté de la mise en œuvre de votre système.
Prochaines étapes
Vous avez terminé les didacticiels de niveau débutant !