Brazo robot dibujante

Hace unos meses, construi mi versión del drawbot, que despues se convirtió en el lightbot.
Un proyecto muy usual para los que se van metiendo en la robótica es construir algun tipo de brazo robot. Me animé a intentar uno mío, con la idea inicial de que pudiera escribir, incluso con estilo.
Mi acercamiento era (demasiado) sencillo: con 2 motores paso a paso, construir un robot con 2 articulaciones, que se moviera sobre un plano y me permitiera dibujar. Nuevamente con meknex, y mi arduinomotor shield armé un primer prototipo:
(perdón por la calidad de la foto)
El marcador está fijo, y los perfiles están ajustados directamente a los motores. El motor de la articulación tiene unos rodamientos debajo para soportar el peso.

Software


Para el software, tuve que aprender la versión más básica de un cálculo de cinemática inversa (IK). Es así:

(Dibujado a mano, no por el robot)


Sabiendo donde queda el punto al que tengo que ir, es facil calcular la distancia d, usando el teorema de Pitágoras. Sabiendo las 3 longitudes de un triángulo, se puede encontrar el valor de cualquiera de sus ángulos por el teorema del coseno.  Primero, tengo que encontrar los valores para Gamma y Beta.  y ubicar a los motores en esa posición. Luego, tengo que aplicar una corrección Alfa para ubicar el marcador donde corresponde.
Programé los cálculos, y nuevamente utilizando la biblioteca AccelStepper,  implementé los movimientos de los motores paso a paso. Una vez implementado esa rutina, entendí con agrado que todas las rutinas para dibujar que había hecho para el drawbot eran usables, pues todas dependían de la implementación de una sola rutina: moveTo(x,y).

Algunas pruebas


No tardé mucho en darme cuenta que la precisión que hace falta para hacer algo parecido a la caligrafía está completamente fuera del alcance de un robot armado con estos elementos. Usar  microstepping no fue posible por el torque requerido (sobre todo por el motor de la base).Aun así decidí continuar a ver qué salía.
Las primeras pruebas no fueron muy alentadoras. El brazo tenía mucha vibración y dependía mucho de estar bien firme sobre la base. Solucioné el problema con una plancha de foamboard, a la que atornillé la base del brazo.
Hice algunos cambios de diseño para reducir el peso,  y agregué un servo en la punta del brazo, para poder subir y bajar el marcador:




Las pruebas de dibujo continuo dieron los resultados esperables, considerando la resolución de los motores. Los dibujos de precisión entonces quedaron descartados. Sin embargo, todavía quedaba la opción de hacer dibujos más 'impresionistas'. Un nuevo cambio de brazo y algunos resultados:






Un cambio por una punta más fina y otro algoritmo para dibujar:





Una vuelta de tuerca


Finalmente, decidí agregarle una cosita más. Había comprado hace tiempo una pantalla táctil para Nintendo DS que nunca había conectado a nada. Siguiendo los pasos de este tutorial, pude conectarlo al Arduino con facilidad. Usando una caja de un servo, construí una pequeña base. 




 Con la pantalla funcionando, solo hacía falta indicar al brazo a donde moverse, dependiendo de las coordenadas leidas por la pantalla tactil:



3 comentarios:

  1. Salame; como no lo hiciste zurdo tambien?
    Ya te veo de nuevo en HaD!

    ResponderEliminar
  2. me gustaría saber la progracion y el circuito de coneccion

    ResponderEliminar