Algorithmus zum Fügen von Lego-Steinen mittels 2-Backen-Parallelgreifer

stift

Level-1
Beiträge
261
Reaktionspunkte
17
Zuviel Werbung?
-> Hier kostenlos registrieren
Hey,

ich bin seit Tagen am grübeln bezüglich einer Programmierstrategie zum Fügen von Lego-Steinen mittels 2-Backen-Parallelgreifer.

Wir wollen mit einem Demonstrator Lego-Steine zusammenbauen. Dabei soll der Anwender in CAD ein Lego-Gebilde konstruieren und dieses soll dann automatisch vom Roboter zusammengebaut werden.
Dazu müssen wir auch überprüfen, ob die Teile mittels Zwei-Backen-Parallelgreifer überhaupt greifbar sind.
Im angehängten PDF seht ihr die Lego-Steine welche zur Verfügung stehen sowie die verschiedenen Greifer.
Auf Seite 3 ist grafisch dargestellt was ich ermitteln möchte. Welche Zusammensetzung ist fügbar und welche nicht.

Die 4 4-er-Steine in der 1ten Zeile in der 2ten Spalte beispielsweise sind nicht fügbar, da der Greifer das letzte Teil nicht mehr absetzen kann, da egal in welcher Reihenfolge die Steine gesetzt werden immer ein Stein stört, welcher beim Fügen des letzten Steins mit dem Greifer kollidiert.

Ich hatte mir folgendes überlegt:
Die Konfiguration ist genau dann nicht fügbar, wenn diese Kombination mehr als einen Baustein aufweist, welcher nicht direkt greifbar ist und welcher keine direkt greifbaren Nachbarbausteine
aufweist, welche eine Greifposition verdecken.

Damit meine ich:
Ich schaue zuerst welche Teile frei (d.h. direkt greifbar) sind. Diese Steine habe ich alle grün markiert. Diese Steine sind für den Greifer frei zugänglich und stellen kein Problem dar.
Das Problem sind die orangen Teile. Wenn ein oranger Stein grüne Nachbarsteine aufweist, welche eine Greifposition verdecken, dann kann dieser Stein trotzdem gesetzt werden.
Alle anderen orangen Teile sind nach diesem Algorithmus nicht fügbar.

Was auf den ersten Blick ganz gut ausgeschaut hat ist aber leider nicht ganz korrekt.
Wer die Zusammensetzung in der ersten Spalte in der letzten Zeile anschaut stellt fest, dass diese eigentlich fügbar ist.. in der Reihenfolge 1-2-3-4... Gemäß meines Algorithmuses wäre diese Zusammensetzung aber leider nicht fügbar :/

Alle möglichen Fügereihenfolgen durchtesten funktioniert leider auch nicht. Da wird der Rechenaufwand einfach viel zu groß.

Jetzt habe ich mir gedacht, vielleicht hat von euch da einer eine Idee und Lust mit mir zu grübeln :)
Ich würd mich über neue Ideen und Sichtweisen freuen.
 

Anhänge

  • Greifersystem - Algorithmus.pdf
    850,9 KB · Aufrufe: 80
Zuviel Werbung?
-> Hier kostenlos registrieren
Haben wir uns auch überlegt.
Die Noppen sind 2mm hoch und an der engsten Stelle 3mm auseinander. Könnte also gerade so gehen.
Wobei ich ein bisschen Angst habe, dass das dann etwas wackelig wird und wir öfters nen Stein verlieren...
Meinst du das geht zuverlässig bei so kleinen Flächen?
 
Wobei dann der Abstand zwischen den Noppen zweier Bausteine 4mm beträgt.
Der Hub unserer Greifer + die Dicke der Greiferbacken dürften dann auch nicht mehr als 4mm betragen.
Sonst kollidieren ja Greiferbacke + Noppen der anderen Bausteine.
Dann wären wir wieder bei dem Reihenfolge-Problem glaube ich.
 
Ich bin kein Werkzeugmacher, denke aber, daß ein solcher spezieller Greifer machbar ist. Bei der Leiterplattenbestückung werden noch viel kleinere Teile zuverlässig gegriffen. Vorstellbar ist auch ein Vakuum-Greifer.
Ich würde den Greifer nur 2 nebeneinanderliegende Noppen greifen lassen, dann kann eine Greiferbacke bis zu einem halben Stein "dick" sein und trotzdem noch neben einer bereits stehenden "Wand" montieren, auf einer Seite kann er ja überstehen. Eventuell reicht es auch, nur eine Noppe zu greifen, wenn man die mögliche Verdrehung kontrolliert oder verhindert.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Stift,

schön, mal wieder von dir zu lesen ...
Ich stimme Harald da zu. Mein erster Ansatz wäre hier auch, einen Greifer zu haben, der den kleinsten Legostein sinnvoll greifen und überall wo sinnvoll ablegen kann. Du kommst sonst in zu viele "wenn's und aber's", die du in deinem Programm dann irgendwie abfangen bzw. berücksichtigen mußt ...

Gruß
Larry
 
an den "Greifer" einen Legostein fix montieren, zum wider abstoßen einen Stößel durch diesen Stein nach unten schieben.
 
Ich hätte folgende Idee, läuft auf einen rekursiven Algorithmus raus:

1) Alle Steine die direkt greifbar sind (grüne Steine) suchen, und auf einer Liste (Stapel) ablegen
2) Alle grünen Steine aus der Ebene entfernen
3) Solange noch Steine da sind, zurück zu 1)

In deiner Beispielkonfiguration die bisher nach deinem Schema nicht lösbar ist, würde es so ablaufen:
- Stein 4 ist grün, auf Stapel ablegen (4) und entfernen
- Stein 3 ist grün, auf Stapel ablegen (4-3) und entfernen
- Stein 2 ist grün (1 auch), auf Stapel ablegen (4-3-2) und entfernen
- Stein 1 ist grün, auf Stapel ablegen (4-3-2-1) und entfernen
- Kein Stein mehr da, fertig!

Zum Ablegen der Steine muss dann die Liste von hinten nach vorne abgearbeitet werden.

Müsste man gucken ob man damit wirklich alle Probleme gelöst bekommt. Sowas kann man ja schön am PC durchsimulieren.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hey,
herzlichen Dank euch allen für die ganzen Ideen.
Ich bin immer wieder begeistert wie toll das hier im Forum funktionert.
Vor allem wenn man vor einem Problem steht und schon so eine Art Tunnelblick entwickelt hat.
 
Zurück
Oben