lunes, 23 de septiembre de 2013

¡Un proyecto que se acaba!



Éste es Raider (pasó de llamarse "droide" a Raider cuando dejó de parecer un Bioloid soso).
A lo largo de cinco cortos meses he estado preparando este robot para el campeonato nacional CEABOT.
Me encantaría decir en qué posición quedó, con qué estoy contento y qué pienso que podría mejorar. Pero lo cierto es que Raider y yo no tuvimos demasiada suerte en Terrassa. Mala suerte hasta el punto de que no pudimos participar en la prueba que habíamos preparado todo este tiempo.

En los entrenamientos del primer dia solté a Raider en la pista y tras dar unos diez pasos empezaron a ocurrir “cosas raras”. Dicho de otro modo, rotura y abandono.

No voy a negar que me llevé un disgusto y una frustración terrible, pero de los errores se aprende, y sin duda en una semana he aprendido mas que en varios meses.

El caso es que me voy a despedir de Raider tal y como lo conozco. Todo proyecto tiene su fin y éste ya forma parte del pasado. Lo bonito quizás, es que cerraré un proyecto pero abriré dos nuevos. No quiero alargame en esta entrada, pero a modo de pequeño spoiler, pronto hablaré del proyecto MYOD y de Raider 2.0

Pero antes de nada, voy a destripar a Raider y comentar un poco sus tripas :)
¡Comienza el desmontaje!

Figura 1. Protector de la electrónica.

Raider llevaba un configuración de dos placas en su espalda. La CM900 nos dió muchísimos problemas con el puerto TTL (que era lo unico bueno de la placa a decir verdad). En palabras de uno de los desarrolladores de la placa:

This problem is caused by our mistake in desigining circuit of CM-900. I am sorry for the mistake.”

We stopped selling CM-900 for some problem in TTL circuit. ”

Por tanto, con el objetivo de reducir resposabilidades, opté por montar una segunda placa al robot. Esta micro-placa es una Teensy 3.0; y me sorprendió desde el primer dia por lo bien que funcionaba.

De esta forma, el flujograma del robot y la programación de los movimientos se encontraba en la placa CM900; mientras que la lectura de los sensores (Ultrasonidos, dos infrarrojos, brújula, acelerómetro, giroscopo y dos RGB en los pies) y su procesamiento eran tarea de la Teensy.
¿Ventajas? Programación independiente, poder variar una de ellas mientras la otra sigue funcionando y, lo mas importante, la posibilidad de sustituir una de ellas pudiendo conservar la otra.
En la figura 2, a la derecha CM900, a la izquierda Teensy. (He quitado los cables de conexión entre placas para la foto)

Figura 2. CM900 y Teensy.

Ambas fueron montadas sobre una placa de prototipado (figura 3), donde conectaba directamente los sensores, actuadores y alimentación.

Figura 3. Base de las controladoras.

A dia de hoy, veo un poco cutre el acabado que conseguí con la placa. Sobre todo con las conexiones (que pienso que pudieron ser la causa del cortocircuito que destrozó toda la electrónica)
En la figura 4 muestro una imagen de la parte que quedaba por dentro, donde se encontraban todas las conexiones.

Figura 4. PCB de prototipado.

En la siguiente imagen (Figura 5) se muestra el chasis sobre el que se montó el conjunto. Impreso en mi impresora 3D, incluía un soporte con inclinación ajustable para el acelerómetro/giróscopo.

Figura 5. Chasis.

El “bocata” total antes de ser montado meses atrás lucía este saludable aspecto (figura 6)

Figura 6. Bloque electrónico.

Y creo que por hoy es suficiente. Los códigos utilizados están subidos en mi repositorio.

Entonces, ¿Cual es el futuro de Raider? A grandes rasgos...




martes, 18 de junio de 2013

El lado imprimible del proyecto

A parte de la progamación, en este proyecto he decidido gastar bastante tiempo en la creación de piezas nuevas y originales.
El objetivo de esto no es otro que evolucionar algunas capacidades (aún a costa de perder otras) para potenciar el rendimiento del droide en las pruebas de la competicion.

Primeramente cabe destacar que Bioloid no es puramente un robot humanoide. Bioloid es un kit de piezas que ofrece la posibilidad de realizar diferentes montajes, como un Mecano avanzado. Pueden montarse modelos con patas, ruedas o sistemas automaticos fijos. (Ok Javier, suficiente SPAM)

Por supuesto, no quiero perder estas opciones, así que me he propuesto no modificar ni romper ninguna de las piezas originales que trae la caja. Con esto me refiero a nada de taladros, lijadas, o cortes en ninguna pieza.
Por suerte, cuento con una de las herramientas mas potentes y alucinantes en lo que a creación de prototipos se refiere, una impresora 3D, una Prusa Air i2 que empecé a montar hace un año y ha empezado a dar sus frutos hace relativamente poco.

Por el momento no voy a entretenerme en hablar de impresión 3D como tal por tres razones fundamentales: Uno, el material daría para llenar varios blogs como este; Dos, ya existe bastante material en internet; Tres, soy muy novato en el tema y hay mucha gente que podría explicarlo mejor que yo. De todos modos, si estás interesado en impresion 3D e impresoras autorreplicantes no dejes de visitar la wiki del proyecto Clone Wars donde podrás saciar tu curiosidad y resolver todas tus dudas.

Paso a mostrar las piezas que he diseñado, impreso y compartido por el momento. 


  • Cabeza
¿Qué es un robot humanoide sin cabeza? Para mí, la gracia de un robot humanoide es que sea humanoide mas allá de “dos patas y dos brazos”.
Como se puede ver en la imagen, la cabeza tiene una cavidad para albergar un sensor de ultrasonidos  y  otro  hueco  para  instalar  un servomotor tamaño micro. Es cierto que hubiese sito mucho mas fácil y útil instalar simplemente tres sensores fijos debidamente orientados. Entonces ¿Por qué me he metido en el berenjenal de añadir un grado mas de libertad? Porque es mas humano, y además, mola.
He montado respectivamente un sensor HC-SR04 y un micro servo MG90s.
Las piezas pueden descargarse desde éste enlace:   


  • Tobillos
Tengo que decir que aquí no he inventado nada. Simplemente me he fijado en la configuración que montan otros robots mas avanzados y he adaptado la idea para encajar con las piezas Bioloid.
Aporta un punto de apoyo mas definido al mismo tiempo que libera espacio en la superficie del pie. En próximas entradas se verá el porqué de esto.
La pieza puede descargarse desde éste enlace: 



  • Brazos

Una forma de convertir los brazos en una bancada para sensores, pinzas, puños...
Como ventaja, le dan un aspecto mas personal al robot, al mismo tiempo que disminuyen el peso y permiten instalar componentes que antes era imposible, o al menos imposible sin taladrar/cortar/lijar/romper.
La pieza pueden descargarse desde éste enlace: 




  • Bonus: Puños de boxeo
Mentiría si dijese que los diseñe con una funciona mas que estética. Aún así me parece una gran razón intentar que el robot destaque ¡Que no sea otro Bioloid soso mas!
Las piezas pueden descargarse desde éste enlace: 







 


Y esto es todo por el momento ¡He aquí el resultado!



PD: Las piezas están hechas con OpenSCAD. Soy consciente de que algunos códigos son bastante malos, eso es porque estoy aprendiendo a medida que hago piezas. Las primeras que colgué en Thingiverse tienen un código totalmente terrorífico, pero me parece un poco cobarde borrarlo (y desdeluego, no tengo fuerzas para meterles mano.)

jueves, 25 de abril de 2013

Lectura y escritura simultánea con CM-900

¡Éstos han sido los resultados de esta tarde!

Antes de nada debo aclarar un detalle: los servos utilizados en este proyecto no son servos PWM como los comúnmente utilizados en radiocontrol (Futaba, Sanwa, Ko-Propo, Hitec, Savox...).

Los actuadores que utilizo son algo más complejos. En esta imagen puede verse resumido qué compone un actuador Dynamixel:



El programa del vídeo consiste en la lectura de la posición captada por el encoder de los servos del brazo izquierdo para su instantánea copia en los servos del brazo derecho.

Lo que se consigue es un movimiento simétrico manipulando manualmente el brazo izquierdo.

No sé si tendrá alguna utilidad pero creo que el resultado es interesante:



Código utilizado:
 
void setup() {
    Dxl.begin(1); //Inicializacion
    SerialUSB.begin();
}

void loop() {   
    Dxl.writeWord(1,30,1024-Dxl.readWord(2, 36)); //Escribe en el servo 1 el valor que lee del servo 2
    Dxl.writeWord(3,30,1024-Dxl.readWord(4, 36)); //Escribe en el servo 3 el valor que lee del servo 4
    Dxl.writeWord(5,30,1024-Dxl.readWord(6, 36)); //Escribe en el servo 5 el valor que lee del servo 6
}
 

Primera toma de contacto con la controladora CM-900

¡Primera entrada del Blog!

Con estas publicaciones pretendo llevar un pequeño diario de mis mini-proyectos.
Ésta semana he empezado a cacharrear con la controladora CM-900 con dos objetivos: montarla en mi robot (DROIDE) y colaborar con la asociación de robótica de la Universidad Carlos III (aka Asrob) en su implantación en los robots destinados a competir en CEABOT.


DROIDE encendido

- ¿Por qué DROIDE necesita una controladora nueva?

Actualmente monta una controladora CM-5 de Robotis, muy limitada tanto a nivel de procesamiento, capacidad de montar sensores y principalmente de programación.
Con la nueva controladora podré montar sensores variopintos, servos comunes (baratos) y programarlos utilizando leguaje C/C++

Éste es un pequeño video que grabé el lunes con el material de Asrob. El robot del video no es DROIDE, es uno de los Bioloid de competición de Asrob.
El programa mueve el brazo del robot a modo de "Hola Mundo!"


 
void setup() {
    Dxl.begin(1); //Inicializacion
    Dxl.writeWord(6, 32, 60);   //Velocidad del servo 6
    Dxl.writeWord(4, 32, 60);   //Velocidad del servo 4 
}

void loop() {
    Dxl.writeWord(6, 30, 400);  //Posicionamiento del servo 6 en 400
    Dxl.writeWord(4, 30, 700);  //Posicionamiento del servo 4 en 700
    delay(1000);              

    Dxl.writeWord(4, 30, 400);  //Posicionamiento del servo 4 en 400
    Dxl.writeWord(6, 30, 700);  //Posicionamiento del servo 6 en 700
    delay(1000);
}