ÍNDICE DE CONTENIDOS ÍNDICE DE CONTENIDOS ...................................................................................... I ÍNDICE DE FIGURAS. .......................................................................................... III 1. INTRODUCCIÓN ......................................................................................... 1 1.1. 2. INTERFAZ PERSONA-MÁQUINA .................................................................. 3 2.1. Estado del arte: Interfaces Persona-Máquina ................................................ 3 2.2. Interfaz Verbal ............................................................................................. 3 2.2.1. 2.2.2. 2.2.3. 2.3. 2.3.1. 2.4. 2.4.1. 2.4.2. 3. 4. 5. Estructura de la memoria ............................................................................. 2 Reconocimiento de voz (SERVIVOX) ............................................................................. 4 Síntesis de voz con emociones ..................................................................................... 4 Identificador de usuarios .............................................................................................. 4 Interfaz Visual .............................................................................................. 4 Tratamiento de Imágenes (Opencv) ............................................................................. 4 Interfaz Física ............................................................................................... 4 Brazo Robótico ............................................................................................................. 5 Cara Robótica ............................................................................................................... 5 APLICACIÓN ............................................................................................... 5 3.1. Control Roomba ........................................................................................... 6 3.2. Control Infrarrojos........................................................................................ 6 3.3. Control Luz ................................................................................................... 6 3.4. Control Conversación ................................................................................... 6 3.5. Tres en raya virtual....................................................................................... 6 3.6. Tres en raya físico......................................................................................... 6 EMOTIVIDAD ............................................................................................. 6 4.1. Relaciones.................................................................................................... 6 4.2. Emociones ................................................................................................... 6 ARQUITECTURA GENERAL DEL SISTEMA ..................................................... 7 5.1. 5.1.1. 5.1.2. 5.1.3. 5.1.4. 5.1.5. 5.1.6. 5.1.7. Arquitectura de comunicaciones. .................................................................. 7 Estado del arte: Arquitecturas de comunicaciones. ..................................................... 7 Descripción de una arquitectura Cliente/Servidor ....................................................... 9 Componentes de una arquitectura Cliente/Servidor ................................................... 9 Características de una arquitectura Cliente/Servidor ................................................ 10 Ventajas e inconvenientes de una arquitectura Cliente/Servidor ............................. 11 Estructura Cliente/Servidor implementada. ............................................................... 12 Mecanismo de comunicación: SOAP .......................................................................... 14 I 5.1.7.1. Sockets .................................................................................................................. 14 5.1.7.2. RPC ........................................................................................................................ 14 5.1.7.2.1. XML-RPC ........................................................................................................ 15 5.1.7.2.2. SOAP .............................................................................................................. 15 5.1.8. Estructura física implementada .................................................................................. 17 5.2. Modelo de Comportamiento ...................................................................... 18 5.2.1. Estado del arte: Módulo de comunicaciones. ............................................................ 18 5.2.1.1. GALAXY-II .............................................................................................................. 18 5.2.1.2. CU Communicator ................................................................................................. 19 5.2.2. Módulo de comportamiento implementado .............................................................. 20 6. BIBLIOGRAFÍA...........................................................................................22 II ÍNDICE DE FIGURAS. Figura 1. Figura 2. Figura 3. Figura 4. Figura 5. Figura 12. Figura 11. Figura 13. Figura 14. Figura 6. Figura 7. Figura 8. Figura 9. Figura 10. (Instituto Nacional de Estadística, 2003-2008) .......................................................................... 1 Arquitectura General del Sistema .............................................................................................. 7 Topologías de redes peer-to-peer. ............................................................................................. 8 Esquema genérico de arquitectura cliente-servidor. ................................................................. 9 Estructura de cliente-servidor de la implementación .............................................................. 13 Solicitud XML-RPC .................................................................................................................... 15 Respuesta XML-RPC ................................................................................................................. 15 Solicitud SOAP .......................................................................................................................... 16 Respuesta SOAP ....................................................................................................................... 16 Estructura física implementada ............................................................................................... 17 Script hub modelo GALAXY-II ................................................................................................... 19 Arquitectura GALAXY-II ............................................................................................................ 19 Proceso de comunicación con el reconocedor ......................................................................... 20 Proceso de comunicación con el sintetizador de voz ............................................................... 21 III 1. INTRODUCCIÓN En los últimos años se ha asistido a un incremento considerable del equipamiento tecnológico presente en cada hogar. De hecho, si se comparan cifras del instituto nacional de estadística (INE) para el año 2003 y para el 2008 esta evolución queda más que patente. Figura 1. (Instituto Nacional de Estadística, 2003-2008) Estas tendencias generan problemas que hasta ahora no habían aparecido relacionados con la dificultad de adaptación de determinados colectivos. Por ejemplo, según el INE, uno de los principales motivos de que el porcentaje de penetración de acceso a internet en los hogares sea de aproximadamente un 50% en el 2008 es que dichos colectivos“…tienen pocos conocimientos para utilizarlos (26,1%)”. Además, mientras el uso de los ordenadores por parte de menores de 10 a 15 años “…es prácticamente universal (94,1%)…” el porcentaje de personas entre 16 y 74 años que ha utilizado el ordenador en los últimos tres meses se reduce a “…el 61,0% de la población…”. Esto sustenta la idea de que es necesario un cambio en la forma de interactuar con los aparatos electrónicos. Actualmente cualquier aparato electrónico que se pueda adquirir viene con un manual de instrucciones para aprender a utilizarlo. Esto es un claro reflejo de que la interfaz, si bien puede estar simplificada, es más cercana a la máquina que a la persona y por tanto requiere un proceso de adaptación. En muchos casos estas dificultades impiden que las personas detecten la utilidad de estos dispositivos pues parecen demasiado complicados como para aprender a manejarlos. Además, existe un rechazo frente a máquinas que no presentan un comportamiento empático. Por ejemplo, el uso de un sistema de navegación GPS en un automóvil, se reduce si no es capaz de dar unas directrices adecuadas en función de la distancia al hito, velocidad, etc. 1 Frente a esta problemática las soluciones que se barajan pasan por la creación de sistemas capaces de servir de adaptación entre las máquinas y los humanos. Estos sistemas se sitúan más cerca de las personas de modo que permiten la interacción con los aparatos minimizando el proceso de aprendizaje necesario. Es decir, el usuario se comunicaría con el sistema de forma natural (bien por gestos, habla u otra forma de comunicación propia de las personas) y éste se encargaría de interpretar el mensaje y realizar la acción solicitada. Por otro lado, cada vez son más comunes los sistemas capaces de simular emociones humanas, puesto que se consideran como una vía de desarrollo para la aceptación de las máquinas por parte de las personas. Por tanto, el objetivo de este proyecto es el desarrollo sobre las tres vías que consideramos de importancia para acercar personas y máquinas: las interfaces, más amigables; la aplicación, un asistente domótico que proporcione verdadera utilidad; y la emotividad, que el usuario sea capaz de interaccionar con un sistema que se adapte en vez de mostrarse como una máquina monótona y desesperante. Es importante señalar que este proyecto se enmarca en una línea de trabajo desarrollada en el Grupo de Tecnología del Habla (GTH) que tiene como objeto la investigación para la integración del control verbal en entornos domóticos. En este sentido varias funcionalidades incluidas han sido realizadas en otros proyectos el grupo. 1.1. Estructura de la memoria La presente memoria está estructurada en función de las tres vías de desarrollo implementadas. Arquitectura general del sistema Interfaz Persona-Máquina implementada explicando. Aplicaciones Emotividad se hablará de emociones y relaciones. Resultados Líneas de trabajo futuras. 2 2. INTERFAZ PERSONA-MÁQUINA Como se ha mencionado en la introducción, los aparatos electrónicos presentan interfaces, que si bien están simplificadas no dejan de ser más cercanas a la máquina. Es el caso de un mando a distancia. Aunque en un botón ponga power y sea de otro color, el hecho de presionar botones es una acción que no está relacionada con una forma de comunicación propia de la persona. En este proyecto se sustituye esa forma de interactuar por otras más cercanas a la forma en la que una persona se dirigiría a otra, por ejemplo “enciende la luz”, “pon la luz” o frases similares. Por otro lado, para crear sistemas cuya utilización no sea considerada desesperante por parte de los usuarios se está tendiendo a las interfaces multimodales. Este tipo de interfaces integran diferentes vías de comunicación de modo que los usuarios y las máquinas intercambian información de diferentes maneras. En consecuencia, la utilización de los sistemas se convierte en una experiencia menos predeterminada. Es decir, ahora, si el usuario quiere alegrar al sistema puede acariciarle o dejarse ver entre otras acciones. Para el modelo implementado se ha incluido una interfaz verbal asociada al reconocimiento de voz mediante comprensión, síntesis de voz con emociones e identificador de usuario. También se emplea una interfaz física consistente en una cara y un brazo robóticos. El brazo es utilizado para interaccionar con el usuario en determinadas aplicaciones como los juegos, mientras que la cara es un símbolo del sistema cuya función es que las personas que tienen dificultades, o incluso a las que les desagrada el uso de un ordenador, puedan dirigirse a algo físico con un cierto parecido a las personas. Por último se han utilizado una interfaz visual basada en la librería de tratamiento de imágenes OpenCV para la entrada de datos y la pantalla como salida. A continuación se profundizará en cada una de ellas. 2.1. Estado del arte: Interfaces Persona-Máquina 2.2. Interfaz Verbal Pensando en que el usuario no tenga que aprender a comunicarse con el sistema aparece la idea de utilizar la voz. De hecho, la voz es una de las interfaces más intuitivas que existen ya que una vez que se aprende a hablar, constituye la principal forma de comunicación de las personas. Gracias a esto, a la hora de reconocer frases, si se crea una base de datos de tamaño y libertad de reconocimiento suficiente, el usuario no tendrá que aprender ningún comando ya que lo que solicitará lo hará de manera intuitiva. Por ejemplo, si el usuario desea encender una luz, podrá decir: “enciende la luz” o “pon la luz” o frases similares que no son distintas a lo que le diría a otra persona. Así mismo existen ventajas que son aplicables en el otro sentido de la comunicación, es decir, desde la máquina al usuario mediante síntesis de voz. Estas ventajas están relacionadas con el hecho de que el usuario no tiene que prestar una atención especial a la hora de recibir 3 información por parte del sistema, el proceso transcurre de forma similar a una conversación entre personas. De forma análoga, la identificación de usuarios mediante voz presenta ventajas como no requerir contraseñas ni proceso de verificación explícito, lo cual hace que el uso por parte de las personas sea completamente transparente. Todas estas ventajas conllevan que la interfaz verbal constituya la principal forma de comunicación del sistema. Facilitando el proceso de intercambio de información y contribuyendo a conseguir sistemas que sean aceptados por la mayor parte de las personas. Para la creación de esta interfaz ha sido fundamental el trabajo que se está realizando en el Grupo de Tecnología del Habla relacionado con reconocimiento de voz, síntesis de voz e identificación de usuarios. A continuación se profundizará sobre cada uno de ellos 2.2.1. Reconocimiento de voz (SERVIVOX) 2.2.2. Síntesis de voz con emociones 2.2.3. Identificador de usuarios 2.3. Interfaz Visual Los motivos que llevan a incluir una interfaz de este tipo es que se hace necesaria alguna forma de captar información del entorno sin solicitarla. Es decir, si por ejemplo el sistema realiza cualquier acción cuando hay alguien cerca de él habrá que detectar esa presencia resultando inapropiado que se esté constantemente preguntando si hay alguien cerca. Con este objetivo los nuevos medios de tratamiento de imágenes resultan muy útiles pues permiten recabar información del entorno tan heterogénea como si hay o no luz o si el usuario sonríe o está enfadado. Como salida de información se ha utilizado la pantalla. No obstante, con la idea de que el sistema sea aceptado por la mayoría de los usuarios, esta forma de comunicación debe utilizarse en situaciones muy puntuales ya que el objetivo es mitigar la sensación de estar dirigiéndonos a máquinas. Para la realización de esta interfaz ha sido fundamental el trabajo de Jorge Miguel Peñalba Zambrano y Daniel García Moral, ambos estudiantes del Laboratorio de Sistemas Electrónicos Digitales en el curso 2008-2009 que realizaron una práctica innovadora sobre detección de emociones mediante Opencv. A continuación se profundizará en el empleo del tratamiento de imágenes mediante la librería Opencv. 2.3.1. 2.4. Tratamiento de Imágenes (Opencv) Interfaz Física Hasta ahora se ha hablado de interfaces útiles para intercambiar información, pero existe un inconveniente: el sistema es abstracto. Esto significa que los usuarios son capaces de comunicarse de forma fácil mediante voz y el sistema es capaz de obtener información de forma 4 no intrusiva, pero, realmente, el interlocutor de la persona no existe como ente físico. Por tanto, es necesaria la presencia de una parte física a la que la persona pueda asociar como representación del sistema. En este proyecto se ha creado una cara robótica capaz de gesticular algunas expresiones emocionales. Esta cara hace las veces de interlocutor para las personas que ahora sí tienen algo a lo que dirigirse, cuando saluda o cuando juega con el sistema, la cara expresa su estado interno realimentando al usuario. De esta forma se diluye la sensación de estar interactuando con una máquina convencional. Por otro lado, se ha incluido un brazo robótico asociado a un juego, en concreto las tres en raya. De esta forma, el usuario puede interactuar de forma física con el sistema sin necesidad de dirigir una mirada a la pantalla. Para esta interfaz ha sido fundamental el trabajo realizado por Enrique Fueyo Ramírez y Juan Carlos Hernández Munuera, alumnos del Laboratorio de Sistemas Electrónicos Digitales en el curso 2008-2009 que trabajaron la creación de un sistema de sensores que permitiese jugar al tres en raya contra la máquina mediante el movimiento de piezas. En resumen, las interfaces físicas son necesarias para conseguir que una persona acepte un sistema emocional y además resultan de utilidad a la hora de proporcionar otro enfoque en la interacción persona máquina. 3. 2.4.1. Brazo Robótico 2.4.2. Cara Robótica APLICACIÓN En la introducción se habló del problema que tienen ciertos colectivos de usuarios a la hora de detectar una verdadera utilidad en los sistemas electrónicos. La solución pasa por encontrar una killer aplication que muestre a los usuarios el efecto que tienen los sistemas electrónicos en el incremento del rendimiento de cualquier actividad. Para perseguir este objetivo se ha implementado la funcionalidad de asistente domótico. Este tipo de asistentes se pueden asemejar a los electrodomésticos y, por tanto, parece viable conseguir situar el grado de aceptación de un sistema de esta clase al nivel de una lavadora o un frigorífico, es decir, aparatos que están presentes en la inmensa mayoría de las casas y que son utilizados por todos. 5 4. 3.1. Control Roomba 3.2. Control Infrarrojos 3.3. Control Luz 3.4. Control Conversación 3.5. Tres en raya virtual 3.6. Tres en raya físico EMOTIVIDAD Constituye la piedra angular de este sistema. Nace de la idea de elevar las máquinas a la categoría de compañeros domóticos ya que tendrán más aceptación por parte de los usuarios si se puede interaccionar con ellos de una forma más cercana. Para conseguirlo es necesaria la implementación de dos funcionalidades. La primera está recogida en el modelo de relaciones y trata sobre la adaptación del sistema a su relación con el usuario. Es decir, en un entorno domótico como el que se establece es necesario que el sistema sea capaz de recordar su relación con el usuario y modificar su comportamiento en función de ella, ya que de otra forma, un sistema con el que se convive y al que se trata como si fuese algo nuevo siempre genera un rechazo. La segunda funcionalidad es más ambiciosa y trata la idea de generar artificialmente emociones de modo que el sistema tenga un comportamiento cercano al humano para realizar tareas, como por ejemplo los juegos, de una manera más natural. Mediante este comportamiento la interacción persona máquina se mejora sustancialmente intentando que el usuario tenga la sensación de estar comunicándose con un igual. 4.1. Relaciones 4.2. Emociones 6 5. ARQUITECTURA GENERAL DEL SISTEMA La descripción esquemática de la arquitectura general del sistema se ilustra en la Figura x. Como se ve existen dos módulos de interfaces. Uno de ellos es la interfaz de entrada que recibe la información del hardware y que tras un cierto proceso de adaptación entrega al módulo de comportamiento. Este módulo será detallado más adelante pero su misión es reconducir dicha información al módulo de emotividad y al módulo de aplicaciones. El módulo de aplicaciones genera una respuesta relacionada con los objetivos de cada tarea mientras que el módulo de Figura 2. Arquitectura General del Sistema emotividad genera una respuesta emocional e información acerca de la relación con el usuario. Finalmente, el módulo de comportamiento recibe estas respuestas provenientes de cada módulo y genera una respuesta final que será entregada directamente a la interfaz de salida que actuará sobre el hardware. 5.1. Arquitectura de comunicaciones. En este sistema se ha utilizado una arquitectura distribuida en la que distintos componentes se comunican vía TCP/IP. Esta es una tendencia de los últimos años favorecida por las condiciones actuales de conectividad y cantidad de dispositivos. No obstante, antes de precisar la implementación realizada parece conveniente hacer un análisis de la situación y las diferentes alternativas que aparecen a la hora de crear un sistema de estas características. 5.1.1. Estado del arte: Arquitecturas de comunicaciones. La evolución de las comunicaciones entre ordenadores ha ido de la mano con los principales avances técnicos. Así pues, antiguamente existía un gran ordenador principal al cual se conectaban los usuarios mediante sencillos terminales remotos para solicitar un determinado servicio de entre todos los que eran ofrecidos. Estos terminales eran de escasas prestaciones y por tanto el sistema central llevaba el peso de las operaciones. Posteriormente, gracias al abaratamiento de los componentes, se ha ido evolucionando a la separación de servicios en diferentes equipos de modo que cada usuario se conectaba a una computadora dedicada. De esta forma se redujo el cuello de botella asociado a un gran ordenador que procesara las solicitudes de todos los terminales. Seguidamente aconteció el auge de los equipos de escritorio, lo cual permitió que los ordenadores servidores no necesitasen tanta potencia pues gran parte 7 de los cálculos son realizados en el equipo del usuario. Por último, la actual popularización de las redes de ordenadores hace que la mayoría de los equipos se encuentran interconectados. Este concepto da pie a las arquitecturas Cliente/Servidor en las que un usuario denominado cliente, que se encuentra realizando una tarea, puede demandar información a un servidor. Sin embargo, en estas arquitecturas los servidores pueden recibir muchas solicitudes con el consiguiente riesgo de convertirse en cuellos de botellas. Otra de las soluciones existentes es la arquitectura peer-to-peer (P2P). Este tipo de arquitecturas se basan en un concepto diferente. En ellas todos los componentes están al mismo nivel de modo que cada nodo o usuario es un cliente y servidor que recibe las peticiones de comunicaciones de sus vecinos y las envía a aquellos que estén próximos al destino. Además, puede realizar él mismo una petición. La ventaja fundamental es que no existe un servidor que controle las comunicaciones de modo que el sistema es enormemente escalable solucionando el problema que presentan las anteriores. Existen dos variaciones de esta arquitectura: P eer-to-peer centralizada: En la que un único nodo actúa como punto central del sistema de modo que todas las comunicaciones pasan por él. Este sistema presenta problemas de escalabilidad pues la capacidad del servidor central puede convertirse en un cuello de botella si el número de nodos conectados aumenta suficientemente. P eer-to-peer mixta: En esta versión existen nodos centrales que actúan como servidores para distribuir el tráfico. No obstante, la información de enrutamiento está en los nodos, de modo que si alguno de los módulos centrales se cae, el sistema puede comportarse como un peer-to-peer Figura 3. Topologías de redes peer-to-peer. puro. 8 A la vista de las alternativas, en este proyecto se ha decidido implementar una arquitectura Cliente/Servidor. Esto es así porque peer-to-peer está orientada a sistemas muy grandes en los que cada nodo toma decisiones globales ya que son quienes gobiernan. En la arquitectura Cliente/Servidor, existe la ventaja de que las peticiones de cada cliente pasan por el mismo servidor y, por tanto, la implementación de una lógica que coordine al sistema puede ser realizada en un único módulo. En el caso de las redes peer-to-peer, cada petición puede llevar un camino distinto y la implementación de una lógica de coordinación debería ser creada en cada nodo de forma distribuida. Además, el tamaño del sistema es suficientemente reducido como para que no exista, ni pueda existir en un futuro próximo, una limitación del número de módulos posibles debido a las capacidades del servidor. 5.1.2. Descripción de una arquitectura Cliente/Servidor Su funcionamiento es sencillo (figura x): se tiene un ordenador cliente, que requiere un servicio de un ordenador servidor que realiza la función para la que está programado. No obstante, esta configuración no es definitiva. Es decir, los ordenadores pueden ser clientes para determinadas tareas y servidores para otras ya que el objetivo es que cada ordenador realice las funciones óptimas para sus recursos. Figura 4. Esquema genérico de arquitectura cliente-servidor. La tendencia en este tipo de arquitecturas es que el servidor se encargue del peso de la computación mientras que los clientes realizan diversas acciones relacionadas con el usuario. De esta forma un sistema complejo es dividido en módulos haciendo más fácil su desarrollo y escalabilidad. Además, no existe una imposición sobre la situación de los módulos, de modo que pueden estar distribuidos físicamente en diferentes equipos incluso en diferentes localidades geográficas. 5.1.3. Componentes de una arquitectura Cliente/Servidor Los componentes principales de una arquitectura Cliente/Servidor son: C liente: también denominado front-end es el proceso que permite al usuario formular las solicitudes de información. Entre las funciones que 9 5.1.4. realiza un cliente se encuentran: administrar la interfaz de usuario, interactuar con el usuario, procesar la lógica de la aplicación y hacer validaciones locales, generar requerimientos de bases de datos, recibir resultados del servidor y formatear resultados. S ervidor: también denominado back-end, es el proceso encargado de procesar las peticiones que le realizan los diferentes clientes sobre los recursos que es capaz de administrar. Las funciones que puede realizar son: aceptar los requerimientos de bases de datos que hacen los clientes, procesar requerimientos de bases de datos, formatear datos para trasmitirlos a los clientes y procesar la lógica de la aplicación. Características de una arquitectura Cliente/Servidor Las características básicas de una arquitectura Cliente/Servidor son: C ombinación de un cliente que interactúa con el usuario, y un servidor que interactúa con los recursos compartidos. El proceso del cliente proporciona la interfaz entre el usuario y el resto del sistema. El proceso del servidor actúa como un motor de software que maneja recursos compartidos tales como bases de datos, impresoras, módems, etc. L as tareas del cliente y del servidor tienen diferentes requerimientos en cuanto a recursos del sistema, periféricos necesarios, etc. S e establece una relación entre procesos distintos, los cuales pueden ser ejecutados en la misma máquina o en máquinas diferentes distribuidas a lo largo de la red. E xiste una clara distinción de funciones basada en el concepto de "servicio", que se establece entre clientes y servidores. L a relación establecida puede ser de muchos a uno. Un servidor puede dar servicio a muchos clientes, regulando su acceso a recursos compartidos. L os clientes corresponden a procesos activos en cuanto a que son éstos los que hacen peticiones de servicios a los servidores. Estos últimos tienen un carácter pasivo ya que esperan las peticiones de los clientes. N o existe otra relación entre clientes y servidores que no sea la que se establece a través del intercambio de mensajes entre ambos. El mensaje es el mecanismo para la petición y entrega de solicitudes de servicio. El ambiente es heterogéneo. La plataforma de hardware y el sistema 10 5.1.5. operativo del cliente y del servidor no son siempre la misma. Precisamente una de las principales ventajas de esta arquitectura es la posibilidad de conectar clientes y servidores independientemente de sus plataformas. El concepto de escalabilidad tanto horizontal como vertical es aplicable a cualquier sistema Cliente/Servidor. La escalabilidad horizontal permite agregar más estaciones de trabajo activas sin afectar significativamente el rendimiento. La escalabilidad vertical permite mejorar las características del servidor o agregar múltiples servidores. Ventajas e inconvenientes de una arquitectura Cliente/Servidor Las principales ventajas del esquema Cliente/Servidor son: U na de las causas que más ha promovido el uso de sistemas Cliente/Servidor es la proliferación de plataformas hardware a bajo coste. Este hecho origina la principal ventaja de estas arquitecturas. Realizar sistemas complejos a partir de ordenadores más baratos que los necesarios para una solución centralizada. Además, gracias a la independencia entre clientes y servidor, se pueden utilizar distintos sistemas operativos y distintos elementos hardware, lo que permite crear sistemas flexibles y escalables a bajo coste. A l permitir interconectar máquinas heterogéneas se favorece un sistema eficiente donde cada módulo puede residir en un equipo de prestaciones ajustadas a dicho módulo. A sí mismo, este tipo de sistemas permiten que los ordenadores tradicionales se interconecten con nuevos sistemas creando funcionalidades que antes no estaban disponibles. A l dividir un sistema complejo en pequeños módulos se facilitan las tareas de desarrollo. El programador puede abordar un módulo de manera independiente al resto del sistema. Esto permite que las tareas sobre dicho módulo no requieran de un análisis del sistema completo. L a división en módulos permite que el crecimiento del sistema sea sencillo. Para añadir un nuevo módulo sólo se necesita conocer la interfaz de comunicación con el servidor. La forma en la que esté implementada el nuevo módulo no influye en el resto del sistema. Entre las principales desventajas del esquema Cliente/Servidor se encuentran: 11 5.1.6. El mantenimiento de estos sistemas resulta costoso pues se trata de conjuntos heterogéneos de software y hardware distribuido cuya depuración resulta costosa. P ara que los clientes y los servidores puedan comunicarse es importante que utilicen el mismo mecanismo (por ejemplo sockets o solicitud de procedimientos remotos o Remote Procedure Call (RPC)). Esto conlleva una limitación en los sistemas a elegir para implementar los módulos, pues deben ser compatibles con una implementación de este tipo. A demás, debido a la posibilidad de que varios clientes actúen sobre los mismos datos deben existir estrategias para el manejo de llamadas concurrentes y para mantener la consistencia de datos. E s importante tener en cuenta que el correcto funcionamiento del sistema depende de factores relacionados con las comunicaciones. Estos factores no aparecen en sistemas tradicionales y pueden ser congestión en la red, dificultad de tráfico de datos, etc. Estructura Cliente/Servidor implementada. A la vista de las características se ha determinado que la arquitectura Cliente/Servidor resulta idónea para el objetivo de este proyecto. Como se ha dicho es perfecta para incluir ordenadores tradicionales en sistemas mayores, que es precisamente el objetivo de este proyecto. 12 En la figura x se puede apreciar el esquema de comunicaciones de la arquitectura implementada. Como puede apreciarse el módulo que obtiene información del exterior (interfaz Figura 5. Estructura de cliente-servidor de la implementación de entrada) está compuesto por dos unidades software, opencv y robint (reconocedor de voz e identificador de usuario), que actúan como clientes ya que son procesos activos que generan cambios en el sistema a partir de cambios en estímulos de entrada. Por otro lado, el módulo de aplicaciones está compuesto por unidades de software específicas para cada tarea, esto es: 3 en raya virtual, 3 en raya físico, control de la luz, control de roomba, control de infrarrojos y control de conversación. Todas estas tareas son procesos activos pues analizan los estímulos de entrada que reciben indirectamente del módulo interfaz de entrada y determinan una respuesta que se traducirá como una solicitud al servidor principal. Los modelos de comportamiento y de emotividad, este último compuesto por el modelo de emociones y el de relaciones, están implementados en la unidad de software servidor principal. Esta unidad es servidor y cliente al mismo tiempo. Por un lado es servidor ya que no presenta un comportamiento independiente. Es decir, depende de la solicitud de los clientes para realizar una acción. Los clientes que se conectarán a esta unidad de software serán los integrantes de los módulos interfaz de entrada y aplicaciones. Por otro lado, es cliente puesto que los componentes del módulo interfaz de salida son totalmente pasivos, ya que no realizan ningún tipo de acción por iniciativa propia, siendo el servidor principal el que los activa mediante la solicitud de servicio. Finalmente, sólo resta hablar del módulo interfaz de salida. Este módulo está compuesto por las unidades de software control de cara y sintetizador. Además, hace uso del recurso 13 externo que genera el audio a partir del texto a sintetizar. Todos estos elementos son servidores pues requieren de una solicitud por parte del cliente, en este caso el servidor principal, para realizar cualquiera de las acciones para la que están programados. Una vez presentada la estructura de comunicaciones es necesario describir el mecanismo que se ha utilizado para hacer posible esta implementación. Esto es lo que se hará en el siguiente punto. 5.1.7. Mecanismo de comunicación: SOAP Como se ha mencionado anteriormente, la implementación de un modelo Cliente/Servidor requiere de un mecanismo de comunicación basado o bien en sockets o bien en RPC. A continuación se describirá cada uno de ellos para, finalmente, explicar la decisión implementada. 5.1.7.1. Sockets Un socket es un mecanismo de bajo nivel por el cual dos programas independientes a priori son capaces de intercambiar información. Se puede asemejar a un recurso compartido en el que ambos, tanto programa cliente como servidor, pueden escribir y leer información. Para que el socket esté correctamente definido es necesario un protocolo de transporte, una dirección IP y un puerto asociado al socket. De esta forma los programas pueden intercambiar octetos siempre y cuando ambos sean capaces de localizarse. Con este mecanismo es el programa cliente el que inicia la conexión permaneciendo el programa servidor a la espera. Inicialmente se hizo uso de la clase CSocket Node, que proporciona los métodos necesarios para la comunicación mediante sockets. No obstante, conforme el sistema crece se hace patente su principal problema. El tipo de información que se puede pasar es muy limitado haciendo necesarios métodos que la analizasen para determinar la tarea a realizar. Además, presentan problemas relacionados con el sincronismo de los métodos de transmisión y recepción de datos. El programa que recibe el dato se queda esperando durante un cierto tiempo o bien indefinidamente según se determine. Los inconvenientes es que si el tiempo de espera está acotado el programa puede continuar sin recibir los datos, ignorándolos. Por otro lado, si el tiempo de espera es indefinido, el programa receptor quedaría bloqueado. Este hecho en el caso de un servidor que espera una solicitud resulta especialmente relevante. En resumen, los sockets no son una implementación eficiente para este sistema ya que, al ser mecanismos de bajo nivel, presentan una gran complejidad a la hora de intercomunicar distintos módulos. Como alternativa aparecen las RPC. 5.1.7.2. RPC El mecanismo de solicitud de procedimientos remotos es una forma de comunicación entre procesos que permite a un programa ejecutar una función o procedimiento en otro distinto. La forma en la que se establece una llamada es la siguiente: Un programa cliente está en ejecución y en un momento dado necesita realizar una acción que es provista por otro programa 14 llamado servidor. En ese momento el cliente realiza una llamada al procedimiento enviando los parámetros que sean necesarios. Si la comunicación es exitosa el servidor recibirá la solicitud y comenzará a realizar la funcionalidad solicitada. Mientras el servidor realiza la tarea el cliente permanece bloqueado esperando una respuesta. Una vez que el servidor finaliza su acción devuelve el resultado de la operación al módulo cliente que sigue con su ejecución normal. El principal problema de este mecanismo frente a llamadas a procedimientos locales, es que la comunicación puede fallar en cualquier momento debido a errores de la red. No obstante, para funciones idempotentes en las que múltiples llamadas no modifican el resultado no presenta demasiadas dificultades. Hay que señalar que el mecanismo RPC es una definición que precisa ser implementada. En la actualidad existen dos grandes alternativas XML-RPC y Simple Object Access Protocol (SOAP). 5.1.7.2.1. XML-RPC XML-RPC es una implementación para RPCs que persigue la idea de sencillez. Su objetivo no es proporcionar una solución específica a cada situación sino que pretenda ser una implementación genérica que sea extensible a multitud de casos. Utiliza una codificación basada en el popular lenguaje de descripción XML y el protocolo de comunicación HTTP. Una de las ideas que generaron esta solución era que un programador de HTML fuese capaz de ver el código de un mensaje XML-RPC y pudiese entenderlo y modificarlo. A continuación se muestra un ejemplo de una solicitud y su respuesta. <?xml version="1.0"?> <methodResponse> <params> <param> <?xml version="1.0"?> <methodCall> <methodName>examples.getStateName </methodName> <params> <param> <value><i4>40</i4></value> </param> </params> </methodCall> Figura 6. <value><string>South Dakota</string></value> </param> </params> </methodResponse> Figura 7. Solicitud XML-RPC Respuesta XML-RPC No obstante, debido a la gran sencillez que busca, presenta una serie de limitaciones: La forma de llamar a los métodos es mediante methodName que puede contener identificadores como mayúsculas, minúsculas, números, subrayado, punto, dos puntos y barra. No obstante, esto presenta dificultades a la hora de pasar objetos como parámetros. Las estructuras y matrices son anónimas. Es decir, no se identifica el tipo de dato que se está pasando de modo que la única forma de determinarlos es conociendo el orden en que deben estar. 5.1.7.2.2. SOAP Simple Object Access Protocol (SOAP) es una evolución del protocolo XML-RPC. Se sitúa justo donde XML-RPC presenta sus limitaciones, es decir, permite definir tipos de datos. Esto 15 provoca que sea algo más complejo que el anterior pero, como contrapartida, ofrece mayor potencial para el desarrollo de aplicaciones. Como formato de los mensajes se ha utilizado también XML. Las ventajas de usar este lenguaje derivan de ser comúnmente utilizado por las empresas así como de los esfuerzos de desarrollo de código libre. No obstante, también existen inconvenientes al utilizar este tipo de lenguajes. En concreto, al ser un lenguaje descriptivo exhaustivo que permite la comprensión tanto de máquinas como de humanos, puede ralentizar la ejecución de los procesos. Por otro lado, SOAP no está vinculado a ningún protocolo de transporte. Esto ofrece la posibilidad de trabajar desde Single Mail Transfer Protocol (SMTP) a Hypertext Transfer Protocol (HTTP) o su versión cifrada HTTPs entre otros. Sin embargo es HTTP el que constituye la implementación más extendida ya que proporciona una de las principales ventajas de SOAP frente a otros métodos. Es decir, permite la comunicación a través de cortafuegos y proxies. A continuación se presenta un ejemplo de solicitud y respuesta mediante SOAP. <soapenv:Envelope> <soapenv:Envelope> xmlns:soapenv="http://schemas.xmlsoap.org/soap/ envelope/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelo pe/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addr essing"> <soapenv:Header> <wsa:ReplyTo> xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"> <soapenv:Body> <req:echo xmlns:req="http://localhost:8080/axis2/services /MyService/"> <req:category>classifieds</req:category> </req:echo> </soapenv:Body> </soapenv:Envelope> Figura 8. Solicitud SOAP <wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/ad dressing/role/anonymous</wsa:Address> </wsa:ReplyTo> <wsa:From> <wsa:Address>http://localhost:8080/axis2/services/MyS ervice</wsa:Address> </wsa:From> <wsa:MessageID>ECE5B3F187F29D28BC11433905662036</wsa: MessageID> </soapenv:Header> <soapenv:Body> <req:echo xmlns:req="http://localhost:8080/axis2/services/MySer vice/"> <req:category>classifieds</req:category> </req:echo> </soapenv:Body> </soapenv:Envelope> Figura 9. Respuesta SOAP Como puede verse, la estructura de los mensajes SOAP es bastante más compleja que los de XML-RPC. En definitiva, XML-RPC es un protocolo muy sencillo pero que, por su simplicidad presenta carencias a la hora de realizar determinadas acciones como pasar un objeto como parámetro. En contraposición, SOAP aparece como un protocolo de mayor complejidad pero que da cobertura a las carencias de XML-RPC. Como conclusión del análisis de ambos métodos se ha adoptado SOAP. De esta forma se asegura que el sistema pueda seguir creciendo sin problemas respecto al protocolo utilizado. Por otro lado, las herramientas que generan XML para SOAP constituyen un factor importante en la 16 decisión final. En este caso se ha utilizado JABON (Rodríguez Losada), una utilidad para la creación automática del código SOAP a partir de la implementación en C++ de las funciones. 5.1.8. Estructura física implementada Finalmente, con la idea de presentar el sistema completo, se adjunta la figura x en la que se ilustra la estructura física del sistema. Figura 10. Estructura física implementada Como puede observarse el sistema hace uso de tres ordenadores diferentes. El motivo de esta elección es que determinados programas, como son el reconocedor e identificador de locutor (robint) o el sintetizador de voz, que por sus características necesitan grandes recursos, deben ejecutarse en máquinas independientes. Se puede observar que el grueso de los procesos discurre en un ordenador central, en concreto todas las unidades de software del módulo aplicaciones y la unidad servidor principal que implementa el módulo comportamiento y emotividad. No obstante, la implementación de todas y cada una de estas unidades incluye el protocolo utilizado permitiendo que la distribución física del sistema sea variable en función de la posible variación de requisitos. Analizando el sistema se aprecia que el ordenador central se comunica con el dispositivo infrarrojo IRTRANS y con la webcam mediante USB. Además, hay una comunicación con un microprocesador Motorola Coldfire, en el que reside la versión del 3 en raya física, aparte de dos 17 de los ordenadores mediante TCP/IP. Finalmente, el ordenador en el que reside la unidad sintetizadorSoap se comunica por TCP/IP a un equipo del GTH donde reside el sintetizador de voz con emociones. 5.2. Modelo de Comportamiento En esta arquitectura el módulo de comportamiento juega un papel importante como coordinador del sistema. Como se ha visto, cualquier mensaje que quieran intercambiar los módulos pasa por él. Además presenta la necesidad de que debe ser escalable pues el sistema puede crecer y el módulo de comportamiento que sustenta la coordinación de las comunicaciones corre el peligro de ser el cuello de botella del sistema. Antes de abordar la solución propuesta se analizarán las posibles alternativas. 5.2.1. Estado del arte: Módulo de comunicaciones. El auge que los equipos informáticos han experimentado desde los noventa hace que cada vez sean más ambiciosas las aplicaciones que se ejecutan en ellos, este es el caso de las aplicaciones basadas en reconocimiento de voz. Estas aplicaciones unidas a la posibilidad de conexión a internet que casi cualquier ordenador tiene, proporciona el marco perfecto para la automatización de servicios telefónicos como alquiler de coches, reserva de hoteles, información de vuelos, etc. Este marco de aplicación presenta una gran complejidad y es por ello que se tiende a dividir este tipo de sistemas en módulos con funcionalidades independientes. Por ejemplo, un usuario que esté en una ciudad y desee realizar una reserva de hotel llamará a un teléfono que estará asociado a un servidor de audio. Este servidor de audio se comunicará con un reconocedor de voz que puede estar en otra ciudad. Este reconocedor de voz deberá enviar la información a un servidor que esté conectado a la base de datos de reservas del hotel que puede estar en una tercera ciudad. Por tanto, se está realizando un proceso descentralizado con intercambio de información entre diferentes módulos. Para coordinar este intercambio de información han aparecido módulos comunicadores. A continuación, debido a sus características, se van a analizar dos: el GALAXY-II Communicator (Seneff, y otros, 1998) elaborado como actualización del GALAXY (Goddeau, y otros, 1994) por el Massachusetts Institute of Technology, y el CU Communicator (Pellom, y otros, 2000) creado por la Universidad de Colorado. 5.2.1.1. GALAXY-II GALAXY-II es una arquitectura Cliente/Servidor para acceder a información online usando reconocimiento de voz. En la figura X se puede apreciar la representación esquemática del sistema. 18 La peculiaridad de este sistema consiste en que la interacción del hub con los servers se controla por medio de un lenguaje de script. Cada script contiene la lista de servidores con su dirección, puerto, la lista de servicios que es capaz ofrecer y uno o varios programas. Cada programa consiste en un conjunto de reglas (compuestas por una condición desencadenante y una operación consecuencia), una lista de variables de entrada y salida para cada regla, y un conjunto de variables opcionales sobre información del pasado del sistema. Cuando una regla se dispara la variable de entrada se empaqueta en un token y se envía al servidor que definía esa regla. Adicionalmente, el hub puede esperar un token del servidor con la variable de salida. Además la variables de entradas y salidas son almacenadas en un Figura 11. Script hub modelo GALAXY-II master token interno del hub. Como se ve, es el hub quien decide, en base a una serie de scripts qué servidor debe responder a la acción. Por tanto, se considera que este tipo de módulo de comunicación presenta inteligencia. 5.2.1.2. CU Communicator Análogo al modelo GALAXY-II aparece el CU Communicator. Éste también es un modelo Cliente/Servidor para acceder a información online mediante reconocimiento de voz. La particularidad de este sistema es Figura 12. Arquitectura GALAXY-II que el hub central de comunicaciones no presenta ningún tipo de inteligencia. Es decir, en este caso los módulos que originan los mensajes los que determinan dónde tiene que ser entregado. Por ejemplo, el servidor de audio manda al hub un mensaje que informa de la existencia de nuevo audio disponible y que debe ser 19 entregado al reconocedor de voz. De esta forma el hub actúa como un mero router enviando la información entre módulos. 5.2.2. Módulo de comportamiento implementado La solución adoptada pasa por un término medio entre las nombradas anteriormente. En este sistema se distingue el tipo de información a transmitir en función del origen o destino. Así pues se transmitirá información proveniente del reconocedor de voz, información dirigida al sintetizador de voz e información dirigida al modelo emocional. En función del tipo de mensaje el módulo de comportamiento presentará o no inteligencia. A continuación se expone el funcionamiento en cada caso. El proceso implementado para transmitir mensajes generados en por el reconocedor de voz consta de varias etapas y se puede ver en la figura x. Es importante señalar que en este caso las decisiones sobre a quién debe ser entregado el mensaje recae en el propio módulo de comportamiento y por ello se puede decir que presenta inteligencia. 1. 2. 3. 4. El reconocedor de voz detecta una nueva frase e identifica un concepto asociado. Este hecho es indicado al módulo de comportamiento actualizando el número de versión asociado al concepto. A partir de este momento se inicia un proceso de solicitud de información a cada tarea. El modelo de comportamiento realiza una transmisión en modo prueba del concepto reconocido a todos los módulos capaces de recibir información del reconocedor. C ada tarea analiza el concepto recibido en modo de prueba e indica al modelo de comportamiento si ese concepto le resulta de utilidad. El modelo de comportamiento mientras tanto, espera un tiempo determinado para recibir la respuesta de las tareas. Si ninguna tarea responde positivamente descartará el mensaje y finalizará el proceso. D e entre todas las tareas que indiquen la validez del concepto para sus objetivos, el módulo de comportamiento enviará el concepto de forma prioritaria a aquella que esté activa. Una tarea está activa si se encuentra en mitad del proceso para conseguir su objetivo. Por ejemplo, si está jugando a un juego, los conceptos válidos para el juego tenderán a ir prioritariamente a esa tarea, ya que se encuentra activa, no siendo así en el caso en el que aún no se haya empezado a jugar. Si no hay ninguna tarea activa se enviará a cualquiera de las Figura 13. Proceso de comunicación con el reconocedor que acepten el concepto como válido siguiendo un 20 orden preestablecido. En el caso de que hubiese varias tareas activas simultáneamente, el sistema también elegiría una de ellas en función de un orden preestablecido. Para la transmisión de los mensajes con destino al sintetizador el módulo de comportamiento no presenta inteligencia añadida ya que simplemente envía la solicitud. El algoritmo de funcionamiento es el mostrador en la figura x. Cada componente del sistema que desee sintetizar una frase determina un conjunto de parámetros que permiten seleccionarla entre todas las posibles. Además, indica al módulo de comportamiento que tiene una nueva solicitud mediante una actualización de la versión del concepto a sintetizar. Seguidamente, el módulo de comportamiento recorre cada uno de los componentes capaces de generar un mensaje para el sintetizador analizando su situación. Si el módulo desea sintetizar algún concepto el modelo de comportamiento completa la información suministrada por dicho módulo añadiendo la información relativa a la relación con el usuario y al estado emocional del sistema. Finalmente, se Figura 14. Proceso de comunicación con el sintetizador de voz envía la orden de síntesis al módulo sintetizador. Como se puede apreciar, el sistema envía todas las solicitudes de síntesis al módulo sintetizador siendo éste el que se encarga de retrasar una solicitud si ya hay otra en marcha. Por último, para la transmisión de los mensajes destinados a modificar el estado emocional, el módulo de comportamiento actúa como un receptor de mensajes. Cada componente del sistema que sea capaz de modificar el estado emocional puede realizar llamadas relativas al nivel de necesidad de Maslow que debe variar. El módulo de comportamiento atiende esas llamadas y modifica el valor del nivel de necesidad indicado. Como consecuencia de esta variación, el modelo emocional realiza una evaluación determinando la emoción final que es enviada al modelo de comportamiento para que influya sobre las acciones a realizar. 21 6. BIBLIOGRAFÍA Alcázar Prior Rosario Desarrollo de un conversor texto-voz con emociones y aplicación a la interacción hablada en entornos inteligentes // Proyecto Fin de Carrera. - Madrid : [s.n.], 2007. Goddeau David [y otros] GALAXY: A Human-Language Interface to on-line Travel Information [Artículo] // ISCLP. - 1994. Hurtado Gil Sandra Victoria Representación de la arquitectura de software usando UML // Universidad Icesi. Instituto Nacional de Estadística Encuesta sobre Equipamiento y Uso de Tecnologías de la Información y Comunicación en los hogares [Informe]. - 2003-2008. Márquez Avendaño Bertha Marie y Zulaica Rugarcía José Manuel Implementación de un reconocedor de voz gratuito a el sistema de ayuda a invidentes Dos-Vox // Universidad de las Américas Puebla. - Cholula : [s.n.], 2004. Pellom Bryan, Ward Wayne y Sameer Pradhan The CU Communicator: An Architecture for Dialogue Systems [Artículo] // ISCLP. - 2000. Pérez Magariños Nuria Mejora de la interfaz vocal de control de un robot autónomo móvil. Adaptación acústica y generación supervisada de mapas // Proyecto Fin de Carrera. Madrid : [s.n.], 2008. Rodríguez Losada Diego [En línea] // JABON a SOAP C++ Code Generator. - 2009. http://www.intelligentcontrol.es/jabon/. Seneff Stephanie [y otros] GALAXY-II: A Reference Architecture for Conversational System Development [Artículo] // ICSLP. - 1998. W3C SOAP Version 1.2 Part 1: Messaging Framework (Second Edition) [En línea]. - 2009. http://www.w3.org/TR/soap12-part1/. XML-RPC [En línea]. - 2009. - http://www.xmlrpc.com/. 22