artículo comrob 50

6
Resumen— En este trabajo se presenta el desarrollo de un robot móvil, pensado como un sistema embebido, que sirva de apoyo a cursos de Robótica y de Visión Artificial y, además, como plataforma de soporte para futuros trabajos de investigación en las áreas de control de robots móviles (servomecanismos visuales, control de robots cooperativos) y visión artificial (odometría visual, generación de mapas, SLAM). Se eligió una estructura muy simple que es la del SpoonBot propuesto por la Carnegie Mellon Universiy, pues permite tener un pequeño robot móvil con dos ruedas motrices sobre un mismo eje (tipo uniciclo) que proporciona tracción diferencial y un tercer punto de apoyo; además se trata de una plataforma de bajo costo y con prestaciones importantes dado que sus sistema de control cuenta con una cámara embarcada. Se presenta, además, una aplicación en donde el robot debe detectar y seguir un objeto de color dado pero desconocido para el robot. INTRODUCCIÓN Los robots móviles autónomos con ruedas, con patas, reptantes, nadadores o submarinos y aún voladores representan un reto importante en muchos aspectos de la Ingeniería y aún de la Ciencia. Su utilización como herramienta didáctica supera con creces a los modelos matemáticos y a la simulación por computadora, pues por tratarse de un sistema real con movimiento, tangible y autocontenido permite la realización de tareas físicas; esta naturaleza práctica del robot permite mayor atención del estudiante en la aplicación de los principios estudiados (modelado, control, estabilidad, percepción, entre otros temas) pues hace más sentido ver y tocar los sistemas que sólo imaginarlos. Además, el “mundo perfecto” que representan los modelos trabajados en simulación no existen en la realidad, mientras que, trabajar con robots móviles reales pone de manifiesto el mundo real, con ruidos, perturbaciones, dinámicas no modeladas, dinámicas no lineales y variantes en el tiempo; además trabajar con un robot real es a menudo más complicado que con modelos teóricos. Finalmente, trabajar con robots reales y ver que es posible hacer programas con las grandes restricciones que imponen los sistemas embebidos y que le permiten la realización de tareas complejas (compor-tamiento autónomo auxiliado por visión) es muy gratificante y motivador para los estudiantes. Todo esto puede amplificarse aún más introduciendo competencias entre ellos [6]. Jorge Said Cervantes Rojas y Mónica Adriana González Padilla son estudiantes del Programa de Maestría en Ciencias del Departamento de Control Automático del Centro de Investigación y de Estudios Avanzados del IPN y disfrutan de una beca del Conacyt. Juan Manuel Ibarra Zannatha es profesor investigador de dicho departamento ubicado en Av. IPN No. 2508, San Pedro Zacatenco, 07360 México, DF. (e-mail: jcervantes, mogonzalez y [email protected]). Por otro lado, una de las áreas de mayor desarrollo en la actualidad dentro de la Robótica es el control de robots móviles basados en visión [2]. Así, de un lado tenemos los problemas ligados a toda la problemática del procesamiento y análisis de imágenes así como a la interpretación necesaria para obtener la estimación de posiciones 3D mediante una cámara que sólo nos informa de la proyección 2D de un mundo 3D. Mientras que, de otro lado, tenemos los problemas de diseñar sistemas de control que trabajen en el espacio de la cámara o bien utilizar la cinemática diferencial del sistema de visión aunado al propio robot para sintetizar leyes de control en el espacio articular del robot [7]. Todo esto hace pertinente el proyecto de desarrollar un robot móvil pequeño, barato y sencillo que permita implementar sistemas de visión artificial para robots al mismo tiempo que nos permita la síntesis de leyes de control. I. PLANTEAMIENTO DEL PROBLEMA Como hemos mencionado, el objetivo principal de este proyecto es desarrollar un pequeño robot móvil, simple, barato, versátil que esté equipado con un sistema de visión artificial que sirva de plataforma experimental para implementar sistemas de control visual y para apoyar proyectos de investigación posteriores sobre dicha temática y, sobre todo, para servir como plataforma experimental de apoyo a cursos de posgrado en temáticas como Sistemas Embebidos, Visión Artificial y Robótica. Además, en este proyecto se plantearon las siguientes metas: i) Construir un robot móvil tipo SPOONBOT; ii) Calibrar el sistema de actuadores (servomotores) y de percepción (cámara) y iii) Desarrollar una aplicación simple pero completa de servomecanismos visuales. La aplicación seleccionada consiste en detectar y seguir un objetivo (target) formado por un cuadrado de color dado (desconocido para el robot). Esta aplicación es simple de comprender y aún de resolver; sin embargo, a pesar de su sencillez, requiere la utilización del sistema de VA dentro del lazo de control consiste en el seguimiento de un objeto de color en movimiento. La tarea consistirá en mostrar al robot un objeto relativamente grande (cuadro de 10×10 cm.) de un cierto color (rojo, azul o negro) y, acto seguido, comenzar a mover dicho objeto para que el robot haga su seguimiento. Cabe mencionar que este proyecto fue realizado como trabajo final del curso Robótica I del Programa de Maestría en Ciencias especialidad Control Automático del Cinvestav. Desarrollo de un robot móvil tipo SpoonBot controlado mediante visión Jorge Said Cervantes Rojas, Mónica Adriana González Padilla, Juan Manuel Ibarra Zannatha

Upload: alfredo-kpu-rivera

Post on 21-Nov-2015

213 views

Category:

Documents


1 download

DESCRIPTION

Diseño y modelado de un Spoobot con la camara CMUcam3

TRANSCRIPT

  • Resumen En este trabajo se presenta el desarrollo de un robot mvil, pensado como un sistema embebido, que sirva de apoyo a cursos de Robtica y de Visin Artificial y, adems, como plataforma de soporte para futuros trabajos de investigacin en las reas de control de robots mviles (servomecanismos visuales, control de robots cooperativos) y visin artificial (odometra visual, generacin de mapas, SLAM). Se eligi una estructura muy simple que es la del SpoonBot propuesto por la Carnegie Mellon Universiy, pues permite tener un pequeo robot mvil con dos ruedas motrices sobre un mismo eje (tipo uniciclo) que proporciona traccin diferencial y un tercer punto de apoyo; adems se trata de una plataforma de bajo costo y con prestaciones importantes dado que sus sistema de control cuenta con una cmara embarcada. Se presenta, adems, una aplicacin en donde el robot debe detectar y seguir un objeto de color dado pero desconocido para el robot.

    INTRODUCCIN

    Los robots mviles autnomos con ruedas, con patas, reptantes, nadadores o submarinos y an voladores representan un reto importante en muchos aspectos de la Ingeniera y an de la Ciencia. Su utilizacin como herramienta didctica supera con creces a los modelos matemticos y a la simulacin por computadora, pues por tratarse de un sistema real con movimiento, tangible y autocontenido permite la realizacin de tareas fsicas; esta naturaleza prctica del robot permite mayor atencin del estudiante en la aplicacin de los principios estudiados (modelado, control, estabilidad, percepcin, entre otros temas) pues hace ms sentido ver y tocar los sistemas que slo imaginarlos. Adems, el mundo perfecto que representan los modelos trabajados en simulacin no existen en la realidad, mientras que, trabajar con robots mviles reales pone de manifiesto el mundo real, con ruidos, perturbaciones, dinmicas no modeladas, dinmicas no lineales y variantes en el tiempo; adems trabajar con un robot real es a menudo ms complicado que con modelos tericos. Finalmente, trabajar con robots reales y ver que es posible hacer programas con las grandes restricciones que imponen los sistemas embebidos y que le permiten la realizacin de tareas complejas (compor-tamiento autnomo auxiliado por visin) es muy gratificante y motivador para los estudiantes. Todo esto puede amplificarse an ms introduciendo competencias entre ellos [6].

    Jorge Said Cervantes Rojas y Mnica Adriana Gonzlez Padilla son estudiantes del Programa de Maestra en Ciencias del Departamento de Control Automtico del Centro de Investigacin y de Estudios Avanzados del IPN y disfrutan de una beca del Conacyt. Juan Manuel Ibarra Zannatha es profesor investigador de dicho departamento ubicado en Av. IPN No. 2508, San Pedro Zacatenco, 07360 Mxico, DF. (e-mail: jcervantes, mogonzalez y [email protected]).

    Por otro lado, una de las reas de mayor desarrollo en la actualidad dentro de la Robtica es el control de robots mviles basados en visin [2]. As, de un lado tenemos los problemas ligados a toda la problemtica del procesamiento y anlisis de imgenes as como a la interpretacin necesaria para obtener la estimacin de posiciones 3D mediante una cmara que slo nos informa de la proyeccin 2D de un mundo 3D. Mientras que, de otro lado, tenemos los problemas de disear sistemas de control que trabajen en el espacio de la cmara o bien utilizar la cinemtica diferencial del sistema de visin aunado al propio robot para sintetizar leyes de control en el espacio articular del robot [7]. Todo esto hace pertinente el proyecto de desarrollar un robot mvil pequeo, barato y sencillo que permita implementar sistemas de visin artificial para robots al mismo tiempo que nos permita la sntesis de leyes de control.

    I. PLANTEAMIENTO DEL PROBLEMA Como hemos mencionado, el objetivo principal de este

    proyecto es desarrollar un pequeo robot mvil, simple, barato, verstil que est equipado con un sistema de visin artificial que sirva de plataforma experimental para implementar sistemas de control visual y para apoyar proyectos de investigacin posteriores sobre dicha temtica y, sobre todo, para servir como plataforma experimental de apoyo a cursos de posgrado en temticas como Sistemas Embebidos, Visin Artificial y Robtica. Adems, en este proyecto se plantearon las siguientes metas: i) Construir un robot mvil tipo SPOONBOT; ii) Calibrar el sistema de actuadores (servomotores) y de percepcin (cmara) y iii) Desarrollar una aplicacin simple pero completa de servomecanismos visuales.

    La aplicacin seleccionada consiste en detectar y seguir un objetivo (target) formado por un cuadrado de color dado (desconocido para el robot). Esta aplicacin es simple de comprender y an de resolver; sin embargo, a pesar de su sencillez, requiere la utilizacin del sistema de VA dentro del lazo de control consiste en el seguimiento de un objeto de color en movimiento. La tarea consistir en mostrar al robot un objeto relativamente grande (cuadro de 1010 cm.) de un cierto color (rojo, azul o negro) y, acto seguido, comenzar a mover dicho objeto para que el robot haga su seguimiento. Cabe mencionar que este proyecto fue realizado como trabajo final del curso Robtica I del Programa de Maestra en Ciencias especialidad Control Automtico del Cinvestav.

    Desarrollo de un robot mvil tipo SpoonBot controlado mediante visin

    Jorge Said Cervantes Rojas, Mnica Adriana Gonzlez Padilla, Juan Manuel Ibarra Zannatha

  • A. Descripcin del artculo Despus de esta breve introduccin, en el segundo captulo

    de este trabajo se hace la presentacin del robot mvil desarrollado sin dar detalles de su construccin pero haciendo referencia al prototipo originalmente propuesto por la Universidad Carnegie Mellon; se presenta adems el sistema embebido CMUCam3 utilizado como procesador y sensor de visin, el proceso de calibracin de los servomecanismos del robot y de su modelo cinemtico. En el captulo tres se hace la presentacin de la aplicacin desarrollada para probar la funcionalidad del prototipo construido, haciendo nfasis en las tareas de visin y de control que fueron programadas. Finalmente, en el cuarto captulo se presentan las conclusiones y el trabajo que pensamos desarrollar en el futuro para aprovechar la experiencia acumulada en el desarrollo de este proyecto.

    II. ROBOT MVIL TIPO SPOONBOT El SPOONBOT es uno de los robots mviles ms simples

    que podemos construir. Fue concebido como una aplicacin de sistemas embebidos basada en el sistema CMUCam3 creado por la Carnegie Mellon University. Este sistema se construy alrededor del procesador ARM7TDMI y cuenta con una cmara de video [3], [4]. El SPOONBOT es un robot con dos ruedas motrices independientes montadas sobre un eje que producen la traccin diferencial del robot, modelo conocido en la literatura sobre robots mviles como uniciclo, que cuenta adems con un tercer apoyo: una cucharilla de plstico actuada por un tercer servomotor que permite al conjunto un grado de libertad extra que produce un movimiento de elevacin (tilt), adems este tercer punto de apoyo provee estabilidad mecnica en condiciones normales de operacin. Este movimiento extra permite controlar la inclinacin del eje ptico de la cmara, pudiendo apuntar un poco ms arriba o ms debajo de la horizontal, ampliando as las posibilidades de aplicacin del prototipo.

    Los dos actuadores principales del robot, utilizados para la traccin, son dos servomecanismos Hitec HS-322 que permiten una rotacin continua en ambas direcciones de las ruedas motrices, mientras que el movimiento de elevacin del robot, que le da al SPOONBOT la posibilidad de orientar el eje ptico de su cmara, es un micro-servo Futaba MX-50HP. Este micro-servo empuja una cucharilla que, adems de proporcionar el movimiento de elevacin de la cmara, sirve de punto de apoyo para mantener estable al robot.

    Los servos de rotacin continua requieren de una alimentacin de 6.6 Watts a 6 Volts CD constantes entre terminales, mientras que la tarjeta de control y visin demanda 9 Watts a 6 Volts, por lo que dotamos al prototipo con un sistema de alimentacin est formado por 4 bateras recargables de 1.2 Volts, 2500 Mah para la alimentacin de los servos y 2 bateras de polmero de litio ultraligeras de 3.7 Volts CD cada una para la alimentacin de la tarjeta.

    La CMUCam 3 que equipa a este dispositivo mvil sirve a la vez como sensor visual y como sistema de programacin y control del robot y asegura la comunicacin con una computadora husped va un canal serie.

    Figura 1. Sistema de Visin utilizado: CMUCam3.

    De este modo, el SPOONBOT es un robot mvil basado en visin, construido como un sistema embebido que lo hace completamente autnomo, que es muy pequeo, barato y simple de programar pues cuenta con un puerto serie para comunicarse con la computadora en la que se desarrollen sus programas de aplicacin y as poder bajarlos al procesador de la CMUCam3 [3], [4]. En la figura 1 se muestra el aspecto del robot mvil construido.

    A. CMUCam3 La CMUCam3 es resultado de un proyecto desarrollado en

    la Carnegie Mellon University cuyo objetivo es proporcionar capacidades de visin simples para pequeos sistemas embebidos en la forma de un sensor inteligente. La CMUcam3 proporciona un ambiente de desarrollo de cdigo abierto flexible y fcil de usar que complementa una plataforma de hardware de bajo costo. La CMUCam3 es un sensor de visin por computadora embebido, programable, basado en el chip ARM7TDMI. El procesador principal de este sistema es el NXP LPC2106 que est conectado a un mdulo que tiene un sensor de cmara CMOS Omnivision. Para la programacin de la CMUCam3 se utiliza el cdigo C estndar y los programas se cargan al micro-controlador a travs de un puerto de GNU toolchain. Los ejecutables se cargan en la tarjeta usando el puerto serie sin necesidad de contar con un hardware de descarga adicional.

    Algunas de las caractersticas ms relevantes de la CMUCam3 son [3]: Es de cdigo abierto y programable usando GCC; Cuenta con un sensor CMOS RGB con resolucin (352x288) CIF; Ambiente de desarrollo de cdigo abierto para Windows y Linux; Puerto para memoria MMC/SD flash; Cuatro puertos para el control de servos; Tasa de procesamiento de imgenes de 26 cuadros por segundo; Funciones de umbral y convolucin; Espacio de color RGB, YCrCb y HSV; Emulador de la CMUCam2 (para la cual hay mucho software libre); Coleccin de datos de varianza y media; y CMUCam3-Frame-Grabber para visualizacin de las imgenes en la PC. En la figura 2 se muestra el aspecto de este sistema.

    B. Calibracin de los servos Una vez construido el prototipo habiendo quedado tal como

    se muestra en la figura 1, es necesario calibrar sus tres servos para que el SPOONBOT tenga un funcionamiento correcto. En efecto, es necesario que el sistema de control (CMUCam3) conozca el sentido de giro de sus tres servomotores as como sus velocidades y lmites de posicin mximo y mnimo. Comencemos por asignar un nombre a cada uno de los tres servos del SPOONBOT: vindolo desde atrs, el servo de la izquierda se denomina servo 1, al de la derecha servo 2 y al micro-servo como servo 0.

  • Para realizar la operacin de calibracin se utiliza el Frame Grabber, que es una aplicacin que permite capturar imgenes por medio de la cmara de manera sencilla y ajustar la velocidad de los servos. Utilizando el LPC2000 Utility Flash se carga el firmware de la emulacin de la CMUCam2 (disponible en Internet) en el micro-controlador de la cmara. En el panel Settings del Frame Grabber se desplazan las barras de los servos para cambiar los valores de la velocidad como se muestra en la figura 3. Se debe encontrar la posicin media de los servos 1 y 2 ajustando la barra mencionada hasta que las ruedas se detengan. Asimismo, se necesita encontrar el signo de las direcciones de los servos. Mirando al SPOONBOT desde atrs nuevamente, se disminuye la velocidad del servo 1. El signo de la direccin del servo se establece como 1 si el servo gira en el sentido de las manecillas del reloj y como 1 si el servo gira en el sentido contrario de las manecillas del reloj. Se repite esta operacin para el servo 1.

    Adicionalmente, se necesita encontrar las posiciones mnima, media y mxima para ajustar el servo 0. Se considera como la posicin mnima al valor ms pequeo donde la cuchara toque el suelo, la posicin mxima deber posicionar al SPOONBOT mirando lo ms arriba posible y la posicin media es el valor que hace que el SPOONBOT est equilibrado horizontalmente. Si la posicin mnima y mxima se encuentran al revs, la direccin del servo 0 es 1; de lo contrario se establece como 1. Una vez que se obtienen los valores de calibracin del servo, stos se incluyen al principio del cdigo que se utiliza en este proyecto [3]: my_cal.left_mid = 115; my_cal.right_mid = 111; my_cal.spoon_down = 138; my_cal.spoon_mid = 127; my_cal.spoon_up = 110; my_cal.left_dir = 1; my_cal.right_dir = -1; my_cal.spoon_dir = -1;

    C. Modelo del SpoonBot En la figura 4 se muestra un diagrama esquemtico del

    robot mvil construido, el cual tiene asociado un referencial {R} sobre el eje de traccin, en el punto medio entre sus dos ruedas, con el eje x apuntando en la direccin de avance. La distancia entre las ruedas es de L centmetros, mientras que su dimetro es de r centmetros. Dicho referencial se encuentra ubicado en la posicin dada por las coordenadas (x, y, ) dentro de un marco de referencia {0}. La cinemtica de los robots mviles tipo uniciclo est dada por la siguiente expresin:

    cossin

    x vy v

    =

    =

    =

    (1)

    En donde v y son las velocidades lineal y angular del vehculo. Si v1 y v2 son las velocidades de las ruedas izquierda y derecha respectivamente, la velocidad lineal y angular del robot queda como sigue:

    1 2

    1 2

    ( )2

    ( )

    v vv

    v vL

    +=

    =

    (2)

    Los sistemas mecnicos de este tipo, en particular los robot mviles tipo uniciclo, tienen una restriccin holonmica, la cual especifica la trayectoria tangencial que debe tener una trayectoria para que pueda ser realizable por el robot mvil en cuestin, definida como

    cos sin 0y x = (3) Sustituyendo la ecuacin (2) en la (1) se obtiene el estado

    del robot en funcin de las velocidades lineales de sus ruedas

    1

    2

    cos cos2 2

    sin sin2 2

    1 1

    xv

    yv

    L L

    =

    (4)

    La relacin entre vi y i en trminos del radio de la rueda est dada por:

    1 1 2 2yv r v r = = (5) Asmismo, la ecuacin de estado con i como entradas y

    (x, y, ) como salidas est dada por:

    1

    2

    cos cos2 2

    sin sin2 2

    xy

    r rL L

    =

    (6)

    Para el prototipo desarrollado, los parmetros cinemticos valen: r= 5.5 cm. y L= 9 cm.

    III. APLICACIN DEL SPOONBOT A fin de mostrar la potencialidad del prototipo de robot

    mvil desarrollado se realiz una aplicacin consistente en la deteccin y seguimiento de un objeto de tamao conocido (cuadrado de 1010 cm.) y de color brillante y saturado desconocido. El seguimiento de objetos brillantes y coloridos se puede utilizar para localizar marcas fijas en el entorno o para seguir objetos en movimiento, para detectar y localizar la pelota en un juego de ftbol, etc.

    Figura 2. Panel Settings de la CMUCam3.

  • Figura 3. Diagrama cinemtico del robot tipo SPOONBOT.

    La tarea se especifica como sigue: i) el robot est quieto, esperando que aparezca una gran mancha de color ms o menos puro y brillante; ii) cuando aparece en frente de l un objeto que responde a esas caractersticas hace la adquisicin de la informacin de color (es decir el cdigo RGB correspondiente); iii) A continuacin hace la medicin geomtrica del objeto de color; iv) De ah en adelante el robot se mover tratando de mantener una posicin relativa con respecto al objeto de color que ha sido previamente definida.

    A. Problemas de Iluminacin Antes de describir las tareas que realiza el robot para

    detectar y seguir un target de color especfico recordemos que en los sistemas de visin para cualquier tipo de aplicacin la iluminacin juega un papel determinante. Por tal razn, hemos decidido cuidar la iluminacin del entorno en el que se harn las pruebas de nuestro sistema de control visual, pues no es objetivo de este trabajo el diseo de un sistema de visin robusto ante variaciones de iluminacin. Primeramente, seleccionamos un objeto de color intenso, uniforme y bien saturado que puede ser rojo, negro o azul (aunque en realidad puede ser prcticamente de cualquier color que cumpla con las caractersticas mencionadas) [4].

    Por su parte, la iluminacin ser obtenida de una fuente de luz suficientemente brillante y colocada de manera tal que el objeto se ilumine con uniformidad sin dirigirse directamente hacia la cmara para evitar saturacin de sus fotositos. Se requiere evitar una baja iluminacin del target que haga que la cmara aumente el contraste ms all de un rango aceptable; El uso de varias fuentes de iluminacin tambin es indeseable pues produce manchas de brillos y sombras que dificultan la deteccin de un rea conexa y homognea en la fase de segmentacin binaria por color; Si el fondo est mejor iluminado que el objeto se puede reducir el contraste y complicar la deteccin del color al perderse detalles de matiz y saturacin.

    B. Deteccin del color deseado Lo primero que debe hacerse es definir el color del blanco

    (target) que el robot debe seguir. Para ello recordemos que el sistema de visin empleado captura las imgenes color codificadas en RGB, de modo que cada color est definido por una cierta combinacin de rojo (R), verde (G) y azul (B).

    Pero, como las condiciones de iluminacin no suelen ser homogneas ni constantes, dado un color de target a seguir, ste ser definido no como una combinacin RGB dada, sino como una regin del espacio de color RGB centrada en el color de inters. Es decir, en vez de definirse como un punto en el espacio color RGB, se define como una caja en dicho espacio. Dicha regin debe ser lo suficientemente grande como para que queden consideradas todas las posibilidades del target en cuestin, pero no tanto como para que se vean de ese color cosas diferentes al target de inters. La determinacin de los valores mnimo y mximo de cada color que definen esta caja se hace automticamente utilizando algunas de las instrucciones con que cuenta el sistema de programacin de la CMUCam3.

    En cada cuadro (foto) capturado por la cmara se hace la clasificacin de todos sus pixeles en dos categoras, los que tienen el color deseado (que estn dentro de la caja RGB definida en el prrafo previo) y aquellos que no lo tienen, obtenindose una segmentacin binaria. Esto es, se obtiene una imagen binaria en donde el valor 1 se asigna a los pixeles que pertenecen al objeto de inters y 0 al resto de pixeles. La mancha que representa al target se define como una Regin de Inters (ROI), la cual no tiene precisamente la forma cuadrada del target, por efectos de la proyeccin en perspectiva, por defectos de iluminacin, presencia de sombras, entre otros factores que la distorsionan. Para evitar los efectos negativos de estos fenmenos se realiza un filtrado espacial que rectifica los contornos de la ROI y se calcula su rectngulo de encuadre.

    En el Anexo de este artculo mostramos el cdigo con comentarios correspondiente a todos los procesos mencionados en esta subseccin y en la siguiente.

    C. Seguimiento del color deseado Una vez determinada la ROI (target de color) podemos

    hacer su seguimiento, pero antes debemos estimar la direccin de su movimiento. Para ello, en cada imagen se hacen simultneamente dos clculos, uno que permite estimar la distancia entre el target y la cmara medida sobre el eje ptico de sta y otro que permite estimar el descentramiento del target con respecto dicho eje ptico (izquierda-derecha).

    El primero de estos clculos lo hacemos con una de las facilidades de programacin de la CMUCam3, que permite estimar la densidad de puntos pertenecientes al ROI dentro de la imagen total, a mayor densidad ms cerca est el target y viceversa. Esta facilidad debe calibrarse previamente con el target dado a fin de tener una interpretacin fsica correcta del parmetro que arroja el comando mencionado, habiendo determinado un umbral correpondiente a unos 15 cm. a partir del cual el robot camina hacia delante a velocidad baja (10 unidades) a fin de seguir el target en su movimiento de alejamiento.

    El segundo de los clculos consiste en obtener el centroide del rectngulo de encuadre en las imgenes sucesivas y estimar la magnitud de su movimiento lateral as como su sentido, dando para ello dos umbrales hacia la izquierda y dos ms hacia la derecha. Cada uno de estos cuatro umbrales dispara una accin de control: si el centroide se desplaz hacia la izquierda ms lejos del segundo umbral se acciona un

    x

    y

    L r

  • giro rpido (velocidad de 20 unidades) hacia ese lado, si est entre los dos umbrales se realiza un giro lento (velocidad de 10 unidades). Lo mismo para desplazamientos hacia el lado derecho.

    De este modo quedan definidas las dos acciones que le permiten al robot seguir el target: avanzar hacia delante cuando el target se aleja o girar hacia l con una velocidad proporcional al tamao del desplazamiento del centro de gravedad del ROI.

    IV. CONCLUSIONES En este trabajo se presenta el desarrollo de un prototipo de

    robot mvil tipo SPOONBOT siguiendo el diseo de Carnegie Mellon University. Se basa en un sistema embebido, el CMUCam3, que controla los motores del robot y que cuenta con visin artificial y capacidad de albergar algoritmos de procesamiento y anlisis de imgenes as como de control del movimiento del robot. Con todo esto se cumple el principal objetivo de este trabajo que es contar con un prototipo funcional de sistema embebido que contiene un sistema de percepcin visual, un sistema de locomocin verstil y que permite la realizacin de prcticas de laboratorio para cursos de Robtica, Mecatrnica y Visin, entre otros, as como apoyar proyectos de investigacin en dichas reas.

    Se desarroll una algortmica de procesamiento y anlisis de datos que realiza las siguientes funciones: deteccin de un objetivo (target) de color dado, segmentacin color de la imagen (imagen binaria), determinacin del rectngulo de encuadre y del baricentro del objeto de color, deteccin de las esquinas del objeto observado, clculo de la distorsin 2D del objeto 3D observado y clculo de la posicin relativa del objetivo (target) con respecto a la cmara. Todo ello programado en lenguaje C estndar utilizando operaciones en punto fijo.

    Se desarroll, adems, un esquema de control del movimiento del robot para que fuera capaz de hacer el seguimiento del objetivo basndose principalmente en el clculo de su centroide y del sensado de la densidad del color del mismo. Una consideracin importante para realizar un buen sensado de la imagen es que exista una iluminacin adecuada.

    Figura 4. SPOONBOT siguiendo un target rojo.

    El prototipo construido es muy compacto (131613 cm), barato (costo aproximado de $7,000), fcil de utilizar y mostr una importante potencialidad para implementar esquemas de control visual. As, el prototipo es capaz de

    albergar algoritmos complejos de visin y control que seamos capaces de desarrollar tomando en cuenta la carencia de punto flotante del procesador empleado. Trabajo Futuro: Para complementar sus capacidades queremos equipar este prototipo de robot mvil con comunicacin inalmbrica (bluetooth) que facilite el telecargado de programas desde un sistema de desarrollo y que permita la teleoperacin o bien la comunicacin con otros robots en tareas de coordinacin de grupos de robots. Finalmente, quisiramos desarrollar un conjunto de prcticas de laboratorio que permita apoyar cursos de visin artificial, de sistemas embebidos y de Robtica.

    ANEXO En este Anexo se presenta el cdigo implementado para la

    solucin del problema de seguimiento de color, acompaado de los comentarios pertinentes. Se describe un ciclo completo, el cual se repite indefinidamente. 1. La primera accin que se realiza es la inicializacin de la comunicacin serie con los siguientes parmetros: la tasa es de 115,200 bits por segundo, el nmero de bits de datos es 8, sin paridad, con un bit de parada, sin control de flujo y en modo de texto. Los comandos correspondientes son: cc3_uart_ini (0, CC3_UART_RATE_115200, CC3_UART_MODE_8N1,CC3_UART_BINMODE_TEXT); 2. A continuacin se inicializa el hardware de la cmara y hace la activacin del LED de estado: cc3_camera_init (); printf ("Starting up...\n"); cc3_led_set_state (0, true); 3. Ahora se configuran los puertos de propsito general en modo servo: cc3_gpio_set_mode(0,CC3_GPIO_MODE_SERVO; cc3_gpio_set_mode(1,CC3_GPIO_MODE_SERVO; cc3_gpio_set_mode(2,CC3_GPIO_MODE_SERVO; cc3_gpio_set_mode(3,CC3_GPIO_MODE_OUTPUT); 4. Se introducen los parmetros de calibracin de los servos previamente obtenidos. Se le programa una rutina al SPOONBOT para comprobar su correcto funcionamiento y sentido de giro de los servos. sta consiste en: giro a la derecha, giro a la izquierda y avance: printf ("SpoonBot Derecha\n"); spoonBot_right (50); spoonBot_wait (300); spoonBot_stop (); printf ("SpoonBot Izquierda\n"); spoonBot_left (50); spoonBot_wait (300); spoonBot_stop (); printf ("SpoonBot Adelante\n"); spoonBot_drive (50); spoonBot_wait (100); spoonBot_stop (); printf ("SpoonBot Listo\n"); 5. La resolucin de la cmara se configura en baja. cc3_camera_set_resolution (CC3_CAMERA_ RESOLUTION_LOW);

  • 6. Despus de realizar la rutina de comprobacin del SPOONBOT, la cmara estabiliza la imagen y se espera a que el usuario pulse el botn ISP para almacenar el color que se desea seguir: cc3_led_set_state (0, true); printf("Hold up colored object and press button...\n"); while(cc3_button_get_state () == 0); printf("Grabbing Color\n"); 7. Se toma la imagen con la cmara y se guarda en pixeles en un bfer. cc3_pixbuf_load (); 8. Despus se calculan las coordenadas del rea de inters, a la mitad de la misma. Detecta cdigo RGB del target x0=cc3_g_pixbuf_frame.x0+ cc3_g_pixbuf_frame.width / 4; x1=cc3_g_pixbuf_frame.x1 cc3_g_pixbuf_frame.width / 4; y0=cc3_g_pixbuf_frame.y0 + cc3_g_pixbuf_frame.width / 4; y1=cc3_g_pixbuf_frame.y1 cc3_g_pixbuf_frame.width / 4; 9. Se establece dicha regin de inters como una ventana virtual (rectngulo de encuadre). cc3_pixbuf_frame_set_roi (x0, y0, x1, y1); 10. A continuacin se calcula la media utilizando la siguiente expresin [5]: simple_get_mean (&s_pkt); 11. Se realiza el clculo de los lmites inferior y superior de cada uno de los canales de color: rojo, azul y verde del color a seguir. x0 = 0; x1 = cc3_g_pixbuf_frame.raw_width; y0 = 0; y1 = cc3_g_pixbuf_frame.raw_height; cc3_pixbuf_frame_set_roi (x0, y0, x1, y1); // fill in parameters and call track color tmp = s_pkt.mean.channel[0] - threshold; if (tmp < 16) tmp = 16; if (tmp > 240) tmp = 240; t_pkt.lower_bound.channel[0] = tmp; tmp = s_pkt.mean.channel[0] + threshold; if (tmp < 16) tmp = 16; if (tmp > 240) tmp = 240; t_pkt.upper_bound.channel[0] = tmp; tmp = s_pkt.mean.channel[1] - threshold; if (tmp < 16) tmp = 16; if (tmp > 240) tmp = 240; t_pkt.lower_bound.channel[1] = tmp; tmp = s_pkt.mean.channel[1] + threshold; if (tmp < 16) tmp = 16; if (tmp > 240) tmp = 240; t_pkt.upper_bound.channel[1] = tmp; tmp = s_pkt.mean.channel[2] - threshold; if (tmp < 16) tmp = 16; if (tmp > 240) tmp = 240;

    t_pkt.lower_bound.channel[2] = tmp; tmp = s_pkt.mean.channel[2] + threshold; f (tmp < 16) tmp = 16; if (tmp > 240) tmp = 240; t_pkt.upper_bound.channel[2] = tmp; printf("Got color min=[%d,%d,%d] max=[%d,%d,%d]\n", 12. Si el centroide es mayor que pixeles, el robot gira a la izquierda con velocidad alta (20), si el centroide en es mayor que pixeles, el robot gira a la izquierda con velocidad baja (10). if (t_pkt.centroid_x > (x_mid + 40)) { spoonBot_left (20); } else if (t_pkt.centroid_x > (x_mid + 5)) { spoonBot_left (10); } Este mismo procedimiento se realiza para girar a la derecha. if (t_pkt.centroid_x < (x_mid - 40)){ spoonBot_right (20); } else if (t_pkt.centroid_x < (x_mid - 5)){ spoonBot_right (10); } 13. Si la ventana virtual de color est alejada aproximadamente a 15 cm, el robot avanza hacia adelante con velocidad baja (10). if ((((t_pkt.x1-t_pkt.x0)*(t_pkt.y1- t_pkt.y0) )- t_pkt.num_pixels)> 12000){ spoonBot_drive (10); }

    REFERENCES [1] Aracil R., Gil P., Pomares J., Puente S., Torres F., Robots y Sistemas

    Sensoriales, Prentice Hall, Pearson Educacin, S.A. Madrid, 2002.

    [2] DeSouza G., Kak A. Vision for Mobile Robot Navigation: A Survey. IEEE Transactions on pattern analysis and machine intelligence, Vol. 24, No. 2, February 2002.

    [3] Carnegie Mellon University, CMUcam3 Data Sheet, Version 1.02, September 22, 2007. Available at URL:http://www.cmucam.org/wiki/Documentation

    [4] Carnegie Mellon University, CMUcam2 Vision Sensor, Version 1.05, Firmware v1.0, 2003. Available at URL:http://www.cmucam.org/wiki/Documentation

    [5] J.D. Bikman, An implementation of a Color Following System using the CMUcam3, UNC Charlotte, Charlotte, NC, USA, 2009

    [6] Thomas Brunl. Research Relevance of Mobile Robot Competitions, IEEE Robotics and Automation Magazine, Dec. 1999, pp. 32-37

    [7] Kelly R., Santibaez V., Control de Movimiento de Robots Manipuladores, Prentice Hall, Pearson Educacin, S.A. Madrid, 2003.

    [8] Ollero Baturone, A. Robtica. Manipuladores y Robots mviles. Alfaomega Grupo Editor, S.A. pp. 8-11, 28-34, 97-114, 142-144, 2007

    I. Planteamiento del problemaA. Descripcin del artculo

    II. Robot mvil tipo spoonbotA. CMUCam3B. Calibracin de los servosC. Modelo del SpoonBot

    III. Aplicacin del spoonBotA. Problemas de IluminacinB. Deteccin del color deseadoC. Seguimiento del color deseado

    IV. ConclusionesAnexoReferences