SoSe24 - Praktikum Systementwurf - Spurerkennung mit Kamera (Modul OSE): Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
 
(123 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 24: Zeile 24:


== Bewertung ==
== Bewertung ==
Die Bewertung erfolgt im Rahmen der Lernzielkontrolle 3.
Die Bewertung erfolgt im Rahmen der [[SoSe24_-_Praktikum_Systementwurf_-_Lernzielkontrolle_3|Lernzielkontrolle 3]].


== Voraussetzungen ==
== Voraussetzungen ==
Zeile 51: Zeile 51:
| 8:20  || Bearbeitung der Aufgaben (vgl. Tabelle 2) || Gruppenarbeit
| 8:20  || Bearbeitung der Aufgaben (vgl. Tabelle 2) || Gruppenarbeit
|-
|-
| 10:00 || Statusbericht der Teams || max. 5 Min. pro Team
| 10:10 || Statusbericht der Teams || max. 5 Min. pro Team
|-
|-
| 10:25  || Verabschiedung || Moderation durch Marc Ebmeyer
| 10:25  || Verabschiedung || Moderation durch Marc Ebmeyer
Zeile 63: Zeile 63:
Um eine Kamera sinnvoll zur Spurerkennung einsetzen zu können, muss diese zuvor kalibriert werden.
Um eine Kamera sinnvoll zur Spurerkennung einsetzen zu können, muss diese zuvor kalibriert werden.
# Studieren Sie die zugehörigen Wiki-Artikel und arbeiten Sie sich in die Camera Calibrator App von MATLAB<sup>®</sup> ein.
# Studieren Sie die zugehörigen Wiki-Artikel und arbeiten Sie sich in die Camera Calibrator App von MATLAB<sup>®</sup> ein.
# Führen Sie die Kamera-Kalibrierung mit MATLAB<sup>®</sup> durch. Verwenden Sie hierzu eigene Bilder einer eigenen Kamera (möglichst mit Weitwinkellinse).
# Messen Sie die extrinsische und intrinsische Parameter der Kameras von Wagen 1 und 2 mit der [https://de.mathworks.com/help/vision/ref/cameracalibrator-app.html?searchHighlight=camera%20calibrator&s_tid=srchtitle_camera%20calibrator_1#responsive_offcanvas MATLAB<sup>®</sup> Camera Calibrator App].
# Identifizieren Sie extrinsische und intrinsische Parameter.
# Identifizieren Sie extrinsische und intrinsische Parameter.
# Machen Sie ein Foto eines vermessenen Aufbaus.
# Machen Sie ein Foto eines vermessenen Aufbaus.
# Transformieren Sie einen vermessenen Punkt von Weltkoordinaten in Bildkoordinaten und umgekehrt.
# Transformieren Sie einen vermessenen Punkt von Weltkoordinaten in Bildkoordinaten.
# Machen Sie ein Foto mit der Kamera auf der Fahrbahn von der Startlinie aus (Geradeaus.jpg).
# Machen Sie ein Foto mit der Kamera auf der Fahrbahn von der ersten Kurve aus (Linkskurve.jpg).
# Entzerren Sie beide Fotos anhand Ihrer ermittelten k-Matrix mit dem MATLAB<sup>®</sup>-Skript <code>entzerreVideobild</code>.
# Dokumentieren Sie Ihren Versuchsaufbau, die Durchführung und Ergebnisse.
# Dokumentieren Sie Ihren Versuchsaufbau, die Durchführung und Ergebnisse.
'''Arbeitsergebnisse:'''
* Extrinsische Kameraparameter: <math>[x,y,z]_C, \Phi, \Theta, \Psi</math>
* Intrinsische Kameraparameter: k-Matrix
* Eingangsdaten: Geradeaus.jpg, Linkskurve.jpg
* MATLAB<sup>®</sup>-Skript <code>entzerreVideobild</code>, welches anhand der intrinsischen Kameraparameter die Bildentzerrung durchführt.
* Versuchsprotokoll <code>Kamerakalibrierung.docx</code>
'''Lernzielkontrollfragen:'''
* Welche intrinsischen und extrinsischen Kameraparameter haben Wagen 1 und 2?
* Welchen Region-of-Interest (ROI) haben die Kameras?
* Wie ist der Zusammenhang zwischen Welt- und Bildkoordinaten?
* Welchen Blindbereich in Fahrzeugkoordinaten haben Wagen 1 und 2 (<math>x_F</math>)?


'''Links'''
'''Links'''
* [[Kalibrierung_der_Kamera| HSHL-Wiki: Kalibrierung_der_Kamera]]
* [[Kalibrierung_der_Kamera| HSHL-Wiki: Kalibrierung_der_Kamera]]
* [https://de.mathworks.com/help/vision/ref/cameracalibrator-app.html?searchHighlight=camera%20calibrator&s_tid=srchtitle_camera%20calibrator_1#responsive_offcanvas MATLAB<sup>®</sup> Camera Calibrator App]
* [https://de.mathworks.com/help/vision/ref/cameracalibrator-app.html?searchHighlight=camera%20calibrator&s_tid=srchtitle_camera%20calibrator_1#responsive_offcanvas MATLAB<sup>®</sup> Camera Calibrator App]
*[[OSE:_Bildverarbeitung_mit_Spurerkennung]]


'''Arbeitsergebnisse:'''  
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
* Extrinsische Kameraparameter: <math>[x,y,z]_C, \Phi, \Theta, \Psi</math>
| <strong>Tipps&thinsp;</strong>
* Intrinsische Kameraparameter: k-Matrix
|-
* kalibrierte Kamerabilder
|
* Das Schachbrett zur Kalibrierung existiert bereits im Labor.
* Bei der Bilderreihe muss das Schachbrettmuster den '''gesamten''' Bildbereich abdecken.
* Legen Sie das Schachbrett flach auf den Boden und vermessen Sie die Position in Bezug auf die Kamera mit einem Maßband. So können Sie Lage und Pose der verbauten Kamera in MATLAB<sup>®</sup> ablesen.
|}
----
----


=== Aufgabe 9.2: Segmentierung der Fahrbahnmarkierungen ===
=== Aufgabe 9.2: Segmentierung der Fahrbahnmarkierungen ===
[[Datei:Spurkandidaten F040.png|400px|thumb|right|Abb. 3: Geradeausfahrt]]
[[Datei:Spurkandidaten F040.png|200px|thumb|right|Abb. 3: Geradeausfahrt (Frame 40)]]
[[Datei:Spurkandidaten F160.png|400px|thumb|right|Abb. 4: leichte Linkskurve]]
[[Datei:Spurkandidaten F160.png|200px|thumb|right|Abb. 4: leichte Linkskurve (Frame 160)]]
[[Datei:Spurkandidaten F350.png|400px|thumb|right|Abb. 5: scharfe Linkskurve]]
[[Datei:Spurkandidaten F350.png|200px|thumb|right|Abb. 5: scharfe Linkskurve (Frame 350)]]
[[Datei:Rundkurs IPT markiete Segmente.png|400px|thumb|right|Abb. 3: Segmentierung der Fahrspuren]]


# Laden Sie das Bild <code>Spurkandidaten_F040.png</code> (vgl. Abb. ).  
# Laden Sie das Bild <code>Spurkandidaten_F040.png</code> (vgl. Abb. 3).  
# Segmentieren Sie aus dem Kantenbild die rechte Fahrbahnmarkierungen
# Segmentieren Sie aus dem Kantenbild die rechte Fahrbahnmarkierungen. Welche Algorithmen der Vorlesung "Digitale Signal und Bildverarbeitung" lassen sich anwenden?
# Zeigen Sie das Segment farbig im Bild an.
# Zeigen Sie das Segment farbig im Bild an.
# Verifizieren Sie Ihren Segmentierungsalgorithmus mit den Bildern Spurkandidaten F160.png und Spurkandidaten F350.png.
# Verifizieren Sie Ihren Segmentierungsalgorithmus mit den Bildern Spurkandidaten F160.png und Spurkandidaten F350.png.
Zeile 95: Zeile 115:
* [[Medium:Spurkandidaten F350.png]]
* [[Medium:Spurkandidaten F350.png]]


'''Arbeitsergebnis:''' Segmentierung der X-Y-Daten der rechten Fahrspuren für die unterschiedlichen Eingangsdateien mit dem Skript <code>segmentiereFahrbahnmarkierung.m</code>.  
'''Arbeitsergebnisse:'''  
* Segmentierung der X-Y-Daten der rechten Fahrspuren für die unterschiedlichen Eingangsdateien mit dem Skript '''<code>segmentiereFahrbahnmarkierung.m</code>'''.
* Segmentmaske als Mat-Datei z.&#8239;B.'''<code>Spurkandidaten F040.mat</code>'''.
 
'''Lernzielkontrollfragen:'''
* Welche Methoden kennen Sie aus der Vorlesung "Digitale Signal- und Bildverarbeitung", um eine Fahrspur zu segmentieren? Stellen Sie 5 unterschiedliche Ansätze vor.
* Welche Merkmale sind für eine Fahrspur signifikant.
* Welche Fehlereinflüsse gibt es? Wie kann man diesen entgegenwirken?
 
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Tipp 1&thinsp;</strong>
|-
|
# Nutzen Sie [https://www.mathworks.com/help/images/ref/bwconncomp.html <code>bwlabel</code>] um zusammenhängende Gebiete segmentieren.
# Wählen Sie das räumlich nächste Segment rechts der Bildmitte (376,531).
# Speichern Sie das Segment als Maske in eine mat-Datei.
# Färben Sie mit der Maske Ihr Ergebnis ein.
|}
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Tipp 2: Einfärben der Fahrspur&thinsp;</strong>
|-
|
<source lang="matlab" style="font-size:medium">stDateiname = 'Spurkandidaten_F040.png';
aFrame = uint8(imread(stDateiname)); % Bild laden
load([stDateiname(1:end-3),'mat']);  % Spurkandidaten laden
R = 255 * aFrame;
G = 255 * aFrame;
B = 255 * aFrame;
B = B.*uint8(~aRechteFahrspur); % Maske anwenden
aRGBBild = cat(3, R, G, B);    % RGB-Bild erzeugen
imshow(aRGBBild);</source>
|}
 
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Musterlösung&thinsp;</strong>
|-
| [[Datei:ZeigeSegmente.jpg|1000px|thumb|right|Abb. 6: Segmentierung der Fahrspuren]]
|}
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Programmablaufplan&thinsp;</strong>
|-
| [[Datei:SegmentiereFahrbahnmarkierung.png|600px|thumb|right|Abb. 7: PAP der Fahrspursegmentierung]]
|}
 
----
----


=== Aufgabe 9.3: Spurpolynom ===
=== Aufgabe 9.3: Spurpolynom ===
[[Datei:Rundkurs IPT Polynom.jpg|400px|thumb|right|Abb. 4: Darstellung der Fahrspuren als Polynom]]
[[Datei:ZeigeSpurpolynom_Spurkandidaten_F160.jpg|400px|thumb|right|Abb. 8: Darstellung der Fahrspuren als Polynom]]


# Bestimmen Sie für die drei Spuren die Spurpolynome 2. Ordnung mit <code>polyfit</code>.
# Bestimmen Sie für die rechte Fahrbahnmarkierungen das Spurpolynome 2. Ordnung mit <code>polyfit</code>.
# Ersetzen Sie <code>polyfit</code> durch die einfache Polynomapproximation <code>interpoliere_weg.m</code>.
# Ersetzen Sie <code>polyfit</code> durch die einfache Polynomapproximation [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Software/Demos/Lane_Tracking/interpoliereFahrspur.m <code>interpoliereFahrspur.m</code>].
# Berechnen Sie aus dem Spurpolynom die drei Fahrspuren.
# Berechnen Sie aus dem Spurpolynom die rechte Fahrbahnmarkierungen.
# Blenden Sie die drei Fahrspuren im Videobild ein.
# Blenden Sie die rechte Fahrbahnmarkierungen im Videobild für die Bildframes 40, 160 und 350 ein.


'''Demo:''' https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Software/Demos/Lane_Tracking
'''Demo:''' https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Software/Demos/Lane_Tracking


'''Arbeitsergebnis''': Spurpolynome für jeden Zyklus des Films, Visuelle Überprüfung durch Einblendung in das Video <code>zeigeSpurpolynom.m</code>
'''Eingangsdaten:'''
* [[Medium:Spurkandidaten.zip]]
* [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Software/Demos/Lane_Tracking/interpoliereFahrspur.m <code>interpoliereFahrspur.m</code>] als Alternative zu <code>polyfit</code>
 
'''Arbeitsergebnis''': Spurpolynome für die Bildframes 40, 160 und 350, visuelle Überprüfung durch Einblendung in die Bilddateien '''<code>zeigeSpurpolynom.m</code>''' (vgl. Abb. 8)
 
'''Lernzielkontrolle:'''
* Wie lauten die Umrechnungsfaktoren Pixel in m in xF- und yF-Richtung.
* Welche Vor- und Nachteile hat die Polynombildung?
* Wie könnten die Nachteile behandelt werden?
* Wie wird der Blindbereich vorm Fahrzeug berücksichtigt?
 
'''Dokumente''':
* [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Anforderungsmanagement/Lastenheft/Lastenheft_Autonomes_Fahrzeug.pdf Lastenheft_Autonomes_Fahrzeug.pdf]
* [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Anforderungsmanagement/Lastenheft/Schnittstellendokumentation_Anlage_Lastenheft.docx Schnittstellendokumentation_Anlage_Lastenheft.docx]
 
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Tipps&thinsp;</strong>
|-
| Wandeln Sie die Maske mit [https://de.mathworks.com/help/matlab/ref/find.html <code>find</code>] in einen Vektor.
|-
| Die Koordinatentransformation Bild- zu Fahrzeug-KOS besteht aus einer Verschiebung und der Umrechnung Pixel zu m. Informationen zu den KOS finden Sie in den Dokumenten ''Lastenheft_Autonomes_Fahrzeug.pdf'' und ''Schnittstellendokumentation_Anlage_Lastenheft.docx''.
|-
| Nutzen Sie für die Polynomregression [https://de.mathworks.com/help/matlab/ref/polyfit.html <code>polyfit</code>] und alternativ <code>interpoliereFahrspur.m</code>.
|-
|
Verwenden Sie die LaTeX-Notation im Titel.
<source lang="matlab" style="font-size:small">title(['p(x)=',num2str(p(1)),'$$\frac{1}{m} \cdot x^2 + $$',num2str(p(2)),'$$ \cdot x + $$',num2str(p(3)),'$$\,m$$'],'interpreter','latex') </source>
|}
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Programmablaufplan&thinsp;</strong>
|-
| [[Datei:ZeigeSpurpolynom.png|600px|thumb|right|Abb. 9: PAP der Polynomregression]]
|}


== Durchführung ==
== Durchführung ==
Zeile 117: Zeile 213:
! #  !! Thema !! Teilnehmer
! #  !! Thema !! Teilnehmer
|-
|-
| 1  || [[SoSe23_-_Praktikum_Systementwurf_-_Objekt-_und_Spurerkennung_(OSE)_mit_Kamera#Aufgabe_9.4_Kamerakalibrierung|9.4 Kamerakalibrierung]] || Oliver Scholze, Niklas Reeker
| 1  || [[SoSe24_-_Praktikum_Systementwurf_-_Inverse_Perspektiventransformation_(IPT)|9.4 Inverse Perspektiventransformation (IPT)]] || Daniel Block, Paul Janzen
|-
|-
| 2  || [[SoSe23_-_Praktikum_Systementwurf_-_Objekt-_und_Spurerkennung_(OSE)_mit_Kamera#Aufgabe_9.5_Inverse_Perspektiventransformation_(IPT)|9.5 Inverse Perspektiventransformation (IPT)]] || Benjamin Dilly, Kevin Mudczinski
| 2  || [[SoSe24_-_Praktikum_Systementwurf_-_Segmentierung_der_Fahrbahnmarkierungen|9.5 Segmentierung der Fahrbahnmarkierungen]] || Dennis Fleer, Philipp Sander
|-
|-
| 3  || [[SoSe23_-_Praktikum_Systementwurf_-_Objekt-_und_Spurerkennung_(OSE)_mit_Kamera#Aufgaben_9.6_Referenzmessung|9.6 Referenzwerte]] || Xiangyao Liu, Yuhan Pan
| 3  || [[SoSe24_-_Praktikum_Systementwurf_-_Spurpolynom|9.6 Spurpolynom]] || Yunkai Lin, Xiangyao Liu, Yuhan Pan
|}
 
=== Aufgabe 9.4: Inverse Perspektiventransformation (IPT) ===
# Studieren Sie den Artikel zur [https://www.mathworks.com/help/driving/ref/birdseyeview.html Inversen Perspektiventransformation mit MATLAB<sup>®</sup>].
# Beschreiben Sie die Eingangsparameter. Nutzen Sie die Parameter aus Aufgabe 9.1.
# Beschreiben Sie die Ausgangsparameter.
# Kalibrieren und Entzerren Sie das Kamerabild. Weisen Sie den Erfolg mit einem Referenzbild nach.
# Wenden Sie die IPT auf das Video <code>GeradeInKurve.mp4</code> an.
# Binarisieren Sie das Video und speichern Sie es als <code>GeradeInKurve_IPT.mp4</code>.
# Analysieren Sie Ihr Ergebnis, identifizieren Sie Probleme und entwickeln mögliche Maßnahmen. Eine Umsetzung der Maßnahmen ist nicht erforderlich.
 
'''Eingangsdateien:'''
* [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Daten/Vision/GeradeInKurve.mp4 SVN: GeradeInKurve.mp4]
* Kalibrierparameter der Kamera(s) aus Aufgabe 9.1.
 
'''Arbeitsergebnisse:'''
* MATLAB<sup>®</sup>-Skript: <code>startInversePerspektivenTransformation.m</code>
* Transformiertes Video: <code>GeradeInKurve_IPT.mp4</code>
* Dokumentation im [[SoSe24 - Praktikum Systementwurf - Inverse Perspektiventransformation (IPT)|Wiki-Artikel]]
 
'''Lernzielkontrollfragen:'''
* Wofür werden die Kamerakalibrierparameter verwendet?
* Was ist ein region-of-interest (ROI)? Wie wird dieser gewählt?
* Wie führt man eine effektive Binarisierung durch?
* Welche Fehler zeigen sich im Binärbild? Wie lassen sich diese beheben?
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Tipps&thinsp;</strong>
|-
|-
| 4  || [[SoSe23_-_Praktikum_Systementwurf_-_Objekt-_und_Spurerkennung_(OSE)_mit_Kamera#Aufgaben_9.7_Segmentierung_der_Fahrbahnmarkierungen|9.7 Segmentierung der Fahrbahnmarkierungen]] || Johann Kismann, Dominik König
| Nützliche MATLAB<sup>®</sup>-Befehle: [https://www.mathworks.com/help/driving/ref/monocamera.html monoCamera], [https://www.mathworks.com/help/driving/ref/birdseyeview.html birdsEyeView], [https://www.mathworks.com/help/driving/ref/VideoWriter.html VideoWriter], [https://www.mathworks.com/help/driving/ref/hasFrame.html hasFrame], [https://www.mathworks.com/help/driving/ref/readFrame.html readFrame], [https://www.mathworks.com/help/driving/ref/undistortImage.html undistortImage], [https://www.mathworks.com/help/driving/ref/transformImage.html transformImage], [https://www.mathworks.com/help/driving/ref/im2frame.html im2frame], [https://www.mathworks.com/help/driving/ref/writeVideo.html writeVideo], [https://www.mathworks.com/help/driving/ref/open.html open], [https://www.mathworks.com/help/driving/ref/close.html close]
|-
|-
| 5  || [[SoSe23_-_Praktikum_Systementwurf_-_Objekt-_und_Spurerkennung_(OSE)_mit_Kamera#Aufgaben_9.8_Spurpolynom|9.8 Spurpolynom]] || Louis Holtapel, Can Nen
| Nutzen Sie die '''Color Thresholder''' App für die Binarisierung.
|-
|-
| || [[SoSe23_-_Praktikum_Systementwurf_-_Objekt-_und_Spurerkennung_(OSE)_mit_Kamera#Aufgaben_9.9_Spurparameter_(Empfangsseite)|9.9 Spurparameter (Empfangsseite)]] || David Weigt, Yunkai Lin
| Nutzen Sie die MATLAB<sup>®</sup>-Funktion [https://www.mathworks.com/help/driving/ref/transformImage.html transformImage] für die IPT.
|}
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Beispiel: Bilder als Video speichern.&thinsp;</strong>
|-
|<source lang="matlab" style="font-size:small">hAusgabeVideo = VideoWriter('GeradeInKurve_IPT.mp4','MPEG-4');
hAusgabeVideo.FrameRate = 30;
hAusgabeVideo.Quality  = 90;
open(hAusgabeVideo)
aFrame = im2frame(uint8(aBild),colormap(gray(2))); % Bild in Frame wandeln
writeVideo(hAusgabeVideo,aFrame);
close(hAusgabeVideo)
</source>
|}
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Programmablaufplan&thinsp;</strong>
|-
| [[Datei:StartInversePerspektivenTransformation.png|600px|thumb|right|Abb. 10: PAP der Inverse Perspektiventransformation]]
|}
|}
=== Aufgabe 9.4: Kamerakalibrierung ===
# Messen Sie die extrinsische und intrinsische Parameter der Kamera mit der [https://de.mathworks.com/help/vision/ref/cameracalibrator-app.html?searchHighlight=camera%20calibrator&s_tid=srchtitle_camera%20calibrator_1#responsive_offcanvas MATLAB<sup>®</sup> Camera Calibrator App].
# Machen Sie eine Aufzeichnung mit der Kamera von der Geraden bis in die erste Kurve. Steuern Sie den Wagen mit der Fernbedienung.
# Geben Sie die validierten Parameter und das aufgezeichnete Video <code>Spurerkennung.mp4</code> an Gruppe 2 weiter.
# Vergleichen Sie Ihr Ergebnis mit der Dokumentation im [[Kalibrierung_der_Kamera| HSHL-Wiki]].
# Stellen Sie Ihre extrinsische und intrinsische Parameter vor und diskutieren Sie diese.
# Bewerten und verbessern Sie den [[Kalibrierung_der_Kamera| Wiki-Artikels zur Kalibrierung der Kamera]].
'''Arbeitsergebnisse:'''
* Versuchsprotokoll <code>Kamerakalibrierung.docx</code>
* Extrinsische und intrinsische Kameraparameter
* Video mit kalibrierter Kamera: <code>Spurerkennung.mp4</code>
* Wiki Artikel für die [[Kalibrierung_der_Kamera|Kalibrierung extrinsischer und intrinsischer Kameraparameter]]
----
----


=== Aufgabe 9.5: Inverse Perspektiventransformation (IPT) ===
=== Aufgaben 9.5: Segmentierung der Fahrbahnmarkierungen ===
# Studieren Sie den Artikel zur [https://www.mathworks.com/help/driving/ref/birdseyeview.html Inversen Perspektiventransformation mit MATLAB®].
[[Datei:Rundkurs IPT markiete Segmente.png|400px|thumb|right|Abb. 10: Segmentierung der Fahrspuren in GeradeInKurve_Segmente.mp4]]
# Beschreiben Sie die Eingangsparameter. Nutzen Sie die Parameter von Gruppe 1.
# Segmentieren Sie die drei Fahrspuren aus dem Video [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Daten/Vision/GeradeInKurve_IPT.mp4 <code>GeradeInKurve_IPT.mp4</code>].
# Beschreiben Sie die Ausgangsparameter.
# Zeigen Sie dieses Segmente in den Farben laut Tabelle 3 im Video an (vgl. Abb. 10).
# Wenden Sie die IPT auf das Video <code>Rundkurs.mp4</code> an.
# Sichern Sie das Ergebnisvideo.
# Bewerten Sie Ihr Ergebnis und aktualisieren Sie ggf. den [[Draufsichterstellung|Wiki-Artikel]].
# Analysieren Sie Ihr Ergebnis, identifizieren Sie Probleme und entwickeln mögliche Maßnahmen. Eine Umsetzung der Maßnahmen ist nicht erforderlich.
# Konvertieren Sie mittels IPT das Video <code>Spurerkennung.mpg</code>.
{| class="wikitable"
|+ Tabelle 3: Farbcodierung der Fahrbahnen
|-
| rechte Fahrbahnmarkierung || Gelb (<code>y</code>)
|-
| Mittelstreifen || Rot (<code>r</code>)
|-
| linke Fahrbahnmarkierung || Grün (<code>g</code>)
|}


'''Eingangsdateien:''' [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Daten/Vision/Rundkurs.mp4 SVN: Rundkurs.mp4], <code>Spurerkennung.mp4</code>
'''Eingangsdateien:''' [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Daten/Vision/GeradeInKurve_IPT.mp4 <code>GeradeInKurve_IPT.mp4</code>]


'''Arbeitsergebnisse:'''
'''Arbeitsergebnisse:'''
* Versuchsprotokoll <code>InversePerspektiventransformation.docx</code>
* MATLAB<sup>®</sup>-Skript: <code>segmentiereFahrbahnmarkierungen.m</code>
* Transformiertes Video <code>Spurerkennung_IPT.mp4</code>
* Darstellung des Fahrspursegmente für jedes Einzelbild des Films.
* Dokumentation im Wiki (Verlinken Sie hier Ihr Ergebnis.)
* Visuelle Überprüfung durch Einblendung in das Ergebnisvideo: <code>GeradeInKurve_Segmente.mp4</code>
----
* Sicherung der Segmente in <code>GeradeInKurve_Segmente.mat</code>
* Dokumentation im [[SoSe24 - Praktikum Systementwurf - Segmentierung der Fahrbahnmarkierungen|Wiki-Artikel]]


=== Aufgaben 9.6: Referenzmessung ===
'''Lernzielkontrolle:'''
# Bestimmen Sie die realen Spurparameter a, b, c für die Gerade.
# Mit welchen Ansätzen lassen sich die Mittle- und rechte Fahrspur segmentieren?
# Bestimmen Sie die realen Spurparameter a, b, c für die erste Linkskurve.
# Wieso sollten alle Fahrbahnränder segmentiert werden?
# Welche Vor- und Nachteile hat die Segmentierung?
# Wie könnten die Nachteile behandelt werden?
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Tipps&thinsp;</strong>
|-
| Nützliche MATLAB<sup>®</sup>-Befehle: [https://www.mathworks.com/help/driving/ref/VideoReader.html VideoReader] [https://www.mathworks.com/help/driving/ref/hasFrame.html hasFrame], [https://www.mathworks.com/help/driving/ref/readFrame.html readFrame], [https://www.mathworks.com/help/driving/ref/bwlabel.html bwlabel], [https://www.mathworks.com/help/driving/ref/regionprops.html regionprops]
| Sobald Sie eine Spur gefunden haben, können Sie parallel dazu die anderen Markierungen suchen.  
|-
| Mit [https://www.mathworks.com/help/driving/ref/regionprops.html regionprops] können Sie die Position der Segmente berechnen.
|}
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Beispiel: cell-array der Fahrspurmasken erzeugen &thinsp;</strong>
|-
|<source line lang="matlab" style="font-size:small">Segment(:,:,1)=aLinkeFahrspur;
Segment(:,:,2)=aMittelFahrspur;
Segment(:,:,3)=aRechteFahrspur;
Fahrbahnmarkierung{nBild}=Segment;
</source>
|}
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Beispiel: Mittelpunkt der Unterkante eines Segmentes berechnen&thinsp;</strong>
|-
|<source line lang="matlab" style="font-size:small"> [Label,nAnzahlSegmente] = bwlabel(aFrameBW); % Segmente labeln
s=regionprops(Label,'Extrema'); % Segmentmerkmale bestimmen
for i=1:nAnzahlSegmente
    p1 = s(i).Extrema(5,:); % Unten-Rechts
    p2 = s(i).Extrema(6,:); % Unten-Links
    p = (p1+p2)/2;          % Unten-Mitte
    SegmentPosition(i,:) = p;
end
</source>
|}
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Beispiel: Segmente anhand einer Maske einfärben &thinsp;</strong>
|-
|<source line lang="matlab" style="font-size:small">aBild = zeros(480,640,3); % Beispielbild


'''Arbeitsergebnisse:'''
aMaske = zeros(480,640,1,'logical'); aMaske(:,300:305) = 255; % Vertikaler Strich als Maske
* Versuchsprotokoll <code>Referenzmessung.docx</code>
* m-File zur Darstellung der Ergebnisse
* Ergebnisdatei <code>Referenzmessung.mat</code>
* Dokumentation im Wiki: [[Praktikum Systementwurf : Referenzmessung für das Spurpolynom]]
----


=== Aufgaben 9.7: Segmentierung der Fahrbahnmarkierungen ===
% Zerlegung in RGB Farbkanäle
# Segmentieren Sie die Fahrspuren aus dem Video <code>Spurerkennung_IPT.mp4</code>.
R = aBild(:,:,1); % Rotkanal
# Segmentieren Sie aus dem Kantenbild die 3 Fahrbahnmarkierungen
G = aBild(:,:,2); % Rotkanal
## rechter Fahrbahnrand (Gelb)
B = aBild(:,:,3); % Rotkanal
## Mittelspur (Rot) und
## linker Fahrbahnrand (Grün).
# Zeigen Sie die Segmente farbig im Video an.


'''Eingangsdateien:''' <code>Spurerkennung_IPT.mp4</code>
% Einfärben mit Maske
R(aMaske)=255;


'''Arbeitsergebnisse:'''
aRGB = cat(3,R,G,B);
* Versuchsprotokoll <code>Segmentierung_der_Fahrbahnmarkierungen.docx</code>
</source>
* X-Y-Daten der drei Fahrspuren für jeden Zyklus des Films <code>segmentiereFahrbahnmarkierung.m</code> als <code>Fahrbahnsegmente.mat</code>
|}
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Programmablaufplan&thinsp;</strong>
|-
| [[Datei:SegmentiereFahrbahnmarkierungen.png|600px|thumb|right|Abb. 11: PAP der Segmentierung der Fahrbahnmarkierungen]]
|}
----


----
=== Aufgaben 9.6:  Spurpolynom ===
[[Datei:ZeigeSpurpolynom F180.png|400px|thumb|right|Abb. 12: Darstellung der Fahrspuren als Polynom in GeradeInKurve_Spurpolynom.mp4]]
# Bestimmen Sie für die drei Spursegmenten die Spurpolynome 2. Ordnung mit [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Software/Demos/Lane_Tracking/interpoliereFahrspur.m <code>interpoliereFahrspur.m</code>] gemäß [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Anforderungsmanagement/Lastenheft/Schnittstellendokumentation_Anlage_Lastenheft.docx Schnittstellendokumentation_Anlage_Lastenheft.docx] metrisch im Fahrzeugkoordinatensystem.
# Blenden Sie die Spurpolynome in den Farben laut Tabelle 3 im Video <code>GeradeInKurve_IPT.mp4</code> ein (vgl. Abb. 12 und 14).
# Bestimmen Sie das laut [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Anforderungsmanagement/Lastenheft/Schnittstellendokumentation_Anlage_Lastenheft.docx Schnittstellendokumentation_Anlage_Lastenheft.docx] zu ermittelnde Spurpolynom für die Querregelung.
# Zeichnen Sie dieses als weiße Parabel ein (vgl. Abb. 12 und 14).
# Zeigen Sie das metrische Spurpolynom in Fahrzeugkoordinaten an (vgl. Abb. 15).
# Sichern Sie das Ergebnisvideo.
# Sichern Sie die Spurparameter des Spurpolynoms für die Querregelung.
# Analysieren Sie Ihr Ergebnis, identifizieren Sie Probleme und entwickeln mögliche Maßnahmen. Eine Umsetzung der Maßnahmen ist nicht erforderlich.


=== Aufgaben 9.8: Spurpolynom ===
'''Eingangsdateien:'''
# Bestimmen Sie für die drei Spuren die Spurpolynome 2. Ordnung mit <code>interpoliere_weg.m</code>.
* [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Daten/Vision/GeradeInKurve_IPT.mp4 <code>GeradeInKurve_IPT.mp4</code>]
# Berechnen Sie aus dem Spurpolynom die drei Fahrspuren metrisch im Fahrzeugkoordinatensystem.
* [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Daten/Vision/GeradeInKurve_Segmente.mat <code>GeradeInKurve_Segmente.mat</code>]: struct mit den Labelmasken Linke Spur, Mittelspur, rechte Spur
# Blenden Sie die drei Fahrspuren im Videobild ein.
* [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Daten/Vision/zeigeSegmente.m <code>zeigeSegmente.m</code>]: Hilfsfunktion zum Anzeigen der Segmente
* [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Software/Demos/Lane_Tracking/interpoliereFahrspur.m <code>interpoliereFahrspur.m</code>]: Hilfsfunktion zur Polynomregression


'''Eingangsdateien:''' <code>Spurerkennung_IPT.mp4</code>


'''Arbeitsergebnisse:'''  
'''Arbeitsergebnisse:'''  
* Spurpolynome für jeden Zyklus des Films, Visuelle Überprüfung durch Einblendung in das Video <code>zeigeSpurpolynom.m</code>
* MATLAB<sup>®</sup>-Skript: <code>zeigeSpurpolynom.m</code>
* Versuchsprotokoll <code>Spurpolynom.docx</code>
* Darstellung des Spurpolynoms für jedes Einzelbild des Films.
* Spurpolynom als <code>Spurpolynom.mat</code>
* Visuelle Überprüfung durch Einblendung in das Ergebnisvideo: <code>GeradeInKurve_Spurpolynom.mp4</code>
* Dokumentation im Wiki (Verlinken Sie hier Ihr Ergebnis.)
* Spurparameter [a b c] als <code>Spurpolynom.mat</code>
* Dokumentation im [[SoSe24 - Praktikum Systementwurf - Spurpolynom|Wiki-Artikel]]


'''Lernzielkontrolle:'''
# Wie lassen sich die Spurpolynome für die 3 Segmente bestimmen.
# Welche Vor- und Nachteile hat die Polynombildung?
# Wie könnten die Nachteile behandelt werden?
# Wie lauten die Umrechnungsfaktoren Pixel in m in xF- und yF-Richtung.
# Wie wird der Blindbereich vorm Fahrzeug berücksichtigt?
# Wie wird das Spurpolynom für die Querregelung aus den Spurpolynom der Fahrbahnmarkierungen ermittelt?
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Tipps&thinsp;</strong>
|-
| Nützliche MATLAB<sup>®</sup>-Befehle: [https://www.mathworks.com/help/driving/ref/VideoReader.html VideoReader] [https://www.mathworks.com/help/driving/ref/hasFrame.html hasFrame], [https://www.mathworks.com/help/driving/ref/readFrame.html readFrame], [https://www.mathworks.com/help/driving/ref/find.html find], [https://www.mathworks.com/help/driving/ref/text.html text]
|-
| Das Spurpolynom für die Regelung hat seinen Ursprung im fahrzeugfesten Koordinatensystem im Mittelpunkt des Stoßfängers vorn. Das Video hat hier einen Blindbereich da die Kamera hinten verbaut wurde. Diese Strecke muss vermessen und als Ursprung der Parabel berücksichtigt werden.
|-
| Das Spurpolynom für die Regelung muss aus den Spurpolynomen für die Fahrbahnmarkierungen ermittelt werden. Beachten Sie dabei die Krümmung in den Kurven.
|}
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Programmablaufplan&thinsp;</strong>
|-
| [[Datei:ZeigeSpurpolynomA96.png|600px|thumb|right|Abb. 13: PAP der Polynomregression der Fahrbahnmarkierungen]]
|}
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Musterlösung&thinsp;</strong>
|-
| [[Datei:ZeigeSpurpolynom F940.png|600px|thumb|right|Abb. 14: Darstellung der Spurpolynome in Bildkoordinaten]]
|-
| [[Datei:ZeigeSpurpolynomFKOS F180.jpg|600px|thumb|right|Abb. 15: Metrische Darstellung der Spurpolynome in Fahrzeugkoordinaten]]
|}
----
----
=== Aufgaben 9.9: Spurparameter (Sende-/Empfangsseite) ===
# Nutzen Sie die Spurerkennung auf dem Fahrzeug. Betrachten Sie die Gerade und die erste Kurve.
# Vergleichen Sie die Spurparameter der Sendeseite mit der Referenz <code>Referenzmessung.docx</code>.
# Vergleichen Sie die Spurparameter der Empfangsseite mit der Referenz <code>Referenzmessung.docx</code>.
# Analysieren Sie ggf. Abweichungen und korrigieren Sie diese.
'''Arbeitsergebnisse:'''
* Versuchsprotokoll <code>Validierung_der_Spurparameter.docx</code>
* Dokumentation im [https://wiki.hshl.de/wiki/index.php/Spurparameter_(Sende-/Empfangsseite)  Wiki ]


== Nützlicher Link ==
== Nützlicher Link ==

Aktuelle Version vom 21. Juni 2024, 16:18 Uhr

Abb. 1: Spurerkennung
Autor: Prof. Dr.-Ing. Schneider
Thema: Spurerkennung mit Kamera (OSE)
Workshoptermin 9: 20.06.2024
Lernzielkontrolle 3: 04.07.2024

Einleitung

Die Workshops im SDE Praktikum sollen die Studierenden das praktische Arbeiten in einem Mechatroniklabor im Bereich modellbasierte Entwicklung mit MATLAB/Simulink und DSpace Hardware DS1104/ControlDesk vermitteln. Der Umgang soll in der Selbstlernzeit geübt werden.

Im Projekt OSE werden Objekte mit dem LiDAR-Sensor erkannt und verarbeitet sowie die Fahrspur mit der Kamera. Dieser Workshop fokussiert die Spurerkennung sowie die Bildung und des Spurpolynoms.

Lernziele

Nach erfolgreicher Teilnahme am Workshop:

  • können Sie die intrinsischen und extrinsischen Parameter einer Kamera bestimmen.
  • können Sie eine Inverse Perspektiventransformation durchführen.
  • können Sie Fahrbahnmarkierungen segmentieren.
  • können Sie das Spurpolynom maßstabsgetreu bestimmen.

Bewertung

Die Bewertung erfolgt im Rahmen der Lernzielkontrolle 3.

Voraussetzungen

  • Für den Workshop benötigen Sie MATLAB/Simulink in der Version 2019b.
  • Studieren Sie die Praktikumsordnung.
  • Die unter Vorbereitung aufgeführten Aufgaben sind vor dem Workshoptermin vorzubereiten. Der Workshop baut auf Ihre Vorbereitung auf.

Der Workshop setzt nachfolgende Kenntnisse voraus:

  • die Grundlagen der Programmierung,
  • der Umgang mit der Versionsverwaltung SVN und
  • der Umgang mit MATLAB/Simulink.
  • der Grundlagen der Digitalen Signal- und Bildverarbeitung:
    • Lektion 2: Koordinatentransformationen
    • Lektion 7: Kantenerkennung und Rauschunterdrückung
    • Lektion 8: Datengetriebene Segmentierung


Ablauf des Praktikums

Tabelle 1: Agenda des Workshops
Uhrzeit Agenda Form
8:15 Begrüßung Moderation durch Marc Ebmeyer
8:20 Bearbeitung der Aufgaben (vgl. Tabelle 2) Gruppenarbeit
10:10 Statusbericht der Teams max. 5 Min. pro Team
10:25 Verabschiedung Moderation durch Marc Ebmeyer
10:30 Uhr Veranstaltungsende

Vorbereitung

Aufgabe 9.1: Vorbereitung der Kamera

Abb. 2: MATLAB® Camera Calibrator App

Um eine Kamera sinnvoll zur Spurerkennung einsetzen zu können, muss diese zuvor kalibriert werden.

  1. Studieren Sie die zugehörigen Wiki-Artikel und arbeiten Sie sich in die Camera Calibrator App von MATLAB® ein.
  2. Messen Sie die extrinsische und intrinsische Parameter der Kameras von Wagen 1 und 2 mit der MATLAB® Camera Calibrator App.
  3. Identifizieren Sie extrinsische und intrinsische Parameter.
  4. Machen Sie ein Foto eines vermessenen Aufbaus.
  5. Transformieren Sie einen vermessenen Punkt von Weltkoordinaten in Bildkoordinaten.
  6. Machen Sie ein Foto mit der Kamera auf der Fahrbahn von der Startlinie aus (Geradeaus.jpg).
  7. Machen Sie ein Foto mit der Kamera auf der Fahrbahn von der ersten Kurve aus (Linkskurve.jpg).
  8. Entzerren Sie beide Fotos anhand Ihrer ermittelten k-Matrix mit dem MATLAB®-Skript entzerreVideobild.
  9. Dokumentieren Sie Ihren Versuchsaufbau, die Durchführung und Ergebnisse.

Arbeitsergebnisse:

  • Extrinsische Kameraparameter:
  • Intrinsische Kameraparameter: k-Matrix
  • Eingangsdaten: Geradeaus.jpg, Linkskurve.jpg
  • MATLAB®-Skript entzerreVideobild, welches anhand der intrinsischen Kameraparameter die Bildentzerrung durchführt.
  • Versuchsprotokoll Kamerakalibrierung.docx

Lernzielkontrollfragen:

  • Welche intrinsischen und extrinsischen Kameraparameter haben Wagen 1 und 2?
  • Welchen Region-of-Interest (ROI) haben die Kameras?
  • Wie ist der Zusammenhang zwischen Welt- und Bildkoordinaten?
  • Welchen Blindbereich in Fahrzeugkoordinaten haben Wagen 1 und 2 ()?

Links


Aufgabe 9.2: Segmentierung der Fahrbahnmarkierungen

Abb. 3: Geradeausfahrt (Frame 40)
Abb. 4: leichte Linkskurve (Frame 160)
Abb. 5: scharfe Linkskurve (Frame 350)
  1. Laden Sie das Bild Spurkandidaten_F040.png (vgl. Abb. 3).
  2. Segmentieren Sie aus dem Kantenbild die rechte Fahrbahnmarkierungen. Welche Algorithmen der Vorlesung "Digitale Signal und Bildverarbeitung" lassen sich anwenden?
  3. Zeigen Sie das Segment farbig im Bild an.
  4. Verifizieren Sie Ihren Segmentierungsalgorithmus mit den Bildern Spurkandidaten F160.png und Spurkandidaten F350.png.

Eingangsdateien:

Arbeitsergebnisse:

  • Segmentierung der X-Y-Daten der rechten Fahrspuren für die unterschiedlichen Eingangsdateien mit dem Skript segmentiereFahrbahnmarkierung.m.
  • Segmentmaske als Mat-Datei z. B.Spurkandidaten F040.mat.

Lernzielkontrollfragen:

  • Welche Methoden kennen Sie aus der Vorlesung "Digitale Signal- und Bildverarbeitung", um eine Fahrspur zu segmentieren? Stellen Sie 5 unterschiedliche Ansätze vor.
  • Welche Merkmale sind für eine Fahrspur signifikant.
  • Welche Fehlereinflüsse gibt es? Wie kann man diesen entgegenwirken?

Aufgabe 9.3: Spurpolynom

Abb. 8: Darstellung der Fahrspuren als Polynom
  1. Bestimmen Sie für die rechte Fahrbahnmarkierungen das Spurpolynome 2. Ordnung mit polyfit.
  2. Ersetzen Sie polyfit durch die einfache Polynomapproximation interpoliereFahrspur.m.
  3. Berechnen Sie aus dem Spurpolynom die rechte Fahrbahnmarkierungen.
  4. Blenden Sie die rechte Fahrbahnmarkierungen im Videobild für die Bildframes 40, 160 und 350 ein.

Demo: https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Software/Demos/Lane_Tracking

Eingangsdaten:

Arbeitsergebnis: Spurpolynome für die Bildframes 40, 160 und 350, visuelle Überprüfung durch Einblendung in die Bilddateien zeigeSpurpolynom.m (vgl. Abb. 8)

Lernzielkontrolle:

  • Wie lauten die Umrechnungsfaktoren Pixel in m in xF- und yF-Richtung.
  • Welche Vor- und Nachteile hat die Polynombildung?
  • Wie könnten die Nachteile behandelt werden?
  • Wie wird der Blindbereich vorm Fahrzeug berücksichtigt?

Dokumente:

Durchführung

Themen der Teams

Tabelle 2: Teameinteilung und Themen
# Thema Teilnehmer
1 9.4 Inverse Perspektiventransformation (IPT) Daniel Block, Paul Janzen
2 9.5 Segmentierung der Fahrbahnmarkierungen Dennis Fleer, Philipp Sander
3 9.6 Spurpolynom Yunkai Lin, Xiangyao Liu, Yuhan Pan

Aufgabe 9.4: Inverse Perspektiventransformation (IPT)

  1. Studieren Sie den Artikel zur Inversen Perspektiventransformation mit MATLAB®.
  2. Beschreiben Sie die Eingangsparameter. Nutzen Sie die Parameter aus Aufgabe 9.1.
  3. Beschreiben Sie die Ausgangsparameter.
  4. Kalibrieren und Entzerren Sie das Kamerabild. Weisen Sie den Erfolg mit einem Referenzbild nach.
  5. Wenden Sie die IPT auf das Video GeradeInKurve.mp4 an.
  6. Binarisieren Sie das Video und speichern Sie es als GeradeInKurve_IPT.mp4.
  7. Analysieren Sie Ihr Ergebnis, identifizieren Sie Probleme und entwickeln mögliche Maßnahmen. Eine Umsetzung der Maßnahmen ist nicht erforderlich.

Eingangsdateien:

Arbeitsergebnisse:

  • MATLAB®-Skript: startInversePerspektivenTransformation.m
  • Transformiertes Video: GeradeInKurve_IPT.mp4
  • Dokumentation im Wiki-Artikel

Lernzielkontrollfragen:

  • Wofür werden die Kamerakalibrierparameter verwendet?
  • Was ist ein region-of-interest (ROI)? Wie wird dieser gewählt?
  • Wie führt man eine effektive Binarisierung durch?
  • Welche Fehler zeigen sich im Binärbild? Wie lassen sich diese beheben?

Aufgaben 9.5: Segmentierung der Fahrbahnmarkierungen

Abb. 10: Segmentierung der Fahrspuren in GeradeInKurve_Segmente.mp4
  1. Segmentieren Sie die drei Fahrspuren aus dem Video GeradeInKurve_IPT.mp4.
  2. Zeigen Sie dieses Segmente in den Farben laut Tabelle 3 im Video an (vgl. Abb. 10).
  3. Sichern Sie das Ergebnisvideo.
  4. Analysieren Sie Ihr Ergebnis, identifizieren Sie Probleme und entwickeln mögliche Maßnahmen. Eine Umsetzung der Maßnahmen ist nicht erforderlich.
Tabelle 3: Farbcodierung der Fahrbahnen
rechte Fahrbahnmarkierung Gelb (y)
Mittelstreifen Rot (r)
linke Fahrbahnmarkierung Grün (g)

Eingangsdateien: GeradeInKurve_IPT.mp4

Arbeitsergebnisse:

  • MATLAB®-Skript: segmentiereFahrbahnmarkierungen.m
  • Darstellung des Fahrspursegmente für jedes Einzelbild des Films.
  • Visuelle Überprüfung durch Einblendung in das Ergebnisvideo: GeradeInKurve_Segmente.mp4
  • Sicherung der Segmente in GeradeInKurve_Segmente.mat
  • Dokumentation im Wiki-Artikel

Lernzielkontrolle:

  1. Mit welchen Ansätzen lassen sich die Mittle- und rechte Fahrspur segmentieren?
  2. Wieso sollten alle Fahrbahnränder segmentiert werden?
  3. Welche Vor- und Nachteile hat die Segmentierung?
  4. Wie könnten die Nachteile behandelt werden?

Aufgaben 9.6: Spurpolynom

Abb. 12: Darstellung der Fahrspuren als Polynom in GeradeInKurve_Spurpolynom.mp4
  1. Bestimmen Sie für die drei Spursegmenten die Spurpolynome 2. Ordnung mit interpoliereFahrspur.m gemäß Schnittstellendokumentation_Anlage_Lastenheft.docx metrisch im Fahrzeugkoordinatensystem.
  2. Blenden Sie die Spurpolynome in den Farben laut Tabelle 3 im Video GeradeInKurve_IPT.mp4 ein (vgl. Abb. 12 und 14).
  3. Bestimmen Sie das laut Schnittstellendokumentation_Anlage_Lastenheft.docx zu ermittelnde Spurpolynom für die Querregelung.
  4. Zeichnen Sie dieses als weiße Parabel ein (vgl. Abb. 12 und 14).
  5. Zeigen Sie das metrische Spurpolynom in Fahrzeugkoordinaten an (vgl. Abb. 15).
  6. Sichern Sie das Ergebnisvideo.
  7. Sichern Sie die Spurparameter des Spurpolynoms für die Querregelung.
  8. Analysieren Sie Ihr Ergebnis, identifizieren Sie Probleme und entwickeln mögliche Maßnahmen. Eine Umsetzung der Maßnahmen ist nicht erforderlich.

Eingangsdateien:


Arbeitsergebnisse:

  • MATLAB®-Skript: zeigeSpurpolynom.m
  • Darstellung des Spurpolynoms für jedes Einzelbild des Films.
  • Visuelle Überprüfung durch Einblendung in das Ergebnisvideo: GeradeInKurve_Spurpolynom.mp4
  • Spurparameter [a b c] als Spurpolynom.mat
  • Dokumentation im Wiki-Artikel

Lernzielkontrolle:

  1. Wie lassen sich die Spurpolynome für die 3 Segmente bestimmen.
  2. Welche Vor- und Nachteile hat die Polynombildung?
  3. Wie könnten die Nachteile behandelt werden?
  4. Wie lauten die Umrechnungsfaktoren Pixel in m in xF- und yF-Richtung.
  5. Wie wird der Blindbereich vorm Fahrzeug berücksichtigt?
  6. Wie wird das Spurpolynom für die Querregelung aus den Spurpolynom der Fahrbahnmarkierungen ermittelt?

Nützlicher Link


→ zurück zum Hauptartikel: Praktikum SDE | SDE-Team 2024/25