- LiFePO4 Speicher Test         
Seite 8 von 10 ErsteErste ... 678910 LetzteLetzte
Ergebnis 71 bis 80 von 91

Thema: Vision-Erkennung bei Bestückungsautomaten

  1. #71
    Benutzer Stammmitglied
    Registriert seit
    09.03.2012
    Ort
    AN
    Alter
    51
    Beiträge
    46
    Anzeige

    E-Bike
    Oha, darf ich mal fragen was die Kamera gekostet hat?
    Mich würde mal interessieren ob OpenCV auch mit einer Mikroskop-Kamera laufen würde. Wäre das schnell genug?
    Den Focus kann man ja mit der Z-Achse regeln, da man ja weiß wie dick das Bauteil ist.
    Ich muß gestehen dass dieses Thema bei mir eingeschlafen ist, aber interessiert bin ich daran immer noch. Allerdings wäre ich eher an einer low budget lösung interessiert als an einen professionellen Bestücker, da ein gebrauchter professioneller Bestücker schneller ist als wir das jemals selber bauen könnten und zudem wäre der auch billiger, als wenn man alles selber baut.
    Mich würde das aber als technische Herausforderung reizen.

  2. #72
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.05.2007
    Beiträge
    170
    Die Kamera mit Objektiv etwa 800€. Dass du dich meldest hätte ich ehrlich gesagt als letztes erwartet. Ich schreibe morgen noch ein bisschen mehr dazu wenn gewünscht?

    Willkommen zurück an Bord

  3. #73
    Benutzer Stammmitglied
    Registriert seit
    09.03.2012
    Ort
    AN
    Alter
    51
    Beiträge
    46
    Ja, das ist gewünscht
    Bin mal gespannt was du da bisher so gebastelt hast.

  4. #74
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.05.2007
    Beiträge
    170
    Grundsätzlich habeich noch nicht viel erreicht. Bis dato habe ich versucht an eineKamera zu kommen. Wenn der nächste Lohn da ist wird aber ein kleinesTestsetup gebaut welches mir die chips in x,y und z Richtungverschieben kann und dazu noch drehbar ist. Da das ding kaum Lastaufnehmen muss kann man auch auf günstigere Profilschinenezurückgreifen, zum Beispiel die hier: http://openbuildspartstore.com/v-slot-20-x-20mm/

    Damit soll dann dasLichtsetup überprüft werden und die Algorithmen zur Erkennung desBauteils und der Rotation. Zusätzlich versuche ich mir mal ein paarDatentypen zu überlegen die die Templates zur Erkennung undAusrichtung aufnehmen können. Wenn das dann klappt kann es an dieKonstruktion der Maschine gehen. Möchte vorher aber noch einenWrapper schreiben, der das Kamerainterface abstrahiert damit jedereinen eigenen Treiber schreiben kann und auf standardisierteFunktionen zurückgreifen kann um seine eigene Kamera einzubinden.

    Gestern Abend habeich OpenCV noch einmal selbst kompilliert und zum laufen gebracht.Wieso das nicht lief weiß ich nicht so genau – Im Endeffekt wirdes wohl an den Unterschieden in der Microsoft Runtime liegen – Qtwurde mit dem Compilerswitch /MD kompilliert und OpenCV mit demSwitch /MT. Dem entsprechend bin ich noch nicht wirklich weit.

    Der Fokus liegtjetzt erstmal auf der Mechanik und die Ansteuerung – Heute Abendsetze ich mich noch einmal an den Code und baue ein git Repositoryauf in den das ganze Zeug dann kommt. Über die Aufteilung bin ichmir allerdings auch noch nicht im klaren.

    Im Gegensatz zu 2012 ist das Ziel aber klarer, das Projekt segmentierter und damit bewältigbar!
    Geändert von einballimwas (29.01.2015 um 16:45 Uhr)

  5. #75
    Benutzer Stammmitglied
    Registriert seit
    09.03.2012
    Ort
    AN
    Alter
    51
    Beiträge
    46
    Na ja, der schwierigste Teil war ja sowieso die Bauteilerkennung.
    Das mit der Ansteuerung sehe ich eher gelassen.
    Hast du es mit deiner Kamera schon geschafft das Bauteil "zu erkennen" ?
    Wie legt man mit OpenCV Shapes an, welche die einzelnen Beine, usw. erkennen?

  6. #76
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.05.2007
    Beiträge
    170
    Wie weit bin ich? Puuh, die Frage lässt sich gerade nicht so leicht beantworten. Momentan kämpfe ich um die Integration von OpenCv und OpenGL in ein Qt Programm. Von einer Bildbearbeitung geschweige denn Erkennung von Bauteilefeatures bin ich noch weit entfernt. Parallel dazu versuche ich LEDs für einen Blitz auf eine Platine zu bringen und ein Arduino Programm zu schreiben dass das mit der Beleuchtung klappt. Die LEDs werden heftig übersteuert um genug Licht für ein paar Milisekunden zu produzieren damit die Kamera es hell genug für saubere Bilder hat. LED Typ ist dieser hier: http://de.farnell.com/osram/lr-t67f-...rot/dp/2113954 Um die Stromversorgung muss ich mir noch Gedanken machen. Eigentlich möchte ich die LEDs stromgesteuert betreiben aber wie ich die LEDs parallel schalte ohne eine zu zerstören ist mir noch nicht bewusst. Vielleicht ist es sinnvoller LED Stränge zu bilden und diese dann parallel zu schalten.

    Erst einmal ist es wichtig, die Kamera zu kalibrieren. Das wird der erste Schritt sein sobald ich die Klasse für meine Kamera fertig habe. Ausgangspunkt ist dieses Kapitel das du dir durchlesen kannst: http://docs.opencv.org/doc/tutorials...libration.html

    Damit ist es dann möglich Pixelkoordinaten in reale Maße umzurechnen und ein Koordinatensystem aufzubauen.Zur Detektion selbst: Das Bild kommt als Farbbild bei mir an und muss erst einmal in ein Graustufenbild umgewandelt werden. Dazu werden alle drei 8bit Kanäle summiert, der Alpha Kanal weggeworfen weil er nicht benötigt wird. Dann wird der Mittelwert gebildet. Im Endeffekt ist es die Summe der Kanäle durch Kanalanzahl: (B+G+R)/N(BGR).

    Damit haben wir ein Graustufenbild mit welchem wir dann eine Kantendetektion machen können. Hierfür gibt es den Sobel Operator:http://de.wikipedia.org/wiki/Sobel-Operator Alternativ kann man auch diese Funktion hier nehmen - http://docs.opencv.org/modules/imgpr...eaturestotrack . Was besser funktioniert muss noch ausgetestet werden.

    Wenn die Kanten detektiert bzw gehighlighted sind werden Punkte herausgesucht anhand derer Linien um die Kanten des Bauteils gezeichnet werden können. Dadurch entsteht ein Rechteck dessen Mitte wir bestimmen können. Ab dem Punkt arbeiten wir nur noch mit Vektoren im kartesischen Koordinatensystem. Mit dem Mittelpunkt können wir den Versatz zum Ursprung (Bildmitte) berechnen und diesen in die Pfadplanung für die Bewegung der Maschine einplanen oder im Testaufbau ins Maschinenkoordinatensystem umrechnen, damit dann die Ausrichtung korrigieren und mit einem zweiten Bild überprüfen ob die Berechnungen korrekt waren. Dafür werden allerdings schon Motoren und so weiter benötigt. Die kommen erst Mitte/Ende des Urlaubs, werden also frühestens Ende März fertig gebaut sein.

    In den folgenden Tagen versuche ich noch ein paar gute Bilder mit verschiedener Beleuchtung und ohne Parallaxenfehler zu machen um ein paar Trockenläufe testen zu können. Die Bildquelle ist dann direkt ein JPEG Bild. Welcher Weg gegangen werden soll ist mir noch nicht wirklich klar, da ich mit Bildverarbeitung bis jetzt absolut nichts praktisches gemacht habe und somit auch keine Erfahrung habe. Zudem birgt OpenCV noch einige Geheimnisse die entschlüsselt werden wollen (Welche Funktionen gibt es, was tun sie im Detail, etc). Dafür habe ich mir ein Buch gekauft das in ein paar Tagen hoffentlich ankommt.
    Geändert von einballimwas (30.01.2015 um 11:05 Uhr) Grund: Links gefixt

  7. #77
    Benutzer Stammmitglied
    Registriert seit
    09.03.2012
    Ort
    AN
    Alter
    51
    Beiträge
    46
    Uh das ist harter Tobak.
    Einige der Links funktionieren übrigens nicht.

    Zum Thema Kalibrieren (das ist einer der Links die nicht gehen):
    Man kann eine Kalibrierscheibe nutzen, also ein Plättchen, welches eine fixe Größe hat. Diese wird dann über die Kamera gefahren als wenn es ein Bauteil wäre. Da die Größe bekannt ist braucht man nur die ermittelte Größe mit der realen Größe zu vergleichen und schon weiß man um wie viel Prozent die Größe abweicht. Den Rest kann man wieder errechnen.
    Wenn man nun anstelle einer Kalibrierscheibe direkt die Nozzle verwendet würde das genau so gut gehen. Zudem würde man gleichzeitig einen Versatz in X und Y ermitteln können. Lediglich Theta kann man so nicht kalibrieren (zumindest nicht mit einer runden Nozzle, mit einer eckigen Nozzle würde sogar das gehen).

    Zum Thema LEDs:
    Ich würde es so versuchen, dass man Stränge bildet in der x LEDs in Reihe stromgesteuert betrieben werden. Jeder Strang bekommt eine eigene Stromsteuerung. Übersteuern würde ich die nicht. Zum einen gehen die dann schneller kaputt (verlieren an Leuchtkraft) und zum anderen werden die dann kaum noch heller. Wenn man z.B. eine 20mA LED mit 15mA betreibt bemerkt man fast keinen Unterschied zu 20mA. Nach oben hin wird der Unterschied immer geringer. Lieber ein paar LEDs mehr, und diese dann "normal" betrieben. Sollte dir das zu wenig Licht sein, dann könnte man auch auf Cree-LEDs ausweichen (dann wäre aber eine Schutzbrille ratsam ).
    In den professionellen Maschinen sind rote LEDs eingesetzt. Keine Ahnung ob das nun ein besseres Licht für die Kamera ist, oder ob das andere Gründe hat, aber auf jeden Fall sind das rote Standard-5mm LEDs.
    Wichtig ist auch dass diese aus verschiedenen Winkeln auf das Bauteil leuchten und diese separat in der Helligkeit eingestellt werden können, damit verschiedene Bauteile verschieden beleuchtet werden können.

    Auf die Versuchsergebnisse mit der Kantenerkennung bin ich sehr gespannt.
    Ach ja, es ist nicht nötig, das Bauteil nach einer Lagekorrektur nochmal zu scannen. Wenn ein Bauteil z.B. verdreht ist rechnet man es einfach um und fertig. Bei einem versetzten Bauteil sollte man ausrechnen ob die Nozzle möglicherweise übersteht und somit Luft ziehen kann (dann besser das Bauteil abwerfen, bevor es verloren geht). Wenn das Bauteil versetzt ist, aber die Nozzle nicht übersteht kann es auch einfach korrigiert und gesetzt werden, allerdings sollte dann die Theta-Geschwindigkeit reduziert werden, damit das Bauteil beim drehen nicht verrutscht. Alternativ kann man das Bauteil auch erst drehen, und danach scannen (dann muss halt das Bild umgerechnet werden).

  8. #78
    Benutzer Stammmitglied
    Registriert seit
    09.03.2012
    Ort
    AN
    Alter
    51
    Beiträge
    46
    Willst du die LEDs auf Lochraster-Platinen löten, oder hast du die Möglichkeit Platinen selber zu ätzen?
    Meinst du nicht es wäre besser wenn man auf Standard 5mm LEDs setzen würde? Diese hätten deutlich mehr Leuchtkraft, folglich braucht man weniger und spart somit Geld und Arbeit.
    Selbst in den aktuellen professionellen Bestückautomaten werden immer noch die 5mm LEDs eingesetzt, und da kommt es sicher nicht auf ein paar Euro an. Ich vermute dass die Ergebnisse damit einfach besser sind, sonst wäre man da sicher längst auf SMD-LEDs umgestiegen.

    Es kommt aber auch sicher auf die benutze Kamera an. Vielleicht sind bei deiner Kamera auch weiße LEDs besser geeignet. Wenn du genug Geld hast kannst du auch Ultrahelle LEDs verwenden (dimmen kann man die ja immer noch).
    Bevor du die LEDs im großen Stil kaufst solltest du ein kleinen Testaufbau machen (z.B. 10 LEDs) und die Ergebnisse vergleichen, bei welchen die Erkennung diverser Bauteile am besten ist (auch mit verschiedenen "Dimmstufen" arbeiten, weil heller nicht immer besser sein muss (abhängig vom Bauteil).

    Den Bauteilkörper muss man übrigens nicht erkennen (wird in den professionellen Maschinen auch nicht gemacht, außer bei "Außenkontur-Erkennung", sprich bei Bein- und Anschlusslosen Bauteilen (z.B. SMD-Muttern).
    Ansonsten reicht es aus die Beine/Anschlüsse zu erkennen (welche deutlich weniger Leuchtkraft benötigen, da diese ja stark reflektieren). Die Gehäusemaße sind eigentlich nur dazu da, dass die Berechnung der Beinpositionen stattfinden kann. Wenn man einen Bestücker hat, welcher mit mehreren Köpfen arbeitet sind die Bauteilmaße natürlich auch noch nötig im den Abstand zum Nebenkopf zu berechnen (z.B. Kopf 1 und 2 haben jeweils einen großen QFP an der Nozzle, dann könnten die Bauteile anstoßen, oder auch wenn die nebeneinander passen, dann könnten die bei der Drehung aneinander Stoßen). In solchen Fällen erkennt der Bestücker das automatisch und nimmt diese Bauteile nicht zusammen auf. Da hier aber von einem Bestücker mit nur einem Kopf die Rede ist wäre das sowieso egal.

    Das A und O sind eine gescheite Bauteilerkennung. Diese ist ja nicht nur nötig um ein Bauteil gescheit auszurichten, sondern auch um defekte (z.B. stark verbogene Beine) zu erkennen.
    Geändert von Holle (31.01.2015 um 11:52 Uhr)

  9. #79
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.05.2007
    Beiträge
    170
    Servus,


    nein, natürlich schmeiße ich nicht nur rote LEDs auf die Platine! Die jetzige Kamera hat bei 630nm ihren maximalen Rotwert und die neue Kamera die ich mir ausgesucht habe (monochromatisch) bei etwa 530, also grün. Dem entsprechend überlege ich mir gerade ob und wie ich die LEDs mixen möchte. Vielleicht wird es statt rot auch einfach grün. Das ist das Problem der Farbkameras - zu nichts zu gebrauchen außer um Farbe zu erkennen. Vielleicht ist es wirklich besser keine SMD LEDs zu nehmen - Die THT Bauteile haben einen sehr viel kleineren Abstrahlwinkel, auch wenn mich die Durchstecktechnik ziemlich nervt. Sei es drum, nehme ich eben grüne LEDs - Passt genauso. (Ja, ich habe mich wirklich beim Schreiben der Antwort mitten im Satz umentschieden )
    Bin gerade dabei die Bauteile zu platzieren und einen kleinen Microcontroller zu verbauen mit dessen Hilfe dann verschiedene Helligkeiten und Triggermodi eingestellt werden können. Morgen sollte der Blitz fertig sein, dann geht der Auftrag für fünf Platinen direkt raus.

    Wieso will ich es so hell? Deswegen: http://placerbot.org/Testsetup/L6470...llax_error.jpg
    Selbst mit Blende 14 ist die Tiefenschärfe noch so verdammt gering, dass es keinen Sinn hat, das Bauteil mit der Hand vor die Kamera zu platzieren. Ich möchte in der Lage sein bei Blende 22 ein gut ausgeleuchtetes Bild zu haben - Und selbst dann habe ich einen Fokusbereich von ~ 4mm in dem das Bauteil scharf ist. Viele Kameras sind eben auf Rot empfindlich, daher ist die Farbe ziemlich beliebt.

    Die Funktionsweise der Kalibration ist mir klar - alleine die Umsetzung ist das Problem. Ich bin kein Programmierer und habe daher ziemliche Probleme die Library zum laufen zu bringen. Ständig wirft der Linker Fehler weshalb ich auch zu nichts gekommen bin außer hohem Blutdruck. Leider ist es nicht ganz so einfach wie du es dir vorstellst, dass man "nur" zwei Größen vergleicht. Schau dir mal diese Präsentation an, die erklärt das recht gut: http://cvpr.uni-muenster.de/teaching...librierung.pdf
    Problematisch wird es dann wenn man noch die Verzerrungen durch das Objektiv herausrechnen "darf". Aber bei knappen 30mm dürfte das schon nicht mehr der Fall sein.

    Der Scan nach der Lagekorrektur wäre lediglich zur Bestätigung und Fehleranalyse nötig. Je mehr Punkte man hat um die Position zu verifizieren desto besser. Vor allem am Anfang. Wenn man dann mehr Erfahrung mit der Erkennung hat kann man immernoch die Featureanzahl reduzieren.


    Liest eigentlich noch jemand mit und möchte seinen Senf dazugeben? Wäre schön wenn das nicht nur ein Dialog bleiben würde!

  10. #80
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    37
    Beiträge
    5.082
    Ich lese interresiert mit, kann aber leider nichts dazu beitragen. Ich werde auch in näherer Zukunft keinen Automaten bauen. Habe noch zuviel andere Dinge fertig zu stellen und benötige zurzeit auch keinen.

    Wenn ich weiterhelfen kann werde ich es auch machen, habe aber mit Kameras bzw deren Auswertung noch nichts gemacht, leider.

    MfG Hannes

Seite 8 von 10 ErsteErste ... 678910 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress