En animación por computadora y robótica , la cinemática inversa es el proceso matemático de calcular los parámetros de articulación variables necesarios para colocar el extremo de una cadena cinemática , como un manipulador de robot o el esqueleto de un personaje de animación , en una posición y orientación determinadas en relación con el inicio de la cadena. Dados los parámetros de articulación, la posición y orientación del extremo de la cadena, por ejemplo, la mano del personaje o robot, normalmente se pueden calcular directamente utilizando múltiples aplicaciones de fórmulas trigonométricas , un proceso conocido como cinemática directa . Sin embargo, la operación inversa es, en general, mucho más desafiante. [1] [2] [3]
La cinemática inversa también se utiliza para recuperar los movimientos de un objeto del mundo a partir de otros datos, como una película de esos movimientos o una película del mundo tal como lo ve una cámara que realiza esos movimientos. Esto ocurre, por ejemplo, cuando los movimientos filmados de un actor humano deben ser duplicados por un personaje animado .
En robótica, la cinemática inversa hace uso de las ecuaciones cinemáticas para determinar los parámetros de las articulaciones que proporcionan una configuración deseada (posición y rotación) para cada uno de los efectores finales del robot . [4] Esto es importante porque las tareas del robot se realizan con los efectores finales, mientras que el esfuerzo de control se aplica a las articulaciones. Determinar el movimiento de un robot para que sus efectores finales se muevan desde una configuración inicial a una configuración deseada se conoce como planificación del movimiento . La cinemática inversa transforma el plan de movimiento en trayectorias de actuadores de articulaciones para el robot. [2] Fórmulas similares determinan las posiciones del esqueleto de un personaje animado que se moverá de una manera particular en una película, o de un vehículo como un automóvil o un bote que contiene la cámara que está filmando una escena de una película. Una vez que se conocen los movimientos de un vehículo, se pueden usar para determinar el punto de vista en constante cambio para imágenes generadas por computadora de objetos en el paisaje, como edificios, de modo que estos objetos cambien en perspectiva mientras que ellos mismos no parecen moverse cuando la cámara transportada por el vehículo pasa junto a ellos.
El movimiento de una cadena cinemática , ya sea un robot o un personaje animado, se modela mediante las ecuaciones cinemáticas de la cadena. Estas ecuaciones definen la configuración de la cadena en términos de sus parámetros de articulación. La cinemática directa utiliza los parámetros de articulación para calcular la configuración de la cadena, y la cinemática inversa invierte este cálculo para determinar los parámetros de articulación que logran una configuración deseada. [5] [6] [7]
El análisis cinemático es uno de los primeros pasos en el diseño de la mayoría de los robots industriales. El análisis cinemático permite al diseñador obtener información sobre la posición de cada componente dentro del sistema mecánico. Esta información es necesaria para el posterior análisis dinámico junto con las rutas de control.
La cinemática inversa es un ejemplo del análisis cinemático de un sistema restringido de cuerpos rígidos, o cadena cinemática . Las ecuaciones cinemáticas de un robot se pueden utilizar para definir las ecuaciones de bucle de un sistema articulado complejo. Estas ecuaciones de bucle son restricciones no lineales sobre los parámetros de configuración del sistema. Los parámetros independientes en estas ecuaciones se conocen como grados de libertad del sistema.
Si bien existen soluciones analíticas al problema de la cinemática inversa para una amplia gama de cadenas cinemáticas, las herramientas de modelado y animación por computadora a menudo utilizan el método de Newton para resolver las ecuaciones cinemáticas no lineales. [2] Cuando se intenta encontrar una solución analítica, a menudo es conveniente explotar la geometría del sistema y descomponerlo utilizando subproblemas con soluciones conocidas . [8] [9]
Otras aplicaciones de los algoritmos cinemáticos inversos incluyen la manipulación interactiva, el control de la animación y la prevención de colisiones .
La cinemática inversa es importante para la programación de juegos y la animación 3D , donde se utiliza para conectar físicamente a los personajes del juego con el mundo, como por ejemplo los pies que aterrizan firmemente sobre el terreno (consulte [10] para obtener un estudio completo sobre las técnicas de cinemática inversa en gráficos de computadora).
Una figura animada se modela con un esqueleto de segmentos rígidos conectados con articulaciones, llamado cadena cinemática . Las ecuaciones cinemáticas de la figura definen la relación entre los ángulos de las articulaciones de la figura y su pose o configuración. El problema de animación cinemática directa utiliza las ecuaciones cinemáticas para determinar la pose dados los ángulos de las articulaciones. El problema de cinemática inversa calcula los ángulos de las articulaciones para una pose deseada de la figura.
A menudo, a los diseñadores, artistas y animadores informáticos les resulta más fácil definir la configuración espacial de un conjunto o figura moviendo piezas, o brazos y piernas, en lugar de manipular directamente los ángulos de las articulaciones. Por lo tanto, la cinemática inversa se utiliza en sistemas de diseño asistido por ordenador para animar conjuntos y por artistas y animadores informáticos para posicionar figuras y personajes.
El conjunto se modela como enlaces rígidos conectados por articulaciones que se definen como relaciones de posición o restricciones geométricas. El movimiento de un elemento requiere el cálculo de los ángulos de las articulaciones de los otros elementos para mantener las restricciones de las articulaciones . Por ejemplo, la cinemática inversa permite a un artista mover la mano de un modelo humano en 3D a una posición y orientación deseadas y hacer que un algoritmo seleccione los ángulos adecuados de las articulaciones de la muñeca, el codo y el hombro. La implementación exitosa de la animación por computadora generalmente también requiere que la figura se mueva dentro de límites antropomórficos razonables.
Se puede definir un método para comparar la cinemática directa e inversa para la animación de un personaje en función de las ventajas inherentes a cada una. Por ejemplo, la animación por bloqueos en la que se utilizan grandes arcos de movimiento suele ser más ventajosa en la cinemática directa. Sin embargo, una animación más delicada y el posicionamiento del efector final objetivo en relación con otros modelos pueden resultar más sencillos utilizando la cinemática invertida. Los paquetes de creación digital (DCC) modernos ofrecen métodos para aplicar tanto la cinemática directa como la inversa a los modelos.
En algunos casos, pero no en todos, existen soluciones analíticas para problemas cinemáticos inversos. Un ejemplo de ello es el de un robot de 6 grados de libertad (por ejemplo, 6 articulaciones giratorias) que se mueve en un espacio 3D (con 3 grados de libertad de posición y 3 grados de libertad de rotación). Si los grados de libertad del robot superan los grados de libertad del efector final, por ejemplo, con un robot de 7 grados de libertad con 7 articulaciones giratorias, entonces existen infinitas soluciones para el problema de cinemática inversa, y no existe una solución analítica. Ampliando aún más este ejemplo, es posible fijar una articulación y resolver analíticamente las otras articulaciones, pero tal vez se ofrezca una mejor solución mediante métodos numéricos (siguiente sección), que en cambio pueden optimizar una solución dadas las preferencias adicionales (costos en un problema de optimización).
Una solución analítica para un problema de cinemática inversa es una expresión de forma cerrada que toma la posición del efector final como entrada y proporciona las posiciones de las articulaciones como salida. Los solucionadores de cinemática inversa analíticos pueden ser significativamente más rápidos que los solucionadores numéricos y proporcionar más de una solución, pero solo un número finito de soluciones, para una determinada posición del efector final.
Muchos programas diferentes (como los programas FOSS IKFast y la biblioteca Inverse Kinematics Library) pueden resolver estos problemas de forma rápida y eficiente utilizando diferentes algoritmos, como el solucionador FABRIK. Un problema con estos solucionadores es que se sabe que no necesariamente brindan soluciones localmente uniformes entre dos configuraciones adyacentes, lo que puede causar inestabilidad si se requieren soluciones iterativas para la cinemática inversa, como si la IK se resolviera dentro de un bucle de control de alta velocidad.
Existen muchos métodos para modelar y resolver problemas de cinemática inversa. Los métodos más flexibles suelen basarse en la optimización iterativa para buscar una solución aproximada, debido a la dificultad de invertir la ecuación de cinemática directa y la posibilidad de un espacio de solución vacío . La idea central detrás de varios de estos métodos es modelar la ecuación de cinemática directa utilizando una expansión en serie de Taylor , que puede ser más sencilla de invertir y resolver que el sistema original.
La técnica inversa jacobiana es una forma simple pero efectiva de implementar la cinemática inversa. Sea variables que gobiernan la ecuación de cinemática directa, es decir, la función de posición. Estas variables pueden ser ángulos de articulación, longitudes u otros valores reales arbitrarios. Si, por ejemplo, el sistema IK vive en un espacio tridimensional, la función de posición puede verse como una función de aplicación . Sea la posición inicial del sistema y
sea la posición objetivo del sistema. La técnica inversa jacobiana calcula iterativamente una estimación de que minimiza el error dado por .
Para vectores pequeños, la expansión en serie de la función de posición da
donde es la matriz jacobiana (3 × m) de la función de posición en .
La entrada (i, k)-ésima de la matriz jacobiana se puede aproximar numéricamente
donde da el componente i-ésimo de la función de posición, simplemente se agrega un pequeño delta a su componente k-ésimo y es un valor positivo razonablemente pequeño.
Tomando la pseudoinversa de Moore-Penrose del jacobiano (calculable usando una descomposición en valores singulares ) y reordenando los términos se obtiene
dónde .
La aplicación del método jacobiano inverso una vez dará como resultado una estimación muy aproximada del vector deseado. Se debe utilizar una búsqueda lineal para escalarlo a un valor aceptable. La estimación de se puede mejorar mediante el siguiente algoritmo (conocido como el método de Newton-Raphson ):
Una vez que algún vector ha hecho que el error caiga cerca de cero, el algoritmo debería terminar. Se ha informado que los métodos existentes basados en la matriz hessiana del sistema convergen a los valores deseados utilizando menos iteraciones, aunque en algunos casos más recursos computacionales.
El problema de la cinemática inversa también se puede aproximar utilizando métodos heurísticos. Estos métodos realizan operaciones iterativas simples para conducir gradualmente a una aproximación de la solución. Los algoritmos heurísticos tienen un bajo costo computacional (devuelven la pose final muy rápidamente) y generalmente admiten restricciones conjuntas. Los algoritmos heurísticos más populares son el descenso de coordenadas cíclicas (CCD) [11] y la cinemática inversa de alcance hacia adelante y hacia atrás (FABRIK). [12]