Tutoriel · Intermédiaire · 25 min de lecture

S'arrêter à un bord : latence et distance de freinage

Un capteur de vide vous achète un nombre fixe de millimètres. Où ils passent : distance de réaction en latence, et distance de freinage facturée par le sol.

Le budget est en millimètres, pas en millisecondes

Un robot à capteur vers le bas reçoit une seule information — blanc, maintenant — et une distance fixe pour agir. Une arène mini sumo donne 25 mm de bordure. Un bord de table donne le déport avant de montage de votre capteur. Dans les deux cas c’est une distance, et le robot la dépense de deux façons très différentes :

overshoot = v × t_latency  +  v² / (2a)

Le premier terme est payé avant tout freinage. Le second est ce que facture le sol une fois freiné.

Ils se comportent très différemment quand la vitesse monte, et savoir lequel vous payez sépare une correction en un après-midi d’une réécriture de boucle pour rien.

Deux tracés superposés. Celui du haut montre le dépassement après la ligne en millimètres en fonction de la vitesse, en deux bandes empilées : une bande ambre basse pour la distance de réaction qui croît linéairement, et une bande cyan haute pour la distance de freinage qui croît au carré. Des lignes pointillées marquent 25 millimètres pour la seule bordure et 65 millimètres avec un capteur monté 40 millimètres en avant, avec une flèche marquant 0,98 mètre par seconde où la courbe totale franchit 65 millimètres. Celui du bas montre la vitesse sûre maximale chutant quand la latence totale de détection à freinage monte de zéro à 60 millisecondes, pour un pneu silicone à frottement 1,2 et une roue plastique à 0,7.
En haut : à 25 ms de latence et µ 1,2, un robot à 1 m/s dépasse la ligne de 67 mm — 25 mm de réaction et 42 mm de freinage. Les deux bandes sont égales à 0,59 m/s ; au-dessus, le freinage domine. En bas : à 25 ms, le silicone achète 0,98 m/s et le plastique dur seulement 0,79 m/s. Télécharger le SVG

Où passe vraiment la latence

La « latence » n’est pas le capteur. C’est tout ce qu’il y a entre le changement des photons et la force des pneus dans l’autre sens, et c’est presque toujours dominé par un terme que personne n’a mesuré :

Étape Typique
Établissement émetteur IR et phototransistor ~1 ms
Attente du prochain passage de votre boucle jusqu’à 20 ms
Décision et écriture PWM <1 ms
Inversion réelle du courant moteur ~3 ms
Traversée du jeu du réducteur avant que le couple atteigne la roue ~1 ms
Total, pire cas ~25 ms

La période de boucle fait quatre cinquièmes de cela, et c’est la seule ligne corrigeable gratuitement.

Un capteur lu à 50 Hz est un capteur ignoré 20 ms d’affilée. La cause habituelle n’est pas un processeur lent — c’est un appel bloquant. Un pulseIn() sur un capteur à ultrasons vaut jusqu’à 30 ms de cécité complète, et un delay(20) pour un servomoteur est la même chose écrite autrement. Lire le capteur de bord à chaque passage d’une boucle non bloquante ne coûte rien et retire l’essentiel de la distance de réaction.

La dernière ligne surprend. Inverser les moteurs n’inverse pas les roues avant que les pignons aient traversé leur jeu, donc le jeu du réducteur est une course libre au pire moment : 4° de jeu en sortie sur une roue de 32 mm font 1,1 mm de roue libre avant tout couple de freinage.

Freiner est un problème de frottement, pas de moteur

Le second terme semble devoir dépendre de la force des moteurs. Non.

Ces mêmes moteurs capables de 25 N de force de poussée décéléreraient un robot de 500 g à 50 m/s². Le sol autorise µg — 11,8 m/s² sur silicone, 6,9 m/s² sur plastique dur. La transmission a quatre fois l’autorité permise, donc la distance d’arrêt est entièrement fixée par les pneus, et un plus gros moteur la raccourcit d’exactement rien.

D’où deux courbes et non une dans le panneau du bas. À 25 ms de latence, passer du plastique au silicone monte la vitesse sûre de 0,79 à 0,98 m/s — un gain de 24 % issu d’un composant qui donne aussi 72 % de poussée en plus.

Un ajustement honnête : le µ mesuré en traînant un robot immobile est le coefficient statique, et une inversion brutale fait glisser les roues, ce qui place sur le cinétique — typiquement 10–20 % plus bas. Traitez la vitesse calculée comme une borne optimiste et roulez à environ 80 %.

Quel terme domine, donc quoi corriger

Égalez les deux termes et la bascule est nette :

v × t = v² / 2a   →   v = 2at

À 25 ms et µ 1,2, cela fait 0,59 m/s.

  • En dessous, vous êtes borné par la latence. Diviser la période de boucle par deux rapporte plus que tout pneu. C’est là que vit un robot qui cherche, et c’est la bonne nouvelle : le correctif est logiciel.
  • Au-dessus, vous êtes borné par l’adhérence. Adhérence et répartition des masses comptent plus que la fréquence de boucle, et passé un point la seule réponse restante est d’aller plus lentement.

La plupart des robots qui tombent sont dans le premier régime et réglés comme s’ils étaient dans le second.

Donnez-vous plus de millimètres

Le budget n’est pas fixe. C’est la largeur de bordure plus la distance d’avance du capteur devant les roues, et ce second terme est une variable de conception gratuite :

budget = border + sensor lead

Un capteur 40 mm devant l’essieu moteur transforme 25 mm de bordure en 65 mm de marge d’arrêt, soit la différence entre 0,60 m/s et 0,98 m/s. Résolvez dans l’autre sens avec une vitesse cible :

budget = v·t + v²/(2a)

Limites pratiques d’avancée :

  • Il doit voir la bordure, pas l’anneau au-delà. Monté trop en avant, il regarde passé la ligne pendant que le robot est encore en sécurité, ce qui coûte de la vitesse pour rien.
  • Montez bas et masquez. Un capteur de réflectance IR à 3 mm lit la surface ; à 15 mm il lit la surface plus l’éclairage de la pièce. C’est le même problème de seuil et étalonnage qu’un suiveur de ligne, avec un mode de panne bien pire.
  • Mettez-en un à chaque coin avant. Un seul capteur central indique que le bord est quelque part devant. Deux indiquent de quel côté s’en écarter, sans latence supplémentaire.
  • N’oubliez pas l’arrière. Un robot poussé en arrière franchit la bordure à l’envers, et les capteurs avant ne le verront jamais.

Marche arrière d’abord, virage ensuite

À budget fixé, l’ordre des opérations compte plus que le réglage.

Marche arrière à fond, immédiatement. Pas de roue libre — un robot en roue libre ne décélère qu’à la résistance au roulement, petite fraction de µg, et le dépassement triple à peu près. Pas de freinage doux non plus : c’est le seul moment où un profil de mouvement est le mauvais instinct, car la contrainte est la distance plutôt que la douceur.

Puis tournez, une fois arrêté. Tourner en avançant encore convertit votre problème en ligne droite en arc qui porte un coin du robot plus loin que son centre. Arrêtez d’abord, puis réorientez — et rappelez-vous qu’un pivot sur place ripe des pneus de côté tout du long.

Verrouillez la détection. Un seul échantillon de blanc suffit. Attendre deux lectures consécutives pour confirmer double votre distance de réaction au pire cas, et le faux positif évité coûte bien moins cher que la chute.

Mesurer votre propre latence

Le nombre du tableau est une première estimation. La vôtre se mesure en un quart d’heure.

De l’intérieur. Enregistrez micros() quand le capteur franchit le seuil et de nouveau sur la ligne qui écrit la PWM inversée. Cela capture la moitié logicielle, celle corrigeable. Affichez le pire vu sur cent détections, pas la moyenne — le pire cas décide si le robot tombe.

De l’extérieur. Filmez à 240 im/s au téléphone. Comptez les images entre le passage du capteur sur la ligne et l’inversion visible des roues ; chaque image vaut 4,2 ms. Cela attrape le retard électrique et mécanique invisible au logiciel, et c’est le seul moyen de confirmer le total.

De bout en bout. Roulez à vitesse connue vers une ligne adhésive et mesurez la distance d’arrêt après elle. Soustrayez la distance de freinage calculée v²/2a et le reste est v × t — la latence totale, mesurée à la règle.

Le dernier prend cinq minutes et vaut la peine avant tout réglage, car il indique lequel des deux termes vous payez vraiment.

Quand ça tourne mal

Symptôme Généralement
S’arrête fiable lent, tombe vite Fonctionne comme conçu — vous dépassez la vitesse permise par le budget
Dépasse d’une valeur constante Latence ; mesurez-la de bout en bout et raccourcissez la boucle
Dépasse d’une valeur variable Un appel bloquant quelque part — la période de boucle n’est pas celle crue
Voit la ligne en retard Capteur monté trop haut ou trop en arrière, ou seuil réglé pour une autre pièce
Détecte une bordure inexistante Sol réfléchissant ou IR ambiant ; masquez le capteur et réétalonnez
S’arrête à temps, puis repart quand même Le dégagement tournant a eu lieu en roulant encore ; arrêtez d’abord
Tombe en arrière Pas de capteurs arrière

La même arithmétique couvre un robot de bord de table, un aspirateur anti-escaliers et un arrêt sur obstacle — seul le budget change. Le simulateur d’évitement d’obstacles expose exactement cette géométrie de distance d’arrêt avec un capteur avant au lieu d’un capteur bas, et le projet mini sumo est l’endroit où elle doit marcher contre un adversaire qui cherche à vous faire échouer.

Explorer le graphe

Fait partie de ces réalisations

Les projets et parcours d'apprentissage qui incluent ce tutoriel.

Pour aller plus loin

Références