Selbstfahrendes Motorad mit Arduino: Unterschied zwischen den Versionen
Zeile 238: | Zeile 238: | ||
== Realisierung des Reglers == | == Realisierung des Reglers == | ||
In der Abbildung8 wird das Modul der Realisierung des Reglers gezeigt. Das Modul wird auch in [https://svn.hshl.de/svn/HSHL_Projekte/trunk/Arduino_Engineering_Kit/Selbstfahrendes_Motorad_mit_Arduino/Simulink/Realisierung_des_Reglers.slx SVN] gelegt. Das Modul besteht aus vier Teilen. Erstens ist IMU Sensor Modul zur Messung des Neigungswinkels <math>\theta</math> und Rotationsgeschwindigkeit des Systems <math>\dot\theta</math>. Zweitens ist der Kontroller, der obig diskutiert wird. Drittens ist das Trägheitsrad, der vom Kontroller kontrolliert wird. Viertens ist die | In der Abbildung8 wird das Modul der Realisierung des Reglers gezeigt. Das Modul wird auch in [https://svn.hshl.de/svn/HSHL_Projekte/trunk/Arduino_Engineering_Kit/Selbstfahrendes_Motorad_mit_Arduino/Simulink/Realisierung_des_Reglers.slx SVN] gelegt. Das Modul besteht aus vier Teilen. Erstens ist IMU Sensor Modul zur Messung des Neigungswinkels <math>\theta</math> und Rotationsgeschwindigkeit des Systems <math>\dot\theta</math>. Zweitens ist der Kontroller, der obig diskutiert wird. Drittens ist das Trägheitsrad, der vom Kontroller kontrolliert wird. Viertens ist die Sicherheitsmaßnahme für das Hardware. Aus folgenden Aspekten werden die Sicherheitsmerkmale berücksichtigt: 1) Das Trägheitsrad dreht sich zu schnell (Gefahr der Beschädigung des Motors). 2) Das Motorrad "fällt" aus dem Bereich der "normalen" Abweichungswinkel heraus (Gefahr der Beschädigung des Trägheitsrades) 3) IMU ist nicht kalibriert (Gefahr der Destabilisierung des Reglers durch einen ungenauen Sollwert) 4) Der Akku ist nicht ausreichend geladen (Gefahr der Beschädigung der Batterie). | ||
[[Datei:Realisierung des Reglers.png|thumb|500px|none|Bild8: Realisierung des Reglers. Bild8 zeigt das Modell der Realisierung des Reglers [[Benutzer:Junjie Lyu|Junjie Lyu]] ([[Benutzer Diskussion:Junjie Lyu|Diskussion]]) 16:51, 11. Okt. 2021]] | [[Datei:Realisierung des Reglers.png|thumb|500px|none|Bild8: Realisierung des Reglers. Bild8 zeigt das Modell der Realisierung des Reglers [[Benutzer:Junjie Lyu|Junjie Lyu]] ([[Benutzer Diskussion:Junjie Lyu|Diskussion]]) 16:51, 11. Okt. 2021]] |
Version vom 28. Dezember 2021, 15:38 Uhr
Autoren: 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
- 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 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 ist 0 Grad , wenn das Motorrad vollkommen aufrecht steht, ist positiv, wenn das Motorrad von hinten gesehen gegen den Uhrzeigersinn geneigt ist, und negativ, wenn das Motorrad im Uhrzeigersinn geneigt ist. | |
die Rotationsverschiebung des Trägheitsrads relativ zum Rest des Motorrads ist , wobei eine positive Verschiebung als gegen den Uhrzeigersinn definiert ist. | |
Die Höhe des Massenschwerpunkts über dem Boden bei aufrechtem Motorrad ( = 0) ist definiert als |
In diesem Projekt ist die Regelgröße der Regelstrecke der Neigungswinkel . Im folgenden Experiment wird die Reaktion der Regelstrecke untersucht, unter der Annahme, dass keine externen Störungen auftreten. In den Abbildungen 4.1 und 4.2 werden die Ergebnisse beschrieben. In Figur 1 und Figur 2 sind die Rotationsgeschwindigkeiten von Motorrad und Trägheitsrad unter der ursprünglichen Annahme und beschrieben. Figur 3 und Figur 4 sind die Rotationsgeschwindigkeiten von Motorrad und Trägheitsrad unter den ursprünglichen Annahmen und . Abbildung 4.2 ist die Antwort von unter den ursprünglichen Bedingungen und . Wir können die folgenden Ergebinisse festhalten: 1) Die Signale sind wegen des Gravitationsmomentes oszillierend. 2) und haben die gleiche Frequenz und einen ähnlichen zeitlichen Verlauf aber invertiert. 3) Beim zweiten Durchlauf dauert es einige Zeit, bis ein stabiler Zustand erreicht wird, bis in einen rein oszillierenden Zustand übergeht, während sich das Signal beim ersten Durchlauf direkt in diesem Zustand befindet. 4) Bei stabilem Zustand ist das Signal vom zweiten Durchlauf oszillierend im Intervall von ungefähr [360 720], aber das Signal vom ersten Durchlauf im Intervall von ungefähr [0 360]. In der realen Welt wird dies aufgrund des physischen Bodens nicht passieren. wir konzentrieren uns auf das Verhalten des Systems, wenn der Neigungswinkel des Motorrads nahe 0 ist.
Mathematisches Modell des Systems
Das Drehmoment beim Motorrad hat 3 Hauptkomponenten, das auf das Motorrad um die Bodenachse des Rades wirkt:
Gravitationsmoment
Trägheitsmoment des Trägheitsrads
Externes Drehmoment
In dieser theoretischen Diskussion werden wir uns auf das ideale Szenario konzentrieren, bei dem . Dissipative Kräfte wie Reibung und Widerstandseffekte zwischen beweglichen Teilen . Wenn die Neigungswinkel sehr klein (nur wenige Grad) ist , gilt für .
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 in Gleichung (7):
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 größer als ist, dann geht die Winkelbeschleunigung des Motorrads um die Rad-Boden-Achse in die entgegengesetzte Richtung des Neigungswinkels . Das heißt, wenn sich das Motorrad in eine Richtung neigt, wird es in die entgegengesetzte Richtung beschleunigt. Wenn sich das Motorrad auf die andere Seite des Gleichgewichtspunktes bewegt, wechselt die Winkelbeschleunigung die Richtung, um das Motorrad wieder in Richtung Gleichgewicht zu bewegen. Es handelt sich um ein stabiles Gleichgewicht, d. h., wenn das System aus der Gleichgewichtslage heraus gestört wird, stellt es sich selbst wieder ins Gleichgewicht zurück.
die Differentialgleichung (11) löst:
In der obigen Gleichung sind und Konstanten, die von den Anfangswerten von und abhängen. ist das Trägheitsmoment des Motorradsystems um die Rad-Boden-Achse. Wenn die Konstante erhöht wird, wird die Schwingungsfrequenz schneller. Wir wollen dieses Verhalten so verbessern, dass die Amplitude der Schwingungen abnimmt und sich schließlich auf einen konstanten Neigungswinkel von 0 einpendelt und das Motorradsystem stabil auf zufällige Störeinflüsse anspricht.
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 . Das heißt: . | |
Stellgröße des Reglers. Unter Berücksichtigung der dynamischen Eigenschaften der Regelstrecke wird Stellgröße des Reglers nach Regelabweichung bestimmt. | |
Fehler beim Parsen (Konvertierungsfehler. Der Server („cli“) hat berichtet: „[INVALID]“): {\displaystyle y^'} | 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 verringert werden. Wenn zu niedrig eingestellt wird, reicht das Drehmoment des Motors nicht aus, um das Motorrad gegen das Gravitationsmoment im Gleichgewicht zu halten. |
PD | Das Problem der propotionalen Regler, die bleibende Regelabweichung, ist beim PD-Regler allerdings weiterhin vorhanden.Entweder wird erhöht oder einen Integralanteil in den Regler eingefügt, um das Problem zu lösen. |
PID | Der PID-Regler erweitert den PD-Regler durch einen Integralanteil, der die Regelabweichung über der Zeit aufsummiert und die Summe mit dem Faktor multipliziert. Dabei wird die Abweichung vollständig eliminiert. |
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 der Abbildung 7.1 und 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
In der Abbildung8 wird das Modul der Realisierung des Reglers gezeigt. Das Modul wird auch in SVN gelegt. Das Modul besteht aus vier Teilen. Erstens ist IMU Sensor Modul zur Messung des Neigungswinkels und Rotationsgeschwindigkeit des Systems . Zweitens ist der Kontroller, der obig diskutiert wird. Drittens ist das Trägheitsrad, der vom Kontroller kontrolliert wird. Viertens ist die Sicherheitsmaßnahme für das Hardware. Aus folgenden Aspekten werden die Sicherheitsmerkmale berücksichtigt: 1) Das Trägheitsrad dreht sich zu schnell (Gefahr der Beschädigung des Motors). 2) Das Motorrad "fällt" aus dem Bereich der "normalen" Abweichungswinkel heraus (Gefahr der Beschädigung des Trägheitsrades) 3) IMU ist nicht kalibriert (Gefahr der Destabilisierung des Reglers durch einen ungenauen Sollwert) 4) Der Akku ist nicht ausreichend geladen (Gefahr der Beschädigung der Batterie).
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, , gegeben. Unter den Bedingungen haben wir Kp = 40, Kd = 5 für den Regler bestimmen. Die Antwort der Regelstrecke und Stellgröße bei dem Fall wird im Bild 9 gezeigt. Die ganze Antwort der Validierung des Reglers wird in SVN gelegt. Tabelle 5 ist die entsprechende Parameter und Beschreibung.
Run Num. | P-Glied | D-Glied | Beschreibung | Bewertung | Ergebnis |
---|---|---|---|---|---|
Run 1 | 1 | 0 | Neigungswinkel schwankt sich ungefähr zwischen -20 und 20 und ist instabil. | (1) Mit zunehmendem P-Parameter nimmt die Amplitude der Schwingung von ab,bis das Schwingungsintervall zwischen -1 und 1 liegt. (2) Die Frequenz der Schwingung wird mit zunehmendem P-Parameter schneller. | Bei ,;das System wird mit weniger Zeit bei einer geeigneten Frequenz stabilisiert. |
run 2 | 2 | 0 | schwankt sich ungefähr zwischen -16 und 16 und ist instabil. Oszillationsfrequenz > | ||
run 3 | 4 | 0 | schwankt sich ungefähr zwischen -5 und 5 und ist instabil. > | ||
run 4 | 8 | 0 | schwankt sich ungefähr zwischen -3 und 3 und ist instabil. > | ||
run 5 | 16 | 0 | schwankt sich ungefähr zwischen -2.2 und 2.2 und ist instabil. > | ||
run 6 | 32 | 0 | schwankt sich ungefähr zwischen -1 und 1 und ist instabil. > | ||
run 7 | 64 | 0 | schwankt sich ungefähr zwischen -1 und 1 und ist instabil. > | ||
run 8 | 128 | 0 | schwankt sich ungefähr zwischen -1 und 1 und ist instabil. > | ||
run 9 | 48 | 0 | schwankt sich ungefähr zwischen -1 und 1 und ist instabil. < < | ||
run 10 | 40 | 0 | schwankt sich ungefähr zwischen -1 und 1 und ist instabil. < < | ||
run 11 | 40 | 1 | Neigungswinkel schwankt sich nach ungefähr zwischen -0.07 und 0.07. | Mit zunehmendem D-Parameter braucht das System länger, um sich zu stabilisieren, aber die Amplitude der Schwingung nimmt ab. | |
run 12 | 40 | 2 | schwankt sich nach ungefähr zwischen -0.06 und 0.06. | ||
run 13 | 40 | 4 | schwankt sich nach ungefähr zwischen -0.43 und 0.43. | ||
run 14 | 40 | 8 | schwankt sich nach ungefähr zwischen -0.024 und 0.024. | ||
run 15 | 40 | 16 | schwankt sich nach ungefähr zwischen -0.018 und 0.021. | ||
run 16 | 40 | 32 | schwankt sich nach ungefähr zwischen -0.006 und 0.016. | ||
run 17 | 40 | 6 | schwankt sich nach ungefähr zwischen -0.035 und 0.035. | ||
run 18 | 40 | 5 | schwankt sich nach ungefähr zwischen -0.04 und 0.04. |
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ändliger Erfassung und Analyse der Aufgabe, Stukturierung der Zusammenhänge, Erearbeitung 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.
Durch die Analyse der Dynamik des Motorradsystems wurden die Bewegungsgleichungen aufgestellt. Nach den Bewegungsgleichungen wurde Regelkreis erstellt. Für Beobachtung der Verhalten des Motorradsystems wurde ein 3D-Modell in Simulink erstellt. In diesem 3D-Modell wurden die verschiedener Regelansätze durch Beobachtung der Signale bewertet und der Regler für das System bestimmt. Für den Erfolg des Projekts wurden folgende Komponenten vom System MKR1000, MKRCarrier-Platine, DC-Motor, Servo-Motor, Hall-Sensor, Ultraschall-Sensor, IMU-Modul, Encoder, 12C-Kommunikation und Lipo-Batterie gut verstanden. Die Sicherheitsmaßnahmen wurden im System integriert, um die Hardware zu schützen. Für die Steuerung des Motorrades aus der Ferne wurde die Daten durch WiFi gesendet. Diese folgende Ergebnisvideos zeigen den Erfolg des Projekts.
Um die gewünschte Ergebnisse zu erreichen, folgende Schritte sind auch erforderlich:
1) Durch Verlagerung der Batterie an das Heck des Motorrads, so dass der Schwerpunkt des Motorrads direkt über der Bodenachse des Rads liegt.
2) Ermittelung der Gleichgewichtslage des Systems mit Hilfe des Trägheitsrades. Dies ist der IMU-Fehler.
3) Einstellung des Fehlers
Quelltext
Den Quelltext finden Sie im SVN Arbeitsordner.
Video
Video: 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