You are on page 1of 76

Benemrita Universidad Autnoma de Puebla Facultad de Ciencias de la Computacin

DISEO Y CONSTRUCCIN DE UNA ARQUITECTURA DE CONTROL REACTIVO PARA NAVEGACIN AUTNOMA DE ROBOTS MVILES CON BASE EN LA VISIN

Tesis Profesional
Que para obtener el Titulo de: Licenciado en Ciencias de la Computacin Presenta: C. Javier Herrera Vega Asesor: Dr. Rodrigo Montfar Chaveznava Coasesor: MC. Alfonso Garcs Bez

INDICE
Captulo I Introduccin ....................................................................................................... 1
1.1 Motivacin y alcance de la tesis ................................................................................... 1 1.2 Objetivos....................................................................................................................... 3 1.3 Contribuciones.............................................................................................................. 4 1.4 Organizacin de la tesis................................................................................................ 4

Captulo II El robot mvil Pioneer 2-CE............................................................................ 6


2.1 Componentes ................................................................................................................ 7 2.2 Especificaciones tcnicas ............................................................................................. 8 2.3 Componentes electrnicos.......................................................................................... 10 2.3.1 Tarjeta del Microcontrolador............................................................................... 10 2.3.2 Tarjeta de Alimentacin y Motores ..................................................................... 11 2.3.3 Tarjeta de Snares ............................................................................................... 11 2.4 Software...................................................................................................................... 11 2.4.1 ARIA ................................................................................................................... 12 2.4.2 Saphira ................................................................................................................. 12 2.4.3 PAI- Pioneer Application Interface ..................................................................... 12 2.5 Simuladores ................................................................................................................ 12 2.5.1 Pioneer ................................................................................................................. 12 2.5.2 Java Mobile Robots ............................................................................................. 13 2.5.2.1 Interfaz con Saphira...................................................................................... 15 2.5.2.2 Aplicacin de monitorizacin y control ....................................................... 16

Captulo III Procesamiento de imgenes.......................................................................... 18


3.1 Introduccin................................................................................................................ 18 3.2 Preprocesado............................................................................................................... 20 3.2.1 Conversin de imgenes en color a niveles de gris ............................................. 20 3.2.2 Suavizado Gaussiano........................................................................................... 21 3.3 Segmentacin ............................................................................................................. 23 3.3.1 Detectores de bordes............................................................................................ 24 3.3.1.1 Operadores de derivacin ............................................................................. 24 3.3.1.2 Detector de bordes de Sobel ......................................................................... 26 3.3.1.3 Detector de bordes de Canny........................................................................ 27 3.4 Descripcin................................................................................................................. 29 3.4.1 Cdigos de cadena ............................................................................................... 30 3.4.2 Signaturas ............................................................................................................ 32 3.4.3 Aproximaciones poligonales ............................................................................... 34 3.5 Operaciones Morfolgicas.......................................................................................... 34 3.5.1 Dilatacin ............................................................................................................ 35 3.5.2 Adelgazamiento ................................................................................................... 37

Captulo IV Arquitecturas de control reactivo................................................................ 39


4.1 Introduccin................................................................................................................ 39 4.2 Caractersticas............................................................................................................. 40 4.3 Representacin Situacin-Accin............................................................................... 41 4.4 Arquitectura de subsuncin de Brooks....................................................................... 42 4.5 Limitaciones ............................................................................................................... 43

Captulo V Diseo del sistema ........................................................................................... 44


5.1 Introduccin................................................................................................................ 44 5.2 Arquitectura ................................................................................................................ 44 5.3 Mdulos funcionales .................................................................................................. 46 5.3.1 Capa Seguir Objeto.............................................................................................. 46 5.3.2 Capa Detectar Obstculos.................................................................................... 47 5.4 Seleccin de Algoritmos............................................................................................. 47 5.5 Diagrama de Clases .................................................................................................... 49 5.6 Diagrama de Secuencias............................................................................................. 50

Captulo VI Implementacin del sistema ......................................................................... 52


6.1 Introduccin................................................................................................................ 52 6.2 Adquisicin de imgenes............................................................................................ 52 6.3 Deteccin de bordes ................................................................................................... 55 6.4 Dilatacin ................................................................................................................... 58 6.5 Adelgazamiento .......................................................................................................... 60 6.6 Algoritmo de seguimiento de bordes.......................................................................... 60 6.7 Algoritmo de identificacin del crculo...................................................................... 63 6.8 Localizacin del objeto............................................................................................... 64 6.9 Controlador del robot ................................................................................................. 66 6.10 Interfaz de Usuario ................................................................................................... 68

Resultados y Conclusiones ................................................................................................. 71 Trabajos Futuros ................................................................................................................ 72 Bibliografa.......................................................................................................................... 73

ii

Captulo I Introduccin

1.1 Motivacin y alcance de la tesis

Actualmente los robots mviles son una de las tecnologas que ms inters ha despertado en la industria por cuanto a su posible aplicacin en una gran variedad de tareas, especialmente aquellas que involucran la interaccin y cooperacin con el ser humano. El problema de control de un robot mvil, por sus caractersticas, es un ejemplo generalmente utilizado como caso de estudio en el desarrollo de sistemas autnomos de control y en la percepcin basada en una variedad de sensores. Por este motivo, diversos investigadores e ingenieros se ven obligados a realizar nuevos y variados estudios, al igual que bsquedas y creaciones de nuevas aplicaciones relacionadas con el control robtico.

El presente proyecto de tesis se enfoca en el tema de visin computacional para la navegacin autnoma de un robot mvil con una arquitectura de control basada en el comportamiento reactivo. Cuando se inicia un proyecto, determinar a priori cuales van a ser los lmites del mismo resulta una tarea difcil ya que es el mismo trabajo quien va delimitando, en funcin de los resultados, las reas a explorar y los mismos limites. Sin embargo, es posible realizar una declaracin de intenciones sobre cuales serian aquellos aspectos que en mayor o menor profundidad se desea abarcar. En general, en este trabajo se presenta un sistema de control para un robot mvil con el cual es posible manifestar comportamientos de forma adecuada, adems el robot se encuentra inmerso en un ambiente no estructurado, sin intervencin humana directa, realizando una tarea para la cual ha sido destinado. En este caso, el objetivo principal del sistema fue el reconocimiento y seguimiento de un objeto caracterstico que sirve de gua en la navegacin del robot. Sin duda, la solucin a este problema ha requerido de una tarea de investigacin en muchas reas por lo que nos encontramos frente a un problema de carcter multidisciplinario. Para establecer con mayor precisin las reas que estuvieron involucradas en la solucin del problema se defini el punto de partida y los recursos bsicos con los que se contaba. 1

Primeramente se dispuso de un robot mvil equipado con los elementos necesarios para navegar en un entorno del mundo real, diseado con fines de investigacin y aplicaciones prcticas, ya que la navegacin de un robot mvil est sujeta a la percepcin de su entorno mediante sensores, los cuales pueden ser de muchos tipos. En este caso se determin que la percepcin del entorno fuera mediante visin, la cual es proporcionada por una cmara dispuesta en el cuerpo del robot. Teniendo en cuenta estos factores se definieron las reas involucradas en la solucin del problema junto con las tareas especificas a realizar, como son:

Robtica: El estudio de las bases de la robtica, as como las arquitecturas de control existentes y los aspectos de percepcin y navegacin.

Procesamiento digital de imgenes: El estudio, evaluacin e implementacin de tcnicas de adquisicin y procesamiento de imgenes

Reconocimiento de patrones: El estudio e implementacin de alguno de los algoritmos existentes para la identificacin de objetos en una imagen.

Operacin del robot: El estudio de su modo de operacin, las pruebas e implementacin de las rutinas bsicas de movimiento.

La definicin del problema y el planteamiento del punto de partida fueron de utilidad para establecer fielmente las razones que motivaron a la realizacin de este trabajo:

En primer lugar, como una aportacin ms al estudio de la navegacin de robots mviles aplicando tcnicas del procesamiento digital de imgenes, que sirva de comparacin con otras tcnicas utilizadas para el mismo propsito.

Adems, la presentacin de un sistema modular flexible, escalable y adaptable con la idea de que pueda integrarse, o ser integrado, con otros sistemas sin mayor dificultad, permitiendo el aumento en la autonoma del robot. 2

1.2 Objetivos

El objetivo general del proyecto es el diseo y desarrollo de un sistema de control a travs de una arquitectura robtica reactiva para la navegacin de un robot mvil a travs de la visin, empleando el seguimiento de un objeto en movimiento que sirva de gua. Para alcanzar esta meta fue necesario dividir el problema y establecer objetivos especficos para cada una de las reas involucradas para la solucin del problema, con el fin de poder evaluar de forma independiente cada una de estas tareas, su fiabilidad y desempeo en todo el sistema. Como primer objetivo particular deseamos realizar un sistema de adquisicin de imgenes utilizando herramientas que optimizan este proceso, independiente, en la medida de lo posible, de los dispositivos utilizados, lo cual proporciona flexibilidad al sistema. Por ejemplo, el hardware utilizado para proveer la visin no est restringido solo al tipo de cmara utilizado durante el desarrollo del proyecto, sino que puede ser reemplazado por algn otro que proporcione un mejor desempeo para el sistema. El segundo objetivo particular ha sido el estudio y aplicacin de las tcnicas del procesamiento digital de imgenes empleadas en el rea de robtica, con la finalidad de desarrollar un mdulo para el reconocimiento del objeto caracterstico en las imgenes.

El diseo de la arquitectura de control es pieza fundamental en la organizacin del sistema ya que gua el desarrollo de cada uno de los bloques que integran al sistema, as como la comunicacin entre todos los componentes tanto de software como de hardware. Finalmente, el conocimiento del modo de operacin y los conceptos fundamentales del manejo del robot permiten la implementacin del sistema bsico de movimiento para que el robot sea capaz de seguir al objeto.

Una vez alcanzadas cada una de estas metas, se han conseguido los mdulos, que una vez integrados, dan como resultado el sistema de control completo, con lo que cumplimos con el objetivo general.

1.3 Contribuciones

La principal aportacin de este proyecto es un mdulo de control para la navegacin autnoma de un robot mvil basado en una arquitectura robtica reactiva. Este mdulo es adaptable a proyectos similares que buscan ampliar cada vez ms la autonoma del robot. Adems se contribuye a la investigacin en el procesamiento digital de imgenes aplicadas a la navegacin, con la finalidad de poseer una referencia ms en el desarrollo de arquitecturas de control como las que se describirn a lo largo de este documento. Los resultados obtenidos con trabajos similares son utilizados para tareas de ayuda a discapacitados y visitas virtuales a fbricas y museos. Actualmente, en pases que han estado en conflicto blico, los robots con estas caractersticas son empleados para la deteccin y/o desarme de minas personales. Una tarea de aplicacin ms es el transporte y/o manipulacin de sustancias txicas o peligrosas o cualquier otra actividad que ponga en estado de riesgo al ser humano. Por lo cual, se espera con este trabajo contribuir tambin en este tipo de tareas.

1.4 Organizacin de la tesis

La tesis comprende varios captulos en los que se describen desde los antecedentes y conceptos fundamentales para hallar y plantear una solucin a los problemas presentes en el trabajo, hasta la implementacin del sistema y descripcin de algoritmos y herramientas utilizadas.

En el captulo 2 se presenta la plataforma mvil, el robot Pioneer 2-CE. Se describen cada uno de sus componentes, arquitectura, especificaciones tcnicas, dimensiones y aplicaciones en el campo prctico y de investigacin, tambin se mencionan los simuladores disponibles y el software de control bsico disponible.

En el captulo 3 se presenta una introduccin del procesamiento digital de imgenes y la descripcin de algoritmos utilizados en el desarrollo del sistema que resuelven el problema de deteccin. 4

El captulo 4 trata el tema de las arquitecturas de control reactivo, haciendo una resea de las arquitecturas ms importantes.

En el capitulo 5 se describe el diseo del sistema, la arquitectura desarrollada, los mdulos que integran el sistema y diagramas de clases.

El capitulo 6 presenta la implementacin del sistema con las herramientas utilizadas como los lenguajes de programacin y herramientas auxiliares, adems de la descripcin de los algoritmos implementados para realizar la deteccin y el control del robot.

Por ultimo presentamos los resultados obtenidos y las conclusiones de la elaboracin de este trabajo.

Captulo II
El Robot mvil Pioneer 2-CE

Pioneer es una familia de robots mviles desarrollados por la empresa ActivMedia Robotics, dentro de la cual se encuentra el Pioneer 2-DX, CE, AT entre otros modelos.

Figura 2-1 Pioneer 2-CE

El Pioneer 2-CE (Figura 2-1) es un robot mvil, gil, verstil e inteligente construido bajo el modelo cliente-servidor como todos los robots de ActiveMedia. Esta diseado tanto para propsitos de investigacin como para aplicaciones reales entre las cuales podemos mencionar:

Teleoperacin Localizacin Monitoreo Reconocimiento Visin Cooperacin

Su tamao lo hace ideal para desplazarse por lugares con espacio reducido como oficinas, laboratorios o salones de clases.

2.1 Componentes

Estos robots contienen los componentes bsicos para sensar y navegar en un ambiente del mundo real, entre los que se incluyen:

Bateras (como fuente de alimentacin) Motores Ruedas Codificadores de posicin y velocidad Anillo de snares Microcontrolador Tarjeta de snares Tarjeta de alimentacin P2OS (software servidor) API ARIA para desarrolladores

Todos los dispositivos son manejados a travs del microcontrolador encontrado en el interior del robot. La arquitectura est basada en un modelo cliente/servidor, donde el robot cuenta con un software servidor que es el encargado del manejo de todos los dispositivos para interactuar con su entorno, atendiendo a las peticiones de los clientes que son los programas de alto-nivel que proporcionan inteligencia al robot.

La comunicacin con los programas clientes almacenados o ejecutados desde una PC puede ser de diversas maneras segn lo requiera la aplicacin (Fig 2-2).

Inalmbrica va radio modem Conexin directa por cable va RS232 con una Laptop sobre el robot Conexin directa por cable va RS232 con una PC fuera del robot Ethernet inalmbrico

Figura 2-2 Tipos de conexin del robot servidor a la PC cliente

2.2 Especificaciones tcnicas

El Pioneer tiene un peso de 9 kg. El cuerpo del robot est hecho de fuerte aluminio y ruedas de goma reforzadas, estas caractersticas permiten que el Pioneer 2 soporte una carga de hasta 23 Kg. de peso adicional, sus dimensiones cumplen con las especificaciones para competir dentro de la liga media de la RoboCup (Figura 2-3).

Figura 2-3. Dimensiones fsicas del Pioneer 2-CE

Los motores impulsores utilizan engranes con una relacin 19.5:1 y contienen codificadores de 500-pulsos. Este robot es holonmico1 y puede rotar en el mismo lugar moviendo ambas ruedas o puede girar alrededor de una rueda fija en un crculo de 32 cm de radio, y posee una pequea rueda trasera que sirve para el balance. En superficies planas puede alcanzar una velocidad de 1.6 m/s, a velocidades lentas puede llevar una carga de hasta 23 kg. la cual debe ser balanceada para una operacin efectiva del robot.

Adicionalmente cuenta con un arreglo de snares dispuesto en la parte superior-frontal del robot y consta de 8 transductores que proveen la deteccin de objetos e informacin de alcance, as como permiten la navegacin alrededor de obstculos. La posicin de los snares es: uno a cada lado del robot y seis al frente separados en un intervalo de 20 grados (Fig 2-4), con esta distribucin se logra un rastreo de 180 grados para la deteccin de obstculos.

Un robot holonmico es aquel en que todos sus grados de libertad son controlables.

Figura 2-4 Arreglo de sonares

La velocidad de disparo en cada snar es de 25Hz (40 milisegundos por snar) y se tiene un rango de sensibilidad que va desde los 10 cm. hasta ms de 5 metros (los objetos cercanos a menos de 10 cm. no son detectados), el rango de sensibilidad puede ser modificado manualmente segn sea el caso para cada aplicacin y circunstancia del medio en el que se encuentre el robot.

2.3 Componentes electrnicos

El funcionamiento del Pioneer 2 esta a cargo de tres tarjetas principales que son: Microcontrolador Alimentacin/Motores Snares

2.3.1 Tarjeta del Microcontrolador

El microcontrolador del Pioneer 2-CE utiliza un microprocesador Siemens 88C166 a 20MHz. con memoria flash-ROM de 32KB. El microcontrolador tambin posee una memoria RAM de 32 KB, dos puerto seriales RS232 y varios puertos digital y analogicodigital, y un bus de 8 bits. Todos los puertos estn disponibles y pueden ser manipulados a travs del P2OS (Pioneer 2 Operating System).

10

2.3.2 Tarjeta de Alimentacin y Motores

Est encargada de suministrar el voltaje necesario (12 y 5 volts.) a cada componente dentro del robot, contiene los conectores accesibles para la alimentacin del hardware adicional, y tambin contiene los componentes electrnicos necesarios para el accionamiento de los motores de impulso de las llantas.

2.3.3 Tarjeta de Snares

Esta tarjeta controla independientemente cada snar dispuesto en el arreglo de snares. Consiste en un multiplexor para accionar cada snar. Un cable conductor de seal conecta a la tarjeta con el microcontrolador para llevar a cabo la comunicacin.

2.4 Software

El Pioneer 2-CE viene acompaado por una variedad de software de desarrollo de robtica mvil, disponible para diferentes plataformas (UNIX,Linux,Macintosh,Win32) este software incluye:

ARIA (ActivMedia Robotics Interface for Application) Suite de desarrollo cliente de Saphira con Colbert Ayllu Simulador Pioneer Pioneer LOGO Pioneer Application Interface (PAI)

11

2.4.1 ARIA

ARIA es una librera de desarrollo orientada a objetos escrita en C++, provee una comunicacin cercana con el software servidor P2OS (Pioneer 2 Operating System) incluido en el microcontrolador del robot, este software es el encargado de realizar las tareas de ms bajo nivel como el control de motores, la adquisicin de la informacin de los sensores o el manejo de cualquier otro accesorio. El papel fundamental de ARIA se encuentra del lado de las aplicaciones inteligentes del cliente en la arquitectura clienteservidor.

2.4.2 Saphira

Saphira es un software que provee toda la funcionalidad de ARIA adems de proporcionar rutinas con las que es ms fcil y simple escribir nuevas rutinas de control para el robot, y cuenta con un simulador y una aplicacin cliente que permite el manejo del robot.

2.4.3 PAI- Pioneer Application Interface

PAI Pioneer Application Interface es una librera de funciones y definiciones para el control de robots mviles. PAI trabaja conjuntamente con el entorno de desarrollo de aplicaciones robticas de la SRI Internationals Saphira reuniendo muchas de sus rutinas de control de bajo nivel en una API2 simple y ms fcil de manejar. PAI no intenta remplazar a Saphira pero facilita el aprendizaje de operacin de los Pioneers.

2.5 Simuladores

2.5.1 Pioneer

Es posible realizar pruebas con este tipo de robots sin ponerlos en riesgo cuando se comienza a experimentar con ellos haciendo uso de simuladores, o tambin para estudiar su
2

API son las siglas en ingls de Application Programming Interface y bsicamente designan a un conjunto de funciones y procedimientos que los programadores pueden utilizar en sus propios programas.

12

comportamiento y control cuando se cuenta con el robot fsicamente. Saphira proporciona un simulador llamado Pioneer (Figura 2-5), el cual es un software que acta como el robotservidor al que se pueden conectar los programas clientes y ejecutar rutinas de control. El simulador puede ser configurado para cada uno de los modelos de robots de ActivMedia para llevar a cabo la simulacin con el robot requerido.

Figura 2-5 Simulador Pioneer de Saphira

2.5.2 Java Mobile Robots

Otro simulador existente para robots Pioneer es JMR (Java Mobile Robots) el cual es un entorno de simulacin de robots hecho en el lenguaje de programacin Java que permite la simulacin y control de robots. El sistema dispone de una aplicacin cliente, sobre la que se cargarn los robots que se desea probar, y de una aplicacin servidor que se encarga de llevar un control de los robots conectados, actualizar su situacin en el mundo que se encuentra especificado, y proporcionar al cliente los datos que se soliciten. Se persiguen con este entorno dos objetivos fundamentales: uno es definir una interfaz de comunicacin de Java con la librera Saphira de control de robots. De este modo, se podr conectar el sistema al simulador de robots de Saphira (Pioneer), y tambin a los robots reales que se gestionen con dicha librera. Conviene resaltar aqu la modularidad que

13

permite Java , y que hace posible la adaptacin del programa a otras libreras de control de robots. El otro objetivo que se persigue es proporcionar un sistema propio de simulacin, modular y fcilmente portable, que permita realizar sencillas modificaciones o actualizaciones del mismo. La estructura de Java permite definir un esqueleto bsico sobre el que se puede ir modificando o ampliando caractersticas de forma sencilla, aadiendo nuevas clases que extiendan o sobreescriban a las anteriores. De esta forma, adems de la comunicacin con Saphira, se dispone de un sistema auto-integrado, que permite la prueba de robots y procesos sobre el mismo sin necesidad de realizar un programa adicional, mediante un simulador tridimensional (Figura 2-6) propio. Para todo lo anterior, existe un programa cliente-servidor que permite la gestin de robots, as como algunas libreras auxiliares, algunas de las cuales son utilizadas por dichos programas, y otras que facilitarn la elaboracin de procesos en los robots por parte del usuario. El entorno JMR incluye: Simulador tridimensional de robots mviles Interfaz con Saphira Aplicacin de monitorizacin y control de robots Librera para programacin de robots en Java (TM) Libreras de apoyo

14

Figura 2-6 Simulador de robots mviles 3D

Sus caractersticas principales son: Simulacin de mltiples robots simultneamente Visualizacin de mundos en tres dimensiones Errores en las medidas configurables por el usuario (para aadir realismo) Ofrece al usuario facilidades para la simulacin de la toma de los datos de robots en sus programas Compatibilidad con los formatos de fichero de Saphira Incluye distintos tipos de iluminacin, cmaras, materiales, texturas, as como la incorporacin de objetos VRML, tanto de los robots como en los objetos del entorno, dando una mayor riqueza a la definicin de los mundos

2.5.2.1 Interfaz con Saphira

En esta interfaz engloba tanto la conexin con el simulador Pioneer como la conexin con un robot real a travs de un puerto serie utilizando Saphira. Este tipo de servidor no dispone de ninguna aplicacin visual de monitorizacin, sino simplemente de un programa que se deja ejecutando y permite la comunicacin con Saphira.

15

Para la comunicacin con Saphira se emplea JNI (Java Native Interface), una utilidad de Java que permite incorporar a nuestro cdigo en Java fragmentos de cdigo escritos en otros lenguajes de programacin como C. As, se definen en una librera un conjunto de funciones escritas en C que interacta con Saphira, y desde Java se define el puente para poder llamar a las funciones de dicha librera.

2.5.2.2 Aplicacin de monitorizacin y control

Se trata de un programa para manejar los distintos robots que queremos conectar (Figura 27). El programa est preparado para soportar varios robots simultneamente (aunque si se est comunicando con Saphira, slo se permitir uno por las limitaciones de Saphira), y se conseguira con ello el mismo efecto que lanzando varias aplicaciones cliente, una por cada robot. Tambin dispone de controles para elegir a qu servidor conectarse (al simulador Java, al simulador Saphira, o a un robot real a travs de Saphira por un puerto serie dado), indicando la direccin donde se encuentra el servidor. Esto permite la comunicacin con un servidor situado en una mquina remota, conociendo su direccin IP y el puerto por el cual comunicarse. Adems, permite aadir y quitar robots del servidor, y llevar un control de los datos de cada robot (lecturas de snares, estado actual, parmetros de configuracin, imagen de la cmara, etc).

16

Figura 2-7 Aplicacin de monitorizacin y control de robots

17

Captulo III
Procesamiento de imgenes

3.1 Introduccin

El inters por los mtodos de tratamiento digital de imgenes se deriva de dos reas principales de aplicacin: la mejora de la informacin pictrica para la interpretacin humana y el procesamiento de los datos de la escena para la percepcin autnoma de una mquina. El segundo aspecto ha dado origen a una de las ms recientes reas de investigacin que es la visin por computadora, la cual actualmente es utilizada en muchas aplicaciones tanto en robtica como en la industria para mejorar el control de calidad o cualquier otro proceso que requiera supervisin ptica para la toma de decisiones.

El proceso de visin comprende un amplio rango de hardware, software y recursos tericos. Mencionaremos de forma breve las etapas fundamentales del procesamiento que es preciso realizar para la interpretacin de una imagen.

La primera etapa del proceso es la adquisicin de imgenes en forma digital, para esto es necesario un dispositivo (hardware) con la posibilidad de digitalizar imgenes del mundo real, algunos ejemplos podran ser las cmaras digitales y los escneres adems de que existen dispositivos para digitalizar las seales analgicas como son los frame grabbers. El dispositivo empleado queda determinado por la aplicacin. La siguiente etapa trata del preprocesamiento de esa imagen. La funcin bsica de esta etapa es mejorar la imagen de forma que se aumenten las posibilidades de xito en los procesos posteriores. Seguido a este proceso, la segmentacin autnoma de la imagen es una de las labores ms difciles del tratamiento digital de imgenes. De forma general, la segmentacin consiste en partir una imagen de entrada en sus partes constituyentes u objetos. A la salida del proceso de segmentacin habitualmente se tienen los datos de pxel en bruto, que constituyen el contorno de una regin o bien todos los puntos de una regin determinada. Una vez segmentada la imagen hay que decidir la representacin que daremos a los datos, es decir, 18

dictaminar si los datos representan un contorno o una regin completa. La representacin como un contorno es la adecuada cuando el inters radica en las caractersticas de la forma exterior. Tambin se debe especificar un mtodo para describir los datos de forma que se resalten los rasgos de inters. La descripcin, tambin llamada seleccin de rasgos, consiste en extraer rasgos con alguna informacin cuantitativa de inters o que sean fundamentales para diferenciar una clase de objetos de otra. La ltima etapa incluye el reconocimiento e interpretacin. El reconocimiento es el proceso que asigna una etiqueta a un objeto basndose en la informacin proporcionada por sus descriptores. La interpretacin implica asignar un significado a un conjunto de objetos reconocidos. La Figura 3-1 muestra las etapas descritas.

Adquisicin de imgenes

Reconocimiento e interpretacin Preprocesado

Segmentacin

Representacin y descripcin

Figura 3-1 Etapas del procesamiento de imgenes

En las siguientes secciones describiremos las tcnicas utilizadas en el desarrollo del sistema para las etapas antes mencionadas a partir del preprocesamiento.

19

3.2 Preprocesado

El principal objetivo de las tcnicas de mejora es procesar una imagen de forma que resulte ms adecuada que la original para una aplicacin especfica.

Las principales tcnicas para la mejora de la imagen consisten en filtros para la eliminacin de ruido, iluminacin, contraste y cualquier mtodo que mejore la imagen segn lo requiera la aplicacin. 3.2.1 Conversin de imgenes en color a niveles de gris El ojo humano percibe distintas intensidades de luz en funcin del color que observe. Esto es debido a la respuesta del ojo al espectro visible la cual se puede observar en la Figura 32. Por esa razn, el clculo del equivalente blanco y negro (escala de grises o luminancia) de la imagen debe realizarse como una media ponderada de las distintas componentes de color de cada pxel.

Figura 3-2 Longitudes de onda

La ecuacin de la luminancia (Y) nos muestra la expresin matemtica de ese fenmeno y los factores de ponderacin de cada componente de color nos indican la sensibilidad del ojo humano a las frecuencias del espectro cercanas al rojo (R), verde(G) y azul(B). Dicha ecuacin es: Y = R*0.3+G*0.59+B*0.11 20

Por tanto, para realizar esta conversin basta con aplicar la ecuacin a cada pxel de la imagen en color. El resultado es una nueva matriz de un byte por pxel que dara la informacin de luminancia. Una forma alternativa para la conversin a escala de grises es calcular el promedio de los valores de intensidad de cada canal, rojo, verde, azul y asignar el valor resultante nuevamente a cada componente que forman el pxel de la imagen.

imagen( x, y ) =

imagen(x, y, R ) + imagen( x, y, G ) + imagen( x, y, V ) 3

3.2.2 Suavizado Gaussiano

El operador de suavizado Gaussiano es un operador de convolucin bi-dimensional que es usado para difuminar imgenes, eliminar detalles y remover el ruido en la imagen. La convolucin es realizada por una mscara que representa la funcin de distribucin Gaussiana. La funcin de distribucin Gaussiana unidimensional tiene la forma:

donde es la desviacin estndar de la distribucin. En la Figura 3-3 apreciamos esta distribucin unidimensional.

Figura 3-3 Distribucin Gaussiana unidimensional 21

En dos dimensiones tenemos:

Figura 3-4 Funcin de distribucin Gaussiana en bidimensional

La idea del suavizado Gaussiano es usar esta distribucin bidimensionales como una funcin de punto de propagacin y esta es llevada a cabo mediante una operacin de convolucin. Ya que una imagen es almacenada como una coleccin discreta de pxeles necesitamos realizar una aproximacin discreta de la funcin antes de poder ejecutar la convolucin. La siguiente figura muestra la mscara de convolucin que aproxima a la funcin Gaussiana con = 1.0

Figura 3-5 Aproximacin discreta de la funcin Gaussiana bidimensional con = 1.0

Una vez calculados los valores de la mscara de convolucin el suavizado puede ser realizado usando mtodos de convolucin estndar. El grado de suavizado est determinado

22

por la desviacin estndar (un valor alto para conlleva a tener una mscara de convolucin de mayor dimensin). Las Figura 3-6 presenta una imagen y los diferentes valores para igual a 1, 2 y 4 respectivamente que intensifican el nivel de difuminado, suavizado borrosidad.

a)

b)

c)

d)

Figura 3-6 a) Imagen Original. b)Suavizado con =1. c) Suavizado con =2. Suavizado con =4.

d)

3.3 Segmentacin

Cuando se ha alcanzado el nivel deseado de mejora de la imagen para los propsitos especficos de la aplicacin se comienza con la etapa de segmentacin, ste es el primer paso en el anlisis de la imagen. La segmentacin subdivide una imagen en sus partes constituyentes u objetos. El nivel al que se lleva a cabo esta subdivisin depende del problema a resolver. Esto es, la segmentacin deber detenerse cuando los objetos de inters hayan sido aislados. En general, la segmentacin autnoma es una de las tareas ms difciles del procesamiento de imgenes. Esta etapa determina el xito o el fracaso del anlisis.

La deteccin de bordes es una de las operaciones ms comnmente usadas en el anlisis de imgenes. La razn para esto es que los bordes forman el contorno de un objeto. Un borde es el lmite entre un objeto y el fondo e indica el limite entre objetos traslapados. Esto 23

significa que si los bordes en una imagen pueden ser identificados con exactitud, todos los objetos pueden ser localizados y sus propiedades bsicas como rea, permetro y forma pueden ser medidas.

Existe una gran cantidad de algoritmos diseados para realizar la extraccin de bordes en una imagen, cada uno con sus ventajas y desventajas sujetos al nivel de aplicacin. Los algoritmos que aqu se mencionan fueron considerados para el desarrollo del proyecto.

3.3.1 Detectores de bordes

3.3.1.1 Operadores de derivacin

Ya que un borde es definido como un cambio abrupto en los niveles de gris, un operador de derivacin es sensible a estos cambios y opera como un detector de bordes. Una interpretacin de una derivada es como la razn de cambio de una funcin, y la razn de cambio en los niveles de gris en una imagen es mayor cerca de un borde y menor en reas constantes. Ya que una imagen es bidimensional, es importante considerar los cambios de nivel en varias direcciones. Por esta razn, son usadas las derivadas parciales de la imagen, con respecto a las direcciones principales x y y. El operador resultante ocurre ser el gradiente y si una imagen es pensada como una funcin de dos variables A(x,y) entonces el gradiente es definido como:

A(x,y)=(A/x , A/y)
Debido a que una imagen no es propiamente una funcin no puede ser diferenciada de la forma usual como lo es con las funciones reales continuas. En su lugar, la derivada en un pxel es aproximada por la diferencia en los niveles de gris sobre alguna regin local.

x1A(x,y)=A(x,y) - A(x-1,y) y1A(x,y)=A(x,y) - A(x,y-1)

24

La Figura 3-7 muestra el concepto del operador de derivada. Se presentan las imgenes de una banda clara sobre un fondo oscuro y una banda oscura sobre un fondo claro, el perfil del nivel de gris a lo largo de una lnea de exploracin horizontal de la imagen y la primera derivada del perfil.

Figura 3-7 Operador de derivacin

Se observa en el perfil que un borde est modelado como un cambio suave del nivel de gris. Se puede ver en la primera imagen que la derivada del perfil de nivel de gris es positiva en el borde de entrada de la transicin y negativa en el borde de salida y cero en las zonas de nivel de gris constante.

El vector resultante del calculo del gradiente contiene informacin acerca de la intensidad del borde en el pxel y cual es su direccin. La magnitud del vector gradiente es la longitud de la hipotenusa del tringulo de lados x y y y sta refleja la fuerza del borde en cualquier pxel dado. La direccin del borde en el mismo pxel es el ngulo que la hipotenusa hace con los ejes.

25

Matemticamente, la respuesta de bordes est dada por: Gmag = [(A/x )2+ (A/y)2]1/2

Para fines del clculo computacional este valor suele calcularse cmo el valor absoluto, es decir: Gmag = | (A/x ) | + | (A/y) |

Y la direccin del borde es aproximadamente:

Gdir = atan [(A/x ) / (A/y)]

3.3.1.2 Detector de bordes de Sobel

El detector de bordes de Sobel consiste en un par de mscaras de convolucin de 3x3 coeficientes mostradas en la Figura 3-8. Una mscara es simplemente la otra con una rotacin de 90.

Figura 3-8 Mscaras de convolucin de Sobel

26

Los operadores de Sobel tienen la ventaja de proporcionar tanto una diferenciacin como un efecto de suavizado. Como las derivadas realzan el ruido, este efecto de suavizado es una caracterstica particularmente atractiva en los operadores de Sobel. Las derivadas basadas en este operador son:

Gx = (z7+2z8+z9) (z1+2z2+z3) Gy = (z3+2z6+z9) (z1+2z4+z7)

donde las z son los niveles de gris de los pxeles solapados por las mscaras en cualquier posicin de la imagen. Entonces se calcula el gradiente en la ubicacin del centro de las mscaras en las direcciones x, utilizando la mscara Gx y y utilizando la mscara Gy. As obtendremos por separado los bordes horizontales y verticales. La suma de estas imgenes da como resultado la imagen gradiente completa.

3.3.1.3 Detector de bordes de Canny

John Canny defini un conjunto de metas para un detector de bordes y describi un mtodo ptimo para adquirirlos, estas metas son:

Rango de error: El detector de bordes debe responder solo a bordes y deber encontrarlos todos.

Localizacin: La distancia entre los pxeles del borde encontrados por el detector y el borde actual debe ser tan pequea como sea posible

Respuesta: El detector no debe identificar mltiples pxeles de borde donde solo existen bordes simples.

27

Canny asumi un borde de paso sujeto a ruido Gaussiano. El detector de bordes fue asumido para ser un filtro de convolucin que suavizara el ruido y localizara los bordes. El problema es identificar un filtro que optimice los tres criterios antes mencionados, estos criterios fueron expresados matemticamente cuya discusin esta fuera de alcance de esta tesis, para mayor informacin refirase a [Parker, 1997].

El resultado de la optimizacin de estos criterios resulta muy complejo para ser resuelto analticamente, pero una eficiente aproximacin es la derivada de una funcin Gaussiana

Para dos dimensiones es

G tiene derivadas en ambas direcciones x, y.

La aproximacin al filtro ptimo de Canny para la deteccin de bordes es G y as, convolucionando la imagen de entrada con G obtenemos una imagen E que tiene los bordes realzados, an en la presencia de ruido el cual ha sido incorporado en el modelo del borde de una imagen.

El algoritmo del detector de bordes es el siguiente:

1. Leer la imagen I a ser procesada. 2. Crear una mscara Gaussiana G para convolucionar con I. La desviacin estndar S es un parmetro para el detector. 3. Crear una mscara para la primera derivada de la funcin Gaussiana en las direcciones X y Y: Gx y Gy, el valor de S es el mismo usado en el paso 2. 4. Convolucionar la imagen I con G a lo largo de los renglones para dar la componente X de la imagen Ix y hacia abajo las columnas para dar la componente Y de la imagen Iy.

28

5. Convolucionar la imagen Ix con Gx para dar Ix, la componente de I convolucionada con la derivada de la Gaussiana y convolucionar Iy con Gy para dar Iy. 6. Las componentes X y Y deben ser combinadas. La magnitud del resultado es calculada en cada pxel (x,y) como M(x,y)=(I x(x,y)2 + Iy(x,y)2) 1/2 El siguiente paso en la deteccin es la supresin de los no-mximos, donde los pxeles que no son un mximo local son eliminados. La explicacin ms detallada de este proceso puede encontrarse en [Parker, 1997]. La imagen obtenida hasta este momento contiene an niveles de gris, con el objeto de determinar si pertenecen o no a un borde, Canny sugiri una umbralizacin usando histresis. Este proceso utiliza un umbral mayor Th y uno menor Tl. Cualquier pxel mayor a el umbral Th es marcado como un pxel de borde, despus cualquier pxel que est conectado a este pxel y tenga un valor mayor a Tl es seleccionado como pxel de borde.

A pesar de que la imagen original contenga ruido, la imagen resultante de aplicar este algoritmo muestra con gran definicin los bordes de los objetos ms significativos de la escena.

3.4 Descripcin

El problema de la descripcin en la visin consiste en extraer caractersticas de un objeto para reconocerlo. Por lo general, los descriptores deben ser independientes del tamao, la localizacin y orientacin del objeto y deben contener suficiente informacin de discriminacin para distinguir un objeto de otro. La descripcin es un tema central en el diseo de sistemas de visin ya que los descriptores afectan no solo a la complejidad de los algoritmos de reconocimiento, sino tambin a su rendimiento. A continuacin se presenta un conjunto de mtodos para la descripcin de fronteras.

29

3.4.1 Cdigos de cadena

Los cdigos de cadena se usan para representar una frontera como un conjunto de segmentos con longitud y direccin especificadas. Por lo general, esta representacin se establece sobre una cuadricula rectangular usando conectividad 4 u 8, como se ve en la Figura 3-9. La longitud de cada segmento viene dada por la resolucin de la cuadrcula y las direcciones las fija el cdigo elegido. Dos bits son suficientes para representar todas las direcciones en el cdigo 4 y se necesitan tres bits para el cdigo 8. Es posible establecer cdigos de cadena con ms direcciones, pero los cdigos mostrados en la Figura 3-9 son los que se usan ms a menudo en la prctica.
1 3 2 1

6 b)

a)

Figura 3-9 a) Cdigo de cadena 4-direccional. b) Cdigo de cadena 8-direccional

Para obtener el cdigo de cadena de una frontera dada, en primer lugar seleccionamos un tamao de cuadrcula, como se muestra en la Figura 3-10a. Despus, si una celda incluye ms de una cantidad determinada del rea interior de la frontera (por lo general un cincuenta por ciento), le asignaremos un 1 a la celda; en caso contrario, le asignaremos un 0. La Figura 3-10b ilustra este proceso, mostrndose las celdas con valor 1 en tono oscuro. Finalmente, codificaremos la frontera entre dos regiones usando los cdigos de direccin dados en la Figura 3-9a.

30

Figura 3-10 Pasos para obtener el cdigo de cadena

El resultado se muestra en la figura 3-11, comenzndo la codificacin en la esquina superior izquierda y siguiendo en el sentido de las agujas del reloj.

Figura 3-11 Cdigo de cadena obtenido 0 3 3 0 1 1 0 3 3 3.....

Un procedimiento alternativo consiste en dividir la frontera en segmentos de igual longitud (esto es, teniendo cada segmento el mismo nmero de pixeles), conectar los extremos de cada segmento mediante una lnea recta y asignar a cada lnea la direccin ms cercana a una de las direcciones permitidas del cdigo de cadena.

31

Es importante observar que el cdigo de cadena de una frontera depende del punto de inicio. Es posible, de todas formas, normalizar el cdigo mediante un sencillo procedimiento: dado un cdigo de cadena obtenido comenzando en un punto arbitrario, le trataremos como una secuencia circular de nmeros de direccin y redefiniremos el punto de comienzo de forma que la secuencia de nmeros resultante forme un entero de magnitud mnima.

3.4.2 Signaturas

Una signatura es una representacin funcional unidimensional de una frontera. Existen muchas formas de obtener las signaturas. Una de las ms sencillas es representar la distancia desde el centro hasta la frontera como una funcin del ngulo, como se muestra en la Figura 3-12. Las signaturas creadas mediante este mtodo dependen del tamao y del punto de comienzo. Se puede hacer una normalizacin de tamao haciendo que la curva r() tenga un valor mximo de una unidad.

Figura 3-12 Dos fronteras y sus correspondientes signaturas de distancia respecto al ngulo

La representacin de la distancia respecto al ngulo no es la nica forma de generar una signatura. Se podra recorrer la frontera representando el ngulo formado por una lnea tangente a la frontera y una lnea de referencia como una funcin de posicin a lo largo de 32

la frontera. La signatura que se obtiene, aunque bastante diferente a la curva r(), dara informacin sobre las caractersticas bsicas de forma. Por ejemplo, los segmentos horizontales de la curva se corresponderan con lneas rectas debido a que el ngulo tangente sera constante. Una variacin de este mtodo es usar la llamada funcin de densidad de pendiente como signatura. Esta funcin es un histograma de los valores del ngulo tangente. Como los histogramas nos dan una medida de la concentracin de valores, la funcin de densidad de pendiente respondera fuertemente a secciones de la frontera con ngulos tangentes constantes y tendra profundos valles en las secciones donde se produjeran variaciones rpidas de los ngulos (esquinas u otras inflexiones de forma).

Una vez que se ha obtenido la signatura, nos enfrentamos con el problema de describirla de forma que nos permita diferenciar entre las signaturas correspondientes a distintas formas de frontera. Este problema suele ser sencillo ya que tratamos con funciones unidimensionales. Una tcnica usada a menudo para caracterizar a una signatura es calcular sus momentos. Supongamos que a es una variable aleatoria discreta que representa las variaciones de amplitud en una signatura y que p(ai), i=1,2,...,k, representa su correspondiente histograma, donde K es el nmero de niveles discretos de amplitud. El momento n-simo de a respecto a su media se define como

(a ) = (a m) p(a )
K n n i =1 i i

donde
m = ai p (ai )
K i =1

m es el valor medio de a y 2 es su varianza. En general slo se suelen necesitar los primeros momentos para distinguir dos signaturas de formas bien diferenciadas.

33

3.4.3 Aproximaciones poligonales

Una frontera digital se puede aproximar con una exactitud arbitraria mediante un polgono. Para una curva cerrada, la aproximacin es exacta cuando el nmero de segmentos del polgono es igual al nmero de puntos de la frontera de forma que cada par de puntos adyacentes defina un segmento del polgono. En la prctica, el objetivo de la aproximacin poligonal es capturar la esencia de la forma de la frontera con el menor nmero posible de segmentos poligonales. Aunque este problema, por lo general, no resulta trivial, y se puede convertir fcilmente en una bsqueda iterativa que consuma un tiempo excesivo, existen gran variedad de tcnicas de aproximacin poligonal sencillas que se adaptan muy bien para aplicaciones de visin.

3.5 Operaciones Morfolgicas

La morfologa matemtica est basada en la geometra y la forma, Las operaciones morfolgicas simplifican las imgenes y preservan las formas principales de los objetos. En visin artificial es frecuente utilizar la morfologa para el tratamiento de regiones en el sentido de determinar cmo se pueden cambiar, contar o evaluar.

La morfologa puede utilizarse para las siguientes tareas:

El suavizado de los bordes de una regin. Esto es til, por ejemplo, si se necesita mejorar un borde, ya que usando tcnicas de segmentacin estndar, los bordes se presentan generalmente ruidosos debido tanto al proceso de captura como a los procesos de segmentacin apareciendo sobre ellos pequeos valles que pueden suprimirse mediante transformaciones morfolgicas.

La separacin de determinadas regiones que el proceso de segmentacin las presenta unidas.

34

La unin de regiones que han sido separadas durante la segmentacin.

3.5.1 Dilatacin

La dilatacin es una de las dos operaciones bsicas en el rea de la morfologa matemtica. Esta es tpicamente aplicada a imgenes binarias, pero existen versiones que trabajan sobre imgenes en escala de grises. El efecto bsico del operador en una imagen binaria es engrosar gradualmente los bordes de regiones de pxeles de primer plano. As, las reas de pxeles de primer plano crecen en tamao mientras las aberturas en estas regiones se hacen ms pequeas.

El operador de dilatacin toma dos muestras de datos como entradas. La primera es la imagen que ser dilatada. La segunda es un conjunto de puntos coordenados conocidos como un elemento estructurado (tambin conocido como kernel o ncleo). Este elemento determina el efecto preciso de la dilatacin en la imagen de entrada.

La definicin matemtica de la dilatacin para imgenes binarias es la siguiente:

Suponer que X es un conjunto de coordenadas Euclidianas correspondientes a la imagen binaria de entrada, y que K es el conjunto de coordenadas para el elemento estructurante.

Sea Kx la traslacin de K de manera que su origen est en x.

Entonces la dilatacin de X por K es simplemente el conjunto de todos los puntos x tal que la interseccin de Kx en X no es vaca.

Como un ejemplo de la dilatacin, suponemos que el elemento estructurante es una matriz de 3x3, con el origen en el centro, como se muestra en la Figura 3-13. En ste y los

35

siguientes diagramas los pxeles de primer plano son representados por 1 y los pxeles de fondo por 0.

Figura 3-13 Elemento estructurante

Para calcular la dilatacin de una imagen binaria por este elemento estructurante, consideraremos cada pxel del fondo en la imagen de entrada a su vez. Para cada pxel de fondo (al que llamaremos el pxel de entrada) sobrepondremos el elemento estructurante en lo alto de la imagen de entrada de tal forma que el origen del elemento estructurante coincida con la posicin del pxel de entrada. Si al menos un pxel en el elemento estructurante coincide con un pxel de primer plano en la imagen, entonces el pxel de entrada es situado en primer plano. Si todos los pxeles correspondientes en la imagen son de fondo, el pxel de entrada es dejado en el fondo.

Para este ejemplo, el efecto de esta operacin es situar al color del primer plano cualquier pxel de fondo que tenga un pxel del primer plano vecino (asumiendo una conectividad-8). Tales pxeles deberan situarse en los bordes de regiones blancas, y as la conclusin es que las regiones de primer plano crecen y los huecos dentro de una regin disminuyen. En la Figura 3-14 podemos apreciar este efecto.

36

Figura 3-14 Efecto de dilatacin usando un elemento estructurante de 3x3

3.5.2 Adelgazamiento

El adelgazamiento es una operacin morfolgica que es usada para remover pxeles del primer plano seleccionados de imgenes binarias. La salida es una imagen binaria que muestra las figuras formadas por pxeles del primer plano adelgazadas, es decir, de un pxel de ancho sin perder la forma bsica de la figura. Como los otros operadores morfolgicos, el comportamiento de la operacin de adelgazamiento es determinado por un elemento estructurante. Los elementos estructurantes utilizados para el adelgazamiento son del tipo ampliado o extendido. La operacin de adelgazamiento es calculada trasladando el origen del elemento estructurante a cada posible posicin en la imagen, y en cada posicin comparndolo con los pxeles de la imagen. Si los pxeles de primer plano y de fondo en el elemento estructurante coinciden exactamente con los pxeles del primer plano y del fondo en la imagen, entonces el pxel de la imagen bajo el origen del elemento estructurante es puesto a cero (fondo). De otra manera no se modifica. El elemento estructurante deber tener siempre un uno en su origen.

37

La eleccin del elemento estructurante determina bajo que situaciones un pxel del primer plano ser puesto a cero (fondo), y por lo tanto determina la aplicacin para la operacin de adelgazamiento.

Figura 3-15 Ejemplo de adelgazamiento

La figura 3-15 muestra un ejemplo de esqueletizacin por adelgazamiento morfolgico de una forma simple, usando los elementos estructurales de la figura 3-16.

Figura 3-16 Elementos estructurales

38

Captulo IV
Arquitecturas de control reactivo

4.1 Introduccin

Mucho se ha escrito sobre el control de robots mviles, y los distintos enfoques que se han planteado, algunos de estos enfoques tratan el control robtico a partir de un modelo conceptual del mundo y una planeacin en base a este modelo, para llevar a cabo las acciones pertinentes. Para finales de los aos 80 la falta de flexibilidad del enfoque deliberativo, motiv a varios investigadores a replantearse la forma de generar comportamiento.

Fruto de este replanteamiento nace el enfoque reactivo. Esta revolucin reactiva, quiz liderada por los trabajos de Rodney Brooks [Brooks, 1986], provoc un giro drstico en cuanto al modo de generar comportamiento. El nuevo paradigma define un modo de generar comportamiento basado en un acoplamiento directo entre situaciones y acciones. Esta situacin se almacena de algn modo dentro del sistema. El funcionamiento principal es un rpido bucle que verifica los valores sensoriales, busca en la situacin que le corresponde y ejecuta la accin recomendada por la asociacin. No hay que tener el entorno completamente modelado para emitir una actuacin.

Las asociaciones situacin-accin permiten reflejar conocimiento temporal con independencia de cmo estas se hayan obtenido. Existen diferentes representaciones de cmo se almacenan y construyen las asociaciones situacin-accin, algunas de las cuales se describen ms adelante. Sin embargo todas repiten el mismo esquema de funcionamiento: peridicamente leen los sensores y consultan la asociacin para generar la accin oportuna. Este modo de operar confiere gran agilidad al comportamiento ante cambios en el entorno. Si la situacin cambia, el sistema reacciona de inmediato, simplemente encuentra otra entrada en la asociacin. 39

4.2 Caractersticas

Los sistemas de control reactivo tiene las siguientes caractersticas: 1. Los comportamiento sirven como la base de construccin para acciones de un
robot. Un comportamiento en estos sistemas consiste tpicamente de una simple

dualidad sensor-motor, con la actividad sensorial alimentando la informacin necesaria para satisfacer la aplicacin de una respuesta particular de los actuadores.

2. El uso de una representacin de conocimiento abstracto expicito es evitada en la


generacin de respuestas. Los sistemas puramente reactivos reaccionan

directamente al mundo como lo han sensado, evitando la necesidad de la intervencin de una representacin del mundo. Esto es de particular valor en entornos dinmicos, donde la incertidumbre y hostilidad son inherentes. La construccin de modelos abstractos del mundo es un proceso consumidor de tiempo y propenso a errores y esto reduce la potencial exactitud de las acciones del robot.

3. Modelos de comportamiento animal sirven como base de estos sistemas. La

biologa ha proporcionado una prueba que muchas de las tareas que deseamos que realicen los robots son ciertamente factibles. Adicionalmente las ciencias biolgicas, tales como la neurociencia, la etologa y la psicologa han ilustrado varios mecanismos y modelos que podran ser tiles en la operacin de robots.

4. Estos sistemas son inherentemente modulares desde la perspectiva del diseo de


software. Esto permite que el diseo del sistema de control reactivo pueda expandir

las capacidades del robot aadiendo nuevos comportamientos sin redisear o descartar los anteriores. Este incremento de capacidades es til para la construccin de sistemas cada vez mas complejos.

40

4.3 Representacin Situacin-Accin

Un modo eficiente de representar asociaciones de este tipo es una sencilla tabla. Para generar comportamiento con esta representacin, una tabla determina la salida adecuada correspondiente a cada una de las situaciones posibles. Cada situacin aparece como una entrada en la tabla y se caracteriza por las entradas sensoriales en ese momento junto con el valor de ciertas variables internas. Para cada una de ellas la tabla tiene como salida tanto las actuaciones adecuadas como el cambio en esas variables internas si procede. Esta idea sugiere un funcionamiento en bucle infinito: peridicamente se chequean los sensores y las variables internas, se empareja la situacin actual con la mas parecida en la tabla y se ejecutan las acciones correspondientes que dicta la tabla, incluyendo tanto actuaciones como modificacin correspondiente del estado interno. La ejecucin se centra en leer todas las variables de entrada (percepcin) y seguir las indicaciones de la tabla (actuacin).

Figura 4.1 Tabla situacin-accin

Aunque no supone una arquitectura reactiva, si supone una primera aproximacin a la creacin de comportamiento. Debido a que las entradas de los sensores estn relacionadas a una situacin en la tabla y sta a su vez con una actuacin, no es necesario calcular nada en tiempo de ejecucin, basta con leer la recomendacin de la tabla. Esto le da mucha

41

velocidad al comportamiento del sistema que puede responder rpidamente a cambios en el entorno.

Existen otras formas de representacin y construccin del comportamiento situacin-accin para los sistemas de control reactivo, sin embargo, como se menciono anteriormente todas ellas siguen el mismo esquema.

4.4 Arquitectura de subsuncin de Brooks

En 1986 Rodney Brooks propuso una descomposicin del comportamiento en niveles de competencia, como ilustra la Figura 4-2. El control no reside en un nico centro de decisin sino que el sistema se compone de varios niveles de competencia ejecutndose en paralelo, y de la interaccin entre todos ellos sale la accin que se ejecuta en cada momento. Los niveles funcionan concurrentemente y el comportamiento global observable emerge de la ejecucin simultnea de todos ellos.

Figura 4-2 Descomposicin por niveles de competencia

Un nivel de competencia es una especificacin informal para una clase de comportamientos de un robot. Cada nivel se implementa como una red de autmatas de estados finitos, que tienen canales de comunicacin de ancho de banda bajo para intercambiar seales y 42

pequeas variables entre ellos. Los niveles inferiores proporcionan comportamientos bsicos como evitar obstculos, la navegacin deambulante, etc. Comportamientos ms sofisticados se generan aadiendo niveles adicionales sobre los ya existentes. Los niveles superiores pueden suprimir las salidas de los inferiores y suplantarles sus entradas. Esto se conoce como subsuncin y da nombre a la arquitectura.

4.5 Limitaciones

Adems de las ventajas argumentadas y el xito del paradigma reactivo consiguiendo comportamientos relativamente complicados sobre robots reales, este enfoque tambin presenta numerosos inconvenientes. Por ejemplo, requiere la anticipacin en tiempo de diseo de todas las situaciones en las que se va a encontrar el robot y el clculo de la respuesta adecuada para todas ellas. La ejecucin en un sistema reactivo es rpida y gil, pero desde el punto de vista de diseo supone la traslacin de todos los problemas de seleccin de accin a la etapa de construccin del sistema. Una vez calculada la accin oportuna, en tiempo de ejecucin slo hay que consultar la asociada con la situacin actual.

Una limitacin de los sistemas reactivos puros es que no saben abordar situaciones nuevas. Si aparece una situacin no contemplada en tiempo de diseo el sistema no sabe qu hacer. El aprendizaje conlleva un nuevo clculo de la tabla de asociaciones. Esto contrasta con los sistemas deliberativos que enfrentados a una situacin novedosa, son capaces de utilizar su deliberacin para abordarla con xito.

Los sistemas reactivos no tienen objetivos explcitos, se mantienen implcitos en las asociaciones, y en este sentido no aceptan nuevos objetivos, salvo que se redefinan las asociaciones.

43

Captulo V Diseo del sistema

5.1 Introduccin

La arquitectura del sistema se ha diseado en base al objetivo de crear un sistema modular, flexible y escalable, con la finalidad de poder integrar ms mdulos de comportamiento que aumenten la autonoma del robot, obteniendo as un sistema ms robusto.

5.2 Arquitectura

El objetivo principal del sistema, es el reconocimiento del objeto gua a travs de visin proporcionada por una cmara, para conseguir ste objetivo podemos identificar las siguientes tareas a realizar en el sistema:

Adquirir imgenes. Identificar el objeto gua. Localizar el objeto gua. Dirigir al robot hacia el gua.

Otra tarea que debe realizar el robot es la deteccin de obstculos por lo que en base a estas tareas definimos la arquitectura del sistema creando mdulos encargados para la realizacin de cada una de ellas.

44

Control Snares

DETECTAR OBSTACULOS

Adquisicin de imgenes

Identificar objeto

Localizar objeto

Controlador del Robot

SEGUIR OBJETO SENSORES


Figura 5-1 Arquitectura del sistema

ACTUADORES

La figura 5-1 muestra la relacin y el flujo de control entre los diferentes mdulos en cada capa, esta arquitectura del sistema se acopla al diseo de una arquitectura reactiva como la de Brooks descrita en el captulo anterior. En la capa inferior (nivel de competencia 0
seguir objeto) el inicio del proceso comienza por el mdulo de Adquisicin de imgenes,

quien pasa el control a los mdulos de la derecha que realizan la identificacin y localizacin del objeto en la imagen respectivamente, hasta el mdulo encargado del movimiento del robot en la direccin determinada por el bloque de localizacin. La capa superior en la arquitectura (nivel de competencia 1 detectar obstculos) se encarga de la deteccin de obstculos, para evitar la colisin del robot con algn objeto o persona. El mdulo funcional realiza el control de los snares del robot.

45

5.3 Mdulos funcionales

5.3.1 Capa Seguir Objeto

Cada bloque del sistema desempea funciones especficas para cumplir con su objetivo. El mdulo de Adquisicin de imgenes realiza las siguientes funciones:

Reconocimiento y manejo del hardware Extraccin de cuadros de video Visualizacin del video en la interfaz grafica

El mdulo de identificar objeto aplica a la imagen filtros y tcnicas del procesamiento digital de imgenes para discriminar objetos en la escena y aislar al objeto gua. Las funciones realizadas por este mdulo son las siguientes:

Segmentacin de la imagen Mejora de la imagen para su interpretacin Deteccin del gua

La siguiente imagen muestra los bloques internos

DILATACION

DETECCIN SEGMENTACION
ADELGAZAMIENTO

Figura 5-2 Bloques internos del mdulo de identificar objeto

46

El mdulo de localizar objeto es encargado de determinar la posicin del objeto gua en la imagen y enviar la orden precisa al controlador del robot para seguir al objeto

mantenindolo en el campo de visin . Las funciones que realiza son:

Clculo del rea del objeto Clculo del desplazamiento Envo de comandos al controlador del robot

Por ltimo tenemos el mdulo Controlador del robot que realiza el movimiento del robot directamente. Las funciones que este realiza son:

Conectar / Desconectar Avanzar / Retroceder Girar

5.3.2 Capa Detectar Obstculos

En esta capa se realiza la comprobacin de los snares del robot con el finalidad de detectar objetos cercanos e impedir el movimiento del mismo. La salida de datos de est capa puede suprimir los datos de la capa superior, pues pondra en riesgo la integridad del robot si al seguir el objeto gua se encuentra un obstculo.

5.4 Seleccin de Algoritmos

Una de las partes crticas del proyecto fue la eleccin de los algoritmos que seran implementados para el mdulo de Identificacin. La eleccin de stos estuvo ligada por el objeto gua que se debera identificar. El objeto gua fue elegido para que fuese fcilmente discriminable de otras figuras que pudieran encontrarse en cualquier escenario, ya que se pretende que el robot pueda realizar el procedimiento de forma adecuada en un ambiente no

47

estructurado. Por esta razn la figura geomtrica elegida que proporciona estas dos

caractersticas es un crculo.

De forma ms concreta, el gua es un crculo de color blanco sobre un fondo negro que proporciona un mayor contraste con el escenario.

La solucin propuesta para la identificacin del crculo es su reconocimiento a partir de su forma, los siguientes pasos muestran las tareas necesarias para ste proceso:

1. Se aplica un proceso de segmentacin de la imagen basada en la deteccin de bordes. 2. Se aplica un filtro que enlace segmentos de lneas abiertos en un espacio considerable (2 3 pxeles). 3. Se realiza el seguimiento de los bordes en la imagen verificando si se trata de una figura cerrada, es decir, buscamos saber si el punto inicial del recorrido coincide con el punto final. 4. Si se trata de una figura cerrada, se aplica un algoritmo que determine si se trata de un crculo. 5. Si el proceso anterior determin que la figura es un crculo, ste debe ser aislado en una imagen y enviado al bloque de localizacin.

Podemos entonces determinar los algoritmos necesarios para la implementacin del proceso de identificacin, como son:

Implementacin de un detector de bordes: Detector de bordes de Canny Implementacin de un filtro dilatador Algoritmo de seguimiento de bordes Algoritmo de identificacin: Signatura

48

La eleccin de los algoritmos implementados para la identificacin del crculo son una aportacin a este proceso con la finalidad de poder evaluar la eficacia del reconocimiento.

Con la finalidad de crear un sistema fcilmente estructurado se realiz un diseo del software empleando el Lenguaje de Modelado Unificado-UML. A continuacin se muestran y describen los diagramas del UML empleados para el diseo del sistema.

5.5 Diagrama de Clases

El siguiente diagrama (Figura 5-3) muestra las clases que conforman el sistema, as como las relaciones entre ellas y sus principales mtodos.

IGU + conectar() + com enz ar() + detener()


ca m a ra

~ captura()

ca nny

Loca liza

controlCe ntra l

Ide ntifica

+ aplica()

+ aplica()

robot

+ estado

+ + + + + +

c onec taRobot() c onec taS im ulador() adelante() atras () izquierda() derecha()

Figura 5-3 Diagrama de clases

49

5.6 Diagrama de Secuencias

El siguiente diagrama (Figura 5-4) muestra la interaccin entre los objetos software involucrados y los mensajes enviados a travs del tiempo.

Figura 5.4 Diagrama de secuencia

El usuario interacciona con el sistema a travs de la Interfaz Grafica de Usuario (IGU), primeramente indicando que se desea realizar una conexin con el robot, as la IGU enva la peticin al sistema de control central y ste llama al mtodo conectar() de la clase robot.

50

Posteriormente el usuario inicia el proceso de seguimiento nuevamente a travs de la IGU, la peticin es recibida por control central, ste es encargado de llamar a cada uno de los objetos que realizarn los procesos de deteccin, localizacin y movimientos del robot.

El diagrama muestra el inicio del proceso de seguimiento, comenzando por la captura de una imagen, la cual es un parmetro para el objeto identifica. La clase identifica devuelve una imagen con el objeto gua aislado, y sta es pasada como parmetro a la clase localiza para determinar la posicin del gua y enviar el comando adecuado a la clase robot que ejecuta el movimiento.

51

Captulo VI
Implementacin del sistema

6.1 Introduccin

La implementacin del sistema se realiz en el lenguaje de programacin Java para el procesamiento de imgenes y Visual C++ para el bloque de control directo con el robot utilizando la librera PAI mencionada en el captulo 2 y el uso de la API Java Media Framework para el manejo del dispositivo de video instalado (cmara). En seguida se describe la implementacin de cada uno de los bloques del sistema de control comenzando con la capa inferior mostrada en la arquitectura del sistema del captulo anterior.

6.2 Adquisicin de imgenes

Para este bloque se hace us de la API Java Media Framework con la que se realizan las funciones descritas en el captulo anterior que son: el manejo del hardware, la visualizacin del video y la extraccin de cuadros del video para el procesamiento.

El siguiente cdigo muestra el procedimiento de deteccin de la cmara, la configuracin del formato de la imagen y de la resolucin de 160x120.

//Obtiene una lista de los dispositivos multimedia conectados a la PC Vector dispositivos = CaptureDeviceManager.getDeviceList(new VideoFormat(VideoFormat.YUV)); //Verifica si se encontr algn dispositivo if (!dispositivos.isEmpty())

52

{ } else { frame.jTextArea1.append("No hay ningun dospisitivo conectado\n"); player.close(); System.exit(0); } //crea un DataSource di = (CaptureDeviceInfo)dispositivos.firstElement(); try { ds = Manager.createDataSource(di.getLocator()); } catch (NoDataSourceException e) {} catch (IOException e) {} //Configura el formato de video, dimensin de la imagen, cuadros por segundo (para la //reproduccin) y el tipo datos del buffer. format = new VideoFormat("RGB", new Dimension(160,120), 57500, byte[].class, 30.0f); //crea un objeto Player utilizado para visualizar el video en la interfaz de usuario try { player = Manager.createRealizedPlayer(ds); } catch (IOException e) {} catch (NoPlayerException e) {} catch (CannotRealizeException e) {} if (player!=null) { //aade a la interfaz de usuario el video frame.jPanel1.add(player.getVisualComponent()); } //configura un objeto fgc para extraer frames del video a travs del player fgc = (FrameGrabbingControl)player.getControl("javax.media.control. FrameGrabbingControl"); // Inicia la reproduccin

53

player.start();

La extraccin de los cuadros de video y el procesamiento se realiza independientemente del proceso de visualizacin en la interfaz, por lo que es necesaria la creacin de un hilo que atienda la extraccin de los cuadros en un intervalo de tiempo.

La extraccin se lleva a cabo haciendo uso del mtodo grabFrame del objeto fgc que regresa un buffer con informacin del cuadro capturado, como son las dimensiones, la longitud del buffer, el tipo de datos en el que esta almacenada la informacin de la imagen, entre otros. Estos datos de la imagen deben ser almacenados en un arreglo para su manipulacin y son enviados al mdulo de identificacin.

//Extraccin de cuadros de video y conversin a escala de grises buf = fgc.grabFrame(); Imdata=new byte[buf.getLength()]; data=new int[buf.getLength()/3]; Imdata=(byte[])buf.getData(); for(int k=0;k<(buf.getLength()/3)-1;k++) { r=(int)(Imdata[(k*3)+2])&0xff; g=(int)(Imdata[(k*3)+1])&0xff; b=(int)(Imdata[(k*3)])&0xff; prom = (int) ((r + g + b)/3); data[(buf.getLength()/3)-1-k]=prom<<16|prom<<8 |prom|(0xff<<24); } procesa.ejecuta(data,n++);

El buffer almacena un arreglo de tipo byte, de longitud buf.getLength(). En el arreglo estn almacenados los valores para cada punto de la imagen en cada canal, es decir, para cada pxel de la imagen se tienen tres bytes, uno para cada valor de la intensidad del rojo, el verde y el azul. Por simplicidad, para el manejo de los datos, son guardados en un arreglo de enteros. El ciclo, en el fragmento de cdigo anterior, realiza esta conversin adems de 54

realizar la conversin de la imagen en color a escala de grises, asignando las intensidades de los canales RGB a variables del mismo nombre, calculando el promedio y asignando el valor al arreglo de enteros realizando los corrimientos necesarios.

Al terminar la conversin, se llama al mtodo ejecuta del objeto procesa que est encargada de aplicar los filtros necesarios a la matriz para extraer al objeto gua (crculo) de la imagen.

6.3 Deteccin de bordes

Como se mencion en el captulo anterior, el reconocimiento se inicia a partir de la extraccin de bordes de la imagen capturada aplicando el algoritmo de Canny descrito en el captulo 3. Como se observa en el diagrama de clases (Figura 5-3) se cre una clase para este proceso, las lneas de cdigo muestran el constructor de la clase que llama a los mtodos necesarios que integran el algoritmo.

canny(int[] pix,int lenArr, int ancho,int alto,float sigma) { this.pix=new int[lenArr]; this.pix=pix; this.sigma=sigma; this.ImAncho=ancho; this.ImAlto=alto; smx=new float[ancho * alto]; smy=new float[ancho * alto]; dsmx=new float[ancho * alto]; dsmy=new float[ancho * alto]; mag=new int[ancho * alto]; ori=new int[ancho * alto]; gauMasks(); convolucion_separable(); dxy_separable_convolucion(dsmy,0,smy); dxy_separable_convolucion(dsmx,1,smx);

55

smx=null; smy=null; ImMag(); sup_nomax(dsmx,dsmy); dsmx=null; dsmy=null; hysteresis(high,low,pix,mag); mag=null;ori=null; }

El constructor recibe como parmetros la imagen a procesar (pix), la longitud del arreglo, las dimensiones de la imagen y el parmetro sigma que determina el nivel del suavizado Gaussiano implcito en el algoritmo. La primera llamada en el constructor es a un mtodo que crea la mscara de convolucin Gaussiana. La llamada al mtodo

convolucin_separable() aplica el suavizado Gaussiano a la imagen, la figura 6-1 muestra

las imgenes despus de este paso con sigma=1.0.

a)

b)

Figura 6-1 a) Suavizado Gaussiano en X b) Suavizado Gaussiano en Y

El siguiente paso es aplicar la operacin de convolucin dichas imgenes con la derivada de la funcin Gaussiana (). Al igual que en el paso anterior se realiza para ambas direcciones, haciendo un llamado al mtodo dxy_separable_convolucion(), que recibe los parmetros:

Matriz, donde depositar los resultados

56

Valor entero, que determina la direccin en que se aplicar la derivada 0 para Y y 1 para X Imagen, suavizada en el proceso anterior

La figura 6-2 muestra las imgenes resultantes

Figura 6-2 Convolucin con la derivada de la funcin Gaussiana en X y Y respectivamente

En este punto ambas imgenes son combinadas con el mtodo ImMag() que calcula la magnitud obteniendo el resultado de la Figura 6-3.

Figura 6-3 Magnitud de las imgenes

La Figura 6-4 muestra el resultado de los dos ltimos pasos del algoritmo de Canny que son: la supresin de no-mximos y el proceso de histresis.

57

a)

b)

Figura 6-4 a)supresin de no-mximos b)Histresis

Posterior a la extraccin de bordes, es posible que existan huecos entre lneas, y debido a que el crculo a reconocer es una figura cerrada se aplica una dilatacin que cierre huecos de entre 2 y 3 pxeles con la finalidad de que en el siguiente paso se discriminen los objetos que no sean una figura cerrada.

6.4 Dilatacin

El algoritmo de dilatacin est implementado en la clase identifica

y es llamado

inmediatamente despus de la deteccin de bordes en la clase controlCentral, las lneas de cdigo mostradas a continuacin realizan la dilatacin de la imagen.

public void dilata() { for(int i=1;i<iniAncho-1;i++) for(int j=1;j<iniAlto-1;j++) { if (conectados(i,j)>=1) setValue(pix1,i,j,255); else setValue(pix1,i,j,pixel(pix,i,j)); } copia(pix,pix1); } public int conectados(int X,int Y)

58

{ int conec; conec=0; if (pixel(pix,X-1,Y-1)==255) conec=conec+1; if (pixel(pix,X,Y-1)==255 ) conec=conec+1; if (pixel(pix,X+1,Y-1)==255) conec=conec+1; if (pixel(pix,X-1,Y)==255) conec=conec+1; if (pixel(pix,X+1,Y)==255) conec=conec+1; if (pixel(pix,X-1,Y+1)==255) conec=conec+1; if (pixel(pix,X,Y+1)==255) conec=conec+1; if (pixel(pix,X+1,Y+1)==255) conec=conec+1; return conec; }

La dilatacin logra unir huecos existentes entre lneas. En la figura 6-5 se observa una imagen que contiene huecos en algunas lneas y la imagen dilatada que ha cerrado estos huecos.

a)

b)

Figura 6-5 a)Imagen con aberturas entre lneas b) Imagen dilatada

Podemos observar en la imagen a) los huecos enmarcados por crculos rojos y en la imagen b) el proceso de dilatacin ha cerrado estos huecos, a excepcin del punto marcado en la parte inferior izquierda, ste no ha sido cerrado debido a que la longitud de la grieta entre las 2 lneas ms cercanas es mayor a 3 pxeles. Esta situacin podra resolverse aplicando la

59

dilatacin nuevamente, pero para las pruebas realizadas, el circulo presenta huecos de a lo mas 3 pxeles por lo que no es necesario cerrar huecos ms grandes.

6.5 Adelgazamiento

Para poder realizar el seguimiento de los bordes de las figuras y determinar si es una figura con un permetro cerrado es necesario que los bordes mantengan un grosor de un pxel, por consiguiente despus de la dilatacin es necesario realizar un adelgazamiento. El resultado es una imagen como la que se observa a continuacin (Figura 6-6).

Figura 6-6 Imagen adelgazada despus de la dilatacin

6.6 Algoritmo de seguimiento de bordes

El siguiente algoritmo se implement para el seguimiento de los bordes en la imagen. La secuencia de pasos es la siguiente:

1. Encontrar el pxel de comienzo s que es un elemento de S en la figura usando un barrido sistemtico, es decir, de izquierda a derecha y de arriba abajo. Donde S es el conjunto de puntos del borde.

60

2. Sea el pxel actual en el recorrido denotado por c. Hacer c=s y sea b el pxel vecino de conectividad 4 a la izquierda que no pertenece a un pxel del borde. 3. Sean los 8 vecinos de c comenzado con b en sentido de las manecillas del reloj
n1,n2,..,b8, encontrar ni para el primer i que esta en S

n1 b n7

n2 c n6

n3 n4 n5

4. Hacer c= ni y b= ni-1 5. Repetir los pasos 3 y 4 hasta que c=s

La imagen comienza a recorrerse a partir de la esquina superior izquierda y se encuentra el primer punto de borde que pertenece alguna figura, el seguimiento del borde se realiza como se describi en el algoritmo anterior. En el caso en que en el recorrido del borde c sea igual a c-1, es decir, se ha detectado que el nuevo punto ya ha sido recorrido en un paso anterior, nos indica que es el fin de la figura y se trata de una figura abierta, por lo que es eliminada de la imagen y se inicia el proceso con el siguiente punto de borde encontrado. As solo aquellas figuras que cumplan con la condicin c=s pasaran a la fase de reconocimiento del crculo.

void sigueBorde(int[] p1,int[] p2) { for(int i = 1; i < iniAncho; i++) for(int j = 1; j < iniAlto; j++) { if((pixel(p1,i, j) == 255)){ //aplica el algoritmo de seguimiento del borde getBound(i, j,p1); if (puntos.size()<30)//si la figura tiene una longitud menor a 30 pixeles es eliminada de la imagen { for (int x=0;x<puntos.size();x++) {

61

p=(point)puntos.elementAt(x); setValue(p1,p.x,p.y,0); } puntos.removeAllElements(); i=1;j=1; cerrado=false; abierto=false; } if (abierto)//si la figura es abierta se elimina de la imagen { for (int x=0;x<puntos.size();x++) { p=(point)puntos.elementAt(x); setValue(p1,p.x,p.y,0); } puntos.removeAllElements(); i=1;j=1; cerrado=false; abierto=false; } if (cerrado) //si la figura es cerrada { identifica();//Determina si la figura encontrada es un circulo for (int x=0;x<puntos.size();x++) { p=(point)puntos.elementAt(x); if (circulo) setValue(p2,p.x,p.y,255); else setValue(p2,p.x,p.y,0); setValue(p1,p.x,p.y,0); } circulo=false; puntos.removeAllElements(); i=1;j=1; cerrado=false; abierto=false; } cerrado=false; abierto=false; }

62

6.7 Algoritmo de identificacin del crculo

Una vez que se ha encontrado una figura cerrada, sta es analizada para determinar si se trata del crculo gua. El algoritmo utilizado se basa en la idea de la signatura explicada en el captulo 3.

El procedimiento consiste en hallar el centro relativo del objeto. Para determinar esto se encuentra primeramente un punto del borde y se calcula la distancia hacia todos los otros puntos de la figura. sta distancia se calcula de la siguiente forma

dis = (h x) 2 + (k y ) 2

Se encuentra el punto ms lejano, as el punto medio de la recta que uno a los dos puntos ms lejanos del borde ser el centro de la figura (al menos cuando se trata de un crculo).

Figura 6-7 Centro del objeto

Ya que hemos localizado el centro de la figura, debemos ahora comprobar que se trata de un crculo. Tomado en cuenta que en un crculo la distancia del centro a cualquier punto de la circunferencia es la misma para todos los puntos, calculamos esas distancias.

63

Debido a que una imagen representa una funcin con valores discretos la distancia hacia todos los puntos no es exactamente la misma, as que podemos establecer un intervalo en el que debern estar estos valores. La figura 6-8 muestra una grafica de la distancia del centro hacia cada punto del borde.

Figura6-8 Grfica de la distancia del centro a los puntos del borde

La lnea roja muestra el valor promedio de la distancia del centro al borde, la lnea en negro muestra las distancias del centro hacia todos los puntos. Observamos que hay puntos mayores y menores a la lnea promedio, pero hasta cierto punto se mantienen constantes, muy aproximados al valor promedio. Por lo tanto, cualquier figura que exprese una grafica parecida a la anterior en la que sus valores oscilen entre ms tres y menos tres puntos corresponder a un crculo.

Considerando que la figura detectada no define exactamente un crculo, es decir, debido a la orientacin del gua, ste puede aparecer en la imagen ligeramente deformado. Podemos estipular un criterio de aproximacin a un crculo en base al porcentaje de puntos que cumplen la condicin del prrafo anterior. El valor establecido ha sido del 97 por ciento, con lo que se logra una deteccin bastante precisa.

6.8 Localizacin del objeto

En la etapa anterior hemos obtenido una imagen que contiene nicamente un crculo, en esta fase se determina la posicin del crculo en la imagen para poder dirigir el robot hacia el gua, es decir, se decidir si el robot debe acercarse, alejarse, girar a la izquierda o a la 64

derecha. Esta decisin se toma nicamente en base a la imagen actual, puesto que se pretende un comportamiento reactivo, no se toma en cuenta los estados anteriores del robot o del gua.

Primeramente consideramos los casos en los que el objeto se encuentra alejado o demasiado cerca del robot, se pretende situar al robot a una distancia considerable en la que se mantenga al objeto cercano al robot. Para determinar esto, calculamos el rea del crculo en la imagen resultante del proceso anterior. El rea del crculo se determina en base al nmero de pxeles contenidos dentro del crculo. Se implement un algoritmo recursivo que calcula este valor.

El siguiente fragmento de cdigo muestra la funcin implementada

public void calculaArea(int i,int j) { if(pixel(pix1,i,j) == 0) { area++; boundaryFill(i+1,j); boundaryFill(i-1,j); boundaryFill(i,j+1); boundaryFill(i,j-1); } }

Los parmetros con los que es llamada la funcin son el centro del crculo que a partir de ese punto se lleva a cabo el conteo de los pxeles interiores.

El valor mximo del rea que puede tomar el crculo es del 40% del total de pxeles en la imagen y el valor mnimo es del 0.5%. El robot se mantendr esttico frente al gua cuando el rea del crculo se encuentre en un intervalo definido por el valor medio del rea mxima y el valor medio del rea ms una constante.

65

Para determinar la direccin de rotacin del robot hacia el gua, se dividi el rea de la imagen en tres secciones verticales, en base a estas secciones se determina en cual de estas se encuentra el centro del circulo, es decir, en la parte izquierda, derecha o en la seccin central y con esta informacin se enva la orden de rotacin en 2 grados al robot hacia la direccin adecuada. En caso de que el objeto se encuentre en el seccin central el robot permanecer esttico.

6.9 Controlador del robot

La implementacin del mdulo de control se realiz en el lenguaje de programacin visual C++, con la ayuda de la librera PAI mencionada en el captulo 2 haciendo uso de las funciones de conexin (con el robot o el simulador Pioneer), desplazamiento y rotacin del robot as como la manipulacin de los snares para la deteccin de obstculos.

Los procedimientos de conexin son llevados a cabo mediante el llamado a la funcin

paiRobotStartup(param1, param2,1,1)

donde los parmetros param1 y param2 definen si la conexin se realizar con el robot o con el simulador.

Para realizar el desplazamiento y con la finalidad de obtener un movimiento suave al momento de desplazar al robot el movimiento se realiza por velocidad, es decir, al detectar al objeto gua no se determina una posicin absoluta a alcanzar sino que el robot se mover a una velocidad constante hacia el gua mientras el sistema detecte el crculo, en caso contrario el robot se detendr.

Los grados de rotacin son un valor fijo hacia la direccin determinada por el mdulo de localizacin. El robot rota sobre su eje, es decir rotar en el mismo lugar en que se encuentra moviendo ambas ruedas. 66

Este mdulo de control esta compilado como una librera DLL y es manipulada desde Java mediante el uso de los mtodos nativos de Java (JNI-Java Native Interface), que permiten la inclusin de libreras escritas en un lenguaje distinto a travs de llamadas a mtodos en el lenguaje Java.

Las siguientes lneas de cdigo muestran la clase que implementa el llamado a las rutinas para el controlador del robot

class controlador static public static public static public static public static public static public static public static public static public static public

{ native native native native native native native native native native

void conectaSim(); void conectaRob(); void desconecta(); void moverDistancia(int dist); void girar(float ang); void setVelocidad(float ang); void moverVelocidad(int vel); void setRotVelocidad(int vel); int Obstaculo(int a,int b,int dist); void rotarHeading(float ang);

static { System.loadLibrary("controlador"); } }

Como se mencion en el capitulo anterior el sistema tiene dos metas a alcanzar que son el seguimiento del objeto gua y la deteccin de obstculos para evitar situaciones de riesgo, por lo que en este mdulo se realiza la verificacin de los snares para detectar obstculos en el entorno del robot, dado que se deben evitar las situaciones de riesgo, las salidas de la tarea de deteccin de obstculos (mostrada en la arquitectura) suprimir la salida de la tarea seguir objeto en caso de que se haya detectado un obstculo a una cierta distancia, en consecuencia el robot recibir la orden de paro.

67

Dada la distribucin de los snares se valida la deteccin de obstculos en un rango de 0 a 180 de la zona frontal del robot.

6.10 Interfaz de Usuario

La interfaz de usuario proporciona cuatro botones de control que permiten la conexin con el simulador o el robot, el inicio del sistema de control y la posibilidad de extraer cuadros de la imagen de forma manual por el usuario. Tambin se muestra el video activo capturado por la cmara, este se encuentra ejecutndose en un hilo de control independiente al procesamiento de deteccin.

Existe un rea de informacin en la que se despliega en todo momento las acciones que se llevan a cabo por el usuario y/o por el sistema cuando este se encuentra en el proceso de control autnomo. Entre estos mensajes se encuentran la accin que realiza el robot en consecuencia al proceso de deteccin del objeto gua o de la presencia de algn obstculo, as como mensajes sobre la conexin con el robot o el simulador.

La imagen siguiente muestra la interfaz grafica de usuario y seala cada una de sus partes

68

Figura 6-9 Interfaz Grfica de Usuario

Alternativamente se pueden observar las imgenes procesadas en una ventana independiente donde se muestra informacin grafica de la deteccin del crculo, es decir, en esta ventana el usuario puede observar que el sistema ha detectado el gua cuando se muestren lneas que parten del objeto detectado hacia los extremos izquierdo, derecho e inferior de la imagen. Tambin se proporciona de esta manera informacin cuando el objeto se encuentra centrado, en este caso una retcula de color rojo encerrar al objeto. Se observa esta ventana en la Figura 6-10.

69

Figura 6-10 Interfaz Grfica de Usuario

Con la ayuda del simulador Pioneer, se observa el comportamiento del robot en un ambiente virtual dirigiendo al robot entre pasillos y puertas guiado por el crculo. Se muestra un ejemplo en la Figura 6-11.

Figura 6-11 Ejemplo con el simulador de navegacin guiada por el crculo

70

Resultados y Conclusiones

Despus de llevar a cabo la implementacin completa del sistema, se llev a acabo la etapa de pruebas con la finalidad de evaluar el desempeo del sistema en diferentes condiciones y configuraciones del sistema.

Primeramente

podemos mencionar la eficacia del procesamiento de imgenes, cuyo

desempeo influye directamente en todo el sistema, ya que el procesamiento digital de imgenes es una tarea que consume gran tiempo de ejecucin debido al nmero de datos que deben ser procesados, y para cumplir con el enfoque reactivo de la arquitectura el tiempo de procesamiento deba ser optimizado.

A pesar de las limitaciones de la cmara utilizada, se alcanz un nmero aceptable de procesamiento de cuadros por segundo (13 fps). Este nmero podra incrementarse con hardware de mayor velocidad, empleando tarjetas de adquisicin de imgenes desde una cmara analgica de mayor velocidad de muestreo.

A diferencia de algoritmos de seguimiento como el de correlacin en el que el procesamiento se lleva a cabo nicamente sobre una regin pequea de la imagen, en este proyecto se aplica el procesamiento sobre toda la imagen debido a la naturaleza del objetivo planteado de identificacin de un objeto caracterstico en toda la imagen. Esto limita a procesar imgenes de 160 x 120 pxeles para poder alcanzar un nmero aceptable para un buen desempeo.

Con las pruebas realizadas se determin, que el sistema es capaz de detectar un objeto gua con un radio de 8 cm a una distancia de hasta 3.5m. Como puede verse, la distancia mxima de deteccin esta en funcin del tamao del objeto, a mayor tamao mayor distancia.

El robot es capaz de manifestar el comportamiento esperado de forma adecuada en un ambiente no estructurado, es decir, realiza la tarea de navegacin de manera autnoma dirigido por el objeto gua en escenarios normales. 71

Trabajos Futuros

En base a la arquitectura desarrollada es posible agregar capas que ejecuten alguna otra tarea ampliando as la autonoma del robot. Algunas de ellas podran ser

La bsqueda autnoma del objeto gua. Es decir, que el robot deambule por su entorno en buscando su objetivo. Reconocimiento de otras formas, incluso la identificacin de personas.

Este tipo de robots puede ser adaptado con una variedad de dispositivos que le permitan mayor funcionalidad como la adaptacin de pinzas para sostener objetos, o la adaptacin de una cmara infrarroja que le permita realizar su tarea en ausencia de luz detectando objetos que emitan calor.

Referente al proceso de deteccin como trabajos futuros se pueden desarrollar algoritmos para el control de la intensidad de luz en las imgenes que afectan la deteccin del objeto gua, ste es un factor importante que afecta a muchos algoritmos de seguimiento como la correlacin.

72

Bibliografa

[ActivMedia, 1998] ActivMedia. PAI Programmers Manual, ActivMedia Robotics, March 1998. [ActivMedia, 1999] ActivMedia. Saphira operations and programming manual. Technical Report version 6.2, ActivMedia Robotics, August 1999. [ActivMedia, 1999] ActivMedia. Pioneer 2 Mobile Robot Operations Manual, v4, ActivMedia Robotics August, 1999. [ActivMedia, 2002] ActivMedia. ARIA reference manual. Technical Report version 1.1.10, ActivMedia Robotics, November 2002. [ActivMedia, 2002] ActivMedia. ActivMedia Robotics Pioneer 2/PeopleBot Operations Manual v11, ActivMedia Robotics, September 2002. [Arkin, 2000] Ronald C. Arkin. Behavior-Based Robotics. The MIT Press, 2000. [Baturone, 2001] Anibal Ollero Baturone. Robtica. Manipuladores y robots mviles. Alfaomega-Marcombo,2001. [Brooks, 1986] Rodney A. Brooks. A robust layered control system for a mobile robot. IEEE Journal of Robotics and Automation, 2(1):1423, March 1986. [Gonzales y Woods, 1992] R.C. Gonzalez, R.E. Woods, Digital Image Processing, Addison-Wesley, 1992. [Pajares, 2002] Gonzalo Pajares. Visin por Computador, Alfaomega,2002. [Parker, 1997] J. R. Parker. Algorithms for Image Processing and Computer Vision, Wiley,1997.

73

You might also like