[ROBOTICA] Oferta de Proyectos Fin de Carrera y Trabajos Fin de Master
José María Cañas Plaza
[URJC]

Los Proyectos Fin de Carrera y los Trabajos Fin de Master que ofrezco giran alrededor de la robótica y la visión computacional, siempre desde la perspectiva de la programación de sistemas "inteligentes" interesantes. Puedes hacerte una mejor idea echando un vistazo a los proyectos en curso y a los proyectos ya terminados que han hecho alumnos míos. Están dirigidos principalmente a alumnos de Ingeniería de Informática, Ing. Tec. Informática de Gestión, Ing. Tec. Informática de Sistemas, Ing. de Telecomunicación y distintos Másters.

Muchos de los proyectos usan la plataforma software jdec que resuelve el acceso a sensores (cámaras, ficheros de vídeo, laser, etc.) y actuadores (motores de las ruedas, del cuello mecánico, etc.). Permite concentrarse en la inteligencia de la aplicación. Hay muchos componentes disponibles (filtros de color, cálculo del flujo óptico, localización, etc..) que se han ido programando y están disponibles para ser reutilizados en los nuevos proyectos.

La oferta actual incluye los siguientes temas. Si tienes alguna idea interesante también podemos hablarla:
  1. Seguimiento visual de objetos articulados
    [Hablar con JoseMaria (codirigido con Juanjo Pantrigo)]
    Descripción: Hasta ahora hemos usado filtros de partículas y algoritmos evolutivos para localizar objetos en 3D desde información visual (tesis de Pablo Barrera, PFCs de Antonio Pineda, Sara Marugán) o para que un robot se autolocalice (PFCs Angel Cortés, Redouane Kachach, Alberto López). Con este proyecto se pretende utilizar esos mismos algoritmos cuando el objeto en si no es "puntual", sino que tiene estructura (articulaciones) y tamaño. Esto permite, por ejemplo, seguir los brazos y piernas en secuencias de personas (como en la siguiente figura del trabajo del Dr Timothy J. Roberts, púlsala para ver el video), o la posición de los dedos de una mano.
    Conocimientos previos: saber programar.
    Conocimientos adquiridos: C, visión artificial, tracking, filtro de partículas.



  2. Navegación por pasillo utilizando flujo óptico
    [hablar con JoseMaria]
    Descripción: El flujo óptico mide el movimiento de los objetos en la imagen. Los objetos cercanos generan mucho flujo, mientras que los lejanos apenas se mueven en la retina. Muchos animales emplean flujo óptico para navegar por su entorno de modo seguro. Por ejemplo, las moscas utilizan una técnica similar para controlar su vuelo, y giran hacia izquierda o derecha tratando de igualar el flujo óptico medido en sus ojos izquierdo y derecho. De esta manera se alejan de los objetos cercanos y se mantienen centradas en un pasillo, que es la posición en la que el flujo en ambos lados se iguala. José Antonio Santos ha trabajado en su PFC con flujo óptico con la biblioteca IPP y ha creado un componente dentro de la plataforma jdec que calcula el flujo de manera muy eficiente. Este proyecto consiste aprovechar ese componente y materializar con él una técnica similar a las que hemos comentado para que un robot Pioneer navegue de forma segura por un pasillo.
    Conocimientos previos: saber programar.
    Conocimientos adquiridos: C, visión computacional, flujo óptico, control en velocidad, cámaras firewire.



  3. Localización de un robot real mediante el algoritmo evolutivo usando visión y laser
    [hablar con JoseMaria]
    Descripción: El robot Pioneer necesita saber en qué posición del mundo está para poder utilizar mapas y navegar autónomamente, por ejemplo, de un despacho a otro remoto. La idea es soltar al robot en el edificio Departamental-II, en una posición desconocida, y que mientras se da un paseo observando con sus sensores lo que le rodea, averigue en qué posición está. En los PFC de Redouane Kachach y Alberto López resolvimos ese problema con filtros de partículas, usando como datos de entrada las medidas del sensor laser y de la cámara, respectivamente. Ambos funcionaban en el robot real, como prueba de concepto. En el PFC de Angel Cortés probamos un algoritmo más potente, uno evolutivo multimodal, para aumentar la robustez del sistema localizador. Se probó exhaustivamente en entornos difíciles, con alta simetría, como el departamental-II de la figura derecha, y funcionó bastante bien. En la figura se aprecian razas de posiciones tentativas (pintadas de colores diferentes) que finalmente convergerá a la posición real del robot. Pero siempre se probó en el simulador Stage. En este PFC se trata de utilizar el algoritmo evolutivo multimodal y todos los sensores posibles: la visión, el láser, la odometría, etc para localizar al robot real en el entorno del departamental-II de manera robusta y fiable.
    Conocimientos previos: saber programar.
    Conocimientos adquiridos: C, filtro de partículas, algoritmos genéticos.



  4. Sistema de videovigilancia para un entorno de oficinas o para una casa
    [Hablar con JoseMaria]
    Descripción: En la aplicación visual de seguridad de Antonio Pineda conseguimos un prototipo de un sistema de vigiliancia para una habitación, capaz de proteger una zona 3D y hacer saltar la alarma cuando alguien irrumpía en ella. En este proyecto se pretende extender la zona vigilada a toda una planta de una zona de despachos u oficinas, por ejemplo la zona GSyC del departamental-II. Para ello se repartirán un conjunto de cámaras por la zona a monitorizar. Una aplicación concreta puede ser grabar las imágenes cuando se detecte movimiento, o almacenar la mejor foto de cada una de las personas que han entrado en la zona a lo largo de un dia. Otra orientación de la misma tecnología es conseguir la aplicación capaz de monitorizar (por toda la casa) las caidas de personas mayores que viven solas, extendiendo también el alcance respecto del prototipo eldercare.
    Conocimientos previos: saber programar.
    Conocimientos adquiridos: C, visión artificial, tracking, filtro de partículas.



  5. Cámara que cuenta objetos.
    [Víctor Hidalgo]
    Descripción: Una interesante aplicación informática con cámaras es la de contar objetos (personas, coches, animales, etc..) que pasan por una zona predefinida. Por ejemplo, esto es útil para los comerciantes que quieren saber el número de personas que entran en su tienda a lo largo del día. También es interesante para contar los coches que pasan por una carretera, incluso estimando su velocidad. El objetivo de este proyecto es implementar una aplicación contadora de objetos utilizando las técnicas de visión computacional y seguimiento que ya hemos empleado en otras aplicaciones.
    Conocimientos previos: saber programar.
    Conocimientos adquiridos: C, visión artificial, seguimiento múltiobjeto.



  6. Robot que mueve los ojos para mirar las cosas con atención
    [hablar con JoseMaria]
    Descripción: Los ojos de los mamíferos tienen una zona central de la retina muy precisa y una periferia donde no se aprecian los detalles, pero que también es útil. Además, estos sistemas visuales tienen la capacidad de mover los ojos a voluntad para fijar la mirada en las cosas interesantes. El objetivo de este proyecto consiste en realizar un sistema similar para un robot móvil dotado de dos cámaras. Este proyecto parte de la experiencia acumulada con los PFCs Marta Martínez de la Casa y Olmo León. En ellos se usaban una y dos cámaras montadas sobre un cuello móvil y la mirada se fijaba alternativamente en los diferentes objetos de color interesante que hubiera alrededor del robot y en los bordes del suelo. En este proyecto se explorará el uso de imágenes en formato logpolar (como las de la figura: zona central rica en detalles, zona periferica con menos "píxeles") y de una memoria visual de corto plazo. También llamarán la atención del robot las cosas que se muevan por sí mismas.
    Conocimientos previos: saber programar.
    Conocimientos adquiridos: C, visión computacional, sistema de atención.



  7. Robot guía del departamental-II
    [hablar con JoseMaría]
    Descripción: El objetivo de este proyecto fin de carrera es programar un robot Pioneer para que haga de guía del departamental-II. Este robot debe esperar a los visitantes en la puerta del ala del GSyC, y en su tablet PC mostrar una foto y nombre de cada profesor. El visitante pulsará con su dedo en la pantalla tactil del tablet PC a qué profesor busca y el robot debe navegar por el departamental hasta la puerta del despacho del profesor seleccionado, guiando al visitante. Este proyecto utiliza navegación híbrida: por un lado es deliberativa en cuanto a que tiene un mapa del departamental que usa para calcular la ruta óptima y por otro lado es reactiva en cuanto que el robot debe ser capaz de sortear obstáculos imprevistos y/o dinámicos que le puedan aparecer. Este proyecto se apoya en trabajos anteriores en el grupo sobre navegación (como el pfc de Raúl Isado y Alejandro López) y sobre algoritmos de localización para que el robot sepa en todo momento en qué punto del mapa se encuentra (como los pfcs de Alberto López, Redouane Kachach y Angel Cortés).
    Conocimientos previos: Programación sobre GNU/Linux. Cursillo de JDE.
    Conocimientos adquiridos: C, algoritmos de navegación.



  8. Mapas de profundidad desde visión estéreo
    [Manuel Mendoza]
    Descripción: El robot pioneer tiene dos cámaras de color en su frente, que le permiten observar lo que tiene delante. Con la imagen no se sabe a qué distancia están las cosas que aparecen en ella, pues un objeto grande lejano y otro cercano "a escala" proyectan en los mismos píxeles. Una de las técnicas clásicas para recuperar esa dimensión perdida es la de mapas de disparidad. El objetivo de este proyecto consiste en programar un algoritmo que extraiga un mapa de disparidad desde las dos cámaras del robot pioneer. Este mapa permite reconstruir tridimensionalmente la zona espacial observada con ambas cámaras.
    Conocimientos previos: saber programar.
    Conocimientos adquiridos: C, visión computacional, mapa de disparidad, correspondencia estereo, modelo de cámara.


  9. Reconstrucción 3D visual de escena desde varias cámaras usando voxel coloring
    [hablar con JoseMaria]
    Descripción: Se tiene enfocada una misma zona del espacio con cuatro cámaras. El objetivo del proyecto es construir una representación tridimensional de esa zona partiendo de las imágenes de las cuatro cámaras. Esta técnica se basa en el algoritmo "Voxel Coloring" de Steven Seitz, que divide el espacio en pequeños cubos (voxels) y se pregunta de qué color es cada uno de esos cubitos. Si las proyecciones de un cubo en las imágenes son todas del mismo color, todo apunta a que ese cubito tridimensional es de ese color. Estimando el color de todos los cubitos de la zona de interés se tiene una reconstrucción tridimensional de esa zona.
    Conocimientos previos: saber programar.
    Conocimientos adquiridos: C, visión computacional, espacios de color, rejilla tridimensional, modelo de cámara.



  10. Herramienta de calibración de (un par stereo de) cámaras
    [Redouane Kachach]
    Descripción: Las imágenes (2D) que obtiene una cámara y el mundo real (3D) están relacionados a través de la proyección, en la cual básicamente se pierde la profundidad. En la proyección influyen muchos parámetros de la cámara: su posición, su orientación, su distancia focal, tamaño de píxel, etc. Conociendo esos parámetros se puede, por ejemplo, extraer información tridimensional del mundo a partir de las imágenes de dos cámaras como las de robot. Al proceso de calcular esos parámetros de las cámaras de un sistema se le llama calibración. Un método de calibración consiste en utilizar un patrón como el de la figura: Si conocemos la posición 3D de varios puntos de control y su correspondientes píxeles en la imagen, entonces podemos estimar esos parámetros. Este proyecto persigue desarrollar una técnica de calibración utilizando un patrón de calibración. Se explorará el uso de un filtro de partículas que encuentre los parámetros que minimizan el error de proyección en los puntos de control.
    Conocimientos previos: saber programar, geometría.
    Conocimientos adquiridos: C, visión artificial, calibración de cámaras, filtro de partículas.



  11. Teleoperador para el robot LEGO NXT
    [Rafael Mateos]
    Descripción: En el año 2006 LEGO sacó al mercado de los juguetes el robot Mindstorms NXT, que es el sucesor del glorioso Mindstorms RCX. Entre las novedades se incluye un procesador más potente, sensor de ultrasonidos para medir distancia a obstáculos y bluetooth para las comunicaciones. El objetivo de este proyecto es explorar los entornos de programación para este nuevo robot y realizar un teleoperador para él. El teleoperador consta de un programa servidor corriendo a bordo del propio robot y un programa cliente que corre en cualquier PC fijo. El servidor manda al cliente los datos sensoriales y recibe de éste las órdenes de movimiento. A su vez el programa cliente muestra al usuario humano los datos sensoriales y recoge las órdenes de movimiento.
    Conocimientos previos: saber programar, facilidad probando entornos de programación.
    Conocimientos adquiridos: programación de robots móviles.