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.