300 likes | 466 Views
Desarrollo de una interfaz multimodal para un robot domótico móvil. Control por voz y mando a distancia. Jorge Cancela González. Introducción Visión general del sistema Aplicación Roomba Aplicación Wiimote Aplicación teléfono móvil Aplicación central Aplicación reconocedor
E N D
Desarrollo de una interfaz multimodal para un robot domótico móvil. Control por voz y mando a distancia. Jorge Cancela González
Introducción Visión general del sistema Aplicación Roomba Aplicación Wiimote Aplicación teléfono móvil Aplicación central Aplicación reconocedor Comparación de interfaces Conclusiones Demo Índice
Introducción Domótica Accesibilidad • diseño para todos • desarrollar las herramientas necesarias para la integración de una aspiradora en un entorno domótico Usabilidad • facilidad y naturalidad en el uso de las interfaces
Visión general del sistema • Objetivo: Controlar Roomba a través de las diversas interfaces de control
Visión general del sistema • Roomba: • Aplicación de control • y gestión de Roomba corriendo en el PC. • La aplicación se comunica con Roomba a través • de Bluetooth y con el resto de aplicaciones a través • de los sockets del sistema.
Visión general del sistema • Interfaces de control: • Aplicaciones para el control de la interfaces • en el PC, además de una aplicación en el • teléfono móvil. Esta última se encarga de • la gestión de menús y botones pulsados.
Visión general del sistema • Aplicación central: • Establece y mantiene las comunicaciones. • Encamina los mensajes • desde las interfaces de • control hacia la aplicación de Roomba. • Es la aplicación que aporta flexibilidad al sistema. Ap.. central
Aplicación Roomba • ¿Qué queremos? • Ofrecer un conjunto de movimientos de más alto nivel que las instrucciones de API, más cercanas al lenguaje natural y configurables. • Posibilitar que cualquier interfaz de control pueda emplear el conjunto de movimientos. • Automatizar el establecimiento de la conexión. • ¿Qué tenemos? • Aspiradora Roomba y API • Se pueden enviar instrucciones de bajo nivel que provocan acciones • simples (mover una rueda, encender LEDs, leer un sensor) • Se puede emplear un puerto serie para enviar información.
Aplicación Roomba - Elementos • PC: Ejecuta la aplicación • de control y gestión • de Roomba • Roomba + API: Permite recibir • sencillas instrucciones a través del • puerto serie • Perfil SPP: perfil de bluetooth que • Implementa un puerto serie virtual • Rootooth: Permite implementar • el perfil SPP de bluetooth • Dispositivo Bluetooth:Establece la comunicación bluetooth con el Rootooth • Ficheros de configuración • Contiene información sobre la dirección y configuración del puerto serie.
Aplicación Roomba –Ejemplo 1 • Ejemplo del nivel de abstracción que ofrece la aplicación • La aplicación traduce los movimientos a secuencias de la API de Roomba con la ayuda de los ficheros de • configuración. ( avanza ) • En este caso la capa de • abstracción realiza las siguientes • acciones: • 1. Cambia el estado de Roomba a modo full para poder controlar las ruedas • 2. A continuación envía el comando de • puesta en marcha • 3. Indica la velocidad de cada rueda según lo leído en los ficheros de configuración. 132 137, 50,50 modo full activación vel.rueda1 vel.rueda2
Aplicación Roomba –Ejemplo 2 • Ejemplo del nivel de abstracción que ofrece la aplicación ( da_la_vuelta ) • Los movimientos pueden ser más complejos • que el simple envío de • comandos. SOFTWARE DE CONTROL DE ROOMBA • En el caso da la vuelta, • necesitamos: • Poner Roomba en modo full • Instrucción de activación de ruedas • Velocidad de giro leída en el fichero • Loop • Petición de lectura de sensor de • ángulo girado. • Fin Loop • 5. Enviar instrucción de parada 132 137, 50,-50 modo full activación vel.rueda1 vel.rueda2 Bucle 142, 37 petición lectura, sensor de ángulo 137, 0,0 activación vel.rueda1 vel.rueda2
Aplicación Roomba – Interfaz de control ( atiende ) ( deja_atender ) ( avanza_despacio ) ( retrocede ) ( avanza_rapido ) ( gira_despacio_derecha ) ( gira_rapido_derecha ) ( gira_despacio_izquierda ) ( gira_rapido_izquierda ) ( para ) ( aspira ) ( a_casa ) ( da_la_vuelta ) ( graba_recorrido_1 ) ( final_recorrido_1 ) ( recorrido_1)
Aplicación wiimote • ¿Qué tenemos? • Wiimote transmitiendo información a través de bluetooth • Librería Wiiuse.dll, permite establecer • una conexión con el wiimote desde el PC y obtener el estado de los botones • y los datos en crudo de acelerometría • ¿Qué queremos? • Aplicación que transmita mensajes de la interfaz desarrollada para Roomba en función de los botones pulsados o del estado de acelerometría. • Evitar reenviar mensajes repetidos. • Capacidad de utilizar el control con acelerometría solo en determinadas ocasiones. • Capacidad de emplear el mismo evento para enviar diferentes mensajes en función de las condiciones.
Aplicación wiimote - Elementos • Wiimote: botones de control, • más información de los • acelerómetros en los ejes: x,y,z • Acelerómetros: elemento capacitivo • variable en función de la aceleración • Perfil HID: trasmite • paquetes autodescriptivos. • Wiiuse.dll: lee los paquetes en busca de un dispositivo de Nintendo Wiimote y extrae la información útil. • Ficheros de configuración • Contiene información sobre las dirección y configuración de los sockets
Aplicación wiimote • Detección de eventos: botón pulsado o control por acelerometría detectado y umbral superado. • Salida: • Los eventos son la entrada. • La salida son movimientos en función del estado • ( avanza ) • ( avanza_rapido) • ( retrocede) • . • . • . • Máquina de estados: • Los eventos son la entrada. • La salida son movimientos en función del estado
Aplicación para teléfono móvil • ¿Qué tenemos? • Teléfono móvil con capacidad de detectar el estado de los botones y de generar menús en los que el usuario puede navegar entre las diversas opciones. • ¿Qué queremos? • Aplicación que transmita mensajes de la interfaz desarrollada para Roomba en función de los botones pulsados o del mensaje seleccionado en el menu. • Automatizar el establecimiento de las comunicaciones entre el teléfono móvil y el PC.
Teléfono móvil • SO Symbian: Diseñado especialmente para este tipo de dispositivos. Hace uso eficiente de los escasos recursos de memoria de los que dispone. Administrar eficientemente la energía. • JAVA J2ME: En Symbian podemos desarrollar aplicaciones en lenguaje nativo o bien trabajar con J2ME instalando en el dispositivo una versión reducida de la máquina virtual de Java. • Teléfono móvil N70: ejecuta la aplicación que lee los botones y genera los menús • Ficheros de configuración • Contiene información sobre la dirección y configuración del puerto serie.
Teléfono móvil • Detección de eventos: botón pulsado del joystick u opción seleccionada en los menús. • Salida: • En función de lo que seleccionemos o del movimiento del joystick se enviará un movimiento. • ( avanza ) • ( avanza_rapido) • ( retrocede) • . • . • . • Aplicación del teléfono móvil: • Gestiona los menús y ofrece un interfaz que permite emplear el joystick central del teléfono como método de control.
Aplicación central • ¿Qué tenemos? • Tres aplicaciones que controlan las interfaces de entrada. • Una aplicación para controlar el robot que queremos manejar, por lo tanto aplicación de salida. • ¿Qué queremos? • Establecer las comunicaciones con todas las aplicaciones de forma automática. • Comprobar el estado de cada una de las aplicaciones (no todas tienen que estar activas) • Encaminar los mensajes lo más rápido posible.
Aplicación central • Aplicaciones a interconectar • Aplicación de control y gestión de Roomba • Aplicación reconocedor • Aplicación de control de teléfono móvil • Aplicación de control de Wiimote • Ficheros de configuración • Contiene información sobre los sockets
Aplicación central – Flujo de la aplicación • Después del arranque de la aplicación se establece la comunicación a través de los sockets del sistema. • Periódicamente se comprueba el estado de las conexiones (un conexión se puede caer) • Periódicamente se comprueba si alguna de la interfaces ha enviado algún mensaje.
Reconocedor de voz • Servivox: esta aplicación es capaz de generar una gramática (detrás de cada palabra que otras palabras pueden venir) a partir de un conjunto de ejemplos. • Ofrece la secuencia de palabras más probable según lo que el locutor dice y la gramática que conoce. • Resumiendo: Pasa de voz a texto y calcula la confianza que tiene en haberlo hecho bien
Reconocedor de voz • Servivox: además del transductor voz/texto, Servivox tiene un transductor de comprensión que permite asociar un concepto a un texto. • Ejemplo: • gira a la derecha -> orden[gira_despacio_derecha] • gira a la derecha despacio -> orden[gira_despacio_derecha] • a la derecha -> orden[gira_despacio_derecha] • a la derecha despacio -> orden[gira_despacio_derecha] • derecha -> orden[gira_despacio_derecha] • derecha despacio -> orden[gira_despacio_derecha] • giro a la derecha -> orden[gira_despacio_derecha] • giro a la derecha despacio -> orden[gira_despacio_derecha]
Reconocedor – Determinación del umbral óptimo • Objetivo: determinar un umbral que permita aceptar el mayor número de frases conocidas y desestimar el mayor número de aquellas que no pertenezcan al dominio.
Reconocedor – Determinación del umbral óptimo • Preparación del experimento: • Crear dos conjuntos de frases disjuntos: conocidas y desconocidas. • Dividir cada uno de los conjuntos en entrenamiento y test
Reconocedor – Determinación del umbral óptimo • Patrón de resultados de entrenamiento • Si el umbral es muy bajo, la tasa de error se debe a que todas las ‘desconocidas’ son aceptadas • Si el umbral aumenta vamos rechazando la mayoría de ‘desconocidas’ y alguna ‘conocida’. • A partir de cierto umbral que produce la mejor tasa de aciertos, comenzamos a rechazar ‘conocidas’ por tener baja confianza en el reconocimiento.
Reconocedor – Determinación del umbral óptimo • Conclusión • El umbral que suele ofrecer la mayor tasa de reconocimiento se encuentra en torno a 0,86. • Sin embargo si calculamos el intervalo de confianza al 95% vemos que no hay diferencias estadísticamente significativas entre un umbral alto (0,94), medio (0,72) o bajo (0,52). • Si analizamos la tasa de reconocimiento con más detalle vemos que el resultado final tiene orígenes diferentes: • Umbral bajo: demasiadas frases fuera de dominio aceptadas • Umbral alto: algunas desconocidas aceptadas y bastantes conocidas no aceptadas.
Conclusiones 1. Hemos elaborado un sistema con múltiples interfaces de control cada uno con sus ventajas e inconvenientes. 2. El sistema es lo suficientemente escalable para añadir de forma sencilla una nueva interfaz de control o una nueva salida. 3. Hemos establecido los criterios de decisión a la hora de seleccionar un umbral de decisión adecuado para nuestra aplicación.