David Araujo D
David Araujo D
David Araujo D
Resumen
Resumen
La invencin de todo tipo de mquinas ha tenido el propsito de ayudar al hombre a controlar su medio ambiente. La complejidad de su diseo y construccin ha aumentado considerablemente a travs del tiempo debido a los avances tecnolgicos en diferentes reas. Los robots hoy en da pueden realizar tareas que antes solo hacan los humanos, con algunas ventajas, como que no se cansan y por lo tanto cometen menos errores. Una de las maneras de que los robots realicen tareas an ms complejas es dotarlos de sistemas de visin, anlisis automtico de imgenes, que les permita conocer su ambiente de trabajo para poder manipular los objetos que tengan a su alcance. Adems un sistema de visin para robots, junto con la infraestructura adecuada para utilizarlo en forma remota, permitir a los interesados realizar prcticas de manipulacin con un robot. Esto es particularmente benfico dado que un robot y su infraestructura solo se encuentran disponibles en unas pocas instituciones en nuestro pas. Esta tesis presenta el diseo de un sistema de visin capaz de actualizar el espacio de trabajo de un robot industrial, permitiendo al Robot conocer la cantidad de objetos presentes en su mesa de trabajo y otras caractersticas importantes como su identidad, posicin, orientacin y tamao. Los objetos pueden ser mostrados a un usuario (local remoto) mediante el empleo de modelos en tres dimensiones realizados con VRML (Virtual Reality Modeling Language), con el cual se obtuvieron cdigos bastante reducidos que viajan a travs de Internet de forma rpida. El sistema se puede integrar con un robot industrial para manipular los objetos encontrados de forma virtual o real, y de forma local o remota. Se realizaron cuatro aplicaciones para nuestro sistema de visin: el reconocimiento de figuras geomtricas, el reconocimiento de dgitos, el anlisis de movimiento y la estimacin de altura de los objetos presentes en el espacio de trabajo de un robot industrial.
Resumen
A la memoria de mi abuelita Raquel Rodrguez Baos A mis padres Magdalena Josefa y Mario Israel A mis sobrinos Mario Esteban, Erika Jazmn y ngel David A mis hermanas y hermano Norma Edith, Yamily e Israel A mis padrinos Hilda y Eloy A mis cuados Martha Marisela y Mario A todos mis familiares por su apoyo y comprensin
A mi asesor: Dr. Jorge Buenabad Chvez A los profesores de la Seccin de Computacin: Dr. Adriano de Luca Pennacchia Dr. Arturo Daz Prez Dr. Guillermo Benito Morales Luna Dr. Jess Vzquez Gmez Dr. Sergio Vctor Chapa Vergara A mis compaeros de la Seccin de Computacin: Libertad Rivera Larqu Sergina Ascelli Shaya Zamudio Vissuet Armando Flores Ibarra Carlos Galindo Hernndez Gabriel Ruiz Hernndez Giner Alor Hernndez Marcelino Castaeda Snchez Marco Antonio Ortega Garca Mizael Snchez Santiago Ulises Zaldivar Colado
Contenido
Contenido
Pgina Introduccin Resumen 1. Robtica 1.1 Definicin de robot 1.2 Arquitectura de robots 1.2.1 Clasificacin de robots 1.2.2 Tecnologa de funcionamiento 1.2.3 Geometra del espacio de trabajo 1.2.4 Control de movimientos 1.3 Sensores y percepcin 1.4 Programacin, planificacin y aprendizaje 1.5 Integracin de robots 1.6 Teleoperacin de robots y robtica virtual 1.7 Mercado mundial de robots Resumen 2. Ambientes Virtuales y VRML 2.1 Ambientes virtuales 2.2 Construccin de ambientes virtuales con VRML ( Virtual Reality Modeling Language) 2.2.1 Un programa en VRML 2.3 Transformaciones en VRML 2.4 Puntos de vista con VRML 2.5 Objetos, lneas y puntos tridimensionales en VRML 2.6 Texto en VRML 2.7 Integracin VRML y Java Resumen 3. Visin Artificial 3.1 Visin artificial 3.2 Adquisicin de la imagen 3.3 Preprocesamiento de una imagen 3.4 Extraccin de caractersticas para la segmentacin 3.4.1 Identificacin de contornos en una imagen analgica mediante la derivada 3.4.2 Extraccin de contornos de una imagen digital mediante derivada 3.4.3 Aproximacin de Roberts 3.4.4 Aproximacin de Prewitt 3.4.5 Aproximacin de Sobel 3.4.6 Operador Laplaciano 3.4.7 Gradiente estocstico 3.5 Segmentacin de imgenes 3.5.1 Seguimiento de contornos I IV 1 1 2 3 3 4 7 7 8 9 9 10 12 13 13 15 16 18 20 21 24 24 28 29 29 30 35 35 35 36 44 44 44 48 48 49 50
Araujo Daz David
Contenido
Pgina 3.5.2 Unin de bordes por bsqueda heurstica 3.5.3 Transformada de Hough 3.6 Mtodos para reconocimiento de patrones 3.6.1 Reconocimiento por ngulos 3.6.2 Reconocimiento por puntos clave 3.6.3 Reconocimiento por cambios de direccin 3.6.4 Reconocimiento por factor de forma 3.6.5 Reconocimiento por calculo de momentos 3.7 Reconocimiento ptico de Caracteres (OCR) 3.8 Calibracin de cmara 3.9 reas de aplicacin de sistemas de visin en la industria Resumen 4. Laboratorio de Robtica Virtual 4.1 Laboratorio de Robtica Virtual del CINVESTAV 4.1.1 Robot SCARA UNIMATE S-103 4.2 Modelacin para el robot UNIMATE S-103 4.3 Desarrollo del robot virtual 4.4 Visin artificial en robtica Resumen 5. Diseo e Implementacin de un Sistema de Visin 5.1 Motivacin 5.2 Aspectos de diseo 5.3 Diseo del sistema de visin 5.4 Anlisis del sistema de visin 5.5 Alternativas al acceso remoto Resumen 6. Tareas del Sistema de Visin 6.1 Reconocimiento de figuras geomtricas 6.2 Reconocimiento de dgitos 6.3 Anlisis de movimiento 6.4 Estimacin de altura 6.5 Calibracin de cmara 6.6 Reconstruccin tridimensional con VRML Resumen 7. Conclusiones y Perspectivas 7.1 Conclusiones 7.2 Perspectivas Apndice A: Sistemas de Adquisicin de Imgenes a.1 Captores de imagen segn el tipo de transductor fotoelctrico a.1.1 Disco de Nipkow a.1.2 Disertor de imagen o tubo de Fransworth 50 51 52 52 53 53 54 55 58 60 63 64 65 65 66 68 71 74 74 75 75 76 76 85 91 94 95 95 98 104 109 116 117 122 123 123 125 131 131 132 132
Araujo Daz David
ii
Contenido
Pgina a.1.3 Iconoscopio, tubo de condensacin de acumulacin a.1.4 Orticon de imagen a.1.5 Vidicon a.1.6 Plmbicon a.1.7 Arreglos de dispositivos de transferencias de carga a.1.8 Arreglos de dispositivos de inyeccin de cargas a.2 Composicin de las cmaras captadoras de imgenes electrnicas a.2.1 Separador ptico a.3 Lentes Resumen Apndice B: Iluminacin Estructurada b.1 Sistemas de iluminacin estructurada b.2 Triangulacin b.3 Implementacin de un sensor de caractersticas tridimensionales (Hardware) b.4 Anlisis de imgenes (Software) b.5 Resultados Resumen Apndice C: Transformaciones Geomtricas c.1 Transformaciones geomtricas bidimensionales c.1.1 Traslacin c.1.2 Escala c.1.3 Rotacin c.1.4 Sesgo c.1.5 Representacin de objetos bidimensionales c.1.6 Operaciones con transformaciones bidimensionales c.2 Transformaciones geomtricas tridimensionales c.2.1 Traslacin c.2.2 Escala c.2.3 Rotacin c.2.4 Sesgo c.2.5 Proyecciones paralelas c.2.6 Proyecciones ortogrficas c.2.7 Representacin de objetos tridimensionales c.2.8 Operaciones con transformaciones tridimensionales Apndice D: Patrones de Calibracin y Figuras Geomtricas d.1 Patrones de calibracin de cmara d.2 Figuras usadas para pruebas de reconocimiento Apndice E: Contenido del CD-ROM e.1 Archivos del CD-ROM e.2 Directorios del CD-ROM y su contenido Referencias 133 134 134 135 135 137 137 137 138 140 141 141 142 143 145 147 150 151 151 151 151 151 152 152 152 153 153 153 153 154 154 155 155 156 159 159 167 173 173 174 177
Araujo Daz David
iii
Contenido
Lista de Figuras
Pgina 1.1 Robot que utiliza reconocimiento de imgenes 1.2 Tipos de cadenas cinemticas 1.3 Robot rotacional R 1.4 Robot prismtico P 1.5 Robot prismtico prismtico PP 1.6 Robot rotacional prismtico RP 1.7 Robot cartesiano, prismtico prismtico prismtico PPP 1.8 Robot cilndrico, rotacional prismtico prismtico RPP 1.9 Robot esfrico, rotacional rotacional prismtico RRP 1.10 Robot SCARA, rotacional rotacional prismtico RRP 1.11 Robot antropomrfico, rotacional rotacional rotacional RRR 2.1 Caja simple en VRML 2.2 Ejes de coordenadas en VRML 2.3 Nodo translation 2.4 Nodo rotation 2.5 Nodo scale 2.6 Definicin de los vrtices de un tringulo issceles con VRML 2.7 Un tringulo issceles definido como: un slido, con lneas y con puntos 2.8 Texto en el espacio virtual con VRML 2.9 Interaccin de VRML y Java 3.1 Esquema general de procesamiento de imgenes en visin artificial 3.2 Iluminacin direccional 3.3 Iluminacin difusa mediante un anillo de luz 3.4 Iluminacin a contraluz 3.5 Iluminacin estructurada 3.6 Efecto del muestreo espacial en una imagen 3.7 Diferentes niveles de brillo para una imagen 3.8 Conectividad entre pxeles 3.9 Teorema de Jordan 3.10 Paradoja de conectividad 3.11 Proceso de extraccin de contornos mediante derivada. 3.12 Imagen discreta 3.13 Imagen analgica a digital o discreta 3.14 Aplicacin de una mscara en una imagen digital (Parte 1/4). 3.14 Aplicacin de una mscara en una imagen digital (Parte 2/4). 3.14 Aplicacin de una mscara en una imagen digital (Parte 3/4). 3.14 Aplicacin de una mscara en una imagen digital (Parte 4/4). 3.15 Resultados al aplicar derivadas a una imagen en MatLab 3.16 Resultados al aplicar operadores gradiente a una imagen (Parte 1/3) 3.16 Resultados al aplicar operadores gradiente a una imagen (Parte 2/3) 3.16 Resultados al aplicar operadores gradiente a una imagen (Parte 3/3) 1 2 4 4 4 5 5 5 6 6 7 16 17 19 20 20 22 24 24 27 30 31 31 31 32 33 33 34 34 34 36 36 39 39 40 41 42 43 45 46 47
Araujo Daz David
iv
Contenido
Pgina 3.17 Operador Laplaciano 3.18 Algoritmo de seguimiento de contornos 3.19 Ecuacin de una recta en forma polar 3.20 Caractersticas variables de los objetos en una imagen 3.21 Puntos clave para algunos objetos 3.22 Figuras empleadas para el clculo del factor de forma 3.23 Angulo principal de la regin R 3.24 Objetos en diferentes situaciones 3.25 Obtencin de cdigos ara OCR 3.26 Calibracin de cmara 3.27 Modelo para calibracin en dos planos 4.1 Componentes del Laboratorio de Robtica Virtual 4.2 Robot UNIMATE S-103 4.3 Dimensiones del robot UNIMATE S-103 (Acotacin: Pulgadas) 4.4 Dimensiones del espacio de trabajo del robot UNIMATE S-103 (Acotacin: Pulgadas) 4.5 Estructura cinemtica del robot SCARA UNIMATE S-103 4.6 Divisiones para el robot virtual UNIMATE S-103 5.1 Sistema de Visin para el Robot UNIMATE S-103 con comunicaciones con conexin a travs de URL 5.2 Cmara Web usada para adquisicin de imgenes 5.3 Datos del archivo de calibracin de cmara camara.cal 5.4 Archivo de umbrales umb.cal 5.5 Matriz de almacenamiento de imagen img(x,y) 5.6 Mscaras usadas para la extraccin de contornos 5.7 Definicin de esquina para segmentacin 5.8 Seguimiento de contornos 4-conectados 5.9 Imgenes obtenidas al aplicar los algoritmos para reconocimiento (Parte 1/2) 5.9 Imgenes obtenidas al aplicar los algoritmos para reconocimiento (Parte 2/2). 5.10 Imagen de prueba 5.11 Grfica con tamao de imagen constante y nmero de objetos variable 5.12 Grfica con nmero de objetos constante y tamao de imagen variable 5.13 Grfica de tamaos de archivos de salida y de imagen, con un nmero de objetos variable 5.14 Sistema de Visin para el Robot UNIMATE S -103 con comunicaciones mediante Sockets y Datagramas 6.1 6.2 6.3 6.4 6.5 6.6 6.7 Objetos usados para el reconocimiento de figuras geomtricas Formato del archivo de lmites de momentos umb.cal Archivo de umbrales umb.cal obtenido Distribucin de los momentos 1, 2 y 3 para figuras geomtricas Resultados del proceso de reconocimiento de figuras geomtricas Matriz para reconocimiento de dgitos Dgitos empleados para la obtencin de momentos 48 50 51 52 53 54 56 57 59 61 62 66 67 68 69 70 72 77 78 79 79 79 80 80 81 84 85 86 87 88 90 93
96 96 97 97 98 99 99
Contenido
Pgina 6.8 Archivo de umbrales umbx.cal obtenido 6.9 Distribucin de momentos para el reconocimiento de dgitos 6.10 Asignacin de las celdas de la matriz de 3x3 6.11 Ordenamientos de dgitos para asignacin de posiciones en la matriz 6.12 Matriz resultante para el reconocimiento de dgitos 6.13 Resultados del proceso de reconocimiento de dgitos 6.14 Archivos obtenidos despus del proceso de reconocimiento de dgitos 6.15 Sistema para reconocimiento de dgitos 6.16 Distancia recorrida, velocidad y aceleracin de un punto en movimiento 6.17 Programa para anlisis de movimiento 6.18 Imgenes de entrada para el anlisis de movimiento 6.19 Archivo de entrada mov.ent para el anlisis de movimiento 6.20 Archivo de salida mov.sal para el anlisis de movimiento 6.21 Resultados para el programa de anlisis de movimiento 6.22 Grficas de posicin, v elocidad y aceleracin para nuestro programa de anlisis de movimiento 6.23 Objeto con la altura adecuada para manipularlo 6.24 Objeto con una altura menor que la estimada para manipularlo 6.25 Objeto con una altura mayor que la estimada para manipularlo 6.26 Circuito propuesto para la estimacin de altura con un convertidor A/D 6.27 Estimacin de altura usando luz estructurada 6.28 Estimacin de altura por medio de rayos luminosos 6.29 Mecanismo usado para posicionar los haces lser para la estimacin de altura. 6.30 Estimacin de altura para dos objetos sobre la mesa de trabajo 6.31 Secuencia de fotografas para calibracin de cmara 6.32 Datos obtenidos para la calibracin de cmara 6.33 Parmetros encontrados para las figuras geomtricas 6.34 Parmetros de las figuras geomtricas 7.1 Sistema de visin para seguimiento de objetos celestes 7.2 Sistema de visin en la medicina 7.3 Circuito para implementar el algoritmo de localizacin del centro de los objetos 7.4 Clculo del centro de un objeto por medios electrnicos a.1 Disco de Nipkow a.2 Disector de imagen o tubo de Fransworth a.3 Funcionamiento de los dynodos multiplicadores a.4 Iconoscopio (Tubo de condensacin o acumulacin) a.5 Orticon de imagen a.6 Vidicon a.7 Plmbicon a.8 Construccin de un dispositivo de transferencia de carga a.9 Funcionamiento de una celda de un dispositivo de transferencia de carga a.10 Control lgico usado para transferir cargas en cada fila en un CCD 99 100 101 101 102 102 102 103 105 106 107 107 107 108 108 110 110 110 111 112 112 114 115 116 117 117 118 126 126 127 129 132 132 133 133 134 134 135 136 136 136
vi
Contenido
Pgina a.11 Composicin de un separador ptico a.12 Sntesis aditiva y substractiva del color a.13 Caractersticas de una lente a.14 Posiciones de un Zoom a.15 Partes constitutivas de un Zoom b.1 Modulacin de un haz de luz por un objeto b.2 Geometra de la triangulacin b.3 Circuito de control para el sistema de iluminacin estructurada b.4 Constitucin de un diodo lser b.5 Deformacin del haz lser por un objeto b.6 Fotografa del sistema de reconstruccin tridimensional b.7 Imagen de un objeto para extraccin de caractersticas b.8 Programa de reconstruccin tridimensional mediante iluminacin estructurada b.9 Tiempo de procesamiento de imgenes para reconstruccin tridimensional b.10 Tamao de los archivos generados durante la reconstruccin tridimensional b.11 Resultados para la reconstruccin tridimensional de una roldana b.12 Resultados para la reconstruccin tridimensional de la mesa de trabajo de un robot con diversos objetos c.1 c.2 c.3 c.4 c.5 c.6 c.7 c.8 Representacin de objetos bidimensionales Resultados de las transformaciones bidimensionales en un cuadrado Representacin de los objetos tridimensionales Resultados de las transformaciones tridimensionales en un cubo Vistas de la proyeccin paralela de una casa Vistas de la proyeccin en perspectiva de una casa Vistas de una proyeccin paralela de un conjunto de cubos Vistas de una proyeccin en perspectiva de un conjunto de cubos 137 138 138 139 139 142 142 142 144 145 145 146 146 147 148 149 149
152 152 156 156 157 157 157 158 159 160 161 162 163 164 165 166 167 168 169 170 170 171 173
Araujo Daz David
d.1 Uso de los patrones de calibracin de cmara (Parte 1/2) d.1 Uso de los patrones de calibracin de cmara (Parte 2/2) d.2 Patrn de calibracin de cmara a 0 d.3 Patrn de calibracin de cmara a 15 d.4 Patrn de calibracin de cmara a 30 d.5 Patrn de calibracin de cmara a 45 d.6 Patrn de calibracin de cmara a 60 d.7 Patrn de calibracin de cmara a 75 d.8 Cubo usado para pruebas de reconocimiento d.9 Prisma rectangular usado para pruebas de reconocimiento d.10 Cilindro usado para pruebas de reconocimiento d.11 Prisma triangular usado para pruebas de reconocimiento d.12 Prima hexagonal para pruebas de reconocimiento d.13 Dgitos empleados para pruebas de reconocimiento e.1: Mens del CD-ROM
vii
Contenido
Pgina e.2: e.3: e.4: e.5: e.6: e.7: e.8: Acrobat Reader 5.0 VRML 2.1 Internet Explorer 5.0 Kawa Professional Edition 5.0 Java 2 SDK Borland C++ 3.0 WinZip 8.0 174 174 175 175 176 176 176
viii
Contenido
Lista de Tablas
Pgina 1.1 Tipos de eslabones de robots 1.2 Tipos de robots dependiendo de la disposicin de sus eslabones 2.1 Unidades convencionales usadas en VRML 2.2 Colores bsicos en VRML 2.3 Colores metlicos con otros campos en VRML 3.1 Operadores gradiente ms comunes 3.2 Factores de forma calculados y medidos con MatLab 3.3 Momentos calculados 3.4 Comparacin entre diferentes tcnicas de calibracin de cmaras 3.5 Aplicaciones tpicas de la visin artificial en inspeccin en la industria 3.6 Aplicaciones tpicas para identificacin de objetos en la industria mediante visin artificial 4.1 Parmetros de cinemtica directa para el robot SCARA 5.1 Tiempos medidos cuando se incrementa el nmero de objetos 5.2 Tiempos medidos cuando se modifica el tamao de imagen 5.3 Tamaos de archivos de salida y de Imagen, con un nmero de objetos variable 6.1 Asignacin de posiciones en la matriz 3 3 17 18 18 44 55 58 60 63 63
70 86 88 89
101
ix
Contenido
Lista de Programas
Pgina 2.1 Uso de las primitivas bsicas de VRML 2.2 Nodo translation 2.3 Nodo rotation 2.4 Nodo scale 2.5 Nodo IndexedFaceSet 2.6 Nodo IndexedLineSet 2.7 Nodo PointSet 2.8 Cdigo VRML para insertar texto 2.9 Programa JavaVRML.java (Parte 1/2) 2.9 Programa JavaVRML.java (Parte 2/2) 2.10 Cdigo HTML para mostrar un mundo VRML y ejecutar el applet de Java 2.11 Programa root.wrl del mundo virtual vaco 3.1 Obtencin de gradientes en MatLab (Parte 1/2) 3.1 Obtencin de gradientes en MatLab (Parte 2/2) 3.2 Calculo del factor de forma en MatLab 4.1 Interpoladores de posicin en VRML para el movimiento del robot 4.2 Definicin de los sensores de tiempo en VRML para el movimiento del robot 4.3 Definicin de las rotaciones en VRML para el movimiento del robot 5.1 5.2 5.3 5.4 5.4 Algoritmo para extraccin de contornos Algoritmo de bsqueda de esquinas para segmentacin Algoritmo de seguimiento de contornos para segmentacin Algoritmo de clculo de momentos para reconocimiento (Parte 1/2) Algoritmo de clculo de momentos para reconocimiento (Parte 2/2) 16 19 19 20 22 23 23 24 25 26 27 27 42 43 54 73 73 73 80 81 82 82 83 100 101 118 119 119 120 120 121 128 129
6.1 Secuencia del ordenamiento por seleccin 6.2 Secuencia de asignacin de celdas 6.3 Fragmento de cdigo VRML para modelar un prisma triangular 6.4 Fragmento de cdigo VRML para modelar un cubo 6.5 Fragmento de cdigo VRML para modelar un prisma rectangular 6.6 Fragmento de cdigo VRML para modelar un prisma hexagonal 6.7 Fragmento de cdigo VRML para modelar un cilindro 6.8 Fragmento de cdigo VRML para insertar nmeros 7.1 Cdigo ensamblador para comunicacin serie 7.2 Algoritmo para calcular el centro de un objeto
Introduccin
Introduccin
La automatizacin de procesos industriales, ha jugado un papel relevante en la historia humana, ha permitido la produccin de bienes en un nmero suficiente y con una elevada calidad a costos razonables; ahorrando energa, resolviendo el problema de la caresta de mano de obra, etc. Desde la implementacin de las mquinas en labores industriales, stas se han hecho ms elaboradas efectuando ya no solo las tareas simples y rutinarias, sino tambin, tareas complejas y peligrosas. En este sentido los sistemas que se han incorporado a dichas mquinas son ms elaborados, por lo que no es raro encontrar mquinas dotadas de una cierta capacidad de inteligencia, las cuales no solo procesan informacin de sensores simples, tambin procesan informaciones acsticas e imgenes. Entre ms compleja es la inteligencia de una mquina, ms complejas son las tareas que puede realizar. Por ejemplo con un sistema de visin un robot, puede llevar a cabo labores de ensamble, ordenamiento, bsqueda y clasificacin, entre otras de los objetos presentes en su rea de trabajo, tal y como lo hara un operador humano. Algunas de las ventajas que los robots aportan a los sistemas industriales son las siguientes [Schilling 90]: 1) Seguridad.- la complejidad de ciertas operaciones aumenta la posibilidad de errores, de los que a veces puede resultar dao para el operador que realiza el trabajo. 2) Calidad.- la consistencia de un proceso depende de la posibilidad de mantener dentro de lmites establecidos factores tales como la f tiga y la monotona derivada de la a repeticin sistemtica. 3) Rapidez.- en un robot se puede prever la realizacin de numerosas operaciones a partir de una ordenacin constante y estricta. 4) Precisin.- los lmites de la habilidad manual humana para procesos industriales pueden ser superados mediante aparatos y herramientas de gran complejidad. 5) Optimizacin de los recursos industriales.- al eliminar toda posible interrupcin del proceso debida a factores humanos, la demanda de esfuerzo a las mquinas no presenta inconvenientes de tipo tico, moral o jurdico y s nicamente econmico, de manutencin y de puesta a punto. 6) Reduccin de las instalaciones.- la infraestructura de iluminacin y calefaccin, por ejemplo, puede ser ms simple en ambientes donde trabajen robots, en comparacin con ambientes en donde trabajen humanos. 7) Reduccin de costos.- al reducir el factor mano de obra y permitir la competitividad industrial, es posible mantener la continuidad empresarial y el subsiguiente mantenimiento de puestos de trabajo adecuados. Un robot es la unin de software y hardware [Schildt 87], siendo el primero la inteligencia que controla el mecanismo. Esta inteligencia es la que diferencia a un robot de otras formas de automatizacin. Existen bsicamente dos tipos de robots. Los primeros son los robots fijos de ensamble industrial, como los utilizados en el ensamble de coches, los cuales trabajan en ambientes altamente controlados para los cuales fueron diseados. El segundo tipo son los robots autnomos diseados para operar en el mundo real. La manipulacin de robots requiere de personal capacitado, sin embargo la infraestructura para generar personal con las aptitudes necesarias para llevar a cabo esta labor, se encuentra limitada a unas pocas instituciones, por lo que es necesario encontrar nuevas formas de capacitar
Introduccin
al personal al tiempo que se dota de inteligencia al robot, por ejemplo a travs de sistemas de visin artificial. La visin artificial [Escalera 01], es un proceso de tratamiento de imgenes que permite obtener la descripcin simblica del mundo real a partir de imgenes, la cual consiste en la obtencin, caracterizacin e interpretacin de la informacin de una imagen tomada del mundo real. Un sistema de visin deber contemplar los procesos de adquisicin, preprocesamiento, segmentacin y clasificacin de los objetos presentes en la imagen proveniente del mundo real, adems podr reconocer y modelar dichos objetos [Schildt 87, Jackson 85]. La adquisicin de imgenes es el conjunto de operaciones que se efectan para transformar la informacin luminosa de una escena en una seal digital. Se deben de tener en cuenta los factores siguientes: iluminacin, tipo de cmara empleada y el proceso de digitalizacin de las imgenes. Las imgenes no siempre presentan un formato adecuado para su anlisis por lo que el siguiente proceso es el preprocesamiento de una imagen, la cual se refiere a las tcnicas encaminadas a realizar una mejora de la imagen como son el nivel de gris, el contraste, la eliminacin de ruido, el realce de algunas caractersticas de inters, etc. Una vez que la imagen sta en condiciones de ser procesada, se tienen que hallar los objetos dentro de la imagen de forma independiente, esto se hace a travs de la segmentacin, en este proceso se divide una escena en objetos. Se puede realizar por mtodos de discontinuidad, por mtodos de similitud, etc. Cada uno de los objetos hallados puede ser clasificado por lo que la siguiente tarea es la de clasificacin extraccin de caractersticas para reconocimiento, mientras que el reconocimiento es la identificacin de cada objeto en la escena mediante una etiqueta. Para representar el mundo real a partir de un proceso de visin artificial, es posible emplear una modelacin, est puede ser solo el etiquetado o emplear algunos modelos geomtricos, como los generados con VRML (Virtual Reality Modeling Language) para modelacin y reconstruccin en tres dimensiones (3D). Esta tesis presenta el diseo de un Sistema de Visin para el Laboratorio de Robtica Virtual, como una manera de aprovechar de modo ms eficiente el equipamiento disponible en los laboratorios que cuentan con la infraestructura adecuada para llevar a cabo prcticas de robtica. Nuestro sistema har accesible tal equipamiento a usuarios locales o remotos a travs de una herramienta de comunicacin entre computadoras tan poderosa como Internet, aprovechando que est disponible en la gran mayora de las instituciones de educacin superior y por muchos particulares. Los objetivos son los siguientes: El sistema deber de realizar la a dquisicin, procesamiento, segmentacin y modelado de imgenes, as como la localizacin de los objetos presentes en la imagen correspondiente a la escena del espacio de trabajo de un robot industrial. El sistema deber de permitir el reconocimiento y reconstruccin 3D de los objetos presentes en la imagen, usando modelos en lenguaje VRML y su utilizacin en la actualizacin del espacio virtual del Laboratorio de Robtica Virtual; para la realizacin de prcticas de visin artificial a distancia utilizando Internet.
La realizacin de estos objetivos involucra una gran cantidad de tareas, las cuales se resumen en los siguientes prrafos. Para la seleccin del esquema de visin existen dos esquemas, el de cmara fija y el de cmara mvil [Schilling 90], en el primero la cmara permanece en un lugar mientras se realiza el reconocimiento; en el segundo la cmara se mueve. Como se trata de un sistema de programacin fuera de lnea, no result restrictiva la eleccin de un esquema de visin con cmara fija, por que la imagen captada por la cmara es lo suficientemente amplia como para poder observar el espacio de trabajo de inters para las tareas que el robot va a desempear.
II
Introduccin
Para la adquisicin y mejora de imgenes se usan algoritmos de filtrado, de eliminacin de defectos de iluminacin, de ruidos de digitalizacin y otros efectos nocivos [Alchemy 96, Escalera 01, Chapra 96, CVPR 97, Ibarra 98]. Para cubrir este propsito se emplearon mtodos basados en extraccin de contornos y especficamente el mtodo de aproximacin de Roberts. La calibracin del sistema de visin real permiti asegurar la repetitividad y efectividad en el puesto de trabajo real de los objetos hallados por el programa creado y simulado en el espacio virtual [Corke 96]. Se us el mtodo de transformacin homognea por su simplicidad [Schilling 90]. Para la s egmentacin de imgenes s e utiliz el seguimiento de contornos, para hallar el contorno de cada objeto en la escena y as poder determinar los lmites pertenecientes a cada uno de ellos [Escalera 01]. La localizacin de objetos se refiere al clculo de las coordenadas del centro de gravedad, orientacin y tamao de cada uno de los objetos presentes en la escena (puesto de trabajo del robot) en coordenadas imagen [Escalera 01, Mammone 94, Masters 94, Corke 96, Ayres 87, Granville 92, Mazaira 94, Staugaard 87]. Se empleo el mtodo de clculo de momentos de Hu programados en lenguaje C, por su facilidad de implementacin. Para el reconocimiento se crearon los espacios de clasificacin acordes para cada modelo, [Escalera 01], se usaron modelos estadsticos para hallar los espacios de clasificacin de dichos objetos. La descripcin de imgenes comprende la eleccin y construccin de los modelos paramtricos para reconocimiento, as como el clculo de los valores especficos de sus parmetros [Escalera 01, Staugaard 87, VRML 97]. Se us VRML como modelo de despliegue 3D de los objetos en un espacio virtual. La creacin del mundo virtual se realiz con VRML, por lo que result ser una copia fiel del espacio de trabajo completo del robot industrial UNIMATE S-103, la cual ya existe en parte, pues se tiene modelado el robot [Foley 96, VRML 97]. La actualizacin del mundo virtual garantiza que los objetos vistos, modelados y reconocidos aparezcan en el espacio virtual. Una parte importante del espacio virtual es que los objetos reales aparecieran con todas sus caractersticas relevantes para la tarea de manipulacin como son: forma, tamao, identidad, posicin y orientacin. La reconstruccin 3D con VRML tuvo como tarea fundamental la actualizacin del espacio virtual con la informacin visual generada a partir de los parmetros extrados de las imgenes se reconstruyeron los objetos presentes usando modelos VRML 2.0 [Foley 96, VRML 97]. La comunicacin con el robot consisti en la conversin de coordenadas, de tal forma que la informacin espacial del puesto de trabajo coincidiera con informacin espacial del mundo virtual creado [Deitel 98]. La comunicacin entre el sistema de visin y el robot real se realiz usando una conexin con URL (Uniform Resource Locators) empleado para localizar datos en Internet, programndolos en Java. La tesis se encuentra organizada de la forma siguiente: El Captulo 1 aborda el tema de la robtica, incluye los conceptos necesarios para entender la importancia del empleo de sistemas de visin artificial, en sistemas automticos, as como las expectativas actuales y futuras de este tipo de mquinas. En el Captulo 2 se revisan las tcnicas de modelacin virtual y reconstruccin tridimensional empleando VRML. Se tiene una breve descripcin de este lenguaje para modelacin virtual y como se conjuga con Java para combinar sus posibilidades de visualizacin y de clculo.
III
Introduccin
En l Captulo 3 se realiza el estudio de los diferentes mtodos para disear e implementar un sistema de visin artificial. Se resalta la importancia de los sistemas de procesamiento de imgenes en visin artificial y se revisan los mtodos de calibracin de cmara. El Captulo 4 presenta la composicin y los objetivos del Laboratorio de Robtica Virtual, se destacan las caractersticas del robot UNIMATE S-103 y se estudia la geometra y cinemtica del robot necesarias para su modelacin. En el Captulo 5 se presenta la forma en que se implementaron los diferentes algoritmos para el programa de visin y de comunicaciones. Se muestran los resultados obtenidos para el programa de reconocimiento y el anlisis de los algoritmos empleados. El Captulo 6 esta dedicado a la descripcin de cuatro aplicaciones del sistema de visin para el Laboratorio de Robtica Virtual: el reconocimiento de figuras geomtricas, el reconocimiento de dgitos, el anlisis de movimiento y la estimacin de altura de los objetos. Tambin se muestran los resultados para la calibracin de cmara. Nuestras conclusiones y perspectivas se describen en el Captulo 7. En el Apndice A se realiza una revisin histrica de los diferentes sistemas de adquisicin de imgenes, desde los sistemas mecnicos hasta los dispositivos semiconductores y los sistemas pticos que emplean las cmaras. El Apndice B presenta el diseo e implementacin de un sistema de iluminacin estructurada para adquisicin de imgenes tridimensionales y su representacin con VRML. En el Apndice C se muestran las ecuaciones matemticas para llevar a cabo transformaciones geomtricas en dos y tres dimensiones, necesarias para la modelacin. En el Apndice D se presentan los patrones de calibracin de cmaras utilizados, as como las figuras geomtricas y dgitos utilizados para pruebas con el sistema de visin. Resumen El empleo de robots ha tenido un impacto importante en el desarrollo humano. Un robot consta de dos partes una inteligencia (software) y los mecanismos (hardware). Los robots aportan seguridad, calidad, rapidez y precisin a diversas tareas industriales, por lo que se empleo seguir amplindose. La importancia de dotar a los robots de sistemas de visin, es permitir que se incrementen sus posibilidades de interaccin con el mundo real. La visin un sentido importante y complejo. La visin por computadora involucra una serie de procesos que requieren de la adquisicin, preprocesamiento, segmentacin, clasificacin, reconocimiento y modelacin de los objetos presentes en una imagen. Una de las formas de aprovechar mejor los pocos recursos de robtica disponibles es hacindolos accesibles mediante Internet, de ah la importancia de crear laboratorios virtuales que permitan realizar practicas de robtica de forma local o remota. Nuestro Sistema de Visin actualiza el espacio de trabajo del robot, dando las caractersticas de los objetos presentes en su mesa de trabajo, como son su identidad, forma, posicin, orientacin y tamao, presentndolos a un usuario local o remoto mediante el empleo de modelos en tres dimensiones con VRML.
IV
Robtica
Captulo 1: Robtica
En la industria se emplean ampliamente robots para mejorar la productividad, pues pueden realizar tareas montonas y complejas sin errores en su operacin, y tambin pueden trabajar en ambientes intolerables para operadores humanos. Un robot industrial maneja partes mecnicas que tienen formas y pesos particulares, por medio de al menos un brazo, una articulacin y una mano, y la suficiente potencia para realizar la tarea. Adems debe de poseer algunos sensores. A bajo nivel se instalan interruptores, mientras que a un alto nivel los robots emplean medios pticos (como un sistema de televisin) para explorar el ambiente que los rodea, reconocer imgenes y determinar la presencia y orientacin del objeto (Figura 1.1). Estas tareas requieren de una computadora para el procesamiento de seales consistente en el reconocimiento de imgenes, en base a cdigos numricos asociados con dichas imgenes.
TV Seal de vdeo Articulaciones Mano Objeto Brazo Dispositivos de Entrada/Salida
Mquina o Proceso
Equipo Perifrico
Actuador
Fuente de Potencia
Controlador
Figura 1.1: Robot que utiliza reconocimiento de imgenes. En este captulo se presentan algunos conceptos importantes relacionados con la robtica, as como con el desarrollo y evolucin en esta rea; se definen los tipos de robots de acuerdo a su arquitectura resaltando sus caractersticas ms importantes; se describen los sensores que proporcionan percepcin al robot, y se definen conceptos tales como teleoperacin, telepresencia, webots, robots virtuales y sistemas hbridos hasta llegar a la robtica virtual. Adems se presentan las perspectivas desde el punto de vista del mercado mundial que los robots tienen. 1.1 Definicin de robot El trmino robot presenta diferentes acepciones dependiendo del contexto [Schilling 90]. Sin embargo, se considera como un robot a toda aquella mquina capaz de realizar de forma automtica funciones asignadas generalmente a personas [Larousse 80]. Existen dos tipos de robots, los manipuladores y los de servicio. Los robots usados en plantas industriales, cuya forma es la de un brazo humano, son conocidos como robots manipuladores o brazos robot. Al igual que los brazos humanos poseen un rgano terminal, llamado herramienta o mano. La clsica definicin de la Robotic Industries Association (RIA) americana [IFR 98], ha sido sustituida por la de la norma ISO 8373. Segn esta norma, un robot industrial manipulador es un manipulador programable en tres o ms ejes, controlado automticamente, reprogramable y multifuncional, que puede estar fijo en un lugar o ser mvil y cuya finalidad es la utilizacin en aplicaciones de automatizacin industrial. No hay una definicin de robot de servicio, pero la International Federation of Robotics (IFR) ha adoptado la siguiente definicin provisional: robot de servicio es un robot que opera de
Araujo Daz David
Robtica
forma parcial o totalmente autnoma para realizar servicios tiles para el bienestar de los humanos y del equipamiento, excluyendo operaciones de manufactura. Los robots industriales manipuladores pueden ser considerados robots de servicio si estn dedicados a operaciones diferentes de la manufactura. La International Federation of Robotics ha adoptado tambin una clasificacin provisional de los robots de servicio por reas de aplicacin: Servicio a humanos (personal, proteccin, entretenimiento, ...). Servicio a equipos (mantenimiento, reparacin, limpieza, ...). Otras funciones autnomas (vigilancia, transporte, adquisicin de datos, ...).
1.2 Arquitectura de robots La arquitectura estructura mecnica de un robot determina tanto el espacio de trabajo como las prestaciones que pueden esperarse de un robot [Schilling 90]. Por este motivo numerosos estudios han intentado lograr estructuras que puedan sustituir con ventaja a las tradicionales, al menos en determinadas aplicaciones. A pesar de las numerosas propuestas realizadas, ninguna de ellas se ha abierto camino de una manera clara en el mbito industrial. Los denominados robots angulares acaparan casi la mitad del mercado mundial y los ms novedosos robots paralelos solamente representaban el 0.5% de los robots instalados hasta 1997. En referencia a las articulaciones, dos interesantes paradigmas marcan los objetivos a alcanzar. Por un lado, la articulacin tipo nudillo que se caracteriza por su ligereza, tamao reducido, precisin y rapidez, y por otro, la de tipo rodilla, paradigma de relacin entre diseo mecnico, control complejo y suspensin activa. Los actuadores de accionamiento directo, evitan transmisiones que pueden dar lugar a oscilaciones o comportamientos inadecuados; parecen tener un futuro prometedor. De la misma forma, los motores de estado slido, especialmente en microrobtica pueden tener un importante desarrollo. Dentro de este campo puede tambin mencionarse el diseo conjunto actuador-control, como un medio de conseguir mejores prestaciones del robot. En cuanto a los sistemas de locomocin, aspecto esencial para los robots mviles, las ruedas siguen siendo la opcin de mayor futuro, si bien combinadas con algn tipo de soporte articulado, activo o pasivo, para su utilizacin en terrenos irregulares. Un robot se compone de diferentes partes como son: rgano terminal, eslabones y articulaciones, tal y como se observa en la Figura 1.2.
en e2 e1 q0 e0 q1 q2
qn
OT
OT pinza
pinza
q1 e1
q2 e2 q3
q0
Figura 1.2: Tipos de cadenas cinemticas. El rgano terminal o herramienta de un robot, se encuentra montada regularmente sobre el ltimo eslabn que conforma al robot. El espacio de trabajo del robot define los puntos que este puede alcanzar con su rgano terminal en el espacio tridimensional. El espacio de trabajo de un robot se encuentra determinado por el nmero de eslabones que lo componen, es decir, en cuantos ejes es posible que se mueva de acuerdo al tipo de eslabn empleado (Tabla 1.1). Con 3
Robtica
ejes es posible obtener cinco tipos tiles de robot, aunque en la industria slo se emplean tres tipos: el esfrico, el cilndrico y el cartesiano (Tabla 1.2).
Notacin R P
Smbolo q
Eje 1 P R R R R
Eje 2 P P R R R
Eje 3 P P P P R
Total de Rotaciones 0 1 2 2 3
Tabla 1.2: Tipos de robot dependiendo de la disposicin de sus eslabones. Otros conceptos relevantes, para entender el funcionamiento de los robots, son los siguientes: a) Grado de libertad (gdl).- es el nmero de variables independientes que definen la postura del rgano terminal de un robot. b) Movilidad (mov).- es el nmero de articulaciones o motores que conforman la estructura mecnica del robot. c) Postura.- se compone de la orientacin y posicin de los eslabones del robot. d) Cadena cinemtica serie.- se compone de una serie de eslabones articulados de forma serie como se muestra en la Figura 1.2a. e) Cadena cinemtica paralela.- se compone de una serie de eslabones articulados de forma paralela como se muestra en la Figura 1.2b. 1.2.1 Clasificacin de robots Los robots pueden clasificarse de acuerdo a diferentes criterios, entre los que destacan: tecnologa de funcionamiento, geometra del espacio de trabajo y por los mtodos de control de movimiento [Schilling 90]. 1.2.2 Tecnologa de funcionamiento La tecnologa de funcionamiento fuente de alimentacin de los eslabones del robot es uno de los esquemas fundamentales para la clasificacin de robots. Las tecnologas ms comunes son la elctrica, la hidrulica y la neumtica. Por ejemplo, los robots manipuladores utilizan sistemas elctricos como servomecanismos de CD (Corriente Directa) y motores Paso a Paso con los cuales se tiene una excelente precisin, pero son lentos y de poca potencia. Sin embargo cuando se requieren movimientos rpidos o la manipulacin de cargas sustanciales, como el moldeo de acero y manipulacin de partes de automviles, los robots con sistemas hidrulicos neumticos son los ms empleados. Es posible utilizar herramientas neumticas hidrulicas, como rgano terminal, principalmente cuando se requiere de una manipulacin que puede ser llevada a cabo mediante un solo movimiento, como subir bajar, abrir y cerrar, pero tambin tienen la ventaja de que es posible regular la fuerza mediante la presin de aire de algn fluido, con lo que se pueden manipular objetos delicados.
Robtica
1.2.3 Geometra del espacio de trabajo La geometra del espacio de trabajo de un robot indica en cuantos ejes es posible que se mueva su rgano terminal de acuerdo al tipo de eslabones empleados. En la Tabla 1.2 se muestran diferentes configuraciones del espacio de trabajo respecto al nmero de eslabones empleados, ests se describen a continuacin. El robot rotacional R, se mueve de forma circular alrededor del soporte, es decir, exhibe un movimiento rotatorio alrededor de un eje. Adems, es uno de los tipos ms simples. Su espacio de trabajo es bidimensional, es decir, se mueve sobre un plano, pero conserva la misma distancia al origen. Se puede emplear en aplicaciones donde slo se requiera mover objetos e un radio n determinado (Figura 1.3). r OT r Caractersticas: gdl = 1 mov = 1
Espacio de trabajo = 2r
q
Espacio de Trabajo Figura 1.3: Robot rotacional R.
El robot prismtico P se mueve de forma lineal, por lo que describe un desplazamiento lineal a lo largo de un eje. Su espacio de trabajo es unidimensional (solo en una dimensin). Al igual que en el robot rotacional (R); emplea de forma simple un eslabn. Se puede emplear en algunos casos donde slo se requiera mover objetos a lo largo de una direccin (Figura 1.4). OT Caractersticas: gdl = 1 mov = 1 Espacio de trabajo = a
Espacio de Trabajo Figura 1.4: Robot prismtico P. El robot prismtico-prismtico o PP, se mueve en dos ejes, cubriendo un plano espacio bidimensional. A diferencia de los anteriores, su rgano terminal puede ubicarse en cualquier lugar del plano limitado solo por la longitud de sus eslabones en cada direccin. Se emplea en tareas de dibujo, corte, etc. (Figura 1.5). OT Caractersticas: gdl = 2 mov = 2 Espacio de trabajo = a b
a b
Robtica
El robot rotacional-prismtico RP, se mueve en dos ejes, describiendo un desplazamiento rotacional, por lo que se cubre un espacio bidimensional, en forma de corona circular (Figura 1.6). OT Caractersticas: gdl = 2 mov = 2 Espacio de trabajo = a (a+2r)
r a r a+r
Espacio de Trabajo Figura 1.6: Robot rotacional-prismtico RP. El robot cartesiano, prismtico-prismtico-prismtico PPP, esta formado por un brazo con tres articulaciones traslacionales prismticas ortogonales, y un rgano terminal orientado generalmente con articulaciones rotacionales. El rgano terminal se orienta en coordenadas cartesianas. Se utiliza en aplicaciones que requieren de gran precisin y rigidez, por lo que una vez que alcanza su posicin difcilmente se mueve (Figura 1.7). c OT b b c a a Espacio de Trabajo Figura 1.7: Robot cartesiano, prismtico-prismtico-prismtico PPP. Un robot cilndrico, rotacional-prismtico-prismtico RPP, esta construido de tal forma que presenta un movimiento de rotacin azimutal, es decir, alrededor de un centro, seguida de dos articulaciones prismticas, una horizontal y otra vertical. El rgano terminal suele tener movimiento en tres ejes concurrentes para asegurar su correcta orientacin. Son tiles cuando las tareas a desarrollar, o las mquinas a las que deben apoyar, se encuentran radialmente cercanas al robot y no existen obstculos. Se caracterizan por su precisin, aunque es menor a la de los robots cartesianos (Figura 1.8). r a b OT r+b r Caractersticas: gdl = 3 mov = 3 Espacio de trabajo = a b (b+2r) Caractersticas: gdl = 3 mov = 3 Espacio de trabajo = a b c
q
Espacio de Trabajo Figura 1.8: Robot cilndrico, rotacional-prismtico-prismtico RPP.
Robtica
El robot esfrico, rotacional-rotacional-prismtico RRP, presenta una de las arquitecturas ms empleadas en la construccin de robots industriales. Consiste de dos articulaciones rotacionales que permiten un movimiento azimutal y de elevacin de una articulacin prismtica que le permite tener un desplazamiento. Se equipan con un rgano terminal con tres articulaciones rotacionales. Adems puede tener actuadores hidrulicos que le permite manejar cargas pesadas. (Figura 1.9). r a OT r+a r Caractersticas: gdl = 3 mov = 3
q q
Un robot SCARA (Selective Compliance Assembly Robot Arm: Brazo de Robot para Ensamble de Complianza Selectiva), rotacional-rotacional-prismtico RRP, es un brazo de robot desarrollado por Fujitsu-Fanuc con el fin de ser un brazo compatible con el trabajo humano. Es un robot de coordenadas cilndricas. Se mueve libremente en el plano horizontal mediante sus dos primeras articulaciones, ambas rotacionales con ejes paralelos y verticales entre s; as se tiene entonces una complianza alta, es decir, que se deforma ligeramente en el peor de los casos. La ltima articulacin es prismtica y mueve nicamente al rgano terminal desplazndolo en alguna direccin (Figura 1.10). r R+r Caractersticas: gdl = 3 mov = 3 R OT a Espacio de Trabajo a
Espacio de trabajo = a (r+R) 2
Figura 1.10: Robot SCARA, rotacional-rotacional-prismtico RRP. El robot SCARA ejecuta tareas de montaje y ensamble en el plano horizontal con mucha precisin y velocidad, pero tambin a un costo menor comparado con otros robots como el PUMA (Programmable Universal Machine for Assembly) que se emplea en tareas similares. Un robot antropomrfico, rotacional-rotacional-rotacional RRR, tiene tres articulaciones rotacionales. Es un robot de coordenadas articuladas de coordenadas cartesianas dobles, por lo que su espacio de trabajo se asemeja a un toro en tres dimensiones. Presenta una configuracin antropomrfica, ya que su anatoma se asemeja a la forma de un brazo humano (Figura 1.11). Es una de las arquitecturas ms verstiles, puede tener tantos grados de libertad como sea necesario segn la tarea a realizar.
Robtica
r OT r
q
2r
q
R
2R
Espacio de Trabajo Figura 1.11: Robot antropomrfico, rotacional-rotacional-rotacional RRR. 1.2.4 Control de movimientos El mtodo de control de movimientos del rgano terminal es otra de las formas que existen para clasificar a los robots. Existen bsicamente dos tipos de control de movimientos del rgano terminal: movimiento de punto a punto, en donde la herramienta se mueve de punto a punto en el espacio de trabajo; y el movimiento por un camino continuo, en donde el movimiento entre dos puntos no esta controlado por el usuario. El movimiento punto a punto se utiliza en aplicaciones donde se tiene de forma natural un movimiento discreto. Por ejemplo cuando se colocan puntos de soldadura. El movimiento por camino continuo tambin conocido como movimiento de camino controlado, describe un camino en el espacio tridimensional. La velocidad en el recorrido puede variar, por lo que el control es ms complejo. Por ejemplo se tienen los robots que esparcen un lquido, o que colocan una capa de pegamento. En los ltimos aos, los robots han constituido una plataforma excelente para la aplicacin y ensayo de numerosas tcnicas de control, entre las que cabe mencionar: el control adaptativo, el control por modos deslizantes, las tcnicas de pasividad, el control difuso y el control neuronal. Muchos de los sistemas diseados con estas tcnicas de control, han sido probadas nicamente en simulacin. No han sido sometidas an a una verificacin experimental que permita su validacin real [Schilling 90]. No obstante, diversos fabricantes de robots han incorporado mejoras derivadas de estos diseos, y se puede apreciar una paulatina mejora en los sistemas de control por la disponibilidad de microprocesadores ms rpidos y potentes. Algunos fabricantes han comenzado a incorporar en sus sistemas mdulos de compensacin dinmica que permiten al robot cargado seguir con precisin trayectorias a velocidades elevadas. 1.3 Sensores y percepcin La incorporacin de sensores a los robots que permitan a estos obtener informacin de su entorno e interaccionar con l, ha sido mucho ms lenta de lo previsto. Sensores como los de tacto, que en un momento dado fueron objeto de intensa investigacin e incluso de comercializacin en algunos casos, han quedado prcticamente olvidados. No obstante, no parece demasiado arriesgado afirmar que el desarrollo de la robtica futura, tanto de los robots manipuladores como de los robots mviles, pasar en gran parte por la incorporacin de nuevos y ms eficientes sensores [Ibarra 90, Schilling 90]. En robots manipuladores para tareas de montaje y mecanizado en las que existe contacto entre la pieza manipulada por el robot y el entorno, la utilizacin de sensores de fuerza puede tener 7
Araujo Daz David
Robtica
un incremento apreciable a mediano plazo. Esto ser el resultado del abaratamiento del costo de los sensores y la disponibilidad de procesadores para el tratamiento en tiempo real de su informacin y de estrategias eficientes de ejecucin de esas tareas que hagan uso efectivo de la informacin de fuerza. Los sistemas de visin seguirn siendo, en cualquier caso, los ms utilizados y los de mayor desarrollo futuro, tanto para los robots manipuladores (robots fijos que manipulan objetos a su alrededor) como para los robots mviles (robots capaces de moverse para manipular objetos, crear mapas geogrficos, etc.), aunque para estos ltimos los sensores de proximidad y distancia sigan constituyendo un elemento esencial. La iluminacin controlada aparece como uno de los factores fundamentales de los sistemas de visin futuros. Aspectos como la posicin y tipo de los focos, la utilizacin de luz estructurada y la explotacin de las posibilidades de la longitud de onda y de la polarizacin sern, sin duda, de gran importancia en dichos sistemas. Por otro lado, la incidencia de modelos, especialmente de representacin jerrquica, de los programas oportunistas y de la seleccin automtica de dichos modelos de acuerdo con el objetivo perseguido, tendr una creciente importancia el procesamiento de la informacin de las imgenes. Igualmente, los futuros sistemas de visin harn un uso creciente del color, de la informacin en tres dimensiones y de las tcnicas de visin activa como el seguimiento y el flujo ptico. Mencin especial merecen las tcnicas de integracin sensorial cuyo objetivo es combinar la informacin procedente de diversos sensores para construir y actualizar un modelo del entorno que sirva para un objetivo determinado. Estas tcnicas han de permitir, por un lado, un uso ms eficiente de los sensores disponibles con un incremento de la cantidad y de la calidad de la informacin obtenida, y por otro lado, la deteccin de errores y fallos en algn sensor, y la continuidad del funcionamiento, aunque degradado, del sistema. 1.4 Programacin, planificacin y aprendizaje La programacin de los robots para la ejecucin de sus tareas es uno de los temas bsicos para la efectiva expansin de los robots en los ambientes industriales [Ibarra 90, Schilling 90]. Uno de los temas recientes de discusin es la necesidad, conveniencia, de alcanzar un estndar sobre un lenguaje de programacin para robots que pudiese ser convertido por software en el lenguaje especfico de cada robot. Sobre este punto, diversos fabricantes han expresado opiniones contrapuestas, pero parece haber un consenso generalizado sobre la necesidad de hacer ms fcil, seguro y eficiente para el usuario el desarrollo de aplicaciones robotizadas. En esta direccin cumple un papel decisivo la programacin fuera de lnea, que no ocupa tiempo de trabajo del robot y es asistida de la simulacin grfica y de elementos como el posicionamiento relacional que facilita la obtencin de las posiciones y orientaciones que ha de alcanzar el robot, para llevar a cabo sus tareas. La planificacin de tareas fue un tema en boga hace unos aos, quedando despus en un segundo plano debido a la dificultad de realizar planificadores realistas y utilizables en un entorno industrial. En estos momentos, los objetivos son claramente ms modestos y la planificacin se orienta ms como una ayuda a la programacin en tareas complejas que como un sistema autnomo robot. Ejemplos de este enfoque son la planificacin de movimientos sin colisin, de la acomodacin activa de objetos en tareas de montaje con robots y de las curvas de pulido en el acabado de piezas. En todo caso, los planificadores, para ser realistas, deben tener en cuenta la incertidumbre siempre presente en la ejecucin de una tarea y la utilizacin de los sensores disponibles para llevar a cabo la misma. El aprendizaje de las tareas que ha de realizar un robot es otra tcnica prometedora aunque todava incipiente en el entorno industrial. La introduccin del aprendizaje en el campo de la robtica viene motivado bsicamente por la necesidad del robot de adquirir automticamente los conocimientos necesarios para la realizacin de determinadas tareas. Esta necesidad es debida, en algunos casos, a la existencia de tareas difciles de programar pero cuya forma de realizacin 8
Araujo Daz David
Robtica
puede ser mostrada fcilmente al robot. Otras veces, el problema es que la informacin necesaria para programar el robot no es accesible y el robot ha de adquirir ese conocimiento mediante la exploracin. Un caso similar se produce en entornos dinmicos en los que el robot ha de ser capaz de tener constantemente actualizado el conocimiento de los mismos. 1.5 Integracin de robots El robot industrial es cada vez ms un elemento dentro de un sistema automtico de produccin [Ibarra 90]. Por esta razn, adquiere una gran importancia la integracin de un robot con otros robots y con otras mquinas. En el campo de la cooperacin entre robots pueden mencionarse como temas abiertos el reparto de tareas entre distintos robots, el control combinado de fuerza y posicin en la manipulacin conjunta por parte de varios robots y como evitar colisiones entre ellos. La integracin de robots en celdas robotizadas (por la semejanza que guardan este tipo de implementaciones industriales con un panal de abejas) pone de manifiesto una serie de problemas hasta ahora resueltos solamente de forma parcial, como son el diseo de la arquitectura de la clula, la comunicacin entre mquinas, la simulacin del funcionamiento y la programacin de la celda. 1.6 Teleoperacin de robots y robtica virtual La teleoperacin es el manejo a distancia de manipuladores, de vehculos y de cualquier otro tipo de robots. Para poder teleoperar un robot, es necesario contar con una interfaz de usuario dotada de sensores capaces de detectar los movimientos realizados por el usuario, los cuales sern enviados como consignas de posicin y/o velocidad para los controladores articulares del robot y por ende, de sus motores. Estas interfaces pueden ser desde una simple botonera, hasta una compleja estructura tipo exoesqueltica. El requisito indispensable aqu es que los sensores de la interfaz de usuario generen seales que comanden los servomecanismos del robot, a travs de un sistema de comunicacin unidireccional. La teleoperacin de robots manipuladores es uno de los principales antecedentes de los robots industriales [Ibarra 90, Schilling 90]. En la industria nuclear de los aos cuarenta y cincuenta se desarrollaron brazos mecnicos operados a distancia para manipular con seguridad substancias radioactivas en espacios confinados. La evolucin que ha sufrido la teleoperacin permite hoy en da el manejo de robots en la superficie marciana comandados desde la Tierra, con base en avanzadas tecnologas de telecomunicaciones, de computacin, de control, de sensores y de electrnica, todas ellas de altas prestaciones, pero de costos inaccesibles para otro tipo de aplicaciones. En la actualidad, la teleoperacin de robots presenta problemas cientficos y tecnolgicos interesantes desde los puntos de vista de las telecomunicaciones, computacin, control automtico, etc. Esto ha hecho proliferar sistemas ms o menos complejos que cada vez dificultan ms su clasificacin y hacen confuso el uso de los trminos asociados. La dificultad de programar un robot en operaciones complejas y con capacidad de adaptacin a situaciones cambiantes ha hecho resurgir la idea de la teleoperacin. En un futuro prximo, la teleoperacin asistida, en la que el robot es capaz de desarrollar ciertas operaciones ordenadas por el operador sin necesidad de que ste tenga que realizarlas en detalle, y la utilizacin del retorno sensorial, a travs del cual el operador experimenta las sensaciones de la tarea, tendrn un desarrollo creciente. Actualmente estas tcnicas estn siendo ya aplicadas con xito en tareas complejas de mantenimiento y en campos de reciente introduccin de la robtica, como la construccin, exploracin, la agricultura, la industria alimentara y la medicina. La teleoperacin no precisa de algn tipo de retroalimentacin de sensaciones hacia el usuario, cuando esta se presenta se llama telepresencia. L telepresencia es la percepcin, por a parte del usuario, de sensaciones correspondientes a la informacin sensorial obtenida por un robot remoto durante una cierta tarea de interaccin con su entorno. Esto requiere que la interfaz 9
Araujo Daz David
Robtica
de usuario remoto sea capaz de convertir las seales correspondientes en estmulos sensoriales detectables por los sentidos del usuario (visin, tacto, sonidos, etc.). Recientemente han aparecido diversas instituciones educativas y de investigacin de varios pases que tienen publicadas pginas web en las cuales ponen diferentes tipos de robots a la disposicin de cualquier usuario [Internet 4.1 y 4.2]. Generalmente se trata de robots manipuladores o de robots mviles reales susceptibles de ser teleoperados desde una pgina web en la cual tambin es posible observar los movimientos del robot mediante el uso de cmaras de vdeo (web cam). A este tipo de robots se les comienza a denominar webots, trmino que significa robot en la web. Cuando se hace uso de modelos matemticos que representan los principales aspectos fsicos de un robot y se emplean diferentes tcnicas de simulacin grfica, es posible tener en la computadora a un robot virtual cuyo comportamiento sea equivalente o similar al de un robot real. La limitacin de un robot virtual con respecto al robot real depende de los modelos empleados para representar su comportamiento, pudiendo ser meramente geomtrico ( dos o tres dimensiones) en se puede incluir la cinemtica exacta del robot real y an su dinmica. El robot virtual requiere, adems de los modelos, de un simulador capaz de reproducir artificialmente (virtualmente) las propiedades fsicas de dichos modelos. Generalmente, los robots virtuales incluyen el modelado de su entorno, en particular de su puesto de trabajo con todos sus accesorios mecnicos. Finalmente, una de las partes fundamentales de un robot virtual es la interfaz grfica con el usuario, cuyo diseo debe contemplar mltiples aspectos entre los que se encuentran la ergonoma, la esttica y an normas legales y sanitarias. Del mismo modo que es simple entender la utilidad de combinar la teleoperacin con la telepresencia para hacer ms eficiente y seguro a un sistema, no debe haber dificultad para analizar o crear sistemas hbridos que combinen dos o ms de alguno de los conceptos presentados en los prrafos previos. Por ejemplo, utilizando el modelo dinmico de un robot virtual, se pueden obtener seales sensoriales artificiales (virtuales) que pueden ser utilizadas en la interfaz de operacin para generar el retorno de esfuerzos a fin de asegurar la telepresencia del usuario en el entorno del robot virtual simulado en la computadora. Otro sistema hbrido puede obtenerse de la combinacin de la teleoperacin de un robot real y de su correspondiente robot virtual, pudiendo incluir la telepresencia del usuario tanto en el puesto de trabajo del robot real como en el espacio ciberntico en el que se desenvuelve el robot virtual, en donde la computadora representa la interfaz que permite al usuario hacer la teleoperacin y sentir la telepresencia. La robtica virtual es entonces la combinacin de teleoperacin y telepresencia con el auxilio de robots virtuales para la validacin de programas de usuario mediante simulacin, para el entrenamiento de nuevos usuarios y para la visualizacin de las tareas realizadas por el webot. 1.7 Mercado mundial de robots El mercado mundial de robots, prev que sern las mquinas industriales que ms se difundirn en un futuro, debido al incremento en eficiencia que en los procesos productivos implica su empleo, sin embargo es posible que en el corto plazo algunas de las tcnicas discutidas anteriormente no tengan una aplicacin debido principalmente a los costos econmicos que involucra su empleo. En el periodo 1987 a 1997, la venta anual de robots industriales tuvo un claro crecimiento hasta 1990, ao en que se vendieron 81,000 unidades, para caer en los aos siguientes, debido principalmente al brutal descenso del mercado japons, hasta alcanzar un mnimo en 1993 con poco ms de 54,000 unidades vendidas [Ibarra 90, Schilling 90]. Despus de una pequea recuperacin en 1994, en el ao siguiente, se contempl un espectacular crecimiento de casi un 29% que se moder a un 11% en el ao de 1996 y a un 6% en el ao de 1997, ao en el que alcanz la cifra mas alta de casi 85,000 unidades vendidas. El nmero total estimado de robots operativos al final de 1997 supera la cifra de 711,000, con un crecimiento del 6.4% respecto al ao anterior. De ellos, Japn, con prcticamente 413,000 robots, tuvo la mayor parte, y junto con los otros cinco grandes pases en robtica (Estados Unidos, 10
Araujo Daz David
Robtica
Francia, Alemania, Canad y China), totalizan casi 611,000 robots, quedando nicamente 100,000 para el resto del mundo. El mercado anual de robots se mueve alrededor de la cifra de 5,000 millones de dlares, con un ligero descenso en 1997, pese al incremento de ventas de robots. Este hecho pone de manifiesto el continuo descenso del precio de los robots desde 1990, que en periodo 1990 - 1997 ha supuesto un decremento en dlares, que va desde algo ms del 21% en Estados Unidos hasta el casi 50% en Francia. No obstante debe tenerse en cuenta que el precio de un robot, slo representa un promedio de un 30% del costo total de un sistema de produccin. En cuanto a las reas de aplicacin, el 29.2% de los robots instalados en 1997 han estado dedicados a soldadura (13.2% de arco y 15.7% por puntos) que ha sido la aplicacin mayoritaria, seguida por montaje (25.7%), manipulacin (13.1%), mecanizado (8.7%) y paletizacin (3.1%). Estos porcentajes varan considerablemente cuando se refieren al total de robots operativos al final de 1997. En este caso, el montaje se destaca claramente con un 33.3%, pasando la soldadura a un segundo puesto, con un 23.9%. A mecanizado le corresponde el 9.6%, a manipulacin, el 7.2% y al paletizado, el 2.8%. nicamente del orden de 5,600 robots en todo el mundo (0.9%) estn dedicados a enseanza e investigacin. Por sectores industriales, la fabricacin de vehculos automviles es claramente el sector mayoritario, rozando el 30% del total, tanto en nuevas instalaciones de robots como en nmero de robots que actualmente estn operando. En cuanto a los tipos de robots, los de 5 ms ejes instalados en 1997 representan el 65% del total, mientras que los de 3 y 4 ejes se reparten el resto en partes aproximadamente iguales. Los robots angulares (con al menos tres articulaciones de rotacin) suponen el 47.1% de los robots instalados en 1997. A este respecto, cabe destacar el reducido nmero de nuevas instalaciones de robots SCARA (Selective Compliance Robot Arm) que alcanza solamente el 2.6% del total, nicamente por encima de los robots paralelos (cuyos brazos tienen articulaciones prismticas o de rotacin concurrentes) que tienen el 0.5%. Finalmente, los robots de trayectoria continua controlada representan la inmensa mayora (82.4%) de los instalados en 1997.
11
Robtica
Resumen Un robot es un autmata capaz de realizar una tarea montona con alta eficiencia. Las caractersticas principales de un robot son: e espacio de trabajo, la movilidad y los grados de l libertad. Un robot manipulador tiene como funcin principal la automatizacin industrial, mientras que un robot de servicio es aquel que se aplica a reas de servicio a humanos, equipos u otros autmatas. La arquitectura de los robots es la estructura mecnica que condiciona tanto el espacio de trabajo como las prestaciones que pueden esperarse de un robot. Los robots se clasifican de diferentes formas: por la tecnologa de funcionamiento: elctrica, hidrulica y neumtica. Por la tecnologa del espacio de trabajo: rotacionales, prismticos, cartesianos, cilndricos, esfricos, SCARA (Selective Compliance Assembly Robot Arm) y antropomrficos, entre muchas otras. Por los mtodos de control de movimientos: de punto a punto y de movimiento continuo. La incorporacin de sensores a los robots les permite obtener informacin de su entorno e interaccionar con est de una manera ms eficiente. Los sistemas de visin seguirn siendo, en cualquier caso, los ms utilizados y los de mayor desarrollo futuro, tanto para los robots manipuladores como para los robots mviles, aunque para estos ltimos los sensores de proximidad y distancia sigan constituyendo un elemento esencial. Aunque resulta difcil hacer previsiones en el desarrollo de la robtica, algunos temas destacan de manera clara: las exigencias crecientes de fiabilidad y eficiencia, la interfaz hombre mquina a travs de sistemas grficos y programacin fuera de lnea, la importancia creciente de los sensores y de la integracin sensorial, la interconexin entre mquinas, la coordinacin entre robots y otras mquinas y la teleoperacin. Igualmente, es importante mencionar los nuevos campos en expansin de aplicacin de la robtica como la exploracin, la agricultura, la industria alimentaria y la medicina, que complementarn en el futuro la ya tradicional robtica industrial. Los robots industriales ocupan un lugar destacado dentro de la automatizacin de la produccin y su papel se ha ido consolidando en los ltimos aos. Despus de un descenso en las ventas, que tuvo su mnimo en 1993, el mercado de robots ha seguido una evolucin creciente. No obstante, la industria automotriz contina siendo el sector mayoritario en cuanto a utilizacin de robots. El nmero de robots dedicados al montaje en el conjunto del mundo es mayoritario, seguido por el nmero de robots dedicados a labores de soldadura.
12
Ambientes Virtuales
13
Ambientes Virtuales
ser usada por manipulacin directa remota. Est dispositivo minimiza los efectos de la ciruga. Tambin es posible tener planos tridimensionales del cuerpo humano, que pueden ser visualizados y guiados desde un monitor convencional. Otra aplicacin interesante incluye la realidad artificial. Se puede generar a travs de instalaciones complejas de vdeo, combinando proyectores de pantalla ancha y sensores de vdeo, cuyo objetivo es imitar todos los movimientos del cuerpo como una proyeccin de imgenes que cubren todo el espacio visual. Por ejemplo, se pueden crear criaturas de luz que caminen a lo largo de un pasillo o a travs de patrones multicolores. Si se incluyen la generacin de sonido mientras se mueven, se incrementa el realismo de la experiencia. El aspecto de telepresencia de la realidad virtual elimina las limitaciones fsicas de espacio y permite que los usuarios acten con ms libertad. Los mundos virtuales generados por telepresencia pueden ser usados para tratar pacientes, pues pueden estar inmersos en una experiencia controlada, desde su punto de vista, que les permite mantener una seguridad fsica. En la prctica, este tipo de sistemas incorporan la conexin remota para manipulacin directa y visin remota. Los principios de manipulacin directa son de gran ayuda para la gente que disea y refina los ambientes virtuales. Los usuarios deben de ser capaces de seleccionar acciones rpidamente mediante un apuntador, un gesto, mediante la voz, etc., con un control incremental / reversible y con monitores que muestren una respuesta inmediatamente para causar una sensacin de causalidad. Los objetos de las interfaces deben de ser simples, desde el punto de vista de los usuarios, y permitir el dominio y manipulacin de los objetos. Alternativamente, existen los ambientes que permiten sumergirse en ellos, llamados ambientes virtuales de escritorio (desktop) o tanques de peces (fishtank ) (ambos hacen referencia a la observacin de pantallas estndar) y comienzan a ser de uso comn [Shneiderman 98]. Utilizan principalmente grficas tridimensionales que puede controlar el usuario para la exploracin de lugares reales, visualizacin cientfica o mundos fantsticos. Muchas aplicaciones de este tipo son ejecutadas en estaciones de trabajo de alto desempeo capaces de crear imgenes rpidamente, pero que pueden ser ejecutadas en red usando lenguajes de modelacin de realidad virtual como VRML. Los investigadores en grficas perfeccionan imgenes desplegadas en monitores, simulando efectos de iluminacin, textura de superficies, reflejos y sombras. Las estructuras de datos y la ampliacin de los algoritmos, permiten c ruzar un objeto o un cuarto rpidamente y lentamente se empieza a practicar en computadoras comunes. Una innovacin es lo que se conoce como realidad aumentada, en donde los usuarios observan un mundo real, y le adicionan informacin. Por ejemplo, se puede caminar sobre una calle, aadindole poca luz y neblina. Una variante de los ambientes virtuales es llamada conocimiento situacional, en donde se usa una palmtop con un sensor de localizacin para controlar la pantalla. Cuando un usuario se mueve, la palmtop muestra en la pantalla un mapa, por ejemplo de un museo, en el que se muestra informacin acerca de las ciudades vecinas, las pinturas o la historia. El desarrollo de los ambientes virtuales depender de la integracin adecuada de mltiples tecnologas, como el diseo de nuevas pantallas visuales, los sensores de posicin de la cabeza, de la mano, de mecanismos de retroalimentacin de fuerza, integracin de sonido y reconocimiento de voz, de la incorporacin de otras sensaciones como calor, humedad, sabor, olor, etc. Las pantallas visuales usadas en computadoras personales (de 12 a 17 pulgadas medidas diagonalmente), permiten que sean observadas a una distancia de unos 70cm, con un ngulo de 5, las pantallas grandes (de 15 a 22 pulgadas) pueden cubrir un campo visual de 20 a 30 y los monitores montados sobre la cabeza cubren unos 100 en la horizontal y unos 60 en la vertical. Los monitores montados sobre la cabeza, muestran otros bloques de imgenes, con efectos ms dramticos y con el moviendo de la cabeza procesan nuevas imgenes, causando en el usuario una sensacin de visin de 360. Los simuladores de vuelo las aplicaciones que emplean algunas 14
Araujo Daz David
Ambientes Virtuales
imgenes de este tipo. La tecnologa provee rpidamente de monitores de ms alta resolucin. Se han desarrollado monitores que proveen respuestas en tiempo real (probablemente con un retardo menor a los 100ms) en la presentacin de las imgenes a los usuarios. Los monitores de baja resolucin, son aceptables para usuarios u objetos en movimiento, pero cuando se detiene el espectador, los monitores de alta resolucin son necesarios para p reservar la sensacin visual deseada. La mejora del hardware y de los algoritmos es necesaria para desplegar formas y rellenos rpidamente con los detalles del movimiento. La deteccin de la posicin de la cabeza requiere de sensores de alta precisin (menor a 1) y rpidos (con 100ms de respuesta). Los movimientos del ojo pueden ser reconocidos, para encontrar el foco de atencin del espectador, sin embargo se presenta una dificultad en los movimientos del usuario pues el monitor se encuentra montado sobre la cabeza. La deteccin de la posicin de la mano se realiza mediante un guante de datos. El problema actual con estos dispositivos es la inexactitud en las mediciones y la falta de un lenguaje de movimientos estndar. Se puede tener una precisin en las mediciones de la posicin de los dedos, pero solo para uno o dos dedos. La orientacin de la mano es provista por un guante montado en la mano. Los sensores en otras partes de cuerpo como las rodillas, los brazos o piernas pueden ser usados, en sistemas ms complejos. La retroalimentacin de la cantidad de fuerza aplicada es de gran utilidad en operaciones manuales con dispositivos de control remoto para realizar experimentos en laboratorios de qumica o para manejar materiales nucleares para que los usuarios manejen de la mejor manera los objetos. La retroalimentacin de la fuerza aplicada para manejadores de automviles y pilotos puede ser configurada para que presente un realismo e informacin tctil usable. Simular la retroalimentacin a travs del software puede ayudar a responder preguntas sobre el comportamiento de molculas complejas. La entrada/salida de sonidos aumenta el realismo. El sonido digital es adecuado para el hardware pero las herramientas de software en ocasiones son inadecuadas. La salida de sonido de instrumentos virtuales es promisoria; fcilmente se pueden simular instrumentos existentes como un violn, pero otros instrumentos nuevos han aparecido. El reconocimiento de voz complementa los gestos de las manos en algunas aplicaciones. Otras sensaciones pueden ser utilizadas para incrementar la experiencia. La inclinacin y la vibracin en los simuladores de vuelo son una inspiracin para algunos diseadores. La inclinacin y vibracin virtual permitirn viajar a travs de una costa a 60, 600 6,000 kilmetros por hora, chocar contra una montaa o ir a rbita?. Otros efectos, como la msica disco y las luces estroboscpicas, pueden mejorar la experiencia virtual. Por qu no se incluyen olores del aire, o fro o calor con una cubierta virtual de agua?. La computadora olfativa (que detecta olores) es posible, Pero ser apropiada para aplicaciones prcticas?. El trabajo competitivo es otra rea de investigacin, como los ambientes virtuales cooperativos, o como los diseadores lo llaman virtualmente construido para dos. Dos personas trabajando en sitios remotos, pueden cada una ver y sentir las acciones de la otra en una experiencia compartida. Los juegos competitivos, como el tenis, pueden ser construidos para dos jugadores. El software puede crear la atmsfera adecuada para que ambos jueguen en la pantalla. Los sonidos realistas crean una sensacin que parece real. Presumiblemente los ambientes virtuales sern empleados para la relajacin y el placer de encontrarse con otras personas. 2.2 Construccin de ambientes virtuales con VRML (Virtual Reality Modeling Language) La construccin de ambientes virtuales se realiza en base a la modelacin por computadora. La modelacin por computadora encuentra hoy en da una gran variedad de aplicaciones en reas industriales, de negocios, de gobierno, educacin y entretenimiento [Foley 96]. Un modelo se realiza en base a clculos previos, como por ejemplo los movimientos de un robot. En la modelacin, el usuario gua el proceso de construccin, paso a paso, eligiendo los 15
Araujo Daz David
Ambientes Virtuales
componentes y los datos geomtricos y no geomtricos. El usuario puede solicitar en cualquier momento que muestre una vista del modelo que se ha creado hasta entonces. Los modelos son especficos para la aplicacin y se crean independientemente de cualquier sistema de presentacin. Por lo que un programa de aplicacin debe de convertir cada porcin del modelo en una representacin geomtrica interna, hasta crear una imagen. Este proceso se puede presentar en dos fases: una consiste en que el programa de aplicacin recorre su base de datos de la aplicacin que almacena el modelo para extraer las partes que se visualizarn, y otra que consiste en juntar los datos extrados con los atributos para convertirlos en un formato que pueda enviarse al sistema grfico. Los datos extrados durante el recorrido de la base de datos deben ser geomtricos o convertirse en datos geomtricos, los datos se pueden describir al sistema grfico, en funcin tanto de primitivas como de atributos de primitivas. Una primitiva de presentacin es generalmente un modelo geomtrico como una lnea, un rectngulo, un polgono, un crculo, una elipse, etc. en dos dimensiones y polgonos, poliedros, etc. en tres dimensiones. As la fase que le sigue a la modelacin es la reconstruccin en dos o tres dimensiones. El desarrollo de modelos virtuales no es sencillo sin el soporte de un lenguaje apropiado como VRML (Virtual Reality Modeling Language). VRML es un lenguaje para modelacin de realidad virtual [Alarcn 00, VRML 97]. Los archivos realizados para trabajar con esta tecnologa son archivos de texto con la extensin *.wrl (del ingls world). Tiene la ventaja de que genera archivos de tamao pequeo, por lo que viajan a travs de Internet de forma rpida. Para que un mundo virtual en VRML, pueda ser visualizado en un navegador de Internet, es necesario instalar un visor (los cuales generalmente se obtiene de forma gratuita). Microsoft provee su propio visor de VRML con el Internet Explorer. Otros visores son Cosmo Player y Platinum. 2.2.1 Un programa en VRML El Programa 2.1 muestra un ejemplo sencillo de un programa en VRML. Este programa dibuja una caja amarilla con dimensiones en x de 4 unidades, en y de 3 unidades y en z con 5 unidades. Obsrvese que la geometra se define dentro de un nodo Shape y la apariencia dentro del nodo que define a la geometra. En la Figura 2.1 se observa el resultado, al observar la caja desde una esquina. 1. 2. 3. 4. 5. 6. 7. #VRML V2.0 utf8 Shape { geometry Box{ size 4 3 5 } #Las dimensiones son: X Y y Z appearance Appearance{ material Material {diffuseColor 1 1 0} } } Programa 2.1: Uso de las primitivas bsicas de VRML.
16
Ambientes Virtuales
La primera lnea es con la que e navegador identifica la versin del archivo (cabecera). l Para VRML 2.0 la cabecera es la siguiente: #VRML V2.0 utf8. Donde #VRML V2.0 denota el tipo y la versin, y utf8 permite utilizar la codificacin UTF-8 para poder emplear todos los caracteres especiales del estndar ISO 10646. Los comentarios en VRML se denotan colocando un signo # al comienzo del comentario. La manipulacin de objetos en el mundo virtual se realiza a travs de los siguientes objetos definidos en VRML: Nodos.- son objetos geomtricos tridimensionales, imgenes, colores, etc. Algunos de ellos tienen caractersticas variables que pueden definirse mediante campos (fields ) los cuales funcionan como parmetros. Campos.- pueden ser univaluados (con un solo valor) o multivaluados, cuando se necesita una lista de valores. Eventos.- son mensajes que circulan entre nodos y permiten la variacin de parmetros de un objeto durante la navegacin en el entorno virtual. Los eventos pueden ser de entrada (si aceptan eventos), de salida (si envan eventos) o de entrada / salida.
En la Tabla 2.1 se muestran las unidades convencionales empleadas en VRML aunque estas son arbitrarias. Parmetro Distancias lineales ngulo Tiempo Color Unidad Metros Radianes Segundos RGB (Rojo, Verde y Azul)
Tabla 2.1: Unidades convencionales usadas en VRML. Para definir un mundo virtual tridimensional en VRML se asumen tres ejes de coordenadas eje x, eje y y eje z que representan cada una de las tres dimensiones (Figura 2.2).
y
x z
Figura 2.2: Ejes de coordenadas en VRML. Cada objeto en el mundo virtual es desarrollado bajo un sistema de ejes local, por lo que para colocarlo dentro del mundo virtual, y en una posicin diferente al origen ser necesario aplicar una transformacin para situarlo en el lugar correspondiente. Existen en VRML algunas primitivas que definen una serie de objetos simples. Para poder visualizarlas, hay que usar un nodo Shape, el cual presenta dos campos geometry y appearance. Las primitivas para el campo geometry son: Box { size x y z } para dibujar un cubo de dimensiones x, y y z para cada uno de los ejes coordenados.
17
Ambientes Virtuales
Sphere { radius r } para dibujar una esfera con radio r. Cone { bottomRadius r height h } para dibujar un cono con una circunferencia en la base de radio r y altura h. Cylinder { radius r height h } para dibujar un cilindro con una circunferencia de radio r y altura h.
Las primitivas VRML anteriores definen la geometra de los objetos bsicos. Tambin es posible definir un color o textura. La apariencia de una primitiva se establece por medio del campo appearance del nodo Shape. Algunas primitivas de este nodo son: Material.- para definir un material de la primitiva como color y textura. diffuseColor R G B.- para establecer el color del material empleado. Se emplea el formato de color RGB (R para el r ojo, G para el v erde y B para el a zul). Se tiene que indicar el valor de cada uno de los parmetros RGB, que representan la intensidad de cada uno de los colores bsicos. En donde cada parmetro vara en el rango de [0,1]. En las Tablas 2.2 y 2.3 es posible observar como se combinan estos parmetros para proporcionar mltiples colores y texturas.
Color RGB 1 1 1 1 1 0 0 1 1 0 1 0 1 0 1 1 0 0 0 0 1
Tabla 2.2: Colores bsicos en VRML. Descripcin Dorado Aluminio Cobre Prpura Rojo Azul AmbientColor 0.57 0.40 0.00 0.30 0.30 0.35 0.33 0.26 0.23 0.25 0.17 0.19 0.25 0.15 0.15 0.10 0.11 0.79 DiffuseColor 0.22 0.15 0.00 0.30 0.30 0.50 0.50 0.11 0.00 0.10 0.03 0.22 0.27 0.00 0.00 0.30 0.30 0.71 SpecularColor 0.71 0.70 0.56 0.70 0.70 0.80 0.95 0.73 0.00 0.64 0.00 0.98 0.61 0.13 0.18 0.83 0.83 0.83 shininess 0.16 0.09 0.93 0.08 0.12 0.12
Tabla 2.3: Colores metlicos con otros campos de VRML. 2.3 Transformaciones en VRML Las transformaciones en VRML se emplean para situar, escalar y orientar los objetos dentro del mundo virtual. Las transformaciones bsicas son: translacin, orientacin y escala. La traslacin se define con un nodo translation X Y Z, que define el desplazamiento del objeto en cada una de las coordenadas. Al nodo translation le sigue un nodo children el cual contiene la lista de objetos que sern afectados por est transformacin definida por el nodo Transform. Por ejemplo, en el siguiente programa (Programa 2.2 y Figura 2.3), se muestra una esfera en el centro del mundo virtual y otra desplazada 10 unidades en los ejes X y Z, respecto a la primera.
18
Ambientes Virtuales
#VRML V2.0 utf8 Shape { # Esfera de referencia en el centro geometry Sphere{ radius 2 } appearance Appearance{ material Material {diffuseColor 1 0 0} } } Transform { translation 10 0 10 # Desplazamiento en X y Z children [ # Objetos a desplazar Shape { geometry Sphere{ radius 2 } appearance Appearance{ material Material {diffuseColor 1 1 0 } } } ] } Programa 2.2: Nodo translation.
Figura 2.3: Nodo translation. La rotacin se define con el nodo rotation X Y Z , en donde X Y y Z definen el vector en el espacio tridimensional de un objeto, o la orientacin del eje de rotacin, y es el ngulo de rotacin en radianes alrededor del eje definido anteriormente. Se emplea un nodo children que contiene los objetos que sern afectados por la rotacin. Un ejemplo de la forma en que son empleados ambos nodos se tiene en el Programa 2.3 y la Figura 2.4, donde se tiene una caja en el origen y dentro de sta, otra caja con una rotacin en el eje Y de 45 (0.7854 rad). 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. #VRML V2.0 utf8 Shape { # Caja de referencia en el Centro geometry Box{ size 4 2 4 } # Las dimensiones son: X Y y Z appearance Appearance{ material Material {diffuseColor 1 1 0} } } Transform{ rotation 0 1 0 .7854 # Eje y ngulo de rotacin children[ Shape{ # Contiene los objetos a transformar geometry Box {size 2 4 2 } appearance Appearance { material Material {diffuseColor 0 0 1} } } ] } Programa 2.3: Nodo rotation.
19
Ambientes Virtuales
Figura 2.4: Nodo rotation. El escalamiento de un objeto es de dos tipos: escalado uniforme y escalado no uniforme. El primero cambia el tamao del objeto en todas las direcciones, as los objetos mantienen sus proporciones. El escalado no uniforme cambia el tamao de un objeto solo en una direccin, deformando al objeto. Un ejemplo de un escalado no uniforme se muestra en el Programa 2.4 y la Figura 2.5. Donde se tiene una caja con dimensiones unitarias, escalada en el eje X por 2 y en el eje Z por 3. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. #VRML V2.0 utf8 Transform { scale 2 1 3 children [ Shape
# Define la escala en X Y y Z { geometry Box{ size 1 1 1 } appearance Appearance{ material Material {diffuseColor 0 1 0 } }
Figura 2.5: Nodo scale. 2.4 Puntos de vista con VRML VRML permite definir diversos puntos de vista. Los usuarios pueden utilizarlos para moverse a partes importantes dentro del mundo virtual. Esta operacin se realiza mediante el nodo Viewpoint. El nodo Viewpoint se utiliza de la forma: Viewpoint { position X1 Y1 Z1 orientation X2 Y2 Z2 description "Nombre" }
20
Ambientes Virtuales
Donde X1, Y 1 y Z1 son el vector de la posicin donde se sita el punto de vista, luego X2, Y2 y Z2 definen el eje de rotacin del punto de vista en un ngulo , y nombre designa una etiqueta para identificar el punto de vista, este aparece en el navegador. Cuando se ingresa al navegador, el punto de vista por omisin es: Viewpoint { position 0 0 10 orientation 0 0 1 0 description "Punto de Vista Inicial" } Tambin es posible definir un ngulo de visin , para que slo sea visible una determinada rea, se emplea el nodo fieldOfView de la forma: Viewpoint { FieldOfView description "Nombre" } # es el ngulo de abertura
2.5 Objetos, lneas y puntos tridimensionales en VRML Las primitivas bsicas permiten modelar solo unas cuantas formas geomtricas, sin embargo VRML permite definir objetos, lneas y puntos a travs de los nodos: IndexedFaceSet, IndexedLineSet y PointSet. El modelado de objetos mediante e nodo IndexedFaceSet, se realiza definiendo los l vrtices y caras del objeto a travs de arreglos de coordenadas de puntos y caras, de la forma siguiente: geometry IndexedFaceSet{ coord Coordinate{ # Lista de vrtices point [ x0 y0 z0, x1 y1 z1, ......... x n-1 y n-1 zn-1, xn y n zn ] } coordIndex [ # Lista de caras 0,1,2,...,-1, 3,4,5,...,-1, ............, n-2,n-1,n,-1, ] } Se debe tener en cuenta las reglas siguientes: Los vrtices tienen que ser consecutivos, siguiendo el permetro de la cara. Los vrtices se colocan en un orden contrario al de la direccin de las manecillas del reloj, pues la iluminacin se refleja en un vector normal, hacia fuera de sta cara. Mirando desde el lado contrario, la cara es transparente. El ltimo vrtice de cada cara se enlaza con el primero, para formar un permetro cerrado.
21
Ambientes Virtuales
Por ejemplo vamos a definir un tringulo issceles en base a sus vrtices, primero definimos los puntos de los vrtices y luego las caras (Figura 2.6). -z P0 -1 0 P1 0.866 -z En y=0 Figura 2.6: Definicin de los vrtices de un tringulo issceles con VRML. Con los puntos anteriores, no es difcil, definir los vrtices y posteriormente las caras, en el Programa 2.5 y en la Figura 2.7 se muestra el uso del nodo IndexedFaceSet. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. # Un tringulo issceles definido por caras y vrtices #VRML V2.0 utf8 Shape { geometry IndexedFaceSet{ coord Coordinate{ point [ 0 0 -.866, # Punto P0 -1 0 .866, # Punto P1 1 0 .866 # Punto P2 ] } coordIndex [ 0,1,2,-1 ] } } Programa 2.5: Nodo IndexedFaceSet. El nodo IndexedLineSet se emplea para definir objetos mediante sus aristas para crear una figura de alambre, es decir, los puntos se enlazan mediante lneas. El nodo IndexedLineSet se define de la forma: geometry IndexedLineSet { coord Coordinate{ # Lista de vrtices point [ x0 y0 z0, x1 y1 z1, ......... ......... x n-1 y n-1 zn-1, xn yn zn ] } P2 -0.866
-x
22
Ambientes Virtuales
# Lista de puntos enlazados por lneas coordIndex [ 0,1,2,...,-1, 3,4,5,...,-1, ............. n-2,n-1,n,-1, ] } De la Figura 2.6, podemos establecer los puntos y las lneas que se desea aparezcan en el mundo virtual, como se observa en el Programa 2.6 y en la Figura 2.7.
# Un tringulo issceles definido por vrtices y lneas #VRML V2.0 utf8 Shape { geometry IndexedLineSet { coord Coordinate{ point [ 0 -1 1 ] }
coordIndex [ 0,1,2,0,-1 ] } }
Programa 2.6: Nodo IndexedLineSet. El nodo PointSet se emplea para definir puntos aislados en el espacio, que conforman un solo objeto. Por ejemplo, de la Figura 2.6, es posible determinar los puntos necesarios para definir un triangulo, como se muestra en el Programa 2.7 y en la Figura 2.7.
# Un tringulo issceles definido por puntos #VRML V2.0 utf8 Shape { geometry PointSet { coord Coordinate{ point [ 0 0 -.866, # Punto P0 -1 0 .866, # Punto P1 1 0 .866 # Punto P2 ] } } } Programa 2.7: Nodo PointSet.
23
Ambientes Virtuales
Figura 2.7: Tringulo issceles definido como: un slido, con lneas y con puntos. 2.6 Texto en VRML En muchas ocasiones es necesaria la presentacin de texto dentro de los ambientes virtuales, VRML provee una forma de agregar texto como si se tratase de objetos, a travs de la primitiva Text del campo geometry, en donde tambin es posible definir otros parmetros de la letra como son el tipo, estilo, tamao, etc. (Programa 2.8 y Figura 2.8). 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. # Texto VRML en un ambiente virtual #VRML V2.0 utf8 Shape { geometry Text { # Inserta Texto string [ "VRML" ] # Texto a insertar: VRML fontStyle FontStyle { # Define parmetros de la letra family "ARIAL" # Tipo de letra: ARIAL style "BOLD" # Estilo: negrita size 1.5 # Define el tamao: 1.5 Unidades } } } Programa 2.8: Cdigo VRML para insertar texto.
VRML
Figura 2.8: Texto en el espacio virtual con VRML. 2.7 Integracin VRML y Java Indudablemente VRML es una poderosa herramienta de visualizacin, sin embargo carece del poder y versatilidad de clculo que proporcionan los lenguajes de propsito general. Para realizar la actualizacin del espacio de trabajo de un robot industrial con VRML, es necesario crear un nuevo programa VRML para cada caso especfico, lo cual resulta engorroso. Para resolver este problema es posible hacer que VRML, trabaje conjuntamente con un lenguaje de propsito general como Java, para que ste cree los objetos que cambian de posicin, orientacin y tamao dentro de un mundo virtual fijo que puede ser por ejemplo el mismo robot (el cual permanece con su misma forma). El lenguaje Java es un lenguaje de orientado a objetos, dinmico (que cambia en lenguaje prohbe operaciones con datos que comprobacin esttica de tipos (no sucede al varios hilos de control) [Comer 97]. a nivel de propsito general ( lto parecido a C++), tiempo de ejecucin), con tipos de datos duros (el no sean del tipo al que estn destinados), tiene momento de ejecucin) y es concurrente (permite
Java fue desarrollado por Sun Microsystems en 1995 para la creacin de pginas web con un contenido dinmico. Los sistemas Java consisten en el entorno, el l nguaje, la interfaz de e programacin de aplicaciones (API, Applications Programming Interface) de Java y las bibliotecas
Araujo Daz David
24
Ambientes Virtuales
de clases [Deitel 98]. Las clases son piezas predefinidas que se agrupan en categoras llamadas paquetes. Java esta disponible de forma gratuita a travs de Internet en el sitio: www.javasoft.com. En Java un documento dinmico se llama applet. Un programador crea un applet escribiendo un programa fuente en el lenguaje de programacin Java, luego el compilador de Java traduce est cdigo en una representacin de cdigo de bytes (bytecode), el cual se carga en un servidor en la web. Cuando el visualizador solicita una URL (Uniform Resource Locators: para localizar datos en Internet ) relacionada con la applet, el servidor la ejecuta. El intrprete suministra el ambiente de ejecucin de Java y el acceso a la pantalla del usuario y a la Internet. Java y VRML pueden interactuar, uniendo una poderosa herramienta de visualizacin (VRML) con las ventajas de un lenguaje de programacin como Java. Para visualizar un mundo virtual en VRML, es necesario tener instalado en el sistema, un navegador de Internet capaz de aceptar plug-in y un visualizador de VRML. Para ejecutar programas en Java tambin es necesario instalar el intrprete correspondiente, un visualizador que ejecuta Java necesita tener un intrprete HTML (HyperText Transfer Protocol, es un protocolo el cual constituye la base de Internet) y un intrprete para aplicaciones elementales. Para lograr la integracin de Java con VRML, es necesario utilizar la External Authoring Interface (EAI), la cual permite la comunicacin y el paso de parmetros entre mundos virtuales VRML y los programas escritos en Java. Para poder compilar un programa en Java que utilice clases VRML, es necesario copiar el paquete de clases VRML de la EAI, como librera externa de Java. Por ejemplo para el visor de VRML Cosmo Player 2.1, el archivo que contiene los paquetes de clases se llama npcosmop21.jar y esta ubicado en: C:\Archivos de programa\CosmoSoftware\CosmoPlayer\npcosmop21.jar El archivo npcosmop21.jar tiene que ser copiado al directorio C:\jdk1.3\jre\lib\ext\, s Java se encuentra instalado en C:\jdk1.3. de Java
Para realizar un programa en Java el cual permita la interaccin con un ambiente virtual en VRML, son necesarios al menos los siguientes archivos de programa: el programa compilado en Java, un intrprete en HTML y un ambiente virtual en VRML. Por ejemplo, veamos el cdigo en Java de un programa capaz de agregar y remover objetos en un mundo virtual VRML (una esfera en este caso). En la primera parte se importan las clases de Java y VRML, luego se definen variables y se establece la ventana de controles y dialogo con el usuario, despus se definen las variables para interactuar con el navegador y visualizador de VRML (donde se tiene tambin el cdigo VRML que ser insertado en el mundo virtual) y al final se tiene que mediante eventos del ratn, se introducen las instrucciones de agregado y borrado de objetos en el mundo virtual (Programa 2.9). 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. import java.awt.*; import java.applet.*; import vrml.external.field.*; import vrml.external.Node; import vrml.external.Browser; import vrml.external.exception.*; public class JavaVRML extends Applet { TextArea output = null; boolean error = false; Browser browser; /* Navegador a emplear */ Node root; /* Mundo virtual que recibir los objetos */ Programa 2.9: Programa JavaVRML.java (Parte 1/2).
25
Ambientes Virtuales
12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66.
Node[] shape; /* Nodo para VRML */ /* Eventos para agregar y remover un nodo en VRML */ EventInMFNode addChildren; /* Define un evento de entrada a VRML */ EventInMFNode removeChildren;/* Define un evento de entrada a VRML */ /* Inicia la ventana de controles y dialogo */ public void init() { add(new Button("Agregar Esfera")); add(new Button("Remover Esfera")); output = new TextArea(5, 40); add(output); } public void start() { /* Inicia la rutina en el navegador */ /* Indica el navegador en donde se despliega la informacin */ browser = (Browser) vrml.external.Browser.getBrowser(this); try { /* Nombre del mundo donde se realizarn las operaciones */ root = browser.getNode("ROOT"); addChildren = (EventInMFNode) root.getEventIn("addChildren"); removeChildren = (EventInMFNode) root.getEventIn("removeChildren"); /* Cdigo VRML a insertar en el mundo virtual */ shape = browser.createVrmlFromString("Shape {\n" + " appearance Appearance {\n" + " material Material {\n" + " diffuseColor 0.2 0.2 0.8\n" + " }\n" + " }\n" + " geometry Sphere {}\n" + }\n); } catch (InvalidNodeException e) { error = true; } catch (InvalidEventInException e) { error = true; } catch (InvalidVrmlException e) { error = true; } } /* Eventos de los botones */ public boolean action(Event event, Object what) { if (event.target instanceof Button) { Button b = (Button) event.target; if (b.getLabel() == "Agregar Esfera") { output.appendText("Agregando Esfera...\n"); addChildren.setValue(shape); } else if (b.getLabel() == "Remover Esfera") { output.appendText("Romoviendo esfera...\n"); removeChildren.setValue(shape); } } return true; } } Programa 2.9: Programa JavaVRML.java (Parte 2/2).
26
Ambientes Virtuales
Existen diversas operaciones que es posible realizar al insertar o remover objetos en un mundo virtual, como son agregar objetos, quitar objetos, cambiar la posicin de los objetos, simular movimiento y llegar a la animacin de los objetos. Para agregar un objeto desde Java para un mundo virtual en VRML se emplea el nodo addChildren.setValue()cuyo empleo se observa en el Programa 2.9 lnea 57, en donde se agrega el objeto los objetos contenidos en shape al mundo virtual. De igual forma es posible quitar objetos con removeChildren.setValue()del Programa 2.9 lnea 61, en donde se remueven los objetos que se encuentran en shape. Las operaciones de cambiar la posicin de los objetos, simular movimiento y llegar a la animacin de los objetos se realizan mediante una secuencia de operaciones addChildren.setValue() y removeChildren.setValue() usadas de forma alternada. Java incluye un compilador javac, el cual produce un cdigo de bytes. La entrada es un archivo fuente en Java y produce archivos *.class de las clases publicas del programa en Java. Para el Programa 2.9 se tiene la instruccin javac JavaVRML y produce la salida JavaVRML.class. Una llamada a un applet se realiza a travs de un navegador de Internet por medio de un programa en HTML, para mostrar el mundo virtual en VRML y ejecutar el applet de Java. La primera parte del Programa 2.10, muestra el espacio designado para mostrar el espacio virtual de VRML y la segunda establece el espacio de trabajo del applet de Java. 1. 2. 3. 4. 5. 6. 7. <html> <center> <embed src="root.wrl" border=0 height="250" width="600"> <center> <applet code="JavaVRML.class" width="600" height="200" mayscript> </applet> </html> Programa 2.10: Cdigo HTML para mostrar un mundo VRML y ejecutar un applet de Java. El programa HTML, realiza una llamada a VRML y a un cdigo de Java. El mundo virtual en VRML, puede contener cualquier cantidad de objetos o puede encontrarse vaco, solo es necesario que permita insertar el cdigo generado desde Java. En el Programa 2.11, se muestra un ejemplo en donde es posible insertar un mundo virtual de cualquier tipo (en la lnea: DEF ROOT Group {}), por simplicidad se tiene un mundo vaco. 1. 2. 3. 4. #VRML V2.0 utf8 #Define un punto de vista DEF Camera Viewpoint {position 0 0 7 } DEF ROOT Group {} # Aqu inserta Java su cdigo VRML que genera Programa 2.11: Programa root.wrl del mundo virtual vaco.
27
Ambientes Virtuales
Resumen Los ambientes virtuales encuentran mltiples aplicaciones en reas tales como aviacin, arquitectura, medicina, etc. Se incluyen algunos otros desarrollos como la realidad virtual telepresencia, teleoperacin, la manipulacin directa remota, etc. Los ambientes virtuales dependern de la integracin adecuada de mltiples tecnologas como: pantallas, sonido, retroalimentacin de fuerza, movimiento, calor, olor, etc. La realidad virtual se puede subdividir en cooperativa y competitiva. La cooperativa se presenta cuando dos o ms mquinas se enlazan para realizar una tarea conjunta, mientras que la competitiva se da cuando se desea alcanzar una meta en el menor tiempo posible. VRML es un lenguaje de modelacin para realidad virtual, con el que es posible realizar reconstruccin de objetos en tres dimensiones usando un navegador de Internet. Es un lenguaje sencillo, por lo que su cdigo es regularmente pequeo, lo que permite que los programas escritos en este lenguaje viajen a travs de Internet a gran velocidad. Presenta algunas primitivas bsicas con las que es posible dibujar formas geomtricas, como cubos, cilindros, esferas, conos, objetos, lneas y puntos tridimensionales. Tambin es posible realizar transformaciones de escala, posicin y orientacin de los objetos o un conjunto de ellos. VRML permite la interaccin con otros lenguajes de programacin como Java, a travs de la External Authoring Interface. Por lo que amplia sus posibilidades de uso aadiendo el poder de un lenguaje de programacin, a la visualizacin y reconstruccin tridimensional.
28
Visin Artificial
En este captulo se presentan algunos conceptos bsicos de visin artificial. Se describen las tareas necesarias para llevarla a cabo (procesamiento de imgenes y reconocimiento), y se detallan algunos de los mtodos empleados en visin artificial para obtener alguna descripcin del mundo que pueda ser interpretada por una mquina. Se muestra una forma de realizar el reconocimiento ptico de caracteres u OCR por sus siglas en ingls. Luego se realiza una descripcin de los mtodos para la calibracin de una cmara, para que el modelo de la imagen coincida con el que una mquina un robot reconoce. 3.1 Visin artificial Existe una gran variedad de definiciones de lo que es la visin artificial [Escalera 01]. Las que mejor la describen en nuestra opinin son las siguientes: La visin artificial es un proceso de tratamiento de imgenes que permite obtener la descripcin simblica del mundo real a partir de imgenes. La visin artificial es la ciencia que estudia, utilizando computadoras, los procesos de obtencin, caracterizacin e interpretacin de la informacin procedentes de imgenes tomadas de un mundo tridimensional.
Un sistema de visin artificial consiste en una serie de tareas que se muestran en la Figura 3.1 [Schildt 87, Jackson 85]. La adquisicin de imgenes es el conjunto de operaciones que se efectan para transformar la informacin luminosa de una escena en una seal digital. Se deben de tener en
29
Visin Artificial
cuenta los factores siguientes: iluminacin, tipo de cmaras empleadas y el mtodo de digitalizacin usado.
Imagen de entrada
Preprocesamiento
Segmentacin
Figura 3.1: Esquema general de procesamiento de imgenes en visin artificial. El preprocesamiento realiza una mejora de la imagen, modificando por ejemplo: el nivel de gris, el contraste, eliminacin de ruido, realce de caractersticas, etc. La segmentacin divide a la escena en objetos por mtodos de discontinuidad, similitud, etc. La clasificacin extrae y organiza las caractersticas de los objetos para su reconocimiento. El reconocimiento es la identificacin de cada objeto en la escena mediante una etiqueta y la modelacin puede ser solo el etiquetado o emplear algunos modelos geomtricos como los generados a travs de VRML para modelacin y reconstruccin tridimensional. 3.2 Adquisicin de la imagen La adquisicin de imgenes se divide en tres tareas: la formacin de imgenes, la captura de imgenes y la digitalizacin de las mismas. La formacin de una imagen resulta de proyectar la informacin visual contenida o reflejada por los objetos que constituyen un medio ambiente sobre un plano bidimensional [Ibarra 98]. Las imgenes pueden ser producidas y captadas de forma ptica. Sin embargo, es posible obtener imgenes del mundo a partir de cualquier tipo de estimulo fsico como: ultrasonido, rayos infrarrojos, luz ultravioleta, rayos X, luz lser, etc. Podemos considerar a una imagen como un arreglo bidimensional de muestras de energa. En la formacin de una imagen tambin juegan un papel importante los sistemas de iluminacin. Una iluminacin adecuada permite resaltar caractersticas importantes de los objetos, ver objetos transparentes, aumentar el contraste entre el fondo y el objeto, etc. Una iluminacin adecuada puede simplificar considerablemente los algoritmos de deteccin y extraccin de caractersticas de los objetos en la escena [Escalera 01]. Los puntos que hay que tomar en cuenta para el sistema de iluminacin son: Precisin del sistema.- tiene que ver con el tamao y la precisin de las caractersticas que se desean resaltar: superficies lisas, rugosas, reflejos direccionales, color, etc. Tipo de escena.- se debe de considerar el tamao de los objetos en la escena. Profundidad de enfoque. - es la distancia entre la cmara y el objeto. Consideraciones fsicas.- se consideran las limitaciones trmicas de los objetos, el espacio para el sistema de iluminacin, etc.
Se tienen adems una gran diversidad de fuentes de luz [Viakon 00], como son: Incandescente.- es una iluminacin de bajo costo, larga vida y ajustable por medios simples, sin embargo genera mucho calor, puede generar parpadeo, etc. Se emplea en sistemas donde se requiere iluminacin frontal.
30
Visin Artificial
Fluorescente.- son de alta eficiencia y mnima disipacin trmica, pueden tener diferentes colores, tamaos y formas, emiten luz difusa y trabajan a altas frecuencias, pero no operan a bajas temperaturas y su vida til es menor que las incandescentes. Se utilizan para iluminar escenas grandes y objetos reflectivos. Diodos Emisores de Luz (LED).- la luz que emiten es monocromtica [Willians 89], tienen una vida til larga y presentan un bajo consumo de energa. Sin embargo, presentan una emisin de baja intensidad. Se utilizan para tomas en contra luz y deteccin de objetos pequeos. Lser. - es una fuente de luz altamente direccional, por lo que permite la creacin de diferentes patrones de luz, pero su costo es alto. Encuentra mltiples aplicaciones en medidas de objetos como: curvas tridimensionales, profundidad, espesor, etc. Halgenas.- tienen gran intensidad por un tiempo breve. Permiten el estudio de objetos en movimiento. Por otro lado necesitan fuentes especiales de iluminacin y pierden su intensidad en un tiempo corto.
Tambin existe una gran variedad de tcnicas de iluminacin, algunas de ellas se muestran a continuacin: Iluminacin direccional.- es cuando la luz se dirige en una sola direccin (Figura 3.2). Se pueden tener efectos como el de brillo intenso, campo oscuro, iluminacin perpendicular, iluminacin oblicua, iluminacin colimada, etc.
Fuente de Luz Cmara a) Brillo Intenso Escena Objeto Fuente de Luz Cmara b) Campo oscuro Escena Objeto
Figura 3.2: Iluminacin direccional. Iluminacin difusa.- se trata de hacer l egar la luz al objeto en todas las direcciones (Figura 3.3). Por ejemplo las fuentes que se pueden utilizar son: anillo de luz, difusores esfricos, anillos de fibra ptica y anillos de diodos LED.
Cmara Fuente de Luz Objeto Escena
Figura 3.3: Iluminacin difusa mediante un anillo de luz. Iluminacin a contraluz.- se tiene cuando los objetos se colocan frente a la cmara y la fuente de luz se encuentra atrs de los objetos (Figura 3.4).
Fuente de Luz Objeto Cmara Escena
31
Visin Artificial
Iluminacin estructurada. - se basa en la iluminacin con puntos, lneas o rejillas de la escena a ser procesada (ver Figura 3.5 y el Apndice B: Iluminacin Estructurada). Hace posible que el mundo observado sea bidimensional, igual que la imagen; por lo que no se pierde informacin, ya que a cada punto en el mundo real le corresponde un punto en la imagen captada.
Fuente de Luz Lser Cmara a d Escena
d a
Figura 3.5: Iluminacin estructurada. Iluminacin coaxial.- se presenta cuando la iluminacin va en la misma direccin que la luz que entra por la cmara reflejada por los objetos. Produce imgenes libres de sombras. Se emplea para iluminar agujeros interiores y/o evitar reflejos. Luz polarizada.- un rayo luminoso normal gira perpendicularmente a la direccin en la que se propaga. Cuando se elimina el giro, la luz oscila en una sola direccin, entonces se tiene luz polarizada. Algunos materiales transparentes muestran la capacidad de desviar estos rayos, por lo que pueden ser detectados iluminndolos de sta forma, pues al ser iluminados con luz normal, son transparentes.
La captura de imgenes consiste en transformar una imagen ptica en una seal elctrica que represente la informacin visual de la escena. Bsicamente existen tres tipos de captores de imagen dependiendo del tipo de propiedad de los materiales que se modifique al incidir la luz sobre ellos: fotovoltaicos, fotoemisivos y fotoconductiv Los dispositivos relacionados con cada unos de os. estos transductores se describen en detalle en el Apndice A: Sistemas de Adquisicin de Imgenes. La digitalizacin de imgenes es el proceso de cuantificacin de una imagen representndola en forma digital [Diccionario 90]. Consiste en traducir a un formato numrico una imagen para que pueda ser procesada por el sistema de visin. La digitalizacin de una imagen se puede hacer tomando muestras en el espacio de forma continua por lo que a este proceso se le conoce como muestreo espacial (Figura 3.6), entre mayor sea en nmero de muestras mejor calidad tendr la imagen resultante. Cada muestra es codificada de acuerdo a la cantidad de bits (q) que proporcione un convertidor analgico/digital, cada una de estas muestras es conocida como pxel (elemento de imagen), por lo que el nmero de niveles de q brillo ser L=2 (Figura 3.7). Si q=1, la imagen solo tiene dos niveles de brillo, por lo que se llama imagen binaria. Una imagen ser mejor, conforme aumente su nmero de bits, sin embargo la cantidad de memoria empleada y el tiempo para procesarla se incrementarn. Por lo que se deber evaluar la calidad de la informacin que requiere el sistema de visin para que sea lo suficientemente precisa para llevar a cabo el proceso, sin comprometer un excesivo costo en cmputo y de espacio utilizado para su almacenamiento. En las Figuras 3.6 y 3.7 se observan los resultados al aplicar diferentes muestreos espaciales y niveles de brillo. Se observa que existen algunos pxeles los cuales se relacionan con
32
Visin Artificial
otros al compartir caractersticas comunes (por ejemplo el brillo). De las relaciones entre pxeles surgen conceptos como los de conectividad y vecindad.
256x256 pxeles
64x64 pxeles
15x15 pxeles
16 niveles de gris
Figura 3.7: Diferentes niveles de brillo para una imagen. La conectividad describe como se enlazan los pxeles en una imagen, es decir, como se relacionan entre s un conjunto de estos para determinar si son o no vecinos [Foley 96]. Dependiendo de cmo se consideren los pxeles como vecinos de los que se encuentran a su alrededor existen diferentes formas de conectividad: La conectividad 4-conectado para un pxel (x,y) es cuando se considera como vecinos todos aquellos pxeles que comparten un borde (Figura 3.8a), es decir, los cuatro pxeles: (x -1,y), (x+1,y), (x,y-1) y (x,y+1). La conectividad 8-conectado para un pxel (x,y) es cuando se considera como vecinos todos aquellos pxeles que comparten un borde o una esquina (Figura 3.8b), es decir, los ocho pxeles: (x-1,y), (x+1,y), (x,y-1), (x,y+1), (x-1,y-1), (x+1,y-1), (x-1,y+1) y (x+1,y+1). La conectividad 6-conectado izquierdo para un pxel (x,y) es cuando se considera como vecinos todos aquellos pxeles que comparten un borde o una esquina en la direccin Noroeste y Sudeste (Figura 3.8c), es decir, los seis pxeles: (x,y-1), (x-1,y-1), (x-1,y), (x+1,y), (x+1,y+1) y (x,y+1). La conectividad 6-conectado derecho para un pxel (x,y) es cuando se considera como vecinos todos aquellos pxeles que comparten un borde o una esquina en la direccin Noreste y Sudoeste (Figura 3.8d), es decir, los seis pxeles: (x,y-1), (x+1,y-1), (x+1,y), (x-1,y), (x-1,y+1) y (x,y+1).
33
Visin Artificial
(x-1,y-1) (x,y-1) (x+1,y-1) (x-1,y) (x,y) (x+1,y) (x-1,y+1) (x,y+1) (x+1,y+1) a) 4-Conectado (x-1,y-1) (x,y-1) (x+1,y-1) (x-1,y) (x,y) (x+1,y) (x-1,y+1) (x,y+1) (x+1,y+1) c) 6-Conectado Izquierdo
(x-1,y-1) (x,y-1) (x+1,y-1) (x-1,y) (x,y) (x+1,y) (x-1,y+1) (x,y+1) (x+1,y+1) d) 6-Conectado Derecho
Figura 3.8: Conectividad entre pxeles. En una imagen un conjunto de pxeles conectados de alguna manera, forman un objeto. Por lo que un objeto se encuentra formado por pxeles que en conjunto forman una curva cerrada, la cual se encuentra separada del resto de la imagen. El teorema de Jordan establece que para una curva cerrada simple, se puede segmentar en dos regiones, disjuntas, es decir, no conexas, dividiendo a la imagen en dos partes: la interior y la exterior (Figura 3.9). Exterior
Curva Cerrada
Interior
Figura 3.9: Teorema de Jordan. Un pxel puede ser considerado 4-conectado u 8-conectado cuando tiene las mismas propiedades que alguno de los cuatro u ocho vecinos ms prximos. Pero se puede ver que se llegar a una paradoja cuando queremos aplicar alguna de los dos tipos de conexin 4-conectado u 8-conectado. Este caso es conocido como la paradoja de conectividad. Si suponemos un contorno 4-conectado como el de la Figura 3.10, vemos que los segmentos 1, 2, 3 y 4 seran clasificados como disjuntos. Esto no sucede si aplicamos 8conectado. Sin embargo, tambin sern conectados los pxeles del a gujero ( xel B ) y los del p exterior del anillo (pxel A), esta caracterstica es la que se conoce como paradoja de conectividad.
2 2
1 1 A B 3 3 4 4
Figura 3.10: Paradoja de conectividad. Una solucin a la paradoja de conectividad suele ser considerar 8-conectado para el objeto (borde) y 4-conectado para el fondo. Otra alternativa es usar 6-conectado.
34
Visin Artificial
3.3 Preprocesamiento de una imagen Una vez que una imagen a sido digitalizada, est puede ser almacenada en la memoria de la computadora, pero para poder ser empleada por un programa de reconocimiento se debe de llevar a cabo un preprocesamiento de la imagen. El preprocesamiento comprende aquellos algoritmos cuya finalidad es conseguir una mejora en la apariencia de la imagen original [Escalera 01]. Esa mejora consiste en resaltar determinadas caractersticas de la imagen o en su defecto eliminar aquellas que la afectan para los procesos posteriores. Bsicamente existen dos grupos de algoritmos, segn se trabaje en el dominio del espacio o de la frecuencia. En el primero se modifican directamente los pxeles de la imagen. Para el caso de la frecuencia, se emplean mtodos basados en la transformada de Fourier. El preprocesamiento de una imagen trata que esta sea lo ms ideal posible, en cuanto a dos aspectos: 1.- Iluminacin uniforme, este punto implica que la escena se encuentre con una iluminacin uniforme, o que en su defecto cada objeto, mantenga una iluminacin uniforme en su superficie. 2.- Que la ganancia entre la luz de entrada y la imagen resultante sea lineal, de esta forma la imagen obtenida no deber de deformarse por efecto del preprocesamiento de la imagen, con el fin de que los objetos presentes en la imagen no se pierdan. Algunos de los mtodos empleados para el preprocesamiento de imgenes en el dominio del espacio son: la modificacin del contraste, la modificacin del histograma, etc. 3.4 Extraccin de caracterstica s para la segmentacin Cuando una imagen ha sido procesada se encuentra en disposicin de detectar los objetos presentes en ella. Se buscan entonces las caractersticas que definen a cada objeto. Se trata de detectar contornos, esquinas, etc. Existe una gran diversidad de mtodos para extraer contornos de una imagen. La mayora de ellos utilizan mscaras, las cuales son desplazadas sobre toda la imagen para obtener el contorno, encontrar esquinas, etc. Las mscaras se pueden encontrar mediante el clculo de la derivada de la imagen. Existe una gran diversidad de mtodos para la deteccin de bordes como el mtodo de gradiente, de aproximacin de Roberts, de aproximacin de Prewitt, de aproximacin de Sobel, etc., todos empleados en imgenes digitales o discretas. Antes de entrar a la descripcin de los mtodos de extraccin de contornos para imgenes discretas, realizaremos una breve descripcin del proceso empleado en imgenes analgicas para la extraccin de contornos. 3.4.1 Identificacin de contornos en una imagen analgica mediante la derivada La extraccin de contornos de una imagen ( eal) analgica, es posible mediante el s clculo de la derivada de cada una de las lneas que conforman dicha imagen. Una imagen analgica se encuentra constituida por una serie de lneas, cada una de estas lneas puede ser tomada como una seal en funcin del tiempo, la derivada de est funcin nos identifica los cambios en la intensidad luminosa de la imagen, dichos cambios corresponden a los bordes de los objetos en la imagen. Un ejemplo de cmo se identifican los bordes en una imagen analgica, lo podemos observar en la Figura 3.11, en donde la imagen original ha sido dividida en cinco lneas, en cada una de las cuales se aplicar una derivada. Si se colocan los cambios en una nueva imagen de salida, se observa que el resultado obtenido son los contornos laterales del objeto de entrada, esto es debido a que la derivada se aplic solo en la direccin horizontal, por lo que si se requieren los bordes verticales, bastar aplicar la derivada sobre lneas verticales.
35
Visin Artificial
Imagen Original
Seal de imagen
I(t) 0 I(t) 0 I(t) 0 I(t) 0 I(t) 0 t t t t t I(t) 0 I(t) 0
Derivada
t t - I(t) 0 - I(t) 0 - I(t) 0 t t t
Resultado
Figura 3.11: Proceso de extraccin de contornos mediante derivada. 3.4.2 Extraccin de contornos de una imagen digital mediante derivada Para imgenes discretas, es posible emplear el mtodo de la derivada para identificar contornos. Una imagen discreta f(x,y), se encuentra formada por una serie de puntos (x,y), que se encuentran distribuidos en el espacio bidimensional, es decir, forman una matriz como la que se observa en la Figura 3.12. f(5,5) y1 y2 y3 y4 y5 x1 (1,1) (1,2) (1,3) (1,4) (1,5) x2 (2,1) (2,2) (2,3) (2,4) (2,5) x3 (3,1) (3,2) (3,3) (3,4) (3,5) x4 (4,1) (4,2) (4,3) (4,4) (4,5) x5 (5,1) (5,2) (5,3) (5,4) (5,5)
Figura 3.12: Imagen discreta. Para la deteccin de contornos en una imagen discreta, es necesario realizar una aproximacin del concepto de derivada para espacios discretos [Chapra 96, CVPR 97, Ibarra 98], esto se realiza a travs del gradiente de luminosidad de una imagen f(x,y) en el punto (x,y) definida de la forma: Gradiente de luminosidad = f(x,y) = [f(x,y)/ x, f(x,y)/ y] La magnitud del gradiente de luminosidad se obtiene de: Magnitud del gradiente de luminosidad = |f(x,y)| = {(f(x,y)/ x ) + (f(x,y)/ y) } Para simplificar el costo computacional que involucra el clculo, la Magnitud del gradiente de luminosidad se obtiene por la Ec. 3.1. |f(x,y)| = |f(x,y)/ x| + |f(x,y)/ y| ...(Ec. 3.1)
2 2
Por otro lado conocemos que la aproximacin de la derivada por la serie de Taylor para el punto xi est dada por: f(x i+1) = f(x i) + hf(x i) + h f(x i)/2 + h f(x i)/6 + h f(x i)/24 +......
2 3 4
36
Visin Artificial
Despejando el valor de la derivada tenemos la Ec. 3.2. f(x i ) = [f(x i+1) - f(x i )]/h hf(x i )/2 h f(x i )/6 h f(x i )/24 -......
2 3
...(Ec. 3.2)
1) Considerando solo el primer termino de la aproximacin de la derivada por la serie de Taylor, podemos hallar los valores aproximados para cada una de las derivadas parciales. De la Ec. 3.2 tenemos que: f(x,y)/ x = [f(x+1,y) f(x , y)]/h f(x,y)/ y = [f(x,y+1) f(x , y)]/h Como la distancia entre pxeles de una imagen es de un pxel, se considera h=1, para las ecuaciones anteriores se obtienen las Ecs. 3.3 y 3.4. f(x,y)/ x = f(x+1,y) f(x , y) f(x,y)/ y = f(x,y+1) f(x , y) Sustituyendo las Ecs. 3.3 y 3.4 en la Ec. 3.1 tenemos: |f(x,y)| = |f(x,y)/ x| + |f(x,y)/ y| = f(x+1,y) f(x , y) + f(x,y+1) f(x , y) | f(x,y)| = f(x+1,y) + f(x,y+1) 2*f(x, y) Siendo as, la mscara queda como (Figura 3.14 y Figura 3.15b): 2*(x,y) 1*(x,y+1) 1*(x+1,y) 0*(x+1,y+1) 2 1 1 0 ...(Ec. 3.3) ...(Ec. 3.4)
2) Considerando hasta el segundo termino de la aproximacin de la derivada por la serie de Taylor, podemos hallar los valores aproximados para cada una de las derivadas parciales. De la Ec. 3.2 tenemos que: f(x,y)/ x = [f(x+1,y) f(x , y)]/h hf(x,y)/2 f(x,y)/ y = [f(x,y+1) f(x , y)]/h hf(x,y)/2 Como la distancia entre pxeles de una imagen es de un pxel, se considera h=1, para las ecuaciones anteriores se obtienen las Ecs. 3.5 y 3.6. f(x,y)/ x = f(x+1,y) f(x , y) f(x,y)/2 f(x,y)/ y = f(x,y+1) f(x , y) f(x,y)/2 ...(Ec. 3.5) ...(Ec. 3.6)
Se conoce tambin que la aproximacin para la segunda derivada est dada por: f(xi) = [f(x i+2) 2f(x i+1) + f(x i)] / h = f(x i+2) 2f(x i+1) + f(x i) Aplicando las Ecs. 3.5 y 3.6, en la segunda derivada se obtienen las Ecs. 3.7 y 3.8. f(x,y)/ x = f(x+2,y) 2f(x+1,y) + f(x,y) 2 f(x,y)/ y = f(x,y+2) 2f(x,y+1) + f(x,y)
2 2
Sustituyendo las Ecs. 3.7 y 3.8 en las Ecs. 3. 5 y 3.6 obtenemos las Ecs. 3.9 y 3.10. f(x,y)/ x = f(x+1,y) f(x , y) f(x+2,y)/2 + f(x+1,y) f(x,y)/2 f(x,y)/ y = f(x,y+1) f(x , y) f(x,y+2)/2 + f(x,y+1) f(x,y)/2 ...(Ec. 3.9) ...(Ec. 3.10)
37
Visin Artificial
Sustituyendo las Ecs. 3.9 y 3.10 en la Ec. 3.1 tenemos: |f(x,y)| = |f(x,y)| = | f(x,y)| = |f(x,y)/ x | + |f(x,y)/ y| f(x+1,y) f(x , y) f(x+2,y)/2 + f(x+1,y) f(x,y)/2 + f(x,y+1) f(x , y) f(x,y+2)/2 + f(x,y+1) f(x,y)/2 3*f(x,y) + 2*f(x+1,y) f(x+2,y)/2 + 2*f(x,y+1) f(x,y+2)/2
Siendo as la mscara queda como (Figura 3.15c): 3*(x,y) 2*(x,y+1) 0.5*(x,y+2) 2*(x+1,y) 0*(x+1,y+1) 0*(x+1,y+2) -0.5*(x+2,y) 0*(x+2,y+1) 0*(x+2,y+2) 3 2 0.5 2 0 0 0.5 0 0
3) Considerando hasta el tercer termino de la aproximacin de la derivada por la serie de Taylor, podemos hallar los valores aproximados para cada una de las derivadas parciales. De la Ec. 3.2 tenemos que: f(x,y)/ x = [f(x+1,y) f(x , y)]/h hf(x,y)/2 h f(x,y)/6 2 f(x,y)/ y = [f(x,y+1) f(x , y)]/h hf(x,y)/2 h f(x,y)/6 Como la distancia entre pxeles de una imagen es de un pxel, se considera h=1, para las ecuaciones anteriores se obtienen las Ecs. 3.11 y 3.12. f(x,y)/ x = f(x+1,y) f(x , y) f(x,y)/2 f(x,y)/6 f(x,y)/ y = f(x,y+1) f(x , y) f(x,y)/2 f(x,y)/6 ...(Ec. 3.11) ...(Ec. 3.12)
2
Se conoce tambin que la aproximacin para la tercera derivada est dada por: f(xi)=[f(x i+3) 3f(x i+2) + 3f(x i+1) f(x i)] / h = f(x i+3) 3f(x i+2) + 3f(x i+1) f(x i) Aplicando las Ecs. 3.11 y 3.12 en la tercera derivada se obtienen las Ecs. 3.13 y 3.14. f(x,y)/ x = f(x+3,y) 3f(x+2,y) + 3f(x+1,y) f(x,y) 3 f(x,y)/ y = f(x,y+3) 3f(x,y+2) + 3f(x,y+1) f(x,y)
3 3
Sustituyendo las Ecs. 3.13, 3.14, 3.7 y 3.8 en las Ecs. 3.11 y 3.12 obtenemos la Ecs. 3.15 y 3.16. f(x,y)/ x = f(x,y)/ y = f(x+1,y) f(x , y) f(x+2,y)/2 + f(x+1,y) f(x,y)/2 f(x+3,y)/6 + f(x+2,y)/2 f(x+1,y)/2 + f(x,y)/6 f(x,y+1) f(x,y) f(x,y+2)/2 + f(x,y+1) f(x,y)/2 f(x,y+3)/6 + f(x,y+2)/2 f(x,y+1)/2 + f(x,y)/6
Sustituyendo las Ecs. 3.15 y 3.16 en la Ec. 3.1 tenemos: |f(x,y)| = |f(x,y)| = |f(x,y)/ x | + |f(x,y)/ y| f(x+1,y) f(x , y) f(x+2,y)/2 + f(x+1,y) f(x,y)/2 f(x+3,y)/6 + f(x+2,y)/2 f(x+1,y)/2 + f(x,y)/6 f(x,y+1) f(x , y) f(x,y+2)/2 + f(x,y+1) f(x,y)/2 f(x,y+3)/6 + f(x,y+2)/2 f(x,y+1)/2 + f(x,y)/6
| f(x,y)| = 8/3*f(x,y) + 3/2*f(x+1,y) +3/2*f(x,y+1) f(x+3,y)/6 f(x,y+3)/6 Siendo as la mscara queda como (Figura 3.15d):
38
Visin Artificial
3/2 0 0 0
0 0 0 0
1/6 0 0 0
Podemos seguir aproximando cada vez ms la derivada, tomando un mayor nmero de trminos de la serie de Taylor, sin embargo, se obtienen buenas aproximaciones tomando solo tres trminos de esta. Veamos ahora como opera la mscara obtenida para el primer trmino de la serie de Taylor al aplicarla sobre una imagen discreta (Figura 3.13).
1 2 3 4 5 1 2 3 4 5 6
f(5,6) y1 y2 y3 y4 y5 y6
x1 0 0 0 0 0 0
x2 0 1 1 1 0 0
x3 0 1 1 1 0 0
x4 0 1 1 1 0 0
x5 0 0 0 0 0 0
a) Imagen Analgica
b) Imagen Digital
Figura 3.13: Imagen analgica a digital o discreta. En la Figura 3.14 se observan los pasos a seguir para aplicar la mscara. La operacin se realiza para todos los pxeles de la imagen menos para los pxeles del borde, en donde no es posible aplicar la convolucin al no solaparse totalmente la mscara y la imagen. As siempre que se realice una convolucin de una imagen con una mscara se obtendr una imagen ms pequea de dimensiones ff(x,y) = (N-(n-1))x(M-(m-1)) donde N y M son las dimensiones de la imagen original; y, n y m las dimensiones de la mscara. Para el ejemplo de la Figura 3.14 se tiene: Dimensiones de la imagen resultante = ff(x,y) = (5-(2-1))x(6-(2-1)) = 4x5 2 1 1 0
x1 0 0 0 0 0 0
x2 0 1 1 1 0 0
x3 0 1 1 1 0 0
x4 0 1 1 1 0 0
x5 0 0 0 0 0 0
Resultado 3 4 0 1 1 1 0 0 0 1 1 1 0 0
c) Procedimiento de aplicacin de mscara Figura 3.14: Aplicacin de una mscara en una imagen digital (Parte 1/4). 39
Araujo Daz David
Visin Artificial
Paso 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0*-2 0*1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0*-2 0*1 0 0 2 0*-2 1*1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1*1 1*0 1 0 0 0 1*-2 1*1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1*1 1*0 0 0
Proceso 3 4 0*1 1*0 1 1 0 0 0*-2 1*1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1*1 1*0 1 0 0 0 1*-2 1*1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0*1 1*0 1 1 0 0 0*-2 1*1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1*1 1*0 1 0 0 0 1*-2 1*1 1 0 0 0 1 1 1 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0
2 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 0 1 1 0 0 1 0 1 1 0 0 1 0 1 1 0 0 1 0 1 1 0 0
Resultado 3 4 0 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 0 1 1 0 0 1 0 1 1 0 0 1 0 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 -1 1 1 0 0 1 -1 1 1 0 0
5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c) Procedimiento de aplicacin de mscara Figura 3.14: Aplicacin de una mscara en una imagen digital (Parte 2/4).
40
Visin Artificial
Paso 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0*-2 0*1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0*-2 0*1 2 0 1 1*-2 1*1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1*1 0*0 0 0 1 1 1*-2 0*1 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0*1 0*0
Proceso 3 4 0 1 1*1 1*0 0 0 0 1 1*-2 1*1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1*1 0*0 0 0 1 1 1*-2 0*1 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1*1 1*0 0 0 0 1 1*-2 1*1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1*1 0*0 0 0 1 1 1*-2 0*1 0 0 1 1 1 0 0
1 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0
2 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 -1 0 0 1 0 0 -1 0 0 1 0 0 -1 0 0 1 0 0 -1 0 0
Resultado 3 4 1 0 1 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 -1 0 0 1 0 0 -1 0 0 1 0 0 -1 0 0 1 -1 1 1 0 0 1 -1 1 1 0 0 1 -1 -1 1 0 0 1 -1 -1 1 0 0 1 -1 -1 1 0 0 1 -1 -1 1 0 0 1 -1 -1 -2 0 0 1 -1 -1 -2 0 0
5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10
11
12
13
14
15
16
17
c) Procedimiento de aplicacin de mscara Figura 3.14: Aplicacin de una mscara en una imagen digital (Parte 3/4).
41
Visin Artificial
5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0*1 0*0
1 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0
2 1 0 0 -1 0 0 1 0 0 -1 0 0 1 0 0 -1 0 0
Resultado 3 4 1 0 0 -1 0 0 1 0 0 -1 0 0 1 0 0 -1 0 0 Resultado 1 -1 -1 -2 0 0 1 -1 -1 -2 0 0 1 -1 -1 -2 0 0
5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
18
19
20
d) Imagen resultante Figura 3.14: Aplicacin de una mscara en una imagen digital (Parte 4/4). Para poder apreciar la forma en que las mscaras operan sobre una imagen se muestra un programa en MATLAB para encontrar el contorno de una imagen a travs del gradiente (Programa 3.1) [MatLab 99]. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. % Aplicacin de la mscara de gradiente a una imagen binaria I = imread('prueba.bmp'); %Carga la imagen a procesar imshow(I,[]); %Muestra la imagen de entrada pause %Hace una pausa % 1.- Para la mscara: % -2 1 % 1 0 h=[-2,1;1,0]; %Mscara No. 1 I2=filter2(h,I); %Hace el filtrado con la mascara dada imshow(I2,[]); %Muestra el resultado pause %Hace una pausa % 2.- Para la mscara: % -3 2 -.5 % 2 0 0 % -.5 0 0 Programa 3.1: Obtencin de gradientes en MatLab (Parte 1/2).
42
Visin Artificial
16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
h=[-3,2,-.5;2,0,0;-.5,0,0]; %Mscara No. 2 I2=filter2(h,I); %Hace el filtrado con la mascara dada imshow(I2,[]); %Muestra el resultado pause %Hace una pausa % 3.- Para la mscara: % -8/3 3/2 0 -1/6 % 3/2 0 0 0 % 0 0 0 0 % -1/6 0 0 0 h=[-8/3,3/2,0,-1/6;3/2,0,0,0;0,0,0,0;-1/6,0,0,0]; %Mscara No. 3 I2=filter2(h,I); %Hace el filtrado con la mascara dada imshow(I2,[]); %Muestra el resultado Programa 3.1: Obtencin de gradientes en MatLab (Parte 2/2). Los resultados de aplicar el programa a una imagen se muestran en la Figura 3.15.
a) Imagen de entrada
Figura 3.15: Resultados al aplicar derivadas a una imagen en MatLab. Como es posible apreciar el empleo de mscaras permite obtener de una forma sencilla el contorno de los objetos presentes en una imagen; tambin es fcil de programar como se puede apreciar, con MatLab. La implementacin en lenguaje C [Johnson 87] en igualmente sencilla. La complejidad del procedimiento es O(m*n), con m como el nmero de columnas y n el nmero de filas de la imagen debido a que el algoritmo deber de recorrer la imagen pxel a pxel en un arreglo bidimensional. Partiendo de la expresin para calcular el gradiente y empleando aproximaciones de derivadas de Taylor es posible obtener otras mscaras. Son famosas una serie de mscaras por su uso frecuente en anlisis de imgenes.
43
Visin Artificial
3.4.3 Aproximacin de Roberts El procedimiento por aproximacin de Roberts consiste en la aplicacin de dos mscaras sucesivas para calcular el vector gradiente en las direcciones diagonales; por lo que es sensible a discontinuidades cambios en cualquier direccin. De este procedimiento se obtienen bordes bien definidos (Figura 3.16). La mscara es la siguiente: 0 -1 3.4.4 Aproximacin de Prewitt La aproximacin de Prewitt se obtiene de la aproximacin del gradiente de luminosidad cuando se aplica a tres trminos, de est forma la mscara para la convolucin es una matriz de 3x3 (Figura 3.16). Al igual que en caso anterior es sensible a discontinuidades en todas las direcciones, permite identificar bordes ms gruesos que en el caso anterior. -1 -1 -1 3.4.5 Aproximacin de Sobel Es una variacin de la aproximacin de Prewitt la cual hace un nfasis mayor en la celda central (Figura 3.16). -1 0 1 1 2 1 -2 0 2 y 0 0 0 -1 0 1 -1 -2 -1 En la Tabla 3.1 se muestra un resumen con los operadores gradientes ms comunes: Operador Roberts Direccin Horizontal 0 -1 1 0 Direccin vertical 1 0 0 -1 0 0 0 1 1 1 1 0 -1 1 0 -1 1 0 -1 1 0 y 1 0 0 -1
Prewitt
-1 -1 -1
0 0 0
1 1 1
1 0 -1
1 0 -1
1 0 -1
Sobel
-1 -2 -1
0 0 0
1 2 1
1 0 -1
2 0 -2
1 0 -1
44
Visin Artificial
Resultado Entrada
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 1 1 1 1 1 1 1 0
0 0 1 1 1 1 1 1 1 0
0 0 1 1 1 1 1 1 1 0
0 0 1 1 1 1 1 1 1 0
0 0 1 1 1 1 1 1 1 0
0 0 1 1 1 1 1 1 1 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 1 1 1 1 1 1 1
0 1 0 0 0 0 0 0 -1
0 1 0 0 0 0 0 0 -1
Derivada 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 Roberts 0 2 0 0 0 0 0 0 2
Derivada 0 1 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 -1 0 1 -1 -1 -1 -1 -1 -1 -2 0 0 0 0 0 0 0 0 0 Roberts 0 2 0 0 0 0 0 0 2 0 2 0 0 0 0 0 0 2 0 1 2 2 2 2 2 2 1 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 1 2 2 2 2 2 2 1
0 2 0 0 0 0 0 0 2
0 2 0 0 0 0 0 0 2
0 2 0 0 0 0 0 0 2
2 3 3 3 3 3 3 3
3 4 3 3 3 3 3 4
3 3 0 0 0 0 0 3
3 3 0 0 0 0 0 3
3 3 0 0 0 0 0 3
Prewitt 3 3 0 0 0 0 0 3 Sobel 4 4 0 0 0 0 0 4
Prewitt 3 3 0 0 0 0 0 3 3 4 3 3 3 3 3 4 2 3 3 3 3 3 3 3 Sobel 4 4 0 0 0 0 0 4 4 6 4 4 4 4 4 6 2 4 4 4 4 4 4 4
2 4 4 4 4 4 4 4
4 6 4 4 4 4 4 6
4 4 0 0 0 0 0 4
4 4 0 0 0 0 0 4
4 4 0 0 0 0 0 4
Figura 3.16: Resultados al aplicar operadores gradiente a una imagen (Parte 1/3).
45
Visin Artificial
Resultado Entrada
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 0 0 0
0 0 0 1 1 1 1 1 0 0
0 0 1 1 1 1 1 1 1 0
0 0 1 1 1 1 1 1 1 0
0 0 0 1 1 1 1 1 0 0
0 0 0 0 1 1 1 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 0 0
0 0 0 2 0 0 -1 1 0
0 0 2 0 0 0 0 -1 1
Derivada 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 Roberts 0 2 0 0 0 0 0 0 2
Derivada 0 1 -1 0 0 0 0 0 -2 0 0 1 -1 0 0 0 -2 0 0 0 0 1 -1 -1 -2 0 0 0 0 0 0 0 0 0 0 0 Roberts 0 1 1 0 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 0 0 1 2 2 1 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 1 2 2 1 0 0
0 0 1 1 0 0 1 1 0
0 1 1 0 0 0 0 1 1
0 2 0 0 0 0 0 0 2
0 0 2 3 3 3 2 0
0 2 4 4 3 4 4 2
2 4 4 2 0 2 4 4
3 4 2 0 0 0 2 4
3 3 0 0 0 0 0 3
Prewitt 3 4 2 0 0 0 2 4 Sobel 4 6 2 0 0 0 2 6
Prewitt 2 4 4 2 0 2 4 4 0 2 4 4 3 4 4 2 0 0 2 3 3 3 2 0 Sobel 2 6 6 2 0 2 6 6 0 2 6 6 4 6 6 2 0 0 2 4 4 4 2 0
0 0 2 4 4 4 2 0
0 2 6 6 4 6 6 2
2 6 6 2 0 2 6 6
4 6 2 0 0 0 2 6
4 4 0 0 0 0 0 4
Figura 3.16: Resultados al aplicar operadores gradiente a una imagen (Parte 2/3).
46
Visin Artificial
Resultado Entrada
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
Derivada 0 0 0 0 0 0 0 0 0 1 1 -2 0 0 0 0 0 0 Roberts 0 0 0 0 1 1 0 0 0
Derivada 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Roberts 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 1 1 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 2 1 2 0 0
0 0 0 1 0 1 0 0
Prewitt 0 0 0 2 1 2 0 0 Sobel 0 0 0 2 2 2 0 0
Prewitt 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Sobel 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 2 2 2 0 0
0 0 0 2 0 2 0 0
Figura 3.16: Resultados al aplicar operadores gradiente a una imagen (Parte 3/3).
47
Visin Artificial
3.4.6 Operador Laplaciano Los mtodos anteriores funcionan bien para imgenes con un alto contraste de gris o binarias, sin embargo cuando la regin de cambio es muy ancha, resulta mejor aplicar derivadas de segundo orden. El Laplaciano de una imagen (Figura 3.17b) se define como la segunda derivada espacial de la luminosidad. Para una imagen f(x,y) en el punto (x,y), se define por la Ec. 3.17. f(x,y) = [ f(x,y) / x , f(x,y) / y ]
2 2 2 2 2
...(Ec. 3.17)
Para aplicarse a imgenes digitales, es necesario discretizar la Ec. 3.17. Si se emplean las aproximaciones de las segundas derivadas obtenemos la Ec. 3.18. f(x,y) / x = f(x-1,y) 2f(x , y) + f(x+1,y) 2 2 f(x,y) / y = f(x,y-1) 2f(x , y) + f(x,y+1) L(x,y) = f(x-1,y) + f(x+1,y) + f(x,y-1) + f(x,y+1) 4f(x,y) ...(Ec. 3.18)
2 2
Para que la aproximacin sea simtrica respecto al pxel central de la mscara, se debe de considerar la aproximacin del Laplaciano con un giro de 45, obtiendo la Ec. 3.19. f(x,y) / x = f(x-1,y-1) 2f(x , y) + f(x+1,y+1) 2 2 f(x,y) / y = f(x-1,y-1) 2f(x , y) + f(x+1,y+1) L(x,y) = f(x-1,y-1) + f(x+1,y+1) + f(x-1,y-1) + f(x+1,y+1) 4f(x,y) De las Ecs. 3.18 y 3.19 se obtienen las mscaras: 0 1 0 1 -4 1 0 1 0 1 0 1 0 -4 0 1 0 1 ...(Ec. 3.19)
2 2
Los operadores basados en la segunda derivada son sumamente sensibles al ruido, por lo que su aplicacin se reduce a imgenes filtradas previamente (Figura 3.17b).
b) Laplaciano
El uso de mscaras ofrece una pobre respuesta en imgenes con ruido. Una mscara estocstica construye una mscara dinmica (a diferencia de las anteriores que permanecan estticas) para cada pxel en la imagen, intentando reducir en la medida de lo posible el efecto del ruido, obteniendo al mismo tiempo el gradiente de la imagen. Obviamente el algoritmo es muy costoso en tiempo, debido a la cantidad de clculos necesarios, por lo que su aplicacin es extremadamente reducida.
48
Visin Artificial
3.5 Segmentacin de imgenes Una vez que los contornos bordes han sido identificados, el siguiente paso es la segmentacin de la imagen. La segmentacin de imgenes es el proceso mediante el cual una imagen se subdivide en unidades significativas [Ibarra 98]. Permite clasificar los pxeles como pertenecientes a una categora en concreto. Algunos de los atributos que son tomados en cuenta para segmentar una imagen son: la luminancia ( brillo) en imgenes binarias, los componentes de color en imgenes de color, los bordes y las texturas. Los objetivos que persiguen los procesos de segmentacin son: encontrar agrupaciones uniformes y homogneas, diferenciar regiones adyacentes de la escena, hallar bordes sencillos y, sobre todo, que el resultado sea til para los procesos siguientes de la visin artificial [Escalera 01]. La segmentacin se basa en tres propiedades: Similitud.- cada uno de los pxeles de un objeto presentan propiedades parecidas. Discontinuidad.- los objetos resaltan de su entorno y por lo tanto tienen bordes bien definidos. Conectividad.- los pxeles pertenecientes al mismo objeto tienen que ser contiguos, es decir, estn agrupados.
Podemos decir que una regin (puede ser un objeto, el fondo, una textura, etc.) es un conjunto de pxeles que en una imagen representan caractersticas o atributos similares. Para poder llevar a cabo la segmentacin es necesario que las regiones no se encimen. Se debe de considerar que regin puede contener a otras y que la unin de todas las regiones debe de dar como resultado la imagen total. Algunas de las tcnicas utilizadas para la segmentacin de imgenes son: Segmentacin en amplitud.- se basan en los umbrales de las imgenes binarias o de color. Se emplea en imgenes donde el fondo se diferencia en forma simple de los objetos. Segmentacin basada en clustering.- basada en la clasificacin de las caractersticas de los pxeles de una imagen, as las regiones se clasifican en funcin del grado de pertenencia de las diversas caractersticas, respecto a las diversas regiones. Segmentacin por regiones.- utilizan propiedades espaciales de las regiones para segmentarlas. Se tiene por ejemplo la tcnica de crecimiento de regiones en la que se van agrupando regiones que presentan caractersticas o propiedades similares. Parte de un conjunto de pxeles llamados semillas a partir de las cuales se hacen crecer las regiones aadiendo pxeles a las semillas, provenientes de sus vecinos que poseen propiedades similares, hasta que se cubre el total de pxeles de la imagen. Segmentacin por deteccin de bordes.- se lleva a cabo detectando los bordes o contornos de cada regin, se usan filtros (mscaras), transformada de Hough, etc. Segmentacin basada en texturas.- una textura es la repeticin de patrones de elementos situados segn reglas especficas. La segmentacin por texturas utiliza caractersticas locales de una regin para separarlas del resto. Segmentacin por etiquetado. - consiste en separar el contorno cerrado de cada segmento. Se puede hacer siguiendo el contorno indicando los cambios de direccin o empleando el cdigo cadena.
Algunos de los mtodos que son empleados para segmentar una imagen, se describen a continuacin:
49
Visin Artificial
3.5.1 Seguimiento de contornos La segmentacin por seguimiento de contornos, consiste en ir siguiendo un contorno pxel a pxel en determinadas direcciones en funcin de s se sale o se entra de una determinada regin, o se cruza en uno u otro sentido el contorno. Se utiliza imgenes binarias, porque los bordes de las regiones deben estar bien definidos. Por ejemplo, e algoritmo de la Figura 3.18 realiza las l siguientes acciones: 1. 2. Selecciona un punto de comienzo dentro de la regin A (punto 1 de la Figura 3.18). Cambiamos de direccin hacia la izquierda y saltamos al siguiente pxel si esta dentro de la regin A y a la derecha si esta afuera (puntos 2 y 3 de la Figura 3.18). Contina hasta llegar al pxel de comienzo (punto 1 de la Figura 3.18).
3.
Notar que los contornos extrados con este mtodo son dobles, y que siempre sern cerrados aunque la regin no lo sea. Existen variantes con avances de 45 o haciendo pruebas de 8-conectado, etc., que obtienen mejores resultados.
Figura 3.18: Algoritmo de seguimiento de contornos. 3.5.2 Unin de bordes por bsqueda heurstica Otro mtodo para la segmentacin de imgenes es el que se conoce como la unin de bordes por bsqueda heurstica. Puede pensarse en la frontera de un objeto, como el camino resultante de la unin de los elementos del borde (tomando estos como pxeles sin etiquetar). Segn las reglas de enlazado obtendremos un algoritmo u otro. Supngase un grfico con nodos xk que representan distintos elementos del borde. Mediante una funcin de evaluacin (x k ) obtenemos un valor de camino de un punto a otro a travs del nodo xk . En algoritmos heursticos, para encontrar el camino que une dos puntos A y B, se examinan los nodos siguientes a uno de comienzo y se escoge como nuevo nodo de comienzo aquel que lleve al mximo . La secuencia de nodos seleccionados constituye el contorno entre A y B. Basndose en el principio de optimalidad de Bellman [Richard Bellman, 1957] (si un camino es ptimo, sus subcaminos tambin lo son), existe un mtodo general para encontrar el camino ptimo global en procesos multifase, mediante programacin dinmica. Se basa en ir etiquetando nodos con el mejor de los caminos posibles, desde el camino inicial hasta llegar al nodo final. Se comprueban todas las posibles rutas con lo que la solucin siempre es ptima. Estos mtodos son muy conocidos para el encaminamiento de datagramas a travs de los nodos que forman una red de comunicaciones. Obviamente la velocidad de estos algoritmos depende de la eleccin de (x k ).
50
Visin Artificial
3.5.3 Transformada de Hough Otro mtodo para la segmentacin de imgenes es el que se conoce como la Transformada de Hough. Se utiliza para el enlace de puntos del borde y para la extraccin de rectas de un contorno. Implica la transformacin de coordenadas cartesianas a coordenadas polares. Podemos establecer la ecuacin de una recta en coordenadas polares tal como se ve en la Figura 3.19. Si tenemos un punto (x p,y p), podrn pasar infinitas rectas por ese punto; en el plano transformado, podemos establecer esto como una funcin senoidal (Ec. 3.20). = xp cos + yp sin = f() ...(Ec. 3.20)
Si representamos esta funcin para todos los puntos de una recta en el primer cuadrante, y desechamos los valores de negativos, estas funciones se cortarn todas en un punto que nos definir la ecuacin de la recta o = x cos o + y sin o y
(x,y) 90
Recta
Figura 3.19: Ecuacin de una recta en forma polar. A partir de esta base terica, se construye un mtodo de deteccin de rectas en imgenes enormemente robusto. El algoritmo consiste en aplicar la transformacin para todos los puntos de un borde de la imagen. El espacio transformado se discretiza de forma que se tenga una buena resolucin, y las funciones senoidales resultantes de la transformacin de cada pxel se van acumulando. Al final del proceso, se tiene una matriz cuyo valor mximo estar en sus ndices, del valor de ( o,o) que definen a la recta. Puntos de ruido en la imagen, o rectas no continuas no van a influir demasiado en la matriz de transformacin, por lo que el algoritmo es muy robusto frente a estos aspectos. Esta transformada busca formas geomtricas en toda la imagen encontrando los parmetros de aquella que contenga ms puntos de ella. Los dos inconvenientes principales de esta transformada son que no es capaz de encontrar los extremos de la recta, y que la transformada ha sido patentada, por lo que su uso en algn proyecto requiere del pago de derechos. En imgenes complejas, con muchas rectas en todas direcciones, la representacin del espacio transformado en tres dimensiones, genera figuras bastante complejas (catedrales) con gran cantidad de picos bastante confusos de delimitar. Cuando los puntos de la imagen a analizar proceden de una operacin de gradiente; existen variantes mucho ms eficaces [Duda 72] que consisten en aprovechar la informacin de la direccin del gradiente en cada punto, y slo incrementar la matriz de acumulacin, en aquellos puntos prximos a dicha direccin.
51
Visin Artificial
3.6 Mtodos para reconocimiento de patrones Despus de realizar la segmentacin de los objetos, el siguiente paso es el reconocimiento de patrones, es decir, el reconocimiento de los objetos presentes en la imagen de entrada. La forma de un objeto se refiere a su perfil y a su estructura fsica del mismo. Para el reconocimiento de objetos se usan una serie de caractersticas que nos permiten medir sus formas. Otras caractersticas que permiten el reconocimiento de objetos son: permetro, rea, nmero de agujeros, radios mnimos y mximos o la relacin entre ellos, esquinas, nmero de lados, ngulos entre lados, momentos de inercia, etc. Un sistema de reconocimiento de patrones general debe de contemplar invariabilidad en las siguientes caractersticas de los objetos [Foley 96]: a) Traslacin.- es el movimiento de los puntos de un objeto en la imagen cuando todos sus pxeles siguen una direccin constante; el objeto preserva su forma solo cambia de posicin (Figura 3.20a). b) Rotacin.- movimiento de los puntos de un objeto alrededor de un punto llamado eje de rotacin, se define por la velocidad y aceleracin angulares del objeto, el objeto no cambia de forma, solo de orientacin (Figura 3.20b). c) Escala.- es el cambio en las dimensiones de los objetos observados en una imagen, sin que la forma del objeto se vea afectada (Figura 3.20c). d) Perspectiva.- la deformacin de las imgenes causada por la perspectiva, es ocasionada por la presencia de profundidad en la imagen. Una recta que corta al cuadro tiene su perspectiva situado en un punto en el infinito llamado punto de fuga (Figura 3.20d).
Punto de Fuga
a) Traslacin
b) Rotacin
c) Escala
d) Perspectiva
Figura 3.20: Caractersticas variables de los objetos en una imagen. En los apartados siguientes describimos algunos de los mtodos empleados para el reconocimiento de patrones contenidos en una imagen. 3.6.1 Reconocimiento por ngulos El reconocimiento por ngulos solo es aplicable en un medio altamente controlado, as es posible identificar un tringulo o un cuadrado correctamente midiendo el ngulo de un vrtice [Schildt 87]. Por ejemplo si solo es necesario identificar cuadrados y tringulos issceles, entonces el reconocimiento se reduce a comprobar dos puntos en cualquier vrtice. Si los puntos estn en
52
Visin Artificial
un ngulo recto, es un cuadrado, si los puntos forman un ngulo de 60 entonces se trata de un tringulo. La forma ms sencilla de implementar el reconocimiento por ngulos es comprobar los puntos adyacentes al vrtice para comprobar si se encuentran en el lugar correcto. La ventaja de este mtodo en su facilidad de implementacin, si solo se aplica a variaciones de traslacin y escala, si los objetos v aran sus ngulos ligeramente o sus vrtices rotan de forma ligera. Slo se puede aplicar a situaciones muy controladas con un nmero mnimo de objetos variados. 3.6.2 Reconocimiento por puntos clave El reconocimiento por puntos clave se aplica a objetos que presentan el mismo tamao [Schildt 87], si se conserva el tamao es posible analizar solo unos pocos puntos clave. Los puntos clave son escogidos de tal manera que solo uno de los objetos satisfaga las condiciones (Figura 3.21).
Figura 3.21: Puntos clave para algunos objetos. Se debe de crear una rutina de reconocimiento para cada objeto a identificar, sta deber contemplar una pequea variacin en los puntos clave, de tal forma de que el programa se equivoque lo menos posible. Funciona bien para situaciones restringidas. Slo permite variaciones en la traslacin de los objetos. Para que reconozca correctamente la forma correcta de un objeto, ste no debe de girar, escalarse o mostrar deformaciones por efecto de la perspectiva. Est mtodo es ms restringido que el de reconocimiento por ngulos. 3.6.3 Reconocimiento por cambios de direccin El reconocimiento por cambios de direccin se basa en los cambios de direccin que se presentan cuando se recorre un contorno [Schildt 87]. El nmero de veces que cambia de direccin es igual nmero de vrtices del objeto. Cada vez que se encuentra un vrtice hay un cambio de direccin. El programa deber de ser capaz de seguir una recta hasta que se intercepte con otra lnea. En la interseccin, deber encontrar la siguiente lnea y seguirla (regularmente se hace por medio de retroseguimiento redundante). El algoritmo tiene que almacenar los puntos del borde de los objetos que ya ha visitado para evitar que se regrese por el mismo camino, luego debe de ser capaz de regresar al punto inicial. De est forma se garantiza que se ha seguido todo el contorno del objeto. Una de las ventajas de est mtodo es que no depende en lo absoluto de la orientacin, escala y posicin de los objetos. Se emplea frecuentemente en situaciones donde el nmero de objetos a reconocer es limitado o escaso. Puede equivocarse fcilmente cuando los objetos se encuentran superpuestos, sin embargo no confundir un objeto con otro dentro de las exigencias de la situacin concreta.
53
Visin Artificial
3.6.4 Reconocimiento por factor de forma El reconocimiento por factor de forma intenta determinar la concentracin de masa de los objetos a partir del conocimiento de su rea [Mammone 94]. Cuando se tiene un objeto en la imagen, se cuentan los pxeles que lo conforman (en una imagen binaria los puntos donde existe el objeto); el nmero resultante es el rea aproximada en pxeles del objeto en cuestin. Tambin es posible calcular el nmero de pxeles que conforman el permetro del objeto (realizando un clculo con los pxeles que corresponden al borde), as se pueden determinar los factores de forma de los objetos a clasificar por medio de la Ec. 3.21. Factor de forma = 4 rea / permetro
2
...(Ec. 3.21)
Se genera entonces una tabla q indica los ndices de reconocimiento para diferentes ue formas. Se observa que entre ms se aproxima la forma al crculo, el factor de forma tambin se aproxima a uno. ste mtodo presenta el inconveniente de que slo funciona para figuras geomtricas, y c onforme el nmero de lados de las figuras se incrementa, la diferencia con respecto al crculo disminuye, para probar esto se realiz un programa en MatLab [MatLab 99] para el clculo del factor de forma (Programa 3.2). 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. % Programa para obtener el factor de forma de una imagen dada I = imread('circulo.bmp'); % Lee la imagen imshow(I); % Muestra la imagen area = bwarea(I) % Calcula el rea total del objeto % Obtiene el rea del permetro de la imagen de entrada I = bwperim(I); % Obtiene una imagen con el permetro del objeto imshow(I); % Muestra la imagen perimetro = bwarea(I) % Calcula el rea del permetro del objeto % Calcula el factor de forma Factor_de_forma = 4.*3.141592654*area/(perimetro*perimetro) Programa 3.2: Clculo del factor de forma en MatLab. Al aplicar el programa anterior a los objetos de la Figura 3.22 obtenemos los resultados de la Tabla 3.2.
54
Visin Artificial
Tabla 3.2: Factores de forma calculados y obtenidos con MatLab. 3.6.5 Reconocimiento por clculo de momentos Una de las formas ms generales para la extraccin de las caractersticas de los objetos en una imagen es el uso de momentos [Mammone 94, Masters 94, Corke 96, Ayres 87, Granville 92, Mazaira 94, Staugaard 87]. Los momentos son fciles de calcular, y se puede alcanzar una alta velocidad empleando hardware especializado. Se emplean para encontrar la localizacin de un objeto (mediante su centroide). Otras caractersticas de los momentos permanecen invariables a la traslacin, orientacin y escala de los objetos, por lo que pueden emplearse para reconocimiento (como lo demostr Hu en 1962). Los momentos de orden (p+q) para una imagen binaria I(x,y) que solo toma valores 0 1, para la regin R de I(x,y) que toma valores de 1, los momentos de orden (p+q) se pueden calcular a travs de la Ec. 3.22. m pq = RR x y I(x,y)
p q
...(Ec. 3.22)
Los momentos se pueden interpretar fsicamente como una funcin de distribucin de masa en la imagen. Para m00 como la masa total de la regin R, se puede calcular la posicin (xc ,yc ) del centroide, con las Ecs. 3.23 a 3.30. m 00 = RR I(x,y) m 10 = RR x I(x,y) m 01 = RR y I(x,y) m 11 = RR x y I(x,y) 2 m 20 = RR x I(x,y) 2 m 02 = RR y I(x,y) x c = m10 / m 00 yc = m 01 / m 00 ...(Ec. 3.23) ...(Ec. 3.24) ...(Ec. 3.25) ...(Ec. 3.26) ...(Ec. 3.27) ...(Ec. 3.28) ...(Ec. 3.29) ...(Ec. 3.30)
Los momentos centrales se calculan alrededor del centroide por la Ec. 3.31. pq pq = R R (x-x c) (y-yc) I(x,y)
p q
...(Ec. 3.31)
Est tipo de momentos es invariable a la traslacin. Algunos momentos centrales a partir de la Ec. 3.31 se muestran en las Ecs. 3.32 a 3.39. 00 = m00 11 = R R (x-x c) (y-yc) I(x,y) 2 21 = R R (x-x c) (y-yc) I(x,y) 2 12 = R R (x-x c) (y-yc) I(x,y) 2 20 = R R (x-x c) I(x,y) 2 02 = R R (y-yc) I(x,y) 3 30 = R R (x-x c) I(x,y) 3 03 = R R (y-yc) I(x,y) 55 ...(Ec. ...(Ec. ...(Ec. ...(Ec. ...(Ec. ...(Ec. ...(Ec. ...(Ec. 3.32) 3.33) 3.34) 3.35) 3.36) 3.37) 3.38) 3.39)
Araujo Daz David
Visin Artificial
Sin embargo en algunos casos solo se requiere conocer algunos momentos centrales (con el propsito por ejemplo de obtener el ngulo), se pueden obtener a partir de los momentos de orden (p+q) con las Ecs. 3.40 a 3.46. 20=m 20-m 10 / m00 2 02=m 02-m 01 / m00 11=m 11-m 10 m 01 / m 00 2 12=m 12-2m 11 m01 / m 00-m 02m 10/m00+2m 01 /m 00 2 21=m 21-2m 11 m10 / m 00-m 20m 01/m00+2m 10 /m 00 3 2 03=m 03-3m 02 m01 / m 00+2m 01 /m00 3 2 30=m 30-3m 20 m10 / m00+2m 10 /m 00
2
Usando el factor de forma de los objetos es posible calcular la circularidad, particular de cada uno de los objetos a identificar por la Ec. 3.47. Circularidad = 4 m 00 / permetro
2
...(Ec. 3.47)
Presenta un valor mximo de circularidad = 1 para l circulo, otros valores se tienen en la Tabla 3.2. Los segundos momentos de rea pueden considerarse como los momentos de inercia del centroide. De estos es posible determinar la orientacin del eje principal (Figura 3.23 y en la Ec. 3.48). = 0.5 arctan(2 11 / [20 - 02]) y
Regin R
...(Ec. 3.48)
yc
0 xc x Figura 3.23: Angulo principal de la regin R. Los momentos centrales normalizados pq son invariables a escala. Para una regin R se definen como se muestra en la Ec. 3.49.
pq = pq / 00
= 0.5 (p+q) + 1
...(Ec. 3.49)
De donde podemos obtener las Ecs. 3.50 a 3.56. 11 = 20 = 02 = 21 = 12 = 30 = 03 = 11 / 00 2 20 / 00 2 02 / 00 5/2 21 / 00 5/2 12 / 00 5/2 30 / 00 5/2 03 / 00
2
Momentos invariables (momentos de Hu) momentos de tercer orden proporcionan valores invariables a traslacin, escala y orientacin en el plano. Hu describe siete momentos invariables dados por las Ecs. 3.57 a 3.63.
56
Visin Artificial
1 = 2 = 3 = 4 = 5 = 6 = 7 =
(30 - 312) (30 + 12)[ (30 + 12) - 3(21 + 03) ] + 2 2 (321 - 03) (21 + 03)[ 3(30 + 12) - (21 + 03) ] (20 - 02) [ (30 + 12) - (21 + 03) ] + 411(30 + 12)(21 + 03) (321 - 03) (30 + 12)[ (30 + 12) - 3(21 + 03) ] + 2 2 (312 - 30) (21 + 03)[ 3(30 + 12) - (21 + 03) ]
2 2 2 2
...(Ec. 3.61)
...(Ec. 3.62)
...(Ec. 3.63)
Por ejemplo, para calcular los momentos para las posiciones del objeto de la Figura 3.24, se tienen los resultados mostrados en la Tabla 3.3.
1 1 2 3 4 5 6 7 8 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8
y
1 1 2 3 4 5 6 7 8 2 3 4
a)
5 6 7 8 9 10
y x
1 1 2 3 4 5 6 7 8 2 3 4 5
b)
6 7 8 9 10
c)
d)
57
Visin Artificial
Tabla 3.3: Momentos calculados. 3.7 Reconocimiento ptico de caracteres (OCR) Cuando los objetos a reconocer son caracteres, se usa el proceso de reconocimiento ptico de caracteres (OCR del ingls: Optical Character Recognition). Se aplica cuando se tiene una imagen de entrada la cul presenta algn contenido de caracteres [Escalera 01]. En esta etapa, la imagen no es ms que un conjunto de puntos sin sentido ( pxeles) sobre un fondo. El programa de OCR tiene que e xtraer informacin bajo la forma texto de estos pxeles, ha de reconocer las formas y asignarles un smbolo. Existen dos tipos de sistemas OCR: los sistemas automticos y los de aprendizaje. El primero puede reconocer automticamente textos con una gran v ariedad de tipos de caracteres pero no todos. Con el segundo tipo, cada vez que trate un nuevo documento se tiene que ensear al sistema los nuevos caracteres; este mtodo requiere una mayor intervencin del usuario pero permite tratar casi todos los tipos de caracteres. Ambos sistemas de OCR utilizan procesos de reconocimiento similares, para realizar las siguientes tareas: 1. 2. 3. 4. Segmentacin de lnea. Segmentacin de palabras y caracteres. Reconocimiento de caracteres. Produccin de un archivo de salida de texto.
La segmentacin de lneas consiste en aislar cada lnea de texto. En esta etapa, se analiza la inclinacin del texto y el espacio interlineal. Los documentos ms difciles son aquellos que tienen un espacio interlineal reducido y un texto de notable inclinacin. La segmentacin de palabras y caracteres consiste en separar las palabras entre s y aislar las diferentes letras que las componen. Si todos los caracteres tienen el mismo ancho, (intervalo fijo), esta etapa es muy fcil de ejecutar; como es el caso de los documentos mecanografiados. El problema surge cuando el ancho de las letras depende de su forma (intervalo proporcional). El caso ms complicado es el de un documento cuyos caracteres tienen una forma proporcional y se tocan casualmente. Los caracteres compuestos por matrices de puntos exigen tcnicas de segmentacin muy especficas. La etapa de reconocimiento de caracteres consiste en extraer las caractersticas de cada forma aislada y asignarle a sta un smbolo. El texto de salida es la conversin del texto reconocido en un archivo.
58
Visin Artificial
Veamos como funciona un sistema de este tipo con dgitos. En la Figura 3.25 se tienen dos tipos de letra diferentes para los mismos dgitos. Un algoritmo OCR identifica cada lnea y dgito. A partir del dgito, realizara una particin de tal forma que pude obtener un cdigo. En este ejemplo, cada carcter se particion en una matriz de 3x5 y se asigno a cada celda un valor, dependiendo si estaba con alguna fraccin de color negro (una parte del dgito). As se obtiene un cdigo binario para cada dgito. Se observa que para el mismo nmero, con dos tipos de letra diferente, el cdigo obtenido es muy diferente.
1234567890
No. 1 2 3 4 5 6 7 8 9 0 C1 1 1 1 1 1 1 1 0 1 1 Fila 1 C2 1 1 1 0 1 0 1 1 1 1 Fila 2 Fila 3 Fila 4 Fila 5 C3 C1 C2 C3 C1 C2 C3 C1 C2 C3 C1 C2 C3 0 0 1 0 0 1 0 0 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 1 1 1 0 0 1 0 1 1 0 0 1 1 1 1 0 1 0 1 1 0 1 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0 1 1 1 1 0 1 0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 Octal 62,237 71,747 71,617 45,571 74,717 44,477 71,122 20,557 75,711 75,557
1234567890
No. 1 2 3 4 5 6 7 8 9 0 C1 0 0 0 0 0 0 1 1 0 0 Fila 1 C2 1 1 1 1 1 0 1 0 0 0 C3 C1 0 0 0 0 1 0 1 0 1 1 0 1 1 0 1 1 1 1 0 1 Fila 2 Fila 3 Fila 4 Fila 5 C2 C3 C1 C2 C3 C1 C2 C3 C1 C2 C3 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 0 0 1 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 0 0 1 0 1 0 0 1 1 0 1 1 0 1 0 0 0 Octal 22,222 21,007 32,314 33,373 34,714 04,555 70,000 55,255 15,512 05,550
59
Visin Artificial
3.8 Calibracin de cmara Antes de que el robot o cualquier otro sistema pueda usar la informacin obtenida a partir del proceso de reconocimiento por visin artificial, es necesario adecuarla a las unidades de medida que dichos sistemas comprendan, para esto se realiza lo que se conoce como calibracin de cmara. La calibracin de cmara [Corke 96] es el proceso que permite determinar la geometra interna de la cmara, as como sus caractersticas pticas, posicin en el espacio de tres dimensiones y la orientacin del cuadro de cmara con relacin a las coordenadas del sistema. Con frecuencia la calibracin de cmara se realiza de forma emprica, con una matriz de calibracin relacionada con el plano de coordenadas del sistema. Los parmetros a obtener con la calibracin de cmara son: Parmetros intrnsecos.- son todos los relacionados con el conjunto de cmara ptica, como el centro de la imagen, distancia focal, distorsin, tamao de los pxeles, etc. Parmetros extrnsecos.- es la posicin y orientacin de la cmara respecto al mundo real.
Existe una gran diversidad de mtodos para la calibracin de cmaras. Algunos de ellos y sus caractersticas importantes se describen en la Tabla 3.4. Se diferencian en la forma de obtener la distorsin del lente de la cmara y los patrones de calibracin empleados. Una carta de puntos coplanares (puntos situados en un mismo plano) puede ser generada conveniente y sin error con una impresora lser. Marcas circulares son empleadas por que permiten encontrar el centroide de manera sencilla, pero pueden introducir algunos errores en planos normales al plano de inters, es decir, pueden parecer elipses, con lo cual el centroide puede no coincidir con el centro de la marca, esto se corrige haciendo las marcas tan pequeas como sea posible, aunque tambin se emplean otro tipo de marcas, como lneas cruzadas, marcas con esquinas rectangulares, etc. Mtodo No- lineal Clsico Transformacin Homognea 2 Planos 2 Estados Tipo de patrn empleado Coplanar No coplanar Distorsin
Tabla 3.4: Comparacin entre diferentes tcnicas de calibracin de cmaras. El mtodo no lineal clsico consiste de un conjunto de tcnicas desarrolladas por la comunidad de fotometra. En estas las cmaras son descritas por un modelo detallado, regularmente con ms de 18 parmetros. La optimizacin por las tcnicas de calibracin no lineal, usa los datos de calibracin para ajustar de forma iterativa los parmetros requeridos. El mtodo de transformacin homognea se emplea donde se requiere la determinacin de la orientacin y la posicin de la cmara [Schilling 90]. En la Figura 3.26, se muestra el principio de calibracin de cmara por el mtodo de transformacin homognea. Para simplificar el problema podemos considerar que la orientacin de la cmara es conocida. La medicin directa de la posicin de la cmara no es posible de forma simple, pues se requiere medir la posicin respecto al plano de la imagen, punto que se encuentra adentro de la cmara. Sin embargo colectando diferentes datos es posible obtener por inferencia dicho punto. La distancia focal de la cmara es f. Con (x ,y ,z ) como la posicin desconocida del cuadro de cmara C={x ,y ,z }, respecto a b b b cuadro de la base del robot B={x ,y ,z }. Se observa que de forma general la matriz de transformacin de coordenadas de cmara a base esta dada por la Ec. 3.64.
0 0 0 c c c
60
Visin Artificial
cmara Tbase
...(Ec. 3.64)
Cmara y x
c c
OT = rgano Terminal
a a b
OT z
b
b x
b
Patrn de Prueba
Bas e
La posicin se calibra, colocando un patrn de prueba con dos puntos en su superficie, como se muestra en la Figura 3.26. Donde a y b denotan los puntos de prueba con respecto al imagen imagen cuadro de la base del robot y a yb son las coordenadas de esos puntos en el cuadro de imagen. La relacin entre ambas coordenadas de los puntos de la base del robot y de la imagen, se hace transformando las coordenadas de base del robot en coordenadas de imagen. Primero se invierte la matriz de la Ec. 3.64, con lo que se mapean las coordenadas de la base del robot a las coordenadas de la cmara, luego se realiza una transformacin de perspectiva en donde se relacionan las coordenadas de la cmara con las coordenadas de la base del robot. La composicin de ambas transformaciones describe las coordenadas de base del robot con relacin a las coordenadas de la imagen (Ecs. 3.65 y 3.66).
base camara base cmara cmara Tcmara = Timagen Tcmara = Timagen Tbase
1 1
...(Ec. 3.65)
0 0 1 0 0 0 0 1/ f 0 0 1 0 0 0 0 1/ f
0 0 0 1 0 0 0 1
0 1 0 x0 1 0 0 y 0 0 0 1 z0 0 0 1 0 0 1 0 y0 1 0 0 x0 0 0 1 z0 0 1 0 0
61
Visin Artificial
0 0 1 1 0 0 base Timagen = 0 0 0 0 0 1/ f T
base imagen a.
x0 0 ( f z0 ) / f y0
imagen
...(Ec. 3.66)
Ahora con las coordenadas de la imagen a 3.68, 3.69 y 3.70. f(y0 -a 2) f(x 0-a 1) f(y0 -b2) f(x 0-b1) = a1 (f-z 0) imagen = a2 (f-z 0) imagen = b1 (f-z 0) imagen = b2 (f-z 0)
imagen
Esto se puede hacer con el punto b, el resultado de la simplificacin son las Ecs. 3.67,
Las cuatro ecuaciones permiten conocer las coordenadas de la posicin de la cmara al 0 0 0 resolverse de forma simultnea. Para determinar (x , y ,z ), las coordenadas de cmara a al base del robot se transforman por la matriz de la Ec. 3.64. El procedimiento de calibracin consiste de los pasos siguientes: a) Considerar la estacin de trabajo del robot como la que se muestra en la Figura 3.26. b) Tener un patrn de prueba con al menos dos puntos a y b con sus coordenadas sobre imagen imagen la base del robot y las coordenadas de la imagen a yb respecto al cuadro de imagen imagen cmara a1 b1 . c) Si f es la distancia focal efectiva de la cmara, las coordenadas de la cmara a la base del robot dadas por la matriz de transformacin puede determinar por las Ecs. 3.71, 3.72 y 3.73. z 0 = f{1+(a 2-b2)/(a 1 imagen y0 = a 2+(f-z 0)a 1 /f imagen x 0 = a1+(f-z 0)a 2 /f
imagen cmara Tbase , la posicin de la cmara se
-b1
imagen
)}
El mtodo de transformacin homognea no puede extenderse para encontrar la distorsin del lente [Corke 96]. Est limitacin es superada por la calibracin con dos planos. En est mtodo una lnea en el espacio se define por los puntos de corte entre dos planos como se observa en la Figura 3.27. Cada punto sobre los planos de calibracin se encuentra por la Ec. 3.74.
...(Ec. 3.74)
y x
z0
Plano de Imagen
y x
z1
y x
z2
Plano de calibracin 1
Plano de calibracin 2
Visin Artificial
Donde Ak , es la matriz de interpolacin para la calibracin del plano k . El mtodo de calibracin por dos planos permite un clculo rpido de la perspectiva inversa, es decir, de lneas de tres dimensiones a puntos en el plano. Las lneas obtenidas por la interpolacin de las coordenadas del mundo tridimensional corresponden con las coordenadas del plano en la calibracin en dos planos. La interpolacin de la matriz de cada plano puede ser determinada probando en cada plano un patrn que contiene un arreglo de puntos que pueda ser visto por la cmara. El orden de interpolacin se hace balanceando el tiempo de cmputo, la precisin y la estabilidad. En la prctica un orden dos o tres es suficiente. La interpolacin de matrices implica que se ha corregido la distorsin del lente. El esquema de calibracin de cmara de dos estados, puede determinar los parmetros intrnsecos y extrnsecos de la cmara, mediante una simple vista de un patrn de marcas en el plano. Son en realidad marcas radiales, llamadas alineamientos radiales, que permiten apreciar como acta la distorsin de la lente a lo largo de las lneas radiales desde el punto central. El algoritmo es moderadamente complejo, pero se ejecuta en un tiempo corto. No se requiere el conocimiento a priori del ciclo de reloj usado por la cmara para digitalizar ( y los factores de ) escala para los pxeles (escx y escy ), ni las coordenadas del punto central. 3.9 reas de aplicacin de sistemas de visin en la industria Las reas de la aplicacin de sistemas de visin en la industria se pueden dividir en dos grandes categoras: inspeccin e identificacin de objetos. La inspeccin de productos es una aplicacin natural de esta rea, la inspeccin ha requerido siempre de la r ealizacin de tareas 100% visuales, en donde se usan criterios de porcentaje de defecto o de dimensin. Algunas de estas aplicaciones se muestran en la Tabla 3.5. Ensamblado y procesos Presencia de Partes Localizacin de perforaciones Presencia de agujeros, hilos, etc. Patrones propias de conductores Verificacin de etiquetas Deteccin de objetos extraos Defectos en superficies Huecos Decoloracin Vacos Grietas Medicin Dimetro Contorno Dimensiones de un objeto
Tabla 3.5: Aplicaciones tpicas de la visin artificial en inspeccin en la industria. Otra aplicacin importante de los sistemas de visin en la industria es la identificacin de objetos. La identificacin de objetos es una tarea ms sofisticada que la inspeccin, requiere por tanto de una cierta inteligencia. En la Tabla 3.6 se presentan algunas aplicaciones industriales para la identificacin de objetos mediante visin artificial. Manejo de Partes Ensamble de partes Ordenacin de partes Seleccin binaria Gua de Robots Pintura Ensamble de productos Soldadura
Tabla 3.6: Aplicaciones tpicas para identificacin de objetos en la industria mediante visin artificial.
63
Visin Artificial
Resumen La visin artificial, consiste en el proceso de obtener, caracterizar e interpretar informacin a partir de imgenes, provenientes del mundo real; es decir, permite obtener una descripcin simblica del mundo real a partir de imgenes. Consiste de un conjunto de tareas como: adquisicin de imgenes, preprocesamiento, segmentacin, clasificacin, y reconocimiento y modelacin de los objetos. La adquisicin de imgenes consiste de tres procesos: la formacin de imgenes, la captura de imgenes y la digitalizacin de las imgenes, para que puedan ser almacenadas en la computadora. El preprocesamiento es el conjunto de las tcnicas encaminadas a realizar una mejora de la imagen, modificando por ejemplo: el nivel de gris, el contraste, eliminacin de ruido, realce de caractersticas, etc. La segmentacin es el proceso mediante el cual una imagen se subdivide en unidades significativas, para encontrar agrupaciones uniformes y homogneas, diferenciar regiones adyacentes de la escena, hallar bordes sencillos y sobre todo, que el resultado sea til para los procesos siguientes de la visin artificial. La clasificacin es la extraccin de caractersticas para reconocimiento. La modelacin puede ser solo el etiquetado o emplear algunos modelos geomtricos como los generados a travs de VRML para modelacin y reconstruccin tridimensional. Para el reconocimiento existe una gran cantidad de mtodos, como el reconocimiento por ngulos, puntos clave, cambios de direccin, factor de forma y momentos. Este ltimo el ms general de todos ellos, es adems es inmune a variaciones de posicin, escala y orientacin de los objetos de una imagen. El reconocimiento ptico de caracteres consta de las tareas: segmentacin de lnea, segmentacin de palabras y caracteres, reconocimiento de caracteres y de la produccin de un archivo de salida de texto. Procesos similares a los de procesamiento de imgenes para visin artificial. Los mtodos de calibracin de cmara son el no lineal clsico, el de transformacin homognea, la calibracin por dos planos y por dos estados. Sin embargo la calibracin de cmara regularmente se obtiene por medios empricos. En los procesos industriales los sistemas de visin son de uso especfico, debido a que los sistemas de reconocimiento general son demasiado complejos. Los sistemas de visin en la industria encuentran aplicaciones bsicamente en dos reas: en la inspeccin e identificacin de objetos, por que en ellas es donde se realiza una gran cantidad de operaciones visuales.
64
65
Servidor (incluye conexin serie con el robot). Cmara de monitoreo (web cam).
Administrador
Cmara Web
Internet
Terminal remota
Usuario Remoto
Figura 4.1: Componentes del Laboratorio de Robtica Virtual. 4.1.1 Robot SCARA UNIMATE S-103 El robot UNIMATE S-103 es un robot industrial cuyas aplicaciones ms comunes son el ensamble mecnico y electrnico (Figura 4.2) [Malo 93]. Sus principales caractersticas son: fiabilidad, robustez, fcil operacin y alta velocidad y resolucin de movimiento. Est formado por tres sistemas: mecnico, electrnico (hardware) y computacional (software). El sistema mecnico del robot presenta 3 gdl (grados de libertad) con arquitectura SCARA (Selective Compliance Assembly Robot Arm). Los primeros tres grados de libertad consisten en rotaciones alrededor de ejes verticales paralelos entre s, correspondientes a las articulaciones hombro, codo horizontal y mueca. La mueca se puede ubicar en cualquier punto en un plano horizontal. La cuarta articulacin consiste en un movimiento traslacional a lo largo de un eje vertical coincidente con el eje rotacional de la mueca. Este movimiento es binario (del tipo todo o nada), por lo que, abusando del lenguaje, se le considera como gdl. Un ltimo movimiento es el de apertura y cierre de los dedos de la pinza, el cual tambin es binario (Figura 4.2). La arquitectura computacional para programacin y control de este robot est constituida por tres tarjetas controladoras, basadas en el microprocesador Z-80, encargadas de controlar cada uno de los tres movimientos servocontrolados del robot. Una tarjeta general basada en el mismo circuito microprocesador se encarga de la coordinacin, de la programacin y de la comunicacin con el exterior. Un sistema de canales binarios de entrada y de salida, as como una botonera externa (teach pendant) conectada a uno de los puertos serie del controlador, proporcionan una interfaz de programacin y de control del robot. En el gabinete de control, tambin se encuentran las etapas de potencia de los tres servomecanismos del robot.
66
Figura 4.2: Robot UNIMATE S-103. La operacin del robot se hace desde el teach pendant botonera del robot (Figura 4.1), la cual posee un modo de ejecucin (exec) desde el cual se tiene acceso a los modos operativos de programacin (pgm), enseanza de puntos (teach), ejecucin de programas (run), establecimiento de los parmetros internos del robot ( set), modo de borrado ( clear) y el modo de comunicacin externa, cada uno de estos modos de operacin del robot se describe a continuacin. El modo de operacin set del robot permite programar parmetros globales del robot bajo la denominacin del eje cero (axe 0). Adems permite la programacin de los parmetros de eje de manera individual para las tres articulaciones servocontroladas del robot (axe i con i=1,2,3). El modo de operacin clear. Permite borrar el archivo de datos en el que se registran los valores de las coordenadas articulares de cada uno de los puntos de inters para un programa (points) as como un archivo del programa (pgm). El modo de operacin pgm del robot se crean los programas correspondientes a las tareas que deber realizar el robot. Para ello se dispone de un conjunto de cuatro comandos de movimiento (MP, MT, MS y GR), comandos de control de flujo ( LB, GO, IF, CS, RE y DE), comandos para la lectura de sensores binarios (WT, WF, TT y TF), comandos para el manejo de actuadores binarios externos ( ON y OFF), comandos miscelneos ( SP, SY, ST y NP) y cuatro comandos de ayuda para la edicin de programas (INS, DEL, FIX y NUM). El modo de operacin teach del robot es el modo enseanza, mediante el movimiento manual (ogging) articulacin por articulacin. Es posible guardar en memoria las coordenadas j articulares correspondiente a cada uno de los puntos que conforman la tarea deseada. El sistema C/ ROS (Sistema Operativo del Robot) acepta hasta 94 puntos diferentes, adems de la posicin cero (home). En este modo tambin se permite la edicin manual de los valores de las tres coordenadas articulares en cada uno de los puntos. En este modo el robot puede aceptar informacin de posicin generada en el exterior (computadora remota) a fin de teleoperarlo. El modo de operacin run del robot permite ejecutar un programa cuando ya cuenta con la base de datos correspondiente a las coordenadas articulares de todos los puntos de inters. Ofrece las opciones de ejecucin continua y la de paso a paso. En ambas opciones, es posible supervisar visualmente el comando ejecutado en el display (pantalla) del teach pendant.
67
4.2 Modelacin para el robot UNIMATE S-103 Para realizar una modelacin, se tiene que hallar el movimiento de cada uno de los puntos del robot a partir de sus ngulos de rotacin, lo que dara como resultado una serie de ecuaciones trigonomtricas. Sin embargo esta descripcin resulta larga y laboriosa. Un simulador, en lugar de determinar la situacin geomtrica de muchos puntos, emplea matrices para simplificar el trabajo. Para modelar los movimientos de un robot en la computadora [Ogata 93], se deben de proporcionar los ngulos de rotacin de las articulaciones y los desplazamientos lineales de los enlaces extensibles. Para la modelacin geomtrica del robot es necesario contar con el dibujo del robot, para el robot UNIMATE S-103 se necesita conocer las dimensiones fsicas del espacio de trabajo y del robot mismo. La geometra del robot UNIMATE S-103 se muestra en la Figura 4.3 [Malo 93], el espacio de trabajo, en el que el robot tiene la posibilidad de manipular objetos, se presenta en la Figura 4.4.
10
14
Antebrazo
Brazo
Base
35
68
160
10
14
Radio=35
Brazo Antebrazo
160
Figura 4.4: Dimensiones del espacio de trabajo del robot UNIMATE S-103 (Acotacin: Pulgadas). Para la modelacin virtual, no solo es importante conocer la modelacin geomtrica del robot, sino tambin es necesario conocer la modelacin cinemtica o de movimiento. Se tiene dos tipos de cinemtica, la directa y la inversa. En la cinemtica directa, se tiene el vector de coordenadas de las articulaciones del robot y se busca determinar la posicin y orientacin del rgano terminal respecto a las coordenadas de la base del robot. Una de las formas de representar el modelo de cinemtica de un robot, es por la representacin de Denavit-Hartenberg [Schilling 90], que propone una notacin sistemtica para asignar coordenadas ortogonales por la regla de la mano derecha (implica que las rotaciones se efectan alrededor del origen e el sentido contrario al de las manecillas del reloj, por lo que se n dice que se tiene una rotacin positiva). Comienza por la definicin de cada uno de los eslabones y de las articulaciones de la cadena cinemtica, despus se hace la deteccin de los ejes articulares y finalmente se asocian los ejes de referencia a cada uno de los eslabones de acuerdo a las reglas siguientes: 1. 2. 3. 4. 5. El eje z se encuentra a lo largo del eje de cada articulacin. i k-1 El eje x es normal al eje z y apunta hacia fuera de este. El eje yi completa los ejes de referencia segn la regla de la mano derecha. Cada eslabn tiene una distancia ai, que designa la distancia de separacin entre el eje i-1 i z y el eje x . i-1 i i Cada eslabn tiene un ngulo i de separacin del eje z al eje z respecto del eje x .
k-1
69
6. 7.
Cada articulacin tiene una distancia di, que es la distancia entre la interseccin de los i-1 i i-1 ejes z y x a lo largo del eje z . i-1 i i-1 Cada articulacin tiene un ngulo i entre el eje x al eje x respecto del eje z . Se utiliza la regla de la mano derecha.
Siguiendo repetidamente las reglas anteriores para los eslabones y las articulaciones tenemos el esquema del robot con sus ejes de referencia (Figura 4.5). 2 Codo a1
1
a2
Extensin Vertical x
2
x z
1
d3 3
3
d1
0
1 y z
0 3
x z
3
d4
x Base
p
4 4
OT = rgano Terminal z
Figura 4.5: Estructura cinemtica del robot SCARA UNIMATE S-103. Para obtener la matriz de la cinemtica directa T Base(q) con q = [1, 2, d3, 3] completa del brazo del robot que modela su movimiento cinemtico se hace: T
OT Base(q) OT T
= T0 T1 T2 T3
70
El modelo de cinemtica inversa consiste en encontrar la posicin p y la orientacin R del rgano terminal, buscando los valores articulares (q) que satisfagan la matriz de la Ec. 4.1 La expresin que describe la posicin del rgano terminal esta dada por el vector w de la Ec. 4.2.
...(Ec. 4.2)
Para la articulacin del codo primero se tiene que encontrar el valor de q2 que se forma con los dos primeros componentes del vector w, de la forma mostrada en Ec. 4.3. q2 = w1 + w 2 = a 1 + 2a 1a 2cos(2) + a2
2 2 2 2
...(Ec. 4.3)
La ecuacin 4. 3, presenta dos posibles soluciones, una tomando la regla de la mano izquierda y la otra por la regla de la mano derecha (Ec. 4.4). q2 = arccos((w 1 + w 2 - a 1 - a 2 ) / (2a 1a2))
2 2 2 2
...(Ec. 4.4)
Para la articulacin de la base, el ngulo de la base es 1 se obtiene de la expresin de la Ec. 4.5. 1 = atan{[a 2sen(2)w 1+(a1+a2cos(2))]/((a 1+a 2cos( 2)w 1-a 2sen(2)w 2)} ...(Ec. 4.5) } Para la articulacin de la extensin vertical se considera un eslabn prismtico en d3, el cual permite que el rgano terminal baje y suba, a la vez que gire sobre este eje. De forma simple se puede obtener por la Ec. 4.6. d3 = d1 + d4 - w3 ...(Ec. 4.6)
Para la articulacin del rgano terminal se conocen 1 y 2 por lo que es posible encontrar el ngulo de rotacin del rgano terminal a travs de la Ec. 4.7. 3 = 1-2-atan(sin(1-2-3)/cos(1-2-3)) ...(Ec. 4.7)
Una vez que es conocida la modelacin geomtrica y matemtica del robot es posible realizar la representacin en el espacio tridimensional y simular los movimientos del robot empleando su cinemtica. 4.3 Desarrollo del robot virtual Para crear el mundo virtual del Robot UNIMATE S-103 [Alarcn 00, VRML 97], se utiliz el lenguaje VRML 2.0 (Virtual Reality Modeling Language), una poderosa herramienta para la creacin de mundos virtuales con objetos tridimensionales que permite el control de estos objetos a travs de sensores de movimiento, tacto, visibilidad, proximidad y tiempo. Los objetos tridimensionales realizados con este lenguaje pueden ser visualizados desde navegador de Internet (Internet Explorer, Netscape Comunicator, etc.), aadiendo
un
71
visualizadores (plug-in) como Cosmo o Platinum. Para la creacin del robot virtual se tomaron en cuenta las medidas del robot real, para dar el mayor realismo posible al mundo virtual. Despus, se procedi a hacer el dibujo utilizando slo las formas geomtricas tridimensionales bsicas, predefinidas en el lenguaje VRML como las primitivas: Box, Cylinder, Cone y Sphere, todo esto a travs del nodo llamado transform que contiene los campos translation, rotation y scale, adems del campo children donde se colocan todos los objetos que estarn sometidos a la transformacin. Para el dibujo, el robot se dividi en 7 objetos rgidos, lo que permite adaptar los movimientos articulares del robot. Las 7 partes consideradas fueron: base (Inmvil), brazo, antebrazo, mano, pinza, dedo izquierdo y dedo derecho, como se ilustra en la Figura 4.6. En la base, esta contenido todo aquello que no se mueve y a partir de esta se hacen anidamientos, es decir, cada una de las partes esta contenida en la anterior y esta trasladada con respecto al eje de coordenadas de la parte en la que esta contenida. Para tener una idea mas clara de esto, VRML permite crear subejes y tomarlos como referencia para todo aquello que est dibujado dentro de estos. Para hacer esto se utiliza el nodo transform. De esta manera el brazo esta dibujado justamente a partir del subeje correspondiente al eje real de movimiento y as mismo pasa con el antebrazo, la m ano y la pinza; los dedos izquierdo y derecho estn dibujados a partir de los subejes.
Base
Figura 4.6: Divisiones para el robot virtual UNIMATE S-103. Una vez realizado el modelo geomtrico se procede a definir sensores e interpoladores para el movimiento del Robot Virtual. Para generar los movimientos binarios de la Pinza: abrir - cerrar, as como subir - bajar, fue necesario crear interpoladores de posicin, pues ambos son del tipo todo nada. En los interpoladores utilizados se define una coordenada inicial y una final, las cuales estarn relacionadas con el valor lgico de la variable asociada (0 1) como se muestra en el Programa 4.1.
72
1. PositionInterpolator { 2. key [0,1] 3. keyValue[1 0 0, 0 1 0]} Programa 4.1: Interpoladores de posicin en VRML para el movimiento del robot. En este caso el valor 0 o inicial est asociado con el punto de coordenadas (1, 0, 0). Adems fue necesario crear cuatro sensores de tiempo en los cuales se define un ciclo que deben realizar los movimientos de las articulaciones del robot, es decir, para subir y bajar la pinza, as como abrir y cerrar los dedos. En el Programa 4.2 se aprecia la manera de definir los sensores de tiempo mencionados. 1. TimeSensor{ CycleInterval 2 } Programa 4.2: Definicin de los sensores de tiempo en VRML para el movimiento del robot. En el Programa 4.2 define un sensor de tiempo que tiene un ciclo de dos segundos. En la implementacin de los movimientos articulares de rotacin del a ntebrazo, brazo y pinza, slo se indica una rotacin en el botn que tiene definido el sensor de movimiento cilndrico, el campo rotation de cada una de las partes correspondientes va cambiando de acuerdo con el movimiento del ratn. Esto se hace a travs de las instrucciones del Programa 4.3. 1. ROUTE SensorGirarAntebrazo.rotation_changed TO Antebrazo.rotation 2. ROUTE SensorGirarAntebrazo.rotation_changed TO BotonAntebrazo.rotation Programa 4.3: Definicin de las rotaciones en VRML para el movimiento del robot. Aunque se han definido todos los movimientos con que cuenta el robot real, hace falta tener un control ms exacto sobre estos. Por ejemplo, en el momento en que la pinza se encuentre abajo, es necesario que haga el trabajo de subir con solo tocar el mismo botn, o bien que el ngulo de rotacin del brazo no cambie cuando se mueve el ngulo de rotacin del antebrazo. Esto no es posible en VRML (Captulo 2: Reconstruccin Tridimensional con VRML), pero afortunadamente nos permite utilizar otros lenguajes que son capaces de realizar estas funciones. Este procedimiento se realiza a travs del nodo Script (para utilizar Java), en donde se hacen las funciones que han de controlar los movimientos y es incluido en cada una de las rutas en donde es necesario tener ese tipo de control; igual que los anteriores nodos, solo se define y es mandado llamar por eventos de entrada, obtenindose a partir de sus funciones los respectivos eventos de salida. Una vez terminada la modelacin, el paso siguiente es operar al robot a distancia mediante teleoperacin. El robot UNIMATE S-103 es un brazo cuyo control es de arquitectura cerrada (no es posible su modificacin), por lo cual es necesario adaptarse a los parmetros ya establecidos en el control del robot. La programacin y el control del movimiento de este robot industrial se realizan tradicionalmente por el teach pendant. Esta interfaz de comunicacin entre el operador y el robot fsico consiste en una botonera manual basada en el microcontrolador 6802 externa al gabinete de control del robot conectada a uno de sus puertos seriales. En trminos prcticos el objetivo de la teleoperacin consiste en sustituir este teach pendant (botonera) fsico por uno virtual, tal que se pueda visualizar y utilizar desde prcticamente cualquier parte del mundo va Internet.
73
4.4 Visin artificial en robtica El objetivo de un sistema de percepcin para robots industriales, basado en sensores de visin, es el de transformar una imagen del medio ambiente, proporcionada por una cmara, en una descripcin de los elementos presentes en el entorno. La descripcin debe de contener la informacin necesaria para que el sistema de control pueda efectuar los movimientos del robot que permitan la ejecucin de una tarea programada. La visin artificial en robtica permite a los robots actuar con caractersticas de adaptabilidad, flexibilidad y capacidad de reorganizacin [Ibarra 90]. La visin artificial juega un papel primordial en sistemas robticos llamados inteligentes, y en general en sistemas flexibles de manufactura, pues permite la retroalimentacin sensorial fina, que hace posible ampliar las capacidades del robot. La utilizacin de sistemas de visin artificial en sistemas industriales ha aumentado en los ltimos aos, en tareas como: inspeccin, identificacin, medicin y control. Sin embargo estos sistemas son de propsito especial y por lo tanto con algunas limitaciones. Por otro lado se requieren sistemas de propsito general que sean capaces de reaccionar de forma rpida en cadenas de produccin variables. Resumen El Laboratorio de Robtica Virtual del CINVESTAV permite la realizacin de prcticas de programacin y control de un puesto de trabajo robotizado que efecte tareas de manipulacin usando sistemas de visin artificial. Tambin es posible desarrollar una aplicacin de manipulacin robotizada asistida por visin, depurarla en la terminal remota local por simulacin grfica en tres dimensiones y enviarla al servidor del Laboratorio de Robtica Virtual del CINVESTAV para que el robot industrial las ejecute en tiempo real, monitoreando su comportamiento visualmente desde la terminal remota local. Uno de los componentes ms importantes del laboratorio es el robot UNIMATE S-103 de arquitectura SCARA. Para representar un robot con realidad virtual, es necesario conocer su forma y dimensiones geomtricas, para que la reconstruccin tridimensional sea lo ms parecida al robot real. Sin embargo hace falta conocer los modelos matemticos del robot, para que el robot virtual se pueda manipular y mover de forma similar a como se hara con el robot real. Los modelos matemticos del robot, se refieren bsicamente a su cinemtica. En el modelo de cinemtica directa, se desea conocer la posicin del rgano terminal, conociendo las posiciones de las articulaciones del robot, mientras que en la cinemtica inversa se conoce la posicin del rgano terminal y se intenta conocer las coordenadas articulares del robot. Conocidos los modelos matemticos, geomtricos y cinemticos del robot, es posible su modelacin virtual a travs de VRML. As es posible hacer que el modelo desarrollado se vea, se mueva y se comporte como el robot real y de est manera incluso sustituir al robot real por el robot virtual en la mayora de las practicas de manejo de robots. Para mover al robot en el espacio virtual se usan sensores de tacto e interpoladores de posicin y de tiempo, cuando se encuentra modelado en VRML, es posible manipularlo mediante Internet, a travs de programas de comunicacin escritos en Java. La visin artificial en robtica permite a los robots actuar con caractersticas de adaptabilidad, flexibilidad y capacidad de reorganizacin, permitindoles desempear tareas de inspeccin, identificacin, medicin y control. Por lo que la inclusin de sistemas de visin en robots seguir amplindose en los prximos aos.
74
sistema permite visualizar la mesa de trabajo del robot a distancia sin las incomodidades de la transferencia de imgenes a travs de Internet, lo cual se logra empleando la modelacin del espacio de trabajo del robot y al robot en un ambiente virtual. Esto permite al robot UNIMATE S-103 ampliar sus capacidades de integracin con el entorno, dndoles mayor libertad a los usuarios del robot al conocer las caractersticas de los objetos presentes en el espacio de trabajo del robot. 5.2 Aspectos de diseo En sistemas industriales no existen sistemas de visin de propsito general. Los sistemas de visin usados en la industria presentan una alta especializacin, es decir, son sistemas de propsito especial que se disean para una aplicacin especfica. Las consideraciones primarias de diseo para un sistema de visin industrial son el costo, la velocidad, la precisin y la confiabilidad [Corke 96]. La primera consideracin es el costo, est tal vez es la limitacin ms grande en la implementacin de un sistema de visin artificial. En ocasiones la sustitucin de los humanos por sistemas de visin resulta ser muy costosa debido principalmente a los costos que involucra la calibracin del sistema y a la gran diversidad de objetos que cada industria maneja. Otros factores como son la velocidad, la precisin y la confiabilidad resultan ser poco relevantes, debido a que un sistema de visin presenta un mejor desempeo que su contraparte humana. En la mayora de los casos, los sistemas de visin en tiempo real superan por mucho a los humanos. Por ejemplo, cuando se requiere contar una gran cantidad de piezas en un tiempo menor a un segundo, los humamos cometeran una gran cantidad de errores, mientras que una mquina podra contar una gran cantidad de piezas por segundo, durante el tiempo de produccin con un mnimo de errores. 5.3 Diseo del sistema visin El objetivo de un sistema de visin artificial es realizar una descripcin simblica de una imagen proveniente del mundo real. Para el caso del sistema de visin para el Laboratorio de Robtica Virtual el objetivo es el de localizar cada uno de los objetos que se encuentren presentes en el espacio de trabajo del robot UNIMATE S-103. El sistema de visin deber de proveer al robot, de la informacin sobre el tipo de objeto, localizacin, orientacin y tamao, para que el robot pueda determinar como manipularlo y si es posible realizar alguna operacin con el objeto, pero tambin debe de informar a los usuarios locales o remotos la situacin de dichos objetos. Una vez que se conocen los objetos presentes y sus caractersticas, el programa realiza la reconstruccin tridimensional que representa el espacio de trabajo real del robot, usando VRML (Virtual Reality Modeling Language). Sin embargo, para la informacin del usuario loc al o remoto resulta ms prctico enviar a travs de Internet un archivo con las caractersticas de los objetos y, realizar en el servidor del robot la reconstruccin en el espacio tridimensional de los objetos a partir de estos datos, por que el modelo del robot no cambia. As solo se aaden los objetos al robot virtual ya modelado. Las comunicaciones son necesarias para informar a los usuarios locales (son los usuarios que se encuentran en una terminal cercana al robot como se observa en la Figura 4.1) o remotos (son los usuarios que acceden al robot a travs de Internet como se observa en la Figura 4.1) la posicin no solo de los objetos, sino tambin del robot, de las herramientas y muebles que se encuentren alrededor del robot, etc. Para las comunicaciones se presentan tres soluciones, por conexin con URL (Uniform Resource Locators) usado en la Web para localizar datos en Internet, mediante el empleo de sockets de flujo basados en conexiones y con datagramas con transmisin sin conexiones. La Figura 5.1 muestra el esquema para una conexin con URL.
76
Escena a Procesar
1
Segmentacin
Bsqueda de esquinas
9
Programa: VISION
13
Figura 5.1: Sistema de Visin para el Robot UNIMATE S-103 con comunicaciones con conexin a travs de URL.
77
La escena a procesar (Figura 5.1 -mdulo 1), est conformada solo por el espacio de trabajo del robot UNIMATE S-103 y los objetos presentes dentro de este espacio, por lo que los objetos que se encuentren alrededor de dicho (controles, mecanismos, herramientas, etc.) espacio sern descartados. La adquisicin de imgenes (Figura 5.1 -mdulo 2), se realiza a travs de una cmara Web de estado slido (Figura 5.2 y Apndice A: Sistemas de Adquisicin de Imgenes). Esta cmara convierte a formato digital la imagen, por lo que puede ser inmediatamente procesada por el resto del programa. La resolucin de las cmaras de este tipo es lo suficientemente buena como para poder localizar y reconocer las caractersticas de los objetos que se encuentren en su espacio de visin, de hecho solo se usa una cuarta parte aproximadamente de su resolucin mxima.
Figura 5.2: Cmara Web usada para adquisicin de imgenes. Una vez que la imagen es capturada se tiene en formato de mapa de bits BMP, sin embargo existen una gran diversidad de formatos, si es necesario la imagen puede ser convertida a formato BMP mediante algn programa. El preprocesamiento de imgenes (Figura 5.1 -mdulo 3), resalta las caractersticas relevantes de una imagen para el sistema de visin. El procesamiento de imgenes se puede llevar a cabo junto con la conversin de formato, pues muchos de los programas usados, no solo cambian entre un formato a otro, sino que tambin permiten aplicar filtros, eliminar ruido, pasar a imgenes binarias, etc. El programa diseado para el reconocimiento de objetos puede leer imgenes en formato BMP (Bitmap.- imagen de mapa de bits), se us el programa Image Alchemy para la conversin y preprocesamiento de las imgenes por su simplicidad y rapidez. Alchemy [Alchemy 96] es un potente conversor de grficos para DOS (Sistema Operativo en Disco), aunque existen versiones para otros sistemas operativos como Windows y Linux. Aparte de las conversiones entre mltiples formatos (ms de 60), se pueden modificar con facilidad las medidas, paletas (colores) y otras caractersticas de la imagen. Se llama mediante la instruccin: C:\>Alchemy [opciones] archivo fuente [archivo destino] Para adecuar las imgenes a analizar, es necesario pasarlas al formato de mapa de bit monocromtico (imgenes binarias) (Figura 5.1 -mdulo 4), para esto se emplea la instruccin: C:\>Alchemy b w c2 d0 [archivo fuente] Donde: -b -w -c2 -d0 Imagen Blanco y Negro Imagen Windows BitMap Colores de Salida = 2 Difusin = 0
78
Otros programas pueden ser empleados para cubrir este propsito. Algunos de estos programas se describen a continuacin: Vpic.- es un conversor y visualizador de grficos de distribucin libre. Pv.- es un conversor y visualizador de grficos de distribucin libre, con algunas particularidades en el mbito de procesamiento de imgenes. Posee diferentes filtros y mtodos de tramado. PaintShop Pro. - permite ver y realizar la conversin entre grficos, adems de permitir la edicin de los mismos, as como la correccin del color y filtros diversos. Workshop.- es un conversor y visualizador de grficos. Jasc Image Robot.- es un procesador de imgenes por lotes. Permite aplicar una serie de instrucciones de conversin, filtrado y realce a una imagen o a un grupo de imgenes. ImageCommander. - es un programa de visualizacin y conversin de imgenes. El archivo de calibracin de cmara (Figura 5.1 -mdulo 5), contiene la informacin necesaria para convertir entre coordenadas de imagen a coordenadas del robot, haciendo posible que el robot pueda manipular los objetos que el sistema de visin localice (Figura 5.3).
Escala en el eje x = 9.17 pxeles/cm Escala en el eje y = 9.11 pxeles/cm ngulo = 0.18 Desplazamiento en x = 0.31 cm Desplazamiento en y = -0.14 cm
Figura 5.3: Datos del archivo de calibracin de cmara camara.cal. El archivo de objetos a clasificar (Figura 5.1 -mdulo 6), almacena los datos de los objetos que pueden ser reconocidos. Contiene la informacin relevante de cada uno de los objetos que el sistema puede reconocer (Figura 5.4).
Identificacin 1 2 3 4 5 6 Nombre Tringulo Cuadrado Rectngulo Hexgono Crculo Indicador Parmetros de identificacin 1.4000 0.0015 0.0080 0.0000 2.0000 3.5000 0.0025 0.0100 0.0055 2.0000 5.0000 3.0000 4.0000 0.0000 2.0000 1.9500 0.0025 0.0150 0.0000 2.0000 2.2000 0.0000 0.0035 0.0000 0.0050 0.6500 0.0000 0.0070 0.0000 2.0000
Figura 5.4: Archivo de umbrales umb.cal. Cuando la imagen proveniente de la escena del espacio de trabajo del robot es capturada y procesada, el programa debe almacenarla para iniciar el proceso de bsqueda de objetos (Figura 5.1 -mdulo 7). La imagen de entrada es almacenada en una matriz llamada img(x,y), en la cual cada bit, representa un pxel de la imagen, la matriz se muestra en la Figura 5.5. 0,0 0,1 .... 0,y-1 0,y 1,0 .... x-1,0 1,1 .... x-1,1 .... .... .... 1,y-1 .... x-1,y-1 1,y .... x-1,y 40 bytes = 320 columnas x,0 x,1 .... x,y-1 x,y
240 lneas
La imagen de entrada presenta el formato BMP con un tamao de 320x240 pxeles, es decir, 320 columnas por 240 lneas, siendo este un tamao adecuado para realizar el reconocimiento (76,800 pxeles). Tambin se leen los archivos de calibracin de cmara y los datos de los objetos a clasificar. La extraccin de contornos (Figura 5.1 -mdulo 8), se realiza por el mtodo de aproximacin de Roberts, este procedimiento consiste en la aplicacin de dos mscaras sucesivas para calcular el vector gradiente en las direcciones diagonales. Las mscaras se describen en el Captulo 3: Visin Artificial y son las que se muestran en la Figura 5.6. 0 -1 1 0 y 1 0 0 -1
Figura 5.6: Mscaras usadas para la extraccin de contornos. El algoritmo usado recorre la imagen img(x,y) calculando el valor del punto donde se ubique la esquina de cada mscara [Schidlt 92, Ibarra 98]. Este proceso se lleva a cabo usando el Programa 5.1. 1. xmax = ancho de la imagen 2. ymax = alto de la imagen 3. for(j=0;j<ymax;j++) /* Recorre lneas 4. for(i=0;i<xmax;i++) /* Recorre columnas 5. a=img(i,j) /* Carga el primer bit 6. b=img(i+1,j+1) /* Carga el segundo bit 7. c=img(i,j+1) /* Carga el tercer bit 8. d=img(i+1,j) /* Carga el cuarto bit 9. img(x,y)=abs(a-b)+abs(c-d) /* Aplica la mscara 10. if(img(x,y) > 0) img(x,y) = 1 /* Hace binaria la resultante */ Programa 5.1: Algoritmo para extraccin de contornos. Una vez que la imagen se reduce a los contornos, es necesario fragmentarla en objetos, ste proceso es conocido como segmentacin y se realiza mediante bsqueda de esquinas (Figura 5.1 -mdulo 9). Se usa un algoritmo que busca esquinas definidas de alguna forma. En este caso se busca una esquina definida de la forma que muestra en la Figura 5.7.
*/ */ */ */ */ */ */ imagen
0 (x-4,y-1) * No importa
0 (x-3,y-1) * No importa
0 (x-2,y-1) * No importa
0 (x-1,y-1) * No importa
0 (x+1,y-1) 0 (x+1,y)
Fondo =0
Figura 5.7: Definicin de esquina para segmentacin. Para buscar las esquinas de los objetos es necesario recorrer toda la imagen, sin embargo es posible que para un mismo objeto se encuentren dos o ms esquinas. Cada esquina es almacenada como un punto de coordenadas (x,y), el algoritmo se muestra en el Programa 5.2.
80
xmax = ancho de la imagen ymax = alto de la imagen p = 0 for(j=0;j<ymax;j++) /* for(i=0;i<xmax;i++) /* a=img(x-4,y-1) /* b=img(x-3,y-1) /* c=img(x-2,y-1) /* d=img(x-1,y-1) /* e=img(x,y-1) /* f=img(x+1,y-1) /* g=img(x,y) /* h=img(x+1,y) /* if(a=0 & b=0 & c=0 & d=0 & /* Es esquina? */ punto.x(p)=i /* punto.y(p)=j /* p++ /*
Recorre lneas Recorre columnas Almacena pxel x-4,y-1 Almacena pxel x-3,y-1 Almacena pxel x-2,y-1 Almacena pxel x-1,y-1 Almacena pxel x,y-1 Almacena pxel x+1,y-1 Almacena pxel x,y Almacena pxel x+1,y e=0 & f=0 & g=1 & h=0) Guarda x Guarda y Siguiente punto
*/ */ */ */ */ */ */ */ */ */
*/ */ */
Programa 5.2: Algoritmo de bsqueda de esquinas para segmentacin. Este proceso solo encuentra las esquinas de los objetos, para terminar la segmentacin es necesario encontrar todos los puntos que corresponde al contorno de cada objeto, por lo que el siguiente proceso es el de seguimiento de contornos. El seguimiento de contornos (Figura 5.1 -mdulo 10), permite realizar varias operaciones importantes para el reconocimiento, por un lado sigue un contorno almacenando los punt os que lo forman, luego marca los puntos de ese contorno como visitados (para evitar que regrese sobre su propio camino). S se encontraron dos esquinas en un mismo objeto, en este paso se eliminan. Se puede hacer la eliminacin de ruido, pues se calcula el rea del contorno. Si esta es muy pequea, corresponde seguramente a ruido por lo que no es considerada como un objeto y simplemente se desecha. Para seguimiento de contornos se emplea una conectividad 4-conectado (Figura 5.8). Cada uno de los vecinos de un punto se recorre en la direccin de las manecillas del reloj. 4 (x-1,y) 3 (x,y-1) (x,y) (x,y+1) 1 (x+1,y) 2
Figura 5.8: Seguimiento de contornos 4-conectados. El algoritmo de seguimiento de contornos se muestra en el Programa 5.3, consiste bsicamente en seguir el rastro de los pxeles que conforman cada contorno y marcando los pxeles como ya visitados, en caso de que el contorno no sea cerrado, se coloca un tiempo de vida despus del cual el algoritmo se detiene y calcula los momentos del segmento de contorno hallado. Una vez que son conocidas las coordenadas de los puntos que conforman un contorno, hace falta calcular los momentos para iniciar el reconocimiento. La extraccin de caractersticas para clasificacin (Figura 5.1 -mdulo 11), se realiz mediante el clculo de momentos de Hu usando las ecuaciones de los captulos anteriores. El algoritmo se muestra en el Programa 5.4, se emplean por que las caractersticas extradas por este mtodo son invariantes a posicin, escala y orientacin de los objetos bajo estudio.
81
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
pcont=0 /* Contador de puntos del contorno inicio(x,y)=punto(x,y) /* Guarda el punto de inicio if(punto(x,y).visitado == TRUE) /* Punto ya visitado? continua con la siguiente esquina; else punto(x,y).visitado = TRUE /* Esquina como visitada i=x j=y while(inicio(x,y)!=punto(i,j)) /* Sigue el contorno if(punto(i,j).visitado == FALSE & punto(i+1,j)== TRUE) /* punto.sal(i,j)= punto(i+1,j) punto(i+1,j).visitado = TRUE i++ if(punto(i,j).visitado == FALSE & punto(i,j+1)== TRUE) /* punto.sal(i,j)= punto(i,j+1) punto(i,j+1).visitado = TRUE j++ if(punto(i,j).visitado == FALSE & punto(i-1,j)== TRUE) /* punto.sal(i,j)= punto(i-1,j) punto(i-1,j).visitado = TRUE i-if(punto(i,j).visitado == FALSE & punto(i,j-1)== TRUE) /* punto.sal(i,j)= punto(i,j-1) punto(i,j-1).visitado = TRUE j-pcont++ /* Anexa punto hallado if(pcont>Umbral) /* Elimina ruido o manchas calculo de momentos; /* Va a calcular momentos Programa 5.3: Algoritmo de seguimiento de contornos para segmentacin.
*/ */ */
*/
*/ */
*/
*/
*/
*/ */ */
1. for(i=1;i<pcont-1;i++) /* momentos de orden p+q 2. m00++ 3. m10=auxx[i]+m10 4. m01=auxy[i]+m01 5. obj[pr].area=m00 /* Area */ 6. obj[pr].x=m10/m00 /* Centroide xy */ 7. obj[pr].y=m01/m00 /* Centroide y */ 8. for(i=1;i<pcont-1;i++) /* Momentos centrales */ 9. u20=(auxx[i]-obj[pr].x)*(auxx[i]-obj[pr].x)+u20 10. u02=(auxy[i]-obj[pr].y)*(auxy[i]-obj[pr].y)+u02 11. u11=(auxx[i]-obj[pr].x)*(auxy[i]-obj[pr].y)+u11 12. u30=(auxx[i]-obj[pr].x)*(auxx[i]-obj[pr].x)*(auxx[i]obj[pr].x)+u30 13. u03=(auxy[i]-obj[pr].y)*(auxy[i]-obj[pr].y)*(auxy[i]obj[pr].y)+u03 14. u21=(auxx[i]-obj[pr].x)*(auxx[i]-obj[pr].x)*(auxy[i]obj[pr].y)+u21 15. u12=(auxx[i]-obj[pr].x)*(auxy[i]-obj[pr].y)*(auxy[i]obj[pr].y)+u12 16. obj[pr].ang=atan2(auxy[i]-obj[pr].y,auxx[i]-obj[pr].x) /* ngulo */ Programa 5.4: Algoritmo de clculo de momentos para reconocimiento (Parte 1/2).
*/
82
17. obj[pr].dist=sqrt(obj[pr].dist) /* tamao del centro a la esquina */ 18. cc1=pow(m00,2.) /* Momentos normalizados */ 19. cc2=pow(m00,5./2.) 20. n20=u20/cc1 21. n02=u02/cc1 22. n11=u11/cc1 23. n30=u30/cc2 24. n03=u03/cc2 25. n21=u21/cc2 26. n12=u12/cc2 27. obj[pr].f1=fabs(n20)+fabs(n02) /* Momentos de Hu o de tercer orden */ 28. obj[pr].f2=pow(n20-n02,2.)+4.*pow(n11,2.) 29. obj[pr].f3=pow(n30-3.*n12,2.)+pow(3.*n21-n03,2.) 30. obj[pr].f4=pow(n30+n12,2.)+pow(n21+n03,2.) 31. obj[pr].id=0 32. for(i=1;i<=pid;i++) /* Clasificacin mediante umbrales */ 33. if(obj[pr].f1>=lima[i] && obj[pr].f1<=limb[i] && obj[pr].f2>=limc[i] && obj[pr].f2<=limd[i]) 34. obj[pr].id=id[i]; Programa 5.4: Algoritmo de clculo de momentos para reconocimiento (Parte 2/2). Posteriormente solo es necesario comparar los momentos calculados con los resultados de los anlisis anteriores para saber a que categora de objetos corresponden, lo que identifica a un objeto como perteneciente a una cierta clase. Este proceso de clasificacin se lleva a cabo mediante una instruccin condicional, y simplemente se compara cada valor con los almacenados. El programa almacena dos archivos: uno con los objetos de la escena modelados con VRML (Figura 5.1 -mdulo 12) el cual puede ser visible va Internet y otro con los datos de los objetos hallados (Figura 5.1 -mdulo 13), necesario para que el robot conozca los objetos que puede manipular. Para llevar a cabo las comunicaciones se empleo una conexin con URL (Uniform Resource Locators) (Figura 5.1 -mdulo A), se programa en lenguaje Java, est aplicacin estar ejecutndose para leer un archivo desde un servidor, en este caso desde el servidor de visin del Laboratorio de Robtica Virtual. El navegador de Internet (Figura 5.1 -mdulo N) permite visualizar la interfaz de usuario. Algunos de los navegadores empleados son Netscape e Internet Explorer. Un navegador Web proporciona una interfaz que encubre al usuario un complejo entramado de programacin, como son los programas de comunicaciones. En forma de resumen se muestran los pasos descritos anteriormente en la Figura 5.9, al aplicarlos a una imagen.
83
Proceso 1) Escena a procesar. Mundo real del robot. Figura 5.1 -mdulo 1
Resultado
2) Imagen de entrada, capturada con la cmara con un tipo BMP de 256 colores. Figura 5.1 -mdulo 2
3) Preprocesamiento, se convierte la imagen a BMP binaria, a travs de un programa comercial. Figura 5.1 -mdulos 3 y 4
5) Segmentacin: Bsqueda de esquinas. Cada cuadro representa una esquina hallada por el algoritmo. Figura 5.1 -mdulo 9
Figura 5.9: Imgenes obtenidas al aplicar los algoritmos para reconocimiento (Parte 1/2).
84
Proceso 6) Segmentacin: Seguimiento de Contornos. Por cada contorno hallado mayor a 15 pxeles, se considera como un objeto sujeto a identificacin, por lo que el resto de objetos se elimina, pues se consideran como ruido. Figura 5.1 -mdulo 10 7) Clculo de momentos de Hu. Para cada contorno hallado se calculan los parmetros necesarios para llevar a cabo una clasificacin. Figura 5.1 -mdulos 11, 12 y 13
Resultado
Objeto 1: Centro (x,y) = (101.8,44.4), Angulo =3.1 No. de pxeles =197 1=2.151 2=0.003 3=0.014 Identificacin = Cuadrado Objeto 2: Centro (x,y) = (34.4, 39.4), Angulo =65.2 No. de pxeles =131 1=2.135 2=0.000 3=0.003 Identificacin = Circulo
8) Presentacin en un navegador de Internet. Consiste en la modelacin de objetos y su incrustacin en el mundo virtual del robot. Figura 5.1 -mdulos A y N
Figura 5.9: Imgenes obtenidas al aplicar los algoritmos para reconocimiento (Parte 2/2). 5.4 Anlisis del sistema de visin En los captulos anteriores se determin, que la complejidad de los procedimientos empleados para el reconocimiento es cuadrtica, es decir, que el tiempo empleado en el proceso se incrementa de esa forma. Para apreciar el tiempo que le toma a nuestro sistema en general, el reconocimiento de una imagen, se realizaron tres pruebas. La primera consisti en mantener el tamao de la imagen constante mientras se incrementa el nmero de objetos en la escena, en la segunda se cambi el tamao de la imagen pero se mant uvo constante el nmero de objetos en la escena, y en la tercera se compar el tamao de la imagen de entrada, en relacin al archivo de salida el cual contiene la descripcin de los objetos presentes en la escena.
85
Para la primera prueba, en donde se mantiene constante el tamao de la imagen y se varia el nmero de objetos, el tamao de la imagen se mantuvo fijo en 320*240 pxeles, mientras el nmero de objetos se incrementaba de 25 en 25 hasta llegar a 400. Obviamente el robot nunca va a trabajar con tal cantidad de objetos (solo puede almacenar 94 puntos), pero permite obtener un modelo del comportamiento del algoritmo al incrementar el nmero de objetos por identificar. Los resultados nos indican el tiempo necesario que le toma al sistema de reconocimiento, detectar objetos sobre la mesa de trabajo del robot y para cuantos objetos resulta prctico emplearlo. Los tiempos se midieron usando una imagen sinttica. La imagen se genera distribuyendo los objetos uniformemente en toda la imagen. Cada objeto presenta un rea de 24 pxeles con un permetro de 18 pxeles y se ubican en forma alternada como se muestra en la Figura 5.10.
Figura 5.10: Imagen de prueba. Se considera que los tiempos de lectura y almacenamiento de la imagen son constantes. Por cada variacin de objetos se midi 50 veces el tiempo para obtenerlo de la forma ms precisa posible, cada uno de estos promedios corresponde a t1, t2, t3, t4 y t5. El resumen se muestra en la Tabla 5.1 en donde se presentan tambin el resultado del ajuste de la curva realizado por el mtodo de mnimos cuadrados [Chapra 96, Nakamura 92], y la grfica resultante en la Figura 5.11.
Objetos (n) t1(s) t2(s) t3(s) t4(s) t5(s) Media del Desviacin Imgenes / Ajuste tiempo (s) Estndar segundo
25 50 75 100 125 150 175 200 225 250 275 300 325 350 375 400
0.0385 0.0495 0.0549 0.0495 0.0549 0.0604 0.0714 0.0714 0.0769 0.0824 0.0934 0.0934 0.0934 0.1044 0.1154 0.1099
0.0385 0.0440 0.0495 0.0549 0.0659 0.0604 0.0714 0.0769 0.0769 0.0824 0.0824 0.0934 0.1044 0.1044 0.1044 0.1154
0.0385 0.0385 0.0440 0.0549 0.0549 0.0659 0.0659 0.0714 0.0824 0.0824 0.0934 0.0934 0.0934 0.1044 0.1099 0.1099
0.0440 0.0440 0.0495 0.0549 0.0604 0.0659 0.0659 0.0714 0.0769 0.0824 0.0879 0.0934 0.1044 0.0989 0.1044 0.1154
0.0385 0.0440 0.0549 0.0549 0.0659 0.0604 0.0714 0.0769 0.0824 0.0824 0.0879 0.0934 0.0934 0.1044 0.1099 0.1154
0.0396 0.0440 0.0505 0.0538 0.0604 0.0626 0.0692 0.0736 0.0791 0.0824 0.0890 0.0934 0.0978 0.1033 0.1088 0.1132
0.0022 0.0035 0.0041 0.0022 0.0049 0.0027 0.0027 0.0027 0.0027 0.0000 0.0041 0.0000 0.0054 0.0022 0.0041 0.0027
25.2778 22.7500 19.7826 18.5714 16.5454 15.9649 14.4444 13.5821 12.6389 12.1333 11.2346 10.7059 10.2247 9.6808 9.1919 8.8349
0.0396 0.0445 0.0493 0.0542 0.0591 0.0640 0.0689 0.0738 0.0787 0.0836 0.0885 0.0934 0.0983 0.1032 0.1081 0.1130
Tabla 5.1: Tiempos medidos cuando se incrementa el nmero de objetos. Se observa que la grfica presenta un comportamiento lineal, lo que significa que el tiempo de ejecucin vara de forma directamente proporcional a la forma en que se incrementen el nmero
Araujo Daz David
86
de objetos en la escena. La ecuacin que mejor se ajusta a la grfica es la de una recta (Ec. 5.1). Tiempo de ejecucin (s) = 0.0346525 + 0.000195959n Donde n es el nmero de objetos presentes en la escena.
Tiempos medidos cuando se incrementa el Nmero de Objetos en la Escena
0.1200
...(Ec. 5.1)
0.1000
0.0800
Tiempo (s)
0.0600
Medidos Ajustados
0.0400
0.0200
0.0000 25 50 75 100 125 150 175 200 225 250 275 300 325 350 375 400 Nmero de Objetos
Figura 5.11: Grfica con tamao de imagen constante y nmero de objetos variable. Para la segunda prueba se mantiene constante el nmero de objetos y vara el tamao de la imagen. El tamao de la imagen en la escena se increment desde una muy pequea ( 80*60 pxeles), en la cual apenas se lograran distinguir algunos detalles, hasta una de tamao apropiado que permite reconocer la mayor parte de los objetos que pudiesen encontrarse en la mesa de trabajo del robot industrial (320*240 pxeles). Los tiempos se midieron usando una imagen sinttica, por lo que los tiempos para la lectura y almacenamiento de la imagen se consideran constantes. Por cada variacin en el tamao de la imagen se midi 100 veces el tiempo, para obtenerlo de la forma ms precisa posible, cada uno de estos promedios corresponde a t1, t2, t 3, t 4 y t5. Aqu es necesario incrementar el nmero de medidas por que los tiempos involucrados son menores. El propsito de esta prueba es observar como se mejora o empeora el tiempo tomando imgenes de menor o mayor calidad, lo que implica un procesamiento de un mayor nmero de puntos (pxeles) por parte del programa. El resumen con los resultados obtenidos se muestra en la Tabla 5.2 en donde se presentan tambin el resultado del ajuste de la curva realizado por el mtodo de mnimos cuadrados [Chapra 96, Nakamura 92], y en la Figura 5.12. 87
Araujo Daz David
Tamao x y
Pxeles (p)
t1(s)
t2(s)
t3(s)
t4(s)
t5(s)
Tabla 5.2: Tiempos medidos cuando se modifica el tamao de imagen. Tiempos medidos cuando se varia el Tamao de la Imagen
0.0450
0.0400
0.0350
0.0300
0.0150
0.0100
0.0050
Figura 5.12: Grfica con nmero de objetos constante y tamao de imagen variable. Se observa que el tiempo de ejecucin en este caso se incrementa de forma ms rpida que para el caso anterior, debido a que la complejidad de los algoritmos involucrados es O(n*m),
88
donde n es el nmero de filas y m es el nmero de columnas. Al ajustar la ecuacin que representa este incremento se obtuvo un polinomio cuadrado (Ec. 5.2). Tiempo de ejecucin (s) = 0.00401998 +0.00000043951p -13 2 +1.1049*10 p
...(Ec. 5.2)
Con p como el nmero de pxeles que conforman una imagen de la escena. Los tiempos de ejecucin resultan ser lo suficientemente pequeos, como para procesar varias imgenes durante un segundo. En la tercera prueba los tamaos del archivo de salida se compararon con relacin al tamao de imagen. El nmero de objetos en este caso se incremento de 25 en 25 hasta llegar a 400, observando en esta ocasin el archivo de salida generado, con el propsito conocer la conveniencia de enviar a travs de Internet el archivo con la descripcin de los objetos o la imagen completa. Los resultados se muestran en la Tabla 5.3 y en la Figura 5.13.
No. de Tamao de Archivo de Tamao de Archivo Objetos Salida Medido (Bytes) de Salida Calculado (Bytes) 25 685.00 638.18 50 1,355.00 1,320.53 75 2,013.00 2,002.88 100 2,681.00 2,685.24 125 3,341.00 3,367.59 150 4,014.00 4,049.94 175 4,701.00 4,732.29 200 5,391.00 5,414.65 225 6,080.00 6,097.00 250 6,767.00 6,779.35 275 7,458.00 7,461.70 300 8,143.00 8,144.06 325 8,836.00 8,826.41 350 9,519.00 9,508.76 375 10,214.00 10,191.11 400 10,895.00 10,873.47
Tamao de la imagen = 320*240 pxeles rea de los Objetos = 24 Pxeles
Tamao de Imagen de Entrada (Bytes) 9,662.00 9,662.00 9,662.00 9,662.00 9,662.00 9,662.00 9,662.00 9,662.00 9,662.00 9,662.00 9,662.00 9,662.00 9,662.00 9,662.00 9,662.00 9,662.00
Tabla 5.3: Tamaos de archivos de salida y de Imagen, con un nmero de objetos variable.
89
10,000.00
6,000.00
4,000.00
2,000.00
25 50 75 100 125 150 175 200 225 250 275 300 325 350 375 400 Objetos
Figura 5.13: Grfica de tamaos de archivos de salida y de imagen, con un nmero de objetos variable. La ecuacin que representa el crecimiento de los archivos de salida, conforme se incrementa el nmero de objetos se muestra en la Ec. 5.3. Tamao del archivo en Bytes = -44.175 +27.2941n Donde: n es el nmero de objetos es la escena. Se observa que el nmero de objetos a reconocer produce un archivo menor o igual tamao de la imagen de entrada para n=355, es decir, despus de 355 objetos es mejor enviar la imagen y no el archivo de reconocimiento, pues el tamao de la imagen es menor que para cuando el nmero de objetos es menor a 355, en tal caso es mejor enviar el archivo de salida para la reconstruccin virtual. Sin embargo el robot UNIMATE S -103, solo puede almacenar hasta 94 puntos de su espacio de trabajo, si suponemos que almacena un objeto en cada punto, el tamao del archivo con la descripcin de los objetos no ser mayor a 2,500 bytes. El programa para el sistema de visin para el Laboratorio de Robtica Virtual termina con los procedimientos de comunicacin a travs de Internet, realizados en el lenguaje de programacin Java, por lo que a continuacin se realiza una breve descripcin de la forma en que se trabaja con este lenguaje. ...(Ec. 5.3)
90
5.5 Alternativas al acceso remoto Java ofrece comunicaciones basadas en sockets [Deitel 98] que permiten a las aplicaciones manejar datos en redes como si fuera una entrada/salida de archivos. Tiene adems sockets de flujo y sockets de datagramas. Con los sockets de flujo un proceso establece una conexin con otro proceso. Mientras la conexin existe, los datos fluyen entre los procesos en un flujo continuo. As se dice que los sockets de flujo proporcionan un servicio orientado a conexiones. El protocolo empleado para la transmisin es TCP (Transmission Control Protocol). Con los sockets d datagrama, se transmiten paquetes individuales de informacin, el e protocolo empleado es UDP (User Datagram Protocol) (Figura 5.14 mdulos B1, B2 y B3), es un servicio sin conexiones y no garantiza que los paquetes lleguen en una forma en particular. De hecho los paquetes pueden perderse, duplicarse e incluso llegar en desorden. Sin embargo los servicios sin conexiones ofrecen mayor velocidad pero menor confiabilidad que los servicios orientados a conexiones. El esquema empleado para la comunicacin es el de cliente servidor (Figura 5.14 mdulo B2). El cliente (Figura 5.14 mdulo B1) solicita la realizacin de una accin y el servidor (Figura 5.14 mdulo B3) realiza la accin devolviendo el resultado (si existe) al cliente. El cliente primero trata de establecer una conexin con el servidor. El servidor puede aceptar o rechazar la conexin. Si acepta la conexin; el cliente y el servidor se comunicarn a travs de sockets. Cuando ya no se necesita la conexin, el cliente y el servidor cierran la conexin. El socket es una norma de facto [Comer 97]. Una biblioteca de sockets puede ser ofrecida por las aplicaciones API (Interfaz de programacin de aplicaciones ) de un sistema que no ofrece sockets originales. Cuando una aplicacin crea un socket , recibe un descriptor entero pequeo para hacer referencia a este. Si un sistema usa el mismo espacio de descriptor para los sockets y otras entradas y salidas, es posible emplear la misma aplicacin para comunicacin de red como para la transferencia local de datos. Internet ofrece muchos protocolos [Deitel 98]. El protocolo http (HyperText Transfer Protocol) constituye la base del World Wide Web la cual emplea URL (Uniform Resource Locators) (Figura 5.1) para localizar datos en Internet. Si se conoce una URL de archivos HTML (HyperText Markup Language), se puede acceder a estos a travs de http. Para realizar una conexin de flujo de URL para leer un archivo desde un servidor en Java, se usa un objeto URL para abrir un InputStream de un archivo que esta en el servidor, leer el contenido del archivo y actualizar el mundo virtual. Para abrir una conexin de flujo con el archivo en el servidor se usa el enunciado: input = fileURL.openStream(); Para crear un servidor a travs de sockets de flujo se crea un ServerSocket y un Socket. El servidor registra el nmero de puerto disponible. El cliente pedir conectarse con el servidor a travs de ese puerto. El ServerSocket establece el puerto en el que el servidor esperar las conexiones de los clientes. Cada conexin se maneja con un socket. Es necesario crear un flujo de salida para que el servidor pueda enviar datos y un flujo de entrada para que pueda recibir datos. Con sockets los programas en Java perciben la entrada y salida de la red como la entrada y la salida desde archivos. Los sockets ocultan gran parte de la complejidad de la programacin de la red vista por el programador. El servidor invoca el mtodo getOutputStream para el socket a fin de obtener una referencia del flujo asociado, en el cual puede enviar informacin. Cuando se completa la transmisin el servidor cierra la conexin invocando el mtodo close pare el socket.
91
Para el cliente, se usa un socket para conectarse con el servidor, un inputStream para recibir informacin del servidor y un OutputStream para enviar informacin al servidor. La transmisin orientada a conexiones funciona de forma similar a como opera el servicio telefnico, en el que se marca y se recibe una conexin, que se mantiene mientras dura la llamada. La transmisin sin conexiones con datagramas se parece al servicio postal. Si un mensaje grande no cabe en un solo sobre, se divide en varios fragmentos que se colocan en sobre individuales numeradas secuencialmente. Luego todas las cartas se envan juntas. Las cartas pueden llegar en orden, en desorden o no llegar. El receptor reensambla las piezas en orden secuencial antes de intentar entender el mensaje. Para el uso de datagramas en java, la clase Server define DatagramPacket para crear paquetes con los que se enviar y recibir la informacin, y DatagramSocket para enviar y recibir los paquetes.
92
Escena a Procesar
1
Segmentacin
Bsqueda de esquinas
9
Cliente/Servidor
13
Figura 5.14: Sistema de Visin para el Robot UNIMATE S-103 con comunicaciones mediante Sockets y Datagramas. 93
Araujo Daz David
Resumen Para el diseo, implementacin y evaluacin del sistema de visn para el robot UNIMATE S-103, es necesario contemplar el uso de algunos de los mtodos descritos en los captulos anteriores. En la implementacin de un sistema de visin es necesario especificar claramente los procesos que sern empleados para cada una de las tareas que realiza. Se debe de especificar el tipo de formato empleado, se debe de determinar el tamao de imagen adecuado para el reconocimiento, el tiempo necesario para el reconocimiento, el tipo de preprocesamiento a realizar, considerar los algoritmos para la segmentacin y extraccin de caractersticas, etc. Los algoritmos dependen de la aplicacin especfica, en nuestro sistema de visin destinado a dotar de este sentido al robot UNIMATE S-.103 del Laboratorio de Robtica Virtual; se decidi realizar el preprocesamiento mediante programas que se encuentran disponibles de forma gratuita en Internet, el formato elegido fue BMP (mapa de bits) de 320x240 pxeles, la extraccin de contornos se realiz por el mtodo de aproximacin de Roberts, la segmentacin la realizamos por bsqueda de esquinas y seguimiento de contornos, y la extraccin de caractersticas para clasificacin, se obtuvo por el mtodo de clculo de momentos de Hu. Se realizaron tres pruebas al sistema de reconocimiento. Para la primera se observ que para una cantidad de objetos que se incrementa en la escena, el tiempo se incrementa de forma lineal, sin embargo el tiempo es lo suficientemente pequeo, lo que permite procesar varias imgenes por segundo. En la segunda prueba, se incrementa el nmero de pxeles en la imagen, as el tiempo se incrementa de forma cuadrtica, por lo que queda claro que est es uno de los factores ms importantes a considerar en la implementacin del sistema de visin. Una ltima prueba demostr que para una cantidad reducida de objetos en la escena (hasta un poco ms de 300), es ms conveniente enviar el archivo con la descripcin de cada uno de ellos, pero cuando se rebasa dicha cantidad es mejor enviar la imagen de la escena tal cual. Para enviar los archivos a un usuario remoto, es necesario implementar los programas de comunicacin, un lenguaje que permite realizar dichas operaciones de una forma sencilla es Java. Para las comunicaciones se presentan tres soluciones, por conexin con URL empleado para localizar datos en Internet, otra mediante el empleo de sockets de flujo basados en conexiones y otra con datagramas con transmisin sin conexiones.
94
95
Para que el programa pueda reconocer cada uno de los objetos presentes en su mesa de trabajo, es necesario llevar a cabo una descripcin detallada de cada uno de ellos. Est descripcin se obtiene mediante procedimientos estadsticos, en donde se realiza una cierta cantidad de mediciones de cada uno de los parmetros buscados y se seleccionan los parmetros de engloben a la mayora. En nuestro caso se tomaron los valores mximos y mnimos para cada uno de estos parmetros, para as poder reconocer a todos los objetos de una categora. Primero hay que determinar la cantidad y el tipo de objetos que el sistema de visin ser capaz de reconocer. En nuestro sistema la cantidad de objetos se limit a seis figuras geomtricas: tringulo, cuadrado, rectngulo, hexgono, crculo y un crculo indicador (Figura 6.1).
Tringulo
Cuadrado
Rectngulo
Hexgono
Figura 6.1: Objetos usados para el reconocimiento de figuras geomtricas. Posteriormente se determinan los parmetros de cada uno de estos objetos de acuerdo al mtodo empleado, en nuestro sistema el mtodo empleado es el de reconocimiento por el mtodo de momentos de Hu, el cual consiste en determinar una serie de parmetros numricos (1, 2, 3, n ), los cuales determinan las caractersticas de cada categora de objetos. Para hallar los parmetros necesarios para cada objeto fue necesario tomar varias fotografas (alrededor de 50) de cada objeto en diferentes posiciones tratando de abarcar todo el espacio de trabajo del robot, y rotndolos cada vez. As se obtuvieron las variaciones mnimas y mximas que representen las caractersticas propias de cada objeto; por lo que el archivo que almacena dicha informacin, tiene un par de valores por cada momento, que corresponden a los lmites inferior y superior de los valores medidos para cada momento. El formato del archivo se muestra en la Figura 6.2.
Nmero de Objetos = n 1 Nombre 1 2 Nombre 2 ........ ............. n Nombre n Lmite Inferior 1 Lmite Inferior 1 ............ Lmite Inferior 1 Lmite Superior 1 Lmite Superior 1 ............ Lmite Superior 1 Lmite Inferior 2 Lmite Inferior 2 .............. Lmite Inferior 2 Lmite Superior 2... Lmite Superior 2 .............. Lmite Superior 2
Figura 6.2: Formato del archivo de lmites de momentos umb.cal. Donde el nmero de objetos n, es el nmero de objetos que el sistema puede reconocer; el nombre, puede ser cualquier cadena de texto sin espacios, solo sirve para designar al objeto; los lmites inferior , superior , inferior y superior corresponden a los momentos de Hu del 1 1 2 2 objeto correspondiente. Para el caso de reconocimiento de figuras geomtricas, solo fue necesario el clculo de los primeros tres momentos de Hu, aunque si el nmero de objetos es menor, la cantidad de momentos tambin sera menor. Los lmites para los momentos de Hu hallados para los objetos propuestos se muestran en la Figura 6.3 y las figuras geomtricas se pueden armar con los patrones del Apndice D : Patrones de Calibracin y Figuras Geomtricas.
96
6 Nmero de objetos
Identificacin Nombre
1
1.2000 2.1300 3.9000 1.8000 2.0000 0.4000
1
1.4000 3.5000 5.0000 1.9500 2.2000 0.6500
2
0.0015 0.0025 3.0000 0.0025 0.0000 0.0000
2
0.0080 0.0100 4.0000 0.0150 0.0035 0.0070
1 2 3 4 5 6
0.0000 2.0000 0.0055 2.0000 0.0000 2.0000 0.0000 2.0000 0.0000 0.0050 0.0000 2.0000
Figura 6.3: Archivo de umbrales umb.cal obtenido. Las grficas de estos momentos permiten observar los lmites ms claramente (Figura 6.4). Por una parte se tienen las figuras geomtricas que se diferencian perfectamente d las e dems desde el clculo del primer momento, como son el tringulo (1), el rectngulo (3), el hexgono (4) y los crculos indicadores (6), mientras que el cuadrado (2) y el crculo (5) se traslapan entre los puntos 2.13 y 2.2, por lo que si alguno de sus valores cae en este intervalo, el sistema de visin los confundir. Para evitar ambigedades es necesario tomar un mayor nmero de momentos, por lo que para el caso de figuras geomtricas, fue necesario tomar los primeros tres momentos de Hu.
Figura 6.4: Distribucin de los momentos 1, 2 y 3 para figuras geomtricas. Es interesante hacer notar de la Figura 6.4 que la mayora de las figuras geomtricas se pueden diferenciar calculando solo un momento 1, es decir, si no se requiere reconocer el crculo o el cuadrado, bastar con el c lculo de un solo momento para reconocer todas las figuras geomtricas restantes. En la Figura 6.5 se muestran los resultados obtenidos al aplicar nuestro sistema de visin a varias tomas fotogrficas, se observa que fue posible reconocer todos los objetos presentes en las diferentes escenas que fueron fotografiadas, algunas de ellas con un poco de ruido para verificar la eliminacin del mismo. La Figura 6.5 presenta en primera instancia la fotografa que es la entrada al nuestro sistema de reconocimiento, el tamao del archivo de imagen generado es constante, pues la resolucin siempre es la misma. En el proceso de reconocimiento, se obtiene un archivo con los objetos reconocidos por nuestro sistema, el tamao de este archivo varia considerablemente, pues depende de la cantidad de objetos en la escena. En la ltima parte de la Figura 6.5 se muestra la imagen obtenida despus de realizar la reconstruccin tridimensional de la escena con VRML, el tamao de este archivo no cambia significativamente, debido a la reducida cantidad de objetos que se agregan al mundo virtual. 97
Araujo Daz David
Figura 6.5: Resultados del proceso de reconocimiento de figuras geomtricas. Para el reconocimiento y reconstruccin de figuras geomtricas, el sistema de reconocimiento implementado, puede ser empleado sin ninguna modificacin, debido a la simplicidad que representa la obtencin de parmetros de cada uno de los objetos bajo estudio, sin embargo este proceso puede requerir de un poco de tiempo, pues para poder garantizar que se reconocern los objetos en la mayor parte de los casos, es necesario llevar a cabo una gran cantidad de fotografas de los objetos en diferentes posiciones y orientaciones. La cantidad de momentos es mayor entre mayor sea la cantidad de objetos a reconocer, para evitar ambigedades entre los objetos a reconocer. 6.2 Reconocimiento de dgitos Los sistemas de reconocimiento de dgitos, son empleados en la industria por ejemplo para el control de inventarios, a travs de la identificacin automtica mediante sistemas de visin de los nmeros contenidos en las cajas; se pueden emplear para identificacin de productos, si estos contienen en alguna parte un nmero por medio del cual puedan ser identificados [Erdei 92]. Sin embargo, el empleo de los sistemas de visin para este propsito, se encuentra muy restringido, debido a las facilidades que actualmente ofrece el uso de los cdigos de barras, como son la existencia de estndar internacionales, que los equipos para su lectura son ms econmicos que los empleados en sistemas de visin y principalmente a que se han usado con gran xito desde mediados del siglo pasado. A pesar de ello no deja de ser un tema interesante desde el punto de vista acadmico el reconocimiento de dgitos debido a los problemas inherentes a determinadas aplicaciones como la que aqu se describe. En este caso, se requiere que el robot manipule una serie de cubos con un nmero impreso en uno de sus costados (con los dgitos 1, 2, 3, 4, 5, 6, 7 y 8), cada uno de los cubos deber de encontrarse distribuido en una celda de una matriz de 3x3, quedando una de estas celdas vaca, para que el robot pueda utilizarla para mover un cubo a la vez dentro de la matriz como se muestra en la Figura 6.6. Para esto fue necesario idear un mtodo que permitiera identificar las coordenadas de las celdas de la matriz y del lugar de la celda vaca, por lo que se anexaron algunos mdulos al sistema de reconocimiento descrito en el Captulo 5 Diseo e : Implementacin de un Sistema de Visin.
98
Columna 1 1 4 7
Columna 2 2 5 8
Figura 6.6: Matriz para reconocimiento de dgitos. En los captulos anteriores se realiz una pequea descripcin del funcionamiento de los sistemas de Reconocimiento ptico de Caracteres u OCR. El proceso comienza cuando se tiene una imagen de entrada. En esta etapa, la imagen no es ms que un conjunto de puntos sin sentido (pxeles) sobre un fondo. El programa de OCR tiene que extraer informacin bajo la forma texto de estos pxeles; ha de reconocer las formas y asignarles un smbolo. Los sistemas de OCR utilizan procesos de: segmentacin de lnea, segmentacin de palabras y caracteres, reconocimiento de caracteres y produccin de un archivo de salida de texto. El reconocimiento de dgitos mediante el clculo de momentos de Hu, no es el mejor mtodo para reconocimiento de dgitos, sin embargo, como la cantidad de dgitos es pequea es posible emplearlo. De igual forma que se hace con los objetos geomtricos, la obtencin de parmetros para cada uno de los dgitos, se realiza tomando fotografas de cada uno de ellos en diferentes posiciones y orientaciones, los valores para los momentos de Hu, solo que en esta ocasin la cantidad de momentos para realizar un reconocimiento aceptable es de cuatro momentos, pues la cantidad de objetos es mayor. Un factor importante a considerar en esta aplicacin, es que los momentos de Hu obtenidos solo funcionan para el tipo de caracteres empleados para la obtencin de parmetros, por lo que s se requiere reconocer los dgitos con un tipo de letra diferente es necesario obtener otros parmetros. Por que los parmetros cambian de acuerdo al tipo de letra empleado pues la forma de cada carcter cambia en cada tipo de letra. Los dgitos usados para la obtencin de umbrales fueron realizados con el tipo de letra Albertus (Figura 6.7 y Apndice D: Patrones de Calibracin y Figuras Geomtricas).
1 2 3 4 5 6 7 8
Figura 6.7: Dgitos empleados para la obtencin de momentos. Despus de realizar mltiples fotografas de cada nmero en diferentes posiciones y orientaciones, se obtuvieron los lmites de la Figura 6.8 y cuyas grficas se muestran en la Figura 6.9, estos se almacenan en un archivo de texto llamado: umbx.cal. De la Figura 6.9 se observa que se traslapan los valores para la mayora de los dgitos en cada uno de los momentos, sin embargo al emplear cuatro momentos, es posible evitar ambigedades en el reconocimiento de cada uno de ellos.
8 Nmero de objetos
1
Identificacin 1 2 3 4 5 6 7 8 Nombre Uno Dos Tres Cuatro Cinco Seis Siete Ocho Inferior 1.500 1.120 1.250 1.450 1.200 1.550 1.350 1.900
1
Superior 1.750 1.170 1.400 1.600 1.350 1.780 1.800 2.100
2
Inferior 1.600 0.350 0.550 0.380 0.450 0.550 0.725 0.500
2
Superior 2.200 0.450 0.730 0.500 0.600 0.715 1.200 0.700
3
Inferior 0.100 0.010 0.008 0.200 0.025 0.205 0.450 0.005
3
Superior 0.250 0.030 0.150 0.350 0.075 0.300 0.999 0.020
4
Inferior 0.000 0.000 0.015 0.000 0.001 0.000 0.000 0.000
4
Superior 1.000 1.000 0.025 1.000 0.014 1.000 1.000 1.000
Figura 6.9: Distribucin de momentos para el reconocimiento de dgitos. El proceso de obtencin de momentos para cada uno de los dgitos es similar al de reconocimiento de figuras geomtricas, tambin el proceso de reconocimiento diseado en el Capitulo 5: Diseo e Implementacin de un Sistema de Visin, es el mismo hasta el clculo de momentos de Hu (Figura 6.15 -mdulos 1 al 13, A y N), sin embargo hace falta asignar a cada dgito reconocido, no solo su posicin en la imagen y en la mesa de trabajo del robot, sino tambin determinar a que fila y columna pertenecen as como las coordenadas de la celda vaca, est no se encuentra presente en la imagen pero el robot la puede utilizar para manipular el resto de los objetos. Para asignar las coordenadas a cada una de las celdas de la matriz hay que realizar un ordenamiento de las coordenadas de cada dgito hallado, para acomodarlos de esta forma en la celda de la matriz que le corresponda. P ara esto se emplea el mtodo de ordenamiento por seleccin, aplicado a cada dgito en cada una de sus dos coordenadas. El ordenamiento por seleccin consiste en la secuencia de pasos mostrada en el Programa 6.1 (Figura 6.15 mdulo ) [Heileman 98, Tenenbaum 93, Cormen 90].
1. Comenzar por la primera entrada. 2. Ver el resto de las entradas una por una. Cuando se encuentra una mayor se intercambia con la primera. 3. Ahora se reduce el listado. Se comienza por la segunda entrada y se busca en las entradas restantes. Se repite el paso anterior y se repite est proceso sucesivamente. 4. Se contina hasta que se realizan todos los procesos. Programa 6.1: Secuencia del ordenamiento por seleccin. El anlisis del algoritmo consiste en observar, cuantas comparaciones se realizan, primero se realizan n-1 comparaciones, luego n-2 y as sucesivamente, por lo que la complejidad se obtiene por la Ec. 6.1. (n - 1) + (n - 2) + .... + 1 = n*(n - 1) / 2 ...(Ec. 6.1)
2
Se observa que el tiempo de ejecucin del algoritmo tiene una complejidad de O(n ), sin embargo como el nmero de elementos que tiene que ordenar es extremadamente pequeo, no influye en el desempeo del programa de reconocimiento de dgitos.
100
Una vez que se tienen ordenados los dgitos identificados de acuerdo a sus posiciones con respecto a la referencia X y respecto a la referencia Y, es posible proceder a asignarles una posicin en el tablero junto con la posicin de la celda vaca. Para realizar esto se desarrollo un algoritmo que analiza los resultados de los ordenamientos respecto a X y a Y (Figura 6.15 mdulo ), colocndolos en sus correspondientes celdas y dejando los valores que sobran para la celda vaca. El algoritmo desarrollado para este propsito sigue los pasos mostrados en el Programa 6.2. 1. Asignar al primer valor de cada ordenamiento las posiciones X1 y Y1, e ir llenando la matriz de la forma mostrada en la Figura 6.10. 2. Seguir asignando valores, mientras la diferencia entre el valor actual y el valor anterior no supere a la mitad de los valores asignados a X1 y Y1. 3. Los espacios de X y Y no asignados corresponden a la posicin de la celda vaca. Programa 6.2: Secuencia de asignacin de celdas. x 1,y 1 x 1,y 2 x 1,y 3 x 2,y 1 x 2,y 2 x 2,y 3 x 3,y 1 x 3,y 2 x 3,y 3
Figura 6.10: Asignacin de las celdas de la matriz de 3x3. Veamos mediante un ejemplo como opera el algoritmo. Supongamos que se tienen los valores que se muestran en la Tabla 6.1 y en la Figura 6.11.
# 1 2 3 4 5 6 7 8 X 139.9 138.0 142.9 75.7 202.7 78.0 203.2 203.2 Y 114.6 46.6 186.1 116.6 183.6 45.4 41.5 116.0 #x 4 6 2 1 3 5 7 8 X 75.7 78.0 138.0 139.9 142.9 202.7 203.2 203.2
Columnas
#y 7 6 2 1 8 4 5 3
Filas y1 y1 y1 y2 y2 y2 y3 y3
x1 x1 x2 x2 x2 x3 x3 x3
Datos de Origen
Ordenados respecto a X
Ordenados respecto a Y
Ordenamiento respecto a Y
x3 x2 x1
Pixel
y3 y2
150 100 50 0 4 6 2 1 3
100 50
y1
0 5 7 8 7 6 2 1 8 4 5 3 Dgito Digito
De la Figura 6.11 se observa, por ejemplo, que el nmero 4 aparece en la posicin x1 y y2, mientras que el lugar vaco corresponde a x1 y y3, pues es en estas posiciones donde solo aparecen dos valores para X y Y, de igual forma se puede encontrar la posicin de los dgitos restantes. El resultado final aparece en la Figura 6.12. 6 4 2 1 3 7 8 5
Figura 6.12: Matriz resultante para el reconocimiento de dgitos. Los resultados obtenidos son adecuados para este tipo de reconocimiento, tomando en cuenta que los lmites de muchos de los dgitos reconocidos se traslapan en algunos de los momentos. En la Figura 6.13 se ilustran los resultados aplicados a un par de fotografas de entrada.
Figura 6.13: Resultados del proceso de reconocimiento de dgitos. Los archivos de salida del proceso de reconocimiento, son archivos bastante pequeos, pues contienen los nmeros en las posiciones correspondientes a cada celda (de la primera a la novena), el cero representa al lugar vaco y los nmeros restantes a x1, x2, x3, y1, y2 y y3 a las coordenadas de los centros de las celdas (matriz de 3x3) (Figura 6.14). Digito 1 x1 x2 y1 y2 Digito 2 Digito 3 Digito 8 x3 Coordenadas de los centros en el eje X y3 Coordenadas de los centros en el eje Y
Formato del Archivo de Salida
8 87.2 44.6
5 1 152.3 109.2
7 0 214.2 181.4
a) Ejemplo 1
102
En la Figura 6.15 se tiene el sistema de visin para reconocimiento de dgitos con los anexos (mdulos y ) necesarios para encontrar las coordenadas de la matriz y la celda vaca. Adquisicin de la imagen Cmara CCD
2
Escena a Procesar
Programa: DIGITOS
El reconocimiento de dgitos requiere de una mayor cantidad de momentos de Hu por que la cantidad de objetos es mayor que para el caso de figuras geomtricas, adems de otros mdulos para encontrar las coordenadas de las celdas de la matriz y de la celda vaca. Sin embargo el tiempo empleado para realizar el reconocimiento de dgitos es lo suficientemente pequeo, lo que permite realizar el reconocimiento de dgitos varias veces por segundo.
103
6.3 Anlis de movimiento is Hasta aqu se ha descrito el reconocimiento de objetos fijos en la escena. Sin embargo, algunas aplicaciones requieren el seguimiento de objetos en movimiento. Por ejemplo en aplicaciones militares se emplea para deteccin y seguimiento de objetivos; en control de trfico, para el control de trfico vario; en seguridad, en la vigilancia de edificios, etc. Por lo que describimos el anlisis de movimiento a continuacin. El anlisis por momentos de Hu puede ser tambin empleado para el seguimiento de objetos que se mueven en la escena a baja velocidad a una velocidad lo suficientemente pequea como para que el sistema de visin pueda detectarlo. Mediante est tcnica es posible guiar a un robot para poder tomar el objeto en una posicin especifica o incluso para mover el sistema de cmara y mantener al objeto lo ms cercano al centro del cuerpo en la escena. Las imgenes empleadas pueden provenir de una pelcula, en algn formato (*.mpeg, *.jpeg, *.mov, *.vif, *.avi, *.gif, *.dat, etc.) o a travs de tomar muchas fotografas a intervalos de tiempo determinados. Empecemos examinando qu es el movimiento. El fenmeno ms obvio y fundamental que observamos a nuestro alrededor es el movimiento. Prcticamente todos los procesos imaginables pueden describirse como el movimiento de ciertos objetos. Decimos que un objeto est en movimiento relativo respecto a otro cuando su posicin, medida con relacin al segundo cuerpo, est cambiando con el tiempo. Por otra parte si esta posicin relativa no cambia con el tiempo, el objeto se encuentra en reposo relativo. Tanto el reposo como el movimiento son conceptos relativos; es decir, dependen de la condicin del objeto respecto a un cuerpo que sirve de referencia. Para analizar el movimiento de un objeto, es necesario conocer algunas definiciones. La cinemtica, estudia el movimiento de los cuerpos en funcin del tiempo. La velocidad de un objeto es la primera derivada de la distancia respecto al tiempo (Ecs. 6.2 y 6.3). v = ds / dt v=s/t Donde: ...(Ec. 6.2) ...(Ec. 6.3)
...(Ec. 6.4)
La velocidad angular o frecuencia angular es la primera derivada respecto al tiempo del ngulo de giro o rotacin (Ecs. 6.5, 6.6 y 6.7). = d / dt = / t =2f Donde: para = constante = Velocidad angular en rad/s = ngulo en rad f = Frecuencia en 1/s t = Tiempo en s ...(Ec. 6.5) ...(Ec. 6.6) ...(Ec. 6.7)
104
La aceleracin angular es la primera derivada de la velocidad angular respecto al tiempo (Ec. 6.8). = d / dt = d / dt Donde:
2 2
...(Ec. 6.8)
2
= Aceleracin angular en rad/s = Velocidad angular en rad/s = ngulo en rad f = Frecuencia en 1/s t = Tiempo en s
Con la grfica de la forma del movimiento, en funcin del tiempo es posible obtener la velocidad en un instante determinado a travs del calculo de la primera derivada de la funcin (Ec. 6.9) (Figura 6.16a). v s / t ...(Ec. 6.9)
Si se deriva la funcin de la forma del movimiento en relacin al tiempo se obtiene una grfica de la aceleracin en un punto determinado (Ec. 6.10) (Figura 6.16b). a v / t ...(Ec. 6.10)
En la Figura 6.16c muestra la variacin de la aceleracin. Si a>0 la aceleracin corresponde a un aumento en la velocidad, si a<0 la aceleracin corresponde a una disminucin en la velocidad. s Lineal Angular
a) Distancia s t t v t t
b) Velocidad v t a t t t
c) Aceleracin
105
A diferencia de las aplicaciones anteriores, el anlisis del movimiento de un objeto sobre una escena requiere de un proceso de reconocimiento un poco ms simple que el empleado en las aplicaciones anteriores. En la Figura 6.17 se muestra nuestro sistema para llevar a cabo el anlisis de movimiento de un objeto sobre la mesa de trabajo del robot UNIMATE S-103, siendo posible su utilizacin en otras aplicaciones sin necesidad de modificaciones mayores. Los mdulos 1 al 12 de la Figura 6.17 fueron descritos en el Captulo 5: Diseo e Implementacin de un Sis tema de Visin, y solo cambia el formato de archivos de salida (Figura 6.17 mdulo ), el cul contiene una serie de nmeros que representan el movimiento del centro de masa calculado mediante momentos de Hu de un objeto movindose en la escena.
Escena a Procesar
Programa: MOVIMIENTO
Momentos de Hu
11
Para el anlisis de movimiento, es necesario conocer las imgenes tomadas en un intervalo de tiempo determinado. Por lo que en un archivo se enc uentran los nombres de las imgenes y el intervalo entre ellas, este intervalo se emplea para determinar la velocidad y aceleracin del objeto, una vez que su posicin es calculada. Por ejemplo para la serie de imgenes de la Figura 6.18 correspondientes a una pelota movindose en un p lano inclinado, tenemos el archivo de entrada de la Figura 6.19 con los parmetros de las imgenes.
106
mov01.bmp
mov02.bmp
mov03.bmp
mov04.bmp
mov05.bmp
mov06.bmp
mov07.bmp
mov08.bmp
Figura 6.19: Archivo de entrada mov.ent para el anlisis de movimiento. Con el archivo de la Figura 6.19 y las imgenes de entrada de la Figura 6.18 obtuvimos el archivo de salida de la Figura 6.20 con las posiciones del centro de masa de cada una de las fotografas. Este archivo de posiciones es empleado por el programa movimiento (en lenguaje C) para reconstruir el movimiento en un mundo virtual en tres dimensiones (en lenguaje VRML ).
Archivo mov.ent: 8 0.187501 0 Comentarios: Nmero de imgenes (n). Tiempo entre imgenes en segundos. Tipo de imagen, identificacin de objeto. Lista de coordenadas del centro de masa y tamao del objeto en cada imagen Posicin 1: x c1 yc1 rea 1 Posicin 2: x c2 yc2 rea 2 . . . . . Posicin n: x cn ycn rea n
Figura 6.20: Archivo de salida mov.sal para el anlisis de movimiento. Un archivo de posiciones es relativamente pequeo comparado con el conjunto de imgenes de entrada (en mapa de bits BMP) con la pelcula misma. Por lo que su envo a travs de Internet u otro medio es ms eficiente. Por otro lado, la representacin del entorno a 107
Araujo Daz David
travs de VRML permite la visualizacin del movimiento del objeto en la escena desde cualquier ngulo, distancia, perspectiva, etc. por lo que se tiene una mayor flexibilidad respecto a las pelculas tradicionales (Figura 6.21).
Figura 6.21: Resultados para el programa de anlisis de movimiento. Con relacin al movimiento del objeto, nuestro programa tambin proporciona grficas de velocidad contra tiempo y aceleracin contra tiempo, que muestran como varan ambas variables con relacin al movimiento del objeto captado en cada uno de los ejes (Figura 6.22).
Sobre el eje X 300 200 100 0 -100 -200 -300 -400 Tiempo 1 2 3 4 5 6 7 8
a x
y
v y a y
Tiempo
y vy ay
11
13
15
17
19
21
23
25
-10 Tiempo
Tiempo
c) Entrada: Jupiter.avi
d) Entrada: Jupiter.avi
Figura 6.22: Grficas de posicin, velocidad y aceleracin para nuestro programa de anlisis de movimiento. 108
Araujo Daz David
27
Estos datos pueden servir para que un robot no colisione con un objeto en movimiento, para que siga la trayectoria de un objeto para que mueva una cmara para seguirlo. Pero tambin es aplicable a otras reas como la astronoma para el seguimiento de objetos celestes, como es posible apreciar en la Figura 6.21. 6.4 Estimacin de Altura Hasta este punto se ha considerado que los objetos presentan una altura adecuada para ser manipulados por el robot. Pero hace falta considerar el caso en que los objetos no presenten una altura adecuada para su manipulacin (pueden ser solo figuras planas). Para el caso del robot UNIMATE S-103, la altura de los objetos puede llegar a daar los sistemas mecnicos del robot, pues como se recordar su rgano terminal es del tipo todo nada, es decir, se desplaza a toda su longitud, sin tener la posibilidad de quedar en un punto intermedio. La altura de los objetos presentes en la mesa de trabajo de un robot industrial, es considerada como un problema resuelto en la mayora de los textos, debido a que los robots disponen de dispositivos y/o sistemas de captacin de altura adecuados. Sin embargo, en nuestro caso, la manipulacin de objetos por parte del robot ha supuesto que la altura es adecuada, pero si la altura no lo es, entonces hay que proveer al robot de los mecanismos necesarios para evitar colisiones entre el objeto y el robot. Proponemos las siguientes cuatro soluciones. 1) Estimacin de altura de los objetos presentes en una imagen por el robot.- se basa en el hecho de que la mayora de los robots industriales presentan, adems de los mecanismos necesarios para realizar sus movimientos dentro de su espacio de trabajo, sensores que les indican su posicin en coordenadas articulares y canales adicionales de entrada/salida a travs de los cuales pueden manejar herramientas de perirrobtica. Por medio de estos canales adicionales, es posible que un robot interacte con el mundo exterior. Los canales pueden ser empleados para parar el cierre del rgano terminal, por ejemplo, al momento de que se detecte que el objeto a sido sujetado correctamente. En el robot UNIMATE S-103, estos canales pueden ser usados para saber si el rgano terminal se encuentra abajo o arriba y s la mano esta cerrada o abierta, pero tambin si un objeto se encuentra entre los dedos del robot. Si se dota al robot de un sensor de proximidad en su rgano terminal (no lo presenta en este momento), entonces, el robot puede detectar la altura del objeto al momento en que lo va a manipular, recordando que la posicin y orientacin de los objetos presentes en la mesa de trabajo del robot es determinada por el sistema de reconocimiento a partir de una fotografa del espacio de trabajo del robot, este sistema considera que todos objetos reconocidos presentan una altura fija adecuada para su manipulacin. La altura puede as ser estimada por un sensor de proximidad o presencia que el robot tiene en su rgano terminal. El robot al colocarse sobre el objeto y realizar los movimientos necesarios para tomarlo, puede conocer la altura a travs de un canal, en donde se encuentra conectado el sensor de proximidad o presencia. Se pueden presentar tres casos, considerando que nuestro programa de reconocimiento considera una altura inicial para cada objeto en la escena: a) Objeto con la altura adecuada para manipularlo.- en este caso el rgano terminal llegar al final de su desplazamiento y detectar el objeto en el sensor de proximidad o presencia, por lo que lo tomar normalmente al objeto, y el modelo del objeto no cambia, por lo que la altura considerada desde el inicio permanece igual (Figura 6.23). b) Objeto con una altura menor que la estimada para manipularlo.- es este caso el rgano terminal lleg al final de su desplazamiento pero el sensor de proximidad o presencia no se activo, por lo que el objeto no puede ser manipulado, en este caso, se deber de modificar la altura preestablecida en el modelo, y para movimientos posteriores del robot, la posicin de este objeto puede ser ignorada, pues no estorba (Figura 6.24).
109
c) Objeto con una altura mayor que la estimada para manipularlo.- es este caso el rgano terminal no ha llegado al final de su desplazamiento, pero el sensor de proximidad o presencia se activo, por lo que en el programa del robot, deber de estar contemplada esta posibilidad, en cuyo caso el rgano terminal (para el robot UNIMATE S-103), deber de elevar el rgano terminal para que no se presenten daos en el objeto, ni en el robot. Se deber de modificar la altura preestablecida en el modelo, y la posicin y tamao debern de ser tomados en cuenta para que no se presenten colisiones al momento de mover al robot a otros puntos, pues el objeto si estorba (Figura 6.25).
OT = rgano Terminal Estado del sensor: Activo Posicin del OT: Abajo Altura Inicial Sensor de Proximidad h Objeto Mesa Altura Final
hi h
OT = rgano Terminal
hi
hi < h
Figura 6.24: Objeto con una altura menor que la estimada para manipularlo. Altura del modelo
OT = rgano Terminal Estado del sensor: Activo Posicin del OT: Intermedio Sensor de Proximidad La altura puede ser estimada, mediante el valor de los sensores del OT del robot, sino se toma una altura mayor a h. Altura Inicial
hi
hi > h
Objeto Mesa
Figura 6.25: Objeto con una altura mayor que la estimada para manipularlo. Como puede observarse, este sistema nicamente proporciona solo tres valores para la altura (adecuado, pequeo o grande), an as es posible emplearlo si la altura no es un factor importante a considerar para la modelacin de objetos. Si la altura se requiere conocer con mayor precisin, es necesario emplear otros sensores ms elaborados, como el que se presenta a continuacin.
110
2) Estimacin de altura a travs de un convertidor analgico / digital (A/D).- la altura de los objetos puede ser medida a travs de sensores que conviertan la altura a la que se encuentra el rgano terminal del robot en un nmero. Para este fin, implementamos un circuito detector de presencia y de un circuito para medir la posicin vertical del rgano terminal, el cual consiste bsicamente de un sensor de presencia y un convertidor analgico/digital. De est forma es posible que el robot conozca la presencia de un objeto prximo a su rgano terminal y la posicin vertical del rgano terminal, con la cul es posible realizar una estimacin de la altura con una buena exactitud. El circuito que se dise para llevar a cabo este propsito se muestra en la Figura 6.26.
c) Interfase con una PC o un robot
+Vcc Vcc 20 19 CLK R D0 18 D1 17 D2 16 D0 D1 D2 D3 D4 D5 D6 D7 1 CONTROL D0 2 a1 D4 3 b1 Vcc16 E 15 a414 D3 D7
10K
+ Vcc
a) Sensor de Altura
+ Vcc
1 CS 30pF 2 RD 3 WR
INICIO
1M
A 4 A D1 D5 5 a2 6 b2 B
74157
MULTIPLEXOR
b413
1N914
5.1V
ADC0804
CONVERTIDOR A/D
D3 15 D4 14 D5 13 D6 12 D7 11
D D 12 a311 D2
B7
D6 b310 C 9 C
8 GND
+ Vcc
+ Vcc
22K
68
100k
+ Vcc
8 COMPARADOR
b) Sensor de Presencia
Control
5k 10k 2
LM311
1
Presencia >> 7
Figura 6.26: Circuito propuesto para la estimacin de altura con un convertidor A/D. El circuito de la Figura 6.26 presenta tres circuitos: a) un sensor de altura, el cul se encuentra constituido por un convertidor A/D de ocho bits (el circuito ADC0804 proporciona hasta 255 valores digitales para una entrada analgica y es un convertidor A/D de doble r ampa), y un medidor de altura simple, el cual consiste en un potencimetro lineal que se encuentra conectado mecnicamente al rgano terminal del robot, proveyendo la distancia de desplazamiento del rgano terminal; b) un sensor de presencia, destinado a proporcionar al robot a la computadora el momento en que se debe de tomar la lectura de la altura, al estar presente el objeto en el rgano terminal del robot; y c) una interfase entre el circuito y una computadora o el robot, la cual consiste en un multiplexor digital para que los datos del convertidor A/D puedan ser transferidos a travs de un puerto paralelo (computadora) a travs de solo cuatro lneas. Aunque este circuito proporciona la altura del objeto con gran exactitud, no es posible medir objetos que sean menores al desplazamiento mximo del rgano terminal del robot, de hecho ningn mtodo basado en el rgano terminal lo podr realizar. Para la estimacin de altura para cualquier objeto es posible por medios pticos para estimacin de altura.
111
3) La estimacin de altura por extraccin de caractersticas mediante iluminacin estructurada.- utiliza luz estructurada para encontrar todas las caractersticas de los objetos presentes en la mesa de trabajo del robot (la implementacin se presenta en el Apndice B: Iluminacin Estructurada). Todas las caractersticas de los objetos pueden ser conocidas mediante un barrido realizado en la mesa de trabajo del robot con luz estructurada. As se conoce la altura directamente, junto con las dems medidas de los objetos como se aprecia en la Figura 6.27.
h1
h2
h3
Figura 6.27: Estimacin de altura usando luz estructurada. Si el sistema de adquisicin de imgenes mediante luz estructurada se encuentra calibrado, al ser utilizado en la mesa de trabajo del robot provee de la informacin acerca del tamao (largo, ancho y altura), posicin y orientacin, de todos los objetos presentes en la mesa de trabajo del robot. En el Apndice B: Iluminacin Estructurada se realiza el estudio de un sistema de iluminacin estructurada, en donde se explica como realizar el clculo de la profundidad ( altura) de las superficies que son alcanzadas por dicha iluminacin. Su empleo, puede estar limitado al tiempo que lleva realizar la cantidad de fotografas necesarias para realizar una reconstruccin del espacio de trabajo de un robot; est tiempo puede llegar a ser superior a un segundo, aunque depende de la resolucin que se requiera para la identificacin de los objetos. 4) Estimacin de la altura por triangulacin usando dos puntos de luz.- el procedimiento se basa en el clculo de la profundidad de una superficie cuando incide un par de puntos luminosos sobre ella. Nuestro procedimiento para estimar la altura consiste en lo siguiente: 1. 2. 3. 4. 5. Conocer el tamao del punto formado por dos rayos de luz que convergen en la mesa de trabajo del robot. El ngulo entre ambos rayos es conocido, o de cualquier forma es posible medirlo. El sistema de visin (cmara y nuestro programa de reconocimiento), localiza la posicin del centro de masa de los objetos en dos dimensiones. Con la posicin de los objetos el robot o un mecanismo auxiliar apuntan los rayos a cada uno de los centros de masa. Una vez que los rayos apunten a los centros de masa de los objetos, se fotografan, apareciendo como dos puntos o una lnea. A partir de est fotografa es posible calcular la altura de los objetos de forma aproximada mediante los clculos que se describen a continuacin (Figura 6.28).
Lser
h1
Lser
h2
Escena
Mesa
112
Para realizar la estimacin de altura, son necesarios los parmetros siguientes: h = Altura del dispositivo que genera los haces, es decir, la distancia entre la mesa de trabajo y el generador de luz lser (dos haces lser). h1 = Ancho del punto cuando los haces convergen en la mesa. Es el dimetro promedio del punto que generan los haces al incidir sobre la superficie de la mesa de trabajo. = ngulo que forman ambos haces. Est es un parmetro importante, pues entre mayor sea el ngulo los haces deben de encontrase mas separados, lo cual dificulta su posicionamiento sobre los objetos, por el contrario si se encuentran muy juntos es posible que al momento de posicionarlos sobre los objetos la diferencia entre las imgenes de los haces sobre la superficie de la mesa y sobre los objetos no sea suficiente para realizar una estimacin de la altura de los mismos. h2 = Tamao del punto cuando incide sobre el objeto. Este es el promedio de la separacin de los haces cuando inciden sobre la superficie de los objetos. U1 = Umbral inferior. Es el lmite inferior, por debajo del cul el robot no puede manipular al objeto. Se encuentra determinado por el desplazamiento que tiene el rgano terminal. U2 = Umbral superior. Es el lmite superior, a partir del cul el robot no puede manipular al objeto. Se encuentra determinado por el desplazamiento que tiene el rgano terminal. La separacin entre haces (Sx) cuando inciden sobre la superficie de un objeto se calcula por medio de la Ec. 6.11. S x = h 2 h1 con x = 1 2 ...(Ec. 6.11)
Si se conoce una separacin S1 es posible estimar la altura del objeto, conociendo la altura de un objeto conocido ( 2). A travs de la relacin R de la Ec. 6.12 es posible determinar si el S objeto se puede manipular por el robot incluso sin conocer la altura exacta del mismo. R = S2 /S1 Se presentan tres casos cuando se conoce el valor de R: R < U1 R > U2 U1<R<U2 El robot no puede manipular el objeto pues presenta una altura menor que la normal (altura adecuada para su manipulacin). El robot no puede manipular el objeto pues tiene una altura mayor que la normal (altura adecuada para su manipulacin). El robot puede manipular el objeto, cuando el valor R se encuentre en el promedio de los valores de los umbrales U1 y U2. ...(Ec. 6.12)
Cuando se conoce la altura promedio (Pp ) de los objetos que si puede tomar el robot, es posible conocer la altura del objeto bajo estudio a travs de la Ec. 6.13. Altura estimada = Pp R ...(Ec. 6.13)
Por ejemplo: para los objetos en la mesa de trabajo de un robot se tomaron los siguientes parmetros (Figura 6.29 y 6.30a): h = Distancia del dispositivo que genera los haces a la mesa de trabajo = 40 cm h1 = Ancho del punto cuando los haces convergen en la mesa de trabajo (Figura 6.30b) = 7.702391 pxeles = ngulo que forman ambos haces = 8 Para dos objetos en la mesa de trabajo (Figura 6.30a) del robot se encontr que: h21 = Tamao del punto cuando los haces inciden sobre el objeto 1 (Figura 6.30c) = 13.152681 pxeles
113
Con este dato podemos calcular S1 = h21 h1 = 5.45029 h22 = Tamao del punto cuando los haces inciden sobre el objeto 2 (Figura 6.30d) = 18.234343 pxeles Con h22 podemos calcular la altura por medio de las Ecs. 6.12 a 6.13. S2 = h22 h1 = 10.531952 R = S2 /S1 = 1.93236543 El resultado R implica que el objeto 2 mide aproximadamente el doble que el objeto 1. Ahora para conocer la altura del objeto 2, es necesario conocer la altura del objeto 1 (P ) Altura del objeto 1 = P = 4 cm Podemos entonces calcular la altura del objeto 2 como: Altura estimada para el objeto 2 = PR = 7.72946174 cm Sin embargo, la altura real para el objeto 2 es la siguiente: Altura real para el objeto 2 = 8 cm As podemos realizar una estimacin del error que este mtodo ocasiona al medir la altura de un objeto que se encuentra sobre la mesa de trabajo de un robot. Error = ([Altura real] [Altura medida])*100 / [altura real] Error = ( 8 - 7.72946174 ) * 100 / 8 Error = 3.3818% Se observa que el error es muy pequeo, por lo que con este mtodo se alcanza una buena aproximacin de la altura de los objetos. Lser Mecanismo para mover el lser.
Cmara
Circuito de control
Objetos
Lser sobre la mesa Figura 6.29: Mecanismo usado para posicionar los haces lser para la estimacin de altura.
114
Objeto 1 (4cm)
a) Objetos de diferentes alturas sobre la mesa de trabajo, hallados por nuestro sistema de reconocimiento.
Objeto 2 (8cm)
Objeto 1 (4cm)
b) Puntos lser sobre la mesa de trabajo. Se encuentran a un ngulo y distancia a la cual convergen en la mesa de trabajo del robot.
Objeto 2 (8cm)
Objeto 1 (4cm)
c) Puntos lser sobre el objeto 1. Un mecanismo ha movido los haces hacia el centro de masa del primer objeto.
Objeto 2 (8cm)
Objeto 1 (4cm)
d) Puntos lser sobre el objeto 2. Un mecanismo ha movido los haces hacia el centro de masa del segundo objeto. Los resultados muestran que el Objeto 2 es 1.93 veces ms alto que el Objeto 1, por lo que si conocemos la altura del Objeto 1 podemos calcular la altura del Objeto 2.
Objeto 2 (8cm)
Figura 6.30: Estimacin de altura para dos objetos sobre la mesa de trabajo.
Todas las aplicaciones anteriores consideran que el robot puede hallar y manipular al objeto sobre la mesa de trabajo. Para que el robot pueda manipular los objetos, es necesario que el sistema de reconocimiento se encuentre calibrado, es decir, que exista una relacin entre los puntos de cada imagen procesada por el sistema de reconocimiento y las coordenadas que cada robot maneja. En el siguiente apartado se realiza la descripcin de cmo realizar la calibracin de cmara para este fin.
115
6.5 Calibracin de cmara Para que un robot pueda manipular los objetos que aparecen en su mesa de trabajo (como en las tareas anteriores), es necesario que sus sistema de cmara se encuentre calibrado. El proceso de calibracin de cmara es necesario para establecer una relacin entre las coordenadas de imagen con relacin a las coordenadas del robot, de tal forma que cuando el sistema de visin ubique un objeto el robot lo pueda manipular. Es decir, a cada punto en la imagen le corresponde un punto en el sistema de coordenadas del robot. El proceso de calibracin de cmara sirve tambin para hallar el tamao en centmetros de los objetos presentes en la escena (espacio de trabajo del robot). Nuestro programa emplea el mtodo de calibracin de cmara por transformacin homognea. Consiste en colocar un par ms objetos en el espaci de trabajo de un robot, por lo que se conocen sus posiciones de acuerdo a las coordenadas del robot, luego se realiza una ms fotografas, midiendo el nmero de pxeles entre los centros de los objetos. La distancia entre pares de objetos se emplea para determinar la relacin entre pxeles y otras unidades (como centmetros) que el robot pueda reconocer. La distancia entre un par de puntos u objetos se puede calcular a travs de la Ec. 6.14. Distancia entre dos puntos = [ (x 1 - x2) + (y1 - y2) ]
2 2
...(Ec. 6.14)
Para la calibracin de la cmara en nuestro sistema, se deben de colocar sobre la mesa de trabajo del robot y en el centro de la mesa de trabajo, una serie de patrones de calibracin (Apndice D: Patrones de Calibracin y Figuras Geomtricas). Estos patrones de calibracin estn constituidos con cuatro puntos cada uno (con un dimetro de 1 cm), separados a 10 cm, que en conjunto forman las esquinas de un cuadrado de 10x10cm. Se tienen seis patrones para realizar la calibracin de cmara (a 24 puntos), cada patrn difiere del anterior en que los puntos se encuentran con una rotacin de 15, es decir, se tiene un patrn para 0, 15, 30, 45, 60 y 75. En cada fotografa de cada patrn (6 en total), se calcula: la escala en el eje x (escx), la escala en el eje y (escy), en ngulo de rotacin respecto al eje cero del robot ( ng) y las a coordenadas del centro (xc,yc) del cuadrado formado por los cuatro puntos de cada patrn (Figura 6.30).
El resultado es el promedio de los valores obtenidos de cada una de las fotografas de cada patrn. Para el ejemplo mostrado de la Figura 6.31 obtenemos los resultados mostrados en la Figura 6.32.
Escala en el eje x = 9.17 pxeles/cm Escala en el eje y = 9.11 pxeles/cm ngulo = 0.18 Desplazamiento en x = 0.31 cm Desplazamiento en y = -0.14 cm
Figura 6.32: Datos obtenidos para la calibracin de cmara. En la Figura 6.32, la escala en el eje x resulta ser un poco mayor con relacin a la escala en el eje y, debido a que la cmara posiblemente presentaba una ligera inclinacin en ese eje (x). El ngulo resultante (ngulo) es debido a que el eje horizontal (x) de la cmara difiere un poco del eje horizontal de la mesa de trabajo del robot, pues no hay forma de alinear con precisin absoluta la cmara con la mesa de trabajo. As tenemos que existe un desplazamiento entre ambos centros, y por est razn siempre ser necesario realizar algn tipo de calibracin de cmara para asegurar que el robot pueda manipular los objetos presentes en su espacio de trabajo. 6.6 Reconstruccin tridimensional con VRML Para poder representar los objetos encontrados en las aplicaciones anteriores en un mundo virtual, es necesario llevar a cabo un procesamiento de los datos obtenidos de cada una de ellas. Para la reconstruccin tridimensional de los objetos bajo estudio se utilizan los parmetros que almacena el programa de reconocimiento y que para el caso de figuras geomtricas se muestran en la Figura 6.33. 1 217.580948 68.228569 -0.569332 17.119450
Tringulo
Identificacin Centro X en pxeles Centro Y en pxeles Angulo en radianes () Tamao en pxeles (m)
Identificacin Centro X en pxeles Centro Y en pxeles Angulo en radianes () Tamao en pxeles (m)
Figura 6.33: Parmetros encontrados para las figuras geomtricas. Cada uno de estos parmetros representa las caractersticas de los objetos como se muestra en la Figura 6.34 (ver tambin el Apndice C: Transformaciones geomtricas y el Apndice D: Patrones de calibracin y figuras geomtricas Estos parmetros son: ). a) Identificacin.- es un nmero el cual representa al objeto bajo estudio y es asignado por nuestro programa de reconocimiento para las categoras de objetos dadas. Coordenadas X y Y centro de masa de cada objeto localizado por el .programa de reconocimiento. ngulo ().- ngulo en radianes que representa la rotacin del eje principal (eje del centro de masa) respecto al eje x horizontal. Tamao en pxeles (m). - representa el tamao del eje principal calculado por el mtodo de momentos de Hu.
b) c) d)
117
B x centro,ycentro m A a a b m m x centro,ycentro
x centro,ycentro
m b
Cada uno de estos parmetros se utiliza de forma distinta dependiendo del objeto en cuestin. Describimos a continuacin a manera de ejemplo el empleo de cada uno de ellos para los objetos de la Figura 6.34. Se emplean algunas de las ecuaciones del Apndice C: Transformaciones Geomtricas. 1) El tringulo se modela tomando como base sus vrtices, por lo que hay que calcular los puntos A, B y C alrededor del centro (Ecs. 6.15 a 6.17). H es la altura del objeto estimada. A(x,y) = [ xcentro + m cos(), ycentro + m sin() ] B(x,y) = [ xcentro + m cos(+2/3), ycentro + m sin(+2/3) ] C(x,y) = [ xcentro + m cos(+4/3), ycentro + m sin(+4/3) ] La modelacin con VRML se muestra en el Programa 6.3. 1. Transform { 2. translation xcentro 3. children [ 4. Shape 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. } } ] ...(Ec. 6.15) ...(Ec. 6.16) ...(Ec. 6.17)
y centro 0 # Desplaza el origen al centro del objeto { geometry IndexedFaceSet{ coord Coordinate{ point[Ax Ay 0, # Coordenadas Bx By 0, # Coordenadas Cx Cy 0, # Coordenadas Ax Ay H, # Coordenadas Bx By H, # Coordenadas Cx Cy H] # Coordenadas } coordIndex [2,1,0,-1, 3,4,5,-1 0,1,4,3,-1, 0,3,5,2,-1, 2,5,4,1,-1] }
A B C A B C
1 1 1 2 3 4
118
Para el resto de los objetos de la Figura 6.34 se desplazan las coordenadas de referencia en el espacio virtual, al centro del objeto (x centro ,ycentro ), de ste modo el origen queda en el centro de cada objeto al momento de realizar la modelacin. 2) Para el cuadrado se desplaza el origen al centro del objeto (x centro ,ycentro ), se rota (el origen) y se calcula uno de los lados del cuadrado para su modelacin (Ecs. 6.18 y 6.19). H es la altura del objeto estimada. a = m cos () ngulo de rotacin = + /4 La modelacin con VRML se muestra en el Programa 6.4. 1. Transform { 2. translation xcentro y centro 0 # Desplaza el origen al centro del objeto 3. rotation 0 1 0 + /4 # Rota al origen 4. children [ 5. Shape { 6. geometry Box { size a a H } # Tamao del cubo 7. } 8. ] 9. } Programa 6.4: Fragmento de cdigo VRML para modelar un cubo. 3) Para el rectngulo se desplaza el origen al centro del objeto (x centro,ycentro ), se rota el (origen) y se calculan los lados del rectngulo para su modelacin (Ecs. 6.20 a 6.22). H es la altura del objeto estimada. a=m b=2m ngulo de rotacin = La modelacin con VRML se muestra en el Programa 6.5. 1. Transform { 2. translation xcentro y centro 0 # Desplaza el origen al centro del objeto 3. rotation 0 1 0 # Rota al origen 4. children [ 5. Shape { 6. geometry Box { size a b H } # Tamao del cubo 7. } 8. ] 9. } Programa 6.5: Fragmento de cdigo VRML para modelar un prisma rectangular. 4) El hexgono se modela sobreponiendo tres rectngulos, por lo que para cada rectngulo hay que desplazar el origen al centro del objeto (x centro,ycentro ), calcular los lados de cada rectngulo y su ngulo de rotacin (Ecs. 6.23 a 6. 27). H es la altura del objeto estimada. a=m b = 3 m ngulo de rotacin 1 = + /6 ngulo de rotacin 2 = + /2 ngulo de rotacin 3 = + 5/6 119 ...(Ec. 6.23) ...(Ec. 6.24) ...(Ec. 6.25) ...(Ec. 6.26) ...(Ec. 6.27)
Araujo Daz David
La modelacin con VRML se muestra en el Programa 6.6. 1. Transform { 2. translation xcentro y centro 0 # Desplaza el origen al centro del objeto 3. rotation 0 1 0 + /6 # Rota al origen 4. children [ 5. Shape { 6. geometry Box { size a b H } # Tamao del cubo 7. } 8. ] 9. } 10. Transform { 11. translation xcentro y centro 0 # Desplaza el origen al centro del objeto 12. rotation 0 1 0 + /2 # Rota al origen 13. children [ 14. Shape { 15. geometry Box { size a b H } # Tamao del cubo 16. } 17. ] 18. } 19. Transform { 20. translation xcentro y centro 0 # Desplaza el origen al centro del objeto 21. rotation 0 1 0 + 5/6 # Rota al origen 22. children [ 23. Shape { 24. geometry Box { size a b H } # Tamao del cubo 25. } 26. ] 27. }
Programa 6.6: Fragmento de cdigo VRML para modelar un prisma hexagonal. 5) Para el crculo y el crculo indicador se desplaza el origen al centro del objeto (x centro ,ycentro ) para su modelacin (Ec. 6.28). H es la altura del objeto estimada. Radio = m La modelacin con VRML se muestra en el Programa 6.7. 1. Transform { 2. translation xcentro y centro 0 # Desplaza el origen al centro del objeto 3. children [ 4. Shape { # Tamao del cilindro 5. geometry Cylinder { radius m height H } 6. } 7. ] 8. } Programa 6.7: Fragmento de cdigo VRML para modelar un cilindro. Como es posible apreciar en los programas anteriores, las figuras geomtricas pueden modelarse con VRML a travs de primitivas bsicas. Para la modelacin del mundo virtual, u n programa en Java lee un archivo como el de la Figura 6.33 y realiza los clculos necesarios para modelar los objetos, luego son insertados en el cdigo de VRML el cual contiene al robot y su medio ambiente. ...(Ec. 6.28)
120
En el caso de reconocimiento de dgitos, es necesario asignarle a cada dgito un cubo y a cada cubo un nmero. Para hacerlo en VRML, se emplea el fragmento de cdigo mostrado en el Programa 6.8. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Shape { geometry Text { string [ "2" ] fontStyle FontStyle { family "ALBERTUS" style "BOLD" size 1.5 } } }
# # # # # #
Inserta Texto Nmero 2 a insertar Define el tipo de letra Tipo de letra: ALBERTUS Estilo: negrita Tamao: 1.5 (Unidades VRML)
Programa 6.8: Fragmento de cdigo VRML para insertar nmeros. El cdigo anterior se repite para cada uno de los dgitos identificados, por lo que el programa en Java repite el proceso una cantidad de veces igual a la cantidad de dgitos hallados.
121
Resumen La implementacin del sistema de visin se realiz para cuatro tareas: para reconocimiento de figuras geomtricas, para reconocimiento de dgitos, para el anlisis de objetos en movimiento y para la estimacin de altura. Las figuras geomtricas son fciles de reconocer por los mtodos de extraccin de contornos, bsqueda de esquinas, seguimiento de contornos y reconocimiento por clculo de momentos de Hu. Tambin son fciles de modelar pues solo requieren de las primitivas bsicas de VRML. El objetivo es el de localizar cada uno de los objetos que se encuentren presentes en el espacio de trabajo del robot, por lo que el sistema de visin deber de proveer al robot, de la informacin sobre el tipo de objeto, localizacin, orientacin y tamao, para que el robot pueda determinar como y si es posible manipularlo. La distribucin de los momentos de Hu (tres para est aplicacin), permite ver que algunos lmites se diferencian perfectamente de las dems, como son el tringulo, el rectngulo, el hexgono y los crculos indicadores, mientras que el crculo y el cuadrado casi se juntan en sus lmites superior e inferior. Muchas de las figuras pueden ser reconocidas calculando solo el primer momento de Hu. Para el reconocimiento de dgitos, existen sistemas de reconocimiento de caracteres cuyo proceso se asemeja al reconocimiento por momentos pues consisten en una segmentacin de lnea, segmentacin de palabras y caracteres, reconocimiento de caracteres y produccin de un archivo de salida de texto. En los sistemas OCR, se deben de tener tantos cdigos para reconocimiento como tipos de caracteres se deseen reconocer, sin embargo permiten realizar el reconocimiento de un gran nmero de smbolos. El reconocimiento de dgitos por momentos consiste en la caracterizacin de los parmetros de cada uno de los dgitos, como si estos fueran un objeto. Se encontr que es necesario calcular una mayor cantidad de momentos (cuatro en este caso), debido principalmente a que la cantidad de objetos se increment. Tambin fue necesario ampliar el programa para poder ordenar cada digito en una celda de una matriz de 3x3 y encontrar las coordenadas del lugar vaco. Para el anlisis de movimiento, realiza una modelacin virtual que simula de la forma ms fiel posible el movimiento de los objetos proveniente de una pelcula, una serie de fotografas, etc. En este caso el programa de reconocimiento simplemente calcula el centro de masa del objeto que se mueve, trazando su trayectoria en el mundo virtual y calculando su velocidad y aceleracin instantnea. Cuando se requiere conocer la altura de los objetos, el sistema de visin tambin puede determinar la altura de los mismos mediante triangulacin, al hacer incidir un par de rayos de luz sobre un objeto, conociendo el ngulo entre los haces de luz y la altura de un objeto conocido, es posible calcular la altura de los dems con un mnimo de error. El sistema de calibracin de cmara puede ser empleado para hallar el tamao en centmetros de los objetos presentes en la escena (espacio de trabajo del robot), se emple el Mtodo de Transformacin Homognea, el cual consiste en colocar un par de objetos alrededor del centro del espaci de trabajo del robot, por lo que se conocen sus posiciones de acuerdo a las coordenadas del robot, luego se realiza una fotografa y se mide el nmero de pxeles entre los centros de ambos objetos, conociendo la distancia en pixeles entre ambos objetos.
122
Conclusiones y Perspectivas
123
Conclusiones y Perspectivas
Nuestro sistema de visin artificial est constituido por sistemas de adquisicin, procesamiento, segmentacin y modelado de imgenes, que permiten la localizacin de los objetos presentes en la imagen correspondiente a la escena del espacio de trabajo del robot y la reconstruccin tridimensional de los objetos presentes en una imagen, usando modelos en lenguaje VRML para la actualizacin del espacio virtual del Laboratorio de Robtica Virtual. Para la localizacin de los objetos se calcularon las coordenadas del centro de gravedad de cada uno de los objetos presentes en la escena (puesto de trabajo del robot), su orientacin y tamao por clculo de momentos invariables de Hu. El reconocimiento consisti en la creacin de un cierto espacio de clasificacin acorde con el modelo, implementando esquemas de comparacin vectorial de los objetos modelados. La implementacin de un sistema de calibracin geomtrica permiti asegurar la repetitividad y efectividad de las medidas realizadas por nuestro sistema de reconocimiento en el puesto de trabajo real. Se realiz a travs del mtodo de transformacin homognea. Mediante el anlisis realizado al programa de reconocimiento, se estableci que conforme el nmero de objetos en la escena se incrementa, el tiempo empleado para la ejecucin lo hace en un tiempo proporcional. Un tiempo de ejecucin reducido como el que presenta este algoritmo permite realizar varios reconocimientos por segundo, an si el nmero de objetos es moderadamente grande. Por otro lado, el tamao de imagen si influye notablemente en el 2 desempeo del algoritmo, es este caso la complejidad obtenida de forma emprica es de O(p ), con lo cual al incrementar el tamao de la imagen el tiempo crece de forma drstica. Sin embargo para un tamao adecuado para el reconocimiento (320*240 p xeles) el tiempo de ejecucin obtenido es lo suficientemente bajo, como para realizar varias operaciones de reconocimiento en un segundo. Tambin se encontr que el nmero de objetos que es conveniente enviar como archivo es de aproximadamente unos 350, despus de dicha cantidad es conveniente enviar la imagen de entrada. Se establece que existe la posibilidad de emplear informacin visual para que un robot pueda manipular objetos, con lo que s amplia el campo de interaccin del robot que emplee este tipo de sistemas. Los resultados indican que los sistemas de reconocimiento por medios digitales pueden reconocer objetos de forma rpida, lo que permite asegurar que el robot pueda tener informacin sobre la localizacin de un objeto, debido a que la inercia de los sistemas mecnicos del robot impide que este ejecute tareas a velocidades comparables a las operaciones del sistema de visin. Se obtuvieron buenos resultados para las aplicaciones propuestas de reconocimientos de objetos geomtricos, reconocimiento de dgitos, anlisis de objetos en movimiento y estimacin de la altura de los objetos. Esto se debi a que como la cantidad de objetos es pequea, permiti establecer lmites lo suficientemente separados como para no tener ambigedad en el reconocimiento. En resumen, tenemos las siguientes conclusiones: Se realiz un estudio de las reas de inters para cubrir los objetivos de esta tesis, tal como robtica, reconstruccin tridimensional y visin artificial. En robtica, se destacaron conceptos tales como robots, robots manipuladores y robots de servicio, adems de la clasificacin de este tipo de autmatas, se explic la forma en que los sensores permiten que los robots interacten de mejor manera con su ambiente. Para la reconstruccin tridimensional se realiz una pequea descripcin del lenguaje para modelacin virtual VRML, indicando como es posible combinarlo con otros lenguajes de uso general como Java para incrementar su capacidad y versatilidad de clculo. En visin artificial se describieron los procesos para realizar el reconocimiento, as como los algoritmos necesarios para cada y uno de los procesos involucrados.
124
Conclusiones y Perspectivas
En est trabajo tambin se describe el objetivo y los recursos disponibles en el Laboratorio de Robtica Virtual, y como nuestro sistema de visin permiti realizar un mejor empleo del mismo en las reas docente y de investigacin. Nuestro trabajo present los aspectos necesarios para el diseo e implementacin de un sistema de visin general, el cual puede ser adaptado a diversas aplicaciones. Se describieron de forma detallada los algoritmos para llevar a cabo el reconocimiento de objetos. Se demostr cmo es posible emplear nuestro sistema de visin de forma inmediata en aplicaciones como el reconocimiento de figuras geomtricas. Adems se mostr como es posible emplearlo junto con otros sistemas para medir la altura de los objetos. Se desarrollaron algoritmos para la asignacin de los dgitos en cada una de las celdas de una matriz lgica de 3x3 y se programaron los algoritmos necesarios para realizar el reconocimiento de estos objetos. Se implementaron los programas necesarios para llevar a cabo la representacin del robot y su medio ambiente mediante VRML, as como la actualizacin con los objetos hallados por nuestro sistema de reconocimiento. La velocidad de los algoritmos result ser buena, al permitir analizar las imgenes varias veces por segundo. Se encontr que para una imagen de tamao constante el tiempo necesario para el reconocimiento vara de forma directamente proporcional al nmero de objetos a reconocer, p lo que si tomamos en cuenta que el robot UNIMATE S-103 solo puede or almacenar hasta 94 puntos (los cuales pueden ser solo objetos) el tiempo necesario para llevar a cabo el reconocimiento es de tan solo 50 milsimas de segundo (Pentium III @
450Mhz).
Para un nmero de objetos constante, pero con un tamao de imagen variable, los resultados fueron alentadores, a pesar de que la complejidad es cuadrtica. As para 20 objetos en la escena obtuvimos un tiempo de 38 milsimas de segundo (Pentium III @ 450Mhz) para una imagen de 76,800 pxeles. Tambin se demostr que para imgenes que contengan un nmero de objetos mayor a 350, el archivo generado es mayor que el archivo de la imagen original. Sin embargo para 94 objetos el tamao es menor 2.5Kbytes, lo que resulta ser casi la cuarta parte del tamao del archivo de la imagen original.
7.2 Perspectivas Los sistemas de visin sern cada vez ms empleados para muchos tipos de aplicaciones en el futuro. Los robots sern los primeros beneficiados del uso de sistemas de visin, pero lo estn empezando a ser todos los sistemas autnomos. Adems de los sistemas industriales es posible aplicar los sistemas de visin en otras reas como la astronoma, medicina, milicia, anlisis de imgenes, agricultura, seguridad, redes de comunicacin, control de calidad, modelacin de ambientes virtuales, etc. Pero tambin es posible implementar los algoritmos en circuitos especializados de visin. As sera posible tener equipo electrnico capaz de seguir, encontrar, reconocer, etc., objetos especficos con un bajo costo (mucho menor al de una computadora).
125
Conclusiones y Perspectivas
1) Este sistema puede ser empleado con xito en rea como la astronoma, para localizacin y seguimiento de objetos celestes, en el futuro existirn observatorios astronmicos automticos. Una sugerencia para adaptar nuestro sistema de visin a un telescopio astronmico, es la que se muestra en la Figura 7.1. Interfase con la PC y circuitos de potencia Sistema de Visin
1
Telescopio
Computadora
Figura 7.1: Sistema de visin para seguimiento de objetos celestes. Nuestro sistema de visin (Figura 7.1 mdulo 1 se encargar de proporcionar las ) coordenadas del objeto celeste captado por el telescopio, para que un computadora (Figura 7.1 mdulo 2) ajuste los parmetros de posicin del t lescopio que permitan centrar al objeto e seguirlo e incluso calcular su trayectoria, con el eje principal del telescopio (Figura 7.1 mdulo 5), a travs de una interfase que contendr los dispositivos de potencia necesarios para accionar los servomecanismos de movimiento del telescopio (Figura 7.1 mdulos 3 y 4). 2) En la medicina, se puede emplear para modelar el espacio de trabajo de la endoscopia, con lo cual el mdico podr observar de forma precisa los diferentes rganos, y en un futuro podr ser reemplazado por robot para realizar tareas en las cuales el paciente no corra riesgo (Figura 7.2).
Sistema de Visin
1
Modelo Generado
Computadora
Programa de modelacin de rganos
6 5
Endoscopio
Figura 7.2: Sistema de visin en la medicina. Nuestro sistema de visin proporciona (Figura 7.2 mdulo 1) en este caso los parmetros para modelos reconocidos. Con imgenes del interior del cuerpo humano provenientes de un endoscopio (Figura 7.2 mdulo 4). Producir modelos tridimensionales en VRML de los rganos internos del cuerpo humano y del endoscopio (Figura 7.2 mdulos 5 y 6). 3) Para la implementacin en un circuito del algoritmo de localizacin de objetos, proponemos el circuito de la Figura 7.3, el cul se encuentra dividido en tres etapas, convertidor analgico/digital (A/D) para la seal compuesta de video (NTSC-M norma RS-170A), un microcontrolador encargado de hallar el centro de un objeto en la imagen y un dispositivo para
126
Conclusiones y Perspectivas
comunicacin a travs del puerto serie RS-232C, que permite comunicar los resultados a otros dispositivos similares, computadoras, etc.
1) Comunicaciones Serie
Filtro 1 Vdeo
2) Convertidor A/D
Figura 7.3: Circuito para implementar el algoritmo de localizacin del centro de los objetos.
El circuito encargado de las comunicaciones (Figura 7.3 mdulo 1), est constituido por un circuito adaptador de lnea (MAX232). Los programas para enviar datos del microcontrolador al mundo exterior se encuentran programados en la memoria del microcontrolador (Programa 7.1). Una seal compuesta de vdeo, est constituida por la seal de vdeo, y las seales de sincronizacin de la seal, por lo que para realizar una conversin A/D simple ( igura 7.3 F mdulo 2), se requiere de al menos tres filtros. Uno destinado a convertir la seal de vdeo en una seal binaria, a travs de un comparador de ventana; no interesa que la seal sea de color, un amplificador operacional de bajo costo no podr responder a la frecuencia de la subportadora de color. Los otros dos filtros se encargarn de proporcionar las seales que indican l s pulsos o horizontal y vertical; estos tambin pueden ser implementados por medio de comparadores de ventana. En el microcontrolador (Figura 7.3 mdulo 3) se encuentran los programas de comunicacin serie, de localizacin de las coordenadas de los objetos y se pueden programar seales, las cuales pueden transferirse a travs de sus ocho lneas digitales del puerto B. Se trata de un circuito microcontrolador PIC16F84 de 8 bits comercializado en Mxico por Microchip [Microchip 98]. Entre sus caractersticas podemos enumerar las siguientes: Una memoria de programa de 1Kx14 bits de tipo Flash. Memoria de datos EEPROM de 64 bytes. Memoria RAM de propsito general de 68 bytes. 13 lneas de entrada/salida con control individual de direccin.
127
Conclusiones y Perspectivas
Frecuencia de funcionamiento mxima de 10Mhz. 35 instrucciones. Arquitectura Harvard (buses independientes para la memoria de instrucciones y datos). Arquitectura RISC (Reduce Instruction Set Computer). Soporta segmentacin (Pipe-Line segmentacin del procesador)
1. ;-----------------------------------------------------------------------2. ; SUBRUTINA: InitSerialPort 3. ; Inicia el puerto serie 4. ;-----------------------------------------------------------------------5. InitSerialPort 6. BSF Serial_TX ; Salida ALTA por omisin 7. MOVLW 10 ; Retardo para envi 8. MOVWF Serial_LoopCount 9. InitSerialDelay 10. MOVLW Serial_BitDelay 11. CALL DelayWByFour 12. DECFSZ Serial_LoopCount, f 13. BTFSS STATUS, Z ; Si es cero termina 14. GOTO InitSerialDelay 15. RETURN 16. ;-----------------------------------------------------------------------17. ; SUBRUTINA: TransmitDataByte 18. ; Transmite el byte del registro W a la salida serie 19. ;-----------------------------------------------------------------------20. TransmitDataByte 21. MOVWF Serial_CurrentByte ; Almacena el byte a enviar 22. BCF Serial_TX ; Enva el bit de inicio 23. MOVLW Serial_BitDelay ; Retardo de 1 bit 24. CALL DelayWByFour 25. MOVLW 8 ; Enva el Byte bit a bit 26. MOVWF Serial_LoopCount 27. TxDataByteLoop 28. BSF STATUS, C 29. RRF Serial_CurrentByte, f ; Lee la bandera de acarreo C 30. BTFSS STATUS, C 31. BCF Serial_TX ; Si el bit = 0 entonces TX = 0 32. BTFSC STATUS, C 33. BSF Serial_TX ; Si el bit = 1 entonces TX = 1 34. MOVLW Serial_BitDelay ; Retardo de 1 bit 35. CALL DelayWByFour 36. DECFSZ Serial_LoopCount, f ; Decrementa el contador 37. GOTO TxDataByteLoop 38. BSF Serial_TX ; Enva el bit de PARO 39. MOVLW Serial_BitDelay ; Retardo de 1 bit 40. CALL DelayWByFour 41. RETURN ; Regresa
El algoritmo empleado para encontrar de forma aproximada la localizacin de un objeto en la seal de vdeo compuesta, se muestra en el Programa 7.2. Debido a que este tipo de microcontroladores no manejan instrucciones complejas, las operaciones del programa son muy simples, pero permiten localizar objetos con una buena precisin.
128
Conclusiones y Perspectivas
1. 2.
En microcontrolador toma muestras a intervalos regulares de tiempo, empezando inmediatamente despus del pulso de sincrona vertical y el primer pulso horizontal. El microcontrolador deber llevar dos cuentas, una para X y otra para Y de la forma: a. Clculo del centro en X i. Empezar una cuenta desde el inicio e incrementarla una vez por cada muestra (x 1) ii. Empezar otra cuenta mientras aparezca la imagen (x 2) iii. Hacer la operacin de clculo del centro en X del objeto: x c = x1 + x 2 / 2 + acarreo de la divisin b. Clculo del centro en Y i. Empezar una cuenta desde el inicio e incrementarla una vez por cada pulso horizontal (y 1) ii. Empezar otra cuenta mientras aparezca la imagen (y 2) iii. Hacer la operacin de calculo del centro en Y del objeto: yc = y1 + y2 / 2 + acarreo de la divisin
Programa 7.2: Algoritmo para calcular el centro de un objeto. La divisin como tal no existe en el microcontrolador, sin embargo es posible realizar corrimientos lgicos. Como la divisin es entre un nmero sobre dos, entonces es necesario realizar solo un corrimiento para obtener dicha divisin. En la Figura 7.4, podemos ver como opera el Programa 7.2 sobre una imagen simple. b) Clculo del centro: Datos para X: x 1 = 4 x2 = 3 x c = 4 + (00111) + 0 = 4 + 0001+1 = 6 Datos para Y: y 1 = 2 y2 = 3 yc = 2 + (00111) + 0 = 2 + 0001+1 = 4 Resultado: Centro del objeto (6,4) a) Imagen de vdeo: 8 muestras 6 lneas horizontales Figura 7.4: Clculo del centro de un objeto por medios electrnicos.
1 2 3 4 5 6 7 8 x 1 2 3 4 5 6 y
129
Conclusiones y Perspectivas
130
Sistemas de Adquisicin
131
Sistemas de Adquisicin
a.1.1 Disco de Nipkow El disco de Nipkow fue realizado en 1884 por Paul Nipkow (Figura a.1) [Teuchert 46]. Se compone de un disco que lleva en su superficie una serie de agujeros rectangulares dispuestos en espiral, de forma que, al girar, el borde inferior de uno corresponde al borde superior del siguiente. La separacin entre dos agujeros es igual al ancho de la imagen a transmitir. Tamao de la imagen
2
Lente
1
Lente
Fotocelda
Motor DISCO DE NIPKOW DISCO DE NIPKOW Figura a.1: Disco de Nipkow. El sistema se conoce como analizador mecnico de imagen. Al girar el disco (1), la luz solo pasa por un agujero (2) a la vez, por lo que permite explorar una imagen completa (3) y transmitirla elctricamente punto por punto. La imagen explorada debe de estar lo suficientemente iluminada para que la fotocelda (4) funcione. El disco de Nipkow permiti las primeras transmisiones de televisin y de transmisin en color, realizadas por la BBC de Londres a principios del siglo XX. a.1.2 Disector de imagen o tubo de Fransworth El disector de imagen o tubo de Fransworth fue el primer tubo de vaco dispuesto para captar imgenes [Ramirez 70]. Se compone de las partes que se muestran en la Figura a.2. Imagen Fotoctodo Ando acelerador
3 4 6 1
Salida de video
5
Lente Figura a.2: Disector de imagen o tubo de Fransworth. La imagen se explora moviendo la emisin de electrones (1) por medio de bobinas de deflexin que se encuentran afuera del tubo. El fotoct odo (2) est constituido por cesio evaporado, con lo cual se tienen alrededor de 40,000 elementos de imagen. Cada elemento se comporta como una fotocelda emisiva, es decir, emite electrones al incidir la luz sobre ella, estos electrones son a celerados por un nodo acelerador (3) y movidos por un campo magntico, pasando por un agujero de 0.3mm de dimetro (4). La variacin en los campos magnticos permite explorar un elemento cada vez, formndose al final una seal elctrica de salida (5) que corresponde a las intensidades luminosas de cada parte de la imagen. 132
Araujo Daz David
Sistemas de Adquisicin
El fotoctodo (2) produce electrones proporcionalmente a la intensidad de la luz que incide sobre cada uno de sus elementos. La seccin multiplicadora (6) (multiplicador por emisin secundaria), se coloco para elevar el nivel de la seal de salida, pues la resistencia del fotoctodo produce ruido. La seccin multiplicadora est formada por dynodos, que al recibir haz electrnico, por emisin secundaria multiplican el nmero de electrones (Figura a.3). Los electrones en la seccin multiplicadora viajan en espiral, debido a que el campo elctrico es perpendicular a la direccin del electrn. ++ ++++ electron Salida multiplicada + ++ +
Figura a.3: Funcionamiento de los dynodos multiplicadores. a.1.3 Iconoscopio, tubo de condensacin de acumulacin El Iconoscopio, tubo de condensacin de acumulacin, fue ideado por V. K. Zworykin. Se compone de los elementos mostrados en la Figura a.4 [Ramirez 70].
2 + Aro colector
Electrones
Salida de video
Luz incidente
Electrones
Electrones
Figura a.4: Iconoscopio, tubo de condensacin de acumulacin. Un rayo de luz incidente arranca electrones de la capa de cloruro de plata del mosaico (1) (la estructura del mosaico permite almacenar cargas elctricas por medio de pequeas capacidades), dejando cargas negativas alrededor del punto de incidencia. Estas cargas son absorbidas por el aro colector (2). Al incidir el haz electrnico, estas capacidades se descargan produciendo una corriente proporcional a la luz incidente. Es posible que la emisin secundaria causada por el haz electrnico, llegue a ser ms grande que la que produce la luz de la escena. Para evitar esto se requiere entonces que la cantidad de luz en la escena sea elevada, bajando la eficiencia del tubo. Para contrarrestar este efecto provocado por le emisin secundaria se le da al tubo una polarizacin luminosa externa (3), la cual llega paralela al mosaico. Con esto se cancela la emisin secundaria. En est tubo se tiene el problema de microfonismo por su gran tamao, es decir, cuando una seal elctrica provoca la vibracin de los dispositivos elctricos y electrnicos provocados por el tamao del dispositivo, entre ms grande sea el dispositivo aumenta el microfonismo.
133
Sistemas de Adquisicin
a.1.4 Orticon de imagen El orticon de imagen se encuentra constituido por los componentes que se ilustran en la Figura a.5 [Ramirez 70].
Fotoctodo Lente 4
Electrones Electrones Electrones Electrones
Multiplicador
5 Salida (mV)
3 TARGET 6
Haz explorador
2 Imagen 1 Bobina de deflexin Reja del Target Seccin de imagen Reja de freno Seccin de multiplicacin Can electrnico
Seccin de exploracin
Figura a.5: Orticon de imagen. Los electrones desprendidos del fotocatdo (1) por efecto de la iluminacin de la escena son acelerados y pasan de la reja del target (2) al target (3). Al llegar los electrones al target (3) producen una emisin secundaria (4) que es absorbida por la reja del target (2), mientras por el lado contrario el haz electrnico (5) es acelerado y despus frenado para que no se impacte en el target (2); regresa al can en una proporcin equivalente a la luz incidente proveniente de la escena, este haz es llamado haz explorador (6). El target es el el equivalente al mosaico del orticon. Para trabajar est dispositivo necesita una temperatura de 30C 2.5C; pero tambin cuando se toma un punto brillante, su negativo se observa un tiempo despus. a.1.5 Vidicon El vidicon es el primer tubo que emplea transductores fotoresistivos, es decir, que su resistencia varia de acuerdo a la cantidad de luz que recibe (Figura a.6) [Ramirez 70]. Imagen
E=45V
Lente
Aislador R
Capa conductora
134
Sistemas de Adquisicin
La capa del aislador (1) varia su impedancia de acuerdo a la cantidad de luz recibida por una capa conductora (2). Como aislador se emplea antimonio; as se tiene que la v ariacin de impedancia es por ejemplo que para un punto negro Z=20M y que para un punto blanco Z=2M. Sus ventajas son: es de tamao reducido, bajo peso, el voltaje para formar el haz es de 250V y no presenta microfonismo. Sin embargo su problema es la corriente de negro, es decir, que existe una corriente o seal de vdeo con una imagen en negro cuando no incide luz proveniente de una escena, por lo cual trabaja con mucha luz. Otro problema es la inercia en el valor resistivo, por lo que la imagen sigue presente despus de que desapareci. Este defecto se conoce como LAG (atraso), es decir, la imagen se atrasa respecto a la anterior. a.1.6 Plmbicon El plmbicon se conoce tambin como leadicon (Inglaterra) y saticon (Japn), es un tubo de cmara de oxido de plomo PbO (Figura a.7) [Ramirez 70]. Reja de frenado
4
Imagen
5
N I
1 2
P
3
135
Sistemas de Adquisicin
SiO2
p+
p+
p+
p+
Figura a.8: Construccin de un dispositivo de transferencia de carga. En la Figura a.9 se presenta una celda. Se observa como los materiales tipo P (2) se encuentran aislados por el material tipo N (3), as es como se conforma la fuente (4) y el drenaje (5) de un dispositivo MOSFET, ambas zonas estn separadas por una parte del substrato tipo N, llamado regin de agotamiento (6). Metalizado Luz
7
Metalizado
SiO2 p+
4 2 6
p+
5
Fuente
Regin de Agotamiento
(Carga almacenada)
Drenaje N
3
Figura a.9: Funcionamiento de una celda de un dispositivo de transferencia de carga. Cuando los fotones (7) inciden liberan electrones en la regin de agotamiento (6). Estos generan iones positivos, por lo que se genera una carga positiva en la regin de agotamiento (6). Est carga es directamente proporcional a la intensidad de la luz que incide sobre el arreglo. De est forma podemos considerar que se tiene una serie de capacitores MOS (Metal Oxide Semiconductor), cada uno con una carga proporcional a la intensidad de la luz en ese punto. Las cargas individuales son transferidas de una celda CCD a la siguiente, aplicando pulsos de reloj entre la fuente y el drenaje con una fase de 180 entre ellos. De esta forma cada fila en el arreglo funciona como un registro de corrimiento serie. Cuando se recorre de forma continua cada fila se obtiene una seal de vdeo (Figura a.10).
Amplificador Convertidor Analgico / Digital
Salida de Vdeo
Almacenamiento Temporal
Registro Temporal
Figura a.10: Control lgico usado para transferir cargas en cada fila en un CCD. 136
Araujo Daz David
Sistemas de Adquisicin
Sin embargo el almacenamiento de cargas puede ser ms rpido que la generacin de la seal de vdeo, por lo que se usa una memoria temporal de cuadro (frame buffer) para almacenar temporalmente la salida entera del arreglo y ser almacenada en la computadora. Las cmaras CCD estn disponibles en arreglos de una dos dimensiones. Los arreglos de una dimensin se conocen como Dispositivos Lineales de Imgenes LID (Linear Imaging Device) y los de dos dimensiones son llamados Dispositivos de rea de imagen AID (A rea Image Device). a.1.8 Arreglos de dispositivos de inyeccin de carga Los dispositivos de inyeccin de carga CID (Charge Injection Devices) operan con un almacenamiento de carga similar a los CCD. Cuando la luz incide sobre una celda de estado slido CID, una carga que es proporcional a la luz es inyectada en la celda. Son arreglos d filas y e columnas, y su lectura hace referencia a las filas y columnas correspondientes, es decir, de la misma forma en que se da lectura a una memoria de computadora. Como resultado, el almacenamiento de cargas no se obtiene por un corrimiento, mas bien por un control lgico de lectura, por esto es llamado un dispositivo de acceso paralelo. a.2 Composicin de las cmaras captadoras de imgenes electrnicas Un sistema de adquisicin, no solo esta compuesta por los sistemas transductores de seales luminosas a elctricas, sino tambin tienen una parte ptica, encargada de enfocar la imagen en los captores de imagen. Una cmara electrnica de video est compuesta de dos partes: la parte electrnica, que esta formada por los captores de imagen y la parte ptica. La parte ptica de la cmara esta formada por: una parte interna (separadores pticos) y poruna parte externa (lentes Zoom), la primera parte se explic en los apartados anteriores, es los apartados siguientes veremos la parte ptica de la cmara. a.2.1 Separador ptico La funcin de un separador ptico es descomponer una imagen en sus componentes rojo, verde y azul, para poder ser procesada por tres tubos en B/N (blanco y negro) y obtener una seal en color [Escalera 01]. Un separador ptico se forma de cristales dicroicos (Figura a.11).
Espejos dicroicos Luz incidente. Foco Rojo R
Figura a.11: Composicin de un separador ptico. Un espejo dicroico es aquel que responde a una longitud de onda de la luz, dichos espejos se controlan mediante su espesor. En cada u de los focos se encuentra un tubo de cmara no destinado a capturar la intensidad del color correspondiente (rojo, verde o azul). El tubo verde siempre se coloca en el eje ptico del sistema, por que se encuentra a la mitad del espectro entre el rojo y el azul. 137
Araujo Daz David
Sistemas de Adquisicin
La descomposicin de la escena en tres colores corresponde a la forma en que se cree que el ojo humano funciona. Sin embargo tambin tiene que ver con la manera en que se realiza la reconstruccin de la imagen en un cinescopio de televisin. El ojo humano ve mediante un sistema substractivo de luz, la imagen en la cmara (que ser presentada en un cinescopio) se crea por un sistema aditivo en la Figura a.12 se observan las diferencias entre ambos mecanismos de descomposicin de la luz. Cyan Rojo Verde
Blanco
Magenta Azul
Negro
Amarillo
Amarillo
Verde Cyan
a) Sntesis Aditiva
b) Sntesis substractiva
Figura a.12: Sntesis aditiva y substractiva del color. El color blanco que es la referencia en sistemas de imgenes en color se crea mediante la relacin de luminancia dada por la Ec. a.1. Blanco = LUMINANCIA = Y = 0.3R + 0.59G + 0.11B ...(Ec. a.1)
La Ec. a.1 puede ser utilizada para convertir imgenes de color en B/N, para que puedan ser procesadas por nuestro sistema de reconocimiento. a.3 Lentes El primer componente de un sistema de adquisicin es desde luego el sistema ptico formado por lentes, pues ests se encuentran en contacto con la imagen de la escena a procesar. Un lente es ms eficiente entre mas luz deje pasar [Stollberg 78]. Las caractersticas relacionadas con los lentes se observan en la Figura a.13.
Lente DIAFRAGMA
D Activo
Figura a.13: Caractersticas de una lente. Donde: D .- es el dimetro de la lente. F .- es la distancia focal de la lente. Determina el tamao de la imagen. D Activo .- es el dimetro real por el que pasa la luz, se regula mediante el diafragma, solo cambia el dimetro pero el foco sigue en el mismo lugar. 138
Araujo Daz David
Sistemas de Adquisicin
La relacin del lente f es un indicativo de la eficiencia de la lente. Entre mayor sea, mejor es la lente por que la cantidad de luz es mayor. En algunos casos es mayor a 1, por que el dimetro del lente es mayor que su foco (Ec. a.2). f = F/DActivo ...(Ec. a.2)
Para un lente ideal F=1, 0% de luz reflejada, 0% de distorsin cromtica y 0% de distorsin geomtrica. Los F comerciales son: Fcomerciales = 1.2, 1.4, 2.4, 2, 4, 8, 16, 22, 32, etc. El tamao de la imagen esta determinado por la relacin que exista entre el foco y la imagen formada por la lente. As se tienen: a) Normal.- Tiene una captacin angular media de 45. b) Gran angular. - Tiene una captacin angular grande 180 ms. c) Telefoto.- Tiene una captacin angular pequea entre 4 y 5. Por ejemplo para un F=20mm, seria un lente gran angular para una imagen de 8mm, mientras que seria una telefoto para una imagen de 35mm, debido al tamao de la imagen que forma sobre el sensor. Los Zoom son lentes de distancia focal variable. En realidad son un conjunto de lentes que equivalen a uno solo de distancia focal variable con caractersticas de alta calidad. Son lentes de costo elevado por que los elementos que los componen deben de ser muy finos para lograr las caractersticas deseadas. Con este tipo de lentes no existen errores geomtricos ni cromticos. Los lentes que forman un Zoom pueden ser de distintas clases de cristales, acrlicos y plsticos para lograr una excelente transparencia (Figura s a.14 y a.15).
Luz Corrector cromtico Parte movil Parte movil Cmara a) POSICIN NORMAL Luz Corrector cromtico Cmara b) POSICIN GRAN ANGULAR Luz Corrector cromtico Cmara c) POSICIN TELEFOTO
139
Sistemas de Adquisicin
La nomenclatura Zoom 10X, implica una distancia focal mxima es de 10xF, donde F es el foco que marca el telefoto, pero no es la relacin de la lente. Por ejemplo: Para un Zoom=10X y F=15 implica que F varia de la forma: F=15 a 150.
Resumen Los sistemas de adquisicin de imgenes son el primer elemento para el proceso de visin artificial. Permiten traducir una imagen en una serie de seales elctricas que la computadora puede interpretar para almacenarla y procesarla. Existen tres tipos de transductores para la adquisicin de imgenes: los foltovoltaicos que producen un voltaje proporcional a la luz incidente, los fotoemisivos que emiten electrones al incidir luz sobre de ellos y los fotoconductivos, los cuales cambian su impedancia de forma proporcional a la cantidad de luz. Por aparicin histrica, los primeros sistemas fueron los mecnicos como el disco de Nipkow, luego los fotoemisivos como el disertor de imagen, el iconoscopio y el orticon, por ultimo los fotoconductivos como el vidicon, el plmbicon y los dispositivos de transferencia de carga CCD. Los CCD son los que an se siguen usando por su bajo peso, confiabilidad, bajo consumo de potencia, larga vida, etc. Una cmara para adquisicin de imgenes consta no solo de los dispositivos captores de imagen sino tambin separadores pticos y lentes. Un separador ptico tiene como funcin principal descomponer una imagen en colores, de forma substractiva, obteniendo entonces tres seales elctricas correspondientes a los colores rojo, verde y azul. Las lentes son las encargadas de enfocar la escena en el sensor de imagen. Las lentes son ms eficientes entre ms luz dejen pasar. Sin embargo para captar imgenes de alta calidad son necesarios conjuntos de lentes llamados Zoom.
140
Iluminacin Estructurada
141
Iluminacin Estructurada
La distancia abajo del eje x proporciona una indicacin de la altura del objeto, mientras la lnea que aparece sobre el objeto proporciona su ancho. Si el objeto se traslada a lo largo del eje y este permanece estacionario pero se mueve el haz a lo largo del eje y, entonces se obtienen las caractersticas tridimensionales del objeto bajo estudio, como el ancho, la altura y la longitud.
Fuente de Luz y Cmara x d a
Escena
d h a x Figura b.1: Modulacin de un haz de luz por un objeto. El ancho del objeto en pxeles es d, con a como la distancia en pxeles entre la lnea d y el eje x, es posible obtener la altura (h) en pxeles de la forma que se muestra en la Ec. b.1. h = a tan ...(Ec. b.1) y
El largo se obtiene contando el nmero de imgenes en donde aparece una modulacin del eje x, y conociendo el desplazamiento del objeto del haz por cada toma, por lo que bastar multiplicar el nmero de tomas en las que aparece una modulacin por su desplazamiento por toma. b.2 Triangulacin Un mtodo comn para medir la profundidad de un punto en particular, es usando triangulacin [Kanade 87, Schilling 90]. Para estimar la profundidad es posible utilizar un arreglo con una fuente de luz y una cmara como la que se muestra en la Figura b.2, la fuente de luz puede provenir de un haz de luz lser u otra capaz de producir un rayo fino de luz. De la instalacin del sistema se puede determinar d como la distancia horizontal entre el haz incidente y la lente de la cmara y como el ngulo entre el haz incidente y la horizontal.
Cmara
Lser x
c
f d
Lente
a
Haz incidente
Objeto
142
Iluminacin Estructurada
El haz incidente llega al objeto en el punto p. Las coordenadas del punto p respecto al c c c cuadro de cmara son C={x ,y ,z }; donde es el ngulo que forman C y la distancia focal efectiva f. puede ser calculado empleando relaciones trigonomtricas. Conociendo C y f puede calcularse como el ngulo entre el haz incidente y el reflejo que llega a la cmara. Usando leyes de senos y conociendo y d se puede calcular a. Por ltimo a puede ser usada para conocer la distancia vertical z, con lo que se conoce la profundidad del punto en cuestin (Ecs. b.2 y b.3). =arctan (C/f) z=[d sin cos ]/cos( - ) ...(Ec. b.2) ...(Ec. b.3)
b.3 Implementacin de un sensor de caractersticas tridimensionales (Hardware) Para detectar las caractersticas en tres dimensiones de un objeto empleamos una lnea de luz la cual nos proporciona, para una toma determinada, el contorno con las caractersticas del objeto en la rebanada correspondiente, es decir, se tiene una modulacin del haz de luz en la escena. Uno de los primeros aspectos a considerar en el diseo de este tipo de sistemas es como generar el haz de luz. Considerando que en la industria es muy probable que el objeto se deslice en algn eje (como en una banda transportadora), el haz lser puede mantenerse inmvil, mientras el objeto se mueve tomando imgenes a intervalos iguales de tiempo. Para propsitos de prueba, se realiz un circuito encargado de controlar un motor paso a paso (1) que permite mover los objetos en el eje y con gran precisin, realizando una toma , (fotografa) en cada paso. El circuito adems presenta un control para el motor de corriente continua (CC) (2) destinado a mover un espejo para crear una lnea de luz lser, aunque es conocido que tambin es posible generarla por medios pticos. Tiene tambin un excitador del lser, este no es muy complejo debido a que se empleo un lser comercial de baja potencia, por lo que un circuito TTL (Transistor-Transistor Logic) es suficiente para su funcionamiento. Todo el circuito es compatible con niveles TTL, por lo que se puede conectar de forma directa a una computadora. El circuito construido se presenta en la Figura b.3, se activa de forma manual, tanto en el encendido del lser como cada paso del motor que controla el movimiento sobre el eje y. El haz lser usado, provino de un diodo lser comercial (Figura b.4). Este tipo de diodos requiere para su funcionamiento de un circuito similar al de un diodo emisor de luz (LED), sin embargo la mayora tambin integra un sensor de intensidad de luz emitida, el cual se emplea para mantener constante la intensidad del haz. Para los diodos que operan en el espectro visible (regularmente de color rojo), el circuito viene integrado en el mismo substrato que conforma el diodo lser, por lo que para su operacin slo se requiere colocar un resistor en serie a una fuente de alimentacin, de hecho solo consume una corriente un poco mayor a la de los LED comunes. Para mover el rayo de luz es necesario emplear algn medio ptico mecnico, por lo que se eligi un espejo rotatorio (mecnico) para mover el haz de un lado a otro de la escena de forma constante, sin embargo la velocidad a la que se mueve el haz debe de ser cuidadosamente ajustada, pues depende de la velocidad del obturador de la cmara que se encuentre tomando cada una de las imgenes necesarias para la reconstruccin de los objetos. En el circuito de la Figura b.3, se observa la forma en que se ajusta la velocidad del motor de CC, a travs de un potencimetro que controla la corriente de la base de un transistor. Hay que cuidar que la frecuencia angular del espejo giratorio sea diferente a algn mltiplo o submltiplo de la frecuencia vertical de la cmara, por ejemplo, si la frecuencia vertical de la cmara es de 30Hz la frecuencia angular a la que gira el espejo, deber de ser un mltiplo diferente de est, sin embargo dependiendo de la potencia del lser empleado est frecuencia podr ser tan elevada como sea necesario.
143
Iluminacin Estructurada
Contador Binario
+5V
+5V
74109
5 16 PR 11 PR
+5V
C1815
14 12
2 4 3
J CK K
10
1k
0.1
CK K
CLR 15
200
CLR 1
13
9 120
7407
1 2 Amarillo
1) Primer paso de Avance 2) Segundo paso de Avance y Encendido del Lser Apaga el Lser para evitar su desgaste
10 9
7400
11
+ Vcc
Lser Amplificador
Espacio de emisin
Figura b.4: Constitucin de un diodo lser. El lser se mueve perpendicular a la escena, por lo que para poder captar la perspectiva del objeto es necesario que la cmara mantenga un ngulo, el cul permita captar todo el objeto, como se ilustra en la Figura b.5. Si consideramos que se conoce el ngulo que forma la cmara respecto a su vertical podemos calcular como se muestra en la Ec. b.4. = 180 - ...(Ec. b.4)
144
Iluminacin Estructurada
Y luego emplear las ecuaciones de apartado b.1 y b.2 para l clculo de las caractersticas de los objetos. El ancho de la toma p, es igual a la cantidad de pxeles horizontales de la cmara.
y
Espejo Cmara Haz Lser Giro
p d a x
Escena d h a x p y
Figura b.5: Deformacin del haz lser por un objeto. Existe una limitacin importante, en la distancia de separacin entre objetos para evitar que unos no cubran parcialmente a otros, esta distancia es a, por lo que la altura tambin se encuentra limitada, de otra forma el sistema detectara solo al objeto ms prximo a la cmara y de forma parcial a los objetos del resto de la escena. El sistema de reconstruccin tridimensional mediante iluminacin estructurada, se muestra en la Figura b.6, se observan algunos objetos bajo estudio, el lser, los circuitos, mecanismos y la cmara web.
Circuito
Lser
Espejo
Figura b.6: Fotografa del sistema de reconstruccin tridimensional. b.4 Anlisis de las imgenes (Software) Para obtener mejores resultados es necesario ajustar los parmetros de entrada de la cmara para que sea sensible al haz de luz, es decir, que el haz sea preferentemente lo ms brillante de la escena. Para ajustar los parmetros d programa es necesario proporcionar los el datos de la cantidad de centmetros en el eje x, el avance en el eje y, y el ngulo de la cmara El . programa calcula el ancho y la altura de cada imagen contando el nmero de pxeles que existen en los dos ejes, y la longitud del objeto contando la cantidad de imgenes en las que aparece una
145
Iluminacin Estructurada
p=320 pixeles
a=v-u
240 pixeles d = ancho
Figura b.7: Imagen de un objeto para extraccin de caractersticas. El programa diseado sigue los pasos que a continuacin se enumeran (Figura b.8) para obtener un modelo en VRML (Virtual Reality Modeling Language) de la escena explorada. 1) 2) Recibe como entrada las fotografas tomadas de la escena (1). Y los archivos de nombre de las imgenes (2) y de calibracin de cmara (3). Transforma las imgenes a un formato de mapa de bits monocromtico (4), en caso de ser necesario. Las fotografas tomadas deben quedar en el formato de mapa de bits monocromtico, para poder ser ledas (5) y procesadas por el programa. Realiza el anlisis de cada una de las fotografas encontrando las profundidades del objeto (6). Ajusta los ejes a las medidas reales, por medio de los archivos de calibracin, y calcula los puntos en el espacio (7) para obtener la matriz 3D (8). Escribe el cdigo VRML que representa los datos tridimensionales obtenidos, en una modelacin con de lneas y otra con mallas (9) (Figuras b.11b, b.11c, b.12b y b.12c). Presenta los datos en una grfica tridimensional en Lenguaje C (10) [Foley 96, Johnson 87] (Figuras b.11a y b.12a). Genera archivos de la matriz tridimensional y una matriz con puntos y vrtices en tres dimensiones para usarse con Java (11).
Archivos de Imgenes
1 Cdigo VRML para representacin 3D 9
3) 4) 5) 6) 7)
Programa: rec3d
Leer archivos
5
Grfica de Puntos en C
10
Archivo de calibracin
3
Procesar Imgenes
6
146
Iluminacin Estructurada
b.5 Resultados La velocidad angular a la que se mueve el espejo giratorio, se debe ajustar para que en una toma, no se corte y aparezca como una lnea continua, para laceres de baja potencia como el empleado, la frecuencia no puede ser muy elevada. Se obtuvieron buenos resultados empleando frecuencias angulares menores de 20Hz, para un lser ptico de 680nm con 3mW de potencia. El tiempo necesario obtenido para procesar imgenes de 76,800 pxeles (320x240 pxeles), se muestra en la Figura b.9 y es posible calcularlo mediante la Ec. b.5. Tiempo de Procesamiento (s) = -0.0443281 + 0.0132724n -0.00010914n Donde: n = es el nmero de imgenes de la escena bajo anlisis.
Tiempo de Procesamiento
2
...(Ec. b.5)
0.3 0.25 Tiempo (s) . 0.2 0.15 0.1 0.05 0 10 15 20 25 28 Nmero de Imagenes
Imagen: 320*240 pxeles Mquina: Pentium III @ 450MHz
Medido Ajustado
Figura b.9: Tiempo de procesamiento de imgenes para reconstruccin tridimensional. El tiempo obtenido es lo suficientemente bajo, como para que las imgenes sean procesadas en un tiempo aproximadamente igual al de la velocidad de sincronizacin vertical de televisin usado en Mxico, que es de 33.3 milisegundos. El tamao de los archivos generados ( igura b.10) con la informacin necesaria para F realizar la reconstruccin tridimensional (3D) se puede calcular por medio de las Ecs. b.6, b.7, b.8 y b.9. Matriz de Reconstruccin (bytes) = 19.8 + 1,244.7n + 2 3 0.594286n - 0.0133333n Archivo para Java (bytes) = 124,785 +4,494.76n Archivo de VRML con Lneas (bytes) = 4,869.6 + 9,721.3n 2 + 13.42n Archivo de VRML con Malla (bytes) = 7,288.8 + 1,767.31n 2 + 13.4143n Donde:
...(Ec. b.8)
...(Ec. b.9)
147
Iluminacin Estructurada
300,000
250,000
Tamao en bytes
200,000
150,000
100,000
50,000
0 5 10 15 20 25 30 Nmero de imagenes
Figura b.10: Tamao de los archivos generados durante la reconstruccin tridimensional. En la Figura b.11 se muestran los resultados obtenidos al colocar en la escena una roldana con un dimetro de 2 pulgadas, realizando un total de 27 tomas cada una con un tamao de 320*240 pxeles, con 2mm de separacin en el eje y En la Figuras b.12 se muestran los . resultados obtenidos al colocar en la escena tres objetos de diferente altura, realizando un total de 28 tomas cada una con un tamao de 320*240 pxeles, con 2mm de separacin en el eje y. La calibracin se realiza de forma muy simple, para ello es necesario conocer cuanto se desliza el objeto cada vez que se realiza una toma, este valor en milmetros corresponde al dato y del archivo de calibracin, luego se toma una fotografa de un objeto de dimensiones conocidas para hallar el nmero de pxeles correspondientes a la modulacin en el eje x y calcular cuantos pxeles por milmetro se tienen en dicho eje. El programa realizado genera los siguientes archivos de salida: 1) Matriz de puntos en el espacio tridimensional.- contiene los puntos calculados en donde los dos primeros nmeros representan el nmero de tomas y el ancho de la imagen (para obtener los ejes x y y), despus viene el conjunto de puntos en que representan al eje z. Se almacena con el nombre: nombre_archivo.mtz.
148
Iluminacin Estructurada
2) Matriz de vrtices y lneas.- este archivo es usado para la reconstruccin tridimensional en lenguajes como Java, un programa de visualizacin tridimensional viene con los ejemplos de Java JDK 1.3 en el directorio: jdk1.3\demo\applets\WireFrame. Los archivos de este tipo se guardan como: nombre_archivo.pts. 3) Modelo Virtual con Lneas.- es un archivo VRML, el cual puede ser ejecutado en un navegador (una vez instalado en Plug-In correspondiente). El modelo se almacena con el nombre: mnombre_archivo.wrl. 4) Modelo Virtual con Malla.- es un archivo VRML, el cual puede ser ejecutado en un navegador. El modelo se almacena con el nombre: lnombre_archivo.wrl.
a) Lenguaje C
b) Lneas en VRML
c) Malla en VRML Figura b.11: Resultados para la reconstruccin tridimensional de una roldana.
a) Lenguaje C
b) Lneas en VRML
c) Malla en VRML Figura b.12: Resultados para la reconstruccin tridimensional de la mesa de trabajo de un robot con diversos objetos.
149
Iluminacin Estructurada
Resumen Los sistemas de caracterizacin de objetos en 3D son antiguos, sin embargo su empleo se ha limitado debido principalmente a los costos que involucran. Debido a que en los ltimos aos el costo de los equipos de computo y de elementos de captura de imgenes (cmaras web) se ha reducido por lo que es posible implementar sistemas como el aqu descrito para mltiples aplicaciones industriales a costos reducidos. La implementacin del hardware aqu presentada, es una tarea sencilla si se tienen algunos conceptos bsicos de electrnica, e incluso puede no ser necesario si, por ejemplo, se conocen los parmetros cinemticos de una banda transportadora, as solo es necesario ajustar los archivos de calibracin del programa. La cmara web es una cmara convencional, que solo requiere de ajustes necesarios para captar de forma adecuada el haz de luz lser. El diodo lser puede hallarse con facilidad y a un bajo precio en el mercado. Como se ha demostrado, el tiempo de ejecucin para crear el modelo de la escena es muy bajo, por lo que permitira un alto rendimiento del sistema, emplendolo; por ejemplo, como un sistema de inspeccin de partes automotrices como un medio de obtener parmetros (medidas) de objetos que se presenten en una banda transportadora, para control de calidad, para identificacin, para anlisis de piezas metlicas desde un puesto de trabajo remoto mediante el uso de Internet y VRML, etc. Adems se encontr que los archivos generados por el programa para la reconstruccin en 3D mediante mallas en VRML, son pequeos comparados con el archivo para Java y el mismo VRML pero empleando lneas, por lo que la mejor opcin es usar VRML en lugar de Java para este tipo de reconstrucciones. Sistemas como est pronto sern necesarios en las cadenas productivas, que requieran un alto rendimiento y un buen control de calidad, y de esta forma elevar la productividad, para poder competir en los nuevos ordenes econmicos mundiales.
150
Transformaciones
c.1.2 Escala La escala permite cambiar el tamao de los objetos. El escalamiento se lleva a cabo respecto al origen. Es diferencial si el escalamiento es distinto para ambos ejes (x,y) y uniforme si es el mismo (Ecs. c.3 y c.4). x = sx * x y = sy * y Donde: x, y sx sy = Punto de entrada = Escala en x = Escala en y ...(Ec. c.3) ...(Ec. c.4)
c.1.3 Rotacin La rotacin puede hacer que un objeto gire en un ngulo (Ecs. c.5 y c.6). y = x * cos - y * sin y = x * sin + y * cos Donde: x, y = Punto de entrada = Angulo de rotacin 151
Araujo Daz David
Transformaciones
c.1.4 Sesgo El sesgo es de dos tipos: sesgo sobre el eje y y sesgo sobre el eje x. En el sesgo las lneas paralelas permanecen paralelas (Ecs. c.7, c.8, c.9 y c.10). Sesgo sobre el eje X x = x + a * y y = y Sesgo sobre el eje Y x = x y = b * x + y Donde: x, y a, b = Punto de entrada = Constantes de proporcionalidad ...(Ec. c.9) ...(Ec. c.10) ...(Ec. c.7) ...(Ec. c.8)
c.1.5 Representacin de objetos bidimensionales Para poder realizar las operaciones con mayor facilidad, se representa cada punto por sus coordenadas (x,y) y las rectas que los unen, numerando los puntos y unindolos mediante sus ndices como se muestra en la Figura c.1. Puntos (x,y) 0 0 1 0 1 1 0 1 Lneas (a b) 0 1 1 2 2 3 3 0
P3=(0,1)
P2=(1,1)
P0=(0,0)
P1=(1,0)
Figura c.1: Representacin de objetos bidimensionales. c.1.6 Operaciones con transformaciones bidimensionales En la Figura c.2 se observan los resultados de aplicar las transformaciones bidimensionales a un cuadrado.
4 3 2 1
4 3 2 1
x
0 1 2 3 4 0 1 2 3 4
x
0 1 2 3
x
4
a) Objeto original
y
b) Traslacin con dx =1 y dy =2
y
c) Escala con s x =2 y sy =2
y
4 3 2 1
x
0 1 2 3 4 0 1 2 3 4
d) Rotacin de =30
Transformaciones
c.2 Transformaciones geomtricas tridimensionales Para un punto ( pxel en el caso de imgenes) en el espacio P(x,y,z) podemos realizar las operaciones siguientes en el espacio tridimensional [Foley 96]: c.2.1 Traslacin La traslacin se usa para mover a un objeto e el espacio. Es necesario aadir las n coordenadas en cada uno de los tres ejes (Ecs. c.11, c.12 y c.13). x = x + dx y = y + dy z = z + dz Donde: x, y, z = Punto de entrada dx = Desplazamiento en x dy = Desplazamiento en y dz = Desplazamiento en z ...(Ec. c.11) ...(Ec. c.12) ...(Ec. c.13)
c.2.2 Escala La escala cambia el tamao en alguna de las dimensiones de un objeto en el espacio. Es necesario aplicar la escala a cada una de las coordenadas de sus puntos (Ecs. c.14, c.15 y c.16). x = sx * x y = sy * y z = sz * z Donde: x, y, z = Punto de entrada sx = Escala en x sy = Escala en y sz = Escala en z ...(Ec. c.14) ...(Ec. c.15) ...(Ec. c.16)
c.2.3 Rotacin En el espacio tridimensional, e xisten tres rotaciones una por cada eje (Ecs. c.17, c.18, c.19, c.20, c.21, c.22, c.23, c.24 y c.25). Sobre el eje X x = =x y = y * cos x - z * sin x z = y * sin x + z * cos x Donde: x, y, z = Punto de entrada x = Angulo de rotacin ...(Ec. c.17) ...(Ec. c.18) ...(Ec. c.19)
Sobre el eje Y x = x * cos y + z * sin y y = y z = - x * sin y + z * cos y Donde: x, y, z = Punto de entrada y = Angulo de rotacin ...(Ec. c.20) ...(Ec. c.21) ...(Ec. c.22)
153
Transformaciones
Sobre el eje Z x = x * cos z y * sin z y = x * sin z + y * cos z z = z Donde: x, y, z = Punto de entrada z = Angulo de rotacin ...(Ec. c.23) ...(Ec. c.24) ...(Ec. c.25)
c.2.4 Sesgo En el espacio tridimensional, existen tres tipos de sesgo, uno por cada plano (Ecs. c.26, c.27, c.28, c.29, c.30, c.31, c.32, c.33 y c.34). Sobre el plano XY x = x y = y + ay * z z = ax * x + z Donde: x, y, z = Punto de entrada ax = Constante de proporcionalidad en x ay = Constante de proporcionalidad en y ...(Ec. c.26) ...(Ec. c.27) ...(Ec. c.28)
Sobre el plano XZ x = x + a x * z y = y z = az * x + z Donde: x, y, z = Punto de entrada ax = Constante de proporcionalidad en x az = Constante de proporcionalidad en z ...(Ec. c.29) ...(Ec. c.30) ...(Ec. c.31)
Sobre el plano YZ x = x + az * z y = y + ay * z z = z Donde: x, y, z = Punto de entrada ay = Constante de proporcionalidad en y az = Constante de proporcionalidad en z ...(Ec. c.32) ...(Ec. c.33) ...(Ec. c.34)
c.2.5 Proyecciones paralelas Las proyecciones paralelas, permiten modelar la profundidad de los objetos, para que su apariencia sea ms realista. Sobre el eje Z = 0. La proyeccin se realiza a un punto sobre el eje Z, por lo que el objeto sufre una deformacin que tiende a juntar sus lneas en el punto z= (Ecs. c.35, c.36, c.37, c.34, c.39, c.40, c.41, c.42 y c.43). x = x *(d + x)/ z y = y *(d + y)/ z z = z x = x Para Para Para Para z0 z0 z0 z=0 154 ...(Ec. c.35) ...(Ec. c.36) ...(Ec. c.37) ...(Ec. c.38)
Araujo Daz David
Transformaciones
y = y z = z Donde:
Para z=0 Para z=0 x, y, z = Punto de entrada d = Distancia del origen al Punto de Vista
Sobre el eje Z en infinito. x = x * (d + |x|)/(z + d) y = y * (d + |y|)/(z + d) z = z Donde: x, y, z = Punto de entrada d = Distancia del origen al Punto de vista ...(Ec. c.41) ...(Ec. c.42) ...(Ec. c.43)
c.2.6 Proyecciones ortogrficas Las proyecciones ortogrficas nos permiten visualizar las caractersticas del objeto visto desde cada uno de los ejes de coordenadas, es decir, es posible ver el frente, el lado y la parte de arriba de los objetos. Consiste en hacer cero las coordenadas del eje correspondiente y rotar los puntos de tal forma que la vista quede en el plano XY. Se tienen tres vistas ortogrficas (Ecs. c.44, c.45, 46, c.47, c.48, c.49, c.50, c.51 y c.52). Sobre el eje x = 0 x = z * sin (90) y = y z = 0 Donde: x, y, z = Punto de entrada ...(Ec. c.44) ...(Ec. c.45) ...(Ec. c.46)
Sobre el eje y = 0 x = x y = - z * sin(-90) z = 0 Donde: x, y, z = Punto de entrada ...(Ec. c.47) ...(Ec. c.48) ...(Ec. c.49)
Sobre el eje z = 0 x = x y = y z = 0 Donde: x, y, z = Punto de entrada ...(Ec. c.50) ...(Ec. c.51) ...(Ec. c.52)
c.2.7 Representacin de objetos tridimensionales Para poder realizar las operaciones de transformacin en el espacio tridimensional, es necesario representar cada punto por sus coordenadas (x,y,z) y las rectas que los unen numerando los puntos y unindolos mediante sus ndices como se muestra en la Figura c.3.
155
Transformaciones
Puntos (x,y,z) 0 0 0 1 0 0 1 1 0 0 1 0 1 0 1 1 1 1 0 1 1 0 0 1
Lneas (a b)
P6=(0,1,1) P3=(0,1,0) P7=(0,0,1) P0=(0,0,0) P5=(1,1,1) P2=(1,1,0) P4=(1,0,1) P1=(1,0,0)
0 1 2 3 4 5 6 7 1 2 3 0
1 2 3 0 5 6 7 4 4 5 6 7
Figura c.3: Representacin de objetos tridimensionales. c.2.8 Operaciones con transformaciones tridimensionales En la Figura c.4 se observan los resultados de aplicar las transformaciones tridimensionales a un cubo.
y 2 1 x z 1 2 1 2 z 2 1 1 2 2 1 x z 1 2 1 2 y 2 1 x y
a) Objeto Original
y 2 1 x z 1 2 1 2
2 1 1 z 2
d) Rotacin de x=60
2 1 1 z 2 1 2 x y
e) Rotacin de z=60
y 2 1 x z 2 1 1 2
f) Rotacin de y=60
y 2 1 x 1 z 2 1 2
x 0 1 2
j) Proyeccin paralela en z =
k) Proyeccin paralela en z = 25
156
Transformaciones
Tambin es posible encontrar las vistas ortogrficas de objetos complejos como se muestra en las Figuras c.5, c.6 c.7 y c.8. y y
x z y z
x z y z
x z y z
157
Transformaciones
x z
158
Patrones
Robot
1) El robot marca el centro de su mesa de trabajo (a). 2) Considerar un lado de la mesa de trabajo como referencia. 3) Colocar el primer patrn de calibracin (0) haciendo coincidir su centro con el centro marcado por el robot y el lado de referencia del patrn con el lado de referencia de la mesa de trabajo (b).
Centro
159
Patrones
Robot
4) Tomar la fotografa con el Lado de patrn de 0 y sustituirlos por los referencia dems patrones de 15, 30, 45, de la mesa 60 y 75, tomando en cada uno la imagen correspondiente. Lado de referencia del Patrn
Centro b)
Mesa de Trabajo
Figura d.1: Uso de los patrones de calibracin de cmara (Parte 2/2). Si bien es posible realizar la calibracin de cmara con el empleo de un solo patrn, es mejor usar varios patrones debido a las deformaciones geomtricas que los sistemas de captacin de imgenes puedan agregar a la escena. En nuestro caso decidimos usar seis patrones de calibracin, cada uno con cuatro puntos circulares como marcas de calibracin. Cada uno de estos patrones difiere del anterior en la posicin que guardan los puntos respecto al eje horizontal del sistema de visin. As tenemos los patrones calibrados en 0, 15, 30, 45, 60 y 75. Los patrones de calibracin de cmara se muestran en las Figuras d.2, d.3, d.4, d.5, d.6 y d.7.
160
Patrones
10 cm 4 mm
161
Patrones
10 cm 4 mm
162
Patrones
10 cm 4 mm
163
Patrones
10 cm 4 mm
164
Patrones
10 cm 4 mm
165
Patrones
10 cm 4 mm
166
Patrones
d.2 Figuras usadas para pruebas de reconocimiento Una vez realizada la calibracin de cmara, es necesario encontrar los parmetros de los objetos que nuestro sistema ser capaz de reconocer. En las Figuras d.8, d.9, d.10, d.11 y d.12 se muestran las figuras geomtricas usadas para las pruebas de reconocimiento. La Figura d.13 muestra los dgitos usados para reconocimiento de dgitos.
4 cm 4 mm
167
Patrones
Ancho del rectngulo = 8 cm Alto del rectngulo = 4 cm Radio del indicador = 4 mm Figura d.9: Prisma rectangular usado para pruebas de reconocimiento.
168
Patrones
2 cm 4 cm 4 mm
169
Patrones
Lado del tringulo = Altura del tringulo = Alto del prisma = Radio del indicador =
3.46 cm 3 cm 4 cm 5 mm
Lado del hexgono = Apotema = Alto del prisma = Radio del indicador =
2 cm 1.73 cm 4 cm 5 mm
Patrones
1234 5678
Araujo Araujo Araujo Araujo Araujo Araujo
Araujo
Araujo
Albertus 115
171
Patrones
172
CD- ROM
a) Pantalla de presentacin
b) Men de opciones
CD- ROM
e.2 Directorios del CD-ROM y su contenido El contenido de los directorios de CD-ROM se describe a continuacin: 1. Acrobat.- contiene el programa Acrobat Reader 5.0 (Figura e.2), que es un visualizador gratuito que permite navegar e imprimir archivos con formato PDF (Portable Document Format). La instalacin de este programa es necesario para poder ver los documentos de tesis y programas fuente contenidos en el CD-ROM.
Figura e.2: Acrobat Reader 5.0 2. Cosmo.- contiene el programa de visualizacin de mundos virtuales VRML 2.1 (Figura e.3), su distribucin es gratuita. Permite visualizar los mundos virtuales de los ejemplos y los que se obtienen con los programas desarrollados, sin embargo, es i dispensable tener n instalador un navegador de Internet como Internet Explorer.
Figura e.3: VRML 2.1 3. DATA.- contiene los datos y archivos de apoyo (imgenes, sonidos y configuraciones) para el men. 4. Ejecutables.-contiene los programas ejecutables en DOS (Disk Operating System) y HTML-Java (Ejecutar indice.exe). Los programas contenidos son los siguientes: ANTENA.- programa de prueba para generar patrones de radiacin de antenas en 3D en VRML, permite grabar un archivo VRML dependiendo la longitud de onda de la antena CAMARA.- programa para calibracin de cmara, segn el procedimiento descrito en el Captulo 6. Tareas del Sistema de Visin. DIGITOS.- programa de anlisis y reconocimiento de dgitos, con el mtodo descrito en el Captulo 6. Tareas del Sistema de Visin. INDICE.- programa que muestra todos los ejemplos y programas contenidos en este directorio. MOV01.- programa para el anlisis de movimiento de obajetos frente a la cmara, su descripcin se encuentra en el Captulo 6. Tareas del Sistema de Visin. PIRMIDE.- permite dibujar pirmides en el espacio 3D con VRML. R3D.- programa para la reconstruccin 3D a partir de las imgenes obtenidas con un sensor tridimensional a travs de luz lser. SOLAR.- simula un sistema solar en el espacio 3D en VRML, con solo tener los datos en un archivo de texto. VISION.- programa de anlisis y reconocimiento de objetos geomtricos segn el procedimiento descrito en Captulo 6. Tareas del Sistema de Visin.
174
CD- ROM
Los programas en Java se encuentran contenidos en los subdirectorios siguientes: URL4.- programa de reconocimiento de figuras geomtricas, el cual emplea Java para la actualizacin del espacio virtual, se ejecuta presionando ..\url4\ejecutar.exe URL5.- programa de reconocimiento de dgitos, el cual emplea Java para la actualizacin del espacio virtual, se ejecuta presionando ..\url5\ejecutar.exe ANTENAS.- programa para generar patrones de radiacin de antenas, el cual emplea Java para la actualizacin del espacio virtual, se ejecuta presionando ..\antenas\ejecutar.exe
5. Explorer.- contiene una versin personalizada de Internet Explorer 5.0 (Figura e.4), de distribucin gratuita. Es necesario para ejecutar la mayora de las aplicaciones contenidas en este CD-ROM y para navegar en Internet.
Figura e.4: Internet Explorer 5.0 6. Fuentes.- contiene los cdigos en lenguaje C, programas fuentes utilizados, en formato PDF. Java, HTML y VRML de los
DIGITO.- programas empleados para el reconocimiento de dgitos, contiene el programa en lenguaje C, Java, HTML y VRML. MOVIMIENTO.- programas empleados para el anlisis de movimiento, contiene el programa en lenguaje C, Java, HTML y VRML. REC3D.- programas empleados para la reconstruccin 3D, contiene el programa en lenguaje C, HTML y VRML. THREE3D.- programas empleados para la reconstruccin 3D, contiene el programa en Java y HTML. UNIMATE.- programa para la visualizacin del robot UNIMATE S-103, contiene el programa HTML y VRML. VISION.- programas empleados para el reconocimiento de figuras geomtricas, contiene el programa en lenguaje C, Java, HTML y VRML.
7. Internet.- contiene las pginas de Internet con ejemplos, teora y resultados obtenidos para el sistema de visin, programacin de ambientes virtuales, Java y VRML. 8. Kawa.- contiene el programa Kawa Professional Edition 5.0 (Figura e.5), es un ambiente integral de desarrollo para aplicaciones en Java. Permite editar, probar y depurar programas en Java de forma sencilla.
Figura e.5: Kawa Professional Edition 5.0 9. Presentacion.- contiene una presentacin en PowerPoint que describe el desarrollo y resultados de la tesis.
175
CD- ROM
10. prog_dos.- programas especialmente diseados para entender y/o demostrar algunos conceptos necesarios en visin artificial (ejecutar indice.exe). 11. Sdk13.- programa Java 2 SDK, Versin 1.3.0. SDK es un ambiente de desarrollo para construir aplicaciones, applets y componentes que pueden desplegarse en la plataforma de Java 2.
Figura e.6: Java 2 SDK 12. TCC.- contiene el programa Borland C++ 3.0 (Figura e.7), para desarrollar programas en lenguaje C. Permite editar, modificar, probar, ejecutar y depurar programas en lenguaje C/C++.
Figura e.7: Borland C++ 3.0 13. Tesis.- contiene los documentos de tesis en formato PDF. Tiene dos versiones de la tesis, una larga (vision.pdf), ideal para principiantes y una versin corta (tesis.pdf) dirigida a aquellos que poseen conocimientos en el rea. 14. Winzip.- contiene el programa WinZip programa de compresin y descompresin de archivos. 8.0 (Figura e.8). Es un excelente
176
Referencias
Referencias
[Alarcn 00]
De Alarcn Alvarez, E. y Pars I Burgus, N., Manual Prctico de VRML . 2.0, Ed. Biblioteca Tcnica de Programacin, Espaa, 2000, 187pp. Image Alchemy 1.8, Handmade Software, U.S.A., 1996, 226pp. Ayres, Frank, Clculo Diferencial e Integral, Ed. McGraw-Hill, Mxico, 1987, 345pp. Comer, Douglas E., edes de computadoras. Internet e Interredes, Ed. R Prentice-Hall, Mxico, 1997, 506pp. Corke, Peter I., Visual Control of Robots: high-performance visual servoing, Ed. John Wiley & Sons, Gran Bretaa, 1996, 353pp. Cormen, Thomas H., Charles E. Leiserson y Ronald L. Rivest, Introduction to Algorithms Ed. MIT Press y McGraw-Hill, 1990, 1025pp. , Chenyang Xu y Jerry L. Prince, Gradient Vector Flow: A New External Force for Snakes , IEEE, 1997, 66-71pp. Chapra, Steven C. y Raymond P. Canale, Mtodos Numricos para Ingenieros, con aplicaciones en computadoras personales, Ed. McGrawHill, Mxico, 1996, 641pp. Deitel, H.M. y Deitel, P.J., Como programar en Java, Ed. Prentice-Hall, Mxico, 1998, 1056pp. Diccionario de informatica, Ed. Oxford University Press, Mxico, 1990, 758pp. Duda, R. y Hart P, Use the Hough Transform to Detect Lines and Curves in Pictures, Ed. Communications of the ACM, Vol. 15, No. 1, U.S.A., 1972, 11-15 pp. Erdei. E. Guillermo, Cdigo de barras. Diseo, impresin y control de calidad, Ed. Mc. Graw Hill, Mxico, 1992, 192pp. De la Escalera, Arturo, Visin por Computador, Fundamentos y Mtodos, Ed. Prentice Hall, Espaa, 2001, 304pp. Foley, James D., van Dam, Andreis, Feiner, Steven K., Hughes, Jonh F. y Phillips, Richard L., Introduccin a la Graficacin por Computador, Ed. Addison Wesley Iberoamericana, U.S.A., 1996, 650pp. Granville, Willian Anthony, Clculo Diferencial e Integral, Ed. Limusa, Mxico, 1992, 677pp. Heileman, Gregory L., Estructuras de Datos, Algoritmos y Programacin Orientada a Objetos, Ed. McGraw-Hill, 1998, 305pp. Ibarra Zannatha, Juan Manuel, Notas del curso de robtica, Departamento de Control Automtico, CINVESTAV, Mxico, 1990, 60pp.
Araujo Daz David
[Comer 97]
[Corke 96]
[Cormen 90]
[CVPR 97]
[Chapra 96]
[Deitel 98]
[Diccionario 90]
[Duda 72]
[Erdei 92]
[Escalera 01]
[Foley 96]
[Granville 92]
[Heileman 98]
[Ibarra 90]
177
Referencias
[Ibarra 98]
Ibarra Zannatha, Juan Manuel, Visin Artificial para Robots, Departamento de Control Automtico, CINVESTAV, Mxico, 1998, 69pp. World Robotics 1998, Ed. Naciones Unidas y la International Federation of Robotics (IFR), New York y Genova, 1998, 299 pp. www.disclab.ua.es/gava/proyectos/teleoperacion/ Cliente/portada.html www.mor.itesm.mx/~lsi/redii /telecontrol/control_distancia.html 138.100.76.157 Jackson, Philip C., Introduction to Artificial Intelligence, Ed. Dover Publications, U.S.A., 1985, 453pp. Johson, Nelson, Advanced Graphics in C: Programming and Techniques, Ed. McGraw-Hill, U.S.A., 1987, 669pp. Kanade, Takco, Three-Dimensional Machine Vision, Ed. Kluwer, U.S.A., 1987, 609pp. Pequeo Larousse de Ciencias y Tcnicas, Ed. Larousse, Mxico, 1980, 1056pp. Malo Tamayo, Alejandro, Robot UNIMATE Serie 100 Modelo 130, Ed. CINVESTAV, Mxico, 1993, 42pp. Mammone, Richard J., Artificial Neuronal Networks for Speech and Vision, Ed. Chapman & hall, UK, 1994, 586pp. Masters, Timothy, Signal and Image Processing with Neuronal Networks a C++ Sourcebook, Ed. John Wiley & Sons, U.S.A., 1994 , 417pp. Image Processing Toolbox. For use with MATLAB, The Math Works inc. U.S.A., 1999, 400pp. Mazaira, Israel Morales, Manipulacin de objetos en movimiento con el robot UNIMATE S -130, asistido por visin, CINVESTAV, Mxico, 1994, 91pp. PIC16F8X, 18-pin Flash/EEPROM 8-bit Microcontrollers, Ed. Microchip, U.S.A., 1998, 124pp. Nakamura, Shoichiro, Mtodos Numricos Aplicados con Software, Prentice may, Mxico, 1992, 570pp. Ed.
[IFR 98]
[Internet 4.1]
[Internet 4.2]
[Johnson 87]
[Kanade 87]
[Larousse 80]
[Malo 93]
[Mammone 94]
[Masters 94]
[MatLab 99]
[Mazaira 94]
[Microchip 98]
[Nakamura 92]
[Ogata 93]
Ogata, Katsuhiko, Ingeniera de Control Moderna, Ed. Prentice Hall, Mxico, 1993, 1020pp. Ramirez Villareal, Humberto, Curso Rpido de Radio, Ed. Diana, Mxico, 1970, 263pp. Schildt, Herbert, Utilizacin de C en inteligencia artificial, Ed. McGraw-Hill, Espaa, 1987, 340pp.
[Ramirez 70]
[Schildt 87]
178
Referencias
[Schildt 92]
Schildt, Herbert, Turbo C/C++. Manual de Referencia, Ed. McGraw-Hill, Mxico, 1992, 240pp.
[Schilling 90]
Schilling, Robert J., Fundamentals of Robotics Analysis and Control, Ed. Prentice Hall, U.S.A., 1990, 424pp. Shneiderman Ben, "Designing the Users Interface, Strategies for effective ra Human-Computer Interaction", 3 edicin, Ed. Addison-Wesley, U.S.A., 1998, 638pp. Staugaard, Andrew C., Robotics and IA: An Introduction to Applied Machine Intelligence, Ed. Prentice Hall, U.S.A., 1987, 373pp. Tenenbaum, Aaron M., Yedidyah Langsam y Moshe A. Estructuras de Datos en C, Ed. Prentice Hall, 1993, 673pp. Augenstein,
[Shneiderman 98]
[Staugaard 87]
[Tenenbaum 93]
[Teuchert 46]
Hans Teuchert, Alta Frecuencia y Radiotecna, Ed. Labor, Argentina, 1946, 474pp. Manual del Electricista, Ed. Viakon- Conductores Monterrey, Mxico, 2000, 115pp. The Virtual Reality Modeling Language, www.vrml.org/Specifications/VRML, 1997, 236pp. Internet:
[Viakon 00]
[VRML 97]
[Willians 89]
Willians, Arthur B., Microprocesadores, Dispositivos Perifricos, Optoelectrnicos y de Interfaz, Ed. McGraw-Hill, Mxico, 1989, 280pp.
179
Referencias
180