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:



23 comentarios:

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

    ResponderEliminar
  2. Respuestas
    1. Yo puedo hacer un brazo robot dibujante como el que vez en el post ...
      Dejame tu celular a este correo para conversar .... najdaga@hotmail.com

      Eliminar
    2. Yo puedo hacer un brazo robot dibujante como el que vez en el post ...
      Dejame tu celular a este correo para conversar .... najdaga@hotmail.com

      Eliminar
  3. me gustaría saber la progracion y el circuito de coneccion

    ResponderEliminar
  4. Andrés, por favor colaborame con la programación y el esquema de conexionado, de verdad que lo necesito mucho, de antemano expreso mi gratitud.

    ResponderEliminar
  5. Me gustaria ver el codigo, si podes enviarmelo este es mi mail camitralma@hotmail.com

    ResponderEliminar
  6. Excelente!! podrias compartir tu codigo en arduino para ver como implementaste la cinematica inversa?.. mi correo es: microbit_o@yahoo.com.mx muchas gracias.

    ResponderEliminar
  7. Podrías subir los planos del robot para poder hacer uno????

    ResponderEliminar
  8. Yo justo estoy haciendo alcanza igual con pic...
    Si gusta te pazo planos y programa... :D

    ResponderEliminar
  9. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  10. Quien quiere un brazo igual!
    Estoy haciendo uno parecido pero con mejoras!!!
    Avisenme quien quiere uno....

    najdaga@hotmail.com

    ResponderEliminar
  11. Quien quiere un brazo igual!
    Estoy haciendo uno parecido pero con mejoras!!!
    Avisenme quien quiere uno....

    najdaga@hotmail.com

    ResponderEliminar
  12. Yo justo estoy haciendo algo igual con pic....
    Si gustas te pazo planos y programa ... :D
    Pasame tu cel para conversar....

    ResponderEliminar
  13. Yo justo estoy haciendo alcanza igual con pic...
    Si gusta te pazo planos y programa... :D

    ResponderEliminar
  14. Podrias por favor compartir el codigo :D gracias

    17dariel@gmail.com

    ResponderEliminar
  15. buen trabajo amigo estoy también trabajando algo parecido pero este sera para que imprima en 3d pero me prodrias pasar el algoritmo para entender cuales son las acciones que usas para qu ese mueva para dar la forma en papel en este caso
    mi correo sailee09@gmail.com

    ResponderEliminar
  16. Hola ¿como estas?, buen trabajo... Pienso realizar este robot para un proyecto, si pudieras contactarte con migo seria asombroso, Te agradeceria tu ayuda.
    Correo: Volivares1001mamf@gmail.com

    ResponderEliminar
  17. Hola chicos alguien me puedo ayudar con la programación,me la pueden enviar a mi correo yuglycamilasuarez23@gmail.com

    ResponderEliminar
  18. Hola Andrés, disculpe. ¿Qué programa o librería utilizó para obtener las coordenadas (x,y) de la imagen?. De antemano muchas gracias

    ResponderEliminar