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.
2.
3.
4.
5.
6.
7.
8.
9.
10.
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
Introducción
Domótica
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
Accesibilidad
diseño para todos
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.
Ap.. central
Encamina los mensajes
desde las interfaces de
control hacia la
aplicación de Roomba.
Es la aplicación que
aporta flexibilidad al
sistema.
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
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
modo full
137, 50,50
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 de
comandos.
En el caso da la vuelta,
necesitamos:
1.
2.
3.
Poner Roomba en modo full
Instrucción de activación de ruedas
Velocidad de giro leída en el fichero
Loop
4. Petición de lectura de sensor de
ángulo girado.
Fin Loop
5. Enviar instrucción de parada
( da_la_vuelta )
SOFTWARE DE CONTROL DE ROOMBA
132 137, 50,-50
modo full
activación
Bucle
vel.rueda1 vel.rueda2
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.
Ficheros de configuración
Contiene información sobre las
dirección y configuración de los
sockets
Wiiuse.dll: lee los
paquetes en busca de un
dispositivo de Nintendo
Wiimote y extrae la
información útil.
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
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.
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.
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
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ó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:
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
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’.
Resultados, Conjunto 2
90
85
Porcentaje de frases correctamente
clasificadas

80
75
70
65
60
55
50
45

40
A partir de cierto umbral que
produce la mejor tasa de aciertos,
comenzamos a rechazar
‘conocidas’ por tener baja
confianza en el reconocimiento.
1
8
15 22 29 36 43 50 57 64 71 78 85 92 99
Umbral
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.
Pocentaje de frases correctamente clasificadas
90
80
70
60
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).
50
40
30
Umbral alto
Umbral medio
Umbral alto promedio (Umbral=0,92)
85
80
75
Si analizamos la tasa de reconocimiento con
más detalle vemos que el resultado final tiene
orígenes diferentes:
70
65
60
55
50
Frases conocidas
Frases desconocidas
Umbral bajo promedio (Umbral=0,52)
100
Umbral bajo: demasiadas frases fuera de
dominio aceptadas
Umbral alto: algunas desconocidas aceptadas
y bastantes conocidas no aceptadas.
90
80
70
60
50
40
30
20
10
0
Frases conocidas
Frases desconocidas
Umbral bajo
Comparación de interfaces
Caracterí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.
Descargar

PresentaciónPFC