Algoritmos de posicionamiento indoor híbridos
3.2 Descripción general
3.2.4 Desplazamiento de las partículas
3.2.5.1 Punto de referencia
El primer algoritmo desarrollado utiliza un denominado “punto de referencia” para valorar o pesar las partículas. En el momento en que se va a realizar esta operación, se utilizan los valores de RSSI medidos de cada beacon cercano junto a un algoritmo de posicionamiento basado en RSSI, para determinar un punto de referencia aproximado al real. Considerando que el método de trilateración es el más impreciso de los explicados en el Capítulo 2, se optó en primer instancia por implementar un algoritmo de fingerprinting. A su vez, se desarrolló un segundo algoritmo basado en fingerprinting, con la idea de corregir su comportamiento en situaciones donde el resultado no fuera correcto.
3.2.5.1.1 Fingerprints
A partir de un mapa de zonas de Fingerprinting con los valores promedio de RSSI de cada beacon, basta con utilizar las mediciones actuales de RSSI para determinar cuál es la zona en la que se encuentra actualmente el usuario, según la fórmula:
Donde V es el valor final, N es la cantidad de beacons, n el número de beacon actual, RSSIn el valor actual de RSSI para el beacon n, F n el valor de RSSI promedio para el beacon n almacenado en la fingerprint actual, y C n un valor de confianza preestablecido para el beacon n. Esta fórmula se aplica para cada fingerprint.
Utilizando la fórmula (4), se le asigna un valor a cada zona en base a la diferencia entre el valor RSSI medido actual y el almacenado en la zona, para cada beacon BLE, de forma que las zonas con menos valor son las más probables de ser las zonas resultado.
Para evitar “saltos” entre zonas muy alejadas que puedan llegar a tener valores promedio de RSSI similares, se efectúa una revaloración de las zonas en base a la distancia entre la zona previa y cada una de las zonas. Según la fórmula:
Donde V es el valor de la zona a revalorar, R una constante establecida en 20, Distancia la distancia entre la zona actual y la zona a revalorar, y DistanciaMax la mayor distancia medida entre la zona actual y todas las otras zonas.
Así, se obtiene en V’ nuevos valores para cada fingerprint, y aquella cuyo valor sea el menor será la zona resultante. Finalmente, como punto de referencia, se retorna el punto central de dicha zona.
3.2.5.1.2 FP-Trilat
La alternativa desarrollada a fingerprinting fue un algoritmo propio denominado FP-Trilat. Es una estrategia que utiliza el resultado del método de fingerprint explicado en la sección anterior, con una corrección sobre el mismo basada en trilateración (Capítulo 2.3.2).
Dado que las zonas de fingerprint pueden ser bastante amplias, usar su punto central no siempre es la opción más adecuada. Este algoritmo intenta corregir el punto de referencia desplazando el punto resultado del centro, pero siempre dentro de los límites de la zona de fingerprint resultado. El límite establecido fue de 1,5 metros.
Utilizando la fórmula (2) (RSSI a distancia) para cada valor RSSI actual, se puede determinar la distancia a la que se encuentra el punto central del beacon correspondiente. Haciendo una relación entre esa distancia y el radio de la fingerprint puede establecerse a qué porcentaje de la distancia corresponde el radio de la zona. Obtenido el porcentaje, multiplicarlo por el radio de la zona resulta en la distancia a desplazar. Como orientación del desplazamiento se emplea la dirección hacia el beacon, formando un vector. Dado que este procedimiento es realizado para cada beacon, como resultado se tendrán tantos vectores como cantidad de beacons presentes. Por último, el punto resultado es calculado sumando todos los vectores.
Figura 3.2: Esquema del algoritmo FP-Trilat. Se puede ver la fingerprint resultante, el área de la misma, y la distancia entre su centro y los tres beacons.
En una primera instancia, se calculan las distancias que deben ser recorridas en cada dirección, en base a la distancia actual entre el centro de la fingerprint resultado y cada beacon. En el ejemplo, se ve que el centro de la fingerprint 1 se encuentra a 1.875 metros del beacon 1. El radio de la zona (1.5 metros) resulta ser un 80% de dicha distancia. Entonces, el punto final debe desplazarse un 80% de 1.5 metros en dirección al beacon 1. Es decir, se desplaza 1.20 metros en un ángulo de 0°. La misma operación se repite para los otros beacons, resultando así una sumatoria de vectores como puede verse en la figura 3.3.
Figura 3.3: Esquema del resultado final del algoritmo FP-Trilat.
El punto resultante de dicha sumatoria (Pf) será entonces el que se utilizará como punto de referencia para el algoritmo de filtro de partículas.
Tanto en Fingerprinting como en FP-Trilat, se obtiene un punto de referencia contra el cual se compara la posición de cada partícula. De esta manera, para cada partícula se calcula la distancia entre ella y cada beacon, y se resta con la distancia entre el punto de referencia y
cada beacon. Como resultado, el error acumulado dividido la cantidad de beacons se convierte en el peso o valor de la partícula. Su funcionamiento se puede ver en el siguiente pseudocódigo:
Siendo B el beacon actual, P la partícula actual, PR el punto de referencia a utilizar, y la función Pos( ) la posición en el mapa.