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 final 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 con respecto al inicio de la cadena. Dados los parámetros de la articulación, la posición y la orientación del extremo de la cadena, por ejemplo, la mano del personaje o del robot, normalmente se pueden calcular directamente usando 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]
La cinemática inversa también se utiliza para recuperar los movimientos de un objeto en el mundo a partir de algunos otros datos, como una película de esos movimientos, o una película del mundo visto por una cámara que está haciendo esos movimientos. Esto ocurre, por ejemplo, cuando los movimientos filmados de un actor humano deben ser duplicados por un personaje animado .
Robótica
En robótica, la cinemática inversa hace uso de las ecuaciones cinemáticas para determinar los parámetros de la articulación que proporcionan una configuración deseada (posición y rotación) para cada uno de los efectores finales del robot . [2] La determinación del movimiento de un robot para que sus efectores finales se muevan de una configuración inicial a una configuración deseada se conoce como planificación de movimiento . La cinemática inversa transforma el plan de movimiento en trayectorias del actuador articulado para el robot. Fórmulas similares determinan las posiciones del esqueleto de un personaje animado que se va a mover de determinada manera en una película, o de un vehículo como un coche o un barco 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 de perspectiva sin que parezcan moverse como los transportados por el vehículo. la cámara pasa junto a ellos.
El movimiento de una cadena cinemática , ya sea un robot o un personaje animado, está modelado por las ecuaciones cinemáticas de la cadena. Estas ecuaciones definen la configuración de la cadena en términos de sus parámetros conjuntos. La cinemática directa usa los parámetros de la 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 la articulación que logran la configuración deseada. [3] [4] [5]
Análisis cinemático
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 análisis dinámico posterior 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 de estas ecuaciones se conocen como grados de libertad del sistema.
Si bien existen soluciones analíticas para el problema de la cinemática inversa para una amplia gama de cadenas cinemáticas, las herramientas de animación y modelado por computadora a menudo usan el método de Newton para resolver las ecuaciones cinemáticas no lineales.
Otras aplicaciones de los algoritmos de cinemática inversa incluyen la manipulación interactiva , el control de la animación y la prevención de colisiones .
Cinemática inversa y animación 3D
La cinemática inversa es importante para la programación de juegos y la animación 3D , donde se utiliza para conectar los personajes del juego físicamente con el mundo, como los pies que aterrizan firmemente en la parte superior del terreno (consulte [6] para obtener una encuesta completa sobre los métodos de cinemática inversa utilizados en gráficos por 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 articulación de la figura y su pose o configuración. El problema de la animación cinemática hacia adelante 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 articulación para una pose deseada de la figura.
A menudo, es más fácil para los diseñadores, artistas y animadores basados en computadora definir la configuración espacial de un ensamblaje o figura moviendo partes, 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 computadora para animar ensamblajes y por artistas y animadores basados en computadora para colocar figuras y personajes.
El ensamblaje se modela como vínculos rígidos conectados por uniones 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 juntas de los otros elementos para mantener las restricciones de las juntas . Por ejemplo, la cinemática inversa permite a un artista mover la mano de un modelo humano 3D a la 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 .
Un método de comparar cinemática directa e inversa para la animación de un personaje puede definirse por las ventajas inherentes a cada una. Por ejemplo, el bloqueo de la animación donde se utilizan grandes arcos de movimiento suele ser más ventajoso en la cinemática directa. Sin embargo, la animación y el posicionamiento más delicados del efector final de destino en relación con otros modelos podrían ser más fáciles utilizando cinemática invertida. Los paquetes de creación digital modernos (DCC) ofrecen métodos para aplicar cinemática directa e inversa a los modelos.
Soluciones analíticas para cinemática inversa
En algunos casos, pero no en todos, existen soluciones analíticas para problemas de cinemática inversa. Un ejemplo es el de un robot de 6 DoF (por ejemplo, 6 articulaciones de revolución) 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 exceden los grados de libertad del efector final, por ejemplo, con un robot de 7 DoF con 7 articulaciones giratorias, entonces existen infinitas soluciones al problema de IK y no existe una solución analítica. Ampliando aún más este ejemplo, es posible arreglar una articulación y resolver analíticamente las otras articulaciones, pero quizás se ofrezca una mejor solución mediante métodos numéricos (siguiente sección), que en su lugar pueden optimizar una solución dadas las preferencias adicionales (costos en un problema de optimización ).
Una solución analítica a un problema de cinemática inversa es una expresión de forma cerrada que toma la pose del efector final como entrada y da posiciones conjuntas como salida, . Los solucionadores de cinemática inversa analítica 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 pose de efector final.
El programa de código abierto IKFast puede resolver las soluciones analíticas completas de los manipuladores de robots más comunes y generar código C ++ para ellos. Los solucionadores generados cubren la mayoría de los casos degenerados y pueden terminar en microsegundos en computadoras recientes. [ lenguaje promocional ] . Un problema con estos solucionadores es que se sabe que no necesariamente dan soluciones localmente suaves entre dos configuraciones adyacentes, lo que puede causar inestabilidad si se requieren soluciones iterativas para la cinemática inversa, como si el IK se resuelve dentro de un bucle de control de alta velocidad. .
Soluciones numéricas a problemas de CI
Hay muchos métodos para modelar y resolver problemas de cinemática inversa. El más flexible de estos métodos generalmente se basa en la optimización iterativa para buscar una solución aproximada, debido a la dificultad de invertir la ecuación 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 cinemática directa utilizando una expansión en serie de Taylor , que puede ser más simple de invertir y resolver que el sistema original.
La técnica inversa jacobiana
La técnica inversa jacobiana es una forma simple pero efectiva de implementar la cinemática inversa. Dejalo servariables 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 el sistema IK vive en un espacio tridimensional, la función de posición puede verse como un mapeo. Dejar dar la posición inicial del sistema, y
ser la posición de meta del sistema. La técnica inversa jacobiana calcula iterativamente una estimación de que minimiza el error dado por .
Para pequeños -vectores, la expansión en serie de la función de posición da
- ,
dónde es la matriz jacobiana (3 × m) de la función de posición en.
Tenga en cuenta que la entrada (i, k) -ésima de la matriz jacobiana se puede aproximar numéricamente
- ,
dónde da el componente i-ésimo de la función de posición, es simple con un pequeño delta añadido a su componente k-ésimo, y es un valor positivo razonablemente pequeño.
Tomar el pseudoinverso de Moore-Penrose del jacobiano (calculable usando una descomposición de valor singular ) y reorganizar los términos da como resultado
- ,
dónde .
Aplicar el método jacobiano inverso una vez dará como resultado una estimación muy aproximada de la -vector. Se debe usar una búsqueda de línea para escalar estoa un valor aceptable. La estimación dese puede mejorar mediante el siguiente algoritmo (conocido como método de Newton-Raphson ):
Una vez algunos -vector ha provocado que el error caiga cerca de cero, el algoritmo debería terminar. Se ha informado que los métodos existentes basados en la matriz de Hesse del sistema convergen a los valores deseados. valores usando menos iteraciones, sin embargo, en algunos casos más recursos computacionales.
Métodos heurísticos
El problema de la cinemática inversa también se puede aproximar utilizando métodos heurísticos. Estos métodos realizan operaciones simples e iterativas para llevar 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, por lo general, admiten restricciones conjuntas. Los algoritmos heurísticos más populares son: Descenso de coordenadas cíclicas (CCD), [7] y Cinemática inversa de alcance hacia adelante y hacia atrás (FABRIK). [8]
Ver también
- 321 estructura cinemática
- Solución de brazo
- Animación cinemática hacia adelante
- Cinemática directa
- Matriz jacobiana y determinante
- Restricciones conjuntas
- Síntesis cinemática
- Cinemación
- Algoritmo de Levenberg-Marquardt
- Captura de movimiento
- Motor de física
- Pseudoinverso
- Física de muñeco de trapo
- Cinemática del robot
- Parámetros de Denavit-Hartenberg
Referencias
- ^ Donald L. Pieper, La cinemática de manipuladores bajo control informático . Tesis de doctorado, Universidad de Stanford, Departamento de Ingeniería Mecánica, 24 de octubre de 1968.
- ^ Paul, Richard (1981). Manipuladores de robots: matemáticas, programación y control: el control informático de los manipuladores de robots . MIT Press, Cambridge, MA. ISBN 978-0-262-16082-7.
- ^ JM McCarthy, 1990, Introducción a la cinemática teórica, MIT Press, Cambridge, MA.
- ^ JJ Uicker, GR Pennock y JE Shigley, 2003, Teoría de máquinas y mecanismos, Oxford University Press, Nueva York.
- ^ JM McCarthy y GS Soh, 2010, Diseño geométrico de vínculos, Springer, Nueva York.
- ^ A. Aristidou, J. Lasenby, Y. Chrysanthou, A. Shamir. Técnicas de cinemática inversa en gráficos por computadora: una encuesta . Foro de gráficos por computadora, 37 (6): 35-58, 2018.
- ^ DG Luenberger. 1989. Programación lineal y no lineal. Addison Wesley.
- ^ A. Aristidou y J. Lasenby. 2011. FABRIK: Un solucionador rápido e iterativo para el problema de cinemática inversa . Grafico. Modelos 73, 5, 243–260.
enlaces externos
- Cinemática inversa de alcance hacia adelante y hacia atrás (FABRIK)
- Robótica y Animación 3D en FreeBasic (en español)
- Solucionador de cinemática inversa analítica : dada una descripción de la cinemática del robot OpenRAVE, genera un archivo C ++ que resuelve analíticamente el IK completo.
- Algoritmos de cinemática inversa
- Solución de robot inverso para una geometría de robot común
- Artículo de HowStuffWorks.com ¿Cómo se mueven con tanta fluidez los personajes de los videojuegos? con una explicación de la cinemática inversa
- Animaciones 3D del cálculo de la cinemática inversa geométrica de un robot industrial
- Cinemática de teoría 3D
- Cinemática inversa de proteínas
- Ejemplo de cinemática inversa simple con código fuente usando jacobiano
- Descripción detallada de las soluciones jacobianas y CCD para cinemática inversa
- Autodesk HumanIK
- Una visualización en 3D de una solución analítica de un robot industrial