Boden-Luft-Abwehr: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 28: Zeile 28:
Um ein rotes Objekt zu erkennen wurde der Ansatz gewählt, nur die rote Matrix aus dem Bild zu nehmen, und dort anhand eines Schwellwertes zu entscheiden, welche Pixel zum Objekt gehören. Leider hat der RGB Farbraum keine befriedigenden Ergebnisse erbracht. auf Abbildung 2 ist deutlich zu Erkennen, wie sich das rote Objekt vom blauen Hintergrund abhebt, doch im der Matrix mit den Rotwerten und im Histogramm ist zu erkennen, dass die Farbe rot nicht besonders aus den anderen Farben heraussticht.
Um ein rotes Objekt zu erkennen wurde der Ansatz gewählt, nur die rote Matrix aus dem Bild zu nehmen, und dort anhand eines Schwellwertes zu entscheiden, welche Pixel zum Objekt gehören. Leider hat der RGB Farbraum keine befriedigenden Ergebnisse erbracht. auf Abbildung 2 ist deutlich zu Erkennen, wie sich das rote Objekt vom blauen Hintergrund abhebt, doch im der Matrix mit den Rotwerten und im Histogramm ist zu erkennen, dass die Farbe rot nicht besonders aus den anderen Farben heraussticht.


Daher wurde das Bild in einen anderen Farbraum transformiert. Angeboten hat sich hier der YCBCR Farbraum, da in diesem die Farbe rot deutlicher herauszufiltern ist. Hier ist sowohl im Teil CR (Chroma Rot) des Farbraums als auch im Histogramm zu sehen, dass die Farbe Rot deutlich hervorsticht (Abbildung 3). So konnte ein klarer Schwellwert vom Farbwert 160 festgelegt werden. Voraussetzung für die Funktionalität mit diesem Schwellwert ist natürlich, dass die Farbe rot ähnlih ist, wie auf dem Beispielbild und auch die Beleuchtungsverhältnisse stimmen, mehr dazu im Abschnitt Webcam.
Daher wurde das Bild in einen anderen Farbraum transformiert. Angeboten hat sich hier der YCBCR Farbraum, da in diesem die Farbe rot deutlicher herauszufiltern ist. Hier ist sowohl im Teil CR (Chroma Rot) des Farbraums als auch im Histogramm zu sehen, dass die Farbe Rot deutlich hervorsticht (Abbildung 3). So konnte ein klarer Schwellwert vom Farbwert 160 festgelegt werden. Voraussetzung für die Funktionalität mit diesem Schwellwert ist natürlich, dass die zu erkennende Farbe rötlich ist, wie auf dem Beispielbild und auch die Beleuchtungsverhältnisse stimmen, mehr dazu im Abschnitt Webcam.


Da in einem Bild mehrere Objekte rot sein können muss natürlich festgelegt werden, welches Objekt herauszufiltern ist. Hierzu wurde das Größte Objekt im Bild gesucht und extrahiert (Abbildung 4).
Da in einem Bild mehrere Objekte rot sein können muss natürlich festgelegt werden, welches Objekt herauszufiltern ist. Hierzu wurde das Größte Objekt im Bild gesucht und extrahiert (Abbildung 4).


Als letzten Schritt der Bildverarbeitung musste die Position des extrahierten Objektes im Gesamtbild  
Als letzten Schritt der Bildverarbeitung musste die Position des extrahierten Objektes im Gesamtbild bestimmt werden. Hierzu wurde eine Funktion geschrieben, die das bearbeitete Bild mit dem extrahierten Objekt übergeben bekommt. Die Funktion berechnet nun den geometrischen Schwerpunkt des Objektes. Ausserdem berechnet die Funktion weitere Merkmale wie Umfang und Fläche des Objektes, die später als Kriterien zum Abschuss der Raketen genutzt werden können.
 
=== Webcam ===
 
Die Webcam wurde in Matlab mithilfe des Support Package eingebunden und getestet. Hierbei wurde festgestellt, dass die Grundeinstellungen der Webcam mit automatischem Weißabgleich etc. ausreichend für die Anwendung bei unterschiedlichen und wechselnden Lichtverhältnissen sind. Daher wurden hier keine weiteren Einstellungen vorgenommen. Des Weiteren wurde festgestellt, dass der Algorithmus der Bildverarbeitung anfällig für dunkle Lichtsituationen ist. Bei zu geringer Beleuchtung sticht die Farbe Rot nicht mehr ausreichend hervor und wird unzureichend erkannt. Auszugleichen ist dies mit der Anpassung des Schwellwertes, ab welchem Wert ein Objekt als "rot genug" erkannt wird. Ein Herabsetzen des Schwellwertes hat aber zur Folge, dass zu viele Objekte als Rot erkannt werden. Daher wurde Entschieden, den Schwellwert an eine ausreichende Beleuchtungssituation anzupassen und diese vorauszusetzen.
 
=== Regelung ===
 
Um den Raketenwerfer nun auf den Schwerpunkt des erkannten Objektes auszurichten wurde entschieden, dass die Webcam oberhalb des Raktenwerfers anzubringen sei, dass diese alle Bewegungen mitfährt und ständig in Schussrichtung ausgerichtet ist. Provisorisch wurde diese Fixierung durch Klebeband vorgenommen.


== Ergebnisse ==
== Ergebnisse ==
== Ausblick ==


== Siehe auch ==
== Siehe auch ==


hier SVN Link
https://svn.hshl.de/svn/GET_Fachpraktikum_MTR/trunk/Projekte/33_Rocket_Launcher/


== Weblinks ==
== Weblinks ==


http://de.mathworks.com/help/supportpkg/usbwebcams/index.html?s_cid=doc_ftr
http://de.mathworks.com/help/supportpkg/legomindstormsev3io/index.html?s_cid=doc_ftr
https://svn.hshl.de/svn/GET_Fachpraktikum_MTR/trunk/Projekte/33_Rocket_Launcher/


<references />
<references />

Version vom 23. Juni 2016, 22:05 Uhr

Autor: Adam Fankhauser

Betreuer: Prof. Schneider

Einleitung

Dieses Projekt wurde im Kurs Digitale Signal und Bildverarbeitung im Sommersemester 2016 als Bestandeil der Übungen durchgeführt und ist in diesem Artikel dokumentiert

Aufgabenstellung

Aufgabe in diesem Projekt war die Weiterführung des Projekts Lego Mindstorms Rocket Launcher aus dem Fachpraktikum Elektrotechnik (WS 14/15). Der mechanisch fertiggestellte Rocket Launcher sollte per Webcam ein Objekt, beispielsweise einen roten Ballon, erkennen, sich auf das Objekt ausrichten und eine Rakete gezielt darauf abfeuern. Die Steuerung sollte über Matlab erfolgen.

Vorbereitung

Grundlage der Steuerung war die Vorarbeit der Gruppe, die den Rocket Launcher mechanisch aufgebaut hat. Diese hat ihr Arbeit ausreichend dukumentiert und ein Simulink-Modell hinterlassen, welches die Steuerung über die Tasten des EV3-Moduls ermöglicht. Mit Hinblick auf die Erweiterung des Programms um die Steuerung und Regelung des Rocket Launchers sollte das Simulink Modell nicht weiter genutzt werden, sondern die Funktionen in Matlab Code umgesetzt werden.

Für die Einbindung der Webcam und des Lego EV3-Moduls wurde Matlab mit den Support Packages USB Webcams und LEGO MINDSTORMS ausgerüstet.

Durchführung

Die Durchführung wurde in mehrere Abschnitte unterteilt. Zuerst wurde mit Beispielbildern die Bildverarbeitung bearbeitet, dann wurde die Webcam in Matlab eingebunden, danach wurde die Lego Motoren des Raketenwerfers über Matlab angesteuert und eine Regelung entworfen, welches den Raketenwerfer auf das erkannt Objekt ausrichtet und zuletzt wurden alle Programmteile zusammengeführt.

Bildverarbeitung

Um ein rotes Objekt zu erkennen wurde der Ansatz gewählt, nur die rote Matrix aus dem Bild zu nehmen, und dort anhand eines Schwellwertes zu entscheiden, welche Pixel zum Objekt gehören. Leider hat der RGB Farbraum keine befriedigenden Ergebnisse erbracht. auf Abbildung 2 ist deutlich zu Erkennen, wie sich das rote Objekt vom blauen Hintergrund abhebt, doch im der Matrix mit den Rotwerten und im Histogramm ist zu erkennen, dass die Farbe rot nicht besonders aus den anderen Farben heraussticht.

Daher wurde das Bild in einen anderen Farbraum transformiert. Angeboten hat sich hier der YCBCR Farbraum, da in diesem die Farbe rot deutlicher herauszufiltern ist. Hier ist sowohl im Teil CR (Chroma Rot) des Farbraums als auch im Histogramm zu sehen, dass die Farbe Rot deutlich hervorsticht (Abbildung 3). So konnte ein klarer Schwellwert vom Farbwert 160 festgelegt werden. Voraussetzung für die Funktionalität mit diesem Schwellwert ist natürlich, dass die zu erkennende Farbe rötlich ist, wie auf dem Beispielbild und auch die Beleuchtungsverhältnisse stimmen, mehr dazu im Abschnitt Webcam.

Da in einem Bild mehrere Objekte rot sein können muss natürlich festgelegt werden, welches Objekt herauszufiltern ist. Hierzu wurde das Größte Objekt im Bild gesucht und extrahiert (Abbildung 4).

Als letzten Schritt der Bildverarbeitung musste die Position des extrahierten Objektes im Gesamtbild bestimmt werden. Hierzu wurde eine Funktion geschrieben, die das bearbeitete Bild mit dem extrahierten Objekt übergeben bekommt. Die Funktion berechnet nun den geometrischen Schwerpunkt des Objektes. Ausserdem berechnet die Funktion weitere Merkmale wie Umfang und Fläche des Objektes, die später als Kriterien zum Abschuss der Raketen genutzt werden können.

Webcam

Die Webcam wurde in Matlab mithilfe des Support Package eingebunden und getestet. Hierbei wurde festgestellt, dass die Grundeinstellungen der Webcam mit automatischem Weißabgleich etc. ausreichend für die Anwendung bei unterschiedlichen und wechselnden Lichtverhältnissen sind. Daher wurden hier keine weiteren Einstellungen vorgenommen. Des Weiteren wurde festgestellt, dass der Algorithmus der Bildverarbeitung anfällig für dunkle Lichtsituationen ist. Bei zu geringer Beleuchtung sticht die Farbe Rot nicht mehr ausreichend hervor und wird unzureichend erkannt. Auszugleichen ist dies mit der Anpassung des Schwellwertes, ab welchem Wert ein Objekt als "rot genug" erkannt wird. Ein Herabsetzen des Schwellwertes hat aber zur Folge, dass zu viele Objekte als Rot erkannt werden. Daher wurde Entschieden, den Schwellwert an eine ausreichende Beleuchtungssituation anzupassen und diese vorauszusetzen.

Regelung

Um den Raketenwerfer nun auf den Schwerpunkt des erkannten Objektes auszurichten wurde entschieden, dass die Webcam oberhalb des Raktenwerfers anzubringen sei, dass diese alle Bewegungen mitfährt und ständig in Schussrichtung ausgerichtet ist. Provisorisch wurde diese Fixierung durch Klebeband vorgenommen.

Ergebnisse

Ausblick

Siehe auch

https://svn.hshl.de/svn/GET_Fachpraktikum_MTR/trunk/Projekte/33_Rocket_Launcher/

Weblinks

http://de.mathworks.com/help/supportpkg/usbwebcams/index.html?s_cid=doc_ftr

http://de.mathworks.com/help/supportpkg/legomindstormsev3io/index.html?s_cid=doc_ftr

https://svn.hshl.de/svn/GET_Fachpraktikum_MTR/trunk/Projekte/33_Rocket_Launcher/




→ zurück zum Hauptartikel: DSB SoSe2016