JVM-Electronics

  • Aumentar fuente
  • Fuente predeterminada
  • Disminuir fuente
BIENVENIDOS
E-mail Imprimir PDF


La historia de Robby, el robot bipedo...
robby_2008
Esta es la historia real de robby (el robot bipedo). Aunque para muchos solo sea un monton de aluminio y cuatro motores, para mi es mucho mas y con este texto os voy a intentar transmitir lo que significa para mi.

Robby nace como un reto mayor a los que tenia por aquel entonces (año 2005), desde muy pequeño siempre me han llamado la atencion los robots; me gustan mucho las peliculas de ciencia ficcion sobre todo si aparece algun robot o algun curioso ingenio, siempre que aparece algo de este contenido llama mi atencion.

Por aquel entonces trabajaba en un taller de metal donde tuve la ocasion de aprender algunas de las bondades del aluminio asi como formarme en software de diseño 3D. Mi curiosidad me llevaba a paginas roboticas donde se presentaban a la venta los primeros robots bipedos (a precios intocables para mi) y me quedaba admirado viendo sus logros.

Fue asi como llegue a lynxmotion (pagina de kits roboticos) donde se mostraba como construir "mecanismos" bipedos y otras curiosidades roboticas. De esta web baje una imagen de un robot bipedo construido con sus piezas y empece a "imaginar" mi propio robot bipedo.

He de admitir que las piezas de lynxmotion son realmente versatiles a la hora de construir mecanismos ya que vienen con las posibilidades fisicas y agujeros necesarios para que tu mecanismo se pueda ensamblar sin problemas.

Comence a dibujar a Robby a mediados del 2005 con una herramienta grafica en 3D (solidworks), teniendo en cuenta las imagenes que tenia (fisicamente y en mi mente) comence a dibujar los bocetos y pruebas de ensamblaje del robot. Lo primero fueron la piernas porque me parecia la parte mas importante del robot, con ellas tenia que desplazarse y eso era vital en el proyecto y por tanto el primer objetivo.

mano1Segun deduje en el momento de dibujar el resto, el cuerpo no suponia un problema a pesar de que tenia que albergar la electronica, pero como digo, no era importante porque me sentia capaz de adaptar la electronica al chasis, asi que no le di mucha importancia al espacio disponible ni por donde pasaria los cables, me preocupaba mas que quedase bonito (dentro de lo que es un robot de este tipo). Para mi es importante la apariencia y la tecnica.

Con los brazos sucedio lo mismo, me limite a colocarlos como se mostraba en las fotos de lynxmotion. Habian varias opciones para las manos, podrian ser mas complejas y mas sencillas asi que me decante con una de tipo "pinza redondeada" que es la que lleva con una especie de nervios que aparentan ser los dedos. Me gusta la idea de que pueda coger cosas.

Llegado a este punto solo faltaba la cabeza. Habia visto varios diseños e imagenes de algunos de los primeros robots bipedos comerciales donde se colocaba un servo como cabeza, esto hacia que la proporcion del robot (cabeza/cuerpo) fuera "adecuada" ademas de proporcionar un movimiento "eje-X" que daba muy bien el pego. Sin embargo mas que el movimiento me interesaba poder colocarle electronica.

Pretensiones...

La idea original de robby era que respondiera a comandos de voz, es decir debia moverse mediante ordenes vocales y contestar si habia recibido correctamente la orden. Para eso decidi montar un circuito de audio cableado con el ordenador y era realmente el pc el que hacia de cerebro. En la cabeza construi un vumetro de 10 leds y un pequeño amplificador de BF de 1 watio. En la tapa de la cabeza estaba colocado el altavoz (extraido de un viejo monitor de pc).
cabeza1
Los movimientos del robot y el audio debian estar sincronizados de tal forma que si yo le decia "levanta las manos" el ordenador contestaba: "levantando manos", esta vocalizacion era enviada por la salida de la tarjeta de sonido del pc al altavoz colocado en la cabeza de Robby, de esta forma yo podia saber que habia reconocido correctamente el comando ademas de que "cara al publico" pareceria atender las ordenes. Si la distancia entre Robby y el Pc era considerable yo podia saber si se habia enterado del comando.

placa1Yo tenia algo de experiencia sobre el manejo de servos, de hecho, habia construido hace poco el controlador para un brazo con 5 servos y lo manejaba desde el pc por un puerto serie. Para Robby pense que solo habria que ampliar este proyecto para manejar mas servos, concretamente multiplicar por cuatro la cantidad a manejar.

La primera electronica de servo-control que monte para robby no fue lo buena que se esperaba, era incapaz de comunicarse correctamente ya que, al contrario de lo que pensaba, mi nivel de conocimiento sobre los microcontroladores dejaba mucho que desear y no conseguia hacer que se moviesen de forma estable mediante comandos externos, asi que decidi crear una placa que tendria una tarjeta SD y un puerto serie para aplicar las comunicaciones cuando supiese hacerlo.

Compre los servos a una tienda aqui en España (no recuerdo el nombre) , pero consegui un buen precio por los 20 servos que le iba a comprar. Hay un dicho que dice que se paga la inexperiencia y yo la pague realmente cara, compre 16 servos Futaba S3003 porque eran los que yo conocia en aquel entonces y cuatro servos sin marca a los que me garantizaron una fuerza superior a 8 kg.

Los cuatro de mayor torque los coloque en las piernas de robby, dos en las caderas y dos en los tobillos. Habia visto videos de robots donde se veia claramente que el robot debia mantenerse a un solo pie para poder desplazarse y la unica forma de conseguir eso en Robby era dotar de mas potencia a estos cuatro puntos.

Eran fechas proximas a la campus party 2006 y no queria desaprobechar la ocasion de participar en la prueba libre, asi que decidi coger los trastos y terminar el proyecto los dias precedentes al evento (al menos eso crei).

Mi idea entonces era recibir los comandos por el puerto serie indicando que movimiento debia ejecutar el robot, y que las posiciones de los servos para realizar el movimiento estuviesen grabadas en la tarjeta SD, al solo esperar recibir 3 o 4 datos, no debia ser un problema para mi placa. Nada mas lejos de la realidad, al leer los datos de la tarjeta el microcontrolador descuidaba los envios de PWM a los servos y eso se traducia en un tembleque en los servos.

El robot pareceia temblar, asi que tenia el mismo problema que cuando le enviaba los movimientos desde el ordenador. Por otro lado, con este problema era obvio que no podria caminar, ni tansiquiera mantenerse erguido, asi que lo presente montado en su plataforma de movimientos (una base de madera donde el robot esta fijado y donde ensayo los movimientos). Os podeis imaginar al robot erguido, sujeto a su base de ensayos solo moviendo sus temblorosos brazos, incapaz de hacer mucho mas.
EnBase1
Estando por alli, conoces a mucha gente que como tu intenta sus proyectos, asi que viendo los resultados y el desanimo que yo tenia me animaron diciendo: aunque no funcione presentalo... Ya que estas aqui... Y eso hice, me esforce en dejarlo lo mas funcional posible dentro de su incapacidad. Aunque todo eran buenas caras y uno intenta transmitir a todo el mundo que esta alegre y contento... En realidad... yo estaba fustradisimo (como dicen, la procesion va por dentro).

Yo sabia que el resultado no iba a ser bueno, porque mi ambición era que el robot caminase y no lo consegui. Me fui de esa campus tan mal que decidi sobreponerme y prometerme a mi mismo que no volveria a pasar. Me compre varios libros sobre microcontroladores e inverti muchisimas horas haciendo pruebas y desarrollando circuitos y codigos para conseguir que mi robot fuera lo mas estable posible.

Fase 1 (comunicacion USB)...

En los dos años siguientes estuve dedicando mi tiempo libre en mejorar esto y puestos a ello, mejorar el robot. Asi que a finales de 2006 consegui que las comunicaciones por USB no interfirieran en el control de los servos, esto fue un gran avance pues consegui hacer los movimientos de los motores totalmente estables.

Desarrolle una herramienta grafica para el pc donde se mueven los motores basandose en una linea de tiempo, entonces Robby podia ejecutar los movimientos sin perturbaciones en los motores y con el tiempo programado, esto me permitio observar las carencias fisicas del robot, donde podria fallar, con que me iba a encontrar al querer ejecutar un movimiento.

A pesar de conseguir que la electronica y el software del pc funcionasen a la perfeccion, seguia teniendo un grave problema, los servos no tenian suficiente potencia para hacer caminar a Robby. Encontre servos muy economicos que nada tienen que ver con las marcas de renombre en el mercado (Hitec, futaba, etc...). Los fabricantes de estos servos alardean de su poder de fuerza y de su durabilidad. La verdad es que dan un resultado mas que bueno al precio que tienen, pero eso no convierte al robot en el mejor. A decir verdad los servos son ruidosos y fluctuan en su posicion sea la que sea, imagino que su electronica no es muy estable.

Estos servos son capaces de mover mas de 10kg y si los fuerzas un poco con una bateria de lippo quiza llegan a los 13kg, mas que suficiente para Robby. Asi que nuevamente hice una inversion considerable y adquiri 20 servos de estas caracteristicas. Con estos servos Robby dio sus primeros pasos y fui ampliando los movimientos para el resto de articulaciones.

software
A medida que veia las necesidades de control a la hora de hacer los movimientos me daba cuenta de lo que estaria bien que tuviese el software del Pc con el cual gobernaba el robot. El software iba mejorando y le añadia funciones para realizar secuencias de movimientos, bucles, etc.

Fase 2 (eliminando cableado)...

Cuando realize realice el primer video demostrativo de los movimientos de Robby (principios de 2007) alguien me dijo que el siguiente paso era quitarle el cableado de forma que el robot fuese completamente libre y la posibilidad de ser autonomo.

Asi que decidi que el siguiente paso logico era conectarle un modulo inhalambrico, aun no tenia claro como hacer para que el robot realizara los movimientos sin estar conectado a un Pc. Habia estado viendo modulos de varios tipos y tecnologias pero casi todos al final necesitaban que el controlador dispusiera de un puerto RS232, cosa que aun no habia conseguido.

Era imperativo conseguir que la controladora de Robby recibiera las posiciones y movimientos por RS232, esto costo lo suyo de conseguir ya que el buffer del puerto USB es considerablemente mayor al que tiene la UART del microcontrolador. Otro inconveniente añadido es que los datos enviados y recibidos por un puerto USB son mucho mas rapidos que por un puerto serie. A partir de 38400 baudios la respuesta de velocidad de movimiento es aceptable, dejan de notarse las ralentizaciones de movimiento a causa de la falta de flujo de datos.

Durante el mes de marzo llegaron a mis manos dos muestras de los xBee S1, me atrevo a decir que fueron de los primeros que entraron en España, aun no los comercializaban aqui y un gran amigo mio (Warren Shroeder) me los consiguio para mi proyecto. Descubri con ellos que podia enviar y recibir una gran cantidad de datos y muy rapido, justo lo que necesitaba para mi robot, asi que no tarde en desarrollar unos circuitos incluyendolos.

Ahora Robby ya no tiene cables gracias a estos modulos, despues de realizar diversas pruebas con ellos la velocidad optima de comunicacion son 57600 baudios. A punto de comenzar la campus party 2008 ya tenia listo mi robot y ese año estaba dispuesto a mostrar el objetivo cumplido asi que decidi grabar un monton de secuencias de movimiento para que Robby, dentro de sus limitaciones, mostrara lo que es capaz de hacer. Quedo segundo en la prueba libre de campus party 2008.

Fase 3 (grabando movimientos en su memoria)...

Lo siguiente que debia emprender es la posibilidad de que los movimientos estuviesen grabados de alguna forma en el robot, asi que me puse a averiguar que tipo de memoria podria conectar para que el controlador de Robby y como proceder para grabar o borrar movimientos.

Hice pruebas con varios dispositivos y encontre unas memorias de 512K de acceso muy rapido sobre I2C, desde la ultima version del software he añadido una pantalla para enviar los movimientos a la memoria y unos comandos para que el controlador de 24 servos lea los movimientos almacenados en ella.

Actualmente los movimientos se ensayan desde el software del Pc y luego se trasladan a la memoria del robot, cada movimiento almacenado puede ser puesto en funcionamiento mediante tres o cuatro datos de control, esto permite que Robby pueda ser comandado desde un mando o que se le pueda conectar una placa sensorial (con los debidos sensores) para ser autonomo.

Fase 4 (cambio de servos y mejora de estabilidad)...

Ahora mismo (septiembre de 2011) Robby tiene todos los servos cambiados, lejos quedan los servos inestables y los de bajo par de fuerza, ahora tiene servos Futaba y Hitec de multiples potencias.

  • Las piernas llevan 4 servos cada una, dos Hitec HS-985 para cadera y tobillo y dos HS-645 MG para el femur y la rodilla.
  • Cada brazo lleva 5 servos cada uno: Un HS-645MG en el Hombro, otro HS-645MG en el antebrazo, dos servos Hitec HS-625MG (codo y muñeca) y un Futaba S3003 (dedos).
  • La cabeza lleva dos servos uno 9G para el movimiento en eje-X y un servo 5G para el movimiento eje-Y

Galeria Multimedia de Robby

Fecha de actualizacion: Octubre 2011

 

Última actualización el Domingo, 30 de Octubre de 2011 11:51
 


English Spanish

Acceso