ArduMower: Regler: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Zeile 117: Zeile 117:
= Programmierung =
= Programmierung =


= Komponenten Test=
= Komponententest =
Da es sich bei dieser Entwicklung um die einer einzelnen Komponente handelt, schließt der Komponententest mit dem Testbericht die Entwicklung ab.
 
{| class="mw-datatable"
! style="font-weight: bold;" | ID
! style="font-weight: bold;" | Testfallbeschreibung
! style="font-weight: bold;" | Eingänge x,y,PosAlt,Ausrichtung,Karte,Bumper,Ultraschall,Perimeterschleife
! style="font-weight: bold;" | Erwartetes Ergebnis
! style="font-weight: bold;" | Testergebnis
! style="font-weight: bold;" | Testperson
! style="font-weight: bold;" | Datum
|-
| 1
| Der Mäher fährt kein Feld weiter.
| 0.1, 0.0, [0;0], 0, Karte, 0, 0, 1000
| Kein neues Feld wird blau markiert.
| OK
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
| 24.01.2018
|-
| 2
| Der Mäher fährt auf der Perimeterschleife.
| 0.6, 0.0, [0.3;0.0], 0, Karte, 0, 0, 1000
| Neues Feld wird blau markiert, altes Feld wird rot markiert.
| OK
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
| 24.01.2018
|-
| 3
| Der Mäher fährt ein Feld weiter.
| 0.3, 0.0, [0;0], 0, Karte, 0, 0, 1000
| Neues Feld wird blau markiert.
| OK
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
| 24.01.2018
|-
| 4
| Der Mäher trifft auf ein Hindernis.
| 34.0, 4.0, [33.7;4.0], 0, Karte, 1, 0, 1000
| Neues Feld wird magenta markiert, altes Feld wird hellgrün markiert.
| OK
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
| 24.01.2018
|-
| 5
| Das überschreitet die Perimeterschleife in unbekanntes Gebiet.
| 0.0, 3.0, [0.3;3.0], 0, Karte, 0, 0, 1000
| Neues Feld wird weiß markiert, altes Feld wird rot markiert.
| OK
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
| 24.01.2018
|-
| 6
| Das Fährt auf ungemä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
| [[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
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
| 24.01.2018
|-
| 7
| Der Mäher fährt mit fester Zykluszeit eine simulierte Mäanderfahrt.
| Mäander simuliert, *,*,*, 0, Karte, 0, 0, 1000
| Die Karte wird zyklisch aktualisiert.
| OK
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
| 24.01.2018
|-
| 8
| Einbindung des Matlab-Skriptes in Simulink.
| Mäander simuliert in Simulink
| Die Karte wird zyklisch aktualisiert.
| OK
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
| 24.01.2018
|-
| 9
| Test der Eingangsparameter
| Variation der Eingangsparameter
| Die Karte wird zyklisch gemäß Anforderungen aktualisiert.
| OK
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
| 24.01.2018
|-
| 10
| Test der Ausgangsparameter
| Variation der Eingangsparameter
| Die Karte wird zyklisch gemäß Anforderungen aktualisiert.
| OK
| [[Benutzer:Marcel_Kreuer| Marcel Kreuer]]
| 24.01.2018
|-
| 11
| Laufzeitmessung
| 0.3, 0.0, [0;0], 0, Karte, 0, 0, 1000
| Die Initialisierung muss 1s und die zyklische Darstellung muss 1ms unterschreiten.
| OK
| [[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
|-
|}


= Zusammenfassung =
= Zusammenfassung =

Version vom 19. Februar 2018, 16:25 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

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 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

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 der 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 Soll-Kurs, 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 Soll-Kurs 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 Die 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 Implementierung muss ohne Beeinträchtigung der Laufzeit erfolgen. Marcel Kreuer 05.10.2017 Simon Kohfeld 05.10.2017
10 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.

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

Komponenten Spezifikation

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, so dass sich unterschiedliche Werte für das Linke und Rechte Rad ergeben. Diese Werte werden auf 255 begrenzt.

Programmierung

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 x,y,PosAlt,Ausrichtung,Karte,Bumper,Ultraschall,Perimeterschleife Erwartetes Ergebnis Testergebnis Testperson Datum
1 Der Mäher fährt kein Feld weiter. 0.1, 0.0, [0;0], 0, Karte, 0, 0, 1000 Kein neues Feld wird blau markiert. OK Marcel Kreuer 24.01.2018
2 Der Mäher fährt auf der Perimeterschleife. 0.6, 0.0, [0.3;0.0], 0, Karte, 0, 0, 1000 Neues Feld wird blau markiert, altes Feld wird rot markiert. OK Marcel Kreuer 24.01.2018
3 Der Mäher fährt ein Feld weiter. 0.3, 0.0, [0;0], 0, Karte, 0, 0, 1000 Neues Feld wird blau markiert. OK Marcel Kreuer 24.01.2018
4 Der Mäher trifft auf ein Hindernis. 34.0, 4.0, [33.7;4.0], 0, Karte, 1, 0, 1000 Neues Feld wird magenta markiert, altes Feld wird hellgrün markiert. OK Marcel Kreuer 24.01.2018
5 Das überschreitet die Perimeterschleife in unbekanntes Gebiet. 0.0, 3.0, [0.3;3.0], 0, Karte, 0, 0, 1000 Neues Feld wird weiß markiert, altes Feld wird rot markiert. OK Marcel Kreuer 24.01.2018
6 Das Fährt auf ungemä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 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 Marcel Kreuer 24.01.2018
7 Der Mäher fährt mit fester Zykluszeit eine simulierte Mäanderfahrt. Mäander simuliert, *,*,*, 0, Karte, 0, 0, 1000 Die Karte wird zyklisch aktualisiert. OK Marcel Kreuer 24.01.2018
8 Einbindung des Matlab-Skriptes in Simulink. Mäander simuliert in Simulink Die Karte wird zyklisch aktualisiert. OK Marcel Kreuer 24.01.2018
9 Test der Eingangsparameter Variation der Eingangsparameter Die Karte wird zyklisch gemäß Anforderungen aktualisiert. OK Marcel Kreuer 24.01.2018
10 Test der Ausgangsparameter Variation der Eingangsparameter Die Karte wird zyklisch gemäß Anforderungen aktualisiert. OK Marcel Kreuer 24.01.2018
11 Laufzeitmessung 0.3, 0.0, [0;0], 0, Karte, 0, 0, 1000 Die Initialisierung muss 1s und die zyklische Darstellung muss 1ms unterschreiten. OK Marcel Kreuer 24.01.2018
12 Kommentierung und Dokumentation entsprechen den Projektrichtlinien - Code Review, Artikel-Review OK Prof. Dr.-Ing. Schneider, 24.01.2018

Zusammenfassung

Ansatzpunkte für die Fortführung des Ardumower Projektes

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

SVN: ArduMower Regler.slx



→ zurück zum Hauptartikel: Projekt ArduMower