ArduMower: Regler: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
 
(45 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 6: Zeile 6:


Betreuer: [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]],[[Benutzer:Mirekgoebel| Prof. Dr.-Ing. Mirek Göbel]]
Betreuer: [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]],[[Benutzer:Mirekgoebel| Prof. Dr.-Ing. Mirek Göbel]]
Projekt: [http://193.175.248.52/wiki/index.php/Projekt_ArduMower#ArduMower:_Kartierung/ Ardumower]


= Einleitung =
= Einleitung =
Dieser Artikel beschreibt die Implementierung des Reglers eines Mähroboters. Ziel ist es eine Regelung der Radgeschwindigkeiten zu erreichen, sodass der Mähroboter die von der Strategie errechneten Wege trotz Störeinflüssen befahren kann.
Dieser Artikel beschreibt die Implementierung des Reglers eines Mähroboters. Ziel ist es, eine Regelung der Radgeschwindigkeiten zu erreichen, sodass der Mähroboter die von der Strategie errechneten Wege trotz Störeinflüssen befahren kann.


= Anforderungen =
= Anforderungen =


Sowohl im Lasten als auch im Pflichtenheft finden sich keine direkten Anforderungen an eine Regelung der Fahrt des Mähroboters. Sie ist jedoch essential wichtig um beispielsweise die Fahrt zur Ladestation, das Umsetzen einer Mähstrategie, das vollständige Mähen der Fläche und die Anforderung an die Verarbeitungszeit zu erfüllen
Sowohl im Lasten-, als auch im Pflichtenheft finden sich keine direkten Anforderungen an eine Regelung der Fahrt des Mähroboters. Sie ist jedoch essentiell wichtig, um beispielsweise die Fahrt zur Ladestation, das Umsetzen einer Mähstrategie, das vollständige Mähen der Fläche, und die Anforderung an die Verarbeitungszeit zu erfüllen


Um eine Umsetzung des Reglers zu spezifizieren wurden folgende Anforderungen an die Karte gestellt
Um eine Umsetzung des Reglers zu spezifizieren, wurden folgende Anforderungen an die Karte gestellt:


{| class="mw-datatable"
{| class="mw-datatable"
Zeile 35: Zeile 37:
| 2
| 2
| Der Regler hat folgende Ausgangsgrößen.
| Der Regler hat folgende Ausgangsgrößen.
# PWM Geschwindigkeit der linken Motors: PWM Motor Links
# PWM Geschwindigkeit des linken Motors: PWM Motor Links
# PWM Geschwindigkeit des rechten Motors: PWM Motor Rechts
# PWM Geschwindigkeit des rechten Motors: PWM Motor Rechts
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
Zeile 43: Zeile 45:
|-
|-
| 3
| 3
| Der Roboter muss aus Entfernungen von bis zu 1,5 Metern zum Soll-Kurs, zurück zum Sollkurs finden.
| Der Roboter muss aus Entfernungen von bis zu 1,5 Metern zum Sollkurs, zurück zum Sollkurs finden.
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
| 05.10.2017
| 05.10.2017
Zeile 50: Zeile 52:
|-
|-
| 4
| 4
| Der Roboter muss aus einer Entfernung von 1 Meter, binnen 3 Metern zurück auf dem Soll-Kurs sein.
| Der Roboter muss aus einer Entfernung von 1 Meter, binnen 3 Metern zurück auf dem Sollkurs sein.
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
| 05.10.2017
| 05.10.2017
Zeile 65: Zeile 67:


| 6
| 6
| Die Regler muss zyklisch aktualisiert werden.
| Der Regler muss zyklisch aktualisiert werden.
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
| 05.10.2017
| 05.10.2017
Zeile 112: Zeile 114:
Bei der Größe des zu erstellenden Modells werden die Schritte Funktionaler Systementwurf / Technischer Systementwurf des V-Modells zusammen gelegt und bereits Schnittstellen zwischen den einzelnen Blöcken definiert.
Bei der Größe des zu erstellenden Modells werden die Schritte Funktionaler Systementwurf / Technischer Systementwurf des V-Modells zusammen gelegt und bereits Schnittstellen zwischen den einzelnen Blöcken definiert.


# Aufgrund der geringen Komplexität des Reglers wird dieser in einem Block implementiert.
Aufgrund der geringen Komplexität des Reglers wird dieser in einem Block implementiert.


= Komponenten Spezifikation =
= Komponentenspezifikation =


Das Modell des Reglers wird als Komponente aufgefasst, d.h. in einem Block ''' Regler ''' dem späteren Hauptprogramm zur Verfügung gestellt.
Das Modell des Reglers wird als Komponente aufgefasst, d.h. in einem Block ''' Regler ''' dem späteren Hauptprogramm zur Verfügung gestellt.
Zeile 120: Zeile 122:
Dabei wird wie folgt vorgegangen.  
Dabei wird wie folgt vorgegangen.  


Zunächst wird aus dem Abstand zum Soll-Kurs und dem Soll_Abstand eine Abweichung berechnet. Diese wird mit einem Multiplikationsfaktor(P-Anteil) verrechnet Parallel wird die Abweichung auch an einem  Integrator (I-Anteil) und an einen  Differentiator mit vorgeschaltetem Filter verrechnet. Die drei Anteile bilden addiert die Stellgröße. Von der Mittleren Geschwindigkeit der Räder wird die Steilgröße einmal Abgezogen und einmal Addiert, so dass sich unterschiedliche Werte für das Linke und Rechte Rad ergeben. Diese Werte werden auf 255 begrenzt.
Zunächst wird aus dem Abstand zum Soll-Kurs und dem Soll_Abstand eine Abweichung berechnet. Diese wird mit einem Multiplikationsfaktor(P-Anteil) verrechnet. Parallel wird die Abweichung auch an einem  Integrator (I-Anteil) und an einen  Differentiator mit vorgeschaltetem Filter verrechnet. Die drei Anteile bilden addiert die Stellgröße. Von der mittleren Geschwindigkeit der Räder wird die Steilgröße einmal abgezogen und einmal addiert, sodass sich unterschiedliche Werte für das linke und rechte Rad ergeben. Diese Werte werden auf 255 begrenzt.


= Programmierung =
= Programmierung =
In diesem Abschnitt wird die Implementierung des Reglers in Simulink gezeigt. 
[[Datei:Abstands_Regler.png|small|1000px]]
Dabei werden neben der Verrechnung der Eingänge, wie im vorherigen Abschnitt beschrieben, auch Diagnose-Ausgänge implementiert. Diese Diagnose-Ausgänge ermöglichen dabei, die einzelnen Signale über die WLAN- Schnittstelle zu übertragen. 
Die Hauptarbeitspensum lag jedoch nicht in der Implementierung des Reglers, sondern in der Auslegung dessen. Die Auslegung unterteilt sich dabei in folgende Punkte:
=== Bestimmung des System-Verhaltens ===
[[Datei:P20D50.png |rechts|mini|350px|Regler Simulation mit P=20 und D=50]]
Der Rasenmähroboter wurde mithilfe einer Sprungantwort auf die Antriebsräder auf sein Systemverhalten hin untersucht. Dabei fiel auf, dass der Roboter seine Fahrt mit konstantem Radius fortsetzte. Diese Verhalten wurde als  I<sup>2</sup>-Verhalten klassifiziert.
=== Auswahl des Reglers ===
Zur Regelung des beobachteten Systemverhaltens wurde ein PD-Regler ausgewählt.
=== Auslegung der Regelparameter ===
Die Auslegung der Regelparameter erfolgte in zwei Schritten. Zunächst wurde das Fahrzeugmodell von [[Benutzer:Mirekgoebel| Prof. Dr.-Ing. Göbel]] benutzt, um eine Offline-Auslegung des Reglers zu implementieren. Dies spart viel Zeit gegenüber der Auslegung des Reglers am Ardumower.
Danach wurde versucht, die ermittelten Werte auf dem Ardumower zu verifizieren. Leider gelang dies nicht, sodass erneut eine komplette Regler-Auslegung manuell gestartet werden musste.
Ziel der Auslegung war es ,der Perimeterschleife zu folgen, und in die enge Ladestation hinein zu fahren.
=== Demonstration ===
Eine Demonstration des Reglers inklusive Einparken ,ist unter folgendem Link zu finden
[https://youtu.be/NFWLRe9fYF8/ Youtube]


= Komponententest =
= Komponententest =
Zeile 130: Zeile 158:
! style="font-weight: bold;" | ID
! style="font-weight: bold;" | ID
! style="font-weight: bold;" | Testfallbeschreibung
! style="font-weight: bold;" | Testfallbeschreibung
! style="font-weight: bold;" | Eingänge x,y,PosAlt,Ausrichtung,Karte,Bumper,Ultraschall,Perimeterschleife
! style="font-weight: bold;" | Eingänge Abstand_Soll_Kurs, PWM Sollgeschwindigkeit, Soll_Abstand
! style="font-weight: bold;" | Erwartetes Ergebnis
! style="font-weight: bold;" | Erwartetes Ergebnis
! style="font-weight: bold;" | Testergebnis
! style="font-weight: bold;" | Testergebnis
Zeile 137: Zeile 165:
|-
|-
| 1
| 1
| Der Mäher fährt kein Feld weiter.
| Kompilierung in Simulink
| 0.1, 0.0, [0;0], 0, Karte, 0, 0, 1000
| 0.5, 120, 0
| Kein neues Feld wird blau markiert.
| Der Regler lässt sich in Simulink kompilieren
| OK
| OK
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
| 24.01.2018
| 24.01.2018
|-
|-
|-
| 2
| 2
| Der Mäher fährt auf der Perimeterschleife.
| Integration in Hauptprojekt
| 0.6, 0.0, [0.3;0.0], 0, Karte, 0, 0, 1000
| 0.5, 120, 0
| Neues Feld wird blau markiert, altes Feld wird rot markiert.
| Es kommt zu keiner signifikanten Laufzeitbeeinflussung
| OK
| OK
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
Zeile 153: Zeile 182:
|-
|-
| 3
| 3
| Der Mäher fährt ein Feld weiter.
| Eingangsgrößen
| 0.3, 0.0, [0;0], 0, Karte, 0, 0, 1000
| 0.5, 120, 0
| Neues Feld wird blau markiert.
| Der Regler verarbeitet ohne Fehler die gesetzten Eingangsgrößen
| OK
| OK
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
Zeile 161: Zeile 190:
|-
|-
| 4
| 4
| Der Mäher trifft auf ein Hindernis.
| Ausgangsgrößen
| 34.0, 4.0, [33.7;4.0], 0, Karte, 1, 0, 1000
| 0.5, 120, 0
| Neues Feld wird magenta markiert, altes Feld wird hellgrün markiert.
| Der Regler liefert an beiden Ausgängen einen Wert im PWM-Bereich
| OK
| OK
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
Zeile 169: Zeile 198:
|-
|-
| 5
| 5
| Das überschreitet die Perimeterschleife in unbekanntes Gebiet.  
| Der Mäher fährt mit 0,5 m Abstand zum Sollkurs.
| 0.0, 3.0, [0.3;3.0], 0, Karte, 0, 0, 1000
| 0.5, 120, 0
| Neues Feld wird weiß markiert, altes Feld wird rot markiert.
| Der Mäher fährt zurück auf Sollkurs
| OK
| OK
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
Zeile 177: Zeile 206:
|-
|-
| 6
| 6
| Das Fährt auf ungemähtem Rasen.
| Der Mäher fährt mit 1 m Abstand zum Sollkurs.
| 0.6, 0.6, [0.3;0.3], 0, Karte, 0, 0, 1000
| 1.0, 120, 0
| Neues Feld wird blau markiert, altes Feld wird hellgrün markiert.
| Der Mäher fährt in weniger als 3 m zurück auf Sollkurs
| OK
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
| 24.01.2018
|-
| 6b
| Das Fährt auf gemähtem Rasen.
| 0.6, 0.6, [0.3;0.3], 0, Karte, 0, 0, 1000
| Neues Feld wird blau markiert, altes Feld wird hellgrün markiert.
| OK
| OK
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
Zeile 193: Zeile 214:
|-
|-
| 7
| 7
| Der Mäher fährt mit fester Zykluszeit eine simulierte Mäanderfahrt.
| Der Mäher fährt mit 1,5 m Abstand zum Sollkurs.
| Mäander simuliert, *,*,*, 0, Karte, 0, 0, 1000
| 1.5, 120, 0
| Die Karte wird zyklisch aktualisiert.
| Der Mäher fährt zurück auf Sollkurs.
| OK
| OK
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
Zeile 201: Zeile 222:
|-
|-
| 8
| 8
| Einbindung des Matlab-Skriptes in Simulink.
| Der Mäher fährt mit 3 m Abstand zum Sollkurs.
| Mäander simuliert in Simulink
| 3.0, 120, 0
| Die Karte wird zyklisch aktualisiert.
| Der Wert an den PWM-Ausgängen überschreitet den Schwellwert von 255 nicht.
| OK
| OK
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
Zeile 209: Zeile 230:
|-
|-
| 9
| 9
| Test der Eingangsparameter
| Der Mäher wird während der Fahrt um 90 Grad gedreht.
| Variation der Eingangsparameter
| 0, 120, 0
| Die Karte wird zyklisch gemäß Anforderungen aktualisiert.
| Der Mäher fährt zurück auf Sollkurs.
| OK
| OK
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
Zeile 217: Zeile 238:
|-
|-
| 10
| 10
| Test der Ausgangsparameter
| Der Mäher wird über 60 Sekunden simuliert
| Variation der Eingangsparameter
| 0, 120, 0
| Die Karte wird zyklisch gemäß Anforderungen aktualisiert.
| Der Mäher fährt zurück auf Sollkurs. Simulation der Ergebnisse in unter 2 Sekunden.
| OK
| OK
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
Zeile 225: Zeile 246:
|-
|-
| 11
| 11
| Laufzeitmessung
| Es wurde sich an die Programmierrichtlinien gehalten
| 0.3, 0.0, [0;0], 0, Karte, 0, 0, 1000
| -
| Die Initialisierung muss 1s und die zyklische Darstellung muss 1ms unterschreiten.  
| Der Mäher fährt zurück auf Sollkurs. Simulation der Ergebnisse in unter 2 Sekunden.
| OK
| nicht OK
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
| 24.01.2018
|-
| 12
| Kommentierung und Dokumentation entsprechen den Projektrichtlinien
| -
| Code Review, Artikel-Review
| OK
|  [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]],
| 24.01.2018
| 24.01.2018
|-
|-
Zeile 243: Zeile 256:


= Zusammenfassung =
= Zusammenfassung =
Im Zuge des Projektes Ardumower wurde ein Regler implementiert, mit dem es möglich ist, der Perimeterschleife zu folgen, in die Garage einzuparken und der sämtliche Anforderungen erfüllt.
Neben der Reglerauslegung selbst, wurde das Hauptframework so verändert, dass auch ohne funktionierende Mähstrategie, ein Testen der Regelparameter möglich war. So konnten Regelparameter gefunden werden, mit denen es möglich war, der Perimeterschleife zu folgen und schließlich in der Garage einzuparken. Wie im [https://youtu.be/NFWLRe9fYF8/ Video] zu sehen ist, gibt es noch Verbessungspotential in der Regelung des Roboters. Hierfür ist auch der Perimeterschleifensensor verantwortlich, der nur sehr stark springende, verrauschte Abstände zur Perimeterschleife lieferte. Dies war im Bereich an und über der Schleife selbst besonders stark, so dass für die Fahrt an der Perimeterschleife ein Abstand von 0,25 m gewählt wurde. Hier liefert der Sensor weniger validere Werte.


= Ansatzpunkte für die Fortführung des Ardumower Projektes =
= Ansatzpunkte für die Fortführung des Ardumower Projektes =


 
Für weitere Semester kann die Einstellung des Reglers sicherlich verfeinert werden, um dem Sollkurs besser folgen zu können. Durch die Strategie kann noch eine Windup-Erkennung implementiert werden, welche verhindert, dass bei zu großem Abstand zum Sollkurs, sich der Roboter im Kreis dreht.
 
Insbesondere bedarf es einer Anpassung von Variablenamen und Farben gemäß der Programmierrichtlinien.
'''Pinbelegung der Motortreiber auf der Ardumower Platine'''
 
 
Geschwindigkeit links:    PWM Pin 3
 
Geschwindigkeit rechts:    PWM Pin 5
 
Richtung links:        Digital Pin 31
 
Richtung rechts:      Digital Pin 33


= Link zum Quelltext in SVN =
= Link zum Quelltext in SVN =

Aktuelle Version vom 28. Februar 2018, 21:36 Uhr


Dieser Wiki-Beitrag ist Teil eines Projektes, welches im Rahmen vom Fachpraktikum Elektrotechnik im 6. Semester und 7. Mechatronik absolviert wurde. Ziel des Beitrags ist es, eine nachhaltige Dokumentation zu schaffen, welche die Ergebnisse festhält und das weitere Arbeiten am Projekt ermöglicht.

Autoren: Marcel Kreuer

Betreuer: Prof. Dr.-Ing. Schneider, Prof. Dr.-Ing. Mirek Göbel

Projekt: Ardumower

Einleitung

Dieser Artikel beschreibt die Implementierung des Reglers eines Mähroboters. Ziel ist es, eine Regelung der Radgeschwindigkeiten zu erreichen, sodass der Mähroboter die von der Strategie errechneten Wege trotz Störeinflüssen befahren kann.

Anforderungen

Sowohl im Lasten-, als auch im Pflichtenheft finden sich keine direkten Anforderungen an eine Regelung der Fahrt des Mähroboters. Sie ist jedoch essentiell wichtig, um beispielsweise die Fahrt zur Ladestation, das Umsetzen einer Mähstrategie, das vollständige Mähen der Fläche, und die Anforderung an die Verarbeitungszeit zu erfüllen

Um eine Umsetzung des Reglers zu spezifizieren, wurden folgende Anforderungen an die Karte gestellt:

ID Inhalt Ersteller Datum Geprüft von Datum
1 Der Regler hat folgende Eingangsgrößen.
  1. Den euklidischen Abstand zum Soll-Kurs: Abstand_Soll_Kurs
  2. Die mittlere Geschwindigkeit des Roboters in PWM: PWM_Sollgeschwindigkeit
Marcel Kreuer 05.10.2017 Simon Kohfeld 05.10.2017
2 Der Regler hat folgende Ausgangsgrößen.
  1. PWM Geschwindigkeit des linken Motors: PWM Motor Links
  2. PWM Geschwindigkeit des rechten Motors: PWM Motor Rechts
Marcel Kreuer 05.10.2017 Simon Kohfeld 05.10.2017
3 Der Roboter muss aus Entfernungen von bis zu 1,5 Metern zum Sollkurs, zurück zum Sollkurs finden. Marcel Kreuer 05.10.2017 Simon Kohfeld 05.10.2017
4 Der Roboter muss aus einer Entfernung von 1 Meter, binnen 3 Metern zurück auf dem Sollkurs sein. Marcel Kreuer 05.10.2017 Simon Kohfeld 05.10.2017
5 Der Roboter darf bei der Regelung im vorgeschriebenen Funktionsbereich nicht mehr als 30 cm überschwingen. Marcel Kreuer 05.10.2017 Simon Kohfeld 05.10.2017
6 Der Regler muss zyklisch aktualisiert werden. Marcel Kreuer 05.10.2017 Simon Kohfeld 05.10.2017
7 Die Umsetzung muss als Simulink-Modell erfolgen. Marcel Kreuer 05.10.2017 Simon Kohfeld 05.10.2017
8 Die Implementierung muss nach dem Prinzip eines PID-Reglers geschehen. Marcel Kreuer 05.10.2017 Simon Kohfeld 05.10.2017
9 Die Ausgangsgrößen dürfen einen Wert von 255 zu keiner Zeit überschreiten. Marcel Kreuer 05.10.2017 Simon Kohfeld 05.10.2017
10 Die Implementierung muss ohne Beeinträchtigung der Laufzeit erfolgen. Marcel Kreuer 05.10.2017 Simon Kohfeld 05.10.2017
11 Bei Kommentierung und Dokumentation muss sich an die Projektrichtlinien gehalten werden. Marcel Kreuer 05.10.2017 Simon Kohfeld 05.10.2017

Funktionaler-/Technischer Systementwurf

Bei der Größe des zu erstellenden Modells werden die Schritte Funktionaler Systementwurf / Technischer Systementwurf des V-Modells zusammen gelegt und bereits Schnittstellen zwischen den einzelnen Blöcken definiert.

Aufgrund der geringen Komplexität des Reglers wird dieser in einem Block implementiert.

Komponentenspezifikation

Das Modell des Reglers wird als Komponente aufgefasst, d.h. in einem Block Regler dem späteren Hauptprogramm zur Verfügung gestellt.

Dabei wird wie folgt vorgegangen.

Zunächst wird aus dem Abstand zum Soll-Kurs und dem Soll_Abstand eine Abweichung berechnet. Diese wird mit einem Multiplikationsfaktor(P-Anteil) verrechnet. Parallel wird die Abweichung auch an einem Integrator (I-Anteil) und an einen Differentiator mit vorgeschaltetem Filter verrechnet. Die drei Anteile bilden addiert die Stellgröße. Von der mittleren Geschwindigkeit der Räder wird die Steilgröße einmal abgezogen und einmal addiert, sodass sich unterschiedliche Werte für das linke und rechte Rad ergeben. Diese Werte werden auf 255 begrenzt.

Programmierung

In diesem Abschnitt wird die Implementierung des Reglers in Simulink gezeigt.

small

Dabei werden neben der Verrechnung der Eingänge, wie im vorherigen Abschnitt beschrieben, auch Diagnose-Ausgänge implementiert. Diese Diagnose-Ausgänge ermöglichen dabei, die einzelnen Signale über die WLAN- Schnittstelle zu übertragen.

Die Hauptarbeitspensum lag jedoch nicht in der Implementierung des Reglers, sondern in der Auslegung dessen. Die Auslegung unterteilt sich dabei in folgende Punkte:

Bestimmung des System-Verhaltens

Regler Simulation mit P=20 und D=50

Der Rasenmähroboter wurde mithilfe einer Sprungantwort auf die Antriebsräder auf sein Systemverhalten hin untersucht. Dabei fiel auf, dass der Roboter seine Fahrt mit konstantem Radius fortsetzte. Diese Verhalten wurde als I2-Verhalten klassifiziert.

Auswahl des Reglers

Zur Regelung des beobachteten Systemverhaltens wurde ein PD-Regler ausgewählt.

Auslegung der Regelparameter

Die Auslegung der Regelparameter erfolgte in zwei Schritten. Zunächst wurde das Fahrzeugmodell von Prof. Dr.-Ing. Göbel benutzt, um eine Offline-Auslegung des Reglers zu implementieren. Dies spart viel Zeit gegenüber der Auslegung des Reglers am Ardumower.

Danach wurde versucht, die ermittelten Werte auf dem Ardumower zu verifizieren. Leider gelang dies nicht, sodass erneut eine komplette Regler-Auslegung manuell gestartet werden musste. Ziel der Auslegung war es ,der Perimeterschleife zu folgen, und in die enge Ladestation hinein zu fahren.

Demonstration

Eine Demonstration des Reglers inklusive Einparken ,ist unter folgendem Link zu finden Youtube

Komponententest

Da es sich bei dieser Entwicklung um die einer einzelnen Komponente handelt, schließt der Komponententest mit dem Testbericht die Entwicklung ab.

ID Testfallbeschreibung Eingänge Abstand_Soll_Kurs, PWM Sollgeschwindigkeit, Soll_Abstand Erwartetes Ergebnis Testergebnis Testperson Datum
1 Kompilierung in Simulink 0.5, 120, 0 Der Regler lässt sich in Simulink kompilieren OK Marcel Kreuer 24.01.2018
2 Integration in Hauptprojekt 0.5, 120, 0 Es kommt zu keiner signifikanten Laufzeitbeeinflussung OK Marcel Kreuer 24.01.2018
3 Eingangsgrößen 0.5, 120, 0 Der Regler verarbeitet ohne Fehler die gesetzten Eingangsgrößen OK Marcel Kreuer 24.01.2018
4 Ausgangsgrößen 0.5, 120, 0 Der Regler liefert an beiden Ausgängen einen Wert im PWM-Bereich OK Marcel Kreuer 24.01.2018
5 Der Mäher fährt mit 0,5 m Abstand zum Sollkurs. 0.5, 120, 0 Der Mäher fährt zurück auf Sollkurs OK Marcel Kreuer 24.01.2018
6 Der Mäher fährt mit 1 m Abstand zum Sollkurs. 1.0, 120, 0 Der Mäher fährt in weniger als 3 m zurück auf Sollkurs OK Marcel Kreuer 24.01.2018
7 Der Mäher fährt mit 1,5 m Abstand zum Sollkurs. 1.5, 120, 0 Der Mäher fährt zurück auf Sollkurs. OK Marcel Kreuer 24.01.2018
8 Der Mäher fährt mit 3 m Abstand zum Sollkurs. 3.0, 120, 0 Der Wert an den PWM-Ausgängen überschreitet den Schwellwert von 255 nicht. OK Marcel Kreuer 24.01.2018
9 Der Mäher wird während der Fahrt um 90 Grad gedreht. 0, 120, 0 Der Mäher fährt zurück auf Sollkurs. OK Marcel Kreuer 24.01.2018
10 Der Mäher wird über 60 Sekunden simuliert 0, 120, 0 Der Mäher fährt zurück auf Sollkurs. Simulation der Ergebnisse in unter 2 Sekunden. OK Marcel Kreuer 24.01.2018
11 Es wurde sich an die Programmierrichtlinien gehalten - Der Mäher fährt zurück auf Sollkurs. Simulation der Ergebnisse in unter 2 Sekunden. nicht OK Marcel Kreuer 24.01.2018

Zusammenfassung

Im Zuge des Projektes Ardumower wurde ein Regler implementiert, mit dem es möglich ist, der Perimeterschleife zu folgen, in die Garage einzuparken und der sämtliche Anforderungen erfüllt. Neben der Reglerauslegung selbst, wurde das Hauptframework so verändert, dass auch ohne funktionierende Mähstrategie, ein Testen der Regelparameter möglich war. So konnten Regelparameter gefunden werden, mit denen es möglich war, der Perimeterschleife zu folgen und schließlich in der Garage einzuparken. Wie im Video zu sehen ist, gibt es noch Verbessungspotential in der Regelung des Roboters. Hierfür ist auch der Perimeterschleifensensor verantwortlich, der nur sehr stark springende, verrauschte Abstände zur Perimeterschleife lieferte. Dies war im Bereich an und über der Schleife selbst besonders stark, so dass für die Fahrt an der Perimeterschleife ein Abstand von 0,25 m gewählt wurde. Hier liefert der Sensor weniger validere Werte.

Ansatzpunkte für die Fortführung des Ardumower Projektes

Für weitere Semester kann die Einstellung des Reglers sicherlich verfeinert werden, um dem Sollkurs besser folgen zu können. Durch die Strategie kann noch eine Windup-Erkennung implementiert werden, welche verhindert, dass bei zu großem Abstand zum Sollkurs, sich der Roboter im Kreis dreht. Insbesondere bedarf es einer Anpassung von Variablenamen und Farben gemäß der Programmierrichtlinien.

Link zum Quelltext in SVN

SVN: ArduMower Regler.slx



→ zurück zum Hauptartikel: Projekt ArduMower