Ich habe tagelang mit diesem Problem zu kämpfen. Ich hoffe wirklich, dass mir jemand einen Hinweis geben kann, wo das Problem liegt.
Der Roboter besteht aus 5 Achsen. Die erste Achse dreht sich um die z-Achse und die anderen 4 Achsen drehen sich um die y-Achse. Und der Solver funktioniert im Grunde.
Folgendes habe ich bisher getan:
Ich berechne den Manipulierbarkeitsfaktor mit meiner Jacobi-Matrix (nur der Translationsteil, da hier nur die Position verfolgt wird. Eigentlich habe ich es auch mit einer kombinierten Jacobi-Matrix versucht, also nicht nur der Translationsteil, sondern auch der Rotationsteil. Aber es gab eine ruckartige Bewegung wie auch immer):
Dann ist der Dämpfungsfaktor:
Der Dämpfungsfaktor wird dann in die pseudo-inverse Berechnung integriert:
Wie Sie sehen können, ist dies nur ein klassischer pseudo-inverser kinematischer Löser mit der Methode der gedämpften kleinsten Quadrate. Der Manipulierbarkeitsfaktor gemäß der zweiten (Problem-) Bewegung ist: Die Manipulierbarkeit fällt am Anfang des Videos ab. Aber warum? Soweit ich weiß, zeigt dieser Manipulierbarkeitsfaktor die lineare Abhängigkeit der Achsen an. Für mich scheinen die Achsen am Anfang nicht linear abhängig zu sein.
Diese ruckartige Bewegung macht mich verrückt. Wie Sie in der ersten Animation sehen können, scheint der Solver ordnungsgemäß zu funktionieren. Was fehlt mir hier?
atan
anstelle vonatan2
usw. Könnten Sie bitte Ihre Frage bearbeiten, um den von Ihnen verwendeten Code zu veröffentlichen?Antworten:
Wie andere bereits betont haben, muss es ein Problem mit Ihrer Implementierung des IK-Algorithmus geben, da die von Ihnen angegebenen Beschreibungen kein singuläres Verhalten enthalten dürfen.
Jetzt haben Sie zwei Alternativen: Entweder Sie beginnen mit dem Debuggen des Codes oder Sie möchten die Tatsache ausnutzen, dass das Problem leicht in zwei Teilprobleme unterteilt werden kann, für die Sie den größten Teil des bisher geschriebenen Codes problemlos verwenden können.
Angesichts des gewünschten 3D-Ziels ist es einfach zu beobachten, dass der gewünschte Wert des ersten Gelenks lautet: .( xd, yd, zd) θ1 d= Arctan( ydxd)
Das Steuergesetz, um das erste Gelenk des Manipulators nach kann so einfach sein wie:θ1 d
Dann sei die Matrix, die die Drehung von um die Achse berücksichtigt :R ∈ S.O ( 3 ) θ1 d z
Durch Sie das neue Ziel , das ein neues planares IK 2D-Problem verursacht in der Ebene.R. ( xd, 0 , zd)1= R.T.⋅ ( xd, yd, zd)T. x z
Zu diesem Zeitpunkt können Sie nach indem Sie den Jacobian des verbleibenden 4-DOF-Manipulators verwenden.( xd, zd)1
quelle
Ich denke, Sie haben eine algorithmische Singularität an der ersten Handgelenkachse eingeführt. Es scheint mir, dass es, wenn es 90 Grad nach unten erreicht, anstatt auf 91 zu gehen, versucht, durch Null auf -269 Grad zurückzukehren.
Dies ist natürlich spekulativ, ohne den Code zu sehen.
quelle