Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Resolver Robots Articulados Con Arduino
Resolver Robots Articulados Con Arduino
En esta entrada vamos a ver las ecuaciones necesarias para calcular un robot
articulado en un procesador como Arduino. Y al final ¡veremos una librería para que no
tengáis que hacerlo nunca más!
En general, en los robots articulados sabemos la distancia de cada uno de los lados
del polígono articulado y actuamos sobre los motores para variar el ángulo que forman
entre ellas.
También conocemos las coordenadas del punto inicial del polígono (o bien no nos
importan, si vamos a usar coordenadas relativas al mismo). Por su parte, cada nodo de
la articulación tiene sus propias coordenadas, teniendo especialmente interés en el
«punto final» porque normalmente es donde tendremos el efector (la pinza del brazo, la
pata del robot, etc.).
Con esto, tenemos dos tipos de cálculos que aparecen en la resolución de robots
articulados:
Directo, donde sabemos los ángulos de las articulaciones, y queremos saber la posición del
efector.
Inverso, donde sabemos la posición del efector, y queremos calcular los ángulos necesarios para
conseguirlo.
Siendo más frecuente en robots articulados el último de estos dos. Por ejemplo,
sabemos dónde está la pelota que queremos coger o donde queremos poner una pata, y
necesitamos saber qué ángulos fijar en los motores para conseguirlo.
Sin más, vamos a ver cómo resolver este problema para el caso de triángulos y
cuadriláteros articulados en 2D, y 3D, los casos más frecuentes que tendremos al
trabajar con robots articulados.
TRIÁNGULO ARTICULADO 2D
DIRECTO
Con esta distancia y las longitudes de los segmentos podemos calcular todos los
ángulos interiores del triángulo aplicando el teorema del coseno generalizado.
Por otro lado, podemos calcular el ángulo que forma el triángulo respecto al eje X
con la siguiente expresión.
Lógicamente, no todas las posiciones admiten una solución, como por ejemplo las
que excedan el alcance de los brazos.
CÓDIGO
Así sería un posible ejemplo de código para resolver un triángulo articulado en 2D
en un procesador como Arduino.
DIRECTO
La resolución de un cuadrilátero articulado es similar al triángulo articulado,
simplemente proyectamos el nuevo segmento en los ejes X e Y.
INVERSO
La resolución de un cuadrilátero articulado no es más compleja que la del triángulo
en 2D. El nuevo segmento añade un grado de libertad adicional por lo que, en general,
el problema admite múltiples soluciones (infinitas).
Para poder resolver el sistema debemos imponer una condición (o relación entre
condiciones). Lo habitual es proporcionar el ángulo absoluto del ultimo segmento, que
corresponde con el angulo de ataque del efector.
Con las coordenadas del punto P2, resolveríamos como en el caso anterior. Igual
que en el caso del triángulo, no todas las posiciones admiten solución. Por otro lado, es
posible que exista solución solo para un cierto rango de valores de ángulo del efector.
Con frecuencia, se establece una relación entre la posición del efector y su ángulo
alpha_3, basado en que la variación del ángulo durante el recorrido del robot sea
«suave».
CÓDIGO
Así sería un posible ejemplo de código para resolver un cuadrilátero articulado en
2D en un procesador como Arduino.
DIRECTO
El caso de un polígono articulado en 3D puede resolverse con las mismas
herramientas que en el caso 2D, simplemente considerando que ocurren en un plano
girado un ángulo alpha_0 respecto al eje Z.
Para convertir las coordenadas de cualquier punto calculado en el plano (Pn’) a sus
equivalentes en 3D (Pn) usamos las siguientes relaciones.
CÓDIGO
Así sería un posible ejemplo de código para resolver un triángulo articulado en 3D
en un procesador como Arduino.
CUADRILÁTERO ARTICULADO
3D
DIRECTO
Análogamente, para el calculo directo de un cuadrilátero articulado en 3D
proyectamos igualmente en un plano 2D usando las expresiones del apartado anterior,
únicamente considerando que el ángulo alpha_0 esta vez es.
INVERSO
Igualmente, un cuadrilátero articulado puede resolverse con las mismas
herramientas que su equivalente en 2D. La única diferencia es que, en esta ocasión, las
coordenadas del efectos en el caso equivalente en 2D (P3′) se calculan a partir del punto
3D (P3) según la siguiente relación.
CÓDIGO
Así sería un posible ejemplo de código para resolver un cuadrilátero articulado en
3D en un procesador como Arduino.
LIBRERÍA DE ARDUINO
ARTICULATED
¿Y si lo metemos en una librería para que sea más cómodo de usar? Por supuesto
que sí, aquí una librería de Articulated para Arduino, que realiza todos los cálculos
anteriores de forma cómoda y sencilla. A disfrutarlo!