viernes, 17 de abril de 2015

Cinemática Inversa - IK (I)

Atención, PELIGRO: en este post hay MATEMÁTICAS.Con mayúsculas. No demasiado avanzadas, pero matemáticas al fin y al cabo. Estás avisado. Y en la próxima entrada del blog, habrá más; muchas más.

La cinemática es la rama de la física que se encarga de estudiar la trayectoria en función del tiempo. Encontramos dos tipos de cinemática, la directa y la inversa. En cristiano, la cinemática directa (DK, Direct Kinematics) estudia las posiciones finales de sistema a partir de datos conocidos de ángulos y longitudes, mientras que la cinemática inversa (IK, Inverse Kinematics) hace lo contrario, a partir de un punto final conocido establece los ángulos de las barras del mecanismo que llevan a él.

En el caso de nuestro IKHEA, vamos a desarrollar un algoritmo de cinemática inversa que nos permitirá saber los ángulos de los servomotores a partir del punto al que queramos que se desplace el hexapodo. Este algoritmo lo definiremos matemáticamente, de forma que la placa de control arduino empleada en el proyecto pueda hacer los cálculos, pasárselos a la tarjeta de control de los servomotores, y de esta forma mover IKHEA de forma dinámica.

¿Y cómo lo vamos a hacer? Pues aquí entran en juego las matemáticas. Seguro que todos recordáis aquello de la trigonometría. Sí, sí... aquello de seno, coseno, tangente... yo me acuerdo de cuando decía "pero eso... ¿sirve para algo?". Pues al final resulta que sí, que sirve para hacer un robot de seis patas. Qué cosas, cuántas vueltas da la vida ;)

A partir de conocer el blog de Oscarliang he desarrollado mi IK propia, por lo que os recomiendo que os paséis por allí y echéis un ojo a excelente material que ha colgado. De hecho, en esta entrada omitiré la parte matemática pesada, que sí desarrollaré más adelante. Pero vamos a lo nuestro.Nuestro objetivo es, a partir de una posición de un punto conocida, obtener los valores de los ángulos.

En esta primera imagen, se observa la pata del robot vista en su plano XZ (viendo el robot desde detrás). En ella, observamos representados los ángulos, nombres y longitudes más relevantes, que nos permitirán calcular los valores de los ángulos en función siempre de la posición final del punto.


Cada una de las partes de las que se forma una pata reciben el nombre de COXA, FÉMUR y TIBIA, siendo sus longitudes conocidas. El ángulo alfa es el que forma la vertical con el fémur, y el ángulo beta el que forman fémur y tibia. Cada uno de estos ángulos se corresponderá al giro de uno de los servomotores que montaremos en IKHEA.

Por otra parte, en una vista del plano XY (viendo el robot desde arriba) cuando la pata se ha desplazado en la dirección Y se observa el ángulo gamma, correspondiente al giro del tercer servomotor de cada pata.




Por lo tanto, para cada una de las tres articulaciones de cada pata, obtendremos un ángulo que será función tan solo del punto final que queramos alcanzar. Si conseguimos establecer una relación matemática que nos permita su cálculo podremos mover las patas a cualquier posición sin más que indicar el punto que queremos alcanzar, y el propio sistema de control será el que le diga a cada servomotor cuánto debe moverse.

La formulación matemática que nos permitirá esto, a partir de la nomenclatura y disposición de las patas mostradas anteriormente, será la siguiente:


En el próximo post explicaré de dónde salen las formulas, y ahí sí que habrá un buen cartel de AVISO: MATEMÁTICAS!!!.

Un saludo, y nos leemos.

No hay comentarios:

Publicar un comentario