domingo, 12 de junio de 2011

Espectacular proyecto Bioloid + Kinect

Hace un par de días el conocido usuario y uno de los administradores del foro de robótica humanoide por excelencia Bipedolandia y el blog de robótica Hemeroteca Robótica (criadobot), a posteado un vídeo recién publicado por su autor en Youtube.

En dicho vídeo (que veréis a continuación), se ve un Robot humanoide Bioloid movido gracias a una detección a través del Kinect, cuando vemos el vídeo, los que solemos trastear con temas de esta índole, sabemos el esfuerzo y trabajo que hay detrás de un proyecto como el que nos ocupa.

Al igual que el estupendo proyecto eNarduin, hemos tenido la suerte y detener detalles de primera mano de dicho proyecto, pues su autor también es Español y nos brindó una explicación detallada de su estupendo trabajo, a continuación os dejo el vídeo en cuestión y su explicación:



Primero, gracias por tomar con tanto entusiasmo mi proyecto!

Os detallo un poco más sobre mi trabajo:

Es mi proyecto final de carrera en la Facultad de Informática de Barcelona (UPC), en principio estuve trasteando con el Kinect un tiempo hasta que encaminé un proyecto de verdad, y resultó ser lo que habéis visto en el vídeo: Controlar los brazos del Bioloid en tiempo real imitando a la persona que esté enfrente del Kinect. El Bioloid pertenece a la asociación a la cual a su vez yo pertenezco AESS donde montamos proyectos entorno al mundo de la robótica. El Kinect me lo cedieron en el departamento de mi director de proyecto.

Para hacer el Skeleton Tracking del usuario uso una pequeña (o no tan pequeña, detrás hay mucho código!) aplicación llamada OSCeleton. La web del proyecto es esta: https://github.com/Sensebloom/OSCeleton . Esta aplicación manda por protocolo OSC las coordenadas de los diferentes puntos del esqueleto.

Para mover el Bioloid programé un pequeño firmware que recibiera mensajes en un formato muy sencillo y corto por serie (mensajes del tipo "xx yyyy" donde xx es el servo e yyyy es la cantidad de movimiento, osea, donde quiero mover el servo). Con el adaptador usb-serie que vino en el pack del Bioloid me comunicaba con él. El firmware fue escrito con la documentación de http://support.robotis.com/en/software/embeded_c/cm510_cm700.htm

Una vez que me pude comunicar con los servos, decidí que necesitaba simular los brazos del robot (para no destrozar mi robot!) y me puse a montar un pequeño simulador donde implementé la cinemática inversa. Mi objetivo era obtener el punto de la mano del usuario en referencia a su pecho y darle este punto al simulador para calcular la posición de los servos.

En este video podeis ver el simulador del Bioloid, con el Bioloid conectado ejecutando los movimientos:
http://www.youtube.com/watch?v=OUPqwjYiMDg

Tras esto, necesitaba lo que he dicho anteriormente " obtener el punto de la mano del usuario en referencia a su pecho ". Para ello tuve que pelearme con bastantes mates (geometría más que nada) que me cuestan bastante y monté otro simulador:
http://www.youtube.com/watch?v=wSFNE7a5FnU

Los 4 puntos que forman el cuadrado-plano son los hombros y las caderas. Y los puntos que flotan las manos. (Siento la calidad del video, youtube se la cargó).

Una vez esto conseguido, me quedaba juntar ambas cosas. Tras pelearme con unas cuantas mates mas (que están por pulir, desde luego, porque en el propio vídeo podéis ver que los brazos no es que imiten demasiado fielmente el movimiento) para escalar el punto en el sistema de coordenadas del humano al sistema de coordenadas del simulador del Bioloid al fin junté ambas cosas y quedó lo que veis.

Todo esto lo programé en Python (dado que no sabía Python cuando empecé y quería aprender) menos el firmware del Bioloid que fue en "su C particular". Para las simulaciones use Vpython (muy sencillo de usar, por cierto).


Ahora tengo que montar la documentación del proyecto, la cual subiré junto al código fuente y lo que vea necesario/interesante a mi blog AwesomeBytes para quien lo quiera.

Estoy abierto a cualquier pregunta o a lo que necesitéis, me suscribiré al tema para ver vuestras respuestas.

Una vez más, gracias por el entusiasmo!

Desde Limoncello Digital queremos dar las gracias a su autor por compartir los detalles con nosotros y creo que hablo en nombre de todos diciendo que esperamos seguir viendo más material sobre dicho proyecto!

3 comentarios:

Ros dijo...

Una vez más gracias por el interés :)

Toni dijo...

Enhorabuena por tan espectacular proyecto!

criadobot.info dijo...

Esta noticia me parece de un gran interés.