SoSe24 - Praktikum Systementwurf - Spurpolynom: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
 
(32 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Datei:PolynomVorKalman.gif|600px|thumb|right|Abb. 1: Fügen Sie hier ein animiertes GIF Ihres Ergebnisses ein.]]
[[Datei:GeradeInKurve Spurpolynom2.gif.gif|gerahmt|right|Abb. 1: GeradeInKurve_Spurpolynom.]]
{| class="wikitable"
{| class="wikitable"
|-
|-
| '''Autoren:'''  || Yunkai Lin, Xiangyao Liu, Yuhan Pan
| '''Autoren:'''  || Yuhan Pan, Xiangyao Liu, Yunkai Lin
|-
|-
| '''Thema:''' || [[SoSe24_-_Praktikum_Systementwurf_-_Spurerkennung_mit_Kamera_(Modul_OSE)#Aufgaben_9.6:_Spurpolynom|Spurpolynom]]
| '''Thema:''' || [[SoSe24_-_Praktikum_Systementwurf_-_Spurerkennung_mit_Kamera_(Modul_OSE)#Aufgaben_9.6:_Spurpolynom|Spurpolynom]]
Zeile 10: Zeile 10:
| '''Lernzielkontrolle 3:'''  || 04.07.2024
| '''Lernzielkontrolle 3:'''  || 04.07.2024
|}
|}


== Einleitung ==
== Einleitung ==
In diesem Workshop lernen Sie, wie Bilddaten von Fahrzeugkameras verarbeitet werden, um Fahrspuren zu erkennen und zu analysieren. Der Fokus liegt auf der Transformation von Bildkoordinaten in Fahrzeugkoordinaten und der Erstellung von Polynomen zur Darstellung der Fahrspur. Zudem wird die Berücksichtigung des Blindbereichs und die Ermittlung der Mittellinie für die Querregelung behandelt.
In diesem Workshop lernen Sie, wie Bilddaten von Fahrzeugkameras verarbeitet werden, um Fahrspuren zu erkennen und zu analysieren. Der Fokus liegt auf der Transformation von Bildkoordinaten in Fahrzeugkoordinaten und der Erstellung von Polynomen zur Darstellung der Fahrspur. Zudem wird die Berücksichtigung des Blindbereichs und die Ermittlung der Mittellinie für die Querregelung behandelt.
== Spurpolynom ==
== Spurpolynom ==
* Beschreibung die Theorie der Polynombildung
In diesem Abschnitt werden die grundlegenden Konzepte und Techniken zur Ermittlung von Spurpolynomen erläutert. Dies umfasst die Theorie der Polynombildung, die Transformation von Bild- zu Fahrzeugkoordinaten, die Berücksichtigung des Blindbereichs sowie die Ermittlung des Spurpolynoms für die Querregelung.
* Beschreiben Sie die KOS-Trafo Bild- zu Fahrzeugkoordinaten
 
* Berücksichtigung des Blindbereichs
=== Beschreibung die Theorie der Polynombildung ===
* Wie wird das Spurpolynom für die Querregelung aus den Spurpolynom der Fahrbahnmarkierungen ermittelt?
Die Polynombildung ist ein Verfahren zur Annäherung oder Interpolation von Datenpunkten durch ein Polynom. Ein Polynom n-ten Grades hat die Form:
<math>P(x) = a_n x^n + a_{n-1} x^{n-1} + \cdots + a_1 x + a_0</math>
Die Koeffizienten werden so bestimmt, dass die Summe der quadrierten Abweichungen minimiert wird (Methode der kleinsten Quadrate). Im diese Workshop wurden Spurpolynom in Form: <math>y = a x^2 + b x + c</math> zeigen. Man kann durch den Segmentierung der Spurpolynom von Video der Queranzahl x und y festlegen, und durch den Queranzahl y und x den Spurparameter a, b und c berechnen.
 
=== Beschreiben Sie die KOS-Trafo Bild- zu Fahrzeugkoordinaten ===
Die KOS-Transformation wandelt Bildkoordinaten (u, v) in Fahrzeugkoordinaten (X, Y, Z) um. Zuerst werden Bildkoordinaten in Kamerakoordinaten umgerechnet, dann werden diese in Fahrzeugkoordinaten transformiert unter Berücksichtigung der Kameraposition und -neigung.
 
=== Berücksichtigung des Blindbereichs ===
Der Blindbereich umfasst Bereiche, die von der Kamera nicht erfasst werden können. Um den Blindbereich zu berücksichtigen, werden nur sichtbare Bereiche des Bildes in die Fahrzeugkoordinaten transformiert und weiterverarbeitet, indem sie geometrisch berechnet und maskiert werden.
 
=== Wie wird das Spurpolynom für die Querregelung aus den Spurpolynomen der Fahrbahnmarkierungen ermittelt? ===
Das Spurpolynom für die Querregelung wird aus den Spurpolynomen der linken und rechten Fahrbahnmarkierungen berechnet. Die Mittellinie der Fahrspur wird als Mittelwert der Positionen der linken und rechten Fahrbahnmarkierungen bestimmt und anschließend durch ein Polynom approximiert, das geglättet wird, um eine stabile Querregelung zu ermöglichen.
 


== PAP ==
== PAP ==
PAP Ihrer Lösung
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Programmablaufplan&thinsp;</strong>
| <strong>Programmablaufplan&thinsp;</strong>
|-
|-
| PAP Ihrer Lösung
| [[Datei:Ablaufen.png|mini]]
|}
|}


== Quelltext ==
== Quelltext ==
* MATLAB Quelltext Ihrer Lösung mit Header  und Kommentaren.
* Beachten Sie die [[Medium:Programmierrichtlinien_für_Matlab.pdf|Programmierrichtlinien für MATLAB<sup>®</sup>]].
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>zeigeSpurpolynom.m&thinsp;</strong>
| <strong>Quelltext 1: zeigeSpurpolynom.m &thinsp;</strong>
|-
|-
|<source line lang="matlab" style="font-size:medium">
|<source line lang="matlab" style="font-size:medium">
Zeile 56: Zeile 65:
%***************************************************************/
%***************************************************************/
%% MATLAB initialisieren
%% MATLAB initialisieren
clc; clear all; close all;
clear all; close all


%% Pfade einstellen und Parameter laden
% cell-array mit Fahrbahnmarkierungen laden
addpath 'C:\Semesterordner\SS2024\Team_3_Liu_Pan_Lin\Termin_9\Aufgabe_6'
load('GeradeInKurve_Segmente.mat')
[~,nMaxBilder]=size(Fahrbahnmarkierung)


% Parameter einstellen
%% Video laden
Kameraneigung = 10; % Kameraneigung, Einheit: Grad
Kamerahoehe = 27.5 / 100; % Kamerahöhe über Boden, Einheit: Meter
FahrzeugfrontKamera = 27 / 100; % Abstand von Fahrzeugfront bis Kamera, Einheit: Meter
Fahrzeugbreite = 20 / 100; % Fahrzeugbreite, Einheit: Meter
 
% Winkel in Radiant umrechnen
Kameraneigung_rad = deg2rad(Kameraneigung);
 
% Video und Auflösung laden
stDateiname = 'GeradeInKurve_IPT.mp4';
stDateiname = 'GeradeInKurve_IPT.mp4';
hVideo = VideoReader(stDateiname);
hVideo = VideoReader(stDateiname);
width = hVideo.Width;
height = hVideo.Height;
% Berechnung der tatsächlichen Entfernung pro Pixel (angenommen, die Breite des Fahrzeugs wird von der Sichtweite der Kamera abgedeckt)
d_per_pixel = Fahrzeugbreite / width; % tatsächliche Entfernung pro Pixel, Einheit: Meter
% cell-array mit Fahrbahnmarkierungen laden
load('GeradeInKurve_Segmente.mat')
[~, nMaxBilder] = size(Fahrbahnmarkierung);
% Video-Schreibobjekt öffnen
outputVideo = VideoWriter('GeradeInKurve_Spurpolynom.mp4', 'MPEG-4');
open(outputVideo);
% Initialisierung der Matrix zur Speicherung der Polynomkoeffizienten
PolyCoeffsHistory = zeros(nMaxBilder, 3); % Angenommen, es gibt drei Koeffizienten für das quadratische Polynom


for nBild = 1:nMaxBilder % Schleife über alle Frames
for nBild=1:nMaxBilder % Schleife über alle Frames


     aFrame = readFrame(hVideo); % Bild laden
     aFrame = readFrame(hVideo); % Bild laden
      
      
     %% Fahrspurmasken auslesen
     %% Fahrspurmasken auslesen
     Fahrbahn = Fahrbahnmarkierung{nBild};
     Fahrbahn=Fahrbahnmarkierung{nBild};
     aLinkeFahrspur  = Fahrbahn(:,:,1);
     aLinkeFahrspur  = Fahrbahn(:,:,1);
     aMittelFahrspur = Fahrbahn(:,:,2);
     aMittelFahrspur = Fahrbahn(:,:,2);
     aRechteFahrspur = Fahrbahn(:,:,3);
     aRechteFahrspur = Fahrbahn(:,:,3);


     %% Fahrspuren einfärben
     %% Fahrspuren einf?rben
     % Farbkanäle trennen
     % Farbkan?le trennen
     R = aFrame(:,:,1);
     R = aFrame(:,:,1);
     G = aFrame(:,:,2);
     G = aFrame(:,:,2);
Zeile 117: Zeile 102:
     B(aRechteFahrspur) = 0;
     B(aRechteFahrspur) = 0;
      
      
     aRGBBild = cat(3, R, G, B); % Bild zusammenfügen
     aRGBBild = cat(3, R, G, B); % Bild zusammenfassungen
 
     %% Spurpolynom zwischen roten und gelben Fahrspuren berechnen und darstellen
     %% Fahrspuren in Vektoren kopieren
    [yMittel, xMittel] = find(aMittelFahrspur);
     [yRechts, xRechts] = find(aRechteFahrspur);
     [yRechts, xRechts] = find(aRechteFahrspur);
     [yMitte, xMitte] = find(aMittelFahrspur);
      
 
     if ~isempty(yMittel) && ~isempty(yRechts)
    % Sicherstellen, dass die Stichprobenpunkte einzigartig sind
         % Mittlere y-Koordinate als gemeinsame Basis verwenden
    [yRechts, uniqueIdxRechts] = unique(yRechts);
         yGemeinsam = unique([yMittel; yRechts]);
    xRechts = xRechts(uniqueIdxRechts);
          
    [yMitte, uniqueIdxMitte] = unique(yMitte);
         % Polynom zwischen mittleren und rechten Fahrspuren anpassen
    xMitte = xMitte(uniqueIdxMitte);
         pMittel = polyfit(yMittel, xMittel, 2);
 
         pRechts = polyfit(yRechts, xRechts, 2);
    % Punkteanzahl ausgleichen
          
     if length(xRechts) > 1 && length(xMitte) > 1
         xMittelPoly = polyval(pMittel, yGemeinsam);  
        if length(xRechts) > length(xMitte)
         xRechtsPoly = polyval(pRechts, yGemeinsam);
            xMitteInterp = interp1(yMitte, xMitte, yRechts, 'linear', 'extrap');
            yMitteInterp = yRechts;
            xRechtsInterp = xRechts;
            yRechtsInterp = yRechts;
        else
            xRechtsInterp = interp1(yRechts, xRechts, yMitte, 'linear', 'extrap');
            yRechtsInterp = yMitte;
            xMitteInterp = xMitte;
            yMitteInterp = yMitte;
        end
 
         % Berechnung der Mittellinie der rechten Fahrspur
         xB = (xRechtsInterp + xMitteInterp) / 2;
        yB = (yRechtsInterp + yMitteInterp) / 2;
 
         % Umrechnung in Fahrzeugkoordinaten (angenommen, die Bildmitte ist der Ursprung des Fahrzeugkoordinatensystems)
         xF = (xB - width / 2) * d_per_pixel; % Querkoordinate, Einheit: Meter
         yF = (height - yB) * d_per_pixel; % Längskoordinate, Einheit: Meter
 
        % Punkte in eine Matrix umwandeln
        aWegpunkte = [xF'; yF'];
 
        % Quadratische Polynominterpolation durchführen
        PolynomKoeffizienten = interpoliereFahrspur(aWegpunkte, 2);
 
        % Speicherung der aktuellen Polynomkoeffizienten
        PolyCoeffsHistory(nBild, :) = PolynomKoeffizienten;
 
        % Polynomkoeffizienten mit gleitendem Durchschnitt glätten
         if nBild > 1
            windowSize = 5; % Größe des gleitenden Durchschnittsfensters
            for j = 1:3
                startIdx = max(1, nBild - windowSize + 1);
                PolyCoeffsHistory(nBild, j) = mean(PolyCoeffsHistory(startIdx:nBild, j));
            end
         end
 
         %% Weiße Parabel zeichnen (Querregelung)
        xVehicle = linspace(min(xF), max(xF), 100);
         yFitQuer = polyval(PolyCoeffsHistory(nBild, :), xVehicle);
 
        % Umrechnung der Fahrzeugkoordinaten in Bildkoordinaten
        xVehicle_img = (xVehicle / d_per_pixel) + width / 2;
        yFitQuer_img = height - (yFitQuer / d_per_pixel);
 
        % Sicherstellen, dass die interpolierten Punkte im Bildbereich liegen
        validIdxQuer = (yFitQuer_img >= 1) & (yFitQuer_img <= height);
          
          
         for i = 1:length(xVehicle_img)
         % Mittelwert der x-Koordinaten als Spurpolynom berechnen
            if validIdxQuer(i)
        xSpurneu = (xMittelPoly + xRechtsPoly) / 2;
                yCoord = round(yFitQuer_img(i)); % y-Wert in Bildkoordinaten umrechnen
                if yCoord > 0 && yCoord <= height && round(xVehicle_img(i)) > 0 && round(xVehicle_img(i)) <= width
                    aRGBBild(yCoord, round(xVehicle_img(i)), 1) = 255; % R
                    aRGBBild(yCoord, round(xVehicle_img(i)), 2) = 255; % G
                    aRGBBild(yCoord, round(xVehicle_img(i)), 3) = 255; % B
                end
            end
        end
     end
     end
      
      
     % Ergebnis im Video speichern
     %% Bild anzeigen
     writeVideo(outputVideo, aRGBBild);
     imshow(aRGBBild)
end
    title(['Frame: ', num2str(nBild), ' / ', num2str(nMaxBilder)]);
    hold on;
   
    if exist('xSpurneu','var')
        h3 = plot(xSpurneu,yGemeinsam, 'w-', 'Linewidth', 2);
    end
    %% Legend hinzufuegen
    h1 = plot(NaN, NaN, 'r-', 'LineWidth', 2); % Dummy plot for red legend
    h2 = plot(NaN, NaN, 'y-', 'LineWidth', 2); % Dummy plot for yellow legend


% Video-Schreibobjekt schließen
    legend([h1 h2 h3], {'Mittelspur', 'Rechtspur', 'Neuespur'});
close(outputVideo);
      
 
     hold off;
% Polynomkoeffizienten speichern
     pause(0.01); % Kurze Pause, um das Bild anzuzeigen
save('Spurpolynom.mat', 'PolyCoeffsHistory');
 
%% Hilfsfunktion
function PolynomKoeffizienten = interpoliereFahrspur(aWegpunkte, n)
     % Berechnung der kleinsten Quadrate Lösung für die n-te Ordnung der Polynominterpolation
     A = ones(size(aWegpunkte, 2), n + 1);
     for k = 1:n
        A(:, k) = aWegpunkte(1, :).^(n + 1 - k);
    end
    b = aWegpunkte(2, :)';
    PolynomKoeffizienten = A \ b; % Kleinste Quadrate Lösung
end
end


Zeile 217: Zeile 144:


== Ergebnisse ==
== Ergebnisse ==
* Darstellung der Ergebnisse
Link zu den Video:
* Links zu den Arbeitsergebnissen
<code>https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/_Semesterordner/Team_3_Liu_Pan_Lin\Termin_9\Aufgabe_6</code>.
 
 
<gallery widths="280" heights="180">
Datei:Spurpolynom bei Gerade.png|300px|thumb|Abb. 2: Darstellung der Spurpolynome bei Gerade
Datei:Spurpolynom bei Kurve.png|300px|thumb|Abb. 3: Darstellung der Spurpolynome bei Linkskurve
Datei:ZeigeSpurpolynom in Gerade.png|300px|thumb|Abb. 4: zeigeSpurpolynom un Segmentierung in Gerade
Datei:ZeigeSpurpolynom in Kurve.png|300px|thumb|Abb. 5: zeigeSpurpolynom un Segmentierung in Linkskurve
</gallery>


== Analyse ==
== Analyse ==
Zeile 226: Zeile 161:
! Beschreibung !! Das Problem ist.. !! Das Problem ist nicht...
! Beschreibung !! Das Problem ist.. !! Das Problem ist nicht...
|-
|-
| Was genau ist das Problem? || ||  
| Was genau ist das Problem? || Bei Zeige der metrischen Spurpolynom in Fahrzeugkoordinaten werden den Einheit von Pixel in tatsächliche Länge nicht gut umwandeln || Zusätzliche Kannten werden nicht in Bilden anzeigen
|-
|-
| Wo tritt das Problem auf? || Beispiel || Beispiel
| Wo tritt das Problem auf? || Im der Video der metrischen Spurpolynom || Kamera und Video der Spurpolynom zu segmentieren
|-
|-
| Wie zeigt sich das Problem?|| Beispiel || Beispiel
| Wie zeigt sich das Problem?|| Spurparameter a, b und c sind anormal || bei der Fahrzeugkoordinaten sind die Wert zu groß, und Der Ursprungpunkt der Koordinaten stimmt nicht mit dem Wagen überein.
|-
|-
| Wann tritt das Problem auf?|| Beispiel || Beispiel
| Wann tritt das Problem auf?|| Bei den metrischen Polynom zu polten ||  
|-
|-
| Warum ist es ein Problem?|| Beispiel || Beispiel
| Warum ist es ein Problem?|| Verwirrende Einheiten können nicht verwendet werden, um den Querregelung zu funktionieren und soll Bahn des Autos festzulegen ||  
|}
|}
{| class="wikitable"
{| class="wikitable"
|+ Tabelle 2: Ursachenanalyse
|+ Tabelle 2: Problembeschreibung
|-
! Beschreibung !! Das Problem ist.. !! Das Problem ist nicht...
|-
| Was genau ist das Problem? || Bei Linkskurve ist den Spurpolynom bei Zeige der Segmente nicht stabil ||
|-
| Wo tritt das Problem auf? || Der Anbiegen des Autos || Geradefahren
|-
| Wie zeigt sich das Problem?|| erkennt Hindernisse am Straßenrand als Spuren ||
|-
| Wann tritt das Problem auf?|| Fahren bei Linkskurve, besonders am die Ende || Geradefahren
|-
| Warum ist es ein Problem?|| Misserkannt der Spur kann zum Abdriftung des Fahrzeuges von der Fahrspur  ||
|}
{| class="wikitable"
|+ Tabelle 3: Ursachenanalyse
|-
|-
! Nr. !! Beschreibung  
! Nr. !! Beschreibung  
|-
|-
| 1 || Warum?
| 1 || Bei Läuf der Programm ist der Umwandlung der Einheit falsch
|-
| 2 || Zusätzliche Kanten und Muster sind gerade weiß und schwarz, das ist einfach zu erkennen.
|}
|}
{| class="wikitable"
{| class="wikitable"
|+ Tabelle 3: Maßnahmen zur Beseitigung der identifizierten Ursache(n)
|+ Tabelle 4: Maßnahmen zur Beseitigung der identifizierten Ursache(n)
|-
|-
! Nr. !! Maßnahme !! Verantwortung !! Termin !! Status
! Nr. !! Maßnahme !! Verantwortung !! Termin !! Status
|-
|-
| 1 ||   || Max Mustermann || ||  [[Datei:Status 0.jpg|ohne|20px]]
| 1 || Im Skript der metrischen Spurpolynom den Einheit von Koordinate umberechnen || Liu Pan Lin || 04.07.2024 ||  [[Datei:Status 1.jpg|ohne|20px]]
|-
| 2 || Im Skript der metrischen Spurpolynom den Einheit von Spurparametern umberechnen || Liu Pan Lin || 04.07.2024 ||  [[Datei:Status 1.jpg|ohne|20px]]
|-
| 3 || Visuelle Überprüfung durch Einblendung in das Ergebnisvideo || Liu Pan Lin || 04.07.2024 ||  [[Datei:Status 0.jpg|ohne|20px]]
|}
|}
Hinweis: Die Maßnahmen müssen nicht umgesetzt werden.
Hinweis: Die Maßnahmen müssen nicht umgesetzt werden.
Zeile 254: Zeile 210:
== Zusammenfassung ==
== Zusammenfassung ==
* Zusammenfassung
* Zusammenfassung
Diese Aufgabe wird durch die Extraktion von Fahrspurmarkierungen und die Berechnung und Visualisierung der Fahrspurlinien zwischen der mittleren und der rechten Fahrspur auf der Grundlage einer polynomialen Interpolation erfüllt.
* Diskussion der Ergebnisse
* Diskussion der Ergebnisse
Eine glatte und genaue Fahrbahnmodellierung kann durch polynomiale Interpolation erreicht werden.
* Ausblick
* Ausblick
Optimierung des Algorithmus für Echtzeit-Verarbeitung, um ihn in realen Fahrzeugen einsetzen zu können.
* Lessons Learned
* Lessons Learned
Die polynomiale Interpolation erweist sich als wirksame Methode zur Modellierung von Fahrspuren, insbesondere bei Verwendung einheitlicher y-Koordinaten.


== Beantwortung der Lernzielkontrollfragen ==
== Beantwortung der Lernzielkontrollfragen ==
# Wie lassen sich die Spurpolynome für die 3 Segmente bestimmen.
===Wie lassen sich die Spurpolynome für die 3 Segmente bestimmen?===
# Welche Vor- und Nachteile hat die Polynombildung?
Die Spurpolynome werden durch Extrahieren der Fahrspurpunkte und Anwenden der Methode der kleinsten Quadrate bestimmt.
# Wie könnten die Nachteile behandelt werden?
 
# Wie lauten die Umrechnungsfaktoren Pixel in m in xF- und yF-Richtung.
===Welche Vor- und Nachteile hat die Polynombildung?===
# Wie wird der Blindbereich vorm Fahrzeug berücksichtigt?
====Vorteile:====
# Wie wird das Spurpolynom für die Querregelung aus den Spurpolynom der Fahrbahnmarkierungen ermittelt?
 
Einfache Implementierung
 
Flexibilität bei Kurvenformen
 
Es ist möglich, die Krümmung des Spur zu visualisieren, um Querreglung zu funktionieren. Dadurch kann es dazu führen, welche Bahn das Auto fahren würde (Istgröße) und welche Bahn das Auto fahren soll (Sollgröße)
 
====Nachteile:====
 
Oszillationen bei höhergradigen Polynomen
 
Überanpassung
 
Numerische Instabilität
 
===Wie könnten die Nachteile behandelt werden?===
Verwendung niedrigerer Polynome
 
Einsatz von Spline-Interpolation
 
Anwendung von Glättungstechniken
 
===Wie lauten die Umrechnungsfaktoren Pixel in m in xF- und yF-Richtung?===
xF-Richtung: (2 * (Kamerahöhe + Abstand zur Fahrzeugfront) * tan(Kameraneigung)) / Bildhöhe in Pixel
 
yF-Richtung: Fahrzeugbreite / Bildbreite in Pixel
 
===Wie wird der Blindbereich vorm Fahrzeug berücksichtigt?===
Nur die sichtbaren Bereiche des Bildes werden transformiert und weiterverarbeitet.
 
===Wie wird das Spurpolynom für die Querregelung aus den Spurpolynomen der Fahrbahnmarkierungen ermittelt?===
Die Mittellinie wird als Mittelwert der Positionen der linken und rechten Fahrbahnmarkierungen bestimmt und durch ein Polynom approximiert.


----
----
→ zurück zum Hauptartikel: [[Praktikum_SDE|Praktikum SDE]] | [[SDE-Team 2024/25]] | [[SoSe24_-_Praktikum_Systementwurf_-_Lernzielkontrolle_3|Lernzielkontrolle 3]]
→ zurück zum Hauptartikel: [[Praktikum_SDE|Praktikum SDE]] | [[SDE-Team 2024/25]] | [[SoSe24_-_Praktikum_Systementwurf_-_Lernzielkontrolle_3|Lernzielkontrolle 3]]

Aktuelle Version vom 4. Juli 2024, 12:31 Uhr

Abb. 1: GeradeInKurve_Spurpolynom.
Autoren: Yuhan Pan, Xiangyao Liu, Yunkai Lin
Thema: Spurpolynom
Workshoptermin 9: 20.06.2024
Lernzielkontrolle 3: 04.07.2024


Einleitung

In diesem Workshop lernen Sie, wie Bilddaten von Fahrzeugkameras verarbeitet werden, um Fahrspuren zu erkennen und zu analysieren. Der Fokus liegt auf der Transformation von Bildkoordinaten in Fahrzeugkoordinaten und der Erstellung von Polynomen zur Darstellung der Fahrspur. Zudem wird die Berücksichtigung des Blindbereichs und die Ermittlung der Mittellinie für die Querregelung behandelt.

Spurpolynom

In diesem Abschnitt werden die grundlegenden Konzepte und Techniken zur Ermittlung von Spurpolynomen erläutert. Dies umfasst die Theorie der Polynombildung, die Transformation von Bild- zu Fahrzeugkoordinaten, die Berücksichtigung des Blindbereichs sowie die Ermittlung des Spurpolynoms für die Querregelung.

Beschreibung die Theorie der Polynombildung

Die Polynombildung ist ein Verfahren zur Annäherung oder Interpolation von Datenpunkten durch ein Polynom. Ein Polynom n-ten Grades hat die Form: Die Koeffizienten werden so bestimmt, dass die Summe der quadrierten Abweichungen minimiert wird (Methode der kleinsten Quadrate). Im diese Workshop wurden Spurpolynom in Form: zeigen. Man kann durch den Segmentierung der Spurpolynom von Video der Queranzahl x und y festlegen, und durch den Queranzahl y und x den Spurparameter a, b und c berechnen.

Beschreiben Sie die KOS-Trafo Bild- zu Fahrzeugkoordinaten

Die KOS-Transformation wandelt Bildkoordinaten (u, v) in Fahrzeugkoordinaten (X, Y, Z) um. Zuerst werden Bildkoordinaten in Kamerakoordinaten umgerechnet, dann werden diese in Fahrzeugkoordinaten transformiert unter Berücksichtigung der Kameraposition und -neigung.

Berücksichtigung des Blindbereichs

Der Blindbereich umfasst Bereiche, die von der Kamera nicht erfasst werden können. Um den Blindbereich zu berücksichtigen, werden nur sichtbare Bereiche des Bildes in die Fahrzeugkoordinaten transformiert und weiterverarbeitet, indem sie geometrisch berechnet und maskiert werden.

Wie wird das Spurpolynom für die Querregelung aus den Spurpolynomen der Fahrbahnmarkierungen ermittelt?

Das Spurpolynom für die Querregelung wird aus den Spurpolynomen der linken und rechten Fahrbahnmarkierungen berechnet. Die Mittellinie der Fahrspur wird als Mittelwert der Positionen der linken und rechten Fahrbahnmarkierungen bestimmt und anschließend durch ein Polynom approximiert, das geglättet wird, um eine stabile Querregelung zu ermöglichen.


PAP

Quelltext

Ergebnisse

Link zu den Video: https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/_Semesterordner/Team_3_Liu_Pan_Lin\Termin_9\Aufgabe_6.


Analyse

Tabelle 1: Problembeschreibung
Beschreibung Das Problem ist.. Das Problem ist nicht...
Was genau ist das Problem? Bei Zeige der metrischen Spurpolynom in Fahrzeugkoordinaten werden den Einheit von Pixel in tatsächliche Länge nicht gut umwandeln Zusätzliche Kannten werden nicht in Bilden anzeigen
Wo tritt das Problem auf? Im der Video der metrischen Spurpolynom Kamera und Video der Spurpolynom zu segmentieren
Wie zeigt sich das Problem? Spurparameter a, b und c sind anormal bei der Fahrzeugkoordinaten sind die Wert zu groß, und Der Ursprungpunkt der Koordinaten stimmt nicht mit dem Wagen überein.
Wann tritt das Problem auf? Bei den metrischen Polynom zu polten
Warum ist es ein Problem? Verwirrende Einheiten können nicht verwendet werden, um den Querregelung zu funktionieren und soll Bahn des Autos festzulegen
Tabelle 2: Problembeschreibung
Beschreibung Das Problem ist.. Das Problem ist nicht...
Was genau ist das Problem? Bei Linkskurve ist den Spurpolynom bei Zeige der Segmente nicht stabil
Wo tritt das Problem auf? Der Anbiegen des Autos Geradefahren
Wie zeigt sich das Problem? erkennt Hindernisse am Straßenrand als Spuren
Wann tritt das Problem auf? Fahren bei Linkskurve, besonders am die Ende Geradefahren
Warum ist es ein Problem? Misserkannt der Spur kann zum Abdriftung des Fahrzeuges von der Fahrspur
Tabelle 3: Ursachenanalyse
Nr. Beschreibung
1 Bei Läuf der Programm ist der Umwandlung der Einheit falsch
2 Zusätzliche Kanten und Muster sind gerade weiß und schwarz, das ist einfach zu erkennen.
Tabelle 4: Maßnahmen zur Beseitigung der identifizierten Ursache(n)
Nr. Maßnahme Verantwortung Termin Status
1 Im Skript der metrischen Spurpolynom den Einheit von Koordinate umberechnen Liu Pan Lin 04.07.2024
2 Im Skript der metrischen Spurpolynom den Einheit von Spurparametern umberechnen Liu Pan Lin 04.07.2024
3 Visuelle Überprüfung durch Einblendung in das Ergebnisvideo Liu Pan Lin 04.07.2024

Hinweis: Die Maßnahmen müssen nicht umgesetzt werden.

Zusammenfassung

  • Zusammenfassung

Diese Aufgabe wird durch die Extraktion von Fahrspurmarkierungen und die Berechnung und Visualisierung der Fahrspurlinien zwischen der mittleren und der rechten Fahrspur auf der Grundlage einer polynomialen Interpolation erfüllt.

  • Diskussion der Ergebnisse

Eine glatte und genaue Fahrbahnmodellierung kann durch polynomiale Interpolation erreicht werden.

  • Ausblick

Optimierung des Algorithmus für Echtzeit-Verarbeitung, um ihn in realen Fahrzeugen einsetzen zu können.

  • Lessons Learned

Die polynomiale Interpolation erweist sich als wirksame Methode zur Modellierung von Fahrspuren, insbesondere bei Verwendung einheitlicher y-Koordinaten.

Beantwortung der Lernzielkontrollfragen

Wie lassen sich die Spurpolynome für die 3 Segmente bestimmen?

Die Spurpolynome werden durch Extrahieren der Fahrspurpunkte und Anwenden der Methode der kleinsten Quadrate bestimmt.

Welche Vor- und Nachteile hat die Polynombildung?

Vorteile:

Einfache Implementierung

Flexibilität bei Kurvenformen

Es ist möglich, die Krümmung des Spur zu visualisieren, um Querreglung zu funktionieren. Dadurch kann es dazu führen, welche Bahn das Auto fahren würde (Istgröße) und welche Bahn das Auto fahren soll (Sollgröße)

Nachteile:

Oszillationen bei höhergradigen Polynomen

Überanpassung

Numerische Instabilität

Wie könnten die Nachteile behandelt werden?

Verwendung niedrigerer Polynome

Einsatz von Spline-Interpolation

Anwendung von Glättungstechniken

Wie lauten die Umrechnungsfaktoren Pixel in m in xF- und yF-Richtung?

xF-Richtung: (2 * (Kamerahöhe + Abstand zur Fahrzeugfront) * tan(Kameraneigung)) / Bildhöhe in Pixel

yF-Richtung: Fahrzeugbreite / Bildbreite in Pixel

Wie wird der Blindbereich vorm Fahrzeug berücksichtigt?

Nur die sichtbaren Bereiche des Bildes werden transformiert und weiterverarbeitet.

Wie wird das Spurpolynom für die Querregelung aus den Spurpolynomen der Fahrbahnmarkierungen ermittelt?

Die Mittellinie wird als Mittelwert der Positionen der linken und rechten Fahrbahnmarkierungen bestimmt und durch ein Polynom approximiert.


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