(81 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1:
Zeile 1:
[[Kategorie:Autonom]]
[[Kategorie:Autonom]]
<--[[Datei:ArdumowerKarte.png |rechts|mini|350px|Abb. 1: Matrix-basierte Karte der zu mähenden Fläche in MATLAB/Simulink]]--!>
<!--[[Datei:ArdumowerKarte.png |rechts|mini|350px|Abb. 1: Matrix-basierte Karte der zu mähenden Fläche in MATLAB/Simulink]]-->
BILD EINFÜGEN
BILD EINFÜGEN
'''Autor:''' [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]]
'''Autorin:''' [[Benutzer:Lihui Liu|Lihui Liu]]
== Einleitung ==
== Einleitung ==
Dieser Artikel beschreibt den Aufbau einer Matrix-basierten Karte zur Darstellung des aktuellen Mähstandes eines Rasenmähroboters (vgl. Abb. 1). Der Anstoß zur Entwicklung dieser Karte lieferte das Projekt "ArduMower", in dem der Kollege Prof. Göbel und der Autor dieses Artikels mit Studierenden gemeinsam einen autonomen Rasenmäher entwickeln, siehe [[Projekt_ArduMower| Projekt ArduMower]].
In der Simulation soll das Blinkersignal entsprechend Lastenheft angezeigt werden. Ziel dieses Themas ist die Steuerung der Lichtanlage gemäß [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Dokumentation/Fahrzeug/Blinker_Lihui_Liu/§ 54 StVZO - Einzelnorm.pdf §54 StVO]
Das systematische Vorgehen bei der Entwicklung des Modells orientiert sich am V-Prozessmodell.
== Ausgangszustand ==
Die Blinker befinden sich sowohl im Online Modul als auch im Offline, sie gehören zum Block "AKT-Aktoren". Der Ausgangszustand sieht wie die folgende Abbildung aus.
[[Datei:Ausgangszustand im offline.jpg|1200px |thumb| none |Abbildung 1: Ausgangszustand]]
<br>
Die Blinker werden in dem mit der rot eingerahmten Block gesteuert.
Der Ausgangszustand für die Blinker werden automatisch oder manuell realisiert, aber bei den aktuellen Zustand werden die Blinker nur automatisch gesteuert.
== Anforderungen==
== Anforderungen==
Im Lastenheft des Projektes ArduMower wird die Erstellung einer selbstlernenden Karte gefordert:<br>
Im Lastenheft werden Blinker nachfolgende Anforderungen gestellt:
[[Datei:Req10 2290.jpg|600px]]
[[Datei:Latheft.jpg|600px |thumb| none |Abbildung 2: der Anforderung für Blinker]]
<br>
Daraus ergerben sich folgende Pflichten.
Im Pflichtenheft taucht daraufhin der Punkt '''Selbstlernende Karte''' auf, konkrete Anforderungen werden jedoch nicht näher spezifiziert:<br>
[[Datei:Pflichtheft.jpg|1200px |thumb| none |Abbildung 3: Pflichten für die Blinker]]
Bei der Lichtsteuerung von Blinker sollten sie beim Überholvorgang, Abbiegen und Einparken automatisch gesteuert werden. Folgend ist eine Abbildung für den Konzept.
Wenn die Hindernisse erkannt werden, wird es als Signal vermittelt, dass das Fahrzeug sie überholen möchte, indem einen Spurwechseln initiiert, gibt dieses Modul eben das an die Blinkersteuerung weiter, nählich die Linksblinker werden aktiviert.
Wenn das Fahrzeug abbiegen möchte, gibt es 2 Fälle: entweder nach rechts oder nach links. Der Lenkwinkel wird mit dem Schwellwert verglichen, d.h. wenn der Lenkwinkel größer als den Schwellwert, wird Linksblinker aktiviert. Wenn der Lenkwinkel kleiner als den Schwellwert, wird Rechtsblinker aktiviert.
Wenn die Parklücke gefunden wird, wird ein Signal für den Blinker vermittelt, damit die Rechtsblinker aktiviert werden.
== Komponentenspezifikation ==
{| class="mw-datatable"
{| class="mw-datatable"
! style="font-weight: bold;" | ID
! style="font-weight: bold;" | ID
! style="font-weight: bold;" | Inhalt
! style="font-weight: bold;" | Inhalt
! style="font-weight: bold;" | Ersteller
! style="font-weight: bold;" | Ersteller
! style="font-weight: bold;" | Datum
! style="font-weight: bold;" | Reviewer
! style="font-weight: bold;" | Geprüft von
! style="font-weight: bold;" | Datum
! style="font-weight: bold;" | Datum
|-
|-
| 1
| 1
| Die Karte muss als Matrix mit der Rastergröße 30cm umgesetzt werden (Grid-Map).
| Blinkerkonzept(3 Modi)
| Prof. Schneider
| Lihui Liu
| 18.01.2018
| ---
| Hr. Kreuer
| 04.06.2020
| 18.01.2018
|-
|-
| 2
| 2
| Die Perimeterschleife muss rot markiert werden.
| Blinkerkonzept(3 Modi)
| Prof. Schneider
| ---
| 18.01.2018
| Daoyin Wang
| Hr. Kreuer
| 06.06.2020
| 18.01.2018
|-
|-
| 3
| 3
| Die aktuelle Position des Mähers muss blau markiert werden.
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 (vgl. Abb. 2).
Die vorliegende Abbildung zeigt das Simulinkmodell im Offline. Das erste Signal werden auf 2 Hz down gesampled um ein Flackern der Blinker zu unterdrücken. Anschließende wird durch Verknüpfen des Lenkwinkelvergleichers und der Blinkfrequenz ein Blinksignal erzeugt. Beim Einparken wird die gefundene Parklücke als zweite Signal eingegangen. Nach erfolgreichem Ermitteln des Blinkerstatus werden die Werte wieder auf Simulationsfrequenz up gesampled. Die Blinker werden als LEDs visualisiert.
[[Datei:Schnittstellen_SelbstlernendeKarte_ArduMower.jpg|rechts|mini|300px|Abb. 2: Schnittstellen für die Modellierung einer selbstlernenden Karte]]
== Ergebnisse ==
Die folgende Videos zeigen die Visualisierung der Blinker als LED beim Abbiegen, Übervorgang und Einparken.
[[Datei:Abbiegen1.mp4|600px|thumb| none |Abbiegen beim Rundkurs mit Kreuzung]]
== Komponentenspezifikation ==
[[Datei:Abbiegen2.mp4|600px |thumb| none |Abbiegen beim Rundkurs ohne Kreuzung]]
Das Modell wird insgesamt als Komponente aufgefasst, d. h. die einzelnen Blöcke aus dem Systementwurf werden als Bestandteil der Komponente "Selbstlernende Karte" definiert. Die Funktion der Komponente "Selbstlernende Karte" wird in Form eines PAP spezifiziert (vgl. Abb. 3).
[[Datei:PAP_SelbstlernendeKarte_ArduMower.jpg|rechts|mini|300px|Abb. 3: Spezifikation der selbstlernenden Karte]]
In der einmaligen Initialisierung werden die Farben der Karteninhalte entsprechend der Anforderungen festgelegt. Die <code>aColorMap</code> wird anderen Programmteilen als globale Variable zur Verfügung gestellt.
Die Blinker können nach der Lastenheft die entsprechend Anforderungen implementieren.
Die Karte wird aus einer Datei geladen und in Form und Größe initialisiert. Hierzu gehört auch die beschriftung der Achsen und die Darstellung des Gitters in Meter. Die Handles hierzu werden persistent gespeichert.
Videos sind von der Implementierung in folgendem Ordner abgelegt:
Abschließend wird der aktualisierte Inhalt der Karte dargestellt. Hierzu wird Inhalt (Bildmatrix) direkt über das Handle <code>hImg</code> aktualisiert.
Die Implementierung für Einparken ist nicht perfekt, sollte dieser Teil im nächste Semester verbessert werden. Wenn es möglich ist, sollte den Schwerpunkt auf die Blinker im Online Modell implementiert werden.
set(hImg,'CData',Karte); % Karte aktualisieren
</syntaxhighlight>
== Komponententest ==
Da es sich bei dieser Entwicklung um die einer einzelnen Komponente handelt, schließt der Komponententest mit dem Testbericht die Entwicklung ab.
| Neues Feld wird blau markiert, altes Feld wird rot markiert.
| OK
| Prof. Schneider
| 21.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
| Prof. Schneider
| 21.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
| Prof. Schneider
| 21.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
| Prof. Schneider
| 21.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
| Prof. Schneider
| 21.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
| Prof. Schneider
| 21.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
| Prof. Schneider
| 21.01.2018
|-
| 8
| Einbindung des Matlab-Skriptes in Simulink.
| Mäander simuliert in Simulink
| Die Karte wird zyklisch aktualisiert.
| OK
| Prof. Schneider
| 21.01.2018
|-
| 9
| Test der Eingangsparameter
| Variation der Eingangsparameter
| Die Karte wird zyklisch gemäß Anforderungen aktualisiert.
| OK
| Prof. Schneider
| 21.01.2018
|-
| 10
| Test der Ausgangsparameter
| Variation der Eingangsparameter
| Die Karte wird zyklisch gemäß Anforderungen aktualisiert.
| OK
| Prof. Schneider
| 21.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
| Prof. Schneider
| 21.01.2018
|-
| 12
| Kommentierung und Dokumentation entsprechen den Projektrichtlinien
| -
| Code Review, Artikel-Review
| OK
| Prof. Göbel
| 21.01.2018
|-
|}
Als Abschluss zeigt die letzte Abbildung dieses Artikels eine Ergebnisdarstellung einer mäanderfärmig simulierten Mähfahrt.
[[Datei:AnimierteKarte.gif |rechts|Abb. 4: Ergebnisdarstellung der Modellierung einer selbstlernenden Karte]]
== Zusammenfassung ==
Eine selbstlernende Karte wurde gemäß Anforderungen programmiert, getestet und dokumentiert. Als Ansteuerung wurde eine einfache Mäanderfahrt implementiert. Nun kann die [[ArduMower:_Mähstrategie|Mähstrategie]] anhand dieser Karte in Echtzeit visualisiert werden.
In der Simulation soll das Blinkersignal entsprechend Lastenheft angezeigt werden. Ziel dieses Themas ist die Steuerung der Lichtanlage gemäß 54 StVZO - Einzelnorm.pdf §54 StVO
Ausgangszustand
Die Blinker befinden sich sowohl im Online Modul als auch im Offline, sie gehören zum Block "AKT-Aktoren". Der Ausgangszustand sieht wie die folgende Abbildung aus.
Abbildung 1: Ausgangszustand
Die Blinker werden in dem mit der rot eingerahmten Block gesteuert.
Der Ausgangszustand für die Blinker werden automatisch oder manuell realisiert, aber bei den aktuellen Zustand werden die Blinker nur automatisch gesteuert.
Anforderungen
Im Lastenheft werden Blinker nachfolgende Anforderungen gestellt:
Bei der Lichtsteuerung von Blinker sollten sie beim Überholvorgang, Abbiegen und Einparken automatisch gesteuert werden. Folgend ist eine Abbildung für den Konzept.
Abbildung 4: Konzept
Wenn die Hindernisse erkannt werden, wird es als Signal vermittelt, dass das Fahrzeug sie überholen möchte, indem einen Spurwechseln initiiert, gibt dieses Modul eben das an die Blinkersteuerung weiter, nählich die Linksblinker werden aktiviert.
Wenn das Fahrzeug abbiegen möchte, gibt es 2 Fälle: entweder nach rechts oder nach links. Der Lenkwinkel wird mit dem Schwellwert verglichen, d.h. wenn der Lenkwinkel größer als den Schwellwert, wird Linksblinker aktiviert. Wenn der Lenkwinkel kleiner als den Schwellwert, wird Rechtsblinker aktiviert.
Wenn die Parklücke gefunden wird, wird ein Signal für den Blinker vermittelt, damit die Rechtsblinker aktiviert werden.
Die vorliegende Abbildung zeigt das Simulinkmodell im Offline. Das erste Signal werden auf 2 Hz down gesampled um ein Flackern der Blinker zu unterdrücken. Anschließende wird durch Verknüpfen des Lenkwinkelvergleichers und der Blinkfrequenz ein Blinksignal erzeugt. Beim Einparken wird die gefundene Parklücke als zweite Signal eingegangen. Nach erfolgreichem Ermitteln des Blinkerstatus werden die Werte wieder auf Simulationsfrequenz up gesampled. Die Blinker werden als LEDs visualisiert.
Abbildung 5. Simulink
Ergebnisse
Die folgende Videos zeigen die Visualisierung der Blinker als LED beim Abbiegen, Übervorgang und Einparken.
Abbiegen beim Rundkurs mit KreuzungAbbiegen beim Rundkurs ohne KreuzungÜbervorgang(statische Hindernisse)Einparken
Zusammenfassung
Die Blinker können nach der Lastenheft die entsprechend Anforderungen implementieren.
Videos sind von der Implementierung in folgendem Ordner abgelegt:
Ordner in SVN: //svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Teams/Blinker_Liu/Videos
Ausblick
Die Implementierung für Einparken ist nicht perfekt, sollte dieser Teil im nächste Semester verbessert werden. Wenn es möglich ist, sollte den Schwerpunkt auf die Blinker im Online Modell implementiert werden.