Objekterkennung mit Kinect Tiefenkamera mit Matlab/Simulinkmit und EV3: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 30: Zeile 30:
* KEV3 version 1.15 by Liviu Ivanescu
* KEV3 version 1.15 by Liviu Ivanescu
<!-- = '''Signalverarbeitungskette''' = -->
<!-- = '''Signalverarbeitungskette''' = -->
= '''Technische Details zum Kinect System''' =
Der folgende Abschnitt zeigt kurz die technischen Details der Kinect.
== '''Technische Daten''' ==
Die u.a. Tabelle zeigt einen Auszug der technischen Daten der Kinect.
Tabelle 1: Technische Daten der Kinect(Auszug) [3]
{| class="wikitable"
|-
| Auflösung Farbkamera || 1920x1080
|-
| Bildrate Farbkamera || 30 fps
|-
| Auflösung Tiefenkamera || 512x424
|-
| Bildrate Tiefenkamera || 30 fps
|-
| Tiefensensor || ToF-Sensor
|-
| Sichtfeld (FoV) horizontal || 70°
|-
| Sichtfeld (FoV) vertikal || 60°
|-
| Unterstütztes Betriebssystem || Ab Windows 8
|-
| USB Standard || 3.0
|-
|}
== '''Blockschaltbild und Signalverarbeitung der Kinect''' ==
== '''ToF Sensor''' ==


= '''Realisierung''' =
= '''Realisierung''' =
Zeile 58: Zeile 93:
[2] Von Evan-Amos - Eigenes Werk, Gemeinfrei, https://commons.wikimedia.org/w/index.php?curid=33217678, Abgerufen am 09.05.2017
[2] Von Evan-Amos - Eigenes Werk, Gemeinfrei, https://commons.wikimedia.org/w/index.php?curid=33217678, Abgerufen am 09.05.2017


[3] Cai, Ziyun; Han, Jungong; Liu, Li; Shao, Ling (2017): RGB-D datasets using microsoft kinect or similar sensors. A survey. In: Multimed Tools Appl 76 (3), S. 4313–4355. DOI: 10.1007/s11042-016-3374-6.
[4] Bamji, Cyrus S.; O'Connor, Patrick; Elkhatib, Tamer; Mehta, Swati; Thompson, Barry; Prather, Lawrence A. et al. (2015): A 0.13 μm CMOS System-on-Chip for a 512 × 424 Time-of-Flight Image Sensor With Multi-Frequency Photo-Demodulation up to 130 MHz and 2 GS/s ADC. In: IEEE J. Solid-State Circuits 50 (1), S. 303–319. DOI: 10.1109/JSSC.2014.2364270.


→ zurück zum Hauptartikel: [[SigSys_SoSe2017| Signalverarbeitende Systeme SoSe2017]]
→ zurück zum Hauptartikel: [[SigSys_SoSe2017| Signalverarbeitende Systeme SoSe2017]]

Version vom 20. Mai 2017, 15:15 Uhr

Autor: Lars Naujocks

Betreuer: Prof. Schneider

→ zurück zum Hauptartikel: Signalverarbeitende Systeme SoSe2017

Aufgabe

Die Aufgabe des Projektes für die Vorlesung „Signalverarbeitende Systeme“ besteht darin, ein LEGO Mindstorm Auto (EV3 Brick) mittels eines Sensors zu einer Notbremsung zu bringen, sobald ein Objekt (in diesem Fall ein Kopierpapierkarton) weniger oder gleich 5 cm entfernt ist. Der Sensor ist in diesem Falle eine Kinect Sensorleiste in der Version V2. Die entsprechende Software/Anwendung ist in Matlab und/oder Simulink zu implementieren. Ferner ist ein Video zu erstellen, das die Funktionalität zeigt.

Einleitung

Die Sensorleiste Kinect (abgeleitet vom englischen kinetic connect, deutsch Kinetische Verbindung) der Firma Microsoft wurde ursprünglich für die Spielekonsolen der Xbox-Reihe entwickelt. Sie soll dazu dienen, Videospiele nur durch Körperbewegungen und Sprache zu steuern. Microsoft bietet die Kinect in zwei Versionen an, Kinect V1 (Xbox360 und PC) und Kinect V2 (Xbox One und PC). Die Version V2 besitzt ein 3D-Mikrofon, eine RGB-Kamera, sowie einen Tiefensensor, der nach dem Time-of-Flight Prinzip arbeitet (s. weiter unten). Die Kombination von RGB-Kamera und Tiefensensor wird auch als RGB-D Kamera bezeichnet. Microsoft hat die Entwicklung vom Kinectspielen nahezu eingestellt, dennoch erfreut sie sich in der Informatik und den Ingenieurswissenschaften großer Beliebtheit, da sie einen günstigen Einstieg in die Disziplinen Digitale Bildverarbeitung, Objekterkennung und Robotik bietet. Außerdem existieren mit z.B. OpenCV, OpenNi und Add-Ons für Matlab diverse Softwarepakete, die die Entwicklung eigener Programme unterstützen [1].

Abbildung 1: Kinect Version V2 [2]

Verwendete Hard- und Software

Die folgende Auflistung zeigt die für die Entwicklung verwendete Hard- und Software.

Hardware

  • Lego Mindstorms EV3 Brick
  • Kinect V2
  • Laptop Acer Aspire E15 (8GB RAM, Intel Core i5-6267U @ 2.9Ghz bis zu 3.3 GHz (Turbo Speed))

Software

  • MS Windows 10 Version 1607
  • Matlab R2016b
  • QUT toolkit: https://wiki.qut.edu.au/display/cyphy/QUT+EV3+MATLAB+toolkit
  • Image Acquisition Toolbox version 5.1
  • Image Acquisition Toolbox Support Package for Kinect for Windows Sensor version 16.2.0
  • MATLAB Support Package for LEGO MINDSTORMS EV3 Hardware version 16.2.0
  • Computer Vision System Toolbox version 7.2
  • Kinect for Windows Runtime v1.6
  • KEV3 version 1.15 by Liviu Ivanescu

Technische Details zum Kinect System

Der folgende Abschnitt zeigt kurz die technischen Details der Kinect.

Technische Daten

Die u.a. Tabelle zeigt einen Auszug der technischen Daten der Kinect.

Tabelle 1: Technische Daten der Kinect(Auszug) [3]

Auflösung Farbkamera 1920x1080
Bildrate Farbkamera 30 fps
Auflösung Tiefenkamera 512x424
Bildrate Tiefenkamera 30 fps
Tiefensensor ToF-Sensor
Sichtfeld (FoV) horizontal 70°
Sichtfeld (FoV) vertikal 60°
Unterstütztes Betriebssystem Ab Windows 8
USB Standard 3.0



Blockschaltbild und Signalverarbeitung der Kinect

ToF Sensor

Realisierung

Hardware

Software

Die folgende Abbildung zeigt den Programmablaufplan: Er beginnt mit dem Aufräumen des Workspaces und dem Initialisieren der Variablen. Es folgt die Erstellung eines Brick Objektes und der Aufbau der Bluetooth Verbindung zwischen PC und Brick. Danach werden die Kinect Kameras initialisiert und entsprechende Videoobjekte erstellt. Der Brick wird gestartet und danach in einer While-Schleife permanent der Abstand zum Hindernis ermittelt. Sobald eine definierte Distanz erreicht wird, wird der Brick zur Notbremsung veranlasst und die While-Schleife verlassen. Im Detail passiert in der Schleife Folgendes: Zuerst werden jeweils ein Farb- und ein Tiefenbild erstellt. Danach kommt der erste Filteralgorithmus, der ähnlich wie ein Bandpass arbeitet, d.h. es werden nur Signale eines bestimmten Frequenzbandes, in diesem Fall Bildbereich, durchgelassen. Da der Sensor nur von 0.5 m bis 4.5 m zuverlässig arbeitet, werden alle z-Werte größer 4.5m und kleiner 0.5m gefiltert, d.h. auf null gesetzt. Danach wird das Sichtfeld (FoV) in x- und y-Richtung eingeengt, um irrelevante Daten zu entfernen. Als nächstes wird mit dem Befehl „pcfromkinect“ eine Punktwolke vom Tiefen- und Farbbild erstellt. Zuletzt wird das Objekt (Hindernis) mittels „pcfitplane“ Befehl aus der Punktwolke isoliert. Von dem isolierten Objekt kann die aktuelle Distanz in z-Richtung ermittelt werden und dann mit der Referenzdistanz für die Notbremsung verglichen werden. Ist der Wert kleiner oder gleich dem Referenzwert, wird eine Notbremsung durchgeführt, sämtliche Objektinstanzen gelöscht und die While-Schleife beendet. Ist der Wert größer als der Referenzwert, geht die Schleife in die nächste Iteration.

Abbildung 1: Programmablaufplan für die Notbremsung

Ergebnisse

Das Ergebnis des Projektes wurde ferner in einem Video festgehalten, das unter folgendem Link zu erreichen ist:

LinkieMcLink

Projektplan

Um die Übersicht über das Projekt zu behalten, wurde ein Projektplan mit MS Project 2016 erstellt.Dieser ist in [x] einzusehen. Das folgende Bild zeigt einen Screenshot vom Gantt Chart.

Verzeichnisstruktur des Projektes

Sämtliche Daten sind unter Versionskontrolle mit SVN (Zugriffsrechte erforderlich). Das folgende Bild zeigt einen Überblick über die Verzeichnisse und Dateien.

Lessons Learned

  • Es ist besser Matlab nach jedem Run zu beenden und neuzustarten. Anderenfalls kann es sein, dass ein Objekt, das vorher erkannt wurde, im neuen Lauf nicht mehr erkannt wird und demzufolge eine Kollision stattfindet. Eventuell werden einige Objekte, die erzeugt wurden trotz "Zerstörung" nicht beendet und werden nicht richtig initialisiert.

Things to do

Quellen/Referenzen

!!!Für SVN Ordner sind die entsprechenden Zugriffsrechte erforderlich!!!

[1] https://de.wikipedia.org/wiki/Kinect, Abgerufen am 09.05.2017

[2] Von Evan-Amos - Eigenes Werk, Gemeinfrei, https://commons.wikimedia.org/w/index.php?curid=33217678, Abgerufen am 09.05.2017

[3] Cai, Ziyun; Han, Jungong; Liu, Li; Shao, Ling (2017): RGB-D datasets using microsoft kinect or similar sensors. A survey. In: Multimed Tools Appl 76 (3), S. 4313–4355. DOI: 10.1007/s11042-016-3374-6.

[4] Bamji, Cyrus S.; O'Connor, Patrick; Elkhatib, Tamer; Mehta, Swati; Thompson, Barry; Prather, Lawrence A. et al. (2015): A 0.13 μm CMOS System-on-Chip for a 512 × 424 Time-of-Flight Image Sensor With Multi-Frequency Photo-Demodulation up to 130 MHz and 2 GS/s ADC. In: IEEE J. Solid-State Circuits 50 (1), S. 303–319. DOI: 10.1109/JSSC.2014.2364270.

→ zurück zum Hauptartikel: Signalverarbeitende Systeme SoSe2017