1 / 30

Desarrollo de una interfaz multimodal para un robot domótico móvil. Control por voz y mando a distancia.

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

kirima
Télécharger la présentation

Desarrollo de una interfaz multimodal para un robot domótico móvil. Control por voz y mando a distancia.

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Desarrollo de una interfaz multimodal para un robot domótico móvil. Control por voz y mando a distancia. Jorge Cancela González

  2. 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

  3. 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

  4. Visión general del sistema • Objetivo: Controlar Roomba a través de las diversas interfaces de control

  5. 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.

  6. 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.

  7. 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

  8. 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.

  9. 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.

  10. 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

  11. 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

  12. 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)

  13. 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.

  14. 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

  15. 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

  16. 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.

  17. 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.

  18. 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.

  19. 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.

  20. 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

  21. 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.

  22. 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

  23. 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]

  24. 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.

  25. 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

  26. 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.

  27. 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.

  28. Comparación de interfaces

  29. 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.

  30. Gracias por vuestra atención.

More Related