Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Y
REALIDAD AUMENTADA
AGRADECIMIENTOS
Queremos dedicar esta tesina a nuestras familias, amigos y amigas que nos apoyaron y
acompañaron a lo largo de la carrera, y sobre todo nos motivaron incansablemente durante la
realización del presente documento. Por otra parte, queremos agradecer a todos los profesores por
ayudarnos a crecer como futuros profesionales, y en especial a nuestro tutor Alejandro y al
jurado, que dedicaron su tiempo y esfuerzo para ayudarnos a concluir este trabajo de la mejor
manera.
RESUMEN
El objetivo de la presente tesina, es estudiar los conceptos de Interfaces Gestuales y de
Realidad Aumentada, como por ejemplo su evolución e historia, definiciones, componentes,
fundamentos y casos de aplicación de cada uno de ellos.
Por último, se propone desarrollar una aplicación utilizando las características del
dispositivo de detección de gestos Kinect (las cuales serán investigadas y explayadas en el
presente documento), que permita detectar y reconocer gestos, e incorporar conceptos de la
Realidad Aumentada, y cuyo objetivo es ayudar a la rehabilitación de las personas que han
sufrido ACV (Accidentes Cerebro Vasculares) mediante la grabación de gestos personalizados
para dicha persona, por parte de su médico.
ABSTRACT
The aim of this dissertation is to study the concepts of Gestural Interfaces and
Augmented Reality, including for example their history, definitions, components, foundations
and application cases of each of them.
As regards Gestural Interfaces, the concepts of person – computer interaction, and the
concepts and disciplines to consider when designing them will be defined. Moreover, the
concepts of gesture, design, attributes and their classification will be analyzed.
As regards Augmented Reality, not only its definition, foundations and application
cases, but also the techniques to implement it and the differences with Virtual Reality will be
studied.
Moreover, different techniques and devices which allow the detection and recognition of
gestures will be studied. Furthermore, some of the most popular tools which allow the
programming of applications for such devices will be studied too, making at the end a
comparison between them.
Se describen los conceptos introductorios de las interfaces, tales como la definición del
concepto de interacción persona – computadora, su diseño y modos de implementación. También
se describe el concepto de gesto, sus atributos, clasificación e implementación de interfaces
basadas en gestos.
Este capítulo tiene como objetivo definir el concepto de Realidad Aumentada, analizar
los distintos campos de aplicación, sus características, sus fundamentos teóricos y sus diferencias
con respecto a la Realidad Virtual.
Capítulo 5. Kinect
Aquí se describen las características del dispositivo Kinect detalladas, tanto sus
componentes hardware, como software y las distintas maneras de programar aplicaciones que
utilizan dicho sensor. Por último se justifica la elección del mismo para el desarrollo propuesto.
Este capítulo tiene como finalidad explicar el desarrollo que se propone, el campo de
aplicación del mismo, funcionalidades, arquitectura, requerimientos, sus objetivos, y la lógica
utilizada para lograrlo. Por último se detallará la manera en que se debe utilizar dicha aplicación
y sus diferentes funcionalidades.
ÍNDICE GENERAL
1 INTRODUCCIÓN ................................................................................................................................... 1
5 KINECT .............................................................................................................................................170
BIBLIOGRAFÍA .....................................................................................................................................271
Capítulo 1
1 INTRODUCCIÓN
1.1 OBJETIVOS
El objetivo de la presente tesina, es estudiar el mundo de las Interfaces Gestuales y de la
Realidad Aumentada, exponer sus conceptos generales y analizar los casos en donde las mismas
se pueden utilizar de forma conjunta aumentando sus campos de aplicación. Por último,
desarrollar una aplicación utilizando un dispositivo de detección de gestos que englobe todos los
conceptos antes nombrados.
Investigar sobre las Interfaces Gestuales, los distintos contextos donde se utilizan
y los aspectos a tener en cuenta a la hora de diseñarlas.
1.2 MOTIVACIÓN
Si a la computadora se le otorga el sentido de la vista, por ejemplo a través de una
cámara, esta podrá utilizar este medio como entrada de información de interacción. Esta nueva
tecnología, permitirá implementar soluciones en distintos contextos de uso, como por ejemplo, en
Actualmente, las cámaras con suficiente resolución, se encuentran en casi todos los
dispositivos informáticos, dado su bajo costo y reducido tamaño. Además, el uso de estas
cámaras como entrada de información hacia los sistemas, está presente en las TUI (Tangible User
Interface - Interfaces de Usuario Tangibles), realidad virtual y aumentada.
La información que reciben los dispositivos informáticos por medio de las interfaces de
visión, tacto o sonido, se conoce como gesto. Un gesto, en términos de la informática, es
cualquier movimiento físico que el sistema de un dispositivo puede detectar y responder al
mismo, sin la ayuda de un mecanismo externo de señalización tradicional como un mouse.
La principal motivación de este trabajo radica en el interés por investigar las interfaces
gestuales, el cual es un tema innovador dentro del ámbito académico. Las mismas se encuentran
aún en desarrollo, por lo tanto todavía no se han fijado sus fronteras ni sus conceptos de manera
estandarizada, y existen pocos estudios académicos sobre sus características, y su diseño.
En los 70, aparecieron los sistemas basados en línea de comandos, primero a través de
terminales y luego con teclados electrónicos y monitores basados en texto. La computadora
recibía órdenes de forma directa a través de teclas de función, caracteres, abreviaturas o palabras.
Fue el primer estilo de interacción que se masificó y que aún hoy en día se sigue utilizando.
En los 80, surgieron las interfaces gráficas de usuario (GUI – Graphical User Interface)
junto con las WIMP (Ventanas, Menús y Dispositivos de puntero). Las GUI se basan en “la
manipulación directa del objeto de interés”. Se tiene una representación del objeto y el usuario lo
manipula en forma directa, causando un efecto visible sobre el mismo.
A pesar de que hoy en día las GUI más utilizadas se basan en WIMP, siendo este el
paradigma de escritorio más popular y extendido, existen otros paradigmas de interacción que
comienzan a utilizarse en la vida diaria como la realidad virtual y la realidad aumentada.
Capítulo 2
2 INTERFACES GESTUALES
Este capítulo tiene como fin introducir los conceptos básicos referentes a las Interfaces
Gestuales, su evolución e historia, qué son, cómo se miden y ejemplos de las mismas, definir el
concepto de interacción persona – computadora, a qué se considera gesto, qué es una interfaz
natural de usuario, tecnologías y técnicas de reconocimiento de gestos.
¿Por qué es tan importante estudiar la interfaz de usuario? Porque tal como hemos dicho
antes es una parte importante del éxito de una aplicación interactiva. Estudios realizados
informan que alrededor de un 48% del código de una aplicación está dedicado a la interfaz. A
pesar de su importancia la interacción persona-computadora es una de las disciplinas con menos
dedicación en los estudios de informática y, muchas veces, poco pensadas al momento de hacer la
documentación de un proyecto, dejándose a menudo para el final.
2.1.1 HISTORIA
A finales de los años 1970 y principios de los 80, los psicólogos empiezan a interesarse
en los aspectos de procesamiento de la información del diseño de sistemas de información.
Comienzan a aparecer áreas de estudio y conceptos como el de diseño de menús, que utilizan
tópicos, por ejemplo, los nombres de menús o profundidad versus anchura. A mediados de los 80,
la usabilidad de los sistemas monousuario empieza a hacerse un hueco, como respuesta a la
explosión de la PC. Hacia finales de los 80 y en los 90, la tendencia se centra en las potentes
estaciones de trabajo (workstations) multiusuario y en las PC más potentes. Se hace hincapié en
las comunicaciones más avanzadas, en las aplicaciones multimedia, en las computadoras
multitarea y en la realidad virtual. Asimismo, la comunidad HCI siempre se ha mostrado de
acuerdo en que, aunque es importante entender la interacción de un usuario con una máquina
mediante una interfaz, también es necesario que se consideren otros tópicos para aprovechar al
máximo las nuevas tecnologías. Estos tópicos que se deben estudiar son: trabajo en grupo,
integración e interacción de medios y el impacto de estas tecnologías en el lugar de trabajo, en la
casa y en la sociedad en general.
Figura 2-2 - A la izquierda la primera computadora de Apple y a la derecha la primera computadora, la Xerox Alto.
Sociología Programación
Inteligencia
Diseño
IPO Artificial
Ingeniería
Psicología
del Software
Ergonomía
2.1.3.1 Psicología
Es la ciencia que estudia las costumbres y tradiciones de los pueblos. Las grandes
empresas contratan antropólogos para comprender mejor a sus clientes y trabajadores. Además, la
utilizan para diseñar productos que reflejen correctamente las tendencias culturales del momento.
Estas empresas están convencidas que las técnicas que utiliza la sociología, pueden responder a
cuestiones sobre organizaciones y mercados que otros métodos no pueden.
Uso de los colores. Los colores utilizados para visualizar deben ser diferentes y
distinguirse bien ante los cambios de contraste.
2.1.3.4 Diseño
Apoyo. El control del programa recae sobre el usuario. El sistema debe ofrecerle
ayuda para facilitarle la labor.
Estímulo. Las acciones de los usuarios deben producir los resultados que ellos
esperan, es decir, ser previsibles. También se deberían poder deshacer, ser
reversibles.
Disponibilidad. Hacer que todos los objetos estén disponibles para que el
usuario los use en cualquier momento.
Seguridad en el uso. Se refiere a evitar errores del usuario. Para ello la interfaz
puede ofrecerle ayuda de forma automática o si el usuario la solicita.
Afinidad. Permitir que a través de un buen diseño visual los objetos sean afines a
otros de la realidad cotidiana, esto contribuye a la familiarización del usuario con
la interfaz.
2.1.3.5 Programación
Una computadora por sí misma no es capaz de hacer nada, solo puede hacer lo que se le
ha ordenado, o en términos más específicos, programado. Esta herramienta permite decirle a la
computadora qué debe hacer.
Todo lo que una computadora realiza cuando un usuario interactúa con ella son órdenes
programadas. El programador, es el encargado de diseñar soluciones a determinados problemas y
escribirlos como programas para la computadora.
Algunos conceptos de calidad que afectan al usuario y que son definidas por normas ISO
(Usability) son:
Funcionalidad.
Eficiencia.
Mantenibilidad.
Portabilidad.
Por otro lado, dichas normas describen más específicamente los atributos de una
interfaz:
llegar a realizar, a qué tanto reduce el sistema el trabajo que debe realizar el empleado y como
consecuencia de ello se anticipen las jubilaciones o se despida personal, etc.
Toda esta serie de puntos negativos que se han enumerado son algunos de los que se
pueden encontrar. Por lo tanto, es necesario tenerlos presentes siempre en el diseño de una
interfaz.
Durante el desarrollo de un sistema interactivo se deben tener en cuenta todos los actores
intervinientes en él: el primero de ellos es el usuario, que es quien tiene la capacidad de elección
y actuación, luego aparece la computadora, que ofrece un programa y mecanismos para el acceso
al sistema y por último el diseñador, que es quien se encarga de predecir las posibles acciones
que realice el usuario y plasmarlas en un programa.
Diseñador
IU
Usuario Computadora
La tendencia de hacer interfaces de usuarios fáciles de usar hace que su diseño sea cada
vez más difícil. La Interfaz de Usuario (IU) es el medio de comunicación entre la persona y la
computadora, sus características son su apariencia (presentación) y la capacidad de gestionar ese
diálogo que se produce entre ambos. Existen muchas herramientas y productos que permiten
generar automáticamente la apariencia de una aplicación utilizando botones, menús, herramientas
visuales, toolkits, etc. Pero el uso de estas, no brinda la ayuda suficiente para analizar el
comportamiento dinámico de la interfaz y tampoco aseguran que la misma sea correcta. Existen
normas ISO para diseñar un sistema interactivo y evaluar su calidad, algunas las cuales fueron
descriptas en la sección “ingeniería de software”.
El diseño del sistema interactivo debe dejar satisfechas las demandas de los usuarios.
Para obtener buen diseño se debe partir de analizar el contexto donde se desarrolla el trabajo o la
actividad que realizará la computadora. Para lograr esto, se analizan las características de los
usuarios, sus actividades y el escenario donde éste realiza su actividad. Los factores nombrados
permiten recopilar los requisitos que el diseño del sistema debe satisfacer.
Usuarios
además, por la búsqueda de que se cumpla el objetivo de que el producto ayude al usuario.
Asimismo, los factores humanos pueden llegar a limitar el tiempo de aprendizaje, rendimiento, la
frecuencia de errores, etc.
El diseño de una aplicación puede estar orientado a un encargo directo (un cliente
específico) o dirigido a un grupo de potenciales usuarios (como pueden ser adolescentes, niños,
estudiantes, etc.).
Para realizar este análisis centrado en el usuario, se deben conocer varios aspectos:
Este conjunto de particularidades de los usuarios serán de gran ayuda luego del diseño.
Para recopilar las mismas, se puede partir de una tabla donde figuren los distintos tipos de
usuarios que se tendrán y sus características (nivel de experiencia, grado de utilización del
sistema, etc.)
Tareas
Otro de los puntos importantes que se deben tener en cuenta a la hora de diseñar un
sistema interactivo, son las tareas que realizan los usuarios. La forma de actuar de las personas
está dirigida por objetivos, para lograr esos objetivos, se deben desarrollar una serie de tareas
sobre objetos. Por ejemplo, si el objetivo es comer, se debe llevar a cabo la tarea de encender
(actividad/tarea) el microondas (objeto). Cuando estas tareas se realizan mediante un sistema
interactivo se debe tener en presente que sean familiares para el usuario, esto es, la forma en que
el usuario las llevará a cabo, la secuencia de acciones y su representación debe ser símil a la que
ejecuta en el entorno real. De lo contrario, el usuario deberá hacer un esfuerzo extra para
comprender las tareas que realiza cotidianamente.
Escenario
Entorno físico. Se debe prestar atención a las características físicas del entorno
como pueden ser el tipo de ubicación, la iluminación, el espacio, etc. así como
también otros factores del mismo como el ruido, la polución, la temperatura, etc.
Entorno social. Este entorno implica trabajar en un grupo que rige bajo normas
de comportamiento. Hay determinadas situaciones donde puede haber
cooperación para el trabajo, se comparten recursos y datos, etc.
2.1.5 USABILIDAD
Un sistema interactivo que cumpla con sus objetivos, tiene que lograr ser usable y
accesible por la mayor parte de la población.
La usabilidad se puede definir como la medida en la que un producto se puede usar por
determinados usuarios con efectividad, eficiencia y satisfacción para cumplir objetivos
específicos en un contexto dado.
Existen normas ISO (ISO 9241-11) (Usability) que explican cómo identificar la
información necesaria para tomar en cuenta a la hora de especificar o evaluar la usabilidad
midiendo la performance y la satisfacción del usuario. También da una guía con respecto a
describir el contexto de uso del producto y las medidas de usabilidad en un sentido explícito.
Incluye también una explicación de cómo la usabilidad de un producto puede ser especificada y
evaluada como una parte de un sistema de calidad. Además, brinda explicaciones de cómo las
medidas de performance y satisfacción de usuario pueden ser usadas para medir cómo cualquier
componente de un sistema puede afectar la calidad de todo el sistema.
.Entonces, ¿por qué las cosas son difíciles de usar?: El problema está en el desarrollo del
producto, se hace énfasis en la tecnología en vez de focalizarse en el usuario que, en definitiva, es
el que utilizará el dispositivo.
Por usabilidad se puede entender como la característica que hace que el software sea
fácil de utilizar y fácil de aprender. Pero la pregunta es, ¿Cuándo un software es fácil de utilizar y
fácil de aprender?, ¿Cómo se miden estos factores? Un software es fácil de usar si realiza la tarea
para la que se lo utiliza de manera fácil, eficiente e intuitiva. Por otro lado, su facilidad de
aprendizaje se mide por la rapidez en que el usuario realiza una tarea, cuantos errores se cometen
y la satisfacción de la persona que lo utiliza.
Otro aspecto a tener en cuenta es que sea seguro (protección de datos personales), y que
tenga un costo adecuado. Por otra parte un software es usable si permite que el usuario se
concentre en su tarea y no en la aplicación.
Facilidad de aprendizaje
Dos pautas que debe cumplir un sistema para que sea fácil de aprender es que el mismo
sea sintetizable, es decir que el usuario tiene que poder evaluar el efecto de las operaciones
anteriormente efectuadas, en el estado actual. Por lo tanto, cuando se realiza una operación que
cambia el estado anterior, este cambio debe ser captado por el usuario.
La otra pauta que se debe cumplir tiene que ver con la familiaridad del sistema, esto se
refiere a la correlación que existe entre los conocimientos que tienen los nuevos usuarios (dada
una vasta experiencia interactiva con otros sistemas) y los conocimientos que se requieren para la
interacción con el nuevo sistema.
Consistencia
El gran problema es que, cuando se termina una aplicación, el mercado obliga a hacer
una nueva, con nuevos comportamientos y objetos. Esto dificulta la consistencia entre versiones,
pero se debe tratar de mantener la máxima consistencia posible y que el usuario pueda usar las
nuevas características, sin perder las que ya conocía.
Flexibilidad
Esta característica, esta avocada a las múltiples maneras en que el usuario y el sistema
pueden intercambiar información.
Hay algunos parámetros que se tienen en cuenta para medir la flexibilidad que serán
detallados brevemente a continuación:
Para lograr que el control esté en poder del usuario, se les debe dar a los mismos la
posibilidad de deshacer. Además del control para empezar y terminar las operaciones siempre
que esto sea posible. Cuando este proceso no se pueda interrumpir, hay que advertirle a los
usuarios y permitir ver mensajes apropiados durante el proceso.
Migración de tareas
Este parámetro está relacionado con la transferencia del control usuario - sistema.
Ambos tienen que tener el poder de pasar de una tarea a la otra, de manera que esta pueda ser
interna o compartida entre los dos. Un ejemplo de ello, podría ser el corrector ortográfico que
puede ser utilizado por el usuario, por el sistema, o ambos.
Capacidad de substitución
Esta capacidad, es la que posibilita que valores equivalentes puedan ser reemplazados
unos por otros. Por ejemplo, para determinar el margen de una carta, se puede especificar en
centímetros o pulgadas explícitamente, calcularlo según los valores que se especificaron (anchura
de carta, por ejemplo) o decidirlo visualmente.
De esta manera, sin dejar cálculos en manos del usuario, se minimizan los errores.
Adaptabilidad
Un ejemplo de ello puede ser preparar un sistema que reconozca cómo se comporta un
usuario experto o uno novato para, de esta manera, ajustar de forma automática el control del
diálogo o el sistema de ayuda, y de esta manera adaptar los mismos al nivel de usuario que
actualmente esté usando el sistema.
Robustez
Esta característica se refiere al nivel de apoyo al usuario para que el mismo pueda
cumplir con los objetivos y está relacionada con la capacidad de observación del usuario, de
recuperación de información y de ajuste de la tarea del mismo, es decir, que pueda aprender de
sus errores.
Posibilidad de recuperación
Tiempo de respuesta
Es el tiempo que necesita el sistema para formular los cambios de estado del usuario.
Por supuesto que estos tiempos de respuesta deben ser llevaderos para el usuario.
Es el nivel en que los servicios del sistema permiten al usuario realizar todas las tareas
que el usuario pretende hacer y de la forma en que las quiere hacer. Esto se relaciona
directamente con el nivel de satisfacción que tendrá el usuario al usar el sistema.
diseño. La usabilidad no puede ser medida directamente, pero se pueden encontrar aspectos de la
usabilidad que sí pueden medirse. Dos tipos de métricas de usabilidad pueden ser recolectados en
la prueba de usabilidad que se realice. Estas métricas son las informaciones objetivas y
subjetivas:
Información Subjetiva. datos subjetivos sobre qué fue lo qué pensó el usuario y
cómo se sintió mientras utilizaba la aplicación y su interfaz. La información
subjetiva puede ser cualitativa o cuantitativa, como por ejemplo podemos
presentar una escala definida y se le pregunta al usuario que califique que tan
fácil o difícil fue utilizar el sistema de acuerdo a dicha escala, así se obtendrá un
veredicto subjetivo en una respuesta cuantitativa. Para medir esta información se
pueden controlar los promedios de qué tan fácil fue instalar el producto, qué tan
fácil fue aprender a usar el sistema, preferencias del sistema o comentarios que
surgen de manera espontánea
2.2 GESTOS
Gestos y reconocimiento de gestos son términos que se usan a menudo en las
discusiones sobre la interacción humano-computadora. Para la mayoría de las personas, el
término incorpora reconocimiento de caracteres, reconocimiento de los correctores de símbolos, y
varios tipos de interacción. De hecho, toda acción física involucra un gesto para que esta sea
llevada a cabo. Asimismo, la naturaleza de ese gesto es un importante componente que establece
la sensación que le queremos dar a la acción.
En (Gord Kurtenbach, 1990) dan una interesante definición de gesto “un gesto es un
movimiento del cuerpo que contiene información. Sacudir la mano para despedirse es un gesto.
Presionar una tecla en un teclado no es un gesto porque el movimiento de un dedo para tocar una
tecla no es significante. Todo lo que importa es qué tecla se presiona”.
Por supuesto que, si analizamos esta definición, no es difícil de darse cuenta que para el
uso de gestos se requiera de dispositivos de entrada. Los gestos involucran un gran número de
grados de libertad (se explica en 2.2.1 “Grados de libertad”) y restricciones para con el usuario.
Por ejemplo, si hacemos un reconocimiento de gestos utilizando un mouse, o un láser, o algún
otro dispositivo puntero, restringe al usuario en los gestos que puede realizar. Es decir, la
comunicación con la aplicación será posible, pero el conjunto de gestos que el mismo podrá
realizar será muy reducido.
Lo primero que se debe hacer si se quiere construir una interacción basada en gestos con
computadoras, es entender el rol que cumple el gesto en la comunicación entre personas. Para eso
se debe analizar desde la psicología y la antropología los tipos de gestos que comúnmente usan
las personas, y especificar los atributos de cada uno.
Los grados de libertad en el cuerpo humano, están determinados por los ejes de
movimiento que posee una articulación y a su vez estos estarán condicionados por la forma
anatómica de dicha articulación. Al realizar un mismo movimiento que involucra una articulación
determinada, por ejemplo el hombro, existen ejercicios que darán un grado de libertad porque
utiliza solo uno de los ejes de movimiento del hombro y los demás son anulados, esto sucedería,
por ejemplo, con una máquina.
Tres grados de libertad (3DOF) significa solo el movimiento en tres dimensiones, pero
no incluye la rotación.
Tanto los términos 3DOF como 6DOF serán muy utilizados en el presente documento.
Si se analizan los gestos fuera del mundo de la informática y sólo se considera los que
se hacen día a día en las “conversaciones” entre otras personas, se verá que se usa una enorme
cantidad de gestos en la comunicación. Los gestos que se utilizan varían dependiendo del
contexto y la cultura, dos cuestiones que se encuentran íntimamente relacionadas con la
comunicación. Esto se puede comprobar simplemente observando una persona conversando por
celular, seguramente realizará gestos como si estuviera hablando con alguien cara a cara.
2.2.2.1 Clasificación
Los gestos semióticos con uso de las manos, se pueden clasificar asimismo de acuerdo a
su funcionalidad.
Simbólicos. Son gestos que dentro de cada cultura tienen un único significado.
Por ejemplo, el gesto de OK con el dedo pulgar levantado
Deíctico. Son gestos apuntadores es decir que apuntan a algo o alguien ya sea
concreto o abstracto o atraen la atención hacia cierto punto. Por ejemplo, “Ese
señor” o “Poné eso ahí”.
Pantomímico. Son gestos que se utilizan para mostrar el uso de una herramienta
u objetos invisibles en la mano del interlocutor. Por ejemplo, “Gire el volante a
la izquierda”.
A esta clasificación (McNeill, 2006) le adicionó los tipos de gestos que se relacionan
con el proceso de comunicación, los gestos de batido y los gestos cohesivos. Los gestos de batido
son llamados así porque la mano se mueve hacia arriba y hacia abajo al ritmo de la conversación.
Los cohesivos en cambio, son una variación de los icónicos, pantomímicos o deícticos que se
utilizan para unir porciones de la conversación temporalmente separadas pero temáticamente
relacionadas.
Como ya se mencionó, los gestos están fuertemente relacionados al discurso que se está
diciendo, tanto para la relevancia de lo que se está hablando como para su interpretación. Sólo los
gestos simbólicos se pueden interpretar sin la información del contexto del discurso. Sin
embargo, este contexto tiene que ser acompañado secuencialmente por otro gesto o acción. Estos
tipos de gestos que se mencionaron anteriormente, se pueden clasificar de acuerdo a su relación
con el discurso:
Existe otra clasificación dependiente de la necesidad del habla para la interpretación del
gesto, esta es: Gesticulación (Batido y Cohesivo), Dependientes del lenguaje (Icónicos),
Pantomímicos (pantomímicos), Emblemas (Deíctico), lenguaje de signos (Simbólico). Estos van
desde el que más necesita del habla (Gesticulación) al que menos lo necesita (Simbólico). Por
ejemplo, el lenguaje de signos ya tiene características semánticas y sintácticas parecidas al habla,
que no requieren del habla para su interpretación. Por otra parte, el lenguaje de gestos icónico no
puede ser entendido sin el discurso que los acompaña.
tiempo les tomará aprender los gestos que las computadoras pueden entender. Incluso las
interfaces gestuales más avanzadas comúnmente implementan sólo reconocimiento de gestos
deícticos o simbólicos, pero esto no tiene por qué ser siempre así.
Son los gestos cuyo objetivo es controlar una entidad donde existe una estrecha relación
entre los movimientos de una parte del cuerpo humano y la entidad que se quiere manipular.
Quek, los define como: “aplicar una fuerte relación entre los movimientos actuales del
gesto realizado con la mano/brazo y la entidad que está siendo manipulada.” (Quek, y otros,
2002)
Mientras una manipulación puede incluir, por ejemplo, arrastrar y soltar utilizando un
mouse, un gesto de manipulación puede involucrar interacciones más complicadas requiriendo
que se interprete por un sistema de computadora, como las manipulaciones utilizando un lápiz
táctil para realizar los movimientos en un objeto en pantalla. Las manipulaciones pueden incluir
movimientos en dos dimensiones (2D), a través de un eje x, y (como el mouse), o movimientos
multidimensionales en el espacio, detectando movimientos más complejos.
Manipulación 2D. Gestos que se utilizan para manipular una entidad digital en
un display.
Gestos tangibles y objetos digitales. Gestos que manipulan objetos físicos para
representar objetos digitales. La manipulación se hace sobre el objeto físico, y el
resultado de esa manipulación se lo considera una salida (por ejemplo en un
monitor o T.V.).
Gestos y objetos físicos. Son gestos que se realizan para controlar los
movimientos de objetos reales, por ejemplo robots, sillas de rueda, T.V., etc.
En (Quek, y otros, 2002) se los define como: “Los semáforos son sistemas de
señalización donde se pueden utilizar banderas, luces o incluso los brazos. Por extensión, se
define un gesto semafórico a cualquier sistema de gestos que emplee un diccionario estilizado de
gestos estáticos o dinámicos con la mano o el brazo. El enfoque semafórico se puede definir
como “comunicativo” ya que los gestos se interpretan como un “universo de símbolos” que se
utiliza para comunicarse con la máquina”.
Gestos dinámicos vs. Estáticos. Los gestos semafóricos pueden ser estáticos y
pueden ser realizados a través del cuerpo o a través de controladores.
Entrada de audio. Consiste en detectar la posición a partir del origen del sonido
que se detecta del usuario. Los sensores de audio no son comúnmente utilizados
Entradas táctiles.
Sensores remotos.
Antes de comenzar, quien se encuentre diseñando una interfaz gestual se debe plantear
la siguiente pregunta: ¿Es apropiado un sistema de gestos? Solo porque las interfaces gestuales
son novedosas, no significa que son apropiadas para cualquier situación. Entonces, se verá
cuándo no es apropiado utilizar gestos:
Cuando hay mucha entrada de datos. Por más que algunos usuarios se adapten a los
teclados táctiles fácilmente, un teclado físico, es muchísimo más rápido y fácil de utilizar para la
gran mayoría de la gente cuando tienen que escribir texto o números.
Cuando existe mucha dependencia sobre lo visual. Muchas interfaces gestuales usan
una respuesta o retroalimentación (feedback) visual para indicar que una acción se ha realizado
(por ejemplo, cuando se ha presionado un botón). Además, la mayoría de las interfaces táctiles y
muchos sistemas gestuales, en general, dependen íntegramente de pantallas visuales con poco o
ninguna respuesta háptica. Por otra parte, usualmente no existe una sensación física que haga
sentir que un botón ha sido presionado, en este caso, si el usuario tiene limitaciones visuales (la
mayoría de los adultos que superan una determinada edad la tienen) una interfaz gestual puede no
ser apropiada.
Cuando existe mucha dependencia sobre lo físico. Las interfaces gestuales son, por
supuesto, mucho más demandantes físicamente que una pantalla o un teclado. Mientras más
amplio y físico es el gesto (por ejemplo, una patada), menos probable será que algunas personas
lo puedan realizar, ya sea debido a su edad, enfermedades, o incluso condiciones del entorno. Por
ejemplo, presionar los botones en un teclado táctil es difícil con guantes de invierno puestos. La
inversa también es cierta, ya que mientras más acotado y pequeño sea el movimiento, menos
gente será capaz de lograrlo. El teclado en el iPhone, por ejemplo, es muy pequeño y delicado
para que sea utilizado por una persona con dedos grandes o lentos.
Cuando el contexto no es apropiado. El contexto puede ser una traba para una interfaz
gestual en muchas situaciones, o por razones de privacidad o simplemente para evitar avergonzar
los usuarios del sistema. Los diseñadores deben tener en cuenta el contexto donde será utilizado
el sistema y determinar qué tipo de gesto será apropiado para ese contexto.
Por supuesto que hay muchas razones por las cuales sí utilizar una interfaz gestual. Para
todo lo que un gesto no interactivo puede ser usado (comunicación, manipular objetos, utilizar
una herramienta, componer música, etc.) también puede ser hecho utilizando un gesto interactivo.
Es particularmente bueno usar las interfaces gestuales para:
Interacciones más naturales. A los seres humanos, por naturaleza, les gusta
interactuar directamente con los objetos. Los gestos interactivos permiten a los
usuarios interactuar de una manera natural con objetos digitales por un medio
físico, como lo hacen con los objetos físicos en sí.
A pesar de que las interfaces gestuales pueden diferir de las interfaces no táctiles o
“libres”, la mayoría de los gestos tienen similares características que se deben tener en cuenta a la
hora del diseño. Mientras más sofisticada sea una interfaz (y más sensores o dispositivos utilice),
más varían los atributos mencionados a continuación:
Presencia. Es el atributo más básico. Algo debe estar presente para hacer que un
gesto genere una interacción o un evento. Para algunos sistemas, la presencia de
una persona es suficiente para causar una acción. Para una interfaz táctil, la
presencia de la punta del dedo crea un evento.
Duración. Todo gesto tiene una duración a lo largo del tiempo y puede ser hecho
rápidamente o lentamente. ¿El usuario se encuentra tocando un botón o
manteniéndolo apretado por un período largo? Para algunas interfaces,
especialmente aquellas que son simples, la duración no es tan importante. En
cambio, las interfaces que usan sensores de proximidad, se interesan poco por la
duración y solo si un ser humano se encuentra en el área. Pero para los
videojuegos y otros tipos de interfaces, la capacidad de determinar la duración es
crucial. La duración se mide calculando el tiempo del primer movimiento
perteneciente al gesto, hasta el tiempo en que termina el gesto.
Número de participantes. Puede llegar a ser muy útil para algunos dispositivos
detectar múltiples usuarios. Por ejemplo, dos personas utilizando un sistema con
una mano puede ser muy distinto de una persona manipulando el sistema con
ambas manos.
En resumen, cuando se diseña un gesto interactivo, estos atributos, más el rango en que
se puede mover el usuario, deben ser considerados. Por supuesto que las interfaces gestuales más
simples, tales como las táctiles, usarán solo algunos de estos atributos, y los diseñadores y
desarrolladores seguramente no necesitarán perder tiempo en mirar estos atributos pero sí hacer
hincapié en la ergonomía y la facilidad de uso de los gestos interactivos.
Una vez que se ha decidido cuál es la interfaz gestual apropiada para los usuarios y el
ambiente en el que se va a implementar, se necesitan definir los gestos apropiados para las tareas
y objetivos que los usuarios deben realizar. Esto requiere una combinación de tres elementos: los
sensores o dispositivos de entrada que se utilizaran, los pasos que requiere cada tarea, y la
fisiología del cuerpo humano. Los sensores son los que determinan qué detectará el sistema y
cómo. Los pasos en cada tarea permiten definir las acciones que deben realizarse y las decisiones
que se deben tomar. La fisiología del cuerpo humano determinará las limitaciones físicas de los
gestos a realizar.
Las tareas simples, generalmente, tienen gestos simples asignados para realizarlas, en
cambio las tareas más complicadas tienen estipulados gestos más complejos.
Si se lleva esto como ejemplo a tareas cotidianas que realizan los seres humanos, se
puede tomar el caso de encender la luz. Si se quiere encender la luz en una habitación un gesto
simple en la pared debería ser suficiente para concretar la tarea, por ejemplo, golpear la pared o
aplaudir. Sin embargo, si se quiere atenuar la luz (una acción un poco más compleja) requiere un
poco más de esfuerzo, como mantener la mano hacia arriba y bajarla lentamente. Para atenuar las
luces de toda la casa de una vez (una tarea aún más sofisticada) se necesitará un gesto combinado
o una combinación de gestos, como por ejemplo aplaudir tres veces, y luego bajar el brazo. Como
esta acción se realiza muy rara vez y es conceptualmente complicada, puede tener asociada un
movimiento complejo.
Esto no quiere decir que todos los comportamientos complejos necesitan o deben ser
asociados a gestos complejos, sino que las acciones simples no deberían depender de gestos
complejos. De hecho, los mejores gestos interactivos son aquellos que convierten lo complejo en
algo simple y elegante.
El diseñador japonés Naoto Fukasawa ha observado que los mejores diseños son
aquellos que logran “disolver el comportamiento”, lo cual significa que los productos pasan
desapercibidos sin importar lo que el usuario esté haciendo. De esta manera la utilización del
producto se toma de manera más natural por el usuario y realiza los actos para cumplir las tareas
que requiere el producto de manera casi subconsciente.
Adam Greenfield, habló sobre este tipo de interacciones naturales en una entrevista:
“Se ve esto, por ejemplo, en Hong Kong donde las mujeres dejan su RFID
(identificación por radio frecuencia, sistema que contiene datos personales) en sus carteras y
simplemente mueven las mismas a través de los lectores mientras pasan a través de los
molinetes. Pero esto no fue diseñado. Simplemente surgió; la gente entendió como hacerlo por sí
misma, sin ningún diseñador que los tenga que instruir… Mientras más se pueda adaptar y no
imponer, más exitosos serán nuestros diseños”. (Greenfield, 2006).
Entonces, los mejores y más naturales diseños, son los que logran asociar el
comportamiento del sistema interactivo a los gestos que los humanos ya realizan para concretar
tal comportamiento o tarea. Se puede tomar el ejemplo ya dado de encender la luz o, más general
aún, presionar un botón para apagar o encender algo, girar hacia la izquierda para hacer que el
“avatar” que representa al usuario gire hacia la izquierda también, poner las manos debajo del
lavatorio para que salga el agua, etc. En dichas acciones, el diseño se disuelve en el
comportamiento.
esto debe estar acompañado de un buen diseño y una buena explotación de esa tecnología
empleada, para copiar de la mejor manera las capacidades humanas, aplicarlas adecuadamente al
contexto dado y satisfacer y completar las tareas que se necesitan.
Cuando se dice que una interfaz es “natural” se está refiriendo a la forma en la que
interactúa un usuario y a cómo se siente con respecto al producto, más específicamente, qué
hacen y cómo se sienten cuando lo utilizan.
¿Qué hace y cómo se siente un jugador de fútbol cuando se dispone a patear una pelota?
Pone la pelota en el piso, toma carrera y patea la pelota con naturalidad, como si esta fuera parte
de su cuerpo. Evidentemente se siente cómodo al hacerlo.
Esto es exactamente lo que buscan los productos que utilizan interfaces naturales en sus
usuarios. Se deben copiar sus capacidades, conocer sus necesidades y contentar sus tareas y
demandas del contexto.
La palabra natural es utilizada porque la gran mayoría de las interfaces usan dispositivos
de control artificiales, como pueden ser un teclado o un ratón; dispositivos que requieren por
parte del usuario, realizar un aprendizaje previo en el funcionamiento de los mismos. Por tanto,
se define como natural al término u objetivo que se debe alcanzar con el desarrollo de la interfaz
de usuario para que éste considere el control del dispositivo como algo natural, esto es, que se
pueda aprender su funcionamiento de forma intuitiva.
Todas estas nuevas interfaces deben ser diseñadas con nuevas e innovadoras formas de
interactuar, es decir, con un nuevo paradigma.
Un dispositivo que el usuario realmente pueda sentir su uso como natural significa que
aprovecha al máximo las entradas que le otorga el usuario. Como ya se apuntó más arriba
diseñando y desarrollando interfaces naturales de usuarios, tomando ventajas de la tecnología
moderna de hoy día, se abren las puertas hacia una nueva era, donde la tecnología se puede
integrar completamente en la vida de las personas.
Si bien existen varios caminos alternativos que se pueden seguir para el diseño de una
Interfaz Natural de Usuario, lo primero que se debe entender es que el objetivo es lograr que la
experiencia para el usuario sea natural, en vez de que, de alguna manera sea intrínsecamente
natural.
Crear una experiencia que, para usuarios expertos, se pueda sentir como una
extensión de su cuerpo.
Crear una experiencia que sea tan natural para el usuario novato como para el
usuario experto.
Crear una experiencia que sea autentica para el medio. No empezar tratando de
simular la mímica del mundo real o algo parecido.
Construir una interfaz de usuario que tenga en cuenta el contexto, incluyendo las
metáforas correctas, indicaciones visuales, retroalimentación, y métodos
adecuados de entrada/salida para el contexto.
Debería:
Podría:
Una interfaz de usuario natural no es una que responde mágicamente a cualquier acción,
de alguna manera adivinando correctamente la intención del usuario. Por el contrario, la interfaz
natural fomenta el desarrollo de una conducta hábil y genera un sentimiento de dominio mediante
la obtención de las medidas adecuadas de las acciones de los usuarios y las transforman en
acciones que son fluidas, eficaces y divertidas.
Aunque los aspectos particulares de un sistema gestual requieren más y diferentes tipos
de consideración, las características de una buena interfaz natural no difieren mucho de las
características de cualquier otro sistema interactivo bien diseñado (usualmente se dice que deben
ser usable, útil, deseable e intuitivo). Por lo tanto, las interfaces naturales además deben ser:
Descubribles. Significa que se tiene que saber que allí existe “algo” (dispositivo,
objeto, etc.) con lo que se puede interactuar. Esto puede ser un gran problema
para las interfaces naturales. ¿Cómo se puede decir si una pantalla es tocable o
tangible?, ¿Cómo se puede determinar si un entorno es interactivo? Antes de
poder interactuar con un sistema gestual, se tiene que saber que está ahí y cómo
comenzar a interactuar con él. Aquí es donde entran en juego una o múltiples
propiedades de un objeto que dan indicaciones sobre cómo interactuar con él o
una función de ese objeto. Un botón, por su forma, tiene la característica o
función de apretarse.
Apropiadas. Como todo sistema, los sistemas basados en gestos también deben
ser adecuados a la cultura, la situación y el contexto en el que serán
implementados. Ciertos gestos son ofensivos en algunas culturas. Un gesto “ok”,
de los seres humanos. Esto ocasionará una mejor sensación en el usuario cuando
lo utilice.
Ahora se verá qué papel juega el contexto y entorno creando una interfaz natural. El
equipo que está creando la interfaz se debe preguntar 3 cosas básicas:
¿Cuáles son las características de los contextos donde las interfaces naturales
táctiles probablemente resulten exitosas?
¿Qué pasa con eso que el entorno favorece la formulación de acciones que serán
al principio exitosas y luego pueden ser moldeadas y extendidas para satisfacer
las nuevas exigencias que presentan, favoreciendo la rapidez, el sentido de
dominio y la diversión del usuario?
Si se observan los contextos donde las interfaces táctiles han obtenido resultados
prometedores, todos tienen algunas características en común. En primer lugar, son contextos
sociales y entornos de ocio, donde las personas se reúnen para interactuar, entornos de venta
minorista, donde las personas se reúnen a realizar transacciones comerciales, entornos de
demostración, donde el usuario utiliza tecnología para actuar antes de una audiencia, y entornos
públicos, donde las personas son atraídas a caminar y explorar la tecnología. Estos últimos son
una especie de arte público interactivo. La interfaz aumenta esas interacciones. Es así que estas
interfaces son eficaces para tareas estrechamente unidas, donde varias personas están trabajando
en forma conjunta y acoplada hacia un objetivo en común. Jugando videojuegos, compartiendo
experiencias y realizar una compleja transacción son algunos ejemplos de lo dicho. Algunos de
estos, son contextos sociales donde los grupos se juntan y se expresan espontáneamente. Otros
son contextos donde las personas se reúnen para completar una tarea compartida que involucra
información compleja y múltiples resultados posible (por ejemplo, comprar un producto que tiene
muchas alternativas). Normalmente estos toman espacio en lugares públicos. El uso intermitente
e indeterminado de estos sistemas necesita una introducción fácil y un rápido ascenso hacia el uso
experto.
El hecho de que sean la mayoría voluntarios significa que la interacción debe ser
entretenida y reconfortante para todos. En gran parte de los casos la tecnología ofrece mejores
capacidades que hacen que la interacción se disfrute más. Otra característica de estos entornos es
que los usuarios están concentrados en el contenido (por ejemplo, representación de las piezas de
un juego, la compartición de fotos u otro contenido, o la evaluación o configuración de
productos).
A esta altura se debe revisar la definición de una Interfaz Natural de Usuario en relación
a este contexto de discusión. La NUI está definida por 3 elementos:
Divertida
Estos elementos deben estar relacionados o unificados. Una NUI debe tener todos estos
elementos en distintos grados. Los videojuegos son divertidos, pero para algunos no son
aplicables las NUI. Algunos sistemas de entrenamiento conducen hacia la práctica experta, pero
no son NUI.
Hasta aquí se ha considerado la relación entre el entorno contextual y una NUI basada en
gestos. Se describieron las características de los entornos donde una NUI debería ser exitosa, así
como también se ha considerado el entorno dentro de la aplicación. Si se quiere ahondar en las
interfaces basadas en gestos se puede consultar la siguiente bibliografía que se referencia
(Wigdor & Wixon, 2011); (Saffer, 2009); (Más, Yee, & Larrea, 2012)
Capítulo 3
3 REALIDAD AUMENTADA
La Realidad Aumentada (RA) es una variación de Realidad Virtual (RV). Las
tecnologías de Realidad Virtual sumergen a la persona dentro de un entorno completamente
sintético (virtual), sin tener consciencia del mundo real que lo rodea. Por el contrario, la Realidad
Aumentada permite a la persona ver el mundo real, en el que se superponen objetos virtuales.
Así, la Realidad Aumentada no sustituye la realidad, sino que la complementa, integrando el
mundo real al virtual.
3.1 INTRODUCCIÓN
Mundo Virtual.
Retroalimentación sensorial.
Interactividad.
1
Técnica de grabación de la información visual tridimensional o a la creación de la ilusión de profundidad en una
imagen. La ilusión de profundidad en una fotografía, película, u otra imagen bidimensional son creados presentando
una imagen ligeramente diferente a cada ojo.
2
El término “háptico” o “háptica” es la traducción al castellano del inglés “Haptics”, que se refiere a la ciencia que
estudia todo lo relativo al tacto y sus sensaciones como medio de control e interacción con máquinas y ordenadores.
3.1.1.1 Aplicaciones
En el año 1965 Ivan Sutherland escribe el artículo “The ultimate display” donde
introduce por primera vez el concepto de realidad virtual y describe un dispositivo de
visualización, el cual es un casco que se coloca en la cabeza (en inglés, “Head-Mounted Display”
(HMD)).
En general estos simuladores son instalaciones bastante costosas, que utilizan hardware
específico y modelos de comportamiento muy precisos. Este concepto, sin embargo, ha estado
El monitor.
Existen varios libros de RV, como por ejemplo (Burdea & Philippe Coiffet, 2003)
(Craig, Sherman, & Will, 2009) (Gutierrez, M.; Vexo, F.; Thalmann, D., Stepping into Virtual
Reality) (Kim, 2005) (Sherman, 2003).
Según la definición que aparece en una de las primeras publicaciones relevantes sobre
realidad aumentada, la cual debe ser de las más citadas, dice que “una aplicación de realidad
aumentada es una aplicación interactiva que combina la realidad con imágenes sintéticas 3D
registradas en tiempo real” (Azuma R. , 1997).
Una imagen fija aumentada con imágenes sintéticas (ya que no es interactiva).
3
La traducción de “see-through” significa “ver a través”, ya que las lentes dejan ver la realidad a diferencia de los
dispositivos de realidad virtual.
hand-held. Los dispositivos hand-held son los dispositivos de manos que incluyen a los actuales
smartphones, Tablet, etc.
3.1.2.1 Historia
El primer sistema de Realidad Aumentada fue creado por Ivan Sutherland en 1968,
empleando un casco de visión que permitía ver sencillos objetos 3D renderizados en tiempo real.
Empleaba dos sistemas de tracking para calcular el registro de la cámara; uno mecánico y otro
basado en ultrasonidos (como se ve en la figura a continuación). El mismo se encuentra explicado
en (Sutherland, 1968).
En el año 1992, los ingenieros Tom Caudell y David Mizell crean el término Realidad
Aumentada (RA) para describir una pantalla que usarían los técnicos electricistas de Boeing que
mezclaba gráficos virtuales con la realidad física, este sistema les permitiría aumentar la
eficiencia de las tareas realizadas por operarios humanos asociadas a la fabricación de aviones
(ver figura siguiente).
Figura 3-10 - Idea de anteojos "see through" creada por Caudell y Mizell
En 1998, el ingeniero de Sony Jun Rekimoto (Rekimoto, 1998) crea un método para
calcular completamente el tracking visual de la cámara (con 6 grados de libertad, este concepto se
Figura 3-12 - Matriz de código (izquierda: original, derecha: reconocida por la cámara)
para agregar nueva información en la imagen capturada por la cámara.” (Rekimoto, 1998). En
las imágenes a continuación se visualiza el resultado del método de Rekimoto.
Figura 3-14 - Patrón de marcas 2D Figura 3-15 - Patrón 2D con Realidad Aumentada
Un año más tarde en 1999, Kato y Billinghurst presentan ARToolKit (Kato &
Billinghurst, 1999), una librería de tracking visual de 6 grados de libertad que reconoce marcas
cuadradas mediante patrones de reconocimiento. Debido a su liberación bajo licencia GPL se
hace muy popular y es ampliamente utilizada en el ámbito de la Realidad Aumentada (ver figura
siguiente.
jugar en primera persona en escenarios reales. El registro se realizaba empleando una brújula
digital, un receptor de GPS y métodos de visión basados en marcas. Los jugadores debían llevar
un sistema de cómputo portátil en una mochila, un casco de visión estereoscópica y un mando de
dos botones.
4
PDA, del inglés personal digital assistant, asistente digital personal, es una computadora de bolsillo, organizador
personal o agenda electrónica de bolsillo que luego fueron sustituidos por los actuales dispositivos móviles
“smartphones”.
En 2008, Mobilizy crea Wikitude (la cual se ve en la figura anterior), una aplicación que
aumenta la información del mundo real con datos obtenidos de entradas de Wikipedia.
Originalmente sólo estaba disponible para teléfonos Android 8 , aunque actualmente puede
descargarse para otras plataformas (como iPhone entre otras).
5
Symbian es un sistema operativo propiedad de Nokia, que estaba en los dispositivos móviles de dicha marca
6
algoritmo que “deduce la estructura del ambiente y al mismo tiempo establece una correlación de la misma con la
posición y orientación de la cámara”, (Klein & Murray, 2007).
7
El mapeado de texturas establece cómo se sitúa la textura sobre el objeto al momento de proyectarse.
8
Es un sistema operativo basado en el kernel de Linux diseñado principalmente para dispositivos móviles con
pantalla táctil, como teléfonos inteligentes o tabletas, y también para relojes inteligentes, televisores y automóviles,
En 2009, SPRXmobile lanza al mercado una variante de Wikitude llamada Layar, que
utiliza el mismo mecanismo de registro que Wikitude (GPS más Brújula electrónica). Layar
define un sistema de capas que permite representar datos de diversas fuentes globales (como
Wikipedia o Twitter) además de servicios locales (como tiendas, estaciones de transporte público
o guías turísticas). En la actualidad Layar cuenta con más de 100 capas distintas de contenido.
El mismo año se presenta ARhrrrr! (ver imagen precedente), el primer juego con
contenido de alta calidad para smartphone con cámara. El teléfono utiliza la metáfora de ventana
virtual para mostrar un mapa 3D donde disparar a zombies y facilitar la salida a los humanos que
están atrapados en él. El videojuego emplea de forma intensiva la GPU 9 del teléfono delegando
en la tarjeta todos los cálculos salvo el tracking basado en características naturales, que se realiza
en la CPU.
inicialmente desarrollado por Android Inc., que Google respaldó económicamente y más tarde compró esta empresa
en 2005.
9
La unidad de procesamiento gráfico es un coprocesador dedicado al procesamiento de gráficos para aligerar la
carga de trabajo del procesador central en aplicaciones como los videojuegos o aplicaciones 3D interactivas.
10
Es una consola de videojuegos portátil de Sony.
Así, la RA se sitúa entre medio de los entornos reales y los virtuales, encargándose de
construir y alinear objetos virtuales que se integran en un escenario real.
La diferencia principal entre Realidad Virtual y Realidad Aumentada es que por una
parte la RV implica inmersión del participante en un mundo totalmente virtual y por otra parte la
RA implica mantenerse en el mundo real con agregados virtuales.
La RV es ideal para:
La RA es ideal para:
La información virtual tiene que estar vinculada espacialmente al mundo real de manera
coherente, lo que se denomina registro de imágenes. Por esto, se necesita saber en todo momento
la posición del usuario, tracking, con respecto al mundo real.
Proyector.
Monitor.
3.3.1.1 Oclusión
La oclusión es una de las características más importante en los sistemas de RA, la cual
se conoce con el nombre oclusión ambiental, siendo la exposición de los objetos sintéticos
11
La traducción de “hand-held” significa “sostenido con la mano”.
generados por la computadora a la luz ambiental. La misma se resuelve con una técnica de
renderizado que sirve para calcular cuán expuesto se encuentra cada punto de un objeto sintético
en escena dada a la iluminación ambiental.
Las caras internas de un modelo complejo suelen tener una oclusión mayor, por lo cual
se ven más oscuras que las externas (cuanto mayor es la oclusión, más oscura serán). El valor de
la oclusión ambiental se calcula de manera diferente según el tipo de escena: en los paisajes
naturales, se estima qué porcentaje del cielo puede percibir cada punto; en escenarios interiores,
sólo los objetos que se encuentren a un cierto radio se toman en cuenta, y el origen de la luz
ambiental son las paredes.
Más adelante se hablará de los dispositivos oclusivos, los cuales resuelven el problema
de la oclusión, logrando que los objetos sintéticos generados por la computadora sean lo más real
posible.
Dispositivos de entrada.
o Para tracking.
Dispositivos de salida.
o Salida visual.
o Salida auditiva.
o Visualización del mundo virtual (en RV) o mixto (en RA) de acuerdo a la
posición y orientación del participante.
o Interactividad.
Controles físicos.
Las aplicaciones de RA que requieren más movilidad utilizan otro tipo de mecanismos
de entrada. Por ejemplo, las aplicaciones de RA basadas en dispositivos móviles como PDA o
teléfonos celulares suelen utilizan la pantalla táctil o el lápiz para dar entrada a comandos.
Las interfaces multimodales, es decir, las que combinan diferentes formas de dar entrada
a comandos, suelen ser las más utilizadas actualmente. En (Kölsch, Bane, Höllerer, & Turk,
2006) se analizan qué tipo de control o combinación de ellos (mediante dispositivos, mediante
habla y/o mediante gestos) resulta más adecuado según los parámetros que requiera el tipo de
tarea que se quiera realizar. Los mismos concluyen que en su aplicación:
3 grados dan la rotación (Rx, Ry, Rz) con respecto a los 3 ejes principales X, Y,
Z de un sistema de referencia.
En resumen, si un objeto se puede trasladar y rotar sobre cada uno de los ejes X, Y, Z
ese movimiento es denominado 6 DOF. Si un objeto solo se puede trasladar sobre los ejes X, Y, Z
12
Un trackball es un dispositivo apuntador estacionario compuesto por una bola incrustada en un receptáculo que
contiene sensores que detectan la rotación de la bola en uno o dos ejes. Se explicará más en detalle este dispositivo
en el capítulo 3.
entonces son 3 DOF, lo mismo pasa en el caso de que el objeto solo puede rotar sobre dichos
ejes.
Para realizar el seguimiento del usuario pueden usarse dispositivos específicos o puede
analizarse una imagen capturada de la realidad para deducir la posición del usuario en base a
elementos del entorno, lo que se denomina tracking basado en visión.
Según la aplicación, el tracking puede realizarse de distintas partes del cuerpo, las cuales
son:
Cabeza.
Ojos.
Mano y dedos.
Un objeto.
Dependiendo del tipo de aplicación será la precisión que se necesite para determinar la
posición del usuario y, en consecuencia, el tipo de tracking que se realice. Por ejemplo, en
aplicaciones de medicina el tracking puede resultar crítico y por tanto debe ser muy preciso.
EL tracking de ojos, “eye tracking” o seguimiento del ojo permite saber dónde dirige su
mirada una persona y la altura de los ojos.
Tipos de sistemas
Considerando que existirá por una parte un cierto sensor capaz de recolectar datos (por
ejemplo una cámara) y, por otra parte, una fuente emisora de los datos (por ejemplo un patrón),
pueden distinguirse tres tipos de sistemas de tracking según dónde se localicen las fuentes y
sensores:
Inside-in. Tanto los sensores como las fuentes están ubicados en el objeto en
movimiento.
Los dispositivos de tracking posen algún tipo de sensor para realizar el seguimiento del
objeto o participante. En la siguiente tabla se visualizan los principales tipos de sensores, como
así también las ventajas y desventajas entre ellos.
Óptico Outside-in, ya que los sensores Utiliza cámaras de video Necesita visión
externos, por ejemplo las u otros sensores de luz. directa y buena
cámaras, se posicionan en el No necesita cables. Con iluminación.
ambiente exterior para recolectar varias cámaras se puede
datos de fuentes localizadas en el obtener la posición 3D.
cuerpo (puntos reflectantes, por
ejemplo un patrón).
Inercial Utiliza instrumentos que pueden Son baratos. No precisan Pierden precisión a lo
detectar y medir cambios de punto de referencia. largo del tiempo.
fuerzas giroscópicas (aceleración Funcionan bien
e inclinación). combinados con otros
sistemas.
Los sistemas de realidad aumentada han de proporcionar información del mundo virtual
con respuestas:
Visuales.
Auditivas.
Táctiles.
Sus propiedades.
Salidas visuales
Móviles no oclusivos. Son del mismo tipo que los anteriores, pero no resuelven
el problema de la oclusión, como por ejemplo los dispositivos Hand-Held y las
lentes optical “see-through”.
Características
Número de canales. Los canales capturan ciertos datos del dispositivo, por
ejemplo una cámara de video a color posee tres canales, uno para cada color
primario.
Portabilidad.
Seguridad.
Costo.
La movilidad del usuario tiene un gran efecto en la inmersión mental y en la utilidad del
sistema. Los requisitos del entorno son las condiciones necesarias para una buena experiencia de
RV. Las imágenes proyectadas requieren que haya poca luz; las grandes pantallas estáticas
necesitan mucho espacio; y los dispositivos móviles trabajan mejor en lugares pequeños.
Monitor
Hand-Held
(Azuma R. , 1997) Resume las diferentes ventajas y desventajas entre los dispositivos
optical “see-through” (ópticos o sistemas ópticos) y video “see-through” (video o sistemas de
video). Por un lado, los dispositivos de video presentan la gran ventaja de la flexibilidad en la
composición o mezcla (blending13) del video real con el sintético. Un problema básico de los
sistemas ópticos es que los objetos virtuales no tapan completamente los objetos reales, esto
ocurre por la forma en que funcionan los combinadores ópticos que permiten luz del mundo real
y del virtual. Hacer un sistema óptico que selectivamente apague la luz del mundo real, aumenta
la complejidad del diseño. Los objetos virtuales aparecen semitransparentes y esto puede dañar la
ilusión de realidad, si se requiere. En contrastes, el sistema de video es más flexible en cómo
mezcla el mundo real y el virtual, ya que ambos están disponibles en forma digital. Se puede
componer pixel a pixel tomando o bien el mundo real o el virtual, o mezclándolos si se quiere
sensación de transparencia.
13
Se refiere a la mezcla o composición de los stream del video real con el video sintético.
Los sistemas ópticos ofrecen una vista instantánea del mundo real, pero una vista
retrasada del mundo virtual, y esta incoherencia temporal puede causar problemas. Otra de las
ventajas de los sistemas de video es que es posible retrasar el video del mundo real para coincidir
con el retraso del stream del mundo virtual.
Los sistemas de video limitan la resolución de lo que el usuario ve, tanto real como
virtual, a la resolución del dispositivo. Por otra parte, los sistemas ópticos también muestran los
gráficos con la resolución del dispositivo, pero el usuario ve la realidad sin degradarse.
Con respecto a la seguridad, los sistemas de video usados en RA son cascos HMD de
RV modificados. Si se corta la electricidad, el participante estará ciego y esta es una cuestión
concerniente a la seguridad en algunas aplicaciones. En contraste, utilizando un sistema óptico el
usuario tiene la vista del mundo real y por esto se considera más seguro.
Ambas tecnologías, óptica y video, tienen sus roles y la elección depende de los
requerimientos de la aplicación. En aplicaciones de reparación se usan generalmente los sistemas
ópticos, posiblemente por cuestiones de seguridad. Por otra parte, en aplicaciones médicas suelen
usarse los sistemas de video, probablemente por la flexibilidad en la mezcla del mundo real y
virtual y por las estrategias adicionales de registro de imágenes.
Salidas auditivas
Móviles (auriculares).
Con respecto al número de canales, si se tienen diferentes sonidos en cada oído se tiene
información sobre la procedencia del sonido. Se denomina sonido monofónico si se tiene la
misma señal en cada oído, mientras que sonido estereofónico implica diferentes señales para cada
oído.
El concepto de entorno del sonido hace alusión a la fuente de donde parece originarse el
sonido. La localización es la habilidad del cerebro para determinar la procedencia del sonido. La
espacialización es la habilidad tecnológica para hacer que el sonido parezca venir de un punto
determinado del espacio.
En relación a la oclusión puede decirse que los altavoces no pueden ocultar de una
manera efectiva los sonidos del mundo real, mientras que los auriculares cerrados son el mejor
mecanismo para experiencias en las que el participante únicamente debe oír sonidos del mundo
virtual.
Las cualidades logísticas de los dispositivos de salida auditiva son: la contaminación por
ruido, la movilidad del usuario, los requisitos del entorno, la portabilidad, la seguridad y el costo.
En cuanto a los requisitos del entorno, las salas cuadradas pueden ser un problema para
los altavoces. Los campos magnéticos de los altavoces y los auriculares pueden causar
interferencias con los sensores. Los sonidos altos pueden interferir con los dispositivos de
tracking de ultrasonidos.
Privados.
Salidas táctiles
Según los medios de interacción de los dispositivos de salida táctil se clasifican en:
Percepción táctil.
Las propiedades de los dispositivos de salida táctil son: pistas kinestéticas, pistas
táctiles, fidelidad, latencia, contacto, resolución, grados de libertad, refresco, forma y tamaño.
Las pistas kinestéticas se relacionan con los ángulos de las articulaciones, los músculos,
la tensión y resistencia. Las mismas ayudan a determinar la solidez, forma aproximada y fuerzas
físicas. Las pistas táctiles son receptores sensoriales en la piel: Existen mecanoreceptores (forma
y textura), termoreceptores (transferencia calor), electroreceptores (flujo de corriente) y
nociceptores (daño en los tejidos).
Con respecto al contacto, hay que indicar que los sensores de fuerza y resistencia
necesitan un punto de contacto. Pueden limitar tanto el movimiento del propio cuerpo del
participante, como el movimiento del participante respecto al mundo. Los grados de libertad
están asociados al tipo de movimiento que permiten: 6 DOF si el movimiento no está limitado; 1
DOF si permite abrir o cerrar un dedo; 2 DOF igual que el anterior más giro permitido; 3 DOF si
nos da la posición (x, y, z) de la punta del dedo.
Las cualidades logísticas de los dispositivos de salida táctil son: la movilidad del
usuario, los requisitos del entorno, la portabilidad, la seguridad y el costo.
Si se habla del costo de los dispositivos, hay que señalar que generalmente son muy
costosos. Existen excepciones que son los dispositivos utilizados para juegos como volantes con
fuerza, joysticks y controladores de juegos, los cuales pueden adquirirse a precios razonables.
En los últimos años, aparecieron una serie de nuevas aplicaciones que brindan
información al usuario de acuerdo a su posición geográfica obtenida vía GPS. Recientemente los
servicios basados en la localización se vincularon con el campo de realidad aumentada dando
lugar a la denominada realidad aumentada gravimétrica (Gravimetric AR). Utilizan tanto el GPS
y los sensores integrados para la localización de usuario, como también algoritmos de visión para
el tracking, reconocimiento y visualización de información sobre los objetos reales.
14
http://www.google.com/mobile/goggles.
Una aplicación de realidad aumentada tiene tres partes principales que son:
Tracking.
Recuperación de información.
Salida de información.
La
Figura 3-36 muestra un diagrama de las diferentes partes involucradas en una aplicación de
realidad aumentada visual:
Combinación del mundo virtual y la escena real. En los casos en los que
existe una visión directa del mundo real, la combinación se realiza directamente
en el ojo del participante. En otro caso, se realiza un video resultado de la escena
capturada y la escena sintética proyectada.
Los dispositivos de visualización influyen de cierta manera en las distintas partes de una
aplicación de realidad aumentada, lo cual se muestra a continuación:
15
Se denomina acelerómetro a cualquier instrumento destinado a medir aceleraciones.
Sistemas de referencia.
Transformaciones geométricas.
Transformación de proyección.
Para generar una imagen 2D a partir de un objeto 3D, convierte cada punto 3D del
objeto en un píxel de la imagen 2D. Este proceso puede expresarse matemáticamente.
16
El giroscopio, es un dispositivo mecánico que sirve para medir, mantener o cambiar la orientación en el espacio
de algún aparato o vehículo.
La cámara, captura la escena desde una cierta posición y orientación. Puede ser una
cámara real en caso de estar sacando una foto o puede ser una cámara sintética en caso de estar
visualizando un modelo virtual.
Las imágenes se forman mediante una proyección que transforma un punto 3D del
mundo a un punto 2D de la imagen. Cada punto Pn expresado en el sistema de coordenadas, se
proyecta según el modelo de la cámara y tiene su correspondiente en la imagen proyectada 2D.
Para más información sobre las transformaciones geométricas y de proyección, consultar la
siguiente bibliografía (Haller, Billinghurst, & Thomas, 2006).
Conocidas las matrices, se aplica el proceso descripto para computación gráfica para
generar la imagen sintética que se combinará con la escena real.
Este proceso se realiza en cada instante ya que la posición y orientación del usuario
pueden cambiar continuamente.
3.4.3 TRACKING
El tracking completo estima los 6 DOF, 3 DOF para las translaciones y 3 DOF para las
rotaciones sobre los ejes X, Y, Z.
Tracking híbrido.
Electromagnético.
Mecánico.
Óptico.
Ultrasónico.
Neuromuscular.
Inercial.
GPS
Sistema Electromagnético
Sistema Mecánico
Denominado Inside-in, ya que tanto los sensores como las fuentes están localizados en el
cuerpo. Trajes electromecánicos: los sensores son potenciómetros y las fuentes son las
articulaciones reales del cuerpo que presionan sobre ellos. Utilizado en algunas aplicaciones de
realidad virtual de ambiente controlado.
Es muy rápido y preciso, pero a la vez incómodo para el usuario y sus movimientos son
limitados.
Sistema Óptico
Los sistemas ópticos son llamados Outside-in: sensores externos (outside) para
recolectar datos de fuentes localizadas en el cuerpo (in). Sistemas basados en cámaras: las
cámaras son los sensores que capturan los marcadores reflectivos que actúan como fuentes. Se
usan para captura de movimiento para realizar animaciones.
Utiliza cámaras de video u otros sensores de luz para determinar la posición del usuario.
No necesita cables. Con varias cámaras se puede obtener la posición 3D. Necesita visión directa y
buena iluminación (ver Figura 3-41).
Sistema Ultrasónico
Sistema Inercial
Brújula digital: al igual que una brújula convencional brinda la orientación en un sistema
global (3 DOF). Las brújulas que se encuentran en los teléfonos móviles son denominadas
brújulas de estado sólido, generalmente construidas mediante sensores de campo magnético que
envían señales a un microprocesador.
Generalmente se combina con el GPS para obtener los 6 DOF del movimiento del
dispositivo. La ventaja con respecto al uso de sensores inerciales es que brindan un resultado con
error constante, el cual puede precalibrarse durante la instalación del sistema.
cámara utilizando técnicas de visión por computadora. Se trata de buscar en la imagen elementos
de la escena real que permitan deducir la posición y orientación de la cámara en relación a una
cierta referencia (o de forma equivalente la posición y orientación de los objetos en relación a la
cámara). Según la aplicación, puede tratarse de una cámara integrada al participante en
movimiento, o de una cámara fija en una escena con objetos en movimiento.
Flujo de trabajo
Pre-Procesamiento
Inicializaciones
Calibración de la Modelado de la
cámara escena virtual Procesamiento
Visualización de la
Procesamiento de
escena aumentada
cada cuadro
Estimación de la posición
y orientación de la Captura de cuadro de
cámara video
Figura 3-42 - Flujo de trabajo de una aplicación de RA con tracking basado en visión
Conocidos ciertos parámetros (como la distancia focal, la relación de aspecto del píxel,
el centro de la imagen) puede definirse la matriz de proyección a utilizar para la formación de la
imagen aumentada, de forma que la cámara virtual tenga las mismas características que la cámara
real. Además, mediante la calibración, puede conocerse la distorsión que realiza la cámara en las
imágenes y de esta forma poder realizar un procedimiento de anulación de la distorsión si así se
desea.
Dado que se quiere aumentar la escena real con objetos virtuales, se debe modelar
previamente una escena 2D o 3D utilizando algún editor gráfico 2D o 3D.
Existen diferentes estrategias usadas para tracking basado en visión, las cuales son:
Tracking de marcadores
Con el objetivo de evitar invadir una escena con marcadores, surgieron las técnicas de
tracking basado en características naturales, las cuales se basan en la localización de
características naturales de la escena como puntos, líneas, bordes o texturas.
Tanto el tracking basado en dispositivos físicos como el tracking basado en visión tienen
sus ventajas y desventajas:
A continuación, se presenta una tabla resumen con las diferentes alternativas de tracking
en aplicaciones de realidad aumentada.
Este gran crecimiento tecnológico y las mejores capacidades del nuevo hardware, le
permitió a la industria idealizar similitudes de capacidad de procesamiento de dichos dispositivos
con respecto al de las computadoras, con lo cual se empezaron a ver los dispositivos hand-held
como si fueran computadoras. Con esta nueva realidad, surgieron nuevas plataformas móviles,
como es el caso de Android, Windows Phone y IOS. Debido a esto, actualmente existen muchas
empresas generando contenido para dichas plataformas, dentro de las cuales se incluyeron
aplicaciones con RA, casi sin limitaciones en cuanto al hardware.
3.6 APLICACIONES
La importancia de la Realidad Aumentada queda patente con el enorme interés que ha
generado en los últimos años. Un indicador que puede ser significativo es la tendencia de
búsqueda en la web. Desde Junio de 2009 la búsqueda por “Augmented Reality” supera el
número de búsquedas realizadas con la cadena “Virtual Reality”.
Una de las principales causas del crecimiento del uso de la Realidad Aumentada es
debido a al avance tecnológico en el hardware de los distintos dispositivos analizados.
Capítulo 4
4.1.1 EL LÁPIZ
El lápiz tiene un fotodetector en la punta el cual que detecta la luz emitida desde el píxel
donde se posiciona sobre la pantalla. Al pulsar un botón, como está conectado al circuito de
barrido de la pantalla, se puede determinar las coordenadas de la pantalla sobre las que está
apoyado el lápiz cuando se detecta el refresco del píxel.
La primera ventaja del lápiz no es su habilidad para escribir, sino su habilidad para
apuntar, para manipular la interfaz sin necesidad de una superficie donde poner el dispositivo. El
lápiz permite movilidad y ésta abre nuevas perspectivas a la interacción con los ordenadores.
Cualquier usuario que recoge información mientras camina, por ejemplo, es un candidato para el
uso de ordenadores con lápiz. Lápiz, ratón, teclado y voz coexistirán en la computadora sin el
predominio de ninguno. El dispositivo se seleccionará basado en aplicaciones y preferencias
personales.
El lápiz produce una interrupción y la tinta digital aparecerá en el caso en que una región
en que una aplicación acepta le escritura, tal como un campo de datos, los drivers del dispositivo
de vídeo hacen aparecer la tinta digital en la pantalla. Por el contrario, si el lápiz toca un control
como un botón, que no espera escritura o comandos de gestos, no se genera tinta. En este caso la
aplicación reconoce al lápiz como un dispositivo apuntador.
Uno de los primeros ejemplos surgió en 1963, cuando se presentó por parte de
Sutherland su trabajo PhD en SketchPad. El mismo consistía en un lápiz luminoso (un
predecesor del mouse) que controla los objetos en la pantalla y, tal como lo hace el mouse, los
comandos de entrada eran mediante toques. Estos toques también usaban como entrada el lápiz
para utilizar comandos de acceso rápido, siendo este uno de los estilos de gestos más antiguo y
comúnmente usado.
Las pantallas táctiles pueden imitar interacciones similares a las del ya conocido mouse
y el lápiz mencionado anteriormente, pero sumaron algunos beneficios al permitir dichas
interacciones utilizando las manos y los dedos.
Los gestos típicos de este tipo de entradas, involucran movimiento de las manos o toques
para manipular objetos o ejecutar comandos.
Las hay de diferentes tipos, con matrices de haz de luz que el dedo interrumpe, por
cambios en las capacidades de una reja superpuesta en la pantalla o por reflexiones ultrasónicas.
El usuario indica exactamente el ítem que quiere apuntando con el dedo, por esto es un
dispositivo directo que no requiere una asociación para relacionarlos.
Las ventajas de las pantallas táctiles son, su gran facilidad de aprendizaje, el hecho de
que no requieran espacio adicional, y son durables.
Con respecto a sus desventajas, se aprecia que usar el dedo puede dejar marcas en la
pantalla, pero quizá el principal problema sea la poca precisión en determinadas tareas como el
dibujo.
Los sistemas multitáctiles son un conjunto de técnicas de interacción que permiten a uno
o más usuarios controlar aplicaciones gráficas con varios dedos/manos simultáneamente. Los
dispositivos multitáctiles permiten que la interacción con el usuario sea natural, intuitiva y
contextual, ya que con ellos se interactúa como se lo hace diariamente: con gestos.
Para que estos sistemas funcionen se necesita un hardware apropiado, que posea las
adecuadas características tecnológicas, físicas y de procesamiento de modo que permita la
detección simultánea de diferentes puntos de contacto, así como también, un software adecuado
para detectar y reconocer los gestos.
Si hablamos de hardware, hoy en día las tablets y los teléfonos inteligentes con pantalla
multitáctil son los dispositivos que han difundido enormemente la utilización de estas
tecnologías.
Por su tecnología, las pantallas capacitivas necesitan ser manejadas mediante el dedo o
un objeto que disponga de capacitancia. Por otro lado, pueden detectar varias pulsaciones
simultáneas o gestos, lo que permite diversas formas de actuar con ellas, aumentando su
capacidad para ser controladas. Las pulsaciones o gestos no requieren presión, basta con deslizar
el dedo para controlar la pantalla del dispositivo. Al ser utilizadas directamente con el dedo, sin
objetos intermedios, y no ser necesario ejercer ninguna presión, la experiencia para el usuario al
manejar este tipo de pantallas es más natural. La impresión es de rapidez, de inmediatez, siempre
que el sistema operativo y el programa que estemos manejando estén bien diseñados. También
tienen sus limitaciones. Tener que usar los dedos y no detectar la presión limitan las posibilidades
del software.
Las pantallas resistivas están formadas por varias capas. Cuando presionamos sobre la
pantalla, hay dos capas que entran en contacto, se produce un cambio en la corriente eléctrica y se
detecta la pulsación. Además de su precio, la mejor resistencia al polvo o al agua ha contribuido a
su popularidad. Sin embargo, el uso de múltiples capas hace que su brillo se reduzca en,
aproximadamente, un 25 por ciento. Pueden usarse con los dedos, y los objetos afilados pueden
rayarlas.
Las pantallas resistivas son de bajo costo, se activan con cualquier objeto por presión y
son mucho menos claras (brillosas) que las capacitivas.
Los dispositivos SAW se usan en componentes electrónicos para proporcionar una serie
de funciones diferentes, incluyendo líneas de retardo, filtros, y convertidores AC a DC.
Los dispositivos electrónicos que emplean SAW, utilizan normalmente uno o más
traductores interdigitales (micrófonos y parlantes) para convertir ondas acústicas en señales
eléctricas y viceversa mediante la explotación del efecto piezoeléctrico (polarización de cargas en
la superficie del material, producida por tensiones mecánicas) de ciertos materiales. Estos
dispositivos se fabrican mediante fotolitografía, el proceso utilizado en la fabricación de circuitos
integrados de silicio.
Los Filtros SAW son ahora utilizados en los teléfonos móviles, y ofrecen ventajas
significativas en el rendimiento, costo y tamaño sobre otras tecnologías de filtración, como
cristales de cuarzo, filtros LC, y los filtros de guía de ondas.
Muchas investigaciones se han hecho en los últimos 20 años en el área de los sensores
de ondas acústicas de superficie. La aplicación de estos sensores incluyen todas las áreas de
detección, los sensores SAW han tenido un éxito comercial relativamente modesto hasta la fecha,
pero son comúnmente disponibles en el mercado para algunas aplicaciones como las pantallas
táctiles (Centro de Artigo, 2012).
Estos dispositivos son durables, tienen una claridad óptica máxima, un alto costo y
pueden ser activadas con guantes, dedos u objetos suaves.
Las técnicas ópticas siguen un circuito de dos o más sensores situados alrededor de una
pantalla (habitualmente en las esquinas). Cuando el usuario toca sobre la pantalla, la sombra que
se provoca es captada por los sensores, los cuales triangulan la posición para reconocer las
coordenadas y de esta manera el usuario interactúa con dicha pantalla.
Las mismas se valen de un sensor óptico (habitualmente una cámara), fuentes de luz
infrarroja y un feedback (retroalimentación) visual con LCD o proyectores, para lograr su
objetivo.
Los infrarrojos (IR) son una parte del espectro de luz justo por encima de las longitudes
de onda visibles para los ojos, pero menores que las microondas (entre 700 y 1000 nanómetros).
La luz infrarroja permite ver los dedos y los objetos que se sitúan encima de la pantalla
sin que afecte a la proyección de las imágenes. Se necesita una fuente de luz infrarroja para
iluminar los objetos (por ejemplo LEDs infrarrojos). Las cámaras infrarrojas son costosas, pero
pueden utilizarse webcams si se elimina el filtro que incorporan.
El ejemplo de uso más claro de este tipo de técnicas son las mesas multitáctiles, la cuales
consisten en una mesa, con una pantalla (generalmente LCD) interactiva en su superficie y un
procesador y proyector debajo. El usuario con sus movimientos, puede interactuar con los objetos
en la pantalla y así realizar múltiples tareas, como ver y editar fotos, navegar por internet,
proyectar videos, etc.
A continuación se describirán las tecnologías que se pueden utilizar para aplicar estas
técnicas.
La reflexión interna total es un fenómeno que ocurre cuando la luz entra en un material,
procedente de otro, con un índice de refracción mayor, y a un ángulo de incidencia adecuado
(dependiendo de los índices de refracción de los dos materiales, el cual puede calcularse según la
ley de Snell). Cuando este fenómeno ocurre, no hay refracción y la luz se refleja en su totalidad.
La reflexión interna total frustrada se utiliza, además, en las fibras ópticas para conducir
la luz a través de la fibra sin pérdidas de energía. En una fibra óptica, el material interno tiene un
índice de refracción más grande que el material que lo rodea. El ángulo de la incidencia de la luz
es crítico para la base y su revestimiento, y es allí donde se produce una reflexión interna total
que preserva la energía transportada por la fibra.
La iluminación difusa puede ser frontal o trasera. Ambas técnicas se basan en los
mismos principios básicos: el contraste entre la imagen y los dedos que tocan la superficie. En la
frontal, la luz procede del ambiente y se coloca un difusor sobre la superficie. Cuando un objeto
la toca se crea una sombra que la cámara puede detectar.
En la trasera, una luz infrarroja se utiliza para iluminar la pantalla. Cuando un objeto toca la
superficie esta refleja más luz que el difusor, y la cámara detecta esa luz adicional. En este caso,
el principal problema es conseguir una iluminación homogénea en toda la superficie.
La técnica DSI es parecida a la técnica FTIR ya que una luz infrarroja se ubica un panel
de acrílico dirigido hacia adentro. Es un acrílico especial con pequeñas partículas dentro, que
actúan como muchos espejos pequeños, y se usan para distribuir la luz infrarroja. Cuando un
dedo toca el difusor, se ilumina por la luz infrarroja, y es detectado por una cámara infrarroja
ubicada debajo de la superficie.
A continuación se muestra una tabla comparativa entre las distintas técnicas ópticas que
se pueden utilizar para construir superficies multitáctiles, dando a conocer las ventajas y
desventajas de cada una de ellas.
Tabla 4-1 - Tabla donde se analizan ventajas y desventajas de cada una de las técnicas ópticas
FTIR No necesita una caja cerrada. Precisa una superficie “especial” para
garantizar el contacto.
(Reflexión Se puede controlar la presión.
Interna Total No puede reconocer objetos.
Con una superficie de silicona pueden
Frustrada
usarse punteros.
Sencillo de implementar.
Tiene más posibilidades de detectar falsos
No se necesita una matriz de LEDs. Los dedos pueden taparse entre sí.
Fácil de implementar.
No necesita caja.
Proyectores LCD
Los proyectores LCD (Liquid Crystal Display), son una matriz de puntos que se activan
y desactivan con la misma tecnología que una pantalla plana. Tienen tres paneles LCD separados
(RGB, a color) y la luz pasa por los paneles a través de los píxeles activados.
Ventajas
Son más eficientes (con los mismos vatios se obtienen imágenes más brillantes).
Muestran los colores más saturados (una imagen LCD es de mayor calidad).
Inconvenientes
Más voluminosos.
Proyector DLP
Ventajas
Los píxeles están mucho más cercanos, menos pixelación e imágenes más suaves
para el video.
Menos componentes.
Mayor duración.
Inconvenientes
Efecto “arcoíris”, flash momentáneo con los objetos brillantes que algunas
personas pueden ver (se ha pasado de 4 segmentos a 6 en la rueda de colores para
reducir este efecto).
Bolt en el año 1980, utilizó por primera vez sensores electrónicos como uno de los
primeros métodos para reconocer gestos con las manos y los brazos detectando el espacio, la
posición y orientación a través de sensores electromagnéticos. Estos sensores se colocaban en la
muñeca del usuario para detectar las coordenadas x, y, z del brazo mientras este se movía por el
espacio, de esa manera se detectaba un gesto para interactuar con una pantalla.
Más recientemente, Roy en 1994 y Osawa en el 2000, utilizaron sensores para detectar
movimientos en interfaces adaptativas, y así el usuario podía navegar a través de entornos
virtuales. Estos sensores son también utilizados en dispositivos que se pueden usar en el cuerpo,
tales como cascos, guantes, etc. Sin embargo, son caros, incómodos para usar y difíciles de
implementar para el uso diario.
Las interfaces que utilizan sólo gestos con las manos, con una sintaxis amplia de ellos
(es decir, que existe una fuerte conexión entre varios gestos que afectan el sentido general de lo
que se quiere transmitir), requieren un seguimiento preciso de la posición en la que se encuentran
las manos. Una de las técnicas más comunes es utilizar un guante que cuenta con varios sensores
que detectan y brindan la información de la posición en la cual se encuentra la mano, la
orientación de la misma y la posición de los dedos.
El primer guante con estas características que se lanzó al mercado fue el DataGlove, el
cual utilizaba cables de fibra óptica detrás de cada mano, cada cable tenía una pequeña grieta.
Entonces, la luz iluminaba el cable de manera tal que cuando los dedos estaban doblados la luz
salía a través de las grietas. De esta forma, midiendo la pérdida de luz, daba una lectura acertada
de la posición de la mano. La precisión del DataGlove podía medir cada curva con precisión de 5
a 10 grados, pero no así los movimientos hacia los costados de los dedos (sólo su flexión).
El Cyberglove fue otro de los guantes con similares características, sólo que utilizaba
medidores de tensión ubicados entre cada uno de los dedos, para medir la abducción de los
mismos (movimientos hacia los costados) y su flexión con mayor precisión.
Desde la aparición de estos dos guantes, se han diseñado varios dispositivos de entrada
basados en dichos guantes los cuales no serán descriptos en la presente.
llama entrenamiento) en línea de nuevos gestos. En estos casos los gestos son reconocidos
usando plantillas pre entrenadas, pero los guantes también pueden ser utilizados para identificar
gestos naturales o no entrenados (o sea, sin previo aprendizaje).
Si bien los guantes que se han implementado y que ya se han nombrado anteriormente
son muy precisos, son caros y molestos para el usuario cuando se utilizan por un largo período de
tiempo, por ende, en esos casos, pueden utilizarse las técnicas de visión por computadora (técnica
que se describirá más adelante) para el reconocimiento de gestos y superar dichas limitaciones.
Asimismo, los sistemas basados en visión resultan más naturales que los guantes, y son capaces
de lograr un excelente seguimiento del cuerpo y las manos, pero pierden precisión a la hora de
determinar su posición. Por supuesto que estos factores dependen del tipo de aplicación que se
pretende implementar.
Los dedos son difíciles de seguir cuando se ocultan unos a otros, o bien cuando
son ocultados por la mano.
Existen múltiples de estos dispositivos en el mercado, como por ejemplo los Z-Glove y
los DataGlove, y fueron uno de los primeros en implementar gestos. Estos guantes introdujeron
una detección detallada de cada dedo de manera individual y movimientos de la mano para
permitir gestos más complejos. El Z-Glove, por ejemplo, consiste en un guante de algodón el cual
posee sensores que pueden detectar la posición y orientación de los dedos, utilizando un
mecanismo de vibración para dar al usuario una retroalimentación táctil.
Los objetos son manipulables por los usuarios y tienen algún tipo de sensor que
permiten convertir su manipulación en gestos o acciones.
La manipulación de objetos mediante sensores es considerada como gestual, esto es, una
interfaz tangible donde los gestos son interpretados a través de la manipulación física de estos
objetos. Algunos investigadores consideran la manipulación de objetos como una entrada de un
gesto.
Figura 4-26 – Reactable: Instrumento musical electrónico dotado de una interfaz tangible e inspirado en los
sintetizadores modulares de los años 60.
Comunicaciones. Vía I/O, Ethernet, RS232 (la más estándar). (ETI Tudela)
Como la visión por computadora no es una técnica de entrada directa, no posee un gran
nivel de precisión cuando se quiere detectar movimientos complejos u objetos. Los objetos
pasivos se representan con un color más brilloso, y se utilizan para incrementar la visión, de todas
maneras, este problema de precisión es uno de los que se encuentran primeros en la lista de
investigación en el ámbito de la visión por computadora.
Son utilizados para la detección de presencia, movimiento y presión. Existe una amplia
variedad de dispositivos con sensores remotos que permiten la transmisión de campos eléctricos a
través de la habitación para la interpretación de los gestos. Pueden situarse en las pantallas para
captar el movimiento de los dedos.
También posee un sensor infrarrojo que se utiliza para detectar y convertir las señales
enviadas por la barra de sensores infrarrojos la cual está constituida por dos filas de 5 leds
infrarrojos que el Wii Remote usa para triangular la posición en pantalla.
Figura 4-30 – Wiimote utiliza la triangulación infrarroja (utilizando la barra de sensores y el sensor en el Wii
Remote) para determinar la posición y la transmite via Bluetooth
Los tres acelerómetros con los que viene equipado el control pueden detectar las
aceleraciones con respecto a los ejes de referencia. Además, posee sensores adicionales que le
permiten conocer los movimientos de rotación. A partir de la información obtenida, puede
calcularse la velocidad integrando las aceleraciones y la distancia recorrida por un nuevo proceso
de integración.
En resumen, el Wii Motion Plus es una expansión del Wii Remote original del Wii que
permite capturar movimientos complejos con una mayor precisión. El sensor del Wii Motion Plus
mejora las capacidades de capturar el movimiento del control Wii Remote, permitiendo que las
acciones se reflejen en la pantalla en un tiempo aproximado al real.
Figura 4-32 – Wii Remote + Wii Motion Plus. Accesorio con giroscopio agregado al Wii Remote.
Si bien el Wii Remote se puede conectar a la PC vía Bluetooth (siempre que la PC posea
dicha tecnología), Nintendo no ha lanzado un kit de desarrollo para que los programadores
puedan crear aplicaciones utilizando el Wii Remote. Sin embargo se han realizado proyectos
utilizando la tecnología Bluetooth e infrarrojo que posee, además de algunos frameworks no
oficiales.
Este proyecto está desarrollado por Johnny Chung Lee, en el cual se utiliza el Wii
Remote para rastrear lapiceras que tienen un LED infrarrojo en la punta (ya que el Wii Remote
puede rastrear las fuentes de rayos infrarrojos). Apuntando un Wiimote a una pantalla de
proyección o a la pantalla LCD, se puede crear pizarras interactivas de muy bajo costo. El Wii
Remote puede rastrear hasta 4 puntos, por lo cual puede reconocer hasta 4 lapiceras.
El lanzamiento de este dispositivo fue una gran revolución no sólo en el mundo de las
consolas y videojuegos, sino en la tecnología y en la forma de interacción usuario/maquina, ya
que logró impulsar el desarrollo de tecnologías que permitan al usuario interactuar naturalmente
mediante gestos con las máquinas. Hay que mencionar, al margen de ello, que es el dispositivo
que tiene la mayor cantidad de juegos soportados, ya que todos los juegos lanzados para la
consola se juegan con gestos.
Por otro lado, amplió la visión de los desarrolladores, diseñadores y empresarios al ver
que no se estaba tan lejos de lograr este tipo de interacción y ello fue clave para el lanzamiento de
dispositivos que mejoraron en gran medida lo que la Wii había logrado.
Para determinar qué movimientos realiza el usuario, el Move posee distintos tipos de
sensores inerciales. Los acelerómetros son utilizados para realizar un seguimiento de la posición,
la rotación y el cabeceo del control. A diferencia del Wiimote, el Move tiene un giroscopio para
determinar la orientación del mismo y un magnetómetro empleado para determinar el ángulo de
guiño (yaw).
Los controles del PlayStation Move utilizan una conexión inalámbrica vía Bluetooth, al
igual que sus anteriores controladores convencionales, y una batería que se carga mediante un
puerto Mini – USB. Se pueden utilizar hasta cuatro joystick de PlayStation Move al mismo
tiempo, los cuales cuentan con tres componentes:
Motion controller
Es el control principal del PlayStation Move. Como ya se dijo tiene forma alargada, una
esfera que se ilumina de diferentes colores en su extremo y la cámara PlayStation Eye que detecta
la posición de la esfera en el espacio. Además de ello combina un giroscopio, un acelerómetro y
un sensor magnético (una especie de compas que usa el magnetismo para determinar la
orientación del control) para el seguimiento del control en tres dimensiones.
Navigation controller
PlayStation Eye
La esfera luminosa en la punta del control, en conjunto con la cámara permite calcular la
posición en el espacio. La cámara busca la iluminación en la punta del joystick, y así obtiene la
posición de los ejes X e Y; luego, con el tamaño de la bola luminosa, puede deducir a qué
distancia está el control de la cámara, y de esta manera se obtiene el eje Z. Por supuesto que la
cámara necesita que dicha esfera lumínica esté frente a ella siempre. Si se aleja el control de la
misma por un lapso, necesitará una re calibración.
Figura 4-39 – Detección de Move: La cámara detecta, mediante la iluminación emitida por la esfera, la posición de
los ejes X e Y, y mediante el tamaño de la esfera respecto de la cámara la posición en el eje Z (mientras más chica,
más lejos está). Todos estos datos se envían a la consola PlayStation 3 mediante bluetooth
Hay que aclarar que también depende de la implementación y la manera en que esté
desarrollado el juego, en algunos la detección es menos precisa que en otros.
PlayStation Move no tiene un SDK oficial (Software Development Kit) para desarrollar
aplicaciones para PC. Pero existen frameworks, librerías y drivers que permiten obtener y
manipular los datos que genera la detección del Move.
PS Move API
Es una librería open source para Linux, Mac OS X y Windows para acceder al control
del Move vía Bluetooth y USB directamente desde la PC. Permite realizar aplicaciones para
utilizar el control como mouse o teclado de la computadora, apuntar la cámara hacia la pantalla y
utilizarla como un pizarrón interactivo, entre otras.
MoveFramework
En resumen, el PlayStation Move, no es ninguna revolución, sino que es una mejora del
desarrollo que lanzó Nintendo con la Wii, por supuesto que el Move está mucho mejor trabajado
y diseñado por haber salido 4 años más tarde.
Una de las contras del PlayStation Move, además de las ya mencionadas, es que no
exista un kit de desarrollo oficial para que los programadores puedan utilizar la tecnología de este
dispositivo en sus aplicaciones o proyectos que involucren interfaces gestuales.
En el marco del mercado inaugurado por Nintendo con la Wii, Microsoft lanzó
oficialmente el 4 de noviembre de 2010, su dispositivo de detección y reconocimiento de gestos
para los videojuegos de su consola Xbox 360 llamado Kinect.
Luego de su lanzamiento oficial, Kinect resultó ser una enorme revolución en el mundo
tecnológico, ya que, como se verá más adelante, no necesita de ningún control o joystick para el
reconocimiento. Además, es capaz de reconocer múltiples partes del cuerpo, la voz e incluso la
cara.
El dispositivo en sí es una barra de 23 centímetros con una pequeña base circular que
gira sobre sí misma, y fue diseñado para colocarse por encima o por debajo de la televisión o de
la pantalla donde se proyecte el video.
Kinect posee una cámara RGB (es decir, a color, con calidad VGA), un sensor de
profundidad (que consta de un proyector infrarrojo que ilumina al usuario y una cámara infrarroja
que detecta dicha iluminación), un micrófono de múltiples matrices y un procesador
personalizado que será el encargado de ejecutar el software patentado que es el que proporciona
Por otro lado, Microsoft lanzó un kit de desarrollo más un toolkit con herramientas que
posee ejemplos de código abierto para los desarrolladores. Eso provocó que el ámbito de Kinect
no solo se limite a ser un dispositivo para videojuegos, sino que su potencial se utilice en
medicina, deportes, educación, etc.
Tanto la tecnología hardware como software que posee Kinect se desarrollarán con
mayor profundidad y detalle en el siguiente capítulo.
DepthJS
Es una extensión para el navegador Chrome que permite utilizar el Kinect en lugar del
mouse para navegar entre las pestañas, realizar scrolling o hacer click en enlaces.
Permite a los usuarios parase frente a un probador de ropa virtual, seleccionar la ropa y
ver virtualmente cómo le queda la prenda.
Cirugía Remota
Un robot (llamado Da Vinci) de alta precisión permite que el médico pueda controlarlo
de una manera más intuitiva, sin perder precisión y con la posibilidad de hacerlo remotamente.
Figura 4-41 - Prueba de cirugía remota. En la imagen superior derecha se muestra el médico moviendo sus manos
frente a Kinect para manipular el robot.
Hay que decir que probablemente Kinect sea el dispositivo más novedoso que existe en
el mercado de la detección de movimiento, sobre todo porque es capaz de detectar múltiples
partes del cuerpo sin la ayuda de ningún control (como sí lo necesitan la Wii y el PlayStation
Move). La tecnología de que la aplicación detecte el movimiento del cuerpo y reproduzca el
mismo a la perfección, Kinect la hace realidad.
El Leap Motion es un dispositivo periférico con conectividad USB que está diseñado
para ser ubicado en un escritorio mirando hacia arriba. Utilizando dos cámaras infrarrojas y tres
leds, observa un amplia área a una distancia de aproximadamente un metro. Los leds generan un
patrón de puntos en 3D de luz infrarroja y las cámaras generan casi 300 frames por segundos de
datos, los cuales se transmiten a través del cable USB hacia la computadora, donde se analizan
por el software controlador de Leap Motion (el cual necesariamente debe estar instalado en la
PC) usando matemáticas complejas (no reveladas por la compañía desarrolladora) y se sintetiza la
posición en datos 3D comparando los frames en 2D que generaron las dos cámaras.
Existe una variedad amplia de aplicaciones en el “Airspace” de Leap, como por ejemplo
editores de imágenes, editores de video, programas para realizar modelos en 3D, videojuegos
(desde el famoso Fruit Ninja, hasta el poder jugar una partida de ajedrez contra un robot), una
bandeja de DJ e incluso el diario New York Times y la cadena Weather Channel tienen su
aplicación. Es decir que Leap Motion pueda abarcar y adaptarse a muchos ámbitos, por supuesto
que en algunos de ellos, y dependiendo de la aplicación, lo hará mejor que en otros.
Leap Axlr8r
Lotus
Sin embargo, hay que resaltar que el dispositivo solo se limita a reconocer la totalidad
del movimiento con las manos o cada uno de los dedos, es decir que sólo detectará los
movimientos que hagamos con dichas extremidades.
Esta cuestión la mejoró notablemente el PlayStation Move, que tiene una detección del
movimiento de la mano muy precisa y de rápida respuesta, como ya se dijo, es una versión muy
mejorada de la Wii.
Por otra parte, el Leap Motion detecta el movimiento de la mano e incluso de los dedos
de forma individual, un agregado que el resto de los dispositivos ya descriptos no posee. Además,
tiene una velocidad de respuesta a los movimientos excelente y no requiere tener en la mano
ningún control adicional (como si lo requieren la Wii y el Move).
Podemos concluir que en lo que respecta a la detección de las partes del cuerpo y del
movimiento, la Wii y el Move son muy similares, por una cuestión de tiempo de lanzamiento, el
Move saca ventaja en su rendimiento. El caso del Leap Motion hay que analizarlo desde otro
plano, ya que este dispositivo no surgió específicamente para ser utilizados en videojuegos, sino
que es más versátil, puede ser utilizado en aplicaciones interactivas de distinta índole o bien en el
manejo gestual de un sistema operativo. El Kinect por su lado, es el único que detecta
movimientos del cuerpo entero, y los reproduce casi a la perfección.
La tecnología que compone los dispositivos tiene mucho que ver con su precisión al
detectar el movimiento y tiempo de respuesta, es decir, con su rendimiento en general.
Por su lado, el Kinect, posee una cámara RGB (de calidad VGA), un motor en su base
que permite a la cámara realizar movimientos verticales de acuerdo a la necesidad, y un emisor
de luz infrarrojo con su respectiva cámara, que serán el que irradie de luz infrarroja al usuario y el
que se encarga de detectarlo, respectivamente. Hay que agregar que posee un arreglo de
micrófonos que permite el reconocimiento de voz.
El Leap Motion además de poseer una tecnología más moderna (dado que es el de más
reciente lanzamiento de los dispositivos analizados) compuesta por dos cámaras infrarrojas y tres
leds, posee un potente software detrás que permite que, con esos elementos tecnológicos más
complejos y algoritmos matemáticos, se puedan detectar y reproducir los movimientos de las
manos y los dedos con gran precisión y rendimiento.
Tabla 4-2 - Tabla comparativa que menciona los componentes tecnológicos que posee cada dispositivo
Componentes
Cámara IR Si No Si Si
Acelerómetro Si Si Si No
En este aspecto, Kinect y Leap Motion sacan una luz de ventaja con respecto al
PlayStation Move y a la Wii, ya que ambos poseen un kit de desarrollo (más conocido por sus
siglas en inglés SDK) oficial, lo que permite acceder a los datos que otorgan estos dispositivos, e
incluso brindan a la comunidad de desarrolladores ejemplos de cómo utilizarlos.
Botones y Si Si No No
controles
Cámara No Si Si No
Soporta No Si Si No
Realidad
Aumentada
Reconocimiento No Si Si No
de voz
Detección de Si Si Si Si
Manos
Detección de No No No Si
Dedos
Detección de No No Si No
resto del cuerpo
SDK oficial No No Si Si
En lo que respecta al software, de los dispositivos analizados, es uno de los pocos que
contiene una librería y un kit de desarrollo oficial bien documentado, e incluso ejemplificado.
Capítulo 5
5 KINECT
Este capítulo tiene como objetivo conocer y analizar la tecnología subyacente detrás del
dispositivo Kinect desarrollado por la empresa Microsoft y cuyos componentes permiten integrar
tanto gestos como Realidad Aumentada en sus aplicaciones. Se investigará acerca del
funcionamiento de las cámaras, tanto la infrarroja utilizada como sensor de profundidad, como la
cámara a color (RGB). También se describirá el arreglo de micrófonos para el reconocimiento de
voz que posee y se explicarán diferentes librerías disponibles a nivel de software que son
utilizadas para desarrollar aplicaciones con Kinect.
5.1 HISTORIA
La empresa Microsoft, mediante su departamento de investigaciones llamado Microsoft
Research, afirmó que la tecnología del dispositivo Kinect costó unos veinte años de desarrollo.
Kinect se anunció por primera vez en la EEE (Electronic Entertainment Expo) en el año 2009
bajo el nombre “Project Natal” (Proyecto Natal), incluso se pudo ver un video promocional
donde se veía cómo los usuarios interactuaban con los videojuegos sin la necesidad de ningún
control, joystick o accesorio adicional.
5.2 HARDWARE
Como ya se señaló en el capítulo anterior, Kinect permite reconocer hasta cuatro
usuarios ubicados frente al sensor de cuerpo entero y reproducir sus movimientos en un
videojuego o aplicación. Para esto utiliza sensores de profundidad y una cámara RGB. Además
posee cuatro micrófonos conectados en línea, que permiten reconocer la voz y ejecutar órdenes
que envía el usuario al hablar.
Antes de describir los componentes anteriormente mencionados, hay que agregar que el
sensor Kinect posee un conector USB para su interacción con la consola Xbox 360 o bien con la
computadora.
capturar los datos de profundidad. Este proyector, es un emisor laser que proyecta un patrón
estructurado de puntos infrarrojos en una onda de alrededor de 830 nanómetros (patentado por
Prime Sense Ltd., empresa que colaboró con Microsoft en el desarrollo de Kinect). El haz de luz
es invisible al ojo humano, en el emisor sólo se puede ver una luz roja en el centro.
El emisor proyecta un patrón infrarrojo, este patrón está compuesto por subpatrones de
3x3 de 211x165 puntos (un total de 633 x 495 puntos). En cada uno de estos patrones un
cuadrado es más brilloso que el resto.
Cuando este cuadrado brilloso queda encima de un objeto, el patrón se distorsiona, esta
distorsión es analizada por la cámara de profundidad para lograr estimar la distancia entre el
sensor y dicho objeto.
Los datos de profundidad que devuelve esta cámara son las coordenadas en 3D (ejes x,
y, z) de la escena en forma de stream (flujo de datos). El sensor captura la luz estructurada
emitida por el emisor IR y la luz reflejada de los objetos en la escena. Todos estos datos son
convertidos en un flujo de datos de frames (cuadros). Cada frame es procesado por un chip que es
el que produce la salida del flujo de frames. La resolución de dicha salida es de 640 x 480 pixeles
y cada pixel, de 11 bits, puede representar 2048 niveles de profundidad.
En otras palabras, la forma en que Kinect logra generar un mapa de profundidad es: en
primer lugar, el proyector infrarrojo transmite un patrón de rayos IR invisibles convirtiendo todo
en pequeños puntos infrarrojos invisibles. Este patrón es percibido por la cámara infrarroja luego
de iluminar los objetos y/o personas que se encuentran en la escena. A causa de dicha
iluminación el patrón se modifica.
A partir de las distorsiones percibidas es que Kinect calcula la distancia del sensor a los
objetos y genera la imagen de profundidad.
La cámara a color (RGB) de Kinect, es similar a una cámara web a color, pero, a
diferencia de una webcam común, esta no posee un filtro que bloquea los rayos infrarrojos. Dicha
cámara admite una resolución de 1280x960 pixeles con una velocidad de 12 imágenes por
segundo. Puede alcanzar un promedio de 30 imágenes por segundo a una resolución de 640x480.
Además, reduce el parpadeo de colores, realiza operaciones de saturación del color, y el balanceo
de blancos automático. Estos datos son utilizados para obtener los detalles de las personas y
objetos que se encuentran en la escena.
cuenta con algoritmos para sacar el mejor provecho de la información que recibe, para así poder
renderizar en tiempo real las imágenes generadas en tres dimensiones.
Las cámaras del Kinect tienen un campo de visión horizontal de 57,5 grados y un campo
de visión vertical de 43,5 grados. Es posible incrementar el espacio de interacción ajustando la
inclinación vertical del sensor en + 27 o -27 grados. El motor puede cambiar el ángulo de la parte
superior del Kinect moviéndolo hacia arriba o hacia abajo.
El arreglo de micrófonos que posee Kinect, consiste en cuatro micrófonos que están
ubicados en línea en la parte inferior del dispositivo junto con un conversor analógico digital
(ADC). El audio capturado es codificado usando modulación por impulsos codificados (MIC)
con un rango de 16 KHz y una profundidad de 16-bit. La mayor ventaja de la configuración que
poseen los micrófonos es la supresión del ruido, una cancelación del eco acústico (AEC), y la
capacidad de determinar la localización y la dirección de la fuente del audio.
El dispositivo utiliza los micrófonos para determinar de qué lado de la habitación viene
una voz en particular.
Desde el punto de vista del control a nivel de aplicación, cuando se sabe de qué lugar
viene la voz (utilizando el sensor de distancia) se pueden dirigir los micrófonos hacia ese lugar, y
sobre todo crear una versión en software de los micrófonos direccionales que están físicamente
apuntando hacia los usuarios para grabar sus voces cuando, por ejemplo, se filma un video.
Mientras transcurre el juego, para reconocer en tiempo real la posición del cuerpo del
usuario (o los usuarios), el algoritmo identifica las partes del cuerpo con pixeles de colores (esto
es lo que le llaman etiquetar las partes del cuerpo o labels). En tiempo real, utilizando solamente
tres imágenes, se interpolan esos puntos marcados y se elabora la posible posición del cuerpo en
base al modelo generado anteriormente. Lo sorprendente es que la GPU (Unidad de
Procesamiento Gráfico) de la consola Xbox 360 puede ejecutar este algoritmo a una velocidad de
200 frames por segundo para determinar la posición del cuerpo.
Es claro que Kinect posee una tecnología a nivel de hardware muy completa y de varios
elementos útiles, pero como se ha dejado en evidencia en el punto anterior, debe tener un potente
motor de software debajo para poder controlar todas las funciones novedosas que permiten los
distintos dispositivos físicos que se han mencionado y que forman parte del hardware de Kinect.
Por eso, a continuación, se detallarán algunas de las librerías de software que existen
para programar con Kinect, incluyendo el SDK oficial que lanzó Microsoft para poder usar y
desarrollar aplicaciones para Kinect en Windows.
explicando algunas herramientas y kits de desarrollo que permiten programar aplicaciones para
Kinect. Algunos de ellos se explicarán con más detalle en el capítulo siguiente.
Los drivers de Kinect. Los drivers para el sistema operativo Windows para el
dispositivo, los cuales vienen incluidos junto con el SDK.
Los componentes de audio y video. Están definidos por aplicaciones NUI para
la detección del esqueleto, audio e imágenes de profundidad y a color.
DirectX Media Object (DMO). Para las funciones del arreglo de micrófonos.
Placa de video compatible con Windows 7 que soporte Microsoft DirectX 9.0.
Para programar con el SDK de Kinect para Windows se recomienda utilizar Visual
Studio 2010 Express o superior, u otras versiones de Visual Studio (no anteriores al 2010). Se
necesitará tener DirectX 9.0 (o superior) instalado, las versiones anteriores no son compatibles.
Además, por supuesto, se debe instalar el SDK de Kinect para Windows (ahora en su versión
1.8), el cual también se encargará de instalar los drivers para Kinect y el Microsoft Kinect
Toolkit, el cual, entre otras herramientas, contiene códigos de ejemplo. Las características de este
Toolkit se analizarán más adelante en este capítulo. Cabe destacar que dicho SDK permite
programar en los lenguajes C++, C# y Visual Basic (la suite de .Net).
Microsoft Visual Studio 2010 Express u otra versión de Visual Studio 2010 o
superior.
Con el SDK se pueden personalizar las opciones de la cámara para optimizar y adaptar
la misma dependiendo del entorno (cuando se necesita trabajar con poca o mucha luz, adaptar el
contraste, etc). Para manejar esto se utiliza la clase Microsoft.Kinect.ColorCameraSettings.
Los datos proporcionados por el flujo de profundidad son útiles tanto para computar el
movimiento de la persona y la persona en sí, como también para identificar los objetos que se
deben ignorar.
Datos segmentados del jugador. Estos datos están dados por la propiedad
Microsoft.Kinect.DepthImagePixel.PlayerIndex, que identifica al jugador
detectado en la escena.
Kinect procesa en tiempo real los datos de profundidad para identificar las figuras
humanas en un mapa segmentado. El mapa segmentado es un mapa de bits de
Por defecto, Kinect detecta la entrada de audio de mayor volumen. Dicho esto, se puede
configurar el arreglo de micrófonos desde la programación (dirigirlos hacia una dirección
específica, que se direccionen hacia un esqueleto que se ha detectado, etc.)
El componente principal usado por Kinect para procesar el flujo de audio es el DirectX
Media Object (DMO).
5.3.1.6 Esqueleto
“modo sentado”, en el cual se utiliza solo la mitad superior del cuerpo. Cada uno de los puntos
en ambos modos representa una articulación o parte del cuerpo humano.
Gracias a la cámara IR (de profundidad), Kinect puede reconocer hasta seis personas en
su campo de visión. De todas ellas, solo cuatro pueden ser detectadas en detalle (es decir, con 20
puntos del cuerpo humano).
Esta herramienta se recomienda descargarla e instalarla junto con el SDK de Kinect para
Windows, ya que posee códigos a modo de ejemplo actualizados con la versión del SDK actual
(para esto, cuando sale una versión nueva del SDK también es lanzada una nueva del Toolkit con
nuevos ejemplos). Entre algunos códigos de ejemplo que se pueden ver, incluyen aplicaciones
que reconocen y graban la voz, retiran el fondo del usuario causando el efecto de “pantalla verde”
utilizado en el cine, generan avatares en 3D, galerías multimedia interactivas, etc.
Además, tiene algunas aplicaciones y librerías que pueden ser de gran utilidad para el
desarrollador, en este caso, se analizarán las más relevantes tales como el Kinect Studio y el SDK
para el “Face Tracking” (detección de caras).
USB 2.0.
2 GB de memoria RAM.
Sensor Kinect.
SDK para Kinect para Windows (la versión que coincida con la del Toolkit).
Kinect Studio
Kinect Studio es una herramienta que ayuda al usuario a grabar y luego reproducir los
flujos de datos de color y de profundidad generados por Kinect. Se utiliza esta herramienta para
leer y reproducir los flujos de datos y, de esta manera, permitir al desarrollador corregir errores
de funcionalidad (debug) en una aplicación, crear escenarios repetidos para realizar pruebas y
analizar el rendimiento de la misma.
Para que Kinect Studio reciba datos desde Kinect, se debe estar utilizando una
aplicación de Kinect para Windows que inicialice el sensor. Esto permite a Kinect Studio recibir
los flujos de datos de color y de profundidad. Solo una instancia de Kinect Studio puede estar
conectada a una aplicación corriendo a la vez. Cuando se ejecuta, se muestra una ventana de
conexión y se selecciona a qué aplicación de Kinect se quiere conectar.
El Kit de Desarrollo (SDK) para la detección de caras de Microsoft para Kinect, junto
con el SDK, permite al desarrollador crear aplicaciones que pueden detectar caras humanas en
tiempo real. Esta librería se encuentra en el Toolkit de Microsoft descripto precedentemente,
incluso en dicho Toolkit hay códigos de ejemplo para utilizar este Kit.
El motor del SDK para la detección de caras analiza la entrada de la cámara de Kinect,
deduce la posición de la cabeza y las expresiones faciales, y ambas informaciones están
disponibles para que el programador las utilice en una aplicación en tiempo real. Por ejemplo,
esta información puede ser usada para renderizar la cabeza de una persona detectada, y su
expresión facial para crear un avatar en un videojuego o en una aplicación de comunicación o
bien para controlar una interfaz natural de usuario (NUI).
Imágenes de entrada: Este SDK acepta las imágenes de las cámaras RGB y de
profundidad del Kinect como entrada. La calidad de la detección puede verse afectada por la
calidad de los frames de entrada (esto es, los cuadros más oscuros o difusos se detectarán peor
que los cuadros brillosos o claros).
Puntos en 2D.
Unidades de animación.
Figura 5-16 - Aplicación de demostración incluida en el Toolkit. Muestra modelado de la cara y las expresiones en
3D
Ya explicados los flujos de datos más importantes que otorga Kinect al desarrollador y
las clases y propiedades del SDK que permiten manipularlos e integrarlos en aplicaciones, se
puede decir que el SDK y los drivers incluidos en él, son los que permiten utilizar Kinect en su
máximo esplendor. Por supuesto que este fue lanzado por Microsoft que es la empresa
desarrolladora de Kinect, por ende tiene coherencia que sea el que mejor aprovecha las
cualidades del mismo.
Además de este kit, junto con los drivers, se puede descargar y utilizar de manera
gratuita (algo poco común en productos o aplicaciones lanzadas por Microsoft) un Toolkit que
brinda distintas aplicaciones sencillas de utilizar para visualizar y probar todas las posibilidades y
explotar el potencial de Kinect, tales como el reconocimiento de voz, la cámara de profundidad,
el reconocimiento del esqueleto, entre otras. Pero lo mejor de estas herramientas es que, en varias
de ellas, se puede acceder a su código y ejemplos, lo que permite al desarrollador familiarizarse
de una manera más práctica y gráfica con la programación de aplicaciones para Kinect.
OpenKinect es una comunidad abierta para personas interesadas en utilizar el Kinect con
la PC u otros dispositivos. Allí se trabaja en librerías de código abierto, las cuales son
compatibles con los sistemas operativos Windows, Linux y Mac.
La comunidad OpenKinect consta con más de 2000 miembros que aportan sus
conocimientos para el proyecto. El proyecto principal en que se trabaja allí es el software
libfreenect.
Este software consiste en drivers para Kinect que sirven para Linux, Mac y Windows, y
soporta las opciones de hardware del Kinect, tanto como los datos de las cámaras RBG y de
profundidad, motores, acelerómetro, LED y audio.
Además, posee compatibilidad para varios lenguajes mediante algunas librerías (también
llamadas wrappers), entre los más importantes se encuentran C, C++, C#, Python, Ruby, java,
etc.
El TedCas que tiene el objetivo de ayudar a los médicos nada más y nada menos que en
el quirófano.
Los doctores del Hospital Sunnybrook de Canadá, utilizan Kinect en la sala de cirugía
(junto con una pantalla o proyector) como controlador libre de manos para manipular radiografías
e imágenes, en lugar de tener que salir del área estéril que rodea al paciente para ponerlas
manualmente en un monitor o atril donde se puedan observar con claridad.
Aunque esto no parezca significativo, el proceso de esterilización del doctor puede durar
20 minutos antes de que éste pueda volver junto al paciente; a menudo, las cirugías pueden durar
una hora más que lo necesario por esta situación. En suma, el cirujano debe retener esos datos
que le dio la imagen cada vez que vuelve junto al paciente.
Con esta aplicación, los doctores simplemente pueden utilizar los gestos de sus manos
para hacer zoom sobre la radiografía, tomografía o imagen similar, o pasar a través de varias de
estas imágenes (TedCas, 2013)
Este proyecto es un probador de ropa con Kinect y Realidad Aumentada, el cual ya está
implementado, y consiste en no tener que ir al probador en un local de ropa cada vez que se
quiere probar una prenda. La tienda de moda Topshop instaló un sensor Kinect con una pantalla
que simula un espejo, pero con el agregado de que posee realidad aumentada, la cual, combinada
con la tecnología y funciones de Kinect, permite al usuario probarse prendas disponibles en el
local.
En las aulas de alrededor del mundo, los docentes que incorporan Kinect en sus planes
de estudios reportan mejoras tangibles en el compromiso y aprendizaje de sus alumnos.
En las escuelas públicas del Condado de Loudon, los profesores utilizan el videojuego
“Kinect Sports” como una ayuda para enseñar conceptos matemáticos como patrones aleatorios,
probabilidad y ángulos a través de los bolos.
Los alumnos de tercer año, utilizan el gadget de “Kinect Fun Labs Kinect Googley Eyes”
para dar una presentación de la lección aprendida, y los de cuarto año utilizan “Avatar Kinect”
para producir programas de televisión y comerciales para fortalecer sus habilidades literarias.
En particular, el Kinect v2 cumplirá las mismas funciones que su predecesor, pero con
tecnología mejorada, y ya sabiendo Microsoft que su dispositivo se utiliza para “algo más” que
videojuegos como se vio en el punto anterior.
El sensor Kinect v2, posee una cámara RGB que permite una resolución full HD
(1080p), y su fidelidad en los datos de profundidad ha mejorado considerablemente respecto de
su predecesor, evidenciando avances significativos en visualizar pequeños objetos de una manera
más clara.
Tabla 5-1 - Tabla que detalla características, beneficios y potenciales aplicaciones de ellos, del SDK 2.0 de Kinect
Soporte para Unity Pro Para más que solo juegos, Construir y publicar
Unity Pro ofrece prototipado aplicaciones utilizando
multiplataforma herramientas ya conocidas a
través de múltiples
plataformas.
Soporte para Windows Store Ahora se pueden crear Se pueden ver y vender las
(tienda de aplicaciones para aplicaciones para Windows aplicaciones realizadas para
dispositivos Microsoft) Store usando herramientas ya Kinect v2 en Windows Store.
conocidas, y ofrecerlas a una
mayor cantidad de
consumidores
Herramientas poderosas Kinect Studio otorga una Desarrollar sobre la marcha sin
grabación y reproducción la necesidad de tener el sensor
mejorada, y el constructor de Kinect. Crear gestos
gestos visuales permite a los personalizados que
desarrolladores construir sus decrementan el tiempo de
propios gestos que el sistema prototipado y pruebas.
reconoce y utiliza para escribir
el código utilizando la máquina
de aprendizaje, incrementando
la eficiencia de costo y
productividad.
Detección facial avanzada La resolución es 20 veces más Construir avatares que son más
grandes, permitiendo a la parecidos a la vida real.
aplicación crear una malla de
más de 1000 puntos para una
representación más precisa de
la cara de una persona
Soporte para aplicaciones El mejorado soporte para Por ejemplo, permitir que una
simultáneas múltiples aplicaciones permite aplicación de venta minorista y
acceder al mismo sensor de que una aplicación de
manera simultánea inteligencia de negocios
accedan al mismo tiempo al
sensor, podría lograr tener una
inteligencia de negocios en
tiempo real en el negocio
minorista.
Para más información acerca de Kinect v2, se puede consultar (Microsoft, 2014).
Capítulo 6
6 INTRODUCCIÓN AL DESARROLLO
En este capítulo se describirán, con más detalle, las herramientas que permiten
desarrollar aplicaciones con Kinect, como así también los entornos de desarrollo que se
complementan con las mismas, y librerías que son de utilidad para la programación con el
dispositivo. Por último, se especificará la justificación de la elección de algunas de ellas para el
desarrollo del caso de aplicación.
6.1 INTRODUCCIÓN
La computación basada en gestos, permite participar en actividades virtuales con el
movimiento y con gestos similares a los que se utilizarían en el mundo real, manipulando los
contenidos de manera intuitiva.
Las aplicaciones basadas en gestos mantienen en casi todos los casos una arquitectura en
común, la cual se muestra en el siguiente diagrama.
Aplicación
Wrapper
Framework
Drivers
general, como manejo de audio y video, gestión de memoria, hilos, entre otras. También le
permiten a los desarrolladores producir gráficos 2D y 3D.
El wrapper en este tipo de aplicaciones sirve para facilitar el uso de las funcionalidades
que brinda el framework, simplificando su uso para el programador.
A continuación se explicarán las librerías que fueron analizadas en cada una de las capas
de la arquitectura, para luego determinar y justificar la elección de cada una de ellas.
Cinder. Es una librería en C++ que brinda manejos avanzados con los objetos de
las interfaces gráficas de usuario.
6.4 WRAPPERS
6.4.1 SIMPLEOPENNI
sección 6.5.1 “OpenNI y NITE”). De todas maneras, no todas las funciones de OpenNI son
soportadas por SimpleOpenNI, está más orientado a otorgar un acceso más simple a las
funcionalidades de esta librería.
Hay que indicar que soporta los sistemas operativos Windows (32 y 64 bit), OSX (32 y
64 bit) y Linux64, y que es un proyecto open source. El aspecto negativo de este proyecto, es que
no existe mucha documentación sobre el mismo, si bien se pueden encontrar las funciones
existentes, pero sin demasiadas especificaciones. (SimpleOpenNI, 2013)
6.4.2 PIKYNECT
Kinect. Una de sus características más destacadas, es la de poder utilizarlo en conjunto con
PyGame (librería para desarrollar juegos en Python), para crear videojuegos o interfaces de
manera sencilla y rápida. Al integrarse con Visual Studio, se pueden explotar todas las funciones
de SDK de Kinect, logrando, en teoría, los mismos resultados que con C# y C++.
6.5 FRAMEWORK
OpenNI, permite comunicarse con los sensores de video y de profundidad, mientras que
proporciona un middleware llamado NITE, que sirve de puente entre el hardware del dispositivo
y las aplicaciones e interfaces del sistema operativo de la PC. La idea de la utilización de estas
herramientas, es facilitar el desarrollo de aplicaciones que funcionen con una interfaz natural,
utilizando gestos y movimientos corporales. Además de funcionar como middleware, NITE es el
encargado de los algoritmos de la detección de movimiento.
Con respecto a NITE, se puede decir que es el encargado de analizar y comprender los
datos obtenidos de la escena. Por ejemplo, recibe datos visuales como una imagen y retorna la
posición de la palma de la mano detectada en dicha imagen, o identifica ciertos gestos
predefinidos y alerta a la aplicación cuando los detecta.
6.5.1.2 Arquitectura
Como se ve en la figura anterior, OpenNI junto con NITE otorga a los desarrolladores
una opción más para el desarrollo de aplicaciones con distintos dispositivos de detección de
gestos.
6.5.1.3 Características
Análisis de la posición.
Figura 6-6 - Algunas de las funcionalidades implementadas por NITE. (Izquierda: Full Body Tracking. derecha:
Hand detection and Tracking)
El Kit de Desarrollo de Software (SDK) de Kinect para Windows, está formado por un
conjunto de librerías que permiten programar aplicaciones en distintas plataformas de Microsoft
utilizando como dispositivo de entrada el sensor Kinect. Gracias al SDK se pueden desarrollar
aplicaciones en C#, Visual Basic o C++, utilizando el entorno de programación Visual Studio
2010 o superior, en un sistema operativo Windows 7 o Windows 8.
El SKD es, en definitiva, una interfaz para interactuar con Kinect por medio de los
drivers del sistema, dicha librería incluye los drivers que son los que interactúan con el
dispositivo, mientras que el sistema operativo y la aplicación se comunican con el dispositivo
mediante el programa.
Como ya se mencionara en el capítulo anterior, el instalador del SDK trae consigo una
aplicación (llamada Windows Developer Toolkit) que contiene herramientas tales como el SDK
Face Tracking, que permite detectar la cara del usuario, y el Kinect Studio para grabar y
reproducir los flujos de datos de profundidad y color. Además brinda códigos de ejemplo para
ayudar de una manera más práctica al desarrollador.
La librería del SDK permite al desarrollador interactuar directamente con las cámaras, el
arreglo de micrófonos y el motor de Kinect. También se pueden desarrollar aplicaciones que
funcionan con reconocimiento de gestos y de voz. Algunas de las características más importantes
que permite el SDK son:
Para entender las funcionalidades de las diferentes librerías y saber cómo utilizarlas, se
pueden clasificar las mismas en dos categorías:
Por otro lado, las librerías de audio controlan el arreglo de micrófonos de Kinect y
ayudan a capturar el flujo de datos de audio, controlando la fuente del sonido, permitiendo el
reconocimiento de voz, etc.
Para empezar a codificar en VS, lo primero que se debe hacer es crear el proyecto y
añadir las sentencias using para poder permitir importar las librerías necesarias, en este caso, la
referencia anteriormente agregada al SDK. Entonces, se abre el archivo
MainWindow.xaml.cs desde el explorador de soluciones y se escribe la siguiente línea de
código en la parte superior del programa:
using Microsoft.Kinect;
En una aplicación para Kinect, cada dispositivo debe estar representado como una
instancia de la clase KinectSensor, ya que esta representará la tubería de datos completa del
sensor en tiempo de ejecución.
El objeto del sensor se define como cualquier otro objeto. Dicho objeto definido, solo
entrará en acción cuando se inicializa alguna de las operaciones específicas de Kinect, como el
flujo de datos de profundidad o color. Para definir dicho objeto, entonces, se procede de la
siguiente manera:
KinectSensor sensor;
El objeto (en este caso llamado sensor) necesita una referencia al dispositivo de Kinect
para poder utilizarse y ser instanciado, ya que este no posee un constructor público. El SDK
inicializa los objetos KinectSensor cuando detecta un dispositivo Kinect ligado al sistema.
this.sensor = KinectSensor.KinectSensors[0];
Una vez que se tiene el objeto para el Kinect, se debe invocar al método
KinectSensor.Start(), para encenderlo, en este caso sería:
this.sensor.Start();
Cuando se ha finalizado el trabajo con el sensor, se debería llamar al método Stop() para
inhabilitar la instancia del sensor. Por ejemplo:
this.sensor.Stop();
La clase KinectSensor tiene eventos específicos que permiten conectarse con los
flujos de datos de imagen a color, de profundidad y del esqueleto, como así también activar los
mismos.
Hay que aclarar que se puede habilitar el flujo de datos sólo después de haber encendido
el sensor mediante el método Start() como se muestra a continuación:
this.sensor = KinectSensor.KinectSensors[0];
this.StartSensor();
this.sensor.ColorStream.Enable();
this.sensor.DepthStream.Enable();
this.sensor.SkeletonStream.Enable();
El flujo de datos de imágenes de Kinect
Un flujo de datos, no es más que una sucesión de frames. Kinect puede obtener esos
frames con un promedio de entre 12 a 30 frames por segundo (fps). El fps varía según la
resolución y el tipo.
Los diferentes flujos son transferidos en diferentes tuberías, las cuales se deben activar
como se mostró anteriormente. El SDK soporta dos formatos de flujos de datos de imágenes:
flujo de datos de color (RGB) y de profundidad (Depth).
La librería ofrece una clase base llamada ImageStream que es una clase abstracta, y
la implementan tanto la clase de flujo de imagen a color, como la de profundidad.
Antes de especificar algunas características y las clases que se deben utilizar para
obtener los frames provenientes del flujo de datos de la imagen a color (Color o RGB Stream),
hay que señalar que Kinect permite obtener imágenes de 32 bits y 16 bits por pixel, en el flujo de
datos RGB, con los siguientes rangos de fps y resoluciones:
Los frames de la imagen a color son del tipo ColorImageFrame. Para obtenerlos, se
debe asociar el objeto a un manejador de eventos o solicitarle al sensor que envíe un frame, es
decir, existen dos formas de adquirir el frame de color, por eventos o por polling.
Utilizando este modelo, el sensor envía el frame a la aplicación cada vez que un frame
nuevo es capturado por el sensor. Para hacerlo, se necesita usar un manejador de eventos en el
lugar del código donde se quieren procesar los frames que se obtienen. Antes de asociar el
evento, se debe configurar el tipo de color y la resolución de los frames de entrada, una vez hecho
esto y asociado el evento, el sensor enviará los datos continuamente hasta que se desactive dicho
envío de datos, o se detenga el dispositivo.
El modelo por polling es conocido por ser un modelo bajo demanda, donde se necesita
enviar la solicitud al sensor si se necesita obtener un frame. Para este modelo, se debe definir el
intervalo de tiempo que transcurrirá entre cada obtención de frame.
Capturar los frames de la imagen a color y mostrarlo en la aplicación, puede implicar los
siguientes pasos:
Lo primero que se debe hacer es iniciar el sensor con el método start(), y habilitar el
flujo de datos a color con el método Enable() perteneciente a la clase ColorImageStream,
esto se logra de la siguiente manera:
this.sensor.ColorStream.Enable()
Por defecto la función Enable() no acepta argumentos y habilita el flujo de datos con
una resolución RgbResolution640x480Fps30, la cual es una de las opciones de resolución
en el tipo ColorImageFormat.
RgbResolution640x480Fps30.
RgbResolution1280x960Fps12.
YuvResolution640x480Fps15.
RawYuvResolution640x480Fps15.
InfraredResolution640x480Fps30.
RawBayerResolution640x480Fps30.
RawBayerResolution1280x960Fps12.
Undefined.
this.sensor.ColorFrameReady += sensor_ColorFrameReady;
Cada vez que Kinect envía un nuevo frame, se invoca el manejador, y en el primer paso,
se lee el ColorImageFrame, que retorna el frame del tipo devuelto por el método
OpenColorImageFrame().
Por último, se crea una fuente de imagen en formato de mapa de bits (Bitmap) con la
imagen del frame y se asigna el mismo al control de la imagen.
Figura 6-12 – Esquema que grafica la representación de los datos de un pixel de profundidad
640x480.
320x240.
80x60.
En el capítulo anterior se describió la manera en que Kinect logra capturar estos datos e
informaciones sobre la profundidad de la escena. Por lo tanto, a continuación, y al igual que
como se lo hizo en la sección anterior con el flujo de datos a color, se describirá a nivel de código
la manera de capturar y procesar el flujo de datos de profundidad.
Los pasos a seguir para capturar y procesar los datos de profundidad, son similares a los
que se enumeraron en la obtención de los datos a color:
this.sensor.DepthStream.Enable();
this.sensor.DepthStream.Enable(DepthImageFormat.Resolution320x24
0Fps30);
Sensor.DepthFrameReady+=newEventHandler
<DepthImageFrameReadyEventArgs> (sensor_DepthFrameReady);
void sensor_DepthFrameReady
Para obtener el frame de profundidad, se deben seguir pasos similares a los vistos
precedentemente en la recuperación de los frames a color. A continuación se ejemplifica cómo
debería quedar el contenido del manejador de eventos:
Al igual que los frames a color, los frames de profundidad tienen similares propiedades
para copiar los datos de los pixeles en el buffer, por ejemplo, CopyPixelDataTo() se utiliza
para copiar desde el arreglo de datos de un pixel al nuevo buffer. Antes de copiar dichos datos, se
calcula el tamaño del buffer utilizando la propiedad DepthImageFrame. Como el frame de
profundidad es una imagen de 16 bits en escala de grises, se debe especificar el PixelFormats
como Gray16, además de crear el mapeo de bits para el control de la imagen de profundidad
(Bitmap).
Detectar el esqueleto
En el capítulo anterior se vieron los algoritmos y la tecnología que utiliza Kinect para
detectar el esqueleto humano.
Figura 6-13 – Los puntos del cuerpo humano que detecta Kinect
Por lo tanto, en esta sección, se darán a conocer los conceptos básicos para manejar los
datos que genera el dispositivo y que el SDK brinda al desarrollador para crear aplicaciones
utilizando esta funcionalidad. Hay que recordar que puede detectar hasta 20 puntos o
articulaciones del cuerpo.
Los datos del esqueleto son devueltos por Kinect en la clase SkeletonStream. Para
configurar si la detección es la estándar (20 puntos del cuerpo) o en modo sentado, se utiliza
SkeletonTrackingMode cuando se inicializa el flujo de datos del esqueleto. El proceso de
obtener los datos del esqueleto, sigue la misma modalidad que en los flujos de datos a color y de
profundidad. El objeto KinectSensor tiene un evento llamado SkeletonFrameReady, el
cual se lanzará cada vez que los nuevos datos del esqueleto enviados por el sensor estén
disponibles. En este caso, cada frame del SkeletonStream produce un conjunto de objetos de la
clase Skeleton. Cada uno de estos objetos contiene, a su vez, los datos de una serie de puntos
(o articulaciones) Joint los cuales son agrupados en el objeto JointCollection.
Lo primero que se debería hacer es representar la mano (o cualquier punto del cuerpo)
en la interfaz de la aplicación. Para esto, en el archivo XAML de la aplicación, se debe
reemplazar la sentencia Grid, que está definida por defecto, por la sentencia Canvas, y añadir
un control llamado Ellipse, y por último ponerle un nombre al mismo, en este caso,
manoDerecha. El archivo debe quedar de la siguiente manera:
<Canvas>
</Canvas>
Por supuesto que se da por sentado que debe existir la instancia del sensor (explicada
más arriba) de la clase KinectSensor, e iniciar el mismo (método start()). Una vez que se
tiene la referencia al sensor, se debe habilitar el flujo de datos del esqueleto mediante la
propiedad SkeletonStream, con el método Enable(). Luego se debe asociar el evento para
dicho flujo de datos, el cual invocará al método sensor_SkeletonFrameReady()
automáticamente siempre que el dispositivo genere un nuevo frame del esqueleto, dichas líneas
de código se ejemplifican a continuación:
this.sensor.SkeletonStream.Enable();
this.sensor.SkeletonFrameReady += sensor_SkeletonFrameReady;
Cabe destacar que el procesamiento de los datos del esqueleto consume muchos recursos
y por eso es una buena práctica deshabilitarlo. Esto se logra utilizando el método Disable().
Como se dijo anteriormente, siempre que el sensor genere un frame del esqueleto, el
método sensor_SkeletonFrameReady() se invocará con el evento registrado
SkeletonFrameReady. Cuando dicho método sea invocado, el argumento del mismo será del tipo
SkeletonFrameReadyEventArgs, el cual tiene un método llamado
OpenSkeletonFrame() que lee el objeto SkeletonFrame del sensor.
Los pasos para obtener el frame son similares a los anteriormente vistos para los otros
flujos de datos (color y profundidad). El bloque de código del método debería quedar de la
siguiente manera:
if (primerEsqueleto == null)
{
return;
}
if ( primerEsqueleto.Joints[JointType.HandRight].TrackingState
==
JointTrackingState.Tracked)
{
this.MapearElementoEnUI(primerEsqueleto);
}
}
Hay que aclarar que el tamaño (seis), es para poder almacenar hasta seis esqueletos, tal
cual lo permite el sensor.
Para una mayor simplicidad, se considerarán los datos de un solo esqueleto. El método
busca los esqueletos que se han detectado (Tracked) y finalmente selecciona el primero del
arreglo. La variable primerEsqueleto almacenará los puntos de tal esqueleto.
El siguiente paso es mapear los puntos del esqueleto en la interfaz de la aplicación. Esto
es así porque permitirá, utilizando la información de cada frame, obtener el movimiento de dicho
punto del cuerpo (en este caso la mano derecha). Para hacerlo, se invoca el método
MapearElementoEnUI() desde el método sensor_SkeletonFrameReady().
this.MapearElementoEnUI(primerEsqueleto);
Otro aspecto de la detección del esqueleto es el mapeo y escalado del mismo para
representarlo en pantalla. El método MapearElementoEnUI() recibe los detalles del
esqueleto, esto es, la posición de los puntos del mismo en el espacio. En el siguiente ejemplo, se
mapea la elipse (definida anteriormente) y los puntos del esqueleto. Como ya se aclaró, se usará
como ejemplo la mano derecha, entonces, para este caso, se utilizará el punto
JointType.Handright:
En función de la imagen anterior, que evidenciado que las dos son igualmente útiles y
potentes, solo que depende de las necesidades del programador el usar una o la otra:
6.6 DRIVERS
Como ya se mencionó en el presente capítulo, existen los drivers oficiales de Kinect
brindados por Microsoft, y los no oficiales generados por las distintas comunidades que
desarrollan aplicaciones con Kinect.
En cuanto a los lenguajes de programación y las plataformas, se puede decir que existen
diversas opciones de lenguajes para programar en Kinect. En ese aspecto depende de la experticia
del programador en cada uno de ellos. Con respecto a las plataformas soportadas, se analizó la
viabilidad de realizar el “caso de aplicación” en Linux, descartando Mac ya que no se dispone
con el hardware necesario. Sobre Linux se probó el driver no oficial “libfreenect” en conjunto
con OpenNI, NITE y Processing. Se lograron las siguientes funcionalidades:
Detección de voz.
Como último detalle de las pruebas realizadas sobre Linux, la instalación, configuración
y uso de todas las herramientas analizadas, no están casi documentadas, lo cual contrasta con lo
que esta plataforma otorga a su comunidad de desarrolladores, como así también, muchas de ellas
están en versiones beta. Esto seguramente se debe a que es una tecnología bastante nueva, para lo
cual la comunidad de Linux necesita tiempo para generar dichos contenidos.
Todas las pruebas también se realizaron con el SDK de Kinect, bajo la plataforma
Windows, las cuales fueron exitosas.
Por otro lado, la documentación y las actualizaciones que poseen estas tres herramientas
(sobre todo el SDK) son de gran utilidad, permiten de un rápido aprendizaje y se dispone de un
lugar específico para evacuar dudas a la hora del desarrollo. Además, la librería Kinect Toolbox
al ser de código abierto, permite modificaciones para adaptarla a los requerimientos de la
aplicación e integrarla con nuevas versiones del SDK (por ejemplo, la 1.8).
Capítulo 7
7 CASO DE APLICACIÓN
En el presente capítulo se describirá el caso de aplicación propuesto, la manera en la
cual fue desarrollado, los objetivos y la lógica del mismo. Como así también su arquitectura y la
manera en que debe ser utilizada la aplicación.
7.1.1 OBJETIVO
Dicho objetivo fue propuesto como una idea general, el cual, luego de la investigación
realizada para el desarrollo de la tesina, se puede replantear como:
7.1.2 RESUMEN
El medico graba una sesión que corresponde a una serie de ejercicios que el paciente
debe realizar diariamente. Antes de iniciar la grabación del ejercicio, el médico debe selecciona
con que parte del cuerpo va a realizar el mismo, las cuales pueden ser:
Cabeza.
Cuando se está grabando un ejercicio, se graban tanto los datos propios del gesto como
así también el video capturado por la cámara. El médico ingresa en la aplicación la cantidad de
repeticiones que el paciente debe realizar del gesto mencionado. Luego, el paciente visualiza en
la aplicación el video demostrativo de cómo tiene que hacer el ejercicio, para finalmente intentar
realizarlo. Cada vez que realice un ejercicio correctamente, la aplicación le dirá si debe repetir el
gesto (ejercicio) en el caso de que el médico así lo haya indicado, o si no la aplicación continuará
con el siguiente ejercicio. Una vez que el paciente realizó correctamente todos los ejercicios,
finaliza la sesión.
Se entrevistaron dos médicos clínicos para relevar información específica del campo de
aplicación y así poder plantear el problema a resolver. Considerando dichas entrevistas, junto con
la investigación realizada, se concluyó desarrollar lo siguiente:
“El presente caso de aplicación tiene como objetivo permitir a las personas que han
sufrido ACV (Accidentes Cerebro Vasculares) rehabilitarse en su casa de una manera
interactiva, pero conservando las pautas dadas por un especialista. Ello se logrará mediante una
aplicación la cual se compone de los conceptos ya vistos en la presente tesina, esto es, Interfaces
Gestuales, Realidad Aumentada y el dispositivo Kinect”.
7.1.3.2 Tratamiento
Para enfrentarse con esta patología, junto con el tratamiento médico, la rehabilitación ha
demostrado ser una parte importante para ayudar a la recuperación del paciente. Aunque puede
ocurrir que al finalizar el periodo de rehabilitación, los enfermos permanezcan estabilizados con
algunos déficit. Pudiendo, de esta manera, persistir una pérdida de fuerza en un miembro
superior, que puede dificultar la movilidad y manipulación con el mismo; o afectar al miembro
inferior, o incluso quedar paralizado, dificultándole o impidiéndole caminar normalmente. El
paciente y su familia deben afrontar esta situación en su domicilio para reintegrarse dentro de sus
posibilidades a una vida activa. En otras palabras, el paciente debe “volver a aprender a manejar
su cuerpo”, en especial los miembros que fueron afectados. (Cáceres, 2007)
Por otra parte, los ejercicios recomendados para lograr este objetivo, deben ser suaves y
repetitivos, en algunos pacientes se requiere de la ayuda de una persona, que generalmente, es un
especialista.
7.1.3.3 Fundamentación
Hay que destacar que dichos tratamientos y la visita que los especialistas realizan a los
hogares con el fin de rehabilitar al paciente, son pagos (y caros), y en la mayoría de los casos las
obras sociales no suelen cubrir estos gastos.
Como ya se mencionó, el objetivo es brindar una herramienta para que los pacientes
tengan una rehabilitación interactiva y que dependan en menor medida de dichos especialistas.
Para lograrlo, se utilizará el dispositivo Kinect que reúne las características requeridas
para cumplir dicho objetivo. Además, la aplicación otorgará al médico la posibilidad de grabar
una sesión de ejercicios específicos para que un determinado paciente pueda repetirlos en su
domicilio con el seguimiento de un especialista, y mediante la combinación de la aplicación y el
sensor mencionado, se le indicará cuántas veces debe realizar un determinado ejercicio, si se ha
realizado correctamente, o bien, si todos los ejercicios de la sesión fueron realizados con éxito.
La aplicación tiene como objetivo motivar al paciente a realizar los ejercicios, mediante
su novedosa capacidad de interacción mediante gestos, movimientos del brazo, y la utilización de
palabras como comandos de voz.
Además, esta aplicación cumple con el requisito fundamental que indica el tratamiento:
“Los ejercicios recomendados en el tratamiento del ACV, deben ser suaves y repetitivos,
indicados y monitoreados por un especialista”.
El hecho de que su propio médico pueda determinar los ejercicios que debe realizar y la
cantidad de veces que debe repetir cada uno de ellos, da una mayor seguridad al paciente de que
es capaz de completar la sesión de ejercicios que éste le otorgo de manera personal. Esto es
porque el médico conoce las capacidades motrices de su paciente, y sabe el grado de afectación
que le provocó el ACV.
7.3 DISEÑO
7.3.1 ARQUITECTURA
Para lograr mediante un dispositivo Kinect llegar a una aplicación que detecte y grabe
gestos, sea controlada por comandos de voz y elementos de Realidad Aumentada entre otras
cosas, son necesarias muchas herramientas y componentes en el medio.
Capas Herramientas
7.3.1.1 Drivers
Los drivers utilizados para comunicar Kinect con el sistema operativo y el framework
que se explicará a continuación, son los drivers oficiales lanzados por Microsoft. Ello así porque
permiten una completa compatibilidad con las herramientas seleccionadas en el resto de las capas
de la arquitectura, y una inmejorable utilización de todas las capacidades de Kinect.
7.3.1.2 Framework
El framework es la de las capa más importante de la arquitectura, ya que define las API
para escribir las aplicaciones. Para el desarrollo del caso de aplicación, se optó por utilizar el
SDK de Microsoft (en su versión 1.8), el cual, entre otras funciones, permite utilizar comandos de
voz para interactuar con la aplicación.
7.3.1.3 Wrapper
Para facilitar el uso de las funcionalidades que brinda el SDK antes mencionado, se
utilizó Kinect Toolbox, el cual simplifica la utilización de varias funciones que provee dicho
framework.. Además, el hecho de que sea de código abierto, permite adecuar el mismo a los
requerimientos de la aplicación.
7.3.1.4 Aplicación
La lógica de la aplicación será explicada más adelante, pero hay que destacar que, dadas
las herramientas seleccionadas en las capas precedentes, se tuvo que optar por lenguajes de
programación y entornos de desarrollo compatibles con las mismas. Entre ellos, se encuentran el
IDE Visual Studio (en su versión 2012 Express) y el lenguaje C#, este último es, de las restantes
opciones (C++ y Visual Basic) el que se encuentra mejor documentado en lo referido a la
programación de aplicaciones para Kinect.
Kinect Toolbox
SDK mencionado, lo cual reduce en gran medida el esfuerzo que debe realizar el programador.
Cabe recordar, que dado los requerimientos de la aplicación, se tuvo que modificar la mayoría de
sus clases, las cuales se detallan a continuación:
MEDICO PACIENTE
MENU
PRINCIPAL
Menu principal
Como primer paso se inicializa la ventana, lo cual instancia la misma y configura todos
sus elementos y controles correspondientes.
Finalmente, cuando se detectó el gesto, la aplicación libera los recursos sobre Kinect y
pasa su control al módulo correspondiente.
Medico
Este módulo implementa la lógica del médico, la cual se puede visualizar en la siguiente
figura.
Inicializar la ventana
Inicializar Kinect
Analiza cuadro a cuadro la información brindada por los flujos de datos de Kinect.
Grabación de Gestos
Gestiona la grabación de la sesión del médico, que incluye la grabación de los gestos, la
cantidad de repeticiones y el video demostrativo de los mismos. Este proceso se inicia cuando el
participante lo indica mediante el botón de Realidad Aumentada o por un comando de voz.
Paciente
El módulo Paciente es muy similar con respecto al módulo Medico y solo difieren
en el proceso de Grabación de Gestos, lo cual es su lugar se realiza un proceso de Detección de
Gestos.
Detección de Gestos
Utiliza la sesión grabada por el médico, la cual incluye los gestos grabados, la cantidad
de repeticiones y el video demostrativo. Este proceso se inicia cuando el participante lo indica
mediante el botón de Realidad Aumentada o por un comando de voz.
Como ya se dijo en reiteradas ocasiones, los gestos pueden ser predefinidos como por
ejemplo “el deslizar una mano de izquierda a derecha” y otros pueden ser almacenados
dinámicamente en una especie de máquina de aprendizaje para luego, mediante un algoritmo, ser
detectados.
Heredando de la clase anteriormente mencionada, existe una clase que recorrerá las
posiciones gravadas para determinar si dichos puntos siguen el patrón grabado. Por ejemplo, para
detectar un deslizamiento hacia la izquierda se deberían seguir los siguientes pasos:
Verificar que todos los puntos se encuentran viajando hacia la derecha (eje X)
Verificar que todos los puntos no estén muy lejos uno del otro con respecto a los
ejes Y y Z.
Chequear que haya una buena distancia entre el primer punto y el último.
Verificar que el primer y último punto del patrón fueran creados dentro de un
determinado período de tiempo.
El concepto de pattern matching en este caso involucra una base de datos de imágenes
grabadas producidas por gestos. Utilizando dicha base de datos, se puede comparar el patrón que
se está realizando en tiempo real, y los que se encuentran en la base de datos (llamadas
plantillas).
Figura 7-9 – Crea un gesto inicial (el cual comienza en el punto violeta)
Figura 7-10 – Normaliza el gesto para que contenga un número de puntos definido
Figura 7-11 – Se rota el patrón para que el primer punto esté a 0 grados (coincida con en el eje horizontal)
En resumen, con estas clases se puede guardar los gestos normalizados como un patrón
conformado por varios puntos, almacenarlos en archivos en el disco para luego poder cargarlos y
poder reconocerlos.
Para grabar los datos de Kinect, se define una clase llamada KinectRecorder que
maneja los tres tipos de datos (color, de profundidad y del esqueleto). Esta clase es la encargada
de grabar las estructuras de datos de Kinect y luego reproducirlos de manera precisa. Genera un
solo archivo de salida que contiene todos los datos para reproducirse.
ColorRecorder.
DepthRecorder.
SkeletonRecorder.
Cada una de ellas, agrega sus propios datos en el stream principal (flujo de datos),
agregando solo una cabecera con un número fijo para identificación de los datos, es decir, para
saber a qué clase pertenecen los datos que siguen para leer en el stream.
Para grabar los datos del flujo de datos de color, forma un stream de datos a escribir,
añadiéndole cierta información como la resolución (el ancho y el largo del frame), tamaño de la
información de los pixels, etc.
Almacenar los datos del esqueleto para su posterior reproducción es más complejo
porque los datos estructurados se deben serializar. De hecho, en un rango específico
(generalmente 30 veces por segundo), Kinect produce un frame del esqueleto que está compuesto
por:
Un número de frame.
Un plano del piso que define las coordenadas x, y, z, w, del vector que es usado
internamente para definir donde está parado el esqueleto.
Como ya se mencionó, la clase KinectRecorder, agrega las tres clases para proveer
al programador un único punto de entrada. Contiene una referencia a cada una de las clases de
grabación como un stream. Dependiendo del identificador de flujo que detecte (esto fue
explicado más arriba) creará un objeto de la clase ColorRecorder, DepthRecorder o
SkeletonRecorder. Además otorga un método para grabar los frames (cuadros) específicos,
ya sea el frame del esqueleto, de color o de profundidad.
El sistema de repetición está basado en tareas para manejar el tiempo entre los frames.
Esta tarea causa que el sistema quede en esperando por un tiempo dado, luego del cual la tarea
lanza un evento a la clase KinectReader para avisarle que hay un nuevo frame disponible.
Posee un método interno llamado AddFrame para permitir a la clase llenarlo con los frames
grabados.
Por último, la clase que junta las tres anteriormente mencionadas es la clase
KinectReplay. Esta clase hace las veces de la mencionada precedentemente
KinectRecorder solo que en la parte de reproducción. Provee métodos para iniciar la
reproducción, detenerla, sincronizarla, liberar recursos, etc. Con esta clase se puede, entonces,
repetir una sesión previamente grabada de Kinect.
Figura 7-14 – Puntero que sigue la mano más cercana al sensor del usuario
Médico
Paciente
Configuración
Salir de la aplicación
7.6.2 CONFIGURACIÓN
Además de la ya mencionada imagen de la cámara, se presenta una barra del tipo slider
para mover el motor vertical de Kinect y adecuarlo a las necesidades del usuario y del ambiente.
También se puede modificar el modo en que se detecta el esqueleto, pudiendo hacerlo en el modo
sentado (visto en el capítulo anterior) o en el modo completo. Para regresar al menú principal, se
debe hacer click en el botón atrás situado en la parte superior izquierda de la pantalla.
7.6.3 MÉDICO
Una vez seleccionada la opción médico del menú principal, se presenta al usuario la
ventana de la figura anterior. En la misma, se muestra la imagen a color de la cámara, además, si
el usuario se encuentra dentro del rango de visión del sensor, se mostrará el dibujo del esqueleto
del mismo (ya sea en modo sentado o completo), y, si esto último sucede, se verán también los
botones para las distintas opciones que se permiten realizar en la parte derecha de la imagen.
7.6.3.1 Botones
Con respecto a los comandos de voz disponibles, se debe tener en cuenta que el
comando “ayuda” se puede utilizar en cualquier momento. Para el resto de los comandos, se debe
estar en determinado estado para poder usarlos. Acto seguido, se describe cada una de las
palabras (comandos de voz) que se pueden utilizar:
Grabar. Este comando activa la grabación del gesto y sólo está disponible
cuando está iniciada la sesión de grabación (es decir, cuando el botón “inicio”
está activado).
Detener. Detiene la grabación del gesto. Por supuesto que se puede utilizar sólo
cuando el comando “grabar” fue activado, esto es, cuando se está grabando un
gesto.
Salir. Vuelve al menú principal. Misma función que el botón atrás situado en la
esquina superior izquierda.
Cuando se selecciona dicho botón, se muestran las articulaciones disponibles para grabar
el gesto. El manejo de la interfaz de la ventana es idéntico a la del menú principal. El usuario
dispondrá de un cursor que seguirá los movimientos de la mano que se encuentre más cercana al
sensor. Para seleccionar la articulación deseada, se debe mantener dicho cursor en el botón
correspondiente hasta que se complete el círculo (aproximadamente 3 segundos). Una vez hecho
esto, el siguiente o los siguientes gestos se grabarán con la articulación seleccionada.
Si se desea finalizar con la grabación, se utiliza la palabra “detener”. Una vez detenida la
grabación, la aplicación solicitará que se ingrese el número de repeticiones de dicho gesto que
debe realizar el paciente, esto es, la cantidad de veces que debe realizar el gesto correctamente.
Una vez hecho esto, se puede proceder a finalizar la sesión de grabación para ese paciente, o bien
grabar otro gesto con la misma articulación o seleccionar una diferente del modo antes indicado.
7.6.4 PACIENTE
Figura
7.6.4.1 Botones
Repetir. Repite la demostración del gesto que se debe realizar. Solo está
disponible cuando la sesión de reproducción está iniciada.
Cuando se dice que se está dentro de una sesión de reproducción de gestos, se hace
referencia a que el paciente inició la reproducción de los gestos que debe realizar.
Una vez que el mismo activa tal reproducción ya sea mediante el botón o mediante el
comando de voz, se comienza con la reproducción de la demostración del primer gesto que este
debe realizar, incluyendo el nombre de la articulación con la cual se debe concretar el mismo.
Cuando ella termina, se muestra la cantidad de repeticiones del gesto que el paciente debe
realizar. Descontándose en uno cuando dicha persona lo realiza de manera correcta (o muy
similar), o bien no descontando las repeticiones cuando lo hace incorrectamente. Una vez que el
paciente ha completado la cantidad de repeticiones requeridas para ese gesto en particular,
automáticamente se reproducirá la demostración del segundo gesto a realizar, y se repetirá el
mismo proceso descripto hasta llegar al último de los gestos o bien hasta que el paciente decida
terminar la sesión.
Una vez que el paciente finaliza la realización de toda la sesión de gestos grabados por
el médico, se mostrará la leyenda “bien hecha” para que la persona sepa que ha finalizado. Una
vez hecho esto, se puede finalizar la sesión y salir o bien recomenzarla mediante el comando, o el
botón destinado para ello.
Capítulo 8
8.1 CONCLUSIONES
En la presente tesina, se ha investigado en profundidad acerca de las Interfaces
Gestuales y la Realidad Aumentada, entre otros temas. Para ello fue necesario definir y estudiar
varios conceptos, tales como las pautas a tener en cuenta para el diseño de una interfaz de
usuario, definir el concepto de gesto, sus clasificaciones, atributos, y cuándo es realmente útil
diseñar e implementar una interfaz basada en gestos. La investigación respecto de la Realidad
Aumentada permitió conocer su definición, las técnicas para aplicarla, los distintos campos donde
la misma puede ser utilizada y la brecha que la separa de la Realidad Virtual.
Por otra parte, al estudiar las distintas características del sensor Kinect, se aprendió en
detalle su funcionamiento a nivel de hardware y software, lo que permitió, a la hora de desarrollar
una aplicación destinada a manejarse con dicho sensor, una mayor facilidad para programar y
abarcar las diferentes posibilidades que el dispositivo otorga.
Si bien dicho caso de aplicación fue desarrollado para demostrar e integrar los temas
aquí tratados, se necesitan incorporar algunas funcionalidades o detalles que sólo la ayuda de un
médico puede llegar a aportar, no obstante lo cual, consideramos que el mismo sirve como una
buena base para el desarrollo de una aplicación más detallada en un futuro no muy lejano.
Para concluir, se puede decir que los objetivos planteados en un comienzo tanto los
referidos al aprendizaje de los temas tratados, como los planteados para el desarrollo del caso de
aplicación, fueron cumplidos satisfactoriamente.
En lo que respecta a las líneas futuras de los temas investigados, se puede decir que las
Interfaces Gestuales se encuentran ya instaladas en la sociedad, sobre todo cuando se trata de las
interfaces táctiles. Algo que resta saber, es si en un futuro se podrán imponer (tal como pasó con
las interfaces táctiles) las tecnologías que no requieren del tacto, sino del reconocimiento del
gesto por medio de cámaras y algoritmos. Hay que destacar que en la actualidad también faltan
definiciones de estándares a seguir en lo que respecta a las Interfaces Gestuales, y que en un
futuro no muy lejano seguramente estos van a ser definidos dado el crecimiento e
implementación de las mismas hoy en día.
Cabe destacar que el campo de mayor proyección de la RA son los escenarios en donde
las aplicaciones no poseen ningún tipo de referencia, en donde las mismas deben incorporar
mecanismos para poder en primer lugar identificar características o patrones de la escena, para
luego sí poder generar elementos de Realidad Aumentada. Este será sin ninguna duda el futuro de
la RA, sin la necesidad de patrones ni escenas conocidas, en donde dicha tecnología hará un
quiebre fundamental, que ampliará aún más sus campos de aplicación y por ende extenderá su
mercado.
Sumado al crecimiento de los temas mencionados, se puede destacar que las mejoras que
incorpora el dispositivo Kinect v2 y su kit de desarrollo SDK 2.0, permiten que la calidad y la
utilidad del caso de aplicación desarrollado se eleven en el futuro. Como también el desarrollo de
nuevas aplicaciones e investigaciones que utilicen las Interfaces Gestuales, la Realidad
Aumentada y el dispositivo Kinect v2.
BIBLIOGRAFÍA
Abascal, J., Aedo, I., Cañas, J., & otros, y. (2001). La interacción persona-ordenador. Jesús
Lorés.
Azuma, R., Baillot, Y., Behringer, R., Feiner, S., Julier, S., & MacIntyre, B. (2001). Recent
Advances in Augmented Reality. IEEE Computer Graphics and Applications.
Bimber, O., & Raskar, R. (2005). Spatial Augmented Reality. Wellesley: A. K. Peters Ltd.
Bolt, R. A. (1980). Put that there-Voice and gesture at the graphics interface. 7th annual
conference on Computer graphics and interactive techniques (págs. 262-270). New York:
ACM Press.
Brereton. (2003). Work at Hand: An Exploration of gesture in the context of work and everyday
life to inform the design of gestural input devices. South Australia: Australian Computer
Society Inc.
Burdea, G., & Philippe Coiffet, P. (2003). Virtual Reality. Hoboken, New Jersey: John Wiley &
Son.
http://terapiaocupacional50.files.wordpress.com/2007/12/ejercicios-para-realizar-en-casa-
despues-de-un-acv.pdf
Catuhe, D. (2012). Programming with the Kinect for Windows SDK. Washington: Microsoft
Press.
Cheok, A. D., Goh, K. H., Liu, W., Farbiz, F., Teo, S. L., Teo, H. S., . . . Yang, X. (2004).
Human pacman: a mobile wide-area entertainment system based on physical, social, and
ubiquitous computing. ACE ’04:ACM SIGCHI Interna International Conference on
Advances in computer entertainment technology.
Close, B., Donoghue, J., Squires, J., De Bondi, P., & Morris, M. (2000). Arquake: An outdoor-
indoor augmented reality first person application. 4th International Symposium on
Wearable Computers.
Craig, A., Sherman, W., & Will, J. (2009). Developing Virtual Reality Applications: Foundations
of Effective Design. Burligton: Morgan Kaufmann.
ETI Tudela. (s.f.). ETI Tudela - Formacion profesional de calidad. Obtenido de ETI Tudela -
Formacion profesional de calidad:
www.etitudela.com/celula/downloads/visionartificial.pdf
Feiner, S., MacIntyre, B., Hollerer, T., & Anthony. (1997). A touring machine: Prototyping 3d
mobile augmented reality systems for exploring the urban environment. IEEE
International Symposium. Wearable Computers.
Gerald, C. F., & Wheatley, P. O. (2003). MCS 471: Numerical Analisis. Obtenido de MCS 471:
Numerical Analisis: http://homepages.math.uic.edu/~jan/mcs471/Lec9/lec9.html
Giorio, C., & Fascinari, M. (2013). Kinect in Motion - Audio and Visual Tracking by Example.
Birmingham: Packt Publishing.
Gutierrez, M.; Vexo, F.; Thalmann, D. (Stepping into Virtual Reality). Lausana, Francia:
Springer.
Hainich, R. (2009). The End of Hardware, 3rd Edition: Augmented. BookSourge Publishing.
Haller, M., Billinghurst, M., & Thomas, B. (2006). Emerging Technologies of Augmented
Reality. Interfaces and Design. Idea.
Jana, A. (2012). Kinect For Windows SDK Programming Guide. Birmingham: PACKT .
Karam, M. (2006). A framework for research and design of gesture-based human computer
interactions. Southampton: University of Southampton.
Kato, H., & Billinghurst, M. (1999). Marker tracking and hmd calibration for a video-based
augmented reality conferencing system. International Workshop on.
Kim, G. (2005). Designing Virtual Reality Systems: The Structured Approach. Springer-Verlag.
Klein, G., & Murray, D. (2007). Parallel tracking and mapping for small ar workspaces. Mixed
and Augmented Reality, IEEE / ACM International Symposium.
Kölsch, M., Bane, R., Höllerer, T., & Turk, M. (2006). Multimodal Interaction with a Wearable
Augmented Reality. IEEE Computer Graphics and Applications.
Más, R., Yee, C., & Larrea, M. (2012). Interfaces Gestuales. Congreso Argentino de Ciencias de
la Computación (CACIC), (págs. 1-101). Bahia Blanca.
McNeill, D. (2006). McNeill lab for gesture and speech research. Electronic Resource. Chicago:
Website: University of Chicago.
Mercado Gomez, G. (2013). Trabajo Practico de TAI II: Wii - Microsoft Kinect - PlayStation
Move. Asuncion: Universidad Católica Nuestra Señora de la Asunción.
Milgram, & Kishino. (1994). A taxonomy of mixed reality visual displays. In IEICE Trans.
Information Systems.
Quek, F., McNeill, D., Bryll, R., Duncan, S., Ma, X.-F., Kirbas, C., . . . Ansari, R. (2002).
Multimodal human discourse: gesture and speech. Computer-Human Interact (págs. 171-
193). ACM Trans.
Rekimoto, J. (1998). Matrix: A realtime object identification and registration method for
augmented reality. Asia-Pacific Computer and.
Sherman, W. a. (2003). Understanding Virtual Reality: Interface, Application, and Design. The
Morgan Kaufmann Series in Computer Graphics.
Shotton, J., Fitzgibbon, A., Cook, M., Sharp, T., Finocchio, M., Moore, R., . . . Blake, A. (Junio
de 2011). Real-Time Human Pose Recognition in Parts from a Single Depth Image.
Microsoft Research. Obtenido de Microsoft Research:
http://research.microsoft.com/apps/pubs/?id=145347
Sutherland, I. (1968). A head-mounted three dimensional display. AFIPS ’68. New York.
Vertegaal, R. (25 de Abril de 2012). HML. Obtenido de HML - Human Media Lab:
http://www.hml.queensu.ca/telehuman
Vlahakis, V., Karigiannis, J., Tsotros, M., Gounaris, M., Almeida, L., Stricker, D., . . . Ioannidis,
N. (2001). Archeoguide: first results of an augmented reality, mobile computing system in
cultural heritage sites. VAST ’01: Virtual reality, archeology, and cultural heritage.
Wexelblat. (1998). Research Challenges in Gesture: Open Issues and Unsolved Problems.
Wachsmuth & Froelich.
Wigdor, D., & Wixon, D. (2011). Brave NUI World - Designing Natural User Interfaces For
Touch and Gesture. USA: Morgan-Kaufmann.
Yee, C. M., Abásolo, M. J., Sansó, R. M., & Vénere, M. (2011). Realidad virtual y realidad
aumentada. Interfaces Avanzadas. Editorial de la Universidad de La Plata.