• No se han encontrado resultados

Aplicación móvil para la detección del uso del teléfono celular al conducir un vehículo

N/A
N/A
Protected

Academic year: 2020

Share "Aplicación móvil para la detección del uso del teléfono celular al conducir un vehículo"

Copied!
62
0
0

Texto completo

(1)

(2) Instituto Tecnológico y de Estudios Superiores de Monterrey CAMPUS CIUDAD DE MÉXICO. ESCUELA DE DISEÑO, INGENIERÍA Y ARQUITECTURA. TESIS. Aplicación Móvil Para la Detección del Uso del Teléfono Celular al Conducir un Vehículo. Para la Obtención del Grado de. Maestro en Ciencias de la Ingeniería. AUTOR. ,: TcCNOLÓGK:O DE MONTEí{REY. Ingeniero Juan Angel Acosta Meza Asesor: Dr. Pedro Ponce Cruz. Biblioteca ("-"lrfflM,,S. México, D.F.. Ciudad de u.Jco. Noviembre 2013. l.

(3) Tabla de Contenidos 1 Introducción ..................................................................................................... 5 1.1 Antecedentes ............................................................................................................................................ 5 1.2 Problemática ............................................................................................................................................ 6 1.3 Justificación .............................................................................................................................................. 7 1.4 Objetivos .................................................................................................................................................... 7 1.5 Alcances ...................................................................................................................................................... 7 1.6 Metodología .............................................................................................................................................. 8 2 Estado del Arte ................................................................................................. 9 2.1 Artículos y Publicaciones .................................................................................................................... 9 2.2 Patentes .................................................................................................................................................... 11 2.3 Aplicaciones ............................................................................................................................................ 13 3 Marco Teórico ................................................................................................ 14 3.1 Arquitectura de Android ................................................................................................................... 14 3.2 Proyecto en Android ........................................................................................................................... 15 3.3 Componentes de una Aplicación ................................................................................................... 16 3.3.1 Vista ....................................................................................................................................................... 16 3.3.2 Layout ................................................................................................................................................... 16 3.3.3 Actividad.............................................................................................................................................. 16 3.3.4 Servicio ................................................................................................................................................. 18 3.3.5 lntención .............................................................................................................................................. 18 3.3.6 Receptor de Anuncios ..................................................................................................................... 19 3.4 Uso de Hardware y Sensores........................................................................................................... 20 3.4.1 Acelerómetro en Android ............................................................................................................. 20 3.4.2 Sistema de Posicionamiento Global (GPSJ ............................................................................ 22 3.5 Redes Neuronales Artificiales ......................................................................................................... 23 3.5.1 Definición............................................................................................................................................. 23 3.5.2 Funciones de Activación ................................................................................................................ 24 3.5.3 Topologías de las redes neuronales artificiales.................................................................. 27 3.5.4 Entrenamiento de las redes neuronales artificiales ......................................................... 27 4 Desarrollo ....................................................................................................... 32 4.1 Algoritmo de la Aplicación ............................................................................................................... 33 4.2 Detección de Comportamiento Inusual al Utilizar el Teléfono......................................... 34 4.2.1 Entrenamiento de la Red Neuronal Artificial...................................................................... 37 4.2.2 Implementación de la red neuronal artificial en el teléfono celular ......................... 44 4.3 Obtener Valor de Velocidad ............................................................................................................. 4 7 4.4 Almacenamiento de los resultados............................................................................................... 4 7 5. Resultados .... .................................................................................................. 49. 6. Conclusiones .................................................. ............................ ... ....... 7. Referencias Consultadas y Bibliografía ........................................................... 59. «. .. . .... .. .. 58. 2.

(4) Índice de Imágenes. Imagen 1. Sistema de coordenadas en orientación por default del teléfono. Tomado de [31) ....................................................................................................................... 21 Imagen 2. Función de activación escalón .............................................................................. 24 Imagen 3. Función lineal de activación .................................................................................. 25 Imagen 4. Función de activación lineal mixta ...................................................................... 25 Imagen S. Función de activación tangente hiperbólica ................................................... 26 Imagen 6. Función sigmoidal de acivación ........................................................................... 26 Imagen 8. Diagrama de la red neuronal artificial implementada............................... 41 Imagen 9. Datos utilizados para entrenar la red neuronal artificial- ........................ 42 Imagen 10. Datos y configuración para el entrenamiento de la red neuronal artificial ...................................................................................................................................... 42 Imagen 11. Parámetros de entrenamiento de la red neuronal artificial. ................ 43 Imagen 12.Desempeño de la red neuronal artificial......................................................... 43 Imagen 13. Estructura de la red neuronal artificial.. ........................................................ 44 Imagen 14. Estructura de la capa oculta de la red neuronal artificial. ..................... 45 Imagen 15. Función logsig(x) ..................................................................................................... 45 Imagen 16. Estructura de la capa de salida .......................................................................... 46 Imagen 17. Estructura archivo .php que recibe el Post y escribe en la base de datos ............................................................................................................................................ 48 Imagen 18. Valores de aceleración de los cuatro grupos............................................... SO Imagen 19. Diferencias de los grupos 11, III y IV con respecto al grupo l. .............. 50 Imagen 20. Diferencias de los grupos 1, III y IV con respecto al grupo 11 ................. 51 Imagen 21. Diferencias de los grupos 1, 11 y IV con respecto al grupo III ................. 51 Imagen 22. Diferencias de los grupos 1, 11 y III respecto al grupo IV......................... 52 Imagen 23. Comparación de aceleraciones manejando y no manejando ................ 53 Imagen 24. Resultados de los aciertos positivos del sistema, visualizados en la red ................................................................................................................................................. 55 Imagen 25. Interfaz de usuario de la aplicación ................................................................. 56 Imagen 26. Pantalla con la notificación de haber iniciado el servicio ...................... 56 Imagen 27. Pantalla con la notificación de haber terminado el servicio ................. 57. 3.

(5) Índice de Tablas Tabla 1 Descripción de los sensores disponibles en Android ...................................... 20 Tabla 2. Tasa de actualización de valores de acelerómetro ......................................... 21 Tabla 3. Métodos de la interfaz LocationListener............................................................... 22 Tabla 4. Sensores disponibles en el equipo utilizado ....................................................... 32 Tabla S. Aplicaciones para monitorear si se encuentran abiertas .............................. 35 Tabla 6. Grupos de la red neuronal artificial........................................................................ 37 Tabla 7. Valores de aceleración en X para los diferentes grupos ................................ 38 Tabla 8. Valores de aceleración en Y para los diferentes grupos................................ 39 Tabla 9. Valores de aceleración en Z para los diferentes grupos................................ 40 Tabla 10. Forma de los datos de entrada y salida objetivo par el entrenamiento de la red neuronal artificial. .............................................................................................. 41 Tabla 11. Aciertos de la red neuronal artificial entrenada ............................................ 49 Tabla 12. Acierto de red neuronal artificial para clasificar dentro de 4 grupos... 49 Tabla 13. Aciertos de la red neuronal artificial con solo dos grupos . ....................... 53 Tabla 14. Resultados del sistema completo ......................................................................... 54. 4.

(6) 1 Introducción El manejar un vehículo es una tarea que requiere de total atención por parte del conductor, tarea que demanda un nivel cognitivo alto. Principalmente requiere de la atención visual y de atención cognitiva por parte del conductor. Por lo anterior, cualquier otra tarea que requiera de la atención del conductor, tanto visual como cognitiva, debe ser evitada en todo momento mientras se maneja. Sin embargo, con los adelantos tecnológicos de hoy, la facilidad de conseguir un teléfono inteligente y la necesidad de estar conectados en todo momento se ha provocado un uso equivocado de los teléfonos inteligentes cuando se maneja un vehículo. En julio 2010, la BBC de Londres estimó que en el mundo existen alrededor de 5 billones de conexiones móviles a través de teléfonos celulares [24]. Dada la cifra anterior se entiende por qué ahora es común encontrar que el conductor del vehículo junto al nuestro está utilizando el teléfono mientras maneja o que el conductor frente a nosotros realiza aceleraciones repentinas o no se mantiene dentro de un carril. La respuesta es sencilla, el conductor está escribiendo mensajes en el teléfono mientras maneja. Con esta tesis, se pretende desarrollar una aplicación para teléfonos celulares que permita identificar cuando el usuario está manejando e intenta utilizar el celular para evitar que pueda usarlo.. 1.1 Antecedentes Escribir mensajes de texto es una tarea que demanda un nivel cognitivo alto. En promedio se deja de poner atención al camino durante 5 segundos cuando se escribe texto mientras se conduce un vehículo. Si se conduce a una velocidad de 90 kilómetros por hora se pueden recorrer 125 metros sin ver ni poner atención al camino. Lo anterior representa recorrer una distancia igual de larga que la longitud de un campo de futbol a ciegas [23]. Cuando se escribe y maneja se incrementa en 23 veces la posibilidad de sufrir un accidente, 2.8 veces cuando se marca un número, 1.3 veces al hablar o escuchar una conversación y 1.4 veces al intentar alcanzar el teléfono[23]. La Administración Nacional de la Seguridad en el Tránsito de Autopistas de Estados Unidos o NHTSA, por sus siglas en inglés, reveló que escribir mensajes de texto, explorar en la red y marcar números, son las actividades que más provocan que el conductor quite la vista del camino. No encontró relación directa al hablar por teléfono con accidentes, pero sí al hecho de buscar, alcanzar el teléfono, buscar un contacto y enlazar la llamada [25]. Según la NHTSA, en cualquier momento del día en Estados Unidos existen 660,000 conductores utilizando el teléfono celular o manipulando cualquier aparato electrónico mientras conducen [26].. 5.

(7) En una simulación controlada llevada a cabo por la Universidad de Utah, se encontró que el tiempo de reacción de un conductor mientras escribe un mensaje es más lento que el de un conductor con un nivel de alcohol en sangre de 0.08 el límite en Estados Unidos. Por lo tanto, es comparable a manejar en estado de ebriedad[28]. Escribir mensajes de texto mientras se maneja aumenta seis veces las probabilidades de accidente que cuando se maneja en estado de ebriedad [22]. El consejo nacional de seguridad de Estados Unidos, con información del NHTSA, estima que el 23% de los accidentes de tránsito se deben al uso del teléfono celular. Un estimado de 1.2 millones de accidentes anuales son a causa de hablar por teléfono, mientras que 100,000 accidentes son por mandar mensajes de texto [29]. En estados unidos 11 jóvenes mueren a diario en accidentes relacionados con el uso del teléfono celular. En Estados Unidos la ley prohíbe a los conductores utilizar teléfonos celulares en 10 estados más el Distrito Capital. Así mismo prohíbe que los conductores novatos utilicen el teléfono celular en 31 estados más el Distrito Capital y prohíbe el envío y recepción de mensajes de texto en 39 estados más el Distrito Capital[22] . Lo anterior provoca que los usuarios coloquen el teléfono entre las piernas para poder ocuparlo y que no sea visible a través de la ventana del vehículo, desviando por más tiempo la atención del camino. En el reglamento de tránsito metropolitano de la ciudad de México, se establece en el artículo 6 fracción XI que está prohibido sujetar aparatos de telecomunicación u otros objetos que representen un distractor para la conducción segura del vehículo. El incumplir con esta indicación representa una multa de 5 días de salario mínimo sin remisión del vehículo al depósito vehicular.[27]. 1.2. Problemática. El uso de los teléfonos celulares, especialmente para escribir o recibir mensajes de texto, mientras se conduce un vehículo representa un peligro inminente para la seguridad de quien conduce y de los demás transeúntes. Las aplicaciones existentes en el mercado requieren que el usuario las inicie y permiten que el usuario las desactive en el momento deseado lo que impide garantizar su funcionamiento correcto en todo momento.. 6.

(8) 1.3 Justificación Con el desarrollo de esta aplicación se pretende tener una forma rápida y eficiente de saber si el conductor de un vehículo intenta conducir mientras ocupa el celular. La intención principal es poder contribuir a la disminución de accidentes de tránsito, lesiones y muertes por el uso del celular al manejar. Se considera necesario el desarrollo y uso de esta aplicación dado al incremento en accidentes de tránsito debido al uso de teléfonos y al incremento en el riesgo de sufrir un accidente por distraerse con el teléfono.. 1.4 Objetivos. Objetivo General Desarrollar una aplicación móvil para plataforma Android que sea capaz de detectar cuando el usuario, del móvil, se encuentra conduciendo un vehículo e intenta utilizar el celular. Lo anterior con la finalidad de disminuir el número de accidentes viales ocasionados debido al hecho de escribir texto mientras se conduce el vehículo.. Objetivos Específicos 1. Recopilar información de los acelerómetros del teléfono. 2. Implementar una red neuronal artificial capaz de identificar si la información recopilada por los acelerómetros corresponde a la del conductor utilizando el teléfono. 3. Determinar la velocidad del teléfono una vez que la red neuronal artificial ha determinado que la información recopilada pertenece a la información correspondiente del conductor utilizando el teléfono. 4. Si la velocidad del teléfono rebasa la de un umbral establecido, apagar la pantalla sólo en las aplicaciones especificadas. Debe permitir utilizar el teléfono para hacer y recibir llamadas. S. Si la aplicación es utilizada correctamente, la reducción de accidentes de tránsito, debido al envío de mensajes escritos mientras se conduce, se verá reducida.. 1.5 Alcances La aplicación desarrollada tendrá la capacidad de detectar cuando el usuario conduce un vehículo e intenta escribir mensajes en el teléfono celular. La aplicación correrá como un servicio en segundo plano y no deberá ser manipulada por el usuario. El usuario no debe poder activar ni desactivar la aplicación a voluntad. La aplicación debe permitir que el usuario utilice el teléfono de manera normal cuando éste es un copiloto. El desarrollo de esta aplicación no contempla las intenciones ni la responsabilidad del usuario al conducir un vehículo. El conductor es responsable de la conducción que lleve a cabo y en ningún momento puede esperar que la 7.

(9) aplicación sea completamente responsable de impedir que utilice el teléfono mientras conduce.. 1.6. Metodología. El funcionamiento de esta aplicación será identificar cómo cambia la interacción con el teléfono al conducir y no cómo se ve afectada la conducción por el uso del teléfono. Cuando el teléfono detecta que, debido a la combinación de distintos factores al conducir y ocupar el teléfono, la interacción del usuario con el mismo no es la habitual debe evitar que el usuario sea capaz de ocupar el teléfono.. Determinar si la interacción del usuario con el teléfono es deficiente l. Obtener valores de aceleración del teléfono en sus tres ejes cuando una aplicación que requiere comunicación escrita esté en lo más alto de la pila de actividades. 2. Introducir esta información a una red neuronal artificial, previamente entrenada, para que determine si la información del acelerómetro corresponde a la de un conductor utilizando el teléfono.. Determinar la velocidad del teléfono l. Utilizar el GPS integrado del teléfono para determinar la velocidad, una vez que la red neuronal artificial ha confirmado el uso del teléfono. 2. Si la velocidad del teléfono no rebasa la de un umbral establecido, se debe considerar como un falso positivo y permitir el uso total del teléfono.. Inhabilitar el teléfono para escribir mensajes l. Si la red neuronal artificial indica que el conductor utiliza el teléfono y la velocidad rebasa el umbral establecido, se debe impedir que el usuario utilice el teléfono para escribir. Se propone apagar la pantalla. 2. La aplicación debe permitir el uso total del teléfono en cualquier otra situación.. 8.

(10) 2 Estado del Arte Para evitar el uso del teléfono celular mientras se maneja un vehículo, se han implementado diferentes soluciones. Estas soluciones utilizan hardware específico o combinación de software de teléfonos móviles combinados con los dispositivos de hardware de los mismos. 2.1 Artículos y Publicaciones. En [1] se propone una aplicación para teléfonos móviles basados en el sistema operativo Android, que pretende impedir que las llamadas entrantes sean atendidas mientras se maneja un vehículo. Para lograrlo, la aplicación propone los siguientes pasos: l. Medición de la velocidad del vehículo utilizando el GPS del teléfono celular. 2. Comparar la velocidad medida con un umbral establecido. 3. Si la velocidad medida rebasa el umbral y se recibe una llamada, el teléfono envía un mensaje de texto a la persona que llama en donde indica que está conduciendo y que le marque en un tiempo determinado. El tiempo determinado es la diferencia entre el tiempo que lleva conduciendo y la duración estimada del trayecto que fijó el usuario al iniciar la aplicación. 4. Si la llamada entrante es una llamada de emergencia, se reciben tres llamadas del mismo número en un intervalo menor a cinco minutos, el teléfono suena y permite que el conductor lo atienda.. Una de las desventajas de esta aplicación es que tiene que ser activada por el usuario al momento de comenzar la conducción. La aplicación impide que el conductor pueda utilizar el teléfono para realizar llamadas o enviar mensajes de texto, si y solo si, el conductor inició la aplicación. En [2] se propone el poder escuchar los mensajes de texto que se reciben y poder dictar al teléfono para que envíe mensajes de texto. Lo anterior se logra utilizando el reconocimiento automático del habla o (ASR), por sus siglas en inglés, de Google en un teléfono basado en un sistema Android. El teléfono responde a palabras clave para la respuesta en mensaje y no escribe todo lo que el usuario le dicta. Como desventajas se encuentran que esta aplicación no es capaz de bloquear llamadas entrantes ni evita que se realicen llamadas. La respuesta del mensaje se ve limitada a aquellas frases que hayan sido relacionadas con palabras clave previamente por el usuario. Esta tecnología ya se encuentra presente en los teléfonos de Apple con Siri y en los teléfonos basados en Android a través del ASR de Google. En [3] se propone una aplicación para los teléfonos basados en sistema Android que colecte la información de los acelerómetros del teléfono en los tres ejes, x ,y,. 9.

(11) z. La intención de medir esta información es poder detectar cambios en la conducción como lo son: l. El cambio de carril (suave o abrupto). 2. Aceleración y desaceleración (suave o abrupto) 3. Fallas en el sistema de cambios en la transmisión 4. Identificación de irregularidades en el camino (baches y topes) Lo anterior se realiza con la intención de advertir al conductor sobre posibles tendencias en el manejo que pueden afectar el rendimiento de combustible y la vida del vehículo. Con la identificación de las irregularidades en el camino y la ayuda de Google Maps se logra tener ubicados a éstos dentro de un mapa para informar a los demás usuarios la ubicación de los mismos. La velocidad del vehículo es calculada al integrar, con el método trapezoidal, la aceleración medida. El error entre la velocidad calculada por este método y la medida con el velocímetro del vehículo es menor al 1%. Al utilizar este método se logra un ahorro de energía considerable que si se midiera la velocidad del vehículo utilizando el GPS. En [4] se propone el uso de los acelerómetros en los tres ejes x, y, z para detectar patrones de manejo como el cambio de carril o aceleración y desaceleración que posteriormente son comparados con información, previamente cargada, de estos patrones en modo de conducción normal y cuando se conduce en estado de ebriedad . Si la aplicación detecta que el conductor se encuentra en estado de ebriedad emite una recomendación para que deje de conducir y si no se atiende la recomendación, se advierte a la policía. La ventaja de la aplicación es que corre en el fondo en todo momento como un servicio en Android y colecta e interpreta la lectura de los sensores. El consumo de batería con la aplicación encendida en el fondo y sin ella solo muestra una diferencia del 20% después de 7 horas. En [4] se propone el uso de la cámara del teléfono para poder monitorear al camino. Sin embargo, lo plantea como una solución que requiere de un alto consumo de recursos como lo son, la memoria y la batería. En [5] se propone medir ¿ Cómo afecta la manera en que se teclea y escribe mensajes mientras se maneja? Y no ¿Cómo se afecta la conducción al mandar mensajes? Identifica la acción de escribir y mandar mensajes como una actividad con demanda cognitiva de alto nivel. Por lo tanto, demuestra que cuando se maneja y se escribe un mensaje al mismo tiempo, la escritura del mensaje cambia. Se observó que la escritura de mensajes de texto se realiza: l. Utilizando ambas manos cuando escribir el mensaje es la única. actividad llevada a cabo. 2. Utilizar ambas manos con el teléfono sobre el volante cuando se conduce. 3. Escribir el mensaje con una sola mano cuando se conduce un vehículo.. 10.

(12) 4. Utilizar ambas manos para redactar el mensaje y corregir el curso del volante de manera intermitente mientras se conduce. Se midió la velocidad de tecleado cuando solo se escribe un mensaje de texto y cuando, en un simulador, se escribe un mensaje y se conduce el vehículo. La velocidad de escritura fue menor al conducir y escribir que solo al escribir. Así mismo, se propone la medición de la entropía de conducción medida por los aciertos al teclear palabras. Se encontró que esta entropía se mantiene baja cuando se escribe un mensaje solamente, sin embargo la entropía aumenta cuando se escribe un mensaje y se conduce un vehículo. Se propone utilizar, como trabajo a futuro, el valor de esta entropía comparado con un umbral y la velocidad medida por GPS comparada con un umbral para determinar si se pretende escribir un mensaje de texto mientras se conduce o si se pretende escribir el mensaje siendo pasajero. Esta aplicación no evita que se lean los mensajes de texto recibidos mientras se conduce.. 2.2. Patentes. En [6], patentado en Estados Unidos, "Método Automático para Cambiar el Perfil del Teléfono Celular" se utiliza un método que compara el sonido ambiental medido con valor de ruido predeterminados. Esto permite que el usuario sea capaz de realizar llamadas o utilizar el teléfono cuando existen señales de ruido elevadas, como lo son, el tráfico o en semáforos en rojo. Una desventaja es que el usuario tiene que activar la aplicación para que pueda funcionar, no corre en el fondo. El nivel de ruido puede manipularse fácilmente, utilizando el radío del automóvil, por ejemplo. La patente en Japón JP 10 233836, llamada "Sistema Telefónico Portátil en Vehículos" envía las llamadas entrantes al buzón de voz, sí es que se ha rebasado un umbral predefinido de velocidad. La patente Japonesa JA 1 O 013502, llamada "Kit Telefónico Portátil Para uso en Vehículos" bloquea por medio de una computadora instalada en el vehículo, todas la señales inalámbricas dentro del vehículo, cuando se ha rebasado un umbral de velocidad predeterminado. En [7] "Método Para Mitigar la Distracción del Conductor" patentada en Estados Unidos de América por Delphi Technologíes, consiste en monitorear la actividad ocular del conductor por medio de una cámara ubicada en el parabrisas del vehículo. Patente publicada el 26 de Noviembre del 2010. El 27 de Abril del 2011, en [8], se propone monitorear la actividad ocular del conductor y medir así el nivel de atención en el camino. En caso de que la atención al camino no sea la adecuada, el conductor es notificado para corregirlo.. 11.

(13) Patente realizada en Estados Unidos de América, por la Corporación de Tecnología de Volvo.. En [9] patente 'registrada en Estados Unidos de América el 23 de Octubre de 2012, se propone registrar un teléfono maestro dentro del vehículo y los demás vehículos presentes como esclavos de éste. Cuando la velocidad medida por el teléfono maestro rebasa un umbral predefinido, el teléfono maestro no puede ser utilizado, pero sí permite que los esclavos se utilicen. Esto permite que los pasajeros del vehículo o del transporte escolar, como se propone en esta patente, puedan utilizar el teléfono cuando el vehículo esté en movimiento e impide que el conductor lo haga. Sin embargo, es manipulable, ya que el conductor podría contar con dos teléfonos y registrar como maestro un teléfono que no ocupe y como esclavo el que sí utiliza. En [10], patente registrada en Estados Unidos de América el 14 de Mayo de 2013, se propone identificar si alguna señal inalámbrica está entrando o saliendo del vehículo en movimiento. Si es así, está información se transmite por medio de la red a un centro de manejo de la información que permite determinar si está conducta afecta la conducción y notifica al conductor y a las autoridades. Sin embargo, es meramente para notificar más no para impedir el uso del teléfono por completo. En [11], patente registrada en Estados Unidos de América el 23 de abril del 2013, se propone una aplicación móvil capaz de detectar cuando la velocidad del vehículo ha rebasado un umbral establecido de velocidad y bloquea las aplicaciones del móvil capaces de enviar o recibir datos o llamadas telefónicas. En [12], patente registrada en Estados Unidos de América el 19 de Marzo de 2013 se propone deshabilitar las funciones de mensajes de texto cuando el teléfono celular entra al vehículo por la puerta del conductor. Una vez que el teléfono celular sale del vehículo por la puerta del conductor, las funciones de mensajes de texto se restablecen. Requiere de instalación de hardware en la puerta del conductor y el teléfono puede ser ingresado al vehículo de manera arbitraria por la ventana del pasajero trasera.. 12.

(14) 2.3. Aplicaciones. En [13] se ofrece una aplicación móvil para teléfonos celulares basados en tecnología Android, capaz de leer mensajes de texto recibidos y responderlos por medio de voz. El funcionamiento es muy similar al propuesto por [2] con la diferencia que esta aplicación permite responder cualquier con cualquier oración y no solo con respuestas predeterminadas. La aplicación es gratuita pero se requiere de una cuenta en My Handcent Online para poder utilizarla. El orden de descargas de la aplicación es entre los 10 millones y 50 millones. La aplicación no evita que el usuario responda de manera habitual a un mensaje de texto ni que lo lea directamente, lo que propicia perder la atención en el camino. Los permisos requeridos por esta aplicación son: 1. 2. 3. 4. S. 6. 7.. Recibir y enviar mensajes de texto y multimedia. Leer y editar mensajes de texto y multimedia. Acceso completo a la red Leer el estado del teléfono e identidad del mismo. Modificar la información contenida en la tarjeta SIM. Leer y modificar los contactos. Leer y escribir el estado de la llamada. No solicita información del teclado, de GPS ni de la cámara. Safe Orive Enforce [14], permite enviar respuestas predeterminadas por mensaje de texto cuando el umbral de velocidad predeterminado ha sido rebasado. Es una aplicación gratuita con descargas entre 500 y 1000. Solicita los mismos permisos que [13], pero agrega el permiso de utilizar GPS. Así mismo, no solicita permisos para leer el teclado, ni la cámara.. Texting While Driving [15] es una aplicación que previo a empezar la conducción, debe ser activada por el usuario, éste debe ingresar el tiempo estimado de viaje como en O. Durante este tiempo se desactivan las notificaciones, la entrada y salida de mensajes de texto y las llamadas. Si se recibe un mensaje de texto, se envía una auto respuesta notificando que se está conduciendo. Las llamadas entrantes pueden ser contestadas si un dispositivo de manos libres está conectados al teléfono. La aplicación es gratuita y tiene descargas en el orden de 10,000 a 50,000. Los permisos requeridos por esta aplicación son los mismos que en [14].. 13.

(15) 3 3.1. Marco Teórico Arquitectura de Android. Android es una plataforma de desarrollo libre basada en Linux y de código abierto. Asegura la portabilidad de aplicaciones ya que éstas están desarrolladas en Java por lo que pueden ser ejecutadas en una gran cantidad de dispositivos. Esto se consigue gracias al concepto de máquina virtual, Dalvik, implementación de Google de la máquina virtual de Java para dispositivos móviles. El diseño de la interfaz de usuario se hace en XML, lo que permite que la misma aplicación pueda correr en un teléfono o en una Tablet de igual forma. Incorpora una gran cantidad de servicios y acepta diferentes niveles de seguridad. Las aplicaciones están aisladas entre ellas y es necesario que cada una de ellas especifique los permisos que requiere para funcionar [17]. La arquitectura de Android puede dividirse en cinco capas básicas. 1. 2. 3. 4. S.. El núcleo Linux Runtime de Android Librerías nativas Entorno de Aplicación Aplicaciones. El núcleo de Android está formado por el sistema operativo Linux. Esta capa es dependiente del hardware y es la encargada de proporcionar servicios como seguridad, manejo de memoria, multiproceso, la pila de protocolos y el soporte de drivers para dispositivos. El runtime de Android está basado en la máquina virtual Dalvik. Ésta está basad en registros, lo que permite que cada aplicación corra en su propio proces Linux. En el runtime también se encuentran la mayoría de las librerías disponibles en el lenguaje JAVA. En las librerías nativas se incluyen librerías en C/C++. Están compiladas en el código nativo del procesador y muchas de ellas utilizan proyectos de código abierto. El entorno de aplicación es la capa en donde se lleva a cabo la programación de aplicaciones en JAVA. Desde aquí se pueden mandar llamar sensores, GPS, cámara, servicios y demás elementos de Android pero siempre sujetos a las restricciones de seguridad. La capa de aplicaciones es la que contiene las aplicaciones instaladas en Android. Todas las aplicaciones deben ser ejecutadas sobre la máquina virtual Dalvik para garantizar la seguridad del sistema.. 14.

(16) 3.2. Proyecto en Android. Para la creación de una aplicación que corre en Android es necesario crear un proyecto. Un proyecto en Android se compone principalmente de un descriptor de la aplicación que es el AndroidManifest.xml, el código fuente y una serie de recursos con ficheros [17]. Al crear un proyecto se crean varias carpetas que contienen recursos y elementos necesarios para que el proyecto funcione adecuadamente. A continuación se hace una breve descripción de estas carpetas. src: En esta carpeta se encuentra el código fuente de la aplicación en formato java. • gen: Esta carpeta contiene el código generado automáticamente por el SDK. No se deben modificar de manera manual estos ficheros. • R.java: Define una clase que asocia los recursos de la aplicación con identificadores. De esta forma los recursos de la aplicación pueden ser accedidos desde Java. • Android x.x: Código .jar que contiene el API de Android según la versión seleccionada. • assets: Carpeta que puede contener una serie arbitraria de ficheros o carpetas que pueden ser utilizados por la aplicación. No se debe modificar el contenido de los ficheros de esta carpeta. • res: En esta carpeta se encuentran los recursos utilizados por la aplicación. o drawable: Almacena los ficheros de imágenes y descriptores de imágenes. o layout: Contiene ficheros XML con vistas de la aplicación. Las vistas permiten configurar las pantallas que servirán como interfaz de usuario. o menu: Contiene ficheros XML con los menús de la aplicación. o values: Contiene ficheros XML para indicar valores del tipo string, color o estilo. De esta manera se pueden modificar estos valores sin la necesidad de hacerlo desde el código fuente. o anim: Contiene ficheros XML con la descripción de animaciones. o xml: Ficheros XML requeridos por la aplicación. o raw: Ficheros adicionales que no se encuentran en formato XML. o doc: Documentación asociada al proyecto. • AndroidManifest.xml: Describe la aplicación de Android. Tiene indicado las actividades, intenciones, servicios y proveedores de contenido de la aplicación. Los permisos que requiere la aplicación están declarados aquí. • default.properties: Fichero generado automáticamente por el SDK. No debe ser modificado. Es utilizado para comprobar la versión del API y otras características cuando la aplicación es instalada en la terminal.. •. 15.

(17) 3.3. Componentes de una Aplicación. Una aplicación en Android requiere de una serie de elementos para funcionar adecuadamente. A continuación se muestra una descripción de estos elementos. 3.3.1 Vista Una vista es el elemento que compone la interfaz de usuario de una aplicación. Las vistas son objetos descendientes de la clase View y se entienden como botones, entradas de texto, despliegue de imágenes, entre otros. Estas vistas pueden ser configuradas desde el código fuente de la aplicación en código Java, pero lo más recomendable es realizarlo desde el fichero XML del layout y permitir que el sistema cree los objetos. [17] Las vistas constituyen la manera en la que el usuario se comunica con las aplicaciones y a través de ellas entra toda la información a la aplicación y se despliega información al usuario. Dentro de la información que ingresa por medio de estas vistas, se encuentra la información ingresada a través del teclado. Android almacena, con el permiso del usuario, toda la información ingresada por el teclado para reconocer patrones de escritura, palabras más utilizadas, sugerir nombres de usuario e ingresar contraseñas de manera automática en donde sea posible. El manejador de métodos de entrada, Input Manager (/ME), es el encargado de asignar la información que entra por el teclado al cliente activo mediante Input Connection. Lo anterior garantiza que el IME sólo atenderá a la interfaz de usuario activa y visible al usuario en ese momento. Esto evita que aplicaciones que corren en segundo plano, como un servicio, tengan acceso a la información que ingresa por el teclado, como nombres de usuario y contraseña, sin que el usuario este consciente de ello. [16] 3.3.2. Layout. El layout es un conjunto de vistas agrupadas de determinada forma. También son descendientes de la clase View y pueden ser definidas y modificadas en código Java, pero al igual que las vistas se recomienda hacerlo desde el fichero xml. Existen diferentes tipos de layout para organizar las vistas de manera lineal, en cuadrícula, en posición relativa o absoluta, en listas o en tablas.(17] 3.3.3. Actividad. Cada una de las pantallas que constituyen a la aplicación es inicializada e implementada desde una actividad. Toda actividad debe pertenecer a una clase descendiente de Activity. Las actividades son independientes entre sí, pero pueden interactuar entre ellas. [17) 16.

(18) El ciclo de vida de la actividad es controlado por el sistema. Una aplicación corre dentro de su propio proceso Linux. El proceso es creado por la aplicación y continúa activo hasta que ya no sea requerido y el sistema reclame su memoria para asignársela a otra aplicación. Una actividad en Android puede estar en uno de estos cuatro estados: [19]. •. Activa: La actividad está en lo alto de la pila, es visible y tiene el foco.. •. •. •. Visible: La actividad es visible pero no tiene el foco. Sucede cuando se comparte pantalla con otra actividad. Si la actividad está tapada por completo, entonces está parada. Parada: La actividad no es visible. Es recomendable almacenar el estado de la interfaz de usuario, preferencias de usuario o la información que se considere pertinente. Destruida: Cuando la actividad termina al invocarse el método fínish(). Sale de la pila de actividades.. Cada vez que la actividad cambia de un estado a otro, se crean eventos que son escuchados por diferentes métodos dentro de la actividad. Estos método son los siguientes:. •. • •. • •. • •. onCreate(Bundle): Es llamada cuando la actividad es creada. Es recomendable llevar a cabo las inicializaciones de variables o la creación de la interfaz de usuario. onStart(): Indica que la actividad está a punto de ser mostrada al usuario. onResume(): Es llamado cuando la actividad está por comenzar a interactuar con el usuario. Es buen lugar para lanzar animaciones o multimedia. onPause(): Indica que la aplicación está por ser lanzada a segundo plano, generalmente porque otra aplicación fue lanzada. onStop(): La actividad dejará de ser visible para el usuario. Si la memoria es insuficiente, la aplicación puede ser destruida sin llamar a este método. onRestart(): Indica que la actividad será visible después de haber estado en el método onStop(). onDestroy(): Es llamado antes de que la actividad se completamente destruida o cuando se llama al método finish(). Si la memoria es insuficiente, la actividad puede ser destruida sin pasar por este método.. En android el sistema mantiene un pila con las actividades según el orden en el que han sido visualizadas, de manera que al pulsar el botón atrás se puede volver a la actividad previa[l 9]. Es posible conocer el contenido de esta pila pero es necesario solicitar el permiso en el AndroidManifest.xml con el permiso android.permission.GET_TASKS.. 17.

(19) 3.3.4. Servicio. Un servicio es un proceso que se ejecuta en segundo plano y no requiere de una interacción con el usuario o una interfaz de usuario para funcionar. Los servicios en Android pueden ser servicios locales, para ser utilizados por la misma terminal, y servicios remotos, que pueden ser utilizados desde otras terminales. [17] Los servicios tiene diferente función según el método por el cual se inicien. Si el servicio es iniciado por el método startService(), el sistema ejecuta el servicio de manera indefinida hasta que se invoque el método stopService() o stopSelf(). Al iniciar el servicio de esta forma el sistema lo crea e inmediatamente llama a su método onCreate() y a continuación al método onStartCommand(lntent intent, int flags, int startld) con los argumentos proporcionados por el cliente. [20] El método onStartCommand() regresa un valor que indicará la manera en la que el servicio reiniciará en caso de que el proceso donde corre sea terminado por el sistema. Si se quiere que el sistema intente crear el servicio cuando disponga de memoria se debe devolver el valor START_STICKY. Si se quiere que el sistema inicie el servicio de nuevo sólo cuando sea solicitado, se debe devolver START_NOT_STICKY. Si el servicio se inicia a través del método bindService(), se indica que la aplicación donde está el servicio será capaz de comunicarse con otras aplicaciones. [20] Para poder utilizar un servicio dentro de la aplicación, es necesario que éste esté declarado dentro del AndroidManifest.xml en la etiqueta <service>. Si esta declaración se omite, la aplicación no correrá y se detendrá debido a este error. 3.3.5. Intención. Una intención representa la voluntad de llevar a cabo una acción, ya sea realizar una llamada telefónica, lanzar una actividad o comenzar un servicio. Las intenciones también funcionan para el intercambio de información entre actividades y servicios. [17] Existen intenciones que son iniciadas por el sistema como al momento de hacer una llamada telefónica o abrir la cámara y otras intenciones que son iniciadas por la aplicación. Para iniciar una intención por parte de la aplicación, es necesaria la creación de un objeto de la clase lntent. {18} Existen intenciones explícitas e intenciones implícitas. Las intenciones explicitas indican exactamente el componente o acción a lanzar, requieren especificar el nombre del componente y la acción a realizar. Las intenciones implícitas son aquellas que interactúan con el sistema como utilizar la cámara o ver una página de internet. En caso de tener solicitudes de la misma intención. 18.

(20) por diferentes actividades, el sistema pregunta al usuario qué actividad es la que prefiere utilizar. 3.3.6 Receptor de Anuncios. Un receptor de anuncios, Broadcast Receiver, recibe anuncios del tipo broadcast Estos anuncios pueden ser originados por el sistema, como notificar que la batería está baja o llamada entrante, pero también pueden ser originados por una actividad o un servicio. [17] Son muy útiles para pasar información de un servicio a otro o de un servicio a una actividad. El receptor de anuncios está ligado a un emisor de anuncios y ambos están ligados a una intención que los inicie.. 19.

(21) 3.4. Uso de Hardware y Sensores. Android permite utilizar de manera sencilla los sensores disponibles en el equipo. Los sensores disponibles pueden variar dependiendo del fabricante del teléfono y de la complejidad del mismo. La lectura de los sensores se realiza a través de las clases Sensor, SensorEvent, SensorManager y la interfaz SensorEventListener del paquete android.hardware [30]. La cámara, el micrófono y el GPS no se consideran dentro de estas clases. La clase Sensor es capaz de aceptar diferentes tipos de sensores, algunos de ellos se mencionan en la Tabla l.. TYPE_ACCELEROMETER TYPE_GYROSCOPE TYPE_LIGHT TYPE_MAGNETIC_FIELD TYPE_ORIENTATION. TYPE_PROXI MITY. TYPE_TEMPERATURE. Fuerza de aceleración en m/s 2 en los ejes x,y,z e incluyen la fuerza de gravedad. Mide la tasa de rotación del dispositivo en rad/s alrededor de los ejes x,y,z. Mide el nivel de luz ambiental en lx. Mide el campo geomagnético ambiental en los 3 ejes en µT. Mide el grado de rotación del equipo alrededor de los 3 ejes. Se pueden obtener la matriz de inclinación y la matriz de rotación al utilizar el sensor gravitacional y geomagnético en conjunto con el método getRotationMatrix() para determinar la posición del equipo. Mide la proximidad de un objeto a la pantalla del equipo en cm. Generalmente se utiliza para saber si el teléfono está pegado al rostro durante una llamada telefónica. Mide la temperatura del dispositivo en ºC.. Tabla 1 Descripci6n de lo.s senson•s disponibles en Android.. 3.4.1. Acelerómetro en Android. El acelerómetro en Android funciona por medio de eventos o interrupciones. Utilizando el método public void onSensorChanged(SensorEvent event) se puede obtener el vector con los valores de la aceleración en los ejes x,y y z. Donde: ag = aceleración debido a la gravedad. event.values[0] "7 Corresponde al valor de la aceleración en el eje x - ag. event.values[l] "7 Corresponde al valor de la aceleración en el eje y- ag. event.values[Z] "7 Corresponde al valor de la aceleración en el eje z - ag.. 20.

(22) El sistema de coordenadas está definido relativo a la pantalla del teléfono cuando éste se encuentra en la orientación por default. El eje x es horizontal y tiene valores positivos hacia el lado derecho, el eje y es vertical y tienen valores positivos hacia arriba y el eje z es apunta hacia fuera de la pantalla del teléfono [31]. El sistema de coordenadas descrito se muestra en Imagen l.. y. Imagen l. Sistema de coordenadas en orientación por del;rnll del teléfono. Tomado de (3 l]. Es necesario utilizar un objeto administrador de sensores de la clase SensorManager para poder solicitar el servicio de sensores al sistema. Se requiere de un objeto del tipo Sensor de la clase Sensor para definir el tipo de sensor que se quiere utilizar. Es necesario que la clase en donde se obtengan los valores de los acelerómetros implemente la interfaz SensorEventlistener. Es posible seleccionar la velocidad con la que los datos del acelerómetro serán escuchados al definir la manera en la que se registra al escuchador de eventos. Las opciones disponibles son:. SENSOR_DELAY_NORMAL. Adecuada para detectar cambios en la orientación de la pantalla.. SENSOR_DELAY_GAME. Adecuada para implementar en juegos.. SENSOR_DELAY_FASTEST. Adecuada para obtener los datos lo más pronto posible.. SENSOR_DELAY_UI. Adecuada para mostrar y actualizar los valores de las aceleraciones en la interfaz de usuario.. Tabla 2. Tasa de artualiz;1ció11 de valores de ;1celerúmelTo.. 21.

(23) Para poder utilizar la información proporcionada por los acelerómetros es necesario que el nivel de Android sea como mínimo el 1.5, es decir que el API sea 3. Al momento de procesar la información proporcionada por el acelerómetro, es necesario contemplar el ruido del sensor. Un filtro sencillo desde la programación basta para solucionar este tema.. 3.4.2 Sistema de Posicionamiento Global (GPS). Android incorpora la opc10n de utilizar el sistema de posicionamiento global de dos maneras. La primera es mediante el uso de satélites y permite una ubicación fina. El inconveniente de ésta es que para funcionar requiere tener visibilidad directa de los satélites. La segunda opción para la localización es basada en la información recibida de las torres de telefonía celular y/ o de los puntos de acceso Wi-Fi, es decir, está basada en la red. Esta opción funciona incluso dentro de construcciones siempre y cuando se tenga red [20]. Por cuestiones de seguridad, el acceso a la localización del teléfono está restringido a las aplicaciones. Si éstas quieren saber la ubicación necesitan solicitar el permiso al usuario. Para hacerlo hay que indicar estos permisos en el fichero AndroidManifest.xml. Se recomienda solicitar el permiso para ambos métodos de localización para que el sistema funcione incluso cuando uno de ellos no esté disponible. Los permisos necesarios son los siguientes: <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>. Para poder utilizar el GPS dentro de una clase de Android, es necesario que ésta implemente la interfaz LocationListener y que se cuente con un administrador de ubicaciones de la clase LocationManager y un objeto ubicación de la clase Location. Al implementar la interfaz Locationlistener se implementan y sobrescriben cuatro métodos, los cuatro métodos son del tipo abstract void [32] y se muestran en la Tabla 3.. onLocationChanged(Locationlocation). Es llamado cuando la ubicación cambia.. onProviderDisabled(String provider). Es llamado cuando el proveedor es deshabilitado por el usuario. Es llamado cuando el proveedor es habilitado por el usuario. Es llamado cuando el estatus del proveedor cambia.. onProviderEnabled(String provider) onStatusChanged(String provider, int status, Bundle extras) Tabla 3. Müodos 1k la interfaz Locationl.istc11er.. 22.

(24) Se puede seleccionar el intervalo de tiempo en el que el sistema verificará si la información proporcionada por el GPS ha cambiado. Esto es muy útil pues así se puede conocer cuando el teléfono se ha movido. Para ello se llama el método requestLoactionUpdates del administrador de ubicación con los siguientes parámetros: manejador.requestLocationUpdates(String proveedor, long min_time, float min_distance ,LocationListener lístener); En donde el proveedor puede ser definido por el usuario, puede ser el proveedor que tenga mejor señal, el min_time se refiere al tiempo mínimo del intervalo entre actualizaciones de ubicación en milisegundos, min_distance es la distancia mínima entre las actualizaciones de ubicación en metros y listener se refiere al LoactionListener cuyo método onLocationChanged(Location) será llamado con cada actualización de ubicación [33]. 3.5 3.5.1. Redes Neuronales Artificiales Definición. Se define como red neuronal artificial a un sistema de mapeos no lineales cuya estructura se basa en principios observados en los sistemas nerviosos de humanos y animales. Las unidades de procesamiento de este sistema se llaman neuronas y éstas están conectadas entre ellas con pesos. Cada una de estas neuronas recibe información de otras neuronas y genera una salida simple escalar que será transmitida a la siguiente neurona. [38] Las redes neuronales artificiales surgen ante la necesidad de imitar o reproducir la manera en la que el cerebro humano soluciona problemas a partir de la experiencia. Similar a la manera en la que los humanos toman decisiones a partir de experiencias previas, la red neuronal es capaz de tomar decisiones y realizar clasificaciones a partir de problemas previamente resueltos. [37] Estas redes neuronales artificiales tienen su base en la generalización de información recopilada experimentalmente o de tablas. Esta información es seleccionada por humanos, generalmente expertos en la materia que se quiere tratar. El uso de estas redes neuronales es útil pues permiten la solución de problemas no lineales, sintetizar algoritmos a través de un proceso de aprendizaje y no se requiere el conocimiento de los detalles matemáticos del proceso para implementarla. Sin embargo, es necesario conocer la serie de datos con la que se está trabajando. [37] Para poder implementarla de una manera adecuada es necesario entrenar la red para cada problema que se pretende resolver. Para ello se requiere de una gran cantidad de datos de entrenamiento, para poder identificar similitudes o patrones entre los grupos entrenados. Una vez implementada, si se quiere agregar más información o aprendizaje es necesario entrenar a la red neuronal artificial completamente con el conjunto de datos nuevos. [37] 23.

(25) Cada neurona recibe información de neuronas previas. Y de un bias. La información proveniente de las neuronas previas es multiplicada por los pesos correspondientes en cada una de las conexiones y se agrega el valor del bias. Posteriormente, este resultado es evaluado dentro de una función de activación no lineal simple como puede ser una función sigmoidal, hiperbólica, escalón o tansig. [38] En consecuencia, la entrada total de cada neurona es la suma de las entradas conectadas más un bias. Si el valor del peso de entrada en la conexión es positivo, se considera que es una excitación. Si el peso es negativo, se considera una inhibición. 3.5.2. Funciones de Activación. Se llama función de activación a la regla que logra establecer el efecto de la entrada total en la activación de cada neurona. [38] A continuación se enuncian algunas de las funciones de activación más usadas con una breve descripción.. Función Escalón Se asocia a neuronas binarias. Si la suma de las entradas es mayor o igual que el umbral de la neurona, la activación es 1. Si la suma de las entradas es menor, la activación es cero.. Funden Escalen 0.9. o.e 0.7 0.6. E o.5 = 0.4 0.3. 0.2. 0. 1. o. -5. -3. -2. -1. . .o. 2. 3. •. Imagen 2. Funcicín de activación escalón.. 24.

(26) Función lineal La función lineal responde a la expresión Fk(u) =u.Como se muestra en la Imagen 3. Función lineal de activación. Funcion Lileal. Imagen 3. Funcicín lineal de activación.. Se puede utilizar una función mixta que permita que la respuesta se comporte de manera lineal dentro de límites establecidos y que se sature a 1 en valore mayores al límite superior o que se sature a cero en valores menores al límite inferior. Funcion lineal mixta. ~. o -0.5. ·1. -1.5'----......I....---...___ ___.__ _ ___.___ -2 -1.5 _, -0.5 O. _. ~ - - - ~ - - -~ 0.5 1.5. -. X. Imagen 4. Función de activación lineal mixta.. 25. -~ 2.

(27) Función tangente hiperbólica Es empleada en los casos que presenta variaciones suaves de valores positivos y negativos de la señal a clasificar. Esta función debe emplearse entre los umbrales positivos y negativos antes de la saturación, de lo contrario la salida siempre generará valores saturados iguales a 1 y -1. Funden Tangente Hiperbolica. o.e 0.6 0.4 0.2 ><. o. J!. j. ·0.2 ·0.4 -0.6. -o.e ·1 -5. -3. o. -1. X. Imagen 5. Funciún de activación tangente hiperbólica.. Función Sigmoidal El valor dado por esta función es cercano a uno de los valores asintóticos. Esto genera que la salida generalmente se encuentre en la zona alta o baja del sigmoide. Es una función similar a la función escalón si se hace que su pendiente sea alta. Difiere de la función escalón en que su derivada siempre es positiva y cercana a cero para los valores grandes positivos y negativos. Funcion sigmoidal. o.a 0.8 0.7. ·,.:. 0.6. r-5 i. 0.4. Imagen 6. Funciún sigmoidal de activación.. 26.

(28) 3.5.3. Topologías de las redes neuronales artificiales. La topología de una red está definida por la forma en la que se realizan las conexiones entre las neuronas de una capa a otra de la red. Dos de las topologías más utilizadas son: [38]. 3.5.4. •. Redes de propagación hacia delante (feed forward): El flujo de información de las entradas a las salidas es exclusivamente hacia delante. Se extiende a través de las capas de la red mas no hay conexión de retroalimentación.. •. Redes recurrentes: Éstas contienen conexiones de retroalimentación, permite evolucionar la red hasta llegar a un estado estable en el que los cambios en el estado de activación de neuronas no esté presente.. Entrenamiento de las redes neuronales artificiales. Se conoce como entrenamiento al proceso de configuración de una red neuronal artificial para que las entradas produzcan las salidas deseadas a través del fortalecimiento de las conexiones. [38] Este entrenamiento se puede realizar con valores de pesos establecidos previamente o se puede utilizar métodos que impliquen técnicas de retroalimentación y patrones de aprendizaje que modifican los pesos hasta encontrar los adecuados. El aprendizaje puede ser supervisado o asociativo y no supervisado o autoorganizado. En el aprendizaje supervisado se introducen entradas que corresponden a determinadas salidas. En el aprendizaje no supervisado se intenta encontrar características estadísticas entre grupos de patrones a las entradas. Uno de métodos o algoritmos más utilizados para encontrar los pesos adecuados es el método de retropropagación o backpropagation. Este método requiere un aprendizaje supervisado y por lo tanto necesita que se introduzca un grupo de salidas con el valor de salida esperado para las entradas. Funciona mediante la minimización del error por el método de mínimos cuadrados. El entrenamiento de este tipo de red es iterativo y en cada iteración se modifican los pesos de conexiones para logar que la salida de la red sea lo más cercana posible al resultado esperado. A la diferencia del valor deseado entre el valor obtenido por la red, se le denomina error. [37] La red propaga el error de regreso a todas las neuronas las cuales ajustan sus pesos para lograr el resultado esperado. Se puede iniciar el cálculo con pesos grandes, los cuales irán descendiendo gradualmente o se puede iniciar con pesos pequeños que irán creciendo. Si se inicia con valores pequeños, se permite el establecimiento de los signos en los pesos. [37]. 27.

(29) Para la explicación del algoritmo de backpropagation consideremos la siguiente nomenclatura: [39] i: índice de neurona j: índice de capa. k: índice de salidas v: pesos de la capa oculta w: pesos de la capa de salida t: target u objetivo. E(v,w): error dependiente de los pesos de la capa oculta y de la capa de salida. Consideremos una red neuronal artificial con una capa oculta y una capa de salida. Ambas capas tienen una función de activación sigmoidal. El valor de entrada de cada neurona de la capa oculta, está dado por:. hj = ¿xivij. ( l). i. y el valor de salida de cada neurona de la capa oculta está dado por: ( 2). El valor de entrada de la capa de salida está dado por: ( 3). El valor de la salida, está dado por:. Yk =. g(hiª''"ª) = 9 (. ~ Wjkaj'" 11ª). ( .¡. l. Si queremos conocer como cambia el error en la salida respecto al peso de la capa oculta a la capa de salida, debemos obtener el gradiente de: (5). 28.

(30) El cambio en la entrada de las neuronas de salida, está dado por: ohk a L a¡Wzk --=. La ecuación ( 6) es igual a O, excepto cuando l=j, y queda: ahk --=a· awjk J. (7). La variación del error de la capa de salida debido a las entradas de esta capa, está dado por: (8). De la ecuación ( 4 ) sabemos que Yk = g(htalidª); sustituyendo en ( 8 ) , tenemos: ( 9). Derivando, tenemos: ( 10 J. o = a (hsa11da) a. 9 k 0. 1~~ (t 2 ¿k. k. 2. g(hsalida)) ] g'(hsalida). [ 11. J. k. [ 12 ). Se obtiene la variación del error en la salida, se muestra en. {u). 29.

(31) Posteriormente, la regla para actualizar los pesos de la capa oculta a la capa de salida queda de la siguiente forma: (14). Sustituyendo las ecuaciones ( 7 ), ( 9) y ( 13) en ( 14) tenemos que:. Wjk ~ Wjk. + 11 (t k -. Yk ) 9 '(hsalida) k ª1. ( 15). Donde la aproximación de cada función y sus derivadas se muestran a continuación.. Función Lineal. Sigmoidal. Aproximación f(x) = X f'(x) = 1. (16) ( 17). 1 f(x) = 1 + e-x. ( 18). f'(x) = f(x)(l - (f(x)). eªx _ e-ax f (x) = eªx + e-ax tanh f'(x) = a(l - f(x)2). ( 19). ( 20) ( 21). Para la obtención de la variación del error de la capa oculta con respecto a los pesos de entrada, se tiene:. = h. ó. L. iJE. ahsalidas. -- k ahsalidas ahc;iculta. k. ahsalidas = Ó - k_ _ o ahc;icu1ta. J. k. ( 22). J. Si definimos:. h¡"'""' = g (. ¡. wlkh1'""ª). ( 23). Por lo tanto: a htalidas ah oculta J. a g (L W¡k. hf culta). ( 24). ah oculta J. El resultado de la ecuación ( 24) es igual a O, excepto cuando l=j, en cuyo caso el resultado de dicha ecuación es:. 30.

(32) (25). Sustituyendo ( 25) en ( 22 ), se obtiene la variación del error de la capa oculta:. 8h = g'(aj). ¿. 80 wjk. ( 26). k. Yla regla para la actualización de los pesos de entrada, está definida como V:·l].. ~. aE. tJ:11.. + n ., av:... (27). l]. Donde: (28). 31.

(33) 4. Desarrollo. En el presenta capitulo se hará una descripción detallada de la manera en que fueron implementadas cada una de las partes que componen la aplicación. Las partes principales que componen a la aplicación son: 1. 2. 3. 4.. Detección de comportamiento inusual al utilizar el teléfono Determinar si la persona está en movimiento Descartar que la persona sea un copiloto. Notificar al usuario. Todo lo que a continuación se muestra fue implementado en un teléfono Samsung Galxy S IV con una versión de Android 4.2.2. y con los siguientes sensores disponibles. e. ..... ,0. Sensor. Tipo. Fabricante. 111. l.. Resolución. Q.I. Rango máximo. >. ... ,...,. , l'U. l.<. ~ l'U. e. \,_,J. CQ. K330 Acelerómetro de 3 ejes YAS532 Magnético K330 Giroscopio. Aceleración STMicroelectronics 1. 5.985504 E- 19.6133 4. 0.25. Campo Magnético Giroscopio. Yamaha 1 Corporation STMicroelectronics 1. 0.06. 6.0. Barómetro 88920 MAX Sensor de proximidad CM3323 Sensor RGB SHTCl Sensor de humedad relativa SHTCl Sensor de Temperatura ambiental Sensor de gravedad Sensor de Vector de rotación de Sensor Aceleración lineal de Sensor orientación. Presión Distancia. BOSCH MAXIM,lnc.. 1 1. 3.0543262E- 8.726646 6.1 4 1.0 1013.25 1 8.0 8.0 0.75. Luz. 1. 1.0. 6000.0. 0.75. Null. Capella Microsystems, Inc. Sensirion. 1. 0.04. 100.0. 0.3. Null. Sensirion. 1. 0.01. 165.0. 0.3. Gravedad. Google Inc.. 3. 5.985504E-4 19.6133. 12.35. Vector de Google Inc. rotación Aceleración Google lnc.. 3. 5.9604E-8. 12.35. 3. 5.985504E-4 19.6133. 1. 0.00390625. Null. Samsung lnc.. 1200.0. 1.0. 360. -Tabla 4. Semores d1spomhles l'll el eqmpo u t1lizatlo. 32. 12.35 12.35.

(34) 4.1 Algoritmo de la Aplicación. ,...._____.. ~~. l l. Enciende acelerómetro, introduce datos a red neuronal artificial. l l Enciende GPS, obtener velocidad. ! Alerta al Usuario Imagen 7. Algoritmo de la ap\icaciún. 33.

(35) 4.2. Detección de Comportamiento Inusual al Utilizar el Teléfono. En esta sección se pretende identificar si el usuario no está prestando total atención al teléfono al momento de utilizarlo. La aplicación generada está propuesta para correr en segundo plano, por lo tanto su implementación debe ser en un servicio. La actividad principal de la aplicación no será utilizada por el usuario y tampoco debe permitir que el usuario modifique de manera directa algún parámetro de la aplicación. En un primer acercamiento se propuso medir la velocidad de tecleo del usuario y así determinar si la atención del usuario hacia el teléfono había disminuido. Sin embargo, como se mencionó en la sección de marco teórico, el método de entrada (IME) sólo permite que el cliente o aplicación activa sea quien tenga acceso a los datos recopilados por el teclado. Por lo tanto, no se puede medir la velocidad de tecleado dentro de un servicio. Se intentó conocer, desde un servicio, si el teclado había sido abierto o estaba visible para cualquier otra aplicación. Se intentó utilizar el método keyboardHidden() de la configuración del sistema. Sin embargo, este método devuelve un valor verdadero si ningún teclado está dado de alta en el equipo y devuelve un valor falso si algún teclado está dado de alta. Por lo tanto, no verifica si el teclado está abierto o no, sino que simplemente exista. Al continuar con la investigación, se encontró que los datos recopilados por el acelerómetro de tres ejes del equipo se pueden leer desde un servicio. Se creo una clase de nombre MyService.java la cual extiende un servicio e implementa un receptor de eventos de los sensores (SensorEventListener).. public class MyService SensorEventlistener. extends. Service. implements. Posteriormente, se determinó que el serv1c10 leería los datos del acelerómetro pero no de manera continua, pues esto demandaría un alto consumo de la batería. Por lo tanto, ya que no se puede saber cuando el usuario está usando el teclado, se busca conocer en qué momento algunas aplicaciones específicas están siendo utilizadas. En este caso, las aplicaciones de interés son aquellas de mayor uso por parte del usuario y aquellas que necesitan recopilar datos del teclado para funcionar. Se propone principalmente monitorear las siguientes:. 34.

(36) Aplicación. Whatsapp. Facebook. Twitter. Mensajes. Correo electrónico. Justificación. Por ser la aplicación más utilizada para comunicación por mensajes de texto y por ser la aplicación número uno en descargas en el Play Store. Por ser la aplicación de una de las redes sociales más grandes a nivel mundial y por la necesidad constante de los usuarios de revisar si ha habido actualizaciones. Especialmente la población entre los 15 y 30 años. Por ser la aplicación de otra de las redes sociales más grandes a nivel mundial y por la necesidad constante de los usuarios de revisar si ha habido actualizaciones. Especialmente la población entre los 15 y 40 años. Por ser una aplicación que requiere información directa del teclado para funcionar. Por ser una aplicación que requiere de información directa del teclado para funcionar y demanda la atención visual y cognitiva del usuario al leer un correo.. Número de Usuarios. 250 millones mensualmente[34]. 874 millones mensualmente [35] 57 millones mensualmente (Facebook Messenger)[34]. 163.5 millones mensualmente [36]. 19.5 billones de mensajes enviado diariamente [34]. Tabla 5. 1\plicacíones para monitorear si se encuentran abiertas.. Para el monitoreo de estas actividades, dentro de la clase myService se creo un método que verifica, cada determinado tiempo, qué aplicación es la que se encuentra abierta en ese momento. Lo anterior se obtiene con el método getRecentTasks() de la clase ActivityManager y se solicita el siguiente permiso en el AndroidManifest.xml. <uses-permission android:name= "android.permission.GET_TASKS" /> Con esto, se pueden obtener a modo de lista el número deseado de aplicaciones que se encuentran en la parte superior de la pila. Esta consulta se realiza cada determinado tiempo con un Runnable que permite ejecutar código en un hilo de ejecución distinto y con un tiempo de repetición determinado. Una vez que se obtuvo esto, fue necesario determinar qué secuencia seguiría el algoritmo de la aplicación para determinar si el usuario maneja y quiere ocupar el teléfono con el menor consumo de batería posible. Por ello se determinó que el acelerómetro no podía permanecer encendido continuamente.. 35.

(37) Se determinó que la aplicación seguiría el algoritmo mostrado en la Imagen 7. Si alguna de las aplicaciones propuestas en la Tabla 5 se encuentra abierta, entonces se enciende el acelerómetro y se envían 30 datos recopilados del acelerómetro a la red neuronal artificial. Ahí se determinará si los valores corresponden a aquellos del conductor intentando utilizar el teléfono.. 36.

(38) 4.2.1 Entrenamiento de la Red Neuronal Artificial. Para entrenar la red neuronal artificial se recopilaron datos utilizando el teléfono mientras se conducía un vehículo. Lo anterior se realizó siempre con la mayor precaución posible y se hizo así para poder obtener los datos más cercanos a un escenario real posible. Para recopilar esta información se modificó el servicio MyService para que desde que arranca inicie el GPS y lo mantenga encendido para poder conocer el valor de la velocidad en todo momento. Esto sólo se realizó únicamente en esta etapa, pues mantener el GPS encendido continuamente consume rápidamente la batería. Se siguió el algoritmo hasta la sección en donde se identifica qué aplicación está abierta. Si la aplicación abierta era Whatsapp se encendía el acelerómetro y se almacenaban valores en vectores de longitud 30. Una vez que el vector había sido llenado se escribe un archivo de texto .txt con los valores de la velocidad y los valores de los acelerómetros. Este archivo se guarda en la memoria del teléfono y se exporta por bluetooth o correo electrónico para posteriormente analizar esos datos. Se recopilaron datos al conducir y se analizaron para determinar cuáles de ellos proveen información pertinente respecto al uso del teléfono cuando se maneja. La información recopilada se almacenó en cuatro diferentes grupos como se muestra en la Tabla 6 . Todos los grupos contienen información de los acelerómetros en los ejes x,y,y z.. Grupo 1 11. 111 IV. Velocidad (Km/h) 10-20 21-40 41-60 61-80. Tabla 6. Grupos de la red neuronal artificial. A continuación se muestran gráficos, en donde se aprecian los valores recopilados por el acelerómetro en x, y y z, para determinar qué información es la más relevante para utilizar en la red neuronal artificial.. 37.

Figure

Tabla  2. Tasa  de  artualiz;1ció11  de valores de  ;1celerúmelTo.
Tabla 7. Valores de aceleración en X  para los diferentes grupos.
Tabla 8. Valores de aceleración en Y para los diferentes grupos.
Tabla 9. Valores de aceleraciún en Z para los diferentes grupos.
+4

Referencias

Documento similar

If certification of devices under the MDR has not been finalised before expiry of the Directive’s certificate, and where the device does not present an unacceptable risk to health

In addition to the requirements set out in Chapter VII MDR, also other MDR requirements should apply to ‘legacy devices’, provided that those requirements

The notified body that issued the AIMDD or MDD certificate may confirm in writing (after having reviewed manufacturer’s description of the (proposed) change) that the

“La unificación de la clasificación de empresas otorgada por las CC.AA.”, “La unificación de criterios en la acreditación de los servicios de prevención de riesgos

En cuarto lugar, se establecen unos medios para la actuación de re- fuerzo de la Cohesión (conducción y coordinación de las políticas eco- nómicas nacionales, políticas y acciones

El Tratado de Maastricht introduce como elemento fundamental de la Unión Europea la cooperación en los ámbitos de la justicia y en los asuntos de interior (JAI) y establece la doble

Volviendo a la jurisprudencia del Tribunal de Justicia, conviene recor- dar que, con el tiempo, este órgano se vio en la necesidad de determinar si los actos de los Estados

A partir de los resultados de este análisis en los que la entrevistadora es la protagonista frente a los entrevistados, la información política veraz, que se supone que