El objetivo de este programa es mostrar el mapa cargado y las particulas inicializadas en el. Para conseguirlo hemos transformado los datos en cm del mapa real a una escala que la pantalla fuera capaz de mostrar.
Diseño del radar
En este caso se trataba de crear una clase que se encargue de englobar los aspectos necesarios para la orientacion por ultrasonidos. Su unico metodo consiste en tomar varias medidas desde diferentes angulos (segun los parametros de entrada) y devolverlas.
Reconocimiento de posicion y orientacion
En esta ultima parte usamos la clase Radar implementada anteriormente. En primer lugar es necesario establecer algunos puntos de referencia. La clase TomarMedidas se encarga de hacer un barrido de 360 grados y almacenar seguidamente la firma. Cada vez que se pulse enter se almacena un numero de firma distinta. Esta firma es concretamente el histograma de las medidas obtenidas por el ultrasonidos por cada angulo al que esta mirando.
Ahora con las posiciones posibles que puede ocupar el robot se puede autolocalizar. Se toma un nuevo barrido de 360 grados donde situemos el robot (con cualquier orientacion). Posteriormente el histograma se transforma en otro histograma que muestra la cantidad de veces que ha aparecido una medida del ultrasonido. Hacemos lo mismo con cada firma almacenada y se va comparando. La diferencia mas pequeña entre la medida capturada y una de las firmas sera la que nos indique en el punto en el que esta.Lo mas complicado en este proceso fue conseguir que el motor consiguiera suficiente precision como para ser fiable al hacer arcos muy cortos con el fin de tener los histogramas lo mas ricos posibles.
Para calcular la diferencia en grados en esta nueva posicion hemos intentado hallar el angulo en el que se situa comparamos la firma capturada con las firma guardada a la que pertenece el punto en que nos situamos. El histograma capturado va rotando los valores y calculando la diferencia con la firma del punto en que nos situamos. Finalmente la menor diferencia nos indicara la cantidad de posiciones que hemos tenido que rotar el histograma para encontrar la firma aproximada. Segun ese numero y la resolucion podemos obtener los grados de diferencia.
No hay comentarios:
Publicar un comentario