Tutoriel · Intermédiaire · 30 min de lecture

Jeu du réducteur en robotique : comment le mesurer et le corriger

Le jeu de chaque train d'engrenages qui fait pendre un bras et dériver l'odométrie. Mesurez-le en degrés, puis choisissez de le supprimer ou de concevoir avec.

Introduction

Il y a une famille de pannes de robots qui se présentent toutes pareil : la machine va bien dans un sens et faux dans l’autre. Le bras atteint le même point par la gauche et par la droite et atterrit à deux positions d’écart. Le robot équilibriste tremble autour de la verticale et ne se stabilise pas quel que soit le réglage. Le cap du robot de labyrinthe est faux d’un degré après chaque virage et de quinze après la course.

Aucune n’est un problème de réglage, et toutes ont la même cause. Entre votre moteur et ce qu’il déplace se tient un train d’engrenages, et un train d’engrenages doit avoir un vide entre ses dents sous peine de se coincer. Ce vide s’appelle le jeu, et il signifie que chaque fois que le moteur change de sens, la sortie ne bouge pas du tout jusqu’à ce que les dents traversent le vide et se rencontrent de l’autre côté.

Ce site nomme le jeu sur sept pages comme la raison pour laquelle quelque chose ne marche pas. Ceci est la page qui l’explique.

Ce que c’est vraiment

Le jeu n’est pas du frottement, ni un retard. C’est une zone morte avec mémoire.

Imaginez la dent menante appuyée contre une face de la dent menée. Poussez, et la sortie suit l’entrée exactement — aucune erreur du tout. Maintenant inversez. La dent menante quitte cette face et traverse le vide, et pendant toute la traversée la sortie reste exactement où elle était. Quand le contact se fait sur la face opposée, la sortie recommence à suivre, décalée en permanence de la largeur du vide.

Deux conséquences découlent directement de cette description et valent d’être retenues :

  • Le jeu ne vous coûte rien tant que vous avancez dans un sens. C’est une taxe d’inversion, prélevée une fois par inversion, quelle que soit la distance parcourue ensuite. L’inversion la plus chère d’un robot est un arrêt d’urgence, où le jeu est une course libre ajoutée directement à la distance d’arrêt.
  • L’erreur dépend du côté d’où vous venez. C’est ce qui en fait une hystérésis plutôt qu’un simple décalage, et c’est pourquoi une constante d’étalonnage ne peut pas le supprimer.

La forme qu’il dessine

Pilotez une articulation avec 4° de jeu en va-et-vient et tracez ce que fait la sortie.

Deux graphes empilés pour une articulation avec quatre degrés de jeu. Le graphe supérieur montre la position commandée en sinusoïde en pointillés et la sortie réelle en courbe pleine, en fonction du temps. À chaque inversion, la sortie réelle reste à plat dans une bande ombrée pendant que la position commandée continue, puis reprend. Le graphe inférieur montre la position réelle en fonction de la position commandée, formant une boucle en parallélogramme autour de la diagonale en pointillés que suivrait un réducteur sans jeu, avec la boucle mesurée à quatre degrés de large.
La même course deux fois. Dans le temps, le jeu est le méplat à chaque inversion ; en traçant la sortie contre l'entrée, c'est un parallélogramme dont la largeur horizontale égale exactement le jeu — mesuré ici à 4,07° pour un vide de 4°, l'excès étant la largeur de la bande d'échantillonnage. Télécharger le SVG

Le panneau inférieur est l’image mentale utile, parce qu’il rend les deux branches évidentes. En montant, la sortie traîne d’un demi-vide. En descendant, elle avance d’un demi-vide. Entre les deux, la sortie est là où on l’a laissée.

Mesurez le vôtre en dix minutes

On ne conçoit pas autour d’un nombre qu’on n’a pas, et chaque réducteur est différent. Il y a deux façons de l’obtenir.

À la main, pour tout. Moteur hors tension et châssis tenu immobile. Collez une bande d’adhésif sur le pourtour de la roue ou au bout du bras et basculez doucement la sortie entre ses deux butées — pas assez fort pour fléchir quoi que ce soit, juste jusqu’à rencontrer la résistance de chaque côté. Marquez les deux extrêmes et mesurez l’arc entre eux. Convertissez :

backlash (°) = arc / (π · D) × 360

Répétez à quatre ou cinq positions sur un tour complet de sortie et gardez la pire. La variation dent à dent et l’excentricité d’arbre sont réelles, et la position testée en premier n’est pas forcément représentative.

Avec un encodeur, plus précisément. Si votre moteur a un encodeur sur l’arbre moteur — un moteur N20 avec encodeur en a un — pilotez-le très lentement dans un sens jusqu’à ce que la sortie commence juste à bouger, mettez le compteur à zéro, puis inversez et comptez jusqu’à ce que la sortie bouge à nouveau. Ce compte est le vide :

backlash (°) = counts / counts-per-output-rev × 360

Pour un N20 avec 7 impulsions par voie par tour moteur, décodées ×4, derrière un réducteur 1:100, cela fait 2 800 impulsions par tour de sortie — donc 31 impulsions font 4°. Largement assez de résolution pour mesurer quelque chose qu’on voit à peine.

Où se tient l’encodeur décide de ce que vous pouvez voir

C’est la partie qui surprend, et elle décide si le nombre que vous venez de mesurer est un problème corrigeable en logiciel.

Un encodeur sur l’arbre moteur se tient avant le réducteur. Pendant la traversée, il rapporte le moteur tournant parfaitement bien, parce que le moteur tourne parfaitement bien. La roue non. Votre estimée de position dit que vous avez bougé ; vous n’avez pas bougé. Le jeu est invisible à un encodeur côté moteur et atterrit dans votre odométrie comme une erreur pure, non corrigée.

Un encodeur sur l’arbre de sortie se tient après le réducteur et dit la vérité — mais c’est exactement pourquoi il lit zéro pendant la traversée, et c’est pourquoi c’est l’encodeur côté moteur qu’on utilise pour mesurer le jeu en premier lieu. L’encodeur qui ne peut pas le compenser est celui qui peut le voir.

Donc le résumé honnête pour un robot amateur : sur presque tous, l’encodeur est sur le moteur et le jeu est une erreur non mesurée dans l’estimée de position. Tout ce qui suit vise à rendre cette erreur petite ou sans importance.

Ce qu’il vous coûte

Le jeu à une articulation est un angle ; ce qu’il coûte est une distance, et le levier décide combien. Mêmes 4° de jeu, trois robots :

Où Levier Coût par inversion
Épaule de bras robotique Segment 150 mm 10,5 mm au préhenseur
Roue motrice Roue 65 mm 2,27 mm de déplacement
Roue de micromouse Roue 42 mm 1,47 mm de déplacement

La ligne du bras explique pourquoi les bras articulés souffrent le plus aux tolérances amateurs : le jeu de l’épaule est multiplié par toute la longueur du bras avant d’atteindre l’outil. Un degré à l’épaule d’un segment de 150 mm fait déjà 2,6 mm au préhenseur.

Les lignes des roues semblent inoffensives jusqu’à compter les inversions. Une micromouse pivote sur place à chaque intersection, et un pivot inverse une roue à chaque fois. Avec des roues de 42 mm sur une voie de 90 mm, 4° de jeu font 0,93° d’erreur de cap par virage — et l’erreur de cap est la seule qui ne se moyenne pas, parce que chaque ligne droite suivante est roulée sur le mauvais relèvement. Cent virages font 147 mm de déplacement que votre odométrie a comptés et que le robot n’a jamais faits.

Un robot équilibriste est le cas extrême, parce qu’il inverse en continu — des centaines de fois par seconde, par petits incréments, et chaque incrément est plus petit que le vide. Il passe l’essentiel de sa vie dans la zone morte, et c’est pourquoi aucun jeu de gains ne le stabilise jamais.

Correctif 1 : en acheter moins

Le correctif le moins cher est souvent la pièce.

Pignons métal plutôt que plastique. Les pignons moulés ont des tolérances lâches et s’usent en se relâchant. Un train métal ne supprime pas le jeu mais en a typiquement une fraction, et c’est l’unique raison pour laquelle les moteurs N20 figurent dans chaque montage de robot équilibriste et de micromouse, et pourquoi le motoréducteur TT suffit pour un suiveur de ligne qui roule surtout vers l’avant.

Sachez quel étage compte. Le jeu de chaque étage, ramené à la sortie, est divisé par le rapport entre cet étage et la sortie. L’étage final a un rapport de un à la sortie, donc son plein jeu apparaît et tout l’amont est divisé. Un réducteur à fort rapport n’est donc pas automatiquement pire — et si vous devez améliorer un pignon, améliorez le dernier.

Précharge. Pignons dédoublés rappelés l’un contre l’autre par ressort, écrous de vis mère anti-jeu, courroie tendue au lieu d’une paire de pignons. Tout cela tient les dents en contact sur les deux faces à la fois. Tout cela coûte frottement, rendement et usure, et c’est le compromis consenti.

Ou supprimez le réducteur. Une articulation à courroie ou en prise directe n’a pas de jeu d’engrenages à avoir. Elle a de la souplesse à la place, un problème différent couvert ci-dessous.

Correctif 2 : approcher d’un seul côté

Le plus vieux correctif de l’usinage et le meilleur rapport en logiciel, parce qu’il ne coûte rien.

Le jeu n’est prélevé qu’à l’inversion. Donc faites que la fin de chaque déplacement soit dans le même sens, et le vide est toujours déjà traversé à l’arrivée. S’il faut atteindre une position par le dessus, dépassez-la et remontez. Les imprimantes 3D le font sur l’axe Z ; les opérateurs CNC le font à la main par réflexe.

// Always arrive travelling positive: the gap is crossed before we get there.
void moveTo(float target) {
  if (target < currentPosition()) {
    driveTo(target - APPROACH_MARGIN);   // margin > measured backlash
  }
  driveTo(target);
}

APPROACH_MARGIN doit dépasser confortablement le jeu mesuré — le double est un point de départ raisonnable. Le coût est du temps sur la moitié des déplacements, et le bénéfice est une répétabilité qui ne dépend plus du côté d’où vous venez.

Pour un robot mobile, la même astuce se lit différemment : préférez un arc large à un pivot sur place là où la carte en permet un, parce qu’un arc n’inverse jamais aucune roue.

Correctif 3 : empêcher le contrôleur de lutter contre

Une boucle PID rencontre le jeu comme une zone morte au milieu de sa propre plage de commande, et elle le gère mal d’une façon spécifique et reconnaissable.

Dans le vide, la sortie monte et rien ne se passe, donc l’erreur ne diminue pas. Le terme intégral continue d’accumuler pendant une période où aucun effort n’aurait aidé. Quand les dents s’engagent enfin, le terme accumulé s’applique d’un coup à un mécanisme désormais connecté, et l’articulation dépasse la cible d’un bond. Puis elle inverse, traverse à nouveau le vide, et recommence dans l’autre sens. C’est un cycle limite — une oscillation de chasse permanente qui ne converge jamais — et son amplitude est fixée par la mécanique, pas les gains.

Ce qui aide vraiment :

  • Cessez d’intégrer quand vous ne bougez pas alors que vous commandez. Si la sortie dépasse le seuil qui devrait produire un mouvement et que l’encodeur dit que la sortie ne bouge pas, gelez l’intégrale. C’est la même logique anti-emballement que contre un actionneur saturé ; la zone morte est juste un actionneur temporairement déconnecté.
  • Baissez Ki avant de baisser Kp. Le terme intégral est celui qui transforme une zone morte en cycle limite.
  • Ne courez pas après la dernière fraction de degré. Si votre jeu est de 4°, une bande de tolérance de 1° demande l’oscillation. Acceptez une bande morte légèrement plus large que le jeu et la boucle cesse de chasser.
  • Profilez l’inversion. Un profil de mouvement qui adoucit le passage par la vitesse nulle traverse le vide en douceur au lieu de claquer contre la face opposée — plus silencieux, et bien plus doux pour les pignons plastique.

Regardez cela se produire dans le simulateur PID en réglant contre un système qui répond mollement aux petites entrées : les mêmes gains stables pour les grands déplacements chassent autour de la consigne pour les petits.

La souplesse est l’autre moitié du mouvement perdu

Si vous mesurez le jeu en basculant la sortie, vous mesurez le jeu et la souplesse ensemble, et ils exigent des correctifs différents. Distinguez-les par un test : appliquez une charge, notez la flèche, puis relâchez.

Jeu Souplesse
Flèche contre charge Vide fixe, indépendant de la charge Proportionnelle à la charge
Au relâchement Reste où vous l’avez laissée Revient par élasticité
Correctif Meilleurs pignons, précharge, approche unilatérale Pièces plus rigides, leviers plus courts, triangulation
Symptôme Erreur dépendante du sens Affaissement en charge, sonnerie après déplacements

Un long bras en acrylique a très peu de jeu et beaucoup de souplesse. Un réducteur plastique bon marché sur un bout d’arbre court est l’inverse. Les deux se lisent comme « le bras ne va pas où je l’ai dit », et c’est pourquoi le test de deux minutes vaut d’être fait avant tout achat.

Quand ça tourne mal

Symptôme Généralement
Le bras atteint un point différemment de chaque côté Le jeu, directement — mesurez-le avant tout réglage
Le robot équilibriste tremble et ne se stabilise jamais Jeu plus grand que les incréments de correction ; réducteur métal, pas plus de réglage
Le cap dérive d’un degré par virage Jeu sur la roue qui inverse ; préférez les arcs, ou ajoutez un gyroscope
L’odométrie dit qu’il a bougé et il n’a pas bougé L’encodeur côté moteur ne peut pas voir le vide du réducteur
Oscillation permanente autour de la consigne Terme intégral qui s’emballe dans la zone morte
La position est répétable mais s’affaisse en charge Souplesse, pas jeu — raidissez, ne changez pas de pignons
A empiré en quelques mois Usure des pignons plastique ; le jeu croît avec l’usage

Le jeu est la raison pour laquelle un robot parfait en simulation déçoit sur l’établi, parce que c’est exactement le genre de chose qu’un modèle idéal omet. Mesurez-le une fois, notez le nombre, et l’essentiel du mystère part avec. Si le nombre sort assez grand pour faire mal, la réponse est généralement un meilleur moteur et réducteur plutôt qu’un autre après-midi de réglage.

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