Einen Mecanum-Roboter bauen, der seitwärts fährt
Ein Roboter, der ein 1-m-Quadrat straft, innerhalb 5 cm zurückkommt, ohne je zu drehen – und weiter gleich über den Boden fährt, während du ihn drehst.
Was du baust
Einen vierrädrigen Roboter, der sich in jede Bodenrichtung bewegen kann, ohne erst zu drehen – und drehen kann, ohne zu ändern, wohin er fährt. Ihn seitwärts durch eine Gasse schieben, in die er kaum passt; eine Kamera auf etwas gerichtet halten, während man es umkreist; 3 cm neben einer Linie per 3-cm-Schritt korrigieren statt heraus- und hereinzubogen.
Das ist der erste Roboter dieser Seite mit drei einzeln steuerbaren Geschwindigkeiten statt zwei. Es ist auch der erste, dessen Antriebsstrang wirklich schwerer ist als seine Sensoren – weshalb fast der ganze Bau Motoren, Encoder und Regelschleifen ist.
Der Abnahmetest ist bewusst plump: Ein 1-m-Quadrat strafend fahren und innerhalb 5 cm heimkommen, bei unverändertem Kurs. Kein Differenzialroboter kann diesen Test überhaupt antreten.
Die Zahl, die das Projekt treibt
Alles an diesem Bau kommt auf eine Konstante zurück:
k = lx + ly
wobei lx der halbe Radstand ist (Vorderachse zu Hinterachse, halbiert) und ly die halbe Spur (linke Räder zu rechten Rädern, halbiert). Am Referenzbau 75 mm und 85 mm, also k = 0,160 m.
Diese eine Zahl koppelt Drehung an die Räder. Falsch, und der Roboter fährt weiter – aber ein reiner Drehbefehl kriecht über den Boden, und reines Strafen kurvt, weil Drehung und Translation ineinander bluten. Radmitte zu Radmitte messen, nicht die Chassisplatte, die meist breiter ist als gedacht.
Die anderen Zahlen, die man vor Beginn mit Marker aufs Chassis schreibt:
| Größe | Referenzbau | Woher sie kommt |
|---|---|---|
| Radradius r | 48,5 mm | 97-mm-Mecanum-Räder |
| Zählwerte pro Radumdrehung | 1440 | 12 CPR × 30:1 × 4 Quadraturflanken |
| Meter pro Zählwert | 212 µm | 2πr ÷ 1440 |
| Radtopdrehzahl V_MAX | 0,60 m/s | Aufgebockt gemessen, dann 15 % abgewertet |
| Diagonaldecke | 0,424 m/s | V_MAX ÷ √2, und kein Motorupgrade beseitigt sie |
| Beschleunigungsdecke | 5,9 m/s² | μg/√2 bei μ = 0,85 – Masse kürzt sich heraus |
Stückliste
| Teil | Menge | Ungefähre Kosten | Hinweise |
|---|---|---|---|
| Mecanum-Räder, 80 oder 97 mm | 4 | 28–70 £ | Als Viererset kaufen – zwei linkshändige, zwei rechtshändige |
| N20-Getriebemotor mit Encoder, 30:1 | 4 | 9–14 £ pro Stück | Abgestimmt. 100–250 U/min am Rad sind das nutzbare Band |
| TB6612FNG-Doppel-H-Brücke | 2 | 4–8 £ pro Stück | Ein L298N geht und verschwendet ~3 V dabei; an einem 2S-Pack ist das der Großteil deiner Topdrehzahl |
| ESP32-Entwicklungsboard | 1 | 6–12 £ | Vier PWM-Kanäle, vier Encoder-Interruptpaare und WLAN-Telemetrie gratis |
| MPU6050-IMU | 1 | 2–4 £ | Flach montieren, weg von Motoren, auf der Chassismittellinie |
| 2S-LiPo, 1500–2200 mAh, 25C | 1 | 12–20 £ | Nach Strom dimensioniert, nicht Kapazität – vier Motoren blockieren bei ~5 A gesamt |
| 5-V-BEC oder Abwärtswandler | 1 | 3–5 £ | Den ESP32 nicht an der Motorschiene betreiben |
| Chassisplatte, 200 × 180 mm | 1 | 10–25 £ | Lasergeschnittenes Acryl, 3-mm-Alu oder selbst schneiden |
| Motorhalter, Naben, Schrauben | 1 Satz | 8–15 £ | Nabenbohrung an Motorwelle anpassen – 3, 4 oder 6 mm |
| Stützkondensator, 470 µF | 2 | 1 £ | Einer über jede Treibermotorschiene |
90–170 £ gesamt. Räder und vierfache Motorzahl sind der Ort, wo aus den 50 £ eines Zweiradroboters das hier wird.
Wie alles zusammenhängt
2S LiPo ──┬── 470 µF ── TB6612FNG #1 ── FL motor ── FL encoder ─┐
│ └── FR motor ── FR encoder ─┤
├── 470 µF ── TB6612FNG #2 ── RL motor ── RL encoder ─┼── ESP32
│ └── RR motor ── RR encoder ─┘ (4 PWM,
└── 5 V BEC ──────────────────────────────── ESP32 ────── 8 GPIO,
│ I²C)
MPU6050 ── I²C ─┘
Drei Verdrahtungsentscheidungen, die nicht offensichtlich sind:
- Der ESP32 bekommt einen eigenen Regler. Vier gemeinsam startende Motoren drücken den Pack hart, und ein Controller an derselben Schiene setzt per Brownout zurück und startet mitten im Befehl neu. Sieht exakt aus wie ein Firmwareabsturz. Das Leistungsbudget-Tutorial lesen, bevor man dem Code die Schuld gibt.
- Ein Stützkondensator über jeden Treiber. 470 µF nah an der Platine. H-Brücken ziehen stoßweise und Leitungsinduktivität verwandelt diese Stöße in Spitzen.
- Die IMU auf die Mittellinie, flach und so weit von den Motoren, wie die Platte erlaubt. Gierdrift ist schlimm genug ohne Magnetfeld vierer Motoren darin.
In Meilensteinen bauen
Jeder hat einen Test. Keinen Fehler nach vorne tragen – an einem Viermotorroboter multiplizieren sie sich.
1. Räder dran, und die X-Probe
Die vier Räder anschrauben und direkt darüberstellen. Der sichtbaren Rollenlinie auf der Oberseite jedes Rads folgen.
Test: Diese vier Linien zielen auf die Robotermitte und zeichnen ein X. Zeichnen sie eine Raute, zwei Räder diagonal tauschen. Bestanden: ein X. Das ist eine Fünf-Sekunden-Probe, die einen Tag spart.
2. Jeden Motor einzeln
Alle vier verdrahten und einen Sketch schreiben, der jeweils ein Rad eine Sekunde mit 40 % treibt.
Test: Jedes aufrufen und bestätigen, dass das richtige Rad richtigherum dreht. Bestanden: vier Räder, vier korrekte Richtungen, keine vertauschten Paare. Verdrahtung in Hardware richten, nicht mit Minuszeichen im Code – man verliert den Überblick.
3. Encoder
Je eine Umdrehung jedes Rads, von Hand gedreht.
Test: Den Zählwert ausgeben. Bestanden: innerhalb 2 % von 1440, und positiv bei Vorwärtsdrehung des Rads. Ein springender oder rückwärts laufender Zählwert heißt: Auf einem statt zwei Kanälen interruptet, oder ein volatile long ohne gesperrte Interrupts gelesen.
4. Kinematik aufgebockt
Den Roboter aufbocken und reines Strafen befehlen.
Test: Diagonalpaare gegenläufig – vorne links und hinten rechts in eine Richtung, vorne rechts und hinten links in die andere. Bestanden: exakt dieses Muster. Dann reinen Dreh befehlen: linke Seite eine Richtung, rechte die andere. Widerspricht ein Rad, sitzt es in der falschen Ecke und Schritt 1 hat gelogen.
5. Eine Drehzahlschleife
Feedforward dann PI an einem Rad abstimmen, aufgebockt, dann unter Last.
Test: 0,3 m/s befehlen und einen Finger auf den Reifen drücken. Bestanden: Die Drehzahl hält und das PWM steigt sichtbar. Einmal sauber tun; die anderen drei sind Kopien mit eigenem kS und kV.
6. Alle vier, gerade Linie
Vier Schleifen, 100 Hz, auf dem Boden. 3 m geradeaus fahren.
Test: Die Seitwärtsdrift am Ende messen. Bestanden: unter 20 mm, und über drei Läufe wiederholbar. Ungeregelt sind das typisch 80–200 mm und jedes Mal anders.
7. 1 m strafen
Test: Exakt einen Meter seitwärts fahren und Strecke wie Kursänderung messen. Bestanden: innerhalb 5 cm, Kurs innerhalb 3°. Eine konsistente Kurve heißt: k-Konstante falsch; eine zufällige heißt: Eine Drehzahlschleife hält nicht.
8. IMU und feldorientiert
Beim Start Bias-kalibrieren, Kurstaste dazu.
Test: Den Steuerknüppel vorne halten und den Roboter von Hand eine volle Drehung drehen. Bestanden: Er fährt weiter gleich über den Boden. Im Stillstand driftet Gier unter 3° pro Minute.
9. Das Quadrat
Der Abnahmetest. 1 m vor, 1 m rechts, 1 m zurück, 1 m links fahren, ohne irgendwo Drehung zu befehlen.
Test: Abstand zum Startpunkt und Kursänderung. Bestanden: innerhalb 5 cm und 3°.
Wie gut aussieht
| Messung | Erster Versuch, ungeregelt | Abgestimmt, geregelt |
|---|---|---|
| Seitwärtsdrift über 3 m Gerade | 80–200 mm, je nach Akku verschieden | Unter 20 mm, wiederholbar |
| 1-m-Strafgenauigkeit | 10–20 cm, mit sichtbarer Kurve | Innerhalb 5 cm |
| Kursänderung über dem Strafquadrat | 10–30° | Unter 3° |
| Top-Diagonaltempo | Was Übersteuerung überlebt | 0,42 m/s – die √2-Decke, sauber erreicht |
| Drehzahl bei sackendem Pack 8,4 → 7,0 V | Fällt ~17 % | Unverändert, bis die Motoren sättigen |
| Odometriefehler über dem Quadrat | Nicht messenswert | 2–5 cm auf gutem Boden, viel schlechter auf staubigem |
Die letzte Zeile ist ehrlich statt enttäuschend. An diesem Antrieb ist Rollenschlupf der Mechanismus – die Odometrie ist also die schwächste Zahl am Roboter, selbst wenn alles arbeitet. Die Erwartung einbauen statt ihr hinterherjagen.
Hardwarenotizen, die zählen
Radhändigkeit ist eine Seteigenschaft. Zwei einzeln bestellte Einzelräder aus derselben Anzeige sind sehr oft dieselbe Hand. Prüfen, bevor man irgendetwas bohrt.
Jede Rolle muss sich frei drehen. Jede einzeln von Hand schnippen, bevor die Räder montiert werden. Eine blockierte Rolle verwandelt diese Ecke intermittierend in ein Normalrad, das 45° daneben zeigt – was exakt wie ein Softwarefehler liest.
Mecanum-Räder sind schwer. 180–400 g pro Stück – bis 1,6 kg des Roboters sind also Räder, und das ist rotierende Masse an den Enden der Hebelarme. Der Roboter fühlt sich träge an, und darum zählt die Beschleunigungsdecke.
Der Boden ist ein Bauteil. Polierter Beton und Vinyl liegen um μ = 0,8. Ein staubiger Hallenboden, eine Haarsprayschicht fremder Roboter oder eine Linoleumnaht halbieren ihn lokal – und der Roboter ändert sein Verhalten beim Überqueren. Ansehen, was μ = 0,25 tut, bevor man der Abstimmung die Schuld gibt.
Wenn es schiefgeht
| Symptom | Ursache | Lösung |
|---|---|---|
| Geradeaus gut, Strafen kurvt und dreht | Ein Rad in der falschen Ecke | Die X-Probe; das Kinematikresiduum wird groß und stabil sein |
| Straft gegen den Befehl | Alle vier Räder gespiegelt | Linkes Paar mit rechtem Paar tauschen |
| Drehen auf der Stelle versetzt auch | k falsch oder am Chassis gemessen | Radmitte zu Radmitte neu messen |
| Roboter setzt zurück, wenn alle vier Motoren starten | Brownout, kein Absturz | Separater Regler für den ESP32; Stützkondensatoren; Packinnenwiderstand prüfen |
| Diagonale deutlich langsamer als geradeaus | Die √2-Decke – konstruktionsbedingt | Nichts zu reparieren |
| Lehnt sich unter jeder Automatik aus Kurven | Pro-Motor-Clipping statt Befehls skalieren | Am schwächsten Rad skalieren |
| Von Hand gut fahrbar, autonom hoffnungslos | Odometrie, nicht Regelung | IMU für den Kurs; Fahrten kurz halten; Messräder erwägen |
| Ein Rad immer gesättigt | Überbefohlen, oder dieser Motor der schwächste | V_MAX senken auf das, was alle vier wirklich halten |
| Encoderzählungen driften über Minuten | Verlorene Flanken bei Drehzahl | Auf beiden Kanälen interrupten; prüfen, ob die ISR kurz ist |
Wohin als Nächstes
Messräder. Zwei oder drei ungetriebene Omniräder auf Federhaltern, mit eigenen Encodern. Sie tragen kein Drehmoment, rutschen also nicht – und verwandeln die schlechteste Zahl dieses Roboters in die beste.
Holonome Pfadfolge. Pure Pursuit und Stanley setzen einen Roboter voraus, der lenkt. Eine Basis, die strafen kann, kann Besseres – Pfadposition und Kurs unabhängig verfolgen, denn dafür hat man getrennte Aktoren.
Eine Kamera auf einer kurs haltenden Basis. Die natürliche Paarung: Eine Visionspipeline wird weit leichter, wenn die Kamera aufs Ziel gerichtet bleiben kann, während sich die Basis umpositioniert. Dafür ist holonomer Antrieb wirklich da.
ROS 2. Dieser Antriebsstrang ist der erste hier, wo cmd_vels linear.y – von einem Differenzialroboter explizit ignoriert – endlich etwas heißt. Die Twist-zu-Räder-Funktion gegen die vierzeilige Mecanumvariante zu tauschen ist der Großteil der Arbeit.
Projekt-Roadmap
Der Baupfad
Folge dem Technikbaum von den Bauteilen bis zum funktionierenden Roboter. Jeder Knoten wird freigeschaltet, sobald seine Voraussetzungen erledigt sind, und dein Fortschritt wird auf diesem Gerät gespeichert.
0 / 17 erledigt
Bauteile
- ChassisMecanum-RadsatzFrei Rollen bei 45° verwandeln vier gewöhnliche Motoren in einen Roboter, der seitwärts fahren kann.
- AktorN20-Getriebemotor mit EncoderMikromotor mit Metallgetriebe und Encoder hinten: So weiß der Roboter, wie weit er wirklich gefahren ist.
- TreiberTB6612FNG-MotortreiberEine MOSFET-H-Brücke, die die Volt behält, für die du wirklich bezahlt hast.
- ControllerESP32Ein Dual-Core-Mikrocontroller mit WLAN und Bluetooth – der drahtlose Aufstieg vom Uno.
- SensorMPU-6050 IMUEin sechsachsiger Bewegungssensor – wie ein Roboter eigene Neigung, Drehung und Beschleunigung fühlt.
- StromversorgungRobot Battery & Power PackDer Unterschied zwischen einem Roboter, der läuft, und einem, der ständig neu startet.
Tutorials in diesem Pfad
- Einsteiger · 25 Min.Holonome Antriebe: Omni, Mecanum, Swerve im VergleichVier Antriebe, drei Freiheitsgrade, und was jeder dafür verlangt.
- Mittelstufe · 35 Min.Mecanum-Radkinematik: Vier Räder, drei AchsenEine Rolle bei 45° liefert die ganze Matrix – und eine vierte Gleichung, die niemand nutzt.
- Mittelstufe · 35 Min.Geregelte Raddrehzahlregelung mit EncodernFeedforward leistet die Arbeit, der Integrator räumt auf, und der Roboter fährt endlich geradeaus.
- Mittelstufe · 25 Min.Feldorientierte Fahrt: Vorwärts soll vorwärts heißenDen Steuerknüppel um minus den Kurs drehen, und der Roboter streitet nicht mehr mit dem Fahrer.
- Einsteiger · 17 Min. LesezeitQuadratur-Encoder lesen für Distanz und TempoVerwandle Quadratur-Encoderpulse in zuverlässige Radrichtung, Distanz und Geschwindigkeit.
- Mittelstufe · 30 Min.Radschlupf: Warum Odometrie driftet und wie man dagegen hältJede Odometrieseite sagt: Schlupf ruiniert die Schätzung. Was Schlupf ist und was er kostet.
- Einsteiger · 30 Min. LesezeitWarum dein Roboter neustartet, wenn Motoren anlaufenDer Reset, der wie ein Codebug aussieht, ist fast immer die Batterie. Budgetiere den Strom, dann miss den Einbruch.
- Einsteiger · 30 Min. LesezeitWarum delay() Roboter lähmt: Timing mit millis()Ein Roboter in delay() ist blind. Ersetze es durch millis() und vergleiche Rollover-sicher.
Üben, bevor du verdrahtest
Im Live-Simulator abstimmen
Der Baupfad führt durch ein Browser-Labor. Bring das Verhalten hier in Ordnung und übertrage deine Einstellungen dann auf den echten Roboter.
Häufig gestellte Fragen
Kann ich das mit einem Arduino Uno bauen?
Nicht bequem – und der Grund ist Pinzahl statt Rechenleistung. Vier Räder brauchen vier PWM-Ausgänge und vier Quadraturencoder vier interruptfähige Pinpaare. Ein Uno hat sechs PWM-Pins auf drei Timern – und sobald man die Servo-Bibliothek oder tone() nutzt, fallen zwei davon aus –, sowie exakt zwei externe Interrupts. Mit Pin-Change-Interrupts und Verzicht auf einen Encoder lässt es sich basteln – aber man verbringt das Wochenende mit dem Board statt dem Roboter. Ein ESP32 oder Mega 2560 kostet wenige Euro mehr und beseitigt das ganze Problem. Dieser Bau nutzt einen ESP32, weil er außerdem WLAN-Telemetrie gibt – wirklich nützlich, wenn man vier Regelschleifen zugleich abstimmt.
Was kostet ein Mecanum-Roboter im Bau?
Etwa 90–170 £ je nach Radgröße und Motorqualität – grob das Doppelte eines gleichwertigen Zweiradroboters. Die Steigerungen sitzen an vorhersehbaren Stellen: vier Mecanum-Räder statt vier normalen als größte Einzelposition, vier Motoren statt zwei, vier H-Brücken-Kanäle, vier Encoderkabel und ein größerer Akku, weil vier blockierte Getriebemotoren den doppelten Worst-Case-Strom heißen. Das Controller-Upgrade erwischt Leute – von Anfang an budgetieren statt nach dem Bohren des Chassis.
Warum fährt mein Mecanum-Roboter geradeaus gut, dreht aber beim Strafen?
Ein Rad sitzt in der falschen Ecke – mit Abstand der häufigste Mecanum-Baufehler. Geradeaus sieht normal aus, weil sich die Querkomponenten weiter großteils aufheben; der Strafflug entlarvt es, weil das falsch montierte Rad quer zum Befehl statt hinein schiebt. Über den Roboter stellen, gerade nach unten schauen und den sichtbaren Rollen oben auf jedem Rad folgen: Diese vier Linien sollten auf die Robotermitte zielen und ein X zeichnen. Zeichnen sie eine Raute, zwei Räder diagonal tauschen. Was ein verkehrtes Rad tut, sieht man im Simulator-Preset mit einem verkehrt montierten Rad, bevor man eines besitzt.
Brauche ich die IMU?
Für die autonomen Tests nein – das Quadrat fährt der Roboter auch ohne. Zum Handfahren ja, innerhalb etwa zehn Sekunden nach Aufnehmen des Controllers. Ein holonomer Roboter kann woandershin zeigen als er fährt – ein Mensch verliert also fast sofort den Überblick, wohin seitwärts geraten ist. Feldorientierte Regelung behebt das mit einer Rotationsmatrix und braucht einen Gierwinkel von irgendwo. Es ist ein 2-£-Teil und sechs Codezeilen – und jedes Team, das es ausließ, rüstete es nach, nachdem erstmals jemand den Roboter in einen Tisch fuhr.
Wie genau ist die Odometrie auf einer Mecanumbasis?
Schlechter als die Zweiradroboter dieser Seite – und kein Abstimmungsproblem. Dass die Rollen rutschen, ist der Mechanismus der Seitwärtsfahrt – ein Radencoder misst also das Rad und nicht unbedingt den Boden. Vorwärts-Koppelnavigation grob so gut wie jeder Differenzialroboter erwarten, Quer-Koppelnavigation merklich schlechter – wenige Prozent auf gutem Boden, viel mehr auf staubigem. Dafür planen: IMU für den Kurs, autonome Fahrten kurz halten – und muss der Roboter wirklich wissen, wo er ist, ungetriebene Omni-Messräder ergänzen, die kein Drehmoment tragen und daher nicht rutschen.
Kann dieser Roboter Dinge schieben?
Schlecht. Ein Mecanum-Rad greift nur entlang seiner Rollenachse bei 45 Grad, Reibung begrenzt den ganzen Kraftvektor, und nur die Komponente entlang der Rollrichtung bewegt dich wirklich – man bekommt also etwa 71 Prozent der Traktion, die derselbe Roboter auf normalen Rädern hätte, bevor man einrechnet, dass Rollengummi meist schlechter greift als ein Reifen. Mehr Gewicht hilft nicht – denn mehr Masse kauft proportional mehr Reibung und proportional mehr Trägheit, und sie kürzen sich exakt. Ist Schieben der Sinn, lieber einen Mini-Sumo-Roboter auf normalen Rädern bauen; er gewinnt jedes Mal.