Tutorial · Mittelstufe · 30 Min.
Getriebespiel in Robotern: Messen und beheben
Das Spiel in jedem Zahnradgetriebe, das einen Arm absacken und Odometrie driften lässt. In Grad vermessen, dann beseitigen oder darum herum konstruieren.
Einführung
Es gibt eine Familie von Roboterfehlern, die sich alle gleich präsentieren: Die Maschine liegt in eine Richtung richtig und in die andere falsch. Der Arm erreicht denselben Punkt von links und von rechts und landet zwei Positionen auseinander. Der Balancierroboter zittert um aufrecht und beruhigt sich nie, egal wie man abstimmt. Der Kurs des Labyrinthroboters liegt nach jeder Drehung um ein Grad daneben und nach dem Lauf um fünfzehn.
Keines davon sind Abstimmungsprobleme – und alle haben dieselbe Ursache. Zwischen deinem Motor und dem, was er bewegt, sitzt ein Zahnradgetriebe – und ein Zahnradgetriebe muss eine Lücke zwischen seinen Zähnen haben, sonst würde es klemmen. Diese Lücke heißt Spiel (Backlash): Wann immer der Motor die Richtung wechselt, bewegt sich der Abtrieb gar nicht, bis die Zähne die Lücke überqueren und auf der anderen Seite treffen.
Diese Seite benennt Spiel auf sieben Seiten als Grund, warum etwas nicht funktioniert. Das ist die Seite, die es erklärt.
Was es wirklich ist
Spiel ist keine Reibung und keine Verzögerung. Es ist eine Totzone mit Gedächtnis.
Man stelle sich den treibenden Zahn an einer Flanke des getriebenen Zahns liegend vor. Drücken, und der Abtrieb folgt dem Eingang exakt – gar kein Fehler. Nun umkehren. Der treibende Zahn verlässt diese Flanke und wandert über die Lücke – und während der ganzen Überquerung bleibt der Abtrieb exakt, wo er war. Bei Kontakt an der fernen Flanke folgt der Abtrieb wieder – dauerhaft versetzt um die Lückenbreite.
Zwei Folgen ergeben sich direkt aus dieser Beschreibung, und sie lohnen Behalten:
- Spiel kostet nichts, solange man in eine Richtung fährt. Es ist eine Umkehrsteuer, einmal pro Umkehr fällig, egal wie weit man danach fährt. Die teuerste Umkehr eines Roboters ist eine Notbremsung, wo das Spiel als freier Weg direkt auf den Anhalteweg addiert wird.
- Der Fehler hängt davon ab, woher man kam. Das macht es zur Hysterese statt einfachem Offset – und darum kann keine Kalibrierkonstante es beseitigen.
Die Form, die es macht
Ein Gelenk mit 4° Spiel hin und her fahren und plotten, was der Abtrieb tut.
Das untere Feld ist das nützliche mentale Bild – denn es macht beide Äste offensichtlich. Aufwärts liegt der Abtrieb eine halbe Lücke zurück. Abwärts liegt er eine halbe Lücke voraus. Dazwischen liegt der Abtrieb, wo man ihn ließ.
Eigenes in zehn Minuten vermessen
Um eine Zahl, die man nicht hat, kann man nicht herumkonstruieren – und jedes Getriebe ist anders. Es gibt zwei Wege dorthin.
Von Hand, für alles. Motor stromlos schalten und Chassis festhalten. Einen Klebestreifen an Radfelge oder Armende kleben und den Abtrieb sanft zwischen seinen zwei Anschlägen wiegen – nicht so fest, dass sich etwas biegt, nur bis zum Widerstand auf jeder Seite. Beide Extreme markieren und den Bogen dazwischen messen. Umrechnen:
backlash (°) = arc / (π · D) × 360
An vier, fünf Stellen über eine volle Abtriebsumdrehung wiederholen und die schlechteste behalten. Zahn-zu-Zahn-Streuung und Wellenexzentrizität sind real – und die zufällig zuerst getestete Stelle ist nicht unbedingt repräsentativ.
Mit Encoder, präziser. Hat dein Motor einen Encoder auf der Motorwelle – ein N20-Encodermotor hat –, ihn sehr langsam in eine Richtung fahren, bis sich der Abtrieb gerade zu bewegen beginnt, den Zähler nullen, dann umkehren und zählen, bis sich der Abtrieb wieder bewegt. Dieser Zählwert ist die Lücke:
backlash (°) = counts / counts-per-output-rev × 360
Für einen N20 mit 7 Impulsen pro Kanal pro Motorumdrehung, ×4 dekodiert, hinter 1:100-Getriebe sind das 2800 Zählwerte pro Abtriebsumdrehung – 31 Zählwerte sind also 4°. Reichlich Auflösung, um etwas zu messen, das man kaum sieht.
Wo der Encoder sitzt, entscheidet, was man sehen kann
Das ist der Teil, der Leute überrascht – und er entscheidet, ob die gerade gemessene Zahl ein Problem ist, das man per Software beheben kann.
Ein Encoder auf der Motorwelle sitzt vor dem Getriebe. Während der Überquerung meldet er den Motor fröhlich drehend – denn der Motor dreht fröhlich. Das Rad nicht. Deine Positionsschätzung sagt: Du bist gefahren; bist du nicht. Spiel ist für einen motorseitigen Encoder unsichtbar und landet in deiner Odometrie als reiner, unkorrigierter Fehler.
Ein Encoder auf der Abtriebswelle sitzt hinter dem Getriebe und meldet die Wahrheit – aber genau darum liest er während der Überquerung null, weshalb es der motorseitige Encoder ist, mit dem man Spiel überhaupt misst. Der Encoder, der es nicht kompensieren kann, ist der, der es sehen kann.
Die ehrliche Zusammenfassung für einen Hobbyroboter also: Bei fast allen sitzt der Encoder am Motor und Spiel ist ungemessener Fehler in der Positionsschätzung. Alles unten handelt davon, diesen Fehler klein zu machen oder bedeutungslos.
Was es dich kostet
Spiel an einem Gelenk ist ein Winkel; was es kostet, ist eine Strecke – und der Hebel entscheidet, wie viel. Dieselben 4° Spiel, drei Roboter:
| Wo | Hebel | Kosten pro Umkehr |
|---|---|---|
| Roboterarmschulter | 150-mm-Glied | 10,5 mm am Greifer |
| Antriebsrad | 65-mm-Rad | 2,27 mm Fahrt |
| Micromouse-Rad | 42-mm-Rad | 1,47 mm Fahrt |
Die Armzeile erklärt, warum Gelenkarme bei Hobbytoleranzen am meisten leiden: Das Schulterspiel wird mit der gesamten Armlänge multipliziert, bevor es das Werkzeug erreicht. Ein Grad an der Schulter eines 150-mm-Glieds sind bereits 2,6 mm am Greifer.
Die Radzeilen sehen harmlos aus, bis man Umkehrungen zählt. Ein Micromouse dreht an jeder Kreuzung auf der Stelle – und eine Drehung auf der Stelle kehrt jedes Mal ein Rad um. Mit 42-mm-Rädern auf 90-mm-Spur sind 4° Spiel 0,93° Kursfehler pro Drehung – und Kursfehler mitteln sich als das eine nicht heraus, denn jede folgende Gerade fährt entlang falscher Peilung. Hundert Drehungen sind 147 mm Fahrt, die deine Odometrie zählte und der Roboter nie machte.
Ein selbstbalancierender Roboter ist der Extremfall – denn er kehrt fortlaufend um: hunderte Male pro Sekunde, in kleinen Schritten, und jeder Schritt ist kleiner als die Lücke. Er verbringt den Großteil seines Lebens in der Totzone – weshalb ihn kein Verstärkungssatz je beruhigt.
Lösung 1: weniger davon kaufen
Die billigste Lösung ist meist das Teil.
Metallzahnräder statt Kunststoff. Spritzgusszahnräder haben lose Toleranzen und verschleißen loser. Ein Metallgetriebe beseitigt Spiel nicht, hat aber typisch einen Bruchteil davon – der einzelne Grund, warum N20-Motoren in jedem Balancierroboter- und Micromousebau auftauchen, und warum der TT-Getriebemotor für einen Linienfolger reicht, der meist vorwärts fährt.
Wissen, welche Stufe zählt. Spiel jeder Stufe, auf den Abtrieb bezogen, wird durch die Untersetzung zwischen dieser Stufe und dem Abtrieb geteilt. Die letzte Stufe hat Untersetzung eins zum Abtrieb – ihr volles Spiel erscheint also und alles davor wird heruntergeteilt. Ein hochuntersetztes Getriebe ist daher nicht automatisch schlechter: Und wer ein Zahnrad verbessern will, verbessere das letzte.
Vorspannen. Gegeneinander gefederte geteilte Zahnräder, spielfreie Leitspindelmuttern, ein gespannter Riemen statt Zahnradpaar. All das hält die Zähne auf beiden Flanken zugleich in Kontakt. All das kostet Reibung, Wirkungsgrad und Verschleiß – der Tausch, den man eingeht.
Oder das Getriebe streichen. Ein riemengetriebenes oder Direktantriebsgelenk hat kein Zahnradspiel. Es hat Nachgiebigkeit stattdessen – ein anderes Problem, unten behandelt.
Lösung 2: von einer Seite anfahren
Die älteste Lösung in der Zerspanung und die preiswerteste in Software – denn sie kostet nichts.
Spiel wird nur bei Umkehr fällig. Also richten, dass der letzte Teil jeder Bewegung in dieselbe Richtung zeigt – und die Lücke ist beim Ankommen immer schon überquert. Wer eine Position von oben erreichen muss, überschießt vorbei und kommt von unten zurück. 3D-Drucker tun das auf der Z-Achse; CNC-Bediener tun es von Hand als Reflex.
// 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 muss bequem größer sein als das gemessene Spiel – das Doppelte ist ein vernünftiger Startpunkt. Der Preis ist Zeit auf der Hälfte deiner Bewegungen, und der Gewinn Wiederholbarkeit, die nicht mehr davon abhängt, woher du kamst.
Für einen mobilen Roboter liest sich derselbe Trick anders: Einen weiten Bogen einer Drehung auf der Stelle vorziehen, wo die Karte einen erlaubt – denn ein Bogen kehrt kein Rad je um.
Lösung 3: den Regler nicht dagegen kämpfen lassen
Eine PID-Schleife trifft Spiel als Totzone mitten in ihrem eigenen Regelbereich – und behandelt sie schlecht, auf spezifische, wiedererkennbare Art.
In der Lücke steigt der Ausgang und nichts geschieht – der Fehler schrumpft also nicht. Der Integralanteil summiert weiter auf durch eine Periode, in der kein Aufwand geholfen hätte. Wenn die Zähne endlich greifen, wird der aufgestaute Anteil auf einmal auf einen Mechanismus angewandt, der nun verbunden ist – und das Gelenk ruckt übers Ziel. Dann kehrt es um, überquert die Lücke erneut und tut dasselbe in die andere Richtung. Das ist ein Grenzzyklus – eine stabile Jagdschwingung, die nie konvergiert –, und ihre Amplitude setzt die Mechanik, nicht die Verstärkungen.
Was wirklich hilft:
- Aufhören zu integrieren, wenn du nicht fährst, aber befiehlst. Liegt der Ausgang über der Schwelle, die Bewegung erzeugen sollte, und der Encoder sagt: Der Abtrieb bewegt sich nicht – das Integral einfrieren. Das ist dieselbe Anti-Windup-Logik wie gegen einen sättigenden Aktor; die Totzone ist nur ein Aktor, der vorübergehend abgehängt ist.
- Erst
Kisenken, dannKp. Der Integralanteil ist der, der aus einer Totzone einen Grenzzyklus macht. - Nicht dem letzten Gradbruchteil hinterherjagen. Bei 4° Spiel ist ein Toleranzband von 1° eine Schwingungseinladung. Ein Totband akzeptieren, das etwas breiter ist als das Spiel – und die Schleife hört auf zu jagen.
- Die Umkehr profilieren. Ein Bewegungsprofil, das durch Nullgeschwindigkeit hindurch entspannt, überquert die Lücke sanft statt in die ferne Zahnflanke zu knallen – leiser und weit freundlicher zu Kunststoffzahnrädern.
Im PID-Simulator beobachten, indem man gegen eine Strecke abstimmt, die träge auf kleine Eingänge antwortet: Dieselben Verstärkungen, die für große Bewegungen stabil sind, jagen um den Sollwert bei kleinen.
Nachgiebigkeit ist die andere Hälfte verlorener Bewegung
Wer Spiel durch Wiegen des Abtriebs misst, misst Spiel und Nachgiebigkeit zusammen – und sie brauchen verschiedene Lösungen. Mit einem Test unterscheiden: Last aufbringen, Auslenkung notieren, dann loslassen.
| Spiel | Nachgiebigkeit | |
|---|---|---|
| Auslenkung gegen Last | Feste Lücke, lastunabhängig | Proportional zur Last |
| Beim Loslassen | Bleibt, wo man es ließ | Federt zurück |
| Lösung | Bessere Zahnräder, Vorspannung, Einseitanfahrt | Steifere Teile, kürzere Hebel, Abstützung |
| Symptom | Richtungsabhängiger Fehler | Durchhang unter Last, Klingeln nach Bewegungen |
Ein langer Acrylarm hat sehr wenig Spiel und viel Nachgiebigkeit. Ein billiges Kunststoffgetriebe an kurzem Stummel ist umgekehrt. Beide lesen sich als „der Arm fährt nicht dorthin, wohin ich befahl“ – weshalb sich der Zwei-Minuten-Test lohnt, bevor man irgendetwas kauft.
Wenn es schiefgeht
| Symptom | Meist |
|---|---|
| Arm erreicht einen Punkt von jeder Seite anders | Spiel, unumwunden – messen, bevor man irgendetwas abstimmt |
| Balancierroboter zittert und beruhigt sich nie | Spiel größer als die Korrekturschritte; Metallgetriebe, nicht mehr Abstimmen |
| Kurs driftet ein Grad pro Drehung | Spiel am umkehrenden Rad; Bögen bevorzugen oder Gyro dazu |
| Odometrie sagt, er fuhr, und er fuhr nicht | Motorseitiger Encoder sieht die Getriebelücke nicht |
| Stabile Schwingung um den Sollwert | Integralanteil wickelt durch die Totzone auf |
| Position ist wiederholbar, sackt aber unter Last | Nachgiebigkeit, nicht Spiel – versteifen, nicht neu untersetzen |
| Wurde über Monate schlechter | Kunststoffzahnradverschleiß; Spiel wächst mit Gebrauch |
Spiel ist der Grund, warum ein Roboter, der in Simulation perfekt ist, auf der Werkbank enttäuscht – denn es ist exakt die Art Ding, die ein ideales Modell auslässt. Einmal messen, die Zahl aufschreiben, und der Großteil des Mysteriums geht mit. Kommt die Zahl groß genug heraus, um wehzutun, ist die Antwort meist ein besserer Motor mit Getriebe statt ein weiterer Abstimmnachmittag.
Den Graphen erkunden
Teil dieser Bauprojekte
Projekte und Lernpfade, die dieses Tutorial enthalten.
Weiterführende Literatur