Sistema de visión empotrado en arquitectura de control distribuida para robot humanoide Pau Muñoz Benavent, J. Francisco Blanes Noguera, José Simó Ten, Javier O. Coronel, Miguel Albero Gil Instituto de Automática e Informática Industrial, Universidad Politécnica de Valencia, Valencia, España. {pamuobe, pblanes, jsimo, jacopa1,mialgil}@upvnet.upv.es Resumen Los sistemas de visión artificial son una de las aplicaciones más complejas del ámbito de los sistemas sensoriales en tanto la señal a tratar es compleja en términos lógicos y de espacio. Por este motivo en este tipo de aplicaciones los requerimientos computacionales son siempre muy altos lo cual hace todavía más compleja su implantación en sistemas móviles como es el caso de los robots. En este trabajo 1 se presentan una solución basada en el desarrollo en un sistema empotrado de visión que forma parte del sistema distribuido de un robot humanoide. Esta arquitectura provee al robot un nodo específico para el tratamiento de las imágenes independiente del encargado del control del robot. Pero por otro lado ambos intercambian información lo que permite relacionar los lazos de control que se ejecutan en ellos, definiendo así una arquitectura distribuida de control. 1. INTRODUCCIÓN Los primeros experimentos realizados en el campo de la visión por computador datan de finales de 1950 y la gran mayoría de los conceptos que hoy se consideran esenciales fueron introducidos en los años 80. Desde entonces, la visión por computador representa uno de los campos de la inteligencia artificial que más ha crecido en los últimos años. El objetivo de todo sistema de visión por computador es la interpretación de una escena a través de las imágenes capturadas por el sensor de visión (transformación imagen-información), más allá del procesamiento de imágenes (transformación imagen-imagen). La visión por computador es una materia con aplicaciones múltiples en campos tan diversos como medicina, biología, meteorología, seguridad, transporte, entretenimiento, domótica y robótica. En el caso de la robótica, los sistemas de visión se están convirtiendo en la principal fuente de información sensorial. Uno de los desarrollos que más auge está tomando hoy en día son los robots humanoides. Por un lado plantean retos a resolver (estabilidad, sensorización, integración de sistemas de visión) de gran interés desde el punto de vista de los sistemas empotrados de control, y por otro lado su natural orientación a la imitación del ser humano, ofrece un campo de trabajo en cuestiones como la inteligencia artificial, la interacción hombre-máquina y la cooperación entre robots como ninguna otra plataforma robótica ofrece. En el siguiente artículo se presenta una propuesta de sistema de visión activo empotrado integrado en la arquitectura de control distribuida del robot como sensor inteligente, capaz de interpretar el entorno y generar la información a compartir con el resto del sistema de control. 1 Este trabajo se desarrolla en el marco del proyecto SIDIRELLI DPI-2008-06737-C02-01/02 del Ministerio de Educación y Ciencia. Una de las formas más productivas de analizar el comportamiento de los diseños son las competiciones, ya que se pueden comparar los desarrollos con los de otros grupos de investigación y extraer conclusiones. En esta línea se enmarcan los eventos RoboCup, que sirven de punto de encuentro de numerosos grupos de robótica humanoide de todo el mundo. Los promotores de la RoboCup pretenden conseguir que los robots humanoides se asemejen cada vez más a un humano, por lo que incluyen restricciones en el diseño del robot. En el área de la visión, por ejemplo, se ha restringido el campo de visión de las cámaras y se ha limitado el número de cámaras a dos como máximo. 17, 19, 21], cámaras CM OS [3, 6, 7, 9, 11, 15, 21] o cámaras CCD [2]) cámaras CM OS con microcontrolador dedicado [8, 14]. La gran mayoría de los grupos presentan propuestas de visión monoscópica (una única cámara), a excepción de [11,15] que presentan un sistema de visión estéreo o estereoscópica (dos cámaras). Los sistemas de visión estéreo pretenden asimilarse a la visión humana y permiten cálculos mucho más precisos de longitudes y posiciones en escenarios 3D, a costa de mayor uso de recursos. La RoboCup Soccer League, donde se pretende participar con el desarrollo aquí propuesto, consiste de una serie de pruebas técnicas y partidos entre robots enmarcados en el fútbol robótico. Para ayudar en el procesamiento del entorno, los objetos de interés (porterías, pelota, campo y líneas) se identifican con colores alejados en el espectro de colores, de forma que una posible primera diferenciación pueda realizarse por colores En cuanto al procesamiento de la imagen, los pasos básicos sobre los que trabajan todos los grupos se muestra en la figura 1. Si bien es cierto que como escenario de trabajo se plantea un entorno tipo RoboCup, la propuesta de hardware y arquitectura de control está pensada para poder ser aplicada en cualquier entorno cambiante y garantizar la caracterización de un entorno dinámico en tiempo real. Reconocimiento de objetos 2. ES TADO DEL ARTE La competición de la RoboCup permite poner a prueba, año tras año, los diseños de numerosos grupos de investigación de todo el mundo. Desde el año 1997, la evolución de los robots humanoides y, en concreto, de los sistemas de visión y su integración en las arquitecturas de control, ha sido constante. Para la edición RoboCup 2010, las distintas propuestas de hardware para el sistema de visión y de integración en la arquitectura de control pueden agruparse en: webcams conectadas a una PDA dedicada de propósito general [1,13] cámaras conectadas a la placa principal de procesamiento (caso de webcams [4, 5, 10, 16, Adquisición de la imagen Segmentación Estimación posición objetos respecto al robot Autolocalización del robot Figura 1. Pasos básicos en el procesamiento de la imagen El hecho diferenciador entre grupos es la implementación de cada uno de los pasos (distintas resoluciones de la imagen y distintos espacios de color, segmentación por “image scoring” en lugar del típico por umbrales de color [17]) y la adición de algunas funcionalidades extra como detección de líneas [15, 16], planificación de trayectorias de los robots a partir de la caracterización del entorno[11], identificación de robots [13] e intercambio de mensajes entre robots para coordinación y fusión de información [19], entre otras. acceso a periféricos), 32 M bytes SDRAM , 4 M bytes Flash y cristal a 25 M hz. 3. PLATAFORMA DE TRABAJ O El sensor del sistema de visión es una cámara CMOS Omnivision O V7660, que es controlada a través de la interfaz Serial Camera Control Bus (SCCB), y que puede entregar imágenes en distintas resoluciones y formatos. El sistema de visión está integrado en el robot humanoide M icroBIROII, un Robot Bípedo humanoide de 56 cm de altura con un peso aproximado de 4kg con 21 grados de libertad, impulsados por servomotores, diseñado por el Instituto de Automática e Informática Industrial de la Universidad Politécnica de Valencia. La plataforma microBIROII dispone de tres conjuntos de sensores principales, todos ellos en continuo proceso de desarrollo y actualización: sensor de inclinación (módulo de acelerómetros), sensor de presión (módulo de galgas) y el sensor de visión. Figura 3. Hadrware del sistema de visión 4.2. Unidad de control principal Como unidad de control principal del robot se utiliza un módulo que integra un procesador del tipo PXA320, que destaca por su alto rendimiento y bajo consumo. Éste permite gestionar los buses SSP-SPI, USB, Ethernet o una conexión WiFi entre otros. Actualmente se está desarrollando una FPGA que se mapeará en memoria y que permitirá derivar a ella la gestión de los buses de comunicaciones, liberando de esta tarea al microprocesador principal. Figura 2. El robot humanoide microBIROII 4. HARDWARE 4.1. Sistema de visión El sistema de visión es soportado por un módulo empotrado que contiene un conector RJ45, un conector para cámara CM OS y un módulo CM BF537E de la familia Blackfin de Analog Devices, con un D SP Blackfin 537 (hasta 600 M hz, 132 Kbytes de memoria interna nivel L1, 4.3. Comunicación entre sistema de visión y la unidad de control principal Para el intercambio de información entre el sistema de visión y la unidad de control principal se ha implementado un protocolo de mensajes basado en TCP/IP. La caracterización del entorno del robot resultado del procesamiento de la imagen se envía al módulo de control, que es el encargado de tomar las decisiones pertinentes. 5. ARQUITECTURA La propuesta se basa en integrar un sistema de visión empotrado en la arquitectura de control distribuida del robot humanoide. Todo el cómputo referente a la percepción visual del entorno se realiza en el D SP del sistema de visión y la información extraída es compartida con todo el sistema de control distribuido por medio de la comunicación Ethernet. 5.1. Sistema de visión La aplicación implementada en el DSP del sistema de visión está concebida como un proceso multihilo: un hilo principal, uno para adquisición de la imagen y uno para procesamiento de la imagen. El hilo principal se encarga de la inicialización de la cámara y las comunicaciones y de lanzar los hilos de adquisición y de procesamiento, que se sincronizar entre ellos mediante un mecanismo de semáforos. El hilo de adquisición de la imagen se encarga de recoger las imágenes que entrega el sensor a través del driver. El hilo de procesamiento recoge la imagen guardada en el buffer por el hilo de adquisición y aplica los algoritmos para extraer la información requerida. Dicha información es almacenada y comunicada al módulo de control del robot mediante el protocolo sobre TCP creado. Los hilos se implementan sobre el VisualDSP Kernel, un sistema operativo muy ligero y robusto, integrado en el entorno de desarrollo del Blackfin que permite, entre otras cosas, definir hilos, prioridades, regiones críticas, semáforos y mensajes. El periodo del hilo de adquisición está ligado al frame rate de captura de imágenes de la cámara. Si trabajamos en resolución QVGA (320 x 240 pixels) el frame rate es de 30 fps, lo que implica un periodo de 33 ms para el hilo de adquisición. El tiempo de cómputo del hilo de adquisición es mínimo, ya que la imagen se guarda en el buffer por DM A (Direct Memory Access) sin usar el procesador. Durante este momento el procesador es usado por el hilo de procesamiento, que tiene un tiempo de cómputo de unos 10 ms. En conclusión, se obtiene una imagen procesada cada 33 ms, con una utilización de procesador de aproximadamente 30%. El cronograma de tiempos se muestra en la figura 4 (el hilo superior en la imagen es el hilo de procesamiento y el segundo es el hilo de adquisición). 5.2. Unidad de control principal La unidad de control principal se encarga de interpretar la información proveniente del sistema de visión para decidir el comportamiento a realizar. Además, es la encargada de procesar los datos recogidos del resto de sensores del robot (módulo de inclinación y módulo de presión). Actualmente, el sistema de visión transmite información relativa a la localización de los objetos en la imagen cada 33 ms. Se ha implementado tracking de objetos, de forma que las coordenadas de los objetos en la imagen se traducen a rotaciones de los servos de la cabeza para poder seguir el objeto en cuestión. El sistema de control utiliza esta información para posicionar los servos. Se pretende que en un futuro la unidad de control principal, en función de las necesidades y los recursos disponibles, marque el tipo de procesamiento adecuado en términos de tiempo y fiabilidad. 6. PROCES AMIENTO DE LA IMAGEN El trabajo desarrollado hasta el momento abarca los pasos de segmentación de imágenes y reconocimiento de objetos (pelota y portería). 6.1. Espacio de color y resolución El espacio de color escogido para la imagen entregada por el sensor es YUV, que separa la información de cada pixel en componentes de iluminancia (Y) y crominancia (U,V). Se trabaja con una resolución QVGA (ancho de 320 pixels y alto de 240). Figura 4. Crónograma de tiempos de la aplicación en el DSP del sistema de visión 6.2. Segmentación de la imagen y conectividad de pixels El objetivo de las técnicas de segmentación de imagen es extraer los pixels del conjunto siguiendo unos criterios definidos para simplificar el procesamiento y análisis posterior. Las técnicas de conectividad permiten agrupar pixels adyacentes similares en entidades más grandes. En nuestro caso, los criterios de segmentación se basan en el color, de forma que los pixels extraídos de la imagen corresponden a objetos de colores conocidos con antelación. De la imagen original se aíslan los pixels cuyo color esté dentro de unos umbrales definidos previamente. Al mismo tiempo, se agrupan los pixels contiguos del mismo color y se caracterizan las agrupaciones de pixels (color, número total de pixels, ancho, alto y centroide). Se compararon cinco algoritmos distintos de conectividad de pixels, de entre los cuales se adoptó el Run Length Encoding. Los tiempos de procesamiento de los algoritmos implementados en M atlab se presentan en la Tabla 1. t e (s) % respecto al mejor M atrices de adyacencia 1.32 146 “Flood fill approach” 1.96 216 “Equivalence class resolution” 0.981 108 “Union find” 1.04 115 “Run length encoding” 0.906 100 Algoritmo Tabla 1. Comparación algoritmos segmentación y conectividad imagen El algoritmo Run length encoding implementado representa la imagen segmentada como secuencias de 1s o runs, caracterizadas con el pixel inicio y número de pixels. Las runs adyacentes se agrupan en candidatos a objeto. candidatos run_lenght_encoding() for cada fila en la imagen agrupa pixels contiguos del mismo color en runs run = {color,no_pixels,fila,centro} if run es adyacente a candidato y del mismo color actualiza candidato else crea candidato = {color, centroide, alto, ancho} return candidato Algoritmo 1. Segmentación y conectividad de pixels 6.3. Reconocimiento de objetos Una vez caracterizadas las agrupaciones de pixels con color, alto, ancho y centroide se aplican algoritmos de forma para identificar los objetos (pelota y portería). Banco de pruebas de algoritmos de procesamiento de imagen. Una vez ajustados los parámetros de configuración de la cámara, se marcan los rangos de color de los objetos, que serán utilizados por los algoritmos de segmentación. El hecho de poseer esta aplicación permite adaptarse rápidamente a las condiciones del entorno, cuestión esta básica en las pruebas de la RoboCup. La interfaz gráfica se muestra en la figura 5. Centroide object_identification(candidatos, objeto) for cada candidato a objeto filtro_de_forma(candidato) decision(candidatos_filtrados) if decision == ok return candidato.centroide Algoritmo 2. Identificación de objetos 6.4. Mensaje TCP Una vez localizados en la escena los objetos de interés, la información relativa a aquellos que han sido identificados se transmite (identificador de objeto y coordenadas en la imagen) organizando la indoemación en forma de matriz y se transmite a la unidad principal de control. Dicha transmisión se realiza a través de una conexión TCP lo cual garantiza la entrega de los datos, cuestión fundamental para el control del robot. 7. APLICACIÓN GUI La aplicación desarrollada permite conectarse directamente al sistema de visión del robot y realizar las siguientes acciones: Adaptación de los parámetros de configuración de la cámara a las condiciones de iluminación del entorno y del momento. Calibración de los colores de los objetos según las condiciones de iluminación Procesamiento online de las imágenes capturadas por el robot. Figura 5. Interfaz gráfica de la aplicación 8. RES ULTADOS 8.1. Segmentación de la imagen y conectividad de pixels En la figura 6 se muestran distintas imágenes segmentadas. Los pixels segmentados son aquellos cuyo color coincide con el color de los objetos a identificar (pelota y portería azul). Con la conectividad se caracterizan las agrupaciones de pixels que permitirán identificar los objetos. Además, se eliminan aquellas agrupaciones que no contengan un número mínimo de pixels. Figura 6. Algoritmos de segmentación y identificación de objetos sobre distintas imágenes 8.2. Identificación de los objetos Se identifican los objetos de entre las distintas agrupaciones de pixels caracterizadas y se construye el mensaje con la posición, en coordenadas de la imagen, de los distintos objetos identificados para transmitirlo al módulo de control. Los resultados se muestran en la figura 6. 9. TRAB AJO FUTURO El trabajo inmediato se centrará en completar los pasos básicos comentados en la figura 1, esto es, la estimación de los objetos respecto del robot y la autolocalización del robot en el entorno. Para ayudar en la autolocalización del robot, se pretende además desarrollar un algoritmo de detección de líneas para combinarlo con la información de localización de los objetos fijos (porterías). Además, se abordarán otras cuestiones como la fusión y compartición de información entre robots o la posibilidad de incorporar la visión estereoscópica. Referencias [1] Tzuu-Hseng S. Li et al “aiRobots: Team Description for Humanoid KidSize League of RoboCup 2010”. Workshop Robocup Singapore 2010. [2] Chokchai Pengyasa et al. “Team BSRU-I: Team Description Paper”. Workshop Robocup Singapore 2010. [3] Aphilux Buathong et al. “Chibi Dragon Team Description Paper”. Workshop Robocup Singapore 2010. [4] Luis F Lupián et al. “Cyberlords RoboCup 2010 Humanoid KidSize Team Description Paper”. Workshop Robocup Singapore 2010. [5] M . Friedmann et al. “Darmstadt Dribblers. Team Description Paper for Humanoid KidSize League of RoboCup 2010”. Workshop Robocup Singapore 2010. [6] Bennet Fischer et al. “FUmanoid Team Description Paper 2010. Workshop Robocup Singapore 2010. [7] Lim Sock Lip et al. “Team NYP Lions: Team Description Paper”. Workshop Robocup Singapore 2010. [8] Roberto Carlos Ramírez M árquez et al. “PIONEROS M EXICO Team Description Paper ROBOCUP 2010 Singapore”. Workshop Robocup Singapore 2010. [9] Guangnan Ye et al. “PKU-SHRC Team Description for RoboCup 2010”. Workshop Robocup Singapore 2010. [10] Buck Sin N g et al. “Robo-Erectus Jr-2010 KidSize Team Description Paper”. Workshop Robocup Singapore 2010. [11] Keith Sullivan et al. “RoboPatriots: George M ason University 2010 RoboCup Team”. Workshop Robocup Singapore 2010. [12] Shohei Takesako et al. “SitiK KIT. Team Description for the Humanoid KidSize League of RoboCup 2010”. Workshop Robocup Singapore 2010. [13] S. Hamidreza M ohades Kasaei et al. “Persia Humanoid Robot. Team Description Paper 2010”. Workshop Robocup Singapore 2010. [14] Guillermo Villarreal-Pulido et al. “BogobotsTecMTY humanoid kid-size team 2010”. Workshop Robocup Singapore 2010. [15] R. Gerndt et al. “WF Wolves KidSize Team Description RoboCup 2010”. Workshop Robocup Singapore 2010. [16] Jaekweon Han et al. “Team DARwIn. Team Description for Humanoid KidSize League of RoboCup 2010”. Workshop Robocup Singapore 2010. [17] Soo Theng Koay et al. “Team Description 2010 for Team RO-PE”. Workshop Robocup Singapore 2010. [18] Thavida M aneewarn et al. “Team KM UTT: Team Description Paper”. Workshop Robocup Singapore 2010. [19] Tang Qing “ZJUDancer Team Description Paper”. Workshop Robocup Singapore 2010. [20] Ching-Chang Wong et al. “Humanoid Soccer Robot Design by TKU Team for Humanoid League of RoboCup 2010”. Workshop Robocup Singapore 2010. [21] Chung-Hsien Kuo et al. “Team Description Paper: HuroEvolution Humanoid Robot for RoboCup 2010 Humanoid League”. Workshop Robocup Singapore 2010. [22] Javier Testart et al. “UChile RoadRunners 2010 Team Description Paper”. Workshop Robocup Singapore 2010.