Voyant et sons

S’applique à : Robot réel

Le robot se fait comprendre avec un voyant de couleur et deux buzzers. Cette page explique comment tout cela fonctionne, ce que veut dire chaque couleur et chaque son, et quoi faire quand on les voit ou les entend.

Rien à installer, rien à lancer : tout fonctionne dès la mise sous tension.

Deux sources, un seul voyant

Deux programmes décident de ce que le robot montre :

  • la carte (le ratbot_controller) voit le matériel : le bouton d’arrêt, la batterie, les roues, les capteurs. Elle fonctionne toute seule, même quand le Raspberry Pi est éteint ou débranché ;

  • le Raspberry Pi sait ce que le robot fait : il roule, il explore, il a fini sa mission…

Mais il n’y a qu’un seul voyant. La règle qui tranche :

Important

La carte a toujours la priorité. Le Raspberry Pi ne peut colorer le voyant que lorsque la carte n’a rien de grave à dire.

Trois règles à retenir

  • Le son marque un changement, la lumière montre l’état. Un son se produit une fois, au moment où quelque chose arrive. La couleur, elle, se lit à n’importe quel moment.

  • Le voyant montre toujours la chose la plus grave. Danger d’abord, puis panne, puis absence du Raspberry Pi, et seulement ensuite ce que fait le robot.

  • Le rouge veut dire danger, et rien d’autre. Une mission ratée ou un obstacle n’allument jamais de rouge. Ainsi, le jour où le voyant est rouge, on sait qu’il faut regarder.

Les deux buzzers : deux rôles qui ne se mélangent jamais

le buzzer d’alarme (actif)

le buzzer à mélodies (passif)

le son

un bip fort, strident, toujours la même note

des notes : il joue de petites mélodies

qui le commande

la carte seule, jamais le Raspberry Pi

la carte et le Raspberry Pi

quand il sonne

seulement pour « danger, arrête-toi » : le bouton d’arrêt a été enfoncé, ou la batterie est critique (sous 9,6 V)

pour informer : démarrage, Raspberry Pi trouvé ou perdu, mission réussie, obstacle, batterie faible…

rythme

200 ms de bip chaque seconde, tant que le danger dure

une fois, au moment où la chose arrive

peut-on le faire taire à distance

non, et c’est voulu : une alarme qu’on peut couper à distance n’est plus une alarme

oui

Un seul cas particulier : si la carte plante, le buzzer d’alarme joue SOS en morse (· · · — — — · · ·). Voir Quand le robot plante.

Le voyant : une échelle de priorité

La carte examine la situation de haut en bas. Le premier niveau vrai gagne, tous les autres attendent.

niveau

situation

voyant

qui décide

1

bouton d’arrêt enfoncé, ou batterie critique

rouge, clignotement rapide, et le buzzer d’alarme sonne

la carte

2

une panne : une roue, un capteur, la mémoire ou l’horloge ; ou l’arrêt automatique (robot renversé, roue bloquée)

orange, clignotement lent

la carte

3

fin du démarrage, tout va bien

vert, un fondu de 2 s, une seule fois

la carte

4

la carte ne trouve pas le Raspberry Pi

rouge qui « respire », lentement

la carte

5

tout va bien et le Raspberry Pi est là

la couleur choisie par le Raspberry Pi — voir Les états du robot

le Raspberry Pi

Et si le voyant est éteint : le Raspberry Pi est bien là, mais ses programmes n’ont encore rien demandé. C’est normal quelques secondes après le démarrage.

Enfin, un éclair blanc toutes les 2 secondes, par-dessus la couleur du moment, veut dire que le mode banc est actif : l’arrêt automatique est en pause. Voir Arrêter et relancer le robot.

Ce que le voyant vous demande de faire

vous voyez

quoi faire

rouge rapide, avec l’alarme

Si c’est le bouton d’arrêt : relâchez-le, puis appuyez 5 fois sur SW1. Si c’est la batterie : mettez-la en charge. L’alarme ne s’arrête pas tant que la cause est là. Voir Arrêter et relancer le robot.

orange lent

Une panne, ou l’arrêt automatique. Écoutez le code en bips (voir plus bas), ou lisez le détail dans /diagnostics. Si c’est 6 longs : remettez le robot à plat ou dégagez la roue, puis 5 fois SW1.

rouge qui respire

Vérifiez que le Raspberry Pi est allumé et que son câble vers la carte est branché.

toute autre couleur

Rien : le robot vous dit ce qu’il fait.

Les états du robot

Côté Raspberry Pi, les programmes ne choisissent jamais une couleur. Ils annoncent un état — par exemple « mission réussie » — et un fichier de réglage, led_states.yaml, traduit chaque état en couleur et en mélodie :

un programme annonce « mission_ok »
        │
        ▼
status_manager ── consulte led_states.yaml ──► vert clignotant + mélodie de victoire
        │                                          │
        ▼                                          ▼
  couleur envoyée à la carte                son envoyé à la carte
  (affichée si les niveaux 1 à 4            (joué par le buzzer à mélodies)
   n'ont rien à dire)

La mélodie ne joue qu”à l’entrée dans l’état, jamais en boucle.

Les états de tous les jours

Ceux-là, le Raspberry Pi les calcule tout seul, en permanence.

état

voyant

son

quand

idle

bleu fixe

—

le robot est à l’arrêt. C’est l’état par défaut, quand rien d’autre n’est actif.

moving

vert fixe

—

le robot roule (plus de 2 cm/s).

emergency

rouge clignotant

aucun

l’arrêt de la manette (bouton PS) est actif. Voir Arrêter et relancer le robot.

low_battery

orange clignotant

trois notes descendantes, lentes

la batterie est sous 20 %. Il est temps de la recharger. (Sous 9,6 V, c’est la carte qui prend le relais, avec l’alarme.)

overheat

orange clignotant

une sirène, deux tons alternés

surchauffe : la carte dépasse 75 °C, ou le Raspberry Pi 80 °C.

Les états de mission

Ceux-là sont annoncés par un programme : la mission, la navigation, ou vous-même, à la main (voir Déclencher un état à la main).

état

voyant

son

signification

exploring

violet fixe

—

le robot explore tout seul pour dresser la carte.

returning

bleu clair fixe

—

il rentre à son point de départ.

paused

jaune clignotant

—

la mission est en pause : il attend qu’on la reprenne.

stopped

jaune fixe

—

il a été arrêté à la demande. Ce n’est pas un danger, d’où le jaune et pas le rouge.

navigating

vert-cyan fixe

trois notes qui montent, franches

il part vers une destination.

goal_ok

vert clair fixe

deux notes courtes, discrètes

il a atteint une étape du parcours. Discret, parce que cela arrive souvent.

mission_ok

vert clignotant

la seule mélodie un peu longue, une petite fanfare montante

mission réussie : il a fini ce qu’on lui avait demandé.

mission_ko

magenta clignotant

quatre notes qui descendent

mission échouée : il n’a pas pu finir. Un échec, pas une panne — d’où le magenta et pas le rouge.

obstacle

bleu et magenta en alternance

deux notes basses répétées, puis une plus grave

il est bloqué : son chemin est impossible. Contrarié, pas affolé.

identify

blanc clignotant

un bip par seconde

on a demandé lequel est ce robot (ratbot fleet identify N, voir Travailler à plusieurs robots). Une alerte reste prioritaire : un robot en arrêt d’urgence garde son rouge.

Note

Un état de mission ne dure que 2 secondes si personne ne le répète. Ensuite, le voyant revient à l’état de tous les jours — bleu ou vert. Le programme qui veut maintenir un état le réannonce donc tant qu’il est vrai : c’est ce que fait la mission pour exploring, returning et paused.

Ainsi, « mission réussie » se voit et s’entend comme un vert clignotant de 2 secondes accompagné de la fanfare, puis le robot repasse au bleu.

Note

Qui annonce quoi, aujourd’hui. La mission annonce exploring, returning et paused. Les autres états de mission — navigating, goal_ok, mission_ok, mission_ko, stopped, obstacle — sont prêts : leur couleur et leur mélodie sont réglées, mais aucun programme livré ne les annonce encore. Ils attendent vos propres programmes, ou un essai à la main.

Quand plusieurs états sont vrais en même temps

Le robot peut rouler et avoir une batterie faible. Un seul état est affiché, le premier de cette liste :

emergency > low_battery > overheat > mission_ko > mission_ok > paused
  > obstacle > navigating > goal_ok > exploring > returning > moving
  > stopped > idle

Et, rappel, cette couleur ne s’affiche elle-même que si la carte n’a rien de plus grave à montrer (niveaux 1 à 4).

Déclencher un état à la main

Pratique pour voir et entendre chaque état. Depuis le Raspberry Pi :

ros2 topic pub --once /ratbot_1/status/set_state std_msgs/msg/String "data: mission_ok"

Le robot affiche l’état pendant 2 secondes, avec sa mélodie, puis revient à la normale. Remplacez mission_ok par n’importe quel nom des tableaux ci-dessus. Un nom inconnu est ignoré, et un avertissement le signale dans le journal du Raspberry Pi.

Les deux « rouges clignotants », à ne pas confondre

C’est ce qui prête le plus à confusion :

arrêt du robot (son bouton)

arrêt de la manette (bouton PS)

qui allume le rouge

la carte (niveau 1)

le Raspberry Pi (état emergency)

clignotement

rapide

plus lent

alarme

oui, le buzzer d’alarme

non, aucun son

si le Raspberry Pi est éteint

fonctionne quand même

ne fonctionne plus

Pour les désactiver, chacun a son geste : voir Arrêter et relancer le robot.

Les sons de la carte

En plus des mélodies des états, la carte joue ses propres sons, sans le Raspberry Pi :

vous entendez

signification

une mélodie montante de 4 notes

le robot démarre

deux notes qui montent

la carte a trouvé le Raspberry Pi

les mêmes deux notes qui descendent

elle vient de le perdre

une note brève et grave toutes les 5 s

elle ne l’a toujours pas retrouvé

trois notes graves rapides au démarrage

le robot s’était bloqué et s’est relancé tout seul (le « chien de garde »)

200 ms de bip par seconde, strident

le buzzer d’alarme : arrêt d’urgence ou batterie critique

un petit bip à chaque appui sur SW1, puis deux notes qui montent

le robot est réarmé, après un arrêt d’urgence ou un arrêt automatique. La confirmation est brève : ne la confondez pas avec les bips des appuis

deux notes égales, suspendues

le mode banc s’active : l’arrêt automatique est en pause

la même note, puis une plus haute

le mode banc s’arrête : la surveillance reprend

Note

Si vous allumez le robot avant le Raspberry Pi, le rappel « toutes les 5 s » attend trois minutes avant de commencer : c’est le temps normal pour que le Raspberry Pi démarre. S’il avait déjà été vu, ou si la carte vient de se relancer toute seule, le rappel commence tout de suite.

Note

La carte redémarre toute seule si le Raspberry Pi ne répond pas. Tant que ses programmes ne tournent pas, la carte se relance au bout de quelques secondes — vous entendez alors les trois notes graves. C’est voulu : elle repart ainsi d’un état propre. Tout rentre dans l’ordre dès que le Raspberry Pi est prêt.

Les bips du démarrage

Quelques secondes après la mélodie de démarrage, le robot fait son bilan. Tout va bien : un fondu vert, sans un bruit. Quelque chose ne va pas : il compte en bips, comme le BIOS d’un ordinateur.

Des bips longs donnent la famille, des bips courts le détail. Comptez d’abord les longs, puis, après un silence un peu plus marqué, les courts.

vous entendez

famille

détail

1 long

roues

1 court : roue gauche · 2 courts : roue droite · 3 courts : les deux

2 longs

capteurs

1 court : centrale inertielle · 2 courts : température · 3 courts : batterie

3 longs

mémoire

1 court : réglages illisibles, le robot tourne sur ses valeurs d’usine

4 longs

horloge

1 court : la pile de l’horloge ou son quartz ne répond pas

5 longs

le robot s’est arrêté sur une erreur au tour précédent

1 : pile de tâche · 2 : mémoire pleine · 3 : faute matérielle · 4 : un composant a refusé de démarrer

6 longs

arrêt automatique : le robot s’est coupé tout seul

1 court : renversé · 2 courts : roue bloquée · 3 courts : roues qui patinent · 4 courts : choc. Remettez-le à plat ou dégagez-le, puis 5 fois SW1 — voir Arrêter et relancer le robot

S’il y a plusieurs pannes, les codes s’enchaînent, séparés par un silence d’une seconde. Le code « 5 longs » n’est joué qu’une fois : au démarrage qui suit le plantage. Le code « 6 longs » n’est jamais joué au démarrage : il arrive au moment où le robot se coupe.

Une panne qui apparaît en cours de route — un connecteur qui lâche, une roue qui décroche — rejoue son code au moment où elle arrive, puis le voyant reste orange. Quand elle disparaît, le voyant s’éteint sans un bruit.

Quand le robot plante

Le buzzer d’alarme joue SOS en morse, en boucle. La cause est enregistrée ; le robot vous la dira en bips (5 longs) au démarrage suivant.

  • S’il redémarre de lui-même au bout de 8 s, c’est le chien de garde : la panne est survenue en cours de route.

  • S’il continue à appeler indéfiniment, elle est survenue pendant le démarrage, avant que le chien de garde ne soit armé : il faut couper et rallumer.

Quelques situations concrètes

vous voyez / entendez

ce qui se passe

mélodie montante, fondu vert, rouge qui respire, puis deux notes qui montent et le voyant passe au bleu

démarrage normal : la carte démarre, fait son bilan sans panne, attend le Raspberry Pi, le trouve ; le robot est à l’arrêt, prêt

bleu, puis vert quand vous poussez le joystick

le robot roule ; il repasse au bleu à l’arrêt

rouge rapide et bip strident

quelqu’un a enfoncé le bouton d’arrêt du robot

rouge clignotant, silence

l’arrêt de la manette est actif

vert clignotant et petite fanfare, puis bleu

mission réussie

magenta clignotant et notes descendantes, puis bleu

mission échouée

orange lent, sans rien d’autre

une panne matérielle : écoutez le code, ou lisez /diagnostics

orange lent, 6 bips longs et 2 courts

l’arrêt automatique : une roue forçait sans tourner. Dégagez-la, puis 5 fois SW1

orange lent, 6 bips longs et 3 courts, alors qu’il était sur sa boîte

on l’a fait tourner sur la boîte : ses roues tournaient, lui non, et il a cru patiner. Activez le mode banc pour tourner sur la boîte

un éclair blanc toutes les 2 s

le mode banc est actif : le robot ne se coupera pas s’il est renversé ou bloqué

orange clignotant et trois notes descendantes

batterie sous 20 % : à recharger bientôt

rouge qui respire et une note toutes les 5 s

la carte n’a pas de Raspberry Pi : il est éteint, en train de démarrer, ou son câble est débranché

voyant éteint

le Raspberry Pi est là, ses programmes n’ont pas encore parlé

Savoir ce qui ne va pas exactement

Le signal dit « regarde », il ne dit pas tout. Le détail est à une commande de là, depuis le Raspberry Pi :

ros2 topic echo /diagnostics

Comment les lire : voir Diagnostics. Et pour savoir ce qui s’est passé quand vous n’étiez pas là, le robot tient un journal : voir Journal de bord.

Où se règle quoi

vous voulez changer

où

la couleur, le clignotement ou la mélodie d’un état ; l’ordre de priorité ; les seuils (batterie 20 %, températures) ; ajouter un état

ratbot_status/config/led_states.yaml, sur le Raspberry Pi. Sans toucher à la carte ni la reprogrammer. Voir État du robot.

les niveaux 1 à 4 du voyant, le buzzer d’alarme, les sons de la carte, les codes de démarrage

le programme de la carte. Volontairement difficile à changer : c’est la sécurité.

Pour aller plus loin

Les durées exactes, les numéros des mélodies, les principes qui régissent les priorités et la façon d’ajouter un signal sont dans la page « Signaux » de la documentation développeur.