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

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 !