Trabajando... ¡Con Kinect y Lego!

¡Bienvenidos!

En este blog trato de recopilar mis experiencias con Kinect y Lego Mindstorm a lo largo del desarrollo de mi PFC, en apariencia sencillo, pero que tiene mucha miga detrás jeje. Básicamente, trato de controlar con las manos y a distancia, un vehículo Lego Mindstorms, gracias a una interfaz gestual en donde entra Kinect en juego.

Espero que os guste y os sirva de inspiración para otros proyectos =)

Y finalmente… jejeje. Pues así es como lo voy a entregar! Espero poder modificarlo algún día y usar una librería decente para controlarlo. Un saludo y hasta pronto!

Y la nube de puntos, esto es lo mejor que he podido sacar hasta la fecha, a ver si puedo dedicarle más tiempo a este asunto y realizar, por ejemplo, la calibración entre el color y la imagen de grises.

Estos son los resultados finales para el control del coche. Para cualquier duda o sugerencia, podéis contactar conmigo en josele7@gmail.com.

¡¡Primeras pruebas del coche moviéndose!! Increíble, pero cierto jeje. Falta depurar un poco el tema del giro que es muy lento y la dirección se atasca un poco, pero eso ya es un problema mecánico. De cualquier forma, se controla perfectamente!!

El código se puede descargar desde este enlace: https://github.com/elelement/GuiPFC

¡Aquí estoy de nuevo por aquí! jeje. He trabajado bastante en el proyecto estos días y me ha dado tiempo a dos cosas: una, aplicar un seguimiento o “tracking” a las manos usando un filtro de Kalman para cada una y dos, crear la famosa nube de puntos, que si bien no tiene funcionalidad alguna para el propósito de mi proyecto (teleoperar el coche), siempre quedará bien en la presentación del proyecto jaja =). Pongo un vídeo de la nube, porque el tracking ya lo mostraré más adelante, con el coche funcionando. Hasta pronto! 

He cambiado totalmente el sistema de detección de manos y he pasado del centro de masas por el momento. Ahora mismo calculo mediante la función convexHull de openCV, el polígono mínimo que engloba la mano (previa simplificación aproximando los contornos de findContours con approxPoly) y pinto un círculo en cada vértice, suponiendo que cada uno de ellos es un dedo de la mano (falta mucho por depurar, pues se ven puntos en la parte inferior de la mano).

Mi idea es que la mano derecha (izqda. en la imagen) controle el giro y el sentido de la marcha (mano abierta=marcha atrás, mano cerrada = marcha adelante) y que la izquierda (derecha en la pantalla) controle la velocidad, siendo el número de dedos mostrados la marcha seleccionada (mayor velocidad cuanto mayor es la marcha).

Espero que esta sea mi última aproximación, porque cada vez se me ocurre una idea nueva!

Bueno, después de exámenes y sabiendo que el lunes empiezo a currar xD me he puesto a hacer un prototipo de interfaz de usuario, ya que opencv está muy limitado en este campo (podemos crear ventanas y sliders y punto). Existen varias alternativas para crear interfaces, pero me he decantado por QT, muy útil, más o menos sencilla y con cantidad de foros y documentación en internet jeje (creo que se utilizan sobre todo para hacer aplicaciones Symbian, para Nokia).

Aquí dejo un primer pantallazo de cómo va la cosa: espero que la próxima vez sea la interfaz completa =)

Saludos!

Recomiendo esta web para cualquier cosa relacionada con LEGO http://www.electricbricks.com/