investigación de mini pc android 4.0 robot-final

55
UNIVERSIDAD POLITECNICA DE VICTORIA SMILEDROID 1.0 INVESTIGACIÓN SOBRE INTERFACES ANIMADAS Seminario de Investigación Balderas Medina Antonio Adelchi Guevara Zavala Francisco Daniel Muñiz Hernández Maik Ramírez Acuña Daniel Osvaldo Rodríguez Puente Yaziel Asbai 09/10/2012 [1]

Upload: angel-garcia

Post on 14-Feb-2017

217 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Investigación de mini pc android 4.0   robot-final

universidad politecnica de victoria

SMILEDROID 1.0

INVESTIGACIÓN SOBRE INTERFACES ANIMADAS Seminario de Investigación

Balderas Medina Antonio Adelchi Guevara Zavala Francisco Daniel

Muñiz Hernández Maik Ramírez Acuña Daniel Osvaldo Rodríguez Puente Yaziel Asbai

09/10/2012

[1]

Page 2: Investigación de mini pc android 4.0   robot-final

ABSTRACT

El diseño y desarrollo de las interfaces de comunicación interactivas cada vez más amigables e intuitivas son elementos importantes en la interacción hombre-máquina. Sin embargo, el desarrollo de interfaces gráficas amigables basadas en animaciones faciales en robots de servicio ha recibido poca atención en los últimos años.

En general, existe la necesidad de incrementar el número de diseños y desarrollos de este tipo de interfaces gráficas que consideren elementos como emociones humanas para mejorar la interacción humano-robot de servicio. Por tanto, se propone el desarrollo de un diseño gráfico en 2D implementando un rostro que simula características humanas, considerando un conjunto de emociones producidas por factores externos.

 El rostro será graficado y animado mediante trasformaciones geométricas simples de traslación y rotación, en lenguaje Java/C implementado en el dispositivo MiniPC de Android con un SO Android 4.0, con la facilidad de portar sus desarrollos a diferentes máquinas como los robots de servicio, dispositivos móviles, etc.

Como resultado se espera una animación de un rostro que considere expresiones faciales que reflejen cuatro emociones de un robot de servicio y seleccionados por un usuario usando el teclado de la computadora.

[2]

Page 3: Investigación de mini pc android 4.0   robot-final

1. INTRODUCCIÓN1.1 Interfaces faciales humano-robot y sus limitantes

Con el paso del tiempo, el hombre a tratado de mejorar su comunicación con los sistemas que ha desarrollado, desde las tarjetas perforadoras que se empezaron a utilizar para ingresar información a las computadoras, hasta los últimos días que por medio de sensores de movimiento podemos manipular diversos dispositivos.

Debido a esto, las necesidades de robots que faciliten las tareas de un humano tanto en el hogar y en las oficinas (robot de servicio), requieren de la implementación de interfaces más amigables por medio de animaciones que resulten más fáciles de interpretar por medio de los usuarios.

Del mismo modo el hombre ha tratado de mejorar el aspecto de las interfaces para la comunicación del usuario y los robots de servicio. Por ejemplo, se han desarrollado interfaces que con la simple pronunciación de una sentencia de palabras pueden llegar a realizar una compleja operación por medio del reconocimiento de voz. A su vez se han creado interfaces que tal solo con mover nuestros ojos podemos controlar las acciones del puntero del ratón. Esto con la finalidad como ya se mencionaba de tener una mejor interacción entre los robots y los seres humanos.

En este desarrollo se simulará la gesticulación humana sobre una pantalla, la cual reflejara los estados por los cuales se esta enfrentando en tiempo real el robot de servicio. Desde un estado en espera hasta la manifestación de un obstáculo que impida su movilidad en dicha dirección.

[3]

Page 4: Investigación de mini pc android 4.0   robot-final

1.2 Definición del problema

La necesidad de la interacción humano-robot se hace cada vez más evidente en estos tiempos. Se necesitan animaciones que funciones como una interfaz entre los robots de servicio y las personas que ordenaran a dichos robots, para que la interacción sea más fácil de llevarse a cabo entre los robots y cualquier tipo de persona sin importar si conoce o no sobre tecnologías.

En la actualidad existe gran variedad de animaciones en 2D que sirven de interacción entre las personas, pero dichas animaciones son rígidas, algunos ejemplos de estas animaciones son los asistentes del “perro animado” de Microsoft Windows (Obsérvese Fig. 1) y el “Mago Merlín” también de Microsoft

Windows (Obsérvese Fig. 2) [1]. El problema radica en liberar a las personas del uso de estas interfaces rígidas, eliminando las barreras de comunicación presentes en la mayoría de los sistemas actuales y en los robots de servicio. El principal objetivo es llegar a una interacción natural entre persona y máquina, esto es, una interacción que se asemeje en la medida de lo posible a la interacción persona-persona.

[4]

Figura 1. Animación de Microsoft Windows que simula a un perro para ayudar a los usuarios a realizar búsquedas eficientes

Figura 2. Animación de Microsoft Windows que simula al mago Merlín ofreciendo su ayuda al usuario para ir a buscar sus correos electrónicos.

Page 5: Investigación de mini pc android 4.0   robot-final

1.3 Objetivos generales y específicos

Implementar un sistema para la graficación y animación de un rostro humano orientado a la interacción humano-robot de servicio. Se pretende que el robot por medio de expresiones faciales neutras, así como  de alegría, tristeza y la sorpresa brinde información de forma más fácil al usuario acerca de las acciones que el autómata este realizando y así la interacción con el humano será de una forma más natural.

Como objetivos específicos para el proyecto se encuentran los siguientes: 

1) Diseñar un rostro caricaturesco en 2D con características faciales amigables para el usuario. 

2) Definir los movimientos de las expresiones faciales que serán utilizadas para la animación. 

3) Implementar los algoritmos de transformación geométrica para animar el rostro.

1.4 Alcances y limitaciones

Los alcances comprendidos para este proyecto son el diseñar y construir una animación facial que tenga la funcionalidad de una interfaz entre un robot de servicio y un ser humano, esto con la finalidad de que la comunicación entre estos sea de una forma más fluida y comprensible como si se tratara de una comunicación entre dos seres humanos. Además se esta empleando para el desarrollo de la animación una tecnología relativamente nueva la cual comprende un dispositivo con sistema operativo Android y que en un futuro no muy lejano puede ser la apropiada para el uso de aplicaciones en este tipo de autómatas.

Las limitaciones a las cuales nos enfrentamos son que al no tener un robot de servicio a nuestra disposición, no se podrá llegar hasta la implementación de la compatibilidad de los sensores que dispararán los eventos de este con los diversos rostros que se pretenden mostrar, por otra parte nos enfrentamos a las limitaciones tecnológicas del dispositivo Android el cual estaremos utilizando para correar la aplicación de las animaciones.

[5]

Page 6: Investigación de mini pc android 4.0   robot-final

1.5 Contenido del documento

En la sección 2 Estado del Arte encontraremos los trabajos previos al proyecto así como la descripción de la librería OpenGL con la cual estaremos trabajando para el desarrollo de la animación. En la sección 3 se describe la metodología que incluye la descripción de los algoritmos, códigos fuente y demás métodos utilizados para la creación de la animación del rosto. La sección cuatro Experimentos y Resultados se presentaran las pruebas realizadas durante el desarrollo de la animación así como los resultados obtenidos de dichos experimentos. Conclusiones y Trabajos Futuros en esta sección aparecerán las conclusiones dadas por los integrantes del proyecto así como la propuesta de trabajos futuros con los cuales se pueda trabajar a partir de la animación facial creada.

[6]

Page 7: Investigación de mini pc android 4.0   robot-final

2. ESTADO DEL ARTE

En esta sección se detallarán algunos trabajos previos con respecto a algunas interfaces faciales con aspectos humanos de robots de servicios y también se abordara una pequeña descripción de la librería grafica OpenGL [2] con la cual se estará trabajando para el desarrollo de la animación.

2.1 Trabajos previos en robots de servicio

El desarrollo de robots con características humanas como son los rostros humanos ha ido evolucionando a lo largo del tiempo. Ya que cada vez existen mas herramientas con las cuales podemos desarrollar este tipo de interfaces. Ya que los humanoides son los robots del futuro, y ellos harán la vida de los humanos más fácil y sencilla.

Entre los avances que se han realizado con la creación de robots destaca ASIMO (Obsérvese Fig. 3) [3] el cual es un robot humanoide creado en el año 1980 por la empresa Honda. El objetivo de Honda al crear este humanoide es crear un robot capaz de interactuar con las personas y de ayudarles haciéndoles la vida más fácil y agradable.

Para esto es necesario que los desarrolladores de este tipo de robots usen mejores herramientas tal como lo han realizado

en el androide que se asemeja al físico Albert Einstein.

Alex Hubo, como se llama éste androide con el rostro del famoso científico, fue presentado en el 2006 en la ciudad de Nueva York en el evento NextFest, dicho evento presenta los últimos avances tecnológicos. La cualidad de este robot es la de aprender expresiones faciales a través de las cámaras que tiene integrado a sus ojos, lo cual permite la imitación de expresiones faciales (Véase Fig. 4) [4].

[7]

Fig. 3. ASIMO (Advanced Step in Innovative Mobility)

Fig. 4. La piel del robot es tan real, que simula las arrugas y las cicatrices.

Page 8: Investigación de mini pc android 4.0   robot-final

En el área de robots con rosto está Alex Hubo, cuya cabeza (Obsérvese Fig. 5) [5], de apariencia humana, fue diseñada por la empresa Hanson Robotics, y su cuerpo por la división Hubo de los Laboratorios Kaist, en Corea del Sur, especializados en el área de robots humanoides.

2.2 Descripción de OpenGL

Para el desarrollo de la animación que servirá de interfaz entre el humano y el robot se requiere de un IDE para programar en C++, además de una librería especial conocida como OpenGL y las librerías math.h, stdio.h, cstdlib, cmath y iostream que servirán para poder procesar las operaciones matemáticas y algunas otras funciones necesarias para el desarrollo de la animación.

OpenGL es una librería de modelado y gráficos 3D con la cuál se pueden desarrollar infinidad de imágenes y animaciones (Obsérvese Fig. 6) [6, 7,8]. Fue desarrollada inicialmente por Silicon Graphics, aunque pronto pasó a convertirse en un estándar, en especial cuando lo adoptó Microsoft para su sistema operativo Windows.

Sus principales características son: Es fácilmente portable y muy rápida. Es un sistema procedural y no descriptivo, es decir, el programador no

describe una escena sino los objetos de la escena y los pasos necesarios para configurar la escena final.

Actúa en modo inmediato, es decir, los objetos son dibujados conforme van creándose.

Incluye: Primitivas gráficas: puntos, líneas, polígonos. Iluminación y sombreado. Texturas. Animaciones. Otros efectos especiales. OpenGL trata con contextos de visualización o de rendering, asociados a

un contexto de dispositivo que, a su vez, se encuentra asociado a una ventana.

[8]

a) b)Fig. 5. a) Mecanismos internos del rostro del androide. b) Incorporación del rostro en la estructura del androide.

Page 9: Investigación de mini pc android 4.0   robot-final

2.3 Resumen

En esta sección se abordaron temas relacionados a los robots de servicios que están siendo desarrollados y que cuentan con interfaces faciales de aspecto humano, además de tratar también acerca de OpenGL una librería muy útil a la hora de crear animaciones computacionales y la cual el equipo de desarrollo estará utilizando para la elaboración de la interfaz facial en 2D.

[9]

(a) (c)(b)

(d) (e)

Fig. 6. Ejemplos de imágenes y animaciones desarrolladas con la librería OpenGL. (a)Esfera estilo alambrada desarrollada con la primitiva glWireSphere de OpenGL, (b) Esfera alambrada junto con un cubo sólido, (c) Mapeo de texturas para para simular un rostro humano (rostro de perfil), (d) Mapeo de texturas para para simular un rostro humano (rostro de semi-perfil), (e) Mapeo de texturas para para simular un rostro humano (rostro de frente).

Page 10: Investigación de mini pc android 4.0   robot-final

3. Metodología En esta sección se describirán principalmente el dispositivo y métodos utilizados para el desarrollo de la animación facial, así como también se proporcionara partes del código fuente a utilizar para tener un mejor entendimiento de la aplicación.

3.1 Descripción de la Mini PC

3.1.1 Introducción

A lo largo del tiempo la empresa Android ha sido pionera en investigación y desarrollo basado en sistemas operativos móviles. Este a su vez se basa en el sistema operativo Linux, que junto a las aplicaciones dedicadas para interactuar con otras aplicaciones, software, redes y hardware, son principalmente utilizadas en dispositivos móviles como teléfonos inteligentes (Smartphone), tabletas entre otros dispositivos.

Debido al gran avance tecnológico en los últimos años con respecto al área de equipos de computo, ya era tiempo que Android diera su aporte en esta área. De este modo lanzó al mercado su serie de mini ordenadores (Obsérvese Fig. 7) que revolucionarán la portabilidad de los equipos de cómputo.

3.1.2 ¿Qué es la Mini PC?

La MK802 [10] se trata de una pequeña PC del tamaño aproximado al de un dispositivo USB, que puede funcionar como una CPU a través de Android. Actualmente el mercado de micro-computadoras que podemos portar en nuestros bolsillos y conectar a cualquier TV para empezar a utilizarlas cada vez

[10]

Fig. 7. Contenido de la Mini PC

Fig. 8. Conexiones de la Mini PC

Page 11: Investigación de mini pc android 4.0   robot-final

va en aumento. Incluso este modelo diseñado por Android actualmente compite con la RaspBerry Pi [11].

El MK802 es una pequeña computadora que cabe en la palma de sus manos. Parece un poco voluminoso unidad flash USB, pero en realidad tiene un procesador, RAM y almacenamiento que lo convierten en un Mini PC (Véase Fig. 8).

3.1.3 Características de la MK802

Esta Mini PC fue diseñada para ejecutar el sistema Android 4.0 y para mantener el adecuado funcionamiento cuenta con un procesador ARM de 1.5Ghz, 1GB de memoria RAM DDR3 y con 4GB de almacenamiento.

También cuenta con una ranura para tarjetas micro SD para almacenamiento adicional, un puerto mini HDMI para conectar un monitor externo, un puerto USB de tamaño completo para un teclado, un ratón o cualquier otro accesorio. El dispositivo posee un puerto mini USB que se puede utilizar para alimentar el MK802 al conectarlo a un ordenador, o conectar periféricos (Obsérvese Fig. 9).

3.1.4 ¿Cómo la usaremos?

El modo el cual emplearemos este dispositivo es mediante un emulador de OpenGL, el cual se encargará simular la animación facial mostrada anteriormente y esta se mostrará en la pantalla (Obsérvese Fig. 10).

Dicha pantalla va montada al robot de servicio el cual mostrará los diferentes estados de la animación

[11]

Fig. 9. Modo de conexión de la Mini PC

Fig. 10. Primeras pruebas con la Mini PC

Page 12: Investigación de mini pc android 4.0   robot-final

acorde a las acciones o eventos que presente el robot, pero esto se realizara en trabajos futuros.

3.2 Descripción del código fuente desarrollado en OpenGL para la PC e imágenes de la interfaz facial

3.2.1 Descripción de las funciones a utilizar en el código fuente

Como una pequeña introducción al contenido del código se presentara una descripción de las funciones a utilizar para estar familiarizado con la funcionalidad de estas, existen funciones propias de la librería OpenGL como lo son:

glClear: esta función permite limpiar el contenido de la pantalla. glColor3f: permite cambiar el color de un objeto con un formato en

números decimales. glRasterPos2f: con esta función podemos desplegar un texto en las

coordenadas que le estamos dando como parámetros.

A continuación se detallan las funciones creadas por el equipo de desarrolladores, y con las cuales se simplifico el trabajo:

circulo: función que permite crear un círculo y la cual se estará utilizando para dibujar el cirulo principal de la animación.

contorno: como su nombre lo indica dibuja el contorno de la cara para realzar más la interfaz.

ojos: por medio de esta función se dibujan los ojos de la animación tanto el ojo izquierdo como el derecho, lo que cambia son las coordenadas que se pasan como paramentos en función

boca: por medio de esta función se crea la boca de la interfaz lengua: permite la visualización de la lengua cejaizq: función con la cual podemos crear la ceja izquierda de la cara

animada cejader: función con la cual podemos crear la ceja derecha de la cara

animada

[12]

Page 13: Investigación de mini pc android 4.0   robot-final

A continuación se presentan algunos fragmentos de código que fueron utilizados durante el desarrollo de la animación, la cual fue desarrollada en OpenGL.

1. Librerías necesarias para la ejecución del programa (Véase Fig. 11).

2. Sección del código donde se realizo la definición de las variables a utilizar (Véase Fig. 12)

3. Parte del código que muestra la función principal que dibuja la cara

[13]

Fig. 11 Librerías incluidas en el programa

Fig. 12 Declaración de variables globales en OpenGL

Page 14: Investigación de mini pc android 4.0   robot-final

[14]

Page 15: Investigación de mini pc android 4.0   robot-final

4. Porción del código fuente que dibuja la cara inicial en estado neutro (Obsérvese Fig. 14).

[15]

Fig. 14. Código de la cara en fase neutra

Page 16: Investigación de mini pc android 4.0   robot-final

5. Código que dibuja la cara si selecciona la opción feliz (Fig. 15).

6. Sección del código que dibuja la cara si selecciona la opción enojado (Véase Fig. 16).

7. Código que dibuja la cara si selecciona la opción triste (Véase Fig. 17).

[16]

Fig. 15. Código de la cara en estado feliz

Fig. 16. Código de la animación en estado enojado

Fig. 17. Código de la animación en estado triste

Page 17: Investigación de mini pc android 4.0   robot-final

A continuación se muestra la imagen de la animación en los diferentes estados en que puede encontrarse el robot de servicio (Fig. 18).

[17]

(a) (b)

(c) (d)

Fig. 18. imágenes de la animación desarrolladas con la librería OpenGL. (a) Estado neutro de la animación, (b) Estado feliz de la cara, (c) Estado triste de la animación, (d) Estado enojado de la animación

Page 18: Investigación de mini pc android 4.0   robot-final

3.3 Migración del SMILEDROID de lenguaje C a JAVA con librería OpenGL para Android

Para realizar la animación en Android, primero se tiene que crear una actividad como normalmente se crea (Para mayor información de como crear una actividad en Android [9]).

Después debemos conocer las clases a utilizar, las cuáles son: GLSurfaceView, la clase que te permite escribir las aplicaciones con

OpenGL GLSurfaceView.Renderer, es una interfaz de renderizado genérica donde

escribirás el código de lo que quieras que se dibuje.

Podemos hacer una analogía para entender bien esto, el GLSurfaceView lo podemos ver como el lienzo en donde pintaremos algo, y el GLSurfaceView.Renderer será el pintor que lo dibujará.

Nuestra actividad contiene 2 métodos:

public void onCreate(Bundle savedInstanceState) {} public boolean onCreateOptionsMenu(Menu menu) {}

El primero es la que define lo que mostraremos en pantalla y en la que haremos algunas modificaciones y la segunda controla el menú de opciones, en este proyecto, la dejaremos tal como esta.

En el método onCreate () definiremos un objeto de la clase GLSurfaceView y un objeto render, que contendrá lo que dibujaremos en pantalla (Véase Fig. 19).

Y en el método setContentView, pasaremos como parámetros la superficie creada.

Definimos después nuestra clase MyRender.java que implementará la interfaz de Rendare.

[18]

Fig. 19. Funcion onCreate()

Page 19: Investigación de mini pc android 4.0   robot-final

Al ser una interfaz, debemos implementar los métodos definida en ella, estos métodos son:

onSurfaceCreated(), este método es llamado cuando la superficie (a.k.a. surface) es creada o es re-creada, como este método es llamado al inicio del renderizado, es un buen lugar para colocar lo que no variara en el ciclo del renderizado. Ej: el color de fondo, la activación del índice z, etc.

onDrawFrame(), este método en particular es el encargado de dibujar sobre la superficie (a.k.a. surface)

onSurfaceChanged(), este método es llamado cuando la superficie cambia de alguna manera, por ejemplo al girar el móvil y colocarlo en posición de paisaje.

Las funciones de OpenGL para Android, son muy similares a las explicadas anteriormente, sólo que a diferencia de la librería utilizada para C++, en Java para Android, es necesario crear un objeto del tipo GL10 y por medio de él acceder a las funciones, ejemplo:

GL10 gl;gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);gl.glLoadIdentity();gl.glTranslatef(0.0f, 0.0f, -6.0f);gl.glViewport(0, 0, width, height); gl.glMatrixMode(GL10.GL_PROJECTION);

Para el desarrollo de las diferentes expresiones, se optó por crear una clase diferente para cada expresión, y que al momento de un cambio de emoción, simplemente en MyRender mandar llamar a la función que dibuja de dicha clase.

Nuestras clases son:

Square.java: Esta clase dibuja lo que es la circunferencia de los rostros, y siempre está activa.

neutro.java: Esta clase define la expresión neutra. ojoizq.java: Define la cara feliz SadFace.java: Defina la cara triste angry.java: Define la cara enojada.

Para poder crear cada expresión fue necesario calcular cada punto que define el polígono que representara los distintos componentes dentro de la cara (Ojos, boca, etc.).

Esto se tuvo que realizar debido al problema al que nos enfrentamos de que con la librería para Android no se encontraba la primitiva GL_POLYGON con la cual

[19]

Page 20: Investigación de mini pc android 4.0   robot-final

somos capaces de dibujar un polígono simplemente especificándole el radio, numero de lados y las coordenadas de su centro.

La solución que pudimos proporcionar para resolver este problema fue calcular cada uno de los puntos, y por medio de la primitiva GL_TRIANGLE_FAN realizar el polígono que necesitábamos.

GL_TRIANGLE_FAN lo que hace es dibujar un abanico de triángulos en base a un conjunto de puntos dados, y el centro de polígono.

Entonces, para cada figura, tuvimos que calcular un conjunto de puntos, es decir, la boca tiene su conjunto de puntos, el ojo derecho tiene sus puntos, el ojo izquierdo también tiene su conjunto de puntos.

Veamos un ejemplo en el código y expliquemos otras funciones dentro de cada clase (Obsérvese Fig. 20).

Neutro.java

Primero importaremos todas las librerías que ocuparemos (Véase Fig. 21).

Después como atributos propios de la clase crearemos los Buffers en donde guardaremos los puntos de cada polígono, y los vectores que contendrán dichos puntos (Véase Fig. 22).

[20]

Fig. 20. Importación de librerías

Fig. 21. Declaración de los buffers

Page 21: Investigación de mini pc android 4.0   robot-final

Es un Buffer y un vector de puntos por figura.

Luego en el constructor de nuestra clase, crearemos un Buffer de Bytes, que lo usaremos para separar la memoria necesaria para nuestros puntos, y después cargaremos los elementos del vector a nuestro vertexBuffer (Véase Fig. 23)..

Realizaremos esto para cada vertexBuffer con cada vector de puntos de cada figura.

[21]

Fig. 22. Declaración del vector de puntos para un ojo.

Fig. 23. Constructor de la clase en donde cargamos los puntos del vector a nuestro buffer.para un ojo.

Page 22: Investigación de mini pc android 4.0   robot-final

Después crearemos una función que dibujará la figura en base al buffer que contiene todos los puntos (Obsérvese Fig. 24).

Lo que hace esta función, primero es establecer la cara de rotación.Luego con la función gl.glVertexPointer define un arreglo de vértices, tal y como se irán graficando pasándole como parámetros el buffer en donde tenemos guardados las coordenadas de cada punto a graficar. Con glColor4f definimos el color de nuestra figura en un formato RGBA y con glDrawArrays dibujamos la figura, ahí es en donde especificamos que lo dibuje con el abanico de triángulos (GL_TRAINGLE_FAN).

[22]

Fig. 24. Funcion que dibuja la figura cargamos los puntos del vector a nuestro buffer.para un ojo.

Page 23: Investigación de mini pc android 4.0   robot-final

Debemos utilizar las mismas funciones dentro del mismo constructor para cada figura que compondrá el rostro.

Las variaciones para cada expresión radican simplemente en la localización de los puntos de cada parte, ya que todas las expresiones contienen los mismos elementos (boca, ojo izquierdo, ojo derecho y la pupila de cada ojo).

Regresando a nuestra clase MyRender que es la que dibujará cada expresión, analicemos cada una de sus partes.

Primeramente debemos importar todas las librerías necesarias (Obsérvese Fig. 25).

Luego declaramos como atributos propios de la case a un objeto de cada clase que define las expresiones (Véase Fig. 26).

Después en el constructor inicializaremos cada objeto, pasándole como parámetros el número de puntos que utilizaremos (Véase Fig. 27).

[23]

Fig. 25. Importación de librerías cargamos los puntos del vector a nuestro buffer.para un ojo.

Fig. 26. Creamos un objeto de cada clase (Expresiones)

Fig. 27. Inicialización de los objetos dentro del constructor.

Page 24: Investigación de mini pc android 4.0   robot-final

Nosotros utilizaremos solo el métodos onDrawFrame() de la interfaz Renderer, que será aquí en donde mandaremos llamar la función draw() de cada objeto, dependiendo la expresión que queramos dibujar (Obsérvese Fig. 28).

0

En esta función, primeramente limpiamos la pantalla y el buffer de profundidad con la función gll.glClear().

Luego por medio de la función glLoadIdentity() reseteamos el modelo de la matriz actual y cargamos una matriz identidad.

Con la función glTranslate(0.0f, 0.0f, -6.0f) colocaremos el centro de nuestro plano cartesiano imaginario en donde colocaremos las coordenadas de cada punto exactamente en el centro de la pantalla.

Y después mandaremos llamar al método draw() de la expresión que queramos dibujar.

[24]

Fig. 28. Funcion que dibuja en la pantalla del constructor.

Page 25: Investigación de mini pc android 4.0   robot-final

En la figura (Obsérvese Fig. 29). aparecen las diferentes expresiones del SMILEDROID.

[25]

(d)(c)

(b)(a)

Fig. 29. imágenes de la animación desarrolladas con las librerías de Java. (a) Estado neutro de la animación, (b) Estado feliz de la cara, (c) Estado triste de la animación, (d) Estado enojado de la animación.

Page 26: Investigación de mini pc android 4.0   robot-final

3.4 Resumen

En esta sección se presento el dispositivo con el cual se trabajo para visualizar la animación, además de proporcionar las secciones mas importante del código fuente creado por el equipo de programación para la creación de la interfaz animada, así como también se presentaron las imágenes de los resultados finales de la animación.

[26]

Page 27: Investigación de mini pc android 4.0   robot-final

4. Experimentos y resultadosEn esta sección del documento es donde encontraremos los experimentos realizados después de haber concluido con el desarrollo de la animación facial, el principal objetivo de efectuar estos experimentos es conocer la opinión de los usuarios comunes acerca de la interfaz desarrollada así como de las interfaces que existen hoy en día para los diversos robots.

Los presentes experimentos se elaboraran en circunstancias las cuales serán mencionadas a continuación con el objetivo de observar el comportamiento de los usuarios encuestados bajo dichas circunstancias, esto servirá de ayuda en el futuro por si se desea realizar el mismo experimento pero con ambientes diferentes y ver como se ven afectados los usuarios dependiendo del ambiente de trabajo.

A continuación listaremos las circunstancias en las cuales fueron desarrollados los experimentos.

1. Se le pidió al usuario que observara la pantalla de una computadora en la cual se le mostraría la animación, dicha pantalla estaba aproximadamente a unos 50 cm del usuario.

2. El entrevistador le mostrara el primer estado de la animación para posteriormente realizarle una pregunta, las cuales se detallaran mas adelante en el documento.

3. Al terminar de contestar la pregunta se prosigue a cambiar el estado de la animación y continuar con una pregunta, así hasta terminar de proyectar todas las expresiones faciales que el SMILEDROID puede llevar a cabo.

4. Una vez que el entrevistado concluye con las preguntas sobre las expresiones faciales, se prosigue con preguntas relacionadas al contenido de la animación.

5. Para el segundo experimento se le pide al usuario que observe la pantalla de un nuevo computador en el cual se le mostraran de una imagen, seguido por una pregunta.

6. Al terminar de contestar la pregunta se continuara con la siguiente imagen y así sucesivamente hasta completar todas las preguntas del experimento.

[27]

Page 28: Investigación de mini pc android 4.0   robot-final

4.1 Experimento sobre el SMILEDROID

El primer experimento es para conocer la percepción por parte de los usuarios acerca de la interfaz desarrollada. Al contestar las siguientes preguntas se pretende que el usuario sea capaz de dar su opinión acerca de las emociones que son presentadas por parte de la interfaz SMILEDROID, así como obtener información para realizar mejoras en un futuro.

1. ¿Qué tipo de expresión facial se presenta ahora?

Enojado Triste Feliz Otra

2. ¿En este caso que expresión facial se presenta?

Enojado Triste Feliz Otra

[28]

Page 29: Investigación de mini pc android 4.0   robot-final

3. ¿Ahora cual es para usted la expresión facial presentada?

Enojado Triste Feliz Otra

4. ¿Según su percepción qué tipo de expresión facial es presentada ahora?

Enojado Triste Feliz Otra

[29]

Page 30: Investigación de mini pc android 4.0   robot-final

5. ¿Esta de acuerdo con los colores usados en la animación?

Si No

6. ¿Si no esta de acuerdo que color sugiere utilizar?

7. ¿Le parece bien incorporar el rostro en algún robot?

Si No Tal vez

8. ¿Le parece adecuado el tiempo que tarda la animación en pasar de un estado de ánimo a otro?

Si No

4.2 Experimento sobre interfaces faciales en robots

[30]

Page 31: Investigación de mini pc android 4.0   robot-final

En el segundo experimento que se realizó en esta investigación consistió en identificar las habilidades de los encuestados para diferenciar cual rostro le pertenece a un robot con aspecto humanoide o a un ser humano en base a las características faciales presentadas en las imágenes. Además que se les preguntó a los encuestados los argumentos que llevaron a determinar sus conclusiones.

Dada las siguientes imágenes, responda adecuadamente cada pregunta.

1. ¿A quien le pertenece el rostro de la siguiente imagen?

a) Humanob) Robot

¿Por qué eligió esta respuesta?

2. ¿A quien le pertenece el rostro de la imagen?

a) Humanob) Robot

¿Por qué eligió esta respuesta?

[31]

Page 32: Investigación de mini pc android 4.0   robot-final

3. ¿A quien le pertenece el rostro de la siguiente imagen?

a) Humanob) Robot

¿Por qué eligió esta respuesta?

4. ¿A quien le pertenece el rostro de la imagen?

a) Humanob) Robot

¿Por qué eligió esta respuesta?

[32]

Page 33: Investigación de mini pc android 4.0   robot-final

5. Uno de los siguientes rostros le pertenece a un humano y el otro a un robot.

¿Cuál es el robot?

a) Lado izquierdob) Lado derecho

¿Por qué eligió esta respuesta?

[33]

Page 34: Investigación de mini pc android 4.0   robot-final

4.3 Graficación de los experimentos

A continuación se muestran las graficas las cuales contienen los resultados obtenidos de las encuestas de los dos experimentos descritos previamente en esta sección.

4.3.1 Gráficas del primer experimento

Se comenzará por describir las graficas del primer experimento con el cual se pretende observar la aceptación por parte de los usuarios de la animación SMILEDROID.

La primeras cuatro graficas muestran los resultados obtenidos acerca de la percepción de las expresiones faciales las cuales fueron mostradas a los usuarios, esto con la finalidad de saber si el usuario observó con claridad y facilidad la expresión que en realidad se quiere mostrar.

En la gráfica número uno se muestra con claridad que el resultado obtenido es “Otra” (Obsérvese Fig. 30), para esta grafica se realizó la pregunta numero uno del primer cuestionario y se mostro el rostro de la cara en un estado neutro, por lo cual el resultado fue positivo ya que la mayoría de los usuarios encuestados seleccionó la opción correcta para dicha pregunta.

[34]

Fig. 30. En la gráfica anterior se muestran los resultados a la pregunta 1-¿Qué tipo de expresión facial se presenta ahora?, cuyo resultado obtenido fue el esperado.

Page 35: Investigación de mini pc android 4.0   robot-final

En la gráfica número dos se muestra el resultado obtenido es “Feliz” (Obsérvese Fig. 31), se realizo la pregunta dos del primer cuestionario y se mostró la animación en un estado feliz, el resultado obtenido por parte de los usuarios fue positivo ya que la mayoría de los usuarios encuestados seleccionó la opción correcta para dicha pregunta.

En la siguiente gráfica se muestra con claridad que el resultado obtenido es “Enojado” (Obsérvese Fig. 32), para esta grafica se realizó la pregunta numero tres del primer cuestionario y se mostró el rostro de la animación en un estado enojado, por lo cual el resultado fue positivo ya que los usuarios encuestados seleccionaron la opción correcta para dicha pregunta.

[35]

Fig. 31. En la gráfica anterior se muestran los resultados a la pregunta 2-¿En este caso que expresión facial se presenta?, cuyo resultado obtenido fue el esperado.

Fig. 32. En la gráfica anterior se muestran los resultados a la pregunta 3- ¿Ahora cual es para usted la expresión facial presentada?, cuyo resultado obtenido fue el esperado.

Page 36: Investigación de mini pc android 4.0   robot-final

En la gráfica número cuatro se muestra el resultado obtenido es “Triste” (Obsérvese Fig. 33), se realizó la pregunta cuatro del primer cuestionario y se mostró la animación en un estado enojado, el resultado obtenido por parte de los usuarios fue positivo ya que la mayoría de los usuarios encuestados seleccionó la opción correcta para dicha pregunta.

La graficas que se mostraran a continuación son para conocer si el usuario esta de acuerdo con los diversos componentes utilizados al desarrollar la animación facial, así como también dar a conocer alguna opinión la cual nos pueda ayudar en trabajos futuros.

La siguiente gráfica muestra el resultado después de realizar la pregunta a los entrevistados si estaban de acuerdo con los colores utilizados en el SMILEDROID (Véase Fig. 34).

[36]

Fig. 33. En la gráfica anterior se muestran los resultados a la pregunta 4- ¿Según su percepción qué tipo de expresión facial es presentada ahora?, cuyo resultado obtenido fue el esperado.

Fig. 34. Se puede observar que la mayoría de los usuarios están de acuerdo con los colores utilizados para la animación.

Page 37: Investigación de mini pc android 4.0   robot-final

La pregunta número seis corresponde a la siguiente gráfica la cual nos arroja como resultado que a los usuarios que no están de acuerdo con el color utilizado les hubiera parecido mejor utilizar el color amarillo o un verde mas claro (Véase Fig. 35).

La siguiente gráfica muestra los valores obtenidos al preguntar a los usuarios entrevistados si están de acuerdo en que la animación se encuentre como interfaz de un robot (Obsérvese Fig. 36).

[37]

Fig. 34. Se puede observar que la mayoría de los usuarios están de acuerdo con los colores utilizados para la animación.

Fig. 35. Gráfica la cual muestra los posibles colores que serian de agrado para los usuarios

Fig. 36. Como se puede observar los usuarios están de acuerdo con implementar el SMILEDROID como interfaz para un robot.

Page 38: Investigación de mini pc android 4.0   robot-final

En la gráfica que se muestra a continuación se observan los resultados obtenidos por parte de los entrevistados al preguntar si están de acuerdo con el tiempo de transición de una expresión facial a otra (Obsérvese Fig. 37).

[38]

Fig. 37. La gráfica muestra que la mayoría de los usuarios encuestados están de acuerdo con que la animación sea montada en un robot.

Page 39: Investigación de mini pc android 4.0   robot-final

4.3.1 Gráficas del segundo experimento

Ahora describiremos las graficas obtenidas tras realizar el segundo experimento, el cual tiene la finalidad de conocer si los usuarios son capaces de diferenciar entre un robot y un ser humano por medio de sus características físicas.

En general las graficas muestran el resultado a las preguntas realizadas a los entrevistados las cuales tratan sobre que el usuario escoja una de las opciones dadas después de mostrar una imagen, la opción que pueden escoger es si la imagen que están observando corresponde a un robot o a un humano y que proporcionen su opinión del porque escogieron esa opción.

La gráfica mostrada a continuación corresponde a la pregunta numero uno descrita en el experimento dos (Obsérvese Fig. 38).

Para la pregunta número uno que corresponde a ¿A quien le pertenece el rostro de la siguiente imagen? En la cual se presenta la cara de un robot, se obtuvo una

[39]

Fig. 38. La gráfica muestra que la opción elegida por los entrevistados fue “robot”

Page 40: Investigación de mini pc android 4.0   robot-final

totalidad de respuestas correctas, esto debido a que la imagen muestra claramente que se trata de un robot.

[40]

Page 41: Investigación de mini pc android 4.0   robot-final

En la gráfica siguiente se presenta la pregunta número dos descrita en el segundo experimento (Obsérvese Fig. 39).

Para la pregunta número dos ¿A quien le pertenece el rostro de la imagen? La mayoría de los encuestados contestaron que el rostro de la imagen pertenecía a una persona, siendo esta la respuesta incorrecta ya que en realidad el rostro presentado es de un robot. Se le preguntó a los encuestados que porque creían que el rostro de la imagen pertenecía a una persona y ellos respondieron que porque era muy real el rostro y que para nada se parecía a un rostro.

La gráfica mostrada a continuación corresponde a la pregunta numero tres del experimento dos (Obsérvese Fig. 40).

[41]

Fig. 40. En la gráfica anterior se muestran los resultados a la pregunta 3- ¿A que rostro le pertenece?

Fig. 39. En la gráfica anterior se muestran los resultados a la pregunta 2- ¿A que rostro le pertenece?

Page 42: Investigación de mini pc android 4.0   robot-final

Para la pregunta numero tres ¿A quien le pertenece el rostro de la siguiente imagen? En la cual se presentaba un robot con el rostro de Albert Einstein, la mayoría de los encuestados respondieron que era el rostro de una persona ya que parecía muy real, solo un encuestado contesto acertadamente y dijo que era el rostro de un robot ya que las proporciones de sus facciones no parecían normales.

En la gráfica siguiente se presenta la tabulación a la pregunta número cuatro descrita en el segundo experimento (Obsérvese Fig. 41).

Para la pregunta numero cuatro ¿A quien le pertenece el rostro de la imagen? En la cual se presentó una imagen del rostro de una joven, todos los encuestados respondieron que el rostro pertenecía a un humano porque sus facciones eran tan reales y se veía a simple vista que era de un humano y no de un robot.

[42]

Fig. 41. En la gráfica anterior se muestran los resultados a la pregunta 4- ¿A que rostro le pertenece?

Page 43: Investigación de mini pc android 4.0   robot-final

La gráfica mostrada a continuación corresponde a la pregunta cinco descrita en el experimento dos (Obsérvese Fig. 42).

La última pregunta era la siguiente:Uno de los siguientes rostros le pertenece a un humano y el otro a un robot. ¿Cuál es el robot?Aquí se le presentaba al encuestado un robot y una persona abrazándose y el encuestado tenia que identificar cual era el robot.La mayoría de los encuestados supo cual era el robot pero no fue tan fácil de identificarlo ya que en realidad los dos parecían tan reales.

4.3.2 Conclusión del experimento 2

Como conclusión a estas preguntas se puede notar que hoy en día la tecnología esta avanzando muy rápido a un punto de poder confundir a una persona con un robot, y que gracias a las interfaces humano-robot puede haber una comunicación mas fácil e intuitiva entre estos dos.

[43]

Fig. 42. En la gráfica anterior se muestran los resultados a la pregunta 5- ¿Identifique cual de los dos individuos es un robot?

Page 44: Investigación de mini pc android 4.0   robot-final

4.4 Resumen

En resumen el capitulo anterior abordo los experimentos desarrollados a los usuarios para conocer su percepción acerca de las interfaces de diversos robots así como mostrar las graficas de las encuestas realizadas, esto con la finalidad de conocer si el trabajo desarrollado fue de cierto modo aceptado por los usuarios, ya que se pretende que en un futuro ellos sean los que puedan contar con un robot de servicio.

[44]

Page 45: Investigación de mini pc android 4.0   robot-final

5. CONCLUSIONES Y TRABAJOS FUTUROS

5.1 Conclusión

Durante el transcurso de la investigación se ha podido ver como el diseño y desarrollo de los robots de servicio ha generado la creciente necesidad de crear nuevas y mejores formas de comunicación entre dichos robots y los humanos, además de que se requiere que cada vez se realicen estas interfaces en dispositivos más fáciles de portar para el usuario. Por tanto para tratar de disminuir un poco esta necesidad, se aportó esta investigación y su resultado final que es la creación de una interfaz animada que simula una cara de aspecto caricaturesco que responde a las cuatro emociones básicas del cuerpo humano (neutro, feliz, enojado y triste).

Por otro lado también se observó en la investigación que hay muy poca literatura que trate sobre las interfaces, se trató de abordar lo mayor posible en esta investigación para que pueda servir a generaciones futuras que estén interesadas en el desarrollo de nuevas interfaces humano-robot para que de esta manera nos faciliten las tareas cotidianas a los humanos.

5.2 Trabajos Futuros

Se pretende continuar con la implementación de SMILEDROID en una segunda etapa montando el Mini PC conectado a un televisor sobre un robot de servicio y logrando la conectividad entre los sensores del robot y los disparadores de la aplicación para así lograr un mejor entendimiento por parte de los usuarios del estado del robot.

Con la fusión de los eventos del robot y la animación se lograra tener una mejor percepción acerca de las acciones que realiza el robot y así conseguir el objetivo principal de esta investigación que es el proporcionar interfaces amigables a los robots y que por medio de estas se cree un mejor vinculo entre dichos robots y los seres humanos.

[45]