Interfaz de control de una habitación domótica mediante la posición de los ojos
Texto completo
(2) ii.
(3) ´ UNIVERSIDAD POLITECNICA DE MADRID ´ ESCUELA TECNICA SUPERIOR DE INGENIER´IA Y ˜ INDUSTRIAL DISENO Grado en Ingenier´ıa Electr´onica y Autom´atica Industrial TRABAJO FIN DE GRADO. Interfaz de control de una ´ n domo ´ tica mediante la habitacio ´ n de los ojos posicio. Daniel G´omez V´azquez Miguel Hernando Guti´errez Alberto Brunete Gonz´ alez.
(4) iv.
(5) v c Copyright 2017. Daniel G´ omez V´ azquez Esta obra est´ a licenciada bajo la licencia Creative Commons Atribuci´on-NoComercial-SinDerivadas 3.0 Unported (CC BY-NC-ND 3.0). Para ver una copia de esta licencia, visite http://creativecommons.org/licenses/by-nc-nd/3.0/deed.es o env´ıe una carta a Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, EE.UU. Todas las opiniones aqu´ı expresadas son del autor, y no reflejan necesariamente las opiniones de la Universidad Polit´ecnica de Madrid..
(6) vi.
(7) vii. T`Itulo: Robohealth Autor: Daniel G´omez V´azquez Tutor: Alberto Brunete Gonz´alez Cotutor: Miguel Hernando Guti´errez. EL TRIBUNAL Presidente: Vocal: Secretario:. Realizado el acto de defensa y lectura del Trabajo Fin de Grado el d´ıa ....... de .................... de ... en .........., en la Escuela T´ecnica Superior de Ingenier´ıa y Dise˜ no Industrial de la Universidad Polit´ecnica de Madrid, acuerda otorgarle la CALIFI´ de: CACION. VOCAL. SECRETARIO. PRESIDENTE.
(8) viii.
(9) Agradecimientos Agradezco a mi familia, en especial a mis padres y hermana, por el esfuerzo realizado durante todos estos a˜ nos y, particularmente, por el u ´ltimo a˜ no y medio y todo lo que hemos pasado desde entonces. Tambi´en me gustar´ıa agradecer a los compa˜ neros de la universidad por todo el apoyo recibido y haber formado un buen grupo de amigos, aunque en ocasiones nos cueste vernos. Me gustar´ıa agradecer a Alberto y a Miguel por todo lo que me han ayudado durante el tiempo del proyecto, sac´andome de m´as de un apuro en muchas ocasiones y siempre estando dispuestos a ayudarme. As´ımismo, me gustar´ıa tambi´en agradecer a las personas que han ayudado a llevar a cabo el proyecto, especialmente a Manu y a V´ıctor, partes indispensables del proyecto integrado. Tambi´en me gustar´ıa agradecer a todas las personas voluntarias que han realizado las diversas pruebas realizadas durante el proyecto, ayud´andonos a sacar todos los resultados obtenidos. Por u ´ltimo, menci´on especial a mi pareja, que siempre ha estado conmigo durante la ejecuci´on del proyecto aguantando esos momentos en los que no entend´ıa ciertas cosas, y por ser la persona que m´as pruebas ha realizado sobre la aplicaci´on, d´andome siempre una opini´on sincera para mejorar el desarrollo realizado.. ix.
(10) x. AGRADECIMIENTOS.
(11) Resumen Este proyecto tiene como objetivo la adaptaci´on y desarrollo a realizar para que la habitaci´on de un hospital donde se encuentre ingresado un paciente pueda ser controlada por ´este. Para abarcar la gran diversidad de enfermedades que pueden existir en un entorno hospitalario, se ha adaptado la aplicaci´on desarrollada para que pueda ser controlada empleando la voz, gestos u ojos del paciente. De esta manera, el paciente puede realizar las tareas b´asicas de una habitaci´on como el encendido o apagado de diversas luces, subida o bajada de persianas o aviso a los servicios m´edicos en caso de emergencia, entre otros. Para realizar el control de manera satisfactoria, se ha adquirido un controlador de Vera capacitado para realizar la dom´otica de la habitaci´on. Con respecto a la aplicaci´on desarrollada, se ha realizado empleando un entorno de desarrollo multiplataforma llamado Qt Creator y se ha escrito en c´odigo C++. La aplicaci´on final tendr´a diversas ventanas por las que el paciente podr´a navegar para poder realizar el control de los diversos aspectos de la habitaci´on, como los sensores o actuadores disponibles. El desarrollo realizado en este proyecto se centra especialmente en la construcci´on de la aplicaci´on destinada a realizar el control sobre la habitaci´on y, adicionalmente, al control de ´esta empleando los ojos del paciente. Para ello, se ha adquirido un Eye Tracker de la marca Tobii que realizar´a el seguimiento de los ojos del usuario, permitiendo que ´este interact´ ue con la aplicaci´on gui˜ nando cualquiera de sus ojos, manteni´endolos cerrados o simplemente mirando fijamente. Por u ´ltimo, se ha integrado el software realizado en este proyecto con la interacci´on empleando la voz (empleando un micr´ofono) y empleando gestos (con la ayuda de una Kinect), empleando el c´odigo realizado por otros estudiantes.. Palabras clave: Eye Tracker, Qt Creator, Surface, Kinect, IoT, Vera.. xi.
(12) xii. RESUMEN.
(13) Abstract This Project has, as objective, the necessary adaptation and development so that the hospital room, where a patient is hospitalized, can be controlled by himself. In order to cover the great variety of diseases which can exist in a hospital environment, the application has been adapted so that it can be controlled by patient voice, signs or eyes. On this manner, the patient can do the basic tasks of a room as turning on or off various lights, up or down blinds or notice to medical services, among others. To make the control on a correct manner a Vera controller, which can perform the home automation of the room, has been bought. Regarding to the application, it has been performed using a multiplatform development environment called Qt Creator and it has been written in C++. The final application will have different windows on which the patient could surf in order to make the control of various devices of the room, like actuators or sensors. The development done in this project is focused, specially, in the construction of the application destined to make the control over the room and, additionally, the control of this room using patient eyes. In order to make it, an Eye Tracker, which will make the tracking of the user’s eyes, has been bought, allowing that the patient can interact with the application by winking, keeping their eyes closed or looking at the screen fixedly. In the end, the software performed in this project has been integrated with the interaction using the voice mode (by a microphone) or doing different signs (by a Kinect), using the code made by other students.. Keywords: Eye Tracker, Qt Creator, Surface, Kinect, IoT, Vera Controller.. xiii.
(14) xiv. ABSTRACT.
(15) ´Indice general Agradecimientos. IX. Resumen. XI. Abstract. XIII. ´Indice. XVI. 1. Introducci´ on 1.1. Motivaci´on del proyecto . 1.2. Objetivos . . . . . . . . . 1.3. Materiales utilizados . . . 1.4. Estructura del documento. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. 1 1 2 3 3. 2. Estado del arte 2.1. Dispositivos . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1. Emotion Tool . . . . . . . . . . . . . . . . . . . . 2.1.2. Eye Tracker basado en FPGA . . . . . . . . . . . 2.1.3. Movimiento Brazo Rob´otico . . . . . . . . . . . . 2.1.4. Silla de ruedas inteligente basada en Eye Tracking 2.2. Aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1. Neuromarketing . . . . . . . . . . . . . . . . . . . 2.2.2. Autismo . . . . . . . . . . . . . . . . . . . . . . . 2.2.3. Cirug´ıa . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. 5 5 5 5 6 7 7 8 8 9. 3. Entorno de trabajo 3.1. Internet de las Cosas (IoT) 3.2. Habitaci´on de Pruebas . . 3.3. Dispositivos . . . . . . . . 3.3.1. Vera . . . . . . . . 3.3.2. Kinect . . . . . . . 3.3.3. EyeTracker Tobii .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. 11 11 12 14 14 15 16. . . . . .. 17 17 18 21 23 23. 4. Dise˜ no 4.1. Patron de Dise˜ no . . . . . 4.2. Modelo UML . . . . . . . 4.3. Interfaces . . . . . . . . . 4.3.1. Pantalla Conexi´on 4.3.2. Pantalla Principal .. . . . .. . . . . . . . . . . .. . . . .. . . . . . . . . . . .. . . . .. . . . . . . . . . . .. . . . .. . . . . . . . . . . .. xv. . . . .. . . . . . . . . . . .. . . . .. . . . . . . . . . . .. . . . .. . . . . . . . . . . .. . . . .. . . . . . . . . . . .. . . . .. . . . . . . . . . . .. . . . .. . . . . . . . . . . .. . . . .. . . . . . . . . . . .. . . . .. . . . . . . . . . . .. . . . .. . . . . . . . . . . .. . . . .. . . . . . . . . . . .. . . . .. . . . . . . . . . . .. . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . ..
(16) ´INDICE GENERAL. xvi. 4.3.3. Pantalla Configuraci´on 4.3.4. Pantalla Sensores . . . 4.3.5. Pantalla de Actuadores 4.3.6. Pantalla Multimedia . 4.3.7. Cuadro de Di´alogo . . 4.4. Modos de Funcionamiento . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. 24 26 26 27 27 28. 5. Implementaci´ on 5.1. Controlador de Vera . . . . . . . . . . . . 5.2. Entorno de Desarrollo . . . . . . . . . . . 5.3. Control del Eye Tracker . . . . . . . . . . 5.3.1. Linkado del programa al dispositivo 5.3.2. Widgets especiales . . . . . . . . . 5.3.3. Lectura del Eye Tracker . . . . . . 5.3.4. Click . . . . . . . . . . . . . . . . . 5.3.5. Cierre de Ojos . . . . . . . . . . . . 5.3.6. Interaccion con los usuarios . . . . 5.4. Integraci´on con Voz . . . . . . . . . . . . . 5.5. Integraci´on con Gestos . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. 31 31 32 34 34 35 36 38 38 39 39 39. 6. Resultados y discusi´ on 6.1. Resultados . . . . . . . . . . . . 6.1.1. Tiempos de pesta˜ neo . . 6.1.2. Manejo de la aplicaci´on . 6.2. Discusi´on . . . . . . . . . . . . 6.2.1. Tiempos de Pesta˜ neo . . 6.2.2. Manejo de la Aplicaci´on 6.2.3. Errores . . . . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. 41 41 41 42 48 48 49 50. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. 7. Gesti´ on del proyecto 51 7.1. Planificaci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 7.2. Presupuesto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 8. Conclusiones 53 8.1. Conclusi´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 8.2. Desarrollos futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 A. Anexo A. 55. Bibliografia. 65.
(17) ´Indice de figuras 2.1. 2.2. 2.3. 2.4.. Eye Tracker basado en c´amara web . . Eye Tracker basado en placa hardware Reconocimiento Ocular . . . . . . . . . Mapa de Calor de Movimiento Ocular .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. 6 7 7 8. 3.1. 3.2. 3.3. 3.4. 3.5. 3.6.. Conexiones IoT . . . . Habitaci´on de pruebas Habitaci´on de pruebas Controlador Vera . . . Kinect . . . . . . . . . Tobii EyeX . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. 12 13 14 15 16 16. 4.1. Esquema de la aplicaci´on desarrollada . . 4.2. Dise˜ no del patr´on MV . . . . . . . . . . 4.3. Diagrama de Clases UML . . . . . . . . 4.4. Diagrama de Secuencias UML . . . . . . 4.5. Diagrama de Actividad UML . . . . . . 4.6. Modos de interaccionar con la aplicaci´on 4.7. Pantalla de Conexi´on . . . . . . . . . . . 4.8. Pantalla Principal . . . . . . . . . . . . . 4.9. Pantalla de Configuraci´on . . . . . . . . 4.10. Pantalla de Sensores . . . . . . . . . . . 4.11. Pantalla de Actuadores . . . . . . . . . . 4.12. Pantalla Multimedia . . . . . . . . . . . 4.13. Pantalla Im´agenes . . . . . . . . . . . . . 4.14. Cuadro de Di´alogo . . . . . . . . . . . .. . . . . . . . . . . . . . .. . . . . . . . . . . . . . .. . . . . . . . . . . . . . .. . . . . . . . . . . . . . .. . . . . . . . . . . . . . .. . . . . . . . . . . . . . .. . . . . . . . . . . . . . .. . . . . . . . . . . . . . .. . . . . . . . . . . . . . .. . . . . . . . . . . . . . .. . . . . . . . . . . . . . .. . . . . . . . . . . . . . .. . . . . . . . . . . . . . .. . . . . . . . . . . . . . .. . . . . . . . . . . . . . .. . . . . . . . . . . . . . .. 17 18 19 20 21 22 24 25 26 26 27 28 28 29. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. 5.1. Signals y Slots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 5.2. Esquema L´ogica Comprobaci´on Click . . . . . . . . . . . . . . . . . . 37 6.1. 6.2. 6.3. 6.4.. Programa C´alculo Tiempos . . . . . . . . . . . . . . . . . . . . . . Contestaciones a la pregunta 1 - “Indique su sexo” . . . . . . . . . . Contestaciones a la pregunta 2 - “Indique el perfil empleado” . . . . Contestaciones a la pregunta 3 - “¿Toma medicaci´on habitualmente que pueda afectar a su rendimiento cognitivo?” . . . . . . . . . . . 6.5. Contestaciones a la pregunta 4 - “¿Las instrucciones para la utilizaci´on de la aplicaci´on han resultado claras y adecuadas?” . . . . . . 6.6. Contestaciones a la pregunta 5 - “¿Le resulta intuitivo la funci´on de los distintos botones?” . . . . . . . . . . . . . . . . . . . . . . . . . xvii. . 41 . 44 . 44 . 44 . 45 . 45.
(18) ´INDICE DE FIGURAS. xviii. 6.7. Contestaciones a la pregunta 6 - “¿Le ha resultado sencillo la interacci´on con los botones mediante el gui˜ no?” . . . . . . . . . . . . . . 6.8. Contestaciones a la pregunta 7 - “¿Le ha resultado sencillo la interacci´on con los botones mediante la fijaci´on?” . . . . . . . . . . . . . 6.9. Contestaciones a la pregunta 8 - “¿Le ha resultado sencillo realizar el cambio entre ambos modos de funcionamiento?” . . . . . . . . . . . 6.10. Contestaciones a la pregunta 9 - “¿Cree que se entiende en qu´e estado se encuentra cada actuador?” . . . . . . . . . . . . . . . . . . . . . 6.11. Contestaciones a la pregunta 10 - “¿Le resulta sencilla la interacci´on con los usuarios disponibles?” . . . . . . . . . . . . . . . . . . . . . 6.12. Contestaciones a la pregunta 11 - “¿En qu´e grado cree que la aplicaci´on ser´a u ´til para pacientes de hospital?” . . . . . . . . . . . . . . 6.13. Contestaciones a la pregunta 12 - “¿Qu´e puntuaci´on le dar´ıa a la aplicaci´on tras su experiencia de usuario?” . . . . . . . . . . . . . .. . 45 . 46 . 46 . 46 . 47 . 47 . 47. 7.1. Diagrama de Gantt . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 A.1. A.2. A.3. A.4. A.5. A.6. A.7. A.8. A.9.. UML Modelo . . . . . UML EyeX . . . . . . Base de Datos UML . Conexi´on UML . . . . Principal UML . . . . Sensores UML . . . . . Actuadores UML . . . Configuraci´on UML . . Cuadro de Texto UML. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. 56 57 58 59 60 61 61 62 63.
(19) ´Indice de tablas 6.1. Usuarios con gafas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 6.2. Usuarios sin gafas ni lentillas . . . . . . . . . . . . . . . . . . . . . . . 42 6.3. Respuestas de la encuesta . . . . . . . . . . . . . . . . . . . . . . . . 48 7.1. Presupuesto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51. xix.
(20) xx. ´INDICE DE TABLAS.
(21) Cap´ıtulo 1. Introducci´ on En la aplicaci´on desarrollada en este proyecto, el usuario realizar´a el control de una aplicaci´on empleando sus ojos. Este desarrollo forma parte del proyecto Robohealth, que trata de un proyecto coordinado cuyo principal objetivo es el desarrollo de dispositivos de asistencia y rehabilitaci´on a pacientes en general y, especialmente, a personas con necesidades especiales. Este u ´ltimo colectivo est´a formado por pacientes que padecen diferentes enfermedades como son movilidad reducida, capacidad cognitiva limitada y patolog´ıas cr´onicas, entre otros. Para poder desarrollar el proyecto Robohealth de manera satisfactoria, se ha dividido en cuatro subproyectos. Este informe se centra en uno de estos mencionados subproyectos, el correspondiente a entornos inteligentes para personas con necesidades especiales que convivan con robots. Particularmente, la tarea principal abordada en este proyecto ha sido el desarrollo de una interfaz multimodal para que el paciente pueda controlar diferentes aspectos de la habitaci´on donde se encuentra hospitalizado. Esto le otorgar´a un grado de independencia que, de otra manera, tendr´ıan bastante dif´ıcil conseguir. Para conseguir manejar la habitaci´on para la mayor parte de usuarios disponibles, se han habilitado varios modos de funcionamiento y, para ello, se emplean otros proyectos realizados por otros estudiantes.. 1.1.. Motivaci´ on del proyecto. La motivaci´on de este proyecto es tratar de conseguir que personas con diferentes problemas, en concreto pacientes que se encuentran hospitalizados en ese momento, sean menos dependientes de gente externa, pudiendo ellos mismos realizar el control de la habitaci´on donde se encuentran. Como puede tratarse de gente que se encuentre inm´ovil, se pens´o en desarrollar este control de la habitaci´on empleando los ojos del usuario. Para ello se ha desarrollado esta aplicaci´on con ayuda de un dispositivo para seguimiento de ojos. Adicionalmente y para tratar m´as posibles problemas de los pacientes, se han implantado diferentes modos de manejo de la aplicaci´on. Por ejemplo, si un usuario se encuentra hospitalizado porque le hayan operado de la vista, este usuario podr´ıa controlar la habitaci´on empleando su propia voz. Si, en lugar de eso, el usuario se encuentra hospitalizado pero s´ı puede realizar movimientos, este paciente tendr´a la posibilidad de emplear el modo Gestos y, de esta manera, emplear el que m´as c´omodo le resulte para su salud. 1.
(22) ´ CAP´ITULO 1. INTRODUCCION. 2. Con respecto al proyecto Robohealth concretamente (donde est´a enmarcado este sub-proyecto), el Plan Estatal de Investigaci´on Cient´ıfica, T´ecnica y de Innovaci´on 2013-2016 define como uno de los retos el de ”Salud, Cambio Demogr´afico y Bienestar”. Dentro de este reto, aparece un subreto cuya tem´atica es “Rehabilitaci´on y el desarrollo de entornos asistidos y orientados al abordaje de la cronicidad”. Adem´as de esto, el proyecto tambi´en se encuadra entre los retos del futuro Programa Europeo de I+D Horizon2020. En este caso, se establecen la creaci´on de robots asistenciales en entornos sanitarios y los robots de rehabilitaci´on como l´ıneas principales de actuaci´on. Por estas razones se decidi´o llevar a cabo el proyecto Robohealth, incluyendo adem´as dentro del proyecto el desarrollo de entornos inteligentes. Dentro del proyecto se establecen diferentes tecnolog´ıas a estudiar que permitir´an desarrollar soluciones rob´oticas para el colectivo de personas enfermas, discapacitadas y con enfermedades cr´onicas, colectivo destinatario del reto expuesto previamente.. 1.2.. Objetivos. Los objetivos de la aplicaci´on desarrollada se pueden dividir en funci´on de su importancia. Por un lado tenemos, como objetivos principales, el desarrollo de la aplicaci´on que funcione de manera que el paciente pueda controlar la mayor parte de los aspectos posibles de la habitaci´on empleando sus ojos. Adem´as, se han habilitado dos modos diferentes de funcionamiento para que los pacientes que no sepan gui˜ nar los ojos puedan igualmente emplear esta aplicaci´on explotando todo su potencial. Adicionalmente, algunos de los objetivos principales del proyecto es la integraci´on de otros dos modos de funcionamiento diferentes para que la aplicaci´on pueda ser controlada mediante la voz del usuario o empleando diferentes gestos. Estos dos u ´ltimos modos de funcionamiento tienen los diferentes comandos y gestos reconocidos guardados, no reconociendo el resto como funcionalidades del programa. Adem´as, se plantea la implantaci´on de un men´ u especial para la interacci´on con el dispositivo espec´ıfico del seguimiento de ojos. De esta manera, cuando a un paciente se le de el alta, la creaci´on del nuevo usuario y la eliminaci´on del anterior se pueda realizar desde la propia aplicaci´on. Esto posibilitar´a que la aplicaci´on no tenga que ser cerrada nunca, siendo la funcionalidad principal de la surface a la que va conectada. Por u ´ltimo, tambi´en se plantea un men´ u de favoritos para que el usuario pueda seleccionar diferentes dispositivos entre los disponibles de la habitaci´on para que estos dispositivos puedan ser controlados desde la pantalla principal como un acceso directo. Por otra parte, como objetivos secundarios se ha pensado en incorporar diferentes aspectos de ocio para el usuario, como la visualizaci´on de im´agenes o v´ıdeos y la inclusi´on de diferentes sonidos que puede reproducir el usuario. Otro de los objetivos destacables para el proyecto es la implantaci´on de esta aplicaci´on en una tableta que ir´a unida a un brazo rob´otico. Este brazo estar´a anclado a la cama y tendr´a, como funcionalidad, la colocaci´on de la tableta enfrente del usuario para poder realizar el control..
(23) 1.3. MATERIALES UTILIZADOS. 1.3.. 3. Materiales utilizados. El hardware empleado para este proyecto consta de: EyeTracker: Dispositivo empleado para evaluar la posici´on de los ojos del usuario o hacia d´onde se encuentra mirando en un momento determinado. Vera: Controlador empleado para interconectar todos los dispositivos de la habitaci´on con el programa creado. Sensores y actuadores de la habitaci´on de pruebas. El software empleado ha sido el siguiente: Visual Studio: Plataforma en la que se empez´o a desarrollar el software creado. QtCreator: Plataforma en la que finalmente se ha desarrollado el software que conecta los dispositivos con el controlador. Aqu´ı se encuentra toda la l´ogica de funcionamiento de nuestro programa. Tobii EyeTracking: Software proporcionado por el fabricante del EyeTracker empleado para conectar ´este al ordenador. BitBucket: Software empleado para realizar un sistema de control de versiones del programa creado.. 1.4.. Estructura del documento. A continuaci´on y para facilitar la lectura del documento, se detalla el contenido de cada cap´ıtulo. En el cap´ıtulo 1 se realiza una introducci´on al proyecto realizado, donde se especifican los objetivos principales del proyecto. En el cap´ıtulo 2 se hace un repaso del estado actual de la tecnolog´ıa empleada en este proyecto. En este caso, se realiza un breve repaso de los dispositivos parecidos al Eye Tracker empleado y de las aplicaciones encontradas donde se emplean. En el cap´ıtulo 3 se describe detalladamente el entorno de trabajo donde se ha desarrollado el proyecto. Este se refiere al internet de las cosas y a los dispositivos f´ısicos empleados (as´ı como la habitaci´on de pruebas construida). En el cap´ıtulo 4 se muestra el dise˜ no que se ha llevado a cabo en el desarrollo software. Para ello, se ense˜ nan las interfaces y modelo UML empleado, as´ı como el patr´on de dise˜ no empleado finalmente. En el cap´ıtulo 5 se desarrolla la l´ogica empleada para la conexi´on y control del dispositivo con la aplicaci´on desarrollada. Adem´as, tambi´en se crean dos apartados espec´ıficos para la integraci´on de la aplicaci´on con los otros modos de funcionamiento. En el cap´ıtulo 6 se muestran los resultados obtenidos tras las pruebas realizadas, as´ı como las conclusiones obtenidas de esos resultados..
(24) 4. ´ CAP´ITULO 1. INTRODUCCION. En el cap´ıtulo 7 se muestra un diagrama de Gantt donde se especifica c´omo han sido las etapas llevadas a cabo hasta completar la aplicaci´on final. En el cap´ıtulo 8 se muestran las conclusiones obtenidas y algunos desarrollos futuros que se podr´ıan llevar a cabo tras la realizaci´on de este proyecto..
(25) Cap´ıtulo 2. Estado del arte En este cap´ıtulo se va a dar una visi´on de las diferentes aplicaciones que tiene actualmente el Eye Tracking, as´ı como de los diferentes dispositivos que se han creado para ello. Exiten plataformas de sotware libre, como Gaze Speaker1 que permiten instalarse de manera gratis en el ordenador del usuario. En concreto, esta plataforma es compatible con el Eye Tracker empleado en este proyecto. Provee al usuario de diferentes pantallas para responder a preguntas o un teclado para poder comunicarse mediante el empleo de los ojos, entre otras cosas.. 2.1.. Dispositivos. A continuaci´on se van a mostrar algunos dispositivos similares al Eye Tracker empleado o diversos estudios en los que se ha desarrollado un Eye Tracker. 2.1.1.. Emotion Tool. Por otra parte, existen otras t´ecnicas de investigaci´on que incluso utilizan datos de parpadeo, velocidad de movimiento y dilataci´on de la pupila. Este es el caso de la tecnolog´ıa Emotion Tool de iMotions. Este software puede medir la respuesta emocional del ser humano ante un est´ımulo visual mediante el an´alisis de la expresi´on facial y movimiento ocular. Por ejemplo, la dilataci´on de la pupila se ha relacionado con la activaci´on del sistema nervioso simp´atico. Sin embargo, estos algoritmos resultan complejos debido a las causas externas que provocan variaciones en los ojos. Por ejemplo, el tama˜ no de la pupila tambi´en est´a relacionado con la carga del procesamiento cognitivo y la cantidad de luz del est´ımulo visual o la cantidad de parpadeos con si el usuario recibe un susto o necesita una reacci´on defensiva. As´ı, estas t´ecnicas son muy valiosas para psic´ologos e investigadores de la emoci´on a la hora de evaluar el comportamiento humano, la memoria o la toma de decisiones. 2.1.2.. Eye Tracker basado en FPGA. Tambi´en se han realizado diversos estudios donde se desarrollan t´ecnicas de Eye Tracking a partir de una placa FPGA y diversos algoritmos de control ([11]). En este 1 http://www.gazespeaker.org/. 5.
(26) CAP´ITULO 2. ESTADO DEL ARTE. 6. estudio se desarrollaron estas t´ecnicas empleando una placa FPGA que implementa el algoritmo del centro de gravedad donde la placa FPGA capta la posici´on del ojo a 500 fotogramas por segundo gracias a un sensor de imagen de alta velocidad. El proceso realizado en este estudio consta de 3 partes bien diferenciadas: 1. Realizaci´on de la imagen de binarizaci´on, donde la imagen de cada pixel se compara con el valor umbral y, en caso de que sea mayor que ´este, la salida es 1, en caso contrario, la salida es 0. De esta manera se forma la imagen en blanco y negro correspondiente. 2. Realizaci´on de corrosi´on y expansi´on, donde se rellena el ´area alrededor de la pupila de color blanco para luego poder ser tratado adecuadamente por la FPGA. 3. Implementaci´on de la operaci´on de proyecci´on, donde se realiza el acceso a memoria, la suma de acumulaci´on y la l´ogica de valores obtenidos de las operaciones previas. 2.1.3.. Movimiento Brazo Rob´ otico. Entre todos los estudios realizados, encontraamos algunos que fabrican dos m´etodos de Eye Tracking basados en el movimiento de un brazo rob´otico ([10]). 2.1.3.1.. Eye Tracker basado en c´ amara web. En el primer m´etodo realizado colocaron una c´amara en un ordenador para, de esta manera, captar el movimiento ocular y tratarlo adecuadamente (ver figura 2.1). Esta soluci´on es similar a la adoptada en este proyecto, con la diferencia de que en este caso se ha empleado un Eye Tracker comercializado y est´atico. Se dice lo de est´atico puesto que en el proyecto indicado la c´amara web puede desplazarse a lo largo de una barra lateral sobre la que se encuentra instalado para realizar las labores de seguimiento.. Figura 2.1: Eye Tracker basado en c´amara web. 2.1.3.2.. Eye Tracker basado en placa hardware. Para el segundo m´etodo, los autores desarrollaron una placa hardware con un soporte que se coloca delante del ojo del usuario (ver figura 2.2). De esta manera, esta placa puede captar los movimientos oculares para tratarlos en funci´on de los movimientos de ´estos..
(27) 2.2. APLICACIONES. 7. Figura 2.2: Eye Tracker basado en placa hardware. En este estudio ([10]) se concluy´o que la velocidad de la segunda versi´on era m´as r´apida (pero tambi´en m´as costosa) debido a las distancias focales y el n´ umero de fuentes. Una desventaja importante de la primera opci´on es que s´olo pudo ser llevada a cabo en interiores debido a que la luz solar interfiere en la c´amara, introduciendo as´ı ruido en el sistema. 2.1.4.. Silla de ruedas inteligente basada en Eye Tracking. Tambi´en se han realizado estudios en los que las t´ecnicas de eye tracking se realizan mediante una Raspberry Pi y openCV ([8]). Para ello, se instala una c´amara en unas gafas que tendr´a que llevar el usuario y que ir´a colocada mirando directamente hacia el ojo de ´este. De esta manera, la raspberry graba continuamente su ojo y, mediante openCV se reconoce el ojo del usuario as´ı como sus movimientos (ver figura 2.3). Una vez se analizan, la Raspberry Pi es la encargado de enviar, a trav´es de un m´odulo destinado para ello, las instrucciones necesarias para que la silla de ruedas realice los movimientos adecuados. Este m´etodo se trata de un m´etodo m´as barato que el resto de los estudiados puesto que el u ´nico gasto que conlleva es la placa Raspberry Pi empleada, junto con la c´amara, puesto que openCV se trata de una librer´ıa de c´odigo abierto, es decir, gratuita.. Figura 2.3: Reconocimiento Ocular. 2.2.. Aplicaciones. A continuaci´on se van a exponer diversas aplicaciones en las que se emplea la tecnolog´ıa Eye Tracking. Las aplicaciones desarrolladas se centran en dos campos principalmente, marketing y salud..
(28) CAP´ITULO 2. ESTADO DEL ARTE. 8. 2.2.1.. Neuromarketing. Actualmente, la tecnolog´ıa Eye Tracking se usa, principalmente, en neuromarketing 2 . En este a´mbito se usa como medici´on biom´etrica que ayuda a comprender el inconsciente de los sujetos de estudio. La informaci´on que recogen estos sistemas sirven a los investigadores para conocer los recorridos visuales de los usuarios y, a su vez, crear mapas de calor (Figura 2.4) que se˜ nalen los lugares a los que el usuario mira durante m´as tiempo. La imagen se ha obtenido de una noticia disponible en la web3 .. Figura 2.4: Mapa de Calor de Movimiento Ocular. De esta manera, se puede realizar un an´alisis de folletos, impresos o p´aginas web est´aticas estudiando cu´al es la facilidad de los diferentes usuarios en encontrar unos elementos u otros dentro de ellos. 2.2.2.. Autismo. Se han realizado tambi´en estudios recientes con esta tecnolog´ıa en pacientes que padecen Trastorno de Espectro Autista (TEA) [1]. Este estudio discute el potencial que pueden tener estas t´ecnicas a la hora de revelar una visi´on de las dificultades sociales que experimentar´an estos pacientes. Esto se puede realizar bajo la premisa de que cuando una persona mira directamente a un objeto (fijaci´on), esta imagen cae sobre la f´ovea 4 . Por esta raz´on, los ojos necesitan moverse para saber c´omo es el campo visual detalladamente. De esta manera, se pueden realizar recogidas de datos y combinarlos con diferentes test de conducta cognitiva o reconocimiento de emociones. Uno de los primeros estudios realizados en TEA ([5]) con eye tracking monitorizaba los movimientos del ojo de diferentes adultos con autismo mientras realizaban un test de reconocimiento de emociones con fotograf´ıas. Se concluy´o que las personas con autismo pasan menos tiempo examinando las diferentes partes de la cara. De esta manera, si se analizan las fijaciones que una persona con TEA realiza sobre una 2 http://neuromarca.com/neuromarketing/eye-tracking/ 3 https://www.branded3.com/blog/seo-and-eye-tracking/ 4´ area de la retina donde se enfocan los rayos luminosos y se encuentra especialmente capacitada para la visi´ on del color.
(29) 2.2. APLICACIONES. 9. fotograf´ıa de una persona humana, se ver´a que el tiempo de las fijaciones es menor que en personas que no padecen este s´ındrome. 2.2.3.. Cirug´ıa. Actualmente existen diversos robots empleados como robots para operaciones de cirug´ıa y, tambi´en robots auxiliares que puedan ayudar a estos robots principales. Sin embargo, se est´a intentando ir un paso m´as alla y se est´an realizando estudios para poder controlar estos robots mediante los ojos del m´edico ([9]) mediante la realizaci´on de una aplicaci´on con tecnolog´ıa Eye Tracking. En el caso del citado art´ıculo, se emplean unas gafas con esta tecnolog´ıa en lugar de la barra fijada a la pantalla empleada en el proyecto Robohealth. Sin embargo, estas t´ecnicas tienen el problema del ruido ya que, por condiciones externas, los resultados no son tan precisos como para ser empleados en t´ecnicas de cirug´ıa, donde la precisi´on es muy importante..
(30) 10. CAP´ITULO 2. ESTADO DEL ARTE.
(31) Cap´ıtulo 3. Entorno de trabajo A continuaci´on se va a explicar el entorno necesario para llevar a cabo este proyecto. Aunque el principal componente es el EyeTracking debido a que la principal actividad de desarrollo de este proyecto ha sido la programaci´on sobre ´este, han sido necesarios muchos otros dispositivos. Para ello se ha llevado a cabo el montaje de una habitaci´on de pruebas para poder realizar diversos test de los elementos a controlar. En esta habitaci´on de pruebas se han colocado diversos sensores y actuadores que interaccionar´an con el usuario. Para realizar esta conexi´on entre sensores y actuadores de manera inal´ambrica, se ha empleado el controlador de Vera que act´ ua como servidor. Sobre este servidor actuar´a la aplicaci´on desarrollada, tanto para modificar como para leer el estado de los dispositivos instalados. Por u ´ltimo y, como parte m´as importante, para que esta aplicaci´on pueda ser controlada mediante la vista del usuario se ha comprado y acoplado una barra Eye Tracker, fija en la pantalla del ordenador, de la marca Tobii.. 3.1.. Internet de las Cosas (IoT). El internet de las cosas ([3]) consiste en la formaci´on de una red con diferentes dispositivos, no s´olo ordenadores o m´oviles, sino todo tipo de artilugios. Una vez conectados, ´estos se pueden comunicar con otros dispositivos de la misma red para realizar los prop´ositos deseados (ver esquema de la figura 3.1, obtenida de un enlace web1 ). Para poder implantar esta idea en el proyecto de manera adecuada, se tuvieron que sustituir algunos dispositivos habituales por otros que poseen internamente la conexi´on con el servidor de manera inal´ambrica. Para realizar estas conexiones, los dispositivos implantados poseen, de manera interna, un m´odulo de conexi´on que les conecta con el controlador de Vera (se explicar´a su funcionamiento en 3.3.1). Sin embargo, estas conexiones, aunque siempre se realizan con la misma filosof´ıa, no siempre se hacen de la misma manera (se diferencian unas de otras en el dispositivo que posee el m´odulo de conexi´on). Para las bombillas que posee la habitaci´on, por ejemplo, existen 3 maneras de conectarlas con nuestro servidor. Todas ellas poseen un m´odulo que permite que sean conectadas con el controlador, diferenci´andose u ´nicamente en el lugar donde 1 https://www.neratec.com/tl_files/article/products-development/Internet-of-Things/IoT-Overview.. png. 11.
(32) CAP´ITULO 3. ENTORNO DE TRABAJO. 12. Figura 3.1: Conexiones IoT. tengan ubicado este m´odulo. As´ı, en esta habitaci´on de pruebas encontramos que esos m´odulos de conexi´on se pueden encontrar en el casquillo de la bombilla, en el interruptor o en un dispositivo colocado previo a la bombilla para regular la iluminaci´on de ´esta. Las conexiones integradas en el proyecto se podr´ıan catalogar de dos maneras diferentes. Por un lado, si lo que tenemos es un actuador, el controlador se conecta directamente con el m´odulo de conexi´on y ´este realiza la acci´on adecuada (cambiar de posici´on en caso de un interruptor, por ejemplo) para que pase lo que el usario pide a trav´es del controlador. En caso contrario, si el usario realiza una acci´on sobre la habitaci´on directamente (pulsar el interruptor, por ejemplo), este m´odulo es el encargado de enviar la informaci´on al controlador de Vera para que haga los cambios oportunos en los datos que posee internamente. Por esta raz´on la conexi´on entre ellos es bidireccional. Sin embargo, entre el dispositivo que posee el m´odulo de conexi´on y el actuador no es necesaria la conexi´on bidireccional, puesto que el actuador funcionar´a dependiendo de lo que le diga el m´odulo, y nunca ocurrir´a al contrario. En caso de sensores, sin embargo, la conexi´on es directa entre ´estos y el controlador puesto que son los propios sensores los que poseen el m´odulo de conexi´on. De esta manera, si los sensores se activan, env´ıan la informaci´on al servidor mientras que, por otra parte, el servidor permite que ellos dispongan de infrmaci´on sobre si est´an habilitados o no (en caso de que el usario no quiera), por lo que la conexi´on tiene que ser bidireccional.. 3.2.. Habitaci´ on de Pruebas. Para la realizaci´on de las pruebas necesarias para comprobar el funcionamiento de la aplicaci´on se ha llevado a cabo la construcci´on de una habitaci´on de pruebas (como se puede ver en la figura 3.2). Dentro de esta habitaci´on de pruebas se colocar´a el controlador de Vera empleado para el desarrollo de la aplicaci´on y, para la construcci´on de la habitaci´on se colocaron diversas paredes y una puerta con una cerradura electr´onica. Para finalizar con la habitaci´on de hospital, se ha comprado y colocado una cama regulable y se ha instalado al lado de ella un brazo rob´otico.
(33) ´ DE PRUEBAS 3.2. HABITACION. 13. que ser´a el encargado de colocar la tableta enfrente del paciente para su uso (como se puede ver en la figura 3.3).. Figura 3.2: Habitaci´on de pruebas. Adem´as, se retiraron los interruptores convencionales por unos interruptores especiales (estos interruptores poseen un m´odulo interno que estar´a conectado al controlador empleado). Estos m´odulos de conexi´on poseen diferentes entradas que hubo que conectar a la red el´ectrica y a la bombilla empleada de manera directa. Adicionalmente, se conectaron dos bombillas m´as con diferentes m´odulos de conexi´on. Una de ellas tiene el m´odulo de conexi´on directamente en el portal´amparas, de tal manera que se conecta como cualquier bombilla convencional. Por u ´ltimo, hay otra bombilla que tendr´a conectado el m´odulo entre la bombilla y la red. De esta manera este disposiitivo puede regular la intensidad de la luz de la bombilla empleada en funci´on de lo que las instrucciones que le mande el controlador. Para terminar con los actuadores instalados hasta el momento, tambi´en se instal´o una sirena que, en funci´on de la intensidad que se le indique a trav´es del controlador, se activar´a empleando luz s´olamente o luz y sonido. Sin embargo, por funcionalidad, en la habitaci´on de pruebas se ha desarrollado para que la sirena s´olamente emplee luz cuando se active desde la aplicaci´on, siendo muy sencillo poder implantar tambi´en el sonido si se desea..
(34) CAP´ITULO 3. ENTORNO DE TRABAJO. 14. Figura 3.3: Habitaci´on de pruebas. Adicionalmente, se instalaron diferentes sensores (todos ellos son inal´ambricos) que poseen el m´odulo de conexi´on dentro del propio sensor. De esta manera, cuando cualquiera de los sensores se activa, ´este informa al controlador del evento que ha ocurrido. De esta manera, la aplicaci´on leer´a cualquier cambio que haya en el controlador y, de esta manera, estos cambios en los sensores podr´an ser tratados de manera adecuada. Todas las conexiones empleadas en la habitaci´on de pruebas estar´an explicadas en 3.1. Adem´as, se pueden a˜ nadir diversos dispositivos de ambos tipos sin dificultad gracias a la interfaz de VeraLite.. 3.3.. Dispositivos. A continuaci´on se van a explicar los dispositivos empleados para llevar a cabo este proyecto. Estos dispositivos son empleados para realizar el control sobre la habitaci´on y los necesarios para los diferentes modos de uso desarrollados en la aplicaci´on. 3.3.1.. Vera. Vera es la plataforma empleada para desarrollar toda la estructura del IoT. En el caso de este proyecto, se ha empleado un controlador de Vera llamado VeraLite. Se trata de un controlador ([7]) que emplea el protocolo de comunicaci´on Z-Wave 2 . Un controlador con este protocolo necesita que los dispositivos a los que est´a conectado utilicen el mismo modo de comunicaci´on. Se puede ver c´omo es el controlador en la figura 3.4. 2 http://www.z-wave.com/.
(35) 3.3. DISPOSITIVOS. 15. Figura 3.4: Controlador Vera. Z-Wave es la tecnolog´ıa l´ıder en el mercado de automatizaci´on de hogares de manera inal´ambrica. Se trata de una alianza que formaron diferentes empresas y con la que colaboran otras muchas actualmente. Z-Wave es tan destacada porque es una tecnolog´ıa usada para integrar sensores y actuadores a una radio frecuencia determinada. De esta manera, esta frecuencia no es interferida por otras como las conexiones Wifi. Esta tecnolog´ıa se utiliza, principalmente, para servicios de automatizaci´on y hogares inteligentes. Este controlador VeraLite se puede manejar mediante una red local o internet debido a que las peticiones se pueden enviar mediante protocolo UPnP o peticiones HTTP. UPnP [6] es una tecnolog´ıa (con el soporte del protocolo TCP/IP) y que tiene como objetivo permitir a los dispositivos conectarse entre s´ı, integrando dispositivos de diferentes fabricantes. Cuando se a˜ nade un nuevo dispositivo a la red, se obtiene autom´aticamente su direcci´on IP, pudiendo ser manejado por un controlador de propia red. HTTP (Hypertext Transfer Protocol) [2] es el tipo de tr´afico m´as usado en Internet. Principalmente consiste en peticiones y respuestas HTTP. Normalmente, los buscadores web env´ıan peticiones HTTP a puertos que ciertos servidores est´an escuchando y, una vez lo reciben, ´estos env´ıan una respuesta al cliente. En el caso de este proyecto, el m´etodo empleado para la comunicaci´on entre VeraLite y los actuadores es el protocolo HTTP. 3.3.2.. Kinect. Uno de los dispositivos empleados para controlar la habitaci´on ha sido una kinect (controlador desarrollado por Microsoft). Para poder emplear este dispositivo, ser´a necesario un ordenador con sistema operativo Windows 8 o superior y, adem´as, un puerto USB 3.0. Aunque hay distintas variedades, el dispositivo adquirido posee una s´ola c´amara colocada en uno de los lados de la parte frontal de ´este, como se puede apreciar en la figura 3.5. La imagen se ha obtenido a partir de un enlace web3 . 3 https://images-na.ssl-images-amazon.com/images/I/41xEXTsbrDL._SX355_.jpg.
(36) CAP´ITULO 3. ENTORNO DE TRABAJO. 16. Figura 3.5: Kinect. Figura 3.6: Tobii EyeX. 3.3.3.. EyeTracker Tobii. Por u ´ltimo, el dispositivo hardware alrededor del que gira la parte principal del proyecto es el EyeTracker. El EyeTracker obtenido ha sido una barra fija de la marca Tobii conocida como Tobii EyeX (se muestra el dispositivo en la figura 3.6. Como se puede ver en la figura, este dispositivo posee c´amaras de alta velocidad (3 concretamente) y va fijado a la pantalla del ordenador. Para que el dispositivo funcione correctamente, es necesario que el PC tenga, al menos, un procesador i5 y una capacidad RAM de 6GB de memoria, adem´as de un puerto USB 3.0. Este dispositivo recoge autom´aticamente el tama˜ no de la pantalla para poder calcular el punto donde mira el usuario. Las coordenadas donde se encuentre mirando el usuario se referencian con respecto a la esquina superior izquierda de la pantalla, de tal manera que el eje positivo en X es horizontal hacia la derecha y el eye Y es vertical y hacia abajo. Para leer estas coordenadas, Tobii EyeX recoge los datos de manera normalizada y los convierte en los p´ıxeles adecuados donde est´a mirando. Por u ´ltimo, tambi´en cabe destacar que el Tobii EyeX es capaz de calcular d´onde se encuentra mirando el usuario pero, tambi´en, cu´al es la posici´on de los ojos del usuario con respecto al centro de la pantalla del ordenador. Gracias a esta u ´ltima utilidad es como se puede calcular cu´ando el usuario ha gui˜ nado un ojo ya que, cuando alg´ un ojo se encuentra cerrado, el EyeTracker recoge que los ojos se encuentran en la posici´on 0.0 en todas las coordenadas respecto del centro de la pantalla..
(37) Cap´ıtulo 4. Dise˜ no Para la aplicaci´on final, se ha desarrollado un programa cuya l´ogica se puede entender viendo el diagrama de la figura 4.1. Como se expresa en este diagrama, los actuadores y sensores est´an directamente conectados con el controlador de Vera de manera bidireccional, ya que tanto sensores como actuadores necesitan modificar ´ datos del controlador como a la viceversa. Estos se conectan a la Surface adquirida mediante internet y la Surface es la encargada del desarrollo de la aplicaci´on y de la programaci´on necesaria para los diferentes modos de funcionamiento.. Figura 4.1: Esquema de la aplicaci´on desarrollada. Para el desarrollo software se ha empleado un patr´on MV (Model-View), donde se han creado diferentes ventanas para formar la interfaz del usuario para que ´este pueda controlar la habitaci´on de diversas maneras.. 4.1.. Patron de Dise˜ no. El patr´on de dise˜ no empleado para este proyecto ha sido un patr´on MVC (ModelView-Controller). Esta arquitectura [4] considera los 3 componentes y sus interacciones como una unidad b´asica, tratando las aplicaciones multip´agina como aplicaciones de una s´ola p´agina. En este patr´on, la vista se le presenta al usuario y, cuando ´este 17.
(38) ˜ CAP´ITULO 4. DISENO. 18. Figura 4.2: Dise˜ no del patr´on MV. interacciona con ella, se informa directamente al controlador, que modifica el modelo de manera adecuada en funci´on de lo que haya recibido. Despu´es, el modelo informa al controlador de que han realizado los cambios y ´este decide c´omo se tiene que modificar la vista para el usuario. Sin embargo, al emplear Qt Creator, en lugar de este patr´on se ha empleado un patr´on MV (Model-View) debido a las utilidades de QtCreator. Esto es as´ı porque no es necesario tener un controlador que lea las interacciones del usuario ya que, mediante las clases propias provistas por Qt Creator, ´este paso se hace autom´aticamente mediante Signals y Slots (explicado en 5.2). De esta manera, la vista y el controlador est´an unidos y cuando se crea la vista, se definen las conexiones que tienen los diferentes widgets con el modelo. Cuando un usuario hace click en un bot´on, por ejemplo, y se ha definido a qu´e slot est´a unido la funci´on predefinida para la acci´on de click sobre un bot´on, se realiza la funci´on que est´a dentro de ese slot (normalmente en el modelo). Entonces, el modelo realiza las acciones pertinentes y es ´el mismo el que modifica la vista que tiene el usuario. Por tanto, la l´ogica que se sigue con este patr´on de dise˜ no es que cuando un usuario realiza una acci´on sobre un bot´on, la propia vista le informa al modelo de lo que ha pasado, siendo ´este el que tiene que decidir qu´e es lo siguiente a hacer y, en caso de que sea necesario modificar la vista, mostrar la pantalla correspondiente (se muestra un peque˜ no esquema de funcionamiento en la figura 4.2).. 4.2.. Modelo UML. La aplicaci´on realizada finalmente tiene diferentes pantallas para poder organizar mejor todas las funcionalidades de la habitaci´on. Adem´as, se han implantado diferentes botones para efectuar las acciones necesarias sobre cada actuador. Finalmente, y empleando el patr´on MV (explicado en el apartado 4.1), el diagrama de clases realizado es el mostrado en la figura 4.3. Las clases Como se puede ver en el digrama UML expresado anteriormente, se ha creado una clase llamada “BBDD” para que act´ ue como una base de datos. A esta clase s´olo puede acceder el modelo y en ella se guardan diversos aspectos de la aplicaci´on. Todos los datos fijados (como los tiempos, usuarios, favoritos, etc...) se guardan y actualizan.
(39) 4.2. MODELO UML. 19. Figura 4.3: Diagrama de Clases UML. mediante esta clase para luego poderlos usar en el modelo. De esta manera, cuando el modelo quiera realizar una operaci´on concreta, en muchas ocasiones tendr´a primero que consultar en qu´e estado se encuentran diversas variables de la base de datos. Por ejemplo, si el usuario cierra los ojos durante m´as del tiempo especificado para el cierre, el modelo tendr´a que consultar la base de datos para comprobar que se encuentra activo el modo “Ojos” antes de realizar el cambio de modo. Por otra parte, el modelo tambi´en tiene conexi´on directa con el controlador del Vera, con el controlador de la kinect y con el controlador del Eye Tracker adquirido. De esta manera, tanto el modelo puede avisar a ´estos de cu´ando tienen que empezar a recoger los datos como se puede hacer la conexi´on al rev´es, de tal manera que los dispositivos informen al modelo de diversos cambios que se puedan producir, como un cambio en los dispositivos de la habitaci´on o la lectura de ojos y gestos. Finalmente, el modelo tiene conexi´on con todas las pantallas creadas. Todas estas pantallas descienden de QWidget y su u ´nica funci´on ser´a la de mostrar al usuario la pantalla deseada y recoger cu´ando un usuario interacciona con ellas mediante los botones o deslizantes, entre otras cosas. Se mostrar´an todos los diagramas UML de las clases desarrolladas en A. Adicionalmente, se ha llevado a cabo la realizaci´on de un diagrama UML de secuencias que muestra una consecuci´on de mensajes determinada entre los distintos actores de la aplicaci´on desarrollada. En este diagrama (ver figura 4.4) se muestra la secuencia producida desde que un usuario enciende la aplicaci´on, representando adem´as el bucle que se realiza continuamente para estudiar tanto la posici´on de los ojos como el click o el cierre de ojos..
(40) ˜ CAP´ITULO 4. DISENO. 20. Figura 4.4: Diagrama de Secuencias UML. Por u ´ltimo, tambi´en se ha realizado un diagrama UML de actividades que muestra el flujo de trabajo de un software determinado. De esta manera, resulta sencillo comprender c´omo funciona el software y qui´en realiza cada acci´on determinada. En el diagrama de la figura 4.5 se muestra el flujo correspondiente desde que un usuario inicia la aplicaci´on hasta que cambia de modo de funcionamiento, realizando interacciones sobre el controlador de Vera..
(41) 4.3. INTERFACES. 21. Figura 4.5: Diagrama de Actividad UML. 4.3.. Interfaces. Debido a la posibilidad de la gran cantidad de dispositivos que pueda tener el entorno hospitalario, se ha pensado en desarrollar esta aplicaci´on para que sea multipantalla. De esta manera, los usuarios tendr´ıan una pantalla principal y desde ella podr´ıan acceder a una ventana diferente correspondiente a sensores o a actuadores, por ejemplo, seg´ un deseen. Para la realizaci´on de esta aplicaci´on y de las diferentes vistas se han empleado diversas clases que heredan de QWidget 1 (clase base de todos los objetos de la interfaz de usuario). Esta clase est´a dise˜ nada para recibir interacciones con el rat´on o teclado, entre otros y representar diferentes objetos en la pantalla. Para representar estas interfaces de usuario, QtCreator provee una clase llamada QGraphicsView que muestra en pantalla un QWidget concreto. Adem´as, QtCreator permite al programador emplear dos m´etodos para realizar el dise˜ no de la aplicaci´on. Este dise˜ no se puede realizar de manera visual (colocando directamente los botones, 1 http://doc.qt.io/qt-4.8/qwidget.html.
(42) ˜ CAP´ITULO 4. DISENO. 22. Figura 4.6: Modos de interaccionar con la aplicaci´on. cuadros de texto, etc... sobre la pantalla) o mediante lenguaje de programaci´on. El m´etodo empleado en este proyecto ha sido el u ´ltimo, en el que el programador tiene que crear todos los componentes que van a colocarse en la pantalla, adem´as de colocarlos en ´esta mediante c´odigo escrito. Para ello, QtCreator proporciona clases para organizar los widgets de manera vertical, horizontal o tipo red, entre otros. Estas clases permiten organizarlos de tal manera que los widgets se espacien de manera autom´atica, ocupando todos los mismo. Adem´as, estos layouts pueden colocarse dentro de un objeto o dentro de otro layout, haciendo que las posibilidades del programador sean muy grandes. Por ello, para realizar los layouts de manera adecuada, se han empleado las clases proporcionadas por QtCreator. Las clases usadas para ello han sido QGridLayout (que te coloca los widgets como en una red, donde el programador tiene que especificar la fila y la columna de comienzo, adem´as del ancho y alto que quiera que ocupen dentro del layout), QVBoxLayout (que te coloca los widgets de manera vertical) y QHBoxLayout (que te los coloca de manera horizontal). Un ejemplo de esta manera de realizar el dise˜ no de la aplicaci´on se ve muy bien en la figura 4.6, donde se muestra un layout vertical que contine una etiqueta y 2 layouts horizontales, dentro de los cuales hay, en cada uno, un bot´on, un deslizador y una etiqueta. Para realizarlo de manera adecuada, es necesario crear un objeto de un layout vertical y otros dos de un layout horizontal y, cuando se tengan todos los widgets necesarios a˜ nadidos en cada uno de los layouts horizontales (mediante el m´etodo addWidget), a˜ nadir ´estos al layout vertical mediante el m´etodo llamado addLayout. Para que el layout final pueda ser representado es necesario llamar al m´etodo del objeto de la clase QGraphicsView llamado setLayout y, posteriormente mostrarlo mediante el m´etodo show o showMaximized para que se pueda mostrar. Cuando queramos cambiar de pantalla, ser´a imprescindible esconder la que tenemos mediante el m´etodo hide del objeto de QGraphicsView. Para entenderlo mejor, se muestra a continuaci´on c´omo se hace esto para la clase conexi´on, con un s´olo tipo de layout (pantalla inicial). C´ odigo 4.1: Dise˜ no de la conexi´on (conexion.h) 1 2 3 4 5 6. c l a s s Conexion p u b l i c QWidget { ... private : QGraphicsView ∗ v i s t a ; QGridLayout ∗ l a y o u t ;. 7. QLineEdit ∗ i p ; QPushButton ∗ c o n e c t a r ;. 8 9 10 11. public : void show ( ) ; void h i d e ( ) ;. 12 13 14. }.
(43) 4.3. INTERFACES. 23 C´ odigo 4.2: Dise˜ no de la conexi´on (conexion.cpp). 1 2 3 4. Conexion : : Conexion ( ) { l a y o u t = new QGridLayout ( ) ; v i s t a = new QGraphicsView ( ) ;. 5. i p = new QLineEdit ( ) ; c o n e c t a r = new QPushButton ( ) ;. 6 7 8. l a y o u t −>addWidget ( i p ) ; l a y o u t −>addWidget ( c o n e c t a r ) ;. 9 10 11. v i s t a −>s e t L a y o u t ( l a y o u t ) ;. 12 13. }. 14 15 16 17 18. void Conexion : : show ( ) { v i s t a −>show ( ) ; }. 19 20 21 22 23. void Conexion : : h i d e ( ) { v i s t a −>h i d e ( ) ; }. Siguiendo esta l´ogica, se pueden crear vistas con gran variedad y libertad por parte del programador, ya que se podr´ıan crear m´as layouts y luego hacer que todos sean contenidos por el mismo. Sin embargo, utilizando esta manera, para hacer peque˜ nas modificaciones respecto a tama˜ nos o modificaciones de los diferentes widgets dentro de un layout, es bastante m´as dif´ıcil para el programador que empleando el m´etodo visual. De esta manera, se han creado diversas clases que s´olo se emplean para realizar la representaci´on visual. Estas clases contienen diferentes botones propios, listas, etc... Pero, adem´as, en cualquier momento de la programaci´on se pueden a˜ nadir m´as widgets simplemente recurriendo al m´etodo de las l´ıneas 9 y 10 del c´odigo 4.2 y la vista se actualizar´a autom´aticamente, sin necesidad de hacer m´as modificaciones. As´ı, la aplicaci´on que se ha creado posee diferentes ventanas para que el usuario pueda navegar por la aplicaci´on, pudiendo realizar las tareas adecuadas en cada momento. Estas ventanas creadas ser´an explicadas a continuaci´on. 4.3.1.. Pantalla Conexi´ on. Se ha creado una ventana Conexi´ on que se puede ver en la figura 4.7 (mostrada cuando se inicia la aplicaci´on). Esta ventana u ´nicamente contiene un cuadro de texto editable con la direcci´on IP del controlador de Vera (se ha realizado editable porque, de esa manera, se podr´ıa tener m´as de un controlador, eligiendo el usuario a cu´al se quiere conectar) y un bot´on conectar que, cuando se pulse, comprobar´a si la direcci´on IP es v´alida. En caso de que sea v´alida, se realiza la conexi´on entre el modelo y el controlador de Vera y, adem´as, el programa leer´a los datos contenidos en el controlador (dispositivos disponibles y estado actual). En ese caso, esta pantalla se cerrar´a, no volvi´endose a mostrar durante todo el programa y dando paso a la pantalla principal. 4.3.2.. Pantalla Principal. La pantalla Principal es la mostrada cuando se realiza correctamente la conexi´on entre la aplicaci´on y el controlador (se muestra en la figura 4.8). Como se puede ver.
(44) ˜ CAP´ITULO 4. DISENO. 24. Figura 4.7: Pantalla de Conexi´on. en la imagen, tiene diferentes sub-apartados a tener en cuenta por el usuario. Por una parte, en la parte izquierda de la pantalla principal, se encuentran todos los botones correspondientes a las diferentes pantallas a las que se puede acceder (que ser´an explicadas m´as adelante). En la parte de la derecha de la pantalla se muestran los diferentes sensores/actuadores que seleccione el usuario desde la pantalla configuraci´on. De esta manera, se puede tener un acceso directo a los dispositivos m´as empleados sin tener que pasar, necesariamente, por las diferentes pantallas que se tienen. En esta parte de la pantalla se establece siempre, como el primer dispositivo de la lista, el bot´on Alerta para que el usuario pueda pulsarlo en cualquier momento sin tener que pasar por la pantalla de Actuadores. La parte m´as importante de esta pantalla (puesto que s´olo aparece en ella) es la elecci´on del modo de funcionamiento (se explicar´a m´as detalladamente en 4.4). Se trata de un cuadro localizado en la parte inferior de la pantalla que tiene como posibilidades los diferentes modos de funcionamiento de la aplicaci´on. Estos son el modo Ojos, T´actil, Voz y Gestos. Cuando se selecciona cualquiera de estos botones, la aplicaci´on s´olo se puede manejar empleando ese m´etodo concretamente (salvo el modo t´actil, que se puede emplear siempre para asegurarnos de que, si los dispositivos de lectura de Ojos, Voz o Gestos fallasen, el usuario podr´ıa realizar las acciones necesarias para evitar que la aplicaci´on realizase cambios indeseados en la habitaci´on por errores de lectura). Adicionalmente, se ha incluido una etiqueta debajo del bot´on de Ojos que especifica qu´e modo de click se tiene seleccionado en cada momento y, debajo del bot´on Gestos, qu´e dispositivo se tiene seleccionado en cada momento para saber sobre qu´e dispositivo se realizar´an los cambios. 4.3.3.. Pantalla Configuraci´ on. Cuando se acceede a la pantalla Configuraci´ on, empleando cualquier modo de funcionamiento, se establece autom´aticamente el modo t´actil como modo activo.
(45) 4.3. INTERFACES. 25. Figura 4.8: Pantalla Principal. para evitar que se puedan realizar cambios indeseados en la configuraci´on de la aplicaci´on. A esta ventana s´olo se puede acceder pulsando el bot´on Configuraci´on de la pantalla principal. En esta ventana se realizan todos los cambios relacionados con la configuraci´on de la aplicaci´on. Posee dos partes diferenciadas y separadas mediante cuadros y, en la parte superior, un bot´on Volver que, una vez pulsado, har´a regresar a la aplicaci´on a la pantalla principal (ver figura ??). Justo debajo del bot´on volver se encuentra el men´ u favoritos donde aparece, en la lista de la izquierda, todos los dispositivos disponibles en la aplicaci´on. Para a˜ nadir un dispositivo al men´ u Favoritos de la pantalla principal basta con seleccionar un dispositivo de esta lista y pulsar el bot´on A˜ nadir Favorito. De esta manera, este dispositivo se posiciona tambi´en en la lista de la derecha (donde aparecen los favoritos seleccionados) y, en caso de que se quiera eliminar, bastar´a con seleccionarlo en la lista de favoritos y pulsar el bot´on Eliminar Favorito. Para evitar problemas, se ha establecido que, si se realiza una acci´on err´onea (como pulsar a˜ nadir favorito sin tener seleccionado ning´ un dispositivo de la lista o eliminar un favorito cuando no existen) se crea un cuadro para informar al usuario de que la acci´on cometida ha sido err´onea y por qu´e. Por u ´ltimo, en la parte inferior de la pantalla aparece el men´ u del dispositivo Eye Tracker. En este men´ u aparecen, a la izquierda, el usuario activo en ese momento de la ejecuci´on (ya que cada dispositivo tiene una calibraci´on y datos independientes, como si lleva o no gafas) y justo debajo de esta etiqueta aparece una lista con todos los usuarios disponibles en el dispositivo. A la derecha de esta lista aparecen todas las acciones que se pueden realizar sobre el dispositivo, como cambiar el usuario disponible o la creaci´on de un usuario nuevo. En la parte inferior de este men´ u aparecen dos botones donde el usuario pueda seleccionar el modo de click activado en cada momento (Fijaci´on o Gui˜ no) y dos deslizantes para cambiar el tiempo m´ınimo de cada modo para considerarlos como un click. Adicionalmente, aparece un deslizante creado para que se pueda modificar el tiempo necesario para que un cierre de ojos provoque un cambio en el modo de click seleccionado en cada momento..
(46) ˜ CAP´ITULO 4. DISENO. 26. Figura 4.9: Pantalla de Configuraci´on. 4.3.4.. Pantalla Sensores. En la pantalla Sensores aparecer´an, inicialmente, el bot´on Alerta (para avisar de un problema) y el bot´on Volver (para regresar a la pantalla principal). Debajo de estos dos botones obligatorios aparecer´an los diferentes sensores disponibles en la habitaci´on con un c´odigo de colores determinado (ver figura 4.10). Adem´as, sobre estos dispositivos el usuario no puede realizar ninguna modificaci´on ya que son s´olo para consultar el estado de la habitaci´on en un momento determinado. De esta manera, el usuario puede observar c´omo se encuentra cada sensor de la habitaci´on pero no puede desactivarlos ni realizar ninguna acci´on indebida por mirar a los diferentes sensores, aunque sea durante mucho tiempo.. Figura 4.10: Pantalla de Sensores. 4.3.5.. Pantalla de Actuadores. En esta pantalla aparecer´an inicialmente los mismos botones que en la pantalla sensores (ver seccion 4.3.4) y con la misma funci´on (los botones alerta y volver)..
(47) 4.3. INTERFACES. 27. Adicionalmente, aparecer´an todos los dispositivos considerados como actuadores en el controlador para que el usuario pueda realizar las modificaciones oportunas sobre ellos (ver figura 4.11). Adem´as, tambi´en se ha creado un c´odigo de colores diferente a los sensores para que el usuario pueda conocer el estado de cada actuador (cada tipo de actuador lleva un color diferente). En el caso de las luces, adem´as, se ha a˜ nadido una etiqueta que indica el estado actual del actuador de manera gr´afica. En el caso de los deslizantes (luces regulables, por ejemplo), se ha creado un cuadro que tendr´a como elementos un bot´on menos (para bajar un 10 % la intensidad), un bot´on m´as (para subir un 10 % la intensidad) y la etiqueta en el centro de ambos con el nombre del actuador.. Figura 4.11: Pantalla de Actuadores. 4.3.6.. Pantalla Multimedia. La pantalla multimedia (ver figura 4.12) es una pantalla creada para el ocio del usuario. Esta ventana contiene otras tres ventanas posibles dentro de s´ı. Estas ventanas disponibles son Im´agenes, Sonidos y V´ıdeos (aunque en este proyecto s´olo se ha habilitado la ventana Im´agenes, ver figura 4.13). Para acceder a ella basta con pulsar el bot´on Im´agenes y se crea otra ventana con diferentes im´agenes y dos botones para poder navegar por las im´agenes establecidas. Las im´agenes se han predefinido por nosotros como prueba de funcionamiento y para acceder a ellas simplemente se guardar´an con nombres de n´ umeros enteros y en formato jpg aunque en el futuro se pueda modificar. 4.3.7.. Cuadro de Di´ alogo. Por u ´ltimo, se ha creado un cuadro de di´alogo para que el programa pueda informar al usuario de cualquier problema que haya podido ocurrir. Este cuadro de di´alogo tendr´a un tama˜ no suficientemente grande para que pueda verse con claridad y dispondr´a de un bot´on de aceptar que el usuario tendr´a que pulsar para seguir con el programa. Cuando pulse ese bot´on aceptar, se cerrar´a el cuadro de di´alogo (ver figura 4.14, donde se ha pulsado el bot´on A˜ nadir Favorito de la pantalla Configuraci´on sin tener ning´ un dispositivo seleccionado)..
(48) ˜ CAP´ITULO 4. DISENO. 28. Figura 4.12: Pantalla Multimedia. Figura 4.13: Pantalla Im´agenes. 4.4.. Modos de Funcionamiento. Para realizar las conexiones entre la aplicaci´on y el controlador de Vera se partir´a de un c´odigo realizado previamente por otro estudiante. Este c´odigo pose´ıa la l´ogica necesaria para el funcionamiento del controlador de Vera en funci´on de los diferentes botones. Para la aplicaci´on desarrollada en este proyecto se han tenido que modificar ligeramente ciertos m´etodos empleados en la clase VeraController.h y eliminar algunos que no se van a emplear para esta aplicaci´on como son los correspondientes a las luces deslizantes. Adem´as, se han tenido que realizar diversas modificaciones sobre el programa desarrollado inicialmente, ya que en las versiones iniciales se empleaba cURL para peticiones web, mientras que finalmente se ha empleado la librer´ıa QURL de QtCreator debido al c´odigo empleado por el otro estudiante. Adem´as, para continuar con la l´ogica empleada por este estudiante, las interfaces de la aplicaci´on se han desarrollado mediante c´odigo de manera completa y no usando el QtDesigner, que se emplea especialmente para la interfaz de usuario. La aplicaci´on desarrollada en el proyecto se ha pensado para que tenga cuatro modos diferentes de funcionamiento. Se han establecido el modo “T´actil”, el modo “Ojos” (para poder interactuar mediante la vista), el modo “Voz” (para poder in-.
(49) 4.4. MODOS DE FUNCIONAMIENTO. 29. Figura 4.14: Cuadro de Di´alogo. teractuar mediante la voz, con unos comandos establecidos previamente) y un modo “Gestos” para poder controlarlo mediante movimientos de los brazos del usuario. En el modo T´actil se controlar´a la habitaci´on directamente mediante la pulsaci´on de los botones de las interfaces dise˜ nadas y explicadas en el apartado 4.3. En el modo Ojos se puede controlar la habitaci´on de la misma manera, pero en este caso, el m´etodo de hacer click en cada uno de los botones puede ser o bien mirando fijamente a un bot´on durante un tiempo establecido, o bien gui˜ nando cualquier ojo mirando a ese bot´on. El tiempo para considerar una fijaci´on o un gui˜ no como click puede ser modificado por el usuario desde la pantalla configuraci´on y el m´etodo empleado (s´olo puede haber uno activo al mismo tiempo), tambi´en se puede modificar desde esta pantalla o bien se puede modificar manteniendo los ojos cerrados durante un tiempo m´ınimo (a especificar en la pantalla configuraci´on tambi´en). Adem´as, en esa pantalla configuraci´on se pueden realizar acciones directamente sobre el usuario, como recalibrar el dispositivo o cambiar de usuario, en caso necesario. En el modo Voz se controlar´a la habitaci´on mediante unos comandos de voz determinados previamente. Para que el programa empiece a escuchar bastar´a con decir la palabra “Hola” y, posteriormente, se podr´a navegar por la aplicaci´on mediante los comandos preestablecidos indicados anteriormente. En el modo Gestos se pueden realizar acciones sobre algunos dispositivos, como las luces, de tal manera que si el usuario coloca cualquiera de los brazos en posici´on horizontal frente a la kinect, el dispositivo seleccionado cambiar´a al siguiente (si es el brazo izquierdo) o al anterior (si es el brazo derecho). Para cambiar el estado de la bombilla seleccionada bastar´a con colocar cualquiera de los brazos de manera vertical apuntando hacia arriba..
(50) 30. ˜ CAP´ITULO 4. DISENO.
Documento similar
Where possible, the EU IG and more specifically the data fields and associated business rules present in Chapter 2 –Data elements for the electronic submission of information
The 'On-boarding of users to Substance, Product, Organisation and Referentials (SPOR) data services' document must be considered the reference guidance, as this document includes the
In medicinal products containing more than one manufactured item (e.g., contraceptive having different strengths and fixed dose combination as part of the same medicinal
Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in
Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in
This section provides guidance with examples on encoding medicinal product packaging information, together with the relationship between Pack Size, Package Item (container)
Package Item (Container) Type : Vial (100000073563) Quantity Operator: equal to (100000000049) Package Item (Container) Quantity : 1 Material : Glass type I (200000003204)
Cedulario se inicia a mediados del siglo XVIL, por sus propias cédulas puede advertirse que no estaba totalmente conquistada la Nueva Gali- cia, ya que a fines del siglo xvn y en