188
UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE INFORMÁTICA GRADO EN INGENIERÍA INFORMÁTICA TECNOLOGÍA ESPECÍFICA DE COMPUTACIÓN TRABAJO FIN DE GRADO ShoppingBeacon: Sistema asistencial en superficies comerciales basado en posicionamiento en interiores Francisco Jiménez Moral Septiembre, 2015

Sistema asistencial en superficies comerciales basado en

Embed Size (px)

Citation preview

Page 1: Sistema asistencial en superficies comerciales basado en

UNIVERSIDAD DE CASTILLA-LA MANCHA

ESCUELA SUPERIOR DE INFORMÁTICA

GRADO EN INGENIERÍA INFORMÁTICA

TECNOLOGÍA ESPECÍFICA DECOMPUTACIÓN

TRABAJO FIN DE GRADO

ShoppingBeacon: Sistema asistencial ensuperficies comerciales basado en

posicionamiento en interiores

Francisco Jiménez Moral

Septiembre, 2015

Page 2: Sistema asistencial en superficies comerciales basado en
Page 3: Sistema asistencial en superficies comerciales basado en

SHOPPINGBEACON: SISTEMA ASISTENCIAL EN SUPERFICIESCOMERCIALES BASADO EN POSICIONAMIENTO EN INTERIORES

Page 4: Sistema asistencial en superficies comerciales basado en
Page 5: Sistema asistencial en superficies comerciales basado en

UNIVERSIDAD DE CASTILLA-LA MANCHA

ESCUELA SUPERIOR DE INFORMÁTICA

Tecnologías y Sistemas de Información

TECNOLOGÍA ESPECÍFICA DE

COMPUTACIÓN

TRABAJO FIN DE GRADO

ShoppingBeacon: Sistema asistencial ensuperficies comerciales basado en

posicionamiento en interiores

Autor: Francisco Jiménez Moral

Director: Dr. Ramón Hervas Lucas

Septiembre, 2015

Page 6: Sistema asistencial en superficies comerciales basado en
Page 7: Sistema asistencial en superficies comerciales basado en

Francisco Jiménez Moral

Ciudad Real – Spain

E-mail: [email protected]

c© 2015 Francisco Jiménez Moral

Muchos de los nombres usados por las compañías para diferenciar sus productos y servicios sonreclamados como marcas registradas. Allí donde estos nombres aparezcan en este documento, ycuando el autor haya sido informado de esas marcas registradas, los nombres estarán escritos enmayúsculas o como nombres propios.

i

Page 8: Sistema asistencial en superficies comerciales basado en
Page 9: Sistema asistencial en superficies comerciales basado en

TRIBUNAL:

Presidente:

Vocal:

Secretario:

FECHA DE DEFENSA:

CALIFICACIÓN:

PRESIDENTE VOCAL SECRETARIO

Fdo.: Fdo.: Fdo.:

iii

Page 10: Sistema asistencial en superficies comerciales basado en
Page 11: Sistema asistencial en superficies comerciales basado en

Resumen

En un mundo en constante evolución en el que las posibilidades de conexión aumentanaño tras año, ya que la mayor parte de la población dispone de acceso a redes inalámbricas,existe un gran potencial colectivo y económico en los servicios basados en la localización,que aún no han sido aprovechados.

Debido a la fuerte expansión en el mercado de las redes inalámbricas y del GPS, emergela necesidad de desarrollar servicios de localización en interiores (denominados entornos“indoors”, de interior), ya que la señal de GPS no llega dentro de los edificios.

Estos servicios de localización resultan muy útiles cuando se quiere localizar algo o aalguien en el interior de un edificio y dado que pasamos una gran parte de nuestro tiempo eninteriores (el 90 % según un artículo de Nokia [Des12]) es indudable la utilidad de este tipode soluciones.

En base a la problemática de la localización indoor, se propone un sistema que se basa enla recepción de señales que permitan localizar al usuario dentro de un edificio en un mapapreviamente facilitado y con unos puntos a recorrer para guiar al usuario hasta ellos. Enconcreto las superficies comerciales, que debido a sus estrategias de marketing, se encargande redistribuir los productos en las estanterías colocándolos en nuevas posiciones, cada ciertotiempo. Como consecuencia a estos cambios de posición, surgen esas innumerables vueltasque se dan por los pasillos para encontrar todo lo que quiere el usuario.

A raíz de estas motivaciones surge la propuesta del presente Trabajo Fin de Grado. Seplantea diseñar y desarrollar un sistema software asistencial bajo la plataforma iOS, paraentornos comerciales mediante localización indoor basado en redes inalámbricas. Dicho sis-tema, se centrará en un organizador de compras para una determinada superficie comercialque esté adaptada mediante el uso de un mapa que muestre la distribución del edificio. Deesta manera el usuario tendrá que seleccionar los productos del establecimiento para des-pués ser ubicado y en base a esta localización ser guiado siguiendo un orden de maneraque el usuario pase por todos los productos escogidos realizando la ruta de menor coste yahorrando tiempo y esfuerzo.

V

Page 12: Sistema asistencial en superficies comerciales basado en
Page 13: Sistema asistencial en superficies comerciales basado en

Abstract

In a world in a constant evolution, where connection availability increases year to yearsince most of the population has access to wireless networks, there exist a great collectiveand economical potential in services based on location awareness, from which the most of ithas not been made yet.

Due to the great expansion in the market of wireless networks and GPS based technologies,the need of developing services based on indoor location awareness has arisen, since GPSsignal does not reach the inside of buildings.

These location services come to be of great usefulness when something or someone iswanted to be located inside a building and, since we spend a large deal of our time in indoorenvironments (about 90 % according to an article published by Nokia [Des12]), the utility ofthis kind of solutions is out of any doubt.

Given the problematics of indoor location, thereupon the development of a system is pro-posed, this being based on the reception of signals which would allow the user to be locatedinside a building, over the surface of a map previously provided and given a series of check-points, along of which the user should be guided. This will be applied to the specific caseof shopping centers, which from time to time redistribute the eventual location of their pro-ducts, according to their marketing strategies. As a consequence of these location changes,the customer is bound to indefinitely roam along the hallways in order to find everything sheis in search of.

As a result of these motivations the proposal of this Final Degree Project is laid out. Thedesign and development of an assistance software system on the platform iOS is outlined,intended to commercial environments and based on indoor location awareness via wirelessnetworks. Such a system will focus in a shopping assistant for a certain shopping center,which should be adapted through the use of a map which depicts the building’s distribution.This way, the user will select those products of the shopping center she wants to purchase,thereafter being located and guided on such a way that the user picks all of the chosenproducts, performing the minimal cost route and thus saving time and effort.

VII

Page 14: Sistema asistencial en superficies comerciales basado en
Page 15: Sistema asistencial en superficies comerciales basado en

Agradecimientos

En este pequeño espacio me gustaría dar las gracias a todas las personas que de una uotra manera han contribuido a que pueda llegar hasta aquí. Por ello, primero me gustaríaagradecerles todo esto a aquellas personas que me han brindado esta oportunidad, por sucariño constante, por apoyarme y creer siempre en mí, por todo lo bueno que me han rega-lado durante el transcurso de mi vida; estoy hablando de mis queridos padres, Francisco yAntoñita.

En segundo lugar agradecer al resto de familiares y a mi hermano su confianza en mí, enparticular a mi hermano, por todas las conversaciones y sinsentidos nuestros que hacen queahora no pare de reír, especialmente al recordar los días de vendimia. Gracias a Alba, porsu apoyo, por su paciencia, por nuestras historias, por la fuerza que me aporta día a día yespecialmente por animarme en cualquier situación.

A todos y cada uno de mis compañeros durante esta experiencia universitaria, especialmención se merecen Rubén, iSergio, Anibla, Edu y Javi. Nunca pensé que pudiera reírmetanto viendo un perro conduciendo, siendo testigo de la fusión en directo delante de unreptiliano, el viaje valhállico pactado, el gran cargo de mantener la identidad secreta deMH; podría seguir dando motivos, pero me temo que no terminaría. . . Gracias por todos losmomentos que hemos tenido y por brindarme una mano siempre que lo he necesitado.

Por último, y no menos importante agradecerle también a mi tutor en este proyecto, RamónHervás, por prestarse de forma totalmente desinteresada a la dirección de este proyecto ycorregir cual ninja toda la documentación durante el verano cuando mas apurado estaba.

A todos vosotros, muchas gracias de corazón.

Francisco Jiménez Moral

IX

Page 16: Sistema asistencial en superficies comerciales basado en
Page 17: Sistema asistencial en superficies comerciales basado en

Para mis padres, Francisco y Antoñita.

xi

Page 18: Sistema asistencial en superficies comerciales basado en
Page 19: Sistema asistencial en superficies comerciales basado en

Índice general

Resumen V

Abstract VII

Agradecimientos IX

Índice general XIII

Lista de tablas XVII

Índice de figuras XIX

Índice de listados XXIII

1. Introducción 1

1.1. Contexto del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.2. Evolución de los smartphones . . . . . . . . . . . . . . . . . . . . . . . . 2

1.3. Elección del SO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.4. Motivación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.5. Propuesta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.6. Estructura del documento . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2. Objetivos y Herramientas 11

2.1. Visión General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.2. Lista de objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.3. Herramientas de desarrollo . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.3.1. Lenguajes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.3.2. Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.3.3. Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3. Antecedentes 19

3.1. Trabajos relacionados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

XIII

Page 20: Sistema asistencial en superficies comerciales basado en

3.2. Apps para realizar listas de la compra . . . . . . . . . . . . . . . . . . . . 19

3.2.1. Análisis Comparativo App para realizar listas de la compra . . . . . 27

3.3. Apps para localización en interiores . . . . . . . . . . . . . . . . . . . . . 29

3.3.1. Análisis Comparativo App para localización en interiores . . . . . . 37

3.4. Conclusión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

4. Arquitectura 41

4.1. Arquitectura General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

4.2. Patrones de Diseño . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

4.2.1. Delegado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

4.2.2. Target-Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

4.2.3. Modelo-Vista-Controlador (MVC) . . . . . . . . . . . . . . . . . . 45

4.3. Posicionamiento en móviles . . . . . . . . . . . . . . . . . . . . . . . . . 48

4.4. Gestión y Almacenamiento . . . . . . . . . . . . . . . . . . . . . . . . . . 50

4.4.1. Recuperación de datos externos . . . . . . . . . . . . . . . . . . . 51

4.4.2. Uso de Core Data . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

4.5. Ubicación y Guiado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

4.5.1. Módulo de Comunicaciones . . . . . . . . . . . . . . . . . . . . . 62

4.5.2. Módulo de Tratamiento de Señal . . . . . . . . . . . . . . . . . . . 68

4.5.3. Módulo de Filtrado de Señal . . . . . . . . . . . . . . . . . . . . . 71

4.5.4. Módulo de Posicionamiento . . . . . . . . . . . . . . . . . . . . . 77

4.5.5. Módulo de Enrutamiento y Guiado . . . . . . . . . . . . . . . . . . 81

5. Métodos de trabajo 101

5.1. Metodología de desarrollo . . . . . . . . . . . . . . . . . . . . . . . . . . 101

5.2. Evolución del desarrollo . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

5.3. Iteraciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

6. Resultados 115

6.1. Primera etapa: Análisis del comportamiento de la señal BLE . . . . . . . . 115

6.2. Segunda etapa: Análisis de RRSI . . . . . . . . . . . . . . . . . . . . . . . 117

6.3. Tercera etapa: Desarrollo del experimento . . . . . . . . . . . . . . . . . . 118

6.4. Conclusión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

6.5. Modulos funcionales de la aplicación . . . . . . . . . . . . . . . . . . . . . 125

7. Conclusiones y Propuestas 131

7.1. Objetivos Alcanzados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

xiv

Page 21: Sistema asistencial en superficies comerciales basado en

7.2. Trabajo Futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

7.3. Conclusión Personal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

A. Fundamentos sobre tecnologías de localización 139

A.1. Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

A.2. Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

A.3. UWB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142

A.4. ZigBee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142

A.5. RFID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

A.6. Justificación de alternativa seleccionada . . . . . . . . . . . . . . . . . . . 144

B. Calibración del dispositivo iBeacon 149

C. Contenido del soporte fisico adjunto 151

Referencias 153

xv

Page 22: Sistema asistencial en superficies comerciales basado en
Page 23: Sistema asistencial en superficies comerciales basado en

Lista de tablas

3.1. Comparativa de las aplicaciones existentes que permiten realizar la lista dela compra. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.2. Comparativa de las aplicaciones que permiten realizar localizacion Indoor . 39

3.3. Características de ShoppingBeacon . . . . . . . . . . . . . . . . . . . . . . 40

4.1. Estructura del Mapa de Potencias . . . . . . . . . . . . . . . . . . . . . . . 80

4.2. Representación del grafo a través de sus aristas . . . . . . . . . . . . . . . 85

4.3. Representación del grafo a través de sus vertices . . . . . . . . . . . . . . . 86

4.4. Matriz de Adyacencia para el ejemplo del cálculo del camino minimo . . . 91

4.5. Matriz de Adyacencia para el ejemplo del cálculo del camino minimo . . . 95

6.1. Resultados de estudio de valores según el plano de orientación. . . . . . . . 117

6.2. Medición de fluctuación de RSSI con diferentes intervalos de repetición depulsos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

6.3. Comparativa de proximidad real-media. . . . . . . . . . . . . . . . . . . . 120

6.4. Comparativa de proximidad real-media. . . . . . . . . . . . . . . . . . . . 123

7.1. Características de ShoppingBeacon . . . . . . . . . . . . . . . . . . . . . . 132

A.1. Estándares de Wireless LAN. Figura extraida de [UPM]. . . . . . . . . . . 141

A.2. Tabla Comparativa tecnologías UWB. Tabla extraída de [UPM] . . . . . . 142

A.3. Comparativa de tecnologías de RF. . . . . . . . . . . . . . . . . . . . . . . 145

XVII

Page 24: Sistema asistencial en superficies comerciales basado en
Page 25: Sistema asistencial en superficies comerciales basado en

Índice de figuras

1.1. Predicción de ventas globales de smartphone hasta 2019 . . . . . . . . . . 3

1.2. Tiempo diario de uso de los dispositivos de Apple . . . . . . . . . . . . . . 4

1.3. Tiempo que navegan los usuarios de Android frente a los usuarios de iOS . 5

1.4. Compras realizadas desde tablets . . . . . . . . . . . . . . . . . . . . . . . 6

1.5. Estadísticas de descargas e ingresos de la App Store y Google Play . . . . . 6

1.6. Reparto mundial de empleo en iOS y Android . . . . . . . . . . . . . . . . 7

2.1. Visión General de la Arquitectura del Sistema . . . . . . . . . . . . . . . . 12

3.1. App Shopping List. Lista inicial . . . . . . . . . . . . . . . . . . . . . . . 20

3.2. App Shopping List. Añadir Producto . . . . . . . . . . . . . . . . . . . . . 20

3.3. App LiShop. Lista Inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.4. App LiShop. Buscar Producto . . . . . . . . . . . . . . . . . . . . . . . . 21

3.5. App Buy Me a Pie. Creación de listas . . . . . . . . . . . . . . . . . . . . 22

3.6. App Buy Me a Pie. Lista Inicial . . . . . . . . . . . . . . . . . . . . . . . 22

3.7. App ShopShop. Añadir Producto . . . . . . . . . . . . . . . . . . . . . . . 23

3.8. App ShopShop. Mandar lista por correo . . . . . . . . . . . . . . . . . . . 23

3.9. App Lista. Lista Inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.10. App Lista. Añadir Producto . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.11. App ShopIt. Lista Inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3.12. App ShopIt. Lista Final . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3.13. App myShopi. Crear Lista Inicial . . . . . . . . . . . . . . . . . . . . . . . 26

3.14. App myShopi. Añadir Producto . . . . . . . . . . . . . . . . . . . . . . . 26

3.15. App Point Inside. Mapa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3.16. App Point Inside. Servicios disponibles . . . . . . . . . . . . . . . . . . . 29

3.17. App Wifarer. Guiado interior . . . . . . . . . . . . . . . . . . . . . . . . . 30

3.18. App Wifarer. Servicios Ofrecidos . . . . . . . . . . . . . . . . . . . . . . . 30

3.19. App Wifarer. Servicios Ofrecidos . . . . . . . . . . . . . . . . . . . . . . . 30

3.20. Mapa interior aeropuerto de San Francisco. . . . . . . . . . . . . . . . . . 31

XIX

Page 26: Sistema asistencial en superficies comerciales basado en

3.21. Adaptacion a gente invidente aeropuerto de San Francisco. . . . . . . . . . 31

3.22. App MIT Mobile. Guiado . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3.23. App MIT Mobile. Servicios Ofrecidos . . . . . . . . . . . . . . . . . . . . 32

3.24. App Universidad de Granada. Servicios ofrecidos . . . . . . . . . . . . . . 33

3.25. App Universidad de Granada. Centros de la Universidad . . . . . . . . . . 33

3.26. App University of Alabama. Servicios ofrecidos . . . . . . . . . . . . . . . 34

3.27. App University of Alabama. Directorio de búsqueda . . . . . . . . . . . . . 34

3.28. App GuideURJC. Mapa de interior . . . . . . . . . . . . . . . . . . . . . . 35

3.29. App GuideURJC. Creación de rutas . . . . . . . . . . . . . . . . . . . . . 35

3.30. Localización Indoor dentro del supermercado Carrefour . . . . . . . . . . . 36

4.1. Modelo de arquitectura del sistema . . . . . . . . . . . . . . . . . . . . . . 42

4.2. Objetos pertenecientes al patrón MVC . . . . . . . . . . . . . . . . . . . . 46

4.3. Comunicación entre los objetos del MVC . . . . . . . . . . . . . . . . . . 47

4.4. Modelo Base de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

4.5. Diagrama entidad-interrelación . . . . . . . . . . . . . . . . . . . . . . . . 52

4.6. Descripción Funcional del módulo de Comunicaciones . . . . . . . . . . . 63

4.7. Estructura de una trama de un iBeacon sobre BLE. . . . . . . . . . . . . . 64

4.8. Diagrama de Secuencia del Módulo de Comunicaciones . . . . . . . . . . . 68

4.9. Descripción Funcional del módulo de Tratamiento de Señal . . . . . . . . . 69

4.10. Diagrama de Secuencia del Módulo de Tratamiento de Señales . . . . . . . 71

4.11. Descripción Funcional del módulo de Filtrado de Señal . . . . . . . . . . . 72

4.12. Fluctuación de la potencia de la señal . . . . . . . . . . . . . . . . . . . . 72

4.13. Rangos de proximidad a un iBeacon . . . . . . . . . . . . . . . . . . . . . 73

4.14. Diagrama de Secuencia del Módulo de Filtrado de Señal . . . . . . . . . . 77

4.15. Descripción Funcional del módulo de Posicionamiento . . . . . . . . . . . 78

4.16. Diagrama de Secuencia del Módulo de Posicionamiento . . . . . . . . . . . 81

4.17. Descripción Funcional del módulo de Enrutamiento . . . . . . . . . . . . . 82

4.18. Estructura de un Grafo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

4.19. Descripción Gráfica del problema . . . . . . . . . . . . . . . . . . . . . . 91

4.20. Recorrido Técnica Fuerza Bruta . . . . . . . . . . . . . . . . . . . . . . . 93

4.21. Recorrido Técnica Programación Dinámica . . . . . . . . . . . . . . . . . 97

4.22. Diagrama de Secuencia del Módulo de Enrutamiento . . . . . . . . . . . . 100

5.1. Evolución de los ciclos de desarrollo de Extreme Programming. Figura ex-traída de [Bec99] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

xx

Page 27: Sistema asistencial en superficies comerciales basado en

5.2. Proceso de desarrollo: Iteración 1 . . . . . . . . . . . . . . . . . . . . . . . 110

5.3. Proceso de desarrollo: Iteración 2 . . . . . . . . . . . . . . . . . . . . . . . 110

5.4. Proceso de desarrollo: Iteración 3 . . . . . . . . . . . . . . . . . . . . . . . 111

5.5. Proceso de desarrollo: Iteración 4 . . . . . . . . . . . . . . . . . . . . . . . 111

5.6. Proceso de desarrollo: Iteración 5 . . . . . . . . . . . . . . . . . . . . . . . 112

5.7. Proceso de desarrollo: Iteración 6 . . . . . . . . . . . . . . . . . . . . . . . 112

5.8. Proceso de desarrollo: Iteración 7 . . . . . . . . . . . . . . . . . . . . . . . 113

5.9. Proceso de desarrollo: Iteración 8 . . . . . . . . . . . . . . . . . . . . . . . 113

6.1. App Estimote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

6.2. App Particle Detector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

6.3. Primer Experimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

6.4. Plano Esquemático del laboratorio . . . . . . . . . . . . . . . . . . . . . . 121

6.5. Plano esquemático del laboratorio con secciones . . . . . . . . . . . . . . . 121

6.6. Nodos de Referencia en topología de malla . . . . . . . . . . . . . . . . . 124

6.7. Catálogo de productos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

6.8. Listas de listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

6.9. Creación de alertas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

6.10. Selección de fecha y hora . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

6.11. Notificación de alerta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

6.12. Lista de procutos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

6.13. Modficaión de la lista de porductos . . . . . . . . . . . . . . . . . . . . . . 128

6.14. Generar un correo con la lista de la compra . . . . . . . . . . . . . . . . . 129

6.15. Mapa de interior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

6.16. Mapa de interior consecciones . . . . . . . . . . . . . . . . . . . . . . . . 130

A.1. Red de sensores con tecnología ZigBee . . . . . . . . . . . . . . . . . . . 143

A.2. Gráfica de consumo de potencia de tecnologías RF . . . . . . . . . . . . . 146

A.3. Gráfica de coste/complejidad de tecnologías RF para localización en interiores147

B.1. Calibración de un dispositvo iBeacon . . . . . . . . . . . . . . . . . . . . 149

xxi

Page 28: Sistema asistencial en superficies comerciales basado en
Page 29: Sistema asistencial en superficies comerciales basado en

Índice de listados

4.1. Modelo relacional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

4.2. Actualización del contenido del array . . . . . . . . . . . . . . . . . . . . 55

4.3. Solicitud de recuperación de datos . . . . . . . . . . . . . . . . . . . . . . 56

4.4. Solicitud de recuperación de datos controllerWillChangeContent: . . . . . . 58

4.5. Solicitud de recuperación de datos forChangeType:newIndexPath: . . . . . 58

4.6. Solicitud de recuperación de datos controllerDidChangeContent: . . . . . . 59

4.7. Solicitud de recuperación de datos de la capa de vista . . . . . . . . . . . . 59

4.8. Identificación y Registro del major de cada dispositivo . . . . . . . . . . . 66

4.9. Definir el UUID y región con los que se va a trabajar . . . . . . . . . . . . 67

4.10. Identificación y Registro del major de cada dispositivo . . . . . . . . . . . 67

4.11. Distinción del tipo de señal segun el major de cada dispositivo . . . . . . . 69

4.12. Pseudocodigo Función Semáforo . . . . . . . . . . . . . . . . . . . . . . . 78

4.13. Pseudocódigo Módulo Enrutamiento . . . . . . . . . . . . . . . . . . . . . 82

4.14. Inicialización Tabla de Distancias . . . . . . . . . . . . . . . . . . . . . . 88

4.15. Rellenar Tabla de Distancias. . . . . . . . . . . . . . . . . . . . . . . . . . 89

4.16. Implementación Técnica Fuerza Bruta . . . . . . . . . . . . . . . . . . . . 91

4.17. Implementación Técnica Fuerza Bruta . . . . . . . . . . . . . . . . . . . . 94

4.18. Implementación Técnica Fuerza Bruta . . . . . . . . . . . . . . . . . . . . 96

4.19. Implementación Técnica Fuerza Bruta . . . . . . . . . . . . . . . . . . . . 98

B.1. Calibración iBeacon. Listado Extraído de [App14a] . . . . . . . . . . . . . 150

XXIII

Page 30: Sistema asistencial en superficies comerciales basado en
Page 31: Sistema asistencial en superficies comerciales basado en

Capítulo 1

Introducción

E N este capítulo se realiza una introducción al problema que el presente Trabajo Fin deGrado pretende abordar. En primer lugar se presenta el concepto de la localización en

interiores y se expone cuál es el problema a resolver y su contexto histórico. Este terreno haalcanzado una gran popularidad en los últimos años debido a la aparición de aplicaciones pa-ra dispositivos móviles que hacen uso de las nuevas tecnologías de localización en interioresy permiten al usuario guiar en un espacio cerrado de manera cómoda. Por ello, se estudiarála evolución de los teléfonos móviles inteligentes o smartphones junto con su enorme creci-miento desde la perspectiva del mercado en los últimos años. A continuación se expone lamotivación y en base a ella se detalla la propuesta de trabajo realizando un breve análisis delos principales objetivos del presente Trabajo Fin de Grado. Finalmente se concluye deta-llando la estructura del presente documento y el contenido que se abordará en cada uno desus capítulos.

1.1 Contexto del problemaHoy en día conocer la localización en la que nos encontramos se ha convertido en una

necesidad, necesidad que se ha transformado en requisito imprescindible si se quiere haceruso de las numerosas aplicaciones que ofrecen servicios basados en la posición del usuario.Estos servicios abarcan distintos temas: seguridad, atención socio-sanitaria, ocio, turismo,deportes, etc.

Inicialmente todos estos servicios de localización estaban orientados al posicionamientoglobal y se realizaban en entornos de exterior, sin embargo estos sistemas de posicionamientono permiten la localización con precisión de dispositivos en espacios cerrados y es por elloque se empezó a realizar un intenso estudio durante los últimos años en busca de una soluciónadecuada y adaptada a la localización en espacios cerrados dando lugar al desarrollo delos actuales sistemas de posicionamiento o localización en interiores. Los motivos que hanobstaculizado el desarrollo han sido tanto técnicos como económicos.

Técnicos porque la localización en espacios cerrados presenta retos tecnológicos ma-yores que la localización en espacios abiertos.

Económicos porque la gran parte de estos sistemas requieren gran cantidad de infraes-

1

Page 32: Sistema asistencial en superficies comerciales basado en

tructura fija que hace que aumente el coste. Sin embargo, dichas infraestructuras hanreducido los costes haciendo posible que sea viable instalarlos en entornos cerrados.

Este área no sólo abre las puertas a nuevos modelos de negocio capaces de revolucionarlos modos de rentabilizar estructuras sino que podría beneficiar ampliamente a un importantesector del público, los invidentes o personas con discapacidad visual, los cuales, se aprove-charían de los servicios que este sistema podría ofrecerles, ayudando en tareas rutinariascomo puede ser la compra en un supermercado al haberse reubicado los productos.

1.2 Evolución de los smartphones

El smartphone es aquel teléfono construido sobre una plataforma móvil que sobrepasa lafrontera de los teléfonos móviles tradicionales. La idea principal del smartphone o teléfonointeligente era básicamente la de unir las funciones de un PDA con las de un teléfono paramayor compactibilidad y por tanto comodidad.

Todo comenzó en 1992, con la llegada del dispositivo IBM Simon, que unía todas lasfuncionalidades de un PDA con capacidades telefónicas y de SMS y, a diferencia del restode PDAs que requerían un puntero, este dispositivo incorporaba una pantalla completamentetáctil. Sin embargo no fue hasta la llegada del Ericsson GS88, el cual poseía muchas másfunciones como puede ser el correo electrónico, navegación web, conexión a PC entre lasmás destacables, cuando se acuñó el termino smartphone.

No fue hasta la llegada del nuevo sistema operativo Windows Mobile entre los años 2000 y2005, cuando los dispositivos móviles adquirieron una gran popularidad, especialmente entrelos hombres y mujeres de negocios de Estados Unidos. Dentro de este periodo Blackberrylanzó sus primeros modelos de smartphone en 2003 y pasó a disputar la compartición deeste liderazgo en 2006, atrayendo no sólo al sector de empresarios y ejecutivos, típicamenteasociados con Windows Mobile, sino al sector de la población joven.

Sin duda el evento que cambió la percepción de lo que era un smartphone fue el anunciodel iPhone en 2007, revolucionando la industria de la telefonía móvil y de los smartpho-nes, siendo uno de los primeros teléfonos móviles en incluir una interfaz multitáctil parainteractuar con el dispositivo y capaz de ofrecer la mejor experiencia en Internet hasta elmomento.

Meses más tarde, Google presenta su sistema operativo Android y pese a que inicialmenteAndroid contó con un proceso de aceptación lento por parte del público, su popularidadcreció enormemente en 2010. Con la llegada de estos dos nuevos participantes en el mercadode smartphones la cuota de mercado hasta el momento acaparada por el resto de fabricantessufrio un duro golpe, dando lugar a un replanteamiento de estrategias de negocio. En el casode Microsoft, optó por crear un nuevo sistema operativo desde cero, denominado WindowsPhone, ocupando el tercer puesto en la cuota de mercado actual. Nokia abandono Symbian

2

Page 33: Sistema asistencial en superficies comerciales basado en

y se unió a Microsoft implantando este nuevo sistema operativo en sus dispositivos. Porúltimo Blackberry también diseñó una nueva versión de su sistema operativo desde cero,denominada Blackberry 10.

La adopción de los smartphone por parte del público ha sido masiva, especialmente desdeel año 2010, debido en gran parte a la disponibilidad en el mercado de smartphones a preciosasequibles y se sigue prediciendo este aumento de ventas durante los próximos años comomuestra la Figura 1.1 realizada por la agencia de estadísticas Statista [Sta15].

Figura 1.1: Predicción de ventas globales de smartphone hasta 2019

1.3 Elección del SOA la hora de elegir el sistema operativo se han analizado las dos posibles alternativas con

mayor popularidad y tasa de mercado: Android e iOS.

iOS de la mano de Apple comprende todas las fases, desde la fabricación hasta el software.En Android por el contrario intervienen tres agentes: Google, los fabricantes de hardware ypor último los desarrolladores de software.

En lo referente a la tasa de mercado, Google anunció en 2013 que se han activado 900millones de dispositivos Android en todo el mundo frente a los 580 millones alcanzadospor iOS. Tomando este punto de partida lo más conveniente sería emplear el esfuerzo endesarrollar para el sistema operativo Android, sin embargo, iOS sigue siendo la plataforma

3

Page 34: Sistema asistencial en superficies comerciales basado en

preferida no de los desarrolladores independientes sino también de grandes empresas comoInstagram, que comenzó apostando por la exclusividad como app para iPhone y terminósiendo comprado por 1000 millones de dólares por Facebook al año de estrenarse.

En el caso de Flipboard, comenzó siendo exclusivo para iPhone y termino firmando unacuerdo con Samsung para contar con un periodo de exclusividad en el Galaxy 3 [CNE].

Yahoo es otra compañía que tiene por costumbre centrarse primero en mejorar sus apli-caciones para iOS antes de extender los cambios a Android teniendo en Flickr, Tiempo yMail sus mejores ejemplos. Incluso Google apuesta primero por iOS con el claro ejemplo deGoogle Maps que estrenó su nuevo diseño en la plataforma Apple meses antes de hacerloen Google Play; una muestra más evidente de la importancia de iOS para los buscadores[Xat13a].

Finalmente está Twitter que seis meses después de lanzar Vine para iOS y pese a la pro-mesa de una versión para Android, publicaron una segunda app exclusiva de la plataformaApple: Twitter Music [Xat13c] [Xat13b] [Xatil].

No cabe duda de que Android seguirá madurando como plataforma y es inevitable que enlos próximos años se considere optar por el escenario opuesto, es decir, lanzar las aplicacio-nes primero para el sistema Google y luego en el de Apple.

A pesar de que Android tiene una mayor cuota de mercado, un estudio demuestra quelos usuarios de Apple son los que más utilizan sus dispositivos, como muestra la Figura 1.2[Fet13].

Figura 1.2: Tiempo diario de uso de los dispositivos de Apple

4

Page 35: Sistema asistencial en superficies comerciales basado en

Según dicho estudio, los usuarios de iPhone pasan 26 minutos más de media que el usua-rio típico de Android, utilizando el teléfono en menor proporción para llamar y más comosmartphone para todo lo demás.

Ambas plataformas hacen más o menos lo mismo, por lo menos cuando se trata de fun-ciones básicas en los teléfonos inteligentes, sean llamadas, enviar mensajes, correos electró-nicos, navegar por la web, por mencionar algunos. Pero cuando se trata de navegar por lared hay una clara ventaja de la plataforma iOS sobre Android, como demuestra un nuevoestudio realizado por la agencia de publicidad Statista [SMI14], que revela que los usuariosde iOS navegan más en comparación con los usuarios de Android, como se muestra en laFigura 1.3.

Figura 1.3: Tiempo que navegan los usuarios de Android frente a los usuarios de iOS

De la misma manera que los usuarios de Apple navegan mas por Internet que los de An-droid, también realizan mas compras desde ellos, incluyendo también a las tablets en el casode Apple el iPad acaparando el 78 % de las compras realizadas como muestra un estudiorealizado por Chitika, en la Figura 1.4.

Otro aspecto a destacar son las cifras oficiales de descargas de la App Store y Google Playcon 50.000 millones y 48.000 millones respectivamente.

La diferencia es escasa, sin embargo hay que tener en cuenta la superioridad que tieneAndroid en la cuota de mercado y esto es debido a que muchos usuarios de Android nodescargan aplicaciones en absoluto, quizás porque ni siquiera saben cómo hacerlo, no lesimporta o tan solo se llevaron el teléfono que ofrecieron en la tienda.

5

Page 36: Sistema asistencial en superficies comerciales basado en

Figura 1.4: Compras realizadas desde tablets

A pesar de la diferencia y aunque la tienda de Google ha mejorado, la App Store siguegenerando casi el triple de ingresos como muestra la Figura 1.5, teniendo en cuenta el casomas concreto de los videojuegos de iOS que generan más ingresos que los de las consolasportátiles y dispositivos Android combinados [Ann].

Figura 1.5: Estadísticas de descargas e ingresos de la App Store y Google Play

6

Page 37: Sistema asistencial en superficies comerciales basado en

Sin embargo una de las características más determinantes por la que se ha decidido realizarel presente Trabajo Fin de Grado con el sistema operativo iOS ha sido el reparto mundial detrabajo que ofrece este sistema como muestra la Figura 1.6, de cara al posicionamiento en elfuturo profesional [ide].

Figura 1.6: Reparto mundial de empleo en iOS y Android

1.4 MotivaciónEn base a la problemática de la localización indoor, se propone un sistema que se basa en

la recepción de señales que permitan localizar al usuario dentro de un edificio en un mapapreviamente facilitado y con unos puntos a recorrer para guiar al usuario hasta ellos.

A base de ejemplo, el presente Trabajo Fin de Grado se va a centrar en un organizador decompras para una superficie comercial con una mapa que muestre la distribución del edificio,de manera que el usuario tenga que seleccionar productos del establecimiento para después,ser ubicado y en base a esta localización ser guiado siguiendo un orden hasta los distintosproductos escogidos.

7

Page 38: Sistema asistencial en superficies comerciales basado en

Son varias las aplicaciones existentes en el mercado que permiten realizar una lista de lacompra en el smartphone para poder recordar cuáles son los productos que hay que comprarla próxima vez que se visite el supermercado, sin embargo todas presentan determinadascarencias como pueden ser la ausencia de una base de datos que permita elegir entre distintosproductos catalogados y ordenados, con su imagen y una búsqueda sencilla, ya sea por vozo teclado, de manera que permita al usuario crear sus propias listas de la compra de maneraamigable y sencilla con el smartphone. A esto hay que añadir esas innumerables vueltas quese dan por los pasillos para encontrar todo lo que quiere el cliente y no perder el tiempoandando sin rumbo por los supermercados y grandes almacenes.

En definitiva, no existe ninguna solución aceptada mayoritariamente que contenga todosestos detalles y proporcione las principales funcionalidades para que el usuario pueda crearsus propias listas de la compra de manera amigable y sencilla y añada la peculiaridad decalcular la ruta con menor coste para optimizar el recorrido del usuario, proporcionando unaexperiencia agradable al ahorrar todas esas vueltas innecesarias.

En base al estudio realizado en la Subsección 1.3 se ha determinado que esta aplicaciónestará destinada a dispositivos móviles con sistema operativo iOS.

1.5 PropuestaA raiz de estas motivaciones surge la propuesta del presente Trabajo Fin de Grado. Se

plantea diseñar y desarrollar un sistema software asistencial bajo la plataforma iOS, pa-ra entornos comerciales mediante localización indoor basado en redes inalámbricas. Estaaplicación se basa en la recepción de señales procedentes de balizas BTLE (Bluetooth Low

Energy), también denominados beacon. Mediante ellos se localizarán los distintos puntos arecorrer que corresponderán con los productos que el usuario ha seleccionado y se le guiaráhasta ellos. Este sistema permite obtener una gran precisión en el cálculo de la posición yademás su despliegue es rápido, ya que la instalación de los beacons es muy sencilla.

Las funcionalidades principales que esta aplicación ofrecerá a sus usuarios serán las si-guientes:

El usuario deberá contar con un catálogo de los productos disponibles en la superficiecomercial ordenados por categorías.

El usuario podrá buscar los productos, a partir del nombre, a través de texto o voz.

El usuario podrá guardar varias listas de la compra con productos del supermercado.

El usuario podrá crear notificaciones para las distintas listas, cuya función será avisarleen la fecha que seleccione el usuario.

El usuario podrá visualizar la ruta que ha de seguir en el supermercado.

El usuario será guiado a través de la ruta con el menor coste, que será calculada en

8

Page 39: Sistema asistencial en superficies comerciales basado en

base a los productos escogidos.

El usuario podrá visualizar su posición dentro del supermercado.

El usuario será informado al llegar a un producto.

El usuario podrá enviar por correo la lista de la compra a cualquier usuario.

La aplicación debe ser capaz de calcular la ruta para cualquier mapa.

La aplicación debe contar con un diseño extensible que permita la introducción demapas correspondientes a diferentes superficies comerciales, siendo capaz de calculary representar la ruta de manera genérica.

1.6 Estructura del documentoEste documento se ha estructurado en base a la normativa del Proyecto Fin de Grado de la

Escuela Superior de Informática de Ciudad Real de la Universidad de Castilla-La Mancha.En base a ello, este documento cuenta con los siguientes capítulos:

Capítulo 2: Objetivos y HerramientasEn este capítulo se proporciona una visión general del sistema que se pretende desarro-llar, de la cual se concluyen los requisitos funcionales, para posteriormente desglosarcada uno de estos requisitos en varios subobjetivos.

Capítulo 3: AntecedentesEn este capítulo se analizan las principales aplicaciones relacionadas a la aplicaciónque se va a desarrollar en el presente Trabajo Fin de Grado. Atendiendo al carácter dela aplicación que se va a implementar se han agrupado las aplicaciones existentes endos listas independientes:

App de listas

App para localización en interiores

Se realizará un estudio para la determinación de los objetivos que Shopping Beacondebe cumplir, mediante un análisis de las principales características: puntos fuertes ydebilidades de cada una de ellas.

Capítulo 4: ArquitecturaEn este capítulo se describe el diseño e implementación del sistema, detallando losproblemas surgidos y las soluciones aportadas. El capítulo se divide en varias seccio-nes correspondientes a los distintos módulos que componen el sistema, describiendoen primer lugar una visión general y funcional del modulo y pasando posteriormentea los detalles técnicos y de implementación, junto con los problemas surgidos en eldesarrollo, las soluciones planteadas y los resultados de las distintas pruebas realiza-das.

9

Page 40: Sistema asistencial en superficies comerciales basado en

Capítulo 5: Métodos de trabajoEn este capítulo se analiza la metodología de desarrollo escogida para el desarrollode la aplicación. También se listan y describen los recursos empleados tanto hardwarecomo software en el proceso de desarrollo.

Capítulo 6: ResultadosEn este capítulo se razonan las decisiones de diseño tomadas durante el periodo dedesarrollo de la aplicación aportando datos que las refuerzan.

Capítulo 7: Conclusiones y PropuestasEn este capítulo se elabora un resumen a modo de conclusión sobre el producto finaldel desarrollo, indicando las metas que se han conseguido frente a las inicialmentepropuestas. Se detalla el posible trabajo futuro y se concluye con una conclusión per-sonal.

AnexosEn los anexos se presenta material que, dada su naturaleza, no se ha incluido en elgrueso del documento. En primer lugar se realiza un estudio sobre las diversas tec-nologías de localización más relevantes. En segundo lugar se expone el proceso decalibración de los dispositivos empleados. Finalmente, se lista el contenido del sopor-te físico adjunto a este documento.

10

Page 41: Sistema asistencial en superficies comerciales basado en

Capítulo 2

Objetivos y Herramientas

E N este capítulo se proporciona una descripción general de la arquitectura del sistema,ofreciendo al lector una idea de su diseño a alto nivel. En segundo lugar se proporciona

una lista de objetivos que se proponen para la consecución del desarrollo. Cada uno de estosrequisitos se encuentra desglosado en varios subobjetivos concretos, detallando qué se pre-tende obtener y su alcance. Finalmente se listan y describen todas las herramientas utilizadasen el desarrollo, ya sean hardware o software.

2.1 Visión General

La visión general de la propuesta del Trabajo Fin de Grado es la creación de una aplicaciónque permita al usuario generar sus propias listas de la compra para una superficie comercial yésta sea capaz de mostrarle un mapa con la distribución del edificio de manera que el usuariopueda ser guiado hasta los distintos productos escogidos.

La aplicación deberá hacer uso de una base de datos que permita al usuario consultarlos productos ofrecidos por la superficie comercial y generar y almacenar sus propias listasdentro de la aplicación. Una vez configurada la lista se podrá mandar por correo a cualquierpersona o ir a la superficie comercial para realizarla.

Si el usuario decide realizar la compra la aplicación debe ser capaz de ahorrar esas innu-merables vueltas que se dan por los pasillos generando una ruta con un coste mínimo. Unavez dentro de la superficie comercial la aplicación deberá reconocer los dispositivos que seencuentren y obtener los datos que envíen, independientemente del tipo de comunicación quese realice. Con estas señales la aplicación ha de ser capaz de posicionar al usuario y guiar demanera eficiente durante todo el recorrido generado.

La Figura 2.1. sintetiza en un digrama de bloques este enfoque. Se describe a continua-ción:

La aplicación se puede dividir en dos módulos bien diferenciados.

En primer lugar se encuentra el módulo encargado de mostrar y generar las listas de lacompra del usuario. Este módulo cuenta con una base de datos que será la encargada dealmacenar los datos de carácter persistente utilizados por los usuarios de la aplicación. Se

11

Page 42: Sistema asistencial en superficies comerciales basado en

Figura 2.1: Visión General de la Arquitectura del Sistema

ofrecerá una interfaz de llamadas que permita al controlador de la aplicación abstraerse to-talmente de la forma en la que la estructura de la base de datos haya sido implementada.

El segundo módulo se encargará de generar la ruta de menor coste con todos los productosseleccionados por el usuario. Una vez generada la ruta, la aplicación reconocerá los dispo-sitivos que se encuentren dentro del recinto comercial y establecerá comunicación con ellosa través de la Interfaz de Conexión del dispositivo. Estos paquetes pasarán a la capa de De-codificación donde se analizarán los paquetes recibidos y, si estos forman mensajes válidos,los convertirá a datos e información válida para las capas superiores. Hasta este punto soncapas dependientes del dispositivo.

Los datos anteriores pasan a las capas superiores, independientes del dispositivo, dondeson procesados antes de ser utilizados por otros componentes de la aplicación. Debido aque habrá varios dispositivos de manera simultánea, cada señal se procesa en una capa deTratamiento de señal, donde se dividen las señales dependiendo del dispositivo de origen

12

Page 43: Sistema asistencial en superficies comerciales basado en

que ha mandado la señal y se almacenan para posteriormete pasarles un filtro para reducirel ruido aleatorio en el dominio de tiempo. El siguiente paso será determinar la posición delusuario mediante las señales ya procesadas en una capa de Posicionamiento. Esta posición semanda a la capa de enrutamiento y guiado encargada de comprobar la posición del usuario,calcular la ruta partiendo de dicha posición del usuario, generar la animación y guiar alusuario mediante comandos de voz. Toda esta información pasará a la capa de controladoresque será la encargada de actuar en consecuencia y comunicarse con la vista.

2.2 Lista de objetivosLa visión general de la propuesta del Proyecto Fin de Grado es la creación de una aplica-

ción descrita en la Sección 1.5 del Capítulo 1. A partir de dichos requisitos y partiendo deesta descripción, se listan las siguientes funcionalidades, que deberán lograrse a lo largo delproceso de desarrollo del sistema:

Diseñar, desarrollar y validar un sistema asitencial para superficies comerciales me-diante tecnologías móviles y de posicionamiento en interiores

Desarrollo de una aplicación en iOS cuyo uso sea sencillo y abarque el mayor numeroposible de dispositivos en base a su versión del sistema operativo.

Acceso a un catálogo remoto, sostenido por una base de datos, que permita consultarlos distintos productos, ordenados por categorías.

Desarrollo de una base de datos interna en el dispositivo del cliente cuyo diseño yarquitectura le permitan ser escalable y eficiente.

Independencia de la implementación de la base de datos de la aplicación cliente res-pecto a la base de datos remota de la que se toman los datos.

Búsqueda de productos, mediante teclado o voz.

Almacenamiento de varias listas de la compra con productos que existan en el catálogodel recinto comercial.

Desarrollo de un algoritmo que permita calcular la ruta:

• El algoritmo toma como origen el punto en el que se encuentra el usuario.

• La ruta debe de guiar al usuario hasta cada uno de los productos añadidos a lalista.

• La ruta debe de tener el menor coste.

• El algoritmo ha de contar con un diseño extensible que permita calcular de ma-nera genérica distintas rutas para distintas superficies comerciales.

• En el caso de que el usuario se equivoque y tome una dirección errónea, el algo-ritmo ha de calcular la nueva ruta obviando los productos ya recogidos.

Determinar y monitorizar la posición en la que se encuentra el usuario:

13

Page 44: Sistema asistencial en superficies comerciales basado en

• La precisión que debe tener la aplicación variará en función de la tecnologíautilizada.

• Como requisito mínimo y al tratarse de un supermercado debe señalar en quépasillo o sección se encuentra el usuario.

Guiar al usuario mediante comandos de voz:

• Informar al usuario de la siguiente dirección que tiene tomar.

• Informar al usuario de que ha llegado al pasillo o sección del supermercado dondese encuentra el producto que ha añadido a la lista.

Notificar al usuario a modo de recordatorio que tiene que realizar la compra de unalista.

Enviar por correo la lista creada a cualquier contacto.

2.3 Herramientas de desarrolloEn esta sección se detallan los recursos software y hardware empleados en el proceso de

desarrollo. Para cada uno de estos recursos se proporciona una breve explicación, junto conla versión utilizada y la parte del desarrollo en la que ha sido empleado.

2.3.1 LenguajesLos lenguajes de programación empleados en el proceso de desarrollo son los siguien-

tes:

Objective-C: 1 Es el lenguaje principal de programación en Mac OS X e iOS y portanto el lenguaje empleado para el desarrollo del proyecto.

SQL: 2 Es un lenguaje declarativo empleado en la gestión de los datos almacenadosen sistemas gestores de bases de datos relacionales. Una de sus características es larealización de consultas y la modificación de datos a través del manejo del álgebra yel cálculo relacional. SQL se ha utilizado en la recuperación de los datos de la base dedatos externa.

2.3.2 HardwareA continuación se listan detalladamente el software empleado en la realización del pre-

sente Trabajo Fin de Grado.

Macbook Pro: Ordenador portátil con el que se va a desarrollar el proyecto, en él seencuentra todo el software necesario para llevar a cabo la construcción de la aplica-ción. Sus características son las siguientes: Procesador Intel Core i5, 2’4GHz; 4Gb dememoria RAM; nVIDIA GeForce GT 330M; HD 120Gb.

1Objective-C, https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/

ProgrammingWithObjectiveC/Introduction/Introduction.html2Oracle Database Overview, http://docs.oracle.com/cd/E11882 01/server.112/e41084/toc.htm

14

Page 45: Sistema asistencial en superficies comerciales basado en

iPad: Tableta que actúa de baliza durante las primeras fases del desarrollo, debido a lafalta de balizas iBeacon. Sus características son las siguientes: Procesador Apple A6Xdual core; 1.3GHz; 1Gb de memoria RAM; HD 16Gb.

iPhone: Smartphone con SO iOS 8.2 con el que también se van a realizar las pruebaspertinentes del sistema durante el desarrollo del sistema. Sus características son lassi- guientes: Procesador Apple A6 doble núcleo, 1.3 GHz.; 1Gb de memoria RAM;Pantalla táctil 4 pulgadas.

Kit de iBeacons de Estimote: Kit compuesto por tres balizas iBeacon; Versión Deve-loper Preview

2.3.3 SoftwareA continuación se listan detalladamente el software empleado en la realización del pre-

sente Trabajo Fin de Grado.

Sistema Operativo

Mac OX: Sistema operativo desarrollado por Apple Inc., sobre el que se ha desarro-llado el sistema. El desarrollo se ha llevado a cabo en la versión OS X Yosemite.

iOS: Sistema operativo desarrollado por Apple Inc. ,sobre el que se han desarrolladolas pruebas de la aplicación. Las pruebas de las aplicación se han llevado a cabo en laversión 8.3

Software de desarrollo

Xcode: 3 Entorno de desarrollo integrado (IDE) de Apple Inc. que se suministra juntocon Mac OS X. Trabaja conjuntamente con Interface Builder, una herramienta gráficapara la creación de interfaces de usuario. Se ha empleado en el desarrollo del sistemaen la versión 6.4.

SQLiteManager: 4 Gestor de Base de datos SQLite, con una interfaz muy clara, em-pleada para la creación de la base de datos externa. Se ha utilizado la versión 3.8.0.

3Xcode, https://developer.apple.com/xcode/4SQLiteManager, http://www.sqlitemanager.org/en/

15

Page 46: Sistema asistencial en superficies comerciales basado en

Documentación y Gráficos

LATEX:5 Sistema de composición de textos de alta calidad orientado especialmente ala creación de documentación técnica y científica. Se ha empleado para realización dela presente documentación. Se ha utilizado la distribución MacTeX-2015 y TeX Live2015.

TeXworks: Herramienta para la creación de documentos con LATEX. Ha sido el editorde LATEX empleado para redactar la documentación. Se ha utilizado la versión 0.4.5(r.1280).

Balsamiq: Herramienta para la creación de bocetos de interfaces de usuario. Ha sidoempleado en el diseño de las diferentes pantallas de la aplicación. Se ha utilizado laversión 3.1.9.

Visual Paradigm: Herramienta para el diseño de proyectos ágiles. Soporta modeladocon estándares como UML, SysML, ERD, DFD, BPN, etc. Proporciona soporte parala identificación de casos de uso, análisis de requisitos y flujo de eventos entre otros. Seha empleado en la creación de los diagramas de secuencia. Se ha utilizado la versión12.1.

Gannt Project: Herramienta para la planificación y gestión de proyectos. Ha sidoempleado en la creación de los diagramas de Gannt reflejando las iteraciones en elproceso de desarrollo. Se ha utilizado la versión 2.6.3.

GIMP: Herramienta de manipulación fotográfica multiplataforma, que permite la rea-lización de todo tipo de manipulación de imágenes, incluyendo retoque fotográfico ycomposición de imágenes. Ha sido empleado en el tratamiento de las imágenes in-tegradas en la documentación, cuando ha sido necesario. Se ha utilizado la versión2.8.14p2.

LibreOffice Draw: Herramienta de dibujado vectorial perteneciente a la suite Li-breOffice. Se ha empleado en la generación de diagramas presentes en la documen-tación. Se ha utilizado la versión: 4.4.4.3.

Floorplanner : 6 Herramienta para la creación de planos interactivos en linea. Se haempleado en la generación del plano de la aplicación.

5LATEX- A document preparation system, http://www.latex-project.org/6Floorplanner, http://es.floorplanner.com

16

Page 47: Sistema asistencial en superficies comerciales basado en

Bibliotecas

OpenEars: 7 Biblioteca que proporciona reconocimiento de voz y conversión de textoa voz para su uso en dispositivos iOS.

iOS SDK: 8 Incluye las bibliotecas y herramientas de desarrollo necesarias para com-pilar, probar y depurar aplicaciones en iOS. Ha sido utilizado para el desarrollo delsistema, especialmente para el uso de las siguientes bibliotecas: Core Location, CoreBluetooth, Core Data, Core Animation.

API Estimote: 9 Biblioteca proporcionada por Estimote para el control y programa-ción de los iBeacons

7OpenEars, http://www.politepix.com/openears/8iOS SDK, https://developer.apple.com/library/ios/navigation/9API Estimote, http://developer.estimote.com

17

Page 48: Sistema asistencial en superficies comerciales basado en
Page 49: Sistema asistencial en superficies comerciales basado en

Capítulo 3

Antecedentes

E N este capítulo se analizan las principales aplicaciones existentes que tengan el mismocarácter que la aplicación que propone este Trabajo Fin de Grado, realizando un aná-

lisis de las principales características de cada una de ellas, que servirá para la confección dela lista de objetivos que Shopping Beacon debe cumplir.

3.1 Trabajos relacionadosComo ya se ha comentado anteriormente, para conocer el estado actual del problema, es

necesario realizar un análisis previo que proporcione una visión general.

Es por ello que en esta sección se ha realizado un estudio de las aplicaciones existentes conel fin de adoptar los aspectos conocidos apropiados para el problema y sustituir las carenciasque se descubran, mejorándolas o añadiendo las que se necesiten, con la finalidad obteneruna solución que se ajuste al problema que se procura resolver.

Para ello se han realizado búsquedas, de manera independiente a la plataforma en la quese va a desarrollar la aplicación, introduciendo los términos por los que se ve afectado elcarácter de la aplicación, buscados tanto en inglés como en castellano en el buscador webGoogle, en el buscador de la aplicación App Store, disponible para dispositivos iOS y en elbuscador de la aplicación Play Store disponible para dispositivos Android. Como resultadode esta búsqueda y atendiendo al carácter de la aplicación se han agrupado las aplicacionesen dos listas independientes:

Apps para realizar listas de la compra

Apps para localización en interiores

3.2 Apps para realizar listas de la compraEsta búsqueda se ha orientado a aplicaciones o soluciones que permitan realizar una lista

de compra para posteriormente poder comprar en el supermercado o espacio comercial.

19

Page 50: Sistema asistencial en superficies comerciales basado en

Shopping ListEsta aplicación destinada a realizar la lista de la compra sufre distintas carencias, como

puede ser una interfaz nada amigable, ya que el uso no es nada intuitivo. Esta aplicacióncarece de una base de datos con productos que te permita seleccionar de manera previa y esnecesario introducir el nombre de cada uno de ellos para poder guardarlo, hasta un máximode 30 productos con la versión gratuita de la App. Al no tener una base de datos con losproductos tampoco tiene el precio de ellos y por tanto el precio total de la lista que el usuariodesea comprar. Tiene la opción de crear distintas listas, pero la aplicación se bloquea alintentar crear una lista distinta de la principal, obligándo al usuario a reiniciar la App. Laúnica opción que parece tener sentido y funciona correctamente es la opción de compartirque permite mandar la lista con los productos añadidos a cualquier dirección de correo.

Figura 3.1: App Shopping List. Listainicial

Figura 3.2: App Shopping List. AñadirProducto

20

Page 51: Sistema asistencial en superficies comerciales basado en

LiShopLiShop1 es una aplicación destinada a realizar la lista de la compra que tiene una interfaz

más intuitiva, ya que cuenta con una base de datos con todos los productos que se puedenseleccionar, sin embargo los productos carecen de foto que haga esa búsqueda del productomás sencilla, aunque esa carencia la suple mediante una ordenación alfabética de los produc-tos, además de poder buscar el nombre del producto o pasar un filtro para que sólo muestrelos productos del catálogo que el usuario elija. La aplicación permite añadir productos yasignarles un precio para calcular el precio total de la lista, sin embargo no permite crear dis-tintas listas y tener estas listas ordenadas. Una vez finalizada la creación de la lista permitemandarla a cualquier dirección de correo.

Figura 3.3: App LiShop. Lista Inicial Figura 3.4: App LiShop. Buscar Pro-ducto

1LiShop (2015), http://www.lishopapp.com

21

Page 52: Sistema asistencial en superficies comerciales basado en

Buy Me a PieBuy me a Pie2 es una aplicación destinada a realizar la lista de la compra que llama más

la atención al incluir más color, sin embargo la base de datos de productos esta incluidaen la esquina de la barra de búsqueda de la interfaz por lo que no es intuitivo acceder a esecatálogo, ya que el único objetivo de la barra de búsqueda es escribir un nombre para despuésbuscarlo y no incluir un botón en su esquina. Posee una base de datos con todos los productospero no incluye ninguna foto ni precio. A la hora de buscar un producto dentro de la barrade búsqueda, aparecen los posibles productos que se pueden buscar por la palabras que yase han introducido y de esa manera deshacerse de los que no se buscan, por lo que actúade filtro. A la hora de añadir productos a la aplicación se permite repetir productos, cuandolo normal sería aumentar la cantidad y no que aparezca dos veces, ademas al no ordenar lalista del usuario final, puede encontrarse el mismo producto al final y al principio de la lista.Esta app sí permite crear otras listas y añadirles un nombre, sin embargo sólo se consiguemediante una versión de pago. Al igual que las aplicaciones ya comentadas anteriormente,una vez finalizada la creación de la lista permite mandarla a cualquier dirección de correo.Esta app de origen americano, ofrece una plataforma web que permite realizar la gestión delas compras con una interfaz similar.

Figura 3.5: App Buy Me a Pie. Crea-ción de listas

Figura 3.6: App Buy Me a Pie. ListaInicial

2Buy me a Pie (2013), http://buymeapie.com

22

Page 53: Sistema asistencial en superficies comerciales basado en

ShopShopShopShop3 es una imitación de la aplicación Notas que incorpora el iPhone en la versión

7.1.2, por lo que para aquel usuario que haya usado esta versión de iOS, no le será difícilacostumbrarse, es un diseño simple pero intuitivo. Al ser una imitación de la app Notas, nocontiene ninguna base de datos con productos, por lo que es necesario introducir el nombrede cada uno de ellos para poder guardarlo en la lista. Permite crear varias listas donde cadauna corresponde a una vista independiente de las otras. Las vistas son personalizables, ya quepermite cambiar el color del fondo y el titulo de la lista. Dentro del apartado de configuraciónpermite cambiar el tamaño de la fuente para que se vean los nombre de los productos másgrandes y ordenar las listas por orden alfabético; como inconveniente para cambiar de listase tiene que ir pasando de una vista a otra hasta encontrar la lista deseada, si se tienen pocaslistas no se tarda mucho, pero si se tienen varias listas, encontrar la lista deseada puedeser una tarea pesada. Al igual que las aplicaciones ya comentadas anteriormente, una vezfinalizada la creación de la lista permite mandarla a cualquier dirección de correo.

Figura 3.7: App ShopShop. AñadirProducto

Figura 3.8: App ShopShop. Mandarlista por correo

3ShopShop (2008), http://nschum.de/apps/ShopShop/

23

Page 54: Sistema asistencial en superficies comerciales basado en

ListaLista4 permite realizar una lista de la compra de una manera más clara, ya que posee una

interfaz más intuitiva y tan sólo contiene dos vistas, la primera de ellas con el catálogo deproductos y la segunda para añadir la cantidad. Cuenta con una base de datos de productospropia, con una foto del producto deseado y ordenado por categorías, lo que hace fácil debuscar el producto deseado. La app contiene una barra de búsqueda que permite buscar elproducto introduciendo texto o dictando el producto, por lo que la función de búsqueda resul-ta muy sencilla. Una vez seleccionado el producto permite añadirle la cantidad de productoque se desea expresado en kilos o unidades. Como inconveniente, no permite crear distintaslistas, sólo contiene 15 productos entre los que poder elegir de manera gratuita. No permiteañadir un precio a cada uno de los productos para calcular el precio final. Una vez finalizadala creación de la lista permite mandarla a cualquier dirección de correo.

Figura 3.9: App Lista. Lista Inicial Figura 3.10: App Lista. Añadir Pro-ducto

4Lista (2013), http://www.kobiuter.com

24

Page 55: Sistema asistencial en superficies comerciales basado en

ShopItShopIt5 es otra aplicación destinada a realizar la lista de la compra; tiene una interfaz

muy vistosa pero nada intuitiva, ya que su enfoque de simplificar al máximo llega a resultarexcesivo. La primera imagen que se encuentra al abrir la aplicación es una tabla con elcatálogo de productos, en la que aparece la imagen a la izquierda y el nombre a la derecha decada celda, dos botones en el margen, el primero de ellos que permite personalizar la tablacon colores y el segundo de ellos para realizar la compra directamente, y por último entre losbotones del margen y el catálogo una barra de búsqueda y un espacio en blanco, entonces lapregunta es, ¿cómo se añaden los productos?; la respuesta está en la primera vista que ofrecela aplicación, aquella con el catálogo de productos. Si se deja pulsado cualquier producto seañade al espacio en blanco en forma de cola, es decir, va añadiendo productos y poniéndolosal final de la cola. Sin embargo no permite crear varias listas, ni añadir la cantidad, y si sedesea borrar la lista, se tienen que borrar individualmente cada uno de los productos lo quehace una tarea tediosa si se quiere borrar una lista con muchos productos. Una vez finalizadala creación de la lista si se pulsa el botón del margen de comprar permite visualizar la listade una manera mas cómoda, ya que presenta todos los productos seleccionados en una tablaordenada por catálogo y mandarla a cualquier dirección de correo.

Figura 3.11: App ShopIt. Lista Inicial Figura 3.12: App ShopIt. Lista Final

5ShopIt (2013), http://129642c2c6c30893af75-8259d49df90b36016edbf45b689de5ec.r28.cf2.rackcdn.com

25

Page 56: Sistema asistencial en superficies comerciales basado en

myShopimyShopi6 es la última aplicación que se va a comentar destinada a la creación de la lista de

la compra, tiene una interfaz vistosa, intuitiva y muy amigable al usuario final. Está muchomás enfocada a los supermercados, ya que a la hora de crear una lista el nombre que se leasigna a la lista es el de aquel supermercado en el que se va a realizar la compra, eligiendoentre todos ellos a la hora de crear la lista y, en el caso de que no estuviera, con la posibilidadde incluir el supermercado para poder elegirlo. Una vez elegido el supermercado aparecentodas las posibles categorías, y una vez elegida la categoría aparecen todos los artículosque le pertenecen, de la misma manera que si no estuviera la categoría o articulo deseadoda la posibilidad de incluirlo. Una vez seleccionada la lista se entra en otra ventana dondese puede editar los artículos elegidos añadiendo una nota, como pueden ser las unidadesque se quieren comprar. Dentro de esta misma ventana se tiene la opción de borrar todoslos productos, buscar el producto introduciendo texto o dictando el producto en la barra debúsqueda y mandar la lista a cualquier dirección de correo. Un inconveniente que tiene laaplicación es el no tener el precio o no dejar asignárselo a cada producto para así saber elprecio final de la lista.

Figura 3.13: App myShopi. Crear ListaInicial

Figura 3.14: App myShopi. AñadirProducto

6myShopi (2014), http://www.myshopi.com

26

Page 57: Sistema asistencial en superficies comerciales basado en

3.2.1 Análisis Comparativo App para realizar listas de la compraUna vez comentadas las características de cada una de las aplicaciones, se concluye con

un análisis comparativo entre ellas teniendo en cuenta las características más destacables decada una de ellas y las características que una aplicación destinada a un usuario que quierarealizar una lista de la compra ha de tener. El resultado de la comparación se puede consultaren la Tabla 3.1.

El análisis comparativo realizado en la Tabla 3.1, permite visualizar las características decada aplicación que proveen diferentes servicios a sus usuarios y características deseablespara la aplicación y por lo tanto se debe valorar su incorporación en este proyecto.

Tras hacer un análisis de las características reales de las aplicaciones examinadas y desea-bles en una aplicación para el usuario, se ha considerado aconsejable añadir las siguientescaracterísticas a la aplicación que enlaza al proyecto:

La app debe contener una base de datos con los productos del centro comercial al queva a estar destinada la app.

Los productos deben contener una imagen que haga más intuitiva la localización dentrodel catálogo de productos.

Los productos deben tener un precio asignado.

Los productos pueden ser buscados de manera escrita o por comandos de voz.

El usuario puede crear varias listas.

El usuario puede visualizar el precio de la lista con los productos ya escogidos.

El usuario puede compartir la lista con cualquier otra persona.

El usuario puede añadir una alerta a cada lista para que le avise en una fecha concreta.

27

Page 58: Sistema asistencial en superficies comerciales basado en

Bas

ede

dato

sPr

oduc

tos

Prod

ucto

sIm

agen

Prod

ucto

sPr

ecio

Bús

qued

aPr

oduc

tos

Esc

rita

Bús

qued

aPr

oduc

tos

Hab

lada

Cre

arva

rias

lista

sPr

ecio

lista

Com

part

irlis

taR

ecor

dato

rio

lista

Cen

tro

Com

erci

al

Shop

ping

Lis

t7

77

77

77

37

7

LiS

hop

37

73

37

77

77

Buy

me

aPi

e3

73

33

73

33

7

Shop

Shop

77

77

73

73

77

Lis

ta3

37

33

77

77

7

Shop

It3

37

77

77

37

7

myS

hopi

33

73

37

73

73

Tabl

a3.

1:C

ompa

rativ

ade

las

aplic

acio

nes

exis

tent

esqu

epe

rmite

nre

aliz

arla

lista

dela

com

pra.

28

Page 59: Sistema asistencial en superficies comerciales basado en

3.3 Apps para localización en interioresEsta búsqueda se ha orientado a aplicaciones o soluciones que permiten una localización

en interiores más precisa que la ofrecida por redes móviles y GPS.

Point Inside

Point Inside7 permite visualizar todos los servicios disponibles en edificios de entidadespúblicas o privadas tanto mayoristas como minoristas. Estos edificios son aeropuertos, cen-tros comerciales, parques temáticos y museos asociados a América y pueden ser buscadospor ubicación y categoría.

Muestran los servicios de dichos edificios: baños, cajeros automáticos, estacionamientos,ascensores, etc; y en el caso de minoristas, acceder a ofertas especiales, ofertas y cuponesque éstos ofrecen. Además proporciona instrucciones para llegar al destino y cuenta conenrutamiento dentro de la sala de navegación.

Ofrece un plano dibujado de cada planta para cada uno de los edificios, y dentro de éste laposibilidad de seleccionar los servicios buscados como pueden ser el aseo o un restaurante.Otra punto fuerte es el amplio repositorio de planos del que dispone, accesible sin conexióna Internet.

Figura 3.15: App Point Inside. MapaFigura 3.16: App Point Inside. Servi-cios disponibles

7Point Inside (2011), http://www.pointinside.com

29

Page 60: Sistema asistencial en superficies comerciales basado en

Wifarer

Wifarer8 facilita el posicionamiento en interiores mediante el uso de la tecnología WiFide entidades públicas y privadas. Disponible en museos, hospitales, aeropuertos, centroscomerciales, minoristas, estadios y universidades de Estados Unidos y Canadá.

Los usuarios reciben la localización sin problemas y son guiados sin problemas a travésde cualquier complejo hasta su destino con facilidad. Se estudian los comportamientos delos usuarios en las distintas instalaciones, con especial importancia en pacientes, ya que, re-gistran lo que buscan, dónde suelen ir y el tiempo empleado. Además de guiar a sus usuariosen todos los edificios, incluye dos servicios comunes a todos los complejos:

El primero es la información que ofrecen sobre los servicios de los que dispone: res-taurantes, tiendas de regalos, cafeterías, etc.

El segundo tiene en cuenta la accesibilidad para sillas de ruedas, para aquellos usuarioscon problemas de movilidad para llegar a su destino.

Volviendo al tema de los hospitales los visitantes pueden buscar la clínica o la habitaciónde un paciente y ser guiados sin necesidad de consultas a recepción.

En el caso de los aeropuertos, guía a la puerta de embarque, teniendo en cuenta el tiempoque se tarda en llegar y la distancia que queda.

Todos estos servicios, apoyados en mapas precisos de cada una de las plantas, junto conel amplio repositorio de planos del que dispone y su continuo crecimiento, hacen que sea unreferente a la hora de tener en cuenta características del futuro proyecto.

Figura 3.17: AppWifarer. Guiado in-terior

Figura 3.18: AppWifarer. ServiciosOfrecidos

Figura 3.19: AppWifarer. ServiciosOfrecidos

8Wifarer (2014), http://www.wifarer.com

30

Page 61: Sistema asistencial en superficies comerciales basado en

San Francisco Airport usa iBeacons para ayudar a a los invidentes

El aeropuerto de San Francisco esta realizando pruebas con iBeacons para ayudar a gen-te invidente a desplazarse dentro de la terminal, mediante la implantación de 300 balizasdistribuidas dentro de la terminal. Gracias a la tecnología iBeacons conectando los teléfo-nos móviles de los usuarios para recibir información y a la tecnología VoiceOver de Appleque permite leer en voz alta dicha información, se podrá informar al usuario desde dondeencontrar una cafetería o una toma eléctrica, hasta desplazarse a localizaciones concretas[Low14].

Figura 3.20: Mapa interior aeropuertode San Francisco.

Figura 3.21: Adaptacion a gente invi-dente aeropuerto de San Francisco.

31

Page 62: Sistema asistencial en superficies comerciales basado en

MIT Mobile

MIT Mobile9 está destinada a su uso en el Massachusetts Institute of Technology o másconocido como MIT permite buscar cualquier edificio de manera independiente dentro delcampus. Muestra un plano esquemático de todos los edificios sobre un mapa cartográfico yofrece información acerca de él.

Permite al usuario mantenerse en contacto con todo el personal del MIT (docentes, ad-ministrativos, estudiantes) proporcionando la información de contacto personal y saber enqué edificio se encuentra para el caso de trabajadores del MIT (docentes y administrativos).Además muestra todos los eventos que se realizan en el centro.

Figura 3.22: App MIT Mobile. Guiado Figura 3.23: App MIT Mobile. Servi-cios Ofrecidos

9MIT Mobile (2015), http://m.mit.edu/about/iphoneapp.html

32

Page 63: Sistema asistencial en superficies comerciales basado en

Se ha realizado una breve búsqueda referente a la universidad poniendo como referenciastres ejemplos:

Universidad de Granada

La Universidad de Granada10 provee información sobre la Universidad, los centros quela componen y las titulaciones que en ella se imparten, de manera que el usuario sea ca-paz de conocer la oferta que ofrece la Universidad a la comunidad educativa. Dispone deinformación como el alojamiento en Granada, el calendario académico, el uso de la tarjetaUniversitaria o el proceso para solicitar una cuenta de correo electrónico. La aplicación in-cluye acceso al directorio de la Universidad, con el que se puede localizar la informaciónsobre los miembros de esta comunidad. También se pueden localizar geográficamente loscentros y servicios de la Universidad y visualizar cada uno de los edificios señalados en unmapa cartográfico.

Figura 3.24: App Universidad de Gra-nada. Servicios ofrecidos

Figura 3.25: App Universidad de Gra-nada. Centros de la Universidad

10Universidad de Granada (2012), http://cevug.ugr.es/movil

33

Page 64: Sistema asistencial en superficies comerciales basado en

Universidad de Alabama

De manera similar a la Universidad de Granada, la app University of Alabama11 ofreceuna suite de aplicaciones corporativas en una principal, con la diferencia de que permitebuscar los edificios por separado en lugar de mostrar todos los edificios sobre el mapa, utilizaun plano dibujado para mostrar los edificios superpuestos y muestra más información deledificio. También muestra el directorio personal de la universidad, ofreciendo la posibilidadde mantenerse en contacto con la persona buscada.

Figura 3.26: App University of Alaba-ma. Servicios ofrecidos

Figura 3.27: App University of Alaba-ma. Directorio de búsqueda

11university of Alabama (2012), http://m.ua.edu/app/

34

Page 65: Sistema asistencial en superficies comerciales basado en

Universidad Rey Juan Carlos

La Universidad Rey Juan Carlos12 permite al usuario gestionar sus propias guías de ocioo turismo, incluso para personas con discapacidad funcional o que necesiten orientaciónpor todo el campus de la Universidad Rey Juan Carlos ( URJC ) al combinar guiado tantoOutdoor como Indoor ofrece indicaciones dependiendo de la incapacidad que presente (vozpara invidentes, gestos y texto para sordos, etc).

Figura 3.28: App GuideURJC. Mapade interior

Figura 3.29: App GuideURJC. Crea-ción de rutas

12Universidad rey Juan Carlos (2013), https://play.google.com/store/apps/details?id=com.dte.guideURJC&hl=es

35

Page 66: Sistema asistencial en superficies comerciales basado en

Carrefour

Carrefour está probando una nueva tecnología que utiliza Bluetooth Low Energy (BLE),en carros y cestas para seguir el viaje de los compradores de la tienda. Estas balizas unidas alos carros y cestas trabajan en conjunto con sensores colocados en el techo de la tienda querecogen las señales emitidas.

Los datos de localización recogidos por los sensores se almacenan en un servidor para suanálisis. Estos datos recogen el tiempo total que están en la tienda y en cada pasillo y lospasillos más visitados. Los datos de localización se recogen de forma anónima, pero prevéampliarse en el futuro vinculando los datos a cada cliente individual.

El cambio de los hábitos en un cliente es muy difícil, mediante el uso de estas balizas uni-das a carros y cestas se prescinde de que los consumidores necesiten una aplicación o inclusoun teléfono móvil, de manera que no se necesite ninguna interacción con el cliente.

Sin embargo la tecnología es completamente compatible con el teléfono inteligente, demanera que en un futuro se pueda integrar con su tarjeta de fidelización, por ejemplo. Entodo momento lo que se quiere es saber el comportamiento y el flujo de personas dentro dela tienda sin la necesidad de saber quiénes son.

Figura 3.30: Localización Indoor den-tro del supermercado Carrefour

36

Page 67: Sistema asistencial en superficies comerciales basado en

3.3.1 Análisis Comparativo App para localización en interioresDe manera análoga al análisis comparativo de las aplicaciones para realizar listas de la

compra, se concluye este apartado con un análisis comparativo de las características de lasaplicaciones de localización interior mediante la creación de la Tabla 3.2.

La comparativa realizada en la Tabla permite visualizar las características de todas lasaplicaciones analizadas que proveen diferentes servicios relevantes y por tanto, se debe con-siderar su incorporación en este proyecto.

Sin embargo al tratarse de un usuario que va a realizar la compra a un supermercado,algunas de estas características no sirven y el resto hay que adaptarlas, ya que, en lugar demencionar edificios, se referirán a productos. A continuación se enumera una adaptación delas diferentes características destacables:

Uso de mapa cartográfico: Este punto situará el edificio en el mapa.

Indicación sobre mapa de edificios disponibles: Indicación de los productos disponi-bles, ya sea a través de una lista o presentada en un mapa esquemático dibujado interiorsi lo tuviera la aplicación.

Búsqueda de edificios disponibles: Pasaría a llamarse “búsqueda de productos dispo-nibles” y permitiría buscar si el producto que se desea está en la lista.

Uso de plano esquemático dibujado interior: Esta característica es similar, ya que semostrarían los distintos pasillos que ofrece el supermercado.

Posicionamiento interior: Esta característica es la esencia de la aplicación.

Visualización de Servicios interiores: Esta característica también se ofrece de la mismamanera en una aplicación para edificios y para ir a comprar.

Búsqueda de servicios: Esta característica no tiene sentido si se añade la característicaanterior, ya que en un supermercado son pocos y son comunes los servicios que seofrecen a los usuarios en todos los edificios similares, como por ejemplo un aseo.

Rutas Origen-Destino: Esta característica junto con el posicionamiento interior es labase de la aplicación.

Guiado: Esta característica ofrece indicaciones al usuario a la hora de realizar la ruta.

37

Page 68: Sistema asistencial en superficies comerciales basado en

Tras conocer y adaptar todas las características de las aplicaciones de interior se ha consi-derado recomendable incorporar las siguientes a el proyecto:

Indicación de los productos disponibles

Búsqueda de productos disponibles

Uso de plano esquemático dibujado interior

Posicionamiento interior

Visualización de Servicios interiores

Rutas Origen-Destino

Guiado

38

Page 69: Sistema asistencial en superficies comerciales basado en

Uso

dem

apa

cart

ográ

fico

Indi

caci

ónso

bre

map

ade

edifi

cios

disp

onib

les

Bús

qued

ade

edifi

cios

disp

onib

les

Uso

depl

ano

esqu

emát

ico

dibu

jado

inte

rior

Posi

cion

amie

nto

enin

teri

orV

isua

lizac

ión

dese

rvic

ios

inte

rior

es

Bús

qued

ade se

rvic

ios

Rut

aO

rige

n-D

estin

o

Gui

ado

Poin

tIns

ide

33

33

73

73

7

Wifa

rer

37

33

73

73

7

San

Fran

cisc

oA

irpo

rt7

77

33

33

33

MIT

Mob

ile3

33

77

73

37

Uni

vers

idad

deG

rana

da3

37

77

77

77

Uni

vers

idad

deA

laba

ma

37

37

77

77

7

Uni

vers

idad

Rey

Juan

Car

los

33

33

37

73

3

Car

refo

ur7

77

33

33

33

Tabl

a3.

2:C

ompa

rativ

ade

las

aplic

acio

nes

que

perm

iten

real

izar

loca

lizac

ion

Indo

or

39

Page 70: Sistema asistencial en superficies comerciales basado en

3.4 ConclusiónUna vez finalizado el análisis de las aplicaciones que se han hallado se muestra en la Tabla

3.3 el resultado de todas las características deseables que ha de tener la aplicación.

Características

App Listas de la Compra

- La app debe contener una base de datos con los productosdel centro comercial al que va a estar destinada la app.- Los productos deben contener una imagen que haga másintuitiva la localización dentro del catálogo de productos.- Los productos deben tener un precio asignado.- Los productos pueden ser buscados de manera escrita opor comandos de voz.- El usuario puede crear varias listas.- El usuario puede visualizar el precio de la lista con losproductos ya escogidos.- El usuario puede compartir la lista con cualquier otra per-sona.- El usuario puede añadir una alerta a cada lista para que leavise en una fecha concreta.

App Localización Indoor

- Indicación de los productos disponibles- Búsqueda de productos disponibles- Uso de plano esquemático dibujado interior- Posicionamiento interior- Visualización de Servicios interiores- Rutas Origen-Destino- Guiado

Tabla 3.3: Características de ShoppingBeacon

40

Page 71: Sistema asistencial en superficies comerciales basado en

Capítulo 4

Arquitectura

E N este capítulo se describen el diseño e implementación del sistema desarrollado, si-guiendo un enfoque top-down en el que en primer lugar se realiza un resumen del

sistema sin especificar detalles y a continuación se desarrolla cada parte del sistema conmayor detalle. Como ya se ha comentado, en primer lugar se proporciona una descripcióngeneral de la arquitectura del sistema, que sirve de introducción a los contenidos expuestosen el resto del capítulo. En segundo lugar se presenta los patrones de diseño en la que se basael sistema y finalmente se presenta el estudio del diseño e implementación de cada uno delos módulos del sistema, describiendo las responsabilidades de cada módulo, las alternativastecnológicas consideradas para su implementación, problemas surgidos en su desarrollo ysoluciones planteadas y los detalles técnicos de los mecanismos finalmente planteados.

4.1 Arquitectura General

Ampliando la visión general de la arquitectura proporcionada en la Sección 2.1 del Capí-tulo 2, las siguientes secciones de este capítulo realizan un análisis de los diferentes aspectossignificativos que describen cada una de las partes de la arquitectura. Esta distribución semuestra en la Figura 4.1, tras lo que se realiza un breve reconocimiento de los distintoscomponentes que comprende la plataforma. La plataforma se halla estructurada siguiendo elpatrón MVC como se describe en la Sección 4.2, en el que cada vista posee su controlador ymodelo asociado.

Siguiendo el orden vertical, el primer nivel que se puede observar es el de presentacióno interfaz de usuario (vista) que, como su nombre indica, es el medio a través del cual,el usuario interactúa con el sistema, solicitando la realización de operaciones y recibiendoresultados u otra información como pueden ser las notificaciones. El siguiente nivel se tratade la capa de controladores, responsable de operar directamente con cada una de las dospartes de la que consta la aplicación, ya que es el encargado de recibir a entrada del usuarioy reaccionar en consecuencia.

A continuación se encuentran de manera paralela las dos partes de la que consta la plata-forma: Gestión y Acceso a Datos y Ubicación y Guiado.

41

Page 72: Sistema asistencial en superficies comerciales basado en

Figura 4.1: Modelo de arquitectura del sistema

Gestión y Acceso a DatosEs aquí donde se encuentra la base de datos de la aplicación. En el se pueden distinguir dos

fachadas de operaciones que le permiten comunicarse con los niveles superior e inferior. Lafachada de operaciones con listas, encargada de la operación y la comunicación del Módulode Gestión y Acceso a Datos con el controlador mediante el uso de delegados, como secomenta en la Sección 4.2 y la fachada de operaciones de persistencia de datos se encargaráde operaciones con la base de datos mediante una interfaz de operaciones, utilizada paragarantizar la independencia entre las diferentes partes de la arquitectura. Ambas interfaces de

42

Page 73: Sistema asistencial en superficies comerciales basado en

operaciones actúan sobre la lógica y las entidades de dominio del sistema. También se puedeobservar otros cuatro módulos cuya utilidad será detallada en el análisis de su arquitectura:Sistema de Consulta de Datos, Sistema de Creación de Listas, Sistema de Modificación deListas y por ultimo el Sistema de Notificación de Eventos. Finalmente se encuentra la basede datos, encargada de almacenar todos los datos necesarios para la generación de listasy la consulta de datos, incluidas las listas que genera el usuario. Su estructura, analizadaposteriormente, se comunica mediante la fachada de operaciones de persistencia de datos.

Ubicación y GuiadoComo nuestra la Figura 4.1, la arquitectura del sistema se encuentra estructurada modu-

larmente y se compone de:

Módulo de Comunicaciones: Se comunica con los distintos dispositivos que se en-cuentren dentro del recinto comercial para recibir los datos de entrada que serán pro-cesados y convertidos en información válida para el módulo superior. Descrito en laSección 4.6.1.

Módulo de Tratamiento de Señal: Gestiona todas las señales que recibe haciendouna distinción según el dispositivo del que llega la señal. Descrito en la Sección 4.6.2.

Módulo de Filtrado de Señal: Una vez conseguido un número determinado de seña-les de cada dispositivo, se procesan de manera concurrente mediante el uso de hilospara evitar los cuellos de botella y reducir el ruido aleatorio en el dominio de tiempo.Descrito en la Sección 4.6.3.

Módulo de Posicionamiento: Una vez determinadas las posibles posiciones calcula-das previamente en el módulo anterior, se decide cuál es la posición final del usuario.Descrito en la Sección 4.6.4.

Módulo de Enrutamiento y Guiado: Se encarga de generar la ruta de menor costecon todos los productos seleccionados por el usuario, teniendo en cuenta el lugar departida. Descrito en la Sección 4.6.5.

Dispositivos: El sistema debe reconocer y obtener los datos que envíen independien-temente del tipo de tecnología empleada (vease Anexo A) y del tipo de comunicaciónque utilicen.

La siguiente posición junto con su descripción para guiar al usuario se mandará al controla-dor de la aplicación que será el encargado de actuar en consecuencia y comunicarse con lavista.

43

Page 74: Sistema asistencial en superficies comerciales basado en

4.2 Patrones de DiseñoUna de las cualidades de cualquier framework o SDK es que se deben utilizar los patrones

de diseño que ofrecen al desarrollador, para así facilitar la implementación de una app.

Dentro del SDK de iOS no es una excepción, y se han utilizado distintos patrones dedesarrollo en los que se basa la aplicación y que a continuación se van a detallar.

4.2.1 DelegadoEsta clase de patrón de diseño es frecuentemente usada en el desarrollo de aplicaciones en

la plataforma iPhone OS. Normalmente suele ser la alternativa a la herencia. La delegaciónes una forma de extender y reutilizar la funcionalidad de una clase, escribiendo otra claseadicional con funcionalidad extra que usa instancias de la clase original para proveer supropia funcionalidad. Los delegados (delegate) son un patrón en donde un objeto actúa ennombre de un coordinador asociado a otro objeto. Un delegate básicamente delega el controlde la interfaz de usuario para un evento, o al menos se le pregunta para interpretar el eventode una manera específica en la aplicación, es decir, mantiene una especie de vínculo con elobjeto que le permite recibir los mensajes que el objeto genérico genera.

El funcionamiento de un delegate permite coordinar su apariencia y estado con cambiosque se producen en otras partes de un programa, cambia generalmente provocado por lasacciones del usuario. Más importante aún, los delegates hacen posible que un objeto puedaalterar el comportamiento de otro objeto sin la necesidad de tener una relación de herenciaentre los objetos. El delegate es casi siempre uno de los objetos personalizados, y por defini-ción, incorpora la lógica específica de la aplicación que el objeto genérico no conoce.

En muchas ocasiones, la delegación resulta más apropiada que la herencia. Por ejemplo,la herencia es útil para modelar relaciones de tipo es-un o es-una, ya que estos tipos derelaciones son de naturaleza estática. Sin embargo, relaciones de tipo es-un-rol- ejecutado-por son mal implementadas con herencia. En este tipo de relaciones, las instancias de unaclase pueden jugar múltiples roles. Los métodos definidos con este patrón están agrupadosen un protocolo. Los protocolos en iOS son métodos que actúan sobre un objeto y puedenser implementados por cualquier clase. Básicamente tienen la declaración de una serie demétodos que ejecuta otra clase y se espera que le agreguemos funcionalidad según lo necesitecada una de las clases que invocan esta otra clase. Si una clase se ajusta a un protocolo,entonces garantiza que implementa los métodos obligatorios de ese protocolo, que ademáspuede incluir métodos opcionales.

En el caso de la aplicación desarrollada para este proyecto, se han usado muchos de losprotocolos delegados que iPhone OS provee a los desarrolladores. Los componentes comola brújula, el acelerómetro o el bluetooh, requieren de la implementación de determinadosmétodos en las clases en las que se declaran instancias de las clases originales que hacenreferencia a estos sensores. De este modo, los sensores envían la información que recogen

44

Page 75: Sistema asistencial en superficies comerciales basado en

a los métodos implementados por sus delegados. También las vistas de tablas, las alertas deaviso, el envío de correo, las barras de navegación, etc.

Además de los protocolos ya existentes, iOS proporciona la posibilidad de declarar nuevosprotocolos de delegados que se adapten a las necesidades de una aplicación en concreto. Enel caso de la aplicación desarrollada se ha implementado un protocolo de delegado por cadauna de las vistas que aparecen en la aplicación

4.2.2 Target-ActionAunque el patrón delegado es útil para la comunicación entre los objetos de un programa,

no es la manera más adecuada de comunicarse con la interfaz de usuario. La interfaz deusuario de una aplicación típica consiste en un conjunto de objetos gráficos y quizás los máscomunes sean los controles (boton, slider, casillas de verificación,...).

El papel de un control en la interfaz de usuario es simple: Interpreta la intención del usua-rio y da instrucciones a otro objeto de llevar a cabo esa solicitud. De esa manera, cuandoun usuario actúa sobre cualquier control de la aplicación el dispositivo de hardware generaun nuevo evento. El control acepta el evento y lo traduce en una instrucción especifica de laaplicación. Un evento es generado por un usuario mediante cualquier interacción. Por ejem-plo, que el usuario haga click sobre un botón generará un evento para que el que existirá uncomportamiento predeterminado por parte del sistema. Estos comportamientos pueden sercambiados ante un evento disparado, es decir se trata de manejadores (handlers).

Los eventos, como se ha comentado anteriormente, no dan mucha información acerca dela intención del usuario. Simplemente refleja que el usuario hace click en un botón del ratón opulsa una tecla, por lo que debe existir algún mecanismo encargado de realizar la traducciónentre evento e instrucción. Este mecanismo se denomina Target-Action

Este mecanismo se utiliza para la comunicación entre un control y otro objeto. La recep-ción del objeto, normalmente una instancia de una clase personalizada, se llama el objetivo.La acción es el mensaje que el control envía al objetivo.

Por lo que, este patrón es uno de los que permitirá que desde la vista se puedan invocarmanejadores del eventos presentes en el controlador. Es decir relacionar un evento de unobjeto de la vista con una acción o método de un controlador. La relación será entre el objetoel evento(target) y la acción (action).

4.2.3 Modelo-Vista-Controlador (MVC)MVC define una separación clara entre los componentes críticos de la aplicación (Figu-

ra 4.2). Usando este patrón de diseño se obtiene una estructura definida que puede permitira otros desarrolladores trabajar con el código implementado en un futuro. Además, aplicaresta clase de estructura permite reutilizar partes del proyecto para otras aplicaciones diferen-tes [Joh10]. Por ejemplo, la clase que pinta un botón en la pantalla, se podría reutilizar en

45

Page 76: Sistema asistencial en superficies comerciales basado en

todos los botones que tiene la aplicación siempre y cuando esa sea su única responsabilidad.Si además de pintar un botón en la pantalla tuviese una lógica que se debe ejecutar al pulsarel botón, no se podría reutilizar, obligando a repetir el código que pinta un botón en la pan-talla para cada uno de los botones de la aplicación. Como su nombre indica, se definen trespartes de la aplicación:

Modelo: Proporciona los datos internos y los métodos que ofrecen información alresto de la aplicación. El modelo no define la apariencia o el comportamiento de laaplicación.

Vista: Puede haber dentro de una misma aplicación una o más vistas, formada cadauna de ellas por diferentes componentes (etiquetas, campos, botones, etc. ) con los queel usuario interactúa y conforman por tanto la interfaz de usuario.

Controlador: Está vinculado a la vista. El controlador es el responsable de recibir laentrada del usuario y reaccionar en consecuencia. Los controladores pueden accedery actualizar una vista usando información del modelo, así como actualizar el modelocon el resultado de las interacciones del usuario en la vista, es decir, enlaza los com-ponentes del MVC. Es el cerebro de este patrón de diseño, haciendo trabajar a la vistay el modelo en sincronización para que el usuario pueda ver cosas en la pantalla o paraque al presionar un botón sea efectuada alguna acción.

El patrón MVC se explica mejor con la Figura 4.2:

Figura 4.2: Objetos pertenecientes al patrón MVC

El usuario interactúa con la aplicación y la vista (U objeto de la vista) a través de lainterfaz de usuario.

46

Page 77: Sistema asistencial en superficies comerciales basado en

La vista le envía un mensaje al controlador diciéndole por ejemplo que hemos presio-nado un botón y queremos que esto responda a alguna acción.

El controlador recibe el mensaje y contacta con el modelo para realizar la acción yactualizar la información pertinente.

El controlador recoge la información requerida por la vista pero actualizada por elmodelo y por último actualiza la vista con los cambios que se han realizado sobre enel modelo.

Como ya se ha comentado anteriormente, el controlador es el encargado de enlazar loscomponentes del MVC con los que mantiene una comunicación “ciega” y estructurada.A continuación se explica la comunicación entre los distintos componentes con la Figura4.3

Figura 4.3: Comunicación entre los objetos del MVC

En cuanto a la comunicación con la vista, el Controlador crea un objetivo (target) en simismo, y repartirá acciones (action) a la Vista. Ésta será la encargada de enviar la accióna este objetivo cuando suceda algún evento en la interfaz de usuario como puede ser unapulsación sobre un botón de la Vista y será el Controlador el encargado de realizar las tareasnecesarias para responder a ese evento.

A veces, la Vista tiene que sincronizarse con el Controlador (para actualizar los datos dela misma), es entonces cuando este Controlador se fija como delegado de la Vista a travésde un protocolo, ya que la Vista no es la propietaria de los datos que está mostrando, y enla mayoría de los casos es el Controlador el que actúa como origen de datos interpretando yformateando la información del Modelo.

47

Page 78: Sistema asistencial en superficies comerciales basado en

El objeto encargado de delegar las funciones (en este caso la Vista) mantiene una referen-cia al otro objeto, el delegado (en nuestro caso el Controlador), y en el momento apropiadoenvía un mensaje a dicha referencia. El mensaje informa al delegado de un evento que elobjeto que delega (la Vista), está a punto de manejar o simplemente ha manejado. El de-legado puede responder al mensaje mediante la actualización de la apariencia o estado dela Vista. La principal ventaja de la delegación, es que permite personalizar fácilmente elcomportamiento de varios objetos en un objeto central.

En cuanto a la comunicación con el Modelo, no hay una comunicación directa, sino queel Modelo utiliza un mecanismo de transmisión que hace de “emisora de radio” permitiendode esa manera a los controladores (u otros Modelos) poder “sintonizar” las cosas que lesinteresa. Este mecanismo son Notificaciones y KVO (Key-Value Observing) que permite alos objetos que se les notifique de los cambios en las propiedades de otros objetos.

El aislamiento lógico creado entre las partes funcionales de una aplicación hace que elcódigo sea más fácil de mantener, reutilizar y ampliar. El diseño MVC en el kit de desarrollode Apple es natural. Cualquier proyecto creado en él sigue este patrón. Por lo tanto, el diseñode todas las vistas (capa de presentación) es llevado a cabo por la herramienta InterfaceBuilder mientras que la lógica de la aplicación es implementada en la herramienta Xcode.

4.3 Posicionamiento en móvilesSe pretende conseguir la posición más exacta posible del usuario o nodo móvil en tiempo

real, de manera que el usuario no intervenga de manera activa en el cálculo de la soluciónpropuesta.

Hay múltiples técnicas que te permiten estimar la posición del usuario, procesando lasseñales recibidas por los nodos de referencia:

Técnicas que utilizan el retardo de la señal como pueden ser Time of Arrival, TimeDifference of Arrival, Roundtrip Time of Flight.

Técnicas que se basan en el ángulo en que llega la señal como es Angle of Arrival

Técnicas que se basan en la atenuación de la señal como es el caso de Received SignalStrength.

Sin embargo los entornos de interiores presentan problemas de la reflexión de la señal quedificultan en gran medida el uso de estad técnicas.

Este es el problema ampliamente conocido como del camino múltiple o multipath. Es-te problema establece que la señal puede llegar al nodo móvil desde varios lugares y condistintos ángulos, lo que dificulta establecer la posición exacta del nodo emisor de la señal[AMB10].

Este problema impide que un sistema de posicionamiento en un entorno interior pueda

48

Page 79: Sistema asistencial en superficies comerciales basado en

basarse en las técnicas que estudian la forma en que llega esta señal, por el problema de losrebotes que se producirán en el entorno, por lo que se ha decidido calcular la posición delusuario utilizando las técnicas que se basan en la atenuación de la señal (RSS).

Para la realización del presente Trabajo Fin de Grado se ha basado en la técnica basadaen la fuerza de recepción de la señal (RSS). Concretamente se ha decidido utilizar el métodoRSSI (Received Signal Strength Indicator), basado en el modelo de la pérdida de la señal enel camino, que se produce de manera exponencial durante la transmisión. [BP00]

Para ello, los nodos de referencia ofrecen un identificador unívoco. Como solución alproblema del multipath y basándose en este identificador unívoco, se usa la fuerza de laseñal recibida o RSS en tiempo real para localizar la posición del usuario o nodo móvil,haciendo uso de un sistema de posicionamiento [DC11] que permita consultar las posiblesposiciones del nodo móvil según la fuerza de señal que obtiene de los distintos nodos dereferencia. Este sistema de posicionamiento contendrá las coordenadas de los distintos nodosde referencia junto con la fuerza de señal que llega a las distintas coordenadas de la superficiecomercial.

Los motivos que inducen al uso de esta técnica son dos:

No se puede usar un posicionamiento basado en un solo nodo, ya que hay una altaprobabilidad de que el nodo móvil este a una posición equidistante a varios nodos dereferencia.

Un promedio de las coordenadas de los nodos de referencia dará una estimación mascercana a la ubicación real del usuario que utilizando un único nodo de referencia.

49

Page 80: Sistema asistencial en superficies comerciales basado en

4.4 Gestión y AlmacenamientoAl tratarse de una aplicación para realizar la lista de la compra, la app debe contener

dos funcionalidad básicas, la primera de ellas que muestre un catálogo de productos dondeel usuario pueda escoger y una segunda funcionalidad básica que le permita crear una listadonde añadir los productos escogidos. Estas funcionalidades implican que la aplicación debede tener datos que presentar y datos que almacenar.

iOS ofrece diversos modos de llevar esto a cabo. Se pueden guardar los objetos sin pro-cesar en un archivo y traducirlos junto con sus relaciones a XML o crear una base de datosSQLite.

Con independencia del sistema que se utilice, se pueden escribir muchas rutinas para guar-dar, leer, encontrar, eliminar o actualizar una lista o producto. Con esta base de datos segestiona lo principal pero aún se tiene que llevar a cabo trabajo adicional, como definir elmodelo de datos SQL o diseñar y escribir consultas SQL.

Core Data, la tecnología de almacenamiento de iOS, es un framework de persistenciaavanzada que realiza gran parte de este trabajo de forma automática. Core Data no es unasimple base de datos, sino mucho más. Incluye muchos comportamientos típicos de un ORM(Object-Relational Mapping) que se encarga de la transformación de las tablas de una base dedatos, en una serie de entidades que simplifiquen las tareas básicas de acceso a los datos parael programador, así como otras muchas funcionalidades como pueden ser ordenar, filtrar,e incluso a una clase especial diseñada para trabajar con vistas de tabla, como es el casodel presente sistema, que a la hora de mostrar el catálogo de productos o las listas trabajaconstantemente con vistas de tabla.

El trabajo con Core Data dentro del presente Trabajo Fin de Grado se va a apoyar princi-palmente en tres conceptos:

Modelado de datos

Guardar información

Recuperar información

Apple recomienda la arquitectura MVC para integrar Core Data, la cual se concentra enla capa “Modelo”, por lo que Core Data se encontrará en la capa modelo de cada una de lasvistas. Al igual que en la mayoría de bases de datos, la parte que gestiona los datos de CoreData se divide en tres capas principales:

El lugar en el que se almacenan los datos

El formato de los mismos

Un entorno de acceso a ellos

Los datos se guardan en los almacenes, y puede haber más de uno. El formato de los

50

Page 81: Sistema asistencial en superficies comerciales basado en

datos se especifica con un modelo de objeto gestionado y el acceso se produce a través de uncontexto de objeto gestionado. Podría haber varios contextos activos al mismo tiempo. Lasclases correspondientes son las siguientes:

NSPersistentStoreCoordinator: Coordina todos los almacenes utilizados para los da-tos. Para iOS suele haber un solo almacén en el dispositivo.

NSManagedObjectModel: Describe todos los tipos de objetos de datos que se utili-zan en las aplicaciones.

NSManagedObjectContext: Es un gestor para un conjunto de objetos de datos. Elcontexto incluye las reglas que se usan para encontrar elementos de datos reales en losalmacenes, algunos de estos elementos y su estado actual. Es posible tener múltiplescontextos activos al mismo tiempo, con los mismos objetos en diferentes estados encada uno. Los contextos vuelven a escribir los elementos en el almacén solo cuando seguardan.

Con la intención de posibilitar la mejora del sistema en un futuro e integrar un servidordesde el que se puedan descargar y actualizar los datos, se ha decidido preparar la arquitectu-ra para permitir añadir una base de datos externa al sistema para captar los datos e incluirlosdentro de un array de la misma manera que si se captaran los datos de un servidor, paraposteriormente añadirlos a la tecnología de almacenamiento de iOS, Core Data. Por lo tantohabría dos partes bien diferenciadas:

Recuperación de datos externos

Uso de Core Data en la app

4.4.1 Recuperación de datos externosLo que se quiere conseguir en este apartado es acceder a la base de datos externa SQLite

para extraer todos los datos y posteriormente crear una base de datos interna en iOS medianteel uso de la tecnología Core Data para añadir todos los datos extraídos.

En primer lugar se utiliza un editor visual para definir el modelo, que es un conjunto deobjetos que representan los datos y las relaciones entre ellos, para la base de datos de CoreData, como muestra la Figura 4.4.

El modelo de base de datos de Core Data presentado en la figura anterior se traduce en eldiagrama entidad-interrelación de la Figura 4.5

Al tratarse de una relación de cardinalidad (n, n), además de las dos entidades que sepueden observar se hace necesario crear una tercera tabla que modelará dicha relación es-tableciendo la existencia de un producto en una lista, junto con el numero de unidades dedicho producto que se desea adquirir. Esto se traduciría en el modelo relacional del Listado4.1.

51

Page 82: Sistema asistencial en superficies comerciales basado en

Figura 4.4: Modelo Base de Datos

Figura 4.5: Diagrama entidad-interrelación

SShoppingList (index, name)

SProduct (name, category, cost, image, position, orientation)

SProductInList (index, name, units)

SProductInList.index --> SShoppingList.index

SProductinList.name --> SProduct.name

Listado 4.1: Modelo relacional

52

Page 83: Sistema asistencial en superficies comerciales basado en

A continuación se crean los constructores de las distintas entidades que aparezcan en labase de datos del sistema. Una entidad describe las partes de un elemento: los nombres delos atributos, los tipos de atributo y cualquier otra propiedad especial que permita manejar lainteracción con la base de datos externa.

Los elementos SProduct y SShoppingList corresponden a entidades de la base de datosinterna de iOS.

El siguiente paso ha sido garantizar que la base de datos tenga una instancia y un únicopunto de acceso global mediante el patrón de diseño singleton, el cual está diseñado pararestringir la creación de objetos pertenecientes a una clase o el valor de un tipo a un únicoobjeto.

Una vez inicializada la instancia de la base de datos, se construye una ruta al fichero de labase de datos para acceder a ella.

Comprometido con el objetivo de mejorar el sistema en un futuro y añadir una base dedatos remota con los productos, se ha simulado una comprobación inicial encargada de re-gistrar los posibles cambios en los productos como puede ser el precio o la ubicación. Alusarse una base de datos externa que no va a ser alterada, los productos añadidos a la tec-nología de almacenamiento de iOS no van a cambiar y por lo tanto una vez que se realiceel tránsito de datos de una base de datos a otra, no es necesario volver a repetir toda estaoperación. Por lo tanto la comprobación inicial se trata de confirmar si es la primera vez quese inicia el sistema.

Cada aplicación tiene un sistema de almacenamiento por defecto para cada usuario llama-do User Default System (ahora UDS), el cual está compuesto por una base de datos en la que,a través de unos parámetros y métodos, se pueden almacenar y recuperar ciertos valores, quesuelen ser pequeñas cantidades de datos que se usan comúnmente en la aplicación. A estosvalores por defecto se les llama: preferencias del usuario. Por ejemplo, recordar la últimavez que se inició la app, mostrar alarmas en intervalos de tiempo elegidos por el usuarioo permitirle a los usuarios elegir cuán periódicamente sincronizar ciertos datos con iCloud,almacenando dichos valores en el UDS y recuperandolos al inicio de la aplicación.

La clase NSUserDefaults permite interactuar con el UDS, proveyendo diversos métodospara guardar y recuperar datos desde esta base de datos por defecto.

Se quiere comprobar si es la primera vez que se inicia el sistema, por lo que al iniciar elsistema se realiza una llamada al sistema de almacenamiento UDS, comprobando si es así.En el caso de que la contestación sea positiva se abrirá la ruta construida, y una habilitado elacceso a la base de datos externa se procede a recuperar todos los datos. Una vez recuperadoslos datos, se actualizan las preferencias de usuario indicando que ya no es la primera vez quese inicia la app. El siguiente paso sería añadir los distintos productos de la base de datosexterna, a la base de datos interna de iOS. En caso contrario este se omite y se continúa con

53

Page 84: Sistema asistencial en superficies comerciales basado en

la ejecución de la app, ya que contiene todos los datos necesarios.

4.4.2 Uso de Core DataAntes de poder usar los datos, se debe inicializar Core Data para la app y por tanto los

objetos para cada una de las partes que componen Core Data: NSPersistentStoreCoordinator,NSManagedObjectModel, NSManagedObjectContext.

El código para el uso de la tecnología Core Data se añade a la clase AppDelegate, ya que esla encargada de “escuchar y reaccionar” ante cualquier cambio de estado de la aplicación.

Una vez inicializada la tecnología Core Data, definido el modelo de la base de datos eimplementados los constructores de las entidades que aparecen sólo queda añadir el códigopara acceder, crear, eliminar y actualizar los datos dentro del sistema.

Dentro de la app se presentan distintas vistas donde es necesario hacer uso de las funcio-nalidades que ofrece Core Data. Todas y cada una de las vistas siguen el patrón MVC, por loque será el controlador de cada vista el encargado de realizar una petición a su modelo, don-de se encuentra implementada la tecnología Core Data. A continuación se van a comentarlas distintas acciones que se realizan haciendo uso de la tecnología Core Data:

Acceder a los datos a través del contexto de objeto gestionado.

Permitir a Core Data la adición y eliminación de productos a una lista.

Permitir a Core Data la adición y eliminación de listas.

Acceder a los datos a través del contexto de objeto gestionado

Permitir a Core Data la adición y eliminación de productos a una lista.

Todas las vistas que hacen uso de la tecnología Core Data tienen vista de tabla y trabajancon las entidades: SProduct y SShoppingList, por lo que es imprescindible acceder a la basede datos para consultar los datos que se deben mostrar al usuario.

Lo primero que requiere la vista con la que se esté trabajando es una referencia al contextode objeto gestionado.

A continuación, en el Listado 4.2 se define el contenido de un array con los objetos actualesde la entidad con la que se va a trabajar, en este caso SProduct. En primer lugar, para obtenerlos datos del contexto de objeto gestionado es preciso describir los datos que se deseanen una solicitud de recuperación (o FetchRequest). Esto es tan sencillo como especificartodos los objetos de un tipo de entidad determinado, o tan complejo como un filtro y unaclasificación.

La solicitud se utiliza como parte de executeFetchRequest:error:, un método NSManage-dObjectContext para recuperar un array de objetos de datos gestionados. Se usa el mismo

54

Page 85: Sistema asistencial en superficies comerciales basado en

método para obtener un conjunto de datos actualizados siempre que hay un cambio, comoañadir o eliminar algún objeto. Como el array de productos se actualiza con diversos méto-dos en el controlador de tabla de productos, la solicitud de recuperación es otra variable deinstancia.

NSError *error = nil;

fetchRequest = [NSFetchRequest fetchrequestWithEntityName: "SProduct"];

arrayOfProdcuts = [managedContextObject executeFetchRequest: fetchRequest error:&error];

if (error != nil){

NSLog("Unresolved error %, %", error, [error userInfo]);

abort();

}

Listado 4.2: Actualización del contenido del array

En el anterior listado ocurre lo siguiente:

Se configura la solicitud de recuperación para buscar todas las entidades de clase SPro-duct.

Se establece el array de productos con todos los objetos gestionados en el contexto quecumplen con los criterios de la solicitud, en este caso, todos los productos.

Si ocurre un error al leer los objetos, se queda registrado en un archivo para informaral usuario de lo que ocurre y lo que debe intentar.

La llamada a abort() proviene de la plantilla proporcionada por el sistema. Lo únicoque hace es crear un registro de fallos y cerrar la app.

Cada vez que se modifica un dato se genera un array nuevo. Esto funciona bien porque nohay muchos datos. Sin embargo a medida que el número de productos crece surgen proble-mas de rendimiento y posiblemente también de memoria. Además se necesita gran cantidadde código, porque si el contexto del objeto gestionado es encargado de generar el array, debeposeer información sobre la cantidad de productos incluidos y el orden en el que aparecenhaciendo necesario tener código para calcular el número de productos, de secciones y de filasen una sección que va a poseer la tabla de la vista con la que se está trabajando, además deactualizar la tabla basándose en los cambios en los datos. En lugar de escribir todo este có-digo, el sistema proporciona NSFetchedResultsController y los protocolos asociados. Estándiseñados para facilitar la gestión de las tablas con objetos basados en Core Data haciendolo siguiente:

Configurar la sección y el número de filas de una tabla.

Obtener el dato representado por una ruta índice.

55

Page 86: Sistema asistencial en superficies comerciales basado en

Devolver títulos de encabezado de sección.

Registrar cambios en el contexto de objeto gestionado y posibilitar actualizaciones detabla mediante un protocolo delegado.

Recuperar datos en grupos y en modo opcional almacenar datos en un archivo paramejorar el rendimiento.

Se va a transformar la tabla de productos para utilizar un controlador de resultados re-cuperados para el control básico de la tabla y la presentación. A continuación se añadiránsecciones y ordenación.

Lo primero que se necesita es una variable de instancia que contenga el controlador deresultados recuperados:

NSFetchedResultsController * fetchedResultsController

A continuación, como muestra el Listado 4.3, se inicializa el controlador de resultadosrecuperados, configurando una solicitud de recuperación adecuada, ya que NSFetchedRe-sultsController asocia el resultado de aplicar una solicitud de recuperación a un contexto deobjeto gestionado.

En el listado 4.3 anteriormente referido se utiliza un simple NSFetchRequest para devol-ver todas las entidades de SProduct, sin embargo el controlador de resultados recuperadosrequiere al menos un filtro y una ordenación. El filtro puede ser nulo, pero para ordenar esnecesario especificar un criterio como mínimo.

- (void)fetchCatalogProduct {

NSError *error = nil;

self.fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"SProduct"];

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc]

initWithKey:@"category"

ascending:YES];

[self.fetchRequest setSortDescriptors:[sortDescriptor]];

self.fetchedResultsController = [[NSFetchedResultsController alloc]

initWithFetchRequest:self.fetchRequest

managedObjectContext:self.managedContextObject

sectionNameKeyPath:@"category"

cacheName:nil];

self.fetchedResultsController.delegate = self;

56

Page 87: Sistema asistencial en superficies comerciales basado en

[self.fetchedResultsController performFetch:&error];

if (error != nil) {

NSLog(@"Unresolved error %@, %@", error, [error userInfo]);

abort();

}

[self.myDelegate productCatalogControllerModel: self.fetchedResultsController];

}

Listado 4.3: Solicitud de recuperación de datos

En el anterior listado ocurre lo siguiente:

Se configura una ordenación sencilla en función de la categoría del producto.

Se definen los descriptores correspondientes de la solicitud de recuperación con elcriterio de ordenación nuevo.

Se inicializa el controlador de resultados recuperados usando la solicitud de recupera-ción recién asignada y el contexto de objeto gestionado del delegado de la aplicación.

Se indica al controlador que lea el conjunto inicial de datos y gestione cualquier errorque pueda ocurrir.

Se avisa al delegado, que corresponde a la vista, para que se encargue de actualizar lavariable de instancia que contiene el controlador de resultados recuperados, con el quese trabaja en las vistas de tabla para mostrar los datos al usuario.

Cada vez que se actualizan los datos del contexto de objeto gestionado añadiendo, eli-minando o modificando alguno, se envía performFetch al controlador de resultados recu-perados. La llamada resulta en más trabajo en términos de procesamiento que si sólo seactualizaran los datos modificados.

El controlador de resultados recuperados tiene la capacidad de observar cambios en elcontexto de objeto gestionado y de invocar métodos cuando ocurren estos cambios. Tan sóloes necesario ofrecer soporte al protocolo NSFetchedResultsControllerDelegate y por tantomodificar la declaración del protocolo añadiendo NSFetchedResultsControllerDelegate

@interface ProductCatalogTableViewController : UITableViewController

<NSFetchedResultsControllerDelegate >

A continuación se define ProductCatalogTableViewController como delegado del contro-lador de resultados recuperados:

self.fetchedResultsController.delegate = self;

57

Page 88: Sistema asistencial en superficies comerciales basado en

Una vez definido ProductCatalogTableViewController como delegado del controlador deresultados recuperados, éste le envía mensajes siempre que ocurre un cambio en el contextode objeto gestionado mediante tres llamadas que se encargan de facilitar la gestión de lasactualizaciones de la tabla:

controllerWillChangeContent: Se invoca cuando parte del contenido va a cambiarpero antes de que se modifiquen los resultados recuperados.

- (void)controllerWillChangeContent:(NSFetchedResultsController *)controller

{

[self.tableView beginUpdates];

}

Listado 4.4: Solicitud de recuperación de datos controllerWillChangeContent:

controller:didChangeObject:atIndexPath:forChangeType:newIndexPath: Se in-voca una vez completado el cambio y actualizados los resultados recuperados. El men-saje se envía una vez con cada cambio y se podría invocar varias veces entre llamadasa controllerWillChangeContent: y controllerDidChangeContent:

- (void)controller:(NSFetchedResultsController *)controller

didChangeObject:(id)anObject

atIndexPath:(NSIndexPath *)indexPath

forChangeType:(NSFetchedResultsChangeType)type

newIndexPath:(NSIndexPath *)newIndexPath {

UITableView *tableView = self.tableView;

//Se determina que tipo de actualizacion hacer en base al tipo de modificacion

switch(type) {

//Cuando se inserta un objeto nuevo, se inserta tambien una celda en el lugar apropiado de

la tabla

case NSFetchedResultsChangeInsert:

[tableView insertRowsAtIndexPaths:@[newIndexPath] withRowAnimation:

UITableViewRowAnimationFade];

break;

//Se elimina un objeto, por tanto, se borra la celda correspondiente

case NSFetchedResultsChangeDelete:

[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:

UITableViewRowAnimationFade];

break;

//Se cambia o se actualiza un objeto. Se actualiza la celda que representa los datos

case NSFetchedResultsChangeUpdate:

//code to update the content of the cell at indexPath

break;

//Se traslada la celda de datos de un lugar a otro de la tabla

58

Page 89: Sistema asistencial en superficies comerciales basado en

//Se elimina la celda antigua e inserta una nueva

case NSFetchedResultsChangeMove:

[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:

UITableViewRowAnimationFade];

[tableView insertRowsAtIndexPaths:@[newIndexPath] withRowAnimation:

UITableViewRowAnimationFade];

break;

}

}

Listado 4.5: Solicitud de recuperación de datos forChangeType:newIndexPath:

controllerDidChangeContent: Se invoca una vez completados los cambios y actua-lizados los resultados recuperados.

- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller

{

[self.tableView endUpdates];

}

Listado 4.6: Solicitud de recuperación de datos controllerDidChangeContent:

Permitir a Core Data la adición y eliminación de productos a una lis-ta

La mejor acción sobre la vista que permite añadir o eliminar un producto de la lista con-siste en seleccionar la celda del producto y si aparece un tick verde quiere decir que la listacontiene el producto, mientras que si aparece un tick gris quiere decir que la lista no contieneese producto. Al estar trabajando sobre una lista que puede contener o no los productos se-leccionados se debe comprobar si el producto aparece en la lista antes de tomar una decisión.Para ello, lo primero es acceder a los datos a través del contexto de objeto gestionado y acontinuación comprobar si el producto que ha seleccionado el usuario aparece en la lista.

En el caso de que el producto aparezca en la lista, se elimina de la lista, mientras que encaso contrario se añadiría. Seguidamente se actualiza la lista con la que se trabaja, se guardala nueva lista en el contexto actual de objeto gestionado, se modifica la celda para cambiarla imagen del tick y finalmente se avisa al delegado, que corresponde a la vista, para quese encargue de actualizar la variable de instancia que contiene el controlador de resultadosrecuperados con el que se trabaja en las vistas de tabla para mostrar los datos al usuario.

- (void)selectCell:(AddProductTableViewCell *)selectedCell

shoppingListToView:(SShoppingList *)shoppingListToView{

NSError *error = nil;

59

Page 90: Sistema asistencial en superficies comerciales basado en

//Se pasa nuestra lista de productos y el nombre de la celda seleccionada

BOOL appear = [self sameObject:selectedCell.title.text];

int index = [self findName:selectedCell.title.text];

if(appear){

NSLog(@"Elemento Repetido");

NSLog(@"Se elimina de la lista: %@",[self.arrayOfProducts[index] name]);

[shoppingListToView removeProductObject:self.arrayOfProducts[index]];

}

//Sino aparece seleccionada, se selecciona y se incorpora a nuestra lista de productos

else{

NSLog(@"Elemento No Repetido");

NSLog(@"Se incorpora a la lista: %",[self.arrayOfProducts[index] name]);

[shoppingListToView addProductObject:self.arrayOfProducts[index]];

}

//Actualizamos los productos de nuestra lista

[self updateListProducts:shoppingListToView];

//Guardamos el resultado

[self.managedContextObject save:&error];

[self.fetchedResultsController performFetch:&error];

//Modificamos la Celda

[selectedCell modifyImageCell];

[self.myDelegate addProductControllerModel: self.fetchedResultsController];

}

Listado 4.7: Solicitud de recuperación de datos de la capa de vista

En el Listado 4.7 ocurre lo siguiente:

Se comprueba si el producto existe en la lista.

Si existe en la lista, se borra de la lista.

Si no existe, se añade a la lista.

Se actualiza la lista con la que se trabaja.

Se guarda la nueva lista en el contexto actual de objeto gestionado.

Se indica al controlador de resultados que lea el conjunto inicial de datos y gestionecualquier error que pueda ocurrir.

Se modifica la celda para cambiar la imagen del tick.

60

Page 91: Sistema asistencial en superficies comerciales basado en

Se avisa al delegado, que corresponde a la vista para que se encargue de actualizar lavariable de instancia que contiene el controlador de resultados recuperados con el quese trabaja en las vistas de tabla para mostrar los datos al usuario.

Permitir a Core Data la adición y eliminación de listas

La creación y adición de nuevas listas se realiza de manera análoga a la creación y elimi-nación de listas. Los pasos que se deben seguir para la creación de una nueva lista serían lossiguientes:

Se crea una lista nueva en el contexto actual de objeto gestionado

Se inicializan los atributos de la nueva lista

Se guarda la nueva lista en el contexto actual de objeto gestionado

Se indica al controlador de resultados que lea el conjunto inicial de datos y gestionecualquier error que pueda ocurrir.

Se avisa al delegado, que corresponde a la vista, para que se encargue de actualizar lavariable de instancia que contiene el controlador de resultados recuperados con el quese trabaja en las vistas de tabla para mostrar los datos al usuario.

En el caso de que se quiera borrar la lista, se realiza lo siguiente:

Se indica al contexto de objeto gestionado que elimine el objeto SShopingList con elíndice perteneciente a la celda que se ha seleccionado.

Se indica al controlador de resultados que lea el conjunto inicial de datos y gestionecualquier error que pueda ocurrir.

Se avisa al delegado, que corresponde a la vista, para que se encargue de actualizar lavariable de instancia que contiene el controlador de resultados recuperados con el quese trabaja en las vistas de tabla para mostrar los datos al usuario.

4.5 Ubicación y GuiadoSe encarga de guiar al usuario mediante el estudio de la señal. Para calcular la posición

del usuario, se basa en la señal recibida como se ha comentado anteriormente.

Sin embargo uno de los grandes problemas es la fluctuación de la potencia de la señalproducida por diferentes motivos como pueden ser la Reflexión, la Refracción, la Difracciónel Scattering y el Multitrayecto, incidiendo directamente en la perdida de precisión en lalocalización. Es por ello que la parte de Ubicación y Guiado se ha desarrollado siguiendouna arquitectura modular, en la que cada módulo desempeña un papel fundamental en lalocalización del usuario.

61

Page 92: Sistema asistencial en superficies comerciales basado en

El módulo de comunicaciones será el encargado de recibir el flujo de datos y procesarlospara convertirlos en información válida. Con estos datos y para eliminar el ruido que puedaocasionarse, todas las señales se pasarán por un filtro que permita eliminar el ruido. Estefiltro debe hacer distinción entre las señales de los distintos dispositivos, por lo que antesde pasar el filtro las señales deben ser tratados en un módulo de tratamiento de señal. Endicho módulo serán almacenadas en un buffer y a continuación de manera paralela medianteel uso de hilos para evitar los cuellos de botella cada uno de los buffer pertenecientes a losdistintos dispositivos será procesado por el módulo de filtrado de señal que se encargar deeliminar el ruido y determinar cuál es la intensidad de señal. Una vez calculada la intensidadde señal de cada dispositivo se pasará al módulo de posicionamiento que determinará enfunción de las señales previamente calculadas la posición del usuario. Una vez calculadala posición del usuario, si es la primera vez que se genera una posición y por tanto no hayruta establecida, se genera una nueva ruta. Si por el contrario ya hay una ruta establecidase comprueba la posición que tiene el usuario y la que debería tener. En el caso de que seacorrecta la posición del usuario, se mantiene la ruta y se dan ordenes mediante voz a travésdel submódulo de Guiado, en caso contrario se genera una ruta nueva con el punto de origenen el que se encuentra el usuario y se vuelve a guiar al usuario a través del submódulo deGuiado. Toda esta información pasará a la capa de controladores, que será la encargada denotificarlo al usuario.

4.5.1 Módulo de ComunicacionesEl módulo de comunicaciones es el encargado de recibir el flujo de datos proveniente de

los recursos hardware iBeacon. Su función será encargarse de la comunnicación con los dis-positivos, recibir los datos de entrada, procesarlos y convertirlos en información válida.

Es necesario controlar esa comunicación y administrar los datos que se reciben. Por lotanto ha de asegurarse la recepción de los datos y, para tratar los casos de diferencia en-tre frecuencia de recepción de datos y frecuencia de uso de esos datos, algún sistema dealmacenamiento intermedio.

Para proporcionar la funcionalidad descrita se han diseñado los siguientes submódulos:

Un primer submódulo encargado de leer de forma asíncrona todos los datos de entrada.

Un segundo submódulo encargado de procesar los datos de entrada para convertirlosen información válida.

Un tercer submódulo encargado de recoger los datos ya procesados del segundo módu-lo y almacenarlos en un buffer intermedio entre el nivel de comunicaciones y el nivelde tratamiento de señal.

De esa manera, teniendo una entrada de datos irregular, se puede dar una salida de datosmás uniforme. Gráficamente, la descripción funcional del nivel de comunicaciones es la

62

Page 93: Sistema asistencial en superficies comerciales basado en

mostrada en la Figura 4.6.

Figura 4.6: Descripción Funcional del módulo de Comunicaciones

Aunque los dispositivos Bluetooth llevan a cabo una transmisión periódica con una fre-cuencia casi constante de datos sin establecer conexión con otros dispositivos, esta transmi-sión puede sufrir pequeñas variaciones debido a retardos aleatorios de 10ms en cada pulsopara evitar interferencias entre varios iBeacon situados en el mismo entorno y por tanto unaentrada irregular de trama de datos o Payload Data Unit (PDU). Estas tramas se leerán deforma asíncrona sin bloquear la entrada de datos, se procesarán los datos para convertirla eninformación válida y finalmente pasarán al submodulo de almacenamiento hasta que transcu-rra un tiempo determinado y se proporcionen los datos almacenados en ese lapso al siguientenivel.

La salida del módulo es regular debido a que el submódulo de almacenamiento informaal nivel de tratamiento de señal con cierta frecuencia, una frecuencia menor que el pulso deldispositivo Bluetooth de manera que sólo mande una trama por cada dispositivo localizadoen el recinto, aunque la cantidad de señales que pueda mandar en un instante de tiempo nosea la misma, ya que eso dependerá de la cantidad de dispositivos que se reconozcan en esedeterminado instante y por lo tanto la distancia a la que se encuentren.

En cuanto a la dependencia con otros módulos, al ser el módulo de menor nivel, no tienetales dependencias. Es en la salida donde presenta interacción con el módulo de tratamientode señal, ya que se encarga de proporcionarle un flujo de tramas que éste tiene la responsai-bilidad de convertir en información válida para calcular la posición del usuario.

SoluciónEl objetivo buscado es que el módulo de Comunicaciones sea capaz de administrar los

datos que se reciben de una forma eficiente y robusta. Además debe establecer un almacena-miento adecuado y óptimo para proporcionar al módulo de tratamiento de señal una entradaconsistente y constante. Para ello, se establecen una serie de características u objetivos dedesarrollo:

63

Page 94: Sistema asistencial en superficies comerciales basado en

Se deben leer los datos de forma asíncrona.

Se debe procesar la lectura y convertirla en información válida

Finalmente almacenar toda la información valida en un array que valga de entrada a elmódulo de tratamiento de señal.

Antes de comenzar con la resolución del problema se debe saber cómo está formada la tramay es por ello que se va a comentar la estructura de cada una de las tramas emitidas por losdistintos dispositivos mediante su representación gráfica como muestra la Figura 4.7.

Figura 4.7: Estructura de una trama de un iBeacon sobre BLE.

Código de Sincronización: Tiempo que utiliza el iBeacon para transmitir, utilizado porel dispositivo receptor para referenciar la recepción de la señal.

Dirección de Acceso: contiene dos tipos de datos:

Datos Fijos y preestablecidos: Encargados de referenciar el canal estándar utilizadopara comunicaciones Low Energy.

Datos Variables del canal: Utilizado por el iBeacon para realizar conexiones.

Carga útil: Se trata de la parte que incluye lo necesario para que los dispositivos recep-tores puedan realizar las diferentes acciones como pueden ser la localización e identifica-ción del iBeacon. Para ello se utilizan diferentes campos que son explicados a continuación[Org].

Cabecera: Indica que se trata de una transmisión en modo broadcast y además informade la cantidad de datos que se transmitirán posteriormente.

AD Address: Indica la dirección MAC del iBeacon y datos específicos del generadorde la notificación (empresa, organismo...) [Blu].

AD Structure: Está subdividido en AD type, que indica el tipo de datos a transmitir,AD length, que indica la longitud de los datos transmitidos y AD data, que codifica lanotificación que se quiere transmitir.

64

Page 95: Sistema asistencial en superficies comerciales basado en

UUID: Se trata de un identificador estándar (norma ISO / IEC11578 [14]) único yuniversal utilizado en entornos de computación distribuida (no necesita coordinacióncentral). Aparece generalmente representado por 32 dígitos hexadecimales de la si-guiente forma [8-4-4-4-12], por ejemplo: 2150d9400-f21b-51e4-b256-416354530000.Su función en un sistema iBeacon es identificar a todas las balizas pertenecientes a unmismo grupo.

Major: Especifica un subgrupo de balizas dentro de un grupo principal.

Minor: Identifica a una baliza dentro de un subgrupo

Tx Power: Indicador de potencia de transmisión del iBeacon (teórica) a un metro dedistancia medida en dBm.

CRC: Por último la verificación de la trama de datos con un código de detección basadoen CRC (Cyclic Redundancy Check). Dentro de esta trama están todos lo datos necesariospara calcular la posición del usuario utilizando las técnicas que se basan en la atenuación dela señal (RSS). Esta técnica denominada posicionamiento por proximidad, esta basada en elcálculo de la distancia de un iBeacon a partir de la potencia de la señal recibida (RSS).

La distancia estimada por una baliza se basa en la relación entre la potencia de la señalrecibida (RSS) por el dispositivo que capta la señal y la potencia calibrada (Tx Power) de labaliza, obteniendo como resultado el RSSI (Received Signal Strength Indicator) que toma lasiguiente expresión:

RSSI[dBm] = −(10 ∗ n)log10(d)A (4.1)

Siendo:

n = constante de pérdidas por propagación. Toma valores entre 2.7 y 4. Para propaga-ción en el vacío, n= 2.

d = distancia entre emisor y receptor en metros.

A = Tx power medida en dBm.

Despejando el valor d de la expresión 4.1, se obtiene la distancia relativa entre el emisory receptor. La precisión en la posición dependerá por tanto de la potencia de señal recibida(RSS) y el valor de la potencia calibrada (Tx Power), por lo que es necesario una correctacalibración previa del iBeacon para tener ajustado el valor Tx Power.

Un beacon no tiene aplicación por sí mismo, simplemente es un periférico que emiteondas de baja frecuencia de forma continua, cuyo único propósito es avisar de su presenciahaciendo que cualquier otro objeto pueda ser localizado de forma sencilla.

Se podría colocar un beacon en cualquier lugar alrededor del que se que se quisiera regis-trar un contexto, notificando a su app pertinente solamente cuando se esté cerca de ese lugar,

65

Page 96: Sistema asistencial en superficies comerciales basado en

es decir, cuando es relevante. Esa app debe ser capaz de entender la señal y actuar en funciónde su contexto.

Cada iBeacon lleva asociada información unívoca en cada trama:

UUID

Major

Minor

El UUID se encarga de identificar todos los ibeacons que se van a utilizar y el majory el minor se encargan de identificar areas concretas. Adaptando este concepto al uso delpresente trabajo, el UUID se encargaría de identificar la cadena de supermercados, el majorpodría identificar la tienda física y el minor se encargaría de identificar áreas concretas de latienda física como puede ser la caja o cualquier sección del establecimiento.

Al trabajar dentro de un área concreta, no es necesario utilizar los tres identificadores delos iBeacons, sino que bastaría con el UUID que identifique la región en la que se trabaja ycualquiera de los identificadores que se refieren a secciones concretas. De manera indiferentese ha optado por utilizar el major.

Al usar tres dispositivos iBeacon hay que saber a cuál hace referencia la señal que se captay es por ello que se hizo una prueba inicial para identificar el major de cada dispositivo. Laprueba consistió en colocar cada uno de los iBeacon cerca del nodo móvil para saber cuálde ellos llega con más frecuencia, procesar la información e identificar el major para actoseguido referenciar cada uno de los major a cada dispositivo iBeacon.

Como se ha comentado anteriormente, una vez identificado el major de cada dispositivose referencia para poder trabajar con ellos:

static const unsigned short greenBeacon = 62264;

static const unsigned short purpleBeacon = 52895;

static const unsigned short blueBeacon = 30039;

Listado 4.8: Identificación y Registro del major de cada dispositivo

Se debe tener en cuenta que los iBeacons no tienen un centro geográfico (ni un radio comotal).

Aquí las regiones las definen los beacons, por lo que se tiene que registrar el id de regióncon el que se va a trabajar y el UUID. Cuando el sistema detecte un iBeacon le preguntarápor el nombre de su región que, se habrá establecido con anterioridad y si resulta que seencuentra dentro de la establecida, la app se limitará a escuchar/monitorizar las balizas quese detecten (quedándose con la más cercana) y a procesarlas según las variables vistas antes:el proximity UUID, el major y el minor. Por lo tanto el siguiente paso es definir el UUID yla región en la que se va a trabajar:

66

Page 97: Sistema asistencial en superficies comerciales basado en

static NSString * const kUUID = @"B9407F30-F5F8-466E-AFF9-25556B57FE6D";

static NSString * const kIdentifier = @"LabMami";

Listado 4.9: Definir el UUID y región con los que se va a trabajar

Una vez definida la región e identificados los valores de cada iBeacon se procede a locali-zar las balizas monitorizando la región establecida.

Siguiendo los puntos de desarrollo que se han establecido al principio, se necesita co-menzar a leer las tramas de forma asíncrona. Para ello iOS proporciona el framework Core

Location, que se encarga de la comunicación con los distintos dispositivos iBeacon de formatransparente al desarrollador. También proporciona los mecanismos necesarios para procesarla lectura y convertirla en información válida a la par que la almacena.

Para ello lo primero que se debe hacer es añadir el framework Core Location y añadir elprotocolo asociado <CLLocationManagerDelegate> a la cabecera de la vista en la que va aser utilizado.

El siguiente paso es definir una región en CoreLocation. Para ello de manera transparenteal desarrollador se realiza una llamada al método delegado registerBeaconRegionWithUUID:

andIdentifier:, a la hora de definir la región como muestra el Listado 4.3

self.beaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:proximityUUID identifier:

kIdentifier];

[self.locationManager startMonitoringForRegion:self.beaconRegion];

Listado 4.10: Identificación y Registro del major de cada dispositivo

Este método delegado será el encargado de registrar la región en la que se encuentran losdispositivos iBeacons con los que se va a trabajar.

Una vez registrada la región, se procede a monitorizarla en busca de regiones que conten-gan su identificador y el UUID de los beacons que se emplean.

El siguiente paso es detectar cuándo se encuentra dentro de la región con el método dele-gado locationManager: didDetermineState: forRegion:. Este método delegado será el encar-gado de notificar que el dispositivo se encuentra dentro de una región.

Una vez localizada la región en la que se encuentran los iBeacons, el siguiente paso esdetectarlos implementando el método locationManager: didRangeBeacons: inRegion: queserá el encargado de avisar cuando haya iBeacons en las cercanías y devolverá un array detodos ellos, en orden de cercanía (el primero será el que esté más cerca).

Como conclusión a la solución, se presenta un diagrama de secuencia correspondiente ala Figura 4.8

67

Page 98: Sistema asistencial en superficies comerciales basado en

Figura 4.8: Diagrama de Secuencia del Módulo de Comunicaciones

4.5.2 Módulo de Tratamiento de SeñalEste modúlo tiene como función recibir el flujo de datos, procesado y convertido en in-

formación válida con la que se pueda tratar proveniente del módulo de comunicaciones ytratarlo haciendo una distinción según el dispositivo del que llega la señal, para a continua-ción almacenarlo en un buffer correspondiente a cada dispositivo.

Para desempeñar estas funciones se han diseñado los siguientes submódulos:

Un primer submódulo encargado de leer los datos de entrada pertenecientes a las se-ñales procesadas del módulo de comunicaciones y hacer una distinción, clasificandolas distintas señales segun el dispositivo del que procedan.

Un segundo submódulo encargado de recoger los datos ya procesados y almacenarlosen el buffer perteneciente al dispositivo al que pertence la señal.

Gráficamente, la descripción funcional del nivel de tratamiento de señal es la mostrada enla Figura 4.9

Cuando el sistema informe mediante el método delegado locationManager: didRangeBea-

cons: inRegion: de la llegada de señales procedentes de iBeacons en las cercanías, con unarray con todas las señales, se procesará ese array para distinguir las señales de los distin-tos dispositivos y clasificarlas en los buffer pertenecientes a cada dispositivo iBeacon. Unavez clasificados y rellenados los buffer de cada dispositivo se pasarán a la capa superior, almodulo de Filtrado de Señal.

Este módulo se relaciona por debajo con el módulo de Comunicaciones, del que obtienelas distintas señales y, al producir la salida con el módulo de Filtrado de señal, al que man-da los distintos buffer, pertenecientes a cada dispositivo, albergando señales del dispositivotratado.

Este módulo planteó un problema a la hora de determinar la cantidad de muestras que

68

Page 99: Sistema asistencial en superficies comerciales basado en

Figura 4.9: Descripción Funcional del módulo de Tratamiento de Señal

debía tener para poder procesarlas en el módulo de Filtrado de Señal, ya que si la muestraera demasiado corta, el filtro sería ineficiente y, si por el contrario, la muestra es demasiadogrande, la aplicación se quedaría congelada esperando a conseguir ese numero suficiente deseñales en cada unos de los buffer de cada dispositivo, antes de poder pasar la informaciónal módulo de Filtrado de señal.

Otro problema que surgió y no se había tenido en cuenta fue la frecuencia con la se consul-taba si había señales, ya que si la frecuencia era demasiado baja, el usuario podría moversesuficientes metros como para estar en una sección diferente y la aplicación seguiría teniendolas localizaciones anteriores.

De la misma manera que se puede modificar la frecuencia con la que se preguntan por nue-vas señales, se procede a la búsqueda de referencias e información acerca de la posibilidadde configurar la frecuencia de emisión de señales en dispositivos iBeacon.

Solución

A la hora de determinar la cantidad de muestras que debía tener cada uno de los buffer dealmacenamiento de cada dispositivo se realizaron varias pruebas, obteniendo como conclu-sión que una cantidad de 10 muestras es idónea, ya que según las pruebas entre 6 y 7 de cada10 señales son correctas y por lo tanto permite pasarle el filtro correctamente.

El primer paso será hacer una distinción de cada una de las señales como se muestra en elListado 4.4

switch ([beacon.major integerValue]) {

case 62264:

//Green

69

Page 100: Sistema asistencial en superficies comerciales basado en

[self addRssiBeacon:beacon to:self.greenBeaconArray color:1];

break;

case 52895:

//Purple

[self addRssiBeacon:beacon to:self.purpleBeaconArray color:2];

break;

case 30039:

//Blue

[self addRssiBeacon:beacon to:self.blueBeaconArray color:3];

break;

default:

break;

}

Listado 4.11: Distinción del tipo de señal segun el major de cada dispositivo

Una vez se tengan 10 señales de cada dispositivo se mandan al módulo de Filtrado de señalimplementando un enfoque multi-hilo que permita ejecutar el filtro de cada buffer en un hilode ejecución diferente, de forma que no sobrecargue el hilo principal de trabajo. Para elloObjetive-C proporciona el uso de bloques que, se encarga de la creación y gestión de hilosde forma transparente al desarrollador.

En el momento en el que se tengan 10 señales, siempre que llegue una nueva se borrarála última que se encuentre en la cola y se añadirá la nueva al principio de la cola para quede esa manera el filtro sea más eficiente. Para ello las señales deben estar en un contenedorde tipo NSMutableArray que permite añadir y eliminar elementos en el orden que desee eldesarrollador.

El otro problema se trata de la frecuencia con la que se escanean cambios en la monito-rización de regiones. iOS por defecto hace lecturas a 1Hz, es decir, una lectura por segundoaumentando aun más la frecuencia si el usuario se mantiene en movimiento y disminuyen-dola cuando está quieto en contraposición al consumo de batería que aumenta cuanto mayores la tasa de actualización.

A la hora de buscar la frecuencia de emisión de señales idónea de los dispositivos iBeaconde Estimote se partió del SDK de Estimote. El SDK de Estimote es un wrapper sobre Core

Location con funciones añadidas para modificar el UUID, el major, el minor, la fuerza dela señal y la frecuencia de emisión de señales. Por lo tanto se realizó una prueba (consultarSeción 6.2 del Capítulo 6 para mas información) con el fin de analizar cuál es el mejor valorpara la frecuencia de emisión de señales.

Esta prueba consistió en la toma de 30 medidas conjuntas de RSSI de las tres balizaspara intervalos de repetición de pulsos de 100 ms, 500 ms, 1000 ms, 1280 ms y 1500 ms,llevando a cabo el análisis numérico y gráfico de los resultados con el fin de determinarla mejor configuración para una señal estable, obteniéndose un intervalo de repetición de

70

Page 101: Sistema asistencial en superficies comerciales basado en

pulsos de 1500 ms, ya que presentan una mayor estabilidad en la propagación con unasestimaciones de distancias aceptables. Por lo tanto, se optó por modificar la frecuencia deemisión de señales a 1500 ms.

Como conclusión a la solución, la Figura 4.10 muestra un diagrama de secuencia presen-tando el comportamiento de este módulo.

Figura 4.10: Diagrama de Secuencia del Módulo de Tratamiento de Señales

4.5.3 Módulo de Filtrado de SeñalEste módulo tiene como función recibir un array con un conjunto de señales pertenecientes

a cada uno de los dispositivos iBeacon que se utilizan para la localización del usuario yprocesar las distintas señales para eliminar las posibles fluctuaciones de señal y estimar laseñal adecuada.

Este módulo se relaciona por debajo con el módulo de Tratamiento de Señal, del queobtiene el array de señales pertenecientes a cada uno de los beacons y al producir la salidacon el módulo de Posicionamiento, al que manda la estimación de la señal calculada.

Para desempeñar esta labor, se han diseñado dos submódulos:

Un primer submódulo encargado de la gestión y control del flujo de entrada.

Un segundo submódulo encargado de proporcionar operaciones matemáticas sobre elarray de señales que se recibe de entrada para producir la salida deseada.

Gráficamente, la descripción funcional del nivel de tratamiento de señal es la mostrada enla Figura 4.11

La necesidad de implementar este módulo es debida a uno de los grandes problemas en unsistema de posicionamiento, la fluctuación de la potencia de la señal [LHCGHCMHJW10].Incluso en una localización fija, la fuerza de la señal en un punto puede presentar grandesvariaciones. Howard, Siddiqi y Sukthane [AH11] han demostrado que esta variación semantiene en un rango de 10 dB como muestra la Figura 4.12

71

Page 102: Sistema asistencial en superficies comerciales basado en

Figura 4.11: Descripción Funcional del módulo de Filtrado de Señal

Figura 4.12: Fluctuación de la potencia de la señal

Aunque el rango teórico máximo de distancia para un iBeacon es de 70 metros en con-diciones ideales, a la hora de calcular una correcta posición, hay varios factores a tener encuenta que afectan de manera notable a la fluctuación del RSSI. Esta fluctuación puede pro-ducirse por diferentes motivos [Gho]:

Reflexión: Cambio de dirección de la onda, que al entrar en contacto con la superficiede separación entre dos medios diferentes, regresa al punto donde se originó.

Refracción: Cambio de dirección de la onda al pasar de un medio material a otro.

Difracción: Desviación de la onda al encontrar un obstáculo.

Dispersión(Scattering): Separación de la onda de distinta frecuencia al atravesar unmaterial.

Multitrayecto: Propagación de una onda por varios caminos diferentes.

Orientación relativa entre emisor/receptor.

72

Page 103: Sistema asistencial en superficies comerciales basado en

Al no tenerse en cuenta estos motivos, causantes de la fluctuación de la señal en los cálcu-los de distancia, se ven directamente reflejados en la distancia entre emisor y receptor (d). Espor ello que el posicionamiento del iBeacon por proximidad utiliza un sistema de referenciarelativo y centrado en el receptor estableciendo la situación en tres rangos dependiendo delvalor en el que oscila d, como se muestra en la Figura 4.13

Figura 4.13: Rangos de proximidad a un iBeacon

Estos tres rangos son:

Immediate: Rango comprendido en el intervalo 0.1 <d <1 (metros).

near: Rango comprendido en el intervalo 1 ≤ d <10 (metros).

far: Rango donde la distancia d ≥ 10 (metros).

Solución

Este problema de fluctuación de señal, que incide directamente en la pérdida de precisiónen la estimación de la localización, trata de minimizarse mediante la aplicación de un filtradoque permita eliminar los valores extremos.

Este filtro consiste en una media móvil, es decir, un cálculo utilizado para analizar unconjunto de datos para crear una serie de promedios. Esta media móvil se calcula para unaserie temporal con una demanda estable, de manera que permita suavizar las fluctuacionesde plazos cortos y resalte las tendencias o ciclos de plazo largo.

En la elección de la media móvil que actúe de filtro se han considerado dos alternativasprincipales: la media móvil simple y la media móvil ponderada.

73

Page 104: Sistema asistencial en superficies comerciales basado en

Moving Average

La media móvil simple(Moving Average) consiste en la media aritmética de los n datosanteriores. Haciendo uso de esta técnica se pueden dar dos casos. Si el valor de la n esgrande, mayor será la influencia de los datos antiguos, sin embargo si por el contrario elvalor de la n es baja, se tendrán en cuenta datos más recientes para la predicción. Por lo quede acuerdo a lo enunciado anteriormente se concluye que la elección de la n influenciaríadecisivamente la predicción.

Si el valor de la n es bajo, la predicción resultante tendrá una alta capacidad para respon-der a fluctuaciones o variaciones de un periodo a otro, ya que la predicción será altamenteinfluenciada por efectos aleatorios.

Si por el contrario la n es alta, la predicción resultante tendrá una baja capacidad pararesponder a fluctuaciones o variaciones de un periodo a otro, ya que se filtrará la existencia deefectos aleatorios, debido a que la predicción tendrá en cuenta el valor de datos antiguos.

Weighted Moving Average

La simplicidad que tiene la técnica de Moving Average, debido a la consideración equi-tativa de datos recientes y datos antiguos, sobre todo cuando el objeto de predicción sonvariables cuya variabilidad en el corto plazo es importante para obtener una predicción efi-caz, hace que se tenga en cuenta otra alternativa, la media móvil ponderada.

La media móvil ponderada es una media que, multiplicada por ciertos factores, asignandeterminado peso a los datos. Esta media mejora las predicciones de la media móvil simple,ya que se trata de la media aritmética de los n valores anteriores ponderados. Esta pondera-ción se asigna según diferentes criterios como puede ser darle más importancia a los datosantiguos o a los datos más recientes. Esta técnica será más eficiente que la media móvil sim-ple a la hora de adaptar rápidamente el valor de la predicción a fluctuaciones en los datosrecientes. Sin embargo pueden seguir apareciendo valores extremos dentro de los datos másrecientes y de esa manera estropear en menor medida el filtrado de señales.

Conclusión

Partiendo de que la aplicación trata el caso de un usuario andando por los pasillos de unasuperficie comercial y en cualquier giro puede cambiar de pasillo y por tanto de localización,el filtro debe de tener las siguientes características:

La cantidad de muestras debe ser baja: Si se tuviera una cantidad de datos alta, elusuario debería esperar a que la aplicación consiguiera las n primeras entradas para empezara trabajar y por lo tanto la aplicación s quedaría congelada. Además se tendrían en cuenta losdatos antiguos, afectando a la predicción negativamente, ya que la media de todas las señales

74

Page 105: Sistema asistencial en superficies comerciales basado en

obtiene como resultado las localizaciones por las que va pasando el usuario, en lugar de laposición actual del usuario y para que funcionara correctamente el usuario debería andar porsecciones y permanecer quieto hasta que la aplicación calcule su posición y le siga guiandoen lugar de ir guiando según va andando.

obteniendo como conclusión que una cantidad de 10 muestras es idónea, ya que según laspruebas entre 6 y 7 de cada 10 señales son correctas y por lo tanto te permite pasarle el filtrocorrectamente. El primer paso será hacer una distinción

En este caso la cantidad de muestras se ha optado por fijarla a 10, ya que observando lasprimeras pruebas se obtiene como conclusión que entre 6 y 7 de cada señales 10 son correctasy por lo tanto permite pasarle el filtro correctamente.

Capacidad para tratar con valores extremos: Ambas técnicas tratan con valores extre-mos y lo incluyen a la media aritmética. En el caso de la media móvil simple se trata deuna media aritmética de los n valores y por tanto la inclusión de valores extremos afectanegativamente, ya que influiría notablemente en la predicción. En el caso de la media móvilponderada, se siguen tratando estos valores extremos e incluyendo en la media aritmética conla peculiaridad de que si el valor extremo aparece entre los datos recientes o más antiguospodrá tener mas o menos peso en la decisión final.

El problema se radicaría eliminando esos valores extremos y para ello antes de realizarla media aritmética, se han procesado las señales almacenadas y de ha decidido crear unintervalo de confianza y realizar la media con los valores que se encuentren dentro de eseintervalo, de manera que los valores extremos queden descartados y no se tengan en cuentadando lugar a una predicción mas efectiva.

Un intervalo de confianza trata de un par de números entre los cuales se estima que estarácierto desconocido valor con una determinada probabilidad de acierto. Esta probabilidad deacierto en la estimación se representa con 1 - α y se denomina nivel de confianza, donde αes el llamado error aleatorio o nivel de significación, esto es, una medida de las posibilidadesde fallar en la estimación mediante tal intervalo.

El nivel de confianza y la amplitud varían de manera conjunta en función del nivel deconfianza. A mayor nivel de confianza, se obtendrá un intervalo más amplio, y por lo tantomayor probabilidad de acierto. Por el contrario un menor nivel de confianza, dará lugar aun intervalo más pequeño que ofrece una estimación más precisa. Para la construcción delintervalo de confianza es necesario conocer la distribución teórica que sigue el parámetro aestimar Φ. Por lo tanto la fórmula que se encargará de delimitar los intervalos de confianzaserá:

Intervalo de ConfianzaI = (X̄ − E, X̄ + E) (4.2)

75

Page 106: Sistema asistencial en superficies comerciales basado en

siendo:

E = Este valor corresponde al error aleatorio cuya fórmula es la siguiente:

E = Zα2· σ√

n(4.3)

X̄ = Este valor corresponde a la media muestral cuya fórmula es la siguiente:

X̄ =1

N·N∑i=1

xi (4.4)

donde:

n = tamaño muestral que corresponde a las señales que contiene el array de entradacon una entrada fija de 10.

σ =Este valor corresponde a la desviación tipica cuya fórmula es la siguiente:

σ =

√√√√ 1

N − 1·N∑i=1

(xi − x̄)2 (4.5)

Como se ha comentado anteriormente, el nivel de confianza expresa la certeza de querealmente el dato que buscamos esté dentro del margen de error. Realizando unas pruebasprevias se concluye que de cada 10 señales se reciben entre 6 y 9 correctas, es decir, entreel 60 % y el 90 % de las pruebas son correctas y existe una tasa de error mínima del 10 %y máxima del 40 %, por lo que se ha decidido implantar un nivel de confianza del 90 %.Dicho de otra manera, si se repitiese 100 veces la misma prueba 90 veces la proporciónbuscada estaría dentro del intervalo y 10 fuera. Con este nivel de confianza se pretendecrear un intervalo menor que ofrezca una estimación más precisa eliminando los valoresextremos.

Para un nivel de confianza del 90 %

Nivel de confianza = 1 – α = 0,9 ; α = 0,1

Se sabe que Φ( zn ) = p( z <zαn

) = 1- α2

= 1 - 0,12

= 0.95

Usando la tabla de la distribución Z→ N(0,1), se obtiene: Zα2

= 1,64

Luego:E = 1,64 · σ√

n

Una vez generado el intervalo de confianza, se procesará el array de entrada y se desechanlos valores que no estén dentro de este intervalo, eliminando de esa manera los valores extre-mos. El siguiente paso será realizar la media, mediante la expresión 4.4, de las señales que seconservan en el array de entrada consiguiendo de esta manera una salida mejor estimada.

Como conclusión a la solución, se presenta un diagrama de secuencia correspondiente ala Figura 4.14

76

Page 107: Sistema asistencial en superficies comerciales basado en

Figura 4.14: Diagrama de Secuencia del Módulo de Filtrado de Señal

4.5.4 Módulo de Posicionamiento

El módulo de Posicionamiento es el encargado de recibir la frecuencia estimada prove-niente del módulo de Filtrado de Señal, correspondiente a cada uno de los dispositivos quese haya detectado en el módulo de comunicaciones. Su función será recibir los datos de en-trada, asegurarse el acceso a recursos compartidos, procesarlos y estimar la posición correctaen base a las distintas frecuencias que recibe.

Es necesario controlar esta comunicación y administrar los datos que se reciben de en-trada, ya que hasta que no se reciban todas las entradas necesarias, correspondientes a losdispositivos detectados en el módulo de comunicaciones, no se puede calcular la posición es-timada. Por lo tanto ha de asegurarse la recepción de frecuencias estimadas mediante algúnsistema de almacenamiento.

Para proporcionar la funcionalidad descrita se han diseñado los siguientes submódulos:

Un primer submódulo encargado de recoger los datos, procedentes del módulo de filtradode señal. Un segundo submódulo encargado de procesar los datos del primer submódulo yproporcionar la posición estimada, mediante el uso de un sistema de posicionamiento. Untercer submódulo encargado de recoger las posiciones del segundo submódulo y almace-narlas para realizar un sistema de votaciones que concluya con una posición que servirá deentrada al módulo de enrutamiento.

De esta manera, teniendo una entrada con un array de frecuencias estimadas por cada unode los dispositivos identificados y procesándolos mediante el uso de un mapa de potencias, seconcluye con la posición estimada como entrada del módulo de enrutamiento. Gráficamente,la descripción funcional del nivel de posicionamiento es la mostrada en la Figura 4.15.

77

Page 108: Sistema asistencial en superficies comerciales basado en

Figura 4.15: Descripción Funcional del módulo de Posicionamiento

En cuanto a la dependencia con otros módulos, este módulo se relaciona por debajo con elmódulo de Filtrado de señal del que obtiene las distintas frecuencias estimadas y, al producirla salida con el módulo de enrutamiento al que manda la posición estimada.

Solución

A la entrada del módulo llegan todas las salidas procedentes del módulo de filtrado deseñal y se almacenan en un buffer, para a continuación calcular la posición en base a estasentradas. Sin embargo este módulo planteó un problema a la hora de recoger los datos ycalcular la posición estimada debido a la entrada asíncrona de frecuencias estimadas pro-veniente del módulo de Filtrado de señal, ya que al hacer uso de un enfoque multi-hilo losdatos llegan de manera aleatoria, según se procesan los datos y producen la salida, que esla entrada del módulo de Posicionamiento. Por lo tanto hay que calcular la posición, únicay exclusivamente cuando se tenga la frecuencia estimada de cada uno de los dispositivosdetectados en el módulo de comunicaciones.

Para ello se emplea el uso de una variable semáforo que impide realizar el cálculo dedicha posición hasta que no contenga la señal estimada que produce la salida del módulode filtrado de señal de los distintos dispositivos que se hayan detectado en el módulo deComunicaciones, como muestra el siguiente pseudocódigo.

Funcion semaforo(parametros, ...)

Si semaforo = 1

Si hay n frecuencias estimadas

semaforo = 0

Calcular()

Sino

wait()

Listado 4.12: Pseudocodigo Función Semáforo

78

Page 109: Sistema asistencial en superficies comerciales basado en

Como ya se indicó en la Sección 4.4, se va a utilizar un sistema de posicionamiento comosolución al problema del multipath usando la fuerza de la señal recibida o RSS para localizarla posición del usuario o nodo móvil. El sistema más usado en sistemas de posicionamiento,se trata del mapa de potencias como se ve en [DC11].

Este sistema de posicionamiento tendrá que almacenar los datos necesarios para realizarla posterior estimación de la localización del nodo móvil, recogiendo los datos en una faseinicial de calibración, en la que se almacenan los pares de coordenadas asociando a cadauno de ellos la lista de potencias de recibidas de los nodos de referencia, entendiendo nodode referencia como las distintas secciones establecidas dentro del recinto comercial, quepermitirá establecer la posición del nodo móvil o usuario.

El mapa de potencias tendría, por tanto, una estructura como la mostrada en la Tabla 4.1,donde cada RSS representa la potencia de señal recibida en esa coordenada desde el nodode referencia por el major del nodo referenciado i(nri) en las coordenadas (xn, yn), y estaráalmacenado en decibelios. de la pagina 80

79

Page 110: Sistema asistencial en superficies comerciales basado en

Coo

rden

adas

/Nod

osR

efer

enci

anr 1

nr 2

nr 3

nr 4

nr 5

nr 6

nr 7

...nr i

(x0,y

0)

rss

rss

rss

rss

rss

rss

rss

...rs

s(x

0,y

1)

rss

rss

rss

rss

rss

rss

rss

...rs

s

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

(x0,yn)

rss

rss

rss

rss

rss

rss

rss

...rs

s(x

1,y

0)

rss

rss

rss

rss

rss

rss

rss

...rs

s(x

1,y

1)

rss

rss

rss

rss

rss

rss

rss

...rs

s

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

(x1,yn)

rss

rss

rss

rss

rss

rss

rss

...rs

s

..

..

..

..

..

..

..

..

..

..

..

..

..

..

.

(xn,yn)

rss

rss

rss

rss

rss

rss

rss

...rs

s

Tabl

a4.

1:E

stru

ctur

ade

lMap

ade

Pote

ncia

s

80

Page 111: Sistema asistencial en superficies comerciales basado en

Como ya se comentó en el módulo de Filtrado de Señal, el posicionamiento del iBeaconutiliza un sistema de referencia relativo y centrado en el receptor estableciendo la situaciónen tres rangos, debido a la fluctuación de la señal. De la misma manera que el iBeacon utilizaun sistema de referencia relativo, el mapa de potencias no va a establecer un valor concretopara el RSS, sino un intervalo, debido a la fluctuación de señal.

El tercer submódulo se trata de otro filtro más que asegura que la posición calculada esla correcta, ya que, aunque las señales pasan por un filtro que elimina valores extremos,se puede dar el caso de que en un momento recoja muchos valores extremos y por tantono los elimine el filtro sino que los interprete como la posición correcta. Es por ello quese implemento un sistema de votaciones que consiste en guardar las ultimas n posicionesestimadas calculadas y posteriormente hacer un recuento de la posición que más aparece demanera que si en algún momento se introdujera una posición no deseada no se tuviera encuenta.

Como conclusión a la solución, se presenta un diagrama de secuencia correspondiente ala Figura 4.16.

Figura 4.16: Diagrama de Secuencia del Módulo de Posicionamiento

4.5.5 Módulo de Enrutamiento y GuiadoEl módulo de enrutamiento es el encargado de recibir la información en formato de coor-

denadas del movimiento del usuario, proveniente del módulo de posicionamiento. Su funciónserá encargarse de generar la ruta que debe guiar al usuario hasta cada uno de los productosañadidos a la lista con el menor coste.

Para proporcionar la funcionalidad descrita se han diseñado los siguientes submódulos:

Un primer submódulo encargado de la gestión y control del flujo del módulo.

Un segundo submódulo encargado de generar la ruta que le guíe hasta cada uno de losproductos añadidos a la lista tomando como punto de origen la posición que ocupe elusuario.

81

Page 112: Sistema asistencial en superficies comerciales basado en

Un tercer submódulo encargado de realizar la animación que muestre al usuario laposición que ocupa en el plano.

Un cuarto submódulo encargado guiar al usuario mediante voz.

Gráficamente, la descripción funcional del nivel de posicionamiento es la mostrada en laFigura 4.17.

Figura 4.17: Descripción Funcional del módulo de Enrutamiento

En cuanto a la dependencia con otros módulos, este módulo se relaciona por debajo conel módulo de Posicionamiento del que obtiene la coordenada del movimiento del usuario yal producir la salida con el módulo de guiado al que envía la siguiente posición a visitar.

Solución

Se trata del módulo mas importante y robusto de la aplicación. Este módulo presenta unagran complejidad y diversos problemas en su diseño por lo que no es sencilla su implemen-tación. Funcionalmente el módulo se encargará de tres funciones:

Generar la ruta que debe guiar al usuario hasta cada uno de los productos añadidos ala lista con el menor coste.

Generar la animación en la pantalla posicionado al usuario en la nueva posición paraque se encuentre más orientado.

Reproducir la dirección de la siguiente posición de la ruta generada.

El listado 4.6 muestra el pseudocódigo del módulo de enrutamiento:

Enrutamiento(parametros)

Calcular ruta partiendo de la posicion actual del usuario.

82

Page 113: Sistema asistencial en superficies comerciales basado en

Mientras no finaliza la compra //productos es distinto a 0

Si cambia posicion del usuario

//Si posicion del camino y posicion del usuario iguales

Si posicion actual es igual a posicion que deberia ser

Comprobacion y Actualizacion de datos

Sino

Calcular ruta partiendo de la posicion actual del usuario.

Animacion a la casilla correspondiente a la posicion del usuario

Indicacion guiada

Fin Si

Fin Mientras

Fin Enrutamiento

Listado 4.13: Pseudocódigo Módulo Enrutamiento

La primera vez que se instancia el módulo de enrutamiento se genera una ruta que pasa portodos los productos seleccionados con menor coste. Esta ruta siempre se generará partiendode la posición del usuario, de manera que pueda abrir la aplicación en cualquier punto delestablecimiento comercial, y contendrá las coordenadas por las que debe pasar.

Una vez se comience a comprar, el algoritmo no se detiene hasta que el usuario hayacogido todos los productos seleccionados en la lista que marcó previamente.

Cada vez que el algoritmo detecta un cambio de posición, mediante una comprobación dela posición actual, emitida por el módulo de posicionamiento, con una variable encargada deguardar siempre la ultima posición, se genera una comprobación que consiste en verificar sila nueva posición del usuario es la correcta en la ruta previamente generada o si el usuariose ha equivocado. De manera que se comprueba la posición que debería tener y la posiciónactual, emitida por el módulo de posicionamiento. Se pueden dar dos casos:

El primer caso sería que las posiciones fueran iguales. En ese caso el usuario ha seguidola ruta establecida y por lo tanto se realiza:

1. Una comprobación de la nueva posición y por tanto de la nueva sección que ocupa elusuario con las secciones del supermercado en las que aparece algun producto elegidopor el usuario, para saber si esa nueva sección contiene algún producto que quiere elusuario.

2. Una actualización de los datos que se muestran en pantalla y los datos internos comoborrar la nueva posición de la ruta, guardar la nueva posición para la siguiente com-probación y en el caso de que se haya escogido un nuevo producto borrarlo de la listade productos restantes, ya que en caso de que el usuario se equivoque de camino y serealice una nueva ruta sólo tenga en cuenta los productos que aun no ha cogido.

El segundo caso sería que la posiciones fueran distintas. En ese caso el usuario ha tomadoun camino diferente al que marca la ruta y por lo tanto es necesario realizar otra nueva ruta

83

Page 114: Sistema asistencial en superficies comerciales basado en

partiendo de la nueva posición, teniendo en cuenta en todo momento cuáles son los productosque aún no ha añadido el usuario a la cesta y obviando los productos ya visitados.

A continuación, una vez actualizado el array que pertenece a la ruta, se realiza una ani-mación que muestre al usuario la nueva posición que ocupa en el plano y posteriormentese calcula la siguiente dirección que debe seguir el usuario. Para ello se manda la siguienteposición a visitar en la ruta al submódulo de Guiado y éste se encarga de consultar la seccióna la que pertenecen dichas coordenadas y devolver la dirección con el fin de reproducirla.

Aunque a simple vista parece simple, este módulo planteó varios problemas de diseño:

En primer lugar la generación de la ruta más corta que guíe al usuario hasta cada unode los productos añadidos a la lista con el menor coste, ya que se pueden se puedenusar dos enfoques distintos a la hora de implementar el algoritmo atendiendo al tiempode cómputo o al costo en memoria.

En segundo lugar la manera de guiar al usuario, enfocando las indicaciones a orienta-tivas y visuales.

A continuación se analizan cada uno de los submódulos que conforman el módulo globalde Enrutamiento y Guiado

Generar Ruta

El modelo de la ruta más corta detalla una red en la cual cada arco (i, j) tiene asociadoun numero c(sub ij), el cual se interpreta como la distancia (tal vez costo o tiempo) desde elnodo i hasta el nodo j. Una ruta o camino entre dos nodos es cualquier secuencia de arcosque los conecte. El objetivo es encontrar la ruta más corta (de menor costo o más rápida)desde un nodo específico hasta cada uno de los demás nodos de la red. Este es uno de losproblemas más comunes al utilizar grafos, encontrar el camino entre dos puntos de tal formaque el peso total de las aristas visitadas sea mínimo.

Un grafo(Figura 4.18) es un método para representar objetos y la relación que mantienenentre sí. La rama de las matemáticas que se encarga de su estudio se le conoce como Teoríade Grafos. Un ejemplo clásico es cuando el grafo representa una ciudad donde las aristas sonlas calles (pueden ser dirigidas o no), los vértices las intersecciones, y el peso de las aristasel tiempo que se tarda en recorrer la calle; Puede interesar encontrar la forma para llegar deun punto a otro de tal forma que el tiempo sea mínimo.

Un grafo está compuesto por vértices (también llamados nodos) y aristas como muestrala Figura 4.18 . Los vértices son los objetos que se desean representar, mientras que lasaristas son la forma en que están interconectados. De manera general se representa un vérticecomo un punto o un círculo y a una arista como una línea, aunque se puede elegir cualquierrepresentación ya que las propiedades del grafo no cambian.

84

Page 115: Sistema asistencial en superficies comerciales basado en

Figura 4.18: Estructura de un Grafo

Para su uso dentro de un programa es necesario representar el grafo a través de sus vérticeso a través de sus aristas. Generalmente los vértices van numerados, por lo que lo que interesaes la forma de guardar los vértices.

La primera forma, como muestra la Tabla 4.2, es guardar en una lista las aristas junto consus vértices asociados. En cada casilla del array se tienen dos valores, que son los vérticesque conecta la arista. Se pueden incluir datos adicionales, como el peso. Para la gráficaejemplificada arriba se tendría (considerando que el vértice a se toma como el primero, b elsegundo y así sucesivamente):

E1 E2 E3 E4 E5 E6

Vi 1 2 1 2 7 4Vj 2 3 3 4 6 5

Tabla 4.2: Representación del grafo a través de sus aristas

Otra forma para representar el grafo, como muestra la Tabla 4.3, es mediante una matrizde adyacencia. Cada fila y columna representan un vértice, y la matriz representa la forma enque están conectados (comúnmente pesos o número de conexiones). Para el ejemplo anterior,se tendría:

Partiendo de la teoría de grafos y adaptándolo a el presente Trabajo Fin de Grado, elgrafo representa un supermercado compuesto por nodos que corresponden a los productos yaristas que equivalen a los pasillos y son la forma en que están interconectados los distintosproductos del supermercado.

85

Page 116: Sistema asistencial en superficies comerciales basado en

V1 V2 V3 V4 V5 V6 V7

V1 0 1 1 0 0 0 0V2 1 0 1 1 0 0 0V3 1 1 0 0 0 0 0V4 0 1 0 0 1 0 0V5 0 0 0 1 0 0 0V6 0 0 0 0 0 0 1V7 0 0 0 0 0 1 0

Tabla 4.3: Representación del grafo a través de sus vertices

Para encontrar el camino más corto se aplica el principio de que para que un camino seaóptimo, todos los caminos que contiene también deben ser óptimos y el camino más corto nodebe contener ciclos (es un árbol). Dos técnicas de programación que aprovechan esta pro-piedad son programación dinámica y los algoritmos ávidos (o voraces). Ambas alternativasharán uso de una tabla de distancias que les permite saber la distancia mínima (tal vez costoo tiempo) desde el nodo i hasta el nodo j. Es por ello que hay dos partes bien diferenciadasen el cálculo de la ruta más corta:

Tabla de distancias que muestre el coste óptimo de un nodo origen a cualquier otronodo del grafo.

Cálculo del camino óptimo haciendo uso de cualquier técnica de programación.

Tabla de distancias

Para la realización de la tabla de distancias se ha optado por seguir el modelo de la matrizde adyacencia, ya que cada fila y columna representan un vértice, sin embargo a diferenciade la la matriz de adyacencia que representa la forma en la que están conectados los vérti-ces y las aristas de un grafo, la tabla de distancias representa el coste mínimo de un nodoorigen(fila) a un nodo destino(columna).

Los vértices que componen la tabla de distancias corresponden a los productos que elusuario ha seleccionado y añadido a la lista. Al ser productos repartidos por todo el esta-blecimiento y seleccionados por el usuario, se puede dar el caso de que un producto noesté contiguo a otro, es decir, no haya ninguna conexión entre ellos y por tanto no se tengaun coste directo. La manera para solucionar este problema ha sido aplicar el algoritmo deDijkstra.

El algoritmo de Dijkstra, también llamado algoritmo de caminos mínimos, es un algoritmopara la determinación del camino más corto dado un vértice origen al resto de los vértices enun grafo con pesos en cada arista.

La idea subyacente en este algoritmo consiste en ir explorando todos los caminos máscortos que parten del vértice origen y que llevan a todos los demás vértices. Cuando se

86

Page 117: Sistema asistencial en superficies comerciales basado en

obtiene el camino más corto desde el vértice origen, al resto de vértices que componen elgrafo, el algoritmo se detiene. El algoritmo es una especialización de la búsqueda de costouniforme, y como tal, no funciona en grafos con aristas de coste negativo, aunque en estecaso y para el presente Trabajo Fin de Grado se han considerado todos los pasillos con elmismo coste.

Las características del algoritmo de Dijkstra son:

Para grafos dirigidos (la extensión a no dirigidos es inmediata).

Genera uno a uno los caminos de un nodo v al resto por orden creciente de longitud.

Usa un conjunto de vértices donde, a cada paso, se guardan los nodos para los que yase conoce el camino mínimo.

Devuelve un vector indexado por vértices: en cada posición w se guarda el coste delcamino mínimo que conecta v con w.

Cada vez que se incorpora un nodo a la solución se comprueba si los caminos todavíano definitivos se pueden acortar pasando por él.

Mediante este algoritmo se pretende determinar el camino más corto dado un vértice ori-gen al resto de los vértices en un grafo con pesos en cada arista y de esa manera completarla tabla de distancias.

El algoritmo de Dijkstra utiliza las propiedades descritas anteriormente y funciona de lasiguiente forma:

Primero se marcan todos los vértices como no utilizados.

Entre todos los vértices, se busca el que esté más cerca del punto origen, se toma comopunto intermedio y se comprueba si se puede llegar más rápido a través de este vérticea los demás.

Después se escoge al siguiente más cercano (con las distancias ya actualizadas) y serepite el proceso.

Este proceso se lleva a cabos hasta que el vértice no utilizado más cercano coincida conel destino. Al proceso de actualizar las distancias tomando como punto intermedio al nuevovértice se le conoce como relajación (relaxation).

Algo que se puede observar es que al obtener el camino más corto de un punto a otro,también se está obteniendo el camino más corto del primero a todos los vértices intermediosque se tienen que visitar. Por esto, se puede encontrar el camino más corto entre un punto ytodos los demás de forma casi igual a como se obtiene la distancia más corta de un punto aotro.

Tal y como se muestra en el Listado 4.7 para realizar la tabla de distancias, se comienzacreando un array bidimensional de tamaño [Nodos][Nodos] y se añade un -1 a todas las

87

Page 118: Sistema asistencial en superficies comerciales basado en

posiciones salvo a aquellas en las que el nodo origen y nodo destino es el mismo, al que sele ha asignado un valor 0, ya que se supone que el camino mínimo de un nodo a sí mismotiene coste nulo.

//Creacion del array de costes/distancias

- (void)matrizCostes0:(NSArray *)nodos{

NSMutableArray *coste = [[NSMutableArray alloc] init];

for(int i =0; i < [nodos count]; i++){

NSMutableArray *cols = [[NSMutableArray alloc] init];

for(int j = 0; j< [nodos count]; j++){

if (i == j) {

[cols insertObject:@0 atIndex:[cols count]];

}

else{

[cols insertObject:@-1 atIndex:[cols count]];

}

}

[coste insertObject:cols atIndex:[coste count]];

}

//Esta es la matriz visual que hemos construido con el codigo anterior

/*_coste = @[

@[@0,@-1,@-1,@-1,@-1,@-1,@-1],

@[@-1,@0,@-1,@-1,@-1,@-1,@-1],

@[@-1,@-1,@0,@-1,@-1,@-1,@-1],

@[@-1,@-1,@-1,@0,@-1,@-1,@-1],

@[@-1,@-1,@-1,@-1,@0,@-1,@-1],

@[@-1,@-1,@-1,@-1,@-1,@0,@-1],

@[@-1,@-1,@-1,@-1,@-1,@-1,@0]

];*/

[self.myDelegate updateMatrizCostes0:coste];

}

Listado 4.14: Inicialización Tabla de Distancias

Lo correcto sería inicializar todas las distancias con un valor infinito relativo, ya que sondesconocidas al principio, exceptuando la diagonal principal en la que se debe colocar un 0debido a que la distancia de un nodo a sí mismo sería 0. Sin embargo, al tratarse de un grafoconexo y no dirigido que representa un supermercado en el que es posible ir a cualquierproducto, se ha omitido el valor infinito relativo a la hora de realizar la implementación.

Al encontrarse dentro de la capa de modelo se avisa al delegado de la vista para queactualice matriz de costes y pueda hacer uso de ella.

Una vez construida e inicialiazada la tabla de distancias, se comienza a rellenar la matrizhaciendo uso del algoritmo de Dijkstra como muestra el pseudocódigo del Listado 4.8.

88

Page 119: Sistema asistencial en superficies comerciales basado en

Se recorre el array nodos que contiene la posición de cada nodo dentro del plano y serealiza una llamada al algoritmo de Dijkstra para calcular el coste de cada par de nodos porencima de la diagonal principal. Una vez calculados los valores por encima de la diagonalprincipal y al ser un grafo no dirigido y por lo tanto tener el mismo coste en ir del nodo ia j que ir de j a i, es decir, una matriz simétrica, se copian los valores ya calculados a lasposiciones por debajo de la diagonal principal y de esa manera se evitan múltiples llamadasal algoritmo de Dijkstra.

//Rellenar la matriz de costes/distancias

NSArray *aux = [NSArray array];

//Rellenar la matriz de costes con dijkstra

Desde i = 0 hasta numero de filas de tabla de distancias

Desde j= 0 hasta numero de columnas de tabla de distancias

Si i < j Entonces

coste = Dijkstra del nodo i al nodo j

tabla de distancias[i][j] = coste

Fin Si

Fin Desde

Fin Desde

Desde i = 0 hasta numero de filas de tabla de distancias

Desde j = 0 hasta numero de filas de tabla de distancias

Si i > j Entonces

tabla de distancias[i][j] = tabla de distancias[j][i]

Fin Si

Fin Desde

Fin Desde

Listado 4.15: Rellenar Tabla de Distancias.

Cálculo del camino óptimo

Como ya se ha comentado anteriormente, para encontrar el camino más corto se aplicaráel principio de optimalidad, según el cual para que un camino sea óptimo, todos los caminosque contiene también deben ser óptimos y el camino más corto no debe contener ciclos. Sehan nombrado dos alternativas (algoritmos voraces y programación dinámica) para realizarel camino óptimo por lo que se va a proceder a analizar cada una de ellas para posteriormentetomar una decisión.

89

Page 120: Sistema asistencial en superficies comerciales basado en

Fuerza Bruta

La primera técnica se trata de una heurística voraz para resolver el clásico problema delviajante, en la que se trata de encontrar el itinerario más corto que permita a un viajante re-correr un conjunto de ciudades pasando una única vez por cada una y regresando a la ciudadde partida. En este caso el viajante será un usuario que quiera recorrer el supermercado es-cogiendo los productos que desea. Este algoritmo tiene un ritmo de crecimiento exponencialpor lo que no es práctico a la hora de resolver ejemplares “grandes“, por lo tanto se utilizapara problemas pequeños. El problema se suele representar mediante:

Un grafo completo no dirigido con un nodo por cada ciudad.

Utilizando una matriz de distancias (lo normal es que se trate de una matriz simétrica).

Ambas características las posee el problema ya que cada vértice corresponde a un productoseleccionado por el usuario y se va a utilizar una matriz de distancias previamente calculadamediante el algoritmo de Dijkstra, sin embargo se ha optado por usar un grafo dirigido, yaque la extensión a grafo no dirigido es inmediata y por tanto se engloban tanto los grafosdirigidos como no dirigidos.

Esta heurística consiste en:

Ir desplazándose desde cada producto seleccionado al producto mas próximo no selec-cionado.

Retornar al producto desde el que se comenzó el recorrido.

Con estas dos premisas se intentan todas las posibilidades, es decir, se calculan las lon-gitudes de todos los recorridos posibles y se selecciona la de longitud mínima. Debido a lacomprobación de más operaciones de las necesarias para resolver el problema, suele tenerun coste alto, creciendo exponencialmente con el número de puntos a visitar. Sin embargo esbastante sencillo de implementar.

A continuación, mediante el ejemplo gráfico de la Figura 4.19 se detalla el problema dela ruta de menor coste aplicando la técnica de Fuerza Bruta, en la que un usuario tiene querecorrer los n productos seleccionados y regresar a la posición de salida, en este caso lacaja, de tal forma que el peso total de las aristas visitadas, en este caso pasillos sea mínimo.Aunque en el caso del presente Trabajo Fin de Grado se trata de un grafo no dirigido y uncoste uniforme de uno para cada arista, se ha implementado con el objetivo de que se puedautilizar en un grafo dirigido con un coste desigual para cada arista.

Como ya se ha comentado anteriormente y basándose en la teoría de grafos, lo primeroque se hace es representar cada producto mediante un nodo de un grafo y cada camino comouna arista, en este caso dirigida, por lo que finalmente se obtiene un grafo dirigido G = (V,

A) donde:

V = 1,...,n es el conjunto de vértices (productos).

90

Page 121: Sistema asistencial en superficies comerciales basado en

Figura 4.19: Descripción Gráfica del problema

A es el conjunto de aristas (i, j) con (i, j) ∈ V (caminos).

D(i,j) es la longitud de (i, j) si (i, j) ∈ A o∞ si (i, j) /∈ A.

De\A 0 1 2 3

0 ∞ 3 ∞ 31 5 ∞ 4 ∞2 2 6 ∞ 63 2 5 4 ∞

Tabla 4.4: Matriz de Adyacencia para el ejemplo del cálculo del camino minimo

Suponiendo que la posición de partida es la 0, si se denomina C(i,W) a la longitud delcamino mínimo de i a 0 que pasa por todos los vértices de W⊂ V, siendo 0 /∈W, entonces

C(i,W ) =

{D(i, 0) si W = ∅min(D(i, j) + C(j,W − j)) para j ∈ W si W 6= ∅

(4.6)

Como inicialmente la posición de partida es la 0, la solución al problema será C(0,V- {0})

y por tanto se cumple el principio de optimalidad.

El Listado 4.16 implementa la Técnica de Fuerza Bruta

91

Page 122: Sistema asistencial en superficies comerciales basado en

- (void)fuerzaBruta_nodos2:(int)n origen:(int)i conjunto:(NSMutableArray *)conjunto coste:(NSArray

*)costes camino:(NSMutableArray*)camino {

NSMutableArray *nconjunto = [[NSMutableArray alloc] init];

nconjunto = [NSMutableArray arrayWithArray:conjunto];

[nconjunto removeObject:[NSNumber numberWithInt:i]];

if(nconjunto.count == 0){

if([self Coste:camino coste:costes] <= [self Coste:_camino coste:costes]){

_camino = [NSMutableArray arrayWithArray:camino];

_valorRecorrido = _valoraux;

}

}

else{

for(int j=0; j<n; j++){

if([nconjunto containsObject:[NSNumber numberWithInt:j]]){

[camino insertObject:[NSNumber numberWithInt:j] atIndex:[camino count]];

[self fuerzaBruta_nodos2:n origen:j conjunto:nconjunto coste:costes camino:camino];

[camino removeObject:[NSNumber numberWithInt:j]];

}

}

}

}

Listado 4.16: Implementación Técnica Fuerza Bruta

Como ya se ha comentado anteriormente, mediante el empleo de la técnica de Fuerza Bru-ta, el usuario se desplaza desde el punto de origen al producto más proximo no seleccionado,hasta llegar al punto de origen en el que guardará el recorrido con un coste menor y retornaráal producto anterior hasta el comienzo del recorrido.

Esta técnica recorre todos los caminos posibles y se queda con el camino de menor costecomo se muestra en la Figura 4.20

El coste es de O(n!)

Programación Dinámica

La función anterior repite llamadas para calcular C(i,W), y por tanto es ineficiente, sinembargo utilizando la técnica de programación dinámica se pueden guardar los valores deC(i,W) en una tabla para evitar repetir su cálculo.

Programación dinámica (DP – Dynamic Programming) es una técnica de programaciónque se puede utilizar en problemas que presentan las siguientes condiciones:

La solución al problema ha de ser alcanzada a través de una secuencia de decisiones,

92

Page 123: Sistema asistencial en superficies comerciales basado en

Figura 4.20: Recorrido Técnica Fuerza Bruta

una en cada etapa.

Dicha secuencia de decisiones ha de cumplir el principio de optimalidad, es decir, elproblema puede ser resuelto de manera óptima si sus partes son resueltas de maneraóptima.

El principio de optimalidad enunciado por Bellman en 1957, es la base a la solución deproblemas mediante la técnica de programación dinámica y dice:

“En una secuencia de decisiones óptima toda subsecuencia ha de ser también óptima”.

La idea básica de la programación dinámica es guardar los resultados de los subproblemaspara no tener que volverlos a calcular después. Con esta simple técnica, se transforman al-goritmos que se ejecutan en tiempo exponencial a tiempo polinomial. Este ahorro en tiempose refleja en la reducción del costo en memoria.

Los problemas más comunes que se resuelven mediante esta técnica son los de optimiza-ción, donde se pueden encontrar muchas soluciones pero se requiere únicamente la mejor(posiblemente la menor o la mayor, según lo que se esté buscando). Como pueden existir va-rias combinaciones que resulten en la mejor solución, se dice que se encuentra una respuestaóptima, y no la respuesta óptima.

A grandes rasgos, el diseño de un algoritmo de Programación Dinámica consta de lossiguientes pasos:

1. Planteamiento de la solución como una sucesión de decisiones y verificación de queésta cumple el principio de optimalidad.

2. Definición recursiva de la solución.

93

Page 124: Sistema asistencial en superficies comerciales basado en

3. Cálculo del valor de la solución óptima siguiendo un enfoque Top-down donde el pro-blema se divide en subproblemas, y éstos se resuelven haciendo uso de las solucionesalmacenadas en una tabla por si fuera necesario reutilizar los cálculos.

4. Construcción de la solución óptima haciendo uso de la información contenida en latabla anterior.

Por lo tanto los elementos que identifican a los algoritmos de programación dinámicason:

Subestructura óptima: Esto implica que para poder resolver el problema de forma óp-tima, cualquier subparte del problema también necesita ser resuelto de forma óptima.Si está condición se cumple, también existe la posibilidad de que un algoritmo ávidosea útil.

Empalme de subproblemas: La ventaja principal de la programación dinámica es queal tener los resultados de los subproblemas en una tabla, se pueden buscar en tiempoconstante. Para poder aprovechar esto, se requiere que al resolver los subproblemassea preciso emplear resultados anteriores, y que la cantidad de subproblemas no seaexcesivamente grande (para poder crear las tablas).

Memorización: Esto se utiliza para pasar de un algoritmo recursivo a uno de progra-mación dinámica. Lo que se hace es utilizar el mismo algoritmo, y agregar el uso de latabla. Cuando se requiere un valor, primero se busca en la tabla, y en caso de que nose encuentre, se busca recursivamente (este sería el enfoque top-down).

Para indexar la tabla en la segunda dimensión, se asigna un código único a cada subcon-junto W para identificarlo. Puesto que el numero de productos seleccionados por el usuarioes n, el numero de posibles subconjuntos es 2n.

Si se representa cada subconjunto mediante un vector

W = [x0, ..., xn−1] con xi =

{0 si i /∈ w1 si i ∈ w

(4.7)

entonces, id(W) = x020 +x12

1 + ...+xn−12n−1 asigna un código único a cada subconjun-

to.

Una vez explicadas las bases de la programación dinámica se muestra el algoritmo imple-mentado que calcula la distancia mínima usando programación dinámica.

- (int)dinamica:(int)n origen:(int)i conjunto:(NSMutableArray *)conjunto coste:(NSArray *)costes

tabla:(NSMutableArray*)tabla {

NSMutableArray *nconjunto = [[NSMutableArray alloc] init];

nconjunto = [NSMutableArray arrayWithArray:conjunto];

[nconjunto removeObjectIdenticalTo:[NSNumber numberWithInt:i]];

94

Page 125: Sistema asistencial en superficies comerciales basado en

if([nconjunto count] == 0) {

return [costes[i][0] integerValue];

}

if([tabla[i][[self conjuntoId:nconjunto n:n]] integerValue] > 0){

return [tabla[i][[self conjuntoId:nconjunto n:n]] integerValue];

}

int dist, dmin = 1000;

for(int j = 0; j<n; j++){

if([nconjunto containsObject:[NSNumber numberWithInt:j]]){

dist = [costes[i][j] integerValue] + [self dinamica:n origen:j conjunto:nconjunto coste:

costes tabla:tabla];

if( dist < dmin){

dmin = dist;

}

}

}

[tabla[i] replaceObjectAtIndex:[self conjuntoId:nconjunto n:n] withObject:[NSNumber

numberWithInt:dmin]];

return dmin;

}

Listado 4.17: Implementación Técnica Fuerza Bruta

Para el ejemplo ya expuesto cuya tabla de adyancencia D(i,j) es

De\A 0 1 2 3

0 ∞ 3 ∞ 3

1 5 ∞ 4 ∞2 2 6 ∞ 6

3 2 5 4 ∞

se ha calculado la tabla de distancias mínimas C(i,W)

De\A 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 14 -10 -1 -1 -1 -1 6 -1 -1 -1 ∞ -1 -1 -1 12 -1 -1 -10 -1 -1 11 -1 -1 -1 -1 -1 8 -1 16 -1 -1 -1 -1 -10 -1 -1 10 -1 6 -1 11 -1 -1 -1 -1 -1 -1 -1 -1 -1

Tabla 4.5: Matriz de Adyacencia para el ejemplo del cálculo del camino minimo

El coste del algoritmo para completar la tabla C(i, W) supone:

Cáculo de C(i, ∅) para i = 1,...,n-1: n-1 consultas a tabla.

95

Page 126: Sistema asistencial en superficies comerciales basado en

Cálculo de C(i, W) para 1≤ k = Cardinal(W ) ≤ n-2:

(n− 1)

(n− 2

1

)ksumas; (4.8)

Cálculo C(0,V): n - 1 sumas.

O(2(n− 1) +n=2∑k=1

(n− 1)k

(n− 2

k

)) = O(n222) (4.9)

que, anque es exponencial, es de ornde menor que O n!

Suponiendo que la posición de partida es la 0, si llamamos C(i,W) a la longitud del caminomínimo de i a 0 que pasa por todos los vértices de W ⊂ V, siendo 0 /∈ W, entonces

C(i,W ) =

{D(i, 0) si W = ∅min(D(i, j) + C(j,W − j)) para j ∈ W si W 6= ∅

(4.10)

A continuación en el listado 4.18 se calcula el itinerario que debe seguir el usuario a partirde la tabla C(i,W)

- (void)rutaDinamica:(int)n conjunto:(NSMutableArray *)conjunto coste:(NSArray *)costes tabla:(

NSMutableArray*)tabla camino:(NSMutableArray*)camino{

int dist, dmin, jmin = 0;

for(int i= 0; i< costes.count; i++){

[camino addObject:@0];

}

for(int i = 1; i < n; i++){

dmin = 1000;

for(int j = 0; j<n; j++){

if([conjunto containsObject:[NSNumber numberWithInt:j]]){

[conjunto removeObjectIdenticalTo:[NSNumber numberWithInt:j]];

NSNumber *aux = [camino objectAtIndex:(i-1)];

int valorCoste = [costes [[aux integerValue]][j] integerValue];

int valorTabla = [tabla[j][[self conjuntoId:conjunto n:n]] integerValue];

dist = valorCoste + valorTabla;

[conjunto addObject:[NSNumber numberWithInt:j]];

if(dist < dmin){

dmin = dist;

jmin = j;

}

}

}

[camino replaceObjectAtIndex:i withObject:[NSNumber numberWithInt:jmin]];

96

Page 127: Sistema asistencial en superficies comerciales basado en

[conjunto removeObjectIdenticalTo:[NSNumber numberWithInt:jmin]];

}

return;

}

Listado 4.18: Implementación Técnica Fuerza Bruta

Para este ejemplo la función anterior devuelve el itinerario que aparece en la Figura 4.21que efectivamente es el camino de mínima longitud

Figura 4.21: Recorrido Técnica Programación Dinámica

Generar AnimaciónLa tarea de este submódulo consiste en generar la animación del movimiento del usuario

en la pantalla. Para desplazar al usuario por el centro comercial se ha creado internamente unmapa del centro compuesto por botones, ya que cada uno de ellos consta de una propiedadllamada tag que actua de identificador unívoco, de manera que cada movimiento del usuarioesté representado por un tag que haga más fácil desplazarse a ese punto. Esta función recibeun array con el movimiento del usuario, por lo que tiene un único valor que refleja la posiciónactual del usuario y por lo tanto el tag al que debe desplazarse. El siguiente paso será sustituirel centro de la esfera que identifica al usuario en el mapa por el nuevo centro del botón.Finalmente se realiza la animación de 3 segundos que consiste en llevar la esfera desde laposición anterior a la nueva posición.

97

Page 128: Sistema asistencial en superficies comerciales basado en

Este método recibe un array de posiciones, sin embargo sólo tiene una posición. Esto sepodría evitar mandando como parámetro un valor entero perteneciente a la posición actual delusuario, sin embargo a la hora de desplazarse a una posición que no es contigua es necesariopasar por varias posiciones. Esto es lo que se realiza al inicio de realizar la compra, unaanimación con la ruta completa que debe seguir el usuario.

Con esta implementación se pueden realizar todo tipo de animaciones, tanto contigua co-mo recorrer varias posiciones

El Listado 4.12 muestra la implementación de la función encargada de generar animacio-nes.

//Realiza la animacion con la matriz que se le pasa

- (void)animate:(NSArray*)path withCompletion:(void(^)())completion {

NSMutableArray *animatePoints = [NSMutableArray array];

for (UIButton *field in path) {

void (^p)(void) = ^{

_beaconView.center = field.center;

};

[animatePoints addObject:p];

}

float duration = 3.0;

long numberOfKeyframes = path.count;

[UIView animateKeyframesWithDuration:duration*numberOfKeyframes delay:0.0 options:

UIViewKeyframeAnimationOptionCalculationModePaced animations:^{

for (long i=0; i<numberOfKeyframes; i++) {

[UIView addKeyframeWithRelativeStartTime:duration*i relativeDuration:duration animations

:animatePoints[i]];

}

} completion:^(BOOL finished) {

completion();

}];

}

Listado 4.19: Implementación Técnica Fuerza Bruta

Guiado

La tarea de este submódulo consiste en realizar las funciones de un audioguía generandolas indicaciones necesarias mediante comandos de voz para guiar al usuario hasta el siguientepunto de la ruta.

Para la implementación de este submódulo fue necesario recopilar información sobre elentorno en el que se va a realizar la audioguía. Esta información se refiere a las distintas

98

Page 129: Sistema asistencial en superficies comerciales basado en

secciones que contiene el supermercado y la posición que ocupan.

Este submódulo se puede implementar siguiendo dos alternativas:

La primera alternativa se basa en guiar al usuario mediante orientaciones.

La segunda alternativa se basa en guiar al usuario mediante visualizaciones.

Ambas alternativas son buenas a la hora guiar al usuario; la primera alternativa consiste enguiar al usuario mediante indicaciones basadas en la orientación del dispositivo, dando ins-trucciones como girar a la derecha, girar a la izquierda, seguir recto o dar la vuelta, mientrasque la segunda alternativa consiste en guiar al usuario mediante indicaciones visuales, comoseguir por la sección de frutería.

A favor de la primera alternativa está la aceptación por parte del público, ya que muchasaplicaciones encargadas de guiar al usuario como puede ser el gps, le dan instruccionesbasadas en la orientación, sin embargo en contra de está y como suele ocurrir en entornosde interior, están los fallos de orientación que provocan que el usuario tome la direcciónequivocada.

La segunda alternativa nace casualmente a la hora de hacer la compra con un familiar deavanzada edad. Este familiar prefería que le dieran una indicación visual y le guiaran hasta elproducto que deseaba nombrando las seciones por las que debía pasar, ya que era más fácilde recordar que si le guiaban mediante orientaciones.

Esta primera alternativa fue problemática en cuanto a la implementación, ya que pararealizar indicaciones basandose en la orientación del usuario es necesario controlar la orien-tación del dispositivo. En todo momento se conoce la posición actual y la siguiente posicióna visitar, por lo que si se sitúa al usuario en el mapa se sabe qué dirección debe tomar; Sinembargo el problema es conocer la orientación del usuario para dar una indicación u otra.Para ello fue necesario orientar el mapa al norte, implementar una brújula y hacer uso delacelerómetro. Sin embargo una vez implementada la brújula y realizadas las pruebas en ellaboratorio se descartó esta alternativa debido a los numerosos fallos en la orientación produ-cidos por los campos electromágneticos que generan las luces fluorescentes del laboratorioque hacían que cambiara la continuamente la orientación y por tanto diera instrucciones deguiado erróneas.

La segunda alternativa no fue difícil de implementar, ya que como se ha comentado an-teriormente, en todo momento se conoce la posición actual y la siguiente posición a visitar,de manera que comprobando a qué sección pertenece la siguiente posición a visitar ya sepuede dar una indicación guiada. Para la resolución de esta alternativa se utlizaron las clasesNSDictionary y NSMutableDictionary. Los objetos NSDictionary son inmutables (en otraspalabras, una vez que se han creado e inicializado su contenido no se puede modificar), porlo que se inicializó agregando todas las entradas pertenecientes a las distintas secciones delsupermercado junto con la clave que refleja el tag al que pertece cada sección, de manera que

99

Page 130: Sistema asistencial en superficies comerciales basado en

cada par de clave-valor contenido dentro de un diccionario se refiere a una entrada.

Finalmente se usa la segunda alternativa, debido en gran parte a los numerosos fallos deorientación que se producen mediante el uso de la brújula.

Como conclusión a la solución, se presenta un diagrama de secuencia correspondiente ala Figura 4.22

Figura 4.22: Diagrama de Secuencia del Módulo de Enrutamiento

100

Page 131: Sistema asistencial en superficies comerciales basado en

Capítulo 5

Métodos de trabajo

E N este capítulo se analiza la metodología de desarrollo aplicada para la resolución delpresente Trabajo Fin de Grado, es decir, el desarrollo de la aplicación ShoppingBeacon.

A continuación se describe la evolución del sistema, detallando las iteraciones realizadashasta conseguir la versión final del sistema de acuerdo a la metodología seguida.

5.1 Metodología de desarrolloComo metodología de desarrollo se ha optado por usar una aproximación a la metodología

ágil Extreme Programming [Bec99] siguiendo un modelo iterativo e incremental.

En el proceso iterativo e incremental cada una de estas iteraciones consta de varios incre-mentos, como muestra la Figura 5.1, que inician con el análisis y finalizan con la integracióny validación del sistema.

Figura 5.1: Evolución de los ciclos de desarrollo de Extreme Programming. Figura extraídade [Bec99]

Lo que se busca es que en cada iteración los componentes logren evolucionar el producto apartir de los completados en iteraciones previas, logrando una mejora mucho más completa,por lo que este modelo establece prácticas de integración continua, exigiendo que el nuevocódigo sea integrado en el sistema completo con la menor demora posible tras su producción.Una manera de dirigir este proceso es priorizando los objetivos y requerimientos en función

101

Page 132: Sistema asistencial en superficies comerciales basado en

del valor que ofrece al cliente. Por tanto este modelo requiere la involucración y participacióndirecta del cliente en el desarrollo del proyecto, siendo muy frecuentes las reuniones presen-ciales entre el cliente y el equipo de desarrollo. El modelo de ciclo de desarrollo de ExtremeProgramming es una evolución del Modelo en Cascada y sus largos ciclos de desarrollo, ydel siguiente paso que constituyen los ciclos más cortos e iterativos del Modelo Incremental,como muestra la Figura 5.1.

Mediante el empleo de la metodología Extreme Programming se fijan múltiples iteracio-nes con pequeños objetivos planificados a corto plazo, proporcionando un mayor controlsobre el sistema. Esta metodología debe llevarse a cabo en parejas de desarrollo, los cualesproporcionan estimaciones de tiempo y esfuerzo al cliente en las que se basa para decidirel alcance y periodicidad de las entregas. El cliente selecciona un pequeño conjunto de las“historias de usuario” propuestas para la entrega en base a las estimaciones obtenidas. Cadahistoria de usuario está descompuesta en un conjunto de tareas que tienen que ser llevadas acabo por los desarrolladores en la siguiente iteración.

Por lo tanto como metodología de desarrollo se ha optado por usar una aproximación ala metodología ágil Extreme Programming usando estas historias de usuario, descompuestasen funcionalidades siguiendo un modelo iterativo e incremental.

5.2 Evolución del desarrollo

De forma previa al comienzo del desarrollo se llevó a cabo una etapa de estudio de estadodel arte de los proyectos existentes exponiendo las principales ventajas y puntos débiles decada una de ellas y elaborando un análisis comparativo. A continuación se realizó un análisisde requisitos inicial, estableciendo las diferentes funcionalidades que debe ofrecer el sistemaal usuario y su arquitectura general. A continuación se procedió al diseño de los módulos yse comenzó su elaboración en iteraciones.

5.3 Iteraciones

En este proceso de desarrollo, cuya metodología elegida es una aproximación a la me-todología ágil Extreme Programming siguiendo un modelo iterativo e incremental, por losmotivos expuestos en la Sección 5.1 del Capítulo 5, la labor del cliente la ha realizado D.Ramón Hervas Lucas, director del presente Trabajo Fin de Grado, con quien se han planifi-cado las diferentes iteraciones del desarrollo y se han seleccionado las historias de usuariopertenecientes a cada iteración.

A continuación se muestran las iteraciones realizadas en el desarrollo, describiendo laspartes implementadas y los hitos conseguidos en cada una de ellas, junto con sus plazos detiempo.

102

Page 133: Sistema asistencial en superficies comerciales basado en

Iteración 1

El principal objetivo que se persigue en esta iteración es la construcción del prototipo delsistema. Este prototipo debe operar de forma aislada, simulando la operación en colaboracióncon los demás componentes del sistema, aún no implementados.

En el caso de las operaciones que requieran la recuperación de datos de la base de datos,el prototipo operará sobre un conjunto de datos predefinido y almacenado en la aplicación,por lo que los cambios realizados a partir de la acción del usuario no son almacenados deforma persistente, limitándose al contexto de la ejecución de la aplicación.

Esta iteración cuenta con las siguientes historias de usuario:

Los usuarios pueden visualizar un catálogo de productos.

Los usuarios pueden realizar la búsqueda de un producto escribiendo el nombre.

Los usuarios pueden realizar la búsqueda de un producto dictando el nombre.

Los usuarios pueden realizar la búsqueda aplicando un filtrado progresivo a medidaque escriben el producto buscado.

Los usuarios pueden visualizar la foto del producto.

Los usuarios pueden visualizar la categoría del producto.

Los usuarios pueden crear sus propias listas.

Los usuarios pueden borrar sus propias listas.

Los usuarios pueden añadir productos la lista.

Los usuarios pueden eliminar productos la lista.

Estas historias de usuario se traducen en las siguientes tareas:

Creación de la vista de catálogo

Creación de la vista de lista

Implementación de las funcionalidad de búsqueda

Implementación y Gestión de listas

Esta iteración se llevó a cabo desde el 22 de Diciembre de 2015 hasta el 22 de Enero de2015. La actividad desarrollada a lo largo de esta iteración puede observarse en el diagramade Gannt de la Figura 5.2.

Iteración 2

El principal objetivo que se persigue en esta iteración es la construcción de la base de datosdel sistema. Esta base de datos sigue la estructura detallada en la Sección 4.4 del Capítulo

103

Page 134: Sistema asistencial en superficies comerciales basado en

4. En esta operación se implementa la base de datos completa, incluyendo las clases deentidades y la interfaz pública de operaciones. Su desarrollo es integrado en cada una de lasvistas, observando su correcto funcionamiento.

Esta iteración cuenta con las siguientes historias de usuario:

Los usuarios deben contar con una base de datos externa que respalde el contenido quepueden visualizar desde la aplicación.

Los usuarios deben poder almacenar sus listas en una base de datos interna a la apli-cación.

Estas historias de usuario se traducen en las siguientes tareas:

Diseño y construcción del modelo de base de datos

Conexión con base de datos externa

Conexión con base de datos interna

Interfaz de operaciones públicas

Construcción de clases de entidades

Integración con el modelo de vistas

Actualización automática del contenido de las vistas

Esta iteración se llevó a cabo desde el 23 de Enero de 2015 hasta el 27 de Febrero de2015. La actividad desarrollada a lo largo de esta iteración puede observarse en el diagramade Gannt de la Figura 5.3

Iteración 3

El principal objetivo que se persigue en esta iteración es la comunicación con los dis-positivos iBeacon. Por ello y partiendo del SDK de Estimote se implementa el módulo deComunicaciones. Una vez implementado el módulo de comunicaciones se realizan las pri-meras pruebas mediante las aplicaciones Estimote y Particle Detector, en las que se observaque el valor de RSSI presenta variaciones, en principio debidas a la fluctuación de la señal.Sin embargo, mediante la realización de pruebas se llega a la conclusión de que esa fluc-tuación no es debida sólo a las que suelen ser sus causas principales, como la difracción,refracción y multitrayectos, sino también a una mala calibración del dispositivo por partedel fabricante y a la orientación de las balizas. Finalmente se resuelven ambos problemasmediante una nueva calibración y el estudio de la orientación correcta y la posterior decisiónfinal de colocar los dispositivos en una orientación vertical.

Sólo queda el problema de la fluctuación de la señal ocasionado por sus causas típicas, demanera que se estudia la frecuencia de la señal idónea para eliminar esa fluctuación, llegando

104

Page 135: Sistema asistencial en superficies comerciales basado en

a la conclusión de que la frecuencia idónea son 1500ms, por lo que se decide modificar elvalor de la frecuencia de la señal mediante el SDK de Estimote.

Esta iteración cuenta tan sólo con una historia de usuario, que sin embargo es de suficientemagnitud como para ocupar toda la iteración.

El dispositivo del usuario debe ser capaz de comunicarse con dispositivos iBeacon.

Esta historia de usuario se traduce en las siguientes tareas:

Integración de la API de los dispositivos iBeacon

Comunicación con los dispositivos iBeacon

Primera y Segunda Etapa de pruebas:

• Calibración del dispositivo

• Prueba Colocación dispositivo

• Prueba frecuencia idónea

Esta iteración se llevó a cabo desde el 2 de Marzo de 2015 hasta el 23 de Marzo de 2015.La actividad desarrollada a lo largo de esta iteración puede observarse en el diagrama deGannt de la Figura 5.4.

Iteración 4

En esta cuarta iteración el principal objetivo que se persigue es la implementación deuna aplicación para realizar las pruebas en el Salón de Grados de la Escuela Superior deInformática. Esta aplicación debe ser capaz de identificar cualquier cambio dentro de lasregiones conocidas y estimar la posición del usuario, calcular el camino mínimo y por últimovisualizar la transición producida por dicho cambio mediante una animación.

En esta iteración por lo tanto se hace uso del módulo de Comunicaciones, se implementanel módulo de Tratamiento de Señal para hacer una distinción con el tipo de señal recibida,el módulo de Posicionamiento para asignar a la frecuencia de señal recibida una posición, elalgoritmo de Dijkstra para obtener el camino mínimo al realizar cada cambio de posición yfinalmente la gestión de animaciones.

Para estudiar cómo se desarrollan los cambios, esta aplicación contará con un mapa quesimule la sala donde se realizan las pruebas y con los valores RSSI obtenidos de las distintasbalizas que reflejen la decisión a los cambios de ubicación del usuario.

Esta iteración cuenta con las siguientes historias de usuario:

El usuario puede visualizar un mapa de la sala de pruebas.

El usuario puede visualizar los valores de la señal de los dispositivos.

105

Page 136: Sistema asistencial en superficies comerciales basado en

El usuario puede visualizar su ubicación mediante una animación.

El sistema estima la ubicación del usuario.

Estas historias de usuario se traducen en las siguientes tareas:

Diseño y Creación de un mapa de la sala de pruebas

Diseño de la interfaz de prototipo.

Calculo del camino mínimo

• Representar estructura del grafo

• Implementación del algortimo de Dijkstra

Tratamiento de señal

• Implementación del módulo de tratamiento de señal

• Integración hilos

Interpretación de señales

• Creación de una mapa de potencias

• Registro de potencias de secciones registradas

• Implementación del módulo de Posicionamiento

Interpretación de la señal para determinar ubicación

Animación del recorrido

Esta iteración se llevó a cabo desde el 23 de Marzo de 2015 hasta el 18 de Mayo de 2015.La actividad desarrollada a lo largo de esta iteración puede observarse en el diagrama deGannt de la Figura 5.5.

Iteración 5

En esta quinta iteración y debido a los resultados obtenidos en las pruebas realizadas en laiteración anterior, el principal objetivo que se persigue es la creación de un filtro que permitaeliminar los valores extremos producidos por la fluctuación de la señal. Para ello se imple-menta un filtro basándose en una media aritmética de todos los valores recibidos(Moving

Average), sin embargo los resultados siguen sin ser aceptables y basándose en el mecanismoimplementado, en la técnica Weighted Moving Average y la calibración de los dispositivos, secrea un filtro que obtiene mejores resultados al no deshacerse de esos valores extremos.

Esta iteración cuenta con la siguiente historia de usuario:

El dispositivo del usuario debe ser capaz de filtrar valores extremos producidos por lafluctuación.

106

Page 137: Sistema asistencial en superficies comerciales basado en

Esta historia de usuario se traduce en las siguientes tareas:

Implementación del módulo de Filtrado de Señal

• Moving Average

• Filtro con intervalos de confianza

Esta iteración se llevó a cabo desde el 19 de Mayo de 2015 hasta el 27 de Mayo de 2015.La actividad desarrollada a lo largo de esta iteración puede observarse en el diagrama deGannt de la Figura 5.6.

Iteración 6

Una vez diseñada, implementada y probada la arquitectura del sistema mediante prototiposde aplicaciones con mapas de prueba en los que sólo se registran los cambios de ubicacióny se muestran los valores de RSSI, en esta sexta iteración se crea la aplicación final. Estaaplicación opera en colaboración con los demás módulos del sistema. Se diseña un mapade la sala y un mapa con las secciones pudiendo cambiar entre ambos modelos, en tiempode ejecución. Se debe generar una animación inicial de la ruta que debe seguir el usuarioy mostrar en todo momento el elemento al que se dirige y el número de elementos que lequedan por coger.

Durante la fase de implementación del sistema de guiado surgen dos propuestas, la primerade ellas se basa en guiar al usuario mediante orientaciones y la segunda se basa en nombrarmediante voz qué es lo que puede ver el usuario. Aunque finalmente se opta por la segundapropuesta se comienza a implementar la primera propuesta y se termina descartando.

Esta iteración cuenta con las siguientes historias de usuario:

El usuario puede visualizar un mapa de una nueva sala de pruebas.

El usuario puede visualizar un mapa de una nueva sala de pruebas mostrando las sec-ciones.

El usuario puede cambiar el tipo de mapa.

El sistema proporciona al usuario la ruta con el camino óptimo.

El usuario visualiza una animación de la ruta con el camino óptimo.

El usuario puede visualizar el siguiente producto que debe coger.

El usuario puede visualizar el número de productos restantes por coger.

El usuario puede deshabilitar y habilitar la opción de guiado.

El sistema comunica al usuario la siguiente dirección.

Estas historias de usuario se traducen en las siguientes tareas:

107

Page 138: Sistema asistencial en superficies comerciales basado en

Diseño de mapa sin secciones

Diseño de mapa con secciones

Nuevos datos para el mapa de posicionamiento

Diseño de la interfaz de la aplicación final

Implementación del algoritmo de fuerza bruta

Implementación del sistema de guiado

Guiado Orientaciones

• Integración Framework OpenEars

• Implementación brújula

• Análisis valores brújula

• Análisis valores acelerómetro

Guiado Visual

Esta iteración se llevó a cabo desde el 28 de Mayo de 2015 hasta el 23 de Junio de 2015.La actividad desarrollada a lo largo de esta iteración puede observarse en el diagrama deGannt de la Figura 5.7.

Iteración 7

Una vez terminada la implementación del sistema y realizadas las pruebas, se revisa el có-digo buscando partes susceptibles de ser mejoradas y nuevas funcionalidades. Se consideróoportuno la adición de la clase NSFetchedResultsController y los protocolos asociados parala realizar una solicitud de recuperación de datos. También se realizó una nueva implementa-ción del algoritmo para la búsqueda del camino mínimo mediante el empleo de programacióndinámica, suponiendo un mayor coste en memoria en pro de tiempo de cómputo.

Esta iteración no contiene historias de usuario , albergando la realización de las siguientestareas:

Implementación del algoritmo de dinámica.

Optimización en gestión y almacenamiento.

Esta iteración se llevó a cabo desde el 24 de Junio de 2015 hasta el 3 de Julio de 2015. Laactividad desarrollada a lo largo de esta iteración puede observarse en el diagrama de Ganntde la Figura 5.8.

Iteración 8

108

Page 139: Sistema asistencial en superficies comerciales basado en

En esta iteración se añade un sistema de notificaciones que muestre una alerta al usuarioen una fecha y hora determinada por éste, en el momento de creación de una nueva lista, y laopción de mandar la lista del usuario por correo.

Esta iteración cuenta con las siguientes historias de usuario:

El usuario puede configurar una alerta a modo de recordatorio al crear su lista.

El usuario puede recibir notificaciones.

El usuario puede mandar la lista por correo.

Estas historias de usuario se traducen en las siguientes tareas:

Implementación del servicio de notificaciones.

Integración de la funcionalidad de envío de correos.

Esta iteración se llevó a cabo desde el 28 de Junio de 2015 hasta el 2 de Julio de 2015. Laactividad desarrollada a lo largo de esta iteración puede observarse en el diagrama de Ganntde la Figura 5.9.

109

Page 140: Sistema asistencial en superficies comerciales basado en

Figu

ra5.

2:Pr

oces

ode

desa

rrol

lo:I

tera

ción

1

Figu

ra5.

3:Pr

oces

ode

desa

rrol

lo:I

tera

ción

2

110

Page 141: Sistema asistencial en superficies comerciales basado en

Figu

ra5.

4:Pr

oces

ode

desa

rrol

lo:I

tera

ción

3

Figu

ra5.

5:Pr

oces

ode

desa

rrol

lo:I

tera

ción

4

111

Page 142: Sistema asistencial en superficies comerciales basado en

Figu

ra5.

6:Pr

oces

ode

desa

rrol

lo:I

tera

ción

5

Figu

ra5.

7:Pr

oces

ode

desa

rrol

lo:I

tera

ción

6

112

Page 143: Sistema asistencial en superficies comerciales basado en

Figu

ra5.

8:Pr

oces

ode

desa

rrol

lo:I

tera

ción

7

Figu

ra5.

9:Pr

oces

ode

desa

rrol

lo:I

tera

ción

8

113

Page 144: Sistema asistencial en superficies comerciales basado en
Page 145: Sistema asistencial en superficies comerciales basado en

Capítulo 6

Resultados

E N este capítulo se presentan las principales pruebas realizadas junto con los resultadosobtenidos tras el desarrollo del sistema iBeacon para la recepción de señales proceden-

tes de balizas BTLE (Bluetooth Low Energy) y posterior localización, animación y guiado alusuario.

En primer lugar se realizan unas pruebas iniciales para observar el comportamiento delas señales. Tras las primeras pruebas y los resultados obtenidos se observan variacionesen la frecuencia y se plantean distintas causas que pudieran provocar dicha variación. Unavez implementadas las soluciones y tras una localización positiva se plantea el escenario delocalización de un usuario en una superficie comercial. Por último se realiza una conclusiónpersonal sobre las pruebas obtenidas.

De esta manera, los experimentos se han realizado en tres etapas principales y con di-ferentes objetivos en cada una de ellas. La primera etapa consiste en una primera toma decontacto para observar el comportamiento de la señal Bluetooth. La segunda etapa se ha cen-trado en el análisis de RSSI en diferentes posiciones, y su relación con la distancia y en basea estos resultados a la configuración del sistema iBeacon con el fin de validar la posibilidadde implementación del sistema de localización basado en iBeacon. Finalmente, en la terceraetapa se simulan distintos entornos de localización con el fin de analizar la viabilidad deimplementación del sistema iBeacon como método de localización en interiores.

En el desarrollo de las pruebas se han utilizado tres balizas iBeacon para la emisión de lasseñales Bluetooth y un dispositivo iPhone 5 para la recepción y lectura de RSSI.

6.1 Primera etapa: Análisis del comportamiento de la señal BLEComo ya se explicó en la Sección 4.6.1 del Capítulo 4, un iBeacon se encarga de transmitir

paquetes de datos basándose en la tecnología BLE. De estos paquetes de datos se utilizan losvalores de UUID, Major, Minor y Tx Power para la identificación del mismo y el cálculoestimado de la distancia a la que se encuentran los dispositivos. En esta primera etapa, comoya se ha comentado, se observa el comportamiento de la señal Bluetooth mediante el uso dediferentes aplicaciones: Estimote y Particle Detector.

Este primera etapa se llevó a cabo en el salón de grados de la Escuela Superior de Infor-

115

Page 146: Sistema asistencial en superficies comerciales basado en

Figura 6.1: App Estimote Figura 6.2: App Particle Detector

mática colocando tres balizas en la sala.

Mediante las pruebas con estas aplicaciones, se comprobó que el valor de RSSI presentabavariaciones. Estas variaciones del valor RSSI, se debían a la fluctuación de la señal haciendocomplicada la determinación de la distancia. Sin embargo en una de las pruebas se descubrióque un dispositivo presentaba variaciones del valor de RSSI en igualdad de condicionesque las otras dos, es decir, con la misma posición y la misma colocación. Esta variaciónperteneciente a la baliza azul se debía a una mala calibración por parte del fabricante demanera que se realizó una calibración del dispositivo(Anexo A). Al realizar esta calibraciónse obtuvieron resultados similares para las tres balizas.

Otro agente que variaba el valor RSSI de las tres balizas fue la colocación de éstas. De lamisma manera que el estudio anterior, esta prueba consiste en la toma de 30 medidas de unade las balizas cambiando la orientación de ésta a una distancia de 5 y 10 metros, obteniendolos siguientes resultados:

116

Page 147: Sistema asistencial en superficies comerciales basado en

Distancia Real 5m 10m

HorizontalNo Mediciones 30 30RRSI Media -63.11 -68.21

Distancia Media 3.21 5.70Dif. Distancia 1.79 4.30

VerticalNo Mediciones 30 30RRSI Media -65.11 -72.65

Distancia Media 4.06 8.84Dif. Distancia 0.94 1.16

Tabla 6.1: Resultados de estudio de valores según el plano de orientación.

Como se puede observar en las Tabla 6.1, los resultados más exactos se obtienen colocandola baliza verticalmente. Por lo tanto se decide orientar las tres balizas en su eje vertical.

Mediante las pruebas con estas aplicaciones, se comprueba que el valor de RSSI variabadebido a:

Colocación de dispositivos.

Mala calibración por parte del fabricante.

Fluctuaciones.

Los dos primeros puntos se consiguen resolver, sin embargo aun quedan por resolver lascausas principales de fluctuación de RSSI como son la difracción, refracción y multitrayec-tos. Por ello se realizó un estudio acerca de la posibilidad de ajustar la potencia de trans-misión y la frecuencia de transmisión de pulsos con el fin de minimizar la fluctuación. A lahora de buscar la potencia de transmisión y la frecuencia de emisión de señales idónea de losdispositivos iBeacons de Estimote, se partió del SDK de Estimote. Se obtuvieron resultadospositivos, ya que era posible modificar ambos valores, el primero de ellos ya utilizado en lacalibración del dispositivo.

6.2 Segunda etapa: Análisis de RRSILa segunda etapa se llevó a cabo en el salón de grados de la Escuela Superior de Infor-

mática y consistió en dos fases de mediciones (primera fase a 5 metros y segunda fase a 10metros), cada una de ellas con 30 medidas de RSSI, colocando las tres balizas verticalmenteen la pared.

Esta etapa pretende solventar los problemas de fluctuación mediante el estudio de la fre-cuencia de señal idónea de manera que se toman 30 medidas de RSSI con los siguientesintervalos de repetición: 100 ms, 500 ms, 1000 ms, 1500 ms 2000 ms, llevando a cabo unestudio con el fin de configurar un intervalo de repetición que produzca una señal estable,obteniéndose los datos de la Tabla 6.2.

117

Page 148: Sistema asistencial en superficies comerciales basado en

iBeacon1 iBeacon2 iBeacon3PRI Distancia Real 5m 10m 5m 10m 5m 10m

100 msRRSI Media(dBm) -67.12 -62.3 -68.36 -64.11 -67.45 -70.1

Desviación 3.4 1.16 3.02 0.7 1.3 2.01Distancia según RRSI 5.11 2.92 5.76 3.59 5.31 7.14

500 msRRSI Media(dBm) -63.9 -67.1 -68.5 -71.2 -65.89 -70.17

Desviación 1.3 1.89 1.48 3.34 1.5 3.51Distancia según RRSI 3.48 5.02 5.96 8.18 4.3 7.22

1000 msRRSI Media(dBm) -63.49 -68.7 -64.3 -71.47 -61 -70.97

Desviación 1.2 1.09 2.2 3.16 0.88 2.99Distancia según RRSI 3.34 6.11 3.87 8.38 2.54 7.91

1300 msRRSI Media(dBm) -68.63 -66.1 -68.4 -67.6 -64.01 -67.13

Desviación 2.1 3.1 1.1 1.5 2.76 3.68Distancia según RRSI 6.05 4.79 5.86 5.41 3.55 5.14

1500 msRRSI Media(dBm) -63.89 -72.18 -63.2 -71.7 -64.2 -71.53

Desviación 0.54 2.1 0.91 1.8 0.76 1.53Distancia según RRSI 3.45 8.65 3.24 8.51 3.8 8.45

2000 msRRSI Media(dBm) -63.53 -70.09 -68.71 -68.82 -68.83 -65.17

Desviación 1.4 2.99 3.1 1.87 1.56 2.27Distancia según RRSI 3.26 7.17 6.19 6.25 6.31 4.06

Tabla 6.2: Medición de fluctuación de RSSI con diferentes intervalos de repetición de pulsos.

Los valores marcadas en color verde son aquellos que se adaptan con mejor exactitud a ladistancia real de medida. Se trata de los valores de desviación típica sobre un valor centraly la distancia estimada. Como se puede observar en la tabla 6.2, la señal iBeacon presentauna mayor estabilidad en los valores con un intervalo de repetición de pulsos de 1500ms. Demanera que una vez finalizada la segunda etapa y tras los resultados obtenidos se estableceel intervalo de pulsos en 1500ms.

6.3 Tercera etapa: Desarrollo del experimento

La tercera etapa se llevó a cabo en el salón de Grados y en el laboratorio MAMI dela Escuela Superior de Informática. El objetivo de esta etapa es analizar la viabilidad deimplementación del sistema iBeacon mediante el análisis de 3 experimentos, dos de ellos enel Salón de Grados y el tercero en el laboratorio MAMI.

Primer Experimento

El primer experimento consiste en analizar los cambios que se producen en la sala alcambiar de ubicación. Para ello lo primero que se realizó fue un plano de la sala simulandolos pasillos de un supermercado. A continuación se realizó un estudio para identificar el

118

Page 149: Sistema asistencial en superficies comerciales basado en

mayor numero de secciones que se pudieran registrar mediante el uso de 3 balizas. Debido alnumero reducido de balizas, las medidas de la sala, el ser un espacio abierto y a la distanciamínima y máxima entre balizas que toman los valores de 3 y 10 metros respectivamente, sólose pudo registrar 4 secciones. Estas secciones corresponden a los tag 01, 05, 31 y 35 de laFigura 6.3.

Figura 6.3: Primer Experimento

En principio se registraron 6 secciones, sin embargo las dos secciones más apartadas re-ciben una señal muy similar a los dos secciones más cercanas que pertenecen a los tag 31 y35, de manera que las pruebas intercambiaban los valores de las dos secciones a la izquierday las dos secciones a la derecha, por lo que se decidió registrar 4 secciones.

El experimento consiste en recorrer cada una de las 4 secciones registradas dos veces demanera aleatoria, de manera que el sistema iBeacon sea capaz de determinar la posición quese ocupa y realizar una animación hasta ese punto.

Durante la realización de este experimento se comprobó que el valor de RSSI presentabavariaciones cuando el usuario se acerca a una luz fluorescente produciendo una variación de-65 -75, que equivale a un error de medida de +-2.5metros. Además, cuando se desplaza alre-dedor de la sala, se descubrió que el propio usuario actúa de pantalla dando al dar la espaldaa un dispositivo produciendo una variación en el valor RSSI equivalente a 2-3 metros.

119

Page 150: Sistema asistencial en superficies comerciales basado en

Con estos resultados se llega a la conclusión de que el posicionamiento en interiores em-pleando el uso de iBeacon no está orientado a la exactitud en la posición concreta del usuario,sino que estará enfocado a determinar la sección en la que se encuentra.

Segundo Experimento

El segundo experimento se realiza en la misma sala con la misma posición de los disposi-tivos iBeacon y las mismas secciones registradas, sin embargo este experimento consiste enanalizar y monitorizar las señales procedentes de las tres balizas a medida que el usuario sedesplaza por las 4 secciones establecidas siguiendo un itinerario. Este itinerario consiste enuna ruta compuesta por las 4 secciones que contiene la sala.

El itinerario comienza en el tag 43, y se visitan en orden los tag: 05, 35, 31, 01, 31, 05 y03. La ruta se realiza de manera constante usando el sistema implementado que incorpora unfiltro.

El entorno interior de la sala y sus dimensiones, permiten establecer los dispositivos en unradio no superior a 10 metros, por lo que el rango de proximidad se centrará entre Immediate

y Near. Para situar al usuario dentro del entorno se analizara la frecuencia de señal querecibe de cada uno de los dispositivos con posiciones conocidas identificando en que rangode proximidad se encuentran. La ubicación de los iBeacon es:

iBeacon Morado colocado en la pared detrás de la posición del usuario.

iBeacon Verde colocado en la pared entre los tag 00 y 30.

iBeacon Azul colocado en la pared entre los tag 06 y 36.

La Tabla 6.3 muestra una comparativa entre los rangos de proximidad real y la proximidadobtenida con la medida de RSSI.

Punto deMedida

iBeacon Morado iBeacon Verde iBeacon AzulReal Medida Real Medida Real Medida

05 Near Near Near Near Immediate Near35 Immediate Immediate Near Near Immediate Immediate31 Immediate Immediate Immediate Immediate Near NULO01 NULO Near Immediate Immediate Near Near31 Immediate Near Immediate NULO Near Far05 Near Near Near Near Immediate Immediate01 Near Immediate Immediate Far Near Near

Tabla 6.3: Comparativa de proximidad real-media.

Con estos resultados se finaliza el experimento y se concluye que el dato principal paradeterminar la ubicación de un usuario es el rango de distancias, haciendo uso de las pro-

120

Page 151: Sistema asistencial en superficies comerciales basado en

ximidades Near e Immediate, que aseguran una localización admisible, obviando el uso dela proximidad Far ya que se utiliza para distancias de más de 10 metros y por lo tanto nopermite una correcta localización. Por tanto, si sólo se desea contener proximidades Near eInmediate, el factor más influyente e importante a tener en cuenta es la correcta colocaciónde los dispositivos que permita establecer zonas de cobertura comprendidas entre estos dosrangos.

Tercer Experimento

El tercer experimento se realiza en el laboratorio MAMI, en el que se colocan de maneraanáloga los tres dispositivos y se registran 4 secciones. Para ello lo primero que se reali-zo fue un plano del laboratorio simulando un supermercado que contiene varias secciones,distinguiendo dos tipos de mapas:

Plano esquemático dibujado del laboratorio, como muestra la Figura 6.4.

Plano esquemático dibujado del laboratorio que te permita distinguir las distintas sec-ciones, como muestra la Figura 6.5.

Figura 6.4: Plano Esquemático del la-boratorio

Figura 6.5: Plano esquemático del la-boratorio con secciones

A continuación y de manera análoga al Experimento 1 se realiza un estudio para identificarel mayor número de secciones que se pudieran registrar mediante el uso de tres balizas.

121

Page 152: Sistema asistencial en superficies comerciales basado en

Debido al número reducido de balizas, las medidas de la sala y a la distancia mínima ymáxima entre balizas que toman los valores de 3 y 10 metros respectivamente, la cantidadde fluctuación debido a los números dispositivos y fluorescentes que se encuentran en la salay generan ondas electromagnéticas, se consiguen únicamente 4 secciones a pesar de tenerarmarios que hacen la función de pasillo y por tanto de pantalla.

De manera análoga al experimento 2, este experimento consiste en analizar y monitorizarlas señales procedentes de las tres balizas a medida que el usuario se desplaza por las 4secciones establecidas siguiendo una ruta. Esta ruta, que parte de la posición en la que seencuentra inicialmente el usuario, pasa por las secciones de Perfumería, Mascotas, Bollería yFrutas y Verduras, repitiendo el ciclo dos veces y finalmente regresa a la posición inicial.

Por lo tanto, el itinerario comienza en el tag 64, y se visitan en orden los tag: 63, 60, 10,13, 63, 60, 10 y 13. La ruta se realiza de manera constante usando el sistema implementado,que incorpora un filtro.

Al tener este laboratorio unas medidas similares al salón de grados donde tuvo lugar elExperimento 2, se vuelve a establecer el rango de proximidad entre Immediate y Near.

El mapa se ha realizado de la misma manera que el usado en el salón de Grados, pero eneste caso, se ha dividido el aula en 7 filas y 5 columnas.

La ubicación de los iBeacon es:

iBeacon Morado colocado en la pared detras del tag 54 que corresponde a la secciónde hogar, representada por una pila.

iBeacon Verde colocado en la estanteria detras del tag 41 que corresponde a la secciónde congelados y bebidas, representado por el símbolo del congelado y una botella.

iBeacon Azul colocado en la pared detras del tag 10 que corresponde a la sección dehorno y bollería, representado por una rebanada de pan.

La Tabla 6.4 muestra una comparativa entre los rangos de proximidad real y la proximidadobtenida con la medida de RSSI.

Era de esperar que estos valores fueran peores que en el Experimento 2, debido a la canti-dad de fluctuación, sin embargo estos valores sólo son peores en la sección de Frutería cuyotag es el numero 13 y contiene un único acierto. Esto sucede por no tener ningun dispositivocerca, y por el contrario el resultado del resto de secciones, al disponer de un dispositivocerca, es similar al obtenido en el Experimento 2. De igual manera que en el experimento 2el factor más influyente e importante a tener en cuenta es la correcta colocación de los dispo-sitivos que permita establecer zonas de cobertura comprendidas entre estos dos rangos.

Como ya se ha comentado con anterioridad, una vez finalizado el experimento y observan-do los resultados obtenidos en la Tabla 6.4 se concluye que el dato principal para determinar

122

Page 153: Sistema asistencial en superficies comerciales basado en

Punto deMedida

iBeacon Morado iBeacon Verde iBeacon AzulReal Medida Real Medida Real Medida

63 Immediate Immediate Near Near Near Far60 Near Near Near Near Near Far10 Near NULO Near Near Immediate Immediate13 Near Far Near Near Near Far63 Immediate Immediate Near Near Near NULO60 Near Near Near Near Near Far10 Near Far Near Far Immediate Immediate13 Near Far Near NULO Near Far

Tabla 6.4: Comparativa de proximidad real-media.

la ubicación de un usuario es el rango de distancias, haciendo uso de las proximidades Near

e Immediate, que aseguran una localización admisible, obviando el uso de la proximidad Far

ya que se utiliza para distancias de más de 10 metros y por lo tanto no permite una correctalocalización.

6.4 ConclusiónUna vez realizadas las pruebas se llega a la conclusión de que el sistema implementado no

está orientado a la exactitud en la posición concreta del usuario sino enfocado a determinarla sección en la que se encuentra. Partiendo de esta base se determina que el usuario seencuentra en un rango de distancias, tomando como referencia los rangos establecidos eniOS cuyos valores son:

Near: El nodo móvil se encuentra a una distancia menor de 2 metros.

Immediate: El nodo móvil se encuentra a una distancia comprendida entre 2 y 10metros.

Far: El nodo móvil se encuentra a una distancia mayor de 10 metros.

El radio de acción máximo de los iBeacons está en 70 metros pero en realidad es muchomenor, como se ha podido comprobar en las pruebas realizadas, debido a las interferenciasque producen los elementos circundantes tales como mobiliario, paredes, vidrio, hormigón,el propio cuerpo humano e incluso los agentes atmosféricos.

Los iBeacons han sido elogiados por su capacidad para proporcionar servicios de loca-lizacion indoor, asegurando que pueden localizar un dispositivo móvil con una precisiónde centímetros mediante la triangulación de la señal desde múltiples balizas. Sin embargotras una búsqueda y realizar las pruebas se puede afirmar que la no hay ninguna función deubicación por triangulación implementada dentro del Protocolo BLE o API de iBeacons.

Además, el rango de localización de un nodo móvil respecto a la posición del iBeaconoscila en metros, de ahí que Apple recomiende [App] usar el valor RSS para la localización,

123

Page 154: Sistema asistencial en superficies comerciales basado en

ya que al oscilar el valor en metros, nunca se puede llegar a tener una certeza en la precisiónde centímetros y por lo tanto no puede usarse para localizar con exactitud un nodo móvil.

Además, dependiendo del sistema operativo, en casos como iOS7 es necesario estar al me-nos 20 segundos en la zona de cobertura del iBeacon para recibir una notificación [You14].

Si se pretende una localización basada en la exactitud del usuario, sería necesario unamayor cobertura que implique mayor información y mayor fiabilidad, ya que al recibir laseñal de múltiples dispositivos y por múltiples caminos se garantiza una mayor exactitud.

Para ello sería necesario una red con topología de malla en el que la distancia entre nodostenga un máximo de 10 metros y un mínimo de 4 metros, de manera que el nodo móvilreciba la señal de un número suficiente de nodos de referencia para realizar una estimaciónmás correcta de la posición del nodo móvil.

Para la superficie en la que se han realizado las pruebas, lo idóneo hubiera sido un totalde 9 nodos de referencia, donde el esquema de coberturas quedaría como muestra la Figura6.6.

Figura 6.6: Nodos de Referencia en topología de malla

Un aumento de los nodos de referencia supondría una mayor exactitud, sin embargo utili-zar más nodos de los necesarios supondría una perdida de precisión, ya que lo más lejanoscontendrían valores extremos que se utilizarían en la estimación y por tanto corromperían elcálculo de la media de la señal [BP00]. De manera que aunque se tengan multiples nodos dereferencia solo se utilizarían los n nodos más cercanos.

124

Page 155: Sistema asistencial en superficies comerciales basado en

6.5 Modulos funcionales de la aplicaciónLa estructura de la aplicación ShoppingBeacon se compone de los siguientes módulos

funcionales:

Catálogo

Listas

Comprar

El acceso a los diferentes módulos se realiza a través de la barra de acceso directo situadaen la parte inferior de la pantalla, aunque por defecto aparece el Catálogo de productos.Cada uno de estos módulos es examinado a continuación, incluyendo capturas de la interfazde usuario que reflejan la operación con cada uno de ellos.

Catálogo

Permite al usuario buscar cualquier producto mediante la barra de búsquedas que permitelocalizar el producto de manera escrita o hablada, o de manera manual buscando entre todoslos productos del catálogo.

Figura 6.7: Catálogo de productos

125

Page 156: Sistema asistencial en superficies comerciales basado en

Listas

Permite al usuario generar una lista personalizando ésta con el título que desea el usua-rio. Al generar la lista aparece una ventana emergente, preguntando si se desea realizar unaalerta a base de recordatorio. Una vez creada la lista, se puede editar con la incorporacióny eliminación de productos. De la misma manera que en el módulo funcional del Catálogo,la obtención del producto que se desea añadir a la lista se puede hacer de manera manualo mediante una barra de búsqueda que permite al usuario escribir el producto que desea odictarlo. También permite al usuario mandar por correo la lista generada.

Figura 6.8: Listas de listas Figura 6.9: Creación de alertas

126

Page 157: Sistema asistencial en superficies comerciales basado en

Figura 6.10: Selección de fecha y hora Figura 6.11: Notificación de alerta

127

Page 158: Sistema asistencial en superficies comerciales basado en

Figura 6.12: Lista de procutos Figura 6.13: Modficaión de la lista deporductos

128

Page 159: Sistema asistencial en superficies comerciales basado en

Figura 6.14: Generar un correo con la lista de la compra

129

Page 160: Sistema asistencial en superficies comerciales basado en

Comprar

Este módulo presenta un mapa del centro en el que se realiza la compra, pudiendo alter-narse con otro mapa de la zona en la que aparecen las secciones. Este módulo comienzacalculando la ruta que suponga la ruta de coste mínimo y pase por todos los productos quedesea el usuario, y en base a esta ruta genera una animación. A continuación se dedica ala monitorización de señales y a detectar cualquier cambio en la posición del usuario pa-ra generar la animación del movimiento. La interfaz muestra en todo momento el siguienteproducto a recoger y los productos restantes. Además, el usuario puede añadir la opción deguiado mediante voz.

Figura 6.15: Mapa de interior Figura 6.16: Mapa de interior consec-ciones

130

Page 161: Sistema asistencial en superficies comerciales basado en

Capítulo 7

Conclusiones y Propuestas

E N este capítulo se muestran los objetivos alcanzados durante el desarrollo de este Pro-yecto Fin de Grado y se detallan el posible trabajo futuro de cara a la mejora o la

ampliación del sistema desarrollado. Se finaliza con una conclusión personal de lo que hasupuesto llevarlo a cabo.

7.1 Objetivos AlcanzadosUna vez finalizado, el presente Trabajo Fin de Grado cumple con todos y cada uno de

los objetivos que se especificaron en el Capítulo 2. Sin embargo, mas allá de la lista formalde requisitos, el propósito del presente Trabajo Fin de Grado es el que se anunció comomotivación en la Sección 1.4 del Capítulo 1: construir un sistema que se basa en la recepciónde señales que permitan localizar al usuario dentro de un edificio en un mapa previamentefacilitado y con unos puntos a recorrer para guiar al usuario hasta ellos. Por ello y basándoseen el análisis de las aplicaciones ya existentes que ofrecen un servicio similar, que se exponeen el Capítulo 3, se muestra la Tabla 7.1, señalando las características deseables que ha detener la aplicación y cuáles han sido alcanzadas, de manera que permita comprobar en quémedida se ha cumplido con esta especificación inicial.

Durante el desarrollo del proyecto se ha tratado de utilizar enfoques de diseño y prácticasde programación y herramientas que contribuyan no sólo a un producto final caracterizadopor lo que ofrece sino por su calidad. El diseño del sistema se ha realizado tratando de ga-rantizar la independencia de los subsistemas obteniendo un sistema fácilmente mantenible yextensible tanto a la hora de generar rutas en distintas superficies comerciales o la incorpo-ración de más dispositivos beacon que supongan una mayor exactitud.

131

Page 162: Sistema asistencial en superficies comerciales basado en

Características

App Listas de la Compra

- La app debe contener una base de datos con los productosdel centro comercial al que va a estar destinada la app. 3

- Los productos deben contener una imagen que haga másintuitiva la localización dentro del catálogo de productos. 3

- Los productos deben tener un precio asignado. 3

- Los productos pueden ser buscados de manera escrita opor comandos de voz. 3

- El usuario puede crear varias listas. 3

- El usuario puede visualizar el precio de la lista con losproductos ya escogidos. 3

- El usuario puede compartir la lista con cualquier otra per-sona. 3

- El usuario puede añadir una alerta a cada lista para que leavise en una fecha concreta. 3

App Localización Indoor

- Indicación de los productos disponibles 3

- Búsqueda de productos disponibles 3

- Uso de plano esquemático dibujado interior 3

- Posicionamiento interior 3

- Visualización de Servicios interiores 3

- Rutas Origen-Destino 3

- Guiado 3

Tabla 7.1: Características de ShoppingBeacon

132

Page 163: Sistema asistencial en superficies comerciales basado en

7.2 Trabajo FuturoEl presente Trabajo Fin de Grado cumple con todos los requisitos descritos en la Sec-

ción 2.2 del Capítulo 2, sin embargo durante el desarrollo del sistema surgen nuevas vías detrabajo que pueden mejorar el sistema ShoppingBeacon, y que debido a restricciones tem-porales no se han llevado a cabo, por lo que se proponen como trabajo futuro. Las siguientespropuestas de ampliación y mejora son:

Integración de un servidor de base de datos: Uno de los objetivos del presente Tra-bajo Fin de Grado es el acceso a un catálogo remoto, sostenido por una base de datos,que permita consultar los distintos productos. Debido a restricciones temporales dichabase de datos externa consiste en un archivo SQLite interno en la propia carpeta de laaplicación. Esta base de datos almacenará los datos de carácter persistente y simula elcomportamiento como si de un servidor de base de datos se tratara, al ser necesariorealizar consultas a ésta para mostrar los productos. Sin embargo no es posible actuali-zar de forma remota los datos que almacena y supone un coste añadido en memoria. Espor ello que se propone como trabajo futuro un servidor de base de datos que almacenelos catálogos disponibles para el usuario. Con la implementación de este servidor debase de datos se podrá realizar una actualización periódica de los catálogos, como esel caso del precio de los productos o la adición de nuevos productos, sin necesidad derecurrir a actualizaciones de la App.

También se propone, de manera análoga a la aplicación myShopi comentada en la Sec-ción 3.2 del Capítulo 3, hacer una distinción inicial con la superficie comercial dondese va a realizar la compra. De esa manera se podría acceder a la lista de productos,precios y mapa de la superficie comercial de cada uno de los supermercados. Toda estainformación estaría disponible en el servidor de base de datos por lo que la App reali-zaría una revisión periódica para mantener los datos accesibles al usuario actualizados.

Añadiendo un servidor de base de datos se dispondría de un mayor volumen de memo-ria, se ofrecería más funcionalidad a la App y se mantendrían los datos actualizados,por lo que tendría una prioridad alta a la hora de realizar el trabajo futuro.

Posibilidad de reajustar el algoritmo de localización: Debido a la inexactitud enla localización del usuario producida por la fluctuación de la señal y el uso de tresdispositivos beacon, se determina en la Sección 6.4 del Capítulo 6 que el sistema estáenfocado a determinar la sección en la que se encuentra. Sin embargo, si se deseauna localización basada en la exactitud del nodo móvil, sería necesaria una mayorcobertura que implique mayor información y por tanto mayor fiabilidad, ya que alrecibir la señal de múltiples dispositivos y por múltiples caminos se garantiza unamayor exactitud. Para ello se propone una topología de malla, donde los dispositivostengan un radio entre ellos en un rango mayor a cuatro metros y menor de diez metros,

133

Page 164: Sistema asistencial en superficies comerciales basado en

consiguiendo por tanto que el nodo móvil reciba más señales y de esa manera realiceuna estimación más correcta.

Un aumento de los nodos de referencia supondría una mayor exactitud, sin embargoutilizar más nodos de los necesarios supondría una perdida de precisión, ya que losmás lejanos contendrían valores extremos que se utilizarían en la estimación y portanto corromperían el cálculo de la media de la señal; de manera que aunque se ten-gan múltiples nodos de referencia solo se utilizarían los k nodos más cercanos. Segúnmuestran Bahl y Padmanabhan en su estudio RADAR [BP00], el número de nodos dereferencia idóneo para el posicionamiento es 5. Por lo tanto, para estimar la posicióndel nodo móvil en el sistema, se utilizaría una sistema basado en la cercanía a múlti-ples nodos de referencia, usando de igual manera la fuerza de la señal recibida paralocalizar los 5 nodos más cercanos en localizaciones conocidas al estar almacenadosen un mapa de potencias. Una vez almacenados los 5 nodos más cercanos se aplica-ría la función propuesta por Serodio y Coutinho [CS] que consiste en una funcióndifusa asignando pesos a los nodos tomados como referencia para calcular las coorde-nadas del nodo móvil. La asignación de pesos se basa en la proximidad de los nodosde referencia, asignando pesos mayores a los nodos más cercanos, cuyo valor en laponderación desciende cuando aumenta la distancia desde el nodo móvil.

134

Page 165: Sistema asistencial en superficies comerciales basado en

7.3 Conclusión PersonalDurante el desarrollo del Trabajo Fin de Grado un Ingeniero debe hacer uso de los conoci-

mientos adquiridos en los años que se ha formado, no sólo pertenecientes a los campos de lainformática, sino a muchas más áreas de conocimiento como las Matemáticas, Álgebra, Es-tadística, incluso Sociología, aunque dadas sus características y las restricciones temporalesnumerosas áreas no hayan tenido cabida en él.

El presente Trabajo Fin de Grado constituye el fin de la formación de un Ingeniero In-formático, sin embargo y a pesar de acabar mi formación, durante el desarrollo me he dadocuenta de que la formación adquirida durante estos años es sólo la punta del iceberg y elhaber terminado este proceso de formación no implica que haya que dejar de formarse, yaque la nuestra es una ciencia en constante evolución en la que todos los días se aprende algonuevo.

El desarrollo de este Trabajo Fin de Grado ha supuesto la experiencia más cercana durantetoda la carrera a un proyecto real y de gran envergadura. Considero que a partir de estemomento soy capaz de desempeñar mi labor profesionalmente, debido en gran parte a sudesarrollo en el que se establecen unos requisitos y he buscado la solución más apropiadapara cada uno de ellos, afrontando varios problemas como puede ser el desconocimientosobre un área y siendo necesaria la formación autodidacta.

Es por ello que me siento orgulloso de haber afrontado y resuelto cada uno de los objetivosestablecidos, de haber escogido esta magnífica carrera en la que no se deja de aprender y deser parte de esta gran área de la ciencia en la que somos capaces de imaginar y desarrollarsistemas capaces de buscar soluciones a las necesidades de las personas y facilitar nuestrodía a día.

135

Page 166: Sistema asistencial en superficies comerciales basado en
Page 167: Sistema asistencial en superficies comerciales basado en

ANEXOS

137

Page 168: Sistema asistencial en superficies comerciales basado en
Page 169: Sistema asistencial en superficies comerciales basado en

Anexo A

Fundamentos sobre tecnologías de localización

De manera genérica, un sistema de localización en interiores consiste en un conjunto deestaciones fijas y unos dispositivos inalámbricos asociados a las personas que se deseanseguir.

A la hora de tener diseñar el sistema se ha de tener en cuenta que debe ser usado porcualquiera, ha de basarse en tecnologías estándares, que se encuentren disponibles a bajocoste en el mercado, al igual que lo referente a la parte de instalar en el recinto el sistema quevaya a implantarse, atendiendo a los costes de implantación y mantenimiento, fundamentalespara la posible expansión del sistema.

Atendiendo a las consideraciones expuestas y antes de realizar la elección entre las di-ferentes opciones disponibles para la localización en interiores, es necesario considerar lascaracterísticas que debe satisfacer el sistema:

Disponibilidad: Posibilidad de que el sistema, ante una solicitud de localización, con-siga una señal precisa para cumplir sus objetivos.

Precisión: Dispersión del conjunto de valores obtenidos de mediciones repetidas deuna magnitud, es decir, lo cerca que los valores medidos están unos de otros. La pre-cisión puede variar significativamente en función de la aplicación que se pretende im-plementar, pudiendo variar de centímetros a metros.

Latencia: En términos de ingeniería se entiende como el tiempo entre una acción yel resultado de la misma, en este caso, tiempo que pasa desde que un dispositivo semueve en la realidad, hasta que el sistema reconoce ese movimiento y lo representa enla interfaz de la aplicación.

Respuesta en tiempo real: Tiempo mínimo que pasa entre que se realiza una lecturade una posición y la siguiente. Conforme aumente la precisión, también ha de elevarsela frecuencia de actualización y por tanto aumentar la tasa de muestreo.

Comunicación: La comunicación entre dispositivo y sistema de localización puede serunidireccional o bidireccional. En este caso se trata de comunicación unidireccional,ya que el dispositivo inalámbrico será el encargado de enviar información al sistema,y éste tendrá que ser capaz procesar la información para determinar de qué dispositivo

139

Page 170: Sistema asistencial en superficies comerciales basado en

se trata y la posición que ocupa.

Otra de las consideraciones, más importantes a la hora de diseñar el sistema son los com-ponentes hardware, específicamente los nodos de referencia del sistema que permiten saberla posición del nodo móvil, que se tratará del usuario.

Esta elección marcará el diseño del resto del sistema y para ello se han tenido en cuentavarias características que el sistema debe poseer:

Bajo coste: A la hora de implantar un sistema con una posible salida al mercado es ne-cesario escoger unos componentes hardware que no impliquen realizar un desembolsoimportante. Por lo tanto el precio de los mismo y la instalación no deberían suponerun obstáculo para la implantación del sistema de localización y guiado.

Fácilmente accesible: Por la misma razón que el punto anterior, la tecnología escogidaha de ser fácilmente adquirible en el mercado, de manera que el acceso a la tecnologíano suponga un problema a la hora de implantarse o mantenerse, bien sea por averías opor un aumento en tamaño de la superficie comercial y por tanto el tamaño de la redde nodos fijos del sistema.

Estándares: Ya que esáa orientado hacia la mayor implantación posible, es necesariobasarse en estándares reconocidos, que faciliten el diseño y desarrollo del sistema.

Compatibilidad: Por último y no menos importante, otra característica a tener encuenta es la compatibilidad en la comunicación de señales entre distintos tipos denodos de referencia y móviles. Decantándose por aquella que ofrezca más opciones yfacilidades, ya que supondrá un mejor resultado en la implantación del sistema.

A continuación se detallan las diferentes alternativas tecnológicas consideradas, para la im-plantación de sistemas de localización en interiores:

A.1 Wi-Fi

La creciente disponibilidad de dispositivos móviles así como la presencia masiva de redesinalámbricas WiFi, capaces de soportar la localización de éstos, han aumentado en formasignificativa el interés del posicionamiento indoor a partir de la infraestructura de estas redes,que permiten que, las aplicaciones basadas en posición en entornos de área local resultenviables.

La infraestructura de estas redes cubre zonas de hasta 75 metros en el interior de edi-ficios. Encontrandose Implementadas en un grupo de estándares (Tabla A.1), denominadoIEEE 802.11, que comprende varias tipos. La clase más popular es la denominada 802.11b,ampliamente superada por el estándar 802.11a restringida al uso militar en España.

donde:

140

Page 171: Sistema asistencial en superficies comerciales basado en

Estándar Velocidad Máxima Interfaz de aire Ancho de Bandade canal

Frecuencia

802.11b 11Mbps DSSS 25MHz 2.4GHz802.11a 54Mbps OFDM 25MHz 5GHz802.11g 54Mbps OFDM/DSSS 25MHz 2.4GHz

HomeRF2 10Mbps FHSS 5MHz 2.4GHzHiperLAN2 54Mbps OFHDM 25MHz 5GHz

Tabla A.1: Estándares de Wireless LAN. Figura extraida de [UPM].

DSSS:Direct Sequence Spread Spectrum.

OFDM:Orthogonal Frequency Division Multiplexing.

FHSS:Frequency Hopping Spread Spectrum.

En contra del uso de esta infraestructura, se ecuentran tales como la vulnerabilidad a lasinterferencias, su señal es afectada por obstáculos móviles que absorben parte de su energía,reflexiones y dispersión. Ambas afectan directamente a la precisión.

A pesar de estos contras este sistema no requiere hardware adicional, ya que todos losteléfonos actuales tienen dicha tecnología incorporada.

A.2 Bluetooth

Aunque en un principio la tecnología Bluetooth no fue pensada como una tecnología delocalización, debido a la reciente llegada de la tecnología BTLE(Bluetooth Low Energy) esposible implementar un sistema para calcular la posición de un dispositivo. La tecnologíaBTLE permite interactuar en un radio de acción de 70 metros con balizas con una precisiónde hasta dos metros si procesa medidas de cuatro o más balizas y cuya batería pueda teneruna autonomía de hasta 2 años, debido a un consumo de energía relativamente bajo y quepor tanto permite colocarlas en puntos fijos sin necesidad de preocuparse por ellas.

Esta tecnología utiliza una red de tipo malla colocando las distintas balizas distanciadasunas de otras, normalmente cada 10 ó 15 metros, con el fin de cubrir las distintas zonas quese quiere monitorizar. La manera de actuar del usuario sería escanear el área en búsquedabalizas previamente localizadas y calcular su posición mediante la potencia recibida.

Otra ventaja es que todos los teléfonos vienen también con dicha tecnología disponible.Actualmente, existen varias empresas que desarrollan soluciones de localización basadas enBluetooth como pueden ser Tadlys, BlueLon, Blueposition, etc. Las aplicaciones van dirigi-das a proveer localización o grabar rutas, servicios útiles en hospitales, centros de trabajo,colegios, servicios comerciales, etc.

141

Page 172: Sistema asistencial en superficies comerciales basado en

A.3 UWBUWB emplea ráfagas de potencia más baja que cualquier otra de las tecnologías men-

cionadas con una frecuencia amplia (3,1-10,6GHz) y velocidades de transferencia de datosmucho mayores que las tecnologías mencionadas llegando a transferir datos a velocidadesde centenares de megabytes por segundo.

Esta tecnología está basada en pulsos ultracortos, calculando la distancia al móvil median-te el retardo de un pulso desde que es emitido por el transmisor hasta que llega al receptorpermitiendo localizar el terminal móvil con un error mínimo.

Debido a su baja complejidad, coste reducido y a la capacidad para solucionar los pro-blemas de precisión y seguridad que caracteriza a la red Wi-Fi, es una tecnología a conside-rar.

Como ejemplo comercial, la empresa Parco PAL que ofrece servicios de localización ba-sados en UWB, para seguimiento de objetos en hospitales. Su bajo nivel de potencia evitalas interferencias con equipos médicos y proporciona localización muy precisa. [?]

La Tabla A.2 muestra una tabla comparativa en la que se puede observar como UWB tieneuna capacidad muy superior al resto, con una potencia de emisión insignificante, pero estálimitada en alcance.

Tecnología Tasa de datos (Mb/s) Potencia (mW) Alcance(m) Frecuencia

Bluetooth 1-2 100 100 2.4GHzIrDA 4 100 1-2 InfrarrojoUWB 100-500 1 10 3.1-2.6GHz

IEEE 802.11a 54 40-800 20 5GHzIEEE 802.11b 11 200 100 2.4GHzIEEE 802.11g 54 65 50 2.4GHz

Tabla A.2: Tabla Comparativa tecnologías UWB. Tabla extraída de [UPM]

A.4 ZigBeeLa tecnología ZigBee está basada en el estándar IEEE 802.15.4, estándar que define el

nivel físico y el control de acceso al medio de redes inalámbricas de área personal.

Es una tecnología diseñada para ser el estándar de comunicación de las redes inalámbricasde sensores como se puede observar en la Figura A.1 , presentando tres principios básicos detrabajo: low cost, low power y low data rate.

Diversos trabajos realizados en la actualidad con esta tecnología ponen en evidencia laviabilidad y opciones que presenta esta tecnología para la localización en interiores, debidoprincipalmente a su bajo coste y baja potencia de emisión.

Sin embargo, presenta grandes limitaciones de utilidad para aplicaciones donde sea nece-sario un cierto volumen de transmisión de datos debido a su limitada tasa de bit. A mayores,

142

Page 173: Sistema asistencial en superficies comerciales basado en

Figura A.1: Red de sensores con tecnología ZigBee

se producen fluctuaciones de la señal debido a la configuración del entorno o el movimientode personal, que se ven reflejadas en pérdida de precisión.

A.5 RFIDEl sistema RFID (Radio Frequency Identification) se basa en etiquetas de radiofrecuencia

que permiten la identificación a distancia de una objeto o persona.

Esta tecnología esta formada por tres componentes: etiquetas que contienen un transpon-dedor con un chip digital de memoria para comunicarse con los receptores. Los receptores,están formados por una antena encargada de activar la etiqueta y leer los datos almacenados,incluso escribir en la memoria y el sistema central de control. Las etiquetas pueden ser dedos tipos:

Pasivas: No poseen ninguna batería, sino un circuito que se activa al recibir la potenciaemitida por un receptor. Con esta potencia es capaz de transmitir los datos almacenadosen la memoria. Su coste, tamaño y su alcance es bajo, entre decenas de centímetros yalgunos metros.

Se emplean para reemplazar el sistema de código de barras tradicional.

Activas: Poseen una batería que le permite transmitir sus datos de manera autosufi-ciente. Su memoria, tamaño, coste y alcance es mayor, pasando de algunos metroshasta a decenas de metros.

143

Page 174: Sistema asistencial en superficies comerciales basado en

Una etiqueta activa de altas prestaciones combinado con un lector de las mismas pres-taciones ofrece hasta 70 metros de alcance, una frecuencia de 100 etiquetas/seg, unamemoria de 32KB y una duración de la batería en el mejor de los casos de 5 años, quevaría significativamente en función de la frecuencia.

Se emplean en la identificación de productos en movimiento como pueden ser palés.

En nuestro caso para aplicaciones de localización en interiores, las etiquetas más adecua-das disponibles hoy en día son las activas, principalemten por su mayor rango de lectura.

Se recominenda utilizar esta tecnología en una estructura de malla colocando etiquetasRFID de referencia por metro cuadrado, de manera que se consiga una precisión de 1 a 2metros y se consiga reducir los errores inducidos por la presencia de obstáculos o cuerposen movimiento. Los principales problemas a los que un desarrollador se enfrenta al usar estatecnología son:

La frecuencia a la que se pueden recibir los datos es muy limitada, para evitar la posi-bilidad de colisión.

Hay variabilidad entre distintas etiquetas, ya que dos etiquetas no emiten en las mismascondiciones la misma potencia, por lo que implica hacer una clasificación previa porpotencia.

Algunos materiales, como el metal, no son los más adecuados para soportar una eti-queta y actualmente existen productos que no pueden ser envasados de otra forma.

Sin embargo la localización mediante RFID no es viable debido a la necesidad de unlector apropiado y a la tecnología NFC cuyo uso es similar y se esta extendiendo no soloen los Smartphones sino en las funcionalidades llendo mas allá del almacenamiento en eluso de mecanismos de control de apertura en productos ligados con la tecnología, gestión dealmacén, pago de peajes, control de acceso, etc.

La tecnología es madura y el coste de desarrollo e implantación va disminuyendo progre-sivamente, sin embargo, no dejan de ser aplicaciones de logística y distribución.

Hay multitud de empresas que ofrecen y desarrollan soluciones empleando etiquetas RFID:Alien Technologies, Matrics, Deisler Electronics, RFID Inc., AWID, IDENTEC Solutions. . .

A.6 Justificación de alternativa seleccionadaTras el análisis de diversas tecnologías, se consideran poderosas alternativas a tener en

cuenta en la elección de la tecnología de RF utilizada en ShoppingBeacon los siguientes 4estándares: UWB (IEEE 802.15.3), ZigBee (IEEE 802.15.4), WiFi (IEEE 802.11.a/b/g) yBluetooth (IEEE 802.15.1). A continuación se muestra en la Tabla A.3 un resumen de cadauna de las tecnologías consideradas para su uso en el desarrollo del presente Trabajo Fin deGrado.

144

Page 175: Sistema asistencial en superficies comerciales basado en

Est

ánda

r\

Blu

etoo

thU

WB

Zig

Bee

WiF

iC

arac

teri

stic

asB

anda

defr

ecue

ncia

2.4

GH

z3.

1-1

0.6

GH

z2.

4G

Hz

2.4G

Hz;

5GH

zM

áxim

ata

sade

seña

l1

Mb/

s11

0M

b/s

250

Kb/

s54

Mb/

sA

lcan

ceno

min

al10

m10

m10

-100

m10

0m

Pote

ncia

nom

inal

deT

X-1

0-0

dBm

-41.

3dB

m/M

Hz

(-25

)-0

dBm

15-2

0dB

mN

úmer

ode

cana

les

791-

151-

10;1

614

RF

sopo

rtad

osA

ncho

deB

anda

1M

Hz

500

MH

z-7

.5G

Hz

0.3/

0.6

MH

z;2

MH

z22

MH

zde

cana

l

Tabl

aA

.3:C

ompa

rativ

ade

tecn

olog

ías

deR

F.

145

Page 176: Sistema asistencial en superficies comerciales basado en

Como se observa en la Tabla A.3, Bluetooth y ZigBee están principalmente pensados paradispositivos portátiles con alcances relativamente cortos y bajo consumo. En el caso de UWBesta diseñado para tasas elevadas de transmisión de datos a corto alcance, lo que supone unmayor consumo energético. De la misma manera WiFi, implica una conexión y transmisiónde datos por lo que estos dispositivos están provistos de fuentes de alimentación.

A continuación, la Figura A.3 [Gra] muestra una comparativa de consumo energéticoreferido a la tasa de bit (1 MB/s)

Figura A.2: Gráfica de consumo de potencia de tecnologías RF

Finalmente, en la Figura A.4 se expone una comparación de tecnologías en lo referente alcoste de dispositivos y complejidad para aplicar las tecnologías citadas a la localización eninteriores.

Tras realizar un análisis de las diferentes tecnologías hasta el momento, se ha optado porel estándar Bluetooh como una tecnología con tasa de bit, alcance, potencias de operación,arquitectura, relación coste/complejidad, rapidez de despliegue, simplicidad de uso, fiabili-dad, seguridad y duración de la batería totalmente aceptables y factibles para la ejecucióndel presente Trabajo Fin de Grado.

Como balizas Bluetooth se han utilizado tres dispositivos propiedad de Estimote. Transmi-sores de bajo consumo capaces de localizar a dispositivos iOS por proximidad, permitiendoel envío de notificaciones push entre dispositivos. Hay multitud de balizas bluetooth, sinembargo se ha optado por la elección de estos transmisores debido en gran medida a lassiguientes razones:

SDK: Se trata de un conjunto de herramientas de desarrollo de software que permite

146

Page 177: Sistema asistencial en superficies comerciales basado en

Figura A.3: Gráfica de coste/complejidad de tecnologías RF para localización en interiores

al desarrollador de software crear aplicaciones para el sistemas de los iBeacon.

Una baliza para muchas apps: Las balizas iBeacon puedan ser leídas e interpretadasno sólo por una app corporativa de tienda sino por software de terceros. Por ejemplo,un comercio puede desarrollar su propia app compatible con iBeacons desplegados entienda y al mismo tiempo confiar los identificadores de dichas balizas a un tercero,como Google con su software Google Maps.

Compatibilidad de iBeacon con dispositivos Android: Las balizas iBeacon puedenser leídas por un sistema operativo Android.

147

Page 178: Sistema asistencial en superficies comerciales basado en
Page 179: Sistema asistencial en superficies comerciales basado en

Anexo B

Calibración del dispositivo iBeacon

Los beacons suelen venir calibrados de fábrica, sin embargo nunca está de más realizaruna prueba inicial y comprobar la potencia de emisión de éstos.

Cada uno de los beacon de Estimote, a través de su SDK, aparte de los valores estándaresde CLBeacon de Core Location ofrece una propiedad más: measured power. Esta propiedadindica la potencia en dBs que se debería obtener si se pone a un metro del beacon. Otrapropiedad que ya se ha nombrado y con la que se trabaja para estimar la posición del usuario,es el valor rssi, que corresponde al valor de la potencia de la señal recibida por el dispositivodesde el que se están monitorizando los beacon, un iPhone en este caso. Por tanto, si se ponea un metro del beacon, el valor rssi y el valor measuredPower deben ser similares comomuestra la Figura B.1

Figura B.1: Calibración de un dispositvo iBeacon

149

Page 180: Sistema asistencial en superficies comerciales basado en

Al igual que se ha hecho en el resto de las pruebas, se deben almacenar un conjunto demuestras para realizar una media del conjunto, ya que dependiendo de las interferencias quese puedan dar en el momento de la calibración, puede fluctuar bastante. Apple [App14b]recomienda almacenar muestras del valor rssi durante 20 segundos (iOS hace lecturas a 1Hz,es decir, una lectura por segundo) y calcular la media sobre el percentil 80 de los valoresalmacenados. Aunque en el resto de pruebas se han tomado 30 medidas del valor rssi, quesuponen algo más de 30 segundos debido a la pérdida de alguna señal, en este caso se haoptado por tomar valores durante 20 segundos y realizar una media sobree el percentil 80como recomienda Apple.

// Measured power is an average of the mid-80th percentile of RSSI samples.

NSInteger balancedRSSI = 0;

NSUInteger outlierPadding = allBeacons.count * 0.1f;

[allBeacons sortUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"rssi" ascending:YES

]]];

NSArray *sample = [allBeacons subarrayWithRange:NSMakeRange(outlierPadding, allBeacons.count - (

outlierPadding * 2))];

balancedRSSI = [[sample valueForKeyPath:@"@avg.rssi"] integerValue];

Listado B.1: Calibración iBeacon. Listado Extraído de [App14a]

Las lecturas de rssi se almacenan en la propiedad allBeacons y posteriormente se realizanlos cálculos necesario para obtener el valor rssi válido para la calibración del beacon.

Una vez obtenida el valor medio del rssi, se debe ajustar la potencia de emisión para quelos valores rssi (el valor balancedRSSI del código de arriba) y measuredPower sean los mássimilares posibles.

Para ello se hace uso del SDK de Estimote que permite conectarse al beacon que se deseacalibrar a través de Bluetooth para modificar la potencia de transmisión mediante el métodowriteBeaconPower:withCompletion: de la clase ESTBeacon del SDK de Estimote, y de esamanera el valor rssi y el valor measuredPower sean lo más similares posible.

150

Page 181: Sistema asistencial en superficies comerciales basado en

Anexo C

Contenido del soporte fisico adjunto

El soporte físico adjunto contiene el producto software final resultante del proceso dedesarrollo del presente Trabajo Fin de Grado, su código fuente y su documentación, corres-pondiente al presente documento en versión digital. Todos estos recursos se hallan distribui-dos en el CD adjunto a este documento. La estructura de directorios que el CD alberga es lasiguiente:

Código fuente del producto final

Contiene el código fuente del producto final, de acuerdo a su jerarquía de directorios juntocon las bibliotecas necesarias para su compilación (excepto aquellas directamente depen-dientes de iOS que deben encontrarse instaladas en el sistema). Se incluyen también todoslos demás archivos necesarios para el proceso de compilación: imágenes y base de datosexterna.

Código fuente de las App para realizar pruebas

Contiene el código fuente necesario de la App para realizar las pruebas, de acuerdo a sujerarquía de directorios junto con las bibliotecas necesarias para su compilación (exceptoaquellas directamente dependientes de iOS que deben encontrarse instaladas en el sistema).Se incluyen también todos los demás archivos necesarios para el proceso de compilación:imágenes y base de datos externa.

Documentación

Contiene la documentación perteneciente al presente documento en versión digital.

151

Page 182: Sistema asistencial en superficies comerciales basado en
Page 183: Sistema asistencial en superficies comerciales basado en

Referencias

[AH11] Gaurav S. Sukhatme. Andrew Howard, Sajid Siddiqi. An experi-mental study of localization using wireless ethernet. http://www.

springerlink.com/content/mu1333820763207h/, Dic 2011.

[AMB10] Paula Tarrío Ana M. Bernardos, José R. Casar. Real time calibra-tion for rss indoor positioning systems. International Conference on

Indoor Positioning and Indoor Navigation, Sep 2010.

[Ann] App Annie. ios app store revenue 2.6x that of google play. http://

blog.appannie.com/app-annie-index-market-q1-2013/.

[App] Apple. Documentation class clbeacon. https://developer.apple.com/library/prerelease/ios/documentation/CoreLocation/Reference/

CLBeacon class/index.html#//apple ref/occ/instp/CLBeacon/

accuracy.

[App14a] Apple. Airlocate: Using corelocation to monitor, range, and configu-re your device as an ibeacon. https://developer.apple.com/library/

ios/samplecode/AirLocate/Introduction/Intro.html, 2014.

[App14b] Apple. Getting started with ibeacon. https://developer.apple.com/

ibeacon/Getting-Started-with-iBeacon.pdf, June 2014.

[Bec99] Kent Beck. Embracing change with extreme programming. Compu-

ter, 23, Oct 1999.

[Blu] B. sig,company identifiers. https://www.bluetooth.org/en-us/

specification/assigned-numbers/company-identifiers.

[BP00] Paramvir Bahl and Venkata N. Padmanabhan. RADAR: An inbuilding

RF-based user location and tracking system, pages 775–784. INFO-COM, 2000.

[CNE] CNET. Google y yahoo también se interesan en flipboard: reporte.http://www.cnet.com/es/noticias/google-yahoo-compra-flipboard/.

153

Page 184: Sistema asistencial en superficies comerciales basado en

[CS] Hugo Pinto Pedro Mestre Carlos Serodio, Luıs Coutinho. A com-parison of multiple algorithms for fingerprinting using ieee802.11.6-8/06/2011.

[DC11] Fang YiYuan. Deng Chen. Improved rssi indoor location system ba-sed on fuzzy algorithm. In Computer Science and Automation Engi-

neering (CSAE), Jun 2011.

[Des12] Rahul Desai. Nokia leads the way with indoor mapping. http://360.

here.com/2012/07/16/nokia-leads-the-way-with-indoor-mapping/,2012.

[Fet13] John Fetto. Americans spend 58 a day on their smarthpho-nes. http://www.experian.com/blogs/marketing-forward/2013/05/

28/americans-spend-58-minutes-a-day-on-their-smartphones/

?WT.srch=PR EMS smartphones 052813 press, May 2013.

[Gho] C. B. T. C. Avik Ghose. Blueeye – a system for proximity detectionusing bluetooth on mobile phones.

[Gra] F. S. Granja. Sistemas de localización en interiores basados enradiofrecuencia, instituto de automática industrial (csic). www.car.

upm-csic.es/lopsi/static/publicaciones.

[ide] ideup. desarrollador android vs desarrollador ios. http://www.ideup.

com/blog/desarrollador-android-vs-desarrollador-ios.

[Joh10] John Ray; Sean Johnson. Desarrollo de aplicaciones para iPhone.Anaya, 2010.

[LHCGHCMHJW10] E.H. Lyu-Han Chen Gen-Huey Chen Ming-Hui Jin Wu. Internationalconference on parallel processing workshops. In A Novel RSS-Based

Indoor Positioning Algorithm Using Mobility Prediction., number 39,pages 549–553. ICPPW, Oct 2010.

[Low14] Josh Lowensohn. San francisco airport testing beacon sys-tem for blind travelers. http://www.theverge.com/2014/7/31/5956265/

san-francisco-airport-testing-beacon-system-for-blind-travelers,July 2014.

[Org] Bluetooth Org. Core specification - bluetooth. https://www.

bluetooth.org/docman.

154

Page 185: Sistema asistencial en superficies comerciales basado en

[SMI14] DAVE SMITH. ios continues to dominate android in webtraffic read more: http://www.businessinsider.com/chart-of-the-day-ios-continues-to-dominate-android-in-web-traffic-2014-7ixzz3ja73bhks. http://www.businessinsider.com/

chart-of-the-day-ios-continues-to-dominate-android-in-web-traffic-2014-7,Julio 2014.

[Sta15] Statista. Global smartphone shipments forecast from 2010 to2019 (in million units). http://www.statista.com/statistics/263441/global-smartphone-shipments-forecast/, 2015.

[UPM] UPM. Tecnologías y servicios para la sociedadde la información. http://www.upm.es/sfs/Rectorado/

Organos%20de%20Gobierno/Consejo%20Social/Actividades/

tecnologias servicios para sociedad informacion.pdf.

[Xat13a] Xataka. Google maps se renueva en android (y en ios, y en ver-sión web). http://www.xatakandroid.com/aplicaciones-android/

google-maps-se-renueva-en-android-y-en-ios-y-en-version-web,Mayo 2013.

[Xat13b] Xataka. Twitter music ya está disponible, pero sólo para ios ydeterminados países. http://www.xatakamovil.com/aplicaciones/

twitter-music-ya-esta-disponible-pero-solo-para-ios-y-determinados-paises,Abril 2013.

[Xat13c] Xataka. ¿dónde está twitter music para android?http://www.xatakandroid.com/aplicaciones-android/

donde-esta-twitter-music-para-android, Abril 2013.

[Xatil] Xataka. Vine llegará a android ’pronto’. http://www.xatakamovil.com/aplicaciones/vine-llegara-a-android-pronto, 27 Abril.

[You14] David G. Young. Background beacon detection ti-mes. http://developer.radiusnetworks.com/2014/03/12/

ios7-1-background-detection-times.html, Marzo 2014.

155

Page 186: Sistema asistencial en superficies comerciales basado en
Page 187: Sistema asistencial en superficies comerciales basado en

Este documento fue editado y tipografiado con LATEXempleando la clase esi-tfg que se puede encontrar en:

https://bitbucket.org/arco group/esi-tfg

[Respeta esta atribución al autor]

157

Page 188: Sistema asistencial en superficies comerciales basado en