OSE: Bildverarbeitung mit Spurerkennung
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
Zur Analyse der Ursachen wurde gemäß des A3-Problemlösungsblattes das Ishikawa-Diagramm verwendet (Abbildung 1).
Maßnahmen
Problem | Maßnahme | ggf. Bild |
---|---|---|
Sprurparameter entsprechen nicht den Richtlinien | Hinzufügen einer switch-case-Anweisung zur Spurerkennung und anschließender Korrektur des Spurparameter | |
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 |
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
Zur Analyse der Ursachen wurde gemäß des A3-Problemlösungsblattes das Ishikawa-Diagramm verwendet (Abbildung 4).
Maßnahmen
Problem | Maßnahme | ggf. Bild |
---|---|---|
Spurpolynom weicht von der Referenzmessung ab | Vermessung des Kamera-Sichtfeldes; Entsprechendes Anpassen der Kamera-Parameter | |
Umrechnung der Spurparameter von mm in m | Umrechnung der Spurparameter gemäß Abbildung 6 | |
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