SanchisCano Angel

Embed Size (px)

DESCRIPTION

Docomento

Citation preview

  • ESCUELA TCNICA SUPERIOR DE INGENIEROS DETELECOMUNICACIN

    INGENIERA SUPERIOR EN TELECOMUNICACIN

    PROYECTO FINAL DE CARRERAMEDIKNECT:UN SISTEMA DE REHABILITACIN

    VIRTUAL

    Angel Sanchis Cano

    Valencia, Septiembre 2013

  • Escuela Tcnica Superior de Ingenieros de Telecomunicacin

    Ingeniera superior en Telecomunicacin

    MEDIKNECT:Un sistema de Rehabilitacin Virtual

    Director del proyecto: Antonio Albiol Colomer

    Autor del proyecto: Angel Sanchis Cano

    Valencia, 16 de septiembre de 2013

    Fdo: Angel Sanchis Cano

  • Resumen

    En el presente documento se expone la realizacin del proyecto de final de carrera del alumno ngelSanchis Cano de Ingeniera de Telecomunicacin centrado en el desarrollo de una aplicacin para larealizacin de rehabilitacin mediante Kinect. En primer lugar se realiza un estudio del estado actual delrea de la rehabilitacin mediante realidad virtual poniendo especial inters en los dispositivos de bajocoste para posteriormente explicar las fases del diseo de un proyecto software segn el modelo del pro-ceso unificado, a continuacin se explican las herramientas utilizadas y la estructura y el funcionamientolgico del sistema de rehabilitacin virtual y se detallan las interfaces y el funcionamiento del mismo.Por ltimo se explican los problemas encontrados durante el desarrollo del proyecto y las soluciones aesos problemas, as como las recomendaciones para futuros estudios y un pequeo estudio de costes delproducto.

    I

  • Abstract

    This document contains the study for the degree ending project made by the student of telecommuni-cations engineering Angel Sanchis Cano, focused in the development of a Virtual Rehabilitation (VR)application using the Kinect Sensor. First of all we present a study of the status of the art in the area ofrehabilitation with virtual reality and the low-cost devices used to do VR systems. After that we explainthe phases of design of a software project based in the unified process model. The project also containsa description of the used software tools, the structure, the logic of the VR System and a detailed expla-nation of the interfaces. Finally we explain the problems that we have found in the project developmentand the solutions for these problems as well as the suggestions for future studies and a short study ofcosts.

    II

  • Palabras Clave

    Rehabilitacin, Realidad Virtual, Low-cost, Telerehabilitacin, Kinect, Sistema Rehabilitacin Virtual,Proyecto final de carrera, Telecomunicacin.

    III

  • IV

  • ndice general

    1. Introdiccin 11.1. Justificacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3. Campos de aplicacin: Kinect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.4. Revisin del Estado del arte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    1.4.1. Impacto socioeconmico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.4.2. Rehabilitacin psicolgica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.4.3. Rehabilitacin motora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    2. Diseo 72.1. Planificacin del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.2. Posibilidades de desarrollo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.3. Ciclo de Desarrollo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

    2.3.1. Fase Inception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.3.2. Fase Elaboration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    2.4. Herramientas utilizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.4.1. Microsoft Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.4.2. Dispositivo Kinect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

    3. Implementacin 313.1. Descripcin diagramas de bloques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323.2. Reconocimiento de posturas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

    3.2.1. Algoritmo espacial: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.2.2. Algoritmo Vectorial: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

    3.3. Interfaz de aplicacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.3.1. Interfaz comn a todos los actores . . . . . . . . . . . . . . . . . . . . . . . . . 453.3.2. Interfaz de terapeuta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483.3.3. Interfaz de paciente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533.3.4. Interfaz de Desarrollador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

    3.4. Ejemplos de funcionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

    4. Discusin/Conclusiones 574.1. Problemas/Soluciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574.2. Posibilidades de Evolucin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584.3. Recomendaciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584.4. Costes del sistema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

    5. Valoracin personal 61

    6. Bibliografa 63

    V

  • 7. ANEXO 1: API Mediknect 65

    8. ANEXO 2: Referencias bibliogrficas 718.1. Artculo Sanchis, A (2013) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

    VI

  • Captulo 1

    Introdiccin

    1.1. Justificacin

    El presente proyecto nace gracias al importante crecimiento que est experimentando el campo de lo quea partir de ahora llamaremos Rehabilitacin Virtual o simplemente RV. Se define como RehabilitacinVirtual a la unin de dos campos: la rehabilitacin y la realidad virtual. El inters por realizar este pro-yecto se debe a que el mbito en el que est enmarcado se encuentra en un momento ideal, ya que existela tecnologa necesaria para el desarrollo de productos comerciales y la sociedad se encuentra preparadapara un cambio en los tratamientos clsicos de rehabilitacin, lo que puede suponer un importante im-pacto socioeconmico, al reducir de forma considerable los costes de los tratamientos de rehabilitacinmejorando los resultados de los mismos y la calidad de vida de los pacientes que los estn recibiendo,gracias entre otras cosas a la posibilidad de la telerehabilitacin. Por otra parte la realizacin de un pro-yecto sobre rehabilitacin haciendo uso de las ltimas tecnologas en la captura de movimientos suponeun doble reto: por una parte el hecho de trabajar en un rea completamente diferente a lo trabajado du-rante la carrera como es la rehabilitacin y por otra parte el hecho de trabajar con las ltimas tecnologasde captura de movimiento, lo que suponen un reto personal que me permitir conocer en profundidadalgunos de los dispositivos presentes en el mercado en la actualidad.Todo el desarrollo del proyecto ha sido motivado y al mismo tiempo posible gracias al contexto quese va a describir continuacin: La aparicin de la rehabilitacin virtual ha sido posible gracias a losimportantes avances en la tecnologa en los ltimos aos. Aunque la realidad virtual ya exista muchosaos atrs su coste era muy elevado, por lo que apenas se desarrollaron sistemas que hicieran uso de estatecnologa. Para que el abaratamiento y la evolucin de estas tecnologas fuera posible eran necesariasgrandes inversiones iniciales que se encontraron en el sector militar, debido a la necesidad de reducircostes en el entrenamiento de los pilotos de aviacin en la dcada de los 60 (Paella, 2006). Por otrolado la constante mejora en la escala de integracin y la popularizacin del PC hicieron que los costesse redujeran an ms, aunque el verdadero auge no se produjo hasta la aparicin de los primeros dis-positivos de captura de movimiento estndares y de bajo coste como son la Wii en 2006 o Kinect en2011, pensados en primer lugar para el mundo del entretenimiento pero que se ha observado que son deutilidad en muchos otros mbitos.

    1

  • 1.2. Objetivos

    El presente proyecto que forma parte del plan de estudios de la Ingeniera Superior en Telecomunicacio-nes pretende desarrollar un programa informtico para la tecnologa de captura de movimiento de la quehace uso el dispositivo diseado en primer lugar para la XBOX (Kinect) con aplicacin en el mbito dela Rehabilitacin, que permita mejorar la calidad de vida de los pacientes que reciben un tratamiento derehabilitacin tras sufrir un ictus u otro tipo de accidente que haya limitado su movilidad, mediante unsistema que les permita recibir un tratamiento personalizado con un bajo coste y con la posibilidad deaumentar el tiempo de tratamiento mediante la realizacin de ejercicios en el domicilio particular.El sistema a disear se ha pensado como una aplicacin completa y funcional que permita realizar reha-bilitacin motora personalizada para distintas partes del cuerpo, no obstante debido a la rpida evolucinde la tecnologa una aplicacin software puede quedarse obsoleta en muy poco tiempo, por lo que enel presente proyecto se ha decidido realizar el sistema mediante bloques independientes y con un gradode acoplamiento entre ellos mnimo, de forma que puedan ser sustituidos por bloques ms complejos oconectados con nuevos bloques para aumentar la funcionalidad de la aplicacin de forma sencilla. De lamisma forma el desarrollo de bloques independientes como unidades funcionales tambin permite quese reutilicen en otras aplicaciones cumpliendo solamente con el interfaz (Entradas/salidas).

    Los objetivos del proyecto son los siguientes:

    Conocer las diferentes opciones existentes para captura de movimiento y profundizar en el estudiode las libreras de Kinect for Windows.

    Disear un sistema funcional que haga uso de la tecnologa de Microsoft para facilitar los trata-mientos de rehabilitacin personalizada.

    Desarrollo de bloques independientes con funcionalidad completa que permitan desarrollar futurasaplicaciones con un ahorro considerable de tiempo y en un nivel de abstraccin mayor.

    Para poder cumplir los objetivos anteriormente nombrados es necesario superar ciertas barreras u obje-tivos secundarios que se van a listar a continuacin:

    Aprender el funcionamiento del entorno de programacin Microsoft Visual Studio 2011 y la pro-gramacin con interfaz grfica.

    Aprender el lenguaje de programacin C# y conocimientos bsicos de XML, as como las librerasde sistema de Microsoft (MSDN).

    Investigacin sobre las posibilidades y las limitaciones del dispositivo Kinect, tales como resolu-cin espacial, espacio necesario o disponibilidad y costes.

    Aprender LATEX y otros programas relacionados con edicin de texto e imgenes para la escriturade la presente memoria.

    2

  • 1.3. Campos de aplicacin: Kinect

    El presente proyecto es el resultado del concurso para aplicaciones de Kinect que se realiz en laE.T.S.I.T UPV que comenz en el ltimo trimestre de 2011 y que concluy en octubre del 2012. Pa-ra la realizacin del proyecto se estudiaron los distintos campos en los que se poda utilizar la tecnologadel Kinect, los resultados de dicho estudio se exponen a continuacin.

    El principal uso para el que fue diseado y comercializado Kinect fue para el desarrollo de videojuegos.Las consolas de sptima generacin (Wii, PS3, Xbox360) incorporaron un nuevo concepto de juegoe intentaban mejorar la experiencia de los sujetos, de forma que la interaccin con el mundo virtualfuera mucho ms natural, para ello las compaas comenzaron a desarrollar los llamados sensores demovimiento. El primero en aparecer fue el EyeToy de PlayStation, no obstante presentaba grandes limi-taciones tcnicas y tuvo poco xito comercial, unos aos despus PlayStation lanz la PS3 con su mandoDualShock3 que incorporaba sensores de movimiento. Por otro lado Nintendo lanz el revolucionariosistema Wii Remote tambin conocido como Wiimote, que se trata de un mando que hace uso de acele-rmetros y deteccin infrarroja para seguir los movimientos del usuario. Este dispositivo fue el primersensor de movimiento en el mundo de las videoconsolas y tuvo un gran xito comercial, haciendo dela Wii la videoconsola de sptima generacin ms vendida. Como observamos dos de los tres grandesfabricantes de videoconsolas se inclinaron por incluir los sensores de movimiento en sus mandos, noobstante Microsoft decidi hacer algo diferente, compr la tecnologa de captura de movimiento de Pri-meSense y lanz un dispositivo completamente distinto: Kinect. Este dispositivo consta de dos cmaras,una de RGB otra de infrarrojos, que permiten obtener una imagen en color y de profundidad de lo que seencuentra delante de la cmara. Tambin consta de un array de cinco micrfonos capaz de grabar audioy reconocer la posicin desde dnde se gener un sonido mediante tratamiento de seal. Para conocer ladistancia a la que se encuentra un objeto de la cmara existen diversas tecnologas.La primera de ellas se basa en el tiempo que tarda un laser en ser recibido desde que la fuente lo gener,este tipo de tecnologas se llaman de time of flight, ya que miden el tiempo que ha tardado la luz enrecorrer el camino de ida y de vuelta.La segunda forma de medir las distancias es la que usa el sensor Kinect y se basa en la triangulacin:A partir de dos cmaras o un iluminador y una cmara perfectamente alineados se puede conocer ladistancia a la que se encuentra un objeto a partir del desplazamiento de la posicin de la proyeccin delobjeto en los receptores como podemos ver en la Figura 1.1. Con el desplazamiento lateral podemoscalcular la disparidad y a partir de la disparidad obtener la profundidad del objeto segn se indica en laFigura 1.2.Los dispositivos anteriormente mencionados fueron diseados como una herramienta de interaccinentre la videoconsola y el usuario, no obstante han superado estas funciones, especialmente el Kinect,que hoy en da se usa en decenas de aplicaciones. Todo ello ha sido posible gracias a los controladoreslibres que salieron en primer lugar y a Kinect for Windows posteriormente. Algunas de las aplicacionesque podemos encontrar hacen uso del Kinect en mbitos tan variados como la domtica, la medicina ydentro de esta la rehabilitacin (Rutgers, 2006) y la ciruga (Tedesys), el automovilismo, la robtica, elmodelado de objetos y lugares en 3D y un largo etctera.

    3

  • Figura 1.1: Funcionamiento dispositivos basados en triangulacin

    Figura 1.2: Relacin entre la profundidad y la disparidad

    4

  • 1.4. Revisin del Estado del arte

    El rea de la RV en la que se ha desarrollado el presente proyecto est experimentando un importantecrecimiento en los ltimos aos. Para poder aportar algo al rea resulta imprescindible realizar un estudiodel estado del arte para poder identificar las carencias que la RV presenta en la actualidad.Tras realizar una bsqueda sobre la realidad virtual aplicada a la rehabilitacin en Google Scholar,Pubmeb e IEEEXplore se han identificado tres grandes tendencias en el mbito de la RV que se exponena continuacin en una tabla.

    ndice Tendencia Descripcin1 Impacto socioeconmico Estudios centrados en la definicin de los conceptos

    nuevos relacionados con la rehabilitacin virtual, elestudio del impacto y la mejora en la calidad de vi-da en los pacientes y/o del impacto econmico quepuede suponer la implantacin de estos sistemas conrespecto a sistemas previos ya existentes. En estatendencia tambin se incluyen los estudios que rea-lizan revisiones del rea para ver su estado de madu-rez y las tendencias que est siguiendo.

    2 Rehabilitacin psicolgi-ca

    Estudios centrados en el desarrollo y estudio de sis-temas que hacen uso de cualquier sistema de RV pa-ra tratamiento de personas con problemas psicolgi-cos, tales como las fobias, el estrs post traumticoo cualquier problema relacionado.

    3 Rehabilitacin motora Estudios centrados en el desarrollo de sistemas y lamedida de los resultados de la aplicacin de RV a pa-cientes con deficiencias motoras debido a accidenteso enfermedad.

    Tabla 1.1: Revisin del estado del arte, (Sanchis, 2013)

    1.4.1. Impacto socioeconmico

    Resulta de gran importancia poder medir el impacto que un rea de investigacin est teniendo en elentorno en el que se desarrolla, tanto a nivel social como a nivel econmico. Es por ello que los estudiosque evalan el impacto socioeconmico resultan de gran inters.Una de las principales publicaciones que encontramos en esta tendencia es un artculo que realiza unanlisis DAFO (Rizzo & Kim, A SWOT Analysis of the Field of Virtual Reality Rehabilitation andTherapy, 2005) y hace un estudio global del sector, definiendo nuevos trminos relacionados con la RV,sugiriendo distintos mbitos de aplicacin y evaluando el crecimiento y la importancia del rea. Otraspublicaciones que realizan un estudio socioeconmico del rea se centran en el estudio de nuevos siste-mas haciendo uso de dispositivos de bajo coste. El caso de (Rand, Kizony, & Weiss, 2008) (Sucar, Leder,Hernndez, Snchez, & Azcrate, 2010) consiguen mediante un sistema de 1.000$ obtener resultadossimilares a los de un sistema de rehabilitacin tradicional de 40.000$.Desde el estudio de Rizzo y Kim (2005) no se ha realizado ningn estudio tan completo del rea y delimpacto que puede suponer a nivel econmico la implantacin de los sistemas de RV en clnicas reales,por lo que es una carencia importante del rea.

    5

  • 1.4.2. Rehabilitacin psicolgica

    La realidad virtual ha encontrado una aplicacin en la rehabilitacin psicolgica gracias a la capacidademular un entorno real y poder controlar los estmulos generados y el grado de cada uno de ellos, deforma que permite a los terapeutas focalizarlos en los aspectos que consideren de mayor inters sin poneral paciente en situaciones potencialmente peligrosas (Castelnuovo, Gaggioli, Mantovani, & Riva, 2003).Otro de los puntos importantes es la posibilidad del tratamiento de fobias mediante terapia de exposicincontrolada, gracias a la capacidad de estos sistemas de controlar los estmulos generados y la intensidadde los mismos.Uno de los principales problemas que supone el uso de este tipo de sistemas para el tratamiento deenfermedades psicolgicas reside en la dificultad de medir la eficiencia de los progresos, no obstanteexisten estudios que han conseguido tratar el desorden por estrs post-traumtico (PSTD) en soldadosque han estado en guerras obteniendo resultados positivos y manteniendo dichas mejoras incluso tresmeses despus de haber recibido el tratamiento (Rizzo, y otros, 2010).En este tipo de tratamientos se han incorporado recientemente sistemas que hacen uso de dispositivoslow cost tales como el Kinect (Fivan) o la Wii (Wuang, Chiang, Su, & Wang, 2010).

    1.4.3. Rehabilitacin motora

    Al igual que en la rehabilitacin Psicolgica la realidad virtual en los ltimos aos ha sido incorporadaa los tratamientos de rehabilitacin motora. Existe un gran nmero de estudios que evalan la aplicacinde la realidad virtual en los tratamientos de problemas motores por enfermedades neurolgicas o poraccidente cerebrovascular, lo que supone un gran nmero de pacientes y de afecciones distintas a tratar.Hoy en da existen estudios centrados en diferentes tipos de rehabilitacin, tales como el equilibrio (Gil-Gmez, Llorns, Alcaiz, & Colomer, 2011), la rehabilitacin del miembro superior, el miembro inferioro la funcin motora global.En la actualidad existen principalmente dos tipos de sistema que permiten realizar rehabilitacin motora:los basados en sistemas robticos como el TOyRA frente a los basados en dispositivos low-cost comoVirtualrehab (Virtualrehab, 2013) (Gil-Agudo, y otros, 2011).El presente proyecto se centra en esta ltima tendencia debido a algunas de las carencias que presenta.Uno de los principales problemas que nos encontramos en los sistemas que ya han sido desarrollados esla baja flexibilidad que presentan, ya que solamente permiten realizar ejercicios que han sido programa-dos previamente. Para solucionar este problema el sistema que se detalla a continuacin est pensadopara que el terapeuta pueda aadir o eliminar ejercicios previamente grabados sin la necesidad de unprogramador y sin conocimientos informticos, de la misma forma tambin permite importar/exportarejercicios de/a otros centros y agruparlos en categoras gracias a que estos se almacenan en un ficherobinario. Finalmente tambin se decidi centrar el proyecto en esta tendencia por los elevados costesde los sistemas existentes o la baja disponibilidad de stos. El sistema desarrollado est pensado paraque su coste sea bajo y se pueda distribuir de forma fcil, permitiendo realizar ejercicios personaliza-dos desde el domicilio, gracias a la capacidad de crear ficheros de ejercicios personalizados y a que elcoste del sistema sera lo suficientemente bajo como para que pudiera ser adquirido por los pacientes derehabilitacin.

    6

  • Captulo 2

    Diseo

    2.1. Planificacin del proyecto

    La fecha de inicio del proyecto es en el mes de Noviembre de 2011 tras inscribirse en el concursode aplicaciones para Kinect realizado en la UPV. Durante los meses siguientes se realiza un anlisisexhaustivo de los diferentes proyectos que se estaban realizando con Kinect en aquel momento paradeterminar el tema sobre el que iba a basarse el presente proyecto.Tras un anlisis de las diferentes tendencias se procede entre los meses de diciembre y marzo a probarlas distintas herramientas y drivers disponibles para el desarrollo de una aplicacin cualquiera. Duranteel mes de enero se paraliz el desarrollo del proyecto por exmenes para en febrero retomar la labor conel estudio/repaso de los lenguajes de programacin c, c++, c# y Java. Finalmente en el mes de Abril sedecide que la temtica en la que se va a basar el proyecto ser la rehabilitacin virtual por los motivosexpuestos en el apartado 1.4 como conclusin de la revisin del estado del arte.Puesto que en este momento el plazo para presentar el proyecto a concurso se extenda hasta el mes dejunio se planifica realizar una primera versin de la aplicacin con una funcionalidad bsica: MediknectV1. Posteriormente se prolongara el plazo de entrega del proyecto para el concurso desde finales deAbril hasta la mitad de Septiembre del 2012, por lo que se realiza una nueva planificacin para larealizacin de Mediknect V2 y Mediknect V3, cambiando el paradigma de programacin en la V2y ampliando la funcionalidad en la V3, aumentando as las opciones de poder ser comercializado y eldesarrollo de futuras versiones al pasar del paradigma imperativo o de procedimientos a un paradigmaorientado a objetos, de esta forma un proyecto planificado para realizarse de Diciembre de 2011 a Juniode 2012, con una duracin de 7 meses se ha convertido en un proyecto con una duracin de 10 meses.Finalmente se planific redactar la presente memoria durante el segundo cuatrimestre del curso 2012/2013ya que en el primer cuatrimestre la carga lectiva impeda poder dedicar el tiempo necesario para finalizarel proyecto.En la figura 2.1 con la planificacin del PFC con una clara separacin a partir del momento en quese tiene conocimiento de la ampliacin de plazos para la presentacin en el concurso en el presenteproyecto obtuvo el segundo premio. Para el desarrollo del diagrama se ha hecho uso de la herramientagratuita GanttProject.

    7

  • Figura 2.1: Planificacin del proyecto con gantt project

    8

  • 2.2. Posibilidades de desarrollo

    Para la realizacin del proyecto existen distintas opciones que permiten la implementacin del mismo ycada una de dichas opciones presenta diferentes ventajas e inconvenientes respecto a las dems. En esteapartado pretendemos realizar un estudio de las posibilidades de desarrollo anteriormente mencionadasque se estudiaron antes de realizar la eleccin definitiva y justificar dicha eleccin.Las diferentes opciones de desarrollo que se estudiaron son Libfreenect, PointCloud y Kinect For Win-dows que se van a describir a continuacin de forma independiente.

    Libfreenect/Open Kinect:

    En el ao 2010 una empresa ofreci un premio econmico para aquel que fuera capaz de desarrollarun controlador de cdigo abierto para Kinect. Poco tiempo despus el premio fue concedido al espaolHctor Martn que desarroll un controlador mediante el uso de ingeniera inversa, convirtindose en elprimer controlador para PC.Una de las principales caractersticas de este controlador es la posibilidad de tener acceso al cdigodel mismo, lo que ofrece una gran flexibilidad, aunque esto tambin supone una barrera importante paradesarrolladores poco experimentados por las dificultades que derivan del gran abanico de posibilidades aelegir y la falta o la dispersin de la informacin til sobre la instalacin y las herramientas a utilizar. Porotro lado aunque en principio el controlador estaba disponible solamente para GNU/Linux las futurasversiones ampliaron las posibilidades a MAC y Windows, aunque en este ltimo presentaba bastantesproblemas.Cuando se realiz el estudio de este controlador a finales del 2011 ofreca la posibilidad de controlar lacmara RGB y el sensor de profundidad del Kinect, sin tener acceso al motor ni a los micrfonos, loque supona una limitacin importante que ya ha sido superada en las versiones actuales. Otro de losinconvenientes que presenta es que al no ser el controlador del fabricante no es capaz de obtener toda lapotencia del hardware del dispositivo, por lo que la precisin es menor.

    Ventajas Inconvenientes-Primer controlador para PC. -Gran dificultad inicial.-Cdigo abierto. -Incompatibilidad parcial con Windows.-Flexibilidad y posibilidad de modificacin. -Desaprovechamiento de potencial.-Multiplataforma.

    Tabla 2.1: Tabla resumen caractersticas Libfreenect

    PointCloud:

    La librera PCL(Point Cloud Library) es un proyecto abierto, independiente y a gran escala para imge-nes 2D/3D y procesado de nubes de puntos. Esta librera resultaba de gran inters ya que las imgenesque obtenemos mediante Kinect son imgenes RGB (2D) y una nube de puntos a travs de la cmara deinfrarrojos. Con las libreras y la tecnologa de PCL disponemos de una gran cantidad de herramientaspara trabajar con los datos que nos proporciona el Kinect.Al igual que la opcin anterior se trata de una herramienta libre multiplataforma, pero en este casono se encontraron incompatibilidades con Windows desde su instalacin. Tambin encontramos granfacilidad en la instalacin, estando a disposicin en la pgina del proyecto un instalador muy intuitivo(PCL, 2013). Resulta tambin de inters que PCL est disponible bajo una licencia BSD, lo que hace quesea completamente libre para el uso comercial y la investigacin. Para la captura de puntos del Kinect,

    9

  • la generacin de esqueletos y algunas otras funciones relacionadas con el sensor la librera PCL haceuso de OpenNI.Una de las caractersticas que hizo esta opcin ms interesante que la anterior era el hecho de que siendolibre nos proporcionaba mayores facilidades para la instalacin, no obstante segua presentando incon-venientes para desarrolladores principiantes, al no aparecer guas sencillas sobre las libreras o sobre lasherramientas de desarrollo ms adecuadas para el desarrollo de aplicaciones. Otro de los inconvenienteses que al ser una proyecto para el tratamiento de nubes de puntos en general es necesario conocer lasestructuras que maneja el programa de forma interna y hay una gran cantidad de funciones que no sonde inters para el desarrollo de una aplicacin como la que compete a este proyecto, dificultando asencontrar las funciones de inters.

    Ventajas Inconvenientes-Proyecto abierto. -Ausencia de guas para principiantes.-Multiplataforma. -Necesidad de conocer las estructuras que maneja internamente.-Gran cantidad de libreras y funciones. -Gran cantidad de informacin que no es de inters.-Mayor flexibilidad al ser abierto.-Fcil instalacin.

    Tabla 2.2: Tabla resumen caractersticas PointCloud.

    Kinect For Windows:

    En Febrero del ao 2011 Microsoft anuncia que lanzar un SDK (Software Development Kit) para eldispositivo Kinect para el sistema operativo de Windows a partir de su versin Windows 7.La primera versin del SDK inclua los Drivers necesarios para conectar Kinect con un PC (Windows 7)y las herramientas para desarrollar aplicaciones para Kinect en C#, C++ o Visual Basic en Microsoft Vi-sual Studio 2010. Adems de los drivers inclua funciones avanzadas cmo son el Tracking de esqueletoso el reconocimiento de voz, herramientas que no han estado disponibles en ninguna otra herramienta o silo estn todava funcionan de forma poco ptima. Ms tarde aparecera la versin Kinect For Windows1.5, que incorporaba diferentes mejoras, entre ellas el Kinect Studio que permite grabar, reproducir ydepurar interacciones de los usuarios con las aplicaciones; soporte para tracking de personas sentadas yuna gran cantidad de nuevos idiomas en el reconocimiento de voz, entre ellos el espaol.Las ventajas de esta opcin incluyen la disponibilidad de toda la documentacin de Microsoft, de suslibreras y sus DLL, as como el funcionamiento de forma nativa en Windows, el sistema operativo msutilizado en los PC en la actualidad. Tambin es de gran importancia los videos-gua para principiantes,dnde se explican las funciones bsicas que proporciona el SDK y se desarrollan ejemplos simples, loque permite familiarizarse con este tipo de aplicaciones de una forma mucho ms suave que las opcionesanteriores.Las principales desventajas que presenta esta opcin es que las aplicaciones desarrolladas solamentefuncionarn en Windows 7 o superior y que en principio no se pueden realizar para uso comercial.

    Ventajas Inconvenientes-SDK especfico. -Solamente funciona en Windows.-Skeletal Tracking y reconocimiento de voz. -Incompatibilidad hacia atrs con Windows XP.-Integracin con el entorno de desarrollo. -Necesidad de licencia de distribucin.

    Tabla 2.3: Tabla resumen caractersticas Kinect For Windows.

    10

  • De las tres opciones anteriormente descritas se opt por la eleccin de Kinect For Windows por lasventajas anteriormente mencionadas, especialmente por la capacidad de Tracking de las articulaciones,lo que era de especial inters para el proyecto que se deseaba desarrollar y por la fcil integracin conlas herramientas de desarrollo que se describen en apartados siguientes.

    11

  • 2.3. Ciclo de Desarrollo

    Para el desarrollo del presente proyecto se ha realizado parte de un ciclo de vida evolutivo utilizandoel paradigma de orientacin a objetos. El tipo de ciclo de vida utilizado es el de proceso unificado queest compuesto por cuatro fases (inception, elaboration, construction y transition) con unos objetivos dedesarrollo claros para cada una de ellas y a su vez cada fase se realiza en uno o varios ciclos de desarro-llo, aadiendo en cada ciclo funcionalidades nuevas al ciclo anterior; estos ciclos pueden contener lasactividades de la ingeniera software (captura de requisitos, anlisis, diseo, implementacin y prueba)y para el desarrollo de cada una de estas partes se hace uso del lenguaje unificado UML.En la Figura 2.2 se muestra la dedicacin o nfasis que requiere cada una de las fases del desarrolo ensus distintos ciclos durante el ciclo de vida de un proyecto de ingeniera software.

    Figura 2.2: Estructura Proceso Unificado. Fuente: http://www.digiplex.com.ar/

    En el presente documento se va a desarrollar de forma breve la fase inception y se va a poner especialnfasis en la fase elaboration y dentro de sta en la captura de requisitos y en el desarrollo de los casosde uso.

    12

  • 2.3.1. Fase Inception

    La fase inception es la primera del ciclo de vida y su objetivo es obtener un modelo de casos de uso quesirve como gua para el desarrollo de las siguientes fases. Las principales tareas a realizar en esta fase esdescribir los requisitos que se le exigen al sistema e identificar los actores y los casos de uso necesariospara cumplir dichos requisitos.

    Definicin de requisitos:

    La aplicacin desarrollada es un sistema de rehabilitacin que permitir gestionar de forma personaliza-da los ejercicios asignados a cada paciente y estar diseada de forma que en futuras versiones permitala rehabilitacin desde el hogar monitorizada de forma remota o telerehabilitacin. Los requisitos fun-cionales son los siguientes:

    Los pacientes podrn acceder a su lista de ejercicios personalizados y podrn observar y realizarlos ejercicios asignados para ellos con el nmero de repeticiones que elijan.

    Los terapeutas podrn acceder a la lista de ejercicios de cada paciente y podrn aadir o eliminarejercicios de la lista.

    Los ejercicios nuevos podrn personalizarse, indicando las articulaciones implicadas, el nmerode pasos de los que consta una repeticin y el tiempo mximo en cada repeticin.

    Durante el desarrollo del ejercicio el paciente debe poder observar su imagen en la pantalla y laimagen del terapeuta para observar el movimiento que tiene que realizar a continuacin.

    Al iniciar el sistema es necesario que se realice una calibracin del sensor para adecuarse a laaltura del paciente o del terapeuta.

    Durante todo el tiempo de uso de la aplicacin el paciente deber poder controlar la aplicacin congestos, sin necesidad de un ratn o similar, el terapeuta podr hacer uso del ratn para configurarlos ejercicios nuevos.

    Adems de estos el sistema tiene los siguientes requisitos no funcionales:

    El sistema ser accesible mediante un ordenador con Kinect conectado.

    El sistema se ejecuta de forma local.

    El sistema requiere de un espacio libre de obstculos de aproximadamente 2x2 m2.

    13

  • Modelo de casos de uso:

    En la Figura2.3 aparecen los actores y los casos de uso identificados a partir de los requisitos especifi-cados anteriormente.

    Figura 2.3: Diagrama resultante de la captura de requisitos

    14

  • Especificacin de los casos de uso:

    A continuacin se especifican los casos de uso identificados de forma resumida.

    Caso de uso: Calibracin.Actores: Terapeuta, Paciente.Propsito: Calibrar la elevacin del sensor Kinect a la altura de la persona

    que va a utilizar la aplicacin para un funcionamiento ptimo.Descripcin: La aplicacin muestra una aviso para que el usuario se site de-

    lante del sensor, una vez detectada la altura comienza la calibra-cin de forma automtica y se muestra un aviso para que el usua-rio espere.

    Caso de uso: Listar ejercicios.Actores: Terapeuta, Paciente.Propsito: Mostrar una ventana dnde tanto el terapeuta como el paciente

    puedan observar los ejercicios disponibles.Descripcin: La aplicacin muestra una pantalla con cuatro ejercicios como

    mximo y unos botones de desplazamiento para observar los ejer-cicios siguientes o anteriores. Cada ejercicio se compone de unnombre y una imagen del ejercicio.

    Caso de uso: Agregar Ejercicios.Actores: Terapeuta.Propsito: Agregar ejercicios personalizados para cada paciente.Descripcin: Permite al terapeuta agregar ejercicios personalizados pudiendo

    seleccionar las articulaciones implicadas en el ejercicio, el nme-ro de pasos de los que se va a componer el ejercicio y el tiempomximo permitido para realizar cada repeticin.

    Caso de uso: Borrar Ejercicios.Actores: Terapeuta.Propsito: Permitir al terapeuta gestionar las listas de ejercicios personaliza-

    das para cada paciente pudiendo borrar los ejercicios que desee.Descripcin: Una vez el terapeuta ha listado los ejercicios puede seleccionar

    aquellos que desea eliminar y se borrarn temporalmente. Unavez ha terminado de seleccionar los ejercicios a borrar puede con-firmar los cambios o descartarlos.

    15

  • Caso de uso: Realizar Ejercicios.Actores: Paciente.Propsito: Permite al paciente realizar los ejercicios disponibles en su lista

    personalizada de ejercicios.Descripcin: Una vez el paciente ha listado los ejercicios puede seleccionar el

    nmero de repeticiones que desea realizar del ejercicio a seleccio-nar y a continuacin seleccionar dicho ejercicio. En este momentose muestra una pantalla en la que aparece el nmero de pasos delos que se compone el ejercicio, el tiempo disponible para realizarcada repeticin y una imagen del siguiente paso a realizar.

    16

  • 2.3.2. Fase Elaboration

    El objetivo de esta fase es conseguir una arquitectura ejecutable del sistema, que estar compuesta porun conjunto de clases que implementan la funcionalidad bsica del mismo. La arquitectura se definirmediante un subconjunto de los casos de uso que, con una funcionalidad mnima, permitan al sistemaser desarrollado y probado.

    Puesto que en la fase anterior (inception) solamente se identificaron cinco casos de uso en esta fase se vana desarrollar todos los casos de uso anteriormente identificados. Aunque es bastante comn desarrollaresta fase (elaboration) en varios ciclos nosotros vamos a desarrollarla en un nico ciclo que nos dar lavisin necesaria para desarrollar la aplicacin.

    En cuanto al diagrama de clases que aparecer al final de este apartado ser un diagrama de clasessimplificado que no mostrar todas las clases de las que finalmente se compuso el sistema final, peroque son una buena muestra del funcionamiento del sistema, por lo que no se va a detallar en este puntola implementacin de los casos de uso detallados a continuacin, ya que en la fase construction queno se escribi en el desarrollo del proyecto sufrieron modificaciones respecto a lo especificado en estafase anterior.

    Casos de uso del ciclo:

    Como se ha detallado en la introduccin a este apartado en este ciclo vamos a detallar todos los casosde uso que fueron identificados en la fase anterior, adems de un nuevo actor (Desarrollador) que tendracceso a todos los casos de uso existentes.

    Figura 2.4: Diagrama de casos de uso tras la fase Elaboration

    17

  • Especificacin expandida de los casos de uso:

    Caso de uso: Calibracin.Actores: Desarrollador, Terapeuta, Paciente.Propsito: Calibrar la elevacin del sensor Kinect a la altura de la persona

    que va a utilizar la aplicacin para un funcionamiento ptimo.Precondiciones: Tener conectado el sensor Kinect y la aplicacin iniciada.Secuencia de eventos tpica:1-Ejecuta la aplicacin Mediknect.

    2-Presenta una pantalla de inicio con un botncon el texto iniciar.

    3-Pulsa el botn iniciar y se sita delantedel sensor.

    4-El sensor muestra un aviso de que se estcalibrando y empieza a regular la elevacinde la cmara respecto a la altura del usuarioen un proceso iterativo.

    Secuencias alternativas-Si, en 4 el usuario no est delante del sensor muestra un aviso para que se site delantede l y no inicia la calibracin hasta que detecta al usuario.Postcondiciones Se ha calibrado la elevacin del sensor a la altura del usuario para

    un correcto funcionamiento de la aplicacin.

    Tabla 2.4: Especificacin expandida caso de uso Calibracin

    18

  • Caso de uso: Listar ejercicios.Actores: Desarrollador, Terapeuta, Paciente.Propsito: Mostrar una ventana dnde tanto el terapeuta como el paciente

    puedan observar los ejercicios disponibles.Precondiciones: Haber calibrado correctamente el sensor.Secuencia de eventos tpica:1-Selecciona una de las opciones que apa-recen en pantalla (Realizar Ejercicio, BorrarEjercicio).

    2-Presenta una pantalla con los cuatro prime-ros ejercicios disponibles, en caso de hayams de 4 se activan unas flechas de despla-zamiento.

    3-Pulsa la tecla de desplazamiento4-Muestra los siguientes cuatro ejercicios dis-ponibles.

    Secuencias alternativas-Si, en 2 no hay ningn ejercicio disponible se muestran como vacios y se muestra laopcin de volver.Postcondiciones Se presentan los ejercicios disponibles listados de forma que se

    pueden seleccionar para otros casos de uso.

    Tabla 2.5: Especificacin expandida caso de uso Listar Ejercicios

    19

  • Caso de uso: Agregar Ejercicios.Actores: Desarrollador, Terapeuta.Propsito: Agregar ejercicios personalizados para cada paciente.Precondiciones: Haber calibrado correctamente el sensor.Secuencia de eventos tpica:1-Selecciona la opcin Agregar Ejercicios

    2-Presenta un formulario para aadir un nom-bre, la duracin en segundos, el nmero depasos y una imagen al ejercicio junto con elbotn siguiente.

    3-Rellena los campos del formulario y pulsaen siguiente.

    4-Se muestra un segundo formulario con casi-llas de activacin para seleccionar las articu-laciones que van a participar en el ejercicio yun botn de continuar.

    5-Selecciona las articulaciones y pulsa conti-nuar.

    6-El sistema muestra un aviso de que va a co-menzar la grabacin del ejercicio en 5 segun-dos y que va a capturar cada paso cada 5 se-gundos.

    7-El actor realiza los pasos que componen elejercicio cada vez que el sistema se lo pide.

    8-El sistema muestra la opcin de guardar elejercicio o de descartar.

    9-Selecciona la opcin de guardar.10-El sistema hace permanentes los cambiosy guarda el nuevo ejercicio en un fichero.

    Secuencias alternativas-Si, en cualquier paso el actor se equivoca puede pulsar la opcin Volver y termina elcaso de uso.-Si en 10 el actor selecciona la opcin de descartar se deshacen los cambios y se vuelveal men principal.Postcondiciones Se ha agregado un nuevo ejercicio a la lista de ejercicios del fi-

    chero seleccionado.

    Tabla 2.6: Especificacin expandida caso de uso Agregar Ejercicios

    20

  • Caso de uso: Borrar Ejercicios.Actores: Desarrollador, Terapeuta.Propsito: Permitir al terapeuta gestionar las listas de ejercicios personaliza-

    das para cada paciente pudiendo borrar los ejercicios que desee.Precondiciones: Haber completado el caso de uso Listar Ejercicios correctamen-

    te habiendo seleccionado la opcin de Borrar ejercicios del me-n principal.

    Secuencia de eventos tpica:1-Selecciona los ejercicios que desea eliminarde la lista de ejercicios.

    2-Elimina de la pantalla los ejercicios selec-cionados y activa las opciones de Guardary Descartar.

    3-Selecciona la opcin de Guardar.4-Hace permanentes los cambios eliminandolos ejercicios seleccionados con anterioridaddel fichero.

    Secuencias alternativas-Si en 3 el usuario selecciona la opcin de descartar vuelve al men principal sin guardarlos cambios en el fichero de los ejercicios borrados.Postcondiciones Se han eliminado los ejercicios que el actor ha seleccionado del

    fichero de ejercicios abierto.

    Tabla 2.7: Especificacin expandida caso de uso Borrar Ejercicios

    21

  • Caso de uso: Realizar Ejercicios.Actores: Desarrollador, Paciente.Propsito: Permite al paciente realizar los ejercicios disponibles en su lista

    personalizada de ejercicios.Precondiciones: Haber completado el caso de uso Listar Ejercicios correctamen-

    te.

    Secuencia de eventos tpica:1-Selecciona el nmero de repeticiones quedesea hacer del ejercicio y selecciona el ejer-cicio a realizar.

    2-Muestra una pantalla de ejercicio con unaimagen del terapeuta indicando el siguientemovimiento a realizar, un indicador del pasopor el que se va, un temporizador y el nmerode repeticiones restantes.

    Para cada repeticin:3-Realiza los movimientos que se muestranen la imagen del terapeuta.

    4-Al concluir los movimientos vuelve al paso1 del ejercicio y decrementa en 1 el nmerode repeticiones restantes.

    Fin para cada repeticin 5-Al realizar todas las repeticiones se terminael ejercicio y se vuelve al punto 1.

    Secuencias alternativas-Si, en 4 el usuario no completa todos los movimientos en el tiempo indicado se ponenlos pasos a 0 y no se incrementan el nmero de repeticiones realizadas.Postcondiciones El usuario ha realizado un ejercicio y se le muestra la lista para

    poder realizar otros ejercicios.

    Tabla 2.8: Especificacin expandida caso de uso Realizar Ejercicios

    22

  • Modelo estructurado de los casos de uso:

    A partir de la especificacin expandida de los casos de uso se deducen las asociaciones que se muestranen el diagrama de la Figura2.5.

    Figura 2.5: Diagrama Estructurado de los casos de uso

    23

  • Anlisis

    El anlisis orientado a objetos tiene como objetivo identificar la estructura lgica del sistema y las clasesque componen al proyecto, junto con sus atributos y las relaciones entre dichas clases.A continuacin se muestra el modelo de clases obtenido tras realizar el anlisis en la fase elaboration.

    Figura 2.6: Clases del Anlisis

    24

  • 2.4. Herramientas utilizadas

    A continuacin se van a describir las herramientas con las que se decidi realizar el desarrollo delproyecto y las funciones utilizadas en cada una de ellas.

    2.4.1. Microsoft Visual Studio

    Para el desarrollo del proyecto se ha hecho uso del entorno de programacin integrado Microsoft VisualStudio 2010. La licencia del programa que se ha usado es la que ofrece Microsoft a los usuarios de laUniversidad Politcnica de Valencia para desarrollar proyectos con fines acadmicos.Este entorno de programacin nos ofrece la posibilidad de crear aplicaciones para distintas plataformas yla posibilidad de disear el interfaz de la aplicacin y el cdigo interno a cada pgina de forma simultneay muy simple.

    Interfaz de diseo:

    La interfaz de diseo es aquella que nos permite editar mediante un cmodo interfaz las caractersticasvisuales de nuestra aplicacin y las ventanas que observarn los usuarios durante el uso de la misma.Podemos encontrar un ejemplo de dicha interfaz en la Figura 2.7.

    Figura 2.7: Interfaz de diseo Microsoft Visual Studio 2010

    En la interfaz de diseo bsica podemos observar distintos elementos:En primer lugar observamos en la parte central el cuadro de diseo de la aplicacin, donde podemosinsertar y modificar los distintos elementos, en la parte central inferior observamos el cdigo en XAMLgenerado por los elementos que aparecen en el cuadro de diseo, esto nos permite una gran flexibilidada la hora de modificar dichos elementos y sus caractersticas.En la parte izquierda podemos observar el cuadro de herramientas. En este caso como se ha diseado unaaplicacin WPF aparecen los controles para dicho tipo de aplicacin, pero es posible insertar controles

    25

  • de otro tipo de aplicaciones. Para insertar un nuevo elemento simplemente hay que arrastrarlo desde lalista de controles hasta el cuadro de diseo.En la parte derecha superior encontramos el explorador de soluciones. ste es un elemento comn a lainterfaz de diseo y a la interfaz de programacin. En este elemento encontramos los diferentes elemen-tos que componen la solucin o proyecto que estamos realizando.Finalmente en la parte inferior derecha aparecen las propiedades del elemento seleccionado. Dichaspropiedades pueden ser editadas tanto en la parte del cdigo XAML como en este cuadro, aunque paraalgunas funcionalidades como las acciones a realizar tras un evento sobre el elemento seleccionadoresultan mucho ms sencillas de editar aqu.Hay que destacar que la configuracin que se ha descrito es de las ms comunes, no obstante debidoa la gran flexibilidad que presenta el entorno de programacin todos los elementos que aparecen en lainterfaz son configurables, pudiendo mostrar nuevos elementos, ocultar los ya existentes o cambiarlosde posicin.

    Interfaz de programacin:

    La interfaz de programacin es la que nos permite implementar el comportamiento de la aplicacin enfuncin de la entrada/salida de la misma. Estos estmulos pueden proceder de la interfaz de aplicacinexplicada previamente o de otras fuentes tales como el sensor Kinect. Podemos encontrar un ejemplo dedicha interfaz en la Figura2.8.

    Figura 2.8: Interfaz de programacin Microsoft Visual Studio 2010

    En la interfaz de programacin identificamos los siguientes elementos:En la parte central superior observamos la ventana principal de edicin, en esta ventana es donde seimplementan las distintas partes del cdigo. Arriba de este elemento encontramos en una franja de colorazul oscuro unas pestaas que nos permiten navegar entre los distintos ficheros de cdigo que tenemosabiertos, al seleccionar uno de estos ficheros el cdigo del mismo aparecer en la ventana principal de

    26

  • edicin.En la parte central inferior observamos una ventana de errores que nos advierte de los errores y lasrecomendaciones que se han identificado durante el proceso de compilacin.Finalmente en la parte derecha encontramos, al igual que en la interfaz de diseo, el explorador desoluciones, que nos permite observar todos los ficheros de los que se compone el proyecto. En esteelemento es dnde debemos aadir todas aquellas libreras que van a ser usadas en la implementacindel programa dentro de la carpeta references. En nuestro caso las principales libreras a aadir hansido Microsoft.Kinect y Coding4Fun.Kinect.Wpf.

    Lenguaje de programacin:

    El lenguaje de programacin utilizado para la implementacin del programa ha sido el C Sharp o tambinllamado C#, aunque el entorno de programacin tambin permita la implementacin en C++ y VisualBasic.La eleccin este lenguaje ha sido motivada por la facilidad del mismo y la similitud en cuanto a lasintaxis con C/C++ y a Java en cuanto a la gestin de objetos (dos lenguajes ya conocidos) as como lacantidad de documentacin y manuales que hacan uso de dicho lenguaje.El lenguaje C# forma parte de la plataforma .NET de Microsoft, y est pensado para crear programassobre dicha plataforma.

    27

  • 2.4.2. Dispositivo Kinect

    A continuacin se van a describir con mayor profundidad que en la introduccin algunas de las carac-tersticas del Kinect. En los objetivos de este punto se pretenden nombrar los elementos que componenel dispositivo, explicar algunas de sus limitaciones y describir las recomendaciones de uso que hace elfabricante.

    El sensor Kinect se compone de los siguientes elementos:

    Emisor de IR que mediante un diodo laser emite un patrn de puntos sobre los elementos que seencuentran frente al sensor. El sensor de profundidad de IR captura el patrn reflejado y lo envaa un chip en el interior del dispositivo que es encargado de comparar el patrn reflejado con unpatrn original. Como resultado de esta comparacin se genera la informacin de profundidad.

    Sensor de color: Se trata de una cmara RGB con una resolucin de 640x480px a 30 fps.

    Motor de inclinacin que permite al Kinect una inclinacin de 27o tanto positivos como negativosrespecto a la horizontal.

    Array de micrfonos: Se trata de un conjunto de cuatro micrfonos que permiten al sensor lacaptura de audio y la localizacin de las fuentes emisoras de sonido mediante la correlacin delaudio captado por los distintos micrfonos. El audio generado es de 16bit a 16Khz.

    Las principales limitaciones tcnicas que presenta el sensor son las siguientes:

    Campo de visin horizontal de 57o.

    Campo de visin vertical de 43o.

    Baja resolucin en la imagen de profundidad. La deteccin de elementos pequeos empeora conel aumento de la distancia.

    Rango de +- 27o de inclinacin vertical.

    Respecto a la sensibilidad con la profundidad existen dos modos de funcionamiento:

    En el modo normal el rango de distancias para el funcionamiento ptimo del sensor varadesde 0.8m hasta los 4m, y de 4-8m su funcionamiento se degrada. Ms all de los 8m y mscerca de 0.4m los datos ya no tienen ninguna validez.

    En el modo de funcionamiento near o cercano la distancia de funcionamiento ptimo sereduce hasta los 0,4m, teniendo un rango ptimo de los 0.4-3m, siendo poco fiables los datosdesde 3-8m y sin ninguna validez de 0-0.4m y a partir de los 8m.

    28

  • Figura 2.9: Precisin con la distancia del sensor Kinect

    Como se puede extraer de los datos anteriormente expuestos las necesidades de espacio puedensuponer una limitacin importante en hogares pequeos.

    Capacidad de seguimiento simultneo de 2 personas activas, siendo capaz de seguir hasta 20articulaciones por persona activa.

    29

  • 30

  • Captulo 3

    Implementacin

    En el presente punto de la memoria se va a describir la solucin concreta implementada por el alumno,la cual cubre las funcionalidades deseadas descritas en el punto de planificacin del proyecto y ofrecealguna funcionalidad adicional.La primera versin del proyecto se implement haciendo uso del paradigma de programacin tradicional,es decir, una funcin principal que realiza llamadas a otras funciones. La funcionalidad de esta primeraversin ya era completa, no obstante al haber usado el paradigma tradicional el programa resultantetena una complejidad muy elevada y las funciones estaban muy acopladas entre si, por lo que pararealizar una pequea modificacin o mejora en el cdigo era necesario modificar todo el programa. Otrade las desventajas que encontramos en esta aplicacin era la baja reutilizacin del cdigo al estar muyacoplado como hemos descrito anteriormente. Por estos motivos en el presente apartado nicamentevamos a describir en profundidad la segunda versin que tiene los mismos principios de funcionamientoque la primera versin y hace uso del paradigma de orientacin a objetos, lo que le otorga las propiedadesde bajo acoplamiento entre funciones y alta reutilizacin del cdigo, as como una mayor facilidad delectura del cdigo para terceros.

    31

  • 3.1. Descripcin diagramas de bloques

    A continuacin se muestran varios diagramas de bloques que representan el funcionamiento del progra-ma. En el primer diagrama de bloques tenemos una vista general de las diferentes fases que puede pasaruna ejecucin normal del programa y en los siguientes diagramas se explicar de forma ms detallada elfuncionamiento de cada bloque.

    Figura 3.1: Diagrama de bloques general del sistema

    32

  • Calibrar

    La funcionalidad de este bloque es regular la elevacin del sensor a la altura de la persona de forma queel funcionamiento sea ptimo y no sea necesario modificar la inclinacin de forma manual. Este bloquetambin se encarga de controlar si el ratn ha de moverse con los movimientos de la mano del usuariodurante la ejecucin del programa o no dependiendo del momento de la ejecucin en que se encuentreel usuario.La calibracin comienza en el momento en el que el usuario ha pulsado el botn de iniciar en la pantallade inicio y pasa al siguiente bloque cundo la elevacin del sensor respecto a la cabeza del usuario es laadecuada.Este bloque permanece activo durante toda la ejecucin del programa proporcionando al resto de bloquesla informacin sobre la persona situada en frente del sensor y controlando el movimiento del ratn entodo momento.

    Figura 3.2: Diagrama extendido bloque Calibrar

    33

  • Agregar Ejercicio

    La funcionalidad que ofrece este bloque es la posibilidad de aadir nuevos ejercicios a una lista deejercicios. Como entradas estn los datos de profundidad de la persona que se encuentra frente al sensory como salida tendr la lista actualizada de ejercicios con el nuevo ejercicio aadido.

    Figura 3.3: Diagrama extendido bloque Agregar Ejercicio

    34

  • Borrar Ejercicio

    La funcionalidad que aade este bloque es la posibilidad de eliminar uno o ms ejercicios de la lis-ta seleccionada. Como entradas necesita la lista con los ejercicios y como salida proporciona la listaactualizada sin los ejercicios que se han borrado.

    Figura 3.4: Diagrama extendido bloque Borrar Ejercicio

    35

  • Realizar Ejercicio

    La finalidad de este bloque es permitir a los usuarios autorizados realizar los ejercicios previamentegrabados. Como entradas a este bloque estn el ejercicio seleccionado y los datos de profundidad de lapersona que se encuentra frente al sensor. Como salida el ejercicio se termina.

    Figura 3.5: Diagrama extendido bloque Realizar Ejercicio

    36

  • 3.2. Reconocimiento de posturas

    Para el desarrollo del reconocimiento de posturas el cual es necesario para poder realizas los ejerciciosse disearon e implementaron dos mtodos distintos con propiedades diferentes que los hacan msaptos para unos usos concretos. Los dos algoritmos parten del punto de que los datos que tienen sonlas coordenadas espaciales de las articulaciones de quien grab el ejercicio y de los mismos datos delusuario que est realizando el ejercicio, es decir, de dos mapas de puntos en el espacio tridimensionalque indican la posicin de las articulaciones de los usuarios.

    3.2.1. Algoritmo espacial:

    El algoritmo espacial es un algoritmo sencillo que pretende ser flexible y poderse adaptar a nuevasnecesidades de forma rpida y sin un nmero excesivo de operaciones. Para ello se basa en el principiode que la persona que realiza el ejercicio y la que lo graba tienen una constitucin fsica similar y que lagrabacin del ejercicio y la realizacin del mismo se hacen en la misma sala.Estas condiciones de partida limitan en muchos aspectos al algoritmo, no obstante la simplicidad delmismo al realizar dichas suposiciones y la forma de disear el algoritmo permiten unas posibilidadesque no aparecen en el algoritmo vectorial.El algoritmo se compone de dos fases claramente diferenciadas, la compensacin espacial y la compa-racin. Ver Figura 3.6

    Figura 3.6: Algoritmo espacial

    Lo primero que hay que conocer es el sistema de referencia del que se hace uso. En el caso que nos con-cierne los datos raw son los que se han obtenido directamente del sensor, por lo que estn cuantificadossegn la Figura3.7

    Figura 3.7: Coordenadas de referencia Kinect

    Donde el origen de coordenadas es el sensor Kinect.

    37

  • En la compensacin espacial lo que se hace es cambiar dicho sistema de referencia.Los datos de entrada se obtienen con referencia a la posicin del sensor tanto al grabar el ejercicio comoal realizarlo, pero los usuarios no tienen porqu estar en la misma posicin respecto al sensor. Lo que sepretende hacer es que los datos tengan una referencia comn, puesto que en la grabacin del ejercicio yen la realizacin del mismo puede que el ngulo de inclinacin del sensor no fuera el mismo, por lo quela altura de los puntos no coincidira o que la distancia respecto al sensor tampoco fuera la misma, por loque la profundidad en este caso tampoco coincidira. Para lograr este objetivo lo que se hace es desplazarel origen de coordenadas a la cabeza del usuario y a partir de ah se recalculan todos los puntos restandoa la posicin del punto raw la posicin de la cabeza, con lo que se compensan los efectos producidospor la desalineacin con el sensor.En la fase de comparacin lo que se hace es comparar la posicin de los puntos (ya compensados)almacenados (Punto P1) con respecto a los que est realizando el usuario en el momento actual (PuntoP2) con cierta tolerancia(tx, ty, tz). Esto se expresa lgicamente de la siguiente manera:

    if (p1.x >= p2.x + tx || p1.x = p2.y + ty || p1.y = p2.z + tz || p1.z

  • Tabla resumen Algoritmo espacialComplejidad Diseo: MediaComplejidad Implementacin: MediaCoste computacional: BajoVentajas Desventajas Alta flexibilidad. Mal funcionamiento al cambiar el fondo del

    ejercicio (espacio fsico). Posibilidad de movimientos independientesde cada articulacin.

    Mal funcionamiento al cambiar la constitu-cin del usuario que graba al que realiza elejercicio.

    Pocos clculos adicionales por iteracin. Es posible compensar estos efectos median-te un complejo algoritmo de compensacinde dimensiones, pero a pesar de ello funcio-na peor que el otro algoritmo en estos casos.

    Buen funcionamiento si se graba y realiza elejercicio por personas con constitucin fsicasimilar y en el mismo espacio.Descripcin Resumen:El algoritmo espacial se basa en dos fases:1.- Compensacin del espacio:Los datos tridimensionales de las articulaciones se compensan, restando a todos los pun-tos la posicin de la cabeza, tanto en el esqueleto guardado como en el esqueleto actual.2.- Comparacin de puntos:Se compara la posicin de los puntos almacenados con la de los puntos que est reali-zando el usuario en. Si la comparacin de todos los puntos implicados es correcta se dapor realizado el paso.

    Tabla 3.1: Tabla resumen algoritmo espacial

    3.2.2. Algoritmo Vectorial:

    El algoritmo vectorial se dise para superar los problemas del algoritmo espacial. El solucionar estosproblemas conlleva que el algoritmo tiene una complejidad mayor, tanto de diseo como de implemen-tacin y requiere de un mayor nmero de operaciones. La robustez del algoritmo y la baja tasa de erroresrequerida para el correcto funcionamiento del sistema han hecho que este algoritmo sea menos flexibleque el algoritmo espacial.

    El algoritmo al igual que en el caso anterior se divide en varias etapas, en este caso al tener una mayorcomplejidad las etapas tienen cierto grado de acoplamiento, no obstante se pueden diferenciar tres fasesen el algoritmo. Ver Imagen3.9

    39

  • Figura 3.9: Algoritmo vectorial simplificado

    El primer bloque que nos encontramos es el bloque de CLCULO DE VECTORES, el cual tiene porentrada la posicin en el espacio tridimensional de las articulaciones respecto al sensor Kinect, siguiendoel mismo esquema de referencias que en el algoritmo anterior.

    Para superar el problema de la diferencia en la constitucin fsica de los usuarios era necesario idear unnuevo sistema que no utilizara la posicin espacial de los puntos, pero que al mismo tiempo fuera capazde reconocer que la postura realizada tuviera las mismas caractersticas que la postura almacenada. Paraello se pens que al igual que en el algoritmo anterior era necesario centrar el sistema de referencia enel paciente, que es el objeto del ejercicio, eliminando as toda dependencia de la posicin respecto alsensor, por otra parte se observ que los ngulos que realizaban las articulaciones eran una forma vlidade caracterizar las posturas y poderlas comparar con independencia del tamao del usuario, por lo quese eligieron los vectores como herramienta matemtica para caracterizar estas propiedades.

    El primer problema al que se enfrenta el algoritmo es cmo definir un sistema de referencia centradoen el usuario, con total independencia de la posicin sensor, en el cual se puedan definir y compararvectores de forma unvoca a partir de los datos de las 20 articulaciones de entrada. Para superar este pro-blema se pens en la definicin de dos vectores de referencia a partir de los cuales se podra calcular losngulos de otros vectores con las referencias. En la imagen que se muestra a continuacin se han mar-cado los dos vectores utilizados como referencia. El vector de color verde se llamara a partir de ahoraRefV(Referencia Vertical) y el azul RefH(Referencia Horizontal). Hay que tener en cuenta que en reali-dad trabajamos con cuatro vectores de referencia, dos para el ejercicio guardado y dos para el ejerciciorealizado, con lo que tendremos RefVGuardado, RefHGuardado, RefVRealizado y RefHRealizado.

    40

  • Figura 3.10: Articulaciones empleadas para el clculo de vectores en el algoritmo vectorial

    La eleccin de dos vectores como ejes en lugar de uno solo se ha hecho porque los otros vectoresque se obtendrn para modelar las articulaciones se definen mediante los ngulos con las referenciasAV(ngulo Vertical) y AH(ngulo Horizontal). El utilizar este tipo de referencias nos limita tambinen cuanto a la flexibilidad del algoritmo, ya que este algoritmo SIEMPRE tendr en cuenta la alineacinde la cadera con el eje cabeza-tronco, aunque la posicin de estas articulaciones no tengan importanciaen el ejercicio grabado.

    Una vez se han definido los vectores de referencia el algoritmo lo que hace es calcular los vectoresque forman las articulaciones implicadas en el ejercicio segn haya seleccionado el terapeuta al guar-dar dicho ejercicio. Este es un proceso complejo ya que los vectores son diferentes en funcin de lasarticulaciones seleccionadas y supone un gran coste computacional ya que todas las comprobacioneslgicas para generar los vectores se realizan cada frame. Los vectores se generan segn las condicionesespecificadas en la tabla (ver grfico anterior para nombres):

    41

  • Articulacin Condicin Seleccionada Vector GeneradoCabeza Obligatorio Head-SpineCintura Obligatorio Hip_Center-Shoulder_CenterHombro Shoulder_Right Shoulder_Right-Shoulder_CenterCodo Elbow_Right and Shoul-

    der_RightElbow_Right- Shoulder_Right

    Elbow_Right Elbow_Right- Shoulder_CenterMano Hand_Right and El-

    bow_RightHand_Right-Elbow_Right

    Hand_Right and Shoul-der_Right

    Hand_Right-Shoulder_Right

    Hand_Right Hand_Right-Shoulder_CenterRodilla Knee_Right -Hip_RightPie Foot_Right and

    Knee_RightFoot_Right-Knee_Right

    Foot_Right Foot_Right-Hip_Right

    Tabla 3.2: Generacin dinmica de vectoresNota1:De una misma articulacin se genera el primer vector que cumple las condiciones seleccionadas.Nota2: Para el brazo y la pierna izquierda se sigue el mismo procedimiento que para el derecho.

    La siguiente fase en el algoritmo es el DE NGULOS. En esta fase se calculan cuatro ngulos paracada uno de los vectores de la tabla anterior implicados en el ejercicio: el AV y el AH para el ejercicioguardado y para el ejercicio realizado, con lo que tenemos los ngulos AVG, AHG, AVR y AHR. Losngulos se calculan mediante la frmula siguiente:

    Acos((v1.x * v2.x + v1.y * v2.y + v1.z * v2.z) /(v1.mod * v2.mod)) * 360 / (2 * PI))

    Dnde v2 es siempre uno de los vectores generados de forma dinmica que se explican en la tablaanterior (del ejercicio guardado o del ejercicio realizado) y v1 es uno de los vectores de referencia enfuncin de la siguiente tabla:

    ngulo Calculado Vector V1 Vector V2AVG RefVGuardado Vector GuardadoAHG RefHGuardado Vector GuardadoAVR RefVRealizado Vector RealizadoAHR RefHRealizado Vector Realizado

    Tabla 3.3: Posibles valores del vector V1 segn el ngulo a calcular

    Si la posicin realizada es similar a la que guard el terapeuta en el momento de grabar los ejercicios losngulos AVG y AVR tendrn un valor muy parecido, al igual que los vectores AHG y AHR para todaslas articulaciones implicadas en el ejercicio.

    42

  • Finalmente la etapa de COMPARACIN DE NGULOS, realiza una comparacin entre los nguloscalculados en la etapa anterior con una tolerancia superior y una tolerancia inferior para los ngulossegn se expresa en la siguiente expresin lgica:

    if (AVG + tolSuperior >= AVR && AVG - tolInferior = AHR && AHG - tolInferior

  • 3.3. Interfaz de aplicacin

    En este punto se pretende describir la interfaz final de la aplicacin desde el punto de vista de losdiferentes actores, as como describir los elementos que componen la interfaz y la funcionalidad de losmismos.Todos los elementos de la interfaz han sido diseados para personas con visibilidad reducida y para quesea intuitivo y fcil de usar mediante el control con gestos que implementa la aplicacin.

    44

  • 3.3.1. Interfaz comn a todos los actores

    Pantalla de inicio de aplicacin:

    Figura 3.11: Pantalla de inicio de aplicacin

    La aplicacin se muestra en una ventana de aplicacin de Windows con los botones de cerrarmaximizar y minimizar en la parte superior derecha.

    Aparece el nombre de la aplicacin y la versin en la parte superior izquierda.

    Botn Iniciar: Antes de pulsar el botn es necesario que se encuentre conectado el sensor Kinectcorrectamente al PC, de lo contrario la aplicacin quedar bloqueada y ser necesario cerrar lamisma.

    45

  • Ventana de Calibracin:

    Figura 3.12: Ventana de calibracin

    Imagen RGB: Situada en la parte superior izquierda muestra la imagen que est capturando elKinect en tiempo real.

    Advertencias: En la parte central aparecen dos mensajes que indican las instrucciones a realizardurante el proceso de calibracin.

    Pestaa desplegable propiedades: En la parte inferior izquierda existe una pestaa desplegablede propiedades que nos permite activar/desactivar el sensor Kinect y regular de forma manual lainclinacin del mismo introduciendo un nmero en un cuadro de texto. Estas opciones se hanimplementado por si la inclinacin inicial del sensor es inadecuada y es incapaz de detectar a lapersona para poder inicial el proceso de calibracin.

    46

  • Ventana de Seleccin de Actividad:

    Esta ventana es particular de cada actor. Para el paciente solamente aparecern las opciones de RealizarEjercicio y Salir, para el terapeuta aparecern las opciones de Agregar ejercicio, Borrar ejercicioy Salir y la imagen que se muestra a continuacin es la de la interfaz de desarrollador, donde estntodas las opciones existentes disponibles.

    Figura 3.13: Ventana de Seleccin de actividad

    Botn Realizar Ejercicio: Permite al paciente acceder a la lista de ejercicios personalizadosdisponibles para l.

    Botn Agregar Ejercicio: Permite al terapeuta aadir nuevos ejercicios a la lista de ejerciciosactiva.

    Botn Borrar Ejercicio: Permite al terapeuta eliminar ejercicios de la lista de ejercicios activa.

    Botn Salir: Desactiva el sensor Kinect, libera la memoria y cierra la aplicacin. Es el proce-dimiento correcto para finalizar la aplicacin ya que otros procedimientos mantendrn el sensoractivo.

    47

  • 3.3.2. Interfaz de terapeuta

    Ventana Agregar Ejercicio 1:

    Figura 3.14: Ventana de Agregar Ejercicio (1.1)

    Formulario 1: Situado en la parte izquierda de la imagen se puede observar un formulario concuatro campos:

    Nombre Ejercicio: Nombre que aparecer al listar el ejercicio.

    Imagen Presentacin: Imagen que aparecer al listar el ejercicio. En caso de que no se selec-cione ninguna imagen aparecer la posicin del primer paso del ejercicio.

    Duracin Mxima: Tiempo que tendr el paciente para completar todos los pasos de unarepeticin.

    Nmero de pasos: Nmero de pasos de los que se compone una repeticin.

    Imagen: Imagen seleccionada en el formulario anterior.

    Formulario 2: Situado en la parte derecha de la pantalla permite seleccionar que articulacionesvan a estar implicadas en el ejercicio que se va a grabar.

    Botn Siguiente: Nos muestra la pantalla que se describe a continuacin.

    48

  • Figura 3.15: Ventana de Agregar Ejercicio (1.2)

    En esta imagen observamos un cuadro de texto que nos da las instrucciones de cmo funciona la siguien-te pantalla y cmo se van a grabar los ejercicios. Tras pulsar continuar se muestra la ventana AgregarEjercicio 2.

    49

  • Ventana Agregar Ejercicio 2:

    Figura 3.16: Ventana de Agregar Ejercicio (2.1)

    Imagen de profundidad: Situada en la parte superior izquierda muestra un mapa de profundida-des. Para un funcionamiento ptimo del programa a la hora de grabar la aplicacin la silueta delterapeuta debe aparecer de color verde intenso sin objetos del mismo color cercanos.

    Imagen RGB: Situada en la parte central derecha muestra la imagen del terapeuta en el momentoactual. Las imgenes de realizacin de paso se obtendrn a partir de esta imagen.

    Texto inferior: Muestra las indicaciones del progreso en la grabacin del ejercicio. Muestra elinicio de la captura de los pasos, el paso que se ha capturado y el tiempo restante para capturar elsiguiente paso. En el momento de la captura del paso el terapeuta debe haber adoptado la posicindeseada en ese paso.

    Botn Volver: Permite cancelar la grabacin del paso.

    Una vez concluido la captura de todos los pasos de un ejercicio se muestra la pantalla que aparece acontinuacin, permitiendo al terapeuta guardar o descartar el ejercicio que se acaba de grabar.

    50

  • Figura 3.17: Ventana de Agregar Ejercicio (2.2)

    51

  • Ventana Borrar Ejercicio:

    Esta ventana se abre cuando en la ventana de seleccin de actividad se elige la opcin de borrar ejerci-cio y permite al terapeuta eliminar uno o ms ejercicios de la lista de ejercicios cargada.

    Figura 3.18: Ventana de Borrar Ejercicios

    Ejercicios: En la parte central aparecen las imgenes y los nombres de los cuatro primeros ejerci-cios de la lista de ejercicios. Al seleccionar un ejercicio ste desaparecer de la lista.

    Botones Anteriores/Siguientes: Permiten desplazarse por la lista de ejercicios en el caso de quehaya ms de cuatro ejercicios en la lista. El nmero en el centro muestra en que pgina nosencontramos.

    Botn Guardar: Elimina de forma permanente los ejercicios seleccionados y vuelve a la ventanade seleccin de actividad.

    Botn Cancelar: Cancela los cambios y vuelve a la ventana de seleccin de actividad.

    52

  • 3.3.3. Interfaz de paciente

    Ventana de Seleccin de Ejercicio:

    Figura 3.19: Ventana de Seleccin de Ejercicio

    Ejercicios: En la parte central aparecen las imgenes y los nombres de los cuatro primeros ejerci-cios de la lista de ejercicios. Al seleccionar un ejercicio se pasar a la ventana siguiente.

    Botones Anteriores/Siguientes: Permiten desplazarse por la lista de ejercicios en el caso de quehaya ms de cuatro ejercicios en la lista. El nmero en el centro muestra en que pgina nosencontramos.

    Repeticiones: Muestra el nmero de repeticiones a realizar en el ejercicio que se seleccione. Sepueden ajustar mediante los botones + y -.

    Botn Volver: Vuelve a la ventana de seleccin de actividad.

    53

  • Ventana Realizar Ejercicio:

    Figura 3.20: Ventana de Realizacin de ejercicio

    Imagen RGB: Situada en la parte izquierda es la imagen del siguiente paso a realizar grabadapreviamente por el terapeuta.

    Imagen profundidad: Situada en la parte central inferior es la imagen de la posicin del pacienteen el momento actual. Para un correcto funcionamiento la silueta del paciente debe aparecer decolor verde intenso.

    Etiqueta Paso: Muestra los pasos totales de los que se compone el ejercicio y el paso por el que vael paciente. Para completar un paso la imagen RGB y la de profundidad deben ser similares (veralgoritmo vectorial).

    Etiqueta Tiempo/rep: Es el tiempo restante para finalizar todos los pasos de una repeticin. Si lacuenta llega a cero se vuelve al paso 1 y no se contabiliza la repeticin.

    Etiqueta Repeticiones: Muestra el nmero de repeticiones restantes para finalizar el ejercicio. Elvalor se decrementa cada vez que se completan todos los pasos en el tiempo indicado. Cuando secompleta una repeticin se reinicia el temporizador de la etiqueta Tiempo/rep.

    Botn Cancelar: Finaliza de forma forzosa la realizacin del ejercicio.

    54

  • 3.3.4. Interfaz de Desarrollador

    A efectos prcticos la interfaz de desarrollador es la unin de la interfaz de terapeuta y la de paciente enuna misma interfaz, por lo que no se van a mostrar imgenes ni se va a explicar el funcionamiento de loselementos de la misma ya que es igual que en los casos anteriores.

    55

  • 3.4. Ejemplos de funcionamiento

    Para observar el funcionamiento del sistema se han grabado tres vdeos que se adjuntan al presentedocumento. Si no se pudieran visualizar los vdeos contactar con el autor del proyecto.

    56

  • Captulo 4

    Discusin/Conclusiones

    En este punto se van a tratar los problemas que surgieron durante el desarrollo del proyecto y las solu-ciones que se han encontrado a dichos problemas, las posibilidades de evolucin futuras del rea y delsistema desarrollado y las recomendaciones para futuros estudios, as como un breve estudio sobre elproducto, el precio y el nicho de mercado con visin a una futura comercializacin.

    4.1. Problemas/Soluciones.

    Durante el desarrollo del proyecto han aparecido problemas de diversa ndole. A continuacin se haceuna exposicin de los problemas encontrados y su repercusin en el desarrollo del proyecto, as como lasolucin encontrada a cada uno de los problemas.El primer problema que apareci fue la dificultad inicial para conectar el sensor Kinect a un ordenador,ya que en el momento en que se inici el proyecto no se dispona de un ordenador con Windows 7 parautilizar los controladores de Kinect for Windows y los controladores libres apenas tenan documentacino estaba muy dispersa. Para solucionar este problema se opt por formatear el ordenador con el que seha desarrollado el proyecto con Windows XP e instalar el sistema operativo Windows 7 con la licenciade campus de la UPV.Una vez superado el problema de la conexin el siguiente problema encontrado fue el entorno de desa-rrollo. Los desarrolladores recomendaban usar Microsoft Visual Studio con los controladores de Kinectfor Windows para el desarrollo de aplicaciones haciendo uso del sensor. Al igual que con el sistemaoperativo el entorno de desarrollo se pudo obtener mediante la licencia de campus de la UPV y se en-contraron video-tutoriales que enseaban a usar el software y las libreras bsicas para interactuar conel sensor Kinect.Una vez solucionados todos los problemas relacionados con el entorno de desarrollo y los controladoreslos siguientes problemas estaban todos relacionados con la programacin.El primer problema encontrado fue en el control del cursor mediante el movimiento de la mano derecha.Por las caractersticas tcnicas del sensor y las libreras de seguimiento de las articulaciones el cursor semova constantemente de forma muy rpida y catica en torno al punto donde se encontraba realmentela mano derecha. Para solucionar este problema los datos de profundidad se filtraron mediante un filtroconfigurable. El problema de este tipo de solucin es que cuanto mayor ruido eliminaba (y por tantomenor movimiento catico del puntero) mayor retardo e inercia adquira el cursor, por lo que se tuvoque elegir una solucin de compromiso entre retardo y precisin.El segundo problema encontrado fue que las clases que proporcionaba Microsoft para interactuar conKinect no permitan el almacenamiento de los datos en el disco, por lo que se tuvieron que crear unasclases equivalentes que si que pudieran almacenar dichos datos, lo que supuso un retraso en el proyectorespecto a la planificacin.

    57

  • El tercer problema estaba relacionado con los algoritmos de reconocimiento de movimiento. Al imple-mentar el algoritmo espacial su funcionamiento era correcto durante los test, pero al revisarlo con elprofesor se observ que al cambiar el entorno y las dimensiones del paciente el algoritmo no reconocacorrectamente las posturas, por lo que se tuvo que disear un nuevo algoritmo, el algoritmo vectorial. Elprimer diseo del algoritmo vectorial nicamente usaba un vector como referencia para el clculo de losngulos. Esto en principio era suficiente pero se observo que la comparacin de algunas posturas se dabapor correcta cuando en realidad no lo era. Para solucionar este problema se aadi un segundo vector dereferencia y se solucion el problema.

    4.2. Posibilidades de Evolucin.

    La evolucin del proyecto puede ir orientada en muchas direcciones aunque a continuacin se expondrnalgunas de las ms prcticas y con mayor probabilidad de xito.El proyecto en el momento actual no se puede considerar un producto adaptado al mercado, ya que ca-rece de algunas caractersticas imprescindibles para su comercializacin. Los primeros pasos en futurasversiones seran suplir estas carencias, entre las que se pueden encontrar el acceso identificado de losusuarios, la gestin individual de los usuarios mediante una base de datos y el almacenamiento de losdatos de una sesin de ejercicios y el progreso de cada paciente respecto a sesiones anteriores. Conestas mejoras el programa ya sera funcional, no obstante para una mayor versatilidad sera interesantedesarrollar una versin reducida para pacientes que realizaran la rehabilitacin desde el domicilio o tele-rehabilitacin, para ello sera recomendable desarrollar un esquema cliente-servidor, donde la aplicacindel paciente solamente se encargara de la conexin con el servidor y la captura de los datos y el servidorrealizara las comprobaciones necesarias y guardara los progresos de las sesiones de telerehabilitacin.Desde el punto de vista del terapeuta sera interesante mejorar la monitorizacin de los pacientes, pu-diendo ste consultar los progresos y la evolucin temporal en relacin a los progresos en la realizacinde los ejercicios, tambin se podran introducir patrones temporales de los parmetros que analiza elsensor para poder realizar una comparacin rpida desde la realizacin ideal de los ejercicios y lo querealizan los pacientes.Desde el punto de vista de los ejercicios estos almacenan en la actualidad la imagen, el nombre delejercicio, el tiempo mximo por repeticin y las articulaciones implicadas en el ejercicio, as como lospasos que lo componen que su vez contienen el esqueleto a realizar y una imagen del paso. Esta estruc-tura limita la flexibilidad en la realizacin de los ejercicios, como por ejemplo la medida de tiemposentre pasos intermedios, una posible mejora en el futuro sera redisear esta estructura para que pudieracontener mayor informacin y con ello poder medir mejor ciertos parmetros en la realizacin de losejercicios.Finalmente tambin se podra mejorar la interfaz grfica para mejorar la esttica teniendo en cuenta quedebe ser simple y adaptada a personas con visibilidad reducida.

    4.3. Recomendaciones.

    En estudios posteriores se recomienda la realizacin de ensayos clnicos y la medida de la eficaciadel sistema en una clnica de rehabilitacin con pacientes reales. Teniendo en cuenta que la aplicacinapenas ha sido testeada tambin sera necesario, a partir del feedback obtenido de los ensayos clnicos,mejorar la funcionalidad y depurar los posibles errores que todava presente la aplicacin.Observando la carencia de estudios sobre el impacto socioeconmico que puede suponer la implantacinde este tipo de sistemas en clnicas de rehabilitacin con pacientes reales, se recomienda que se realizarauna revisin de todos los productos comerciales existentes en la actualidad de RV de bajo coste y serealizara una comparativa en cuanto a resultados clnicos, costes y opinin del paciente y del terapeuta

    58

  • con respecto a los productos y mtodos tradicionales que se usan en la actualidad para poder tener unaidea del impacto real de esta nueva tecnologa en el mbito de la rehabilitacin.

    4.4. Costes del sistema.

    Puesto que principal inters que presenta el sistema desarrollado frente a los sistemas ya existentes es elbajo coste y con ello la posibilidad de la rehabilitacin desde el hogar hemos credo conveniente hacerun estudio de costes del producto muy simple de cara a una futura comercializacin.

    Concepto CosteCostes fijos:

    Kinect XBOX 360 115.23e(Amazon 14-08-2013)Ordenador Windows 7 399e

    Cable RGB(televisor-PC) 6eSoftware Rehabilitacin 75e

    Instalacin 50eTotal Costes Fijos: 645,23e(246.23esin PC) por sensor

    Cuota mensual:Actualizacin software: 50e/mes

    Mantenimiento: 200e/mesLicencia paciente: 5e/(paciente*mes)

    Total Costes Variables: 25e/mes + 5e/(paciente*mes)Total: 645,23e(246.23e) por sensor + 250e/mes + 5e/(paciente*mes)

    El modelo de negocio para el que se han calculado los costes es para la venta del producto a clnicas derehabilitacin, que tendran que pagar una cuota mnima de 250e/mes de mantenimiento y actualizacindel software y del servicio. Una vez contratado el servicio tendran que adquirir los sensores y laslicencias de pacientes que la clnica se encargara de asignar.Con los precios indicados en la tabla se pretende reducir al mnimo el coste del equipamiento para podertener una mejor entrada en el mercado a pesar de que los beneficios por venta son mnimos, no obstantela principal fuente de beneficios no es la venta del sistema, sino la venta de licencias por pacientes.

    59

  • 60

  • Captulo 5

    Valoracin personal

    El proyecto Mediknect ha supuesto un reto personal y profesional. El desarrollo del mismo ha sidoposible gracias a la motivacin de mi director Antonio Albiol que nos anim a hacer algo nuevo a partirde nada, es por ello que ha resultado ms difcil de lo esperado, no obstante he podido experimentarque es posible hacer algo que a priori parece imposible si uno se lo propone y le dedica el tiempo y elesfuerzo necesario.Con el desarrollo del proyecto no pretenda nicamente superar el trmite para finalizar la carrera, sinoponer a prueba los conocimientos adquiridos durante estos aos de estudio, para la realizacin del pro-yecto he necesitado revisar conceptos trabajados durante la carrera, sobre todo aquellos relacionadoscon la programacin y con la ingeniera software.Tambin me gustara poner nfasis en el aspecto social de este proyecto. Al elegir que quera desarrollarun sistema de rehabilitacin virtual pretenda poder ofrecer una alternativa a los tratamientos de reha-bilitacin tan costosos que existen en la actualidad haciendo uso de una de las ltimas tecnologas encaptura de movimiento. Para profundizar ms en el rea y conocer mejor las necesidades reales participde una beca del instituto ai2 para el desarrollo de un estudio centrado en esta rea y fruto de la cual es elartculo que se adjunta en el anexo 2.Para concluir me gustara agradecer en primer lugar a la escuela y a la universidad la oportunidad queme han dado de estudiar aquello que me gustaba, al colegio mayor San Juan de Ribera por la beca queme ha permitido estar cerca ms cerca de la universidad y a los profesores y compaeros que me hanacompaado durante esta etapa de mi vida.

    61

  • 62

  • Captulo 6

    Bibliografa

    Castelnuovo, G., Gaggioli, A., Mantovani, F., & Riva, G. (2003). MUNDOS VIRTUALES PARA GE-NERAR EXPERIENCIAS REALES: ELUSO DE LA"TERCERA VA.EN PSICOTERAPIA Y REHA-BILITACIN COGNITIVA. Congreso Virtual de Psiquiatra. Interpsiquis Enero 1970. Psiquiatria.com.

    Fivan. (s.f.). Recuperado el 01 de 03 de 2013, de http://fivan.org/?p=2087

    Gil-Agudo, A., Terrer, I. D., Martn, B. P., Guzmn, A. d., Sahn, A. B., & Garca, A. B. (2011). Expe-riencia clnica de la aplicacin del sistema de realidad TOyRA en la neuro-rehabilitacin de pacientescon lesin medular. Rehabilitacin (Madr).

    Gil-Gmez, J.-A., Llorns, R., Alcaiz, M., & Colomer, C. (2011). Effectiveness of a Wii balanceboard-based system (eBaViR) for balance rehabilitation: a pilot randomized clinical trial in patientswith acquired brain injury. JOURNAL OF NEUROENGINEERING AND REHABILITATION.

    Paella, O. G. (2006). De qu hablamos cuando nos referimos a la Realidad Virtual? http://mosaic.uoc.edu.

    Rand, D., Kizony, R., & Weiss, P. L. (2008). The Sony PlayStation II EyeToy: Low-Cost Virtual Realityfor Use in Rehabilitation. JNPT Volume 32.

    Rizzo, A. S., & Kim, G. J. (2005). A SWOT Analysis of the Field of Virtual Reality Rehabilitationand Therapy. Presence, Vol. 14, No. 2, 119146.

    Rizzo, A. S., Difede, J., Rothbaum, B. O., Reger, G., Spitalnick, J., Cukor, J., & Mclay, R. (2010).Development and early evaluation of the Virtual Iraq/Afghanistan exposure therapy system for combat-related PTSD. ANNALS OF THE NEW YORK ACADEMY OF SCIENCES, 114125.

    Rutgers. (2006). http://www.rutgers.edu/. Recuperado el 01 de 03 de 2013, de http://www.sciencedaily.com/releases/ 2006/08/060828211649.htm

    Sanchis, A. (2013). Ventajas e Inconvenientes de la Rehabilitacin Virtual.

    Sucar, L. E., Leder, R., Hernndez, J., Snchez, I., & Azcrate, G. (2010). Clinical Evaluation of aLowCost Alternative for Stroke Rehabilitation.

    Tedesys. (s.f.). Recuperado el 01 de 03 de 2013, de http://www.tedesys.es/es/products

    63

  • Virtualrehab. (03 de 03 de 2013). Recuperado el 01 de 03 de 2013, de http://virtualwaregroup.com/virtualrehab-rehabilitacion-esclerosis-kinect/

    Wuang, Y., Chiang, C., Su, C., & Wang, C. (2010). Effectiveness of virtual reality using Wii gamingtechnology in children with Down syndrome. Elsevier.

    64

  • Captulo 7

    ANEXO 1: API Mediknect

    Class Calculos

    public static class Calculos.Esta clase permite realizar los clculos necesarios para los algoritmos de comparacin de posicin.

    ConstructoresN/A

    Mtodospublic staticfloat

    AnguloXYZ(vector v1, vector v2) Calcula el ngulo formado por dos vecto-res v1 y v2 en un espacio tridimensional

    public staticfloat

    AnguloXY(vector v1, vector v2) Calcula el ngulo formado por dos ectoresv1 y v2 en un espacio bidimensional

    public staticbool

    Compara_punto(Punto p1, Punto p2, int tx, int ty, int tz) Compara si unpunto p2 se encuentra dentro del tetraedro con centro en p1 y de lados 2*tx,2*ty u 2*tz.

    public staticbool

    Compara_vector(vector RefVG, vector RefHG, vector RefVR, vectorRefHR, vector v1_g, vector v1_r, int tolSup, int tolInf) Clcula el nguloentre un vector guardado y dos referencias guardadas y un vector realizadosy dos referencias realizadas y compara los ngulos obtenidos con dos tole-rancias. Si la comparacin e