Diagnostics
S’applique à : Simulation Robot réel
Le voyant et les sons disent « regarde ». Les diagnostics disent quoi. Ils décrivent en clair, chaque seconde, l’état de chaque partie du robot : les roues, les capteurs, la liaison avec le Raspberry Pi, la batterie, l’horloge…
C’est le premier endroit à regarder quand quelque chose ne va pas.
Note
Les diagnostics montrent le présent. Pour savoir ce qui s’est passé avant — pendant la nuit, pendant que vous n’étiez pas là, avant un redémarrage — c’est le journal de bord : voir Journal de bord.
Les lire
Depuis le Raspberry Pi du robot, ou depuis n’importe quel ordinateur du même réseau configuré pour ROS :
ros2 topic echo /diagnostics
Le défilement est rapide : chaque seconde, une vingtaine de blocs arrivent, un par partie du robot. Un bloc ressemble à ceci :
- level: "\0"
name: 'ratbot_1: emergency stop'
message: contact released, robot armed
hardware_id: ratbot_1
values:
- key: latched
value: '0'
- key: trips
value: '0'
- key: rearms_local
value: '0'
champ |
ce qu’il dit |
|---|---|
|
la gravité — voir juste en dessous |
|
qui parle : le robot, puis la partie concernée |
|
la phrase à lire : ce que la partie constate, en une ligne |
|
les compteurs et mesures qui justifient le message. Utiles pour creuser, pas indispensables pour comprendre |
La gravité
vous lisez |
niveau |
signification |
|---|---|---|
|
OK |
tout va bien |
|
avertissement |
quelque chose cloche, le robot continue |
|
erreur |
une partie ne fonctionne pas, ou le robot s’est arrêté pour la sécurité |
Astuce
L’écriture est bizarre — "\0", "\x01" — parce que ROS stocke la
gravité comme un octet, et c’est ainsi qu’il l’affiche. Retenez simplement :
0 OK, 1 avertissement, 2 erreur.
Aller droit à ce qui ne va pas
Plutôt que de tout lire, n’afficher que les blocs qui ne sont pas OK :
ros2 topic echo /diagnostics | grep -A2 'level: "\\x0[12]"'
Chaque bloc en avertissement ou en erreur apparaît avec son nom et son message. Si rien ne s’affiche au bout de quelques secondes, tout va bien.
Un seul bloc
Chaque bloc porte le nom du robot devant : ratbot_1: traction. On le
retrouve donc directement, même quand plusieurs robots publient en même temps :
ros2 topic echo /diagnostics | grep -A30 "ratbot_1: emergency stop"
Remplacez emergency stop par le nom d’un des blocs ci-dessous.
En graphique
rqt_robot_monitor affiche la même chose sous forme d’un arbre, avec des
pastilles vertes, jaunes et rouges. Il demande un écran : lancez-le sur votre
ordinateur, par exemple dans l’image Docker (voir Environnement Docker), pas sur le
Raspberry Pi du robot :
ros2 run rqt_robot_monitor rqt_robot_monitor
Double-cliquez sur une ligne pour voir tous ses compteurs.
Qui publie quoi
Deux sources publient sur /diagnostics :
la carte (le ratbot_controller) : ses blocs commencent par
ratbot_1:(le numéro du robot). C’est l’état du matériel ;le Raspberry Pi : ses blocs commencent par
ratbot:. C’est l’état vu par les programmes : batterie en pourcentage, températures, état du voyant.
D’autres programmes ajoutent leurs propres blocs, par exemple twist_mux ou
ekf_filter_node : ils suivent le même format.
Important
Si aucun bloc ratbot_1: n’apparaît, la carte ne parle pas au
Raspberry Pi : programmes du robot arrêtés, câble débranché, ou carte
éteinte. Le voyant respire alors en rouge. Voir Dépannage.
Les blocs de la carte
Les messages sont en anglais. Pour chaque bloc : ce qu’il surveille, le message quand tout va bien, et les messages qui doivent faire réagir.
La sécurité
|
Le bouton d’arrêt et la batterie critique. Voir Arrêter et relancer le robot. |
|---|---|
tout va bien |
|
avertissement |
|
erreur |
|
compteurs utiles |
|
L’arrêt automatique
|
L’arrêt automatique : robot renversé, roue bloquée, et le mode banc. Voir Arrêter et relancer le robot. |
|---|---|
tout va bien |
|
avertissement |
|
erreur |
|
compteurs utiles |
|
Note
tilt_deg cesse de bouger pendant que le robot est coupé : il garde
l’inclinaison du moment où l’arrêt s’est produit.
Les roues
|
Les deux roues vues par la commande de mouvement. |
|---|---|
tout va bien |
|
avertissement |
|
erreur |
|
compteurs utiles |
|
|
Le câble qui relie la carte aux moteurs des roues. |
|---|---|
tout va bien |
|
avertissement |
|
erreur |
|
compteurs utiles |
|
Le bloc wheel estimator ne contient que des compteurs internes, pour les
développeurs ; il est toujours OK.
Les capteurs
|
La mesure de la batterie, de la température et la centrale inertielle. |
|---|---|
tout va bien |
|
avertissement |
|
erreur |
|
compteurs utiles |
|
|
La centrale inertielle (le gyroscope qui mesure les rotations). |
|---|---|
tout va bien |
|
avertissement |
|
compteurs utiles |
|
La liaison avec le Raspberry Pi
|
La conversation entre la carte et le Raspberry Pi. |
|---|---|
tout va bien |
|
avertissement |
|
compteurs utiles |
|
|
Le câble lui-même entre la carte et le Raspberry Pi. |
|---|---|
tout va bien |
|
avertissement ou erreur |
|
compteurs utiles |
|
La mémoire et l’horloge
|
Les réglages du robot, gardés en mémoire (empattement, calibrage…). |
|---|---|
tout va bien |
|
avertissement |
|
erreur |
|
compteurs utiles |
|
|
L’horloge de la carte, qui date le journal. Voir L’heure du robot. |
|---|---|
tout va bien |
|
avertissement |
|
erreur |
|
|
Le journal de bord lui-même. Voir Journal de bord. |
|---|---|
tout va bien |
|
erreur |
|
compteurs utiles |
|
|
La boîte noire : la cause du dernier plantage. |
|---|---|
tout va bien |
|
erreur |
|
Le reste
|
|
|---|---|
|
l’écran : |
|
le transfert du journal vers le Raspberry Pi pendant un |
|
le temps pris par chaque étape de la boucle micro-ROS de la carte, en microsecondes par seconde ; toujours OK. Utile aux développeurs quand la carte ralentit |
|
le capteur de distance avant (Le capteur de distance avant). |
Les blocs du Raspberry Pi
bloc |
ce qu’il dit |
|---|---|
|
l’état affiché par le voyant ( |
|
la charge en pourcentage. Avertissement sous 20 % |
|
la température de la carte. Avertissement à partir de 75 °C |
|
la température du Raspberry Pi. Avertissement à partir de 80 °C |
Comme ceux de la carte, ces blocs portent le numéro du robot, dans leur nom et
dans hardware_id : ratbot fleet diag (voir Travailler à plusieurs robots) s’en sert
pour attribuer chaque problème au bon robot.
Un message aucune mesure veut dire que le Raspberry Pi ne reçoit pas la
mesure de la carte : la liaison est à vérifier (bloc micro-ROS link).
Exemples
Le robot ne bouge plus, voyant rouge rapide, alarme.
ros2 topic echo /diagnostics | grep -A2 'level: "\\x0[12]"'
- level: "\x01"
name: 'ratbot_1: emergency stop'
message: EMERGENCY STOP ACTIVE -- release the contact, press SW1 5 times
Le bouton d’arrêt a été enfoncé : relâchez-le, puis 5 appuis sur SW1.
Voyant orange, un code « 1 long, 2 courts » au démarrage.
- level: "\x01"
name: 'ratbot_1: traction'
message: only one wheel answers
La roue droite ne répond pas. Le compteur wheels_online vaut 1 : seule
la gauche est là. Vérifiez le câble de la roue droite.
Pour aller plus loin
La liste complète des compteurs de chaque bloc, et la façon d’ajouter un bloc, sont dans la documentation développeur.