Articulo_XXVI_Jornadas_cabeza.

Transcripción

Articulo_XXVI_Jornadas_cabeza.
DESARROLLO DE UN CABEZA ROBÓTICA CON CAPACIDAD
DE SEGUIMIENTO VISUAL E IDENTIFICACION DE PERSONAS
Salvador Domínguez Quijada
División Robótica y Visión Artificial - Centro Tecnológico CARTIF
Parque Tecnológico de Boecillo, parcela 205
47151-Valladolid, España
[email protected]
Eduardo Zalama Casanova
Dpto. de Ingeniería de Sistemas y Automática –Universidad de Valladolid
Paseo del Cauce s/n
47011-Valladolid, España
[email protected]
Jaime Gómez García-Bermejo
Dpto. de Ingeniería de Sistemas y Automática –Universidad de Valladolid
Paseo del Cauce s/n
47011-Valladolid, España
[email protected]
Resumen
Este artículo describe el desarrollo de una cabeza
robótica con capacidad gestual e interacción visual
y sonora. La capacidad gestual se la proporcionan
los 18 grados de libertad que posee que intentan
imitar en lo posible la movilidad facial humana.
Estos movimientos están distribuidos por las
distintas partes de la cabeza: ojos, boca, orejas y
cuello. En cuanto a la interacción visual se realiza
gracias a dos webcam que hacen las veces de ojos
del robot. Gracias a ellas, al PC al que están
conectadas y al software correspondiente es posible
procesar las imágenes en tiempo real para darle al
robot la capacidad de realizar seguimiento visual de
objetos y personas en movimiento, detección y
seguimiento de caras y reconocimiento de personas.
La finalidad de poner dos webcam idénticas como
ojos, además de una cuestión obviamente estética es
para poder implementar en el futuro algoritmos de
estereovisión con lo cual el robot podría realizar una
estimación de la posición 3D de objetos en el
espacio.
En cuanto a la interacción sonora, se realiza por
una parte detectando la posición angular relativa de
la fuente sonora predominante en cada instante y
por otra en un aspecto más comunicativo,
implementando algoritmos de reconocimiento de
habla y generando el robot su propia voz sintetizada.
El primer aspecto es para localizar la posición
relativa de la persona o cosa que genere un ruido y
poder orientar la cabeza hacia allá. El segundo y
tercer aspecto es para poder entablar una
conversación más o menos coherente con el
interlocutor.
Una de las aplicaciones más destacables podría ser
la de recepcionista que, además de proporcionar
información útil, le da un toque amable, simpático y
Palabras Clave: Cabeza robótica, capacidad gestual,
seguimiento visual, reconocimiento de caras,
interacción sonora, reconocimiento de habla, síntesis
de voz.
1
INTRODUCCIÓN
El diseño de cabezas parlantes y el desarrollo de lo
que posteriormente se ha conocido como robots
sociales tuvo sus inicios en los relatos de Isaac
Asimov (1920-1992) y empezó a ser desarrollado a
mediados del siglo XX para presentación en
exposiciones universales y museos.
Todavía queda mucho por investigar en este campo,
sin embargo hoy en día los robots sociales están
teniendo cada vez más auge en nuestra sociedad y
empiezan a ser demandados en determinados sectores
de la misma: Juguetes, museos, en nuestro hogar o en
investigación como herramienta para estudiar el
comportamiento humano. Las empresas que se
dedican a este sector sobre todo las asiáticas
aseguran que en un futuro no muy lejano la industria
de los robots sociales llegará a superar a la
automovilística y por ello merece la pena invertir en
investigación en este sector.
dos partes claramente diferenciadas por la magnitud
de la fuerza que manejan:
Cada vez se está teniendo más importancia la idea de
robot social, y cada vez surgen más proyectos
encaminados a desarrollar este tipo de robots.
Base y cuello.- Controlados por 4 motores DC de 24
volts. Con realimentación por potenciómetro. Los
distintos mecanismos para transmitir la fuerza desde
el motor a la respectiva articulación han sido
diseñados al efecto. Las articulaciones que
corresponden a este conjunto son:
Robot social es aquel que pretende interactuar con
las personas como si de otra persona se tratase. A su
vez, las personas interactúan con él mostrando
sensaciones como si tratasen con un ser con
sentimientos. Un robot será socialmente más
aceptado si presenta un aspecto similar a alguno de
los seres a los que estamos habituados, puede ser el
de una persona, un animal u otro ser que nos haga
sentir alguna sensación y que tenga una apariencia
más allá de la de un electrodoméstico o cualquier
otro aparato sin personalidad. Pero esto no es todo,
además debe tener la capacidad de expresar ciertos
sentimientos o emociones y un comportamiento que
revele cierta inteligencia ante los estímulos
exteriores.
El diseño de agentes con personalidad [4,10] y emociones
es uno de los retos más destacables de los últimos años
[3,7]. Por otra parte, la realización de movimientos y
gestos con el cuerpo juega un papel crucial en las
interacciones sociales y de comunicación: lenguaje del
cuerpo, expresiones faciales y comunicación oral.
Los robots sociales tienen multitud de aplicaciones
en la actualidad, aunque las posibilidades de este tipo
de robots en el futuro se extenderá a cualquiera de las
tareas que hoy en día puede ser realizada por el ser
humano. En la actualidad empiezan a ser utilizados
como juguetes (e.j. Furby, tigre afectivo [6]), guías
de un museo [8,9,11], entretenimiento e
investigación sobre la interacción hombre-máquina
(Kismet [2]), y muchos más. En cuanto a Kismet, se
centra en la interacción cara a cara de la persona con
el robot pues es el mejor método de comunicación ya
que es al que estamos más acostumbrados. Cuando
una persona se comunica con otras está prestando
atención no sólo al mensaje vocal que recibe sino a
otros mensajes recibidos por otros canales:
expresiones faciales, gestos y posturas.
•
Base o plataforma de giro derechaizquierda de la cabeza. Posee una movilidad
angular de (-90º,90º) y consiste en una
plataforma horizontal sobre la que se monta
el resto de la cabeza. Permite el giro de la
cabeza a la derecha o a la izquierda.
Figuras 1 y 2. Detalle movimiento de la plataforma
•
Articulación del cuello adelante-atrás. Es
una articulación situada en la parte inferior
del cuello con una movilidad de (-45º,45º) y
permite inclinar el cuello hacia delante o
hacia atrás acercando o alejando la cara del
objeto observado.
Figuras 3 y 4. Detalle del movimiento adelante-detras
•
Articulación del cuello arriba-abajo. Esta
articulación está situada en la parte superior
del cuello. Posee una movilidad de (30º,30º) y permite girar la cabeza para
levantarla o bajarla.
Con este tipo de robots se pueden aprender muchos
aspectos sobre la comunicación hombre-máquina sin
tener que ser esta a través de un teclado o medios
similares de introducción de datos, sino de una
manera más humana de comunicación en la sociedad.
2
ESTRUCTURA MECANICA
En esta sección se describirá la estructura mecánica
de la cabeza desarrollada. En ésta se puede observar
Figuras 5 y 6. Detalle del movimiento arriba-abajo
•
Articulación del cuello para inclinación
lateral de la cabeza. Está situada en la parte
superior del cuello y une este con la base del
“cráneo”. Presenta una movilidad de (45º,45º) y permite girar lateralmente la
cabeza.
Figuras 13 y 14. Detalle del movimiento de la mirada.
•
Figuras 7 y 8. Detalle del movimiento de inclinación
lateral
Párpados.- 1 servomotor por cada ojo para
abrir o cerrar el único párpado que tiene
cada ojo.
La otra parte del diseño es la que compone todo lo
que es el cráneo. En esta parte todos los actuadores
son servos comerciales y los esfuerzos que se han de
vencer para mover las respectivas articulaciones son
de baja magnitud. Hay 14 servos distribuidos por
todo el cráneo de la siguiente forma:
•
Movimiento de orejas.- 2 servos por cada
oreja. Uno es para girarla y otro para
levantarla o bajarla.
Figuras 15 y 16. Detalle del movimiento de párpados.
•
Cejas.- 1 servo por ceja para girar la ceja y
dar la sensación de fruncir más o menos el
ceño.
Figuras 9 y 10. Detalle del movimiento de orejas
•
Movimiento de ojos.- 2 servomotores para
controlar el giro de las 2 webcam
transformadas en sendos globos oculares.
Uno de los servomotores realiza el giro
conjunto derecha-izquierda y el otro realiza
la convergencia o divergencia de ambos
ojos, es decir, acercar o alejar el punto de
atención de la mirada.
Figuras 17 y 18. Detalle del movimiento de cejas.
•
Boca y comisura labial.- 1 servo para abrir
o cerrar la boca y otros 2 (uno en cada
comisura labial) para elevar o bajar la
comisura y simular efectos como el de la
sonrisa, enfado, etc.
Figuras 19 y 20. Detalle de la apertura y cierre de boca.
Figuras 11 y 12. Detalle del movimiento lateral de ojos
•
Dirección de la mirada.- 1 servomotor que
gira a la vez todo el conjunto formado por:
ojos, cejas, párpados. Al girar da la
sensación de elevar o bajar la mirada.
Por último, en cuanto a estructura mecánica, el
cráneo está hecho con aluminio y alberga parte de la
electrónica, a la cual, se puede acceder gracias a una
tapa que se abre por la parte posterior de la cabeza.
El esclavo 2 hace lo mismo que el 1 pero controlando
los motores que mueven la articulación arriba-abajo e
inclinación de la cabeza.
Finalmente el esclavo 3 se encarga de controlar la
posición de 16 servos aunque en este caso sólo
utilicemos 14. También es capaz de proporcionar el
estado de 16 entradas digitales y 10 analógicas, las
cuales, pueden ser útiles para la implantación de
sensores.
Figura 21. Detalle de la tapa de acceso a la electrónica.
3
ESTRUCTURA DE CONTROL
Para controlar la cabeza empleamos una estructura de
control de tipo jerárquico de forma que el control de
bajo nivel lo realiza diferentes microcontroladores,
estando el conjunto controlado por un computador
PC. El esquema de la estructura de control puede
observarse en la figura 22.
La sincronización de todos los movimientos relativos
a una determinada expresión facial y pose la realiza
el PC que determina cuanto se ha de mover cada
grado de libertad en cada instante y ordenando al
microcontrolador maestro que actualice la posición
del eje correspondiente.
El programa permite configurar expresiones faciales
y su grado de actualización temporal para diversos
estados de ánimo del robot, así como las transiciones
entre estados de ánimo en función de diferentes
eventos que puedan suceder y que pueden
configurarse fácilmente. Las transiciones se realizan
de manera probabilística. Cuando sucede un evento,
es decir, se fijan una serie de probabilidades de que
se pase de un estado actual a otros, con lo cual, ante
un determinado evento no siempre se comportará
igual pero la tasa neta de transiciones entre estados
cumplirán dichas probabilidades ante dicho evento.
Los eventos pueden ser tales como la detección de un
determinado sensor, que haya transcurrido un tiempo
concreto, o cualquier condición programada por
software que envíe el evento al controlador de
eventos.
Figura 22. Esquema de control electrónico.
4
Los movimientos de la cabeza están controlados por
4 microcontroladores PIC16F876 de los cuales 1
hace de maestro de los otros 3 y se comunica a su
vez con un PC exterior a través de un puerto RS232,
por lo tanto, este microcontrolador centraliza
físicamente todo el sistema, lee las órdenes
provenientes del PC y reparte las correspondientes
órdenes a los microcontroladores implicados.
También puede obtener información de estado de los
microcontroladores esclavos y de diferentes entradas
analógicas y digitales. Cada microcontrolador se
encarga del control específico de un grupo de
actuadotes, liberándose de estas tareas a los niveles
superiores.
El esclavo 1 se encarga del control en posición de 2
motores DC. Uno es el que mueve la plataforma base
de la cabeza y otro el que mueve la articulación
adelante-atrás del cuello.
SISTEMA DE SEGUIMIENTO E
IDENTIFICACION VISUAL.
Para la interacción visual se emplearán distintos
algoritmos dependiendo de la característica que se
pretende detectar en las imágenes proporcionadas por
la webcam.
Los algoritmos desarrollados se han programado bajo
licencia GPL con ayuda de las librerías OpenCV. En
particular se han utilizado funciones referentes a
análisis
de
movimientos,
seguimiento
y
reconocimiento de objetos.
Análisis de movimiento.- Para realizar un análisis de
las zonas en movimiento dentro de la imagen es
necesario poder distinguir dichas zonas en
movimiento de lo que es el fondo estático, de esta
forma creamos una plantilla de los que se mueve y lo
que no. Para sustraer el fondo, el algoritmo utilizado
emplea la siguiente metodología.
Se supone que la luminosidad p(x,y) de cada píxel de
la imagen varía independientemente de acuerdo a una
distribución normal entre capturas consecutivas. Un
píxel pertenece a una zona en movimiento si:
abs (m( x, y ) − p( x, y )) > c ( x, y )
(1)
donde:
m ( x, y )
S ( x, y )
N
(2)
es la media de luminosidad del píxel (x,y) para las N
capturas siendo
yx=
p
N
y
Figura 23. Seguimiento por movimiento.
⎛ S q ( x, y )
⎞
+ m( x, y ) 2 ⎟⎟ (3)
⎝ N
⎠
σ ( x, y ) = ⎜⎜
es la desviación típica de la luminosidad del píxel
(x,y) para las N capturas.
Siendo
S q ( x, y ) = ∑ p( x, y ) 2
(4)
N
Seguimiento por color. Método Camshift.- Camshift
viene de “Continuously Adaptative Mean-Shift” y se
emplea para realizar seguimientos de zonas de la
imagen con un determinado patrón de color.
Lo primero que hay que hacer antes de aplicar el
método, al igual que en el caso anterior, es
discriminar la zona que nos interesa seguir aplicando
la técnica correspondiente, por ejemplo, si nos
interesa seguir una cara por este método tendremos
que detectarla y la imagen y discriminarla del resto.
y C una constante.
La técnica empleada para calcular la dirección y
magnitud del movimiento se llama “Método de
representación del movimiento y flujo óptico
normal”. Este método requiere ir guardando un
historial de las zonas en movimiento etiquetadas en
cada captura con su “timestamp” ó instante de
captura. Con este conjunto de patrones de
movimiento etiquetados creamos una nueva imagen
llamada imagen historial del movimiento (IHM) en la
que se superponen todos los patrones de manera que
un timestamp mayor superpone a uno menor, el
fondo posee timestamp cero.
Si se aplica el gradiente a esta imagen IHM
obtendremos la dirección del movimiento local de los
bordes de la zona en movimiento. Si nos interesa la
dirección del movimiento global de esa zona se
calcula la media de los vectores de movimiento.
Seguidamente para aplicar camshift se calcula el
histograma de color, el cual nos sintetiza la
información que estamos buscando.
Seguidamente el método calcula una imagen
probabilística de dicho histograma dentro de la
imagen capturada. Esta imagen probabilística
muestra la probabilidad de que cada uno de los
píxeles pertenezca al patrón buscado.
En dicha imagen probabilística se fija una ventana de
búsqueda de un determinado tamaño y se calcula el
centroide de máxima probabilidad en esta ventana,
después se centra la ventana en dicho centroide y se
comprueba si converge dicha posición. Si es así la
posición es la del centro de la ventana de búsqueda
actual si no se vuelve a iterar centrando la ventana en
la nueva posición y así sucesivamente. En caso de
que converja la posición de la ventana se
redimensiona la ventana de búsqueda duplicando su
tamaño para albergar máximos globales si es que
hubiera alguno próximo al máximo local detectado.
Se trata de un algoritmo iterativo que converge a
máximos de probabilidad.
u = {u1 ,..., u n }
m
1
m
ui =
k
k =1
ui
(6)
la matriz de covarianza
ci , j = ∑ (uli − ul ) * (uli − ul )
(7)
l =1
la base de autoobjetos sería
Figura 24. Seguimiento por color.
e i {e1i ,..., eni }
Detección de caras.- Otro de los algoritmos
empleados en la cabeza robótica ha sido el de
detección de caras. Para ello hemos empleado otra de
las funciones de OpenCV de alto nivel. Esta busca
determinados objetos en la imagen. Estos “objetos”
se encuentras codificados en una base de datos
interna de OpenCV que en nuestro caso corresponde
a caras. Por lo tanto la función busca zonas de la
imagen capturada que se parezcan a caras reales de
personas, proporcionando una lista de coordenadas
en píxeles de dónde se encuentran dichas caras, así
como el ancho y alto que ocupa cada cara en la
imagen.
i 1,..., m1
Dado que se trata de una función de alto nivel que no
viene muy documentada la técnica que subyace y que
se encuentra entre las aplicaciones de ejemplo de
OpenCV, se ha utilizado tal cual y no se ha indagado
mucho en su funcionamiento interno pero funciona
bastante bien.
m1
(8)
m
donde
1
eli =
m
i k=1
vki ∗ (u lk − u l )
(9)
λi y vi={v1i, ...,vni} son los autovalores y autoobjetos
de la matriz de covarianzas
Cualquier imagen U puede ser descompuesta en el
subespacio de los autoobjetos.
Los coeficientes de descomposición son:
wi =
n
eli * (ul − u l )
(10)
l =1
Reconocimiento de caras.- Se han realizado
experimentos en el reconocimiento de pequeños
grupos de personas, en concreto no más de 10,
utilizando el método de reconocimiento por
proyección ortonormal en el espacio de los
autoobjetos. Este método consiste en lo siguiente.
Se introduce en el sistema una serie de imágenes que
podríamos representar como:
u i {u1i ,..., u ni }
i 1,..., n
donde
n.- nº de píxeles por imagen
m.- nº de imágenes
la media sería
(5)
se puede calcular la proyección sobre dicho
subespacio como:
ul = {u1 ,..., u n }
ul =
m1
wk elk + u l
(11)
k=1
utilizando las funciones que proporciona OpenCV es
fácil realizar estas operaciones obteniendo los
coeficientes para cada imagen de entrada que
servirán para compararlos con los coeficientes de las
imágenes capturadas para identificar a las personas.
Hay que decir que el método funciona si las
condiciones de luz no cambian y para pequeños
grupos de personas, siendo todavía el reconocimiento
de personas un aspecto a mejorar en cuanto a
resultados para pueda ser útil en nuestra aplicación.
Referencias
[1] Bates J. (1994)The Role of Emotion in Believable
Agents. Communications of the ACM 37(7), pp
123-125.
[2] Breazeal C. and Scassellati, (1999) How to Build
Robots that Make Friends and Influence People, In
Proc. of IROS-99 Kyonju, Korea.
[3] Cañamero L. (1997) Modelling motivation and
emotions as a basis for intelligent beavior. In Proc.
First Int. Conf. Autunomous Agents. Jhonson W.L.
Ed. New York, pp 148-155.
Figura 24. Reconocimiento de personas.
Actualmente se encuentran integrados los 3
algoritmos de seguimiento visual de manera que se
activan en un orden jerárquico. Cuando se detecta un
objeto en movimiento se le sigue con el algoritmo de
detección de movimientos, si no se moviera se aplica
el de detección de caras, si se detecta alguna cara,
esta sería el objeto a seguir pero si no se detecta
ninguna se aplica el algoritmo de seguimiento por
color ó camshift de la última cara detectada. Esto
puede ser útil cuando el individuo se pone de perfil o
se tapa la cara con la mano.
5
CONCLUSIONES
Se ha realizado parte del desarrollo de una cabeza
robótica con fines de interface natural hombremáquina. Se ha desarrollado la construcción
mecánica de la cabeza y el sistema de control de
movimiento. Por otra parte se han desarrollado un
conjunto de algoritmos de seguimiento visual. Entre
éstos se encuentra el seguimiento de objetos y
detección y seguimiento de caras. También se están
desarrollando algoritmos para el reconocimiento de
personas. Entre las tareas futuras a desarrollar
figuran el desarrollo de metodologías de aprendizaje
y así como un gestor de conversación.
Agradecimientos
Los trabajos de investigación realizados han sido
financiados parcialmente el Ministerio de Ciencia y
Tecnología (proyecto DPI2002-04377-C02-01), y
por la Junta de Castilla y León (programas de ayudas
a Proyectos de Investigación).
[4] Cassell J. Bickmore, Vilhjlmsson H., and Yan H.
(2000) More than Just a Pretty Face: Affordances of
Embodiment, In Proc. of 2000 International
Conference on Intelligent user Interfaces, New
Orleans, Lousiana.
[5] Hayes Roth B. and Rousseau D. (1998) A Social
Psychological Model for Synthetic Actors. In Proc.
Of the Scond International Conference on
Autonomous Agents, pp. 165-172
[6] Kirsch (1999) The Affective Tigger: A study on
the construction of an emotionally reactive toy, M.S.
dissertation, Prog. Media Arts Scie., Mass Inst.
Technol., Cambridge, 1999.
[7] Paiva A. (2001) Ed., Affective Interactions:
Toward a New Generation of Computer Interfaces.
New York: Springer Verlag, Lectures notes in
Computer Science 1814.
[8] Scheeff M. (2000) et al. Experiences with
Sparky, a social robot, in Proc. Workshop Interactive
Robot entertaiment (WIRE), Pittsburgh, PA.
[9] Thrun S. (2000) et al. Probabilistic Algorithms
and the Interactive Museum Tour Guide Robot
Minerva, International Journal of Robotics Research
19(11), 2000, pp. 972-999.
[10] Trappl R. and Petta, P. (1997) Eds. Creating
Personalities for Synthetic Actors: Toward
Autonomous Personality Agents. New York:
Springer Verlag
[11] Willeke T., Kunz C. and Nourbakhsh I. (2001)
The History of the Mobot Museum Robot Series: An
Evolutionary Study, In Proc. of FLAIRS 2001, Key
West. Florida.

Documentos relacionados