miércoles, 14 de abril de 2010

Practica 5

Bienvenidos a la práctica 5, denominada Auto-Localizacion basada en filtro de partícluas.

En anteriores prácticas hemos aprendido como funciona básicamente un filtro de párticulas. En esta práctica tendremos que utilizarlo!!!. Esta práctica se divide en 3 ejercicios, en los que vamos duplicando la complejidad de resolverlo.
El primer ejercicio fue más o menos sencillo, consistía en cargar el mapa desde un archivo, inicializar las párticulas aleatoriamente por el mapa y mostrar en pantalla el resultado. Cargar el mapa era la primera tarea, y no fue demasiado complicada, tras cambiar algunas cosillas, importar librerías estaba solucionado. Mostrarlo por pantalla fue algo más complicado ya que a pesar de tener el mapa, para mostrarlo hubo que dibujarlo "a capón" en la pantalla. Dibujar párticulas ya sabíamos con la cuarta práctica así que no era nuevo.

El ejercicio dos tuvo tela, estaba dividido en diferentes partes, pero eran dificilmente probables por separado. La primera parte consistía en realizar un escaneo de 360 grados guardando las diferentes medidas con su angulo respectivo en un array RangeReadings. Este escaneo debe realizarse con la velocidad, amplitud, resolución... pasadas por el usuario. Este escaneo lo utlizaremos para crearnos dos Array RangeReadings diferentes por cada punto.

Una vez guardadas las medidas de cada punto previamente establecido, situamos al robot aleatoriamente en un punto del mapa. El robot escanea una vez desde su posición y compara el escaneo de frecuencias con los guardados en su memoria, el que mas se asemeje será el punto en el que el robot cree que se encuentra. Como esto del asemeje queda un poco naive lo explicaremos más detalladamente. El robot saca la diferencia entre su medida 0, y la medida guardada 0 del punto 1, y asi sucesivamente con el resto de medidas. Cada diferencia la elevamos al cuadrado para evitar restas y sumamos todas las diferencias. Luego realizamos los mismos cálculos pero con el punto 2, el punto cuya suma de diferencias sea menor, será el punto elegido.
Pero tranquilos, no sólo nos sirve con saber el punto, tenemos que saber en que angulo respecto a la medida original nos encontramos. Esto se realiza con el histograma de medidas, comparamos los histogramas, y calculamos la suma como anteriormente, y ahora rotamos el histograma diez grados y volvemos a realizarlo. Esto quiere decir que vamos intentando que ambos histogramas cuadren lo mejor posible, una vez que vemos en que rotacion cuadran, sabemos el angulo en el que nos encontramos. Lo mostramos por pantalla.
Nos hemos encontrado con muchísimos problemas a la hora de realizarlo:

* El robot mide lo que le da la gana: Desgraciadamente contra esto no hemos podido hacer nada, hemos reducido la velocidad de escaneo para que el error sea lo menos posible, pero pruebas el programa y a veces acierta perfectamente y otras por poco se cree que está fuera del mapa.

* El mapa estaba ocupado: A medida que avanzaban los días el mapa estaba mas ocupado y a pesar de la colaboración entre compañeros ha sido dificil realizar todas las pruebas que creíamos necesarias.

* El mapa cada día estaba mas perjudicado: El mapa cada día ha estado mas roto, con las paredes despegadas, supongo que todos hemos tenido mucho cuidado pero es inevitable que alguien se tropieze que el mapa se mueva y un largo etc de cosas que han hecho que el mapa se encuentre en malas condiciones.

* Al estar el mapa peor las medidas tomadas no son las tomadas previamente, y eso lleva a Roxxxy a confundirse.

* A parte de los problemas mencionados, tuvimos otro adicional y es que Roxxxy no tiene precisamente memoria de elefante, así que no le cabían 10 archivos(1 para el histograma de frecuencia y otro para el de posición de cada uno de los cinco puntos) para guardar las medidas tomadas por el radar(RangeReadings), así que tuvimos que ingeniárnoslas solo con 5 y finalmente pudimos resolver el problema derivando de el histograma de ángulos y medidas el histograma de frecuencias necesario para calcular la posición.

A pesar de todo conseguimos que Roxxxy sepa donde se encuentra la mayoría de las veces, a veces se equivoca, pero "todos somos humanos". Lo que está claro es que cuanto más tiempo pasamos con Roxxxy más nos exige, como casi todas las mujeres.

No hay comentarios:

Publicar un comentario