• No se han encontrado resultados

Desarrollo e implementación de varios algoritmos de exploración de entornos desconocidos

N/A
N/A
Protected

Academic year: 2020

Share "Desarrollo e implementación de varios algoritmos de exploración de entornos desconocidos"

Copied!
103
0
0

Texto completo

(1)Treball Final de Grau. GRAU D’ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA. Desarrollo e implementación de varios algoritmos de exploración de entornos desconocidos. ALBERTO MARÍN VALLS. Tutor Javier Antich. Alberto Ortiz. Escola Politècnica Superior Universitat de les Illes Balears Palma, 1 de septiembre de 2016.

(2)

(3) Í NDICE GENERAL. Índice general. i. Índice de figuras. iii. Índice de tablas. v. Resumen 1. 2. 3. 4. vii. Introducción 1.1 Robots móviles autónomos . . . . . 1.2 Tarea de exploración de un entorno 1.3 Objetivos . . . . . . . . . . . . . . . . 1.4 Estructura del documento . . . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. Algoritmo de exploración Random 2.1 Herramientas de ROS utilizadas . . . . . . . . . . . . . . . . . 2.1.1 Comunicaciones básicas en ROS . . . . . . . . . . . . 2.1.2 MORSE . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3 Move Base . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.4 Gmapping . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 El algoritmo de exploración Random . . . . . . . . . . . . . . 2.2.1 Integración del algoritmo en ROS . . . . . . . . . . . 2.2.2 Funcionamiento del algoritmo . . . . . . . . . . . . . 2.2.3 Problemas y soluciones ante un mensaje de aborto 2.2.4 Ejemplos de ejecución . . . . . . . . . . . . . . . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. 1 1 1 3 3. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. 5 6 6 7 8 8 9 9 9 12 18. Algoritmo de exploración MCDM 3.1 Conceptos teóricos . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Integración del algoritmo en ROS . . . . . . . . . . . . . . . . . 3.3 Funcionamiento del algoritmo . . . . . . . . . . . . . . . . . . 3.3.1 El mapa topológico . . . . . . . . . . . . . . . . . . . . 3.3.2 Procedimiento para el cálculo de los puntos objetivo 3.4 Problemas y soluciones . . . . . . . . . . . . . . . . . . . . . . . 3.5 Ejemplos de ejecución con diversos pesos de criterios . . . . 3.6 Ejemplos de ejecución en diversos entornos . . . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. 23 23 28 28 30 33 37 38 44. Estudio comparativo. 47 i.

(4) ii. 5. ÍNDICE GENERAL. Conclusiones 5.1 Algoritmo Random . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Algoritmo MCDM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3 Comparativa de resultados . . . . . . . . . . . . . . . . . . . . . . . . . . .. 55 55 57 58. A Código del algoritmo de exploración Random. 61. B Código del algoritmo de exploración MCDM. 71. Bibliografía. 93.

(5) Í NDICE DE FIGURAS. 1.1 1.2. Mapa de entorno desconocido a medio explorar . . . . . . . . . . . . . . . . Área a explorar donde no se puede completar al 90 % . . . . . . . . . . . . .. 1 2. 2.1 2.2. Área de búsqueda de puntos inexplorados del entorno . . . . . . . . . . . . Mensajes intercambiados entre los nodos Move Base, Gmapping, MORSE y Random Exploration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ejemplo de dos nodos comunicándose a través de un topic . . . . . . . . . . El robot PR2 en una simulación . . . . . . . . . . . . . . . . . . . . . . . . . . Dos vistas diferentes de un mismo mapa . . . . . . . . . . . . . . . . . . . . . Evaluación de las condiciones para ser un punto objetivo . . . . . . . . . . . Punto objetivo dentro de una columna . . . . . . . . . . . . . . . . . . . . . . Problema y solución a la asignación de puntos objetivo en el exterior del entorno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Punto objetivo muy cercano a un obstáculo . . . . . . . . . . . . . . . . . . . Punto objetivo situado a un radio inferior al radio máximo de la base del robot Aplicación del algoritmo de puntos inalcanzables sin inflado de obstáculos Aplicación del algoritmo de puntos inalcanzables en un mapa con los obstáculos inflados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exploración de una habitación vacía mediante el algoritmo Random . . . . Exploración de un entorno con habitaciones mediante el algoritmo Random (primera parte) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exploración de un entorno con habitaciones mediante el algoritmo Random (segunda parte) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 5. 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 2.12 2.13 2.14 2.15. 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9. Criterios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Comunicaciones de ROS con el algoritmo de exploración MCDM . . . . . . Casos considerados en la creación del mapa topológico . . . . . . . . . . . . Ejemplo mapa topológico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Selección de celdas candidatas . . . . . . . . . . . . . . . . . . . . . . . . . . Visibilidad de nodos desde posiciones inaccesibles . . . . . . . . . . . . . . Problema de visibilidad entre nodos y candidatos con mapa inflado . . . . Entorno con dos habitaciones y una puerta que las comunica . . . . . . . . Exploración de una habitación vacía mediante el algoritmo de exploración MCDM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.10 Mapa topológico resultante de la exploración de una habitación vacía mediante el algoritmo de exploración MCDM . . . . . . . . . . . . . . . . . . . . iii. 6 7 7 9 11 13 14 15 16 17 18 20 21 22 24 28 31 33 34 37 38 39 44 45.

(6) iv. Índice de figuras. 3.11 Exploración de un entorno con cinco habitaciones mediante el algoritmo de exploración MCDM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.12 Mapa topológico resultante de la exploración de un entorno con cinco habitaciones mediante el algoritmo de exploración MCDM . . . . . . . . .. 46. 4.1 4.2 4.3 4.4. Habitación vacía de 10 × 10 m . . . . . . . . . . . . . . . . . Entorno con varias habitaciones . . . . . . . . . . . . . . . . Entorno con varias habitaciones con puertas entreabiertas Entorno con forma de laberinto . . . . . . . . . . . . . . . .. . . . .. 48 49 51 52. 5.1 5.2. Problemas encontrados al implementar el algoritmo Random . . . . . . . . Entornos donde se han realizado las simulaciones . . . . . . . . . . . . . . .. 56 58. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. 45.

(7) Í NDICE DE TABLAS. 2.1. Parámetros utilizados durante las simulaciones . . . . . . . . . . . . . . . .. 3.1. 3.9 3.10 3.11 3.12 3.13 3.14. Configuración de pesos dando más importancia a la nueva información que al coste del viaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Utilidades calculadas para cada criterio . . . . . . . . . . . . . . . . . . . . . Configuración de pesos incluyendo los subconjuntos . . . . . . . . . . . . . Utilidades globales calculadas con la Integral Choquet . . . . . . . . . . . . Configuración de pesos del artículo . . . . . . . . . . . . . . . . . . . . . . . . Configuración de pesos equivalente a una media ponderada . . . . . . . . . Resultados obtenidos con la configuración de pesos del artículo . . . . . . . Resultados obtenidos con la configuración de pesos equivalente a una media ponderada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuración de pesos 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Resultados obtenidos con la configuración de pesos 3 . . . . . . . . . . . . . Configuración de pesos 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Resultados obtenidos con la configuración de pesos 4 . . . . . . . . . . . . . Configuración de pesos 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Resultados obtenidos con la configuración de pesos 5 . . . . . . . . . . . . .. 4.1 4.2 4.3 4.4. Resultados en una habitación vacía . . . . . . . . . . . . . . . . . . . . . . . . Resultados en un entorno con varias habitaciones . . . . . . . . . . . . . . . Resultados en un entorno con varias habitaciones con puertas entreabiertas Resultados en el laberinto . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 48 50 51 52. 5.1 5.2. Funciones implementadas para realizar el algoritmo MCDM . . . . . . . . . Resultados obtenidos con los dos algoritmos y en los cuatro entornos definidos en la figura 5.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 58. 3.2 3.3 3.4 3.5 3.6 3.7 3.8. v. 18. 26 26 27 27 39 40 40 41 42 42 42 43 43 43. 58.

(8)

(9) R ESUMEN La exploración y la generación de mapas, dentro de la robótica móvil, es de las tareas más importantes, con múltiples aplicaciones, como la exploración de lugares peligrosos o la búsqueda y rescate de personas. Es por ello que es interesante conseguir que un robot pueda explorar toda una zona específica en el menor tiempo posible y recorriendo la mínima distancia. En este trabajo se han implementado dos algoritmos de exploración claramente diferenciados, mientras el primero destaca por su simplicidad, el segundo requiere de un estudio previo del entorno antes de desplazar el robot. Se realizará una comparativa de la eficiencia de los dos algoritmos a la hora de explorar. Para ello se han creado cuatro entornos diferentes para poder observar y analizar el comportamiento de los algoritmos en cada uno de ellos. Palabras clave: algoritmos, exploración, entornos desconocidos, robótica, ROS.. vii.

(10)

(11) CAPÍTULO. 1. I NTRODUCCIÓN 1.1 Robots móviles autónomos Un robot móvil autónomo es un vehículo cuyos objetivos incluyen, entre otros, desplazarse de forma autónoma en un entorno ya sea desconocido o conocido, tomando las decisiones oportunas basadas en observaciones tomadas en ese entorno. Estas observaciones son obtenidas por el robot a través de unos sensores que lleva acoplados por los cuales obtiene información del lugar donde opera.. 1.2 Tarea de exploración de un entorno El presente trabajo se va a centrar en la tarea de exploración de un entorno. La exploración es la tarea de guiar un vehículo cubriendo toda la zona a explorar con sus sensores, de forma que obtenga información del entorno donde se encuentra, la posi-. Figura 1.1: Mapa de entorno desconocido a medio explorar. 1.

(12) 1. I NTRODUCCIÓN ción donde se localizan los obstáculos y qué lugares que están libre de ellos, para así poder adquirir una representación del entorno en forma de mapa (ver figura 1.1). Esta información se procesa y analiza para planificar una navegación eficiente en el área en el que se encuentra. Lo que se pretende es que el robot explore el lugar de forma que se maximice la cantidad de nueva información que vaya a obtener navegando hacia un punto del mapa, con el objetivo de reducir el tiempo y la energía necesaria para explorar completamente el entorno. La tarea de exploración no es para nada sencilla, ya que hay que tener en cuenta una serie de factores y situaciones que provocan que el robot no explore adecuadamente un entorno: • Para realizar la exploración se define un área a explorar, en donde el robot hará los movimientos pertinentes para descubrir el entorno. Previamente, se le indica al robot que finalice la exploración cuando haya descubierto un cierto porcentaje de todo el área a explorar, el cual puede rondar el 90 %. Pero hay que tener en cuenta que no siempre todo el área es accesible para el robot. Como se puede observar en la figura 1.2, el entorno que puede explorar el robot son las dos habitaciones y el pasillo que las comunica, toda la zona externa nunca podrá ser descubierta, por tanto en este caso no podría completarse el 90 % de la exploración del rectángulo indicado.. Figura 1.2: Área a explorar donde no se puede completar la exploración al 90 %. • El robot realiza la exploración desplazándose hasta unos puntos objetivo, de manera que por el camino vaya recogiendo información del entorno para la construcción del mapa. La elección de estos puntos objetivo se programa previamente para que según donde se encuentre el robot y la información obtenida del entorno, se le indique que se desplace hasta un punto que convenga. En ocasiones los puntos objetivo se seleccionan de manera aleatoria, pero en realidad hay que tener en cuenta que hay ciertas zonas del mapa a las que el robot no puede acceder, como puede ser cualquier lugar de color gris de la figura 1.2. Si al robot se le indica que vaya hasta cualquier punto inaccesible para él, éste empieza a 2.

(13) 1.3. Objetivos realizar unos comportamientos extraños porque no sabe como llegar al lugar. Por ello hay que evitar este tipo de situaciones. La exploración en robótica móvil es una tarea con una gran cantidad de aplicaciones. Entre muchas otras: • Realizar mapeados de lugares desconocidos con una gran precisión y de lugares de difícil acceso para el ser humano. • La exploración de terrenos para la detección de minas. Es muy importante evitar riesgos sobre las personas que utilizan equipos de detección manuales con la utilización de robots autónomos que puedan localizar las minas. • La exploración de entornos también se podría aplicar a un robot aspiradora, para que de forma eficiente recorra toda una casa limpiándola. Pero equipar un robot con todos los elementos necesarios para realizar dicha tarea es muy caro, por ello los robots aspiradora que hay en el mercado optan por otros sistemas más asequibles.. 1.3 Objetivos El objetivo de este trabajo es la implementación de dos algoritmos de exploración, de forma que un robot terrestre de forma autónoma genere un mapa del entorno. Se llevará a cabo una comparativa de la eficiencia de cada algoritmo a la hora de construir un mapa completo para identificar cuál de los dos actúa de la mejor forma. El nivel de complejidad de los algoritmos en bastante diferente, mientras uno destaca por su simplicidad, el otro tiene una mayor carga computacional. Dependiendo del entorno donde se apliquen cada uno de los algoritmos, variará el comportamiento de éstos. Para poder realizar la comparativa se definirán un conjunto de entornos variando su complicación y así poder determinar en qué situaciones el comportamiento de los algoritmos es mejor. Todo lo previamente descrito se realizará sobre el sistema operativo ROS (Robot Operating System). ROS es una plataforma de desarrollo abierto que provee toda una serie de librerías y servicios que ayudan significativamente a la creación de software para robótica. Tiene un diseño modular, de modo que los usuarios pueden utilizar solo lo que necesiten de ROS sin tener que configurarlo completamente. Esta modularidad permite seleccionar qué partes ya diseñadas se aprovecharán para usarlas en el trabajo y de esta manera poder centrarse simplemente en la implementación de los algoritmos.. 1.4 Estructura del documento Este documento se estructura en 5 capítulos. A continuación se muestra una breve descripción de cada no de ellos: • Capítulo 1: Introducción, presenta una introducción al trabajo. 3.

(14) 1. I NTRODUCCIÓN • Capítulo 2: Algoritmo de exploración Random, describe el algoritmo Random y los problemas de su implementación. • Capítulo 3: Algoritmo de exploración MCDM, detalla el algoritmo MCDM y las dificultades de su implementación. • Capítulo 4: Estudio comparativo entre los dos algoritmos, realiza una comparación de la eficiencia de los dos algoritmos implementados en diferentes entornos. • Capítulo 5: Conclusiones, recoge las conclusiones obtenidas tras la realización el trabajo.. 4.

(15) CAPÍTULO. 2. A LGORITMO DE EXPLORACIÓN R ANDOM. El primer algoritmo de exploración que se decide implementar es el Random. Al ser un algoritmo sencillo nos permite centrarnos en entender y configurar las comunicaciones de todo el entorno de ROS, además de visualizar la forma de actuar del robot en ciertos casos en los que su comportamiento no fuera el deseado y poderlo depurar. Este método de exploración consiste en que el robot explore puntos inexplorados del mapa que son seleccionados de forma aleatoria dentro de un círculo de radio R centrado en la posición actual del robot, tal y como se muestra en la figura 2.1a. En el caso de que no se encuentre ningún punto inexplorado en la distancia indicada, se duplicará el radio del mencionado círculo (ver figura 2.1b). Dicho radio seguirá creciendo en incrementos de R unidades mientras la anterior circunstancia se siga dando.. (a) Radio de búsqueda inicial. (b) Aumento del radio de búsqueda. Figura 2.1: Área de búsqueda de puntos inexplorados del entorno. 5.

(16) 2. A LGORITMO DE EXPLORACIÓN R ANDOM. 2.1 Herramientas de ROS utilizadas Como se ha comentado en el capítulo 1, se va a utilizar el sistema operativo ROS para simular el funcionamiento del algoritmo de exploración Random. Para ello, se van a aprovechar varios paquetes de software ya creados por la comunidad. Se han utilizado los siguientes paquetes de software de ROS: Move Base, encargado de la planificación de los movimientos del robot; Gmapping, encargado de la generación del mapa del entorno; MORSE, encargado de simular el robot y el entorno. En la figura 2.2 se observa el algoritmo Random (denominado, Random Exploration) interactuando con dichos paquetes.. Figura 2.2: Mensajes intercambiados entre los nodos Move Base, Gmapping, MORSE y Random Exploration. 2.1.1 Comunicaciones básicas en ROS Las comunicaciones en ROS están compuestas de los siguientes elementos: • Nodos: los nodos son programas ejecutables que ejecuta el computador para cumplir con una función. Cada nodo que se ejecuta tiene un nombre único que lo identifica. Para el funcionamiento de esta simulación se utilizan varios nodos que se explicarán más adelante. Un beneficio de utilizar nodos es que hace al conjunto del sistema más robusto ante fallos; es decir, si un nodo falla, el resto de nodos del sistema puede seguir funcionando. • Mensajes: un mensaje es una estructura de datos que utilizan los nodos para comunicarse entre ellos. Son soportados tanto los tipos primitivos (booleano, entero, etc) como los tipos compuestos (por ejemplo, arrays). • Topic: es el mecanismo mediante el cual los nodos intercambian mensajes. Los mensajes se enrutan mediante un publicador y un subscriptor. Un nodo publica un mensaje por un topic determinado. Si hay un nodo que necesita un tipo de dato en concreto, debe suscribirse al topic en cuestión para recibirlo. Puede haber 6.

(17) 2.1. Herramientas de ROS utilizadas varios publicadores y subscriptores simultáneos en cada topic. El nombre del topic se puede utilizar para identificar el contenido del mensaje. • Master: es el nodo principal de ROS, encargado de hacer las conexiones entre los nodos que requieran comunicarse. A modo de ejemplo, el gráfico de la figura 2.3 muestra un pequeño sistema compuesto por dos nodos, teleop_turtle y turtlesim, los cuales son representados mediante una elipse. Éstos se comunican a través de un topic llamado turtle1/command_velocity por el cual se envían los mensajes. La flecha indica que teleop_turtle es el nodo que envía mensajes (el nodo publicador) por dicho topic y turtlesim es el nodo que se ha suscrito al topic para recibirlos.. Figura 2.3: Ejemplo de dos nodos comunicándose a través de un topic. 2.1.2 MORSE MORSE (Modular OpenRobots Simulation Engine) es un simulador genérico para robótica académica. Permite la simulación de uno o varios robots móviles en entornos 3D complejos y realistas. Las escenas (entendiendo escena como el conjunto del entorno más el/los robot/s) se describen mediante scripts escritos en lenguaje Python. MORSE cuenta con un gran conjunto de sensores, como pueden ser escáners lásers o cámaras de vídeo, además de actuadores y robots completos ya creados.. (a) El robot PR2. (b) Rango de detección del escáner láser Hokuyo. Figura 2.4: El robot PR2 en una simulación Uno de los robots que viene completamente definido en MORSE es el robot PR2 (ver figura 2.4a). Éste ha sido el robot que se ha utilizado en este trabajo. Como se puede observar en la figura 2.4b, el robot PR2 dispone de un sensor láser Hokuyo que le permite detectar la presencia de obstáculos. Este láser cubre una distancia de hasta 30 7.

(18) 2. A LGORITMO DE EXPLORACIÓN R ANDOM metros con una abertura de 180 grados. Además del sensor láser, el robot PR2 tiene un sensor de odometría que estima la posición actual del robot con respecto a su posición inicial. Para realizar esta estimación se utiliza información sobre la rotación de las ruedas.. 2.1.3 Move Base El paquete Move Base es el encargado de, dado un punto objetivo en el entorno, proporcionar acciones al robot para que pueda llegar a dicho punto. Este nodo es necesario que esté subscrito a los siguientes topics para su correcto funcionamiento: • Goal: Es el punto objetivo a alcanzar por el robot. Este topic lo genera el nodo creado por nosotros, denominado Random Exploration. • Map: El nodo Gmapping genera un mapa del entorno y lo publica en este topic. El nodo Move Base utiliza este mapa para planificar un camino hasta el punto objetivo. • Odom: Este es un topic publicado por MORSE. Indica en qué posición se encuentra el robot en todo momento. Esta información es necesaria para situar al robot en el mapa. Además, el nodo Move Base publica, a través del topic cmd_vel, la velocidad a la que se deben mover las ruedas del robot con el objetivo de seguir el camino que se ha planificado. El simulador MORSE consulta este topic y se encarga de mover el robot a la velocidad indicada. Por último, el nodo Move Base provee información importante sobre el estado de la acción que está actualmente ejecutando (topic status). Más concretamente, indica si se ha llegado al punto objetivo de manera satisfactoria o, en caso contrario, si se ha tenido que abortar debido a que el robot ha encontrado algún impedimento para alcanzar dicho punto.. 2.1.4 Gmapping El paquete Gmapping se encarga de crear un mapa del entorno basándose en: un mapa local de ocupación a partir de la información proporcionada por el láser (topic Base scan); la información sobre la posición actual del robot (topic Odom). Un mapa no es más que una matriz en donde cada celda tendrá un valor decimal que determina su estado (ver figura 2.5a). En esta figura, las celdas con valor de 100 representan un obstáculo, un 0 es un espacio libre y, finalmente, un -1 representa el lugar por dónde el láser no ha hecho todavía ningún barrido, con lo cual es una zona inexplorada. Esta información, procesada con un pequeño programa en Python, se puede transformar en una imagen (ver figura 2.5b). El mapa generado, como se ha comentado anteriormente, es utilizado por el nodo Move Base, al igual que por el nodo Random Exploration.. 8.

(19) 2.2. El algoritmo de exploración Random. (a) Matriz. (b) Imagen equivalente. Figura 2.5: Dos vistas diferentes de un mismo mapa. 2.2 El algoritmo de exploración Random 2.2.1 Integración del algoritmo en ROS Se ha creado un nuevo paquete en ROS denominado Random Exploration. En este paquete se ha implementado el algoritmo de exploración Random. Este algoritmo es el encargado de indicarle al robot a qué puntos tiene que moverse para realizar una exploración completa del entorno. Se utiliza el topic Goal para publicar el punto del entorno al que al robot debe ir actualmente. El nodo Random Exploration requiere información del mapa y de la odometría del robot para saber en qué lugar del entorno se encuentra el vehículo y decidir cuál debe ser el próximo punto objetivo. Es más, el nodo Random Exploration necesita también conocer el estado de la acción llevado a cabo por el nodo Move Base. En la figura 2.2 se puede observar cómo se intercambia información entre los distintos nodos que son necesarios para realizar la simulación.. 2.2.2 Funcionamiento del algoritmo En este apartado se va a explicar el funcionamiento del algoritmo de exploración Random que se ha implementado. Aunque en un principio parece que es un algoritmo simple, se han encontrado numerosos problemas a la hora de programarlo y de comprender el comportamiento del robot en ciertas situaciones que más adelante se detallarán. En primer lugar, como se puede ver en las líneas 3 − 5 del algoritmo 1, antes de seleccionar a qué punto del mapa hay que mandar al robot, se tiene que hacer una lectura de los topics Map y Odom con el objetivo de obtener una copia del mapa del entorno junto a la posición en la que se encuentra el robot en ese momento. Hasta que no se ha recibido esta información, se mantiene a la espera de obtenerla. En las líneas 6 − 11, se calcula el porcentaje de mapa que ya ha sido explorado mediante la función calcularPorcentajeExplorado(). El valor devuelto por esta función se compara con un porcentaje, cuyo nombre es porcentajeAExplorar. Este porcentaje 9.

(20) 2. A LGORITMO DE EXPLORACIÓN R ANDOM Algoritmo 1 El algoritmo Random() 1: finMision = falso 2: mientras finMision = falso hacer 3: mientras mapa y odometría no leídos hacer 4: Leer mapa y odometría; 5: fin mientras 6: si (calcularPorcentajeExplorado() < porcentajeAExplorar) entonces 7: RandomPoint(); 8: Enviar al robot el objetivo elegido; 9: sino 10: finMision = verdadero 11: fin si 12: si se produce aborto entonces 13: si no hay obstáculo cercano entonces 14: actualizarMapaInflado(); 15: expandirPosicionesInalcanzables(); 16: fin si 17: fin si 18: fin mientras. constituye unos de los parámetros del algoritmo Random. Si el valor devuelto por la función calcularPorcentajeExplorado() es mayor que porcentajeAExplorar, se da por terminada la exploración; en caso contrario, se llama la función RandomPoint(). En esta última función se selecciona un punto objetivo de manera aleatoria dentro de un radio R exp centrado en la posición actual del robot. Para que un punto del entorno/celda del mapa pueda convertirse en punto objetivo debe cumplir las siguientes condiciones:. C1. La celda ha de estar a una distancia igual o inferior a R exp con respecto a la posición actual del robot. C2. El estado de la celda debe ser inexplorada. Además, al menos una de sus 8 celdas vecinas debe tener el estado de libre de obstáculos. C3. El obstáculo más próximo a la celda debe encontrarse a una distancia superior a los 0,334 metros. Este valor proviene del hecho de que la base del robot PR2 es una plataforma cuadrada de tamaño 0,668 metros por cada lado. C4. La celda y la posición actual del robot deben encontrarse, como mínimo, a una distancia igual a 0,334 metros. C5 Y, finalmente, la celda no ha de estar en la lista de posiciones a las que el robot no puede acceder. En esta lista se recogen los puntos del entorno que son inaccesibles para el robot, bien sea por la existencia de espacios cerrados o por la existencia de espacios con entradas de tamaño inferior a las dimensiones del robot. 10.

(21) 2.2. El algoritmo de exploración Random Estas condiciones son explicadas con más detalle en la sección 2.2.3. En la figura 2.6 se muestra un ejemplo de una celda que no cumple todas las condiciones anteriores y otra que sí las cumple. En estas imágenes el punto de color azul representa la posición actual del robot y el centro de la pequeña circunferencia roja es la celda considerada. En la figura 2.6a, la celda cumple todas las condiciones con la excepción de la C 3 (la zona marcada en color verde incluye, de forma aproximada, a todas aquellas celdas que tienen un obstáculo a una distancia menor o igual a 0,334 metros; por tanto, es evidente que la celda incumple la condición C 3). En cambio, en la figura 2.6b, la celda sí que cumple cada una de las cinco condiciones establecidas.. (a) Incumplimiento de la con- (b) Cumplimiento de todas las dición C3 condiciones. Figura 2.6: Evaluación de las condiciones para ser un punto objetivo Una vez hecha la selección de todas las celdas que cumplen las condiciones anteriormente indicadas, se escoge una aleatoriamente. En el caso en el que no se haya encontrado ninguna celda que cumpla dichas condiciones, el radio R exp se incrementa i ni respecto del valor inicial R exp y se vuelve a buscar celdas. Y así sucesivamente hasta que el valor del radio R exp sea igual de grande que la distancia de la diagonal del mapa, momento en el que se finaliza la exploración al no haber ninguna celda que cumpla las condiciones. En el caso de encontrar nuevas celdas, el valor de R exp se restablece en i ni R exp nuevamente para la siguiente búsqueda. Dicho procedimiento queda resumido en forma de pseudocódigo en el algoritmo 2. Una vez se ha seleccionado el punto objetivo, se envían las coordenadas X e Y de éste al nodo Move Base mediante el topic correspondiente para que el robot proceda a desplazarse hasta esa posición. El programa se mantiene a la espera hasta recibir por parte del nodo Move Base la confirmación de que el robot ha alcanzado satisfactoriamente el punto objetivo o, alternativamente, la confirmación de que el robot no ha podido alcanzarlo en forma de un mensaje de aborto. En el primer caso, el programa vuelve a seleccionar un nuevo punto objetivo de acuerdo con los criterios antes mencionados. De esta manera, se repite todo el proceso 11.

(22) 2. A LGORITMO DE EXPLORACIÓN R ANDOM Algoritmo 2 La función RandomPoint() 1: puntoCalculado = falso 2: mientras (finMision = falso y puntoCalculado = falso) hacer 3: para toda celda c dentro de rango R exp hacer /* condición C1 */ 4: si cumple C2, C3, C4 y C5 entonces 5: Insertar c en Candidatos; 6: fin si 7: fin para 8: si número de Candidatos > 0 entonces 9: Selección aleatoria de una celda de Candidatos; 10: puntoCalculado = verdadero; i ni ; 11: R exp = R exp 12: sino i ni 13: R exp = R exp + R exp ; 14: si (R exp > diagonalMapa) entonces 15: finMision = verdadero; 16: fin si 17: fin si 18: fin mientras. hasta que el entorno quede explorado en un porcentaje mayor a porcentajeAExplorar. Por otro lado, si se produce un aborto, hay que identificar cuál ha sido la causa y cómo hay que tratarlo. En la sección 2.2.3 se explica toda la causística vinculada con este error.. 2.2.3 Problemas y soluciones ante un mensaje de aborto Durante la implementación del algoritmo se han encontrando varias dificultades que se han ido subsanando añadiendo las condiciones definidas en la anterior sección para conseguir que el comportamiento del robot durante la exploración fuese adecuado. Para la mejor comprensión de esta sección imaginemos que en un principio solo se ha implementado la condición C1.. 2.2.3.1 Punto objetivo dentro de un espacio cerrado La situación más frecuentemente encontrada durante la implementación es el hecho de que el robot no pueda llegar al punto objetivo que se le indica porque es inaccesible para él. En un principio, el punto objetivo que se le manda al robot es una celda inexplorada y elegida aleatoriamente, con lo cual se da el caso en muchas ocasiones que se le indica como objetivo una posición que se encuentra justo dentro de un obstáculo cerrado. Un ejemplo de ello puede ser una posición en el interior de una columna tal y como muestra la figura 2.7a. El color negro corresponde al obstáculo, el blanco a la zona libre de obstáculos y el gris a la zona inexplorada, mientras que el color rojo indica 12.

(23) 2.2. El algoritmo de exploración Random el punto objetivo marcado. El robot estaría situado en el exterior del recinto cerrado. Previamente al momento de la figura 2.7a, toda esa zona es desconocida. El robot explora todos los alrededores para intentar acceder al objetivo marcado, pero cuando detecta que el destino es inaccesible para él porque esta en un espacio cerrado (2.7a) se queda parado y realiza dos vueltas sobre si mismo. Con ello ejecuta un nuevo escaneo de la zona limpiando las posibles lecturas erróneas del sensor láser que indiquen un obstáculo que no existe y que haya quedado plasmado en el mapa. Tras ello, si sigue sin encontrar un camino válido, genera un aborto y se queda parado a la espera de recibir un nuevo objetivo. Este proceso en el que realiza un segundo escaneo puede tardar unos 15 segundos, por lo que es interesante evitar que se generen abortos a menudo porque es una gran cantidad de tiempo que se pierde. Lógicamente, todas las zonas interiores de un obstáculo, como pueden ser las de una columna, son zona desconocida y un punto potencial a ser punto objetivo para el robot. Por esto, se siguen seleccionando como puntos objetivo puntos interiores a la columna, de manera que se van generando más abortos.. (a) Antes de aplicar el algoritmo (b) Después de aplicar el algoritmo. Figura 2.7: Punto objetivo dentro de una columna Para evitar este hecho, se ha creado el algoritmo de expansión de puntos inalcanzables. Este algoritmo funciona de la siguiente manera, en el momento en que se genera el aborto, a partir de la celda que era el destino del robot, se marcan los puntos que rodean a ésta como posiciones inalcanzables, con la condición de que las celdas no correspondan a un obstáculo, y, a su vez, se comprueba a partir de cada una de las celdas que rodean la celda inicial si las celdas que la rodean no son obstáculos para marcarlas como puntos inalcanzables, y así sucesivamente. Es decir, es un algoritmo que a partir de un punto inicial, se expande en todas direcciones hasta que encuentra un obstáculo. En la figura 2.7b se muestra el resultado final de aplicar el algoritmo después de generarse el aborto sobre el objetivo (color rojo) y así tener un registro de las posiciones inalcanzables para el robot (color verde). De esta manera, cuando se eligen los posibles objetivos a los cuales enviar al robot a explorar, se comprueba que no correspondan con ninguna posición del registro de posiciones inalcanzables (condición C5), evitando así un comportamiento no deseado del robot e impedir una gran pérdida de tiempo. 13.

(24) 2. A LGORITMO DE EXPLORACIÓN R ANDOM. 2.2.3.2 Cambio de punto objetivo Como se ha comentado anteriormente, en un principio la celda objetivo es aquella que es inexplorada. Pero durante las pruebas que se han realizado, se ha detectado el problema de que en multitud de ocasiones se generan objetivos en un punto exterior del entorno (ver figura 2.8a). Esto implica que el robot busque la manera de llegar hasta el lugar indicado sin éxito, perdiendo mucho tiempo e impidiendo que explore adecuadamente la zona.. (a) Punto objetivo en el exterior del entorno. (b) Punto objetivo inexplorado con celda vecina libre de obstáculos. Figura 2.8: Problema y solución a la asignación de puntos objetivo en el exterior del entorno La solución que se ha aplicado es la de exigir que la celda candidata a explorar sea inexplorada y que al menos uno de sus ocho celdas vecinas esté libre de obstáculos (ver figura 2.8b), que es la condición C2 indicada anteriormente. Con ello se consigue que los puntos que pueden ser elegidos de manera aleatoria estén en una zona ya parcialmente explorada y en la frontera entre la parte todavía oculta del mapa y la ya conocida. Y además, evita que se escoja como candidato un punto en el exterior del entorno.. 2.2.3.3 Punto objetivo muy cercano a un obstáculo Otro problema que se ha tratado es el hecho de que cuando se le indica un objetivo muy cercano a un obstáculo, al robot le es imposible llegar a él porque no hay espacio suficiente para que pueda colocarse en esa posición (ver figura 2.9). El nodo Move Base a partir del mapa que recibe, genera un nuevo mapa llamado costmap. Éste indica las posiciones a las cuales no puede acercarse el robot. Básicamen14.

(25) 2.2. El algoritmo de exploración Random. Figura 2.9: Punto objetivo muy cercano a un obstáculo. te realiza un inflado de un radio R sobre las celdas que corresponden a un obstáculo. El problema es que no se ha podido tener acceso al costmap, por lo que se ha optado por añadir una nueva condición para la selección de candidatos a ser objetivos, la condición C3, en la que se comprueba que no haya ninguna celda correspondiente a un obstáculo en el área formado por un radio igual al radio del robot desde la celda candidata. De esta forma, se evita marcar como punto objetivo una posición inaccesible para el robot debido a la cercanía de un obstáculo. Pero también se puede dar el caso en el que el objetivo seleccionado, en un principio, no tiene ningún obstáculo más cercano al radio del robot porque todavía no ha sido descubierto, pero en realidad sí que está. Si sucede tal cosa, el robot en el momento que descubre que hay un obstáculo muy cercano a la posición del punto objetivo, genera un aborto. Pero como se ha comentado anteriormente, el algoritmo de puntos inalcanzables se aplica en el instante en el que se produce el aborto. Para controlar que no se aplique dicho algoritmo en este tipo de situaciones en las que no es necesario aplicarlo, se comprueba en el momento de la interrupción, ya con el mapa actualizado, si hay un obstáculo en las cercanías del punto objetivo.. 2.2.3.4 Objetivo muy cercano a la posición del robot Otra situación que se ha detectado se produce cuando se le asigna al robot como punto objetivo una posición muy cercana a la que se encuentra. Si el punto objetivo esta a menos de 0.334 metros de la posición del robot (ver figura 2.10), nunca va a poder descubrir con su sensor láser qué contiene esa zona, ya que la base del robot tiene de radio esa misma medida y el sensor láser está situado en uno de los lados de la base.. 15.

(26) 2. A LGORITMO DE EXPLORACIÓN R ANDOM. Figura 2.10: Punto objetivo situado a un radio inferior al radio máximo de la base del robot. En muchas ocasiones lo que ha ocurrido es que los alrededores del robot ya estaban explorados, menos una pequeña zona justo en el área que ocupaba la base del robot; entonces siempre se asignaba como objetivo un punto de esa zona de forma infinita, ya que nunca lo podía explorar. Por ello se ha añadido la condición C4, la cual obliga a que un punto objetivo esté situado a una distancia mayor a 0.334 metros de la posición del robot. 2.2.3.5 Objetivo en lugar inaccesible También hay ciertas ocasiones en las que se generan objetivos en lugares inaccesibles para el robot. Por ejemplo, en la figura 2.11a se puede observar un mapa generado justo cuando el robot ha llegado al punto objetivo indicado con un punto rojo. En la parte inferior se puede contemplar una habitación con una puerta entreabierta, lo que posibilita que se generen puntos candidatos dentro de ella al haber celdas inexploradas con vecinos libres de obstáculos y sin obstáculos cercanos. Pero el vehículo no puede acceder a ese lugar al ser muy estrecho su acceso. En estas situaciones, el robot intenta acceder al objetivo por todos los lugares posibles, y va descubriendo gran parte del entorno buscando algún camino posible que comunique hasta el objetivo. Cuando el robot tiene la información necesaria del entorno para decir que no puede acceder a la zona deseada se genera un aborto. El mapa obtenido justo en el momento de la interrupción se muestra en la figura 2.11b. Como se puede comprobar no hay camino posible para acceder a la habitación. En este preciso instante se debe aplicar el algoritmo de puntos inalcanzables, pero surge un nuevo problema. En este caso, el objetivo no está del todo cerrado entre paredes, hay pequeños huecos como puede ser la puerta entreabierta. Entonces a la hora de aplicar el algoritmo (ver figura 2.11c) se extienden los puntos inalcanzables por todo el mapa, y en la siguiente selección de un punto objetivo, se encuentra que no hay ninguno disponible, al estar todos en la lista de puntos inaccesibles.. 16.

(27) 2.2. El algoritmo de exploración Random. (a) Mapa en el objetivo previo al aborto. (b) Mapa en el aborto. (c) Después de aplicar el algoritmo. Figura 2.11: Aplicación del algoritmo de puntos inalcanzables sin inflado de obstáculos. Para subsanar este inconveniente, se ha optado por crear una copia del mapa inflando los obstáculos un radio igual al radio de la base del robot. De esta manera las zonas inaccesibles quedan encerradas por obstáculos y al aplicar el algoritmo no se expanden por todo el mapa los puntos inalcanzables. El procedimiento es el siguiente. En el momento en que se genera el aborto se recibe la última actualización del mapa (figura 2.12a), se crea una copia de éste y se procesa. Se realiza una búsqueda de todas las celdas que corresponden a un obstáculo del mapa inicial, y en todas estas mismas posiciones se crea una circunferencia de obstáculos en la copia del mapa. Sobre este mapa inflado (figura 2.12b) se aplica el algoritmo de puntos inalcanzables. Como se puede observar en la figura 2.12c las posiciones inaccesibles no se extienden por todo el mapa gracias al inflado de los obstáculos, sino que se expanden únicamente por las zonas a las que el robot no puede llegar.. 17.

(28) 2. A LGORITMO DE EXPLORACIÓN R ANDOM. (a) Mapa normal. (b) Mapa inflado. (c) Mapa inflado aplicando los puntos inalcanzables. Figura 2.12: Aplicación del algoritmo de puntos inalcanzables en un mapa con los obstáculos inflados. 2.2.4 Ejemplos de ejecución Se ha testeado el funcionamiento del algoritmo de exploración Random en dos entornos diferentes. En la tabla 2.1 se puede ver los valores de los parámetros que se han utilizado para realizar las simulaciones.. Parámetro. Valor. i ni R exp. 5m 90 %. porcentajeAExplorar. Tabla 2.1: Parámetros utilizados durante las simulaciones 18.

(29) 2.2. El algoritmo de exploración Random El primer entorno a explorar es una habitación cuadrada totalmente vacía. En la figura 2.13 se recoge cómo se va actualizando el mapa a medida que el robot recorre el entorno. Debido a la sencillez de éste, el robot no tiene grandes problemas en explorarlo completamente, ya que, a parte de las paredes que delimitan la habitación, el robot no se encuentra con ningún otro obstáculo.. Se puede observar como en cada punto objetivo el robot gana mucha información del entorno. Es por ello que en este ejemplo el robot consigue explorar gran parte del entorno visitando sólo 5 puntos objetivo (ver figura 2.13e). Tras el quinto punto objetivo, al robot todavía le queda por descubrir la esquina superior derecha de la habitación. Esa esquina es explorada cuando el robot se desplaza al sexto punto objetivo. En ese momento, mas del 90 % del entorno ha sido ya explorado y, por tanto, la exploración acaba.. A modo de resumen, en este primer entorno, para realizar una exploración de más del 90 %, se han tenido que generar seis puntos objetivo. El robot ha recorrido una distancia total de 23,61 metros y ha tardado 54 segundos en recorrer esta distancia.. El segundo entorno consiste en un conjunto de habitaciones conectadas por dos pasillos. Este es un entorno sumamente más complejo que el anterior que nos permitirá evaluar la eficiencia del algoritmo de exploración Random.. En las figuras 2.14 y 2.15 se observa, paso a paso, la ejecución del algoritmo en el entorno indicado. Como se puede ver, en la primera parte de la exploración, el robot descubre rápidamente gran parte del entorno.. Pero el mayor problema que tiene este algoritmo se evidencia en la segunda secuencia de imágenes (ver figura 2.15). Cuando el robot se encuentra en la parte inferior del pasillo (punto rojo de la figura 2.15a), junto a la entrada de una habitación todavía sin explorar completamente (de aquí en adelante, haremos referencia a esta habitación como A), se le asigna como punto objetivo la habitación que se encuentra en la esquina superior derecha de la imagen (ver figura 2.15b; de aquí en adelante, haremos referencia a esta habitación como B). Para poder llegar a esa habitación (B), el robot tiene que realizar un gran recorrido, si lo comparamos con el que tendría que hacer para acabar de explorar la habitación A. Además, después de explorar la habitación B, el robot deberá recorrer de nuevo el pasillo para poder explorar la habitación, dando así por concluida la exploración. Este comportamiento es consecuencia de la aleatoriedad que existe a la hora de elegir un punto objetivo del entorno.. A modo de resumen, en este segundo entorno, el robot ha tenido que visitar 17 puntos objetivo. Además, ha recorrido un total de 95,21 metros, tardando 220 segundos en completar la exploración del entorno. El mapa resultante de esta ejecución es el que se muestra en la figura 2.15c. 19.

(30) 2. A LGORITMO DE EXPLORACIÓN R ANDOM. (a) Mapa con el robot situado en suposición inicial. (c) Punto objetivo 3. (e). Punto. objetivo. (b) Punto objetivo 2. (d) Punto objetivo 4. 5. (f) Último punto objetivo (6). Figura 2.13: Exploración de una habitación vacía mediante el algoritmo Random. 20.

(31) 2.2. El algoritmo de exploración Random. (a) Mapa con el robot situado en su posición inicial. (b) Punto objetivo 6. (c) Punto objetivo 8. (d) Punto objetivo 11. Figura 2.14: Exploración de un entorno con habitaciones mediante el algoritmo Random (primera parte). 21.

(32) 2. A LGORITMO DE EXPLORACIÓN R ANDOM. (a) Punto objetivo 14. (b) Punto objetivo 15. (c) Último punto objetivo (17). Figura 2.15: Exploración de un entorno con habitaciones mediante el algoritmo Random (segunda parte). 22.

(33) CAPÍTULO. 3. A LGORITMO DE EXPLORACIÓN MCDM En este capítulo se van a explicar los conceptos teóricos y la implementación del algoritmo de exploración Multi-Criteria Decision Making (MCDM). Este método de exploración es bastante más complejo que el algoritmo de exploración Random, ya que se hace un estudio previo a la elección del punto objetivo a explorar. Dicho punto será seleccionado teniendo en cuenta una serie de criterios que serán analizados para que el entorno se explore de una forma completa de la manera más eficiente posible, intentando reducir el tiempo de exploración y la distancia recorrida por el robot. El hecho de que sea un algoritmo más complejo implica que tiene una mayor carga computacional que se traduce en una pequeña espera para que el robot seleccione el siguiente punto del entorno a visitar.. 3.1 Conceptos teóricos En primer lugar se va a hacer una explicación de la parte teórica de este algoritmo, dando a conocer cuáles son los criterios a tener en cuenta a la hora de seleccionar un punto objetivo entre una serie de candidatos y cómo realizar dicha selección. La localización de los candidatos proviene de una lista de frontera en donde quedan registradas todas las posiciones que están en la frontera entre la parte inexplorada del mapa, y la parte explorada y libre de obstáculos. Por cada localización de un candidato p, se realiza una evaluación a partir de cuatro criterios. Para explicar dichos criterios se va a utilizar el entorno que se muestra en la figura 3.1. Es una pequeña habitación rectangular, donde la región de color gris representa el área inexplorada por el robot, mientras que la región blanca es la zona libre de obstáculos. Las líneas negras que forman un rectángulo son los obstáculos detectados por el robot. Por otro lado, el punto azul representa la posición actual del robot; en cuanto al de color rojo es el punto 23.

(34) 3. A LGORITMO DE EXPLORACIÓN MCDM candidato p escogido a modo de ejemplo. A continuación se detallan los criterios:. (a) iArea. (b) iSeg. (c) Overlap. (d) Mapa topológico para el cálculo del coste. Figura 3.1: Criterios. • El primero de ellos es iArea(p). Es el tamaño del área desconocida desde el punto p en un radio R que corresponde al rango de detección del sensor láser del robot. Este criterio nos indica la cantidad de nueva información que se puede ganar viajando a ese lugar. En la figura 3.1a se puede ver un ejemplo de la ganancia potencial de información (región de color verde) desde el punto candidato p. • Otro de los criterios es el llamado iSeg(p). Es calculado como la longitud de la frontera entre la parte conocida y libre de obstáculos del entorno, y la parte desconocida, visible en un radio R desde el punto p (representada a través de la línea verde en la figura 3.1b). O lo que es lo mismo, el número de posiciones que están registradas en la lista de fronteras en el área de radio R centrada sobre el punto p. 24.

(35) 3.1. Conceptos teóricos • Overlap, o(p), es el tercero de los criterios a tener en cuenta. Se define como la longitud de la frontera entre la parte conocida y no libre de obstáculos del entorno, y la parte desconocida, visible desde el punto p en un radio R (ver figura 3.1c). • El último de los criterios es el coste del viaje, llamado de forma abreviada c(p). Indica la distancia que ha de recorrer el robot desde su posición actual hasta el punto p. Para poder calcular dicha distancia, durante la exploración se construye un mapa topológico del entorno (ver figura 3.1d). Ese mapa registra los puntos del entorno que el robot ya ha visitado y la conectividad que existe entre estos puntos. Con esta información se puede llegar a estimar cuál es la distancia mínima que separa al robot de un punto candidato p cualquiera. En el ejemplo de la figura 3.1d, dado ese mapa topológico, el camino más corto entre la posición del robot y el punto p es el indicado en verde. Dado un criterio i y un punto candidato p, se calcula un valor de utilidad u i (p) en el intervalo [0,1], con el fin de evaluar en una escala común la calidad de todos los puntos candidatos de acuerdo con cada criterio. La utilidad está definida por la normalización de todos los candidatos en la etapa de exploración actual. Por ejemplo, realizando los cálculos sobre iArea(p), siendo L el conjunto de puntos candidatos actuales, la utilidad u i Ar ea (p) con p ∈ L se extrae de la siguiente función: u iArea (p) = (iArea(p) − mı́n iArea(q))/(máx iArea(r ) − mı́n iArea(q)) q∈L. q∈L. r ∈L. (3.1). Las funciones mín y máx representan el valor mínimo y máximo de todo el conjunto de valores de iArea. El objetivo es que cuanto mayor sea el valor de la utilidad, mejor sea la satisfacción del criterio. En otros criterios, como el coste del viaje c(p), se deben penalizar los valores altos. Para ello, su utilidad se calcula con la siguiente función: u c (p) = 1 − (c(p) − mı́n c(q))/(máx c(q) − mı́n c(q)) q∈L. q∈L. q∈L. (3.2). Para la selección del punto objetivo, se calcula la utilidad global de cada candidato. La función para el cálculo de la utilidad global debe tener en cuenta el grado de importancia que se le da a cada uno de los criterios. Sea N un conjunto de n criterios. Cada elemento j ∈ N denota un criterio simple, como puede ser el overlap. Por otro lado, L es el conjunto de los actuales candidatos. Por cada par p ∈ L y j ∈ N se calcula un valor de utilidad u j (p). Antes de entrar en la explicación de lo que nos propone el algoritmo MCDM para calcular la utilidad global, veremos primero cómo se ha hecho habitualmente este cálculo. Suponiendo N = {i Ar ea, i Seg , c}, una forma sencilla de calcular la utilidad global consiste en realizar un promedio en base al establecimiento de un peso individual a cada criterio que refleje su importancia relativa. Si se quiere, por ejemplo, valorar más la nueva información que se pueda ganar viajando a un candidato, restando importancia 25.

(36) 3. A LGORITMO DE EXPLORACIÓN MCDM al coste del viaje, se podrían establecer los pesos de la tabla 3.1.. Criterio. Peso. iArea iSeg c. 0,40 0,40 0,20. Tabla 3.1: Configuración de pesos dando más importancia a la nueva información que al coste del viaje Imaginemos ahora tres puntos candidatos, L = {p 1 , p 2 , p 3 }, y que las utilidades calculadas para cada criterio son las mostradas en la tabla 3.2.. Candidato. iArea. iSeg. c. Promedio. p1 p2 p3. 0,90 0,70 0,05. 0,90 0,70 0,10. 0,05 0,60 0,80. 0,73 0,68 0,22. Tabla 3.2: Utilidades calculadas para cada criterio Dados estos números, el candidato seleccionado sería p 1 al tener una mayor utilidad global. Pero si nos fijamos en los valores de utilidad de cada criterio, se puede observar que a pesar de satisfacer en gran medida los dos criterios más valorados (iArea e iSeg), en lo que se refiere al coste del viaje deja mucho que desear, cuando en realidad no se le está dando tan poca importancia. Por lo tanto, al ser elegido p 1 , el robot tendría que hacer un largo recorrido hasta dicho punto, algo que se quiere evitar. MCDM da la posibilidad de establecer pesos en diferentes configuraciones de criterios, de manera que se pueda evitar el problema del ejemplo anterior. Este problema proviene del hecho de que cuando se hace un promedio se asume la independencia mutua entre los criterios, cosa que no siempre es cierta. Con MCDM se puede establecer el grado de redundancia entre criterios (como la que hay entre iArea e iSeg) y el nivel de sinergia. Para ello, MCDM aplica una técnica de agregación llamada Integral Choquet fuzzy. Dentro de esta técnica, a la función µ : 2N → [0, 1] se le llama capacidad o medida "fuzzy"del conjunto de criterios N cuando satisface las siguientes tres propiedades: • µ(;) = 0 • µ(N ) = 1 • Si A ⊂ B ⊂ N entonces µ(A) ≤ µ(B ) 26.

(37) 3.1. Conceptos teóricos µ(A) representa el peso del subconjunto de criterios A. De esta manera, como se ha dicho anteriormente, se asignan pesos a las combinaciones de criterios, indicando qué relación tienen entre ellos. Dado dos criterios, c 1 y c 2 , y sus pesos µ(c 1 ) y µ(c 2 ): • Dos criterios son redundantes si µ({c 1 , c 2 }) < µ(c 1 ) + µ(c 2 ) • Dos criterios son sinérgicos si µ({c 1 , c 2 }) > µ(c 1 ) + µ(c 2 ) La utilidad global u(p) de un candidato p se calcula a partir de la Integral Choquet con respecto a la medida "fuzzy"µ: u(p) =. n X. (u ( j ) (p) − u ( j −1) (p))µ({A ( j ) }),. (3.3). j =1. donde ( j ) se refiere al índice después de haber realizado una permutación en N cambiando el orden tal que u (1) (p) ≤ u (2) (p) ≤ ... ≤ u (n−1) (p) ≤ u (n) (p), y u (0) := 0, y A ( j ) es el subconjunto de los criterios dados por A ( j ) = {u ( j ) (p) ≤ u i (p) ≤ u (n) (p)} una vez hecho la permutación. Recuperando el ejemplo anterior, para calcular la utilidad global con la Integral Choquet, además de definir los pesos individuales, también hay que dar un peso a todos los subconjuntos de criterios posibles (ver tabla 3.3). Criterio. Peso. µ({i Ar ea}) µ({i Seg }) µ({c}) µ({i Ar ea, i Seg }) µ({i Ar ea, c}) µ({i Seg , c}) µ({i Ar ea, i Seg , c}). 0,40 0,40 0,20 0,50 0,80 0,80 1. Tabla 3.3: Configuración de pesos incluyendo los subconjuntos Dados estos pesos, se establece una relación de sinergia entre los criterios iArea y c, e iSeg y c, mientras que entre iArea e iSeg se define una relación de redundancia. Si se aplica la función para el cálculo de la utilidad global, utilizando las mismas utilidades individuales del ejemplo anterior, los resultados son los mostrados en la tabla 3.4. Candidato. iArea. iSeg. c. Integral Choquet. p1 p2 p3. 0,90 0,70 0,05. 0,90 0,70 0,10. 0,05 0,60 0,80. 0,48 0,65 0,23. Tabla 3.4: Utilidades globales calculadas con la Integral Choquet 27.

(38) 3. A LGORITMO DE EXPLORACIÓN MCDM A modo de ejemplo, el cálculo de la utilidad global del candidato p 3 ha sido el siguiente: u(p 3 ) = (u i Ar ea (p 3 )−u(0))·µ({i Ar ea, i Seg , c})+(u i Seg (p 3 )−u i Ar ea (p 3 ))·µ({i Seg , c})+ (u c (p 3 ) − u i Seg (p 3 )) · µ(c) u(p 3 ) = (0,05 − 0) · 1 + (0,10 − 0,05) · 0,80 + (0,80 − 0,10) · 0,20 = 0,23 Dados los resultados, el punto candidato elegido sería p 2 , el cual proporciona un mejor equilibrio entre la cantidad de nueva información que se espera ganar y lo cerca que se encuentra del robot.. 3.2 Integración del algoritmo en ROS Se ha creado un paquete llamado MCDM, en el cual se encuentra el algoritmo de exploración MCDM. Como se puede obvervar en la figura 3.2, las comunicaciones en este caso son exactamente las mismas que con el algoritmo de exploración Random. El algoritmo MCDM necesita la información del mapa ofrecida por el nodo Gmapping, además de la odometría del robot que provee el simulador MORSE, de manera que se pueda analizar en qué situación se encuentra el robot en el entorno para así poder definir un punto objetivo adecuado. Una vez seleccionado el punto objetivo, el nodo Move Base se encarga de mover el robot hasta dicho punto.. Figura 3.2: Comunicaciones de ROS con el algoritmo de exploración MCDM. 3.3 Funcionamiento del algoritmo En este apartado se explica el funcionamiento del algoritmo de exploración MCDM que se ha implementado. En este caso, el algoritmo es más complejo y tiene una gran carga computacional debido a la gran cantidad de información que maneja.. 28.

(39) 3.3. Funcionamiento del algoritmo La estructura de la función principal es bastante parecida a la del algoritmo Random. La única diferencia es que ahora mientras el robot está en movimiento se debe actualizar un mapa topológico. En primer lugar, como se puede observar en el pseudocódigo del algoritmo 3, se realiza la lectura de los pesos de cada uno de los criterios establecidos para poder calcular los puntos objetivo. Además, es necesario hacer una lectura inicial de los topics de la odometría del robot y del primer mapa del entorno. Una vez recogidos estos primeros datos, se procede a calcular el porcentaje de entorno que se ha explorado. En el caso de que se haya explorado más del 90 % del mapa se da por concluida la exploración. En caso contrario, se procede a calcular el próximo punto objetivo a alcanzar por el robot.. Algoritmo 3 Main() 1: finMision = falso; 2: lecturaPesos(); 3: mientras mapa y odometría no leídos hacer 4: Leer mapa y odometría; 5: fin mientras 6: mientras finMision = falso hacer 7: si (calcularPorcentajeExplorado() < porcentajeAExplorar) entonces 8: MCDMPoint(); 9: Enviar al robot el punto objetivo elegido; 10: mientras el robot no ha llegado al punto objetivo y no se produce aborto hacer 11: Leer mapa y odometría; 12: actualizarMapaTopologico(); 13: fin mientras 14: sino 15: finMision = verdadero; 16: fin si 17: si (se produce aborto y no hay obstáculo cercano) entonces 18: inflarMapa(); 19: expandirPosicionesInalcanzables(); 20: fin si 21: fin mientras Una vez elegida la posición más adecuada para explorar, se le transmite al robot dicho punto objetivo. Mientras el robot se desplaza, hasta que no llegue a su destino o hasta que no se produzca un aborto por no poder alcanzarlo, se irá actualizando un mapa topológico que registra el camino recorrido por el robot. Este mapa se utiliza para poder saber el coste del viaje/camino hasta un determinado punto objetivo candidato. Esta información se necesita a la hora de calcular la utilidad global de cada candidato. Si el robot llega de manera satisfactoria hasta su destino, se vuelve a calcular un nuevo punto objetivo. Si durante dicho cálculo, no se encuentra a ningún candidato a ser punto objetivo, entonces se da por finalizada la exploración. Si, por el contrario, se produce un aborto mientras el robot navega hasta su destino, 29.

(40) 3. A LGORITMO DE EXPLORACIÓN MCDM se comprueba si existe o no un obstáculo próximo al punto objetivo que impida al robot acercarse a esa posición. Si existe un obstáculo, se procede a calcular un nuevo punto objetivo. En caso contrario, lo que ocurre es que se ha definido como destino un punto que está ubicado en un área del entorno que no es alcanzable por el robot. Ante esta situación, se procede a aplicar el algoritmo de expansión de puntos inalcanzables sobre el mapa inflado (todos los obstáculos del mapa son inflados de acuerdo con el tamaño de la base del robot). De esta manera, el algoritmo MCDM podrá determinar exactamente cuál es esa área del entorno que es inalcanzable para el robot; es más, a partir de ese momento, no se volverá a seleccionar como objetivo ningún punto que esté en dicha área.. 3.3.1 El mapa topológico El mapa topológico es donde se registra el recorrido que ha hecho el robot alrededor del entorno. Hacer este seguimiento nos ofrece una información muy importante a la hora de estimar cuál es la distancia que separa el robot de un determinado punto objetivo candidato. Conocer esa distancia es imprescindible para poder aplicar el criterio del coste del viaje. Un mapa topológico esta formado por n nodos que representan lugares del entorno en los que el robot ha estado. Por otro lado, las aristas que unen dichos nodos (n i ,n j ) indican caminos libres de obstáculos por los que el robot puede circular sin peligro de colisión. Para contruir el mapa topológico se tienen, esencialmente, en cuenta los cuatro casos que se ilustran de manera gráfica en la figura 3.3. En dicha figura se utiliza la siguiente anotación: n 0 representa el nodo más cercano visible desde la posición actual del robot; d es la distancia que les separa; d t h es una distancia límite; la posición en la que se encuentra el robot se denomina x t ; x t −1 se refiere a la anterior posición del robot registrada; n t −1 es el último nodo que ha sido creado. El algoritmo aplicado es el siguiente:. • Cuando el nodo más cercano y visible n 0 es el último nodo creado anteriormente n t −1 y se encuentra a una distancia mayor a d t h , se crea un nodo n t en la misma posición del robot en la que está (ver figura 3.3a). Es el caso más típico. Se produce, por ejemplo, cuando el robot se mueve en línea recta. • El segundo caso es el que se puede ver en la figura 3.3b, el cual ocurre cuando desde la posición actual del robot no hay ningún nodo visible n 0 . En esta ocasión, se crea un nuevo nodo n t en x t , pero la arista es de tipo poligonal (n t ,n t −1 ) con un punto intermedio en la anterior posición del robot registrada x t −1 . 30.

(41) 3.3. Funcionamiento del algoritmo. Figura 3.3: Casos considerados en la creación del mapa topológico (figura extraída del artículo [1]). 31.

(42) 3. A LGORITMO DE EXPLORACIÓN MCDM • El tercer caso se produce cuando la distancia con el nodo más cercano es mayor que d t h y, además, cuando n 0 es distinto al último nodo creado n t −1 (ver figura 3.3c). Si se cumplen estas condiciones, se crea un nodo en la posición actual del robot que se une con n t −1 . También se crea una segunda arista entre los nodos n t −1 y n 0 . • El último de los casos ocurre cuando el nodo n 0 , el cual no es el mismo que el último creado, está a una distancia respecto a la posición del robot menor a la distancia límite d t h . Si se produce esta situación, simplemente se crea una arista entre los nodos n 0 y n t −1 . En el algoritmo 4 se muestra en forma de pseudocódigo la implementación de estos cuatro casos. En este algoritmo se emplean dos listas: la primera llamada Nodos en la cual se guarda en qué posición se encuentra cada uno de los nodos creados; y la segunda llamada adjacency_list. Esta última lista contiene las aristas del mapa topológico. De cada arista se guarda qué nodos están involucrados en la unión y el coste que hay entre ellos, que no es más que la distancia que los separa. Algoritmo 4 Función actualizarMapaTopologico() 1: /* Todos los nodos que son creados se introducen en la lista Nodos */ 2: /* Al añadir una arista se esta introduciendo la información en la lista adjacency_list */ 3: nodoMasCercano(x t ) → (n 0 , d ); 4: si n 0 no existe o d > d t h entonces 5: Añadir nuevo nodo n n en x t ; 6: Hacer n n → n t ; 7: si n 0 existe y n 0 6= n t −1 y arista entre (n 0 ,n t −1 ) no existe entonces 8: Añadir arista recta (n 0 ,n t −1 ); 9: fin si 10: si [(n 0 existe y n 0 = n t −1 ) o esVisible(n t −1 ,x t )] entonces 11: Añadir arista recta (n t −1 , n t ); 12: sino 13: Añadir arista poligonal (n t −1 , n t ) con punto medio en x t −1 ; 14: fin si 15: sino 16: Hacer n 0 → n t ; 17: si n 0 6= n t −1 y arista entre (n 0 ,n t −1 ) no existe entonces 18: si esVisible(n t −1 ,x t ) entonces 19: Añadir arista recta (n 0 ,n t −1 ); 20: sino 21: Añadir arista poligonal (n 0 ,n t −1 ) con punto medio en x t ; 22: fin si 23: fin si 24: fin si Como se puede comprobar, se utilizan dos funciones muy importantes, como son las de nodoMasCercano(), en el que dado la posición en la que se encuentra el robot, 32.

(43) 3.3. Funcionamiento del algoritmo nos indica, de toda la lista de nodos que han sido creados, cuál es el más cercano sin que haya ningún obstáculo en el camino. Se utiliza una función, esVisible(), de tipo booleano, que indica, dado dos nodos, si son visibles entre si, es decir, no se encuentra ningún obstáculo entre ellos. Para esta función se utiliza el algoritmo de Bresenham. El algoritmo de Bresenham [2] es utilizado para trazar líneas rectas píxel a píxel en un entorno discreto. En nuestro caso es muy útil para realizar un recorrido por todas las celdas que conectan dos nodos del mapa topológico o un nodo con la posición del robot, de forma que se puede verificar celda a celda si se encuentra un obstáculo en medio y así confirmar si hay visibilidad entre las dos posiciones. En la figura 3.4 se muestra un ejemplo del mapa topológico que se ha creado durante la exploración de un entorno. Como se puede observar, el mapa topológico se aplica en el mapa del entorno con los obstáculos inflados. Esto es así porque este mapa nos indica de mejor forma los lugares por dónde el robot puede circular, de manera que las distancias entre nodos cercanos a obstáculos son más fieles a la realidad.. Figura 3.4: Ejemplo de mapa topológico. 3.3.2 Procedimiento para el cálculo de los puntos objetivo Para realizar el cálculo de los puntos objetivo mediante el algoritmo MCDM es necesario tener un registro de todos los puntos de frontera entre la parte explorada y la parte desconocida del mapa. Las posiciones almacenadas son aquellas que son celdas exploradas y libres de obstáculos, y que tienen al menos una celda vecina inexplorada. Esta lista de posiciones, llamada listaSegFronteras, está agrupada en diferentes segmentos de frontera, donde cada segmento se refiere a todas aquellas celdas consideradas de 33.

(44) 3. A LGORITMO DE EXPLORACIÓN MCDM frontera que están en contacto las unas con las otras, formando un mismo conjunto. En la figura 3.5b se muestra un ejemplo de las celdas consideradas de frontera (marcadas en color rojo), en una primera lectura del mapa de un entorno desconocido.. (a) Mapa. (b) Celdas de frontera. (c) Candidatos seleccionados. Figura 3.5: Selección de celdas candidatas El siguiente paso sería hacer el estudio de qué punto de la lista listaSegFronteras es el más adecuado para realizar una exploración eficiente. Dentro de listaSegFronteras hay una gran cantidad de celdas almacenadas, y a medida que el robot se desplace un poco más por el entorno el número puede ser mucho mayor. Esto significa que habría que analizar miles de celdas calculando sus criterios y utilidades, aumentando muchísimo la carga computacional. Además, no tiene mucho sentido analizar celdas que están una al lado de la otra, ya que el resultado de la utilidad calculada sería prácticamente el mismo. Para evitar dicha redundancia, se realiza una selección de algunas celdas que se encuentran en listaSegFronteras, las cuales deben tener una cierta separación entre ellas. Para ello, a la hora de escoger qué celda es adecuada para ser candidata a punto objetivo, se comprueba que dicha celda no esté a una distancia menor a un radio R cand de una celda ya seleccionada como candidata. Además de dicha condición, el candidato debe cumplir las siguientes condiciones:. C1 No debe haber ningún obstáculo a menos de 0,334 metros de la celda candidata, que es el radio de la base del robot. De esta forma, se evita un futuro aborto por parte del robot por no poder acceder al punto objetivo. C2 La celda candidata debe estar a una distancia mayor a 0,334 metros con respecto de la posición actual del robot. C3 No debe encontrarse en la lista de puntos inalcanzables. Esta lista contiene aquellos lugares del entorno a los que el robot no puede acceder. 34.

(45) 3.3. Funcionamiento del algoritmo C4 En el mapa topológico debe existir al menos un nodo que sea visible desde la celda candidata. Aquí es importante puntualizar que la comprobación de que haya o no visibilidad entre un nodo y una celda se hace desde el mapa sin inflar (es decir, desde el mapa donde los obstáculos no han sido inflados de acuerdo con el tamaño de la base del robot). Más adelante, se justifica porqué no se utiliza el mapa inflado. En el algoritmo 5 se resume en forma de pseudocódigo el procedimiento que se aplica. Algoritmo 5 Función seleccionCandidatos() 1: Candidatos = ;; 2: candidatoDescartado = falso; 3: para toda posición f perteneciente a listaSegFronteras hacer 4: para toda posición a perteneciente a Candidatos hacer 5: si distancia entre f y a < R c and entonces 6: candidatoDescartado = verdadero; 7: fin si 8: fin para 9: si candidatoDescartado = falso entonces 10: si cumple condiciones C1, C2, C3, C4 entonces 11: insertar f en Candidatos; 12: fin si 13: fin si 14: candidatoDescartado = falso; 15: fin para Una vez escogidos todos los puntos candidatos, se procede a puntuarlos a través de los criterios iArea, iSeg, overlap y c. Para cada candidato se obtiene una puntuación para cada criterio siguiendo el algoritmo 6. Por cada celda escogida como candidata, en un área de radio igual al rango de alcance del láser, R l aser , se comprueba el contenido de cada celda, de manera que se realiza un recuento de los tres tipos de celda que definen tres de los cuatro criterios establecidos: celdas inexploradas para el criterio iArea; celdas que equivalen a un obstáculo para el criterio overlap; y, por último, celdas de frontera para el criterio iSeg (siendo una celda de frontera una celda libre de obstáculos con, al menos, una vecina inexplorada). Para el cuarto criterio que falta, el coste del viaje (c), se utiliza el mapa topológico creado. Con la información que se recopila en las listas Nodos y adjacency_list, equivalentes a todos los nodos y aristas que configuran el mapa topológico, se calcula cuál es la distancia mínima que separa la posición actual del robot con la de cada uno de los candidatos. Para ello se utiliza el algoritmo de Dijkstra. El algoritmo de Dijkstra [3], también llamado del camino mínimo, permite determinar cuál es el camino más corto entre un vértice inicial y uno final. Más formalmente, la idea de este algoritmo consiste en encontrar el camino más corto entre cada par de 35.

Figure

Figura 1.2: Área a explorar donde no se puede completar la exploración al 90 %
Figura 2.2: Mensajes intercambiados entre los nodos Move Base, Gmapping, MORSE y Random Exploration
Figura 2.3: Ejemplo de dos nodos comunicándose a través de un topic
Figura 2.6: Evaluación de las condiciones para ser un punto objetivo
+7

Referencias

Documento similar

Cedulario se inicia a mediados del siglo XVIL, por sus propias cédulas puede advertirse que no estaba totalmente conquistada la Nueva Gali- cia, ya que a fines del siglo xvn y en

que hasta que llegue el tiempo en que su regia planta ; | pise el hispano suelo... que hasta que el

No había pasado un día desde mi solemne entrada cuando, para que el recuerdo me sirviera de advertencia, alguien se encargó de decirme que sobre aquellas losas habían rodado

Esto viene a corroborar el hecho de que perviva aún hoy en el leonés occidental este diptongo, apesardel gran empuje sufrido porparte de /ue/ que empezó a desplazar a /uo/ a

En junio de 1980, el Departamento de Literatura Española de la Universi- dad de Sevilla, tras consultar con diversos estudiosos del poeta, decidió propo- ner al Claustro de la

E Clamades andaua sienpre sobre el caua- 11o de madera, y en poco tienpo fue tan lexos, que el no sabia en donde estaña; pero el tomo muy gran esfuergo en si, y pensó yendo assi

[r]

SVP, EXECUTIVE CREATIVE DIRECTOR JACK MORTON