Literatur zur inversen Kinematik: Gelenkgrenzen und darüber hinaus

8

Vor kurzem habe ich mit Inverse Kinematics herumgespielt und war von den Ergebnissen ziemlich beeindruckt. Natürlich möchte ich noch weiter gehen, habe aber keine Ahnung, wo ich anfangen soll. Insbesondere möchte ich Gelenkgrenzen einführen (dh für ein prismatisches Gelenk, wie weit es sich bewegen kann, Scharniergelenk, zwischen welchen Winkeln es sein muss usw. usw.).

Derzeit verstehe ich, wie man die Jacobi-Matrix für die verschiedenen Gelenktypen erzeugt. Ich suche insbesondere nach Literatur (vorzugsweise kostenlos und vorzugsweise leicht verständlich) über verschiedene Möglichkeiten zur Umsetzung gemeinsamer Grenzen. Außerdem möchte ich verschiedene Ideen herausfinden, wie die inverse Kinematik verwendet werden kann.

Jeff
quelle

Antworten:

4

Dies ist wahrscheinlich nicht die beste Antwort, die ich jetzt geben kann, aber betrachten Sie Cyclic Coordinate Descent (CCD), das für nicht invertierbare Jacobi-Matrizen funktioniert. Ein kurzes Video hier .

Die beste Quelle für CCD ist Chris Wellmans eigene MSc-Arbeit. Für eine minimale / kurze Übersicht können Sie diese Quelle lesen , in der die meisten Methoden erwähnt werden.

Ein mathematischeres Papier (für den Forscher in Ihnen: D) ist dieses http://math.ucsd.edu/~sbuss/ResearchWeb/ikmethods/iksurvey.pd f.

Für den Hardcore-Forscher: http://matwbn.icm.edu.pl/ksiazki/amc/amc19/amc1941.pdf

Dies scheint eine hybride Methode zu sein, obwohl es sich nur um Folien mit meist bekannten Begriffen handelt: http://cmp.felk.cvut.cz/~hlavac/TeachPresEn/55IntelligentRobotics/KjchoInverseKinematics.pdf Noch eine lesenswerte: http: // www .cns.atr.jp / erato / DB / PDF / tevatia-icra2000.pdf

Da Sie sagten, Sie hätten lieber kostenlose Quellen, werde ich nicht die wenigen Bücher erwähnen, die man bei Amazon kaufen kann, um dieses Problem anzugehen. Persönlich bin ich mit CCD zufrieden. Für höchste Präzision bevorzuge ich den Inverse Jacobian (wo ich weiß, dass das System dank des 6 DOF eines Roboter-Rigs eine invertierbare Matrix liefert).

Wie kann IK verwendet werden? Meistens, wenn Sie einen Charakter animieren möchten, indem Sie nur die Position und Ausrichtung eines Endeffektors eines bestimmten Glieds angeben. (Youtube für Beispiele). Wenn Sie eine Karriere in der Robotik beginnen möchten, ist IK ein Muss, wenn Sie sich mit Gelenkrobotern beschäftigen. In der Welt des Spielens ist es ein Muss, wenn Sie die Bewegungserkennung menschlicher Gesten über eine Kamera einsetzen (z. B. http://www.youtube.com/watch?v=HSradQVj26E - mein vereinfachtes Beispiel für eine Wiimote-Oberfläche und einen virtuellen CD-Roboter Arm).

Teodron
quelle
2

Originalartikel: Überblick über die inverse Kinematik

Ich empfehle den obigen Link für einen allgemeinen Überblick über die inverse Kinematik. Es geht über IK-Jargon, IK-Verwendung / -Anwendungen und allgemeine Beschreibungen der Vorwärtskinematik und der inversen Kinematik.

Was sind die Verwendungszwecke von IK?

Wie wir gesehen haben, kann IK für einen humanoiden Arm verwendet werden, um nach einem Objekt / Ziel zu greifen. IK kann auch zum Treten des Fußes verwendet werden, sodass wir dem Fuß mitteilen, wohin er treten soll, und der IK herausfindet, wie die Beingelenke konfiguriert werden. IK wird normalerweise nicht als Animation selbst verwendet (nach einem Objekt greifen), sondern eher als Animationswerkzeug. Wenn Sie also einen Laufzyklus implementieren, können Sie einige der Schlüsselbilder mit dem IK-Tool positionieren.

Ein weiterer wichtiger Punkt bei IK ist, dass Ihr Ziel nicht nur auf die Position beschränkt ist - Ihr Ziel kann als Rotation definiert werden. Wenn sich Ihre Füße beispielsweise aufgrund von unebenem Gelände drehen müssen, kann Ihr IK-Rotationsziel basierend auf der Normalität des Bodens definiert werden. Auf diese Weise sind Ihre Füße entlang des Bodens geneigt, z. B. wenn Sie eine Steigung hinaufgehen. Beachten Sie, dass Sie IK auch verwenden können, um Ihren Kopf (oder sogar Ihre Augen) in eine bestimmte Richtung zu lenken. Wenn Sie möchten, dass Ihr Kopf einem Objekt folgt, können Sie IK verwenden, damit der Kopf dem Objekt folgt.

Wie setze ich gemeinsame Limits um?

Normalerweise implementiere ich gemeinsame Limits mit einer einfachen if-Anweisung. Dies würde beispielsweise für Drehgelenke funktionieren.

if (limb.rotation >  45.0f) limb.rotation =  45.0f;
if (limb.rotation < -45.0f) limb.rotation = -45.0f;

Es ist viel weniger mathematisch als das Jacobian und extrem einfach zu implementieren, sobald das Jacobian funktioniert.

Luis B.
quelle