OSE - Objekt - und Spurerkennung: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
 
(307 dazwischenliegende Versionen von 18 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
= Spurerkennung =
<!-- Kopieren Sie diesen Header in Ihren Artikel, damit er aufgelistet wird.  -->
==Workflow und Vorgehen ==
'''Autoren:''' Hendrik Steffen, Sven Posner <br/>
'''Betreuer:''' [[Benutzer:Ulrich_Schneider| Prof. Schneider]]<br/>
<br>
→ zurück zum Hauptartikel: [[Praktikum SDE]] <br>
<br>


=== Modellbasierte Entwicklung in Matlab===
= Aufbau dieser Seite=
- in Matlab werden die Algorithmen entwickelt
- leichter zu debugen
- Test auf Videobasis (Vlt einbauen der Funktion Video zu Bilder)


=== Umsetzung in C Code ===
Dieser Artikel ist eine Übersichtsseite, in der auf alle relevanten Artikel zur Objekt und Spurerkennung verwiesen wird. <br>
- Matlab zu C Code
Diese Seite soll, insbesondere einem neuen Jahrgang als Einstieg und Orientierung dienen und die hier beschriebenen Softwarestände sollen mit denen im SVN Archiv übereinstimmen. <br>
- anpassen des Matlabcodes da bestimmte Funktionen nicht genutzt werden Können
''' Alle Links und Informationen auf dieser Seite bitte aktuell halten''' <br>
- einbauen von Dummyfunktionen z.B. Polynom berechen / Polyfit
_ C Projekt Srtuktur
- einfügen eines Modulordners hin zu fügen zur Dateiliste
- in C müssen Funktionsaufrufe der Dummyfunktionen angepasst werden
- Hinweis auf extern Problem .cpp
<br/>


Die Grundlage des hier vorgestellten Vorgehen ist das die Datenbasis für beide Entwicklungsschritte gleich ist.
= '''OSE Softwareumgebung'''=
So muss gewährleistet sein, dass die Bilder der Kamera und die aus dem in Matlab verwendeten Video  einer Rundfahrt,
In diesem Artikel wird der aktuelle Softwarestand detailliert beschrieben
vor dem Verwenden durch die Algorithmen zur Spur- und Stoplinienerkennung in ein einheitliches Bildformat konvertiert werden. 
<br>
<br/>
'''Hier gehts zu Artikel'''    [[Datei:Ezgif-3-aa149494be25.gif]] [https://wiki.hshl.de/wiki/index.php/OSE_Softwareumgebung Aktuelle Softwareumgebung für das OSE-Programm]
[[Datei:Workflow C++ Matlab.png|mini|zentriert|500px| Schaffen gleicher Datenbasis]]


In der Matlab Umgebung werden die Video Frames mit der Auflösung 752*478 eingelesen und in die Matrix Frame gespeichert.  
= VRmagic Kamera einrichten =
Das in Frame gespeicherte Bild wird erst in ein Grau- und anschließend in ein S/W Bild umgewandelt. Auf dieses wird Sobel Operator angewendet.
In diesem Artikel befinden sich Erläuterungen wie die VRmagic Kamera auf dem Fahrzeug benutzt werden kann.<br>
Das Ergebnis wird in Frame_bw gespeichert. Frame_bw dient allen in Matlab entwickelten Algorithmen als Datengrundlage und muss bei deren Übersetzung als uint8 Array gespeichert werden.
'''Hier gehts zu Artikel'''    [[Datei:Ezgif-3-aa149494be25.gif]]  [https://wiki.hshl.de/wiki/index.php/Inbetriebnahme_der_VRmagic_Kamera Inbetriebnahme der VRmagic Kamera]


<source lang="matlab">
= Open CV installation =
% Frame lesen
In diesem Artikel wird die Einbindung der OpenCV Bibliotheken in ein Visual Studio Programm beschrieben.
    Frame = imread(Frame_Name,'PNG');
<br>
     Frame = rgb2gray(Frame);
'''Hier gehts zu Artikel'''    [[Datei:Ezgif-3-aa149494be25.gif]] [https://wiki.hshl.de/wiki/index.php/Einrichten_von_OpenCV_in_Visual_Studio Installation von OpenCV in Visual Studio]
= Objekterkennung mit dem Hokuyo LiDAR vom WS2022/2023=
In diesem Artikel befinden sich Erläuterungen und Dokumentationen für die Verwendung des Hokuyo LiDARs.<br>
'''Hier gehts zu Artikel'''    [[Datei:Ezgif-3-aa149494be25.gif]]  [https://wiki.hshl.de/wiki/index.php/OSE_Hokuyo-Lidar_Objekterkennung OSE Hokuyo-LiDAR Objekterkennung]


   
= Test =
% Vorverarbeitung
'''Hier gehts zu Artikel'''     [[Datei:Ezgif-3-aa149494be25.gif]][[OSE - Objekt - und Spurerkennung: Test der Spurparameter-Ermittlung in der Simulation]]
    Frame_bw = Gray2BW( Frame , 752, 478 );
    Frame_bw = edge(Frame_bw,'sobel','nothinning');


</source>
'''Hier gehts zu Artikel'''    [[Datei:Ezgif-3-aa149494be25.gif]][[OSE - Objekt - und Spurerkennung: Test der Spurparameter-Ermittlung am Fahrzeug]]


Im C++ Projekt liegen die Bilder die von der Kamera gesendet werden in der Struktur "''VRmImage''" vor. 


Um die zu vor in Matlab entworfenen Algorithmen in das C++ Projekt zu übernehmen gibt es die Möglichkeit den Embedded Coder zu nutzen.
<br><br><br><br><br><br><br>
Dieser ermöglicht es aus Matlab Code C / C++ Code zu generieren. Eine Anleitung zum Generieren von C Code findet sich in dem Artikel "''[[Von Matlab zu C Code|Von Matlab zu C Code]]''"
Um den Code im "Objekt_Spurerkennung" Projekt zu verwenden muss unter dem Punkt "''Dateien ins Projekt übernehmen''" des Artikels "''[[Von Matlab zu C Code|Von Matlab zu C Code]]''"
"''C/C++ Dynamic Libary''" statt "''C/C++ Static Libary''" gewählt werden.
<br/>


Bestimmte Matlab Funktionen lassen sich nicht generieren. Hier müssen eigenen Funktionen in Matlab programmiert werden um diese zu ersetzen. Eine andere Möglichkeit ist das einsetzen von Dummyfunktionen in Matlab Code.
= Veraltete Softwarestände und Artikel =
Diese Dummyfunktionen enthalten keine Funktionalität sondern dienen nur als Platzhalter deren Funktionsaufruf im C/C++ Projekt dann durch den Aufruf der jeweiligen C / C++ Funktion ersetzt wird.
<br/>


== Umsetzung ==
In diesem Abschnitt folgen veraltete Wiki Artikel zu Softwareständen, die nicht mehr existieren. <br>
=== Spur finden und auswerten ===
Die Softwarestände wurden mit Revison 6746 aus dem SVN Archiv gelöscht
- erklären des Pap
=== Polynom umrechnen ===
=== Stoplinie finden ===


== Weitere Ansätze ==
<div class="mw-collapsible mw-collapsed">
=== Kalman Filter ===
=== Maske Für das Auto ===


=Inverse Perspective Mapping=
== Alter LiDAR-Wiki Artikel ==
Bei der Verwendung einer Kamera zur Fahrspurerkennung ergibt sich immer das Problem der perspektischen Verzerrung. Grund dafür ist, dass bei der Projektion aus dem 3D-Weltkoordinatensystem in das 2D-Koordinatensystem des Bildes Information verloren gehen. Das Inverse Perspective Mapping (IPM) bietet eine Möglichkeit die verloren gegangenen Daten zu rekonstruieren und das Bild in entzerrter Vogelperspektive darzustellen.
'''Hier gehts zu Artikel'''    [[Datei:Ezgif-3-aa149494be25.gif]]  [https://wiki.hshl.de/wiki/index.php/Objekterkennung_mit_Laserscanner Hokuyo LiDAR Objekterkennung (alt)]


[[Datei:SDE IPM.png|left]]
== Kamerakalibrierung ==


Dabei wird das Bild unter Verwendung von geometrischen Beziehungen aus dem Weltkoodinatensystem W = {(x,y,z)} in ein volgelperspektivisches Bild I = {(u,v)} transformiert. Dabei ist die die y-Komponente, wie auch in der Abbildung zu sehen ist, stets 0. Das liegt daran das eindeutige Zuordnung der Punkte nicht ohne Weiteres möglich, da schließlich Informationen verloren gegangen sind. Da hierbei Straßenlinien gefunden werden sollen, kann die Annahme getroffen, dass alle Punkte auf dem Boden und damit auf y = 0 liegen müssen.
'''Neuer Ansatz incl. extrinsische Kalibrierung'''
Im Fall nicht ebenen Straßen gilt diese Annahme nicht und fürht daher zu Fehlern. Das bedeutet, dass das IPM beispielsweise bei Straßen in Gebirgen nicht geeignet ist. Auch möglicherweise vor einem fahrende andere Fahrzeuge liegen nicht in der Bodenebene und sind in der Vogelperspektive verzerrt dargestellt. Der Abstand zu ihnen kann aber bestimmt werden.
Außerdem müssen damit das IPM fehlerfrei funktioniert noch andere Anforderungen erfüllt sein. Position und Ausrichtung der Kamera müssen bekannt sein und es muss der Punkt auf dem Horizont fokussiert werden in dem sich die Fahrspuren zu schneiden scheinen, was wiederum erfordert, dass die Straße in der Mitte des Bildes liegt. Ist das nicht der Fall erhält man keine einwandfreien Ergebnisse, da die Straße immer noch eine perspektivische Verzerrung aufweist.


In diesem Artikel wird die intrinsische und extrinsische Kalibrierung der Kamera beschrieben. Dazu wird die OpenCV Bibliothek in einem C/C++ Programm verwendet.<br>
'''Hier gehts zu Artikel'''    [https://wiki.hshl.de/wiki/index.php/Kalibrierung_der_Kamera Kalibrierung der Kamera]


'''Alter Ansatz'''


In diesem Artikel findet sich die Beschreibung wie die Kameraparameter bestimmt werden können. Als Tool wird hier die Camera Calibrator Toolbox von Matlab verwendet.
<br>
'''Hier gehts zu Artikel'''      [https://wiki.hshl.de/wiki/index.php/Kameraparametrierung Kameraparametrierung]


== Draufsichterstellung ==
In diesem Artikel wird die Draufsichterstellung für das Fahrzeug erläutert.
<br>
'''Hier gehts zu Artikel'''  [https://wiki.hshl.de/wiki/index.php/Draufsichterstellung Draufsicht]


== Fahrspurerkennung ==
In diesem Artikel ist die Fahrspurerkennung dokumentiert, welche momentan auf dem Fahrzeug implementiert ist.
<br>
'''Hier gehts zu Artikel'''    [https://wiki.hshl.de/wiki/index.php/Fahrspurerkennung Fahrspurerkennung]


== Berechnung des Spurpolynoms ==
Dieser beschreibt die Berechnung des Spurpolynoms in Matlab und den Aufruf des in C/C++ generierten Codes.
<br>
'''Hier gehts zu Artikel'''    [https://wiki.hshl.de/wiki/index.php/Berechnung_des_Spurpolynoms#Link_zum_Quelltext_und_zum_Komponententest_in_SVN Berechnung des Spurpolynoms]


== Übertragen des Spurpolynoms ==
In diesem Artikel ist die Kommunikation zwischen dSpace Karte und Computer über die RS232, zur Übertragung des Spurpolynoms, dargestellt.
<br>
'''Hier gehts zu Artikel'''      [https://wiki.hshl.de/wiki/index.php/Übertragen_des_Spurpolynoms#Link_zum_Quelltext_und_zum_Komponententest_in_SVN Übertragen des Spurpolynoms]


== Simulationsumgebung für die Objekt- und Spurerkennung  ==
In diesem Artikel wird die Simulationsumgebung für die Objekt- und Spurerkennung vorgestellt.
<br>
'''Hier gehts zu Artikel'''    [https://wiki.hshl.de/wiki/index.php/Simulationsumgebung_für_die_Objekt-_und_Spurerkennung Simulationsumgebung für die Objekt- und Spurerkennung]


Ein Beispiel für gutes Ergebnis des IPM ist in Abbildung 1 zu sehen. [1]
== Stopplinienerkennung  ==
[[Datei:SED IPM2.png|mini|400px|center|Abbildung 1: Straße aus Vogelperspektive]]
In diesem Artikel wird die Stopplinienerkennung vorgestellt.
<br>
'''Hier gehts zu Artikel'''      [https://wiki.hshl.de/wiki/index.php/Stopplinienerkennung_mit_Hough-Transformation Stopplinienerkennung]


=Operatoren zur Kantenerkennung im Vergleich=
</div>


[[Datei:Kantenerkennung operatoren.png]]
=Archiv bisheriger Arbeit (sehr alte Artikel) =
<div class="mw-collapsible mw-collapsed">
== [[Alter Ansatz OSE-Objekt- und Spurerkennung]] ==
== [[Zentralperspektive "Umrechnung von Bild- zu Weltkoordinaten"]] (aktuell verwendeter Ansatz) ==


=Quellen weiterführende Links=
[1] SVN\SDE_Praktikum\Literatur\Inverse Perspective Transformation: ipm_paper_direkt<br />
"Decomposing and composing a 3×3 rotation matrix" [http://nghiaho.com/?page_id=846]<br />
"Grundlegende mathematische Verfahren der 3D-Visualisierung"[http://www.3dsource.de/deutsch/3Dmathe.htm]<br />
"Caltech Lane Detection Software"[http://vision.caltech.edu/malaa/software/research/caltech-lane-detection/]<br />
"Rekonstruktion 3D - Koordinaten aus Kamerabild"[http://www.gomatlab.de/rekonstruktion-3d-koordinaten-aus-kamerabild-mit-nebenbed-t24440.html]<br />
= Fazit & Ausblick =
Das Carolo-Cup Fahrzeug ist nun in der Lage die Fahrspur zu erkennen und zu tracken. Allerdings liegen noch Abstimmungsprobleme vor, die bisher verhindern, dass das ermittelte Spurpolynom an die Bahn -und Spurfürhrung übergeben wird. Der Spursuchealgorithmus verwendet nun einen zentralperspektivischen Ansatz, um die gefundenen Spurdaten in das körperfeste Koordinatensystem zu überführen, da dieser zuverlässigere und vor allem plausiblere Ergebnisse lieferte als die bisher genutzte Koordinatentransformation.
Die nächsten Schritte bestehen darin die Probleme bei der Übertragung der Spurdaten zu lösen, den Status der Objekterkennung zu überprüfen und diese in Betrieb zu nehmen.
== Feedback zum Artikel ==
--[[Benutzer:Mirekgoebel|Prof. Dr. Mirek Göbel]] ([[Benutzer Diskussion:Mirekgoebel|Diskussion]]) 13:54, 8. Aug. 2014 (CEST)
* Projektplan etc. nichts ins Wiki!
* Originaldaten der Bilder fehlen (zum ggf. Nacharbeiten)
=Archiv bisheriger Arbeit =
== [[Zentralperspektive "Umrechnung von Bild- zu Weltkoordinaten"]] (akktuel verwendeter Ansatz) ==
== [[Spurerkennung]] (vorheriger Ansatz) ==
== [[Spurerkennung]] (vorheriger Ansatz) ==
== [[Objekterkennung mit Laserscanner]] ==
== [[Objekterkennung mit Laserscanner]] ==
== [http://193.175.248.52/wiki/index.php/Objekterkennung_mit_RP_Lidar_A1M8 Objekterkennung mit RP Lidar A1M8] ==


== [[Objekterkennung mit Kamera]] ==
== [[Objekterkennung mit Kamera]] ==


</div>


= Einzelnachweise =
<references/>


----
----
→ zurück zum Hauptartikel: [[Praktikum_SDE|Praktikum SDE]]
→ zurück zum Hauptartikel: [[Praktikum_SDE|Praktikum SDE]]

Aktuelle Version vom 11. Januar 2023, 09:18 Uhr

Autoren: Hendrik Steffen, Sven Posner
Betreuer: Prof. Schneider

→ zurück zum Hauptartikel: Praktikum SDE

Aufbau dieser Seite

Dieser Artikel ist eine Übersichtsseite, in der auf alle relevanten Artikel zur Objekt und Spurerkennung verwiesen wird.
Diese Seite soll, insbesondere einem neuen Jahrgang als Einstieg und Orientierung dienen und die hier beschriebenen Softwarestände sollen mit denen im SVN Archiv übereinstimmen.
Alle Links und Informationen auf dieser Seite bitte aktuell halten

OSE Softwareumgebung

In diesem Artikel wird der aktuelle Softwarestand detailliert beschrieben
Hier gehts zu Artikel Aktuelle Softwareumgebung für das OSE-Programm

VRmagic Kamera einrichten

In diesem Artikel befinden sich Erläuterungen wie die VRmagic Kamera auf dem Fahrzeug benutzt werden kann.
Hier gehts zu Artikel Inbetriebnahme der VRmagic Kamera

Open CV installation

In diesem Artikel wird die Einbindung der OpenCV Bibliotheken in ein Visual Studio Programm beschrieben.
Hier gehts zu Artikel Installation von OpenCV in Visual Studio

Objekterkennung mit dem Hokuyo LiDAR vom WS2022/2023

In diesem Artikel befinden sich Erläuterungen und Dokumentationen für die Verwendung des Hokuyo LiDARs.
Hier gehts zu Artikel OSE Hokuyo-LiDAR Objekterkennung

Test

Hier gehts zu Artikel OSE - Objekt - und Spurerkennung: Test der Spurparameter-Ermittlung in der Simulation

Hier gehts zu Artikel OSE - Objekt - und Spurerkennung: Test der Spurparameter-Ermittlung am Fahrzeug









Veraltete Softwarestände und Artikel

In diesem Abschnitt folgen veraltete Wiki Artikel zu Softwareständen, die nicht mehr existieren.
Die Softwarestände wurden mit Revison 6746 aus dem SVN Archiv gelöscht

Alter LiDAR-Wiki Artikel

Hier gehts zu Artikel Hokuyo LiDAR Objekterkennung (alt)

Kamerakalibrierung

Neuer Ansatz incl. extrinsische Kalibrierung

In diesem Artikel wird die intrinsische und extrinsische Kalibrierung der Kamera beschrieben. Dazu wird die OpenCV Bibliothek in einem C/C++ Programm verwendet.
Hier gehts zu Artikel Kalibrierung der Kamera

Alter Ansatz

In diesem Artikel findet sich die Beschreibung wie die Kameraparameter bestimmt werden können. Als Tool wird hier die Camera Calibrator Toolbox von Matlab verwendet.
Hier gehts zu Artikel Kameraparametrierung

Draufsichterstellung

In diesem Artikel wird die Draufsichterstellung für das Fahrzeug erläutert.
Hier gehts zu Artikel Draufsicht

Fahrspurerkennung

In diesem Artikel ist die Fahrspurerkennung dokumentiert, welche momentan auf dem Fahrzeug implementiert ist.
Hier gehts zu Artikel Fahrspurerkennung

Berechnung des Spurpolynoms

Dieser beschreibt die Berechnung des Spurpolynoms in Matlab und den Aufruf des in C/C++ generierten Codes.
Hier gehts zu Artikel Berechnung des Spurpolynoms

Übertragen des Spurpolynoms

In diesem Artikel ist die Kommunikation zwischen dSpace Karte und Computer über die RS232, zur Übertragung des Spurpolynoms, dargestellt.
Hier gehts zu Artikel Übertragen des Spurpolynoms

Simulationsumgebung für die Objekt- und Spurerkennung

In diesem Artikel wird die Simulationsumgebung für die Objekt- und Spurerkennung vorgestellt.
Hier gehts zu Artikel Simulationsumgebung für die Objekt- und Spurerkennung

Stopplinienerkennung

In diesem Artikel wird die Stopplinienerkennung vorgestellt.
Hier gehts zu Artikel Stopplinienerkennung

Archiv bisheriger Arbeit (sehr alte Artikel)

Einzelnachweise



→ zurück zum Hauptartikel: Praktikum SDE