Proyecto Fin de Carrera

Robótica, software y telecomunicaciones.

Mejoras en moleComp

Hace unos días publicaba unas imágenes donde se podían apreciar mejoras en mi componente moleComp, pero en estos días moleComp sigue avanzando, y bastante.

Antes de seguir, me gustaría abrir un paréntesis para explicar qué es moleComp:

moleComp es un componente integrado en el framework RoboComp desarrollado por RoboLab (laboratorio de robótica de la Escuela Politécnica de Cáceres — Universidad de Extremadura). Su propósito es ayudar a las personas con discapacidad física a realizar los ejercicios de rehabilitación de forma más amena, disfrazándolos de videojuego.

Para conseguir ese objetivo el componente requiere dos puntos de vista en cuanto a exigencias: por un lado desde el punto de vista del paciente moleComp pretende ser ameno, entrañable y divertido; en cambio desde la visión del médico moleComp debe ser flexible, fácil de configurar y versátil.

De forma más concreta, moleComp pretende llevar el típico juego de ferias Whack-a-mole a la realidad aumentada. El juego consiste en unos topos que se esconden en su madriguera y a los cuales el jugador debe golpearles con un martillo cuando salen. Al final de la entrada añado un vídeo del juego en la realidad, para el que no lo conozca.

Por último moleComp podría integrarse a corto plazo en el proyecto URSUS, uniéndose a una lista de juegos/ejercicios que comenzó con sevillaComp, y continuará con futuros PFC.

En el aspecto técnico, me gustaría hacer un resumen de cómo funciona a grandes rasgos moleComp, qué he mejorado los últimos días y qué espero mejorar:

En primer lugar, dentro de RoboComp, moleComp tiene dos proxies que le permiten comunicarse con cameraComp y con kinectComp para obtener la imagen de vídeo de alguna fuente, desde la interfaz del componente podemos cambiar de una fuente vídeo a otra instantáneamente sin necesidad de reiniciar el componente.

moleComp usa varias librerías para distintas funciones:

  • OpenSceneGraph(OSG): Con esta librería creamos el árbol de figuras, cargamos los modelos 3D, programamos las animaciones, etc.
  • ARToolKit: Con esta librería de Realidad Aumentada, podemos realizar el tracking de marcas de manera sencilla. En moleComp también usamos algunas funciones de esta librería para calcular las distancias entre las figuras 3D de OSG.
  • OSGART: Es una librería muy sencilla, pero es necesaria para que podamos controlar las figuras geométricas de OSG con el tracking de ARToolKit. En RoboComp se trabaja para sustituir OSGART por una clase propia que haga lo mismo, de forma que no eliminamos una dependencia externa, y con más motivo cuando OSGART ha sido discontinuada.
  • IPP: Se usan las primitivas de Intel para desarrollar algunas tareas de forma más eficiente.
  • OpenAL: En estos días me estoy planteando usar esta librería de Audio para darle un toque de gracia a moleComp.
Las características de moleComp hasta el momento,  son las siguientes:
  • Cálculo de distancias entre figuras geométricas de OSG.
  • Carga de modelos 3D con semianimación.
  • Interacción con los elementos 3D.
  • Estado aleatorio de los modelos 3D.
  • Puntuación de la interacción.
  • Modificación del entorno, es posible mover los modelos, y hacer zoom en la puntuación.
  • Modificación de los umbrales de interacción.
Las características en las que estoy trabajando ahora son las siguientes:
  • Añadir sonido a la interacción.
  • Mejorar el sistema de puntuaciones.
  • Mejorar los modelos de los topos.
  • Reemplazo del martillo por un modelo.
  • Hacer modificable la velocidad de los topos.
  • Añadir niveles.
Por último añado un vídeo con el que se pueden ver algunas de las características mencionadas:
Y un vídeo del juego en la realidad, por si queréis comparar:
Anuncios

13 julio 2011 Posted by | all | , , , , , , , , | Deja un comentario

Robolab — Robótica en Extremadura

Acabo de descubrir un canal en YouTube con vídeos de RoboLab y me gustaría compartirlo con mis lectores. A la vez, aprovecho para contaros un poco la intención a largo plazo de nuevos proyectos que se gestan en RoboLab.

Ya os había hablado de Ursus anteriormente, pues bien, se sigue progresando con este simpático robot, y es que en RoboLab están trabajando para dotarle de una boca que se mueva cuando Ursus habla. Además se está fabricando un segundo Ursus, con un torso más natural, y con piernas que aunque no se muevan, mejorarán bastante el aspecto exterior.

Como se puede ver en algunos videos se trabaja en un robot que transporta palés en miniatura, en principio puede chocar esta aplicación porque si ves los videos de buenas a primeras, seguramente no entiendas porqué nuestros robots van tan mal comparándolo con robots industriales que ya transportan palés desde hace varios años. La diferencia está en que esos robots industriales que funcionan tan bien, están fuertemente condicionados por su entonrno, mediante guías, raíles o movimientos programados muy concretos, donde en realidad se ha tenido que modificar el entorno para adaptarse al robot, esto supone un coste económico y logístico cuando por ejemplo, en una fábrica es necesario que el robot realice algo nuevo por un cambio de la disposición de los palés, lo que llevaría a adaptar nuevamente el entorno para el robot. De este modo los robots condicionan el modo de trabajo a las empresas que se ven en la necesidad de usarlos, generando un coste incial muy elevado para las empresas que quieren aplicar la robótica a su negocio, ya que además del precio del robot, tienen que invertir en la adaptación del entorno para el robot. Los robots de RoboLab buscan la mayor independencia con el entorno, de forma que sean ellos los que se adaptan a las situaciones y no al revés. Esto no es nada fácil, por eso podemos observar en los vídeos como se va progresando poco a poco con este robot.

Quizás el más impresionante es el SMART, que es un robot todoterreno con el objetivo de proporcionar ayuda como en situaciones posteriores a catástrofes naturales buscando heridos, por ejemplo. De momento aún queda mucho por hacer porque hasta ahora no deja de ser una especie de minicarro eléctrico controlado remotamente, pero la idea es que finalmente pueda ser más o menos independiente. Para lograr este propósito en RoboLab están pensando en adquirir un Drone (también conocido como Quadcóptero) de forma que el SMART haga de base nodriza, recargue las baterías del Drone, y transporte material sanitario, agua o víveres. Mientras que el Drone sea los ojos del SMART y analice la periferia, de forma que SMART pueda calcular la mejor ruta hasta el objetivo. Todo esto siendo un único robot a pesar de ser físicamente dos componentes distintos.

Por otro lado se está trabajando en un robot que reconstruye un mundo virtual a través de lo que va captando del mundo real, de forma que una vez reconstruido su mundo, puede navegar por él. También podemos apreciar en algunos de los videos a Muecas, un robot que pretende simular expresiones faciales. También hay algún proyecto sobre robot-juguete, y otros tantos de los que aún no me he enterado.

Sin lugar a dudas queda mucho trabajo por hacer, pero es muy emocionante estar haciendo mi Proyecto Fin de Carrera aquí, con la tecnología puntera y la investigación tan cerca, y sobretodo rodeado de estos cracks que forman el equipo de RoboLab.

2 abril 2011 Posted by | all | , , , , , , , | Deja un comentario

Ursus, Kinect y Robocomp

En los últimos días mi proyecto se ha vuelto aún más interesante, principalmente gracias a los progresos de la gente que trabaja en Robolab, que han ido ampliando y mejorando a Robocomp, y además creando nuevos robots sobre los cuales se planean interesantes aplicaciones.

Respecto a las mejoras de Robocomp podemos echar un vistazo a la página del proyecto en SourceForge para ver que se envían un mínimo de 5 “code commits” al día. Sin duda es un proyecto muy activo.

En cuanto a los nuevos robots me gustaría destacar a URSUS, cuyo objetivo inicial es ayudar a los niños con problemas físicos a seguir los ejercicios de rehabilitación. Con URSUS los niños realizarían los ejercícios como si de un juego se tratase, a la vez que ayuda a los médicos a monitorizar los ejercicios. Se puede encontrar más información sobre esto en varios medios de comunicación que han intentado dar difusión a este proyecto tan interesante: [1][2][3][4][5][6][7][8].

Pero como he dicho antes, Robocomp no sólo mejora, sino que se amplía con más componentes, en concreto Robocomp ahora dispone de un componente llamado kinectComp, desarrollado por Luis Manso, que nos permite acceder a los datos que captura la kinect, pero es posible que llegado a este punto te preguntes… ¿qué es la kinect?

La kinect es un accesorio para la videoconsola de Microsoft XBOX360, se trata de una cámara en 3 dimensiones que permite jugar sin mandos, sólo con los movimientos de nuestro cuerpo. En Noviembre de 2010, el español Héctor Martín consiguió crear un controlador de código abierto que funciona sobre GNU/Linux para acceder a los datos de imagen y profundidad de la kinect, y ahora nosotros podemos usarla con Robocomp gracias a kinectComp. El precio de este aparato ronda los 150€, un precio aceptable para la calidad que consigue, la cual no deja de ser curiosa, pues consiste en una webcam VGA que nos da la imagen plana 2D, y una lámpara de infrarojos que emite un patrón concreto que junto con una cámara de infrarojos nos da información de la distancia.  Más sobre kinect.

Gracias a todas estas novedades, en mi proyecto trabajaré con una kinect en lugar de una webcam, y el resultado será aplicado a URSUS de forma que ampliemos sus aplicaciones.

10 febrero 2011 Posted by | all | , , , , , | 2 comentarios

   

A %d blogueros les gusta esto: