OSE - Objekt - und Spurerkennung

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen


Einleitung

Anforderungen des Lastenheftes

Hier angegeben sind die Requirements, die das Team OSE aus dem Lastenheft ableitet. Dabei sind die beiden Punkte aus dem Lastenheft rot bzw. blau hinterlegt. Aus diesen abgeleitete Anforderungen sind in hellblau bzw. hellrot dargestellt. Gleichfarbige Anforderungen deuten daraufhin, dass diese Punkte zu einem gemeinsamen Meilenstein gehören.





























































































Projektplan

Zentralperspektive

Inverse Perspective Mapping

Operatoren zur Kantenerkennung im Vergleich

Projekttagebuch

KW18:

- Kalibrierroutine vereinfacht und halbautomatisiert
- Dokumentation für einfache und schnelle Kalibrierung erstellt

KW19:

- Kommunikation mit Spurführungs-Team geklärt
- Übergabe eines Polynoms 2. Grades in Form von 3 Parametern

KW20:

- Fertigstellung des Spurpolynoms in Matlab
- Einarbeitung in die Umsetzung in C

KW22:

- Inbetriebnahme der Spurerkennung auf dem PC
- Herausarbeiten der Unterschiede der Ansätze
- Trafo in körperfestes Koordinatensystem (Schnittstellendokumentation,Matlab)

KW24:

- Polynom mit in Ausgabe im Video übernehmen
- Ausführlich Kommentierung
- Dokumentieren der Zentralperspektive im vergleich zur Koordinatentransformation    

KW25:

- Dokumentation im Mechatronik Wiki
- Vorbereitung Meilensteinpräsentation

Von Bild zu Weltkoordinaten

Ansatz : Zentralprojektion

Allgemein

Die Zentralprojektion wird genutzt, um 3 Dimensionale Objekte im 2 Dimensionalen Raum abzubilden. Dadurch werden Bilder erzeugt die der Wahrnehmung des menschlichen Auges entsprechen oder mit einer Kamera fotografiert Szenerie. Das Bild entsteht durch die Projektion von einem 3 dimensionalen Gegenstand auf eine Ebene von einem Punkt ausgehend.

Einsatz im Carolo Cup Fahrzeug

Das Carolo Cup Auto fährt auf einer 820 mm breiten Straße, die Mittellinie ist gestrichelt . Die Segmente der Linie sind 200 mm Lang und 20 mm breit sie folgen im Abstand von 200 mm aufeinander. Die Kamera filmt die Fahrt des Fahrzeug aus einer festgelegten Perspektive und die Blickrichtung der Kamera ist fest in Fahrtrichtung.(Carolo Cup Regelwerg)


Die Umrechnung zwischen Bild und Weltkoordinaten ist notwendig um die Spuren zu verifizieren. Für die Umrechnung von Bild in Weltkoordinaten wurde mit Hilfe der festen Perspektive eine Funktion bild_zu_welt.m in Matlab aufgebaut. --> function [ w_kordinaten ] = bild_zu_welt( b_kordinaten)

Diese Funktion rechnet Bildkoordinaten in Weltkoordinaten um. Die Eingabe b_kordinaten und Ausgabe w_kordinaten sind (2; n)-Matrizen. Der Nullpunkt in Weltkoordinaten besitzt im Bildkoordinatensystem die Koordinaten (376;478), die y-Achse verläuft von rechts nach links am unteren Bildrand, und die x-Achse verläuft auf der Bildspalte 376 von unten nach oben.

Die Funktion

Zu erst werden die Punkte der linken Geraden und der rechten Geraden gesetzt. Um die Abstände und zugehörigen Weltkoordinaten bestimmen zu können wurde das Fahrzeug vor einem Schachbrettmuster positioniert.

% Vier Punkte p_b_l1 = [165; 310]; p_b_l2 = [280 ; 217]; p_b_r1 = [585; 310]; p_b_r2 = [470 ;217];


% Linke Gerade (l1 - l2) mit rechter Geraden (r1-r2) scneiden --> Fokuspunkt fokus_p = schneide_Test(p_b_l1,p_b_l2,p_b_r1,p_b_r2); % Zweiten Punkt auf der Höhe des Fokus erzeugen horizont_hilfspunkt = [p_b_l1(1,1);fokus_p(2,1)];


% waagerechter Schnitt mit linker Begrenzung
P = schneide_Test(p_b_l1, p_b_l2, b_kordinaten, b_kordinaten-[10.0;0.0]); 

% Nullpunkt der x-Achse ist die Bildmitte

y = 2*168*(b_kordinaten(1)-XS/2.0)/(P(1)-XS/2.0);  


% Abstände Berechnen

% Masstab für höhe im Bild M1 = [378; 311]; M2 = [378; 283]; % Abstand von 168 in der Mitte der Straße % Lineal auf bauen

masstab = norm(schneide_Test(horizont_hilfspunkt, M1, [XS/2; YS], [XS/2+10; YS]) - schneide_Test(horizont_hilfspunkt, M2, [XS/2; YS], [XS/2+10; YS])); R = schneide_Test(horizont_hilfspunkt, P, [XS/2; YS], [XS/2+10; YS]); % Schnittpunkt von HP<->P auf der x-Achse x = (R(1)-p_b_l1(1))/masstab*168;

w_kordinaten = [x,y];

end

Archiv bisheriger Arbeit

Spurerkennung

Objekterkennung mit Laserscanner

Objekterkennung mit Kamera