Bewegung -- Aktorik in der Praxis
Zweiter Teil der Robotik-Serie. Nach dem Grundmodell Sense-Think-Act geht es hier um die Act-Phase -- die greifbarste der drei.
Handeln heißt beim fahrenden Roboter fast immer: Räder drehen. Das klingt nach dem einfachsten Teil des Systems, und in gewisser Weise stimmt das auch -- die Bauteile dafür sind hier schon beschrieben (Aktoren, Motortreiber, H-Brücke). Interessant wird es an den Übergängen: von der Absicht ("fahr geradeaus") zum Sollwert für zwei Motoren, und vom Sollwert zur tatsächlichen Bewegung auf dem Boden. Genau dort sitzen die Entscheidungen, die den Rest des Roboters prägen.
Lern-Hinweis: Die Leistungselektronik hier ist mein Heimspiel, die Fahrwerks- und Antriebsseite lerne ich beim Schreiben mit. Die Konzepte sind sauber recherchiert, aber wo ich aus eigener Erfahrung spreche und wo aus Literatur, versuche ich kenntlich zu machen.
Antriebskonzepte -- vier Arten, sich in der Ebene zu bewegen
Ein Fahrroboter bewegt sich auf einer Fläche. Wie er das tut, ist eine der ersten Festlegungen -- und sie ist schwer zu revidieren, weil Kinematik, Sensorik und Regelung darauf aufbauen.
| Konzept | Aufbau | Stärken | Schwächen |
|---|---|---|---|
| Differentialantrieb | zwei angetriebene Räder, ein Stützrad | dreht auf der Stelle, minimal, einfach zu rechnen | fährt nicht seitwärts, empfindlich auf Raddrehzahl-Unterschiede |
| Kettenantrieb / Skid-Steer | zwei Ketten oder vier starre Räder | geländegängig, robust | Räder schlupfen beim Drehen -- Odometrie wird unzuverlässig |
| Ackermann-Lenkung | Antrieb hinten, gelenkte Vorderachse | fährt wie ein Auto, effizient bei Tempo | kann nicht auf der Stelle drehen, Mindestwenderadius |
| Omni- / Mecanum-Räder | drei oder vier Spezialräder | fährt in jede Richtung, auch seitwärts | teuer, empfindlich, Ansteuerung aufwendiger |
Die vier Konzepte in der Draufsicht. Dunkle Räder sind angetrieben, helle laufen mit -- und nur der Ackermann-Antrieb kann sich nicht auf der Stelle drehen.
Für kleine Selbstbau-Roboter ist der Differentialantrieb (engl. differential drive) der Standard, und das aus gutem Grund: zwei Getriebemotoren, ein Stützrad, fertig. Der Ausweichroboter und der Linienfolger fahren beide so. Die restliche Serie nimmt ihn deshalb als Referenzfall.
Warum zwei angetriebene Räder reichen -- und wo die Grenze liegt
Eine Bewegung in der Ebene hat drei Freiheitsgrade: Position in \(x\), Position in \(y\) und Orientierung \(\theta\) (der Winkel, in den der Roboter blickt). Der Differentialantrieb hat aber nur zwei Stellgrößen -- die Drehzahl des linken und des rechten Rades. Zwei Stellgrößen für drei Freiheitsgrade: Das sieht nach zu wenig aus und ist trotzdem genug.
Der Grund: Zwei Stellgrößen genügen, um jeden Punkt in jeder Ausrichtung zu erreichen -- nur eben nicht auf beliebigem Weg. Aus den beiden Raddrehzahlen ergeben sich direkt die zwei Bewegungen, die zählen:
- beide Räder gleich schnell vorwärts → Geradeausfahrt,
- beide gleich schnell, aber gegenläufig → Drehung auf der Stelle,
- unterschiedlich schnell → Kurve; je größer der Unterschied, desto enger.
Drei Fälle, zwei Stellgrößen: Aus dem Verhältnis von \(v_L\) und \(v_R\) folgt alles -- bis hin zum Bahnradius. Der Momentanpol ist der Punkt, um den der Roboter sich in diesem Augenblick dreht; bei der Geradeausfahrt liegt er im Unendlichen.
Was nicht geht: seitwärts fahren. Ein Differentialantrieb muss sich erst drehen, dann fahren -- einparken heißt rangieren. Diese Eigenschaft heißt nichtholonom (engl. nonholonomic): Der Roboter kann alle Zielzustände erreichen, aber seine momentanen Bewegungsrichtungen sind eingeschränkt. Omni-Räder heben genau diese Einschränkung auf, deshalb sind sie in der Ansteuerung aufwendiger.
Für die Praxis reicht die Merkregel: Summe der Raddrehzahlen ⇒ Fahrt, Differenz ⇒ Drehung. Die saubere Rechnung dazu -- wie aus zwei Raddrehzahlen eine Bahn in der Ebene wird -- kommt in Teil 5 (Koordinaten & Kinematik).
Von der Drehzahl zur Geschwindigkeit
Zwischen "Motor dreht" und "Roboter fährt" liegt schlichte Geometrie. Dreht ein Rad mit dem Radius \(r\) (in m) mit der Drehzahl \(n\) (in Umdrehungen pro Sekunde), rollt es ohne Schlupf mit der Geschwindigkeit
ab. Ein typisches Bastelrad mit 65 mm Durchmesser (\(r \approx 0{,}0325\) m) an einem Getriebemotor mit 100 Umdrehungen pro Minute (\(n \approx 1{,}67\ \mathrm{s^{-1}}\)) ergibt rund 0,34 m/s -- gut 1 km/h. Das klingt langsam und ist für einen Zimmerroboter schon zügig: Bei 30 cm Bremsweg-Reserve und einem Ultraschallsensor, der etwa 20-mal pro Sekunde misst, legt der Roboter zwischen zwei Messungen bereits 1,7 cm zurück. Fahrgeschwindigkeit und Zykluszeit hängen zusammen -- der Takt aus Teil 1 taucht hier zum ersten Mal als harte Auslegungsgröße auf.
Genauso wichtig wie die Drehzahl ist das Drehmoment \(\tau\) (in N·m) -- die Fähigkeit, das Fahrzeug überhaupt in Bewegung zu setzen. Ein Getriebe mit der Untersetzung \(i\) (dimensionslos, z. B. 1:48) tauscht das eine gegen das andere: Die Abtriebsdrehzahl sinkt um den Faktor \(i\), das Abtriebsmoment steigt näherungsweise um denselben Faktor (abzüglich Getriebewirkungsgrad). Deshalb sitzt an praktisch jedem Roboterrad ein Getriebemotor und kein nackter DC-Motor: Ein ungetriebener Motor dreht schnell und hat fast kein Moment -- er würde das Fahrzeug nicht anfahren können.
Welcher Motor für welchen Zweck
| Motortyp | Typischer Einsatz | Ansteuerung | Anmerkung |
|---|---|---|---|
| DC-Getriebemotor | Antriebsräder | PWM + H-Brücke | Standardfall; billig, robust, keine Positionsrückmeldung |
| Modellbau-Servo | Sensor schwenken, Greifer, Lenkachse | ein PWM-Signal (Pulsweite = Winkel) | regelt seine Position selbst, Stellbereich meist ~180° |
| Servo mit Dauerlauf-Umbau | Antriebsrad bei Mini-Robotern | wie Servo, Pulsweite = Drehrichtung/-tempo | bequem, aber ungenau und schwach |
| Schrittmotor | präzise Positionierung, kein Fahrantrieb | Schrittfolge über Treiber-IC | zählbare Schritte, dafür schwer, stromhungrig, laut |
| BLDC | schnelle oder große Fahrzeuge | elektronische Kommutierung | leistungsdicht, aber Regler nötig |
Für den Einstieg gilt fast immer: DC-Getriebemotoren für die Räder, ein Servo für den schwenkbaren Sensorkopf. Der Servo ist dabei eine kleine Besonderheit -- er ist selbst schon ein vollständiger Sense-Think-Act-Kreis im Miniaturformat: Ein Potentiometer misst die Ist-Position, eine kleine Elektronik vergleicht mit dem Sollwert aus der Pulsweite und stellt den Motor nach. Wer einen Servo ansteuert, delegiert eine Regelung, die man sonst selbst schreiben müsste.
PWM -- Drehzahl stellen, ohne die Spannung zu verstellen
Ein Mikrocontroller-Pin kennt nur an und aus. Für halbe Geschwindigkeit die Spannung zu halbieren wäre elektrisch möglich, aber verlustbehaftet und aufwendig. Stattdessen wird geschaltet: Pulsweitenmodulation (engl. PWM) legt die volle Spannung an, aber nur für einen Bruchteil der Zeit. Das Verhältnis von Ein-Zeit zur Periodendauer ist das Tastverhältnis \(D\) (engl. duty cycle, 0 bis 1); die wirksame Mittelspannung am Motor ist
mit \(U_{\mathrm{B}}\) als Betriebsspannung. Motor und Fahrzeugmasse sind träge genug, dass daraus eine gleichmäßige Drehung wird und kein Ruckeln -- die Induktivität der Motorwicklung glättet zusätzlich den Strom \(I\).
Links das Prinzip, rechts die Ernüchterung: Der Zusammenhang zwischen Tastverhältnis und Geschwindigkeit ist weder linear noch geht er durch den Nullpunkt.
Zwei Dinge, die in keiner Formel stehen und in der Praxis sofort auffallen:
- Unter etwa 20–30 % Tastverhältnis passiert gar nichts. Der Motor muss erst das Losbrechmoment (Haftreibung in Getriebe und Lagern) überwinden. Diese Totzone ist bei jedem Motor anders und macht die Kennlinie zwischen PWM-Wert und Geschwindigkeit von Haus aus nichtlinear -- ein Grund mehr, später zu regeln statt zu steuern.
- Doppeltes Tastverhältnis heißt nicht doppelte Geschwindigkeit. Rollreibung, Last und Gegen-EMK (engl. Back-EMF) sorgen dafür, dass die Kennlinie krumm ist. Wer sich auf "PWM 128 = halbes Tempo" verlässt, wird enttäuscht.
Bei der PWM-Frequenz lohnt ein Blick: Zu niedrig, und man hört den Motor pfeifen (die üblichen ~490 Hz eines Arduino liegen mitten im Hörbaren); zu hoch, und die Schaltverluste im Treiber steigen. Wenige Kilohertz sind ein brauchbarer Kompromiss.
Zwischen Pin und Motor: der Treiber
Ein GPIO-Pin liefert wenige Milliampere -- ein Getriebemotor zieht im Anlauf leicht das Hundertfache. Dazwischen sitzt zwingend Leistungselektronik, in aller Regel eine H-Brücke: vier Schalter, die den Motor in beiden Polaritäten an die Versorgung legen können und damit beide Drehrichtungen ermöglichen. Wie der Strom dort wirklich läuft -- besonders in der PWM-Aus-Phase, wenn die Motorinduktivität ihren Strom weitertreiben will --, steht ausführlich im H-Brücken-Artikel; die Bauteil-Auswahl im Motortreiber-Artikel.
Für die Aktorik-Sicht reichen drei Konsequenzen:
- Rückwärts ist kein Sonderfall. Mit der H-Brücke ist Rückwärtsfahren nur eine andere Schalterkombination -- der Grund, warum ein Differentialantrieb ohne jede Mechanik auf der Stelle drehen kann.
- Bremsen und Ausrollen sind verschiedene Dinge. Schaltet man beide Motoranschlüsse auf Masse, wirkt der Motor als Generator gegen seine eigene Bewegung und bremst aktiv (brake); lässt man ihn offen, rollt der Roboter aus (coast). Das ist eine echte Verhaltensentscheidung, keine Nebensache -- beim Anhalten vor einem Hindernis will man in der Regel bremsen.
- Der Motor speist zurück. Beim Bremsen und beim Abschalten wird der Motor kurzzeitig zum Generator. Die Gegen-EMK und die in der Wicklung gespeicherte Energie müssen einen Weg haben (Freilaufdioden bzw. die Body-Dioden der Brücke), sonst leidet die Elektronik.
Praxisfallen, die jeden ersten Roboter erwischen
Diese vier haben mich am meisten Zeit gekostet -- und keine davon steht in einem Datenblatt.
Geradeaus fahren gibt es nicht. Zwei baugleiche Motoren am selben PWM-Wert drehen unterschiedlich schnell: Fertigungstoleranzen, Getriebespiel, ungleiche Gewichtsverteilung. Der Roboter zieht eine flache Kurve. Es hilft, den schwächeren Motor per Korrekturfaktor anzuheben -- aber das ist Steuern, kein Regeln, und gilt nur für diese Batteriespannung und diesen Bodenbelag. Die saubere Lösung sind Encoder an den Rädern, also eine Rückmeldung: Damit wird aus der Fahrt eine Regelung. Genau hier greift Teil 1 wieder -- ohne Sense keine verlässliche Act-Phase.
Zwei Prozent Unterschied reichen. Der Roboter meint, geradeaus zu fahren -- ohne Encoder hat er keine Möglichkeit, das Gegenteil zu bemerken.
Die Batterie verändert das Verhalten. Sinkt die Batteriespannung im Betrieb, sinkt bei gleichem Tastverhältnis auch die Mittelspannung und damit das Tempo. Ein Roboter, der frisch geladen sauber um Hindernisse fährt, kommt eine halbe Stunde später zu spät um die Kurve. Alles, was auf feste Zeiten oder feste PWM-Werte kalibriert ist, driftet mit dem Ladezustand weg.
Der Motor legt den Mikrocontroller lahm. Der Anlaufstrom lässt die Versorgungsspannung einbrechen; der Controller resettet mitten in der Fahrt (Brownout). Gegenmittel: getrennte Versorgungszweige für Logik und Motoren mit gemeinsamer Masse, ein ausreichend dimensionierter Stützkondensator direkt am Treiber und kurze, dicke Leitungen im Leistungspfad. Wer einen Roboter beim Anfahren neu starten sieht, sucht meist zuerst im Code -- der Fehler steckt in der Versorgung.
Ein Rad in der Luft merkt niemand. Ohne Rückmeldung ist ein durchdrehendes oder blockiertes Rad für die Software nicht existent: Der Roboter "fährt" laut Programm munter weiter. Das ist das Kernproblem offener Steuerung und der eigentliche Grund, warum die Serie danach zur Sensorik und zur Regelung geht.
Was bleibt hängen
- Der Differentialantrieb -- zwei angetriebene Räder plus Stützrad -- ist der Standardfall: minimal im Aufbau, dreht auf der Stelle, einfach zu rechnen. Preis dafür: kein Seitwärtsfahren (nichtholonom).
- Summe der Raddrehzahlen ⇒ Fahrt, Differenz ⇒ Drehung. Mehr Steuerlogik braucht ein Fahrantrieb im Kern nicht.
- Zwischen Motor und Rad steht fast immer ein Getriebe: Es tauscht Drehzahl gegen Drehmoment \(\tau\) -- und ohne Moment fährt gar nichts an.
- PWM stellt die Drehzahl über das Tastverhältnis \(D\), nicht über die Spannung. Die Kennlinie ist nichtlinear und hat unten eine Totzone.
- Der Treiber ist Pflicht, nicht Kür -- und mit ihm die Entscheidungen Vorwärts/Rückwärts, Bremsen/Ausrollen und ein sauberer Weg für den Rückstrom.
- Ohne Rückmeldung bleibt jede Bewegung eine Annahme. Toleranzen, Batteriespannung und Bodenhaftung machen daraus im Betrieb eine Näherung.
Als Nächstes ist die Sense-Phase dran: Was liefert ein Sensor eigentlich wirklich? Ultraschall, Infrarot, Encoder und IMU haben alle denselben Haken -- sie messen einen Ausschnitt, verrauscht und mehrdeutig.
Inhalt
- Bewegung -- Aktorik in der Praxis
- Antriebskonzepte -- vier Arten, sich in der Ebene zu bewegen
- Warum zwei angetriebene Räder reichen -- und wo die Grenze liegt
- Von der Drehzahl zur Geschwindigkeit
- Welcher Motor für welchen Zweck
- PWM -- Drehzahl stellen, ohne die Spannung zu verstellen
- Zwischen Pin und Motor: der Treiber
- Praxisfallen, die jeden ersten Roboter erwischen
- Was bleibt hängen