Práctica 5 Cálculo de rutas utilizando A* y celdas de ocupación

Documentos relacionados
OPTIMIZACIÓN VECTORIAL

Unidad V. 5.1 Recta tangente y recta normal a una curva en un punto. Curvas ortogonales.

Teorema de Thales Guía del profesor

Análisis y síntesis de sistemas digitales combinacionales

LABORATORIO DE ELECTROMAGNETISMO SUPERFICIES EQUIPOTENCIALES

Contenido. Introducción Usando di Monitoring como un usuario normal Uso de di Monitoring como un operador de entrada de datos...

UNIVERSIDAD DON BOSCO DEPARTAMENTO DE CIENCIAS BÁSICAS LABORATORIO DE FÍSICA ASIGNATURA: ELECTRICIDAD Y MAGNETISMO

Límites de funciones de varias variables.

Cinemática del Robot. CI-2657 Robótica M.Sc. Kryscia Ramírez Benavides

Algebra lineal y conjuntos convexos

INSTITUCIÓN EDUCATIVA GABRIEL TRUJILLO CORREGIMIENTO DE CAIMALITO, PEREIRA

Tecnológico Nacional de México INSTITUTO TECNOLÓGICO DE SALINA CRUZ

UNIDAD 7 Trazo de curvas

Las funciones cuadráticas y sus soluciones Guía del profesor

VELOCIDAD Y ACELERACION. RECTA TANGENTE.

CAPÍTULO 4 TÉCNICA PERT

CENTRO UNIVERSITARIO MONTEJO A.C. SECUNDARIA Temario Matemáticas 1

LA CIRCUNFERENCIA. La circunferencia es la sección producida por un plano perpendicular al eje.

UNIVERSIDAD DON BOSCO DEPARTAMENTO DE CIENCIAS BÁSICAS LABORATORIO DE FÍSICA ASIGNATURA: ELECTRICIDAD Y MAGNETISMO

CASO DE ESTUDIO. GENERACIÓN DE TRAYECTORIAS SEGURAS

Colegio Internacional Torrequebrada. Departamento de Matemáticas

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL

GEOMETRÍA ANALÍTICA LA CIRCUNFERENCIA

Guía de Matemática Tercero Medio

Teorema Central del Límite (1)

Ley del coseno. Dado un triángulo ABC, siendo α, β, γ, los ángulos, y a, b, c, los lados respectivamente opuestos a estos ángulos entonces:

TABLAS Y GRÁFICAS Localización de coordenadas tabulación Localización de coordenadas F1. Tabulación F2.

Ecuaciones cuadráticas. Guía de trabajo Tema: Ecuaciones cuadráticas Curso: 3 B, 3 D, 3 F (todos)

Volumen de Sólidos de Revolución

Capítulo 6. Relaciones. Continuar

SESIÓN 11 DERIVACIÓN DE FUNCIONES TRIGONOMETRICAS INVERSAS

DISTANCIA ENTRE DOS PUNTOS EN EL PLANO CARTESIANO.

ƒ : {(1, 4), (2, 5), (3, 6), (4, 7)}.

3. La circunferencia.

13. Utilizar la fórmula del término general y de la suma de n términos consecutivos

Rectas paralelas y perpendiculares Guía del profesor

Funciones de varias variables.

Formato para prácticas de laboratorio

Visión artificial y Robótica Modelos de movimiento y mapas. Depto. de Ciencia de la Computación e Inteligencia Artificial

PRÁCTICA Nº.- LENTES.

3 Curvas alabeadas. Solución de los ejercicios propuestos.

Pontificia Universidad Católica de Chile Facultad de Física. Estática

lasmatemáticas.eu Pedro Castro Ortega materiales de matemáticas

NOCIONES PRELIMINARES (*) 1

Tema 6: Trigonometría.

RESOLUCIÓN DE TRIÁNGULOS FUNCIONES TRIGONOMÉTRICAS DE UN ÁNGULO AGUDO (0º a 90º) DEFINICIÓN DE FUNCIONES TRIGONOMÉTRICAS

Tema: Excel Formulas, Funciones y Macros

PROGRAMACIÓN NO LINEAL INTRODUCCIÓN

1.1. Instructivo Applet en Geogebra lanzamiento de una moneda n veces

Práctica N o 8 Desigualdades Válidas - Algoritmos de Planos de Corte - Algoritmos Branch & Cut

LABORATORIO Nº 1 MOVIMIENTO EN CAÍDA LIBRE

En la notación C(3) se indica el valor de la cuenta para 3 kilowatts-hora: C(3) = 60 (3) = 1.253

SESIÓN 10 DERIVACIÓN DE FUNCIONES TRIGONOMÉTRICAS DIRECTAS

Problema de tiro parabólico. Ejercicio resuelto. Planteamiento y pseudocódigo. (CU00252A)

ANEXO 1. CALIBRADO DE LOS SENSORES.


ASOCIACIÓN DE POLEAS

a las pruebas de circuito abierto y cortocircuito a los generadores sincrónicos,

Por el teorema de Green, si llamamos D al interior del cuadrado, entonces. dxdy. y. x P. 1 dx. 1 (4x 3 2y) dy =

DEPARTAMENTO DE MATEMÁTICAS. IES GALLICUM

5.5 LÍNEAS TRIGONOMÉTRICAS

y cualquier par (x, y) puede escalarse, multiplicarse por un número real s, para obtener otro vector (sx, sy).

Introducción a la programación

Laboratorio 02: Ejercicios de programación en C

Vectores y rectas. 4º curso de E.S.O., opción B. Modelo de examen (ficticio)

4ta. Práctica. Búsqueda en árbol con contrincante: MiniMax con poda Alfa-Beta. Inteligencia Artificial Prácticas 2004/2005

Microsoft Office Word

Inteligencia Artificial

La galería a la derecha de la interfaz muestra las fotos ( ) y videos ( ) que ha tomado. Para regresar a la consola de aplicación de la cámara web.

Las Funciones Trigonométricas. Sección 5.3 Funciones Trigonométricas de números reales

PROBLEMAS RESUELTOS MOVIMIENTO ONDULATORIO

Matemáticas Universitarias

2.2 Rectas en el plano

Operador Diferencial y Ecuaciones Diferenciales

TRAZADO DE LÍNEAS EQUIPOTENCIALES

Función cuadrática. Ecuación de segundo grado completa

Shell Script de instalación y configuración para el servicio DHCP en CentOS v5.x. Manual de instrucciones.

PROGRAMACIÓN. UNIDAD II. ALGORITMO PROFA : HAU MOY

UNIDAD 12.- Estadística. Tablas y gráficos (tema12 del libro)

Unidad 8 Áreas y Volúmenes

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Matemáticas UNIDAD 5 CONSIDERACIONES METODOLÓGICAS. Material de apoyo para el docente. Preparado por: Héctor Muñoz

Coordinación de Matemática I (MAT021) 1 er Semestre de 2013 Semana 2: Lunes 18 Viernes 22 de Marzo. Contenidos

Cálculos de ecuaciones

CÁLCULO SIMBÓLICO Y GEOMETRÍA CON MAPLE. Recta. Ricardo Villafaña Figueroa

TEMA 1. MATRICES, DETERMINANTES Y APLICACIÓN DE LOS DETERMINANTES. CONCEPTO DE MATRIZ. LA MATRIZ COMO EXPRESIÓN DE TABLAS Y GRAFOS.

Algoritmos y solución de problemas. Fundamentos de Programación Otoño 2008 Mtro. Luis Eduardo Pérez Bernal

MICROSOFT EXCEL 2010

Ejercicios de Ondas Mecánicas y Ondas Electromagnéticas.

SECRETARIA DE EDUCACIÓN DE TAMAULIPAS SUBSECRETARIA DE PLANEACIÓN DIRECCIÓN DE EVALUACIÓN TABLA DE ESPECIFICACIONES PARA CONSTRUIR REACTIVOS

CENTRO REGIONAL UNIVERSITARIO BARILOCHE TALLER DE MATEMATICA INGRESO 2016 LIC. ENFERMERÍA PRACTICO UNIDAD 3

Problema 1. Para un planeta general del interior, la probabilidad de visita se calculará a partir de la probabilidad de los planetas anteriores. .

Laboratorio de Física Universitaria 1 Movimiento Circular Uniforme en Video Point. Primavera 2006 Arturo Bailón

ACADEMIA DE FÍSICO-MATEMÁTICAS MATEMÁTICAS III CICLO ESCOLAR TERCER SEMESTRE G E O M É T R Í A GUÍA A N A L Í T I C A

La representación gráfica de una función cuadrática es una parábola.

Magnitudes que solo poseen módulo. La definición anterior corresponde a

Física. Choque de un meteorito sobre la tierra

FÍSICA 2º Bachillerato Ejercicios: Campo eléctrico

Copias de seguridad y recuperación Guía del usuario

Proyecto. Tema 6 sesión 2: Generación de Rectas, Circunferencias y Curvas. Geometría Analítica. Isidro Huesca Zavaleta

Transcripción:

Práctica 5 Cálculo de rutas utilizando A* y celdas de ocupación M.I. Marco Negrete Robots Móviles y Agentes Inteligentes Objetivos A partir del mapa creado en la práctica 4, calcular una ruta mediante el algoritmo A*. Suavizar la ruta utilizando descenso del gradiente. Publicar la ruta en un tópico y desplegarla en el visualizador rviz. 1. Marco Teórico 1.1. El algoritmo A* La planeación de rutas consiste en la obtención de un movimiento continuo libre de colisiones que conecte una configuración inicial, con una al. Se asume que se dispone de una representación del ambiente con información sobre el espacio navegable y el ocupado por los obstáculos. En esta práctica se considera que el robot sólo se mueve sobre un plano y que se tiene una representación que consiste en un mapa de celdas de ocupación (obtenido en la práctica 4). Una posible solución es aplicar un algoritmo de búsqueda en grafos. En el caso de las celdas de ocupación, cada celda representa un nodo en el grafo y se considera que está conectada únicamente con aquellas celdas vecinas que pertenezcan al espacio libre. Para determinar los nodos vecinos se puede utilizar conectividad cuatro u ocho. En esta práctica se utilizará la conectivad cuatro. A* es un algoritmo de búsqueda que explora la ruta con el menor costo esperado. Para un nodo n, el costo esperado f(n) se calcula como f(n) = g(n) + h(n) donde g(n) es el costo de la ruta desde el nodo origen hasta el nodo n y h(n) es una heurística que determina un costo que se esperaría tener desde el mismo nodo n hasta el nodo objetivo. Este costo esperado de hecho subestima el valor real, es decir, se debe cumplir que h(n) g(n) n Grafo. En la búsqueda por A* se manejan dos conjuntos principales: la lista abierta y la lista cerrada. La lista abierta contiene todos los nodos que han sido visitados pero no expandidos y la cerrada, aquellos que han sido visitados y expandidos (también llamados nodos conocidos). El algoritmo 1 muestra los pasos en pseudocódigo para implementar A*. 1

Algoritmo 1: Búsqueda con A* Datos: Grafo, nodo inicial, nodo meta Resultado: Ruta óptima expresada como una secuencia de nodos Cerrado Abierto {nodo inicial} previo(nodo inicial) mientras Abierto hacer nodo actual nodo con el menor valor f del conjunto Abierto Abierto Abierto - {nodo actual} Cerrado Cerrado {nodo actual} si nodo actual es nodo meta entonces Anunciar éxito y salir de este ciclo para cada nodo vecino de nodo actual hacer si nodo vecino Cerrado entonces Continuar con el siguiente nodo vecino si nodo vecino Abierto entonces costo temporal g(nodo actual) + d(nodo actual, nodo vecino) si costo temporal < g(nodo vecino) entonces g(nodo vecino) costo temporal f(nodo vecino) costo temporal + heurística(nodo vecino, nodo meta) previo(nodo vecino) nodo actual en otro caso g(nodo vecino) g(nodo actual) + d(nodo actual, nodo vecino) f(nodo vecino) gnodo vecino) + heurística(nodo vecino, nodo meta) previo(nodo vecino) nodo actual Abierto Abierto {nodo vecino} si nodo actual nodo meta entonces Anunciar falla en otro caso RutaOptima mientras nodo actual hacer //El nodo actual se inserta al principio de la ruta RutaÓptima {nodo actual} RutaÓptima nodo actual previo(nodo actual) Regresar RutaÓptima 2

1.2. Crecimiento de obstáculos Figura 1: Crecimiento de obstáculos Como se mencionó anteriormente, se asume que se tiene un mapa con información sobre el espacio libre y ocupado, sin embargo, en una implementación en un robot real, las celdas que están junto al espacio ocupado no se pueden considerar como libres ya que si el robot se mueve hacia ellas seguramente chocará con algo. Una forma de solucionar esto sería hacer las celdas tan grandes de modo que puedan contener al robot, sin embargo, esta resolución sería muy baja y la representación del ambiente sería muy mala. Otra posible solución es crecer los obstáculos de modo que las celdas que están muy cerca del espacio ocupado se consideren también como ocupadas. La figura 1 muestra un ejemplo en el que los obstáculos se han aumentado dos celdas. Este procedimiento se conoce como dilatación y es un tipo de operador morfológico. La explicación de estos conceptos se hará en temas posteriores. Los obstáculos deben aumentarse cuando menos el radio del robot. Para el mapa obtenido en la práctica 4, dado que la resolución es de 5[cm] y los robots utilizados tienen casi 0.5[m] de diámetro, los obstáculos deben aumentarse cuando menos 5 celdas. El algoritmo 2 enumera los pasos para crecer obstáculos en un mapa. Algoritmo 2: Crecimiento de obstáculos. Datos: Mapa de celdas de ocupación M = {c 0...c n }, número de celdas a aumentar k. Resultado: Mapa con los obstáculos aumentados. Repetir k veces los siguientes pasos: para todo c M hacer si c está en el espacio ocupado entonces V (c) Conjunto de celdas vecinas de c (conectividad ocho) para todo v V (c) hacer Marcar v como parte del espacio ocupado Regresar M 1.3. Suavizado de la ruta: función de costo Dado que se está utilizando conectividad cuatro en el algoritmo de A*, la ruta calculada tendrá siempre vueltas con ángulos rectos, lo cual no es deseable por varias razones: la prime- 3

Figura 2: Ejemplos de suavizado ra de ellas es que la función de posición no es diferenciable en las esquinas, además, este tipo de vueltas ocasionan cambios bruscos en las señales de control, lo que almente ocasiona daños a los motores de la base móvil. Por otro lado, las restricciones de movimiento en algunos tipos de bases (como es el caso de los automóviles) pueden impedir ejecutar vueltas en ángulo recto. Por lo anterior, es conveniente suavizar la ruta calculada por A* de modo que la nueva ruta sea lo suficientemente parecida a la original pero al mismo tiempo, lo suficientemente suave para evitar curvas muy pronunciadas. La figura 2 muestra un ejemplo de suavizado con dos casos extremos: la ruta roja es una ruta igual a la original, la azul es una ruta sin vueltas pero que ha dejado de ser una ruta útil, y la verde, que es un promedio ponderado de las dos anteriores. Para poder obtener una ruta como la verde de la figura 2, plantearemos una función de costo que tome en cuenta el parecido con la ruta original y el nivel de suavizado que se desee. Estos dos criterios están en conflicto: entre más suavizado, menor será el parecido con la ruta original y viceversa, es decir, la función de costo será grande con mucho suavizado y también debe ser muy grande si la ruta es muy parecida a la orignal. La idea es que dicha función de costo tenga un mínimo en un punto intermedio de modo que este punto corresponda a una ruta como la verde de la figura 2. Las funciones cuadráticas son una buena opción como función de costo ya que tienen un mínimo global y además son diferenciables. Para el suavizado de la ruta se propone la función de costo V = 1 n 2 α (p i q i ) 2 + 1 n 1 2 β (p i p i+1 ) 2 (1) i=1 donde Q = {q 1... q n } son todos los puntos q = [x y] que forman la ruta original calculada con A* y P = {p 1... p n } son los puntos de la ruta ya suavizada. La constante α 0 es un parámetro de diseño para indicar cuánto peso se le quiere dar al parecido de la ruta original con la suavizada y β 0 indica el peso que se le da al suavizado en sí. Con α = 0 se obtendría una línea recta, como la ruta azul de la figura 2, y con β = 0 se obtendría una ruta igual a la original. 1.4. Suavizado de la ruta: descenso del gradiente La ruta suavizada se obtiene encontrando el argumento que minimiza la función 1, sin embargo, dada la cantidad tan grande de variables, es difícil encontrarlo analíticamente. Una forma más 4 i=1

sencilla es mediante el médoto del descenso del gradiente, que consiste en mover el argumento pequeñas cantidades proporcionales al gradiente de la función V y en sentido contrario a éste. Dado que el cambio entre cada iteración es proporcional a V, se puede asumir que cuando el cambio en el argumento es menor que una tolerancia, entonces se ha alcanzado el mínimo. El algoritmo 3 contiene los pasos en pseudocódigo para implementar descenso del gradiente. La constante δ > 0 debe ser lo suficientemente pequeña para evitar inestabilidad en el algoritmo, sin embargo, se debe considerar que entre más pequeña sea ésta, mayor será el costo computacional. Algoritmo 3: Descenso del gradiente. Datos: Función V cuyo mínimo se desea encontrar, condición inicial p(0), tolerancia tol. Resultado: Argumento p que minimiza V. i = 0 p i p(0) mientras V (p i ) > tol hacer p i+1 p i δ V (p i ) i i + 1 Regresar p i La ecuación 1 toma como argumentos las posiciones tanto de la ruta original como de la suavizada, sin embargo, dado que sólo varían los puntos de la nueva ruta, se puede considerar que el gradiente V está dado por: [ ] α(p 1 q 1 ) + β(p 1 p 2 ),..., α(p i q i ) + β(2p i p i 1 p i+1 ),..., α(p n q n ) + β(p n p n 1 ) } {{ } } {{ } } {{ } V p 1 V pi V p n (2) Nótese que se está derivando con respecto a p (puntos de la ruta suavizada), no con respecto a q (puntos de la ruta original). Recuerde que cada punto de la ruta tiene coordenadas [x y], por lo que el descenso de gradiente se tiene que aplicar a ambas coordenadas. 2. Tareas 2.1. Prerrequisitos Antes de continuar, actualice el repositorio y recompile: cd ~/RoboticsCourses git pull origin master cd catkin_ws catkin_make Con el objetivo de facilitar las pruebas, se ha incluido un paquete llamado navig msgs que contiene un servicio llamado CalculatePath. El archivo se encuentra en navig msgs/srv y tiene el siguinte contenido: 5

Figura 3: Interfaz gráfica geometry_msgs/pose start_pose geometry_msgs/pose goal_pose nav_msgs/occupancygrid map --- nav_msgs/path path La idea es utilizar este servicio en el nodo que calcula las rutas mediante A*. El paquete map server contiene un nodo del mismo nombre que publica periódicamente un mapa de celdas de ocupación y atiende un servicio con el que se puede obtener dicho mapa. Este nodo recibe por parámetro el nombre del archivo.yaml que contiene la información sobre el mapa a utilizar, en este caso, biorobotics lab.yaml. También se ha incluido una interfaz gráfica sencilla para facilitar el llamado del servicio navig msgs/calculatepath. Esta interfaz se encuentra en en catkin ws/src/hri/justina simple gui y la figura 3 muestra una captura de pantalla de ella. Cuando se presiona enter en alguno de los campos del cuadro Mobile base and navigation, este programa llama al servicio de nombre /navigation/a star de tipo navig msgs/calculatepath con los datos correspondientes en la parte de la petición (start pose, goal pose y map). Para correr todos los nodos necesarios (map server, justina simple gui) ejecute el comando roslaunch bring_up path_calculation.launch 2.2. Nodo que calcula y publica la ruta Crear un paquete de ROS con el nombre path calculator que tenga las siguientes características: Atender un servicio con el nombre /navigation/a star, de tipo navig msgs/calculatepath, que calcule una ruta a partir de un mapa y posiciones inicial y al. La respuesta del servicio debe corresponder al éxito al calcular la trayectoria y la ruta resultante debe asignarse a la parte de respuesta del servicio. En el callback del servicio se deben ejecutar los algoritmos expuestos en la sección anterior: crecimiento de los obstáculos, cálculo de la ruta mediante A* y suavizado de la ruta (en ese orden). 6

Figura 4: Ejemplo de ruta calculada Los obstáculos deben crecerse un número de celdas que equivalga a cuando menos 30 [cm]. Es tarea del alumno calcular los parámetros α, β y δ para el suavizado de la ruta. El nodo debe publicar de manera periódica la última ruta calculada. El nombre del tópico debe ser /navigation/a star path de tipo /nav msgs/path. Todos los algoritmos deben estar contenidos en funciones o métodos bien deidos. No debe haber código espagueti. La figura 4 muestra un ejemplo del resultado esperado en rviz. 3. Evaluación El cálculo debe ser rápido (retardo no perceptible para un humano). El programa debe verificar que inicio y meta NO estén en el espacio ocupado. Se probabará con varios pares de posiciones iniciales y ales aleatorias. Los parámetros de suavizado y el número de celdas que se aumenta a los obstáculos deben poderse cambiar fácilmente. No es necesario que los valores anteriores se puedan cambiar en tiempo de ejecución. Las posiciones iniciales y ales sí se deben poder cambiar en tiempo de ejecución y se fijarán haciendo uso de la GUI. 7

El código debe estar ordenado. Importante: Si el alumno no conoce su código, NO se contará la práctica. 8