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/ ... _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!