Tutoriel · Intermédiaire · 30 min de lecture
Patinage des roues : pourquoi l'odométrie dérive
Les roues tournent plus que le robot n'avance : limite de traction, pivot sur place qui patine toujours, et patinage systématique, le vrai dangereux.
Introduction
Faites rouler un robot en carré d’un mètre, quatre virages à 90°, retour au départ. Il n’arrive pas. Étalonnez le diamètre des roues et la voie jusqu’à ce que les lignes droites soient exactes, recommencez, et il n’arrive toujours pas — et il rate d’une quantité différente sur moquette et sur carrelage.
Ce site nomme le patinage des roues comme la raison sur la page d’odométrie, la page des encodeurs, le projet micromouse et une demi-douzaine d’autres. Aucune ne dit ce qu’est vraiment le patinage, combien vous en avez, ni quelles parts sont actionnables.
Un encodeur mesure la roue, pas le sol
Cette phrase est tout le sujet.
Un encodeur compte la rotation des roues. L’odométrie veut le déplacement au sol. Ce sont le même nombre seulement tant que la zone de contact ne glisse pas, et la différence est le taux de patinage — la fraction du mouvement des roues qui n’est pas devenue mouvement du robot :
slip = (wheel travel − ground travel) / wheel travel
Deux conséquences qui façonnent tout ce qui suit :
Le patinage est invisible de l’intérieur. Aucun encodeur, si bon soit-il, ne peut le détecter, parce que l’encodeur mesure la chose qui a bougé. C’est la même cécité que le jeu du réducteur et elle a le même remède : quelque chose qui mesure le monde extérieur.
Ce n’est pas du bruit. Le bruit se moyenne ; le patinage généralement non, et la raison est l’avant-dernière section.
Le budget de traction
Un pneu ne peut pousser qu’aussi fort que le frottement le laisse :
F_max = µ × N
N est le poids appuyant vraiment sur les roues motrices — pas tout le poids du robot. Le même produit fixe combien fort le robot peut pousser autre chose, le seul travail où vous voulez la limite de traction aussi haute que possible plutôt que juste assez haute. Un châssis 2RM typique avec roulette porte quelque part entre la moitié et les deux tiers de sa masse sur l’essieu moteur, et le reste ne sert à rien d’utile pour la traction.
Divisez par la masse et le plafond est une accélération :
a_max = µ × (weight fraction on driven wheels) × g
La lecture utile du panneau du haut est que la conduite en ligne droite est rarement limitée en traction sur un robot amateur. Même le pire sol donne plus de trois fois l’accélération demandée par une conception typique. Si votre robot patine en ligne droite, vous commandez un échelon plutôt qu’une rampe — ce qu’un profil de mouvement existe pour empêcher.
Tourner est une autre histoire.
Un pivot sur place patine toujours
Un robot à entraînement différentiel a des roues fixes. Elles peuvent rouler avant et arrière et ne peuvent bouger latéralement — mais un pivot sur place exige exactement cela.
Faites pivoter le châssis sur son centre et chaque point de la zone de contact de chaque pneu trace un arc, tandis que la roue ne peut que rouler le long d’une droite tangente. La différence est le ripage : le pneu est traîné latéralement sur le sol pendant tout le virage. Une zone de contact large ripe plus qu’une étroite, et une roulette qui ne pivote pas librement combat aussi le virage.
Donc un pivot sur place n’est pas une manœuvre qui pourrait patiner. C’en est une qui patine par construction, et son cap dérivé des encodeurs est faux à chaque fois d’à peu près la même quantité, dans le même sens.
Cette dernière clause est le problème.
Le patinage systématique est le dangereux
Prenez une voie de 90 mm. Un pivot à 90° roule chaque roue de 70,7 mm. Laissez une roue perdre 2 % de cela en ripage et le cap sort court de 0,9° — un nombre assez petit pour être invisible sur un seul virage.
Faites maintenant un labyrinthe. Le panneau du bas de la figure montre les deux futurs :
- Signe aléatoire — des virages courts, d’autres longs. L’erreur croît en √N. Après 50 virages elle est d’environ 6°, et c’est vraiment une marche aléatoire modélisable.
- Systématique — chaque virage à gauche ripe pareil pour la même raison. L’erreur croît en N. Après 50 virages elle fait 45°, et le robot descend un couloir qu’il croit ailleurs.
Les vrais robots sont bien plus près du second. Le ripage vient d’une géométrie qui ne change pas entre virages, donc l’erreur non plus. C’est pourquoi « il dérive un peu » devient « il est perdu » sur une course, et c’est pourquoi la micromouse exige un gyroscope plutôt que de meilleurs encodeurs.
Découvrir combien vous en avez
Trois essais, le moins cher d’abord.
Roulez une ligne droite et mesurez. Marquez le sol, commandez exactement 1000 mm, mesurez ce que vous avez eu. Répétez sur deux sols. Une erreur d’échelle cohérente est l’étalonnage ; une erreur qui change avec le sol est le patinage.
Pivotez 10 fois et regardez. Commandez dix virages à 90° — soit 900°, ou deux rotations complètes et demie. Marquez le cap de départ et mesurez l’arrivée. Divisez l’erreur par dix. Cela amplifie une erreur par virage sinon inmesurable, et c’est la chose la plus utile de cette page.
Comparez les encodeurs avec un gyroscope. Si vous avez un MPU-6050, intégrez sa vitesse Z dans un virage et comparez avec le cap dérivé des encodeurs. Le désaccord est le patinage, mesuré directement, en direct, sans marquages au sol. Là où ils diffèrent, les encodeurs ont tort — le gyroscope se moque de ce qu’ont fait les roues.
Un pic de courant sans accélération correspondante est l’autre signature en direct : le moteur travaille et le robot n’avance pas.
Ce qui aide vraiment
Rampez tout. Un échelon commandé en vitesse de roues demande une accélération infinie, et le pneu fournit ce qu’il peut et glisse pour le reste. Profiler la commande est gratuit et c’est le plus gros gain unique.
Tournez en arc quand possible. Un arc roule les deux roues vers l’avant à des vitesses différentes et ripe bien moins qu’un pivot. Là où la carte le permet, préférez-le — c’est aussi le correctif du jeu, parce qu’un arc n’inverse jamais une roue non plus.
Mettez le poids sur les roues motrices, et gardez la roulette libre. Le poids sur une roulette non motrice est du poids qui ne fait pas de traction.
Rétrécissez la zone de contact si vous pivotez beaucoup. Des pneus larges et grippants aident l’accélération et nuisent aux pivots ; le compromis est réel et vaut d’être choisi délibérément.
Ne courez pas après µ avec plus d’adhérence seule. Plus de frottement signifie que le patinage arrive plus tard, pas que l’odométrie devient juste. C’est une marge, pas un correctif.
Ce que rien n’aide
L’odométrie des roues est de l’estime. Elle n’a aucune référence au monde, donc patinage, jeu et erreur de diamètre s’accumulent et ne sont jamais corrigés — c’est la même dérive non bornée contre laquelle le parcours de commande moteur met en garde, et c’est une propriété de la méthode plutôt qu’un défaut de votre montage.
Le correctif est un second avis :
- Un gyroscope corrige le cap, l’erreur qui fait le plus mal, et coûte peu.
- Des références de murs ou de ligne réinitialisent la position latérale à chaque fois que vous en voyez une — comment un suiveur de mur reste juste le long d’un couloir.
- Une carte — appariement de balayages ou SLAM — corrige les deux, au prix d’un lidar et de bien plus de calcul.
L’odométrie est excellente sur un mètre et sans valeur sur cent. Concevez autour de cela plutôt que d’essayer de le corriger.
Quand ça tourne mal
| Symptôme | Généralement |
|---|---|
| Le carré ne se ferme jamais malgré des lignes droites parfaites | Ripage de pivots ; mesurez-le par l’essai des dix virages |
| Distance juste sur carrelage, courte sur moquette | Patinage, pas étalonnage — l’erreur suit le sol |
| L’erreur de cap croît régulièrement dans un sens | Patinage systématique ; un gyroscope est le correctif bon marché |
| L’erreur croît vite d’abord, puis plafonne dans un couloir | Le mur vous corrige — c’est la référence qui fait son travail |
| Le robot ne patine qu’au démarrage | Échelon commandé au lieu d’une rampe |
| Gyro et encodeurs en désaccord dans les virages | Correct — ce désaccord est la mesure |
| Des pneus plus grippants n’ont pas corrigé l’odométrie | L’adhérence relève le seuil de patinage ; elle ne rend pas les encodeurs honnêtes |
| Une seule roue semble patiner | Répartition du poids ou roulette qui coince, pas le moteur |
L’habitude à emporter est l’essai des dix virages. Il convertit une erreur invisible en nombre, et une fois le nombre en main vous pouvez dire s’il faut un gyroscope, une rampe, ou rien du tout.
La transmission où le patinage est le mécanisme
Tout ce qui précède traite le patinage comme une panne. Sur une base mecanum, c’est la conception : les galets lâchent latéralement exprès, et c’est ainsi que le robot bouge latéralement. Les conséquences valent d’être dites plainement, parce qu’elles changent ce qu’il faut mesurer plutôt que l’intensité d’essayer.
- L’odométrie latérale est le nombre le plus faible du robot, pas un problème de réglage. L’encodeur est boulonné à la roue et la roue n’est délibérément pas le sol.
- Il y a un contrôle gratuit et il est à moitié aveugle. Quatre roues et trois degrés de liberté laissent une équation en trop —
FL + FR = RL + RRsur tout châssis rigide qui accroche — donc le résidu attrape une roue qui patine et ne peut voir les quatre patiner ensemble. La dérivation est ici. - Le correctif est des roues non motrices. Des roues folles omni sur suspensions à ressort ne portent aucun couple, donc elles ne patinent pas sous la commande, et elles transforment le pire nombre du robot en meilleur.
Baissez le curseur d’adhérence et regardez les encodeurs insister que le robot est arrivé.
Explorer le graphe
Fait partie de ces réalisations
Les projets et parcours d'apprentissage qui incluent ce tutoriel.
- ProjetConstruire un robot Mecanum qui roule de côté
- ProjetConstruire un rover GPS à waypoints qui roule tout seul
- Parcours d'apprentissageCommande des moteurs pour robots : un parcours d'apprentissage
- Parcours d'apprentissageSuivi de trajectoire pour robots : un parcours d'apprentissage
- Parcours d'apprentissageTransmission holonome : aller de côté sans tourner
Pour aller plus loin