Entwicklung einer kamerabasierten Legoteil Zählmaschine: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 33: Zeile 33:
In folgenden Kapiteln werden grundlegende Themen zur Klassifizierung von Legoteilen behandelt. Zum einen wird ein möglicher Hardwareaufbau gezeigt und zum anderen werden Programmabschnitte der Software beschrieben.
In folgenden Kapiteln werden grundlegende Themen zur Klassifizierung von Legoteilen behandelt. Zum einen wird ein möglicher Hardwareaufbau gezeigt und zum anderen werden Programmabschnitte der Software beschrieben.


===Beschreibung der Hardwarekomponenten===  
===Beschreibung der Hardwarekomponenten===
[[Datei:MaschineHardware.jpg|350px|thumb|right|Geplanter Hardwareaufbau]]
Die LEGO-Bauteile stammen aus EV3- und NXT-Basis- und Ergänzungssets und werden in eine Kunststoffkiste umgefüllt. Diese Kiste wird in eine Vorrichtung gestellt, die gekippt werden kann. Durch zunächst leichtes Kippen legen sich die ersten Teile an eine 90 Grad zur offenen Kiste befindlichen Wand, die aus Vorder- und Rückwand besteht, wobei sich Letztere dicht vor einem Förderband befindet. Die mit der Kiste bewegliche Vorderwand fördert mit ihrer Vorderkante vereinzelte LEGO-Teile auf das Förderband. Sowohl die Wände als auch das Förderband haben seitliche Begrenzungen, so dass die Bauteile nicht aus der Maschine fallen können; diese Begrenzungen können außerdem durch Verengen zum weiteren Vereinzeln genutzt werden.
Die LEGO-Bauteile stammen aus EV3- und NXT-Basis- und Ergänzungssets und werden in eine Kunststoffkiste umgefüllt. Diese Kiste wird in eine Vorrichtung gestellt, die gekippt werden kann. Durch zunächst leichtes Kippen legen sich die ersten Teile an eine 90 Grad zur offenen Kiste befindlichen Wand, die aus Vorder- und Rückwand besteht, wobei sich Letztere dicht vor einem Förderband befindet. Die mit der Kiste bewegliche Vorderwand fördert mit ihrer Vorderkante vereinzelte LEGO-Teile auf das Förderband. Sowohl die Wände als auch das Förderband haben seitliche Begrenzungen, so dass die Bauteile nicht aus der Maschine fallen können; diese Begrenzungen können außerdem durch Verengen zum weiteren Vereinzeln genutzt werden.
Sollte sich dieses Verfahren als nicht erfolgreich erweisen, wäre alternativ eine Vorsortierung durch Sieben denkbar; d. h. aus der Kiste gelangen die Teile in eine Schüttelvorrichtung, welche die Teile durch zunächst feine, später gröbere Löcher auf das o. g. Förderband fallen lässt.
Sollte sich dieses Verfahren als nicht erfolgreich erweisen, wäre alternativ eine Vorsortierung durch Sieben denkbar; d. h. aus der Kiste gelangen die Teile in eine Schüttelvorrichtung, welche die Teile durch zunächst feine, später gröbere Löcher auf das o. g. Förderband fallen lässt.
Zeile 39: Zeile 40:


===Farbanalyse===
===Farbanalyse===
[[Datei:P24.jpg|350px|thumb|right|Binärbild zum weißen Farbbereich]]
Im ersten Schritt in der Software wird die Farbe analysiert. Jede zu berücksichtigende Farbe bekommt eine Matrix in der eine 1 an einem Bildpunkt gesetzt wird , wenn sich an diesem Punkt die Farbe befindet und eine 0, wenn dies nicht der Fall ist. Für die Farbe "Weiß" ensteht das Binärbild das rechts zu sehen ist.
Im ersten Schritt in der Software wird die Farbe analysiert. Jede zu berücksichtigende Farbe bekommt eine Matrix in der eine 1 an einem Bildpunkt gesetzt wird , wenn sich an diesem Punkt die Farbe befindet und eine 0, wenn dies nicht der Fall ist. Für die Farbe "Weiß" ensteht das Binärbild das rechts zu sehen ist.


===Flood-Filling===
===Flood-Filling===
[[Datei:P34.jpg|350px|thumb|right|Ergebnis nach dem Flood-Filling]]
Im nächsten Schritt werden Regionen gefunden und gefüllt in jedem Binärbild zu den einzelnen Farben. Dazu wird durch den Flood-Filling-Alghorithmus zusammenhängende Bereiche erkannt. Wodurch das rechts liegende Bild entsteht.
Im nächsten Schritt werden Regionen gefunden und gefüllt in jedem Binärbild zu den einzelnen Farben. Dazu wird durch den Flood-Filling-Alghorithmus zusammenhängende Bereiche erkannt. Wodurch das rechts liegende Bild entsteht.


===Moore-Neighbour-Tracing-Alghorithmus===
===Moore-Neighbour-Tracing-Alghorithmus===
[[Datei:MooreN.jpg|350px|thumb|right|Der Weg des Bugs]]
Der Grundlegende Ablauf dieses Verfahrens geht nach folgendem Schema vor:
Der Grundlegende Ablauf dieses Verfahrens geht nach folgendem Schema vor:
Als Beispiel dient uns ein Marienkäfer, dessen Weg in der rechten Abbildung zu sehen ist. Der erste Schritt ist auf dem Bild nach dem ersten schwarzen Pixel ( in der Abbildung ist dieser rosa ) zu suchen. In diesem Beispiel wurde in der linken unteren Ecke angefangen den ersten Pixel zu untersuchen, ob dieser schwarz ist. Darauf wird der darüber liegende untersucht. Dies wird so lange fortgeführt bis die linke obere Ecke erreicht ist und darauf folgt die gleiche Prozedur von dem rechten Pixel des Startpixels aus. Dort ist dann in der dritten Zeile ein schwarzer Pixel gefunden worden, worauf nun der zweite Schritt des Alghorithmus beginnt. In diesem zweiten Schritt wird der nächste Punkt des Objektes gesucht. Der Marienkäfer wandert also einen Schritt zurück, aus der Richtung wo er hergekommen ist und geht nun die Nachbarpixel des Startpixels P0 im Uhrzeigersinn ab. Die blaue Linie beschreibt diesen Weg. Wenn der Käfer auf einen schwarzen Pixel stößt ist dies der neue Startpixel P und der zweite Schritt des Alghorithmus wird wiederholt. Dieser Schritt wiederholt sich so oft, bis wieder der erste Startpixel erreicht ist. Nun werden in einem dritten Schritt alle analysierten schwarzen Pixel gesichert. Von dem ersten Startpixel P0 aus können nun weitere Objekte gesucht werden, indem der erkannte Umriss sowie dessen enthaltene Pixel weiß im Bild eingezeichnet werden und wieder mit dem ersten Schritt von P0 aus begonnen wird.
Als Beispiel dient uns ein Marienkäfer, dessen Weg in der rechten Abbildung zu sehen ist. Der erste Schritt ist auf dem Bild nach dem ersten schwarzen Pixel ( in der Abbildung ist dieser rosa ) zu suchen. In diesem Beispiel wurde in der linken unteren Ecke angefangen den ersten Pixel zu untersuchen, ob dieser schwarz ist. Darauf wird der darüber liegende untersucht. Dies wird so lange fortgeführt bis die linke obere Ecke erreicht ist und darauf folgt die gleiche Prozedur von dem rechten Pixel des Startpixels aus. Dort ist dann in der dritten Zeile ein schwarzer Pixel gefunden worden, worauf nun der zweite Schritt des Alghorithmus beginnt. In diesem zweiten Schritt wird der nächste Punkt des Objektes gesucht. Der Marienkäfer wandert also einen Schritt zurück, aus der Richtung wo er hergekommen ist und geht nun die Nachbarpixel des Startpixels P0 im Uhrzeigersinn ab. Die blaue Linie beschreibt diesen Weg. Wenn der Käfer auf einen schwarzen Pixel stößt ist dies der neue Startpixel P und der zweite Schritt des Alghorithmus wird wiederholt. Dieser Schritt wiederholt sich so oft, bis wieder der erste Startpixel erreicht ist. Nun werden in einem dritten Schritt alle analysierten schwarzen Pixel gesichert. Von dem ersten Startpixel P0 aus können nun weitere Objekte gesucht werden, indem der erkannte Umriss sowie dessen enthaltene Pixel weiß im Bild eingezeichnet werden und wieder mit dem ersten Schritt von P0 aus begonnen wird.
===Ausgabe einer Ist-Liste===
Für jedes Objekt hat man nun eine Matrix und deren Länge x(=Umfangslänge). Jetzt wird jede Umfangslänge eines Objektes in Kombination mit dessen Farbe in der Datenbank gesucht und nachdem alle Teile abgeglichen wurden, werden die Seriennummern der Teile in einer Excel-Tabelle ausgegeben.
===Ergebnis===
Die Software ist nunmehr dazu in der Lage, mit einer Fehlerrate von null Prozent ein Teil in 0,73 Sekunden zu erkennen. Diese Zahlen kommen durch zwei Testdurchläufe mit einmal neun und einmal sieben Legoteilen unter der Linse und dem Einsatz des Prozessors Xeon E3-1231 v3 von Intel zustande.
Als Ergebnis kann festgehalten werden, dass die Bildverarbeitungssoftware für des "`Lego Mindstorm Education NXT Base Set (9797)"' mit 431 Teilen abzüglich der Elektronikbauteile nur 5 Minuten und 16 Sekunden für die Berechnung in Anspruch nehmen wird. Bei einer Abdunklung und Schaffung einer gleichmäßigen Beleuchtung, wie in der "`Beschreibung der Hardwarekomponenten"' dargestellt, ist mit keinen Fehlern zu rechnen.


<!--
<!--

Aktuelle Version vom 20. Januar 2015, 22:52 Uhr

Autor: Michael Deitel
Betreuer: Prof. Schneider
Art: Projektarbeit

Thema

Jedes Semester mühen sich die Studierenden mit dem Zählen der Legoteile beim Ausleihen und der Rückgabe. In dieser studentischen Arbeit gilt es eine Maschine zu entwickeln, die Legoteile vereinzelt und diese automatisch zählt.

Ziel

Digitales Zählen aller Legoteile in unter 10 Minuten und Ausgabe eine Soll-Ist Liste.

Aufgabenstellung

  1. Erkennen Sie die Bauteile eines EV3 und NXT Basis- und Ergänzungssets mithilfe einer Kamera (Webcam).
  2. Bildverarbeitung mit Matlab
  3. Die Form der Bauteile muss visuell erkannt und gezählt werden.
  4. Als Ausgabeformat ist eine Soll-Ist-Liste zu erstellen, auf der Fehlteile mit Bestellnummer zur Nachbestellung aufgelistet werden.
  5. Optimierung der Algorithmen auf Echtzeitfähigkeit.
  6. Die Fehlerrate soll bei 0% liegen.
  7. Test und wiss. Dokumentation der Ergebnisse

Objekterkennung mit Matlab

In folgenden Kapiteln werden grundlegende Themen zur Klassifizierung von Legoteilen behandelt. Zum einen wird ein möglicher Hardwareaufbau gezeigt und zum anderen werden Programmabschnitte der Software beschrieben.

Beschreibung der Hardwarekomponenten

Geplanter Hardwareaufbau

Die LEGO-Bauteile stammen aus EV3- und NXT-Basis- und Ergänzungssets und werden in eine Kunststoffkiste umgefüllt. Diese Kiste wird in eine Vorrichtung gestellt, die gekippt werden kann. Durch zunächst leichtes Kippen legen sich die ersten Teile an eine 90 Grad zur offenen Kiste befindlichen Wand, die aus Vorder- und Rückwand besteht, wobei sich Letztere dicht vor einem Förderband befindet. Die mit der Kiste bewegliche Vorderwand fördert mit ihrer Vorderkante vereinzelte LEGO-Teile auf das Förderband. Sowohl die Wände als auch das Förderband haben seitliche Begrenzungen, so dass die Bauteile nicht aus der Maschine fallen können; diese Begrenzungen können außerdem durch Verengen zum weiteren Vereinzeln genutzt werden. Sollte sich dieses Verfahren als nicht erfolgreich erweisen, wäre alternativ eine Vorsortierung durch Sieben denkbar; d. h. aus der Kiste gelangen die Teile in eine Schüttelvorrichtung, welche die Teile durch zunächst feine, später gröbere Löcher auf das o. g. Förderband fallen lässt. Das Kamerasystem besteht aus einer handelsüblichen Webcam mit einer Auflösung von 1920x1080 Pixeln und einer Ringbeleuchtung. Die Pixelanzahl kann noch verringert werden, damit ein geringeres Datenvolumen im Programm verarbeitet werden muss. Die Kamera wird in einer zur Seite und nach oben lichtdichten, aber innen beleuchteten Box über dem Förderband installiert. Diese Box dient zur Herstellung immer identischer Lichtverhältnisse in der Box, damit die von der Kamera aufgenommenen Bilder qualitativ konstant sind und die Maschine unabhängig von wechselnden äußeren Lichtverhältnissen (Sonne, Dunkelheit) zuverlässig arbeiten kann.

Farbanalyse

Binärbild zum weißen Farbbereich

Im ersten Schritt in der Software wird die Farbe analysiert. Jede zu berücksichtigende Farbe bekommt eine Matrix in der eine 1 an einem Bildpunkt gesetzt wird , wenn sich an diesem Punkt die Farbe befindet und eine 0, wenn dies nicht der Fall ist. Für die Farbe "Weiß" ensteht das Binärbild das rechts zu sehen ist.

Flood-Filling

Ergebnis nach dem Flood-Filling

Im nächsten Schritt werden Regionen gefunden und gefüllt in jedem Binärbild zu den einzelnen Farben. Dazu wird durch den Flood-Filling-Alghorithmus zusammenhängende Bereiche erkannt. Wodurch das rechts liegende Bild entsteht.

Moore-Neighbour-Tracing-Alghorithmus

Der Weg des Bugs

Der Grundlegende Ablauf dieses Verfahrens geht nach folgendem Schema vor: Als Beispiel dient uns ein Marienkäfer, dessen Weg in der rechten Abbildung zu sehen ist. Der erste Schritt ist auf dem Bild nach dem ersten schwarzen Pixel ( in der Abbildung ist dieser rosa ) zu suchen. In diesem Beispiel wurde in der linken unteren Ecke angefangen den ersten Pixel zu untersuchen, ob dieser schwarz ist. Darauf wird der darüber liegende untersucht. Dies wird so lange fortgeführt bis die linke obere Ecke erreicht ist und darauf folgt die gleiche Prozedur von dem rechten Pixel des Startpixels aus. Dort ist dann in der dritten Zeile ein schwarzer Pixel gefunden worden, worauf nun der zweite Schritt des Alghorithmus beginnt. In diesem zweiten Schritt wird der nächste Punkt des Objektes gesucht. Der Marienkäfer wandert also einen Schritt zurück, aus der Richtung wo er hergekommen ist und geht nun die Nachbarpixel des Startpixels P0 im Uhrzeigersinn ab. Die blaue Linie beschreibt diesen Weg. Wenn der Käfer auf einen schwarzen Pixel stößt ist dies der neue Startpixel P und der zweite Schritt des Alghorithmus wird wiederholt. Dieser Schritt wiederholt sich so oft, bis wieder der erste Startpixel erreicht ist. Nun werden in einem dritten Schritt alle analysierten schwarzen Pixel gesichert. Von dem ersten Startpixel P0 aus können nun weitere Objekte gesucht werden, indem der erkannte Umriss sowie dessen enthaltene Pixel weiß im Bild eingezeichnet werden und wieder mit dem ersten Schritt von P0 aus begonnen wird.

Ausgabe einer Ist-Liste

Für jedes Objekt hat man nun eine Matrix und deren Länge x(=Umfangslänge). Jetzt wird jede Umfangslänge eines Objektes in Kombination mit dessen Farbe in der Datenbank gesucht und nachdem alle Teile abgeglichen wurden, werden die Seriennummern der Teile in einer Excel-Tabelle ausgegeben.

Ergebnis

Die Software ist nunmehr dazu in der Lage, mit einer Fehlerrate von null Prozent ein Teil in 0,73 Sekunden zu erkennen. Diese Zahlen kommen durch zwei Testdurchläufe mit einmal neun und einmal sieben Legoteilen unter der Linse und dem Einsatz des Prozessors Xeon E3-1231 v3 von Intel zustande. Als Ergebnis kann festgehalten werden, dass die Bildverarbeitungssoftware für des "`Lego Mindstorm Education NXT Base Set (9797)"' mit 431 Teilen abzüglich der Elektronikbauteile nur 5 Minuten und 16 Sekunden für die Berechnung in Anspruch nehmen wird. Bei einer Abdunklung und Schaffung einer gleichmäßigen Beleuchtung, wie in der "`Beschreibung der Hardwarekomponenten"' dargestellt, ist mit keinen Fehlern zu rechnen.


Empfohlene Zusatzkurse

Literatur

Weblinks

Siehe auch

  1. Studentische Arbeiten bei Prof. Schneider
  2. Anforderungen an eine wissenschaftlich Arbeit



→ zurück zum Hauptartikel: Studentische Arbeiten