Tutorial · Mittelstufe · 30 Min.
Radschlupf: Warum Odometrie driftet und wie man dagegen hält
Die Räder drehen weiter, als der Roboter fährt. Traktionsgrenze, warum eine Drehung auf der Stelle rutscht und warum systematischer Schlupf gefährlich ist.
Einführung
Einen Roboter in einem Einmeterquadrat fahren, vier 90°-Drehungen, zurück zum Start. Er kommt nicht an. Raddurchmesser und Spurweite kalibrieren, bis die Geraden exakt sind, erneut fahren – und er kommt weiter nicht an: und verfehlt auf Teppich anders als auf Fliese.
Diese Seite benennt Radschlupf als Grund – auf der Odometrieseite, der Encoderseite, im Micromouse-Projekt und einem halben Dutzend anderen. Was keine davon sagt: was Schlupf wirklich ist, wie viel man davon hat, oder welche Teile davon man angehen kann.
Ein Encoder misst das Rad, nicht den Boden
Dieser Satz ist das ganze Thema.
Ein Encoder zählt Radumdrehung. Odometrie braucht Bodenfahrt. Dasselbe sind beide nur, solange der Aufstandsfleck nicht gleitet – und die Differenz ist die Schlupfrate: der Anteil der Radbewegung, der nicht zu Roboterbewegung wurde:
slip = (wheel travel − ground travel) / wheel travel
Zwei Folgen, die alles unten formen:
Schlupf ist von innen unsichtbar. Kein Encoder, wie gut auch immer, erkennt ihn – denn der Encoder misst das, was sich bewegte. Dieselbe Blindheit wie Getriebespiel – und dieselbe Heilung: etwas, das die Außenwelt misst.
Er ist kein Rauschen. Rauschen mittelt sich heraus; Schlupf meist nicht – und der Grund ist der vorletzte Abschnitt.
Das Traktionsbudget
Ein Reifen kann nur so stark drücken, wie Reibung ihn lässt:
F_max = µ × N
N ist das Gewicht, das wirklich auf den angetriebenen Rädern lastet – nicht das Gesamtgewicht des Roboters. Dasselbe Produkt setzt, wie stark der Roboter etwas anderes schieben kann – den einen Job, wo die Traktionsgrenze so hoch wie möglich statt bloß hoch genug sein soll. Ein typisches 2WD-Chassis mit Laufrolle trägt irgendwo halb bis zwei Drittel seiner Masse auf der Antriebsachse – und der Rest tut für Traktion nichts Nützliches.
Durch Masse teilen und die Decke ist eine Beschleunigung:
a_max = µ × (weight fraction on driven wheels) × g
Die nützliche Lesart des oberen Felds: Geradeausfahrt ist an einem Hobbyroboter selten traktionsbegrenzt. Selbst die schlechteste Fläche dort liefert über dreifache Beschleunigung, die ein typischer Entwurf verlangt. Rutscht dein Roboter geradeaus, befiehlst du einen Sprung statt Rampe – wofür es ein Bewegungsprofil gibt.
Drehen ist eine andere Geschichte.
Eine Drehung auf der Stelle rutscht immer
Ein Differenzialroboter hat feste Räder. Sie können vorwärts und rückwärts rollen und nicht seitwärts fahren – eine Drehung auf der Stelle verlangt aber exakt das.
Das Chassis um seine Mitte rotieren und jeder Punkt jedes Reifenaufstandsflecks beschreibt einen Bogen – während das Rad nur entlang einer geraden Tangente daran rollen kann. Die Differenz ist Schrubben: Der Reifen wird die ganze Drehung seitwärts über den Boden gezogen. Ein breiter Aufstandsfleck schrubbt mehr als ein schmaler – und eine nicht frei schwenkende Laufrolle kämpft ebenfalls gegen die Drehung.
Eine Drehung auf der Stelle ist also kein Manöver, das rutschen könnte. Es rutscht konstruktionsbedingt – und sein encoderabgeleiteter Kurs liegt jedes Mal um grob denselben Betrag daneben, in dieselbe Richtung.
Dieser letzte Satzteil ist das Problem.
Systematischer Schlupf ist die gefährliche Art
90 mm Spur nehmen. Eine 90°-Drehung rollt jedes Rad 70,7 mm. Ein Rad verliere 2 % davon an Schrubben und der Kurs kommt 0,9° zu kurz heraus – eine Zahl, klein genug, um auf einer einzelnen Drehung unsichtbar zu sein.
Nun ein Labyrinth fahren. Das untere Feld des Bilds zeigt beide Zukünfte:
- Zufälliges Vorzeichen – manche Drehungen kurz, manche lang. Fehler wächst mit √N. Nach 50 Drehungen sind es etwa 6° – und es ist wirklich ein modellierbarer Zufallspfad.
- Systematisch – jede Linksdrehung schrubbt aus demselben Grund gleich. Fehler wächst mit N. Nach 50 Drehungen sind es 45° – und der Roboter fährt einen Korridor hinunter, den er woanders wähnt.
Echte Roboter liegen weit näher am zweiten. Das Schrubben stammt aus Geometrie, die sich zwischen Drehungen nicht ändert – der Fehler also auch nicht. Darum wird aus „er driftet etwas“ über einen Lauf „er ist verloren“ – und darum braucht der Micromouse ein Gyro statt bessere Encoder.
Herausfinden, wie viel man hat
Drei Tests, billigster zuerst.
Eine Gerade fahren und messen. Den Boden markieren, exakt 1000 mm befehlen, messen, was herauskam. Auf zwei Oberflächen wiederholen. Ein konsistenter Maßstabsfehler ist Kalibrierung; ein Fehler, der sich mit Oberfläche ändert, ist Schlupf.
Zehnmal drehen und schauen. Zehn 90°-Drehungen befehlen – das sind 900°, oder zweieinhalb Volldrehungen. Startkurs markieren und Endstand messen. Den Fehler durch zehn teilen. Das verstärkt einen Pro-Drehung-Fehler, der sonst unmessbar ist – und ist das Nützlichste auf dieser Seite.
Die Encoder mit einem Gyro vergleichen. Wer ein MPU-6050 hat: Seine Z-Rate durch eine Drehung integrieren und mit encoderabgeleitetem Kurs vergleichen. Der Dissens ist der Schlupf – direkt gemessen, live, ohne Bodenmarkierungen. Wo sie sich unterscheiden, liegen die Encoder falsch: Dem Gyro ist egal, was die Räder taten.
Eine Stromspitze ohne passende Beschleunigung ist die andere Live-Signatur: Der Motor arbeitet und der Roboter bewegt sich nicht.
Was wirklich hilft
Alles rampen. Ein befohlener Sprung in Raddrehzahl verlangt unendliche Beschleunigung – und der Reifen liefert, was er kann, und rutscht für den Rest. Den Befehl zu profilieren ist gratis und der größte einzelne Gewinn.
In Bögen drehen, wo man kann. Ein Bogen rollt beide Räder vorwärts mit verschiedenen Drehzahlen und schrubbt weit weniger als eine Drehung auf der Stelle. Wo die Karte es erlaubt, bevorzugen – das ist auch die Spiel-Lösung: Denn ein Bogen kehrt ebenfalls kein Rad je um.
Das Gewicht auf die Antriebsräder bringen und die Laufrolle frei halten. Gewicht auf ungetriebener Laufrolle ist Gewicht, das keine Traktion erzeugt.
Den Aufstandsfleck verschmälern, wenn man viel dreht. Breite griffige Reifen helfen Beschleunigung und schaden Drehungen; der Tausch ist real und lohnt bewusstes Wählen.
µ nicht mit mehr Grip allein jagen. Mehr Reibung heißt: Der Schlupf geschieht später, nicht dass Odometrie korrekt wird. Es ist Reserve, keine Lösung.
Was nichts hilft
Radodometrie ist Koppelnavigation. Sie hat keine Weltreferenz – Schlupf, Spiel und Durchmesserfehler summieren sich also und werden nie korrigiert: dieselbe unbegrenzte Drift, vor der der Motorsteuerungspfad warnt – und eine Eigenschaft der Methode statt Defekt deines Baus.
Die Lösung ist eine zweite Meinung:
- Ein Gyro korrigiert Kurs – den Fehler, der am meisten wehtut –, und ist billig.
- Wand- oder Linienreferenzen setzen Querposition jedes Mal zurück, wenn man eine sieht – wie ein Wandfolger im Korridor spurtreu bleibt.
- Eine Karte – Scanmatching oder SLAM – korrigiert beides, zum Preis eines Lidars und weit mehr Rechenleistung.
Odometrie ist hervorragend über einen Meter und wertlos über hundert. Darum herum entwerfen statt es beheben zu wollen.
Wenn es schiefgeht
| Symptom | Meist |
|---|---|
| Quadrat schließt trotz perfekter Geraden nie | Drehschrubben auf der Stelle; mit Zehn-Drehungen-Test messen |
| Strecke auf Fliese richtig, auf Teppich kurz | Schlupf, nicht Kalibrierung – der Fehler folgt der Oberfläche |
| Kursfehler wächst stetig in eine Richtung | Systematischer Schlupf; ein Gyro ist die billige Lösung |
| Fehler wächst erst schnell, plateaut dann im Korridor | Die Wand korrigiert dich – das ist die Referenz bei der Arbeit |
| Roboter rutscht nur beim Anfahren | Befehlssprung statt Rampe |
| Gyro und Encoder widersprechen sich bei Drehungen | Korrekt – dieser Dissens ist die Messung |
| Griffigere Reifen behebten Odometrie nicht | Grip hebt die Schlupfschwelle; er macht Encoder nicht ehrlich |
| Nur ein Rad scheint zu rutschen | Gewichtsverteilung oder klemmende Laufrolle, nicht der Motor |
Die Gewohnheit zum Mitnehmen ist der Zehn-Drehungen-Test. Er verwandelt einen Fehler, den niemand sehen kann, in eine Zahl – und mit der Zahl lässt sich sagen, ob man ein Gyro, eine Rampe oder gar nichts braucht.
Der Antriebsstrang, wo Schlupf der Mechanismus ist
Alles oben behandelt Schlupf als Defekt. Auf einer Mecanumbasis ist er der Entwurf: Die Rollen geben seitwärts absichtlich nach – und so bewegt sich der Roboter überhaupt seitwärts. Die Folgen lohnen klar auszusprechen – denn sie ändern, was man messen sollte statt wie stark man sich bemühen sollte.
- Querodometrie ist die schwächste Zahl am Roboter, kein Abstimmungsproblem. Der Encoder sitzt am Rad und das Rad ist bewusst nicht der Boden.
- Es gibt eine Gratisprüfung und sie ist halb blind. Vier Räder und drei Freiheitsgrade lassen eine überzählige Gleichung –
FL + FR = RL + RRan jedem starren, greifenden Chassis –, das Residuum fängt also ein rutschendes Rad und sieht nicht, wenn alle vier gemeinsam rutschen. Die Herleitung steht hier. - Die Lösung sind ungetriebene Räder. Omni-Messräder auf Federhaltern tragen kein Drehmoment – rutschen also nicht unter Befehl – und verwandeln die schlechteste Zahl am Roboter in die beste.
Den Grip-Regler fallen lassen und den Encodern zusehen, wie sie weiter behaupten, der Roboter sei angekommen.
Den Graphen erkunden
Teil dieser Bauprojekte
Projekte und Lernpfade, die dieses Tutorial enthalten.
Weiterführende Literatur