PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe für Inverse Kinematik



fredyxx
17.05.2016, 18:28
Hallo,

ich habe folgendes Problem:

Ich habe 2 Gelenke (P0 und P3) eines Baggerarms, die je über einen Zahnstangenantrieb (lzahn3 und lzahn4) mit einem Schrittmotor bewegt werden.

Jetzt möchte ich einen Punkt (P1) in einem x/y Koordinatensystem vorgeben, zu dem das Gelenk der Baggerschaufel sich bewegen soll, wenn der Nullpunkt des Koordinatensystems in dem Drehpunkt des Arms am Baggerchassis ist ( P0).

31606

31607

Nun kam an anderer Stelle dieses Forums der Vorschlag, das mit Inverser Kinematik zu lösen. Wenn ich danach Google, habe ich den Eindruck, dass man mit dem Thema ein ganzes Semester füllen kann.

Da mein Problem aber nur 2 - und nicht 3-dimensional ist, meine Frage:

gibt es für dieses 2-dimensionale Problem irgendwo eine vereinfachte Erklärung der Inversen Kinematik, die man auch mit 66 Jahren noch verstehen und deren Berechnung ich auch noch in einem Arduino realisieren kann ? :confused:

Gruß

fredyxx

HaWe
17.05.2016, 18:58
Wenn ich danach Google, habe ich den Eindruck, dass man mit dem Thema ein ganzes Semester füllen kann.


ja, vlt sogar mehrere Semester....

Jacobi Transformation und Lagrange Multiplikatoren sind sicher etwas anspruchsvoll.
http://image.informatik.htw-aalen.de/~thierauf/Seminar/Ausarbeitungen-14WS/Kinematik.pdf

Aber guck dir mal diese 3 Links an (englische Artikel zu "Inverse Kinematics" sind oft etwas brauchbarer, habe ich den Eindruck):

http://www.learnaboutrobots.com/inverseKinematics.htm

http://de.mathworks.com/help/fuzzy/examples/modeling-inverse-kinematics-in-a-robotic-arm.html?requestedDomain=www.mathworks.com (edit: dies nur illustrativ oder für eigene Iterationen)

https://oscarliang.com/inverse-kinematics-and-trigonometry-basics/

Ist da schon was dabei, was du brauchen und worauf du aufbauen kannst?

malthy
17.05.2016, 19:19
Hallo!

Hast Du denn eine Positionsregelung für die Freiheitsgrade? Die hat erstmal nichts mit der IK zu tun sondern sorgt nur dafür, dass der jeweilige Freiheitsgard die Stellung einnimmt, die Du möchtest, und diese auch gegen äußere Störungen (insb. Belastung) hält. Wenn das soweit steht, klingt mir die IK für Dein Problem aufs erste Lesen relativ simpel. Zwei Gelenke in der Ebene sollten sich mit einfacher Trigonometrie erschlagen lassen. Für das klassische Hexapodenbein (zwei Gelenke in der Ebene und einen "Dreher" an der Basis) habe ich das vor ein paar Jahren mal gerechnet (http://www.mtahlers.de/index.php/robotik/hexapode/inverse-kinematik), vielleicht hilfts Dir ja. Klar, komplizierter geht immer, der Vorteil so eines simplen Ansatzes ist, dass sich das Ganze problemlos auch auf kleinen Controllern implementieren lässt.

Viele Grüße
Malte

fredyxx
17.05.2016, 21:43
Hallo!

Hast Du denn eine Positionsregelung für die Freiheitsgrade?
Viele Grüße
Malte

Ich weiß zwar nicht was du damit meinst, aber habe ich sicher noch nicht, da ich erst mal die Mechanik fertig habe, die Schrittmotoren steuern kann und erst seit Kurzem begonnen habe, mich mit der Arduino Software anzufreunden.

Das Andere werde ich mir ansehen.

Gruß
fredyxx

malthy
17.05.2016, 22:25
Hi!


Ich weiß zwar nicht was du damit meinst [...]

Naja, ich hatte es ja schon folgendermaßen umrissen:


[...] sorgt [...] dafür, dass der jeweilige Freiheitsgard die Stellung einnimmt, die Du möchtest, und diese auch gegen äußere Störungen (insb. Belastung) hält.

Das wäre der nächste logische Schritt bei Deinem System. Hast Du irgendein Positionsfeedback in den Gelenken? Weißt Du (dh das System) wie ein Gelenk aktuell steht? Im einfachsten Falle kann der Positionssensor ein Potentiometer sein, aber auch magnetische Drehencoder lassen sich recht leicht verwenden. Wenn Du die Information über die aktuelle tatsächliche Gelenkstellung hast, kannst Du einen Regler aufbauen, indem Du den Istwert der Gelenkstellung mit dem Sollwert vergleichst. Je größer die Abweichung ist, je schneller drehst Du den Motor. Das wäre dann ein sog. reiner P-Regler. Bei Positionsregelungen mit Schrittmotoren reicht das u. U. schon aus, um den Freiheitsgrad einigermaßen auf Position zu fahren und auch dort zu halten.

Gruß
Malte

fredyxx
17.05.2016, 22:42
Hallo Malte,

danke für dein Beispiel in deutsch.
Wenn ich das lese, dann denke ich auch, dass mein Fall dagegen recht simpel ist, zumal ich entsprechend der obigen Skizze die ganze Rechnerei bereits in Excel durchgeführt habe; allerdings bin ich da von den Fixpunkten P0 und Pf ausgegangen und habe daraus P1 errechnet.
Ich denke, ich muss das doch vom anderen Ende angehen.

Gruß
fredyxx

- - - Aktualisiert - - -


Hi!

Hast Du irgendein Positionsfeedback in den Gelenken? Weißt Du (dh das System) wie ein Gelenk aktuell steht? Im einfachsten Falle kann der Positionssensor ein Potentiometer sein, aber auch magnetische Drehencoder lassen sich recht leicht verwenden.
Gruß
Malte

Darauf wollte ich verzichten und habe deshalb Schrittmotore verwendet.
Nach einem Justiervorgang kenne ich die Position des Schaufelgelenkes und kann dann den Drehwinkel oder die Umdrehungen und damit den Weg der Zahnstange für die neue Position bestimmen. Mit Belastung hat dieser Bagger nicht zu rechnen. Für die Frage, welche Zahnstange soll welche Verstellung übernehmen, muss ich mir noch ein Verfahren überlegen.

Gruß

fredyxx
Soweit der Plan!!

womat
18.05.2016, 09:57
Hallo fredyxx,
ich habe mich auch mak mit IK beschäftigt, allerdings für einen Hexapod. Sollte aber das gleiche sein. Mir hat die Seite
http://www.mtahlers.de/index.php/robotik/hexapode/inverse-kinematik
gut weitergeholfen. Ist gut erklärt, kann man in Excel gut testen.
mfg
Wolfgang

fredyxx
18.05.2016, 11:28
Hallo,

ich glaube ich habe es dank eurer Hilfe schon mal in Excel geschafft und der bei mir noch einigermaßen vorhanden mathematischen Grundlagen. Im Vergleich zum Hexapod war es doch noch um einiges einfacher.

DANKE

Jetzt geht's ans Umsetzen im Programm.

Gruß

fredyxx