Doctorado - Máster
From Robotica
Contents |
Profesorado
- José María Cañas Plaza, correo electrónico: jmplaza at gsyc.es.
Tutorías: en cualquier momento en el despacho 113 si no estoy ocupado, o mejor mándame un email para darte cita.
Asignatura "Robótica", Curso 2009-2010
Además de la información aquí contenida, la asignatura tiene un foro telemático que es la principal herramienta de comunicación entre alumnos y profesor.
Metodología
El curso se encuadra dentro del Master de Sistemas Telemáticos e Informáticos, como asignatura optativa en el segundo cuatrimestre, de 3 créditos. El curso se articula en una parte teórica y una parte práctica que se aprueban por separado. Las clases se imparten en forma de sesiones semanales de 2 horas. La mitad de los lunes son para la parte teórica, y la otra mitad para la parte práctica. La teoría se imparte los lunes de 16 a 18 en el aula 204 del Aulario-III (Campus de Móstoles). Las prácticas son en el laboratorio 109 del edificio Laboratorios-II (Campus de Móstoles).
La asistencia a clase no es obligatoria, pero sí recomendable.
En la parte teórica, se analizarán los diferentes aspectos de la robótica móvil, desde los componentes hardware (sensores y actuadores), los problemas básicos (como navegación, localización, planificación, etc) hasta las arquitecturas software utilizadas hoy día para programar robots. El profesor realizará una exposición del tema. Opcionalmente se proporcionarán artículos básicos de investigación que describen las técnicas explicadas y que los alumnos pueden exponer.
Las prácticas consistirán en programar un robot simulado para que realice alguna tarea de manera autónoma. La inteligencia de ese robot autónomo depende exclusivamente del software que tú le programes.
Alternativamente hay disponibles prácticas especiales para quienes ya tienen un conocimiento más o menos avanzado de algún tema robótico.
Evaluación
Para aprobar la asignatura ha que superar un examen sobre los contenidos teóricos (con preguntas cortas y tipo test) y aprobar las prácticas que se entregarán y enseñarán funcionando al profesor en las fechas oportunas.
Teoría
- Reunión de presentación (20100201)
- traspas
- Se presenta el formato y metodología de las clases
- Se auto-presentan los alumnos y profesores
- Introducción a la robótica (20100201)
- traspas
- Aplicaciones
- Definiciones
- Componentes de todo robot
- Documental Beyond Human
- Programación de robots: requisitos, entornos, etc
- Sensores (20100208)
- traspas
- Características de los sensores
- Sensores de distancia
- Actuadores
- traspas
- Motores eléctricos
- Control PWM
- Construcción de mapas
- Métodos clásicos de navegación de robots móviles, Parte I
- traspas URJC
- Mapas topológicos y métricos
- Mapas de rejilla y de elementos geométricos
- Construcción autónoma de mapas:
- modelo de observación
- regla de actualización
- mapas histográmicos
- mapas probabilísticos, regla de Bayes
- Localización
- Métodos clásicos de navegación de robots móviles, Parte I
- traspas URJC
- Sensores específicos
- Localización probabilística
- discretizada
- muestreada, filtros de partículas
- SLAM
- Navegación
- Traspas Manuel Ocaña Métodos clásicos de navegación de robots móviles, Parte II
- traspas URJC
- Navegación local: VFF, CVM...
- Navegación con mapas: GPP, grafos de visibilidad...
- Sistemas reactivos y control
- traspas
- Sistemas reactivos
- Automatas de Estado Finito
- Control PID, realimentación
- Control borroso
- Visión en robots
Del temario inicial previsto no hemos tenido tiempo de ver, y por lo tanto no entran para el examen de teoría:
- Arquitecturas de control
- Sistemas deliberativos
- Sistemas híbridos
- Sistemas basados en comportamientos
- Sistemas basados en la etología
Prácticas
Las prácticas consisten en programar un robot móvil simulado para que navegue autónomamente, construya mapas o se localice en un entorno. La mayoría de las prácticas se realizan con el robot Pioneer en el simulador Stage, otras en el simulador Gazebo. Los alumnos que mejor programen al Pioneer simulado podrán probarlo con el robot Pioneer real (ver fotografía). Análogamente si alguno quereis programar con otros robots reales, o con el cuello mecánico y cámaras de verdad, podeis solicitar alguna práctica especial.
![]() |
| |
|
|
|
|
Hola mundo
Para las prácticas utilizamos en entorno Player+Stage+JDE:
- Player es un "servidor socket" de sensores y actuadores de robots, tanto simulados como reales. Nosotros usamos la versión 2.0.5.
- Stage es un simulador bidimensional que permite simular robots, por ejemplo el robot Pioneer2, en un mundo plano con obstáculos. Nosotros usamos la versión 2.0.4. Si te quieres instalar Player y Stage en tu casa puedes seguir estas instrucciones.
- JDE es un entorno de programación de robots hecho en la URJC. Simplifica programación de aplicaciones robóticas: la recogida de datos sensoriales, el envío de órdenes a los motores del robot y la programación de la interfaz gráfica. Estamos usando la versión 4.2.1. que puedes conseguir aquí
- (2008/10/20) La sesión inicial de prácticas consiste en instalarse y familiarizarse con el entorno Jde+Player+Stage. En el laboratorio está instalado. Tienes información básica de variables sensoriales y de actuadores en el enunciado del año pasado.
- enunciado0708.pdf
- ficheros ejemplo de configuracion de Player/Stage para el mundo simple
- fichero ejemplo de configuracion JDE (4.2.1) para el mundo simple
Comportamiento choca-gira
- (2008/10/27) La primera práctica consiste en modificar navegación.c para que el robot se comporte como un choca-gira: mientras no tenga obstáculos en su frente avanza, y cuando delante tiene un obstáculo, frena, retrocede y gira un número aleatorio de grados. Justo entonces reanuda su avance. Se recomienda implementar un autómata finito de estados para materializar este comportamiento sin perder la ejecución iterativa. Al finalizar esta práctica te habrás familiarizado con la naturaleza iterativa de este software.
- (2008/11/03) En esta sesión de prácticas seguiremos programando comportamientos sencillos en el Pioneer simulado. Repasamos cómo conseguir los datos de los sensores desde tu código, cómo ordenar consignas de movimiento a los motores del robot. Escribe un programa que periódicamente muestre la distancia al obstáculo más cercano que el robot tiene en frente. Teleopéralo con el joystick visual mientras se ejecuta tu esquema introrob modificado. El valor sensorial deberá aumentar o disminuir a medida que el robot se aleja o acerca a algún obstáculo en su frente. Para practicar con las órdenes de movimiento escribe un programa para que el robot describa una espiral o para que describa un cuadrado con su trayectoria. De hecho puedes combinar comportamientos utilizando un cronómetro (gettimeofday) para que el robot primero describa una espiral, y pasado cierto tiempo describa un cuadrado.
Con esta sesión terminamos el periodo básico de familiarización con la plataforma de prácticas. Todo el mundo debería estar familiarizado con el entorno de programación, saber usarlo y haber programado un comportamiento choca-gira con autómatas de estado. A partir de la semana siguiente empezaremos a programar alguna técnica de navegación local en el robot.
En este mensaje del foro tienes información interesante sobre esta práctica.
Navegación local con VFF
La segunda prácticas consiste en programar el algoritmo de navegación local VFF para un robot Pioneer, que se explicó con detalle en clase de teoría. La idea fundamental de VFF (Virtual Force Field, campo de fuerzas virtuales) es que los obstáculos alrededor del robot generan fuerzas virtuales de repulsión Fr, y la dirección objetivo genera fuerzas virtuales de atracción Fa. El robot se moverá en todo momento en la dirección de la suma global de fuerzas, de manera que tiende a evitar los obstáculos y a avanzar en la dirección objetivo. El robot detecta los obstáculos a través del sensor láser, que tiene mucha precisión. Una descripción del método original basado en campos de fuerzas virtuales se puede encontrar en la página de Borenstein.
![]() |
| |
|
|
|
|
Una vez que se tiene la fuerza global, hay que traducirlo a lo único que entienden los actuadores de este robot, velocidad de tracción y velocidad de giro. Típicamente esto se hace mediante un control basado en casos, que materializa la fuerza virtual en comandos a los motores.
- (2008/11/10) Presentación de la práctica de navegación local VFF. Coordenadas locales, fuerzas repulsivas, fuerza atractiva.
- (2008/11/17) Mejorando el algoritmo de navegación local VFF
- (2008/11/24) Mejorando el algoritmo de navegación local VFF
Navegación híbrida (un día en las carreras)
La tercera práctica es la de navegación híbrida deliberativa-reactiva que consiste en programar a un robot Pioneer, dotado de motores, odometría y sensor láser para que de vueltas al circuito de Cheste en el menor tiempo posible y sorteando los obstáculos que pueda encontrarse (cunetas, otros robots,...). Con esta práctica podeis echar carreras en el circuito de Cheste simulado.
La idea es que calcules "a mano" las coordenadas de una secuencia de puntos de modo que navegando en línea recta de uno al siguiente, complete una vuelta al circuito de Cheste. Esa será "la ruta" deliberativa. En rigor la calcuaría el algoritmo de navegación global en el robot (recuerda las técnicas que hemos visto en clase de grafos de visibilidad, diagramas de Voronoi, etc). Nosotros lo vamos a hacer "a mano", dándole al robot esa secuencia de puntos: directamente en código o mejor aún, desde un fichero. Obviamente el robot las plasma en unas variables suyas, por ejemplo un array o una lista. Para probar vuestros algoritmos podeis jugar con los valores que querais para esa secuencia de puntos.
Esta práctica de navegación híbrida combina dos capacidades de vuestro software de navegación: por un lado tiene que seguir la ruta que hemos hablado (parte deliberativa) y por otro esquivar obstáculos (parte reactiva) ya sean previstos o imprevistos. El día que evalúe vuestra práctica os daré unos puntos convenientemente calculados, que pondrán a prueba vuestra navegación. Por ejemplo, los puntos más sencillos tendrán visibilidad directa de uno al siguiente, pero también le daré algunos puntos de la ruta que no tienen visibilidad directa entre sí, que "atraviesan" o "raspan" alguna cuneta del circuito. La parte reactiva de vuestro software tiene que evitar el choque. Para probar más la parte reactiva pondremos dos robots en el circuito de Cheste. Uno controlado por vuestro software y otro teleoperado por mi, que estorbe al tuyo :-) La idea es que el vuestro le adelante sin problemas.
Básicamente consiste en extender el algoritmo VFF, mejorarlo para meterle "la ruta" como destinos intermedios y aumentarle la velocidad. La demostración final de la calidad de esta práctica es completar la carrera en Cheste en el menor tiempo posible y de manera segura: sin chocar contra las cunetas u otros coches que pueda haber en el circuito. Echa un ojo a la tercera vuelta del video, donde al robot le aparecen obstáculos inesperados.
![]() |
| |
|
|
|
|
- (2008/12/01) Presentación de la práctica. En este mensaje del foro tienes información interesante.
- (2008/12/15) Mejora del algoritmo de navegación híbrida.
- ficheros configuracion Stage circuito de Cheste
- fichero configuracion JDE (4.2.1) robot azul en el circuito de Cheste
- fichero configuracion JDE (4.2.1) robot rojo en el circuito de Cheste
Comportamiento sigue-líneas visual
Esta práctica se hace usando el simulador Gazebo (versión 0.7). Está instalado en el laboratorio y aquí tienes alguna receta que te puede ayudar a instalartelo en casa. También tienes aquí el manual en línea para que aprendas a configurar fácilmente el simulador gazebo, crearte tus propios mundo simulado, poblarlo con los obstáculos que quieras, luces, robots, equipamiento de esos robots, etc.
La última práctica obligatoria es sobre control basado en visión o dicho de otra manera: programar el comportamiento de un robot que tiene una cámara para percibir el mundo. La práctica en concreto es la del sigue líneas visual, en la que hay que programar un robot Pioneer, dotado de motores y una cámara, para que siga una línea roja pintada en el suelo. La rapidez en el movimiento es una característica deseable que valoraré positivamente, pero el robot no debe perder la línea. Cuanto más deprisa siga el robot la línea, más difícil es de controlar, y más calidad tiene la práctica. En Gazebo el límite de 1000 mm/s que existía con Stage y Player ya no existe. En este video puedes ver al Pioneer avanzando a 2500 mm/s. OJO la potencia sin control no sirve de nada.
- Enunciado práctica de navegación visual en simulador Gazebo
- ficheros configuracion Gazebo con línea roja en el suelo
- fichero configuración JDE-4.2.1 para conectar con Gazebo
- nuevo componente introrob que recibe imágenes de la cámara simulada del robot en la variable "imagen" Y LAS VISUALIZA:
![]() |
| |
|
|
|
|
El gato y el ratón
En esta práctica especial hay que programar un Pioneer dotado de motores, un laser y una cámara persiga a otro robot como él que se encuentra en el mismo mundo simulado. El robot objetivo (ratón) se puede mover conectando un jde y teleoperándolo con su introrob, por ejemplo. El robot perseguidor (gato) es el que hay que programar. Típicamente consta de dos partes una parte perceptiva y una parte motora. En la parte perceptiva hay que programar los algoritmos que identifican al otro robot en las imágenes y en el laser. Con ello se tiene una idea en términos relativos de dónde está el objetivo respecto del robot programado. En la parte motora hay que hacer mover al robot de modo que persiga, sin chocar, al otro. Por ejemplo gire hacia la izquierda y si el otro se desplaza en esa dirección, que avance si el objetivo se aleja, etc.
- ficheros configuracion Gazebo con dos pioneers
- fichero configuración JDE-4.2.1 para conectar con Gazebo al robot gato
- fichero configuración JDE-4.2.1 para conectar con Gazebo al robot ratón
- nuevo componente introrob que recibe imágenes de la cámara simulada del robot en la variable "imagen" Y LAS VISUALIZA.
![]() |
| |
|
|
|
|
Para percibir al otro robot habrá que utilizar filtros de color, entre otras cosas, como se muestra en este video.
Construyendo mapas
Bibliografía
En estos libros vienen los temas que abordo en el curso descritos con mayor completitud y profundidad. Los distintos algoritmos de navegación, construcción de mapas, localización, arquitecturas de control, etc. también suelen venir bien descritos en artículos científicos, la mayoría de ellos disponibles en internet. Si te interesa algún tema en particular no dudes en preguntarme, tengo los artículos más relevantes.
- Introduction to Autonomous Mobile Robots Roland Siegwart e Illah Nourbakhsh, MIT Press 2004. El capítulo de introducción se puede descargar gratis. Aquí teneis algunas transparencias y más información sobre el libro. Bueno para sensores, actuadores, técnicas de navegación, etc.
- Probabilistic Robotics, Sebastian Thrun, Wolfram Burgard y Dieter Fox, MIT Press 2005. Magnifico para técnicas de construcción de mapas y localización probabilísticas. El capítulo de introducción viene gratis.
- Introduction to AI Robotics, Robin Murphy, MIT Press 2000. Aquí teneis más información y trasparencias interesantes.
- Behavior Based Robotics, Ronald Arkin, MIT Press 1998. Viene muy bien contadas las arquitecturas de control.
Trabajos Fin de Master
El Máster de Sistemas Informáticos y Telemáticos se inscribe dentro del Programa de Doctorado del Departamento de Sistemas Telemáticos y Computación. El máster incluye la necesidad de realizar un Trabajo Fin de Master (TFM) de 15 créditos. Si quieres realizar tu TFM sobre cosas de robótica o visión computacional puedes contactar conmigo.
En desarrollo
Actualmente varios alumnos están realizando su TFM en esta temática, sigue sus páginas web para más detalles aquí.
En años anteriores
En anteriores programas de doctorado existía una asignatura también llamada Robótica, y los alumnos debían desarrollar su Trabajo de Investigación Tutelado (TIT) como paso previo a realizar una tesis doctoral. Hoy día, en el programa actual, este trabajo no es necesario. Se han desarrollaron varios TITs supervisados por profesores de la asignatura "Robótica":
- Carlos Agüero
- Teodoro González: Localización probabilística en robots móviles autónomos. Rejillas de probabilidad y filtros de partículas, enero 2007.
- Pablo Barrera González: Seguimiento tridimensional usando dos cámaras, octubre 2004.
- Francisco Martín Rico: Visual Based Localization for a Legged Robot, octubre 2004.
- Oscar Serrano: Robot localization using wireless networks, octubre 2003.





