GEVA: Generador De Eventos Para Un Entorno De Virtualidad Aumentada
Total Page:16
File Type:pdf, Size:1020Kb
UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE INFORMÁTICA GRADO EN INGENIERÍA INFORMÁTICA TECNOLOGÍA ESPECÍFICA DE INGENIERÍA DE COMPUTADORES TRABAJO FIN DE GRADO GEVA: Generador de Eventos para un entorno de Virtualidad Aumentada José Luis Pérez Ramírez Septiembre, 2017 GEVA: GENERADOR DE EVENTOS PARA UN ENTORNO DE VIRTUALIDAD AUMENTADA Escuela Superior de Informática UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE INFORMÁTICA Tecnologías y Sistemas de Información TECNOLOGÍA ESPECÍFICA DE INGENIERÍA DE COMPUTADORES TRABAJO FIN DE GRADO GEVA: Generador de Eventos para un entorno de Virtualidad Aumentada Autor: José Luis Pérez Ramírez Director: Félix Jesús Villanueva Molina Septiembre, 2017 José Luis Pérez Ramírez Ciudad Real – Spain E-mail: [email protected] Teléfono: 608 333 664 c 2017 José Luis Pérez Ramírez Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". Se permite la copia, distribución y/o modificación de este documento bajo los términos de la Licencia de Documentación Libre GNU, versión 1.3 o cualquier versión posterior publicada por la Free Software Foundation; sin secciones invariantes. Una copia de esta licencia esta incluida en el apéndice titulado «GNU Free Documentation License». Muchos de los nombres usados por las compañías para diferenciar sus productos y servicios son reclamados como marcas registradas. Allí donde estos nombres aparezcan en este documento, y cuando el autor haya sido informado de esas marcas registradas, los nombres estarán escritos en mayúsculas o como nombres propios. i TRIBUNAL: Presidente: Vocal: Secretario: FECHA DE DEFENSA: CALIFICACIÓN: PRESIDENTE VOCAL SECRETARIO Fdo.: Fdo.: Fdo.: iii Resumen Raíz del interés suscitado actualmente por las ciudades inteligentes, surge este proyec- A to, cuyo objetivo es desarrollar la plataforma GEVA. La finalidad de esta plataforma es obtener un sistema que soporte diferentes generadores de eventos que serán representa- dos en un mundo virtual previamente creado mediante alguna herramienta de computación gráfica. Para la representación de los eventos generados (ya sea haciendo uso de la platafor- ma o mediante un acontecimiento externo como por ejemplo la activación de una alarma, se desarrollará una Application Programming Interface (API) que permitirá a los usuarios representar peatones, vehículos, áreas, eventos (por ejemplo un incendio), etc. A modo de ejemplo de generador de eventos, se desarrollará uno capaz de analizar una cámara en tiempo real para detectar los vehículos y peatones en movimiento que grabe para ser representados posteriormente en el mundo virtual. V Abstract HE origin of this project is the attention raised by smart cities and the aim of it is to T develop the GEVA platform. The application GEVA has been developed in order to support different types of event generators. The events will be represented in a virtual world created using a computer graphics tool. An Application Programming Interface (API) will be developed and users will use it to represent pedestrians, vehicles, areas, events (for example a fire), etc. As an example of an event generator, one able to analyze a camera in real time in order to detect pedestrians and vehicles that are moving will be developed and then, they will be represented in the virtual world. VII Agradecimientos Cuando uno tiene que redactar los agradecimientos hacia todas aquellas personas que han sido partícipes de los momentos vividos durante estos años, es difícil no olvidarse de alguien, pero voy a intentarlo. En primer lugar, agradecer a Félix Jesús Villanueva Molina, mi tutor de TFG, el haberme permitido participar en este proyecto y por su ayuda y apoyo durante su realización. Cómo no acordarme de mi familia, en especial de mis padres y hermanos, que han sido mi apoyo durante este largo y difícil camino que es la universidad. Sin ellos no hubiera sido posible llegar hasta aquí, redactando los agradecimientos y recordando aquellos momentos, tanto buenos como malos, vividos desde que empecé hace ya cuatro años. Además, y si no fuera por mis padres, yo no hubiera podido graduarme en esta carrera que tanto había deseado estudiar. También quiero acordarme de todos aquellos grandísimos amigos que he hecho y de los que me llevo los buenos momentos compartidos y de todos los profesores que he tenido a lo largo de la carrera puesto que de ellos me llevo todos los conocimientos adquiridos y las ganas de estar siempre en constante aprendizaje, que sin duda me resultarán de gran utilidad durante mi vida laboral. Pero de todas las personas, si hay una que merece un agradecimiento especial es mi her- mano gemelo Jesús, con el que he compartido todas las vivencias durante la carrera, hemos sufrido, hemos reído, y aunque han sido muchos los momentos malos, no hay mejor persona con la que pudiera haberlos compartido, porque siempre has estado a mi lado. A todos, de corazón, gracias. José Luis IX Somos lo que hacemos de forma repetida. La excelencia, entonces, no es un acto, sino un hábito. -Aristóteles- xi Índice general Resumen V Abstract VII Agradecimientos IX Índice general XIII Índice de cuadros XVII Índice de figuras XIX Índice de listados XXI Listado de acrónimos XXIII 1. Introducción 1 1.1. Estructura del documento . .3 2. Objetivos 5 2.1. Objetivo general . .5 2.2. Objetivos específicos . .5 2.2.1. Detección de objetos en movimiento . .5 2.2.2. Representación en un mundo virtual de los objetos en movimiento detectados . .6 2.2.3. Virtualización de la plataforma . .6 2.2.4. Validación del sistema . .6 3. Antecedentes 7 3.1. Computación gráfica . .7 3.1.1. Motores gráficos . .9 3.2. Virtualidad aumentada . 14 XIII 0. Índice general 3.3. Visión por computador . 15 3.3.1. OpenCV . 17 3.4. Algoritmos de detección y seguimiento de objetos en movimiento . 18 3.4.1. Algoritmo basado en cascades . 18 3.4.2. AdaBoost . 20 3.4.3. Cascada de decisión . 20 3.4.4. Algoritmo background subtraction o de eliminación del fondo . 21 3.5. Sistemas distribuidos . 24 3.5.1. Middleware de comunicaciones . 25 3.5.2. ZeroC Ice . 26 3.6. Formatos y datos utilizados . 28 3.6.1. Formato JavaScript Object Notation (JSON)............. 28 3.6.2. Datos de OpenStreetMap . 29 3.7. Herramientas para la monitorización de ciudades inteligentes . 33 3.8. Virtualización . 33 3.8.1. Software de creación y gestión de máquinas virtuales . 35 3.8.2. Software proveedor . 37 3.8.3. Software de aprovisionamiento . 38 4. Metodología de trabajo 43 4.1. Elección de la metodología . 43 4.1.1. Metodologías ágiles . 43 4.1.2. Ciclo de vida de XP .......................... 45 4.2. Herramientas . 47 4.2.1. Hardware . 47 4.2.2. Software . 47 4.3. Iteraciones . 48 4.3.1. Iteración 1: Detección de objetos en movimiento . 48 4.3.2. Iteración 2: Creación del mundo virtual . 49 4.3.3. Iteración 3: Operaciones de la API no distribuidas . 50 4.3.4. Iteración 4: Operaciones de la API distribuidas y síncronas . 51 4.3.5. Iteración 5: Operaciones de la API distribuidas y asíncronas . 51 4.3.6. Iteración 6: Virtualización de la plataforma . 52 4.3.7. Iteración 6: Validación del sistema . 52 4.4. Historias de usuario . 52 xiv 5. Arquitectura del sistema 57 5.1. Obtención de información del mundo real . 57 5.2. Clientes ZeroC Ice . 62 5.3. Servidor ZeroC Ice y representación de eventos en el mundo virtual . 64 5.3.1. Creación del mundo virtual . 70 5.4. Virtualización de la plataforma . 71 6. Resultados 73 6.1. Ejemplos para cada parte de la arquitectura . 73 6.1.1. Obtención de información del mundo real y algoritmo de detección de objetos en movimiento . 74 6.1.2. Clientes y servidor ZeroC Ice: Invocación de las operaciones . 75 6.1.3. Virtualización de la plataforma . 77 7. Conclusiones 79 7.1. Grado de consecución de los objetivo planteados . 79 7.2. Dificultades encontradas . 80 7.3. Trabajo futuro . 82 A. Imagen integral 87 A.0.1. Ejemplo . 87 B. Instalación 89 B.1. Archivos de Vagrant y Ansible . 91 C. Uso de la plataforma 97 C.1. Análisis de una cámara para detectar objetos en movimiento . 97 C.2. Creación del mundo virtual . 97 C.3. Representación de eventos en el mundo virtual de forma distribuida . 98 C.4. Estructura de directorios . 99 C.5. Instalación de nuevos addons . 100 Referencias 103 xv Índice de cuadros 3.1. Requisitos de los distintos motores gráficos para Windows . 15 3.2. Comparación entre VMware Workstations Player y VMware Workstation Pro[Inc17a] . 39 4.1. Equipo elegido para el desarrollo del proyecto. 53 4.2. Historia de usuario 1: Detección de objetos en movimiento . 53 4.3. Historia de usuario 2: Creación del mundo virtual . 53 4.4. Historia de usuario 3: Operaciones de la API no distribuidas . 54 4.5. Historia de usuario 4: Operaciones de la API distribuidas y síncronas . 54 4.6. Historia de usuario 5: Operaciones de la API distribuidas y asíncronas . 54 4.7. Historia de usuario 6: Virtualización de la plataforma . 55 XVII Índice de figuras 1.1. Puerto real de Valencia y su correspondencia virtual . .2 1.2. Esquema del sistema a desarrollar . .3 3.1. Estructura de un game object del Blender Game Engine . 13 3.2. Continuo de de la virtualidad . 16 3.3. Característica de dos rectángulos . 19 3.4. Característica de tres rectángulos . 19 3.5. Característica de cuatro rectángulos .