PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : x,y,z Achsen



C3POvomRhein
26.11.2018, 14:15
Hallo Zusammen, also ich bin totaler Neuling in der Robotik und im RoboterNETZ.

Ich habe einen Roboterarm der mit 3 Nema 17 und einem Nema 11 mit Planetengetriebe (für den Greifer) bewegt wird.

Alles funktioniert so weit so gut, ich kann den Arm über die Software auch steuern, allerdings nicht automatisieren.

Ich möchte gerne ein Schachfeld mit Schnappsgläsern vollstellen auf jeders Feld eins, der Arm muss dann wissen wo ein Glas steht und wo nicht damit er die Gläser positionieren kann und dann auch noch abräumen.

Beim Abräumen muss er sie auf den Tisch in einem markiertem Feld neben dem Schachbrett abstellen.

Kann mir jemand einen TIpp geben wie ich da am besten dran gehe, wo ich anfange, welche Software ich benötige usw.?

Danke schon mal vorab an alle die Helfen :-)

LG
Bora

HaWe
26.11.2018, 14:27
hallo,
die Rechnungen dazu heißen "Direkte oder Vorwärts Kinematik (Forward Kinematics)" und "Reverse Kinematik (Kinematics)" -
Vorwärts und v.a. die Reverse sind so ziemlich das schwierigste, was man sich so vorstellen kann, es wird meist über Matrizentransformationen gelöst 8)

Einen eindrucksvollen Einblick erhältst du hier über die Denavit-Hartenberg-Transformation
https://de.wikipedia.org/wiki/Denavit-Hartenberg-Transformation :o :shock:

- ich kenne bisher keine Arduino-Lib etc., die das anfängertauglich als fertiges Paket anbietet :(

C3POvomRhein
26.11.2018, 14:34
Hi HaWe,

vielen Dank für deine Unterstützung. Gibt es den nur kein anfängertaugliches Paket, oder gibt generell nichts und ich muss mich in die Denavit-Hartenberg-Transformation einarbeiten?
LG

shedepe
26.11.2018, 14:45
Mit ROS und TF2 musst du das nur in URDF modellieren und kriegst zumindest die Vorwärtskinematik geschenkt (Die inverse auch, aber die ist tricky, weil nicht eindeutig).
Ist aber auch nichts wo man eben mal schnell einarbeitet.Vorallem löst, das immer noch nicht das eigentliche Bahnplanungsproblem.
(Um das einarbeiten kommst du so oder so nicht drum rum: Du machst da grade ein riesen Fass auf ;) )
Denavit-Hartenberg ist nur eine bestimmte Konvention Roationen bzw. Translationen die ein Gelenk ausführen kann zu formulieren um die Menge an Rechenoperation gering zu halten. Ganz allgemein geht das mit Rotations und Translationsmatrizen, aber Denavit-Hartenberg bietet sich da natürlich an.



Was du machen könntest: Merke dir einen Weg zu jeder Position des Schachbretts und fahre den Arm dorthin, dann wieder zurück so einer Null-Position und dann an die nächste Postion.

Festzustellen wo ein Glas steht wirst du ohne extra Sensoren auch nicht wirklich umsetzen können. Das einfachste wäre ein Schalter im Schachbrett der gedrückt wird wenn ein Glas drauf steht. Ansonsten Kamera, Bilderkennung mit OpenCV.

Ach noch eine Anmerkung: Vorwärts und Inverse Kinematik sind bei weitem nicht das Schwierigste, was man sich vorstellen kann (eben weil man es mit Matrizen schön einfach abbilden kann), aber schwierig genug um einen eine Weile zu beschäftigen ;)

HaWe
26.11.2018, 14:48
ich kenne ein paar Versuche, ohne dass sie wirklich ausgereift sind, und wenn du was von Trigonometrie, Matrixalgebra und analytischer Geometrie verstehst, kannst du sie bestimmt für deine Zwecke ausbauen oder anpassen:

https://github.com/henriksod/Fabrik2DArduino

https://github.com/henriksod/6DOFLib/blob/master/src/6dof/src.ino

Eine look-up-Tabelle, in der du alle x,y,z Positionen und alle zugehörigen Armwinkel abspeicherst, ist aber sicher der einfachste Weg.

Moppi
26.11.2018, 16:18
@C3POvomRhein

Mein erster Versuch wäre, den Arm über das Schachbrett (und über die Gläser oder andre Gegenstände) zu führen und eine Entfernungsmessung nach unten vorzunehmen. Egal, ob jetzt akustisch oder optisch - da müsste man schauen, was besser funktioniert. Dann würde ich die gefundenen Gegenstände speichern und hinterher alles abräumen oder direkt abräumen, nachdem ein Gegenstand erkannt ist.
Weiterhin wäre wohl die einfachste Variante, den Arm manuell auf jedes Feld zu steuern und die ermittelten Bewegungswerte für jedes Feld in einem Array zu speichern, so kann man sie hinterher in jeder beliebigen Reihenfolge abfragen und ansteuern. Was das Rückführen des Armes angeht, kann man - als eine Möglichkeit - dieselben Bewegungswerte für die einzelnen Motoren einfach rückwärts abarbeiten, um am Ausgangspunkt zu landen.


MfG

HaWe
26.11.2018, 17:51
@C3POvomRhein
Weiterhin wäre wohl die einfachste Variante, den Arm manuell auf jedes Feld zu steuern und die ermittelten Bewegungswerte für jedes Feld in einem Array zu speichern, so kann man sie hinterher in jeder beliebigen Reihenfolge abfragen und ansteuern.
MfG

das ist genau mein Vorschlag mit der Look-up-Table von xyz Objekt-Koordinatenpositionen und zugehörigen Achsgelenk-Winkelstellungen , wie ich oben beschrieben habe ;)

Moppi
26.11.2018, 18:19
Ja, ich weiß. Wenn es mehrere erklären, wird das Bild davon schärfer. :)
Obwohl, ich würde sogar nur die 4 Ecken des Brettes anfahren, dann habe ich die Rahmenwerte für alle Motoren, ab der Ausgangsposition. Und die Werte für die Motoren, um die einzelnen Felder anzusteuern, kann man dann ausrechnen, anhand der vier Bezugspositionen.

MfG

C3POvomRhein
01.12.2018, 19:58
Wow, so viele Antworten, vielen Dank! Ich bin mich gerade am einlesen und werde berichten.