Target Tracking

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Autor: Martin Berysztak
Betreuer: Prof. Schneider

Raketenwerfer von getdigital.de

Ziel

Ein roter Luftballon soll in Bewegung vor einem weissen Hintergrund erkannt und vom Raketenwerfer getroffen werden.

Aufgabe

  1. Erkennen Sie den Luftballon vor seinem Hintergrund mit einer Webcam.
  2. Fokussieren Sie den Raketenwerfer auf den Luftballonschwerpunkt.
  3. Treffen Sie den Luftballon in einer Flugsequenz mit 3 von 4 Schüssen.


Lösung

Die Lösung der Aufgabenstellung teilt sich in drei Teilschritte:

Ansteuern des Raketenwerfers

Zur Lösung der Aufgabe ist der von getdigital.de vertriebene Raketenwerfer ist zur Lösung der Aufgabe nicht geeignet da so nur eine Ansteuerung über die gegebene Software möglich ist. Für die vorliegenden Lösung wurde ein Raketenwerfer mit einer neuen Ansteuerung über [| Arduino] entwickelt.

Bei Fragen zur Entwicklung der neuen Ansteuerung Jan Kifmann Umgebauter Raketenwerfer


Objekterkennung (roter Ballon vor weißem Hintergrund)

Um ein rotes Objekt in einem Live Videobild aus einem weißen Hintergrund zu selektieren müssen folgende Schritte durchgeführt werden:

  1. Im ersten Schritt muss jedes Frame aus dem rgb-Bild einzelt ausgelesen werden.
    Schritt 1
  2. Der zweite Schritte besteht darin sich nur den roten Teil des RGB-Bildes zu holen.
    Schritt 2
  3. Darauf in wird das Bild aus dem rgb-Farbraum in ein Graustufenbild umgewandelt.
    Schritt 3
  4. Nun wird der rote Teil des RGB-Bildes vom Graubild subtrahiert.
    Schritt 4
  5. Auf das Graubild wird ein Median Filter eingesetzt um störende Verrauschungen zu entfernen.
    Schritt 5
  6. Das gefilterte Bild wird nun in ein Binärbild umgewandelt. Die roten Objekte werden hierfür weiß gemacht der Rest wird schwarz. Schritt 6


Diese Schritte werden im Code während der While-schleife immer wieder für jedes Bild durchgeführt.

Anhand dessen kann nun mit Hilfe des BlobAnalysis-Befehls nun die roten Objekte selktiert werden.

Objekt Tracking

Um das Objekt zu verfolgen wird auf die zuvor im vision.BlobAnalysis-Befehl ausgebenen und in der centroid-Variable gespeicherten Mittelwertskoordinaten zugegriffen. Außerdem wird die Tatsache genutzt, dass der Raketenwerfer etwas über dem Mittelpunkt des Kamarabildes schießt. Dieser befindet sich in einem Bereich von:

  • X-Richtung: 330-380
  • Y-Richtung: 360-290

Dadurch wird die Annahme getroffen, dass wenn das zu treffende Objekt sich in Bildmittelpunktbereich befindet, es getroffen wird. Dies wird erreicht indem anhand von if-Bedingungen und der Centroid Variable geprüft wird ob sich der Mittelpunkt des Objektes sich bereits im Abschussbereich befindet, wenn dies nicht der Fall ist soll der Raketenwerfer sich solange in diese Richtung bewegen.

Befinden sich nun der Mittelpunkt des Objektes oberhalb des Kameramittelpunktes, werden alle Bewegungen des Raketenwerfers eingestellt und das Objekt wird abgeschossen.

Bedienung des Tools

Ausblick

Aufgrund der gegeneben Hardware kann Raketenwerfer schnell bewegene Objekte schlecht treffen.




→ zurück zum Hauptartikel: Digitale Signal- und Bildverarbeitung SoSe2014