Como construir un brazo-robot de LEGO

Os presento mi brazo articulado robot industrial del Lego Technic que construí hace 15 años, con fotografias recientes después de repararlo y limpiarlo:




Mecánica:

La arquitectura del robot depende del robot que queremos crear. Por ejemplo, si pretendemos reproducir a escala un robot industrial (brazo articulado) hemos de fijar los grados de libertad (número de ejes de movimiento independiente). En general, tres grados de libertad son suficientes para posicionar la herramienta terminal del robot - generalmente una pinza - en cualquier punto de la zona de trabajo tridimensional. Lo óptimo es disponer de tres grados de libertad adicionales - 6 en total - para poder acceder al punto de trabajo desde cualquier orientación espacial, pero cinco grados de libertad suelen ser suficientes (muchos robots industriales de verdad tienen 5 grados de libertad).



Para agilizar la dinámica y cinemática del robot es fundamental diseñar una arquitectura geométrica óptima del brazo robótico en la que los elementos pesados del robot (los motores) se hallen lo mas cerca de la base del brazo posible, evitando tener que acelerar estos pesados elementos en la medida de lo posible.



El movimiento giratorio de los motores se transmite mediante cadenas, varas o ejes a los distintos elementos móviles del robot.



El movimiento se transmite al brazo y al antebrazo mediante dos baras con piezas dentadas a modo de cremallera, y esto le confiere una sólida robustez al transmitir el movimiento con suficiente palanca, una fuerte reducción y por tanto aumento de la fuerza de los motores y unas propiedades mecánicas muy interesantes al conservar el robot el paralelismo de los brazos superiores al que se está moviendo, ya que es conveniente que el movimiento de un brazo cercano a la base no modifique la orientación de los brazos superiores. (para que se entienda, como una lámpara de arquitecto).




El movimiento de la muñeca tiene dos grados de libertad: rotatorio y vertical, y se transmite el movimiento de los dos motores desde la base mediante cadenas y ejes de Lego. En la muñeca está ubicado un elemento diferencial. La solución del diferencial adoptada por los robots industriales de verdad le confiere a la muñeca la propiedad de que sea muy compacta y ligera en el mínimo espacio posible, de manera que los dos movimientos pueden efectuarse combinando el movimiento relativo de los dos motores: cuando los dos motores giran en el mismo sentido, se produce el movimiento vertical de la muñeca, y cuando giran en sentido contrario, se produce el movimiento giratorio de la misma.




Los kits pneumáticos de Lego son adecuados son adecuados para implementar la pinza o grapa terminal del robot a causa de su reducido peso y la facilidad de transmitir el aire a los los pistones de la pinza por tubos de goma flexibles, y también por el grado de flexibilidad que proporciona un sistema pneumático a los dedos de la pinza. El sistema compresor de aire de nivel de presión autoregulada puede situarse externamente al robot para reducir su peso y dimensiones.

Ejemplo de uns sistema autocompresor con LEGO neumática similar al que utilicé en mi brazo robot apara abrir y cerrar la pinza neumática del robot:


En mi caso el control manual de la palanquita controladora lo sustituí por una electroválvula activada por un motor de LEGO de CC que movía la palanquita para realizar los movimientos de abrir y cerrar la pinza de forma programada desde el ordenador.



Interfase con el ordenador

Tarjeta de entradas y salidas: Se conectan al bus de expansión del PC (EISA) , y se pueden comprar en distribuidores de componentes electrónicos o nos la podemos fabricar nosotros mismos. En mi robot me fabriqué una placa de interfase muy sencilla y barata con solo dos circuitos integrados, que permitía disponer hasta 24 entradas salidas o entradas digitales. El corazón del diseño estaba basado en el PPI (Programmable Peripheral Interface) 8255 A, y tiene la ventaja de poder programar distintos subgrupos de los 24 bits como puertos de entrada o de salida. Como decodificador de direcciones utilicé el chip 74LS138.

Etapa de potencia y motores

Las salidas del chip 8255A y del puerto paralelo son compatibles TTL, y esto significa que no tienen una gran capacidad de corriente suficiente para activar los motores. El chip ULN 2001 es adecuado para excitar bobinas de relés y de motores de corriente continua o de motores paso a paso.

A diferencia de los motores de corriente continua en los que el eje sencillamente gira de forma continua, un motor paso a paso gira a pasos discretos muy precisos a la frecuencia dictada por el ordenador. En muchos aspectos es el sueño del ingeniero de robots hecho realidad, ya que nos descarga de la tarea de leer la posición del eje mediante un sensor o lector de posición de giro (normalmente óptico o resistivo), ya que una simple contabilización de los impulsos aplicados al motor paso a paso a través del software de control nos determina el ángulo girado por el eje. Por lo tanto se trata de un sistema en lazo abierto. El inconeveniente es que la alimentación de los motores no es tan simple como conectar los terminales a una batería: se necesitan circuitos electrónicos que vayan excitando las bobinas de los motores paso a paso con la intensidad de corriente requerida y en la secuencia adecuada.

Para esta tarea en mi robot utilicé el chip SAA 1027, el cual conecté directamente a dos líneas de un puerto de salida del ordenador. La frecuencia del tren de impulsos aplicado por el software a la línea T determina la velocidad de los pasos del motor y por tanto la velocidad de giro. Por la líea R del chip SAA 1027 se indica el sentido de rotación del eje del motor. Cada etapa del salida del chip SAA 1027 es capaz de conmutar una corriente de hasta 350 mA, y por tanto es apto para alimentar las bobinas de la mayoría de motores paso a paso unipolares, como los que se encuentran en muchas impresoras. A título de referencia, los motores paso a paso que utilicé en mi robot-brazo de Lego son 5 motores AIRPAX 9904 112 35014.

Software de Control

El programa que controle nuestro robot lo podemos hacer en cualquier lenguaje de programación que conozcamos: Pascal, Visual Basic, C, C++, etc. Primero realicé las subrutinas de bajo nivel: aquellas que trabajan a nivel de bits, para generar las señales que enviaremos a cada chip SAA1027 controlador del motor paso a paso, pero es importante que el sistema inhabilite la capacidad de de sobrepasar los lómites físicos del movimiento de cada brazo (final de carrera). Esto lo podemos conseguir mediante microruptores situados en los finales de carrera, y conectados a un puerto de entrada del ordenador para que el software de control lea su valor.
<><><><><><>




La operatividad de nuetro robot, al igual que un robot industrial de verdad, requiere que el programa de control sea capaz de ejecutar tres tareas bien diferenciadas: una primera fase de inicialización, una fase de aprendizaje o programación, y una fase de reproducción o ejecución del programa memortizado.

1- Fase de inicialización
En un sistema de lazo abierto, como en este robot con motores paso a paso, tenemos dos inconvenientes: por un lado necesitamos conocer una posición inicial de referencia a partir del cual llevar la contabilización de los pulsos aplicados a los motores, y por tanto conocer su posición. Por otro lado, si aplicamos un par de carga demasiado elevado al eje del motor es posible que este se mueva un número desconocido de pasos (pérdida de pasos), y no tendremos mas remedio que reinicializar el robot para encontrar de nuevo la posición inicial de referencia. Esto se consigue en este robot gracias a los microruptores que detectan los finales de carrera de los movimientos de cada brazo o de la base, y entonces el programa de inicialización se limita a hacer girar todos los motores y pararlos cuando se detecta el final de carrera correpondiente a cada motor.

Esta tarea de inicialización es la que hará el robot cuando lo conectemos por primera vez, o cada vez que sospechemos que la posición real del robot no se corresponde con la que presupone el software de control.



2- Fase de aprendizaje o programación

En este modo el robot se mueve obedeciendo a un panel de control (generalmente un joystic o el mismo teclado del ordenador), mientras por softwre llevamos un seguimiento de la posición actual del robot. Podemos optar por dos etrategias: o bien guardamos en memoria la secuencia de impulsos de control que estamos enviando a cada motor (la trayectoria), o bien unicamente memorizamos la posición actual del robot en los puntos de paso que nos interese (registramos el número neto de pasos que ha girado cada motor). Este segundo caso recibe el nombre de programación punto a punto, y tiene la ventaja que ahorra mucha memoria.

3- Fase de ejecución
El brazo robótico , en este modo, tiene que ser capaz de repetir los movimientos aprendidos durante la fase de aprendizaje del punto anterior. En el caso de programación punto a punto es suficiente enviar tantos impulsos al motor como número de pasos haviamos memorizado para alcanzar cada punto. El problema es que no podemos conocer a priori como será la trayectoria entre un punto y el siguiente de la herramienta terminal cuando intervienen varios motores simultaneamente. Para resolver este problema y conseguir trayectorias rectilineas entre los puntos memorizados en mi robot de Lego el software de control calculaba puntos intermedios mediante interpolación de un número suficientemente elevado de puntos intermedios entre el punto inicial y el siguiente punto memorizado destino, y esto requirió un tratamiento matemático mas elevado, ya que para cada punto que se interpola se necesitan realizar conversiones de coordenadas cartesianas y coordenadas angulares. El uso de rampas de aceleración y desaceleración en cada motor mejora ostensiblemente el correcto funcionamiento y la velocidad máxima de cada brazo durante el modo de reproducción, y sobretodo disminuye el riesgo de perder el conocimiento de la posición real del robot (pérdida de pasos), fenómeno que he comentado con anterioridad.



Consideraciones finales

Construir tu propio robot como hobby aporta conocimientos prácticos y espíritu de investigación que no se enseña en las escuelas de ingeniería, a menudo con unos planes de estudio demasiado teóricos. El Lego Technic, conjugado con motores paso a paso o de corriente continua, y con una interface con el ordenador personal, es la mejor plataforma de desarrollo para aprender mecánica, programación, electrónica de forma muy amena y planterarse construir tu propio robot modo de reto.

Comentarios

  1. No pues la verdad te FELICITO, aun que apenas tenga 13 años, y la verdad me imprecionas por que eh estado buscando algo como lo que TU justamente hiciste =)!!!
    Shoy de aguashcalientesh! (Aguascalientes, México) y la vrdd me gustaría que visitaras una pág... www.secundariatecnicaunodeags.blogspot.com! thanks!!!

    ResponderEliminar
  2. Deseo darte la enhorabuena y muchas felicidades por tu trabajo!

    Para complementar tu trabajo desearía exponer para todos lo que deseen fabricarse (hacer) un brazo robot, otro trabajo, mucho más sencillo y humilde que publico en mi página web. Se trata de un brazo robot hecho en madera contrachapada, en el que en un tono muy amistoso y humorístico, el autor (que no soy yo) explica paso a paso la realización de un sencillo brazo a base de servomotores. Desde mi punto de vista sirve para inspirarnos en cómo hacer nuestro propio brazo robot aplicando los conocimientos que poseemos.

    Esta es mi web:

    http://sites.google.com/site/proyectosroboticos/

    También encontrarás:

    * Simuladores de Brazo Robot totalmente funcionales y gratis, en el que es muy sencillo programar (memorizar posiciones) para hacer que se mueva de forma autónoma. Podrás guardar, editar y cargar tus propias simulaciones de Brazo Robot.

    * Programas de ejemplo sobre Cinemática Inversa.

    * Programas de ejemplo sobre Algoritmo de Bresenham para 2D, 3D... hasta 6D (se le puede dar otras aplicaciones además de hacer líneas y las uso en mi Brazo Robot 3D.)

    * Programas en código abierto en el que se ejemplifica la implementación de OpenGL para un Brazo Robot de 5 grados de libertad ( más la pinza, pero la pinza no es un grado de libertad.)

    Si ya estáis en la labor de hacer algo parecido, en mi web encontrarás muchas cosas listas para implementar en tu propio programa.

    Saludos.

    ResponderEliminar
  3. DISCULPA AMIGO TE QUERIA PREGUNTAR QUE LENGUAJE DE PROGRAMACION UTILIZASTE PARA PODER CREARLO

    ResponderEliminar
  4. Lo programé en lenguaje C hace 18 años.

    Un saludo

    ResponderEliminar
  5. Hola a tu juicio estos proyectos tienen el nivel de desarrollarlos en educacion superior? se podria abordar progrmacion en C,comunicacion con PC por puertos?

    ResponderEliminar
  6. Por supuesto que si. Realicé este proyecto mientras estudiaba ingeniería superior de telecomunicaciones para pasar de la teoría a la práctica y aprender lo que no me enseñaban. Lástima que no tenga vídeos del robot operando...

    ResponderEliminar
  7. saben algo de como es su sentido de rotacion

    ResponderEliminar

Publicar un comentario

¡Tu opinión nos interesa! Cuéntanos algo bonito