Selbstfahrendes Motorad mit Arduino
Autor: Junjie Lyu
Betreuer: Prof. Schneider
Art: PA
Projektlaufzeit: 04/2021-04/2022

Thema
Aufbau eines selbstfahrenden Motorades, welches sich selbst während der Fahrt ausbalanciert.
Ziel
Das Arduino Engineering Kit ermöglicht den Aufbau dreier regelungstechnischer Herausforderungen. In diesem Projekt soll ein selbstfahrendes Motorad gebaut und programmiert werden.
Aufgabenstellung
- Einarbeitung in das Thema, auch aus regelungstechnischer Sicht
- Identifikation des Regelstrecke
- Sichtung und Test des bestehenden Bausatzes
- Aufbau des Systems (ggf. Platinenfertigung, etc.)
- Vergleichen und bewerten Sie verschiedene Regleransätze (P, PI, PID und andere).
- Modellbasierte Programmierung der Hardware via Matlab und Simulink
- Modul- und Systemtests
- Dokumentation nach wissenschaftlichem Stand
- Erstellung von Gefährdungsbeurteilung und Betriebsanweisung
Anforderung
- Wissenschaftliche Vorgehensweise (Projektplan, etc.)
- Wöchentliche Fortschrittsberichte (informativ)
- Projektvorstellung im Wiki
- Machen Sie ein tolles Videos, welches die Funktion visualisiert.
- Konvertieren Sie die Software vor der Sicherung in MATLAB/Simulink R2020b.
Gantt - Chart

Gantt-Chart wird in SVN abgelegt.
Die Projektarbeit einschließlich Projektseminar wird im Sommersemester 2021 angemeldet. Das heißt, die Benotung der Projektarbeit muss bis zum Ende des Wintersemesters 21/22 erfolgt sein.
Bewertung des Bausatzes
Das Motorrad ist ein zweirädriger Roboter, der mit Hilfe einer rotierenden Scheibe (Trägheitsrad) das Gleichgewicht halten und sich bewegen kann. Das Motorrad wird von einem Arduino MKR1000, dem Arduino MKR Motor Carrier, einem Gleichstrommotor mit Encoder zum Bewegen des Hinterrads,einem Gleichstrommotor zum Steuern des Trägheitsrads, einer 6-Achsen-IMU, einem Standardservomotor zum Lenken des Motorradgriffs, einem Abstandssensor (Ultraschallsensor) und einem Drehzahlmesser (Hallsensor) gesteuert. Der Hardwareaufbau konnte mithilfe der Anweisung des Anleitungsvideos zusammengebaut werden. Das Kabel vom Gleichstrommotor zum Steuern des Trägheitsrads ist allerdings nicht lang genug. Daher ist das Kabel durch das innere des Motorrads unterhalb des Gleichstrommotors verlegt worden, um den Arduino MKR Motor Carrier anzuschließen. Da der Akku leicht vom Motorkörper rutscht, ist er zusätzlich mit einem Gummiband befestigt.
Aufbau des Systems

Die Komponenten sind in der Abbildung 2 dargestellt. Die Basis dieses Projekts bildet das Arduino-Board "MKR1000". Der MKR-Motor-Carrier ist eine MKR-Zusatzplatine für den "MKR1000" zur Steuerung von Servo-, Gleichstrommotoren. Außerdem erweitert der MKR-Motor-Carrier die Fähigkeiten vom "MKR1000" und vereinfacht den Anschluss zu anderen Aktoren und Sensoren über ein Reihe von 3-poligen Stiftleisten. Der IMU Sensor enthält drei verschiedene Sensoren. Diese sind Beschleunigungsmesser, Gyroskop und ein Magnetometer. Diese sind in einem einzigen Gehäuse verbaut. Mit dem IMU Sensor, der auf dem MKR1000 sitzt, wird die vertikale Position des selbstbalancierenden Motorrads gemessen und erkennt, wenn das Fahrzeug das Gleichgewicht verliert. Die Kommunikation mit dem "MKR1000" wird via I2C-Bus realisiert. Der Hallsensor misst die Geschwindigkeit des Trägheitsrads. Der Encoder misst die Geschwindigkeit des Motorrads. Der Ultraschllsensor erkannt die Hindernisse vor dem Mortorrad. Der Servo-Motor ändert die Fahrtrichtung des Motorrads. Auf dem Motorrad läuft ein Simulink Modell, um die Sensoren, Aktuatoren und die Bewegung zu überwachen und zu steuern.
Identifikation der Regelstrecke
![]() |
![]() |
![]() |
physikalische Größe | Bedeutung |
---|---|
der Neigungswinkel | |
die Rotationsverschiebung des Trägheitsrads relativ zum Rest des Motorrads ist | |
Die Höhe des Massenschwerpunkts über dem Boden bei aufrechtem Motorrad ( |
In diesem Projekt ist die Regelgröße der Regelstrecke der Neigungswinkel
Mathematisches Modell des Systems
Das Drehmoment beim Motorrad
In dieser theoretischen Diskussion wird sich auf das ideale Szenario konzentriert, für das
Nettodrehmoment beim Motorrad für Bodenradachsen:
Drehmoment beim Trägheitsrad für Drehachse durch die Motorwelle des Trägheitsrades:
Gravitationsmoment:
Das von der Motorwelle auf das Trägheitsrad ausgeübte Drehmoment ist gleichen Betrags und entgegengesetzt zu dem vom Trägheitsrad auf die Motorwelle ausgeübten Drehmoment:
mit Gleichung (4) in Gleichung (1):
mit Gleichung (3) in Gleichung (5):
mit Gleichung (2) in Gleichung (6):
mit Gleichung
wird der Motor so programmiert, dass er ein Drehmoment aufbringt, das proportional zum Neigungswinkel selbst ist. Das heißt:
mit Gleichung (9) in Gleichung (8):
Von (10) erhalten wir:
Wenn
die Differentialgleichung (11) löst:
In der obigen Gleichung sind
Bewertung verschiedener Regleransätze

physikalische Größe | Bedeutung |
---|---|
Sollwert. Wenn das Motorrad ganz aufrecht steht, ist der Neigungswinkel "0". Das heißt: | |
Regelabweichung. Im Idealfall gilt | |
Stellgröße des Reglers. Unter Berücksichtigung der dynamischen Eigenschaften der Regelstrecke wird Stellgröße des Reglers nach Regelabweichung bestimmt. | |
Stellgröße. DC motor wirkt auf das Trägheitsrad zur Ausgleichung der Abweichung. | |
Störung. USB-Kabel am Arduino des Motorrads, Luftwiderstand, Windstöße und andere Störeinflüsse | |
Gesamtregelgröße. Die Gesamtregelgröße auf dem System. | |
Istwert. Der Neigungswinkel auf dem System | |
Rückführgröße. Die Größe des Neigungswinkels auf dem System wird von Sensoren gemessen. |
Regler | Bewertung |
---|---|
P | Ein P-Regler erreicht in diesem Fall keine Regeldifferenz von 0. Die bleibende Regelabweichung kann durch Verringerung des Parameters |
PD | Bei dem PD Regler, ist die bleibende Regelabweichung weiterhin vorhanden. Entweder wird |
PID | Der PID-Regler erweitert den PD-Regler durch einen Integralanteil, der die Regelabweichung über der Zeit aufsummiert und die Summe mit dem Faktor |
Die Anhäufung von Fehlern im Laufe der Zeit kann sich nachteilig auswirken,um das Motorrad später auszubalancieren. Deshalb wird auf ein I-Glied verzichtet. In diesem Projekt wird ein PD-Regler verwendet.
Simulation des Reglers
die Simulation des Reglers wird in der Abbildung 7.1 und 7.2 gezeigt und auch in SVN abgelegt. Dabei gehen die 3D-Simulationen der Teile des Motorrades aus AEK-Seite hervor.
![]() |
![]() |
Parameter | Beschreibung | Einheit | Wert |
---|---|---|---|
theta0 | Aus Aufgabe. Als t = 0, ist der Neigungswinkel theta0. | deg | 1 |
thetadot0 | Aus Aufgabe. Als t = 0, ist die Rotationsgeschwindigkeit des Motorrades thetadot0. | deg/s | 0 |
rs_EM_s32 | Externes Drehmoment z.B Wind | N*m | in der Simulation wird es durch Block "Random Number" erzeugt |
rs_Theta_s32 | der Neigungswinkel im Durchlauf | deg | - |
rs_ThetaDot_s32 | die Rotationsgeschwindigkeit im Durchlauf | deg/s | - |
rs_MM_s32 | das Moment vom DC-Motor | N*m | - |
rs_TRGesch_s32 | Rotationsgewschwindigkeit des Trägheitsrades | deg/s | - |
par_Kp | Parameter für das P-Glied | - | - |
par_Kd | Parameter für das D-Glied | - | - |
Realisierung des Reglers
In Abbildung 8 wird das Modul der Realisierung des Reglers gezeigt. Das Modul wird auch in SVN abgelegt. Das Modul besteht aus vier Teilen. Der erste Teil ist das IMU Sensor Modul zur Messung des Neigungswinkels

Validierung des Reglers
Wie bereits oben diskutiert, wird ein PD-Regler in dem Projekt verwendet. In der Validierung des Reglers erzeugen wir durch den Block "Random Number" eine zufällige Störung und stellen die ursprüngliche Bedingungen

Run Num. | P-Glied | D-Glied | Beschreibung | Bewertung | Ergebnis |
---|---|---|---|---|---|
Run 1 | 1 | 0 | Neigungswinkel |
(1) Mit zunehmendem P-Parameter nimmt die Amplitude der Schwingung von |
Bei |
run 2 | 2 | 0 | |||
run 3 | 4 | 0 | |||
run 4 | 8 | 0 | |||
run 5 | 16 | 0 | |||
run 6 | 32 | 0 | |||
run 7 | 64 | 0 | |||
run 8 | 128 | 0 | |||
run 9 | 48 | 0 | |||
run 10 | 40 | 0 | |||
run 11 | 40 | 1 | Neigungswinkel |
Mit zunehmendem D-Parameter braucht das System länger, um sich zu stabilisieren, aber die Amplitude der Schwingung nimmt ab. | |
run 12 | 40 | 2 | |||
run 13 | 40 | 4 | |||
run 14 | 40 | 8 | |||
run 15 | 40 | 16 | |||
run 16 | 40 | 32 | |||
run 17 | 40 | 6 | |||
run 18 | 40 | 5 |
Zusammenfassung und Ausblick
Das Projekt vertieft die theoretischen Grundlagen des Mechatronik-Studiums im Bereich der Regelungstechnik, Systemmodellierung, Antriebstechnik, Sensortechnik und Informatik. Das ingenieurmäßige Vorgehen mit möglichst vollständiger Erfassung und Analyse der Aufgabe, Strukturierung der Zusammenhänge, Erarbeitung und vergleichende Bewertung verschiedener Lösungswege unter Verwendung weiterführender Literatur, Einordnen von betrieblichen Einzelaufgaben in übergeordnete sachlich und organisatorische Zusammenhänge wird angewendet, um das Projekt methodisch konsequent zu einer Lösung zu führen.
Um das Projekt zum Erfolg zu bringen, wurden zuerst die Funktionsweisen der Komponenten MKR1000, MKRCarrier-Platine, DC-Motor, Servomotor, Hall-Sensor, Ultraschall-Sensor, IMU-Modul, Encoder, I2C-Kommunikation und Lipo-Batterie nachvollzogen. Durch die Analyse der Dynamik des Motorradsystems wurden die Bewegungsgleichungen aufgestellt. Dann wurde Regelkreis des Systems erstellt. Danach wurden die verschiedene Regleransätze bewertet und ein geeigneter Regler für das System ausgewählt. Anschließend wurden die Simulation des Reglers und des ganzen Systems erstellt. Ein 3D-Modell wurde in der Simulation integriert. Der Schutz der Hardware wurde bei der Erstellung der Simulation berücksichtigt. Das Motorrad wurde durch die vom WiFi gesendeten Signale aus der Ferne gesteuert. Das folgende Ergebnisvideo zeigt den Erfolg des Projekts.
Um die gewünschten Ergebnisse zu erreichen, sind folgende Schritte ebenfalls erforderlich:
1) Verlagerung der Batterie an das Heck des Motorrads, so dass der Schwerpunkt des Motorrads direkt über der Bodenachse des Rads liegt.
2) Ermittelung des Winkels bei Gleichgewichtslage des Systems.
3) Ausgleich des Winkels
Bis jetzt kann das Motorrad während der Fahrt ausbalancieren. Wegen der Begrenzung des Raums und der Zahl der Arbeiter wurde das Motorrad nicht mit höheren Geschwindigkeiten getestet. In der Zukunft könnte man mit einem Ultraschallsensor arbeiten, um während der Fahrt Hindernisse zu meiden.
Quelltext
Den Quelltext finden Sie im SVN Arbeitsordner.
Video
Link: Ergebnisse der Projektarbeit.
Weblinks
- Arduino Engineering Kit
- YouTube: Unboxing the Arduino Engineering Kit
- YouTube: Motorcycle Self Balancing Using Reinforcement Learning
- YouTube: Motorcycle Maneuvers
- Arduino Store
Software
- Arduino Engineering Kit Hardware Support
- Arduino Engineering Kit Hardware Support für R2018b
- Arduino Engineering Kit Project Files
- Reinforcement learning with Self-balancing motorcycle
Siehe auch
→ zurück zum Hauptartikel: Studentische Arbeiten