Anleitung Legoteilzählmaschine: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(142 dazwischenliegende Versionen von 7 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Dies ist ein Unterartikel von der [http://193.175.248.52/wiki/index.php/Legoteil_Z%C3%A4hlmaschine  Legoteil-Zählmaschine], welcher die Anleitung für die Maschine beschreibt.


Dies ist ein Unterartikel von der [http://193.175.248.52/wiki/index.php/Legoteil_Z%C3%A4hlmaschine  Legoteil_Zählmaschine], welcher die Anleitung für die Maschine beschreibt.


= Anleitung Programmstart =  
=Video-Anleitung=
 
Die im Laufe dieses Artikels erklärten Schritte zum Starten der Maschine und Bedienen des GUI sind in diesem [https://www.youtube.com/watch?v=Au0B7vgd3b4 Video] zusammengefasst.
 
 
= Einschalten und Starten des Programms =
 
Vor dem Starten der Legoteil-Zählmaschine müssen einige Voraussetzungen erfüllt sein. Es gilt zu prüfen,
 
ob alle benötigten Komponenten mit dem Rechner verbunden sind, von dem das Programm gestartet werden soll.
 
 
'''Schnittstellen vorbereiten'''
 
1. Stromkabel der Anlage in die Steckerleiste 1 neben dem PC einstecken (vgl. Abbildung 1 und 4)
 
2. USB-Kabel zum Arduino im Schaltschrank an den PC LAB01-16 anschließen (vgl. Abbildung 1)
 
3. USB-Kabel zur Webcam in der Separierungseinheit an den PC LAB01-16 anschließen (vgl. Abbildung 1)
 
4. USB-Kabel zur Webcam in der Erkennungseinheit an den PC LAB01-16 anschließen (vgl. Abbildung 1)
 
5. Sub-D Stecker zur Sortiereinheit zusammen stecken (Schaltschrank und Sortiereinheit) (vgl. Abbildung 2)
 
 
Im Regelfall sollten alle Verbindungen so vorbereitet sein.
 
<gallery widths="300" heights="300">
  Kabelanschluesse.JPG|Abb. 1: Kabelanschlüsse
  Sub_D_Stecker.JPG|Abb. 2: Sub-D Stecker
</gallery>
 
 
'''Energieversorgung'''
 
6. Der Druckluftregler 1 muss auf 4-5 bar eingestellt werden (vgl. Abbildung 3). Er befindet sich an dem Versorgungsgerüst.
 
7. Steckdosenleiste 1 links neben dem Bildschirm muss aktiviert sein (grüner Schalter muss leuchten) (vgl. Abbildung 4)
 
8. Not-Aus Schalter neben dem Schaltschrank muss deaktiviert sein (durch Drehen entriegeln) (vgl. Abbildung 5)
 
9. Hauptschalter am Schaltschrank einschalten (vgl. Abbildung 6)
 
<gallery widths="300" heights="300">
 
  Druckluftregler.JPG|Abb. 3: Druckluftregler
  Steckerleiste.JPG|Abb. 4: Steckerleiste
  Not_Aus_Schalter.JPG|Abb. 5: Not-Aus Schalter
  Hauptschalter_Schaltschrank.JPG|Abb. 6: Hauptschalter Schaltschrank
 
 
</gallery>
'''Systemstart'''
 
10. PC hochfahren
 
11. Anmelden mit .\hshl-user
 
12. Matlab Startdatei befindet sich im Ordner: D:\SVN\Sortiermaschine\SRC\Matlab\START.m
 
12.1 Doppelklick auf die Start.m Datei
 
13. Programm ausführen (RUN)
 
 
Die GUI öffnet sich und die Maschine ist startbereit.
 
Falls Probleme mit der Arduino Kommunikation oder der Kamerabelegung entstehen, bitte in dem Absatz [http://193.175.248.52/wiki/index.php/Anleitung_Legoteilz%C3%A4hlmaschine#Fehler_beheben Fehlerbehebung] nachlesen.
 
Das weitere Vorgehen ist in der [http://193.175.248.52/wiki/index.php/Anleitung_Legoteilz%C3%A4hlmaschine#Anleitung_zur_Bedienung_des_GUI GUI-Anleitung] beschrieben.


Vor dem Starten der Legoteil-Zählmaschine müssen einige Voraussetzungen erfüllt sein. Es gilt zu prüfen, ob alle benötigten Komponenten mit dem Rechner verbunden sind, von dem das Programm gestartet werden soll. Dazu zählen:
* USB-Kabel zum Arduino
* USB-Kabel zur Webcam in der Separierungseinheit
* USB-Kabel zur Webcam in der Erkennungseinheit
Außerdem muss die Anlage an das Stromnetz und die Ventilinsel an eine Druckluftleitung angeschlossen sein.


Vor dem Start gilt es außerdem zu überprüfen, ob die Notschalter der Anlage deaktiviert sind und ob der Linearläufer in seine Initialposition gebracht wurde. Ist dies nicht der Fall ist dies durchzuführen. Anschließend ist der Luftdruck, der an der Ventilinsel anliegt einzustellen. Empfohlen werden zwischen 3 und 5 Bar.
Der Start des Programms wird durch ausführen der Datei [https://svn.hshl.de/svn/MTR_SDE_Praktikum_2015/trunk/SRC/Matlab/StartSortiermaschine.m StartSortiermaschine.m] ausgelöst. Es öffnet sich eine Eingabemaske, in der die zu zählenden Baukästen ausgewählt werden oder zum Teach_In gewechselt werden kann. Nach dessen Bestätigung sind die Anzahlen der Legoteile anzugeben, die nicht durch die Maschine gezählt werden können. Anschließend startet die Maschine das automatische Zählen. Der Inhalt der Legokiste, abzüglich der manuell gezählten Teile, ist in den Bunker zu geben. Da die Separierungseinheit noch nicht zuverlässig funktioniert und noch nicht in den Gesamtprozess integriert ist, sollten zunächst nur kleine Mengen in den Bunker geschüttet werden und eine manuelle Separierung vorgenommen werden. Wenn der Bunker leergelaufen sein sollte, sind nicht erkannte Teile in den Bunker zurückzuführen (Aus Sicherheitsgründen darf dies in dem aktuellen Status nicht bei einer laufenden Maschine durchgeführt werden!). Ist der Zählprozess durchlaufen, kann die Zählung vom Anwender mit der ESC-Taste beendet werden. Es wird eine Inventur- sowie eine Fehlteileliste im Tool Excel ausgegeben. Außerdem werden Motoren und LEDs ausgeschaltet und der Linearläufer auf Initialposition gefahren. Nach Gebrauch der Anlage ist der Druck der Druckluftleitung herunterzuregeln und die Anlage vom Strom zu trennen.


Die Schritte im Allgemeinen:
# Vorbereitung
## LED-Stecker anschließen
## Hauptstecker anschließen
## Hauptschalter betätigen
<br />
<br />
[[Datei:Hauptschalter ausgeschaltet.JPG|300px|thumb|links|Hauptschalter im ausgeschalteten Zustand]]
<ref name="Autor: Eidhoff"> Autor Marc Eidhoff</ref>
[[Datei:Hauptschalter eingeschaltet.JPG|300px|thumb|rechts|Hauptschalter im eingeschalteten Zustand]]
<ref name="Autor: Brandt"> Autor Tobias Brandt</ref>
<ref name="Autor: Bartnick"> Autor Madlen Bartnick</ref>
<ref name="Autor: Müller"> Autor Torben Müller</ref>
<br />
<br />
# Matlab Programm öffnen
## unter SVN\MTR_SDE_Praktikum_2015\SRC\Matlab "StartSortiermaschine.m" öffnen
## Programm starten
## Sollte die Datenbank nicht richtig konfiguriert werden, muss wie folgt vorgegangen werden:
###Unter Systemsteuerung\System und Sicherheit\Verwaltung "Datenquellen(ODBC)" auswählen.
###Unter dem Reiter Benutzer-DSN auf "Hinzufügen" MYSQL ODBC 5.3 ANSI Treiber auswählen.
###Bei "Name" Lego eintragen, bei Server localhost.
# Baukasten in der GUI auswählen
# Handgezählte Teile eintragen
# Automatischer Zählprozess
## Esc-Taste betätigen zur Beendigung des automatischen Zählprozess
# Motoren werden automatisch ausgeschaltet
# Inventurliste wird ausgegeben


= Anleitung zur Bedienung des GUI =
= Anleitung zur Bedienung des GUI =
Das Programm wird gestartet mit der Funktion StartSortiermaschine. Nach dem Start vergehen einige Sekunden, in denen die Kamerakalibrierung eingestellt wird, danach erscheint das Hauptfenster, indem man zwischen Teach_In und der Sortierung wählen kann.
 
<br />
Nach dem Starten des Programmes erscheint das Hauptfenster (vgl. Abbildung 7), in dem zwischen Sortierung, Anlernen und Baukasten bearbeiten gewählt werden kann.
[[Datei:Sortiermaschine Hauptbildschirm.PNG|300px|thumb|zentriert|Hauptbildschirm mit der Auswahl zwischen Teach_In um Teile anzulernen und Hauptfunktion, um die Sortierung zu starten]]
 
<br />
[[Datei:Sortiermaschine Hauptbildschirm.PNG|1200px|thumb|zentriert|Abb. 7: Hauptbildschirm mit der Auswahl zwischen Anlernen, um Teile anzulernen, Teile sortieren, um die Sortierung zu starten und Baukasten bearbeiten, um neue Kästen hinzuzufügen, und bestehende Kästen zu bearbeiten]]
Ein Klick auf den Button "Hauptfunktion" ruft das nächste Auswahlmenü auf.  
 
<br />
== Sortierfunktion starten==
[[Datei:Hauptfunktion Baukastenauswahl.PNG|300px|thumb|zentriert|Auswahl der vorhandenen Baukästen]]
 
<br />
Ein Klick auf den Button '''Teile sortieren''' ruft das nächste Auswahlmenü auf (vgl. Abbildung 8). Dort können die Baukästen ausgewählt werden, in die später sortiert werden soll. Es kann zurzeit zwischen den Sets 45544 (Grundset) und 45560 (Erweiterung) gewählt werden.
Dort können die Baukästen ausgewählt werden, in die später sortiert werden soll. Zurzeit ist es möglich, mehrere Kästen gleichzeitig auszuwählen, allerdings wird es bei der Sortierung später nur möglich sein, einen einzigen Baukasten einzulegen. Daher sollte hier erstmal nur ein Kasten ausgewählt werden. Es kann dabei zwischen den Sets 45544 und 45560 gewählt werden.
 
<br />
[[Datei:Hauptfunktion Baukastenauswahl.PNG|1200px|thumb|zentriert|Abb. 8: Auswahl der vorhandenen Baukästen]]
Ein Klick auf den Button "Beenden" beendet das Programm nach der Abfrage, ob auch wirklich beendet werden soll. Unter "Baukasten bearbeiten" können die Sets bearbeitet werden. Ist die Auswahl getätigt, kann sie mit "weiter" bestätigt werden. Im letzten Menu können die vorsortierten Teile eingetragen werden, die zu sperrig für die Maschine sind oder nicht gut erkannt werden.
 
<br />
 
[[Datei:Hauptfunktion Manuelles Zählen.PNG|300px|thumb|zentriert|Auswahl der vorhandenen Baukästen]]
Nach dem Auswählen eines Kastens erscheint eine Tabelle (vgl. Abbildung 9). Unter dem Reiter '''Legoteil ID''' sind die einzelnen Teile mit der entsprechenden Seriennummer hinterlegt. Unter dem Reiter '''Soll-Anzahl''' steht die Soll-Anzahl des jeweiligen Teiles in dem gewählten Kasten und bei '''Gezählt''' sind die von Hand abgezählten Teile einzutragen (siehe Abschnitt [http://193.175.248.52/wiki/index.php/Anleitung_Legoteilz%C3%A4hlmaschine#Teile_h.C3.A4ndisch_vorsortieren Teile vorsortieren]). Dies bietet sich für große Teile wie Motoren und den EV3 Hauptstein an. Die eingetragenen Zahlen werden am Ende in der Inventurliste zu der Anzahl der automatisch erkannten Teile addiert.
<br />
 
Unter "Bauteil-ID" sind die einzelnen Teile mit der entsprechenden ID hinterlegt. Unter "Anzahl" steht die Soll-Anzahl und bei "gezählt" sind die von Hand abgezählten Teile einzutragen. Der Baukasten kann mit "zurück zur Baukastenauswahl" neu ausgewählt werden, ansonsten startet das Programm mit "speichern und weiter". Die Maschine nimmt dann ihre Arbeit auf und die Laufbänder werden eingeschaltet.
Ein Klick auf den Button '''Programm beenden''' beendet das Programm nach der Abfrage, ob auch wirklich beendet werden soll. '''Zurück zum Hauptmenü''' führt zurück zu dem Startbildschirm des Programmes und mit '''Sortierung starten''' kann die aktuelle Auswahl gespeichert und das Sortieren gestartet werden. Nach einer zu bestätigenden Warnmeldung zur Lautstärke und dem Hinweis zum entfernen von der Anlage nimmt die Maschine ihre Arbeit auf.
<br />
 
<br />
[[Datei:Vorsortierung per GUI.PNG|1200px|thumb|zentriert|Abb. 9: Eintragen der händisch vorsortieren Teile in die jeweilige Zeile der Tabelle]]
Wenn die Maschine nicht zählen und sortieren, sondern neue Teile eingeteacht werden sollen, kann das über dem Hauptbildschirm mit dem Button "Teach_In" gemacht werden.  
 
<br />
 
[[Datei:Teach_In GUI.PNG|300px|thumb|zentriert|Eingabe der Lego-ID im Teach_In-Modus]]
Zuerst wird die Kamerakalibrierung ausgeführt. Hierbei werden die beiden Kameras parametriert und anschließend ein Testbild mit einem Kalibrierbild vergleichen um sicherzustellen, dass alle Parameter korrekt gesetzt sind. Es kann vorkommen, dass die Kalibrierung ein bis zwei Minuten in Anspruch nimmt, sollte aber im Regelfall nach 10-20 Sekunden beendet sein. Falls die Kalibrierung nicht erfolgreich durchläuft oder für längere Zeit keinen Fortschritt erzieht, bitte in dem Absatz [http://193.175.248.52/wiki/index.php/Anleitung_Legoteilz%C3%A4hlmaschine#Fehler_beheben Fehlerbehebung] nachlesen.  
<br />
 
Das neue Fenster fragt den Benutzer nach einer Lego-ID, diese ist auf den Deckblättern des Legokastens zu finden. Unter dieser ID werden die Merkmale des entsprechenden Legoteils gespeichert. Es ist empfehlenswert, das gleiche Legoteil mehrmals in verschiedenen Positionen anzulernen. Dafür kann die gleiche ID einfach erneut eingegeben werden, nachdem das vorherige Teil gespeichert wurde.  
 
<br />
Nach der Kalibrierung wird das Sortierungshauptfenster geöffnet, wo Informationen zu den erkannten Teilen und die Bilder der Kameras angezeigt werden (vgl. Abbilgung 10). Außerdem nimmt die Anlage nun ihren Betriebszustand auf und die Förderbänder starten.
Nach der Eingabe der ID erscheint ein neues Fenster.
 
<br />
[[Datei:Sortierungshauptscreen.png|1200px|thumb|zentriert|Abb. 10: Hauptbildschirm der Sortierung mit Kamerabildern und Informationen über die erkannten Legoteile]]
[[Datei:Teach_In GUI 2.PNG|300px|thumb|zentriert|Das Teach_In-Menu. Escape zum Beenden, Enter um ein Foto zu schießen, Space um das Bild auszuwerten, x um das Teil mit den Düsen auszuschießen, m um den Motor an- bzw. auszuschalten (falls mehrere Teile auf dem Band liegen, die angelernt werden sollen)]]
 
<br />
{|class="wikitable"
In dem Fenster ist die Aufnahme der Kamera zu sehen. In der Abbildung oben sieht man das Legoteil, das gerade angelernt werden soll. Um ein verwertbares Bild zu erhalten, muss zunächst die Enter-Taste gedrückt werden. Anschließend kann das Teil mit der Leertaste ausgewertet werden. Es erscheint folgendes neues Fenster:
|-
<br />
|Element
[[Datei:Teach_In GUI 3.PNG|300px|thumb|zentriert|Binärbild des auszuwertenden Legoteils]]
|Funktion
<br />
|-
In dem Fenster ist das Binärbild des Legoteils zu sehen. An dieser Stelle kann überprüft werden, ob das Teil mit den Einstellungen gut erkannt wird. Es kann bei vereinzelten Teilen dazu kommen, dass sie nicht hundertprozentig erkannt werden. Dabei ist es trotzdem möglich, dass genug Informationen gesammelt wurden, um eine eindeutige Identifzierung gewährleisten zu können. Bei Unsicherheiten kann das Teil über die Sortierfunktion getestet werden und im Einzelfall über die Verwertbarkeit entschieden werden. Sollte das Legoteil nicht sicher erkannt werden, kann es vorsortiert und die Anzahl per Hand eingetragen werden.  
|1
<br />  
|Zeigt das Auflichtbild des Legoteiles, welches aktuell erkannt wird
Nachdem das Teil mit der Leertaste ausgewertet wurde, wird es in der SQL-Datenbank gespeichert und kann sofort erkannt werden, vorausgesetzt, dass ausreichend Positionen angelernt wurden. Die Teile, sowie Informationen über die Kästen und deren Inhalte sind in der SQL-Datenbank hinterlegt. Zugreifen kann man auf diese über das XAMPP Control Panel under dem Punkt Admin der MySQL-Zeile.
|-
<br />
|2
[[Datei:XAMPP Control Panel.PNG|500px|thumb|zentriert|Öffnen der SQL-Datenbank über das XAMPP Control Panel]]
|Zeigt das Durchlichtbild des Legoteiles mit den erkannten Löchern
|-
|3
|Zeigt die ermittelten Merkmale des Legoteiles und die daraus resultierende Legoteile-ID
|-
|4
|Zeigt ein farbiges Livebild des Förderbandes in der Seperierung
|-
|5
|Zeigt ein Livebild der Seperierung in binärform, wo alle erkannten Teile auf dem Förderband angezeigt werden und die Ansteuerung der Luftdüsen visualisiert wird
|}
 
 
Mit der Taste '''Esc''' kann die Sortierung wieder beendet werden. Ein letztes Fenster bestätigt das Beenden und ermöglicht, die automatisch generierten Inventur- und Fehlteillisten zu öffnen. Für mehr Information siehe Absatz [http://193.175.248.52/wiki/index.php/Anleitung_Legoteilz%C3%A4hlmaschine#Inventur-_und_Fehlteillisten Fehlteilliste].
 
=== Teile händisch vorsortieren ===
 
Jedes Legoteil besitzt eine individuelle Legoteile-ID. Diese kann dem Deckblatt des jeweiligen Kasten entnommen werden (vgl. Abbildung 11/12).
 
<gallery widths="600" heights="400">
    BasissetTeileIDs.jpg|Abb. 11: Das Deckblatt des Basissets (45544)
    ErweiterungssetIDs.jpg|Abb. 12: Das Deckblatt des Erweiterungssets (45560)
</gallery>
 
Eine [https://svn.hshl.de/svn/MTR_SDE_Praktikum_2015/trunk/Dokumentation/32_Legoteile/Teileunterst%C3%BCtzung%20und%20manuelle%20Vorsortierung.xlsx Excel-Liste] enthält die Informationen, welche Teile händisch sortiert werden müssen. Wird also ein kompletter Kasten sortiert, so müssen zuerst die händisch sortierten Teile rausgesucht werden und über die Bilder auf dem Deckblatt die zugehörgen ID's ermittelt werden. Danach können in dem Prozess zum Starten der Sortierung die gezählten Mengen in die Oberfläche eingetragen werden (vgl. Abbildung 9). Nach dem Beenden der Sortierung werden die händisch gezählten Mengen auf die autpmatisch gezählten Mengen addiert und man kann eine komplette Inventur-/Fehlteilliste erhalten
 
=== Inventur- und Fehlteillisten ===
 
Die Inventur- und Fehlteillisten werden nach dem Beenden des Programmes automatisch erstellt und in dem Ordner [https://svn.hshl.de/svn/MTR_SDE_Praktikum_2015/trunk/SRC/Matlab/Output Output] gespeichert.
 
Die Inventurliste zeigt die Menge alle gezählten und eventuell händisch vorsortierten Teile an. Jedes Legoteil für den ausgewählten Kasten wird dort aufgeführt und jeweils mit der Soll-Menge versehen, die im Kasten enthalten ist und der Ist-Menge, also wie viel von der Anlage und manuell gezählt wurde. Zusätzlich wird am Ende eine Prozentzahl errechnet die aussagt, wie viel Prozent der untersuchten Teile nicht erkannt wurden und somit auch nicht in der Inventurliste auftauchen. Diese Zahl ist leicht beeinflusst von doppelten Erkennungen oder einer fehlerhaften Erkennung mit mehreren Teilen.
 
Die Fehlteiiliste ist effektiv das Gegenteil der Inventurliste und zeigt an, wie viele Teile fehlen, damit der Kasten komplett ist. Zusätzlich ist die Liste so erstellt, dass sie dem üblichen Format zum Bestellen an der Hochschule Hamm-Lippstadt entspricht und somit direkt für den Nachbestellprozess verwendet werden kann.
 
<br/>
<ref name="Autor: Müller"> Autor Torben Müller</ref>
 
== Anlernen von neuen Teilen ==
Um ein neues Teil in die Datenbank der Sortiermaschiene aufzunehmen oder ein bestehendes Teil aus zusätzlichen Perspektiven erkennen zu können, kann das Teil angelernt werden. Dazu muss die Funktion '''Teile anlernen''' im Startbildschirm ausgewählt werden (vgl. Abbildung 7). Nach der Kalibrierung der Kameras öffnet sich das Startfenster des Anlernprozesses. Falls es Probleme mit der Kamerakalibrierung gibt bitte den Absatz [http://193.175.248.52/wiki/index.php/Anleitung_Legoteilz%C3%A4hlmaschine#Fehler_beheben Fehlerbehebung] beachten. Nun kann die Legoteile-ID des Teiles eingebenen werden und mit '''Weiter zum Anlernen''' bestätigt werden (vgl. Abbildung 13). Für Infos zu den jeweiligen ID's der Teile bitte im Abschnitt [http://193.175.248.52/wiki/index.php/Anleitung_Legoteilz%C3%A4hlmaschine#Teile_h.C3.A4ndisch_vorsortieren Teile vorsortieren] nachlesen.
<gallery widths=300 heights=300>
    Teach_In GUI.PNG|Abb. 13: Eingabe der Legoteile-ID des Teiles, welches angelernt werden soll
</gallery>
 
Nun können ein oder mehrere Bilder des gleichen Legoteils aufgenommen werden. Dazu muss das entsprechende Teil in die Bildverarbeitungsbox gelegt werden und dann mit Hilfe der Taste '''Enter''' ein Bild aufgenommen werden (vgl. Abbildung 14). Bei Bedarf kann das Teil jetzt verschoben oder gedreht werden um mehrere Perspektiven in einem Prozess zu bearbeiten. Jeweils immer eine neue Perspektive mit '''Enter''' aufnehmen. Die Taste '''Esc''' beendet das aktuelle Anlernen und ermöglicht die Eingabe einer neuen Legoteile-ID. Am Ende muss einmal mit der Taste '''Space''' bestätigt werden, um die gespeicherten Bilder auszuwerten.
<gallery widths=500 heights=500>
    Teach_In GUI 2.PNG|Abb. 14: Anlernbild eines Teiles. Mit '''Space''' kann dieses Bild des Teiles ausgewertet werden
</gallery>
 
Falls das Programm in den aufgenommenen Bildern unterschiedliche Farben erkennt, beendet der Anlernprozess und eine Nachricht wird in das Komandofenster von Matlab geschrieben, dass mehrere Farben erkannt wurden. Das Programm fällt zurück auf das Startfenster des Anlernprozesses und die ID kann erneut eingegeben werden, um eine neue Reihe von Bildern zu erstellen
 
 
In dem folgenden Fenster ist das Binärbild des Legoteils zu sehen (vgl. Abbildung 15). Aus diesem Binärbild werden die Merkmale des Teiles ermittelt. An dieser Stelle kann überprüft werden, ob das Teil wurde. Es kann bei vereinzelten Teilen dazu kommen, dass diese nicht hundertprozentig erkannt werden. Dabei ist es trotzdem möglich, dass genug Informationen gesammelt wurden, um eine eindeutige Identifizierung gewährleisten zu können. Bei Unsicherheiten kann das Teil über die Sortierfunktion getestet werden und im Einzelfall über die Verwertbarkeit der Anlernung entschieden werden. Sollte das Legoteil nicht sicher erkannt werden, kann es vorsortiert und die Anzahl per Hand eingetragen werden.  
 
Sind alle Binärbilder ausreichend und die ermittelte Farbe, welche in der weißen Textbox angezigt wird, auch richtig, so kann durch erneutes drücken der Taste '''Space''' das Teil mit seinen ermittelten Merkmalen in der Datenbank abgespeichert werden.
<gallery widths=500 heights=500>
    Teach_In GUI 3.PNG|Abb. 15: Das Binärbild des Teiles und die erkannte Farbe des Teiles werden angezeigt zur Bestätigung
</gallery>
 
Zuletzt wird ein Bild zu der eingegebenen Legoteile-ID angezeigt, sodass sichergegangen werden kann, dass die richtige ID verwendet wurde (vgl. Abbildung 16). Der Anlernprozess ist beendet und mit drücken der Taste '''Esc''' kann ein neues Teil angelernt werden.
<gallery widths=300 heights=300>
    Teach_In GUI 4.PNG|Abb. 16: Ein Standartbild wird abhängig von der eingegebenen ID angezeigt.
</gallery>
 
<br/>
<ref name="Autor: Müller"> Autor Torben Müller</ref>
 
== Baukasten bearbeiten ==
Neue Sets können über die Funktion "Baukasten bearbeiten" in dem Haupt-GUI hinzugefügt werden.
[[Datei:Baukasten bearbeiten.JPG|1500px|thumb|zentriert|Abb. 18: Hier besteht die Möglichkeit, neue Sets einzufügen oder bestehende Sets/Teile zu löschen]]
 
=== Neuen Kasten anlegen ===
In dem Bereich '''Neuen Baukasten erstellen''' kann ein neuer Legokasten angelegt werden. Im 1. Schritt wird dafür die neue Set-ID in das entsprechend gekennzeichnete Feld eingegeben. Im nächsten Schritt wird im Feld '''Anzahl der Teile im Baukasten''' die Anzahl der Teile in dem neuen Kasten eingetragen. Mit Drücken des Buttons '''Speichern & weiter''' wird eine eingegebene Teileanzahl an Zeilen zur Verfügung gestellt, in die dann die Daten der einzelnen Teile eingetragen werden können. Eine Änderung an der Kasten-ID und der Teileanzahl ist noch möglich, dazu einfach erneut den Button "Speichern & weiter", der jetzt seinen Namen geändert hat.
 
Nun können in die Tabelle alle Teile eingetragen werden, die zu dem eben erstellten Kasten gehören. Zusätzlich dazu wird die Anzahl und die Fachnummer des Teiles eingegeben. Am Ende wird der Kasten mit dem Knopf '''Auswahl speichern''' in der Datenbank gespeichert
 
=== Bestehende Kästen verwalten ===
In dem Bereich '''Bestehenden Baukasten bearbeiten''' kann ein vorhandener Baukasten bearbeitet werden. Zuerst muss hierfür aus der Liste unter Punkt 1 ein Kasten gewählt werden. Unter Punkt 2 kann dann bei Bedarf ein spezielles Teil aus dem Baukasten gelöscht werden mit indem die Funktion '''Aus dem Baukasten löschen''' aktiviert wird. Diese Funktion entfernt nur die Zugehörigkeit dieses Teiles zu dem Kasten, die Merkmale des speziellen Teiles bleiben erhalten. Mit der Funktion '''Komplett löschen''' kann sowohl die Zugehörigkeit, als auch die kompletten Eigenschaften des Teils gelöscht werden. Die Funktion '''Baukasten löschen''' löscht wiederum den unter 1 selektierten Baukasten, behält aber die Merkmale der einzelnen Teile in dem Kasten.
 
Unter Punkt 3 kann der Inhalt eines ausgewählten Kastens bearbeitet werden. Hier können ID's, Mengen oder Fachnummern einzelner Teile verändert und gespeichert werden.
 
=== Datenbank verwalten ===
In dem Berich Datenbank pflegen kann entweder die aktuelle Datenbank über den Knopf "Datenbank abspeichern" exportiert und somit lokal abgespeichert oder über den Knopf "Datenbank laden" eine lokal gespeicherte Datenbank importiert und in den MySQL Server eingefügt werden.
 
<br/>
<ref name="Autor: Müller"> Autor Torben Müller</ref>
 
= Zugriff auf die SQL-Datenbank =
Die Teile, sowie Informationen über die Kästen und deren Inhalte sind in der SQL-Datenbank hinterlegt. Zugreifen kann man auf diese über das XAMPP Control Panel unter dem Punkt Admin der MySQL-Zeile (vgl. Abbildung 19).
<gallery widths=500 heights=300>
    XAMPP Control Panel.PNG|Abb. 19: Öffnen der SQL-Datenbank über das XAMPP Control Panel
</gallery>
 
Es öffnet sich ein Fenster im Browser. In der Navigation auf der linken Seite sind die Datenbanken '''kasten''', '''kastendetails''' und '''legoteileliste''' zu finden. Die Datenbank '''kasten''' speichert, welche Teile zu welchem Kasten gehören. Die Datenbank '''kastendetails''' speichert die Kasten-IDs und einen zusätzlichen beschreibenden Text zu jedem Kasten. Die Datenbank '''legoteileliste''' speichert die Merkmale jedes Legoteiles, wobei ein Eintrag einem Bild beim Anlernen entspricht. So kommt es vor, dass zu einer Teile-ID eine Vielzahl von Einträgen bestehen, die jedoch die Erkennung des Teiles eher verbessern als verschlechtern.
 
<br />
<br />
<ref name="Autor: Müller"> Autor Torben Müller</ref>
= Nützliche SQL-Befehle =
Die Datenbankverbindung wird gesetzt mit dem Befehl
<source lang=matlab>
DatenbankVerbindung = database.ODBCConnection('Lego','root','');
</source>
Der auszuführende Befehl kann als String gespeichert werden, hier in sqlquery. Der Befehl exec sendet dann den Befehl an die Datenbank und speichert den Rückgabewert in curs, der mit fetch ausgelesen wird. Mit curs.Data kann auf den Rückgabewert der SQL-Datenbank zugegriffen werden.
<source lang=matlab>
sqlquery = strcat('Select LegoteileID from kasten where KastenID = ', num2str(Grundset));
curs = exec(DatenbankVerbindung, sqlquery);
curs = fetch(curs);
GrundsetIDs = curs.Data;
</source>
<br/>
Nützliche Befehle, um die Datenbank zu manipulieren und Werte zu erhalten:
<br/>
*Eintrag aus Datenbank beziehen
SELECT  'Ausgabe Gewünschter Spaltenname'  FROM  'Gewünschte Datenbank(kasten, kastendetails, legoteileliste)'  WHERE  'Eingabe Gewünschte Spalte'  =  'Abfrage des gewünschten Eintrags'
<source lang=matlab>
'Select LegoteileID from kasten where KastenID = 45544'
</source>
*Eintrag in Datenbank bearbeiten
UPDATE  'Spaltenname'    SET  'Gewünschtes Set' WHERE 'Gewünschter Spaltenname'
<source lang=matlab>
'UPDATE legoteileliste SET kasten WHERE id=2456'
</source>
<br/>
<ref name="Autor: Auf der Landwehr"> Autor Jan Auf der Landwehr</ref>
<ref name="Autor: Auf der Landwehr"> Autor Jan Auf der Landwehr</ref>
= Fehler beheben = 
=== SQL Datenbank starten ===
[[Datei:XAMPP.PNG|500px|thumb|Abb. 20: XAMPP Control Panel]]
Falls sich nach dem Start z.B. "Teilesortieren" das XAMPP Control Panel nicht gestartet hat (startet üblicherweise minimiert), ist der SQL Server nicht betriebsbereit.
In  diesem Fall muss das Programm '''XAMPP Control Panel''' gestartet werden. Die Services Apache und MySQL müssen wie in der Abbildung 20 gestartet sein.
===Kamerabilder vertauscht===
Falls die Kamerabilder der Vorsortierung und der Bilderkennungsbox vertauscht sind können die KameraIDs in folgenden Dateien neu zugewiesen werden:
    KameraKalibrierungBild.m Zeile 41
    KameraKalibrierungSep.m    Zeile 31
===Kalibrierung beendet nicht===
Falls die Kamerakalibrierung für längere Zeit (über 3 Minuten) keinen Fortschritt erzielt, liegt ein Problem vor. Zuerst sollte sichergestellt werden, dass die Bildbox und die Seperierungsbox leer sind, denn liegengebliebene Teile verhindern eine Kalibrierung. Außerdem sollte sichergestellt werden, dass beide Kameras mit dem Computer verbunden sind. Zuletzt kann das Umgebungslicht angepasst werden (normalerweise ist Raumbeleuchtung an).
=== Serielle Kommunikation ===
Das Programm stürzt ab in run_serial.m oder hängt sich auf in einem halb-aktiven Zustand: Die serielle Verbindung wurde unterbrochen oder gestört. Zuerst das Programm mit der Tastenkombination '''Ctrl+C''' beenden und dann die Datei ManuellerStop.m ausführen. Als nächstes den Arduino vom Computer trennen und erneut verbinden. Nun das Programm wieder starten
===Kommunikationsproblem mit dem Arduino===
Falls ein Kommunikationsfehler mit dem Arduino auftritt, sollte ermittelt werden, ob der richtige COM-Port im Programm eingestellt ist. Es muss der Port des Arduino ermittelt werden und dann an folgenden Stellen bearbeitet werden:
    COM-Port in folgenden Dateien ändern:
    InitialisierungKamerasArduino.m Zeile 33 Port = 'COM3';
    ManuellerStopp.m                 Zeile 19 Port = 'COM3';
= Computer neu aufsetzen = 
In dem Fall, dass das System neu aufgestzt werden muss wurde folgende Anleitung erstellt, um die Verbindung zwischen Matlab und der Datenbank wiederherzustellen: [https://svn.hshl.de/svn/MTR_SDE_Praktikum_2015/trunk/Dokumentation/33_Datenbank/Datenbank%20mit%20Matlab%20verbinden.docx Anleitung]
Zusätzlich muss eine Matlab-Version installiert werden (zuletzt lauffähig gewesen mit R2017b) mit den folgenden Toolboxen:
*Image Processing Toolbox
*Database Toolbox


= Autoren =
= Autoren =
<references />
<references />

Aktuelle Version vom 26. Januar 2019, 22:29 Uhr

Dies ist ein Unterartikel von der Legoteil-Zählmaschine, welcher die Anleitung für die Maschine beschreibt.


Video-Anleitung

Die im Laufe dieses Artikels erklärten Schritte zum Starten der Maschine und Bedienen des GUI sind in diesem Video zusammengefasst.


Einschalten und Starten des Programms

Vor dem Starten der Legoteil-Zählmaschine müssen einige Voraussetzungen erfüllt sein. Es gilt zu prüfen,

ob alle benötigten Komponenten mit dem Rechner verbunden sind, von dem das Programm gestartet werden soll.


Schnittstellen vorbereiten

1. Stromkabel der Anlage in die Steckerleiste 1 neben dem PC einstecken (vgl. Abbildung 1 und 4)

2. USB-Kabel zum Arduino im Schaltschrank an den PC LAB01-16 anschließen (vgl. Abbildung 1)

3. USB-Kabel zur Webcam in der Separierungseinheit an den PC LAB01-16 anschließen (vgl. Abbildung 1)

4. USB-Kabel zur Webcam in der Erkennungseinheit an den PC LAB01-16 anschließen (vgl. Abbildung 1)

5. Sub-D Stecker zur Sortiereinheit zusammen stecken (Schaltschrank und Sortiereinheit) (vgl. Abbildung 2)


Im Regelfall sollten alle Verbindungen so vorbereitet sein.


Energieversorgung

6. Der Druckluftregler 1 muss auf 4-5 bar eingestellt werden (vgl. Abbildung 3). Er befindet sich an dem Versorgungsgerüst.

7. Steckdosenleiste 1 links neben dem Bildschirm muss aktiviert sein (grüner Schalter muss leuchten) (vgl. Abbildung 4)

8. Not-Aus Schalter neben dem Schaltschrank muss deaktiviert sein (durch Drehen entriegeln) (vgl. Abbildung 5)

9. Hauptschalter am Schaltschrank einschalten (vgl. Abbildung 6)

Systemstart

10. PC hochfahren

11. Anmelden mit .\hshl-user

12. Matlab Startdatei befindet sich im Ordner: D:\SVN\Sortiermaschine\SRC\Matlab\START.m

12.1 Doppelklick auf die Start.m Datei

13. Programm ausführen (RUN)


Die GUI öffnet sich und die Maschine ist startbereit.

Falls Probleme mit der Arduino Kommunikation oder der Kamerabelegung entstehen, bitte in dem Absatz Fehlerbehebung nachlesen.

Das weitere Vorgehen ist in der GUI-Anleitung beschrieben.



[1] [2] [3] [4]

Anleitung zur Bedienung des GUI

Nach dem Starten des Programmes erscheint das Hauptfenster (vgl. Abbildung 7), in dem zwischen Sortierung, Anlernen und Baukasten bearbeiten gewählt werden kann.

Abb. 7: Hauptbildschirm mit der Auswahl zwischen Anlernen, um Teile anzulernen, Teile sortieren, um die Sortierung zu starten und Baukasten bearbeiten, um neue Kästen hinzuzufügen, und bestehende Kästen zu bearbeiten

Sortierfunktion starten

Ein Klick auf den Button Teile sortieren ruft das nächste Auswahlmenü auf (vgl. Abbildung 8). Dort können die Baukästen ausgewählt werden, in die später sortiert werden soll. Es kann zurzeit zwischen den Sets 45544 (Grundset) und 45560 (Erweiterung) gewählt werden.

Abb. 8: Auswahl der vorhandenen Baukästen


Nach dem Auswählen eines Kastens erscheint eine Tabelle (vgl. Abbildung 9). Unter dem Reiter Legoteil ID sind die einzelnen Teile mit der entsprechenden Seriennummer hinterlegt. Unter dem Reiter Soll-Anzahl steht die Soll-Anzahl des jeweiligen Teiles in dem gewählten Kasten und bei Gezählt sind die von Hand abgezählten Teile einzutragen (siehe Abschnitt Teile vorsortieren). Dies bietet sich für große Teile wie Motoren und den EV3 Hauptstein an. Die eingetragenen Zahlen werden am Ende in der Inventurliste zu der Anzahl der automatisch erkannten Teile addiert.

Ein Klick auf den Button Programm beenden beendet das Programm nach der Abfrage, ob auch wirklich beendet werden soll. Zurück zum Hauptmenü führt zurück zu dem Startbildschirm des Programmes und mit Sortierung starten kann die aktuelle Auswahl gespeichert und das Sortieren gestartet werden. Nach einer zu bestätigenden Warnmeldung zur Lautstärke und dem Hinweis zum entfernen von der Anlage nimmt die Maschine ihre Arbeit auf.

Abb. 9: Eintragen der händisch vorsortieren Teile in die jeweilige Zeile der Tabelle


Zuerst wird die Kamerakalibrierung ausgeführt. Hierbei werden die beiden Kameras parametriert und anschließend ein Testbild mit einem Kalibrierbild vergleichen um sicherzustellen, dass alle Parameter korrekt gesetzt sind. Es kann vorkommen, dass die Kalibrierung ein bis zwei Minuten in Anspruch nimmt, sollte aber im Regelfall nach 10-20 Sekunden beendet sein. Falls die Kalibrierung nicht erfolgreich durchläuft oder für längere Zeit keinen Fortschritt erzieht, bitte in dem Absatz Fehlerbehebung nachlesen.


Nach der Kalibrierung wird das Sortierungshauptfenster geöffnet, wo Informationen zu den erkannten Teilen und die Bilder der Kameras angezeigt werden (vgl. Abbilgung 10). Außerdem nimmt die Anlage nun ihren Betriebszustand auf und die Förderbänder starten.

Abb. 10: Hauptbildschirm der Sortierung mit Kamerabildern und Informationen über die erkannten Legoteile
Element Funktion
1 Zeigt das Auflichtbild des Legoteiles, welches aktuell erkannt wird
2 Zeigt das Durchlichtbild des Legoteiles mit den erkannten Löchern
3 Zeigt die ermittelten Merkmale des Legoteiles und die daraus resultierende Legoteile-ID
4 Zeigt ein farbiges Livebild des Förderbandes in der Seperierung
5 Zeigt ein Livebild der Seperierung in binärform, wo alle erkannten Teile auf dem Förderband angezeigt werden und die Ansteuerung der Luftdüsen visualisiert wird


Mit der Taste Esc kann die Sortierung wieder beendet werden. Ein letztes Fenster bestätigt das Beenden und ermöglicht, die automatisch generierten Inventur- und Fehlteillisten zu öffnen. Für mehr Information siehe Absatz Fehlteilliste.

Teile händisch vorsortieren

Jedes Legoteil besitzt eine individuelle Legoteile-ID. Diese kann dem Deckblatt des jeweiligen Kasten entnommen werden (vgl. Abbildung 11/12).

Eine Excel-Liste enthält die Informationen, welche Teile händisch sortiert werden müssen. Wird also ein kompletter Kasten sortiert, so müssen zuerst die händisch sortierten Teile rausgesucht werden und über die Bilder auf dem Deckblatt die zugehörgen ID's ermittelt werden. Danach können in dem Prozess zum Starten der Sortierung die gezählten Mengen in die Oberfläche eingetragen werden (vgl. Abbildung 9). Nach dem Beenden der Sortierung werden die händisch gezählten Mengen auf die autpmatisch gezählten Mengen addiert und man kann eine komplette Inventur-/Fehlteilliste erhalten

Inventur- und Fehlteillisten

Die Inventur- und Fehlteillisten werden nach dem Beenden des Programmes automatisch erstellt und in dem Ordner Output gespeichert.

Die Inventurliste zeigt die Menge alle gezählten und eventuell händisch vorsortierten Teile an. Jedes Legoteil für den ausgewählten Kasten wird dort aufgeführt und jeweils mit der Soll-Menge versehen, die im Kasten enthalten ist und der Ist-Menge, also wie viel von der Anlage und manuell gezählt wurde. Zusätzlich wird am Ende eine Prozentzahl errechnet die aussagt, wie viel Prozent der untersuchten Teile nicht erkannt wurden und somit auch nicht in der Inventurliste auftauchen. Diese Zahl ist leicht beeinflusst von doppelten Erkennungen oder einer fehlerhaften Erkennung mit mehreren Teilen.

Die Fehlteiiliste ist effektiv das Gegenteil der Inventurliste und zeigt an, wie viele Teile fehlen, damit der Kasten komplett ist. Zusätzlich ist die Liste so erstellt, dass sie dem üblichen Format zum Bestellen an der Hochschule Hamm-Lippstadt entspricht und somit direkt für den Nachbestellprozess verwendet werden kann.


[4]

Anlernen von neuen Teilen

Um ein neues Teil in die Datenbank der Sortiermaschiene aufzunehmen oder ein bestehendes Teil aus zusätzlichen Perspektiven erkennen zu können, kann das Teil angelernt werden. Dazu muss die Funktion Teile anlernen im Startbildschirm ausgewählt werden (vgl. Abbildung 7). Nach der Kalibrierung der Kameras öffnet sich das Startfenster des Anlernprozesses. Falls es Probleme mit der Kamerakalibrierung gibt bitte den Absatz Fehlerbehebung beachten. Nun kann die Legoteile-ID des Teiles eingebenen werden und mit Weiter zum Anlernen bestätigt werden (vgl. Abbildung 13). Für Infos zu den jeweiligen ID's der Teile bitte im Abschnitt Teile vorsortieren nachlesen.

Nun können ein oder mehrere Bilder des gleichen Legoteils aufgenommen werden. Dazu muss das entsprechende Teil in die Bildverarbeitungsbox gelegt werden und dann mit Hilfe der Taste Enter ein Bild aufgenommen werden (vgl. Abbildung 14). Bei Bedarf kann das Teil jetzt verschoben oder gedreht werden um mehrere Perspektiven in einem Prozess zu bearbeiten. Jeweils immer eine neue Perspektive mit Enter aufnehmen. Die Taste Esc beendet das aktuelle Anlernen und ermöglicht die Eingabe einer neuen Legoteile-ID. Am Ende muss einmal mit der Taste Space bestätigt werden, um die gespeicherten Bilder auszuwerten.

Falls das Programm in den aufgenommenen Bildern unterschiedliche Farben erkennt, beendet der Anlernprozess und eine Nachricht wird in das Komandofenster von Matlab geschrieben, dass mehrere Farben erkannt wurden. Das Programm fällt zurück auf das Startfenster des Anlernprozesses und die ID kann erneut eingegeben werden, um eine neue Reihe von Bildern zu erstellen


In dem folgenden Fenster ist das Binärbild des Legoteils zu sehen (vgl. Abbildung 15). Aus diesem Binärbild werden die Merkmale des Teiles ermittelt. An dieser Stelle kann überprüft werden, ob das Teil wurde. Es kann bei vereinzelten Teilen dazu kommen, dass diese nicht hundertprozentig erkannt werden. Dabei ist es trotzdem möglich, dass genug Informationen gesammelt wurden, um eine eindeutige Identifizierung gewährleisten zu können. Bei Unsicherheiten kann das Teil über die Sortierfunktion getestet werden und im Einzelfall über die Verwertbarkeit der Anlernung entschieden werden. Sollte das Legoteil nicht sicher erkannt werden, kann es vorsortiert und die Anzahl per Hand eingetragen werden.

Sind alle Binärbilder ausreichend und die ermittelte Farbe, welche in der weißen Textbox angezigt wird, auch richtig, so kann durch erneutes drücken der Taste Space das Teil mit seinen ermittelten Merkmalen in der Datenbank abgespeichert werden.

Zuletzt wird ein Bild zu der eingegebenen Legoteile-ID angezeigt, sodass sichergegangen werden kann, dass die richtige ID verwendet wurde (vgl. Abbildung 16). Der Anlernprozess ist beendet und mit drücken der Taste Esc kann ein neues Teil angelernt werden.


[4]

Baukasten bearbeiten

Neue Sets können über die Funktion "Baukasten bearbeiten" in dem Haupt-GUI hinzugefügt werden.

Abb. 18: Hier besteht die Möglichkeit, neue Sets einzufügen oder bestehende Sets/Teile zu löschen

Neuen Kasten anlegen

In dem Bereich Neuen Baukasten erstellen kann ein neuer Legokasten angelegt werden. Im 1. Schritt wird dafür die neue Set-ID in das entsprechend gekennzeichnete Feld eingegeben. Im nächsten Schritt wird im Feld Anzahl der Teile im Baukasten die Anzahl der Teile in dem neuen Kasten eingetragen. Mit Drücken des Buttons Speichern & weiter wird eine eingegebene Teileanzahl an Zeilen zur Verfügung gestellt, in die dann die Daten der einzelnen Teile eingetragen werden können. Eine Änderung an der Kasten-ID und der Teileanzahl ist noch möglich, dazu einfach erneut den Button "Speichern & weiter", der jetzt seinen Namen geändert hat.

Nun können in die Tabelle alle Teile eingetragen werden, die zu dem eben erstellten Kasten gehören. Zusätzlich dazu wird die Anzahl und die Fachnummer des Teiles eingegeben. Am Ende wird der Kasten mit dem Knopf Auswahl speichern in der Datenbank gespeichert

Bestehende Kästen verwalten

In dem Bereich Bestehenden Baukasten bearbeiten kann ein vorhandener Baukasten bearbeitet werden. Zuerst muss hierfür aus der Liste unter Punkt 1 ein Kasten gewählt werden. Unter Punkt 2 kann dann bei Bedarf ein spezielles Teil aus dem Baukasten gelöscht werden mit indem die Funktion Aus dem Baukasten löschen aktiviert wird. Diese Funktion entfernt nur die Zugehörigkeit dieses Teiles zu dem Kasten, die Merkmale des speziellen Teiles bleiben erhalten. Mit der Funktion Komplett löschen kann sowohl die Zugehörigkeit, als auch die kompletten Eigenschaften des Teils gelöscht werden. Die Funktion Baukasten löschen löscht wiederum den unter 1 selektierten Baukasten, behält aber die Merkmale der einzelnen Teile in dem Kasten.

Unter Punkt 3 kann der Inhalt eines ausgewählten Kastens bearbeitet werden. Hier können ID's, Mengen oder Fachnummern einzelner Teile verändert und gespeichert werden.

Datenbank verwalten

In dem Berich Datenbank pflegen kann entweder die aktuelle Datenbank über den Knopf "Datenbank abspeichern" exportiert und somit lokal abgespeichert oder über den Knopf "Datenbank laden" eine lokal gespeicherte Datenbank importiert und in den MySQL Server eingefügt werden.


[4]

Zugriff auf die SQL-Datenbank

Die Teile, sowie Informationen über die Kästen und deren Inhalte sind in der SQL-Datenbank hinterlegt. Zugreifen kann man auf diese über das XAMPP Control Panel unter dem Punkt Admin der MySQL-Zeile (vgl. Abbildung 19).

Es öffnet sich ein Fenster im Browser. In der Navigation auf der linken Seite sind die Datenbanken kasten, kastendetails und legoteileliste zu finden. Die Datenbank kasten speichert, welche Teile zu welchem Kasten gehören. Die Datenbank kastendetails speichert die Kasten-IDs und einen zusätzlichen beschreibenden Text zu jedem Kasten. Die Datenbank legoteileliste speichert die Merkmale jedes Legoteiles, wobei ein Eintrag einem Bild beim Anlernen entspricht. So kommt es vor, dass zu einer Teile-ID eine Vielzahl von Einträgen bestehen, die jedoch die Erkennung des Teiles eher verbessern als verschlechtern.


[4]

Nützliche SQL-Befehle

Die Datenbankverbindung wird gesetzt mit dem Befehl

DatenbankVerbindung = database.ODBCConnection('Lego','root','');

Der auszuführende Befehl kann als String gespeichert werden, hier in sqlquery. Der Befehl exec sendet dann den Befehl an die Datenbank und speichert den Rückgabewert in curs, der mit fetch ausgelesen wird. Mit curs.Data kann auf den Rückgabewert der SQL-Datenbank zugegriffen werden.

sqlquery = strcat('Select LegoteileID from kasten where KastenID = ', num2str(Grundset));
curs = exec(DatenbankVerbindung, sqlquery);
curs = fetch(curs);
GrundsetIDs = curs.Data;


Nützliche Befehle, um die Datenbank zu manipulieren und Werte zu erhalten:

  • Eintrag aus Datenbank beziehen

SELECT 'Ausgabe Gewünschter Spaltenname' FROM 'Gewünschte Datenbank(kasten, kastendetails, legoteileliste)' WHERE 'Eingabe Gewünschte Spalte' = 'Abfrage des gewünschten Eintrags'

'Select LegoteileID from kasten where KastenID = 45544'
  • Eintrag in Datenbank bearbeiten

UPDATE 'Spaltenname' SET 'Gewünschtes Set' WHERE 'Gewünschter Spaltenname'

'UPDATE legoteileliste SET kasten WHERE id=2456'


[5]

Fehler beheben

SQL Datenbank starten

Abb. 20: XAMPP Control Panel

Falls sich nach dem Start z.B. "Teilesortieren" das XAMPP Control Panel nicht gestartet hat (startet üblicherweise minimiert), ist der SQL Server nicht betriebsbereit.

In diesem Fall muss das Programm XAMPP Control Panel gestartet werden. Die Services Apache und MySQL müssen wie in der Abbildung 20 gestartet sein.









Kamerabilder vertauscht

Falls die Kamerabilder der Vorsortierung und der Bilderkennungsbox vertauscht sind können die KameraIDs in folgenden Dateien neu zugewiesen werden:

    KameraKalibrierungBild.m	Zeile 41	
    KameraKalibrierungSep.m    Zeile 31	

Kalibrierung beendet nicht

Falls die Kamerakalibrierung für längere Zeit (über 3 Minuten) keinen Fortschritt erzielt, liegt ein Problem vor. Zuerst sollte sichergestellt werden, dass die Bildbox und die Seperierungsbox leer sind, denn liegengebliebene Teile verhindern eine Kalibrierung. Außerdem sollte sichergestellt werden, dass beide Kameras mit dem Computer verbunden sind. Zuletzt kann das Umgebungslicht angepasst werden (normalerweise ist Raumbeleuchtung an).

Serielle Kommunikation

Das Programm stürzt ab in run_serial.m oder hängt sich auf in einem halb-aktiven Zustand: Die serielle Verbindung wurde unterbrochen oder gestört. Zuerst das Programm mit der Tastenkombination Ctrl+C beenden und dann die Datei ManuellerStop.m ausführen. Als nächstes den Arduino vom Computer trennen und erneut verbinden. Nun das Programm wieder starten

Kommunikationsproblem mit dem Arduino

Falls ein Kommunikationsfehler mit dem Arduino auftritt, sollte ermittelt werden, ob der richtige COM-Port im Programm eingestellt ist. Es muss der Port des Arduino ermittelt werden und dann an folgenden Stellen bearbeitet werden:

    COM-Port in folgenden Dateien ändern:
    InitialisierungKamerasArduino.m	Zeile 33	Port = 'COM3';
    ManuellerStopp.m	                Zeile 19	Port = 'COM3';

Computer neu aufsetzen

In dem Fall, dass das System neu aufgestzt werden muss wurde folgende Anleitung erstellt, um die Verbindung zwischen Matlab und der Datenbank wiederherzustellen: Anleitung

Zusätzlich muss eine Matlab-Version installiert werden (zuletzt lauffähig gewesen mit R2017b) mit den folgenden Toolboxen:

  • Image Processing Toolbox
  • Database Toolbox

Autoren

  1. Autor Marc Eidhoff
  2. Autor Tobias Brandt
  3. Autor Madlen Bartnick
  4. 4,0 4,1 4,2 4,3 4,4 Autor Torben Müller
  5. Autor Jan Auf der Landwehr