C++ (Inverse Kinematik) IK Solver CCD Preuso-Inverse Jacobi Probleme im 3D

hell-student

Lieutenant
Registriert
Nov. 2007
Beiträge
671
Hallo Zusammen,

ich bin dabei ein IK Solver (Inverse Kinematik) zu schreiben und hab verschiedenste Techniken ausprobiert. Der Arbeitsraum ist 3D und ich bin also auf der suche nach einem stabilen schnellen Verfahren zum lösen der IK für max 5-6 Joints. Also dürfte eigentlich kein Problem machen. Mich interessiert eigentlich nur die Endlage des Endeffektors(Greifers). Der Roboterarm wird mithilfe der DH-Parameter beschrieben. Hierzu habe ich schon eine eigene Klasse geschrieben, mit der es möglich ist, beliebig viele Gelenke zum Modell hinzuzufügen.

Hintergrundwissen Kreuzprodukt, Skalarprodukt etc vorhanden (muss man ja als Info-Student)

Ausprobiert habe ich:

1: Pseudoinverse Jacobi und Transponierte Jacobi:

Mein Problem ist erleine das Aufstellen der Jacobi-Matrix. Habe zuerst aus der direkten Kinematik die Endlage abhängig von jeweiligen Winkel als Ableitung für den jeweiligen Eintrag in der Matrix genommen und dies hatte anfangs auch wunderbar geklappt, doch war sehr sehr langsam und nach paar Iterationen kamen ünmögliche Dinge dabei rum, obwohl die Endposition erreichbar war. Auch eine andere Methode hatte hierbei nichts geholfen. War einfach zu langsam und nicht stabil

2. CCD

Habe CCD wunderbar im 2D implementiert und es lief einfach nur genial schnell. Doch als ich es nun im 3D ausprobierte habe ich mäßigen erfolg. Teilweise keinerlei Probleme beim lösen, machmal jedoch gewaltige.

Habe beim CCD-Verfahren den Winkel zwischen Endlage-Vektor und Ziel-Vektor dadurch gemessen, dass ich jeden jeweils auf die X-Y-Ebene des Gelenks projeziert habe und dann den Winkel gemessen habe. Im 2D Fall ist dies ja immer der Fall, dass beide Vektoren in der X-Y-Ebene des Gelenkes liegen.

Was bei mir vor allem auftreten sind Redundante Lösungen, also dass wenn ich keinerlei Gelenkbegrenzungen angebe ich mehrere Konfigurationen der Gelenke habe, die zum selben Ziel führen. Wie kann ich hierbei die Gelenkbegrenzungen gut integrieren?


Gelenkwinkelbegrenzungen habe ich für mein Modell.


Kennt jemand ein Verfahren zur Lösung der IK welches stabil ist und zum anderen auch schnell genug. Schnell bedeutet in dem Fall Echtzeitfähig.

Hat jemand eine Erklärung wie ich das CCD-Verfahren richtig im 3D umsetze. Im 2D gibts keinerlei Probleme aber im 3D schon.

Danke mal
 
Zurück
Oben