Berechnung der Jacobi-Matrix für Inverse Kinematics

19

Bei der Berechnung der Jacobi-Matrix für die analytische Lösung einer inversen Kinematik las ich an vielen Stellen, dass ich diese Formel verwenden könnte, um jede der Spalten einer Verbindung in der Jacobi-Matrix zu erstellen:

Ji=eϕi=[[ai×(eposri)]T[ai]T]

Derart , dass die Drehachse in Welt - Raum ist, ist der Drehpunkt im Welt - Raum, und wird in Welt - Raum die Position des End - Effektors.arepos

Ich verstehe jedoch nicht, wie dies funktionieren kann, wenn die Gelenke mehr als einen DOF haben. Nehmen Sie das folgende als Beispiel:

Bildbeschreibung hier eingeben

Das ist der Rotations-DOF, das ist der Endeffektor, das ist das Ziel des Endeffektors, die , und sind die Gelenke.θegP1P2P3

Wenn ich die Jacobi-Matrix basierend auf der obigen Formel für das Diagramm berechnen würde, würde ich zunächst Folgendes erhalten:

J=[((0,0,1)×e)x((0,0,1)×(eP1))x((0,0,1)×(eP2))x((0,0,1)×e)y((0,0,1)×(eP1))y((0,0,1)×(eP2))y((0,0,1)×e)z((0,0,1)×(eP1))z((0,0,1)×(eP2))z000000111]

Dies wird vorausgesetzt, dass alle Rotationsachsen und alle nur einen Rotations-DOF haben. Ich glaube also, dass jede Spalte für einen DOF steht, in diesem Fall für das .(0,0,1)θ#

Nun, hier ist das Problem: Was ist, wenn alle Gelenke volle 6 DOFs haben? Sagen wir jetzt, für jedes Gelenk habe ich Rotations-DOFs in allen Achsen, , und , und auch Translations-DOFs in allen Achsen, , und .θxθyθztxtytz

Um meine Frage klarer zu machen, nehme ich an, wenn ich die obige Formel "energisch" auf alle DOFs aller Gelenke anwenden würde, dann erhalte ich wahrscheinlich eine Jacobi-Matrix wie diese:

Bildbeschreibung hier eingeben

(Klicken für volle Größe)

Aber das ist unglaublich seltsam, weil alle 6 Spalten des DOF ​​für jedes Gelenk dasselbe wiederholen.

Wie kann ich dieselbe Formel verwenden, um die Jacobi-Matrix mit allen DOFs zu erstellen? Wie würde die jakobianische Matrix in diesem Fall aussehen?

Xenon
quelle
Eigentlich bin ich mir nicht sicher, ob ich diese Frage hier, in Mathe, in GamesDev oder in Physik hätte stellen sollen. Ich habe das Gefühl, dass ich diese Frage an der falschen Stelle gestellt habe.
Xenon
Ich denke, dein Fehler ist, dass du das a 'nicht für jeden DOF geändert hast, deshalb sehen sie alle gleich aus.

Antworten:

11

Ich muss zugeben, dass ich diese spezifische Formel nicht sehr oft gesehen habe, aber ich vermute, dass Sie sie bei mehr als einem DOF für jede Verbindung in jeder Spalte bewerten und dann (vielleicht?) Diese Ergebnisse in multiplizieren würden jede Spalte.

Aber lassen Sie mich Jacobianern einen einfacheren Ansatz im Zusammenhang mit beliebig vielen DOFs vorschlagen: Grundsätzlich sagt Ihnen der Jacobianer, wie weit sich jedes Gelenk bewegt, wenn Sie den Endeffektorrahmen in eine willkürlich gewählte Richtung bewegen. Sei die Vorwärtskinematik, wobei die Gelenke sind, der Positionsteil der Vorwärtskinematik ist und der drehteil. Dann können Sie den Jacobi erhalten, indem Sie die Vorwärtskinematik in Bezug auf die Gelenkvariablen differenzieren : f(θ)thgr ; n ] f pos f rot J = & psgr; fθ=[θ1,...,θn]fposfrotΔx

J=fθ=[fposθ1,fposθ2...,fposθnfrotθ1,frotθ2...,frotθn]
ist der Jacobian Ihres Manipulators. Wenn Sie es invertieren, erhalten Sie die inverse Kinematik in Abhängigkeit von den Geschwindigkeiten . Es kann dennoch nützlich sein, wenn Sie wissen möchten, wie weit sich jedes Gelenk bewegen muss, wenn Sie Ihren Endeffektor um einen kleinen Betrag in eine beliebige Richtung bewegen möchten (da dies auf Positionsebene effektiv eine Linearisierung wäre). : Δx
Δθ=J1Δx

Hoffe, dass das hilft.

Daniel Eberts
quelle
Danke für die Antwort! Aber das würde bedeuten, dass ich die Werte numerisch berechnen muss? Eigentlich habe ich dieses Analysebeispiel aus graphics.cs.cmu.edu/nsp/course/15-464/Fall09/handouts/IK.pdf von Folie 19 und graphics.ucsd.edu/courses/cse169_w05/CSE169_13.ppt auf Folie gesehen 78. Aus den Folien geht hervor, dass ich die numerischen Methoden möglicherweise nicht durchgehen muss. In Situationen, in denen ich nicht die tatsächlichen Funktionen zur Unterscheidung habe, kann ich diese Formel verwenden. Aber das Problem ist, was passiert, wenn ich mehr DOFs für jedes Gelenk habe.
Xenon
Wenn ich die Folien richtig verstehe, würden Sie den Fall beliebig vieler (rotierender) DOFs behandeln, indem Sie die Vektoren für jede dieser Gelenke bestimmen , wobei die Position des Gelenks ist. Wenn Sie also 46 Gelenke haben, erhalten Sie in der Tat einen Jacobi mit 46 Spalten und 6 Reihen (oder 3, wenn Sie die Ausrichtung des Endeffektors vernachlässigen). Kurz gesagt: Sie können diese Formel auf eine beliebige Anzahl von Gelenken anwenden und müssen sie nicht mit anderen Gelenken "kombinieren". P i(eiPi)Pi
Daniel Eberts
Aber was passiert , wenn ein Gelenk viele DOFs hat wie , , und translationale DOFs wie , , ? Jetzt hat jedes Gelenk 6 DOFs. Nach meinem Verständnis, wie die Jacobi-Matrix für IK funktioniert, sind die ersten 6 Spalten die Ableitungen des Endeffektors in Bezug auf die 6 verschiedenen DOFs, und diese ersten 6 Spalten sollen das erste Gelenk beschreiben. In den folgenden 6 Spalten wird die zweite Verbindung in Bezug auf die 6 Freiheitsgrade usw. beschrieben. Bedeutet dies unter Verwendung der Gleichung , dass die 6 Spalten jeder Verbindung automatisch in eine Spalte gepackt werden? θ y θ z t x t y t z ( e i - P i )θxθyθztxtytz(eiPi)
Xenon
2
Ah ich sehe. Nein, in diesem Fall würde die Formel nicht funktionieren, da sie für Drehgelenke mit einer Drehachse ausgelegt ist. Wenn Sie z. B. sphärische Gelenke behandeln möchten, benötigen Sie entweder eine andere Formel, die diesen bestimmten Gelenktyp behandelt, oder Sie benötigen eine geschlossene Form der Vorwärtskinematik des Roboters. Wenn Sie das haben, können Sie es in den Gelenken und das Jacobian erhalten. θ
Daniel Eberts
Vielen Dank! :) Ist Slide 58 in graphics.ucsd.edu/courses/cse169_w05/CSE169_13.ppt ein Hinweis darauf, dass es möglich ist, die Formel für Drehgelenke mit 3 Freiheitsgraden zu verwenden? Was bedeutet, wenn ein Gelenk keine translatorischen DOFs und nur 3 rotatorische DOFs hat, ist dies immer noch möglich? Obwohl ich nicht sicher bin, warum es nötig ist , mit verschiedenen Umdrehungen zu multiplizieren, um die verschiedenen DOFs zu erhalten. (1,0,0,0)
Xenon
2

Ihre Formel für ein 6- D- Gelenk setzt voraus, dass alle 6 Gelenke die Achse im Weltrahmen haben und dass alle Gelenke drehbar sind. Da die 6 Gelenke also identisch sind, sind auch ihre Spalten im Jacobi identisch.(0,0,1)

Angenommen, ein Gelenk hat eine Achse , die durch einen Punkt . Sei die Position des Endeffektors. Die Koordinaten von , und sind alle im Weltrahmen angegeben und werden aktualisiert, wenn der Roboter bewegt wird. Die Achse hat die Länge .r e a r e a 1arearea1

Wenn das Gelenk gewendet ist, ist die Säule des Jakobiners für das Gelenk

Jθ(a,r)=[a×(er)a]

Wenn das Gelenk prismatisch ist, ist die Säule

Jp(a)=[a0]

Angenommen, wir haben ein 6- D- Gelenk, das nicht nur kugelförmig ist, sondern sich auch im Raum übersetzen lässt. Angenommen, die Achsen des Gelenks sind , und und jedes umlaufende und prismatische Gelenk teilt sich eine Achse, so dass der Jacobi für das Gelenk wirdaxayaz

J=[Jp(ax)Jp(ay)Jp(az)Jθ(ax,r)Jθ(ay,r)Jθ(az,r)]

Die Achsen , und hängen von der Vorwärtskinematik des Roboters ab. Zur Veranschaulichung sei die Transformation des ten Gelenks im Weltrahmen gegeben durchaxayazk

Fk=i=1kLiTi

wobei die Transformationen Konstanten sind und die Transformationen von den abhängen. Sei und die Transformationen, die sich um um die Koordinatenachse (entweder , oder ) drehen und verschieben .LiTiRc(q)Pc(q)qcxyz

Sei eine mit Hilfe des Jacobi berechnete Verschiebung für das te Gelenk. Sei und aktualisiere die lokale Transformation von das Gelenk von:Δq=(Δpx,Δpy,Δpz,Δθx,Δθy,Δθz)iΔT=Px(Δpx)Py(Δpy)Pz(Δpz)Rx(Δθx)Ry(Δθy)Rz(Δθz)

TiTiΔT

In dieser Formulierung der Vorwärtskinematik sind die Achsen , und des Gelenks genau die Spalten der Rotationsmatrix von . Auch die Position ist der Translationsvektor von .a y a z i F i r F iaxayaziFirFi

Antonakos
quelle
0

Soweit ich Ihre Frage verstehe, möchten Sie die Jacobi-Matrix für das 6-DOF-Gelenk.

Lassen Sie mich mit den Grundlagen der Robotik beginnen. Sie befinden sich in der unterschiedlichen Anfangsphase des Robotiklernens. Sie müssen verstehen, dass jedes Gelenk einen einzelnen DOF darstellt, entweder es wäre ein drehbares oder ein prismatisches Gelenk.

Was das Kugelgelenk anbelangt, so kann es in ein Drehgelenk mit drei zueinander senkrechten Achsen umgewandelt werden. Nun haben Sie Ihr Kugelgelenk vereinfacht.

Weiter zur Jacobi-Matrix. Es enthält 6 Zeilen. Die ersten drei Zeilen geben die Ausrichtung und die letzten drei Zeilen die Position in Bezug auf ein bestimmtes Koordinatensystem an. Jede Spalte in der Matrix gibt eine einzelne Verbindung an. Also die Anzahl der Joint / DOF haben Sie die gleiche Anzahl Spalte, die Sie in der Jacobian Matrix haben.

Hier ist die klarere Sicht auf Ihre Frage: Ein einzelnes Gelenk erfüllt niemals mehr als einen DOF, da dies das Gelenk kompliziert und eine präzise Steuerung niemals erreicht wird. Auch wenn wir hypothetisch eine Verbindung mit mehr als einem DOF betrachten, müssen Sie diese Verbindung in mehrere Verbindungen mit jeweils 1 DOF umwandeln, um die Mathematik und die Lösung zu vereinfachen.

Idealerweise arbeitet 6 DOF Roboter mit 6 Drehgelenken mehrheitlich an den eigentlichen Problemen. Aber gemäß Ihrer Frage haben Sie 6 Gelenkroboter in Betracht gezogen, wobei jedes Gelenk 3 DOF hat, was 18 DOF-Roboter ergibt. Dies ergibt einen redundanten DOF (dh 18-6 = 12 redundanten DOF). Um den Roboterendeffektor an jedem Ort mit jeder Ausrichtung zu erreichen, haben Sie unendlich viele verschiedene Lösungen (Lösung bedeutet Drehung jedes Gelenks). Um diese Art von inverser Kinematik zu lösen, benötigen Sie eine iterative Methode der inversen Kinematik.

Hoffe, ich habe deine Frage deutlicher beantwortet. Um die Grundlagen der Robotik zu erlernen, wenden Sie sich an John J. Craig - Einführung in Robotik, Mechanik und Steuerung - Pearson Education, Inc.

Grüße, Manan Kalasariya

manan kalsariya
quelle