SISTEMA PARA LA CREACIÓN DE BASES DE DATOS
DE LOCALIZACIÓN MEDIANTE HUELLAS DE SEÑAL
Proyecto final de grado
Escola Tècnica d'Enginyeria de Telecomunicació de
Barcelona
Universitat Politècnica de Catalunya
por
David García Álvarez
En parcial cumplimiento de los requisitos para el grado
de INGENIERIA EN TELEMATICA
Tutor: Israel Martín Escalona
Barcelona, Julio 2018
1
Abstract
The objective of this project has been to make an Android application for the construction of a database dedicated to saving the necessary data for localization in interior, using fingerprinting.
This application is responsible for obtaining radio frequency signal measurements at different points of a previously created map and saving them in a database.
The implantation of a screen where being able to visualize a heat map with all the signals captured superimposed on the real map.
Before the implementation of the application, a study has been carried out where the technologies and applications that currently exist have been analysed.
2
Resumen
El objetivo de este proyecto ha sido el de realizar una aplicación Android para la construcción de una base de datos dedicada a guardar los datos necesarios para la localización en espacios interiores mediante mapas de señales de huella de potencia
(fingerprinting).
Dicha aplicación será la encargada de obtener medidas de señales de radiofrecuencia en distintos puntos de un mapa previamente creado y guardarlos en una base de datos.
También se implementará la opción de poder visualizar un mapa de calor con todas las
señales captadas sobrepuesto en el mapa real.
Este proyecto se ha hecho lo más pautadamente posible, es por eso, que se ha puesto gran hincapié en la realización de un estudio previo, en el análisis de las tecnologías y aplicaciones existentes actualmente, la toma de requerimientos y diseño.
4
Registro de revisiones
Revision Date Purpose
0 20/06/2018 Creación documento
1 29/06/2018 Revisión documento
1 2/07/2018 Revisión documento
DOCUMENT DISTRIBUTION LIST
Name e-mail
David Garcia Alvarez [email protected]
Israel Martin Escalona [email protected]
Written by: David García Reviewed and approved by: Israel Martín
Date 2/7/2018 Date 2/7/2018
Name David García Álvarez Name Israel Martín
Position Project Author Position Project Supervisor
5
Tabla de contenídos
Abstract ................................................................................................................................. 1
Resumen .............................................................................................................................. 2
Agradeciminetos ................................................................................................................... 3
Registro de revisiones .......................................................................................................... 4
Tabla de contenídos ............................................................................................................. 5
Lista de Figuras .................................................................................................................... 7
Lista de Tablas: .................................................................................................................... 9
1. Introducción ................................................................................................................. 10
1.1. Objetivo ................................................................................................................ 11
1.2. Plan de trabajo ..................................................................................................... 12
2. Evaluación tecnológica ............................................................................................... 14
2.1. Técnicas de localización ...................................................................................... 14
2.1.1. Técnicas de localización .............................................................................. 14
2.1.1.1. Técnicas de localización basadas en distancia ......................................... 15
2.1.1.2. Técnicas de localización basadas en mapas de potencia ........................ 17
2.1.2. Tecnologías actuales ................................................................................... 19
2.2. Aplicaciones actuales .......................................................................................... 23
Situm Mapping Tool .................................................................................................... 23
IndoorAtlas MapCreator 2 ........................................................................................... 23
HERE Indoor Radio Mapper ....................................................................................... 24
MapWize ..................................................................................................................... 25
2.2.1. Estudio comparativo de las aplicaciones actuales ...................................... 26
3. Requerimientos y especificaciones ............................................................................ 27
3.1. Requerimientos .................................................................................................... 27
3.1.1. Requerimientos funcionales ......................................................................... 27
3.1.2. Requerimientos no funcionales .................................................................... 27
3.2. Especificaciónes .................................................................................................. 28
3.2.1. Estructura ..................................................................................................... 28
3.2.1.1. Pantalla Captura......................................................................................... 28
3.2.1.2. Pantalla HeatMap ....................................................................................... 29
3.2.1.3. Pantalla Gestor de datos ........................................................................... 29
3.3. Diagrama de flujo ................................................................................................. 30
3.4. Diagrama de clases ............................................................................................. 33
6
4. Captura de datos ......................................................................................................... 34
4.1. Parámetros de captura ........................................................................................ 34
4.2. Parámetros de calidad ......................................................................................... 35
5. Diseño e implementación de UI .................................................................................. 36
5.1. Diseño de UI ........................................................................................................ 36
5.1.1. App bar y navegación ................................................................................... 36
5.1.2. Captura de datos .......................................................................................... 37
5.1.3. HeatMap ....................................................................................................... 40
5.1.4. Gestor de datos ............................................................................................ 41
5.2. Implementación.................................................................................................... 44
6. Diseño e implementación de la Base de Datos.......................................................... 46
6.1. Diseño de la base de datos ................................................................................. 46
6.2. Implementación de la base de datos .................................................................. 47
6.2.1. Room ............................................................................................................ 47
6.2.1.1. Creación de entidades ............................................................................... 47
6.2.1.2. Acceso a datos usando DAOs ................................................................... 48
6.2.2. Gestión de procesos .................................................................................... 49
7. Esquema clases .......................................................................................................... 52
8. Resultados .................................................................................................................. 53
8.1. Prueba de uso...................................................................................................... 53
9. Presupuesto ................................................................................................................ 59
10. Conclusiones y futuros desarrollos ......................................................................... 60
11. Bibliografía ............................................................................................................... 61
7
Lista de Figuras
Figura 1: Multilateración ............................................................................................................................................................... 16 Figura 2: AOA/DOA ........................................................................................................................................................................... 16 Figura 3: Fingerprinting, Ejemplo mapa de calor ............................................................................................................... 17 Figura 4: Diagama funcionamiento fingerprinting ........................................................................................................... 18 Figura 5: tag UWB ............................................................................................................................................................................. 19 Figura 6: RFID ..................................................................................................................................................................................... 20 Figura 7: Zigbee .................................................................................................................................................................................. 20 Figura 8: UWB ..................................................................................................................................................................................... 21 Figura 9: Situm Mapping tool ....................................................................................................................................................... 23 Figura 10: IndoorAtlas..................................................................................................................................................................... 23 Figura 11: Here indoor radio mapper 1 ................................................................................................................................... 24 Figura 12: Here indoor radio mapper 1 ................................................................................................................................... 24 Figura 13: MapWize.......................................................................................................................................................................... 25 Figura 14: Diagrama de flujo, 1 ................................................................................................................................................... 30 Figura 15: Diagrama de flujo, 3 ................................................................................................................................................... 31 Figura 16: Diagrama de flujo, 2 ................................................................................................................................................... 31 Figura 17: Diagrama de flujo, 4 ................................................................................................................................................... 32 Figura 18: Diagrama de clases ..................................................................................................................................................... 33 Figura 19: Esquema temporal ...................................................................................................................................................... 34 Figura 20: App Bar ............................................................................................................................................................................ 36 Figura 21: Menú.................................................................................................................................................................................. 36 Figura 22: Prototipo Crear Mapa................................................................................................................................................ 37 Figura 23: Prototipo Cargar Mapa............................................................................................................................................. 37 Figura 24: Prototipo, Guardar Mapa ......................................................................................................................................... 38 Figura 25: Prototipo, Captura ...................................................................................................................................................... 38 Figura 26: Prototipo, Capturando .............................................................................................................................................. 39 Figura 27: Prototipo, resultado captura .................................................................................................................................. 39 Figura 28, Prototipo, cargar mapa ............................................................................................................................................ 40 Figura 29: Prototipo, heatmap ..................................................................................................................................................... 41 Figura 30, Prototipo gestor 1 ........................................................................................................................................................ 41 Figura 31: Prototipo cargar mapa gestor ............................................................................................................................... 42 Figura 32: Prototipo, seleccionar rango fecha gestor ........................................................................................................ 42 Figura 33: Prototipo, cargar medidas....................................................................................................................................... 43 Figura 34: Prototipo eliminar medidas .................................................................................................................................... 43 Figura 35: Prototipo, confirmer subir datos .......................................................................................................................... 43 Figura 36: Prototipo, confirmación eliminar ......................................................................................................................... 43 Figura 37: Fragments vs Actividades ........................................................................................................................................ 44 Figura 38: UI, Captura ..................................................................................................................................................................... 45 Figura 39: UI, heatmap .................................................................................................................................................................... 45 Figura 40: UI menú ............................................................................................................................................................................ 45 Figura 41: UI, gestor datos ............................................................................................................................................................. 45 Figura 42: UI gestor .......................................................................................................................................................................... 45 Figura 43: Base de datos ................................................................................................................................................................. 46 Figura 44: Crear entidad ................................................................................................................................................................ 47 Figura 45: Crear DAO ....................................................................................................................................................................... 48 Figura 46: SQLite Studio ................................................................................................................................................................. 49 Figura 47: MyAsyntask .................................................................................................................................................................... 50 Figura 48: Clase Manager .............................................................................................................................................................. 50 Figura 49: Clase ejemplo Myasynctask ..................................................................................................................................... 51
8
Figura 50: Prueba de uso, menú .................................................................................................................................................. 53 Figura 51: Prueba de uso, cargar mapa ................................................................................................................................... 54 Figura 52: Prueba de uso, nuevo mapa .................................................................................................................................... 54 Figura 53: Prueba de uso, guardar nuevo mapa .................................................................................................................. 55 Figura 54: Prueba de uso, coordenada origen ...................................................................................................................... 55 Figura 55: Prueba de uso, precaptura ...................................................................................................................................... 56 Figura 56: Prueba de uso, dialogo capturando ..................................................................................................................... 56 Figura 57: Prueba de uso, resultado captura ........................................................................................................................ 57 Figura 58: Prueba de uso, Heat map, cargaar mapa.......................................................................................................... 57 Figura 59: Prueba de uso, heatmap ........................................................................................................................................... 58
9
Lista de Tablas:
Tabla 1: Diagrama de Gantt ________________________________________________________________________________ 13 Tabla 2: Comparación de tecnologías ______________________________________________________________________ 22 Tabla 3: Comparación de Apps _____________________________________________________________________________ 26 Tabla 4: Esquema de clases _________________________________________________________________________________ 52 Tabla 5: Presupuesto ________________________________________________________________________________________ 59
10
1. Introducción
El tradicional GPS resulta ser de una gran herramienta para exteriores, pero cuando se
enfrenta a lugares cerrados donde la señal no puede llegar, o zonas donde se necesite de
una gran precisión (<15m) esta tecnología resulta insuficiente.
Es por eso que en los últimos años ha existido una gran ambición en la búsqueda de
nuevos y mejores sistemas de localización en interior en tiempo real (RTLS).
Actualmente existe un gran uso de estos sistemas en la indústria 4.0 como pueden ser:
• Localización y seguimiento de personal y pacientes
• Seguridad del personal
• Optimización de flujos de trabajo y procesos
• Monitorización y censado del entorno
• Vigilancia y seguridad
• Soporte a la navegación robótica
Pero a la vez, cada vez existen nuevas aplicaciones de dicha tecnología para el uso
personal, como pueden ser:
- En centros comerciales, ferias, aeropuertos, u otros lugares amplios, donde resulta útil al
usuario ver donde se encuentra en tiempo real y poder trazar una ruta hasta una tienda,
stand o lugar de interés.
- Para marketing, por ejemplo, al pasar una persona enfrente de una tienda, esta puede
detectar su presencia y enviar una notificación al dispositivo del usuario avisando de las
ofertas disponibles.
En este trabajo se analizarán todas las opciones disponibles actualmente, y se diseñará e
implementará una de ellas, en concreto, se realizará una aplicación Android que permitirá
la localización en interiores a partir de señales de radiofrecuencia, como pueden ser Wifi,
BLE..., usando una técnica llamada fingerprinting.
11
1.1. Objetivo
Este proyecto se enmarca dentro de otro más ambicioso cuyo propósito es el de construir
un sistema de captura y procesado de datos de localización basado en huellas de señal o
fingerprinting. Este sistema, ofrecerá una vía para explotar dichos datos y poder proponer
y refinar soluciones de localización presentes y futuras.
Las técnicas basadas en fingerprinting basan su funcionamiento en la comparación de la
potencia de la señal recibida en un determinado punto, procedente de un conjunto de
emisores de una o varias tecnologías radio, con un mapa de potencias previamente creado
en la zona donde se desplegará el servicio de localización.
El sistema global esta estructurado en 3 subsistemas:
- Subsistema cliente, formado por una aplicación que tendrá un doble objetivo:
o Toma de medidas de las señales radio recibidas y obtención de la
información reportada por los diferentes sensores existentes en el
terminal y de utilidad para el ámbito de la localización.
o Creación del mapa de la zona a cubrir.
o Visualización de los datos obtenidos.
o Gestión y envío de los datos obtenidos por el subsistema cliente, al
subsistema servidor.
- Subsistema servidor, encargado de:
o Recibir la información procedente de diferentes subsistemas cliente.
o Generar un repositorio de información, replicable y accesible por
diferentes subsistemas gestor.
- Subsistema gestor, que constará de un conjunto de aplicaciones capaces de
acceder a la información almacenada en el subsistema servidor y de aplicar
sobre dichos datos diferentes técnicas con las que obtener la posición donde
se encuentra un conjunto indeterminado de usuarios.
Tal y como puede apreciarse, se trata de una idea muy ambiciosa. Por lo tanto, este
proyecto se centrará en el diseño e implementación únicamente del subsistema cliente,
excluyendo también las actividades que requieran de la interacción con el subsistema
servidor.
La aplicación desarrollada estará enfocada para correr en dispositivos que operen bajo el
sistema Android. Tendrá una base de datos donde se guardarán los mapas creados, y las
diferentes medidas obtenidas en diferentes puntos y orientaciones.
Se hará un gran hincapié en tomar las medidas lo más ricas posibles, guardando esos
datos sin aplicarles ningún tratamiento (responsabilidad que recaerá sobre las
aplicaciones del subsistema gestor).
La aplicación permitirá el filtrado y visualización de todas las señales guardadas, tanto de
forma individual en las diferentes posiciones bajo estudio, como global en forma de mapa
de calor.
.
12
1.2. Plan de trabajo
El plan de trabajo que se siguió se detalla en la Tabla 1.
Paquete de trabajo 1: Estado del arte. Primero se realizó un estudio del estado del arte
referente a los sistemas de localización en interiores, centrándose en las siguientes tareas:
• Las tecnologías de localización para interiores existes actualmente, su
funcionamiento y las ventajas y desventajas que ofrecen.
• El análisis de las principales aplicaciones existentes, cuyo propósito sea similar al
establecido para el subsistema cliente.
Paquete de trabajo 2: Análisis de requerimientos. Este paquete de trabajo comprende el
estudio de los requerimientos solicitados expresamente por el demandante del proyecto,
así como todos aquellos que pudieran derivarse del estudio del estado del arte realizado
en el paquete de trabajo anterior. Con ello se pretende cubrir de forma exhaustiva el qué
debe hacer la aplicación.
Paquete de trabajo 3: Diseño de la aplicación. Una vez identificados todos los
requerimientos, se inició el diseño de la aplicación. En primer lugar, mediante un diagrama
de actividad, para tener claro el funcionamiento de la App en cada punto. Seguidamente
se realizó un diseño de prototipo completo que reflejara de forma visual el diagrama de
actividad de la aplicación. En concreto, se ilustró el diseño de todas las pantallas y cuadros
de diálogo, así como la interacción entre todos sus componentes. Finalmente, se generó
un diagrama de clases que respondiera al prototipo diseñado y se formalizó el diseño de
la base de datos que debía dar persistencia a los datos recogidos.
Paquete de trabajo 4: Implementación. Una vez acabada la fase de diseño, se pasó a la
fase de desarrollo, donde se construyó en primer lugar las interfaces de usuario (UI) que
debía reflejar el prototipo obtenido en el paquete de trabajo 3. Acto seguido se formalizó
el código necesario para dotar de persistencia a los datos, de acuerdo al diseño alcanzado
para la base de datos y finalmente se procedió al desarrollo completo de la App.
Durante el mes de julio se también se destinó una gran parte del tiempo en documentar y
confeccionar la memoria del proyecto.
Paquete de trabajo 5: Documentación. Una vez en la fase final del proyecto se confeccionó
un pequeño manual, y esta memoria.
Paquete de trabajo 6: formación. Este paquete es trasversal y su ejecución se solapa en
tiempo con varios de los paquetes de trabajo anteriores. En mi caso concreto, era la
primera vez que programaba aplicaciones para dispositivos Android. Este hecho hizo que
el esfuerzo en tiempo destinado a este paquete de trabajo fuera grande (ej. realización de
dos cursos online de Coursera con una duración total de 11 semanas dedicándole una
media de 4h/semana). [1]
14
2. Evaluación tecnológica
2.1. Técnicas de localización
En general se puede hablar de que las técnicas de localización para interiores pueden
agruparse, en función de la señal observada, en tres grandes familias:
- Las técnicas basadas en multilateración [1], que usan distancias sobre varios
puntos de referencia para después conseguir obtener el punto del usuario
usando técnicas de triangulación o multilateración.
- Las técnicas basadas en fingerprinting [2], que se basan en el contraste de
medidas tomadas en tiempo real con las almacenadas previamente durante
una fase de creación de mapas de potencia .
- Las técnicas basadas en ángulo (AoA) o dirección de llegada (DoA)
Además de estas técnicas, también existen otras, como pueden ser las basadas en
conectividad o proximidad. Sin embargo, estas técnicas son usadas generalmente para la
detección del objeto deseado en un espacio más reducido, es decir, tienen como objetivo
detectar la presencia de un elemento en un espacio determinado, pero no proporcionar su
localización de manera precisa.
2.1.1. Técnicas de localización
Las técnicas de localización basadas en multilateración basan su funcionamiento en medir
distancias desde el punto que se desea localizar hasta tres (posicionamiento 2D) o más
(posicionamiento 3D) puntos de referencia cuyo emplazamiento es conocido.
Estos puntos de referencia, también conocidos como landmarks o beacons, se encuentran
estratégicamente ubicados para cubrir todo el espacio a localizar de forma óptima.. Las
técnicas basadas en multilateración emplean las distancias obtenidas para superponer
curvas que definen los posibles emplazamientos del usuario. En una situación ideal (libre
de error), la superposición de estas curvas confluye en un único punto, que coincide con
la posición del elemento a ubicar, pero en la realidad, esta intersección de todas las curvas
en un punto no siempre se produce, es entonces cuando se han de introducir modelos de
errores a fin de calcular una aproximación.
La distancia entre el punto en el que se encuentra el dispositivo a posicionar y los
landmarks se puede calcular de dos formas: 1) A partir de la potencia de señal recibida
(RSS) o 2) a través del tiempo de vuelo de la señal (ToF).
Los sistemas RadioFrecuencia (RF) que usan el ToF de ondas electromagnéticas para
medir distancias tienden a proveer posiciones más precisas, generalmente en la franja de
1.5-3m [3], aunque en conjunción con tecnologías radio como Ultra Wide Band (UWB)
pueden alcanzarse precisiones del orden de centímetros [4]. Sin embargo, un factor a
tener en cuenta es que el error producido por la propagación multicamino aumenta en
espacios interiores, debido al choque de las ondas con paredes u objetos bloqueantes. Es
por eso que se requiere de la captura de múltiples muestras para una misma ubicación y
landmark, para posteriormente realizar un intensivo filtrado posterior con el que obtener
solo aquellas medidas que presenten una calidad adecuada. Sin embargo, el principal
15
hándicap de estas técnicas radica en el hecho de que la mayor parte de las tecnologías
radio no permiten de forma nativa ni establecer marcas temporales con la suficiente
precisión (del orden de nanosegundos) ni acceder a este tipo de información.
La información de RSS por el contrario es un dato que está disponible en la práctica
totalidad de los dispositivos radio empleados. Los sistemas que realizan el cálculo
mediante RSS, obtienen la distancia al emisor mediante el cálculo de la atenuación
esperada. Es decir, emplean un modelo radio analítico, previamente calibrado, que
relaciona la potencia transmitida desde un landmark (valor conocido a priori), con la
potencia recibida en el punto a ubicar (valor obtenido en tiempo real). Esta relación guarda
relación con la distancia entre el punto transmisor y receptor de la señal, por lo que, con
la parametrización adecuada, puede llegar a obtenerse la información de la distancia.
Generalmente son menos precisos, ya que el nivel de potencia de señal es más propenso
a sufrir fluctuaciones debido a todo tipo de fenómenos: difracción, reflexión, interferencia
con otras señales, influencias medioambientales (ej. mayor o menor humedad), etc.
Un dato a tener en cuenta es que el nivel de potencia recibida también depende de la
orientación de la antena del dispositivo, ya que las antenas empleadas en los equipos
receptores, frecuentemente, no son perfectamente isotrópicas.
La obtención de las distancias al punto de referencia mediante RSS no es por tanto muy
fiable. Como alternativa comenzaron a aparecer propuestas encaminadas a hacer uso de
un mapa de potencia preestablecido.
Las técnicas de localización basadas en mapas de potencia (fingerprinting), basan su
funcionamiento en la comparación de la potencia de señal recibida procedente de un
conjunto de emisores de señal (landmarks/beacons) en tiempo real, con un mapa de
potencias previamente creado. [2]
De manera general se podría decir que las técnicas basadas en ToF tienen mayor potencia
en cuanto a precisión que las basadas en RSS, pero presentan el inconveniente de
requerir el despliegue de una infraestructura específica para ello. Además, mayormente
usa tecnologías que no están disponibles en dispositivos de uso cotidiano, lo que hace
que el usuario tenga que adquirir y/o llevar con él nuevos dispositivos.
Los landmarks no tienen por qué ser fijos.
2.1.1.1. Técnicas de localización basadas en distancia
Como se comenta en el apartado anterior las técnicas basadas en distancia más usadas
son la multilateración y la triangulación:
- La multilateración calcula la posición del objeto deseado a través de su
distancia respecto a múltiples referéncias. Para obtener la posición en 2D
se necesita un mínimo de 3 referencias, y si se quiere obtener la posición
en 3D son requeridas un mínimo de 4 referencias [1], [5].
16
Figura 1: Multilateración
- La estimación AOA/DOA es la base de muchas aplicaciones como puede ser
radar, sonar, exploración sísmica, radioastronomía, y obviamente navegación
y seguimiento de objetos.
Este método se basa en trilateration mediante el uso de un array de antenas
sensitivas a la dirección en los receptores de manera que se pueda obtener la
dirección hacia el emisor. El ángulo de llegada se calcula trazando una línea
entre el receptor y emisor y otra desde el receptor hacia una dirección conocida
como pueden ser los puntos cardinales. Usando varios receptores en
posiciones conocidas se puede determinar la posición del transmisor mediante
triangulación. Para tomar estas mediciones se requiere de varias antenas
sensitivas a la dirección en varias ubicaciones, la precisión de este aumenta
según el número de antenas utilizadas.
Figura 2: AOA/DOA
17
2.1.1.2. Técnicas de localización basadas en mapas de potencia
Esta técnica se estructura en dos fases: offline y online. Durante la fase offline se procede
a la medición de los valores de potencia recibidos en los máximos puntos posibles del área
de localización. Estos valores se almacenan en una base de datos de localización, que
conserva una huella de la señal obtenida en cada uno de los puntos medidos.
Una vez creada dicha base de datos, se inicia la fase online. El dispositivo a localizar,
comparará en tiempo real el nivel de potencia de las señales recibidas en ese instante con
las almacenadas en la base de datos, para así poder, en base a la similitud de ambas
fuentes de datos, obtener la posición actual en la que se ubica el dispositivo.
Figura 3: Fingerprinting, Ejemplo mapa de calor
Al usar esta técnica, comúnmente suelen surgir dos errores [2]:
- Los puntos de acceso (AP) pueden pasarse por alto en un ciclo de escaneo,
tanto en la fase de creación de medidas, como en la fase de localización.
- La segunda, hace referencia a la posibilidad de que diferentes dispositivos
puedan recibir fuerzas de señal distintas debido a variación de la atenuación en
la antena de cada dispositivo.
Para resolver ambos errores se tendrán que tratar los datos guardados y desechar los que
no sean idóneos.
A continuación, en la [Figura 4] se muestra un diagrama de dicha técnica.
19
2.1.2. Tecnologías actuales
Actualmente existen un gran número de tecnologías en que pueden apoyarse en las
técnicas anteriormente comentadas
Las más extendidas hoy en día son: UWB, RFID, BLE, ZigBee y WiFi.
UWB (Ultra Wide Band)
Se trata de una tecnología de radio de bajo alcance que puede usar frecuencias que van
desde 3.1GHz hasta 10.6GHz.
Los sistemas de localización que emplean esta tecnología están basados
fundamentalmente en técnicas “Time of Flight” (ToF) para el cálculo de distancias, que,
unido a métodos de multilateración permite el cálculo la posición del objeto deseado.
Tiene un rango de alcance máximo de 100m y una precisión <30cm. [6] La principal ventaja
que ofrece esta tecnología es su bajo consumo, bajo coste y su alta productividad. Su
principal desventaja radica en el coste de los dispositivos y la necesidad de desplegar
infraestructura específica para el sistema de localización.
Figura 5: tag UWB
RFID (radio-frequency identification) [4]
Esta tecnología se utiliza principalmente para identificar la presencia de objetos. Se basa
en la medida del ToF, para obtener datos con los que posicionar. Ofrece 5m como rango
máximo de alcance en caso de usar la banda UHF (868MHz), lo que hace que no sea
recomendable para su uso en sistemas de posicionamiento y que esté más enfocado a la
detección de presencia.
Existes dos tipos de etiquetas RFID, activas y pasivas.
Los tags activos transmiten información a intervalos de tiempo predeterminados.
Las más populares (y también económicas) son las etiquetas pasivas, su principal ventaja
es que no necesitan batería ya que se activan con la propia energía RF, lo que causa que
tengan un menor coste y menor tamaño. La contrapartida es que tienen un alcance
máximo de 1m. Son ideales en caso que solo se necesite saber la zona donde se
encuentra el objeto sin importar la ubicación exacta. [8]
RFID en su versión pasiva se ha popularizado en los últimos años por ser la tecnología
con el tag de menor coste.
20
Figura 6: RFID
ZIGBEE
Zigbee es el nombre de la especificación de un conjunto de protocolos de alto nivel de
comunicación inalámbrica para su utilización con radiodifusión digital de bajo consumo,
basada en el estándar IEEE 802.15.4. Su objetivo son las aplicaciones que requieren
comunicaciones seguras con baja tasa de envío de datos y maximización de la vida útil de
sus baterías.
Experimentos realizados usando técnicas basadas en RSS en una red de sensores con
una densidad de 0.27 nodos por m2 y una distancia máxima de 20m arrojan un error de
posicionamiento inferior a 2m. [9]
Actualmente su mercado se limita fundamentalmente a redes de sensores de carácter
industrial y domótico gracias al uso de un estándar sencillo y abierto, y su bajo consumo.
Figura 7: Zigbee
21
BLE (Bluetooth Low Energy)
Se trata de la versión bluetooth 4.0 que viene incorporado en la mayoría de smartphones
desde 2013. Emite una señal de 2.4Ghz con un alcance de hasta 100 metros.
Usando beacons estratégicamente colocados que envían señales periódicas, se puede
determinar la localización del objeto deseado con un margen de error de 3m y una longitud
efectiva de hasta 50m.
Esta es una de las mejores opciones que hay actualmente ya que se trata de una
tecnología que incorporan muchos teléfonos móviles y otros dispositivos y donde antenas
referencias son de un coste muy bajo.
Como las tecnologías anteriormente comentadas, esta también necesita un despliegue de
infraestructura.
Figura 8: UWB
IEEE 802.11 (WiFi)
La principal ventaja de esta tecnología es su gran despliegue en términos de
infraestructura. Además, se la puede considerar como la tecnología de red de área local
más accesible, principalmente debido a su gran penetración en la sociedad, ya que la
práctica totalidad de los smartphone pueden y hacen uso de ella
La cobertura máxima de las redes IEEE 802.11 depende del de la norma empleada y del
equipo emisor y receptor, pero generalmente en interiores es inferior a 60m.
En el caso de WiFi y Bluetooth, presentan la ventaja de ser tecnologías se encuentran
disponibles en muchos dispositivos móviles, así como su elevada penetración entre los
usuarios. Sin embargo, WiFi cuenta con una vasta infraestructura de comunicación ya
desplegada, cosa que no se puede decir de Bluetooth. Esto permite que se pueda usar
cualquier infraestructura WiFi creada previamente para construir un mapa de huellas de
potencia a partir de las señales emitidas por los diferentes puntos de acceso.
En la siguiente tabla se muestra las especificaciones de cada tecnología: (por 1
dispositivo)
22
TECNOLOGIA PRECISIÓN ALCANCE ¿INFRAESTRUCTURA
DEDICADA PARA LA
LOCALIZACIÓN?
PRECIO
UWB 20cm <100m Si 25€/tag
[7]
RFID 10cm <5m Si 0.3€/tag
300€/elector
[8]
ZIGBEE 2m <100m Si 12€/tag
[9]
BLE 3m <50m Si 18€/beacon
[10]
WIFI 5m <90m No 0
Tabla 2: Comparación de tecnologías
En resumen, se podría decir que existen tecnologías que permiten un posicionamiento
preciso, como UWB, pero que habitualmente incurren en costes elevados.La mejor opción
en relación calidad precio se trataría Zigbee, pero seguimos necesitando una
infraestructura dedicada y aunque cada vez encontramos más opciones en el mercado
que lleven dicha tecnología, aún es muy inferior respecto al BLE o wifi.
La posibilidad que nos da la tecnología Wifi de usar cualquier red y cualquier smartphone,
hace que esta sea la opción más adecuada para lugares donde no se necesite una gran
precisión y en aquellos despliegues donde la escalabilidad sea un requerimiento
fundamental (número elevado de potenciales usuarios).
Para poder estudiar un sistema basado en WiFi Fingerprinting, es imprescindible poder
construir el mapa de señal de la fase offline. Es por eso que este trabajo va encaminado
a proveer de una aplicación para smartphones que permita recoger la información
necesaria para conformar las huellas de señal y generar los mapas de señal que
fundamenten una futura solución para el posicionamiento en interiores, basada en WiFi
Fingerprinting.
23
2.2. Aplicaciones actuales
Actualmente encontramos una gran variedad de aplicaciones que permiten la localización
en espacios de interior.
Situm Mapping Tool
Situm pone a disposición de los usuarios, una herramienta de calibración, localización y
navegación en interiores que permite la navegación en edificios que el mismo usuario
hayas creado previamente y calibrado.
Este sistema hace uso únicamente de las señales 3G/4G, de la brújula y del acelerómetro
del dispositivo.
Con esta aplicación, el usuario podrá:
- Calibrar sus edificios, permitiendo la localización en su interior.
- Ver los mapas y puntos de interés de los edificios creados
previamente en su dashboard (dashboard.situm.es).
- Navegar por el interior de los edificios ya calibrados y establecer
rutas hasta los puntos de interés.
[11]
IndoorAtlas MapCreator 2
Indoor Atlas es una aplicación para localización en interiores que afirma ser la más
completa de todas. Al igual que las anteriores también ofrece la posibilidad de traza de
rutas, pero además añade la opción de la visualización de un mapa de cobertura.
Lo que hace más interesante a esta aplicación el uso del campo magnético terrestre en el
interior de los edificios como principal fuente de información.
Los creadores afirman que el campo magnético interactúa de una manera diferente al
encontrarse con metal u otros materiales que se encuentran en el interior de edificios, lo
que hace fácil la caracterización del campo en cada posición. A estos datos se le añaden
los obtenidos por los sensores de redes inalámbricas Wifi, GPS y barómetro de presión.
Además, también ofrece la posibilidad de uso de Beacons BLE.
La aplicación también destaca por la posibilidad de cargar y descargar los mapas creados
por otros usuarios (aunque esta fase aún está en modo Beta).
[12]
Figura 9: Situm Mapping tool
Figura 10: IndoorAtlas
24
HERE Indoor Radio Mapper
HERE Indoor Radio Mapper es una aplicación para la creacón de mapas de interior a
través de la información obtenida por señales BLE y Wifi georeferenciadas.
La aplicación crea un mapa caracterizado por la potencia recibida de los puntos de acceso
Wifi y/o beacons BLE. Dicho mapa se mostrará en modo de mapa de calor y dará las
opciones de filtrar por calidad de señal, calidad de la infraestructura (número de beacons)
y por cantidad de medias.
Una vez se ha construido dicho mapa, se puede usar para la localización indoor.
El verdadero valor que tiene la aplicación es la gran importancia que le da al clouding,
haciendo posible que cualquier usuario pueda tener acceso a todos los mapas públicos de
una manera rápida y sencilla. [13]
Figura 12: Here indoor radio mapper 1
Figura 11: Here indoor radio mapper 1
25
MapWize
MapWize se define como la plataforma mapeado de interiores para edificios inteligentes.
La aplicación permite al usuario visualizar el interior y alrededores de cualquier edificio o
campus. Tiene una gran integración con los tradicionales mapas “outdoor”. El sistemas
esta centrado en la locacalización de productos de una tienda, piezas de arte en un museo,
estaciones de carga en un aeropuerto, asientos en una sala de conciertos e incluso en
caso de emergencia se puede usar para encontrar kits de emergencia, salidas de
emergencia o extintores de fuego. Para descargar un mapa el usuario tan solo tendrá que
escanear un código QR que encontrará en el edificio.
Usa las tecnologías BLE, WI-FI, LI-FI…
Figura 13: MapWize
26
2.2.1. Estudio comparativo de las aplicaciones actuales
Como se ha visto, el mercado de las aplicaciones para el RTSL está en pleno auge y cada
vez son más las aplicaciones que quieren ofrecer más opciones.
En las aplicaciones vistas en el apartado anterior se ve que como cada vez más se intenta
dar importancia a la acción de compartir los mapas creados por el usuario, y a la posibilidad
de obtener nuevos mapas creados por otros usuarios o por empresas de una manera muy
sencilla.
Situm Mapping
Tool
Indoor Atlas Map
creator
Here Indoo
Radio Mapper
MapWize
Obtiene datos de
RSS wifi ampliable a mas señales (BLE…)?
+ 3G/4G
+ brújula
+ acelerómetro
+ campo magnético
+ Wifi
+ BLE
+Acelerómetro
+Barómetro presión
+WIFI
+BLE
+ Wifi
+ (ampliable a cualquier tecnología)
Parámetros de
medición editables No No No No
Visualización de detallada de cada medida
No No No No
Guardar datos en crudo en la BD
No No No No
Mapa de calor
personalizable No No Si No
Cargar/descargar mapas
Si Si (en un futuro) Si Si
Tabla 3: Comparación de Apps
Como se puede ver, las aplicaciones existentes actualmente, hacen uso del “clouding”
para poder compartir los mapas creados fácilmente. Y es que, el que los usuarios puedan
acceder fácilmente a los mapas creados es una prioridad.
En algunas el usuario ha de hacer una búsqueda manual del mapa. En otras como en el
caso de MapWize, ofrecen la opción de que el creador del mapa lo comparta mediante un
código QR. Por ejemplo, en un recinto, ese código QR se pondría en un punto de
información tradicional, entonces el usuario leería ese código, automáticamente se
descargaría el mapa, y ya podría realizar búsquedas de lugar de interés y seguir una ruta
para llegar a ellos.
Es por eso que para nuestra aplicación el poder centralizar las medidas de todos los
usuarios en una misma base de datos es vital. El objetivo es plantear en un futuro un
repositorio de mapas de señal accesible para toda la comunidad de usuarios, reutilizable
y ampliable, con el que desplegar nuevos servicios y favorecer la investigación de nuevos
algoritmos de posicionamiento basados en WiFi fingerprinting.
27
3. Requerimientos y especificaciones
Este Proyecto tiene como objetivo cumplir una serie de requerimientos y especificaciones:
3.1. Requerimientos
3.1.1. Requerimientos funcionales
- RF01: Ha de ser una aplicación que permita la creación de un número
indeterminado de mapas y adición de medidas en él de forma sencilla.
- RF02: Los mapas creados en el pasado se deben poder recuperar y visualizar
los datos vinculados al mismo.
- RF03: Ha de permitir la visualización de mapas de calor de acuerdo a múltiples
criterios, como por ejemplo:
o Seleccionando el tipo de señales que se quiere mostrar
o Numero de AP’s: en función del número de puntos de acceso de los que
se puedan tener en cuenta en los determinados puntos
o Coverage indicator: en función del nivel de señal recibido en los distintos
puntos
- RF04: Visualización de los datos tomados en un punto: Se ha de poder ver un
registro completo de la señal capturada durante un espacio de tiempo.
- RF05: Aunque esta versión solo funcionará con señales Wifi, se ha de seguir
una metodología que permita ser ampliable con otras tecnologías (ej.
Bluetooth)
- RF06: Para cada medida se tendrá que indicar: el tipo de señal medido,
orientación y ubicación unívoca de los datos (ej. edificio, planta, x,y,z), y fecha
en la que se produjo la captura de los datos.
- RF07: El usuario ha de poder personalizar en cualquier momento los
parámetros en que se hará la medición: sampling rate, tiempo de medición,
repeticiones y tiempo entre repeticiones.
- RF08: Se ha de poder gestionar los datos en la propia aplicación (eliminación
de medidas tomadas y selección de las correctas).
- RF09: La aplicación ha de tener una manera de poder cargar/ descargar los
datos en un Web Service.
3.1.2. Requerimientos no funcionales
- RNF01: La aplicación tendrá que soportar Android 4.4 o superior
- RNF02: Deberá ser accesible para dispositivos con pantalla de 5’’ o más.
- RNF03: Se tendrá que poder usar en móvil o tableta.
- RNF04: Se tendrá que tener en cuenta la posibilidad de uso de la aplicación en
dispositivos con capacidades indeterminadas.
- RNF05: Todas las medidas se tendrán que guardar en crudo y a la vez se
tendráN que tratar los datos para poderlos visualizar de manera sencilla
- RNF06: De acuerdo con las recomendaciones que da Google para la
comunidad de desarrolladores, se seguirán las guías marcadas por Material
Design.
- RNF07: Se intentará reducir al mínimo la cantidad de información almacenada
en el dispositivo a cuenta de los datos almacenados.
- RNF08: La aplicación debe ser usable
28
- RNF09: La curva de aprendizaje debe ser suave
3.2. Especificaciónes
3.2.1. Estructura
La aplicación creada, tal y como se ha comentado anteriormente, se enmarca en el
subsistema cliente. El diseño planteado constará de 3 pantallas principales (o actividades):
- Captura de datos: Donde se cargará el mapa y se realizaran las capturas de
señal.
- HeatMap: Donde se podrá visualizar en forma de mapa de calor todos los datos
obtenidos de cada mapa
- Gestor de datos: Donde se podrá eliminar los mapas o medidas creadas.,
descargar las medidas hechas por otros usuarios que se encuentran en un
servidor o subir las creadas.
El hecho de disponer de un número reducido de actividades se enfoca a dar cumplimiento
al requerimiento RF01.
La aplicación tendrá que tener un menú lateral desplegable que permita navegar de forma
sencilla entre las tres pantallas.
A continuación, se explicará en detalle el funcionamiento y especificaciones de las
diferentes pantallas.
Finalmente, en el punto 3.3 se mostrará un diagrama de flujo completo.
3.2.1.1. Pantalla Captura
El usuario tendrá que cargar un mapa usado previamente o crear uno de nuevo.
En caso de crear uno de nuevo tendrá que indicar:
- Nombre del mapa
- Edificio
- Planta
- Imagen
El usuario podrá elegir entre tomar una fotografía al momento un cargar un previamente
guardada en la memoria del teléfono.
Una vez el mapa este cargado, en la pantalla se mostrarán los siguientes apartados:
- Imagen del mapa donde se pueda marcar el punto a medir.
- Campos para rellenar con la coordenada y el ángulo.
- Una lista con todas las señales que capta el dispositivo en ese instante
detalladas.
- Un apartado donde se puedan ver y editar los parámetros que se van a usar
para realizar la medición.
- Un botón que al ser tocado realice la captura de la medida.
29
Una vez ha empezado la medida, tendrá que aparecer un dialogo donde se muestre en
tiempo real la progresión de la captura (número de muestra actual, muestras totales,
repetición…)
Una vez la captura de señal a finalizado se tendrá que poder visualizar en detalle todos
los datos de ella: datos de la medida (mapa, punto, fecha, parámetros), todos los puntos
de acceso capturados y su detalle (SSID, BSSID y media, varianza y calidad). Idealmente
se tendrá que poder ver una gráfica con la progresión temporal de las muestras de cada
punto de acceso.
3.2.1.2. Pantalla HeatMap
Se llegará a esta pantalla seleccionando “HeatMap” en el menú lateral.
Primeramente, el usuario tendrá que seleccionar el mapa.
A continuación, se mostrará una pantalla formada por la imagen del mapa, un campo
donde poder introducir la coordenada, otro donde indicar el tipo de señal y otro donde
indicar el rango de fechas de la creación de la medida a mostrar.
El usuario podrá filtrar los datos que quiere que represente el mapa de calor y las variables
que represente (según nivel de cobertura, según calidad, número de puntos de acceso…).
El usuario podrá marcar y desmarcar los puntos de acceso que quiere o no que se
muestren.
3.2.1.3. Pantalla Gestor de datos
Se llegará a esta pantalla seleccionando “Gestor de mapas” en el menú lateral.
Una vez en dicha pantalla, el usuario podrá elegir entre sincronizar datos o eliminar.
A continuación, se seleccionará él o los mapas creados en un determinado rango de
fechas.
En ambos casos, se mostrará la misma pantalla:
- Imagen del mapa con todos los puntos medidos sobrepuestos
- Un seleccionable donde poder elegir entre todas las coordenadas disponibles.
- Un cuadro donde se muestren todas las medidas que corresponden con dichos
parámetros
El usuario entonces podrá seleccionar fácilmente todas las medidas que desee, y
diferenciando si está en el modo sincronizar datos o eliminar, podrá subirlos a un servidor
o eliminarlos de la base de datos de la memoria del dispositivo.
30
3.3. Diagrama de flujo
A continuación, se muestra el diagrama de flujo completo de la aplicación:
Figura 14: Diagrama de flujo, 1
33
3.4. Diagrama de clases
Aunque este proyecto se ha centrado únicamente en la toma de medidas de redes wifi, uno de los requerimientos iniciales es la posibilidad de poder captar y manejar señales de todo tipo, como por ejemplo BLE (RF05). Es por eso que la aplicación se ha de desarrollar pensando en una futura ampliación que permita añadir nuevos casos de uso de manera sencilla
A continuación, se muestra el diagrama de clases. Basándonos en la premisa de una
futura ampliación de la aplicación, se puede ver como la estación base será una clase
abstracta de la que heredarán los diferentes tipos de puntos de acceso. Lo mismo pasa
con las medidas, se ha de dejar la puerta abierta a las mejoras que vendrán en un futuro.
Figura 18: Diagrama de clases
34
4. Captura de datos
Como se ha dicho anteriormente el gran problema de los sistemas que usan nivel de
potencia de señal para la localización, es su fluctuación.
Incluso en una localización fija, la fuerza de la señal en un punto puede presentar
variaciones que se mantiene en un rango de 10 dB.
Es por eso que en este caso cobra vital importancia obtener unas medidas lo más
fidedignas a la realidad. Para ello es muy importante capturar la señal recibida durante un
periodo de tiempo amplio para después poder obtener parámetros estadísticos de ella, y
poder así, en un futuro minimizar el error de localización.
4.1. Parámetros de captura
A fin de solventar los problemas nombrados en el 0 durante la fase de tomas de medidas,
se ha de realizar un escaneo completo que obtenga todas las medidas de todos los puntos
de acceso disponibles, y repetir este proceso varias con tal de obtener unos datos lo más
representativos posibles de la realidad.
Se tendrán cuatro parámetros a tener en cuenta:
- Numero de repeticiones: cuantas más repeticiones se hagan, más información
en diferentes condiciones se obtendrá.
- Tiempo entre repeticiones: permite obtener diferentes mediciones en diferentes
condiciones.
- Número de muestras en cada repetición: permite obtener suficiente información
de posicionamiento para el procesado posterior.
- Tiempo entre Muestras: Permite obtener información a cerca de la periodicidad
con la que los puntos de acceso se dan a conocer mediante paquetes Beacon,
a fin de poder desechar los APs menos activos en la fase de localización.
En el siguiente esquema temporal se podrá ver claramente la función de cada parámetro:
Figura 19: Esquema temporal
Se implementará de la siguiente manera:
Mediante la clase BroadcastReceiver, perteneciente a Android, se realizará un escaneo
de las redes wifi disponibles donde se obtendrán muestras. Acto seguido se espera el
35
período marcado, y se volverá a hacer un escaneo. Esta acción se repite tantas veces
como hayamos indicado en el parámetro “Numero de muestras en cada repetición”.
Una vez se haya alcanzado ese número de muestras, el proceso se esperará los
milisegundos marcados en el parámetro “Tiempo entre repeticiones”. Al finalizar ese
tiempo, el proceso entero se volverá a repetir tantas veces como se haya indicado en el
parámetro “Numero de Repeticiones”.
A continuación se muestran los logs de una medida usando los parámetros
4.2. Parámetros de calidad
A partir de los resultados obtenidos se podrá obtener información que caracterice el nivel
de señal respecto un punto de acceso como pueden ser la media, la varianza o la calidad.
La calidad se podrá calcular fácilmente de la siguiente forma:
𝐶𝑎𝑙𝑖𝑑𝑎𝑑 =𝑛ú𝑚𝑒𝑟𝑜 𝑑𝑒 𝑚𝑢𝑒𝑠𝑡𝑟𝑎𝑠 𝑑𝑒 𝑢𝑛 𝐴𝑃
𝑛ú𝑚𝑒𝑟𝑜 𝑑𝑒 𝑚𝑢𝑒𝑠𝑡𝑟𝑎𝑠 𝑡𝑜𝑡𝑎𝑙𝑒𝑠= 0 𝑜𝑟 1
Además, también se podrán calcular otras variables que caractericen un punto concreto
del mapa, como pueden ser la cobertura, numero de AP disponibles, varianza de la calidad
de los diferentes AP’s…
Todos estos parámetros se podrán usar como variables para la posterior creación del
mapa de calor.
Muestras = 2, Periodo = 400ms, Repeticiones = 2, Tiempo = 2.
MAC: 00:1a:2b:8a:02:3c SSID: WLAN_744A POTENCIA[dBm]: -64Timestamp: 396067755378 mSamples: 0 numMuestra: 0
MAC: 00:1a:2b:85:04:fb SSID: WLAN_2A5E POTENCIA[dBm]: -82Timestamp: 396067755570 mSamples: 3 numMuestra: 0
MAC: a8:d3:f7:27:98:47 SSID: Orange5G-9844 POTENCIA[dBm]: -85Timestamp: 396067755534 mSamples: 6 numMuestra: 0
MAC: 98:01:a7:e8:86:62 SSID: Barcelona1 POTENCIA[dBm]: -91Timestamp: 396067756185 mSamples: 7 numMuestra: 0
I/ScanWifi: New scan
MAC: 00:1a:2b:8a:02:3c SSID: WLAN_744A POTENCIA[dBm]: -60Timestamp: 396072444468 mSamples: 0 numMuestra: 1
MAC: 00:1a:2b:85:04:fb SSID: WLAN_2A5E POTENCIA[dBm]: -77Timestamp: 396072444528 mSamples: 1 numMuestra: 1
MAC: a8:d3:f7:27:98:47 SSID: Orange5G-9844 POTENCIA[dBm]: -85Timestamp: 396072444556 mSamples: 5 numMuestra: 1
MAC: 98:01:a7:e8:86:62 SSID: Barcelona1 POTENCIA[dBm]: -88Timestamp: 396072444603 mSamples: 8 numMuestra: 1
I/ScanWifi: New scan
MAC: 00:1a:2b:8a:02:3c SSID: WLAN_744A POTENCIA[dBm]: -57Timestamp: 396077158843 mSamples: 0 numMuestra: 0
MAC: 00:1a:2b:85:04:fb SSID: WLAN_2A5E POTENCIA[dBm]: -76Timestamp: 396077159087 mSamples: 2 numMuestra: 0
MAC: 98:01:a7:e8:86:62 SSID: Barcelona1 POTENCIA[dBm]: -88Timestamp: 396077159235 mSamples: 8 numMuestra: 0
MAC: a8:d3:f7:27:98:46 SSID: Orange-9844 POTENCIA[dBm]: -88Timestamp: 396077159271 mSamples: 10 numMuestra: 0
I/ScanWifi: New scan
MAC: 00:1a:2b:8a:02:3c SSID: WLAN_744A POTENCIA[dBm]: -58Timestamp: 396081866873 mSamples: 0 numMuestra: 1
MAC: 00:1a:2b:85:04:fb SSID: WLAN_2A5E POTENCIA[dBm]: -76Timestamp: 396081867025 mSamples: 2 numMuestra: 1
MAC: a8:d3:f7:27:98:46 SSID: Orange-9844 POTENCIA[dBm]: -88Timestamp: 396081867226 mSamples: 9 numMuestra: 1
36
5. Diseño e implementación de UI
5.1. Diseño de UI
Una vez especificados al detalle que requerimientos ha de tener cada pantalla se realiza
el diseño de ellas.
Para ello se han de tener en cuenta las pautas y componentes proporcionados por Material Design. [14]
Para ello se ha realizado un prototipo usando el programa Adobe XD, y el pack de
componentes de Material Desings. [15]
5.1.1. App bar y navegación
La aplicación contará con una App bar donde se podrá ver; un icono de navegación (1), el
título de la pantalla actual (2), y un “overflow menú” (3) que se podrá usar para añadir un
dialogo de ajustes o información.
Figura 20: App Bar
Al clicar el icono de navegación o al hacer un desplazamiento con el dedo desde el lateral
izquierdo hacia el centro de la pantalla aparecerá en menú de navegación (navigation
drawer).
Ese menú nos permitirá navegar entre las diferentes pantallas disponibles.
Figura 21: Menú
(1) (2) (3)
37
5.1.2. Captura de datos
A esta pantalla entraremos clicando la opción “Captura de datos” del menú de navegación.
Justo al cargarse la pantalla aparecerá un dialogo que nos mostrará una lista de mapas
cargados previamente.
Podremos seleccionar uno de la lista o dar clic en “Nuevo mapa” para crear uno de nuevo
Si elegimos crear un nuevo mapa aparecerá un nuevo dialogo, donde el usuario tendrá que introducir: el Nombre del mapa, edificio donde se encuentra y la planta:
Finalmente, al clicar en “Cargar imagen” se abrirá la cámara para realizar la fotografía.
Estos campos serán obligatorios, no se habilitará el botón “Cargar imagen” hasta que estos estén rellenados.
Figura 23: Prototipo Cargar Mapa Figura 22: Prototipo Crear Mapa
38
Una vez cargada la imagen, aparecerá el siguiente dialogo donde se mostrarán los datos e imagen introducidos. El usuario podrá entonces Guardar los datos o cancelar y
empezar el proceso de nuevo.
Una vez seleccionado el mapa de la lista o creado uno de nuevo, el usuario podrá ver la siguiente pantalla. En ella se mostrará el mapa, con una línea de campos donde introducir las coordenadas y Angulo.
En la mitad inferior de la pantalla se podrán ver todos los puntos de acceso que capta el terminal de manera detallada, y un conjunto de cuatro campos editables donde el usuario
podrá introducir los parámetros con que se tomará la captura.
Figura 25: Prototipo, Captura
En cuanto el usuario clique en “Start” empezará la captura
Figura 24: Prototipo, Guardar Mapa
39
Mientras la captura esta en proceso, se mostrará un diálogo donde se podrá ver información del progreso de la captura y con un botón para poder cancelarla.
Figura 26: Prototipo, Capturando
Una vez finalizada la captura se mostrará un nuevo diálogo donde se mostrarán los parámetros de la medición y los resultados obtenidos.
Figura 27: Prototipo, resultado captura
Si el usuario, clica en guardar, se guardaran los resultados en la base de datos, por el contrario, si se elige cancelar se desecharán.
Seguidamente la aplicación volverá a la pantalla principal de captura de datos donde el usuario podrá crear otra medida de nuevo.
40
5.1.3. HeatMap
A esta pantalla se entrará clicando la opción “Captura de datos” del menú de navegación.
Justo al cargarse la pantalla aparecerá un dialogo que nos mostrará una lista con los
mapas disponibles, entre los que tendrá que elegir el usuario.
Figura 28, Prototipo, cargar mapa
Una vez cargado el mapa aparecerá una pantalla, donde se podrá ver:
- El mapa con un mapa de calor sobrepuesto - Un campo donde introducir las coordenadas - Un campo donde seleccionar el tipo de mapa que se desea mostrar - Dos campos donde poder indicar un rango de fechas para filtrar las medidas. - Un apartado donde aparecerá una lista con los datos de la medida tomada en
la coordenada seleccionada.
41
Figura 29: Prototipo, heatmap
5.1.4. Gestor de datos
A esta pantalla se entrará clicando la opción “Gestor de datos” del menú de navegación.
Justo al cargarse la pantalla aparecerá una pantalla donde podremos elegir la acción que
queremos hacer: sincronizar datos o eliminarlos.
Figura 30, Prototipo gestor 1
Una vez escogida la opción deseada se mostrará un dialogo donde el usuario podrá elegir
uno o múltiples mapas.
42
A continuación, se mostrará otro diálogo donde el usuario indicará el rango de fechas de las medidas que quiere usar.
Seguidamente la aplicación mostrará la pantalla de gestión de datos específica para la acción que haya indicado.
En ambas opciones se podrá visualizar:
- Mapa con todos los puntos con medidas realizadas - Una línea de campos donde poder introducir una coordenada y ángulo - Un botón de check - Una lista con todas las medidas filtradas por los campos introducidos - Un botón para volver a la pantalla de selección de acción - Un botón para resetear la lista a su estado original - Un botón “Aceptar” para ejecutar la acción
En caso de seleccionar la acción Eliminar aparecerán todos los puntos deseleccionados y el usuario tendrá que seleccionarlos uno a uno o todos haciendo uso del check.
En el caso de Sincronizar aparecerá el check “Todos” marcado, y el usuario podrá eliminar medidas de la lista apretando la “X” roja de cada elemento.
Figura 31: Prototipo cargar mapa gestor
Figura 32: Prototipo, seleccionar rango fecha gestor
43
Una vez seleccionadas las medidas deseadas, al aceptar saldrá una advertencia que se tendrá que aceptar para que la aplicación ejecute la acción.
Figura 34: Prototipo eliminar medidas
Figura 33: Prototipo, cargar medidas
Figura 36: Prototipo, confirmación eliminar
Figura 35: Prototipo, confirmer subir datos
44
5.2. Implementación
Una vez se ha acabado la fase de diseño empieza la fase de desarrollo.
Para este proyecto se ha optado por Android Studio como IDE, ya que se trata del oficial
de la plataforma Android. [16]
Como la aplicación consta de un panel de navegación, se optó por crear un proyecto
marcando la opción Navigation Drawer Activity que nos da Android Studio.
Esta opción simplifica mucho la implementación de la navegación entre las diferentes
pantallas.
Siguiendo los consejos que da la guía de desarrolladores de Android se han usado
Fragments para la implementación de todas las pantallas.
Algunas de las ventajas que ofrece el uso de Fragments son las siguientes:
- Posibilidad de combinar múltiples fragments en una actividad.
- Cada fragmento tiene un ciclo de vida propio, que se puede alterar mientras la
actividad se esté ejecutando. (idea de subactividad).
- Control de varios fragments simultáneamente desde una misma actividad
- Cada fragmento tiene su propio diseño de vista.
- Fácil interacción entre la actividad padre u otros fragments.
- Posibilidad de creación de diseños mas dinámicos y flexibles en grandes
pantallas como las tablets.
Figura 37: Fragments vs Actividades
45
A continuación, se mostrará el layout que usará cada fragment y la actividad principal:
(las capturas que se muestran son solo del layout creado, por lo tanto, carecerá de datos)
Main Activity: Captura de datos: HeatMap:
Gestor de datos:
Figura 40: UI menú Figura 38: UI, Captura Figura 39: UI, heatmap
Figura 42: UI gestor Figura 41: UI, gestor datos
46
6. Diseño e implementación de la Base de Datos
6.1. Diseño de la base de datos
El esquema que usará la base de datos será el siguiente:
Figura 43: Base de datos
A partir de este esquema cabe destacar lo siguiente:
- El campo IMG de Mapa, contiene el path donde se encuentra la imagen. - Cada coordenada guarda el identificador del mapa al que pertenece, las
coordenadas X,Y,Z y el pixel X e Y de la imagen al que pertenecen esas coordenadas.
- Cada mapa ha de tener coordenada origen - Pueden haber infinitas medidas para una misma coordenada. - En los campos fecha inicio y final de medida, se indica el momento en que se
empieza a tomar la captura y el momento en que finaliza. - La tabla muestras, sirve para diferenciar las diferentes repeticiones. - El objeto Muestra indica el calor de potencia de una muestra respecto un
punto de acceso.
47
6.2. Implementación de la base de datos
Primeramente, se realizó la base de datos mediante SQLite editor, ya que, en Android, la
forma típica para crear, actualizar, y conectar con una base de datos SQLite es a través
de una clase auxiliar llamada SQLiteOpenHelper
Pero la verdad es que, aunque la API SQLiteOpenhelper es muy potente, actualmente
desde la propia guía de desarrollo de Android la desaconsejan, ya que es de muy bajo
nivel y requiere una gran cantidad de tiempo y esfuerzo de implementación. Es por eso
que actualmente se recomienda usar la recientemente creada librería Room [20], que
actúa como una capa de abstracción para acceder a la información de la base de datos
SQLite de la aplicación.
Room se encuentra dentro del conjunto de bibliotecas Architecture Components
presentadas en el Google I/O de 2017.
Dentro de este conjunto de bibliotecas se encuentran:
- Room
- LiveData
- Handling Lifecycle
- ViewModel
Todos estos componentes están realizados para simplificar al desarrollador la creación de
base de datos, su manejo, y la posibilidad de actualizar la UI de una manera muy sencilla
en casos de bases de datos que cambian constantemente por terceros.
En este proyecto solo se usará la librería Room
6.2.1. Room
6.2.1.1. Creación de entidades
Como se ha dicho anteriormente Room accede a la base de datos SQLite de la aplicación
con objetos integrados en la aplicación y realiza las verificaciones en tiempo de
compilación.
Gracias a ello, la creación de las entidades de la base de datos resulta idéntica a la manera
en cómo se declaran las clases tradicionalmente.
Por ejemplo:
Figura 44: Crear entidad
Para indicar que ese objeto representa una entidad dentro de la base de datos basta con
poner la notación “@Entity”.
48
Seguidamente se indican las diferentes claves foráneas tal y como se ve en el ejemplo.
Para identificar la Clave Primaria basta con poner la notación “@PrimaryKey” justo encima
del atributo deseado.
En caso querer asignar un identificador automático a la entidad, se añadirá la
propiedad ”autoGenerate”
6.2.1.2. Acceso a datos usando DAOs
Una vez creadas todas las entidades se debe definir la interfaz DAO (Data Acces Object).
En esa interfaz se encontrarán todas las operaciones que podrá usar nuestra aplicación
para consultar o modificar la base de datos.
Las operaciones se pueden definir de una manera muy sencilla usando lenguaje SQL
Figura 45: Crear DAO
Esta interfaz deberá llevar al inicio la anotación @Dao.
Para cada operación que se defina se tendrá que poner una notación:
@Query para para las funciones de consulta.
@Insert para las de creación.
@Delete para las de eliminación.
@Update para las de actualización.
49
Una vez instalada la aplicación en el dispositivo podremos ver que en la carpeta
“Data/Data/com.upc.tfg.WifiMapBuilder/Database” se habrá creado un archivo que
contiene esa base de datos.
Por ejemplo, podemos usar
SQLiteStudio para abrir ese
archivo y ver todos los datos de
las tablas.
6.2.2. Gestión de procesos
Debido a que la entrada en base de datos en Android es desaconsejable realizarla en el
thread principal, es necesario crear un sistema para poder organizar todas las consultas
en segundo plano. En Android se deben usar clases que extiendan de Asynctask.
Esta clase permite realizar operaciones en segundo plano y publicar resultados en el
subproceso de interfaz de usuario de manera sencilla.
Como en nuestro caso habrá un gran número de métodos a implementar se ha decidido
por:
- Crear la clase “Manager” que contenga los métodos más comunes y haga
llamadas a la interficie DAO
- La clase MyAsyntask, se encargara de manejar dichos métodos en segundo
plano, mostrar en la UI el progreso, y control de errores.
Figura 46: SQLite Studio
50
Figura 47: MyAsyntask
Estos son los métodos que encontramos dentro de la clase Manager:
Figura 48: Clase Manager
52
7. Esquema clases
A continuación, se muestra un esquema con las principales clases que actúan.
Tabla 4: Esquema de clases
Para ver y descargar el código, acceder a:
https://gitlab.com/imartin/WifiMapBuilder.git
53
8. Resultados
Durante la realización del proyecto han surgido múltiples dificultades que han limitado el
alcance del mismo. Entre las más destacables se sitúan:
Paquete de trabajo 1 y 2. Estos paquetes de trabajo son críticos y se invirtió mucho tiempo
en analizar las soluciones existentes y establecer los requerimientos a cumplir.
Paquete de trabajo 3. Se invirtió un esfuerzo especial en el diseño previo de la interfaz, de
forma que fuera especialmente usable y capaz. La generación de un prototipo navegable,
independiente de la tecnología finalmente usada, fue también un factor que retrasó el
proceso de implementación.
Paquete de trabajo 4. A lo largo del proyecto surgieron múltiples dificultades. por ejemplo,
la realización de la base de datos mediante SQLOpenHelper para posteriormente volverla
a rehacer desde el principio usando Room (de acuerdo a las guías reportadas en Android
Developer), implementación de las diferentes pantallas navegables de acuerdo a las
directrices acordadas en el prototipo funcional, etc.
Paquete de trabajo 6. El tener que invertir tiempo en la formación de programación en
Android, junto con la formación en sistemas de posicionamiento impidieron el correcto
avance en tiempo del proyecto, según la planificación inicial.
Por todo ello, se decidió no implementar la pantalla encargada de la gestión de datos y de
la subida de ellos a un Web Service. Esta funcionalidad se delega en un futuro a la
construcción del subsistema servidor, en tanto en cuanto se deberá establecer la interfaz
de comunicación con el mismo.
8.1. Prueba de uso
A continuación, se documentará una prueba completa de funcionamiento.
1- Visionado del menú y perfecto funcionamiento de la appBa
Figura 50: Prueba de uso, menú
54
2- Al entrar en “Captura de datos” se muestra diálogo con lista de mapas
Figura 51: Prueba de uso, cargar mapa
3- Al seleccionar Nuevo Mapa se mostrará el siguiente diálogo donde se
introducirán los datos del mapa.
Figura 52: Prueba de uso, nuevo mapa
55
4- Una vez cargada la foto aparecerá el siguiente dialogo donde se pedirá confirmación para guardar el mapa en la base de datos.
Figura 53: Prueba de uso, guardar nuevo mapa
5- Una vez cargado el mapa, se pedirá al usuario que introduzca la coordenada
origen en el mapa clicando en el punto deseado de la imagen.
Figura 54: Prueba de uso, coordenada origen
56
6- A continuación, se mostrará la pantalla captura de datos. Se podrán realizar escaneos rápidos de las señales disponibles. Una vez introducida la posición y clicando en el punto deseado en la imagen, el usuario debe apretar “Select”, modificar los parámetros si lo desea y darle a “Start” para empezar la captura de datos.
Figura 55: Prueba de uso, precaptura
7- Mientras se realiza la captura se mostrará un diálogo donde se muestra el
progreso.
Figura 56: Prueba de uso, dialogo capturando
57
8- Una vez a finalizada la captura aparecerá un diálogo donde se podrán ver los resultados de la medida realizada. Al clicar en “Aceptar” la aplicación volverá al punto 6.
Figura 57: Prueba de uso, resultado captura
9- El usuario podrá entrar en la pantalla “HeatMap” a través del menú lateral. Al entrar aparecerá un dialogo donde el usuario tendrá que escoger un mapa de la lista.
Figura 58: Prueba de uso, Heat map, cargaar mapa
58
10- El mapa se cargará. Una vez cargado el usuario escogerá la variable que quiera visualizar (de momento solo esta implementado la cobertura, a través del número de puntos de acceso). Al clicar en el tipo filtro se visualizará el heatMap.
Figura 59: Prueba de uso, heatmap
11- El usuario podrá escoger un punto y aparecerá un recuadro con los datos de la
medida tomada en ese punto (en desarrollo)
(captura con varios puntos)
59
9. Presupuesto
A lo largo de este proyecto se han realizado tareas de todo tipo: análisis de diferentes
tecnologías, estudio de mercado, diseño, programación…
Es por eso que en este proyecto tendrían que estar involucrados trabajadores con distintos
perfiles:
- Un Consultor que se encargaría de hacer el trabajo funcional: véase estudio de
las tecnologías existente, análisis de mercado, toma de requerimientos y
especificaciones, y diseño de los casos de uso de la aplicación.
- Un diseñador, al que se le asignarían las tareas de: diseño del prototipo y de
todos los grafismos necesarios.
- Un programador, el cual tendría una dedicación completa al proyecto, al que se
le asignarían las tareas más técnicas: diagrama de clases, diseño y creación
de base de datos y el desarrollo de la aplicación.
El diseñador y el programador tendrán un nivel junior, en cambio el consultor que hará al
mismo tiempo de Project Manager será necesario que sea de un perfil más senior.
A continuación, se mostrará el cuadro con el presupuesto final detallado:
Como se puede ver, el desarrollo de este proyecto, tendrá un precio total de 9035€.
Dado que el sistema de gestión de datos no se llegó a implementar por falta de tiempo,
este se hará en un futuro sin cargo alguno.
State of art 2 6 25 300
Analisis de Requerimientos 3 5 25 375
Casosde uso (diagramas de actividad) 3 4 25 300
Diseño de prototipo UI 4 8 12 384
Diagramas de clase 3 4 18 216
Diseño Base de Datos 3 8 18 432
Construccion UI 5 10 12 600
Implementación Creacion BD 3 15 18 810
Desarrollo 7 25 18 3150
Documentacion Memoria 3 12 25 900
Estudio Curso Coursera 11 4 0 0
7467 TOTAL
9035,07 TOTAL+IVA
€/H TOTAL €Mòdulo Tarea
Estudio PREVIO
DISEÑO
Semanas h/semana
Precio la hora
Consultor 25
Diseñador 12
Programador 18
Tabla 5: Presupuesto
60
10. Conclusiones y futuros desarrollos
Como se comentó en el punto 1.1 esta aplicación se encuentra dentro de un sistema
formado por 3 subsistemas. La aplicación desarrollada en este proyecto, el servidor, y la
aplicación de localización. Es por eso, que en un futuro se tendrían que implementar los
dos subsistemas restantes.
Como se dice en el punto 8, Durante la realización del proyecto han surgido múltiples
dificultades que han limitado el alcance del mismo. Aun así, se ha hecho un gran trabajo
dado el tiempo establecido.
Los principales objetivos del proyecto están completados, solo quedará realizar la
implementación del sistema de gestión de datos que quedará delegado al subsistema
siguiente.
A nivel personal, podría extraer la satisfacción de haber aprendido a programar Android
desde 0, y a haber llegado a realizar una aplicación, que en un principio destacaba por su
dificultad, casi al completo.
61
11. Bibliografía
[1] M. S. E. O. E. Doukhnitcha, «An efficient approach for trilateration in 3D positioning,» Elsevier, 2008.
[2] C. B. a. M. Klepal, «Fingerprinting Based Localisation Revisited,» de 2012 International Conference on
Indoor Positioning and Indoor Navigation, 13-15th November 2012 , Cork, Ireland , 2012.
[3] X. Y. J. C. *. a. F. D. Jiahong Li, «A Novel Robust Trilateration Method Applied to Ultra-Wide Bandwidth
Location Systems,» Beijing Institute of Technology,, Beijing, 2017.
[4] K. W. H. Arthaber, «https://rainrfid.org/wp-content/uploads/2016/03/RAIN-RFID-TUGraz.pdf,» [En
línea]. Available: https://rainrfid.org/wp-content/uploads/2016/03/RAIN-RFID-TUGraz.pdf.
[5] «RFID Tag Maximum Read Distance,» 2015. [En línea]. Available:
http://skyrfid.com/RFID_Tag_Read_Ranges.php.
[6] M. Sugano, «INDOOR LOCALIZATION SYSTEM USING RSSI MEASUREMENT OF WIRELESS
SENSOR NETWORK BASED ON ZIGBEE STANDARD,» School of Comprehensive rehabilitation
Osaka Prefecture University , Osaka .
[7] Decawave, «UWB Tag to buy,» [En línea]. Available:
https://www.semiconductorstore.com/cart/pc/viewPrd.asp?idproduct=50013.
[8] atlasrfidstore, «Rfid Tg buy,» [En línea]. Available: https://www.atlasrfidstore.com/rfid-tags/.
[9] Ebay, «Zigbee module,» [En línea]. Available: https://www.ebay.com/itm/2-Pack-Digi-XBee-S2-Series-
2-Zigbee-module-U-FL-connector-XB24-Z7UIT-004-/122643530923.
[10] accent-systems, «BLE Beacon,» [En línea]. Available: https://accent-systems.com/product/ibks-105/.
[11] Situm, «Situm Mapping Tool,» [En línea]. Available:
https://play.google.com/store/apps/details?id=es.situm.maps&hl=es.
[12] IndoorAtlas, «IndoorAtlas MapCreator 2,» [En línea]. Available:
https://play.google.com/store/apps/details?id=com.indooratlas.android.apps.jaywalker.
[13] H. I. Radio, «HERE Indoor Radio Mapper,» [En línea]. Available:
https://play.google.com/store/apps/details?id=com.here.hirmu.
[14] A. Material Design, «Material Desings,» 2018. [En línea]. Available: https://material.io/design/.
[15] Adobe, «Adobe xd,» 2018. [En línea]. Available: https://www.adobe.com/es/products/xd.html.
[16] A. Developer, «Android Developer,» [En línea]. Available: https://developer.android.com/.
[17] S. M. I. a. F. L. H. S. M. I. Y. Alvarez, «ZigBee-based Sensor Network for Indoor,» Área de Teoría de la
Señal y Comunicaciones, Universidad de Oviedo, Oviedo.
[18] J. M. C. S. W. B. Johannes Wendeberg, «Robust Tracking of a Mobile Beacon using Time Differences
of Arrival with Simultaneous Calibration of Receiver Positions,» de Department of Computer Science,
University of Freiburg, Germany, 2012.