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. Índice
1. Introducción
2. Visión general del sistema
3. Aplicación Roomba
4. Aplicación Wiimote
5. Aplicación teléfono móvil
6. Aplicación central
7. Aplicación reconocedor
8. Comparación de interfaces
9. Conclusiones
10. Demo
3. Introducción
Domótica Accesibilidad
acceso para todos
desarrollar las herramientas
necesarias para la integración
de una aspirada 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
Evaluar:
requisitos de usabilidad,
flexibilidad y precisión
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.
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.
8. Aplicación Roomba
¿Qué tenemos? ¿Qué queremos?
Aspiradora Roomba y API Ofrecer un conjunto de movimientos
de más alto nivel que las instrucciones
Se pueden enviar instrucciones de de API, más cercanas al lenguaje
bajo nivel que provocan acciones natural y configurables.
simples (mover una rueda, encender
LEDs, leer un sensor) Posibilitar que cualquier interfaz de
control pueda emplear el conjunto de
Se puede emplear un puerto serie movimientos.
para enviar información.
Automatizar el establecimiento de la
conexión.
9. Aplicación Roomba - Elementos
PC: Ejecuta la aplicación Roomba + API: Permite recibir
de control y gestión sencillas instrucciones a través del
de Roomba 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 Ficheros de configuración
Rootooth 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 ( avanza )
de la API de Roomba con
la ayuda de los ficheros de
configuración.
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
132
modo full
137, 50,50
activación vel.rueda1 vel.rueda2
3. Indica la velocidad de cada rueda según lo
leído en los ficheros de configuración.
11. Aplicación Roomba –Ejemplo 2
Ejemplo del nivel de abstracción que ofrece la aplicación
Los movimientos ( da_la_vuelta )
pueden ser más complejos
que el simple envío de
comandos.
SOFTWARE DE CONTROL DE ROOMBA
En el caso da la vuelta,
necesitamos:
1. Poner Roomba en modo full
2.
3.
Instrucción de activación de ruedas
Velocidad de giro leída en el fichero
132 137, 50,-50
modo full activación vel.rueda1 vel.rueda2
Loop
4. Petición de lectura de sensor de
Bucle 142, 37
petición lectura, sensor de ángulo
ángulo girado.
Fin Loop
5. Enviar instrucción de parada
137, 0,0
activación vel.rueda1 vel.rueda2
13. Aplicación wiimote
¿Qué tenemos? ¿Qué queremos?
Wiimote transmitiendo información a Aplicación que transmita mensajes de
través de bluetooth la interfaz desarrollada para Roomba
en función de los botones pulsados o
Librería Wiiuse.dll, permite establecer del estado de acelerometría.
una conexión con el wiimote desde el
PC y obtener el estado de los botones Evitar reenviar mensajes repetidos.
y los datos en crudo de acelerometría
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
Ficheros de configuración dispositivo de Nintendo
Contiene información sobre las Wiimote y extrae la
dirección y configuración de los información útil.
sockets
15. Aplicación wiimote
Detección de eventos: Salida:
botón pulsado o control por Los eventos son
acelerometría detectado y Máquina de estados: la entrada.
umbral superado. Los eventos son la entrada.
La salida son
La salida son movimientos movimientos en
en función del estado función del
estado
( avanza )
( avanza_rapido)
( retrocede)
.
.
.
16. Aplicación para teléfono móvil
¿Qué tenemos? ¿Qué queremos?
Teléfono móvil con capacidad de Aplicación que transmita mensajes de
detectar el estado de los botones y de la interfaz desarrollada para Roomba
generar menús en los que el usuario en función de los botones pulsados o
puede navegar entre las diversas del mensaje seleccionado en el menu.
opciones.
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.
Teléfono móvil N70: JAVA J2ME: En Symbian
ejecuta la aplicación que podemos desarrollar
lee los botones y genera aplicaciones en lenguaje
los menús nativo o bien trabajar con
J2ME instalando en el
Ficheros de configuración dispositivo una versión
Contiene información sobre la reducida de la máquina
dirección y configuración del virtual de Java.
puerto serie.
18. Teléfono móvil
Detección de eventos: Salida:
Aplicación del teléfono
botón pulsado del joystick u En función de lo
móvil:
opción seleccionada en los que
Gestiona los menús y
menús. seleccionemos o
ofrece un interfaz que
permite emplear el joystick del movimiento
central del teléfono como del joystick se
método de control. enviará un
movimiento.
( avanza )
( avanza_rapido)
( retrocede)
.
.
.
19. Aplicación central
¿Qué tenemos? ¿Qué queremos?
Tres aplicaciones que controlan las Establecer las comunicaciones con
interfaces de entrada. todas las aplicaciones de forma
automática.
Una aplicación para controlar el robot
que queremos manejar, por lo tanto Comprobar el estado de cada una de
aplicación de salida. 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:
1. Crear dos conjuntos de
frases disjuntos:
conocidas y
desconocidas.
2. 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 90
Resultados, Conjunto 2
de error se debe a que todas las 85
Porcentaje de frases correctamente
‘desconocidas’ son aceptadas
80
75
70
clasificadas
Si el umbral aumenta vamos 65
60
rechazando la mayoría de 55
‘desconocidas’ y alguna ‘conocida’. 50
45
40
A partir de cierto umbral que 1 8 15 22 29 36 43 50 57 64 71 78 85 92 99
Umbral
produce la mejor tasa de
aciertos, comenzamos a rechazar
‘conocidas’ por tener baja
confianza en el reconocimiento.
27. Reconocedor – Determinación del
umbral óptimo
Pocentaje de frases correctamente clasificadas
Conclusión
90
El umbral que suele ofrecer la mayor tasa de 80
reconocimiento se encuentra en torno a 0,86. 70
60
Sin embargo si calculamos el intervalo de 50
confianza al 95% vemos que no hay 40
diferencias estadísticamente significativas 30
Umbral alto Umbral medio Umbral bajo
entre un umbral alto (0,94), medio (0,72) o
Umbral alto promedio (Umbral=0,92)
bajo (0,52). 85
80
75
Si analizamos la tasa de reconocimiento con
70
65
60
más detalle vemos que el resultado final tiene 55
50
orígenes diferentes: Frases conocidas Frases desconocidas
Umbral bajo promedio (Umbral=0,52)
100
Umbral bajo: demasiadas frases fuera de 90
80
70
dominio aceptadas 60
50
40
Umbral alto: algunas desconocidas aceptadas 30
20
10
y bastantes conocidas no aceptadas. 0
Frases conocidas Frases desconocidas
29. Conclusiones
1. Hemos elaborado un sistema con múltiples interfaces de
control evaluando las ventajas e inconvenientes de cada una
de ellas.
2. El sistema es lo suficientemente flexible 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.