Literatura para cinemática inversa: límites articulares y más allá

8

Recientemente he estado jugando con Inverse Kinematics y me han impresionado los resultados. Naturalmente, quiero llevarlo más lejos, pero no tengo idea de por dónde empezar. En particular, me gustaría introducir límites en las articulaciones (es decir, para una articulación prismática qué tan lejos puede moverse, articular los ángulos entre los que debe estar, etc., etc.).

Actualmente entiendo cómo producir la matriz jacobiana para los diversos tipos de articulaciones. Estoy buscando particularmente literatura (preferiblemente gratuita y preferiblemente fácil de entender) sobre varias formas de implementar límites conjuntos. También me gustaría conocer diferentes ideas sobre cómo se puede utilizar la cinemática inversa.

Jeff
fuente

Respuestas:

4

Probablemente esta no sea la mejor respuesta que pueda dar ahora, pero considere el Descenso de coordenadas cíclicas (CCD) que funciona para matrices jacobianas no invertibles. Un video corto aquí .

La mejor fuente que cubre CCD es la propia tesis de maestría de Chris Wellman. Para una revisión mínima / breve, puede leer esta fuente que menciona la mayoría de los métodos disponibles.

Un artículo más matemático (para el investigador en ti: D) es este http://math.ucsd.edu/~sbuss/ResearchWeb/ikmethods/iksurvey.pd f.

Para el investigador incondicional: http://matwbn.icm.edu.pl/ksiazki/amc/amc19/amc1941.pdf

Esto parece un método híbrido, aunque solo son diapositivas con nociones en su mayoría familiares: http://cmp.felk.cvut.cz/~hlavac/TeachPresEn/55IntelligentRobotics/KjchoInverseKinematics.pdf Una más vale la pena leer: http: // www .cns.atr.jp / erato / DB / PDF / tevatia-icra2000.pdf

Como dijiste que preferirías tener fuentes gratuitas, no mencionaré los pocos libros que se pueden comprar en Amazon que abordan este problema. Personalmente, estoy satisfecho con CCD. Para una precisión ultra, prefiero el jacobiano inverso (donde sé que el sistema produce una matriz invertible gracias al 6 DOF de una plataforma robótica).

¿Cómo se puede usar IK? Principalmente cuando quieres animar a un personaje proporcionando solo una posición y orientación de un efector final de una determinada extremidad. (YouTube para ejemplos). Si desea comenzar una carrera en robótica, IK es imprescindible si se trata de robots articulados. En el mundo de los juegos, es imprescindible cuando empleas la detección de movimiento de gestos humanos a través de una cámara (por ejemplo, http://www.youtube.com/watch?v=HSradQVj26E , mi ejemplo simplista de una interfaz wiimote y un robot virtual ccd brazo).

teodron
fuente
2

Artículo original: Descripción general de la cinemática inversa

Recomiendo encarecidamente el enlace anterior para obtener una descripción general de alto nivel de cinemática inversa. Repasa la jerga de IK, el uso / aplicaciones de IK y descripciones de alto nivel de la cinemática directa y la cinemática inversa.

¿Cuáles son los usos de IK?

IK puede usarse para que un brazo humanoide alcance un objeto / objetivo, como hemos visto. IK también se puede usar para pisar los pies, de modo que le decimos al pie dónde pisar y el IK descubre cómo configurar las articulaciones de las piernas. IK generalmente no se usa como una animación en sí misma (buscando un objeto), sino más bien como una herramienta de animación. Entonces, si está implementando un ciclo de caminata, podría posicionar algunos de los cuadros clave utilizando la herramienta IK.

Otro punto clave sobre IK es que su objetivo / objetivo no se limita a la posición sola: su objetivo se puede definir como una rotación. Por ejemplo, si sus pies necesitan rotar según un terreno irregular, su objetivo de rotación IK puede definirse según la normalidad del piso. De esta manera, sus pies están inclinados a lo largo del piso, como cuando camina por una pendiente. Tenga en cuenta que también puede usar IK para que su cabeza (o incluso sus ojos) miren en cierta dirección. Si desea que su cabeza siga a un objeto, puede usar IK para que la cabeza siga al objeto.

¿Cómo implemento los límites conjuntos?

Por lo general, implemento límites conjuntos con una simple declaración if. Por ejemplo, esto funcionaría para juntas revolutivas.

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

Es mucho menos matemático que el jacobiano, y extremadamente fácil de implementar una vez que tiene el jacobiano funcionando.

Luis B
fuente