SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

52
ESCUELA T ´ ECNICA SUPERIOR DE INGENIEROS INFORM ´ ATICOS UNIVERSIDAD POLIT ´ ECNICA DE MADRID TESIS DE MASTER MASTER EN INTELIGENCIA ARTIFICIAL SISTEMA DE CO-PILOTAJE AUT ´ ONOMO PARA LA NAVEGACI ´ ON EN ENTORNOS DE INTERIOR MEDIANTE MAPAS TOPOL ´ OGICOS VISUALES AUTOR: CARLOS GARC ´ IA HUERTA TUTORES: DAR ´ IO MARAVALL, JAVIER DE LOPE JULIO, 2016

Transcript of SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

Page 1: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

ESCUELA TECNICA SUPERIORDE INGENIEROS INFORMATICOS

UNIVERSIDAD POLITECNICA DE MADRID

TESIS DE MASTER

MASTER EN INTELIGENCIA ARTIFICIAL

SISTEMA DE CO-PILOTAJE AUTONOMOPARA LA NAVEGACION EN ENTORNOS DE

INTERIOR MEDIANTE MAPAS TOPOLOGICOSVISUALES

AUTOR: CARLOS GARCIA HUERTATUTORES: DARIO MARAVALL, JAVIER DE LOPE

JULIO, 2016

Page 2: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

Resumen

Existe una gran variedad de enfoques para resolver el problema de la localizacion yorientacion en el entorno. Muchos enfoques dependen en mayor o menor medida deinformacion externos al usuario. En este trabajo se va a desarrollar un sistema de loca-lizacion basado unicamente en imagenes del entorno. Para ello nos hemos basado en unalgoritmo de reconocimiento y clasificacion de imagenes implementado sobre un mapatopologico. Para el reconocimiento se ha utilizado el algoritmo k-nearest neighbour,utilizando el histograma normalizado de las imagenes como caracterıstica a diferen-ciar. El mapa topologico se ha construido sobre el terreno de pruebas, en este casoel Departamento de Inteligencia Artificial de la Escuela Tecnica Superior de Ingenie-ros Informaticos de la Universidad Politecnica de Madrid. Se podra ver al realizar laspruebas dinamicas que los resultados son bastante satisfactorios.

i

Page 3: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

Abstract

There is a wide variety of approaches to solve the issue of localization and orientationin an environment. Many of these approaches depend to a greater or lesser degree ininformation that is external to the user. In this work a localization system based only inimagenes from the environmente will be developed. To that end we have used a imageclassification algoritm implemented on a topological map. The classification algorithmused is a k-nearest neighbour, using the normalized histogram from the images as thecharacteristic to identify. The topological map has been built from the testing grounds,which is in this case the Departament of Artificial Intelligence of the Escuela TecnicaSuperior de Ingenieros Informaticos from the Universidad Politecnica de Madrid. Itcan be seen that the results shown when performing dynamic testing are promising.

ii

Page 4: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

Indice general

1 Introduccion 1

2 Fundamentos de los mapas topologicos visuales 42.1 Grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.2 Mapas Topologicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

3 Construccion supervisada de mapas topologicos visuales 73.1 Construccion del grafo . . . . . . . . . . . . . . . . . . . . . . . . . . . 73.2 Obtencion de los nodos visuales . . . . . . . . . . . . . . . . . . . . . . 14

4 Diseno y evaluacion del reconocedor de landmarks 164.1 Eleccion de caracterısticas y algoritmo . . . . . . . . . . . . . . . . . . 164.2 Construccion del set de entrenamiento . . . . . . . . . . . . . . . . . . 194.3 Pruebas estaticas del dataset . . . . . . . . . . . . . . . . . . . . . . . . 20

5 Integracion y pruebas operativas dinamicas 245.1 Integracion del dataset y el algoritmo en el mapa . . . . . . . . . . . . 245.2 Pruebas dinamicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

5.2.1 Recorrido 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335.2.2 Recorrido 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345.2.3 Recorrido 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

6 Conclusiones 36

A Portabilidad a Android 38A.1 main.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40A.2 mapa.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44A.3 classcamera.kv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

iii

Page 5: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

Indice de figuras

2.1 Ejemplo de grafo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.2 Ejemplo de mapa topologico. Imagen obtenida de [7] . . . . . . . . . . 6

3.1 Plano simplificado del DIA . . . . . . . . . . . . . . . . . . . . . . . . . 83.2 Zona accesible en lınea recta desde el primer nodo (azul) . . . . . . . . 93.3 Zona accesible tras eliminar retrocesos . . . . . . . . . . . . . . . . . . 93.4 Opciones para colocar el nodo numero 2 . . . . . . . . . . . . . . . . . 103.5 Muestra de la necesidad de un nodo intermedio . . . . . . . . . . . . . 103.6 Eleccion del nodo numero 2 . . . . . . . . . . . . . . . . . . . . . . . . 113.7 Eleccion del nodo numero 4 . . . . . . . . . . . . . . . . . . . . . . . . 113.8 Eleccion del nodo numero 5 . . . . . . . . . . . . . . . . . . . . . . . . 123.9 Mapa completo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.10 Fotografıa de muestra e histograma de: a) Nodos 1 y 2; b) Nodos 3 y 4;

c) Nodos 5 y 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

4.1 Ejemplo de Histograma . . . . . . . . . . . . . . . . . . . . . . . . . . . 174.2 Ejemplo del algoritmo k-nn . . . . . . . . . . . . . . . . . . . . . . . . 184.3 a) Imagen original; b) Imagen en escala de grises; c) Histograma; d)

Histograma normalizado . . . . . . . . . . . . . . . . . . . . . . . . . . 21

5.1 Ejemplo de dataset parcial . . . . . . . . . . . . . . . . . . . . . . . . . 275.2 Diagrama de Flujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305.3 Fotograma de ejemplo. Arriba a la izquierda se ve el nodo actual mientras

que abajo a la derecha se ve el anterior . . . . . . . . . . . . . . . . . . 315.4 Muestra de fotogramas del vıdeo 1 mostrando diferentes nodos . . . . . 335.5 Muestra de fotogramas del vıdeo 2 mostrando diferentes nodos . . . . . 345.6 Falso positivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345.7 Muestra de fotogramas del vıdeo 3 mostrando diferentes nodos . . . . . 355.8 Falso positivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

A.1 Muestra de imagenes de la aplicacion en los distintos nodos . . . . . . . 39

iv

Page 6: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

Indice de cuadros

4.1 Matriz de confusion para k = 1 . . . . . . . . . . . . . . . . . . . . . . 224.2 Matriz de confusion para k = 3 . . . . . . . . . . . . . . . . . . . . . . 234.3 Matriz de confusion para k = 5 . . . . . . . . . . . . . . . . . . . . . . 234.4 Matriz de confusion para k = 7 . . . . . . . . . . . . . . . . . . . . . . 23

v

Page 7: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

Capıtulo 1

Introduccion

La navegacion autonoma es una de las ramas de investigacion la robotica donde se rea-lizan un mayor numero de aportaciones, con el objetivo de conseguir nuevas solucionescon buenos resultados y que sea posible trasladarlas al mundo real.

En la actualidad, se ha desarrollado una gran cantidad de metodos para lograr unalocalizacion y orientacion en un entorno, aprovechando gran cantidad de mecanismos einformacion disponible.

Los sistemas mas precisos para localizacion dependen de que una parte de la infor-macion necesaria para un correcto funcionamiento provenga de estructuras y mecanis-mos externos, tales como el GPS, que nos permite calcular nuestra posicion utilizandotriangulacion por satelite.

No todos esos metodos requieren de la creacion de una infraestructura tan complejacomo el GPS. Algunos tan solo precisan colocar balizas senalizadoras ubicadas en elentorno, cuyo tipo puede variar, utilizando desde codigos de barras para su identificacioncon una camara, hasta emisores de senal Wi-Fi, facilmente captados por un telefonomovil cualquiera.

Sin embargo, su principal ventaja es, a su vez, uno de sus mayores inconvenientes.Esto es, su dependencia de estructuras externas implica que, si por algun motivo esesistema no se encuentra disponible para su uso, la localizacion fallara.

Tambien se puede desarrollar un sistema de localizacion sin utilizar informacionextra recibida externamente, con su correspondiente ventaja de no depender de las

1

Page 8: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

estructuras. Sin embargo, la localizacion es mas complicada, ya que, como norma ge-neral, el entorno es mutable, con lo que resultara mas complicado identificar lugaresparticulares.

La localizacion en un entorno es solo una parte de la navegacion. La segunda partees como desplazarse en el espacio, generando la ruta mas eficaz entre dos puntos.

Para desplazarte en el espacio, el primer paso es conocer con mayor o menor exacti-tud como es la zona por la que uno se intenta desplazar. Esto es, disponer de un mapadel entorno que podamos usar para generar nuestras rutas.

Dependiendo de las necesidades del sistema de desplazamiento, necesitaremos un ti-po de mapa distinto, con mayor o menor precision. Por ejemplo, un mapa para movernosentre ciudades no tendra la misma precision que el plano de una casa.

Ası, la manera de construir rutas sobre dicho mapa tambien variara en funcion dela precision con la que esten representados los obstaculos. Por ejemplo, mientras queen un mapa topologico, el calculo de las mejores rutas es virtualmente trivial, debidoa la gran cantidad de algoritmos existentes, disenar una ruta automaticamente en unmapa con perfecta representacion puede resultar complicado debido a la gran cantidadde opciones disponibles.

La construccion automatica de dicho mapa tampoco es un asunto trivial. Mientrasque un mapa con representacion precisa del entorno se incluyen todos los obstaculos,en un mapa topologico hay que decidir donde colocar cada uno de los nodos del grafosubyacente para conseguir el mejor mapa posible, como se vera en apartados siguientes.

Por ultimo, comentar de los mapas que, aunque practicamente necesarios para lanavegacion, hay que tener en cuenta que, como ya se ha dicho, el entorno es mutable.Pueden encontrarse en cualquier momento escenarios u obstaculos no contemplados enel mapa, con lo que lo ideal es tener el mapa actualizado lo mas posible.

Una vez visto por encima que existen gran cantidad de metodos y opciones paradesplazarse en un entorno, pasamos a detallar el sistema que se desarrollara en esteproyecto.

El trabajo va a consistir en un sistema para ayudar a la navegacion, utilizando comobase un mapa topologico construido sobre un plano del entorno designado. El mapatopologico no se construira automaticamente, sino que se hara de forma supervisada.

Para la parte de identificacion de los landmarks de nuestro mapa, se va a utilizar

2

Page 9: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

reconocimiento directo de las imagenes obtenidas de una camara, sin el uso de ningunotro sistema identificador de las imagenes.

El sistema no ira montado sobre ningun robot, sino que se recorrera el mapa de formamanual, por lo que no es tendra datos de odometrıa precisos que podamos aprovecharpara aumentar la precision del reconocimiento.

El objetivo final sera conseguir recorrer una ruta determinada sobre el terreno demanera que el sistema vaya identificando los distintos lugares de nuestro mapa segunvamos avanzando por el entorno.

En los siguientes capıtulos del documento se procedera a realizar una descripcionmas detallada de los mapas topologicos, ası como explicar la construccion supervisadadel mapa. Posteriormente se explicaran las caracterısticas escogidas para la clasificacionde las imagenes y el algoritmo utilizado, ası como las pruebas estaticas realizadas.Por ultimo, se integrara el algoritmo con el mapa y se probara recorriendo la rutadeterminada.

3

Page 10: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

Capıtulo 2

Fundamentos de los mapastopologicos visuales

2.1 Grafos

En matematicas, un grafo es una representacion de un conjunto de objetos en la quepares de los mismos estan conectados por enlaces. Dichos objetos interconectados serepresentan con abstracciones matematicas llamadas vertices o nodos, siendo los enlacesque los conectan llamados aristas o arcos.

Habitualmente, un grafo se representa con un diagrama tal y como se muestra enla 2.1, donde los cırculos azules son los nodos, mientras que las lıneas que los conectanson las aristas.

Los grafos se pueden utilizar para modelizar muchos tipos de relaciones y procesosen sistemas tanto fısicos y biologicos como sociales o de informacion.

2.2 Mapas Topologicos

Se llama mapa topologico a una representacion de un entorno basada en grafos. Cadanodo de dicho grafo se corresponde con una caracterıstica particular del entorno o land-mark, mientras que los arcos del grafo se corresponderan con las rutas o instrucciones

4

Page 11: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

Figura 2.1: Ejemplo de grafo

de movimiento entre dichos nodos.

Este tipo de mapa reduce el problema de navegacion a encontrar una ruta de unnodo a otro hasta llegar al emplazamiento objetivo. Mediante algoritmos clasicos debusqueda en grafos, como A*[2] o Dijkstra [1], el problema se resuelve rapidamente.

Sin embargo, dado que en un mapa topologico no existe informacion explıcita sobrela geometrıa del entorno o posibles obstaculos, no es posible calcular un camino optimoentre nodo y nodo.

Una gran ventaja de los mapas topologicos para navegacion es que no dependemosde la odometrıa para localizar nuestra posicion en el entorno, si no de la identificacionde los landmarks del entorno.

El unico lugar donde se puede utilizar es en la informacion de los arcos del mapa,que en nuestro caso consiste en orientacion y distancia entre nodos. Como los nodosvecinos estan proximos unos a otros, el posible error en la odometrıa esta acotado y nose acumula al navegar por el entorno.

5

Page 12: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

En la 2.2 tenemos un ejemplo de mapa topologico.

Figura 2.2: Ejemplo de mapa topologico. Imagen obtenida de [7]

6

Page 13: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

Capıtulo 3

Construccion supervisada de mapastopologicos visuales

La base del nuestro sistema de localizacion va a ser un mapa topologico. Por tanto, elprimer paso en el desarrollo va a ser la construccion de dicho mapa. La construcciondel mapa no se va a realizar automaticamente, sino que lo vamos a realizar de formasupervisada basandonos en un plano de la zona en la que se va a navegar.

Podemos considerar que el desarrollo del mapa consta de dos partes diferenciadas.En un primer lugar se construira el grafo base que contendra los posibles lugares y rutasde nuestro mapa. Una vez tengamos un grafo que se adecue a nuestras necesidades y anuestro plano, se procedera a adquirir los datos visuales de los nodos del grafo que seha acordado.

3.1 Construccion del grafo

En este trabajo la zona en la que se va a navegar es la planta superior del Departamentode Inteligencia Artificial. Dentro de dicho departamento, el objetivo es conseguir navegaruna ruta partiendo del ascensor localizado inmediatamente a la salida del departamentohasta conseguir llegar al despacho numero 2207.

En la Figura 3.1 se puede ver un plano simplificado de nuestra zona a navegar. En elplano se pueden ver dos cırculos representando el punto de salida, el ascensor, y nuestroobjetivo a alcanzar, el despacho 2207, en verde y rojo, respectivamente. Todas las zonas

7

Page 14: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

marcadas en negro son obstaculos inamovibles, paredes, basicamente. Las zonas grisesse han marcado como tales debido a que no tienen interes de cara a nuestra ruta.

Figura 3.1: Plano simplificado del DIA

Para comenzar con la creacion de nuestro plano, empezaremos designando nodossobre el mismo, de tal manera que consigamos que nodos adyacentes tengan entre losmismos visibilidad en lınea recta. Esto es debido a que los enlaces entre nuestros nodosestaran definidos tan solo por una orientacion y una distancia.

Como primer nodo podemos tomar facilmente el punto de inicio de nuestra ruta.Como el principio y el final de la misma van a ser parte de ella, podemos considerarque ya tenemos dos nodos fijos, el ascensor y el despacho.

Para continuar escogiendo lugares en los que emplazar nuestros nodos, vamos aver, partiendo del primero que tenemos, hasta donde se puede llegar en lınea recta sinencontrarnos con ningun obstaculo.

8

Page 15: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

Figura 3.2: Zona accesible en lınea rectadesde el primer nodo (azul)

Podemos comprobar en la figura 3.2que se ha coloreado una aproximacion delas posibles areas disponibles para colo-car nuestro segundo nodo. Partiendo deaquı tenemos varias posibilidades para sucolocacion.

Hay que tener en cuenta que el obje-tivo final va a ser alcanzar el nodo final,es decir, el despacho. Debido a esto, sepueden eliminar las zonas en las que, sicolocasemos un nodo, nos llevarıa en sen-tido contrario a nuestro objetivo.

Esto se puede hacer de forma sencilladebido a que no se automatiza la cons-truccion de nuestro grafo, y se puede apre-ciar visualmente y con facilidad si exten-der el grafo en determinadas direcciones

nos ayuda o no a alcanzar nuestra meta. En el caso de que se quisiera automatizar laconstruccion, esto no serıa tan trivial.

Figura 3.3: Zona accesible tras eliminar re-trocesos

Visto esto, la zona que nos queda sepuede comprobar en la figura 3.3. Ası, te-nemos varias posibilidades para su colo-cacion. Se pueden ver varios ejemplos enla figura 3.4.

Realmente, no hay ninguna posibili-dad que sea incorrecta de por sı. Cual-quiera de las opciones puede dar lugar aun mapa correcto y funcional. En este ca-so, nos hemos decantado por la opcion 3,por varias razones.

En primer lugar, es el nodo queesta mas proximo al final de nuestra ru-ta. Un dato relevante, sin duda, aunquemuy dependiente del posicionamiento delos obstaculos y de la ruta a seguir. Ennuestro caso es un nodo muy beneficioso, aunque se puede dar caso que el nodo mas

9

Page 16: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

cercano al objetivo no sea siempre el mejor.

Figura 3.4: Opciones para colocar el no-do numero 2

En segundo lugar, debido a la configura-cion del mapa, al colocar un nodo directamen-te en dicha posicion, nos ahorramos un nodoque es necesario en las otras configuraciones.Como se puede ver en la figura 3.5, si quere-mos continuar nuestra ruta es necesario colo-car un nodo en esta posicion, o muy similara la misma, para cualquier configuracion delmapa.

Figura 3.5: Muestra de la necesidad de unnodo intermedio

Por ultimo, saliendo un poco de la parte estrictamente del grafo, los otros dos nodosse encuentran en posiciones donde van a resultar afectados por la variacion de luznatural, mientras que aquı no se da ese caso, o, al menos, no de forma tan acentuada,lo que facilita el proceso posterior de clasificacion.

Una vez decidida la posicion de nuestro nodo, procederemos a colocar el siguiente.Partiendo desde esta ultima posicion, se puede ver que el nodo se puede colocar encualquier punto a lo largo del pasillo.

Esta decision es mas sencilla que el caso anterior, ya que no existen lugares deinteres de nuestra ruta en posiciones intermedias. Por tanto, el lugar mas beneficioso

10

Page 17: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

para nuestro nodo es la esquina, como se puede ver en la figura 3.6.

Para colocar nuestro siguiente nodo, tenemos un pasillo mas largo que en el casoanterior. Sin embargo, de la misma forma que en el caso anterior, no es necesario tenernodos intermedios a lo largo del pasillo, porque nuestra ruta no tiene puntos de interes.

Figura 3.6: Eleccion del nodo numero 2

En el caso de que en algun momento quisiera-mos que con nuestro mapa se acceda a los des-pachos laterales, se colocarıan nodos en las po-siciones necesarias.

Sin embargo, en este caso no podemos rea-lizar la misma operacion que en el caso ante-rior, colocar el nodo al final del pasillo, dadoque es un callejon sin salida. Por tanto, colo-caremos el nodo en la interseccion de los dospasillos, como se muestra en la figura 3.7.

El siguiente nodo es similar al del pasillocorto. La mejor posicion que tenemos es el fi-nal del pasillo 3.8.

Una vez aquı, lo unico que queda es unirnuestro ultimo nodo con el final de nuestraruta para completar nuestro mapa, como sepuede ver en la figura 3.9.

En nuestro mapa completo se puede apre-ciar que la mayorıa de los nodos se encuen-tran en esquinas o intersecciones. Como ya seha mencionado, los nodos estan todos enlazados de la misma forma, por lıneas rectas,variando solo la longitud de las mismas, es decir, la distancia entre los nodos. Dado

Figura 3.7: Eleccion del nodo numero 4

11

Page 18: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

que los pasillos del departamento son rectos, colocar los nodos en las esquinas nos per-mite conseguir las condiciones de visibilidad entre nodos de las que hemos habladoanteriormente.

Figura 3.8: Eleccion del nodo numero 5

A su vez, como ya hemos mencionado, losdespachos laterales de los pasillos no son re-levantes para nuestra ruta, luego no se hancolocado nodos a lo largo del pasillo.

Hay que tener en cuenta que este grafose ha construido basandose en un plano en elque solo se encuentran marcados los obstacu-los fijos del terreno. No se estan contemplandoelementos tales como armarios, mesas, sillaso aparatos electronicos que puedan interferircon la distribucion inicial de nuestro mapa.Ası mismo, tampoco tenemos otras operacio-nes que puedan afectar, tales como obras quecierren parte del recorrido.

En el caso de que no se tenga informacionsobre estos obstaculos dinamicos, habrıa quecomprobar sobre el terreno si afectan al grafoconstruido y, en su caso, reconstruir las partesdel grafo que esten afectadas.

Esto es uno de los principales problemasque se pueden encontrar al construir y utilizarel grafo, dado que la edicion del mapa a tiemporeal es virtualmente imposible.

Por suerte para nuestro caso y como sepodra comprobar en el apartado siguiente detoma de imagenes, no ha resultado necesarioreconstruir el mapa, ya que no se han encon-trado nuevos obstaculos.

12

Page 19: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

Figura 3.9: Mapa completo

13

Page 20: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

3.2 Obtencion de los nodos visuales

Una vez tengamos un grafo que podamos considerar valido, el siguiente paso consis-tira en acceder al terreno para tomar imagenes de cada uno de los nodos a evaluary comprobar si, independientemente del posicionamiento sobre el terreno, ya definidoen el apartado anterior, los nodos designados son validos de cara al reconocimiento denuestra posicion.

Para ello, tenemos que ver si las imagenes de los nodos son facilmente reconociblesde nodo a nodo. Esto puede ser trivial para un observador humano, cuya capacidad dereconocimiento y diferenciacion de objetos es muy elevada. Sin embargo, es una tareamucho mas difıcil y compleja realizar reconocimientos mediante computadora.

Como ya se explicara con mayor detalle en capıtulos siguientes, el elemento dis-criminante que se va a utilizar en principio para nuestro reconocimiento va a ser elhistograma de las imagenes.

Ası pues, el primer paso consiste en tomar una imagen representativa de cada nodode nuestro mapa, de la que posteriormente se extraera el histograma para comprobarvisualmente la diferencia entre las imagenes.

Las imagenes representativas junto con sus histogramas se pueden ver en la figura3.10. Se puede comprobar que en general los histogramas son bastante diferentes entresı. Los picos y los valles de color estan situados en posiciones distintas en cada uno deellos.

Esto quiere decir que, a priori, nuestros nodos pueden resultar completamente vali-dos para realizar la localizacion. Sin embargo, aun sera necesario un mayor numero depruebas junto con el algoritmo a utilizar para tener la seguridad de que las imagenessean completamente utiles. Estas pruebas se detallaran en el capıtulo siguiente. Enel caso de que, por el motivo que sea, nos encontrasemos que dos o mas de nuestrasmuestras fueran muy similares, tendrıamos varias opciones a seguir.

Una primera idea serıa rehacer parte del mapa de tal forma que los nodos similaresdesaparezcan. Esta puede ser la opcion mas sencilla si no queremos variar el discrimi-nante o el algoritmo utilizado para la localizacion de los nodos.

Sin embargo, que se pueda realizar esta opcion depende en gran medida del terrenosobre el que se construye nuestro mapa. Si hay espacio suficiente para situar o reorientarnuevos nodos, no habra mucho problema. En nuestro caso, por ejemplo, gran parte del

14

Page 21: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

Figura 3.10: Fotografıa de muestra e histograma de: a) Nodos 1 y 2; b) Nodos 3 y 4; c)Nodos 5 y 6

mapa es una sucesion de pasillos estrechos, donde no hay demasiado lugar para recolocarnodos.

Una segunda opcion podrıa ser variar el elemento a usar para reconocer las imagenes.Basicamente, no utilizar el histograma. Utilizar por ejemplo, reconocimiento de objetosen la imagen.

Aquı el problema se lo lleva la parte computacional de la localizacion, ya que proba-blemente se deberıa cambiar el algoritmo a utilizar, siendo este nuevo algoritmo, muyprobablemente, mas complejo que otros que utilicen histograma.

De todos modos, como ya se ha dicho, en nuestro caso en principio no tenemos esosproblemas, ya que los histogramas estan lo suficientemente diferenciados. Por tanto, elsiguiente paso sera la parte de uso del algoritmo y comprobacion de si, efectivamente,nuestras imagenes son validas.

15

Page 22: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

Capıtulo 4

Diseno y evaluacion del reconocedorde landmarks

4.1 Eleccion de caracterısticas y algoritmo

Ya tenemos nuestro mapa topologico construido y tenemos una muestra visual de losnodos que consideramos que, en principio, puede funcionar adecuadamente de caraal reconocimiento. Ası, el siguiente paso consistira en definir las caracterısticas de lasimagenes que utilizaremos, ası como el algoritmo a usar, realizando, por supuesto, laspruebas de eficiencia correspondientes.

Estamos utilizando como base para reconocer nuestra posicion una imagen directade cada nodo, sin apoyos externos. Ası pues, deberemos elegir que caracterısticas denuestra imagen nos pueden servir de mejor manera para realizar la identificacion.

La primera y mas sencilla opcion es utilizar el histograma de la imagen. El histo-grama de una imagen es basicamente una representacion de la distribucion de tonos decolor en una imagen digital, mostrando el numero de pıxeles de la imagen correspon-dientes a cada tono de color. De esta manera podemos comprobar la distribucion detonos de un solo vistazo.

Dado que una imagen suele tener varios tonos de color, en general podemos generarvarios histogramas distintos para una sola imagen, dependiendo del color que usemos.Por ejemplo, en una imagen en formato RGB podemos encontrar tres histogramas, rojo,verde y azul.

16

Page 23: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

Para nuestro caso, vamos a simplificar mas el problema. En lugar de utilizar lasimagenes tal y como se obtengan de la camara, en primer lugar se transformaran a escalade grises. De esta manera obtendremos un solo histograma con 256 valores distintosdependiendo de la intensidad del gris.

Podemos ver en la figura 4.1 un ejemplo de histograma. El eje horizontal de la imagenrepresenta la variacion de tono, mientras que el eje vertical representa el numero depıxeles en cada tono. El tono aumenta en luminosidad de izquierda a derecha, partiendodel color negro al blanco. Ası, una imagen oscura contendra la mayorıa de los datosen la parte izquierda del histograma, mientras que una imagen clara los tendra a laderecha.

Figura 4.1: Ejemplo de Histograma

Sin embargo, aun se pueden encon-trar algunos problemas al comparar his-togramas. Puede darse el caso de que en-contremos dos imagenes que necesitemoscomparar y que tengan distinta resolu-cion. Dado que el histograma trabaja connumeros en bruto, no se pueden compa-rar dos imagenes con distinto numero depıxeles.

Para paliar este problema, en lugardel histograma clasico vamos a utilizarel llamado histograma normalizado. Pa-ra ello, una vez tengamos nuestro histo-grama estandar, dividiremos el numero depıxeles de cada valor por el numero total de pıxeles de la imagen. De esta manera, es-taremos trabajando con proporciones en lugar de valores absolutos, eliminando en granmedida el problema de las diferencias de resolucion.

Como se puede ver en la figura 3.10, a simple vista los histogramas de las image-nes de muestra de nuestros nodos se diferencian bastante entre sı. Ası, tenemos queen un primer momento utilizaremos como caracterıstica discriminante el histogramanormalizado de nuestras imagenes.

El siguiente paso es seleccionar un algoritmo que pueda trabajar con los valores denuestros histogramas para identificar las imagenes.

Al igual que para el caso de la eleccion de caracterısticas, la idea de partida vaa ser un algoritmo simple. Para comenzar, utilizaremos el algoritmo k-nn, que es un

17

Page 24: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

algoritmo facil de disenar y bastante eficiente, con lo que resulta un buen punto departida antes de meterse con algoritmos mas complejos.

El algoritmo de clasificacion k-nearest neighbour, o k-nn, es un algoritmo cuyaentrada consiste en los k ejemplos de entrenamiento mas proximos en el espacio decaracterısticas y cuya salida es una asignacion de pertenencia a una clase. Un objeto seasigna a la clase mas comun entre sus k vecinos mas proximos. Si k=1, directamentese asigna a la clase del vecino mas proximo.

Podemos ver un ejemplo en la Figura 4.2. Tenemos que clasificar el cırculo verde enuna de las dos clases posibles, azules o rojos. Utilizando k = 3 vemos que se clasificaen la clase roja, porque hay dos en el cırculo interno, por uno solo de la otra clase. Sinembargo, al utilizar k = 5, se asigna a la clase contraria, debido a que ahora hay masobjetos de la misma.

Figura 4.2: Ejemplo del algoritmo k-nn

Como ya se ha comentado, el k-nn esuno de los algoritmos de clasificacion massimples, soliendo ser un buen punto departida para un trabajo de clasificacionen el que no se conoce la distribucion delos datos [6].

La eficiencia del k-nn depende basica-mente de la calidad y el tamano del setde ejemplos que se encuentran en su me-moria. Por ello, el conjunto de elementosinicial debe tener un gran tamano paraque el algoritmo resulte efectivo.

Ademas del tamano del dataset, estetiene que estar equilibrado. Esto es, cadauna de las clases tiene que estar repre-sentada por aproximadamente el mismonumero de elementos para que los resul-tados sean lo mas precisos posibles.

Si una vez realizadas las pruebas con el k-nn comprobamos que los resultados noson todo lo precisos que se puede esperar, veremos a ver si resulta necesario cambiarde algoritmo.

Para este sistema hemos utilizado el algoritmo k-nn implementado en la librerıa de

18

Page 25: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

vision computacional y aprendizaje automatico de OpenCV (TODO:Ref).

Una vez tenemos escogidas tanto las caracterısticas a utilizar de nuestras imagenescomo el algoritmo que se va a emplear, el siguiente paso es comprobar si la eleccion escorrecta, es decir, realizar pruebas para comprobar la eficacia del metodo.

4.2 Construccion del set de entrenamiento

El primer paso para probar la eficiencia de nuestro algoritmo es construir un set deentrenamiento con imagenes de los nodos a identificar. Como ya hemos comentado, elk-nn precisa de un set de entrenamiento de gran tamano para obtener buenos resultados.

Para construir dicho set de entrenamiento, es necesario tomar manualmente grancantidad de imagenes de los diferentes nodos de nuestro mapa. No solo eso, sino que,para mejorar la posible identificacion, es importante que el angulo de la camara no semantenga fijo, para aumentar la variacion de imagenes dentro de un mismo modo y quesea mas sencillo identificar el lugar sin necesidad de colocarse en una posicion precisa.

Teniendo en cuenta que para esta situacion la importancia no es tanto la posicionde los objetos de la imagen si no la distribucion de las imagenes, se ha procedido autilizar el siguiente metodo para facilitar la toma de imagenes.

Estando en la posicion en la que tenemos un nodo en nuestro mapa, procederemosa grabar un vıdeo de varios segundos, realizando ligeros movimientos de camara paraabarcar un mayor plano de la escena.

Una vez grabados los vıdeos necesarios, procederemos a extraer los fotogramas delos mismos, los cuales utilizaremos como imagenes para nuestro dataset. Dado quees probable que cada vıdeo tenga diferente numero de imagenes, con el fin de tenerequilibrio en la representacion de las clases, deberemos eliminar imagenes hasta tenerel mismo numero de cada nodo.

Hay que tener en cuenta que, al grabar el vıdeo, el movimiento de la camara provocaque la mayorıa de las fotos obtenidas resulten borrosas. En nuestro caso, las caracterısti-cas que extraemos de nuestra imagen no dependen de los pıxeles individuales, si no delas proporciones de color de las imagenes, que se van a mantener sin mucha variacionestando la foto borrosa o no.

19

Page 26: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

Para nuestro caso, tras extraer todos los fotogramas, tendremos 600 imagenes pornodo en nuestro dataset, en principio suficiente para nuestras necesidades.

El siguiente paso consistira en extraer nuestro discriminante, el histograma, de nues-tro set de imagenes. Para ello, el primer paso sera convertir nuestra imagen a escala degrises, transformando cada pıxel de la imagen en un valor entre 0 y 255, en funcion delbalance de colores RGB que contenga cada uno de los mismos.

A continuacion contaremos el numero de pıxeles de cada valor que encontramosen nuestra imagen modificada. Agrupando cada valor obtendremos un listado de 256valores, que constituyen el numero de pıxeles de cada color en la imagen. Este listadoes nuestro histograma inicial de la imagen.

Como ya hemos comentado, de cara a eliminar en la medida de lo posible las diferen-cias en la resolucion de las imagenes tomadas, no utilizaremos el histograma directamen-te tal y como lo hemos obtenido, sino que procederemos a realizar una normalizaciondel mismo.

Una vez hecho esto, tendremos nuestro set de entrenamiento preparado para realizarlas pruebas con el algoritmo. Un esquema de las etapas del proceso por las que pasa laimagen se puede ver en la figura 4.3.

Todo este proceso, extraccion de fotogramas, conversion a escala de grises y obten-cion del histograma se a realizado utilizando la librerıa OpenCV, excepto la normali-zacion, que se ha hecho de forma manual.

Una vez tenemos nuestro dataset de caracterısticas preparado, el siguiente paso escomprobar si obtenemos buenos resultados con nuestro algoritmo de clasificacion.

4.3 Pruebas estaticas del dataset

Ahora tenemos que ver si, efectivamente, nuestro algoritmo consigue buenos resultadosde nuestro dataset de entrenamiento.

Para comprobar la eficiencia de nuestro algoritmo, procederemos a realizar un pro-cedimiento de validacion cruzada denominado leave-one-out. Este proceso consiste enutilizar como set de entrenamiento todas las imagenes de las que dispone nuestro data-set excepto una. Posteriormente esa imagen se clasificara utilizando el k-nn y el resto

20

Page 27: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

Figura 4.3: a) Imagen original; b) Imagen en escala de grises; c) Histograma; d) Histo-grama normalizado

de nuestro dataset.

Este procedimiento se repite con todas las imagenes de nuestro conjunto de entre-namiento. Despues se procedera a contar el numero de aciertos obtenidos durante laclasificacion. Dividiendo ese resultado por el numero total de imagenes obtendremos unındice que nos dira la eficiencia global del dataset.

Un segundo conjunto de resultados consistira en la llamada matriz de confusion. Estoes una tabla de resultados que indica las imagenes de cada nodo que se han clasificadoerroneamente como nodos distintos. Esta tabla puede resultar util para comprobar enque nodos se confunde el clasificador en mayor medida.

21

Page 28: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

Dado que en el k-nn se puede variar el valor de k para obtener distintos grados deseparacion entre clases, se ha repetido el procedimiento con valores de k impares desde1 hasta 7.

Para calcular el valor de eficiencia, se ha dividido el numero de aciertos durante laprueba por el numero total de imagenes del conjunto. Los resultados varıan en funciondel valor de k, ya que la diferenciacion entre clases disminuira al aumentar este valor.

Ası obtenemos los siguentes resultados:

• k = 1. Resultado 100 % de aciertos

• k = 3. Resultado 99.97 % de aciertos (1 fallo)

• k = 5. Resultado 99.69 % de aciertos (11 fallos)

• k = 7. Resultado 99.67 % de aciertos (12 fallos)

A continuacion se muestran las diferentes matrices de confusion obtenidas para losdistintos valores de k.

Esperado\Obtenido (No Imagenes) Nodo 1 Nodo 2 Nodo 3 Nodo 4 Nodo 5 Nodo 6Nodo 1 600 0 0 0 0 0Nodo 2 0 600 0 0 0 0Nodo 3 0 0 600 0 0 0Nodo 4 0 0 0 600 0 0Nodo 5 0 0 0 0 600 0Nodo 6 0 0 0 0 0 600

Cuadro 4.1: Matriz de confusion para k = 1

Se puede ver que con valores superiores de k encontramos mayor confusion en elnodo numero 2.

Como ya hemos comentado anteriormente, el algoritmo k-nn utilizado es el que seencuentra implementado en la librerıa OpenCV.

Dados los buenos resultados obtenidos en las pruebas estaticas, en principio noconsideraremos necesario modificar las caracterısticas escogidas de nuestras imagenesni el algoritmo elegido, con lo que procederemos a integrar el sistema de identificacioncon el mapa topologico y a realizar pruebas dinamicas del sistema.

22

Page 29: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

Esperado\Obtenido (No Imagenes) Nodo 1 Nodo 2 Nodo 3 Nodo 4 Nodo 5 Nodo 6Nodo 1 600 1 0 0 0 0Nodo 2 0 599 0 0 0 0Nodo 3 0 0 600 0 0 0Nodo 4 0 0 0 600 0 0Nodo 5 0 0 0 0 600 0Nodo 6 0 0 0 0 0 600

Cuadro 4.2: Matriz de confusion para k = 3

Esperado\Obtenido (No Imagenes) Nodo 1 Nodo 2 Nodo 3 Nodo 4 Nodo 5 Nodo 6Nodo 1 600 7 0 0 0 0Nodo 2 0 589 0 0 0 0Nodo 3 0 0 600 0 0 0Nodo 4 0 4 0 600 0 0Nodo 5 0 0 0 0 600 0Nodo 6 0 0 0 0 0 600

Cuadro 4.3: Matriz de confusion para k = 5

Esperado\Obtenido (No Imagenes) Nodo 1 Nodo 2 Nodo 3 Nodo 4 Nodo 5 Nodo 6Nodo 1 600 8 0 0 0 0Nodo 2 0 588 0 0 0 0Nodo 3 0 0 600 0 0 0Nodo 4 0 4 0 600 0 0Nodo 5 0 0 0 0 600 0Nodo 6 0 0 0 0 0 600

Cuadro 4.4: Matriz de confusion para k = 7

23

Page 30: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

Capıtulo 5

Integracion y pruebas operativasdinamicas

5.1 Integracion del dataset y el algoritmo en el ma-

pa

Como se ha visto en los apartados anteriores, ya tenemos un conjunto de entrenamientoconstruido y hemos decidido que algoritmo vamos a utilizar. Ası, nuestro siguiente pasoes combinar nuestro dataset con el mapa que construimos anteriormente y decidir comose va a utilizar el algoritmo para el reconocimiento.

El primer paso es trasladar el dataset al mapa. Esto se hace de forma sencilla,puesto a que cada uno de los nodos de nuestro mapa le correspondera un solo grupo deimagenes de nuestro conjunto de datos. Ası, interiormente, cada nodo de nuestro grafotendra asignado una serie de datos a los que accedera el algoritmo posteriormente.

Una vez tenemos los datos distribuidos en nuestro mapa, lo siguiente que hay quedecidir es como utilizar el algoritmo para la identificacion de nuestra posicion. Para ello,primero vamos a describir de forma breve como deberıa ser el comportamiento final delsistema.

El programa estara recibiendo imagenes del exterior en todo momento. Todas esasimagenes iran pasando por el algoritmo, el cual las identificara y clasificara en funcionde en que nodo estemos, o las ignorara si consideramos que no estamos en ninguno de

24

Page 31: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

los puntos caracterısticos de nuestro mapa.

Eso es, a grandes rasgos, el comportamiento basico del sistema. Ahora tenemos quever como utilizamos el algoritmo de clasificacion para alcanzar un comportamiento lomas similar posible. Para ello, vamos a diferenciar dos situaciones primarias.

En primer lugar, al realizar el arranque del sistema, tenemos que identificar enque nodo nos encontramos dada una imagen inicial. Dado que no tenemos un nodoinicial asignado por el que sepamos que vayamos a empezar en todas las situaciones,tenemos que decidir cual es, a priori, la mejor manera de identificar nuestro primernodo.

En nuestro caso, lo mas sencillo sera aplicar el algoritmo sobre todo el conjuntode datos. Es decir, mirar todos los nodos del mapa y escoger el que mas se parece anuestra situacion inicial. En el caso de que el mapa fuera de gran tamano, serıa muchomas difıcil encontrar nuestro nodo inicial, debido a la cantidad de datos y a la mayorprobabilidad de encontrar nodos similares.

Suponiendo que se diera un caso en el que tuvieramos un mapa de grandes dimen-siones en el que por algun motivo no resultase viable pasar el algoritmo a todos losnodos, una opcion para resolverlo serıa dividir el mapa en grupos de nodos lo masdiferentes posibles. Una vez hecho esto, pasar el algoritmo a cada uno de los gruposindividualmente.

Aun realizando estas operaciones puede suceder que se encuentren nodos similaresde un grupo a otro. En ese caso, se pueden crear varias rutas paralelas partiendo de losdiferentes nodos, e ir eliminando opciones segun alcancemos nuevos nodos.

De esta forma tenemos localizado nuestro nodo inicial. El siguiente paso sera co-menzar la clasificacion nodo a nodo siguiendo la ruta.

Como ya se ha comentado antes, el sistema va a estar recibiendo imagenes en todomomento. Esto quiere decir que nuestro algoritmo va a tratar de clasificar todos losfotogramas que reciba, incluyendo los correspondientes al transito entre los diferentesnodos de nuestro mapa. Como los fotogramas obtenidos del movimiento entre nodos nose encuentran en nuestro conjunto de datos, deberemos evitar en la medida de lo posibleque sean clasificados como pertenecientes a algun nodo. Para ello se han aplicado variasmedidas.

En primer lugar, vamos a acotar la distancia maxima para que se considere que unaimagen pertenece a un nodo. La implementacion del k-nn devuelve una serie de datos

25

Page 32: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

al realizar una clasificacion: una lista de la pertenencia a las clases de los vecinos masproximos, tan larga como el valor de la k, la distancia correspondiente a cada vecino y,obviamente, la pertenencia de la imagen de entrada.

Es la medida de distancia la que nos servira para mejorar la precision de la clasi-ficacion. Esas distancias miden, esencialmente, la diferencia entre el histograma de laimagen a clasificar y el de los vecinos.

Aprovechando dicha medida, podemos poner una cota a las distancias al nodo. Deesta manera utilizamos la distancia para comprobar la pertenencia real a la clase. Estoes, consideramos que estamos realmente en el nodo correspondiente si la distancia alvecino mas proximo es menor que una cota determinada.

Esta tecnica tiene buenos resultados en general. Sin embargo, aun se pueden en-contrar zonas de transito cuya distancia al nodo clasificado es menor que en el casode algunos puntos de referencia del mapa, con lo que aun se puede mejorar. Ası, po-demos determinar una cota de proximidad variable dependiendo del nodo que estemosidentificando.

Como ya hemos comentado anteriormente, la opcion mas viable para identificar elprimer nodo sin datos anteriores es pasar el algoritmo al mapa completo. Sin embargo,una vez que estamos en ruta, podemos utilizar nuestra posicion actual para mejorar lalocalizacion local.

En lugar de utilizar el dataset completo cada vez que queramos identificar nuestraposicion, podemos crear un conjunto de datos parcial que englobe tan solo el ultimonodo en el que nos hemos localizado y los nodos adyacentes al mismo y utilizar elalgoritmo solo con esos nodos.

De esta forma eliminaremos ruido provocado por los nodos que esten mas alejadosde nuestra posicion actual y a los que no se puede llegar en, digamos, un paso. Cadavez que alcancemos un nuevo nodo, construiremos un nuevo conjunto parcial utilizandola misma tecnica.

Se puede apreciar visualmente en la figura 5.1. En a) Nos encontramos en el Nodo2, con lo que nuestro dataset consiste en las imagenes del Nodo 2 (Rojo) y las de losadyacentes, 1 y 3 (Amarillo). En b) Pasamos al Nodo 3 y realizamos el mismo procesocon los nodos 2 y 4.

Sin embargo, esta forma de proceder no esta exenta de fallos. Puede darse el casoque, al recorrer nuestra ruta, nos saltamos un nodo. Si eso sucediese, nuestro sistema

26

Page 33: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

Figura 5.1: Ejemplo de dataset parcial

no actualizarıa el conjunto de datos parcial, y continuarıa utilizando el que ya tiene,que ya no se corresponde con nuestra posicion actual en el mapa.

Para intentar resolver este problema, se puede aumentar el radio de nuestro conjuntoparcial. Ası, en lugar de almacenar solo los nodos adyacentes, almacenarıamos tambienlos nodos adyacentes a estos. Hay que tener cuidado de no aumentar demasiado el radioporque, dependiendo de la estructura del mapa, puede eliminar el beneficio de tener undataset parcial.

Tambien podemos pasar el algoritmo a datasets de distintos radios al mismo tiem-po, para obtener el mejor resultado con el mas pequeno, pero tener la posibilidad deidentificar nodos externos con el de mayor tamano si nos salimos del pequeno.

Por ultimo, una posible tecnica es utilizar el tiempo en el que estamos en cada nodocomo forma de identificacion. Es decir, si las ultimas n imagenes que ha recibido el

27

Page 34: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

sistema se corresponden con un nodo determinada, podemos considerar que estamosen dicho nodo. Esto es factible debido que en momentos de transito entre nodos elcomportamiento mas comun es la variacion del contenido de las imagenes de formarelativamente rapida.

A su vez, como dependemos del cambio rapido de la imagen cuando estamos enmovimiento, se pueden recibir falsos positivos si la camara se detiene en algun puntodurante un tiempo determinado. Y en caso contrario, se puede dar el caso que la camaraapenas se detenga y el nodo no resulte identificado correctamente.

En resumen, este metodo no resulta tan fiable debido a que depende mas del movi-miento de la camara que de las imagenes recibidas por la misma.

Una vez dicho todo esto, comentar que en el mapa estan integradas la distancia yla orientacion necesarias para llegar de un nodo a otro. Estos datos realmente no sirvende cara a la identificacion de imagenes, pero es informacion que puede usar el sistemade movimiento, bien una persona o un robot, para colocar la camara en una posicionque contribuya a la identificacion correcta de las imagenes.

Ya teniendo el conjunto de datos y el algoritmo integrados con el mapa, el siguientepaso es realizar las pruebas en el terreno para comprobar el correcto funcionamientodel sistema.

5.2 Pruebas dinamicas

Como ya se ha dicho, el siguiente paso del sistema es realizar pruebas a tiempo realpara comprobar su funcionamiento.

Debido a que la zona en la que vamos a navegar no es accesible en todo momento,se ha optado por realizar la identificacion de los nodos sobre un vıdeo grabado con lacamara con la que se tomaron las imagenes del conjunto de entrenamiento.

Este enfoque tiene sus ventajas y sus inconvenientes. En primer lugar, al ser el vıdeoreproducible las veces que sea necesario, tenemos una base sobre la que trabajar quese va a comportar de la misma forma todas las veces, con lo que resultara mas sencilloidentificar los principales problemas que podemos encontrar en la clasificacion.

A su vez, la falta de variacion en los ejemplos puede dificultar la localizacion de

28

Page 35: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

algunos problemas que podrıan haberse encontrado con mayor facilidad trabajandodirectamente a tiempo real.

Tambien, dado que no se puede mover la camara como en el caso de pruebas atiempo real, perdemos la posibilidad de enfocar si no tenemos la posicion exacta delnodo.

Sin embargo, a pesar de las desventajas, el vıdeo permite la ejecucion de pruebas ycambio de parametros de una forma mucho mas veloz que lo que permitirıan las pruebasa tiempo real.

A continuacion, vamos a describir el comportamiento del sistema para cada paso deejecucion. En cada iteracion, el sistema extraera un fotograma del vıdeo y obtendra co-mo se ha descrito anteriormente el histograma normalizado de nuestra imagen. Una vezhecho esto, tendremos dos situaciones dependiendo de si es el primer nodo a identificaro no.

Si nos encontramos al principio de la ejecucion, y no tenemos disponible el ultimonodo por el que hemos pasado, aplicaremos el algoritmo sobre todos los nodos del mapa,clasificando ası nuestra primera imagen en una clase.

Si tenemos disponible el ultimo nodo por el que hemos pasado, en lugar de aplicarel algoritmo a todo el mapa, lo aplicaremos al conjunto parcial correspondiente a esenodo.

Una vez realizada la clasificacion, se comprobara la distancia a la clase obtenida porel algoritmo con la cota de distancia aplicada al algoritmo. En caso de que la distanciasea menor, el nodo identificado se almacenara como ultimo nodo visitado y se creara unconjunto parcial centrado en dicho nodo para su uso en la siguiente iteracion.

En caso de que no alcance la cota de distancia maxima, ignoraremos el resultado dela clasificacion y pasaremos a la siguiente iteracion del sistema.

A continuacion, se incluye un fragmento sencillo de pseudocodigo para ilustrar elfuncionamiento del algoritmo, junto con el diagrama de flujo correspondiente en la fi-gura 5.2.

29

Page 36: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

Algorithm 1 Procedimiento

Parametro externo mapaParametro externo thresholdParametro externo KConjunto Clasificacion← mapa.nodosnodo actual← Noneknn.train(K,Conjunto Clasificacion)while Quedanfotogramas do

image← fotograma siguientehist← histograma norm(image)nodo, distancia← knn.classify(hist)if distancia < threshold then

nodo actual← nodoConjunto Clasificacion← nodo actual.vecinos

Figura 5.2: Diagrama de Flujo

Independientemente del resultado, elfotograma se reproducira por pantalla. Encada fotograma se podra observar en todomomento el nombre del ultimo nodo porel que hemos pasado abajo a la derecha.En la esquina superior izquierda se puedever el nodo en el que nos encontramos enese fotograma.

Como se puede comprender, esta eti-queta no aparece en la mayor parte delvıdeo, dado que en la mayor parte de losfotogramas nos encontramos en transitoentre nodos. En la Figura 5.3 tenemos unfotograma de ejemplo.

A continuacion, mostraremos variosfotogramas correspondientes a varios re-corridos de ejemplo. Aunque resulta com-plicado la presentacion de resultados depruebas de vıdeo en un documento de tex-to, podemos ver como va identificando losdistintos nodos segun se van alcanzandolos mismos.

30

Page 37: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

Figura 5.3: Fotograma de ejemplo. Arriba a la izquierda se ve el nodo actual mientrasque abajo a la derecha se ve el anterior

Para las pruebas se han prueba se hanutilizado algunas de las medidas mencionadas en el apartado anterior, tal y como se havisto en la descripcion del funcionamiento del sistema. A continuacion describiremoslos parametros mencionados.

En primer lugar, para el algoritmo k-nn en si se ha utilizado un valor de k=1. Esto es,solo hemos tenido en cuenta el vecino mas proximo. Esto se ha decidido principalmentedebido a los buenos resultados que se han obtenido en la prueba leave-one-out. Aunquese ha realizado varias pruebas con distintos valores de k, no se han apreciado mejoresresultados con otros valores.

Con respecto a la cota de distancia, ha ido variando a lo largo de las pruebas. Enun primer momento se ha tomado una cota unica para todos los nodos, la cual se hacolocado inicialmente en 0.001. Sin embargo, se ha comprobado que era una cota dema-siado grande, dado que encontrabamos identificaciones falsas durante desplazamientosentre nodos. Por tanto, se ha ido disminuyendo hasta llegar a una cota que disminuyeralos falsos positivos.

Sin embargo, se ha empezado a dar casos en los que, a pesar de las mejoras defalsos positivos en transito, nos encontrabamos con que algunos nodos correctos nose identificaban adecuadamente. Este hecho nos ha llevado a tratar de colocar cotasindividuales para los diferentes nodos.

Para decidir el valor de las diferentes cotas, se ha realizado el siguiente procedimien-to. En primer lugar se han escogido al azar diez vıdeos de entre los que disponemos para

31

Page 38: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

realizar pruebas. A esos vıdeos se les ha pasado el clasificador por todos los fotogramas,sin el uso de cotas de distancias ni otras tecnicas, y se ha almacenado para cada nodo elvalor de distancia mınimo con el que se ha clasificado cada nodo, ası como el fotogramaen el que se ha alcanzado.

Partiendo de los datos obtenidos, se han decidido las cotas mınimas de cada nodo,quedando de la siguiente manera:

• Ascensor (Nodo 1): 0.0006

• Entrada (Nodo 2): 0.00075

• Fotocopiadora (Nodo 3): 0.0005

• Escalera (Nodo 4): 0.0006

• Cruce (Nodo 5): 0.0008

• Despacho (Nodo 6): 0.005

Sobre los conjuntos de datos parciales, se han realizado pruebas tanto sin conjuntosparciales, como con conjuntos de radio uno, solo nodos adyacentes, excepto para elprimer nodo, que se localiza utilizando todo el dataset. Se podra ver que cada opciontiene sus ventajas y sus inconvenientes.

Con respecto a la opcion de medir el tiempo en cada nodo, no se ha utilizado en laprueba final del vıdeo. Sı se ha utilizado durante el proceso de prueba, pero el principalinconveniente es que, al ser un vıdeo, no se puede controlar el tiempo de espera en cadaposicion.

Como ya se ha mencionado, el vıdeo no ofrece posibilidad de mover la camara paraconseguir un mejor enfoque de los nodos. A pesar de este problema, los resultadosobtenidos son bastante aceptables.

Por ultimo, las imagenes que se muestran en las secciones siguientes se obtienen alguardar el fotograma en el que se realiza un cambio de nodo.

32

Page 39: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

5.2.1 Recorrido 1

Figura 5.4: Muestra de fotogramas del vıdeo 1 mostrando diferentes nodos

Estos fotogramas (Figura 5.4) son resultado de utilizar el algoritmo sin dividir losnodos posibles en subgrupos para la clasificacion. Esto es, se ha clasificado todo el ratocon todo el mapa al mismo tiempo.

Se puede ver que se han localizado cada uno de los nodos de forma correcta, y nose han encontrado errores ni falsos positivos.

Tambien se ha realizado la prueba dividiendo el mapa en subconjuntos de radio 1,vecino mas proximo, pero no existen diferencias funcionales entre ambas pruebas, yaque no hay errores ni falsos positivos que afinar, con lo que no se incluye dicha versionde las fotos.

33

Page 40: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

5.2.2 Recorrido 2

Figura 5.5: Muestra de fotogramas del vıdeo 2 mostrando diferentes nodos

Los fotogramas que encontramos en la Figura 5.5 resultan de aplicar el algoritmocon la division por grupos de radio 1. Este vıdeo es un buen ejemplo para apreciarvisualmente una ventaja que tiene dicha division frente al uso de todo el conjunto delos nodos.

Figura 5.6: Falso positivo

Como se puede ver, los nodos estan localiza-dos adecuadamente en sus posiciones correctas. Noexisten errores ni falsos positivos.

Sin embargo, si realizasemos la prueba utilizan-do todo el conjunto al mismo tiempo, aparte de es-tos fotogramas, nos encontrarıamos con la imagenmostrada en la figura 5.6

Lo que sucede con esta imagen es que, utilizan-do la division por grupos de nodos, al llegar a estepunto el nodo ’Esc’ no esta disponible como clasepara clasificar, con lo que no da el falso positivoen esa zona, al contrario de la prueba que utilizatodos los nodos a la vez.

34

Page 41: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

5.2.3 Recorrido 3

Figura 5.7: Muestra de fotogramas del vıdeo 3 mostrando diferentes nodos

Tal como se ha visto en el recorrido anterior una ventaja que tiene la division ensubgrupos sobre el uso de todo el mapa, ahora vamos a ver un inconveniente de dichometodo.

Figura 5.8: Falso positivo

Se puede ver en las imagenes de la Figura 5.7que cada uno de los nodos del mapa esta clasifi-cado en su lugar correspondiente, sin errores. Sinembargo, si nos fijamos se puede apreciar que elnodo que se muestra anteriormente al nodo ’Esc’,abajo a la derecha de su imagen, tenemos el nodo’Ent’, lo cual no deberıa ser correcto, ya que noson nodos contiguos.

Esto se debe al falso positivo que encontramosen la figura 5.8. En el caso de utilizar todo el mapapara clasificar, como es el caso en estas imagenes,el problema no va mas alla de un falso positivo.Sin embargo, si tenemos un subconjunto de radio1, nos encontramos que no encuentra los nodos posteriores, ya que no estan en elconjunto de clasificacion.

35

Page 42: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

Capıtulo 6

Conclusiones

Como se ha podido ver en el apartado anterior, se ha conseguido identificar un recorridocompleto de la ruta utilizando el sistema desarrollado. De todas formas, hay que teneren cuenta que el metodo no es perfecto, y que existen aun formas de mejorarlo.

El principal inconveniente que se le puede encontrar, siendo mas o menos generalen la mayor parte de los sistemas que usen reconocimiento directo de imagenes basadoen color, es que puede dar problemas en espacios al aire libre, debido a la variacionde luminosidad a lo largo del dıa. En nuestro caso, la mayorıa de los nodos estan enespacios cerrados, luego no afecta demasiado.

Con el fin de mejorar el sistema sin realizar un cambio completo del metodo, se des-cribieron algunas posibilidades en el apartado de aplicacion del algoritmo. Sin embargo,se pueden idear mas metodos que pueden dar buenos resultados, aunque no han sidoprobados.

Por ejemplo, crear un nuevo umbral de distancia, no al vecino mas proximo, si noen funcion de los k vecinos mas proximos, dependiendo del nodo de pertenencia.

Otra opcion ya mencionada son los distintos umbrales por nodo. Se podrıa crear unalgoritmo para calcular la mejor opcion en funcion de la zona del mapa.

Tambien, si se montara el sistema en un robot con sistema de odometrıa, se podrıanutilizar dichas medidas para variar los umbrales de forma dinamica.

Si quisieramos ya mayor precision, se podrıa utilizar otro algoritmo de reconocimien-

36

Page 43: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

to distinto, como tratar de reconocer objetos particulares de la imagen. Sin embargo,dado que los resultados obtenidos con el algoritmo utilizado son aceptables, no se haconsiderado llegar mas alla.

37

Page 44: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

Apendice A

Portabilidad a Android

Una de las ideas del proyecto era el funcionamiento de la aplicacion en una plataformaportatil, de forma que se pueda realizar con facilidad la identificacion y localizacion delos lugares en tiempo real. Para ello, se ha trabajado en adaptar el codigo de clasificaciondesarrollado a una plataforma con sistema Android.

El desarrollo en pc ha sido utilizando Python, con lo que, para realizar pruebaspreliminares de funcionamiento en la plataforma, se ha intentado realizar un port lomas directo posible del codigo Python desarrollado. Para ello se ha utilizado Kivy, unalibrerıa de codigo abierto que permite el desarrollo de aplicaciones multiplataforma conPython de forma sencilla.

Para el funcionamiento correcto de la aplicacion ha sido necesario reconstruir undataset nuevo, ya que las diferencias de color entre las imagenes obtenidas para construirel dataset original y las imagenes extraıdas de la camara desde la aplicacion hacıan quefallase la localizacion.

El dataset nuevo es mas reducido que el original utilizado para el resto del proyecto,con 200 imagenes por nodo aproximandamente, ya que la aplicacion es basicamente unaprueba de concepto.

Los resultados obtenidos con las pruebas a tiempo real han sido bastante satisfacto-rios, ya que la capacidad de mover la camara para enfocar con precision ayuda en granmedida a la localizacion.

A continuacion se presentan varias imagenes de la aplicacion en funcionamiento,

38

Page 45: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

ası como el codigo utilizado.

Figura A.1: Muestra de imagenes de la aplicacion en los distintos nodos

39

Page 46: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

A.1 main.py

from kivy . app import Appfrom kivy . lang import Bui lderfrom kivy . uix . camera import Camerafrom kivy . uix . boxlayout import BoxLayoutfrom kivy . p r o p e r t i e s import ListProperty , NumericProperty

import cv2import numpy as npimport c o l l e c t i o n s

from mapa import ∗

class Cam(Camera ) :

def i n i t ( s e l f , ∗∗kwargs ) :super (Cam, s e l f ) . i n i t (∗∗ kwargs )

def g e t t e x t u r e ( s e l f ) :return s e l f . t ex tu re

def b ind tex tu r e ( s e l f , method ) :s e l f . camera . bind ( on tex ture=method )

class C l a s s i f i e r ( BoxLayout ) :thresHOrig = NumericProperty (0 )symbols = Li s tProper ty ( [ ] )

def i n i t ( s e l f , ∗∗kwargs ) :super ( BoxLayout , s e l f ) . i n i t (∗∗ kwargs )

s e l f . i d s . camera . b ind t ex tu r e ( s e l f . c l a s s i f y )

s e l f . thresHOrig = 0.00055

s e l f . graph = mapLoader ( ’ . / mapaSec .map ’ )

40

Page 47: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

s e l f . c l a s s i f i e r = cv2 . KNearest ( )s e l f . oldNode = Node ( ” PlaceHolder ” )s e l f . workingNode = Node( ” PlaceHolder ” )s e l f . usingNodes = s e l f . graph . nodeList

s e l f . da tase t = Nones e l f . group = None

for i in range ( len ( s e l f . graph . nodeList ) ) :s i z e = s e l f . graph . nodeList [ i ] . imageData . shape [ 0 ]s e l f . usingNodes . append ( s e l f . graph . nodeList [ i ] )

nGroup = np . array ( [ i ]∗ s i z e ) . reshape ( ( s i z e , 1 ) )

i f s e l f . da tase t == None :s e l f . da tase t = s e l f . graph . nodeList [ i ] . imageDatas e l f . group = nGroup

else :s e l f . da tase t = np . concatenate ( ( s e l f . dataset , s e l f . graph . nodeList [ i ] . imageData ) )s e l f . group = np . concatenate ( ( s e l f . group , nGroup ) )

s e l f . c l a s s i f i e r . t r a i n ( s e l f . dataset , s e l f . group )

def change thresH ( s e l f ,num ) :s e l f . thresHOrig += num

def g e t t e x t u r e ( s e l f ) :snapshot = s e l f . i d s . camera . g e t t e x t u r e ( )i f snapshot :

img = np . f r omst r ing ( snapshot . p i x e l s , dtype=np . u int8 )a = np . reshape ( img , (480 ,640 ,4 ) )return a

return snapshot

def c l a s s i f y ( s e l f ,∗ l a r g s ) :neighN = 1thresH = s e l f . thresHOrig

image = s e l f . g e t t e x t u r e ( )

41

Page 48: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

i f image == None :return −1

gray = cv2 . cvtColor ( image , cv2 .COLOR RGB2GRAY)

h i s t = cv2 . c a l c H i s t ( [ gray ] , [ 0 ] , None , [ 2 5 6 ] , [ 0 , 2 5 6 ] )normhist = h i s t / f loat (sum( h i s t ) )normhist = np . array ( [ normhist . r a v e l ( ) ] ) . astype (np . f l o a t 3 2 )

i f s e l f . workingNode . name != s e l f . oldNode . name :s e l f . oldNode = s e l f . workingNodes e l f . usingNodes = [ s e l f . workingNode ]

s e l f . da tase t = s e l f . workingNode . imageDatas e l f . group = np . array ( [ 0 ] ∗ s e l f . da tase t . shape [ 0 ] ) . reshape ( ( s e l f . da tase t . shape [ 0 ] , 1 ) )

count = 1for node in s e l f . graph . ad jacent [ s e l f . workingNode . name ] :

s i z e = node [ 0 ] . imageData . shape [ 0 ]

s e l f . usingNodes . append ( node [ 0 ] )nGroup = np . array ( [ count ]∗ s i z e ) . reshape ( ( s i z e , 1 ) )

s e l f . da tase t = np . concatenate ( ( s e l f . dataset , node [ 0 ] . imageData ) )s e l f . group = np . concatenate ( ( s e l f . group , nGroup ) )

count += 1

s e l f . c l a s s i f i e r . t r a i n ( s e l f . dataset , s e l f . group )

ret , r e s u l t s , neighbours , d i s t = s e l f . c l a s s i f i e r . f i n d n e a r e s t ( normhist , neighN )

temp = r e s u l t s [ 0 , 0 ]

symbols = [ s e l f . workingNode . name ]

i f d i s t < [ [ thresH ] ] and s e l f . usingNodes [ int ( temp ) ] . name != s e l f . workingNode . name :symbols . append ( s e l f . usingNodes [ int ( temp ) ] . name)s e l f . workingNode = s e l f . usingNodes [ int ( temp ) ]

42

Page 49: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

symbols . append ( str ( d i s t ) )symbols . append ( s e l f . usingNodes [ int ( temp ) ] . name)

s e l f . symbols = symbols

class ClassCamera (App ) :

def bu i ld ( s e l f ) :c l a s s i f i e r = C l a s s i f i e r ( )return c l a s s i f i e r

i f name == ’ ma in ’ :

ClassCamera ( ) . run ( )

43

Page 50: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

A.2 mapa.py

# −∗− coding : u t f−8 −∗−

import cP i ck l e as p i c k l e

class Mapa :def i n i t ( s e l f ) :

s e l f . nodeList = [ ]s e l f . ad jacent = {}

def addNode ( s e l f , node , a d j L i s t ) :s e l f . nodeList . append ( node )s e l f . ad jacent [ node . name ] = a d j L i s t

def saveMap ( s e l f , f i l ename ) :with open( f i l ename , ’wb ’ ) as output :

p i c k l e . dump( s e l f , output , p i c k l e .HIGHEST PROTOCOL)

class Node :def i n i t ( s e l f , name = ”” ) :

s e l f . name = names e l f . imageData = ’ ’

def mapLoader ( f i l e L o c ) :

graph = ’ ’

with open( f i l e L o c , ’ rb ’ ) as input :graph = p i c k l e . load ( input )

return graph

44

Page 51: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

A.3 classcamera.kv

<C l a s s i f i e r >:o r i e n t a t i o n : ’ v e r t i c a l ’

Cam:id : camerar e s o l u t i o n : (640 , 480)play : Fa l se

Label :t ex t : ’\\n ’ . j o i n (map( repr , root . symbols ) )s i z e h i n t y : Nonehe ight : ’100dp ’

ToggleButton :t ex t : ’ Play ’on pre s s : camera . play = not camera . plays i z e h i n t y : Nonehe ight : ’48dp ’

BoxLayout :s i z e h i n t y : Nonehe ight : ’48dp ’

Button :t ex t : ’ Decrement ’on pre s s : root . change thresH (−0.00001)

Label :t ex t : s t r ( root . thresHOrig )

Button :t ex t : ’ Increment ’on pre s s : root . change thresH (0 . 00001 )

45

Page 52: SISTEMA DE CO-PILOTAJE AUTONOMO PARA LA NAVEGACION …

Bibliografıa

[1] Dijkstra, E. W. (1959). A note on two problems in connexion with graphs. Nume-rische mathematik, 1(1), 269-271.

[2] Hart, P. E., Nilsson, N. J., Raphael, B. (1968). A formal basis for the heuristicdetermination of minimum cost paths. IEEE transactions on Systems Science andCybernetics, 4(2), 100-107.

[3] de Lope, J. “Arquitecturas de Robots Moviles. Apuntes de la asignatura RobotsAutonomos del MUIA, curso 2015-2016

[4] Maravall, D. Navegacion mediante Mapas Topologicos visuales. Apuntes de la asig-natura Robots Autonomos del MUIA, curso 2015-2016

[5] Maravall, D., de Lope, J., Fuentes, J. P. (2015, June). Visual Bug Algorithmfor Simultaneous Robot Homing and Obstacle Avoidance Using Visual Topologi-cal Maps in an Unmanned Ground Vehicle. In International Work-Conference onthe Interplay Between Natural and Artificial Computation (pp. 301-310). SpringerInternational Publishing.

[6] Peterson, L. E. (2009). K-nearest neighbor. Scholarpedia, 4(2), 1883.

[7] Thrun, S., Bucken, A. (1996). Learning Maps for Indoor Mobile Robot Navigation(No. CMU-CS-96-121). CARNEGIE-MELLON UNIV PITTSBURGH PA DEPTOF COMPUTER SCIENCE.

[8] Trudeau, R. J. (2013). Introduction to graph theory. Courier Corporation.

46