Desarrollo de una interfaz multimodal para un robot domótico móvil. Control por voz y
mando a distancia.
Jorge Cancela González
Índice
1. Introducción2. Visión general del sistema3. Aplicación Roomba4. Aplicación Wiimote5. Aplicación teléfono móvil6. Aplicación central7. Aplicación reconocedor8. Comparación de interfaces9. Conclusiones10. Demo
Introducción
Domótica Accesibilidad
Usabilidad
diseño para todos desarrollar las herramientas necesarias para la integración de una aspiradora en un entorno domótico
facilidad y naturalidad en el uso de las interfaces
Visión general del sistema
Controlar Roomba a través de las diversas interfaces de control Objetivo:
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 mensajesdesde las interfaces decontrol hacia la aplicación de Roomba.
Es la aplicación que aporta flexibilidad al sistema.
Ap.. central
Aplicación Roomba
¿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.
¿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.
Aplicación Roomba - Elementos Roomba + API: Permite recibir
sencillas instrucciones a través del puerto serie
Rootooth: Permite implementar el perfil SPP de bluetooth
Perfil SPP: perfil de bluetooth que Implementa un puerto serie virtual
Dispositivo Bluetooth:Establece la comunicación bluetooth con el Rootooth
PC: Ejecuta la aplicaciónde control y gestión de Roomba
Ficheros de configuraciónContiene 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.
132 137, 50,50
( avanza )
En este caso la capa deabstracción realiza las siguientes acciones:
1. Cambia el estado de Roomba a modo full para poder controlar las ruedas2. A continuación envía el comando de puesta en marcha3. Indica la velocidad de cada rueda según lo leído en los ficheros de configuración.
modo full activación vel.rueda1 vel.rueda2
Aplicación Roomba –Ejemplo 2 Ejemplo del nivel de abstracción que ofrece la aplicación
Los movimientos pueden ser más complejos
que el simple envío decomandos.
132 137, 50,-50
( da_la_vuelta )
En el caso da la vuelta, necesitamos:
1. Poner Roomba en modo full2. Instrucción de activación de ruedas3. Velocidad de giro leída en el fichero
Loop4. Petición de lectura de sensor de
ángulo girado.Fin Loop
5. Enviar instrucción de parada
modo full activación vel.rueda1 vel.rueda2
SOFTWARE DE CONTROL DE ROOMBA
137, 0,0 activación vel.rueda1 vel.rueda2
142, 37Bucle petición lectura, sensor de ángulo
( 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 Roomba – Interfaz de control
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 botonesy 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 capacitivovariable en función de la aceleración
Perfil HID: trasmitepaquetes autodescriptivos.
Wiiuse.dll: lee los paquetes en busca de un dispositivo de Nintendo Wiimote y extrae la información útil.
Ficheros de configuraciónContiene 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.
Máquina de estados: Los eventos son la entrada.
La salida son movimientos en función del estado
Salida: Los eventos son la entrada.
La salida son movimientos en función del estado
( avanza )( avanza_rapido)( retrocede)...
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
Teléfono móvil N70: ejecuta la aplicación que lee los botones y genera los menús
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.
Ficheros de configuraciónContiene 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.
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.
Salida: En función de lo que seleccionemos o del movimiento del joystick se enviará un movimiento.
( avanza )( avanza_rapido)( retrocede)...
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ónContiene 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:
1. Crear dos conjuntos de frases disjuntos: conocidas y desconocidas.
2. Dividir cada uno de los conjuntos en entrenamiento y test
Reconocedor – Determinación del umbral óptimo
Resultados, Conjunto 2
40
45
50
55
60
65
70
75
80
85
90
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99Umbral
Porc
enta
je d
e fr
ases
cor
rect
amen
te
clas
ifica
das
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 aceptadasUmbral alto: algunas desconocidas aceptadas y bastantes conocidas no aceptadas.
Pocentaje de frases correctamente clasificadas
30
40
50
60
70
80
90
Umbral alto Umbral medio Umbral bajo
Umbral alto promedio (Umbral=0,92)
50
55
60
65
70
75
80
85
Frases conocidas Frases desconocidas
Umbral bajo promedio (Umbral=0,52)
0
10
20
30
40
50
60
70
80
90
100
Frases conocidas Frases desconocidas
Comparación de interfacesCaracterística
Flexibilidad
Precisión
Usabilidad
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.
Gracias por vuestra atención.