Arrêter et relancer le robot ============================ **S'applique à :** :bdg-warning-line:`Robot réel` En simulation, seul l'arrêt de flotte — le bouton PS de la manette — s'applique : le bouton d'arrêt et l'arrêt automatique sont propres au robot réel. Le RatBot peut être arrêté de **trois façons**, et elles ne se ressemblent pas : - **l'arrêt d'urgence du robot** : un bouton, sur le robot ; - **l'arrêt à distance** : un bouton de la manette ; - **l'arrêt automatique** : le robot se coupe tout seul s'il est **renversé**, si une roue est **bloquée**, si ses roues **patinent**, ou s'il subit un **choc**. Cette page dit ce que fait chacun, sur quoi il repose, et comment relancer le robot après. En résumé --------- .. list-table:: :header-rows: 1 :widths: 22 26 26 26 * - - **arrêt d'urgence du robot** - **arrêt à distance de la manette** - **arrêt automatique** * - il se déclenche par - le **bouton d'arrêt** sur le robot - le bouton **PS** de la manette - **tout seul** : robot renversé, roue bloquée, roues qui patinent, choc * - il arrête - **ce robot-là** - **tout le parc**, tous les robots d'un coup - **ce robot-là** * - il fonctionne sans le Raspberry Pi, sans Wi-Fi, sans ordinateur - **oui** - **non** - **oui** * - le robot le signale - voyant **rouge clignotant** et **alarme** - voyant **rouge clignotant**, **sans alarme** - voyant **orange clignotant** et un **code en bips** * - on le désactive par - **5 appuis sur SW1**, sur le robot - **ROND tenu + SHARE tapé 5 fois**, sur la manette - **5 appuis sur SW1**, sur le robot * - la manette peut-elle le désactiver ? - **jamais** - oui - **jamais** L'arrêt d'urgence du robot -------------------------- C'est **le vrai arrêt d'urgence**. Le bouton est lu directement par la carte électronique du robot, qui coupe les roues et fait sonner l'alarme toute seule. Rien d'autre n'intervient : il marche Raspberry Pi éteint, Wi-Fi coupé, programmes arrêtés sur une erreur. **Quand on l'enfonce :** - les roues s'arrêtent tout de suite ; - le voyant clignote en **rouge, vite** ; - l'**alarme** sonne — un bip insistant, 200 ms chaque seconde. Elle ne peut pas être coupée à distance : c'est voulu. **Il reste verrouillé.** Relâcher le bouton ne relance **rien** : le robot reste à l'arrêt, et l'alarme continue, jusqu'à ce qu'on le réarme exprès. Le désactiver ~~~~~~~~~~~~~ **Devant le robot, sans ordinateur** — la façon normale : 1. relâcher le bouton d'arrêt : **le tourner**, il remonte ; 2. **appuyer 5 fois sur SW1**, un des quatre boutons de la carte du robot, en moins de 4 secondes. .. list-table:: :header-rows: 1 :widths: 44 56 * - ce que vous entendez - signification * - un petit bip à chaque appui - l'appui est compté * - une mélodie montante, puis l'alarme s'arrête - **réarmé** : le robot accepte de nouveau les commandes * - deux notes descendantes, l'alarme continue - **refusé** : le bouton d'arrêt est encore enfoncé. Tournez-le pour le relâcher, et recommencez **Depuis un ordinateur**, la même chose : .. code-block:: bash ros2 service call /ratbot_1/rearm std_srvs/srv/Trigger La réponse ``success=True`` confirme. Là aussi, c'est refusé tant que le bouton d'arrêt est enfoncé. .. note:: **Pourquoi SW1, et pas le bouton d'arrêt lui-même ?** Dans une vraie urgence, on tape le bouton d'arrêt plusieurs fois, en panique. Si ces appuis réarmaient le robot, le geste de panique le relancerait. **Pourquoi la manette ne peut pas le désactiver ?** Parce qu'on ne relance pas un robot depuis l'autre bout de la salle, peut-être pendant que quelqu'un a les mains dessus. On le relance devant lui. L'arrêt à distance de la manette -------------------------------- C'est une **commodité**, pas un arrêt d'urgence. Il passe par le Wi-Fi, par l'ordinateur où la manette est branchée, et par les programmes de chaque robot : si l'un de ces maillons manque, **il ne fait rien**, et on croirait avoir arrêté. **Quand on appuie sur PS :** - **tous les robots** du parc s'arrêtent, et refusent les commandes ; - y compris ceux qui démarreront après — tant que le programme de la manette reste lancé sur l'ordinateur ; - leur voyant **clignote en rouge**, mais **aucune alarme ne sonne**. Ce rouge est envoyé par le Raspberry Pi de chaque robot, pas décidé par la carte : si le Raspberry Pi est éteint ou défaillant, le voyant ne change pas — et l'arrêt de la manette ne fonctionne de toute façon plus, puisqu'il passe par lui. Le désactiver ~~~~~~~~~~~~~ **Sur la manette** : tenir **ROND**, et **taper 5 fois SHARE** pendant qu'on le tient. Tous les robots acceptent de nouveau les commandes. Le geste est volontairement difficile à faire par accident : on ne peut pas le déclencher en saisissant, en posant ou en faisant tomber la manette. .. warning:: **La manette doit être en mode PlayStation** : sa LED est **bleue**. En mode Xbox, LED **verte**, les boutons ne sont plus à leur place — PS n'arrête plus rien. Le logiciel s'en aperçoit et **bloque tous les robots** tant que la manette n'est pas revenue en mode PlayStation. Voir :doc:`pilotage`. L'arrêt automatique ------------------- Le robot surveille **tout seul** quatre situations dangereuses, pour lui ou pour ce qui l'entoure. Comme l'arrêt d'urgence, cette surveillance est faite par la carte du robot : elle marche Raspberry Pi éteint, Wi-Fi coupé. .. list-table:: :header-rows: 1 :widths: 22 42 36 * - situation - quand le robot la reconnaît - code en bips * - **renversé** - penché de **plus de 60°** pendant une demi-seconde : sur le flanc, à l'envers. Une pente ou une bordure ne le déclenchent pas. - **6 longs, 1 court** * - **roue bloquée** - une roue **force sans tourner** pendant une seconde : une main, un câble, un objet coincé dans la roue. En pratique, il se coupe **environ 2 secondes** après le blocage. - **6 longs, 2 courts** * - **roues qui patinent** - les roues disent « je tourne », mais le gyroscope voit que le robot **ne tourne pas**, pendant une seconde : le robot est coincé, par exemple de biais contre un mur, et ses roues patinent. Tourner le robot **à la main** pour le replacer ne le déclenche pas. - **6 longs, 3 courts** * - **choc** - une **accélération ou une décélération brutale** pendant qu'il **roule**, vue par l'accéléromètre : le robot a heurté quelque chose, ou on l'a heurté. Il se coupe tout de suite. Ses propres départs et freinages, même les plus vifs, restent très en dessous du seuil. **À l'arrêt, un choc ne compte pas** : poser, soulever ou déplacer le robot ne le coupe plus. - **6 longs, 4 courts** .. warning:: **Un robot qui pousse bien droit contre un mur n'est pas détecté.** Ses roues patinent à la même vitesse et avec le même effort qu'en roulant librement, et il ne tourne pas : rien, sur le robot, ne permet aujourd'hui de le distinguer d'un robot qui avance. Le patinage n'est vu que s'il fait **tourner** les roues différemment. Aucun pare-chocs n'est prévu : ce cas reste une limite connue, à surveiller de l'œil. **Quand il se déclenche :** - les roues s'arrêtent, et le robot **refuse les commandes** ; - le voyant clignote en **orange, lentement** ; - le robot joue le **code en bips** du tableau, une fois ; - **pas d'alarme** et pas de rouge : ce n'est pas un danger pour les personnes, c'est « le robot est coincé ». **Il reste verrouillé**, comme l'arrêt d'urgence : remettre le robot d'aplomb ou dégager la roue ne suffit pas à le relancer. Le désactiver ~~~~~~~~~~~~~ 1. **remettre le robot à plat**, ou dégager ce qui bloquait la roue ; 2. **appuyer 5 fois sur SW1**, comme pour l'arrêt d'urgence. La commande ``ros2 service call /ratbot_1/rearm std_srvs/srv/Trigger`` fonctionne aussi. Un seul réarmement lève à la fois l'arrêt automatique et l'arrêt d'urgence du robot. .. warning:: **Remettez-le à plat AVANT de le réarmer.** Réarmé alors qu'il est encore sur le flanc, il se recoupe une demi-seconde plus tard. Le mode banc ~~~~~~~~~~~~ Pour les essais — robot tenu à la main, penché, roues freinées exprès — le **mode banc** met l'arrêt automatique **en pause**. Deux façons de l'activer : - **sur le robot** : **tenir SW2 pendant 3 secondes** ; - **depuis le Raspberry Pi du robot** : .. code-block:: bash ./scripts/ratbot bench on # activer ./scripts/ratbot bench off # désactiver - **depuis le PC**, en donnant le numéro du robot : ``./scripts/ratbot bench 1 on``, ``./scripts/ratbot bench 1 off``. Refaire le même geste le désactive. .. list-table:: :header-rows: 1 :widths: 40 60 * - vous voyez / entendez - signification * - deux notes égales, suspendues - le mode banc s'active * - la même note, puis une plus haute - le mode banc s'arrête : la surveillance reprend * - un **éclair blanc toutes les 2 secondes** sur le voyant - le mode banc est **actif**. Il le reste tant que l'éclair est là. .. important:: - **Le mode banc ne survit pas à un redémarrage.** Éteint puis rallumé, le robot est de nouveau protégé : on ne peut pas l'oublier activé. - **Il ne met en pause que l'arrêt automatique.** L'arrêt d'urgence du robot, l'arrêt de la manette et la protection de la batterie restent actifs. .. tip:: **Robot posé sur une boîte, roues dans le vide :** - **tout droit**, pas besoin du mode banc : les roues tournent librement, et le robot ne se croit ni bloqué, ni en train de patiner ; - **pour tourner**, il faut le mode banc. Sur la boîte, les roues tournent mais le robot ne tourne pas : c'est exactement ce que voit un robot qui patine, et il se coupe (6 longs, 3 courts). Le mode banc sert aussi quand on **freine** une roue exprès, ou qu'on **penche** le robot à la main. Et si plusieurs sont actifs ? ----------------------------- Ils sont **indépendants** : chacun se désactive par son propre geste, et le robot ne repart que lorsque **tous** sont levés. Exemple : on a appuyé sur PS, puis enfoncé le bouton d'arrêt d'un robot. Pour le relancer, il faut **à la fois** : - le geste de la manette (ROND + 5 × SHARE), qui lève l'arrêt du parc ; - et, devant ce robot, relâcher son bouton puis 5 × SW1. Le bouton d'arrêt ----------------- Chaque robot porte un champignon d'arrêt d'urgence **normalement fermé, à accrochage** : enfoncé, il reste enfoncé jusqu'à ce qu'on le **tourne** pour le relâcher. « Normalement fermé » veut dire que c'est l'**ouverture** du circuit qui déclenche l'arrêt. Un fil coupé ou un connecteur débranché arrête donc le robot, comme un appui : une panne du câblage le met en sécurité au lieu de le laisser filer. C'est la **sécurité positive**. Pour le vérifier : .. code-block:: bash ros2 topic echo --once /diagnostics | grep -A12 "emergency stop" Le bloc indique ``failsafe: 1``. .. note:: Un robot **sans bouton d'arrêt** sur le connecteur J8 ne démarre pas : il reste à l'arrêt, ce qui est voulu. Placer un **cavalier sur J8** en attendant le bouton. Pour en monter un : un arrêt d'urgence **à accrochage, 1NC**, du type « coup de poing à verrouillage, tourner pour déverrouiller, 22 mm », câblé sur son contact **NC**. Un bouton momentané, même avec une tête en champignon, n'en est pas un.