Legoteil Zählmaschine 2016

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Legoteilzählmaschine im Überblick


Aufgabenstellung

Die vorhandene Legoteilzählmaschine (siehe Legoteilzählmaschine_2015 ) soll Soft- und Hardwaremäßig modifiziert werden, um weitere Anforderungen zu erfüllen.


Liste der offenen Punkten vom letzten Semester

  • Neues 24 V Netzteil, 24V/10A Netzteil gegen 24V/20A austauschen, um Überlast beim Lauf aller Motoren zu verhindern. Neues Netzteil ist vorhanden.
  • Software zur Bildverarbeitung (BV), Die Einbindung einer geeigneten Software zur Teileerkennung steht noch aus. Kommunikation mit Systems sowie Ansteuerung ist fertig. Bildverarbeitung mit 'String' als Output.
  • Bauteileliste in Excel, Die Excel Liste, welche alle Teile eines Baukasten erhält, muss mit dem Ergebnis der BV abgeglichen werden. Erkannte Teile in mindestens zwei möglichen Ausrichtungen müssen erkannt und in der Liste vermerkt werden.
  • Servo für Teilesortierung, Identisches Servo wie bisher gegenüberliegend montieren, um drei Sortierfächer (Erkannt/Nicht Erkannt/Fremdteil) zu sortieren, Konstruktion, Bestellung wurde an Fr. König geleitet.
    • Dieser Punkt wird in diesem Projekt nicht bearbeitet.
  • Zeit bis zur Servoöffnung, Das Delay zwsichen Befehl und öffnen der Servos muss ermittelt und je nach Geschwindigkeit angepasst werden. Es ist problemlos möglich, einen weiteren 'String' - Befehl als Buchstaben für die Verzögerungszeit einzubinden, String auslesen und verarbeiten muss in Arduino Software geschehen.
  • Kabelkanal montieren, Kabelkanal zur ordentlichen Verlegung der Leitungen an den Förderbändern montieren
  • Kamerahalterung, Konstruktion einer Kamerahalterung für die Logitech C920 WebCam Vorschlag: Brücke über Förderband.
  • Bildverarbeitungskasten, Für die Bildverarbeitung muss eine der gebauten Bildverarbeitungsbox-Prototypen ausgewählt und montiert werden. Hierfür wurden Lichttests durchgeführt. Ergebnisse sind protokolliert SVN Link zu den Lichttests, Prototypen der Lichtboxen vorhanden.
  • Teilezentrierung, Die provisorisch aus Holz gefertigte Teilezentrierung soll in fixierbarer Variante aus Aluminium gefertigt werden. Ergebnisse zu den Tests der Zentrierungsmethoden sind in diesem SVN Ordner protokolliert, Prototypen der gewählten Teilezentrierung ist vor der Bildverarbeitungsbox verbaut.
  • Idee Software: Flexible Bildverarbeitungssoftware, Durch definieren der Schnittstellen könnte in der GUI eine Einbindung frei wählbarer BV Software realisiert werden. Optimal geeignet um kleine Projekte dann an der Legoteilzaehlmaschine zu testen.
    • Wird in diesem Projekt nicht bearbeitet.

Aufgabenteilung inkl. weiteren Aufgaben aus dem Pflichtenheft

Es wurden für jede Aufgabe ein oder mehrere Verantwortliche(n) aus der Gruppe festgelegt. Jede Person ist dann dafür zuständig, dass diese Aufgaben erfüllt werden. Bei Bedarf steht dieser Person die ganze Gruppe zur Hilfe zur Verfügung.

  • Kevin Penner:
    • Separierung und Zentrierung der Lego-Teile
    • Pflichtenheft Dokumentation mit Software "DOORS"
    • Bildverarbeitung/Legoteil-Erkennung
  • Simon Hanemann:
    • GUI Programmierung
    • Dokumentation in HSHL-Wiki
    • Video-Anleitung
  • Adam Frankhauser:
    • Elektr. Sicherheit
    • Bildverarbeitungs-Box Fixierung/Stabilisierung
    • Video-Anleitung
  • Niklas Lingenauber:
    • Datenbankanbindung IN/OUT und Listen
    • Projektplanung
    • QM-Tests (nach Rücksprache mit Prof. Schneider auf das nächste Semester verlegt)
    • Bildverarbeitung/Legoteil-Erkennung
  • Sergej Krause:
    • Teach-IN Funktion
    • Datenbankanbindung IN/OUT und Listen
    • Separierung und Zentrierung der Lego-Teile
  • Christo Tsibadze:
    • Projektplanung
    • Bildverarbeitung/Legoteil-Erkennung
    • Visualisierung von Prozessen mit "Visio"

Projektplan

Meilensteine für das 6. Semester mit Deadlines:

  • 06.06.2016: Hardware und Software Inbetriebnahme
    • Inbetriebnahme "Erprobung von Sensoren und Aktoren"
    • Automatische Sortierung von mind. 30 Teilen
    • Sortierung: Erkannt und Nicht-Erkannt
    • Bildverarbeitung in "Echtzeit" am PC
    • Ausgabe der Inventurliste
  • 24.06.2016: Algorithmen:
    • Optimierung der Bildverarbeitung
    • Automatische vollständige Sortierung: NXT-Basis + Erweiterung
    • Planung und Beschaffung der Hardware-Änderung (Auswerfer) für die nächste Projektphase
  • 14.11.2016: wird noch festgelegt, entweder Auswerfer- oder Separierung vor der BV Optimierung
  • 16.01.2016: Algorithmen Optimierung, Teach-In XT/EV3 und Report
Abbildung 2: Aufgabenstellung und Projektplan


































Realisierung

GUI

Bildverarbeitung/Legoteil-Erkennung

Bildverarbeitung_Main_Funktion

Abbildung 2: Bildverarbeitung_Mainfunktion




















































clear all;
close all;
delete(instrfindall);

%% Datenbank
conn = database.ODBCConnection('Lego','root','');
%% Webcam Einstellungen

cam = webcam('Logitech HD Pro Webcam C920');
pause(1) %in seconds 
cam.BacklightCompensation = 0;
pause(1) %in seconds 
cam.ExposureMode = 'manual';
% pause(1) %in seconds 
cam.FocusMode = 'manual';
% pause(1) %in seconds 
cam.WhiteBalanceMode = 'manual';
cam.Tilt = 0;
cam.Sharpness = 128;
cam.Pan = 0;
cam.Saturation = 200;
cam.Exposure = -2;
cam.Focus = 20;
cam.Brightness = 128;
cam.Contrast = 128;
cam.WhiteBalance = 5200;
cam.Gain = 0;
pause(1) %in seconds 
OrgImage = snapshot(cam);
[height,width,~] = size(OrgImage);

%% Arduino/Motor Einstellungen
system = 1;
motor1 = 0;
motor2 = 0;
motor3 = 40;
s = serial('COM4','baudrate',115200); % Create serial port
fclose(s);
pause(1) %in seconds  
% Open serial port OR set testmode (serial port to Command Window)
try
    fopen(s); % Open serial port
    pause(1) %in seconds  
    testmode = 0;
catch
    fprintf(1,'Serial-Port nicht verfügbar - ');
    testmode = 1;
end

serialstring = ['S', num2str(system), 'A', num2str(motor1, '%03d'), 'B', num2str(motor2, '%03d'), 'C', num2str(motor3, '%03d')];

if (testmode == 1)
    fprintf(1,'%s',serialstring);   
else
    fprintf(s,'%s',serialstring);
    pause(0.01) %in seconds  
end

%fclose(s);

%% Parameter
Ueberschneidung = 100;
Salt_Pepper = 300;
sigma = 1;
CropX = 1;
CropY = 30;
BildmitteOffsetAnfang=20;
BildmitteOffsetEnde=150;
BildmitteAnfang = round(width/2)-BildmitteOffsetAnfang;
BildmitteEnde = round(width/2)+BildmitteOffsetEnde;

FarbOffset = 1.2;

RadiusMin = 7;
RadiusMax = 15;

Circle_Sensitivity = 0.84;

SPY_MEM = 0;
SPY_DIFF = 5;

SE = strel('square',2);

%% Bild einlesen aus Ordner
figure(1);

index = 0;
b = 1;
Teileliste = {0};
TeilelisteIndex = 1;
Parameter = zeros(10,4);

 while(true)
% [Filename,PathName] = uigetfile('*.png','Select the MATLAB code file');
% Path = [PathName Filename];
% OrgImage = imread(Path);
% if s.BytesAvailable
% fscanf(s)
% end
OrgImage = snapshot(cam);
Crop_Image = OrgImage(CropY:(height-CropY), CropX:(width-CropX),:);  %Ränder abschneiden

Im_R = imgaussfilt(Crop_Image(:,:,1),sigma);
Im_G = imgaussfilt(Crop_Image(:,:,2),sigma);
Im_B = imgaussfilt(Crop_Image(:,:,3),sigma);


%% Binarisierung
BW_FARBE(:,:,1) = Im_R>255*0.9 & Im_G>255*0.68 & Im_B<255*0.05; %GELB 0.88
BW_FARBE(:,:,1) = bwareaopen(BW_FARBE(:,:,1), Salt_Pepper);
BW_FARBE(:,:,2) = Im_R>255*0.9 & Im_G>255*0.9 & Im_B>255*0.9; %WEIS
BW_FARBE(:,:,2) = bwareaopen(BW_FARBE(:,:,2), Salt_Pepper);
BW_FARBE(:,:,3) = Im_R>255*0.65 & Im_G>255*0.62 & Im_G<255*0.95 & Im_B>255*0.21 & Im_B<255*0.65; %BEIGE
BW_FARBE(:,:,3) = bwareaopen(BW_FARBE(:,:,3), Salt_Pepper);
BW_FARBE(:,:,4) = Im_R>255*0.7 & Im_R<255*0.96 & Im_G<255*0.1 & Im_B<255*0.1; %ROT
BW_FARBE(:,:,4) = bwareaopen(BW_FARBE(:,:,4), Salt_Pepper);
BW_FARBE(:,:,5) = Im_R<255*0.2 & Im_G<255*0.2 & Im_B<255*0.2 & Im_G>255*0.015; %verbesserungswürdig, SCHWARZ
BW_FARBE(:,:,5) = bwareaopen(BW_FARBE(:,:,5), Salt_Pepper);
BW_FARBE(:,:,6) = Im_R<255*0.05 & Im_G<255*0.52 & Im_B > 255*0.6 & Im_B < 255*0.9; %BLAU
BW_FARBE(:,:,6) = bwareaopen(BW_FARBE(:,:,6), Salt_Pepper);
BW_FARBE(:,:,7) = Im_R<255*0.2 & Im_B<255*0.33 & Im_G>255*0.3; %GRUEN
BW_FARBE(:,:,7) = bwareaopen(BW_FARBE(:,:,7), Salt_Pepper);
BW_FARBE(:,:,8) = Im_R<255*0.77 & Im_G<255*0.85 & Im_B<255*0.79 & Im_R>255*0.5 & Im_G>255*0.6 & Im_B>255*0.54; %HELLGRAU
BW_FARBE(:,:,8) = bwareaopen(BW_FARBE(:,:,8), Salt_Pepper);
BW_FARBE(:,:,9) = Im_R<255*0.55 & Im_G<255*0.6 & Im_B<255*0.56 & Im_R>255*0.3 & Im_G>255*0.29 & Im_B>255*0.25; %DUNKELGRAU
BW_FARBE(:,:,9) = bwareaopen(BW_FARBE(:,:,9), Salt_Pepper);

%% Delete Shadow
BW_BLACK = 0;
for i=1:9
    if i~=5
        BW_BLACK = BW_BLACK+BW_FARBE(:,:,i); 
    end
end
BW_BLACK = imfill(BW_BLACK, 'holes');
BW_FARBE(:,:,5) = uint8(BW_FARBE(:,:,5) - BW_BLACK(:,:));

%% Create Label Image
BW_IMAGE = 0;
for i=1:9
    if((sum(sum(BW_FARBE(:,:,i))))<Ueberschneidung)
        BW_FARBE(:,:,i)=0;
    else
        BW_FARBE(:,:,i) = imdilate(BW_FARBE(:,:,i),SE);
        BW_IMAGE = BW_IMAGE + BW_FARBE(:,:,i);
    end
end
BW_IMAGE = imclearborder(BW_IMAGE);
BW_IMAGE = bwareaopen(BW_IMAGE, Salt_Pepper);
[BW_IMAGE, numObjects] = bwlabel(BW_IMAGE);

%% 
%s = regionprops(BW_IMAGE,'centroid');
%centroids = cat(1, s.Centroid);

%% Merkmalsextraktion einzelner Objekte

%figure(1);
if index==20
% subplot(1,2,1);
% imshow(Crop_Image);
% drawnow;
% hold on;
index = 0;
end
for i=1:numObjects
    %Berechnen von Umfang, Fläche und Schwerpunkt in Pixeleinheiten
    %[Umfang, Flaeche, Schwerpunkt, EntfernungPunkteMaxMin] = Merkmalsberechnung_3(imfill(ismember(BW_IMAGE,i),'holes'));
    [Umfang, Flaeche, Schwerpunkt, EntfernungPunkteMaxMin] = Merkmalsberechnung_3(ismember(BW_IMAGE,i));
    if Schwerpunkt(1)>= BildmitteAnfang && Schwerpunkt(1)<= BildmitteEnde && abs(Schwerpunkt(2)-SPY_MEM)>SPY_DIFF %liegt das Objekt mittig
        
        
        SPY_MEM = Schwerpunkt(2);
        %dbstop in FARBERKENNUNG_V2
        [ FARBE ] = FARBERKENNUNG_V2( Crop_Image*FarbOffset, ismember(BW_IMAGE,i));
        
        [centers, radius] = imfindcircles(ismember(BW_IMAGE,i),[RadiusMin RadiusMax],'ObjectPolarity','dark','Sensitivity',Circle_Sensitivity);
        AnzahlKreise = size(centers);


        %str=sprintf('Umfang = %d  Flaeche = %d  MaxSchwer = %d  MinSchwer = %d  Farbe = %d Kreise = %d ',...
        %Umfang, Flaeche, round(EntfernungPunkteMaxMin(1)), round(EntfernungPunkteMaxMin(2)), FARBE, AnzahlKreise(1));

%         Parameter(b,1) = Umfang;
%         Parameter(b,2) = Flaeche;
%         Parameter(b,3) = EntfernungPunkteMaxMin(1);
%         Parameter(b,4) = EntfernungPunkteMaxMin(2);
%         
%         if b==11
%            b=1;
%            sprintf('Umfang = %d  Flaeche = %d  MaxSchwer = %d  MinSchwer = %d',mean(Parameter(:,1)),mean(Parameter(:,2)),mean(Parameter(:,3)),mean(Parameter(:,4)))
%            sprintf('Umfang = %d  Flaeche = %d  MaxSchwer = %d  MinSchwer = %d',median(Parameter(:,1)),median(Parameter(:,2)),median(Parameter(:,3)),median(Parameter(:,4)))
%         end
%         b = b+1;
    
        %subplot(1,2,2);
        imshow(ismember(BW_IMAGE,i));
        %title(str);
        centersStrong = centers(1:AnzahlKreise(1),:);
        radiiStrong = radius(1:AnzahlKreise(1));
        viscircles(centersStrong, radiiStrong,'EdgeColor','r');

        %dbstop in Datenbankabgleich
        ID = Datenbankabgleich(conn, Flaeche, Umfang, EntfernungPunkteMaxMin(1), EntfernungPunkteMaxMin(2), AnzahlKreise(1), FARBE);
        if length(ID) > 1
           ID = {0}; 
        end
        title(ID);
        drawnow;
        hold on;
        
        
        Teileliste(TeilelisteIndex) = ID;
        TeilelisteIndex = TeilelisteIndex + 1;
        
       %Sollte das Legoteil erkannt sein --> Sortierung mit Servo
        if cell2mat(ID) ~= 0
            serialstring = ['Z1', num2str(1)];
            fprintf(s,'%s',serialstring); 
        end
    end
end
index = index+1;
val = double(get(figure(1), 'CurrentCharacter'));
if(val==27)
   break; 
end
 end
serialstring = ['S', num2str(0)];
fprintf(s,'%s',serialstring); 
pause(1);
fclose(s);
delete(instrfindall);
close(figure(1));


Farberkennung

Abbildung 3: Farberkennung




















































%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Funktion        : Merkmalsextraktion: FARBERKENNUNG                     %
% Autor           : Christo Tsibadze                                      %
% Implementation  : MATLAB R2016a                                         %
%                                                                         %
% Funkion         : Funtion ermittelt die Farbe von dem Überlagerten      %
%                   Bereich aus Binär_Objekt_Bild und Originalbild und    %
%                   ermittelt zu welcher Farbe der Tabelle am besten      %
%                   ähnelt                                                %
% EINGABE         : RGB_BILD (:,:,3) in uint8 Format                      %
%                   BW_OBJECT(:,:) in Binärformat                         %
% AUSGABE         : FARBE LEGO-Farbe als string                           %
% Änderungsdatum  : 21.06.2016                                            %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [ FARBE ] = FARBERKENNUNG_V2( RGB_BILD, BW_OBJECT )
%% Farbwerte-Tabelle mit normierten Lego-Farben
% %           R(1) G(1) B(1)  Farbcode R(255) G(255) B(255)
Farbwerte=[   1.00 1.00 1.00;%     01      255  255    255; %'weiss'          1
              0.87 0.78 0.61;%     05      222	198	   156; %'beige'         2
              0.70 0.00 0.02;%     21      179    0	     6; %'rot'           3
              0.00 0.34 0.65;%     23        0	 87	   166; %'blau'          4
              0.97 0.82 0.09;%     24      247  209	    23; %'gelb'          5
              0.13 0.13 0.13;%     26       33	 33	    33; %'schwarz'       6
              0.06 0.80 0.19;%     37       16	203	    49; %'gruen'         7
              0.70 0.33 0.03;%     38      179	 84	     8; %'hellbraun'     8 % wird zurzeit nicht verwendet
%             0.69 0.71 0.78;%    194      175	181	   199; %'hell-grau'      9
              0.71 0.73 0.80;%    194      175	181	   199; %'hell-grau'      9 %angepasst
%             0.35 0.36 0.38;%    199       89	 93	    96; %'dunkel-grau'   10
              0.45 0.46 0.48;%    199       89	 93	    96; %'dunkel-grau'   10 %angepasst
              0.20 0.00 0.00;%    308       51	  0	     0; %'dunkelbraun'  11 %wird zurzeit nicht verwendet
              ];
%% Eine Maske für die Farbextrahierung aus Binärbild erzeugen          
[Hoehe, Breite]=size(BW_OBJECT);                                            %Hoehe und Breite des Bildes ermitteln
Farbmaske=zeros(Hoehe, Breite, 3);                                          %Null-Matrix für Farbmaske erstellen
RGB_BILD=im2double(RGB_BILD);                                               %in double umwandeln, besser zu rechnen
BW_BILD=im2double(BW_OBJECT);
%% nur die Farben aus übereinstimmenden Pixeln RGB zu BW in der Farbmaske übernehmen
Farbmaske(:,:,1) = RGB_BILD(:,:,1).*BW_BILD(:,:);                           %für Rot                     
Farbmaske(:,:,2) = RGB_BILD(:,:,2).*BW_BILD(:,:);                           %für Grün
Farbmaske(:,:,3) = RGB_BILD(:,:,3).*BW_BILD(:,:);                           %für Blau
%% Pixel-Fläche des Binärbildes berechnen für die Mittelwertbildung
Pixel_Flaeche = sum(sum(BW_OBJECT));                                        %Flächenberechnung, Pixelanzahl
%% Mittelwertwerte für R, G und Blau berechnen
FARBE(1,1) = (sum(sum(Farbmaske(:,:,1))))/Pixel_Flaeche;                    %für jede Farbe Summe im Bild bilden und durch die Anzahl der Pixel teilen
FARBE(1,2) = (sum(sum(Farbmaske(:,:,2))))/Pixel_Flaeche;
FARBE(1,3) = (sum(sum(Farbmaske(:,:,3))))/Pixel_Flaeche;
%% Die Farbe aus der Tabelle mit geringster Abweichung zu aktueller Farbe bestimmen
% 1) zu Jeder Tabellenfarbe wird der größstabweichender Farbanteil der
% aktuellen Farbe ermittelt und gespeichert
% 2) anschließend wird die Farbe mit geringsten Wert von den
% maximalabweichungen ermittelt
temp = max(abs(Farbwerte(1,:)-FARBE));                                      % Max von R,G,B Differenzen zu erster Farbe
MIN_Diff=1;
for i=2:11
    if(temp>(max(abs(Farbwerte(i,:)-FARBE))))                               % falls der gleiche Wert mit anderer Farbe kleiner ist, speichern
    MIN_Diff = i;                                                           % den Farbenindex mit kleinst. Abweichung speichern
    temp=max(abs(Farbwerte(i,:)-FARBE));
    end;
end
%% Farbenzuordnung FARBE als Rückgabe
% Anhand der gespeicherten Farbindex, wird eine Farbe zurückgegeben
% zurückgegeben
switch MIN_Diff
    case 1
        FARBE='weiss';
    case 2
        FARBE='beige';
    case 3
        FARBE='rot';
    case 4
        FARBE='blau';
    case 5
        FARBE='gelb';
    case 6
        FARBE='schwarz';
    case 7
        FARBE='gruen';
    case 8
        FARBE=38;
    case 9
        FARBE='hell-grau';
    case 10
        FARBE='dunkel-grau';
    case 11
        FARBE=308;
    otherwise
        %disp('Fehler')
        %hier ist noch ein Zusatzfall unterscheidbar, es ist gedacht einen
        %Maximalabweichung in der Berechnung einzubeziehen, falls die
        %kleinst ermittelte Abweichung größer ist als ein bestimmter
        %Grenzwert, dann soll hier Fehler ausgegeben werden.
end
end


Merkmale

Abbildung 4: Merkmale




















































Teach-IN

Datenbankanbindung, Listen IN/OUT

Separierung und Zentrierung der Legoteile

=== Teilezentrierung === Die provisorisch aus Holz gefertite Teilezentrierung soll in fixierbarer Variante aus Aluminium gefertigt werden Ergebnisse zu den Tests der Zentrierungsmethoden sind in diesem SVN Ordner protokolliert Prototypen der gewählten Teilezentrierung ist vor der Bildverarbeitungsbox verbaut


Abbildung X: Zentrierung
























Separierung


















Elektronik und Sicherheit

Neues 24V Netzteil

24V/10A Netzteil gegen 24V/20A austauschen, um Überlast beim Lauf aller Motoren zu verhindern.

Abbildung 5: 24VDC Installation




















































Kabelkanal

Kabelkanal zur ordentlichen Verlegung der Leitungen an den Förderbändern montieren

Abbildung X: Kabelkanal



































Kamera- und Bildbox-Halterung

Konstruktion einer Kamerahalterung für die Logitech C920 WebCam. Vorschlag: Brücke über Förderband Für die Bildverarbeitung muss eine der gebauten Bildverarbeitungsbox-Prototypen ausgewählt und montiert werden. Hierfür wurden Lichttests durchgeführt. Ergebnisse sind protokolliert SVN Link zu den Lichttests Prototypen der Lichtboxen vorhanden

Abbildung X: Kamera_BildBox_Fixierung





























Höhenanpassung der Laufbänder

und Legoförderer (Bunker)

HSHL-Wiki-Dokumentation

gemeinsame Bearbeitung, Jede Aufgabe wird vom zuständigen Person dokumentiert...

Video-Anleitung

Projektplanung

hier können wir Unterschiede nennen: was wir anfangs geplant hatten und was wir wegen Machbarkeit mit Genehmigung von Prof. Schneider abgeändert haben...

Pflichtenheft Dokumentation in DOORS

Prozessvisualisierung mit Visio

Abbildung X: MAIN inkl. GUI und Datenbank




















































QM-Tests

Wurde mit Genehmigung von Prof. Schneider auf das nächst Semester verlegt.

Auswerfer

z.B. Inbetriebnahme des vorhandenen Auswerfers

Planung der Aufgaben für das nächste Semester

Konzept für Sortieranlage

Abbildung X: Konzept_Sortierung


























Zum Öffnen des 3D-Modells vom Konzept, laden Sie bitte folgende frei erhältliche Software 3DXML-Player herunter und öffnen Sie die hier gespeicherte 3dxml-Datei. Die Datei finden Sie unter diesem Link im SVN Sortieranlage.3dxml

Vereinzelung von Legoteilen vor der Bildverarbeitung

Ergebnisse

Anleitung Programmstart

  • Vorbereitung
    • LED-Stecker anschließen
    • Hauptstecker anschließen
    • Hauptschalter betätigen
  • Datenbank starten
    • XAMPP control panel starten
    • Apache Modul starten
    • MySQL Modul starten
  • Matlab Programm öffnen
    • unter SVN\MTR_SDE_Praktikum_2015\SRC die main-datei öffnen
    • Programm starten
  • Baukasten in der GUI auswählen
  • handgezählte Teile eintragen
  • automatischer Zählprozess
    • Motoren werden automatisch gestartet
    • Kästen hinter das Förderband stellen
    • Legoteile in den Bunker füllen
    • Esc-Taste betätigen zur Beendigung des automatischen Zählprozess
  • Motoren werden automatisch ausgeschaltet
  • Inventurliste wird ausgegeben


Video

Video oder kein Video?

Fazit

Abgeschlossene Punkte

Offene Punkte

Dokumentation

SVN

Link zur Bildverarbeitungs-Software --> Algorithmus und Module

Gefährdungsbeurteilung AKTUALLISIEREN

SVN Link zur Gefährdungsbeurteilung