Projekt Schraubenerkennung / -sortierung

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Guten Morgen ins Forum,

    vielleicht erstmal zu mir:

    Ich bin kompletter Neuling auf dem Gebiet Raspberry - ich beschäftige mich mit der Thematik im Rahmen meines Masterstudiengangs.

    Für den Masterstudiengang habe ich mich im Zuge der E-Mobilität in der Autobranche entschieden - studiert habe ich noch Maschinenbau und entwickle seitdem am Verbrennungsmotor.

    Mit Programmierung bin ich in all meinen Jahren (ich bin jetzt 40) noch nicht unbedingt warm geworden...

    Aber man wächst mit seinen Aufgaben...heißt es zumindest :)

    Ich habe die Aufgabe bekommen u.A. eine Objekterkennung von Schrauben mit dem Raspberry umzusetzen.

    Geplant ist, dass die Schrauben auf einem Förderband ankommen und ich dann über ein Programm entscheide, ob es sich um eine M3, M4 oder M5 Schraube handelt...

    Soweit so gut...ich habe den Pi4 und die NoIR Camera V2 zur Vefügung.

    Abhandeln würde ich es gerne unter Python...

    Aber ich finde aktuell noch keinen wirklichen Ansatz, wie ich mich dem Thema nähere...

    Seiten wie http://www.pyimagesearch.com/ habe ich schon durchgeklickt, aber mir fehlt grad noch die Herangehensweise.

    Kannst mir vielleicht jemand von euch hilfreiche Tipps geben, wie ich mich dem Thema nähern kann?

    Viele Grüße...und vorab vielen Dank

    Matti

  • Hallo,

    liegen die Schrauben geordnet und immer gleich auf dem Förderband oder wild durcheinander?

    Der Schraubentyp ist immer der gleiche und die Schrauben unterscheiden sich nur durch die Größe?

    Ich hab leider keine Erfahrung mit Objekterkennung, aber für Python gibt es das OpenCV-Modul. Vielleicht hilft dir das weiter.

    Mit Programmierung bin ich in all meinen Jahren (ich bin jetzt 40) noch nicht unbedingt warm geworden...

    Für den Einstieg in Python lohnt es sich, das offizielle Python-Tutorial durch zuarbeiten.

    Grüße

    Dennis

    🎧 With the music execution and the talk of revolution, it bleeds in me and it goes 🎧

  • Hallo Dennis,

    danke schon einmal für deine Antwort - und die Links :)

    Bzgl. Schraubenposition: vorgesehen ist, dass die Schrauben durch einen vorgeschalteten Abstreifer immer sicher liegen und einigermaßen in Position sind. Allerings ist nicht sicher gestellt, wo der Schraubenkopf zum Liegen kommt - d.h. er kann u.U. um 180° gedreht sein. Der Schraubentyp ist immer der Gleiche...unterscheiden werden sich die Schrauben nur in der Größe.

    Viele Grüße

    Matti

  • Hallo Matti,

    muss die Erkennung optisch sein ?

    Wenn’s nur um die Größe geht, könntest Du die Schrauben auch durch einen offenen Kondensator fahren lassen und die Frequenzverstimmung eines angeschlossenen Schwingkreises messen. Die Änderung des Dielektrikums sollte für eine Unterscheidung ausreichend sein.

    Gruß, Holger

    "Probleme kann man meist nicht mit derselben Denkweise lösen, durch die sie entstanden sind."

    Wetterstation Nievenheim

  • Ich würde ein Referenzbild des Hintergrundes ohne Schraube aufnehmen und dann die Abweichungen zwischen dem jeweiligen Bild mit Schraube vom Hintergrundbild berechnen lassen. Anschließend kannst du im errechneten Differenzbild einfach die Anzahl der weißen oder schwarzen Pixel ausgeben lassen. Die dürfte relativ eng mit der Größe der jeweiligen Schraube korrelieren.

    Errechnung der Differenzbildes:

    http://https//stackoverflow…ween-two-images

    Ermittlung der Zahl veränderter Pixel:

    https://stackoverflow.com/questions/4583…pixels/45837323

  • Wenn’s nur um die Größe geht, könntest Du die Schrauben auch durch einen offenen Kondensator fahren lassen und die Frequenzverstimmung eines angeschlossenen Schwingkreises messen.

    stimmt Objekterkennung muss ja nicht optisch sein! (hatte ich nicht bedacht!)

    Ich habe die Aufgabe bekommen u.A. eine Objekterkennung von Schrauben mit dem Raspberry umzusetzen.

    dann wäre auch wiegen möglich, einfach einzeln über eine Waage.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Guten Morgen zusammen,

    super - vielen Dank für die vielen hilfreichen Tipps.

    Genial, wieviel Hilfestellung hier kommt.

    Was hab ich gestern gemacht?

    Ich hab jetzt einmal versucht, durch Referenzvergleich die Größe zu berechnen.

    Wahrscheinlich nicht sehr elegant - aber bisher funktioniert es sehr gut.

    Ich werde heute aber mal versuchen, die verschiedenen Lösungsansätze von euch weiterzuverfolgen...

    Mein nächster Problempunkt wäre jetzt aber, die Schrauben im Anschluss von einem Robbi entnehmen zu lassen und dann sortenrichtig abzulegen.

    Habt ihr mir brauchbare Tipps, wie ich die Position der Schraube sicher erkennen / bestimmen kann und dem Robbi den Angriffspunkt weitergebe?

    Ich müsste auch irgendwie erkennen, wo der Schraubenkopf ist und wo der Schraubenschaft...angreifen soll der Robbi am Schaft...

    Wenn ich das geschafft habe, dann muss ich mich dem Robbi widmen...

    Ihr seht...noch ein langer Weg :)

    Vielen Dank vorab schon einmal für eure Tipps!

    Grüße Matti

  • Habt ihr mir brauchbare Tipps, wie ich die Position der Schraube sicher erkennen / bestimmen kann und dem Robbi den Angriffspunkt weitergebe?

    Ich müsste auch irgendwie erkennen, wo der Schraubenkopf ist und wo der Schraubenschaft...angreifen soll der Robbi am Schaft...

    dazu gab es mal ein Video, Roboter sortiert Objekte, aber vergessen wo das war.

    Der Weg war so, Objekt liegt (einzeln), Standbild aufnehmen, Mustererkennung mit Kantenverstärkung, Objekt aufnehmen und der Arm dreht passend.

    Spoiler anzeigen

    https://winfuture.de/videos/Hardwar…ende-18970.html

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne deine Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklärst du dich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    https://www.robotik-produktion.de/robotik-und-pr…tuitiver-griff/

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Moin.
    Da es eine Stuidienaufgabe ist kann man es so machen.

    Andererseits gibt es Zuführsysteme, so Rütteltransportierer, welche die Schrauben schon sortiert nach Größe und auch in einer definierten Position zuführen. Für die Steuerung des Robby gibt es dann auch noch Professionelle Systeme, z.B. von SICK, welche die entsprechenden Schnittstellen zu den Robbys hat, die für nichts anderes gebaut wurden als Lageerkennung. Die könnten auch noch den Typ der Schraube erkennen. Manche Lesen sogar noch den Kopf ob es sich wirklich um eine 10.8 und nicht eine 8.8 handelt.
    Das selber zu programmieren, Hut ab. Die fertigen Dinger zu konfigurieren ist schon einer Herausforderung :)
    Wünsche dir viel Erfolg.

    PS: Arbeite auch in der Automobilindustrie.

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

  • Der Schraubentyp ist immer der Gleiche...unterscheiden werden sich die Schrauben nur in der Größe.

    Also damit ist gemeint, dass es entweder immer nur M3 oder M4, Mxx Schrauben sind und nur nach Länge sortiert werden muss? Eine Mischung der Schrauben kann nicht vorliegen.

    Habe ich das richtig verstanden?

    Diesen Anwendungsfall hätte ich nämlich aktuell (also nicht dass ich es bauen muss, aber es wär praktisch zu haben).

    Erst Schrauben nach dem jeweiligen Mxx Typ sortieren und anschließend noch nach Länge.

  • Also damit ist gemeint, dass es entweder immer nur M3 oder M4, Mxx Schrauben sind und nur nach Länge sortiert werden muss? Eine Mischung der Schrauben kann nicht vorliegen.

    tja wenn sich der Matti2016 wenigstens artikulieren könnte müssten wir nicht raten!

    Jeder versteht was anderes!

    Der Schraubentyp ist immer der Gleiche...unterscheiden werden sich die Schrauben nur in der Größe.

    das KANN bedeuten es sind immer nur M3 oder M4 in der gleichen Länge vorhanden und soll M3/M4 unterschieden werden,

    das KANN bedeuten es sind immer nur M3 in verschiedenen Längen vorhanden und sollen unterschieden werden,

    das KANN bedeuten es sind immer nur M4 in verschiedenen Längen vorhanden und sollen unterschieden werden,

    eine fröhliche Salamitaktik oder getrollt oder Defizite in der Satzbildung :conf:

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • ...sorry, die Schraubenbezeichnung war wohl wirklich zu unpräzise...

    Also es werden immer Torxschrauben sein.

    Somit sollte ich mit einer Kamera auskommen (nach meinem Verständnis :-)) - und benötig keine 90° versetzten Kameras um den Kopftyp zu erkennen.

    Die Schrauben unterscheiden sich dann nur in der Länge bzw. metrischen Abstufung.

    D.h. die Auswahlmöglichkeiten, die zur Verfügung stehen wären M3, M4 oder M5 - und über die Kamera soll dann entschieden werden, um welches MX es sich handelt.

    Besser verständlich?

    Viele Grüße

  • ...nochmal ich :)

    Also ich bin mir nicht sicher, ob ich mit openCV beim Thema Positionsbestimmung der Schraube richtig bin.

    Alles was ich bisher finde bezieht sich auf tracking und damit auf Bewegungen verfolgen.

    Wie oben schon richtig erwähnt wurde - in meinem Fall handelt es sich um ein Standbild.

    Anhand dieses Standbildes soll entschieden werden, welche metrische Abstufung die Schraube hat und wo sie liegt.

    dazu gab es mal ein Video, Roboter sortiert Objekte, aber vergessen wo das war.

    Der Weg war so, Objekt liegt (einzeln), Standbild aufnehmen, Mustererkennung mit Kantenverstärkung, Objekt aufnehmen und der Arm dreht passend.

    ...Standbild und Mustererkennung mit Kantenverstärkung kann ich noch nachvollziehen bzw. mir anhand von Beispielen erklären.

    Beim Thema Objekt aufnehmen hänge ich gerade aber komplett...

    Vielleicht seh ich gerade aber auch den Wald vor lauter Bäumen nicht...wer weiß :)

    Viele Grüße

  • Besser verständlich?

    nicht wirklich ;(

    Die Schrauben unterscheiden sich dann nur in der Länge bzw. metrischen Abstufung.

    D.h. die Auswahlmöglichkeiten, die zur Verfügung stehen wären M3, M4 oder M5

    mach mal eine Tabelle denn logisch gibt es da noch zu viele Variablen.

    haben alle je M3, M4 oder M5 dieselbe Länge oder kann jeder dieser M? auch noch verschiedene Längen haben?

    An Aufgabenstellung verständlich aufzubauen haperts gewaltig, wie willst du da arbeiten? :conf:

    (so kannst du doch keine Aufgaben lösen wenn noch nicht mal die Aufgabe richtig benannt wird) :-/

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Vielleicht seh ich gerade aber auch den Wald vor lauter Bäumen nicht...wer weiß :)

    offensichtlich

    Beim Thema Objekt aufnehmen hänge ich gerade aber komplett...

    nicht nur da ;) , vielleicht ist diese Aufgabe nichts für dich, scheint so! :no_sad:

    Ich bin kompletter Neuling auf dem Gebiet Raspberry

    das hat mit dem Raspi erst mal nichts zu tun, der kommt erst VIEL später!

    Masterstudiengangs

    das macht mir echt Sorgen! :angel:

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • ...Kritik kam an :)

    Die Anforderung lautet aktuell "nur" Unterscheidung zw. M3, M4 und M5.

    Die Länge der jeweiligen Schraube wurde nicht weiter detailliert.

    Daher würde ich zwei Wege beschreiten wollen:

    Lösungsweg 1: alle Schrauben haben die gleiche Länge. Da fehlt mir aber die Erfahrung, ob der Aufbau gut genug ist, um die
    Durchmesserunterschiede von 1mm zu detektieren...

    Lösungsweg 2: würde ich beschreiten, wenn ich sehe, dass die 1mm Durchmesserunterschiede nicht sauber erkannt werden. Dann

    verändere ich die Länge entsprechend der Tabelle.

    Vielleicht noch ein paar Infos zum prinzipiellen Aufbau...generell ist es eine Teamarbeit...bestehend aus:

    Schritt 1: Schraubenzufuhr mittels kleinem Auto und abladen auf Förderband

    Schritt 2: Förderband transportiert Schrauben zu Lichtschranke (auf der Strecke Vereinzelung und Vorpositionierung über Leitbleche)

    Schritt 3: Lichtschranke springt an - Kamera macht Bild

    Schritt 4: Schraubenerkennung und Positionserkennung

    Schritt 5: Robi mit Greifarm fasst Schraube, dreht Schraube und legt diese in ein entsprechendes Magazin (M3, M4, M5) ab

    Hardware ist schon vorgegeben - daher auch ein Robbi mit Greifarm.

    Meine Aufgaben sind Schritt 4 und 5.

    Viele Grüße

  • ..Kritik kam an :)

    OK freut mich! (ehrlich) :thumbup:

    Meine Aufgaben sind Schritt 4 und 5.

    ich hatte ja Links geschickt und IMHO kommt man da in der Suche weiter, Standbild aufnehmen, Objekterkennung mit Bild aufnehmen schärfen, Differenz bilden und im Raster die Pixelauflösung ist bekannt und >>als 1mm Unterschied, so ist M3 M4 oder M4 M5 natürlich dann auch M3 M5 eindeutig unterscheidbar!

    Es gab im Netz mal eine Anleitung WIE man das löst, deswegen musst DU suchen, das kann oder will dir keiner abnehmen! :danke_ATDE:

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Passt - dass mir jemand die Suche abnimmt wollte ich auch gar nicht :)

    Die Herangehensweise, die du mir oben geschickt hast leuchtet mir auch ein...und ist soweit auch nachvollziehbar.

    Ich bin jetzt im ersten Schritt aber mal den Weg gegangen, über einen Referenzgegenstand im Bild auf die Größe der Schraube zu schließen...

    Wo mich der Weg aber verlässt ist das Thema Positions-/Lageerkennung der Schraube auf dem Band.

    Hier finde ich immer nur Tutorials bzgl. Tracking - und das ist nicht, was ich brauche.

    Bei mir steht das Band so lange, bis die Schraube gegriffen wurde.

    Ich muss die Position in x/y Koordinaten soweit bestimmen können, dass ich diese dem Robbi übergeben kann.

    Wahrscheinlich ist das in deinem Lösungsansatz schon irgendwo mit drin oder kann abgeleitet werden und ich hab es bisher nur nicht verstanden....ich muss mir einfach noch ein bisschen Zeit nehmen, über die Sache nachzudenken - vielleicht war ja mein Ansatz mit dem Referenzgegenstand auch nicht der richtige Weg...

    Danke dir auf jeden Fall für den Input.

    ...und zum Masterstudiengang...

    Ich habe ja schon geschrieben, dass ich kompletter Neuling bzgl. Programmierung bin...und ich bin mir auch sicher, dass ich das später in meinem Arbeitsleben nicht machen werde, weil ich es einfach nicht kann :)

    Aber im Studiengang gehört diese Vorlesung eben auch zum Programm...

    Viele Grüße

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!