Wie kann das Problem der inversen Kinematik gelöst werden?

20

Die Vorwärtskinematik eines Roboterarms kann leicht gelöst werden. Wir können jede Verbindung mit Denavit-Hartenberg- Transformationsmatrizen darstellen.

Wenn das -Gelenk beispielsweise ein linearer Aktuator ist, hat es möglicherweise die Transformationsmatrix:ith

d iTi=[10000100001di0001] wobei die Verlängerungslänge durch definiert istdi

Eine rotierende Verbindung kann sein:

α LTi=[100L0cosαisinαi00sinαicosαi00001] wobei ist Winkel und ist die Länge der Verbindung.αL

Wir können dann die Position und Orientierung des Endeffektors finden, indem wir alle Transformationsmatrizen multiplizieren: .Ti

Die Frage ist, wie wir das inverse Problem lösen.

Mathematisch für ein Effektor Position gewünschten Ende , findet die Parameter , so dass . Welche Methoden gibt es, um diese Gleichung zu lösen?d i α iT i = MMdiαiTi=M

ronalchn
quelle

Antworten:

11

Damals, als ich lernte, benutzte ich das einfache Gradientenverfolgen, um das IK-Problem zu lösen.

In Ihrem Modell versuchen Sie, jedes Gelenk um einen winzigen Betrag zu drehen, um festzustellen, wie viel Unterschied der Endpunktpositionsfehler macht. Anschließend drehen Sie jedes Gelenk um einen Betrag, der proportional zum erzielten Nutzen ist. Dann machst du das immer wieder, bis du nah genug dran bist.

Im Allgemeinen ist dies als Gradientenfolge oder Hügelfolge bekannt. Stellen Sie sich einen Roboterarm mit zwei Freiheitsgraden vor:

ICH K

Drehgelenk A ein kleines Stück bewegt den Endpunkt in Richtung a . Drehgelenk B ein winziges Stück bewegt den Endpunkt in Richtung b . Beide bewegen uns ungefähr um den gleichen Betrag näher an das Ziel heran, sodass wir beide Gelenke mit ungefähr der gleichen Geschwindigkeit drehen sollten.

Wenn wir einen Graphen der Entfernung zum Ziel in Abhängigkeit von den Gelenkwinkeln zeichnen würden, würde dies folgendermaßen aussehen:

ICH K

Ich habe einige Konturen eingefärbt, nur um zu helfen. Wir können den Weg sehen, den dieser Algorithmus nimmt. Sie werden feststellen, dass der eingeschlagene Weg im gemeinsamen Raum nicht optimal aussieht. Es dauert eine Kurve. Im realen Raum würde der Endpunkt jedoch eine ziemlich gerade Linie zum Ziel haben. Sie können auch sehen, dass es tatsächlich zwei Lösungen für das Problem gibt und der Algorithmus gerade die nächstgelegene gefunden hat.

Dies ist nicht die einzige Möglichkeit, das Problem der inversen Kinematik zu lösen. Es ist sicherlich auch nicht der beste Weg.

Vorteile:

  • Es ist konzeptionell einfach, also großartig, wenn Sie dies nur lernen.
  • Es ist einfach zu implementieren, auch wenn der Anblick der Denavit-Hartenberg-Transformationsmatrizen Sie erschreckt.
  • Es ist sehr allgemein gehalten, sodass Sie alle Arten von Gelenken verwenden können: rotierend, linear, etwas anderes, solange Sie abschätzen können, wie sie die Bewegung des Endpunkts verursachen.
  • Es kommt gut zurecht, auch wenn es null oder unendlich viele Lösungen gibt.

Nachteile:

  • Es ist langsam und dauert viele Iterationen, um die Lösung zu finden. Es ist jedoch in Ordnung, wenn Sie nur den tatsächlichen Arm veranlassen können, den Fortschritt des Algorithmus zu verfolgen, während dieser berechnet wird.
  • Es kann in lokalen Minima stecken bleiben. IE Es findet möglicherweise nicht die bestmögliche Lösung, wenn es eine ausreichend gute findet.

Es gibt weitere Details dazu auf meiner sehr alten Website: Die gut aussehende, strukturierte, leicht zu bedienende, witzige und dehnbare Seite .

Raketenmagnet
quelle
3

Es gibt eine Reihe von Lösungen für dieses Problem, die sich um die Jacobian Matrix drehen. Diese Diashow behandelt die jakobianischen Methoden und erwähnt auch eine Methode der zyklischen Koordinatenabnahme, mit der ich nicht vertraut bin.

Es gibt eine Fülle von Ressourcen zu diesem Thema - wenn Sie Google nach "Inverse Kinematics Jacobian" fragen .

Lesen Sie auch Kapitel 5.3 der Vorlesungsunterlagen aus dem Open Course on Introductory Robotics von M IT .

David Hernandez
quelle
1

Es gibt zwei breite Ansätze:

  • Analyselösungen berechnen in einer Endeffektor-Pose direkt die Gelenkkoordinaten. Im Allgemeinen ist die Lösung nicht eindeutig, sodass Sie einen Satz möglicher Gelenkkoordinaten berechnen können. Einige können dazu führen, dass der Roboter auf Dinge in seiner Umgebung (oder auf sich selbst) trifft, oder Ihre Aufgabe kann Ihnen bei der Auswahl einer bestimmten Lösung helfen, z. Möglicherweise bevorzugen Sie den Ellbogen nach oben (oder unten) oder den Roboter mit dem Arm links (oder rechts) vom Rumpf. Im Allgemeinen gibt es Einschränkungen beim Erhalten einer analytischen Lösung, für 6-Achsen-Roboter wird ein sphärisches Handgelenk (alle Achsen schneiden sich) angenommen. Die Analyselösungen für viele verschiedene Robotertypen wurden im Laufe der Jahrzehnte berechnet, und Sie können wahrscheinlich ein Papier finden, das eine Lösung für Ihren Roboter bietet.
  • Numerische Lösungen verwenden, wie in den anderen Antworten beschrieben, einen Optimierungsansatz, um die Gelenkkoordinaten anzupassen, bis die Vorwärtskinematik die richtige Lösung ergibt. Auch hier gibt es eine riesige Literatur und jede Menge Software.

Mit meiner Robotics Toolbox für MATLAB erstelle ich ein Modell eines bekannten 6-Achsen-Roboters unter Verwendung der Denavit-Hartenberg-Parameter

>> mdl_puma560
>> p560

p560 = 

Puma 560 [Unimation]:: 6 axis, RRRRRR, stdDH, fastRNE            
 - viscous friction; params of 8/95;                             
+---+-----------+-----------+-----------+-----------+-----------+
| j |     theta |         d |         a |     alpha |    offset |
+---+-----------+-----------+-----------+-----------+-----------+
|  1|         q1|          0|          0|     1.5708|          0|
|  2|         q2|          0|     0.4318|          0|          0|
|  3|         q3|    0.15005|     0.0203|    -1.5708|          0|
|  4|         q4|     0.4318|          0|     1.5708|          0|
|  5|         q5|          0|          0|    -1.5708|          0|
|  6|         q6|          0|          0|          0|          0|
+---+-----------+-----------+-----------+-----------+-----------+

Wählen Sie dann eine zufällige Gelenkkoordinate

>> q = rand(1,6)
q =
    0.7922    0.9595    0.6557    0.0357    0.8491    0.9340

Berechnen Sie dann die Vorwärtskinematik

>> T = p560.fkine(q)
T = 
   -0.9065    0.0311   -0.4210  -0.02271
    0.2451    0.8507   -0.4649   -0.2367
    0.3437   -0.5247   -0.7788    0.3547
         0         0         0         1

Jetzt können wir die inverse Kinematik mit einer veröffentlichten Analyselösung für einen Roboter mit 6 Gelenken und einem sphärischen Handgelenk berechnen

>> p560.ikine6s(T)
ans =
    0.7922    0.9595    0.6557    0.0357    0.8491    0.9340

und voila, wir haben die ursprünglichen Gelenkkoordinaten.

Die numerische Lösung

>> p560.ikine(T)
Warning: ikine: rejected-step limit 100 exceeded (pose 1), final err 0.63042 
> In SerialLink/ikine (line 244) 
Warning: failed to converge: try a different initial value of joint coordinates 
> In SerialLink/ikine (line 273) 

ans =

     []

ist fehlgeschlagen, und dies ist ein häufiges Problem, da sie normalerweise eine gute anfängliche Lösung benötigen. Lass es uns versuchen

>> p560.ikine(T, 'q0', [1 1 0 0 0 0])
ans =
    0.7922    0.9595    0.6557    0.0357    0.8491    0.9340

Das gibt jetzt eine Antwort, unterscheidet sich aber von der analytischen Lösung. Das ist jedoch in Ordnung, da es mehrere Lösungen für das IK-Problem gibt. Wir können die Richtigkeit unserer Lösung überprüfen, indem wir die Vorwärtskinematik berechnen

>> p560.fkine(ans)
ans = 
   -0.9065    0.0311   -0.4210  -0.02271
    0.2451    0.8507   -0.4649   -0.2367
    0.3437   -0.5247   -0.7788    0.3547
         0         0         0         1

und überprüfe, ob es dasselbe ist wie die Transformation, mit der wir begonnen haben (was es ist).

Andere Ressourcen:

Peter Corke
quelle
0

Wenn Sie die inverse Kinematik eines Roboters mit 6DOF berechnen möchten, sollten Sie die Lösung von pieper verwenden. Wenn Sie einen Roboter mit sechs Freiheitsgraden und drei Achsen haben, die sich schneiden, können Sie ihn verwenden. Es gibt einen einfachen Beweis, den Sie leicht beweisen können. Wenn Sie Hilfe benötigen, kann ich Ihnen einen Hinweis geben

Parham sagharichi ha
quelle
Würde es Ihnen etwas ausmachen, mehr Details zum Beweis anzugeben?
5.
Willkommen bei Robotics Parhamsagharichiha. Vielen Dank für Ihre Antwort, aber wir suchen nach umfassenden Antworten, die einige Erklärungen und Zusammenhänge enthalten. Einzeilige Antworten können dies nicht. Bearbeiten Sie daher Ihre Antwort, um zu erklären, warum dies richtig ist, idealerweise mit Zitaten. Antworten, die keine Erklärungen enthalten, werden möglicherweise entfernt.
Chuck