Вы находитесь на странице: 1из 19

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TCNICA SUPERIOR DE INGENIERA (ICAI) INGENIERA EN INFORMTICA PROYECTO FIN DE CARRERA Desarrollo de una

aplicacin de posicionamiento mediante Wifi en plataforma Android ndice 1 CONCEPTOS SOBRE LAS CARACTERSTICAS DE LA SEAL EN 802.11 ...................... 2 1 1.1 Introduccin ................................................................. ..................................... 21 1.2 Potencia de seal ............................................................ .................................. 21 1.3 Potencia RSS ............................................................... ....................................... 21 1.4 Calidad de la seal .......................................................... ................................. 22 1.5 Ratio Seal-Ruido ............................................................ ................................. 22 1.6 Sensibilidad del receptor .................................................. ............................... 23 1.7 Margen de atenuacin ......................................................... ............................ 23 2 ALGORITMOS DE LOCALIZACIN ..................................................... .................................... 26 2.1 Introduccin ................................................................. ..................................... 26 2.2 Tcnicas de localizacin mediante seales electromagnticas .................. 26 2.2.1 TOA 26 2.2.2 TDoA 27 2.2.3 AoA 27 2.2.4 RSS 28 2.3 Fingerprinting ............................................................. ...................................... 28 2.3.1 Fase de entrenamiento 29 2.3.2 Fase de obtencin de la posicin 30 2.3.2.1 Algoritmo determinista ................................................. ............................................. 31 2.3.2.2 Algoritmo probabilstico ................................................. ........................................... 33 2.3.2.3 Otros algoritmos........................................................ .................................................. 33 2.4 Mejoras en el algoritmo de localizacin ...................................... .................. 33 2.4.1 Preprocesado 33 2.4.2 Postprocesado 34 2.4.2.1 Filtrado de Kalman ............................................................. ........................................ 34 3 ENTORNO DE DESARROLLO......................................................... ............................................ 37 3.1 Introduccin ................................................................. ..................................... 37 3.2 Eleccin del sistema operativo ............................................... ........................ 37 3.2.1 Windows 37 3.2.2 Linux 38 3.2.3 Linux vs Windows 39

3.3 Instalacin de Java .......................................................... .................................. 40 ndice xiii 3.4 Instalacin del entorno de desarrollo: Eclipse ............................... .............. 41 3.5 Instalacin del Android SDK .................................................. ........................ 42 3.6 Instalacin del plugin en el entorno de desarrollo: Eclipse .................. ..... 43 3.7 Emulador de Android......................................................... ............................. 45 3.7.1 Creacin dispositivo virtual 45 3.7.2 Ejecucin del dispositivo virtual 48 3.7.3 Observaciones sobre el emulador 50 3.8 Consideraciones para el desarrollo en Ubuntu 64 bits ....................... ........ 51 4 DESARROLLO DE LA APLICACIN .................................................... ..................................... 53 4.1 Introduccin ................................................................. ..................................... 53 4.2 Fase de diseo ............................................................... .................................... 53 4.3 Fases de desarrollo ........................................................ ................................... 54 4.3.1 Generacin base datos 55 4.3.2 Generacin archivos 55 4.3.3 Wipode 56 4.3.4 Portar Generacin base datos 56 4.3.5 Integracin mdulos 57 4.3.6 Pruebas usuario 57 4.4 Descripcin de las clases .................................................... ............................. 57 4.4.1 Paquete gmv.android 58 4.4.2 Paquete gmv.android.archivo 58 4.4.3 Paquete gmv.android.bd 59 4.4.4 Paquete gmv.android.configuracion 61 4.4.5 Paquete gmv.android.debug 61 4.4.6 Paquete gmv.android.localizacion 62 4.4.7 Paquete gmv.android.localizacion 64 4.4.8 Paquete gmv.android.notificaciones 64 4.4.9 Paquete gmv.android.proceso 65 4.4.10 Paquete gmv.android.wifi 66 4.5 Diagramas de clases ........................................................ ................................. 66 4.5.1 Men principal 67 4.5.2 Generacin Archivos 67 4.5.3 Generacin BD 68 4.5.4 Wipode 69 4.6 Fase de pruebas ............................................................ .................................... 69 4.6.1 Pruebas batch 70 ndice xiv 4.6.2 Pruebas online 70 4.6.3 Pruebas rendimiento 70 4.6.3.1 Men principal ........................................................... ................................................. 71

4.6.3.2 Generacin archivos ...................................................... ............................................. 72 4.6.3.3 Generacin BD ............................................................ ................................................. 73 4.6.3.4 Wipode ................................................................. ........................................................ 74 4.7 Planificacin ................................................................ ...................................... 74 4.7.1 Planificacin de tareas 75 5 PRESUPUESTO .................................................................. .............................................................. 79 5.1 Introduccin ................................................................. ..................................... 79 5.2 Presupuesto ................................................................ ....................................... 79 6 CONCLUSIONES Y TRABAJOS FUTUROS .............................................. ................................ 82 6.1 Conclusiones ............................................................... ...................................... 82 6.2 Trabajos futuros ........................................................... ..................................... 82 6.2.1 Algoritmo de localizacin 82 6.2.2 Sensores 83 6.2.3 Localizacin exteriores 83 6.2.4 Configuracin 83 6.2.5 Empleo servidor 83 6.2.6 Multimapa 84 6.2.7 Uso del contexto 84 6.2.8 Guiado 84 6.2.9 Facilidades para ciegos 85 6.2.10 Localizacin dispositivo 85 7 BIBLIOGRAFA ................................................................... ............................................................. 87 8 ANEXOS ....................................................................... ...................................................................... 90 A MANUAL DE EXPLOTACIN .......................................................... ........................................... 92 A.1 Introduccin ................................................................. ..................................... 92 A.2 Instalacin................................................................... ....................................... 92 A.3 Ejecucin .................................................................... ........................................ 95 A.4 Men principal ............................................................... .................................. 95 A.5 Generacin archivos .......................................................... ............................... 96 A.6 Generacin base datos ........................................................ ........................... 102 A.7 Wipode ..................................................................... ........................................ 104 A.8 Control de errores ......................................................... ................................. 107 ndice xv A.8.1 Generacin arc hivos 107 A.8.2 Generacin base datos 108 A.8.3 Wipode 109

B LAYOUTS ...................................................................... .................................................................. 111 B.1 Main.xml ................................................................... ....................................... 111 B.2 GenArch.xml ................................................................ ................................... 114 B.3 Wipode.xml ................................................................. .................................... 119 C MANIFEST, STRING Y PROPIEDADES ............................................... ................................... 122 C.1 Manifest ................................................................... ........................................ 122 C.2 Strings.xml ................................................................ ....................................... 125 C.3 default.properties ......................................................... .................................. 126 ndice de Figuras xvi ndice de Figuras Figura 1. Obtencin de la posicin.................................................. ...................................................... 31 Figura 2. Clculo de distancia j.................................................. ............................................................ 32 Figura 3. Clculo del centro de masas ............................................ ...................................................... 32 Figura 4. Filtrado de Kalman ................................................... .............................................................. 35 Figura 5. Gestor del SDK de Android ............................................ ...................................................... 42 Figura 6. Instalacin del plugin de Android en Eclipse ........................... .......................................... 44 Figura 7. Configuracin del plugin de Android en Eclipse.......................... ..................................... 45 Figura 8. Opciones de creacin de un dispositivo virtual ......................... ........................................ 46 Figura 9. Confirmacin en la creacin del dispositivo virtual ...................... .................................... 47 Figura 10. Administrador de dispositivos virtuales ............................. .............................................. 47 Figura 11. Dispositivo virtual cargando Android................................. .............................................. 48 Figura 12. Dispositivo virtual bloqueado........................................ ..................................................... 49 Figura 13. Escritorio del dispositivo virtual .................................. ...................................................... 49 Figura 14. Dispositivo virtual en modo panormico ................................ .......................................... 50 Figura 15. Instalacin ia32-libs ................................................. ............................................................. 51 Figura 16. DFD Aplicacin ........................................................ ............................................................. 54 Figura 17. Fases de desarrollo, pruebas y entregables .......................... ............................................. 54 Figura 18. Diagrama de clases del men principal ................................. ............................................ 67 Figura 19. Diagrama de clases de Generacin archivos ............................. ........................................ 67 Figura 20. Diagrama de clases de Generacin BD ................................... ........................................... 68 Figura 21. Diagrama de clases de Wipode ........................................

................................................... 69 Figura 22. Uso CPU Men principal ................................................ ..................................................... 71 Figura 23. Uso Memoria Men principal ............................................ ................................................. 71 Figura 24. Uso CPU Generacin Archivos ........................................... ................................................ 72 Figura 25. Uso Memoria Generacin Archivos ....................................... ............................................ 72 Figura 26. Uso CPU Generacin BD ................................................. .................................................... 73 Figura 27. Uso Memoria Generacin BD.............................................. ................................................ 73 Figura 28. Uso CPU Wipode ...................................................... ............................................................ 74 Figura 29. Uso Memoria Wipode .................................................. ........................................................ 74 Figura 30. Diagrama Gantt de la planificacin del proyecto ....................... ...................................... 76 Figura 31. Icono del instalador de Wipode ...................................... .................................................... 92 Figura 32. Ventana de detalles del paquete ..................................... .................................................... 93 Figura 33. Confirmacin de la instalacin .......................................... ................................................. 93 Figura 34. Proceso de instalacin ................................................ .......................................................... 94 Figura 35. Notificacin de instalacin completada .................................. ........................................... 94 ndice de Figuras xvii Figura 36. Icono ejecucin de Wipode ............................................. ..................................................... 95 Figura 37. Men principal ........................................................ .............................................................. 96 Figura 38. Ventana principal de Generacin de archivos ........................... ....................................... 97 Figura 39. Introduccin de coordenadas ........................................... ................................................... 97 Figura 40. Especificacin del retardo ............................................ ........................................................ 98 Figura 41. Activacin Wifi en la Generacin de Archivos ............................ ..................................... 99 Figura 42. Comienzo del muestreo ............................................... ........................................................ 99 Figura 43. Proceso de muestreo ................................................. .......................................................... 100 Figura 44. Finalizacin del muestreo ............................................. ..................................................... 101 Figura 45. Resumen del muestreo ................................................ ....................................................... 101 Figura 46. Comienzo del procesado de archivos .................................. ............................................ 102 Figura 47. Procesando archivos ................................................. .......................................................... 103 Figura 48. Fin de proceso ...................................................... ............................................................... 103 Figura 49. Wipode .............................................................. ................................................................... 104 Figura 50. Activacin de Wifi ....................................................

.......................................................... 105 Figura 51. Comienzo del procesado de archivos .................................. ............................................ 105 Figura 52. Posicin determinada por Wipode ....................................... ............................................ 106 Figura 53. Desactivacin Wifi .................................................... .......................................................... 106 Figura 54. Mensaje de error por no informar las coordenadas .................... ................................... 107 Figura 55. Mensaje de error por introducir caracteres no vldos en las coordenadas ................. 108 Figura 56. Comienzo del procesado de archivos .................................. ............................................ 108 Figura 57. Error en Wipode al no existir la base de datos ...................... ......................................... 109 ndice de Tablas xviii ndice de Tablas Tabla 1. Tabla con las posiciones y sus vectores de potencia asociados ......... ................................. 29 Tabla 2. Planificacin proyecto .................................................. ............................................................ 75 Tabla 3. Presupuesto del proyecto .............................................. .......................................................... 79 Conceptos sobre las caractersticas de la seal en 802.11b/g 1.1 Introduccin Las tecnologas wireless empleadas actualmente; ms concretamente el estndar 802.11; introducen unos nuevos conceptos relacionados con la seal. Si bien el significado de estos conceptos puede inferirse de manera intuitiva, al ser conce ptos interrelacionados pueden ser empleados de manera incorrecta o inexacta. Es por e sto que a continuacin se explicarn algunos de estos conceptos y su importancia a la ho ra de crear una red inalmbrica. 1.2 Potencia de seal La potencia de la seal recibida, se mide, normalmente, en mW o dBm. Se usa dBm por ser ms simple a la hora de representar la potencia de una seal. Las frmulas para calcular la equivalencia dBm-mW son: dBm = log (mW) * 10 mW = 10 ^(dBm/10) De manera intuitiva, si la potencia medida en mW se reduce a la mitad, esto supo ne un descenso de aproximadamente 3 dBm, y si la potencia medida en mW aumenta al doble, esto supondr un incremento aproximado de 3 dBm. 1.3 Potencia RSS La potencia de seal RSS1 utilizada en 802.11 es un valor entero que depende del fabricante del chip inalmbrico empleado. Entre dos fabricantes no tiene por qu hab er una conversin o equivalencia directa, por lo que las mediciones realizadas con el chip 1 Received Signal Strength (Potencia seal recibida) 1 Conceptos sobre las caractersticas de la seal en 802.11b/g 22 de un fabricante no son vlidas para otro chip de otro fabricante. Esto es porque

cada fabricante calcula este valor de una forma distinta y la escala no es igual. Por ejemplo, Atheros usa una escala de 0-60, Symbol una escala de 0-31 y Cisco u na escala de 0-100. En general, valores mayores denotan una mayor potencia de seal recibida. Estos valores son usados de manera interna por el controlador, para, por ejemplo, sabe r cundo cambiar a otro AP2 con mayor potencia, qu modulacin se debe usar, la potencia de emisin... 1.4 Calidad de la seal La calidad de la seal es calculada a partir del nmero de errores que se produzcan en la capa de enlace. Por lo tanto es un buen indicador de las perturbaciones o interferencias que produce el entorno en la seal recibida desde el emisor. Como en el caso de la Potencia RSS, cada fabricante usa su propio mtodo para calcular la calidad de la seal. 1.5 Ratio Seal-Ruido Este trmino suele ser incorrectamente definido por una confusin de conceptos. Desde el punto de vista de un diseador de un chip de radiofrecuencia, el ratio seal-ruido se referir a la potencia de la seal recibida respecto al ruido producido por el chip. Este ruido es producido por el simple hecho de la circulacin de electric idad y del calor que sta genera. Esto es conocido como ruido Boltzmann. Desde el punto de vista de un administrador de 802.11, el ratio seal-ruido podra ser interpretado como la seal recibida respecto al ruido ambiente (interferencias producidas por el entorno). Esto es incorrecto, ya que esto debera ser definido c omo el ratio seal-interferencias. 2 Access Point (Punto Acceso) 1 Conceptos sobre las caractersticas de la seal en 802.11b/g 1.6 23 Sensibilidad del receptor Es un valor que va asociado con una tasa de bits. Suele medirse en dBm y es indicado por el fabricante tras realizar una serie de pruebas a sus productos. P or ejemplo, un receptor indica que puede recibir datos a 1 Mbps con una potencia de seal de -95 dBm, esto revela que si la seal recibida tiene al menos dicha potencia , se garantiza que los datos se recibirn a una tasa de 1 Mbps. Por lo tanto se deduce que cuanto menor sea la sensibilidad (mayor valor negativo) ms facilidad tendr para recibir datos en casos en que la potencia recibida sea muy baja. Se suelen indicar intervalos en los que se muestran diferentes tasas de datos pa ra cada sensibilidad. Si se requieren tasas de datos deseadas, la potencia recibida deber ser mayor que si se requieren menores tasas de datos, siempre en el caso de que se refieran al mismo receptor. 1.7 Margen de atenuacin Es un margen de seguridad que se establece para garantizar una calidad mnima de la seal. Por ejemplo, se requiere que en un enlace haya una tasa de datos mnima de 11 Mbps, y el receptor tiene una sensibilidad para dicha tasa de -80 dBm. Esto sign

ifica que la potencia de la seal recibida deber ser en todo momento mayor o igual a 80 dBm. Como las seales inalmbricas est sujetas a muchas interferencias producidas por el entorno, se deber establecer un margen de seguridad para poder garantizar que la potencia recibida siempre supere el valor mnimo, ya que interferencias puntuales podra provocar que no se cumpliera el requisito de potencia y, por tanto, la tasa de datos no se mantenga al valor deseado. 1 Conceptos sobre las caractersticas de la seal en 802.11b/g 24 Normalmente, los administradores de 802.11 determinan que un margen de atenuacin de 10 dB suele ser suficiente, aunque este valor podr incrementarse en caso de que se necesite una mayor seguridad. Algoritmos de localizacin 2.1 Introduccin En los ltimos aos ha habido un incremento en las investigaciones para poder desarrollar sistemas de localizacin en interiores. Se pueden encontrar numerosas soluciones tecnolgicas que de una manera ms o menos elegante (y precisa) cubren esta necesidad. La mayora suelen ser soluciones propietarias, que no siguen ningn estndar y con poca documentacin al respecto. Centrndose en la localizacin mediante Wifi, se pueden encontrar muchos estudios de calidad, realizados en su mayora por Ingenieros para sus tesis o para la publi cacin de artculos. Cabe destacar el sistema RADAR, desarrollado el departamento de investigacin de Microsoft y que supone el punto de partida para los posteriores estudios que han ido surgiendo. 2.2 Tcnicas de localizacin mediante seales electromagnticas Existen varias tcnicas de localizacin que emplean alguna caracterstica de la sseales electromagnticas para determinar la posicin. A continuacin se detallan algunas de ellas. 2.2.1 TOA3 Es una tcnica basada en el tiempo de propagacin de una seal electromagntica. Ya que existe una relacin lineal entre el tiempo de propagacin y la distancia entr e un emisor y un receptor, se podra, con un nico receptor (con una posicin a determinar) y con varios emisores (cuya posicin es conocida), triangular la posicin del recept or basndose en las distancias a los emisores del receptor. 3 Time of Arrival (Tiempo de llegada) 2 Algoritmos de localizacin 27 Para calcular dichas distancias, ser necesario que los relojes de los emisores y los receptores estn sincronizados y la distancia sea calculada a partir del tiempo de propagacin desde que es emitida hasta que es recibida. La principal desventaja de esta tcnica es que tendr que emplear un algoritmo de sincronizacin de relojes muy robusto, adems del empleo de relojes muy precisos, para minimizar el error. 2.2.2 TDoA4 Esta tcnica es similar a la anterior, en cuanto que emplea la relacin lineal que existe entre el tiempo de propagacin y la distancia recorrida, pero en este caso no

necesita que los relojes entre emisores y receptores estn en sincrona. Para ello s e emplea una seal acstica y una electromagntica que se emiten simultneamente. Como su velocidad de propagacin es distinta (la acstica se propaga a la velocidad del sonido y la electromagntica a la de la luz), el receptor podr calcular la dist ancia al emisor mediante la diferencia temporal entre la recepcin de la seal electromagntica y la seal acstica. La ventaja de esta tcnica respecto al ToA, es que usa medidas de tiempo relativas , por lo que se eliminan los errores que pueden aparecer por pequeas diferencias en tre los relojes. 2.2.3 AoA5 Se basa en el clculo de la posicin mediante el clculo del ngulo de llegada de la seal. Esta tcnica tiene dos inconvenientes principales. El primero, que es determinante y por el cual no la hace vlida para posicionamiento indoor, es que requiere que el emisor y el receptor tengan lnea directa de visin para evitar el multipath y poder 4 Time Difference of Arrival (Diferencia de tiempo entre llegadas) 5 Angle of Arrival (ngulo de llegada) 2 Algoritmos de localizacin 28 calcular el ngulo correctamente. El segundo, es que requiere mltiples antenas para poder calcular el ngulo, por lo que se requiere hardware adicional. 2.2.4 RSS Su fundamento est basado en la atenuacin que sufre la seal a medida que se aleja de la fuente emisora. Calculando la atenuacin sufrida, se puede calcular la dista ncia al emisor. El principal problema es que la atenuacin es muy variable ya que depende de factores externos (adems de la distancia) como pueden ser paredes, interferencias de otras seales, agentes atmosfricos (lluvia, iones, temperatura, luz solar), reflexi ones, objetos, personas... Aunque este inconveniente puede sugerir que esta tcnica no ser fiable a la hora de determinar una posicin, finalmente ser la opcin elegida ya que es la ms sencilla de implementar y no requiere hardware adicional. Asimismo no requiere clculos ya que es el propio controlador el que calcula la potencia de la seal recibida. En vez de emplear la triangulacin para calcular la posicin, se emplear el fingerprinting o reconocimiento de patrones, ya que de esta manera se minimiza e l error introducido por los factores externos que contribuyen a la volatilidad de la atenuacin. 2.3 Fingerprinting Se basa en el reconocimiento de patrones. Para ello, se parte de un rea en la cua l se quiere ser capaz de determinar la posicin de un receptor. Dicha rea debe recibir s eal de varios APs. La seal de los APs debe cubrir todo el rea y debe recibirse seal en todos los puntos del rea de al menos 3 APs distintos. Mediante la potencia de la seal recibida (RSS) de cada AP en un punto, se puede inferir la posicin. Al conjunto d e

todas las potencias de los APs recibidas en un punto, se le denomina vector de potencias. Consta de dos fases: 2 Algoritmos de localizacin 2.3.1 29 Fase de entrenamiento En esta fase, se debe determinar el rea que se requiere cubrir. A continuacin se fijarn unos puntos en el interior del rea donde se debern realizar mediciones para determinar el vector de potencias recibido en cada punto. Se deben estipular el mnimo nmero de puntos necesarios para que el error cometido entre la posicin calculada y la real sea aceptable. A mayor nmero de puntos, sern mayores las necesidades de almacenamiento, y el uso de memoria y de tiempo de proceso. An as, aunque se dispongan de suficientes recursos, a partir de un determinado nmero de puntos de entrenamiento, aunque se incremente el nmero de puntos, el error no se reduce. Para reducir errores, es recomendable que en cada punto, la medicin del vector de potencias se realice a distintas horas del da y con distinta orientacin del recept or y se calcule la media. Esto es necesario ya que el propio cuerpo humano atena la seal ( ya que opera en la banda de 2,4 GHz, que es justamente la frecuencia de excitacin de la molcula de agua, por lo que al contener el cuerpo humano un 70% de la misma, absorbe la seal y produce una atenuacin), y por esto por lo que se debe el recepto r en varias direcciones en un mismo punto. Adems, se debe realizar a distintas horas d el da, porque los factores externos que influyen en la atenuacin pueden variar su influencia dependiendo de la hora (mayor afluencia de personas, temperatura, mquinas funcionando...). Finalmente, las posiciones y sus vectores de potencia asociados, se almacenarn en una tabla del tipo: X1 Y1 RSSAP1,1 RSSAP2,1 ... RSSApi,1 ... RSSAPm,1 X2 Y2 RSSAP1,2 RSSAP2,2 ... RSSApi,2 ... RSSAPm,2 ... ... ... ... ... ... ... ... Xj Yj RSSAP1,j RSSAP2,j ... RSSApi,j ... RSSAPm,j ... ... ... ... ... ... ... ... Xn Yn RSSAP1,n RSSAP2,n ... RSSApi,n ... RSSAPm,n Tabla 1. Tabla con las posiciones y sus vectores de potencia asociados 2 Algoritmos de localizacin 30 Donde n ser el nmero de puntos que se muestrearn y se almacenarn en la tabla. El nmero total de APs ser m, que aunque no tengan porque ser todos los que existan en el rea, s que es necesario que se almacene la potencia recibida de cada uno de ellos en cada punto. Por tanto, la potencia RSSApi,j denota la potencia recibida del AP i en el punto j. Hay que tener en cuenta que estas mediciones sern vlidas siempre que no cambie la posicin de ninguno de los APs o se introduzcan nuevos objetos u otros agentes que puedan atenuar la seal. 2.3.2 Fase de obtencin de la posicin En esta fase se obtiene la posicin. Para estimar la posicin, es necesaria la matri z de posiciones obtenida en la fase anterior y el vector de potencias de la posicin a calcular. Lo que vara es el algoritmo empleado para realizar la estimacin. Principalmente ha

y dos tipos de algoritmos empleados en el fingerprinting, los algoritmos determini stas y los probabilsticos. Ambos tipos de algoritmos son heursticos, ya que a partir del entrenamiento previo, se encargan de calcular la posicin ms aproximada segn la informacin de entrada y de descartar posiciones para reducir las posibilidades. 2 Algoritmos de localizacin 31 Vector potencias Algoritmo de localizacin Matriz de posiciones (X,Y) Posicin calculada Figura 1. Obtencin de la posicin 2.3.2.1 Algoritmo determinista El principal algoritmo determinista empleado es el KNN (K-Nearest Neighbours), que trata de obtener los K puntos de la matriz de posiciones ms cercanos al vecto r de potencia medido. Una vez obtenidos, se promedian y con ello se obtiene la posicin . El algoritmo se describe a continuacin: Se considera el conjunto de mediciones {F(p1), F(p2),... F(pn)} obtenidas de la matriz de posiciones, siendo F(pj) = (j1, j2, ..., jm) donde jm denota el RSS del AP m en l a posicin pj. Se define r = (r1, r2, ..., rm) como el vector de potencias obtenido en la posic in a determinar. Para cada vector de potencia almacenado en la matriz de posiciones, se calcula s u distancia usando la frmula de la distancia eucldea, siendo m el nmero total de APs: Dist j 1 (r 1 1j ) 2 (r 2 2 ) 2 ...( r m m ) 2 j j m 2 Algoritmos de localizacin 32 Figura 2. Clculo de distancia j Una vez que estn todas las distancias calculadas para todos los vectores de la matriz de posiciones, se seleccionan los K vectores cuya distancia eucldea al vec tor de potencia medido sea menor. Para promediar los vectores recuperados de la matriz de posiciones, se puede usa r la media aritmtica o, preferiblemente, calcular el centro de masas de manera ponderada, tomando como pesos la inversa de la distancia eucldea calculada, para otorgar mayor peso a los vectores de potencia ms cercanos al vector de potencia medido. K p i 1 K i 1 pi Disti

1 Disti Figura 3. Clculo del centro de masas Este mtodo tiene la ventaja de que es muy fcil de implementar y no requiere clculos complejos. Obtiene la posicin desde la primera medicin y no es necesario un perodo de arranque hasta que empiece a proporcionar valores vlidos. El problema que puede surgir es que cuanto mayor sea la matriz de posiciones; tanto por la longitud de los vectores de potencia (que depende de los diferentes APs almacenados), como por el nmero de posiciones almacenadas; mayor ser la complejidad del mtodo. A pesar de la simplicidad de este mtodo, en pruebas ha demostrado que las posiciones calculadas son bastante precisas, con un error tpico de 3 metros. 2 Algoritmos de localizacin 2.3.2.2 33 Algoritmo probabilstico El principal algoritmo probabilstico empleado es el mtodo del kernel. Este mtodo estima la posicin a partir del clculo de la funcin de densidad de las posibles ubicaciones del entorno. Con ste algoritmo se suele conseguir una mejor estimacin de la posicin que con el KNN, aunque es un poco ms compleja la implementacin y la ejecucin. 2.3.2.3 Otros algoritmos Otros algoritmos que se podran emplear podran ser aquellos basados en redes neuronales. Se definiran los tamaos de las capas y los pesos asociados a las difer entes conexiones entre capas y se entrenara la red con varios ejemplos o con la base de datos de posiciones y vectores de potencia asociados. Este algoritmo requerira un mayor trabajo previo para ajustar la red y permitir que se obtengan buenos resultados. 2.4 Mejoras en el algoritmo de localizacin Hay tres formas de mejorar el algoritmo de localizacin. Una sera realizar un preprocesado, otra realizar un postprocesado y la tercera sera emplear informacin recibida de otros sensores. Estas tres maneras de mejorar la precisin del algorit mo pueden ser combinadas entre s aunque hay que tener en cuenta que aumentaran los requisitos de memoria y procesador, por lo que habra que estudiar la conveniencia de emplear cada una. Seguidamente se explicar cada alternativa. 2.4.1 Preprocesado La principal tcnica a emplear en esta etapa sera el filtrado espacial. Esto consis te en eliminar algunas posiciones de la base de datos por ser imposibles o poco pro bables. Por ejemplo, una vez que el algoritmo ha arrancado y se conoce una posicin vlida, cuando haya que conocer la posicin en el siguiente instante de tiempo, lo ms 2 Algoritmos de localizacin 34 probable es que la posicin sea adyacente o cercana, por lo que se podra descartar puntos de la base de datos que estn muy alejados. La ventaja del preprocesado es que si se elige una funcin sencilla que filtre las posiciones, se puede ahorrar tiempo de proceso cuando el algoritmo calcule la po sicin en el siguiente paso, ya que tendr que calcular las distancias de menos puntos. Un inconveniente del preprocesado podra aparecer en el caso de que la funcin que se escoja no contemple ciertos casos y elimine puntos que deberan ser candidatos, por

lo que el algoritmo perdera precisin. 2.4.2 Postprocesado Se puede emplear un postprocesado para corregir la posicin del sistema como consecuencia de errores de medida o de ruido. El postprocesado tambin puede ser ti l para predecir la posicin o posiciones que podra tener el sistema en el prximo paso. 2.4.2.1 Filtrado de Kalman El filtrado de Kalman se encarga de estimar la posicin del sistema mediante un sistema de retroalimentacin. Se compone de dos tipos de ecuaciones. El primer tip o de ecuaciones sirve para predecir la posicin en el siguiente paso. El segundo tipo d e ecuaciones se utiliza para corregir la posicin y adems para ajustar las ecuaciones de prediccin. 2 Algoritmos de localizacin 35 Posicin predicha Posicin predicha Comprobacin Prediccin Posicin calculada Correccin Ajuste Posicin anterior Figura 4. Filtrado de Kalman Entorno de desarrollo 3.1 Introduccin Para implementar la aplicacin, la solucin ms sencilla es la recomendada por Google en su portal para desarrolladores de Android. Google sugiere emplear el entorno de desarrollo Eclipse, con el plugin ADT6 que permitir integrar el SDK7 d e Android para poder utilizarlo en Eclipse. A continuacin se muestran los diferentes pasos que se deben seguir para poner a punto el entorno de desarrollo, que nos permitir una programacin ms eficiente y por tanto obtener resultados rpidamente. 3.2 Eleccin del sistema operativo Google pone a disposicin de los desarrolladores un SDK para tres plataformas: Windows, Mac OS X y Linux. Por carecer de un ordenador equipado con Mac OS X, no se ha podido probar el funcionamiento del SDK y su integracin con el entorno de desarrollo en este siste ma operativo. En cambio, se ha podido configurar satisfactoriamente el mismo tanto en Windows como en Linux. La instalacin en ambos sistemas operativos no difiere significativamente en ningn paso por lo que no se har una distincin entre los mismos, aunque se expondrn la ventajas e inconvenientes de cada uno y la recomendacin sobre cul utilizar. 3.2.1 Windows Se ha empleado como sistema operativo Windows 7 Ultimate en su versin de 64 bits, ya que el ordenador empleado tiene 4 GB de memoria RAM y las versiones de 32 bits slo pueden direccionar hasta 3.3 GB de memoria fsica. 6 Android Development Tools (Herramientas de desarrollo de Android)

7 Software Development Kit (Kit desarrollo software) 3 Entorno de desarrollo 38 Aunque usar una versin tan reciente de Windows para un entorno de desarrollo puede resultar contraproducente al poder aparecer fallos porque el sistema opera tivo an no est maduro, se ha preferido esta opcin por ser el sistema operativo que presumiblemente ms se emplear para desarrollar en un futuro bajo Windows, sobre todo despus de la poca aceptacin que ha tenido Windows Vista en las empresas de desarrollo y el inters de Microsoft por la migracin a Windows 7 desde Windows Vista y Windows XP. Microsoft est realizando un gran esfuerzo por la poca aceptacin que ha tenido Windows Vista entre los desarrolladores, que permanecen anclados a Windows XP por no considerar que Windows Vista aporte un valor aadido que justifique la migracin. La principal ventaja de emplear este sistema operativo, es que es el ms extendido en entornos de usuario y porque muchas de las aplicaciones comerciales no son compatibles con Linux (siempre que no se hable de proyectos como Wine, que ya permiten instalar y ejecutar aplicaciones nativas de Windows, tales como Office en cualquiera de sus versiones mediante la emulacin del API Win32). Algunos de los inconvenientes de utilizar este sistema operativo se describen a continuacin. El pago de licencias de uso (319 de la versin Windows 7 Ultimate que se reducen a 299 en caso de actualizacin desde versiones anteriores). La imposibilidad de ver el cdigo fuente del sistema, por lo las correcciones tendrn q ue venir siempre desde Microsoft adems de no poder colaborar en su solucin, por lo que puede tardar ms de lo debido. A pesar de que puede haber ms inconvenientes, el desarrollo de aplicaciones Android en Windows es posible, aunque en el apartado de consideraciones de rendimiento, se ver si es lo ms conveniente. 3.2.2 Linux Linux se est imponiendo en los ltimos aos como una alternativa plausible a Windows en el entorno de usuario. Cada vez ms aplicaciones comerciales son compatibles con este sistema operativo, y siempre se pueden encontrar alternativ as de calidad a dichas aplicaciones, con lo que el pago de licencias deja de ser un impedimento para el empleo de tecnologas de informacin. Aunque en la actualidad 3 Entorno de desarrollo 39 podemos encontrar muchas distribuciones de Linux, una de las ms extendidas y que ms ha mimado la facilidad de uso es Ubuntu. Como en el caso de Windows, se ha empleado la ltima versin disponible, la 9.10 (distribuida en Octubre de 2009). La instalacin del entorno de desarrollo en este sistema operativo es muy sencilla , adems de que hay mltiples manuales en la red y muchos foros de soporte en el caso de que aparezcan problemas. Utilizar Windows para desarrollar es posible, aunque en el apartado de Linux vs Windows, se ver si es lo ms conveniente. 3.2.3 Linux vs Windows Tras haber instalado y configurado el entorno de desarrollo en ambos sistemas operativos y haber desarrollado en ambos, se extraen varias conclusiones que inc linan la balanza hacia el empleo de Linux. A la hora de configurar el entorno en Linux, se han debido realizar dos pasos adicionales para instalar el SDK de Android y solucionar un bug de Eclipse, por lo que aqu Windows es el ganador aunque estos pasos no son complicados y no llevan mucho tiempo, aparte de que estuvieron documentados en diversas pginas web tan

pronto como los desarrolladores detectaron el problema. Este bug slo est presente en la ltima versin de Ubuntu, la 9.10. En el apartado de funcionalidad, no se ve ninguna diferencia entre un sistema operativo y otro, en ambos se dispone de las mismas herramientas y posibilidades de desarrollo A la hora de obtener soporte, se pueden encontrar foros para ambos sistemas operativos, aunque en el apartado de desarrollo en Android, es independiente el sistema operativo ya que el empleo del lenguaje es el mismo al ser la plataforma final (el sistema operativo Android) comn para ambos sistemas operativos. La principal desventaja de emplear Windows viene a la hora de comparar el rendimiento en ambos sistemas. La ejecucin inicial de Eclipse en Linux es de 10 segundos aproximadamente, aumentando este tiempo a 30 segundos 3 Entorno de desarrollo 40 aproximadamente en Windows. Tras cargar el entorno de desarrollo, se realiza automticamente la carga del SDK de Android. En Linux esta carga apenas toma 5 segundos, en Windows tarda hasta un minuto. Haciendo diferentes pruebas, se pued en atribuir estas diferencias al empleo de antivirus en Windows, aunque con el anti virus desactivado, los tiempos de carga siguen siendo mayores. An as, an en la ejecucin del emulador de Android para probar y detectar fallos en aplicaciones que estn siendo desarrolladas, el rendimiento es mejor en Linux, cuya carga y respuesta s on mejores que en Windows. Como conclusin, se recomienda realizar los desarrollos bajo Linux, ya que aunque la configuracin inicial puede tomar un poco ms de esfuerzo (aunque en ningn caso ms de 5 minutos adicionales y ninguna complicacin tcnica), el rendimiento posterior la compensar con creces, facilitando un entorno de desarrollo ms veloz, eficiente y con mejor sensacin de respuesta para el usuario. 3.3 Instalacin de Java La instalacin de Java en Ubuntu es muy sencilla, puesto que basta con instalar el paquete sun-java6-jdk desde el gestor de paquetes, aunque tambin se puede usar ap t en una consola de comandos. A pesar de que en algunos sitios recomiendan la utilizacin de la versin 5 de Java ya que la 6 puede tener incompatibilidades con la utilizacin del indicador @Overr ide, he podido constatar que se puede trabajar con ambas versiones de manera transparente. SUN ya no ofrece soporte para la versin 5 y se recomienda que se emplee la versin 6. An as, a continuacin se describe el procedimiento para instalar Java 5 en Ubuntu 9.10 por si fuera necesario para el desarrollo. Como en los repositorios de Ubun tu 9.10 ya no est el paquete correspondiente a Java 5, se debern emplear los repositorios de la versin anterior de Ubuntu, la 9.04, para ello debemos editar el fichero source s.list situado en /etc/apt/ ejecutando:

$ sudo gedit /etc/apt/sources.list Se debern aadir las siguientes lneas: 3 Entorno de desarrollo 41 deb http://us.archive.ubuntu.com/ubuntu/ jaunty multiverse deb http://us.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse A continuacin se deber guardar y cerrar el archivo. El siguiente paso es actualiza r la informacin de los repositorios e instalar el paquete necesario, lo cual se rea liza con los siguientes comandos: $ sudo apt-get update $ sudo apt-get install sun-java5-jdk Por ultimo, se deber ejecutar el comando: $ sudo update-alternatives --config java Este comando sirve para indicar al sistema que debe emplear Java 5 por defecto, por lo que al ejecutarlo se debe seleccionar la opcin java-1.5.0-sun 3.4 Instalacin del entorno de desarrollo: Eclipse La instalacin del entorno de desarrollo Eclipse se limita a bajar el fichero zip correspondiente al sistema operativo, descomprimirlo y ejecutarlo. En Ubuntu tam bin se puede emplear el gestor de paquetes, que se encargar de descargar e instalar e l entorno de desarrollo. Tras la primera ejecucin, se pide al desarrollador que esc oja su carpeta de trabajo, que ser el directorio donde se almacenen los diferentes proye ctos que se desarrollen en Eclipse. Con dicha carpeta se deber tener especial cuidado, realizando backups peridicos ya que su prdida supondra la prdida del trabajo realizado. Esta carpeta tambin nos permitir mover proyectos entre diferentes entornos de trabajo siempre que se emplee como entorno de desarrollo Eclipse. En Ubuntu 9.10, hay un bug que produce que no se detecten correctamente las pulsaciones en los botones de la aplicacin, por lo que habr que emplear un script sencillo para lanzar la aplicacin y as no sufrir el molesto bug (en versiones ante riores de Ubuntu no se produce este bug). El script es el siguiente: #!/bin/sh 3 Entorno de desarrollo 42 export GDK_NATIVE_WINDOWS=1 /RUTA_DONDE_ESTA_INSTALADO_ECLIPSE/eclipse 3.5 Instalacin del Android SDK Para instalar el SDK de Android, se debe obtener de la direccin http://developer.android.com/sdk/ la versin correspondiente a Linux en este caso. Se deber bajar el .zip y descomprimir. Tras esto, se debe entrar en la carpeta de l sdk y

acceder al directorio tools, ejecutando el archivo android (tambin se puede hacer por ventana de comandos). Figura 5. Gestor del SDK de Android Tras la ejecucin, se abrir el gestor del SDK de Android, que permite: Descargar diferentes versiones del SDK (1.1, 1.5, 1.6, 2.0, 2.0.1, 2.1 ...) Actualizar las herramientas a la ltima versin disponible. Bajar las Google APIs, que permiten el uso de interfaces para utilizar funcionalidad de aplicaciones de Google como Maps, Gmail, etc. 3 Entorno de desarrollo 43 Asegurarse de que se dispone de la ltima versin de la documentacin. Obtener el driver USB para conectar el dispositivo y permitir opciones avanzadas de depuracin. 3.6 Instalacin del plugin en el entorno de desarrollo: Eclipse Se debe integrar el SDK de Android en Eclipse, para permitir que se aadan las siguientes funcionalidades: Creacin proyectos Android. Acceso a la documentacin de las funciones mientras se programa. Utilizacin del autocompletado. Compilacin. Empleo del emulador. Debug en tiempo de ejecucin. Creacin de apks, dichos ficheros son los que sirven para instalar la aplicacin desarrollada en diferentes dispositivos que empleen Android como sistema operativo. Para instalar el plugin, se deber ejecutar Eclipse, a continuacin pulsar en el men Help y en la opcin Install new software. Seguidamente se debe pulsar en Add, asig nar un nombre (cualquiera es vlido) y aadir la direccin de descarga del plugin: https://dl-ssl.google.com/android/eclipse/ tras lo cual se debe pulsar en OK. Si todo ha ido correctamente, deber aparecer una ventana parecida a esta: 3 Entorno de desarrollo 44 Figura 6. Instalacin del plugin de Android en Eclipse Se deben seleccionar ambos paquetes, y pulsar en next. Eclipse se encargar de revisar las dependencias e instalar paquetes adicionales en caso necesario (lo ms probable es que s). Para comenzar la descarga habr que pulsar en finish. La descar ga puede tardar un rato pero cuando finalice habr que reiniciar Eclipse para que int egre los nuevos paquetes descargados. Tras reiniciar Eclipse, se debe indicar al plugin la ruta de instalacin de la car peta que contiene el SDK de Android. Para ello se debe seleccionar en el men Window la opcin Preferences y se deber abrir una ventana como esta: 3 Entorno de desarrollo 45 Figura 7. Configuracin del plugin de Android en Eclipse En SDK location habr que pegar la ruta del SDK o pulsar el botn browse para localizar la carpeta. Se debe pulsar en Apply. Si la ruta es correcta, el plugin detectar las versiones del SDK y de las Google APIs que hayamos descargado. Se debe pulsa r entonces en OK. Habr aparecido en el men Window una nueva opcin llamada Android SDK and AVD Manager que permitir gestionar los emuladores, la actualizacin del SDK, etc. E s

similar al gestor del SDK mencionado anteriormente. 3.7 Emulador de Android 3.7.1 Creacin dispositivo virtual Para probar las aplicaciones a medida que se desarrollan y poder emplear el debugger en Eclipse, se debe crear un dispositivo virtual. Para ello se debe acc eder, en Eclipse, al llamada Android SDK and AVD Manager y seleccionar la opcin Virtual 3 Entorno de desarrollo 46 Devices. A continuacin se debe pulsar en el botn New. Se deber abrir una ventana como la mostrada a continuacin. Figura 8. Opciones de creacin de un dispositivo virtual En esta ventana se deber asignar un nombre al dispositivo virtual, teniendo cuidado porque hay caracteres que no se pueden emplear (tampoco se permite usar espacios), an as se mostrar una advertencia en caso de que se asignen caracteres prohibidos. En target se debe seleccionar la versin de Android que se quiere utilizar. Las opciones a elegir dependern de los SDKs que se hayan descargado. 3 Entorno de desarrollo 47 En SD Card, se puede crear una memoria externa virtual del tamao que se especifique. Este archivo, si queremos ver o modificar su contenido sin emplear el emulador , puede ser montado en Linux como una imagen iso. Para el resto de opciones es recomendable no cambiar nada. Tras ajustar las opciones, se debe pulsar en Create AVD. Al cabo de unos segundos, debe aparecer el siguiente mensaje informando de que el proceso de creacin del dispositivo virtual ha finalizado correctamente. Figura 9. Confirmacin en la creacin del dispositivo virtual Una vez pulsado el botn de Ok, volveremos al gestor de dispositivos virtuales, qu e mostrar el nuevo dispositivo creado. Figura 10. Administrador de dispositivos virtuales 3 Entorno de desarrollo 3.7.2 48 Ejecucin del dispositivo virtual Para ejecutar el emulador, se deber acceder al administrador de dispositivos virtuales, seleccionar el dispositivo a emular y pulsar en Start. Se preparar el emulador y se abrir una nueva ventana como la que se ensea. Figura 11. Dispositivo virtual cargando Android El emulador mostrar los botones, el teclado y la pantalla del dispositivo virtual y proceder con la carga del sistema operativo. La carga puede tardar entre unos segundos y varios minutos, dependiendo de la mquina donde se ejecute el emulador, aunque hay que decir que el uso de CPU se disparar al 100% durante la carga. La memoria usada por el emulador no suele superar los 150 MB de RAM. 3 Entorno de desarrollo 49 Figura 12. Dispositivo virtual bloqueado Tras cargar el sistema operativo, debera aparecer en la pantalla del emulador el mensaje de Pantalla bloqueada, por lo que se deber pulsar el botn de men para desbloquearla y poder acceder al escritorio y a las diferentes aplicaciones del emulador. Figura 13. Escritorio del dispositivo virtual 3 Entorno de desarrollo

50 Para poder poner la pantalla en modo panormico, se deber pulsar la combinacin CTRL + F11 en el teclado del ordenador. Figura 14. Dispositivo virtual en modo panormico 3.7.3 Observaciones sobre el emulador El emulador de Android es muy completo, tiene algunas caractersticas avanzadas que en combinacin con Eclipse permite emular llamadas de telfono, posiciones GPS... Pero en el caso de este proyecto, no ha sido de mucha utilidad ya que no permite emular Wifi. Otros problemas que se encuentran en el emulador son su eficiencia y la memoria disponible. Se ha podido observar que las aplicaciones se ejecutan mucho ms despa cio en el emulador, adems de dar problemas de Stack Overflow en la pila de Java a la hora de realizar tratamiento de ficheros, al usar mucha memoria o al generar muc hos objetos temporales. El Garbage Collector en este caso acaba consumiendo mucho tiempo de ejecucin, ralentizando el proceso. Si se prueba la misma aplicacin en un 3 Entorno de desarrollo 51 dispositivo real, estos problemas no aparecen, por lo que parece que es el emula dor el que introduce estas limitaciones. Estas limitaciones pueden tener sentido en el caso de que el objetivo sea que si una aplicacin funciona correctamente en el emulador, debera funcionar sin problemas en cualquier dispositivo. La realidad es que el emulador se queda bastante corto con dicha limitacin de la memoria adems de que la emulacin es muy lenta (aunque se ha ejecutado en mquinas de todo tipo, incluso en las ms potentes la emulacin no acaba de ser fluida). 3.8 Consideraciones para el desarrollo en Ubuntu 64 bits Si la versin de Ubuntu a emplear es de 64 bits, los pasos a seguir son los mismos , excepto que ser necesario instalar previamente el paquete ia32-libs. Esto es as ya que tanto Eclipse, como Java, como el SDK estn compilados en 32 bits y se debe aadir l a compatibilidad para aplicaciones de 32 bits instalando estas libreras. Figura 15. Instalacin ia32-libs

Вам также может понравиться