Selbstfahrendes Motorad mit Arduino: Unterschied zwischen den Versionen
Zeile 44: | Zeile 44: | ||
[[Datei:Darstellung des Motorrades.png|thumb|500px|none|Bild2: Darstellung des Motorrades. Abbildung zeigt die Komponenten des Mortorrades [[Benutzer:Junjie Lyu|Junjie Lyu]] ([[Benutzer Diskussion:Junjie Lyu|Diskussion]]) 21:34, 11. Okt. 2021]] | [[Datei:Darstellung des Motorrades.png|thumb|500px|none|Bild2: Darstellung des Motorrades. Abbildung zeigt die Komponenten des Mortorrades [[Benutzer:Junjie Lyu|Junjie Lyu]] ([[Benutzer Diskussion:Junjie Lyu|Diskussion]]) 21:34, 11. Okt. 2021]] | ||
Die Komponenten sind in der Bild2 dargestellt. Die Basis dieses Projekts bildet das Arduino-Board "MKR1000". MKR-Motor-Carrier ist eine MKR-Zusatzplatine für "MKR1000" zur Steuerung von Servo-, Gleichstrommotoren. Außerdem erweitert MKR-Motor-Carrier die Fähigkeiten von "MKR1000" und vereinfacht die Anschluss zur anderen Aktoren und Sensoren über ein Reihe von 3-poligen Stiftleisten. IMU Sensor enthält drei verschiedene Sensoren Beschleunigungsmesser, Gyrokope und Magnetometer, in einem einzigen Gehäuse. Mit IMU Sensor, der auf dem MKR1000 sitzt, wird die vertikale Position des selbstbalancierenden Motorrad gemisst und erkannt, wenn es fällt und der | Die Komponenten sind in der Bild2 dargestellt. Die Basis dieses Projekts bildet das Arduino-Board "MKR1000". MKR-Motor-Carrier ist eine MKR-Zusatzplatine für "MKR1000" zur Steuerung von Servo-, Gleichstrommotoren. Außerdem erweitert MKR-Motor-Carrier die Fähigkeiten von "MKR1000" und vereinfacht die Anschluss zur anderen Aktoren und Sensoren über ein Reihe von 3-poligen Stiftleisten. IMU Sensor enthält drei verschiedene Sensoren Beschleunigungsmesser, Gyrokope und Magnetometer, in einem einzigen Gehäuse. Mit IMU Sensor, der auf dem MKR1000 sitzt, wird die vertikale Position des selbstbalancierenden Motorrad gemisst und erkannt, wenn es fällt und der mit "MKR1000" via 12C kommuniziert. Hallsensor misst die Geschwindigkeit vom Trägheitsrad. Encoder misst die Geschwindigkeit vom Motorrad. Ultraschllsensor erkannt die Hindernisse vor dem Mortorrad. Servo-Motor ändert die Fahrrichtung des Motorrades. Das Motorrad nutzt Simulink, um die Sensoren, Aktuatoren und die Bewegung zu überwachen und zu steuern. | ||
== Identifikation der Regelstrecke == | == Identifikation der Regelstrecke == |
Version vom 5. November 2021, 21:54 Uhr
Autoren: Junjie Lyu
Betreuer: Prof. Schneider
Art: PA
Projektlaufzeit: 04/2021-04/2022

Thema
Aufbau eines selbsfahrenden 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
- Test des Segway
- 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.
Gantt - Chart

Gantt-Chart wird in SVN gelegt.
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ädrig Roboter, der mit Hilfe einer rotierenden Scheibe (Trägheitsrad) das Gleichgewicht halten und sich bewegen kann, um zu kompensieren, wenn das Motorrad das Gleichgewicht verliert. Das Motorrad wird von einem Arduino MKR1000, dem Arduino MKR Motor Carrier, einem Gleichstrommotor zum Bewegen des Hinterrads, einem Encoder, 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 nicht lang genug. Versuchen Wir, durch das Innere des Motorrads Und Unten dem Gleichstrommotor zu führen, um dem Arduino MKR Motor Carrier anzuschließen. Der Akku rutscht leicht vom Motorkörper. Versuchen wir, mit einem Gummi den Akku mit Motorkörper befestigen.
Aufbau des Systems

Die Komponenten sind in der Bild2 dargestellt. Die Basis dieses Projekts bildet das Arduino-Board "MKR1000". MKR-Motor-Carrier ist eine MKR-Zusatzplatine für "MKR1000" zur Steuerung von Servo-, Gleichstrommotoren. Außerdem erweitert MKR-Motor-Carrier die Fähigkeiten von "MKR1000" und vereinfacht die Anschluss zur anderen Aktoren und Sensoren über ein Reihe von 3-poligen Stiftleisten. IMU Sensor enthält drei verschiedene Sensoren Beschleunigungsmesser, Gyrokope und Magnetometer, in einem einzigen Gehäuse. Mit IMU Sensor, der auf dem MKR1000 sitzt, wird die vertikale Position des selbstbalancierenden Motorrad gemisst und erkannt, wenn es fällt und der mit "MKR1000" via 12C kommuniziert. Hallsensor misst die Geschwindigkeit vom Trägheitsrad. Encoder misst die Geschwindigkeit vom Motorrad. Ultraschllsensor erkannt die Hindernisse vor dem Mortorrad. Servo-Motor ändert die Fahrrichtung des Motorrades. Das Motorrad nutzt Simulink, 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 selbstfahrendes Motorrad ist die Regelstrecke der Neigungswinkel
Mathematisches Modell des Systems
Das Drehmoment beim Motorrad
In dieser theoretischen Diskussion werden wir uns auf das ideale Szenario konzentrieren, bei dem
Nettodrehmoment beim Motorrad für Bodenradachsen:
Drehmoment beim Trägheitrad für Drehachse durch die Motorwelle des Trägheitsrades:
Gravitationsmoment:
Das von der Motorwelle auf das Trägheitrad ausgeübte Drehmoment ist gleich groß und entgegengesetzt zu dem vom Trägheitrad 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
wir programmieren den Motor so, 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. Wir hoffen | |
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 sich auf das Trägheitsrad zur Ausgleichung der Abweichung. | |
Störung. USB-Kabel gegen Motorräder, Luftwiderstand, Wind und verschiedene andere Ablenkungen | |
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 gemisst. |
Regler | Bewertung |
---|---|
P | Ein P-Regler erreicht in unserem Fall keine Regeldifferenz von 0. Die bleibende Regelabweichung kann durch Verringerung des Parameters |
PD | Das Problem der propotionalen Regler, die bleibende Regelabweichung, ist beim PD-Regler allerdings 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 |
In dem Projekt wird ein PD-Regler verwendet.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.
Simulation des Reglers
die Simulation des Reglers wird in Bild 7.1 und Bild 7.2 gezeigt und auch in SVN gelegt. Dabei gehen die 3D-Simulation von den Teilen 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
Das Bild8 zeigt das Modul der Realisierung des Reglers. Das Modul wird in SVN gelegt. Das Modul besteht aus vier Teilen. Erstens ist IMU Sensor Modul zur Messung des Neigungswinkels

Validierung des Reglers
Wie wir bereits oben diskutiert haben, wird ein PD-Regler in dem Projekt verwendet. In der Validierung des Reglers haben wir durch Block "Random Number" eine zufälliger Störung,

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
Quelltext
Den Quelltext finden Sie im SVN Arbeitsordner.
Video
Verlinken Sie hier ein YouTube-Video zu Ihrem fertigen Projekt. Tipps zum Video finden Sie hier.
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