Xavier Martn Rull Departamento: Departamento de Ingeniera de Sistemas, Automtica e Informtica Industrial (ESAII)
Centro: Facultat d'Informtica de Barcelona (FIB) Universidat: Universitat Politcnica de Catalunya (UPC) BarcelonaTech
Agradecimientos: En primer lugar quiero agradecer a mis padres, por la paciencia que han tenido conmigo durante estos meses con los problemas que ha acarreado el proyecto. Tambin agradecer a mi familia y amigos por la ayuda durante las primeras pruebas de movimientos, el tiempo gastado en las encuestas y las pruebas finales.
NDICE
1. Introduccin ................................................................................ 6 1.1. Motivacin y contexto del proyecto .............................................. 6 1.2. Objetivo ................................................................................... 6 1.3 Tecnologa y entorno de trabajo ................................................... 7 1.4 Planificacin ............................................................................... 7 2. Kinect ........................................................................................ 10 2.1 Descripcin tcnica .................................................................... 10 2.2 Como funciona .......................................................................... 12 2.3 Software development kit de Kinect ............................................. 14 2.4 Kinect puesta a prueba .............................................................. 15 2.5 Utilidades ................................................................................. 21 3. Especificaciones......................................................................... 23 3.1 Requisitos no funcionales ........................................................... 23 3.2 Requisitos funcionales ................................................................ 24 3.3 Diagrama de casos de uso .......................................................... 27 3.4 Anlisis de movimientos ............................................................. 27 3.5 Descripcin de los casos de uso................................................... 38 4. Diseo ....................................................................................... 42 5. Implementacin......................................................................... 44 5.1 Tecnologa ................................................................................ 44 5.2 Detalles de implementacin ........................................................ 46 6. Pruebas finales .......................................................................... 51 7. Planificacin final y costes ......................................................... 55 8. Conclusiones .............................................................................. 58 9. Bibliografa ................................................................................ 59
1. Introduccin
1.1. Motivacin y contexto del proyecto
Durante los ltimos aos las tecnologas han ido avanzando en gran parte gracias a la competencia del mercado de las telecomunicaciones. Esto ha llevado a que surjan tecnologas cada vez ms atractivas para el consumidor, que pese a ser creadas con un propsito concreto, conllevan grandes posibilidades en otros mbitos. La motivacin de este proyecto nace precisamente de esto, de analizar el nacimiento de una de estas nuevas tecnologas, en concreto las posibilidades y limitaciones de Kinect y a su vez, experimentar de una manera prctica con ella.
1.2. Objetivo
El principal objetivo ser la creacin de una aplicacin que utilice kinect como nico medio de interaccin, y aprovechar esta misma aplicacin con el fin de analizar las posibilidades que ofrece. La aplicacin consistir en un visor de imgenes que interaccionar con unos gestos predefinidos que el usuario deber llevar a cabo. Desde una visin general la aplicacin debe ser capaz de: Cargar cualquier imagen que se aada en la carpeta de imgenes Pre visualizacin de imgenes Seleccin de imgenes Modo presentacin Zoom Pan
1.4 Planificacin
Este proyecto se empez el 5/08/2011, y segn una primera valoracin en el informe previo, se pretenda acabar con su desarrollo el 25/12/2012. Toda la planificacin inicial se basaba en cuatro fases: estudio previo de las herramientas y entorno, estudio de las posibilidades y desventajas de Kinect y finalmente el desarrollo de una aplicacin prctica usando Kinect.
2. Kinect
2.1 Descripcin tcnica
Kinect cuenta con una cmara RGB, un sensor de profundidad, un micrfono multiarray y un procesador personalizado que ejecuta el software patentado, que proporciona captura de movimiento de todo el cuerpo en 3D, reconocimiento facial y capacidades de reconocimiento de voz. El micrfono de Kinect permite llevar a cabo la localizacin de la fuente acstica y la supresin de ruido ambiental. La cmara cuenta con dos tipos de resolucion (320240 y 640480, ambas de alto color) y enva datos con una frecuencia de actualizacin de 30 fps. Lo que significa que algunos movimientos tendrn unos frames de retraso, sobre todo cuando se trata de juegos o aplicaciones con una alta tasa de refresh.
Sensores Lentes de color y sensacin de profundidad Micrfono multi-arreglo Ajuste de sensor con su motor de inclinacin
Campo de visin Campo de visin horizontal: 57 grados Campo de visin vertical: 43 grados Rango de inclinacin fsica: 27 grados Rango de profundidad del sensor: 1,2 3,5 metros
10
Sistema de reconocimiento de gestos para un visor de imgenes Data Streams (Flujo de datos) 320 240 a 16 bits de profundidad @ 30fps 640 480 32-bit de color @30fps Audio de 16-bit @ 16 kHz
Sistema de Seguimiento Rastrea hasta 6 personas, incluyendo 2 jugadores activos Rastrea 20 articulaciones por jugador activo
Sistema de audio Sistema de cancelacin de eco que aumenta la entrada de voz Reconocimiento de voz mltiple
11
Esta multitud de puntos marca la distancia, es decir, Kinect calcula la distancia entre donde estaba el punto al proyectarlo a donde est en la proyeccin. Pero como decamos, esto sera una simple cmara con un sensor de profundidad si no fuese por la tecnologa que lleva integrada que es capaz de reconocer el cuerpo humano.
12
Skeleton Tracking Este proceso es el mtodo por el que kinect es capaz de detectar la figura humana cuando se sita delante. Consta de 6 pasos: 1- El sensor lanza la nube de puntos 2- Kinect crea el mapa de profundidad a partir del sensor. 3- Detecta el suelo y separa los objetos del fondo para encontrar el contorno humano. 4- Hace una clasificacin de las partes humanas. 5- Identifica las articulaciones. 6- Recrea el esqueleto.
13
14
Lo primero que haremos ser analizar la capacidad de Kinect para reconocer un cuerpo dependiendo la intensidad de luz de la habitacin.
A Oscuras
15
Sistema de reconocimiento de gestos para un visor de imgenes Como observamos en las imgenes de profundidad la poca intensidad de luz no afecta de manera significativa al reconocimiento de la persona, sin embargo cuando se aplica una gran cantidad de luz la imagen de profundidad empieza a fallar, no es capaz de detectar correctamente. Otro de los temas que encontramos es la posicin de la cmara, es decir la distancia mnima y mxima para que la deteccin sea ptima.
Distancia mnima
Distancia mxima
La distancia mnima para que reconozca el cuerpo es alrededor de 80 cm y la distancia mxima hasta que deja de reconocerlo es de 360 cm, pese al 1.2 - 3.5 metros que se especifica en la descripcin tcnica.
16
Sistema de reconocimiento de gestos para un visor de imgenes Tambin validaremos si el usuario est sentado afecta al reconocimiento.
Reconocimiento sentado
Como vemos al estar sentado reconoce la parte superior del cuerpo mientras que la inferior no, esto hace que en principio funcione bin para usarla sentado, sin embargo, la perdida de control de la parte inferior a veces afecta a la superior haciendo que se pierda momentaniamente.
Como vemos Kinect es capaz de detectar a mas de dos personas (segn las especificaciones hasta a 6 personas) pero solo puede conseguir las partes del cuerpo de dos (dos personas activas), sin embargo aqu lo que queramos comprobar era el criterio de eleccin de quien es activo y quien no. Despus de diversas pruebas hemos llegado a la conclusin de que tiene dos criterios de eleccin, en primer lugar y el prioritaria es coger a las dos primeras que detecta y el segundo criterio es que si hay varias detectadas escoge a las que estn mas cerca de la cmara.
17
Reconocimiento de un gato
Como vemos en la imagen del animal la cmara ha sido capaz de reconocer el objeto en movimiento sin embargo al no tener cuerpo humano es incapaz de distinguir las partes del animal. De otra banda, un objeto inanimado con aspecto humanoide es capaz de reconocerlo sin ningn problema.
18
Sistema de reconocimiento de gestos para un visor de imgenes Reconocimiento de posicin frontal o trasera
Parte frontal
Parte trasera
Como vemos es capaz de reconocer la inclinacin de los brazos sabiendo as si es la parte frontal o la trasera
19
Sistema de reconocimiento de gestos para un visor de imgenes Separacin mnimo entre usuarios
Para que detecte dos usuarios correctamente ninguna parte del cuerpo de ellos debe ser tapada entre s, porque as no es capaz de detectar correctamente los puntos exactos.
20
2.5 Utilidades
Si nos ponemos a pensar en utilidades que podemos darle a este tipo de cmara encontramos muchsimas utilidades en muy diversos mbitos, veamos algn ejemplo. mbito videojuegos: Utilidades en juegos (Descripcin de distintos juegos)
Juego de conduccin
21
Sistema de reconocimiento de gestos para un visor de imgenes mbito comercial: Catlogo Vestidor Agencias de viajes Mando de electrodomsticos. Manejo de robots a distancia. Reconstruccin 3D.
Probador de bolsos
mbito educativo: Pase de diapositivas Juegos educativos para nios Pizarras dinmicas. Aprender a tocar instrumentos Aprender a bailar.
22
3. Especificaciones
3.1 Requisitos no funcionales
RNF0001 Usuario
La aplicacin debe reconocer a cualquier usuario. La aplicacin solo reconocer a un nico usuario a la vez. La estatura o peso no afectar al desarrollo de la aplicacin pero cambiar la posicin fsica inicial del usuario.
RNF0002
Visualizar imgenes
El sistema solo aceptara imgenes en formato JPG, PNG y GIF. La aplicacin debe permitir la visualizacin de cualquier imagen aadida a la carpeta Imgenes adjunta en la aplicacin.
RNF0003
RNF0004
Movimientos cmara
Los movimientos para la interaccin con la aplicacin se limitarn nicamente a gestos realizados con los brazos y manos.
RNF0005
Conexin Kinect
Si la aplicacin no detecta una buena conexin con la cmara emitir una ventana de aviso y la aplicacin no funcionar.
23
RNF0006
Diseo
RNF0007
Usabilidad
El uso de la aplicacin ha de resultar intuitivo. Los movimientos escogidos se deben basar en el estudio previo y la eleccin de los usuarios encuestados.
La aplicacin deber mostrar en un lateral la lista de imgenes disponibles. Si la lista de imgenes es ms grande que la capacidad de la pantalla, se debe permitir el desplazamiento por ellas. En caso de llegar al extremo de la lista la aplicacin debe permitir volver a empezar.
RF0002
Seleccionar imagen
24
Para seleccionar una imagen se designar una posicin de seleccin en la lista en la que habr que colocarla.
RF0003
RF0004 RF0004.1
La aplicacin entrar en modo presentacin en el que se podr visualizar la imagen en mayor tamao. Des de este modo se permitir editar la imagen.
RF0004.2
RF0005
Zoom
El zoom deber permitir acercarse a la imagen. El zoom deber permitir alejarse de la imagen hasta que se vea entera.
RF0006
PAN
25
La aplicacin permitir desplazarse por la imagen cuando sea demasiado grande para mostrarse entera. Para poder hacer pan se debe estar en modo presentacin y haber hecho zoom ms all de las medidas visibles de la imagen.
RF0007
Rotar imagen
Para rotar la imagen debe estar pre visualizada, o bien en modo presentacin Se rotar 90 en sentido horario por cada movimiento del brazo izquierdo.
26
Aadir imgenes
Seleccionar imgenes
Modo presentacin
Rotar imagen
Zoom imagen
Pan imagen
27
Sistema de reconocimiento de gestos para un visor de imgenes Para elegir el movimiento de cada imagen tendremos en cuenta tres factores, primero la eleccin del usuario, segundo, las confrontaciones entre movimientos y tercero la dificultad de implementacin. Una vez tengamos los resultados de cada factor por separado crearemos el movimiento ms adecuada ponindolos en comn. El primer paso que haremos ser encuestar a 15 personas diestras en edades comprendidas entre los 10 y los 60 aos sobre qu movimiento haran para cada funcionalidad. Seleccionar imagen Informacin que tienen los encuestados: Tendremos una tira de imgenes en forma vertical y deberemos poder desplazarnos por esta lista de manera que para seleccionar una imagen debe colocarse en una posicin que saldr indicada. Resultados: A) Movimiento del brazo entero de arriba abajo o de abajo arriba B) Colocar la mano esttica arriba o abajo y que la lista se vaya moviendo C) Que al colocar la mano encima de una de las imgenes se seleccione y que para elegir una de las que no se ven usar la opcin A o B
28
Sistema de reconocimiento de gestos para un visor de imgenes Pre visualizar imagen Informacin que tienen los encuestados: Tendremos una imagen seleccionada y deberemos indicarle que se muestre de manera ms grande. Resultados: A) Extender desde el centro hacia los extremos las manos B) Empujar la mano hacia la cmara C) Retraer la mano hacia atrs. D) Empujar la imagen hacia un lado.
29
Sistema de reconocimiento de gestos para un visor de imgenes Rotar imagen Informacin que tienen los encuestados: Tendremos una imagen delante y deberemos girarla. Resultados: A) Que la rotacin de la mano con la mueca indica el giro. B) Que la rotacin del brazo gire la imagen. C) Indicar el giro con el movimiento de los dos brazos. D) Empujndola de una esquina hacia abajo o hacia arriba con un movimiento vertical del brazo.
30
Sistema de reconocimiento de gestos para un visor de imgenes Entrar/Salir modo presentacin Informacin que tienen los encuestados: Un movimiento que cambi de pantalla. Resultados: En concreto esta pregunta dio a mltiples y disparatadas opciones, por las que elegimos las mas normales y decidimos hacer elegir sobre ellas. A) Empujar la mano hacia la cmara B) Un aplauso C) Separar las manos del centro de la pantalla hacia los extremos rpidamente
31
Zoom Imagen Informacin que tienen los encuestados: Tienen una imagen delante y se ha de hacer un movimiento tanto como para acercarte como para alejarte. Resultados: A) Con las manos en el centro ir alejndolas o acercndolas B) Con una flecha como en los mapas arriba reducir hacia abajo aumentar. C) Brazos en forma de cruz para ampliar y hacia el centro para reducir
32
Sistema de reconocimiento de gestos para un visor de imgenes Pan Imagen Informacin que tienen los encuestados: Tienes una imagen ampliada y has de desplazarte por ella. A) Que la posicin de la mano indica hacia qu lado se desplaza B) Que si colocas el brazo hacia el extremo de la pantalla se mueva en esa direccin C) Que la mano derecha al moverlo verticalmente hacia arriba o hacia abajo vaya en esa direccin y lo mismo con la mano izquierda pero en sentido horizontal.
33
Sistema de reconocimiento de gestos para un visor de imgenes Una vez tenemos estos resultados analizaremos los problemas que puede dar cada eleccin en lo referente a comodidad o conflictos. Seleccionar imagen A) Movimiento del brazo entero de arriba abajo o de abajo arriba Si el movimiento es continuo y realizamos el movimiento de arriba abajo o de abajo arriba repetidamente se podra confundir el movimiento hacia abajo del movimiento hacia arriba. Como seleccionar imagen ser algo bastante comn, las repeticin de este movimiento de cara al usuario puede suponer demasiado esfuerzo y nos interesa minimizar el esfuerzo. B) Colocar la mano esttica arriba o abajo y que la lista se vaya moviendo Dado que la pose de reposo del cuerpo es con los brazos estirados hacia abajo, hay la posibilidad de que movamos hacia abajo sin tener la intencin de ello. C) Que al colocar la mano encima de una de las imgenes se mueva hacia la posicin de seleccin y que para elegir una de las que no se ven usar la opcin A o B. - Conlleva los mismos problemas que el A i el B.
34
Sistema de reconocimiento de gestos para un visor de imgenes Pre visualizar imagen A) Extender desde el centro hacia los extremos las manos Es un buen candidato
Rotar imagen A) Que la rotacin de la mano con la mueca indica el giro. La limitacin de la mueca para girar implica que debemos volver al punto de inicio para volver a girar lo que conlleva a una posible confusin entre si es giro hacia la izquierda o giro hacia la derecha. B) Que la rotacin del brazo gire la imagen. Quizs podra haber problemas si no se hiciese un movimiento muy parecido al circular. C) Indicar el giro con el movimiento de las dos manos. Implicara mayor esfuerzo que otros movimientos
D) Empujndola de una esquina hacia abajo o hacia arriba con un movimiento vertical del brazo. Si el movimiento es continuo y realizamos el movimiento de arriba abajo o de abajo arriba repetidamente se podra
35
Sistema de reconocimiento de gestos para un visor de imgenes confundir el movimiento hacia abajo del movimiento hacia arriba. Entrar/Salir modo presentacin A) Empujar la mano hacia la cmara Es un buen candidato
C) Separar las manos del centro de la pantalla hacia los extremos rpidamente Es un buen candidato
Zoom Imagen A) Con las manos en el centro ir alejndolas o acercndolas Si quieres acercar mucho o alejar mucho y necesitas volver al punto de inicio puede confundirse el alejar del acercar. B) Con una flecha como en los mapas arriba reducir hacia abajo aumentar. Es una buen candidato
C) Brazos en forma de cruz para ampliar y hacia el centro para reducir Es un buen candidato
36
Sistema de reconocimiento de gestos para un visor de imgenes Pan Imagen A) Que la posicin de la mano indica hacia qu lado se desplaza Si vas hacia un lado y an falta imagen y quieres ir ms hacia ese lado debes volver al punto de inicio y durante ese trayecto es posible confundir el movimiento. B) Que si colocas el brazo hacia el extremo de la pantalla se mueva en esa direccin Es un buen candidato
C) Que la mano derecha al moverlo verticalmente hacia arriba o hacia abajo vaya en esa direccin y lo mismo con la mano izquierda pero en sentido horizontal. Si vas hacia un lado y an falta imagen y quieres ir ms hacia ese lado debes volver al punto de inicio y durante ese trayecto es posible confundir el movimiento.
inconvenientes que plantean y hecho pruebas de implementacin para ver si era posible, se ha tomado la decisin de los movimientos que se especificarn en la descripcin de los casos de uso.
37
Precondicin Solo pueden tener el formato gif, jpg, png y bmp. Activacin Escenario principal Escenarios alternativos
El usuario accede a la carpeta Imgenes de la aplicacin. El usuario transfiere las imgenes q le interese a la carpeta Imgenes. --
Escenarios alternativos
38
Precondicin Ha de haber alguna imagen seleccionada Activacin Escenario principal Escenarios alternativos
En la pantalla principal una vez seleccionada la imagen El usuario debe desplazar el brazo derecho desde la posicin de la imagen seleccionada hacia la izquierda de la pantalla, como si se empujase imagen. -
Con la imagen pre visualizada o en modo presentacin El usuario debe colocar la mano izquierda en la parte superior de la pantalla y bajarla verticalmente hacia la parte inferior de la pantalla -
39
Escenarios alternativos
Escenarios alternativos
40
Precondicin Ha de haber al menos una imagen Activacin Escenario principal Escenarios alternativos
En el modo presentacin una vez seleccionada la lupa de la barra de herramientas El usuario debe colocar los brazos en cruz para acercarse a la imagen, o bien colocar los brazos estirados hacia el centro para distanciarse de la imagen. -
Escenarios alternativos
41
4. Diseo
El diseo de la aplicacin no era algo prioritario durante la creacin de est, por lo tanto se dej una interfaz bastante simple e intuitiva. La aplicacin tendr dos pantallas bsicas, una que har la funcin de inicio, en la que se podrn ver las imgenes en pequeo y pre visualizarlas, y otra para representar el modo presentacin donde se podrn ver en tamao ms grande y navegar por ella. La estructura de estas se har teniendo en cuenta las especificaciones previas en cuanto a funcionalidad.
Pantalla de inicio
Lista de imgenes
Zona de seleccin
42
Lupa seleccionada
Indicadores de desplazamiento
43
5. Implementacin
5.1 Tecnologa
A continuacin se detallarn brevemente las distintas tecnologas que han sido necesarias para la implementacin del sistema.
C++ Es el lenguaje de programacin escogido para la creacin de la aplicacin, este lenguaje fue creado con la idea de extender el ya existente C pero con capacidad de poder manipular objetos. Una de las particularidades de c++ es la posibilidad de redefinir los operadores y de poder crear Nuevos tipos que se comporten como tipos fundamentales
API Windows Es la interfaz de programacin de aplicaciones de Windows (Windows application programming interface). Est formada por un conjunto de libreras dinmicas que se usan para poder programar en el sistema operativo Windows. Si clasificamos por categoras sus funciones encontramos las siguientes:
Depuracin y manejo de errores E/S de dispositivos Varias DLL, procesos e hilos Comunicacin entre procesos Manejo de la memoria Monitoreo del desempeo Manejo de energa Almacenamiento Informacin del sistema GDI (interfaz para dispositivos grficos) de Windows (tales como impresoras) Interfaz de usuario de Windows
44
Sistema de reconocimiento de gestos para un visor de imgenes Microsoft visual c++ 2010 Para poder programar de una manera ms eficiente y comoda, se ha utilizado un entorno de desarrollo integrado para lenguajes de programacin C, C++ y C++/CLI. Ya que est especialmente diseado para el desarrollo y la depuracin de cdigo escrito para las APIs de Windows y Directx. Gracias a las herramientas que incluye como son el IntelliSense, RemoteDebuging, Editar y Continuar, y Texto Resaltado. Ayuda a una mejor implementacin.
SDK Kinect El sdk de kinect es un kit de desarrollo que saco Microsoft para facilitar el uso de la programacin con Kinect de manera que puedas interactuar con ella llamando a unas determinadas funciones.
SDK Directx 9.0 Es una coleccin de API desarrolladas para facilitar las complejas tareas relacionadas con multimedia, especialmente programacin de juegos y vdeo, en la plataforma Microsoft Windows. forman son las siguientes: Direct3D Direct Graphics DirectInput DirectPlay DirectSound DirectMusic DirectShow DirectSetup DirectCompute La lista de las APIs que lo
45
46
Seleccin Para la seleccin de imgenes se opt por detectar si la mano derecha se colocaba en la esquina superior de la lista de imgenes esto provocara mover una imagen, por lo tanto se iran moviendo las imgenes siempre que se mantenga la mano all. Pre visualizacin Para la pre visualizacin se opt por detectar a partir de que la mano derecha se colocase encima de la imagen seleccionada y desde ah detectar un movimiento lateral hacia el centro de la pantalla. Para ello se capturaba el momento en que se pona la mano encima de la imagen (centro lateral derecho) y se consultaba si al cabo de un segundo la mano estaba cerca del centro de la pantalla. Modo presentacin Para el cambio a modo presentacin simplemente detecta si la mano izquierda y la derecha comparten el mismo punto o muy cerca, pero que a la prctica es como dar un aplauso. Rotacin La rotacin de la imagen se implement de manera que en el momento que detectase la mano izquierda sobre la esquina superior izquierda calculase si al cabo de un segundo estaba cerca de la esquina inferior izquierda, es decir, si se haba hecho un movimiento de arriba abajo.
47
Sistema de reconocimiento de gestos para un visor de imgenes Zoom Para el zoom se opt por crear un botn especfico para detectar que estaba activo y as evitar activar el movimiento con otro tipo de movimientos involuntarios. Una vez activado para acercarse se ha de detectar que la mano derecha esta hacia el centro de la zona lateral derecha y la mano izquierda hacia el centro de la zona lateral izquierda. Para alejarse debe detectar tanto la mano derecha como la mano izquierda hacia el centro de la pantalla. Pan Finalmente para la activacin del pan se debe estar en modo zoom y que la imagen sea ms grande que la pantalla, en este momento aparecen unas flechas que indican hacia donde se puede desplazar. Para desplazarlas se ha de colocar la mano derecha encima de estas flechas que estn situadas en los centros de los laterales y en el centro de la parte inferior y superior. En el caso del lado izquierdo se deber usar la mano izquierda.
A continuacin dejamos una serie de grafos que muestra los gestos y movimientos implementados. Seleccionar imagen:
48
Sistema de reconocimiento de gestos para un visor de imgenes Desplazar imgenes derecha e izquierda:
Derecha a izquierda:
Izquierda a derecha:
49
Alejarse:
Acercarse:
50
Desplazar Izquierda
Desplazar Derecha
Desplazar Arriba
Desplazar Abajo
Rotar:
51
6. Pruebas finales
Una vez acabada la aplicacin se ha dado a probar a los mismos 15 encuestados para evaluar su us. A los usuarios de menos de 15 aos y a los mayores de 50 les ha resultado ms costoso aprender a usar la aplicacin, sin embargo al cabo de unos minutos de pruebas han conseguido tener un control bastante aceptable de la aplicacin. En cuanto a los usuarios de edades comprendidas entre los 15 y los 50, han tardado poco en sentirse cmodos con los movimientos y han llegado a un control muy bueno de la aplicacin. Los usuarios con conocimientos informticos les ha resultado mucho ms fcil que al resto con conocimientos de nivel usuario. Una vez realizada la prueba a los distintos usuarios observamos diversos errores y les intentamos dar solucin:
- A diferentes estaturas se deba cambiar la posicin de la cmara y esto resultaba un inconveniente a nivel funcional. Solucin: Se le aadi la opcin de mover la cmara con el teclado para configurar el ngulo de sta y as ajustarla a la altura deseada.
- Al estar delante la cmara y hacer algn gesto involuntario como pudiese ser el caso de rascarse o un movimiento involuntario con el brazo se confunda con algn gesto definido. Solucin: Marcar los movimientos an ms apurando los mrgenes al reconocer lo que es un gesto. Sera lo equiparable a los errores del ratn como dar un clic de ms, etc.
52
Sistema de reconocimiento de gestos para un visor de imgenes - De la misma manera que pudimos observar en las pruebas de Kinect al hacer pruebas con luz solar la cmara le cuesta reconocer el cuerpo. Solucin: La cmara no funciona bien con luz solar as que no hay solucin posible, simplemente, usarlo en interior.
- En cuanto a la utilizacin del programa los usuarios comentaron que el pulsar la lupa deban desplazarse y les era incomodo tener que levantar tanto el brazo. Esto era inevitable ya que el rango de un usuario esttico con los brazos es la que marca la circunferencia creada con sus brazos, sin embargo la pantalla es rectangular, as pues, para poder llegar a las esquinas de una pantalla se debe desplazar el cuerpo.
Solucin: Sin embargo, pese a que el desplazamiento es inevitable se opt por disponer del botn de la lupa en la parte inferior, ya que era ms cmodo para los usuarios que tener que levantar el brazo.
- En un primer momento la rotacin solo se realizaba hacia un solo lado con la mano izquierda, esto era debido a que se quera evitar la confusin de si se rotaba hacia arriba o hacia abajo como se ha explicado, sin embargo, y dado que todos los usuarios lo pidieron, se quera poder rotar hacia el otro lado. Solucin: Con el fin de seguir evitando la confusin se decidi usar la mano derecha con el mismo movimiento que la izquierda para rotar en sentido inverso.
53
Sistema de reconocimiento de gestos para un visor de imgenes - Por ltimo, una vez acabada la aplicacin y puesta aprueba descubrimos que cuantas ms horas esta encendido el ordenador con Kinect en funcionamiento ms lento iba llegando hasta a fallar el reconocimiento. Solucin: Realmente no es un problema de la aplicacin sino del ordenador en el que se ha creado, ya que su rendimiento disminuye con los aos.
Finalmente se ha creado un video ilustrativo para ensear el funcionamiento de la aplicacin y se ha subido a YouTube, aqu tenis el enlace junto a una captura de pantalla del sistema montado.
Video: http://youtu.be/qDJb1j6NvnY
54
COSTES En cuanto a los costes del proyecto se dividen en costes del material, costes del software y costes del personal, a continuacin se detallan cada uno.
COSTE DEL MATERIAL El nico coste material que implica este proyecto es la cmara Kinect y el cable para poder conectarla por usb a un ordenador.
Material
Kinect Adaptador USB para Kinect
Coste
100 50 TOTAL 150
55
Sistema de reconocimiento de gestos para un visor de imgenes COSTE DEL PERSONAL Pese a que este proyecto ha sido realizado por una nica persona, intentaremos dar la versin global del coste que hara falta para llevarlo a cabo a mayor escala. ANALISTA: Se encargar de realizar el anlisis de los requisitos y la eleccin de movimientos DISEADOR: Se encargar del diseo grfico de la aplicacin PROGRAMADOR: Llevar a cabo la implementacin total de la aplicacin y las pruebas que conlleva. DOCUMENTADOR: Documentar el proyecto y a los recursos necesarios para el funcionamiento de la aplicacin. Recurso Analista Diseador Programador Documentador Horas 160 40 156 60 Precio/Hora 25 15 25 15 %trabajo 48% 12% 47% 18% Total 4000 600 3900 900 TOTAL 9400
56
Sistema de reconocimiento de gestos para un visor de imgenes COSTE DE SOFTWARE Los costes de los programas usados dado que se han usado licencias de la UPC no ha habido ninguno, sin embargo y para seguir en la lnea del coste real pondremos el precio del mercado.
Software
Microsoft Visual Studio
Coste
12.769 TOTAL 12.769
COSTE TOTAL El coste total viene a ser la suma de todos los costes antes descritos (costes de material + costes software + costes del personal) y asciende a los 22319
57
8. Conclusiones
Como conclusin podemos afirmar que hemos conseguido llevar a cabo los objetivos propuestos, tanto el de llevar a cabo pruebas con esta nueva tecnologa como realizar una aplicacin funcional que interactuase con ella. Por otro lado, una vez acabado el proyecto podemos afirmar que con ms tiempo podramos haber conseguido una aplicacin mucho ms compleja, sin embargo al no tener una base de las tecnologas que se han usado y haber tenido que empezar de cero ha supuesto un gran retraso en la implementacin de la aplicacin.
OPININ PERSONAL Una vez trabajado con Kinect y visto la gran cantidad de posibilidades que ofrece estoy seguro que se acabar usando para mucho ms que juegos, de hecho, durante estos meses desde que sali el nuevo SDK de Microsoft muchos equipos de programadores han realizado ya diversas aplicaciones como hemos visto en la memoria para extender su us a muchos otros mbitos. En cuanto a la realizacin del proyecto creo que me ha sido muy til, porque he podido evaluar mis conocimientos y mi capacidad para adquirir nuevos por mi cuenta. Gracias a la base que he conseguido durante la carrera he sido capaz de aprender a usar nuevas herramientas a partir de documentacin y manuales, pese a que algunas no estuviesen demasiado bien documentadas a causa de ser demasiado nuevas como es el caso del SDK de Kinect. As pues creo que este proyecto me ha ayudado mucho a prepararme para futuros proyectos.
58
9. Bibliografa
[1] C++ http://www.cplusplus.com/doc/tutorial/ Ivor Horton's Beginning Visual C++ 2010
[3] Directx http://www.lawebdelprogramador.com http://www.zonagratuita.com/ http://www.directx.com Introduccin a la Programacin Ldica DIRECTX: PROGRAMACION DE GRAFICOS 3D Diversos foros
[4] Kinect y sdk http://kinectforwindows.org/ http://www.wikipedia.com Diversos foros Programming Guide KinectSDK
59