scieee AI-readable full text Open interactive document viewer

Viabilidad de realidad aumentada para dar soporte a personas con dificultades de memoria

Morey Pascual, Bàrbara

Abstract

A consecuencia del aumento de la esperanza de vida en los países desarrollados se ha incrementado el número de personas con trastornos de la memoria. Enfermedades como el alzhéimer causan dificultades en la vida diaria, sobretodo en gente de avanzada edad. Las personas que padecen estos trastornos tienden a olvidar tareas cotidianas y por tanto, requieren de personas que les ayuden en determinados momentos. La tecnología avanza rápidamente y gracias a ello han surgido herramientas con las que ayudar a estas personas. En este proyecto se hace uso de algo muy habitual a día de hoy, un smartphone. Se plantea, mediante una aplicación Android, captar información del entorno real con la cámara del dispositivo móvil. Esta información, se procesa y, haciendo uso de una base de datos y de un sistema de aprendizaje automático, la aplicación es capaz de mostrar por pantalla recomendaciones o información acerca de la próxima tarea a realizar por el usuario. En este proyecto se pretenden mostrar las posibilidades tecnológicas de una herramienta de realidad aumentada. Para ello en esta memoria se detalla cómo se ha implementado esta aplicación y se muestra como ésta aprende de las preferencias del usuario, permitiendo de este modo adaptarse mejor al mismo y mostrar una respuesta fiable.

Full text

PROYECTO FINAL DE CARRERA TÍTULO DEL PFC: Viabilidad de realidad aumentada para dar soporte a personas con dificultades de memoria TITULACIÓN: Ingeniería de Telecomunicación (segundo ciclo) AUTOR: Bàrbara Morey Pascual DIRECTOR: Roc Meseguer Pallarès FECHA: 12 de julio de 2012 Title: Viability of Augmented Reality for assisting people suffering from memory loss Author: Bàrbara Morey Pascual Director: Roc Meseguer Pallarès Date: July, 12th 2012 Overview The number of people suffering from memory loss has risen considerably due to the increase in life expectancy in developed countries. Diseases such as Alzheimer are very disruptive to daily life, especially in elderly people. People suffering from memory loss tend to forget daily tasks, and thus require other people to help them at certain times. Technological breakthroughs happen all the time, and some of them have lead to certain tools with which to help these people. A very common item in today’s society is used for this project: a Smartphone. The idea behind this project is to use an Android app that captures information about the environment via the mobile device’s camera. This information is then processed, and using a database and a self-learning system the aforementioned app is able to show on screen recommendations regarding the next task to be performed by the user. The goal of this project is to show the technological capabilities of an augmented reality tool. Which is accomplished by explaining how such an App has been implemented, and how it learns from the user’s preferences, thus allowing it to adapt to the user and offer a reliable response. Título: Viabilidad de realidad aumentada para dar soporte a personas con dificultades de memoria Autor: Bàrbara Morey Pascual Director: Roc Meseguer Pallarès Fecha: 12 de julio de 2012 Resumen A consecuencia del aumento de la esperanza de vida en los países desarrollados se ha incrementado el número de personas con trastornos de la memoria. Enfermedades como el alzhéimer causan dificultades en la vida diaria, sobretodo en gente de avanzada edad. Las personas que padecen estos trastornos tienden a olvidar tareas cotidianas y por tanto, requieren de personas que les ayuden en determinados momentos. La tecnología avanza rápidamente y gracias a ello han surgido herramientas con las que ayudar a estas personas. En este proyecto se hace uso de algo muy habitual a día de hoy, un smartphone. Se plantea, mediante una aplicación Android, captar información del entorno real con la cámara del dispositivo móvil. Esta información, se procesa y, haciendo uso de una base de datos y de un sistema de aprendizaje automático, la aplicación es capaz de mostrar por pantalla recomendaciones o información acerca de la próxima tarea a realizar por el usuario. En este proyecto se pretenden mostrar las posibilidades tecnológicas de una herramienta de realidad aumentada. Para ello en esta memoria se detalla cómo se ha implementado esta aplicación y se muestra como ésta aprende de las preferencias del usuario, permitiendo de este modo adaptarse mejor al mismo y mostrar una respuesta fiable. A Roc, por haberme dado la oportunidad de realizar este proyecto y por las horas dedicadas a ayudarme. A mi familia y a Marc, por el apoyo, la comprensión y la ayuda ofrecidos. A los profesores que han aportado su grano de sabiduría. A los amigos y compañeros de clase por apoyarme y darme consejo. A todos ellos muchas gracias. ÍNDICE INTRODUCCIÓN ............................................................................................... 1 CAPÍTULO 1. REALIDAD AUMENTADA.......................................................... 3 1.1. ¿Qué es realidad aumentada? ......................................................................................... 3 1.2. ¿En qué consiste un sistema AR basado en marcadores? .......................................... 3 1.3. Introducción a AndAR ....................................................................................................... 4 1.3.1 ¿Qué es? ................................................................................................................ 4 1.3.2 ¿Cómo funciona? ................................................................................................... 5 CAPÍTULO 2. IMPLEMENTANDO LA APLICACIÓN ....................................... 6 2.1. ¿En qué consiste la aplicación? ...................................................................................... 6 2.2. Implementación de la administración web ..................................................................... 9 2.3. Implementación de un sistema basado en marcadores con AndAR ......................... 12 2.3.1. Implementando el control de acceso .................................................................... 12 2.3.2. Detección de marcadores ..................................................................................... 15 2.3.3. Devolución de información del marcador detectado ............................................ 16 2.3.4. Registrando el feedback del usuario .................................................................... 17 CAPÍTULO 3. APRENDIZAJE AUTOMÁTICO ................................................ 20 3.1. ¿Qué es aprendizaje automático? ................................................................................. 20 3.2. ¿Qué es Weka? ................................................................................................................ 20 3.3. Implementación del aprendizaje automático en la aplicación Android realizada .... 21 CAPÍTULO 4. EVALUACIÓN EXPERIMENTAL ............................................. 25 4.1. Escenario de pruebas ..................................................................................................... 25 4.1.1. Hardware .............................................................................................................. 25 4.1.2. Software ................................................................................................................ 25 4.1.3. Configuración........................................................................................................ 25 4.2. Requisitos ........................................................................................................................ 26 4.2.1 Requisitos funcionales .......................................................................................... 26 4.3. Usabilidad ......................................................................................................................... 26 4.3.1. Usuarios avanzados ............................................................................................. 27 4.3.2. Usuarios normales ................................................................................................ 28 CAPÍTULO 5. CONCLUSIONES Y LÍNEAS FUTURAS .................................. 30 5.1. Impacto medioambiental ................................................................................................ 30 5.2. Análisis de los objetivos marcados .............................................................................. 30 5.3. Conclusiones del proyecto ............................................................................................. 31 5.4. Conclusión personal ....................................................................................................... 31 5.5. Líneas futuras .................................................................................................................. 32 BIBLIOGRAFÍA ............................................................................................... 33 ÍNDICE DE FIGURAS Figura 1.1 Ejemplo práctico de realidad aumentada. ......................................... 3 Figura 1.2 Sistema AR basado en marcadores. ................................................. 4 Figura 2.1 Arquitectura cliente-servidor. ............................................................. 6 Figura 2.2 Diagrama de flujo de la aplicación..................................................... 7 Figura 2.3 Diagrama de cómo funciona la aplicación. ........................................ 8 Figura 2.4 Diagrama de secuencia de la aplicación. .......................................... 9 Figura 2.5 Diagrama de base de datos. ........................................................... 10 Figura 2.6 Formulario de acceso a la administración web. .............................. 10 Figura 2.7 Listado de marcadores. ................................................................... 11 Figura 2.8 Listado de textos del marcador. ...................................................... 11 Figura 2.9 Formulario de autenticación. ........................................................... 12 Figura 2.10 Declaración de la interfaz inicial. ................................................... 13 Figura 2.11 Objetos HttpPost y HttpClient, código. .......................................... 13 Figura 2.12 Definición de los datos a enviar mediante POST, código. ............. 14 Figura 2.13 Script PHP utilizado para la autenticación. .................................... 15 Figura 2.14 Definición del marcador, código. ................................................... 16 Figura 2.15 Consulta para obtener la información del marcador visualizado. .. 16 Figura 2.16 Muestra del resultado, código. ...................................................... 17 Figura 2.17 Resultado al visualizar un marcador. ............................................ 17 Figura 2.18 Menú, código. ................................................................................ 17 Figura 2.19 Enviar feedback del usuario a la base de datos, código. .............. 18 Figura 2.20 Consulta para insertar el feedback del usuario en la base de datos. .................................................................................................................. 19 Figura 2.21 Menú para poder registrar el feedback del usuario. ...................... 19 Figura 3.1 Aprendizaje automático por similitud. .............................................. 20 Figura 3.2 Diagrama de base de datos. ........................................................... 21 Figura 3.3 Creación del fichero .arff utilizado para entrenar Weka. .................. 23 Figura 3.4 Código Weka en Java utilizado para predecir resultados. ............... 24 Introducción 1 INTRODUCCIÓN El concepto de realidad aumentada ha estado presente desde hace décadas. Sin embargo, hasta principios del siglo XXI no han empezado a aparecer aplicaciones al alcance de todos. La evolución de los teléfonos móviles a los llamados smartphones ha permitido la expansión de esta tecnología dando lugar a que los usuarios puedan acceder a multitud de aplicaciones que hacen uso de la realidad aumentada. Esta tecnología, que consiste en combinar en tiempo real elementos virtuales y reales en el espacio, es utilizada en multitud de campos como por ejemplo la medicina, la educación y el ocio entre otros. Su rápida evolución no ha sido debida únicamente a las prestaciones de los smartphones sino que han entrado en juego otros factores a nivel de software. Estos factores son el sistema operativo Android y su lenguaje de programación, Java, ambos de libre acceso al desarrollo. Todo este conjunto ha permitido que desarrolladores de software se volcaran con Android y empezaran a aparecer nuevas aplicaciones. La motivación de este proyecto ha sido introducirse en el mundo de la programación en Android y comprobar si es posible realizar una aplicación de realidad aumentada utilizando recursos de acceso común, como son un smartphone y un ordenador. Dos aplicaciones móviles son las que han alimentado la motivación de este proyecto ya que su objetivo es similar. La primera de ellas, el proyecto OnTheBus [1] es una aplicación desarrollada para la plataforma Android que ha sido implementada por el grupo GABiTAP (Grupo de Aplicaciones Biomédicas y Tecnologías para la Autonomía Personal) de la Universitat Autònoma de Barcelona. Esta aplicación es plenamente accesible y no discriminatoria para poder ser utilizada por el mayor número de personas posible. Ha sido diseñada para el colectivo que sufre algún tipo de limitación funcional (ya sea visual, cognitiva, auditiva y/o de movilidad). Su principal objetivo es el de mejorar la accesibilidad y movilidad de las personas, guiando a personas (desde un punto de origen a un punto de destino) haciendo uso del transporte público. La segunda se denomina Mobile Accessibility [2]. Esta aplicación ha sido desarrollada por codefactory para la plataforma Android y diseñada para dar soporte a personas con deficiencias visuales. Su objetivo es permitir a personas ciegas o con baja visión utilizar un teléfono Android de forma intuitiva, fácil y simple. Esta aplicación permite realizar y contestar llamadas, administrar los contactos, redactar/leer SMS, configurar alarmas, utilizar el navegador web y el correo electrónico entre otras. 8 Viabilidad de realidad aumentada para dar soporte a personas con dificultades de memoria La Figura 2.3 muestra un diagrama que detalla cómo se realizan las operaciones en la aplicación y en qué momento sucede cada una de ellas. Figura 2.3 Diagrama de cómo funciona la aplicación. La Figura 2.4 muestra un diagrama de secuencia de la aplicación que permite observar la interacción entre elementos a través del tiempo. En esta aplicación se distinguen seis elementos:  Login: para el control de acceso de los usuarios.  CustomActivity: es la base de cualquier aplicación en Android con interfaz de usuario ya que está relacionado con la pantalla visible.  ARToolkit: contiene la parte de realidad aumentada.  CustomContext: incluye la parte que permite generar el mensaje sobre el entorno real visualizado a través de la cámara.  Weka: para el aprendizaje automático.  La base de datos MySQL. De la Figura 2.4 se extrae que el usuario simplemente debe ejecutar la aplicación, autenticarse y enfocar con la cámara a un marcador para obtener una respuesta sobre qué tarea le tocaría hacer a continuación. Finalmente y de forma opcional, el usuario puede dar un feedback acerca de la información que se le ha proporcionado. Implementando la aplicación 9 Figura 2.4 Diagrama de secuencia de la aplicación. 2.2. Implementación de la administración web Para configurar qué usuarios pueden usar la aplicación, qué marcadores existen, qué información mostrar al detectarlos y a quién, se ha instalado y configurado WampServer en su versión 2.1 e [12]. WampServer es un entorno de desarrollo web que permite crear aplicaciones web y ejecutarlas con Apache, PHP y una base de datos MySQL. Una vez instalado, se ha creado una base de datos con todas las tablas necesarias para poder realizar las acciones anteriormente comentadas. El diagrama de base de datos creado puede verse en la Figura 2.5 en la cual se han definido cuatro tablas. La primera de ellas, “usuario”, es la que se encarga de saber qué usuarios están registrados y por lo tanto pueden utilizar la aplicación. La segunda, “marcador”, es en donde se define el nombre del marcador; dicha tabla está relacionada con la tabla “usuario” para saber qué usuario a creado qué marcador y también con la tabla “rel_marcador_atributos” en donde se definen las características del marcador (información a mostrar y en qué fecha estará activo con dicha información). La última tabla, 10 Viabilidad de realidad aumentada para dar soporte a personas con dificultades de memoria “rel_atributos_usuario”, almacena qué usuarios pueden ver qué información y de qué marcadores así como si la información ofrecida les ha resultado útil o no. Figura 2.5 Diagrama de base de datos. Una vez expuesto el esquema de base de datos creado, se puede empezar a explicar la administración web, en la cual se ha creado una página principal de acceso, en donde será requerido que el usuario se autentique para poder entrar. La Figura 2.6 muestra una imagen de esta pantalla. Figura 2.6 Formulario de acceso a la administración web. Al realizar la autenticación de forma correcta se accede a una página web en donde aparece un listado de los marcadores creados por dicho usuario. Además se ofrece al usuario la posibilidad de poder crear un nuevo marcador ( ), editar uno ya existente ( ), eliminarlo ( ) o configurar una información acerca de este marcador para los usuarios que desee ( ). La Figura 2.7 muestra un ejemplo de lo comentado anteriormente. Implementando la aplicación 11 Figura 2.7 Listado de marcadores. En el caso en el que el usuario quiera configurar información acerca de un determinado marcador, una vez pulsado el botón ( ) del marcador deseado, le aparecerá un listado con todos los textos definidos para dicho marcador. Estos textos serán únicos para determinados usuarios y para un determinado periodo de tiempo. Además, se podrán crear tantos textos como se desee. La Figura 2.8 muestra un ejemplo de lo comentado. Figura 2.8 Listado de textos del marcador. En la administración también existe un módulo de usuarios en el que es posible crear, editar y eliminar los usuarios que tienen acceso a la aplicación. Las opciones del módulo de usuarios son las mismas que las que se pueden observar en la Figura 2.8. 12 Viabilidad de realidad aumentada para dar soporte a personas con dificultades de memoria 2.3. Implementación de un sistema basado en marcadores con AndAR Para poder realizar un sistema basado en marcadores se ha utilizado la librería AndAR (para plataforma Android) como base, aunque se le han aplicado varias modificaciones:  Se ha incluido un control de acceso de usuarios.  Se realizan múltiples conexiones a una base de datos creada para así realizar la autenticación, obtener información acerca de los marcadores a los que el usuario tiene acceso y guardar un feedback del usuario acerca de la información proporcionada por la aplicación.  Se ha adaptado la aplicación para que a la hora de detectar un marcador no muestre un objeto en 3D sino que muestre un objeto 2D con información, en este caso un toast.  Se ha incluido una librería de aprendizaje automático para que la información proporcionada al usuario sea dinámica y permita adaptarse a él. Esta última modificación será explicada en el apartado 3.3 de esta memoria. 2.3.1. Implementando el control de acceso Para implementar el control de acceso de usuarios es necesario crear la pantalla de interfaz de usuario por medio de un archivo xml, denominado en este caso control_login.xml. Esta pantalla estará formada por dos entradas de texto, una para introducir el usuario y otra para la contraseña, y por un botón, que realizará la autenticación. La Figura 2.9 muestra como se visualiza dicha pantalla en la aplicación. Figura 2.9 Formulario de autenticación. Implementando la aplicación 13 Para que esta pantalla aparezca como interfaz inicial al acceder a la aplicación, es necesario crear un filtro por intención (intent filter) en el archivo AndroidManifest.xml con las líneas mostradas en la Figura 2.10. <activity android:name=".Login" android:launchMode="singleTask" android:label="@string/app_name" android:screenOrientation="portrait"> <intent-filter android:priority="100"> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> Figura 2.10 Declaración de la interfaz inicial. Ahora es necesario tratar los distintos datos del formulario y realizar la comprobación de la autenticación. Para ello es necesario comunicar la aplicación con la base de datos MySQL. Para conectar a una base de datos MySQL remota desde un dispositivo Android se ha utilizado un script PHP que permite gestionar y ejecutar una secuencia de comandos mediante el protocolo HTTP desde el sistema Android. Para permitir a la aplicación conectarse a Internet es necesario declarar dichos permisos en el archivo AndroidManifest.xml por medio de la siguiente línea: <uses-permission android:name="android.permission.INTERNET"/> Una vez realizado lo anterior es necesario definir los objetos HttpClient y HttpPost para poder ejecutar la petición POST deseada una vez pulsado el botón “Login”. El código completo es el mostrado en la Figura 2.11. HttpClient httpclient=new DefaultHttpClient(); //en HttpPost se introduce el destino, es decir, el script PHP a ejecutar HttpPost httppost= new HttpPost("http://192.168.1.4/login.php"); Figura 2.11 Objetos HttpPost y HttpClient, código. A continuación es necesario definir qué datos se mandarán mediante el método POST. Ya que se trata de la autenticación del usuario, en este caso será necesario enviar el usuario y la contraseña para su verificación. Estos datos a 14 Viabilidad de realidad aumentada para dar soporte a personas con dificultades de memoria mandar mediante POST al script PHP se definen por medio de la utilización de una lista de NameValuePair. El código es el mostrado en la Figura 2.12. //se obtienen los valores del nombre de usuario y contraseña del formulario final EditText user = (EditText) findViewById(id.TxtUsuario); final EditText pass = (EditText) findViewById(id.TxtPassword); //se codifica el password mediante el algoritmo MD5 String password = pass.getText().toString(); String contrasena = ""; try { MessageDigest md; md = MessageDigest.getInstance("MD5"); byte[] md5hash = new byte[32]; md.update(password.getBytes("iso-8859-1"), 0, pass.length()); md5hash = md.digest(); contrasena = convertToHex(md5hash); } catch (UnsupportedEncodingException e1) { e1.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } //se declara la lista y se añaden los datos de usuario y contraseña a la lista List<NameValuePair> pairs = new ArrayList<NameValuePair>(); pairs.add(new BasicNameValuePair("user", user.getText().toString())); pairs.add(new BasicNameValuePair("pass", contrasena)); httppost.setEntity(new UrlEncodedFormEntity(pairs)); Figura 2.12 Definición de los datos a enviar mediante POST, código. Finalmente es necesario ejecutar la petición POST. Esto devuelve un objeto HttpResponse que permite extraer y analizar sus datos. El código utilizado se muestra en la siguiente línea: HttpResponse response = httpclient.execute(httppost); Una vez explicado cómo enviar datos por POST a un script PHP es necesario describir cómo debe ser este script. El script PHP utilizado se muestra en la Figura 2.13 y permite:  Conectar con la base de datos MySQL.  Ejecutar una consulta en función de los valores de los datos enviados por POST.  Devolver los datos de la consulta realizada utilizando el formato JSON. Implementando la aplicación 15 <?php //se realiza la conexión a la base de datos indicando el servidor MySQL, el nombre de //usuario y el password $conexion = mysql_connect("localhost", "root", "android"); //se selecciona la base de datos sobre la cual se va a ejecutar la consulta, en este //caso se denomina admin mysql_select_db("admin", $conexion); //se comprueba si el usuario y el password introducidos son correctos mediante los //datos recibidos por POST $query = "SELECT * FROM usuario WHERE usuario='".$_POST['user']."' AND password='".$_POST['pass']."'"; //se ejecuta la consulta $res = mysql_query($query, $conexion) or die(mysql_error()); while($e=mysql_fetch_assoc($res)) $output[]=$e; //se envían los datos print(json_encode($output)); //se cierra la conexión con el servidor mysql_close(); ?> Figura 2.13 Script PHP utilizado para la autenticación. El código de la Figura 2.13 devuelve los datos en formato JSON de la forma en la que se muestra a continuación. [{"id":"id","usuario":"username","password":"md5(password)","id_creador":"id_user"}] En donde se pueden observar todos los campos de la tabla usuario con sus respectivos valores. Para terminar, es necesario parsear estos datos para que puedan ser utilizados por la aplicación. Como por ejemplo para poder guardar en sesión el usuario autenticado. 2.3.2. Detección de marcadores Para poder llevar a cabo la definición y detección de los marcadores se utiliza el fichero CustomActivity.java que se encarga de registrar un objeto distinto para cada marcador y definir qué acción se llevará a cabo al detectar el 16 Viabilidad de realidad aumentada para dar soporte a personas con dificultades de memoria marcador, que será la de visualizar cierta información acerca de él en la pantalla. Para ello se utiliza el código mostrado en la Figura 2.14. //registra un objeto para cada tipo de marcador ARToolkit artoolkit = super.getArtoolkit(); //define qué acción se llevará a cabo al detectar el marcador CustomContext context = new CustomContext( json_data.getString("nombre"),80.0, new double[]{0,0},getApplicationContext(),json_data.getInt("id_marcador")); //vincula el resultado al objeto artoolkit.registerARObject(context); Figura 2.14 Definición del marcador, código. Los parámetros de la Figura 2.14 que contienen json_data.getString(“”) son datos obtenidos a través de un script PHP. En este caso, los datos obtenidos son los relacionados con la información guardada en la base de datos sobre el marcador (id y nombre del marcador). El script PHP para obtener la información acerca de los marcadores contiene la consulta que se muestra en la Figura 2.15. //se selecciona la informacion de los marcadores a los que tiene acceso el usuario //conectado teniendo en cuenta la fecha y hora actuales $query = "SELECT m.nombre, r.id_marcador FROM marcador m LEFT JOIN rel_marcador_atributos r ON m.id=r.id_marcador LEFT JOIN rel_atributos_usuario r2 ON r.id=r2.id_texto LEFT JOIN usuario u ON r2.id_usuario = u.id WHERE u.usuario='".$_POST['user']."' AND r.fecha_inicio<=NOW() AND r.fecha_fin>NOW()"; Figura 2.15 Consulta para obtener la información del marcador visualizado. 2.3.3. Devolución de información del marcador detectado El archivo CustomContext.java define como se mostrará el resultado una vez detectado el marcador. En este caso se define un toast, que es una notificación en Android a la cual se le pasa el texto a mostrar y la duración de la notificación. El código para realizar lo anterior se puede visualizar en la Figura 2.16. Implementando la aplicación 17 public CustomContext(String name, double markerWidth, double[] markerCenter, Context context, int markerId) { super(name, markerWidth, markerCenter); Toast.makeText(context, “texto a mostrar” , Toast.LENGTH_SHORT).show(); } Figura 2.16 Muestra del resultado, código. El resultado en la aplicación es el que se muestra en la Figura 2.17. Figura 2.17 Resultado al visualizar un marcador. 2.3.4. Registrando el feedback del usuario Para recibir un feedback del usuario se ha creado un menú en donde el usuario tiene la opción de expresar si la información le ha sido útil o no. Esto servirá a posteriori cuando el sistema implemente el aprendizaje automático y ofrezca al usuario recomendaciones, filtrando las mismas en función de las que le han sido de utilidad y las que no. Para poder recibir un feedback, ha sido necesario crear un menú en Android el cual está formado por dos botones, “Me gusta” y “No me gusta”, tal y como muestra el código de la Figura 2.18. <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/like" android:icon="@drawable/like" android:title="Me gusta" /> <item android:id="@+id/dislike" android:icon="@drawable/dislike" android:title="No me gusta" /> </menu> Figura 2.18 Menú, código. 24 Viabilidad de realidad aumentada para dar soporte a personas con dificultades de memoria Lo comentado anteriormente, se puede observar en la Figura 3.4. FileInputStream fIn = context.openFileInput("remember_training.arff"); FileInputStream fIn2 = context.openFileInput("remember_test.arff"); Reader isr = new InputStreamReader(fIn); Instances train = new Instances(new BufferedReader(isr)); Reader isr2 = new InputStreamReader(fIn2); Instances test = new Instances(new BufferedReader(isr2)); //clasificador utilizado para el entrenamiento Classifier cls = new IBk(1); train.setClassIndex(5); test.setClassIndex(5); cls.buildClassifier(train); //predicciones realizadas por Weka double pred = cls.classifyInstance(test.instance(0)); Figura 3.4 Código Weka en Java utilizado para predecir resultados. Evaluación experimental 25 CAPÍTULO 4. EVALUACIÓN EXPERIMENTAL En este capítulo se detallan los requisitos funcionales y la usabilidad de la aplicación creada. También se describen los componentes hardware y software utilizados para llevar a cabo las pruebas de funcionamiento de la aplicación. 4.1. Escenario de pruebas El escenario de pruebas consiste en la utilización de una red Wifi doméstica en la cual se ha conectado el cliente y el servidor. 4.1.1. Hardware Las pruebas de funcionamiento de la aplicación se han llevado a cabo usando un portátil como servidor y un teléfono móvil como cliente. El portátil utilizado es un Dell XPS L502X con un procesador Intel Core i5 a 2’4GHz, 4 GB de RAM y un adaptador de red Intel con conectividad Wifi. El dispositivo móvil es una HTC Desire, también conectada vía Wifi. 4.1.2. Software El sistema operativo del portátil es Windows 7; para poder desarrollar la aplicación ha sido necesario instalar eclipse con el plugin de Android y WampServer. El móvil utiliza el sistema operativo Android en su versión 2.2. Tanto el portátil como el móvil han sido configurados con IPs privadas de la subred 192.168.1.X siendo la IP asignada al portátil la 192.168.1.4 y la del teléfono móvil la 192.168.1.5. 4.1.3. Configuración Para llevar a cabo estas pruebas se han utilizado tres marcadores distintos con diferente información contextual: lugar (dentro o fuera de casa) y compañía (sólo o acompañado). Además, las líneas de entrenamiento iniciales de Weka eran cincuenta, puesto que no todos los días y horas habían sido entrenados. 26 Viabilidad de realidad aumentada para dar soporte a personas con dificultades de memoria 4.2. Requisitos 4.2.1 Requisitos funcionales La aplicación permite realizar diversas funciones, que son mostradas a continuación: Control de acceso de usuarios. Detección de marcadores. Devolución de una respuesta fiable. Registro del feedback del usuario. Todas estas funciones han sido verificadas en el entorno descrito. Es necesario comentar que la correcta detección de los marcadores es muy sensible a la luz y además, si existen dos marcadores prácticamente idénticos, su detección puede ser errónea. Para ello, conviene que los marcadores sean lo más distintos posible. La devolución de una respuesta fiable depende del número de líneas de entrenamiento de Weka, es decir de la cantidad de datos guardados con valoraciones del usuario y utilizados para predecir el resultado, las cuales eran inicialmente cincuenta. Cabe comentar que al final de la realización del proyecto este número se incrementó hasta los setenta. Se ha detectado que cuanto mayor es el número de líneas de entrenamiento mayor es la fiabilidad de la respuesta, siendo ésta no fiable si el número de líneas de entrenamiento para una determinada combinación de día y hora es inferior a cinco. Asimismo, el feedback del usuario es tenido en cuenta a la hora de predecir el resultado mediante Weka, ya que de este modo es más probable que la respuesta devuelta sea fiable. Finalmente, mencionar que la aplicación es muy sensible a la calidad de la red. Si ésta es mala, la aplicación funcionará pero habrá indicios de que la conexión no funciona correctamente. Por ejemplo, del mismo modo que en una comunicación en streaming, se podrán apreciar cortes mientras la aplicación espera respuesta del servidor, si ésta se demora demasiado. 4.3. Usabilidad Existen una gran variedad de métodos de evaluación aplicables a cualquier sistema y/o aplicación para medir su usabilidad. En este trabajo se han utilizado como referencia los cuestionarios de IBM [14] que permiten medir la satisfacción del usuario teniendo en cuenta la facilidad de uso del sistema. Estos cuestionarios recopilan datos objetivos (por ejemplo el tiempo de Evaluación experimental 27 realización de una tarea) y subjetivos (como la percepción que el usuario tiene sobre la facilidad de uso). Se ha tomado como referencia el cuestionario The After-Scenario Questionnaire (ASQ) de IBM en donde se realiza un corto cuestionario a los usuarios para evaluar su satisfacción una vez usada la aplicación. Las preguntas abordan importantes componentes como: la facilidad de realización de una tarea (en este caso, de obtener una respuesta fiable al visualizar un marcador), el tiempo para completar una tarea y la adecuación de información de apoyo (que en esta aplicación no se ha incluido debido a que el usuario sólo debe autenticarse y posteriormente enfocar con la cámara del móvil a un marcador para obtener una respuesta y no se ha considerado necesario). En este cuestionario los ítems se miden en una escala de siete puntos en donde en los extremos se encuentran los términos “Totalmente de acuerdo” para la 1 y “Totalmente en desacuerdo” para la 7. Además de estos tres componentes se han incluido varios componentes más procedentes del cuestionario The Computer System Usability Questionnaire (CSUQ) que permiten saber cómo se siente el usuario al utilizar la aplicación. Para la evaluación de la aplicación implementada se han utilizado tres marcadores distintos. Los usuarios han testeado la aplicación realizando los siguientes pasos: 1. Introducir un usuario erróneo. 2. Introducir un usuario correcto. 3. Enfocar con la cámara a un marcador. 4. Esperara hasta obtener una respuesta. 5. Introducir un feedback sobre si la información ofrecida le ha sido de utilidad o no. Los puntos 3, 4 y 5 se han repetido tantas veces como se ha deseado. 4.3.1. Usuarios avanzados Algunos comentarios destacados de los usuarios son: “Se perciben problemas de lentitud debido al funcionamiento mediante threads.” “Sería útil añadir cierta información de ayuda, para saber cómo funciona la aplicación.” “Porqué no mostrar el texto en 3D? Sería más visual.” “Esta aplicación es muy interesante. Puede ayudar a muchas personas en su día a día.” De todo lo que estos usuarios han comentado se extraen las siguientes conclusiones. Android no está optimizado para aplicaciones con realidad 28 Viabilidad de realidad aumentada para dar soporte a personas con dificultades de memoria aumentada debido a que su funcionamiento es mediante threads y comporta problemas de intercomunicación entre los mismos. Todos interactúan en la misma pantalla; mientras existe un thread que se encarga de mostrar lo que capta la cámara existen otros múltiples realizando operaciones en segundo plano. A todo esto hay que sumarle que se han añadido varios threads para interactuar con la pantalla, como por ejemplo en el caso de los toasts que aparecen por pantalla. Por todo esto se pueden llegar a apreciar ralentizaciones de la aplicación, cosa que se corrige con los nuevos terminales de doble núcleo o cuatro núcleos. Se podría mejorar la fluidez de la aplicación, se podría añadir información de ayuda acerca de la aplicación para facilitar su uso e incluso en vez de aparecer una etiqueta con el texto sería más visual que apareciera un texto en tres dimensiones. Cabe mencionar que para realizar estas mejoras propuestas serían necesarios móviles más potentes y no todo el mundo posee un móvil de altas prestaciones. 4.3.2. Usuarios normales Para conocer el grado de satisfacción del usuario en función de la usabilidad de la aplicación implementada, se ha creado un cuestionario de satisfacción. Dicho cuestionario es anónimo y ha sido contestado por un total de doce personas que han probado la aplicación con el objetivo principal de poder utilizar los resultados obtenidos para mejorar la misma de cara a una posible línea de trabajo futura. A continuación se muestra el cuestionario creado y en color rojo se resalta el valor medio de las calificaciones obtenidas. Rodee la calificación que usted otorga a cada una de las siguientes afirmaciones. Estoy satisfecho con lo fácil que es utilizar la aplicación. Totalmente de acuerdo 1 2 3 4 5 6 7 Totalmente en desacuerdo Sería necesaria alguna información de apoyo para saber cómo funciona la aplicación. Totalmente de acuerdo 1 2 3 4 5 6 7 Totalmente en desacuerdo Utilizar la aplicación es simple. Totalmente de acuerdo 1 2 3 4 5 6 7 Totalmente en desacuerdo Evaluación experimental 29 Estoy satisfecho con el tiempo de espera necesario para obtener información. Totalmente de acuerdo 1 2 3 4 5 6 7 Totalmente en desacuerdo Me siento cómodo con la aplicación. Totalmente de acuerdo 1 2 3 4 5 6 7 Totalmente en desacuerdo La información ofrecida es efectiva y me ayuda a realizar las tareas del día a día. Totalmente de acuerdo 1 2 3 4 5 6 7 Totalmente en desacuerdo Fue fácil aprender a usar la aplicación. Totalmente de acuerdo 1 2 3 4 5 6 7 Totalmente en desacuerdo 30 Viabilidad de realidad aumentada para dar soporte a personas con dificultades de memoria CAPÍTULO 5. CONCLUSIONES Y LÍNEAS FUTURAS 5.1. Impacto medioambiental Este proyecto no tiene un impacto medioambiental elevado por estar basado en la implementación de una aplicación en Android. Se podría tener en consideración el impacto que producen sobre el medio ambiente los teléfonos móviles por ser difícilmente reciclables, incluir sustancias tóxicas para el entorno (como el PVC usado en el cableado de los cargadores, ya retirado por la mayoría de los fabricantes) y su consumo de energía. Este último factor también debe ser considerado en los demás elementos utilizados, como es el caso del ordenador y del router. 5.2. Análisis de los objetivos marcados Una vez visto el resultado se puede decir que se han cumplido los objetivos del proyecto. Se ha implementado una aplicación en Android utilizando la librería AndAR para conseguir un sistema de realidad aumentada. Otra librería utilizada, Weka, ofrece un sistema capaz de aprender por sí mismo. También se ha creado la administración web a través de la cual configurar el acceso a la aplicación y la información acerca de los marcadores. Esto último es requisito para la librería Weka ya que necesita de un conjunto de líneas de entrenamiento iniciales para poder ofrecer una respuesta fiable. Finalmente, se ha realizado una evaluación experimental para detectar qué piensan los usuarios de la aplicación y cómo ésta podría mejorarse. Cabe decir que los cuatro requisitos funcionales marcados como objetivos al inicio del proyecto también se han llevado a cabo. Estos son: control de acceso de usuarios, detección de marcadores, devolución de una respuesta fiable y registro del feedback del usuario. Hay que recordar que la detección de marcadores depende mucho de la luminosidad de la sala y si ésta no es similar a las condiciones que existían al crear las plantillas de los diferentes marcadores puede que éstos no sean detectados de forma correcta. Por eso se recomienda crear las plantillas en un sitio con buena luminosidad. Al utilizar la librería AndAR existen varias restricciones en los marcadores: estos deben ser cuadrados y deben ser de color gris o negro, ya que esta librería basa su funcionamiento, como ya se ha explicado anteriormente, en información de color de los patrones. Se han ido realizando introducciones a los diferentes conceptos utilizados, como realidad aumentada y aprendizaje automático, para que un usuario sin experiencia en este campo pueda entender sin problemas cómo funciona la aplicación. Conclusiones y líneas futuras 31 5.3. Conclusiones del proyecto La principal conclusión es que en este proyecto se ha podido demostrar la posibilidad de realizar una aplicación para ayudar a personas con problemas de memoria. Para poder conseguirlo ha sido necesario seguir un proceso durante la realización del proyecto, el cual se detalla a continuación. El primer paso antes de empezar fue aprender cómo programar en Android y qué solución aportar al problema inicial. Tras un tiempo de formación en un lenguaje de programación muy usado actualmente, se pasó a investigar qué librerías permitirían realizar la solución pensada. Aquí aparecieron AndAR y Weka, cuyo requisito fue la utilización de un servidor con base de datos. Para ello se decidió utilizar WAMP ya que esta herramienta se había usado durante la carrera y permitía usar PHP, lenguaje con el cual había trabajado durante algunos años. Desde un principio, la idea del proyecto fue difícil de implementar pero interesante. Éste me permitía introducir en el mundo de Android y crear una aplicación para ayudar a otras personas. Si usando un servidor sencillo y un dispositivo móvil se ha logrado realizar este proyecto, no es difícil pensar que Android tiene mucho potencial y sólo es necesario encontrar qué aplicación realizar. Como recomendaciones para la realización de aplicaciones similares decir que ambas librerías, AndAR y Weka, han permitido desarrollar la idea planteada inicialmente teniendo mínimos conocimientos de los mismos. Siendo éstas herramientas con funcionalidades suficientes para las necesidades expuestas en este proyecto y no muy complicadas de utilizar. En este sentido pueden contener alguna limitación, como por ejemplo en el caso de AndAR, que al ser una librería sencilla no permite localización en interiores. Esto no ha sido inconveniente en este proyecto, dado que no se requería dicha funcionalidad debido a que cada marcador tenía vinculada cierta información contextual. 5.4. Conclusión personal Ha sido muy interesante realizar este proyecto ya que he aprendido a programar en Android, tecnología en auge a día de hoy. Además del lenguaje de programación, el proyecto me ha permitido apreciar los diferentes procesos que ocurren desde que se enfoca con una cámara hasta que se superpone un objeto virtual, que es lo que se consigue mediante la realidad aumentada. Cabe decir que ha habido una mayor dificultad en el aprendizaje del lenguaje de programación Android porque al crear dicha aplicación se partía de una base ya hecha y había detalles que no era posible cambiar, cosa que ha dificultado el añadir las distintas funciones implementadas. 32 Viabilidad de realidad aumentada para dar soporte a personas con dificultades de memoria Este proyecto me ha permitido utilizar varios conocimientos a nivel de base de datos que había aprendido a lo largo de la carrera y en el mundo laboral. Juntando el área desconocida de Android y un servidor con base de datos y PHP se ha logrado llegar al objetivo de crear una aplicación que permita ayudar a recordar las tareas del día a día a personas con dificultades de memoria. 5.5. Líneas futuras Tras este proyecto se podría ampliar la aplicación implementada para qué no solamente se prediga la próxima acción a realizar sino que prediga las distintas acciones a hacer a lo largo del día y éstas se muestren como en una especie de calendario. También se podría vincular la aplicación al google calendar e insertar automáticamente una alarma para cada una de las distintas acciones a realizar. Hay que tener en cuenta que estas acciones podrían cambiar dependiendo de la información contextual, por lo que esta interacción entre cliente y servidor añadiría carga al sistema. Por otra parte, también se podría ampliar la detección de marcadores para que estos no tengan que tener un borde cuadrado negro sino que sea capaz de detectar marcadores con formas y/o colores distintos. Finalmente se podría pasar el procesado de datos de Weka al servidor, pero si el aumento de la cantidad de usuarios es muy elevado se tendría que ampliar el número de servidores. Bibliografía 33 BIBLIOGRAFÍA [1] “Proyecto OnTheBus”, disponible en Internet: <http://www.onthebusproject.com/> [última fecha de acceso: Junio 2012] [2] “Mobile accessibility for Android”, disponible en Internet: < http://www.codefactory.es/en/products.asp?id=415> [última fecha de acceso: Junio 2012] [3] Ronald Azuma. “A survey of augmented reality”, disponible en Internet: <http://www.cs.unc.edu/~azuma/ARpresence.pdf> [última fecha de acceso: Junio 2012] [4] “AndAR - Android Augmented Reality”, disponible en Internet: <http://code.google.com/p/andar/> [última fecha de acceso: Junio 2012] [5] “How to build applications based on AndAR”, disponible en Internet: <http://code.google.com/p/andar/wiki/HowToBuildApplicationsBasedOnAndAR> [última fecha de acceso: Junio 2012] [6] “Eclipse software”, disponible en Internet: <http://www.eclipse.org/downloads/> [última fecha de acceso: Junio 2012] [7] “ADT plugin”, disponible en Internet: <http://developer.android.com/sdk/eclipse-adt.html> [última fecha de acceso: Junio 2012] [8] “AndAR Sample Project”, disponible en Internet: <http://andar.googlecode.com/files/AndARSampleProject.zip> [última fecha de acceso: Junio 2012] [9] “mk_patt para Windows”, disponible en Internet: <http://sourceforge.net/projects/artoolkit/files/artoolkit/2.72.1/ARToolKit-2.72.1bin-win32.zip/download> [última fecha de acceso: Junio 2012] [10] “código fuente de mk_patt”, disponible en Internet: <http://sourceforge.net/projects/artoolkit/files/artoolkit/2.72.1/ARToolKit2.72.1.tgz/download> [última fecha de acceso: Junio 2012] [11] “glut32.dll”, disponible en Internet: <http://user.xmission.com/~nate/glut.html> [última fecha de acceso: Junio 2012] [12] “WampServer”, disponible en Internet: <http://www.wampserver.com/en/presentation.php> [última fecha de acceso: Junio 2012] [13] “Weka for Android”, disponible en Internet: <https://github.com/rjmarsan/Weka-for-Android> [última fecha de acceso: Junio 2012]