OSE: Bildverarbeitung mit Spurerkennung: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(61 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
'''Autoren:''' [[Benutzer:Johann Kismann|Johann Kismann]], [[Benutzer:Dominik Koenig| Dominik Koenig]] <br/>
'''Betreuer:''' [[Benutzer:Ulrich_Schneider |Prof. Schneider]]
== Inbetriebnahme ==
== Inbetriebnahme ==
* [[Sensor-/Aktortest OSE]]
* [[Sensor-/Aktortest OSE]]
=Einleitung=
Dieser Wiki-Artikel befasst sich im Rahmen des im 7. Semester absolvierten SDE-Praktikums mit dem Thema "OSE: Bildverarbeitung mit Spurerkennung". Ziel ist es dabei, dass mithilfe der im Carolocup-Fahrzeug eingebundenen Kamera, eine Spur erkannt wird und anschließend ein entsprechendes Fahrbahn-Polynom gebildet wird. Dieses Polynom besteht aus den Parametern a, b und c, welche nach deren Berechnung an die Gruppe der Querregelung übermittelt werden müssen. Das Ziel soll am Ende sein, dass die Fahrspur mit einer hohen Sicherheit erkannt und das Spurpolynom korrekt berechnet wird. Wichtig ist dabei, dass die Spurerkennung nicht empfindlich für Ausreißer ist.
= Ist-Stand WS 23/24 =
Der Stand zum Start des Praktikums kann aus dem Wiki-Artikel [[OSE_Softwareumgebung|Aktuelle OSE Softwareumgebung]] entnommen werden. Die dazu gehörigen VisualStudio-Programme sind bereits dazu in der Lage, die Spur zu erkennen und ein entsprechendes Spurpolynom zu erstellen. Jedoch treten dabei noch einige Fehler auf, welche in den kommenden Sprints behoben werden sollen.
= Sprint 1 =
== Problembeschreibung ==
Bei den ersten Tests der Spurerkennung.cpp-Datei ist aufgefallen, dass die Polynomberechnung nicht funktioniert, wenn das vorhandene Kalman-Filter ausgeführt wird. Dabei werden für die Parameter a, b und c nur NaN übergeben. Wird dieser auskommentiert, funktioniert die Spurerkennung und Polynomberechnung wieder so, dass die Spurparameter in Millimeter berechnet werden. Zudem ist aufgefallen, dass die daraus ergebenen Spurparameter nicht den Voraussetzungen des Schnittstellendokuments entsprechen. Das Schnittstellendokument gibt nämlich an, dass das Spurpolynom seinen Ursprung in der Mitte der Frontseite des Fahrzeuges hat. Der Ist-Zustand ist jedoch, dass das Spurpolynom mit der erkannten Spur übereinstimmt. Die EInhaltung der Voraussetzungen ist hierbei essenziell, da weitere Gruppen, wie die Gruppe der Querregelung mit diesen Werten weiter arbeiten müssen und deshalb gewährleistet sein muss, dass diese auch korrekt sind. Daher hat dieses Problem auch die höchste Priorität. Außerdem ist aufgefallen, dass die Parameter des Spurpolynoms im ControlDesk nicht korrekt ausgegeben werden und zusätzlich auch noch keine Ausgabe dieser Werte im PolyFenster vorhanden ist. Im ControlDesk ist es dabei so, dass die Parameter a und b zwar verbunden sin, aber nur 0 ausgeben. Parameter c hingegen ist nicht mit dem ControlDesk verbunden und gibt dementsprechend auch nichts aus.
== Zielsetzung ==
Die Ziele des ersten Sprints sind auf der einen Seite, dass die Spurparameter so angepasst werden, dass diese den Voraussetzungen des Schnittstellendokuments entsprechen. Auf der anderen Seite sollen die Ausgaben sowohl in ControlDesk, als auch im PolyFenster korrigiert bzw. erstellt werden. Letztlich ist hinzuzufügen, dass das fehlerhafte Kalman-Filter vorerst vernachlässigt wird, da dies lediglich der Optimierung der Spurerkennung dient, es aber zuerst am wichtigsten ist, ein generell lauffähiges und korrektes System zu besitzen.
== Analyse der Ursachen ==
[[Datei:OSE-Spurerkennung-Ishikawa-Sprint1.PNG|thumb|right|400px|Abb. 1: Ishikawa-Diagram-Sprint 1]]
Zur Analyse der Ursachen wurde gemäß des A3-Problemlösungsblattes das Ishikawa-Diagramm verwendet (Abbildung 1).
== Maßnahmen ==
{| class="wikitable"
! style="font-weight: bold;" | Problem
! style="font-weight: bold;" | Maßnahme
! style="font-weight: bold;" | ggf. Bild
|+ style = "text-align: left"|'''Maßnahmen Sprint 1'''
|-
|-
| Sprurparameter entsprechen nicht den Richtlinien
| Hinzufügen einer switch-case-Anweisung zur Spurerkennung und anschließender Korrektur des Spurparameter
| [[Datei:Switch-case-Erklaerung.PNG|thumb|400px|Abb. 2: Switch-case-Erklaerung]]
|-
| Anzeige im ControlDesk fehlerhaft/unvollständig
| Spurparameter C in Simulin wieder auf den CCF-Bus gelegt - Alle Parameter geben nun 0 aus, sind aber korrekt verbunden -> Fehler mit der Komunikation -> Absprache mit der Kom-Gruppe
| -
|-
| Spurparameter werden nicht im PolyFenster angezeigt
| Hinzufügen einer Ausgabe der Spurparameter im PolyFenster
| [[Datei:PolyFenster mit Parameter-Ausgabe.PNG|thumb|400px|Abb. 3: Parameter-Ausgabe im PolyFenster]]
|-
|}
</div>
== Nachweis der Wirksamkeit ==
=== Erneute Simulation ===
Nachdem die Maßnahmen umgesetzt wurden, konnten bei den darauffolgenden Durchführungen ermittelt werden, dass die Parameter korrekt im PolyFenster ausgegeben werden (siehe Abbildung 3).
=== Referenzmessung ===
Damit geprüft werden kann, ob die Parameter durch die switch-case-Anweisung korrekt umgerechnet werden, muss eine Referenzmessung durchgeführt werden, wobei die erste Kurve der Fahrbahn ausgemessen und anschließend geplottet wird. In derselben Figur soll darauf das Spurpolynom mit den entsprechenden Parametern a, b und c hinzugefügt werden, damit die beiden Kurven miteinander verglichen werden können. Gleicht sich das Spurpolynom dem Referenzpolynom an, ist die Umrechnung der Parameter korrekt. Falls nicht, müssen diese erneut angepasst werden. Da dies jedoch vor Beendigung des ersten Sprints jedoch noch nicht fertiggestellt werden konnte, wird dies in Sprint 2 erneut aufgefasst.
= Sprint 2 =
== Problembeschreibung ==
* Spurpolynom weicht von der Referenzmessung ab
* Umrechnung der Spurparameter von mm in m soll hinzugefügt werden
* Spurerkennungs-Software nicht für alle benutzten Kameras geeignet
Bemerkung: Die Umrechnung der Einheiten der Spurparameter wird bereits von dem Querregelungs-Team durchgeführt, daher haben wir uns mit diesem Team abgestimmt. Zusätzlich haben wir ebenfalls allen Teams Bescheid gegeben, dass die Spurparameter fehlerhaft und nicht vertrauenswürdig sind.
== Zielsetzung ==
* Matlab-Darstellung der Referenzmessung fertigstellen und mit den Spurparametern vergleichen
* Ggf. Kamera-Parameter ändern
* Parameter in die Einheit Meter umwandeln
* Spurerkennungs-Software kompatibel mit allen Kameras machen, ohne, dass immer Änderungen vorgenommen werden müssen
* Kalman-Filter analysieren/verbessern
Bemerkung: Kalman-Filter wird als Ziel in Sprint 3 aufgefasst, da dies eine niedrigere Priorität hat. Das Augenwerk wird zunächst darauf gerichtet, dass die Software kompatibel zu den anderen Kamerasystemen gemacht wird.
== Analyse der Ursachen ==
[[Datei:OSE-Spurerkennung-Ishikawa-Sprint1.PNG|thumb|right|400px|Abb. 4: Ishikawa-Diagram-Sprint 2]]
Zur Analyse der Ursachen wurde gemäß des A3-Problemlösungsblattes das Ishikawa-Diagramm verwendet (Abbildung 4).
== Maßnahmen ==
[[Datei:Spurpolynom-Referenz-Vergleich.PNG|thumb|400px|Abb. 7: Korrekter Spurpolynom-Referenz-Vergleich]]
[[Datei:Nachweis-Änderung Parameter bei KosTrafo.jpg|thumb|400px|Abb. 8: Änderung der Parameter bei der KosTrafo]]
[[Datei:Umrechnung der Spurparameter.jpg|thumb|400px|Abb. 9: Umrechnung der Spurparameter mit Verweis auf den Quellcode]]
[[Datei:Abfrage der IP-Adresse.jpg|thumb|400px|Abb. 10: Abfrage der IP-Adresse mit Verweis auf den Quellcode]]
{| class="wikitable"
! style="font-weight: bold;" | Problem
! style="font-weight: bold;" | Maßnahme
! style="font-weight: bold;" | ggf. Bild
|+ style = "text-align: left"|'''Tabelle:Maßnahmen Sprint 2'''
|-
|-
| Spurpolynom weicht von der Referenzmessung ab
| Vermessung des Kamera-Sichtfeldes; Entsprechendes Anpassen der Kamera-Parameter
| [[Datei:Spurpolynom-Referenz-Vergleich-Fehlerhaft.png|thumb|400px|Abb. 5: Abweichendes Spurpolynom mit alter Vermessung des ROI]]
|-
| Umrechnung der Spurparameter von mm in m
| Umrechnung der Spurparameter gemäß Abbildung 6
| [[Datei:Umrechnung-Spurparameter.png|thumb|400px|Abb. 6: Umrechnung der Spurparameter von mm in m]]
|-
| Software nicht kompatibel mit allen Kameras
| Identifikation der entsprechenden Kamera in "Spurerkennung.cpp" einbetten; Laden der entsprechenden Parameter der verwendeten Kamera (noch ausstehend)
| -
|-
|}
</div>
== Nachweis der Wirksamkeit ==
Nachdem die Parameter der Koordinatentransformation vermessen und anschließend geändert wurden, wurde der Referenzplot erneut gebildet. Wie in Abbildung 7 zu sehen ist, gleicht sich das Spurpolynom nun sehr gut den Referenzwerten an und kann damit als korrekt angesehen werden. Dabei ist zu erwähnen, dass die Referenzwerte die rechte Außenspur nachbilden.
Zusätzlich konnten wir erkennen, dass jede Kamera eine unterschiedliche IP-Adresse besitzt und man diese dadurch gut unterscheiden kann. Daher lesen wir nun bei jedem Aufruf der Software diese Adresse der Kamera ein und speicher diese ab (siehe Abbildung 9). Weiter Änderungen konnten wir noch nicht hinzufügen, da der Sprint 2 beendet wurde. Jedoch nehmen wir in Sprint 3 dies erneut auf und planen, die Adresse stetig abzufragen, um dann die entsprechenden Kamera-Parameter zu verwenden.
Außerdem wurden die Einheiten der Spurparameter ebenfalls im Quellcode mit den genannten Faktoren verrechnet (siehe Abbildung 10).
= Sprint 3 =
== Problembeschreibung ==
== Zielsetzung ==
== Analyse der Ursachen ==
== Nachweis der Wirksamkeit ==


== Nützliche Links ==
== Nützliche Links ==

Aktuelle Version vom 5. Dezember 2023, 10:57 Uhr

Autoren: Johann Kismann, Dominik Koenig
Betreuer: Prof. Schneider

Inbetriebnahme

Einleitung

Dieser Wiki-Artikel befasst sich im Rahmen des im 7. Semester absolvierten SDE-Praktikums mit dem Thema "OSE: Bildverarbeitung mit Spurerkennung". Ziel ist es dabei, dass mithilfe der im Carolocup-Fahrzeug eingebundenen Kamera, eine Spur erkannt wird und anschließend ein entsprechendes Fahrbahn-Polynom gebildet wird. Dieses Polynom besteht aus den Parametern a, b und c, welche nach deren Berechnung an die Gruppe der Querregelung übermittelt werden müssen. Das Ziel soll am Ende sein, dass die Fahrspur mit einer hohen Sicherheit erkannt und das Spurpolynom korrekt berechnet wird. Wichtig ist dabei, dass die Spurerkennung nicht empfindlich für Ausreißer ist.

Ist-Stand WS 23/24

Der Stand zum Start des Praktikums kann aus dem Wiki-Artikel Aktuelle OSE Softwareumgebung entnommen werden. Die dazu gehörigen VisualStudio-Programme sind bereits dazu in der Lage, die Spur zu erkennen und ein entsprechendes Spurpolynom zu erstellen. Jedoch treten dabei noch einige Fehler auf, welche in den kommenden Sprints behoben werden sollen.

Sprint 1

Problembeschreibung

Bei den ersten Tests der Spurerkennung.cpp-Datei ist aufgefallen, dass die Polynomberechnung nicht funktioniert, wenn das vorhandene Kalman-Filter ausgeführt wird. Dabei werden für die Parameter a, b und c nur NaN übergeben. Wird dieser auskommentiert, funktioniert die Spurerkennung und Polynomberechnung wieder so, dass die Spurparameter in Millimeter berechnet werden. Zudem ist aufgefallen, dass die daraus ergebenen Spurparameter nicht den Voraussetzungen des Schnittstellendokuments entsprechen. Das Schnittstellendokument gibt nämlich an, dass das Spurpolynom seinen Ursprung in der Mitte der Frontseite des Fahrzeuges hat. Der Ist-Zustand ist jedoch, dass das Spurpolynom mit der erkannten Spur übereinstimmt. Die EInhaltung der Voraussetzungen ist hierbei essenziell, da weitere Gruppen, wie die Gruppe der Querregelung mit diesen Werten weiter arbeiten müssen und deshalb gewährleistet sein muss, dass diese auch korrekt sind. Daher hat dieses Problem auch die höchste Priorität. Außerdem ist aufgefallen, dass die Parameter des Spurpolynoms im ControlDesk nicht korrekt ausgegeben werden und zusätzlich auch noch keine Ausgabe dieser Werte im PolyFenster vorhanden ist. Im ControlDesk ist es dabei so, dass die Parameter a und b zwar verbunden sin, aber nur 0 ausgeben. Parameter c hingegen ist nicht mit dem ControlDesk verbunden und gibt dementsprechend auch nichts aus.

Zielsetzung

Die Ziele des ersten Sprints sind auf der einen Seite, dass die Spurparameter so angepasst werden, dass diese den Voraussetzungen des Schnittstellendokuments entsprechen. Auf der anderen Seite sollen die Ausgaben sowohl in ControlDesk, als auch im PolyFenster korrigiert bzw. erstellt werden. Letztlich ist hinzuzufügen, dass das fehlerhafte Kalman-Filter vorerst vernachlässigt wird, da dies lediglich der Optimierung der Spurerkennung dient, es aber zuerst am wichtigsten ist, ein generell lauffähiges und korrektes System zu besitzen.

Analyse der Ursachen

Abb. 1: Ishikawa-Diagram-Sprint 1

Zur Analyse der Ursachen wurde gemäß des A3-Problemlösungsblattes das Ishikawa-Diagramm verwendet (Abbildung 1).

Maßnahmen

Problem Maßnahme ggf. Bild
Maßnahmen Sprint 1
Sprurparameter entsprechen nicht den Richtlinien Hinzufügen einer switch-case-Anweisung zur Spurerkennung und anschließender Korrektur des Spurparameter
Abb. 2: Switch-case-Erklaerung
Anzeige im ControlDesk fehlerhaft/unvollständig Spurparameter C in Simulin wieder auf den CCF-Bus gelegt - Alle Parameter geben nun 0 aus, sind aber korrekt verbunden -> Fehler mit der Komunikation -> Absprache mit der Kom-Gruppe -
Spurparameter werden nicht im PolyFenster angezeigt Hinzufügen einer Ausgabe der Spurparameter im PolyFenster
Abb. 3: Parameter-Ausgabe im PolyFenster

Nachweis der Wirksamkeit

Erneute Simulation

Nachdem die Maßnahmen umgesetzt wurden, konnten bei den darauffolgenden Durchführungen ermittelt werden, dass die Parameter korrekt im PolyFenster ausgegeben werden (siehe Abbildung 3).

Referenzmessung

Damit geprüft werden kann, ob die Parameter durch die switch-case-Anweisung korrekt umgerechnet werden, muss eine Referenzmessung durchgeführt werden, wobei die erste Kurve der Fahrbahn ausgemessen und anschließend geplottet wird. In derselben Figur soll darauf das Spurpolynom mit den entsprechenden Parametern a, b und c hinzugefügt werden, damit die beiden Kurven miteinander verglichen werden können. Gleicht sich das Spurpolynom dem Referenzpolynom an, ist die Umrechnung der Parameter korrekt. Falls nicht, müssen diese erneut angepasst werden. Da dies jedoch vor Beendigung des ersten Sprints jedoch noch nicht fertiggestellt werden konnte, wird dies in Sprint 2 erneut aufgefasst.

Sprint 2

Problembeschreibung

  • Spurpolynom weicht von der Referenzmessung ab
  • Umrechnung der Spurparameter von mm in m soll hinzugefügt werden
  • Spurerkennungs-Software nicht für alle benutzten Kameras geeignet

Bemerkung: Die Umrechnung der Einheiten der Spurparameter wird bereits von dem Querregelungs-Team durchgeführt, daher haben wir uns mit diesem Team abgestimmt. Zusätzlich haben wir ebenfalls allen Teams Bescheid gegeben, dass die Spurparameter fehlerhaft und nicht vertrauenswürdig sind.

Zielsetzung

  • Matlab-Darstellung der Referenzmessung fertigstellen und mit den Spurparametern vergleichen
  • Ggf. Kamera-Parameter ändern
  • Parameter in die Einheit Meter umwandeln
  • Spurerkennungs-Software kompatibel mit allen Kameras machen, ohne, dass immer Änderungen vorgenommen werden müssen
  • Kalman-Filter analysieren/verbessern

Bemerkung: Kalman-Filter wird als Ziel in Sprint 3 aufgefasst, da dies eine niedrigere Priorität hat. Das Augenwerk wird zunächst darauf gerichtet, dass die Software kompatibel zu den anderen Kamerasystemen gemacht wird.

Analyse der Ursachen

Abb. 4: Ishikawa-Diagram-Sprint 2

Zur Analyse der Ursachen wurde gemäß des A3-Problemlösungsblattes das Ishikawa-Diagramm verwendet (Abbildung 4).

Maßnahmen

Abb. 7: Korrekter Spurpolynom-Referenz-Vergleich
Abb. 8: Änderung der Parameter bei der KosTrafo
Abb. 9: Umrechnung der Spurparameter mit Verweis auf den Quellcode
Abb. 10: Abfrage der IP-Adresse mit Verweis auf den Quellcode
Problem Maßnahme ggf. Bild
Tabelle:Maßnahmen Sprint 2
Spurpolynom weicht von der Referenzmessung ab Vermessung des Kamera-Sichtfeldes; Entsprechendes Anpassen der Kamera-Parameter
Abb. 5: Abweichendes Spurpolynom mit alter Vermessung des ROI
Umrechnung der Spurparameter von mm in m Umrechnung der Spurparameter gemäß Abbildung 6
Abb. 6: Umrechnung der Spurparameter von mm in m
Software nicht kompatibel mit allen Kameras Identifikation der entsprechenden Kamera in "Spurerkennung.cpp" einbetten; Laden der entsprechenden Parameter der verwendeten Kamera (noch ausstehend) -

Nachweis der Wirksamkeit

Nachdem die Parameter der Koordinatentransformation vermessen und anschließend geändert wurden, wurde der Referenzplot erneut gebildet. Wie in Abbildung 7 zu sehen ist, gleicht sich das Spurpolynom nun sehr gut den Referenzwerten an und kann damit als korrekt angesehen werden. Dabei ist zu erwähnen, dass die Referenzwerte die rechte Außenspur nachbilden.

Zusätzlich konnten wir erkennen, dass jede Kamera eine unterschiedliche IP-Adresse besitzt und man diese dadurch gut unterscheiden kann. Daher lesen wir nun bei jedem Aufruf der Software diese Adresse der Kamera ein und speicher diese ab (siehe Abbildung 9). Weiter Änderungen konnten wir noch nicht hinzufügen, da der Sprint 2 beendet wurde. Jedoch nehmen wir in Sprint 3 dies erneut auf und planen, die Adresse stetig abzufragen, um dann die entsprechenden Kamera-Parameter zu verwenden.

Außerdem wurden die Einheiten der Spurparameter ebenfalls im Quellcode mit den genannten Faktoren verrechnet (siehe Abbildung 10).

Sprint 3

Problembeschreibung

Zielsetzung

Analyse der Ursachen

Nachweis der Wirksamkeit

Nützliche Links

Mögliche Software


→ zurück zum Hauptartikel: Praktikum SDE | SDE-Team 2023/24