DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo...

110
Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado de Maestro en Ciencias en Ciencias Computacionales Presenta Juan Gabriel López Solórzano Director de la tesis: Dr. Raúl Pinto Elías Co-Director de la tesis: M.C. José Luis González Rubio Sandoval Cuernavaca, Morelos Julio del 2003

Transcript of DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo...

Page 1: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

Centro Nacional de Investigación

y Desarrollo Tecnológ ico

cenidet

DETALLADOR DE TAREAS

DE

VISIÓN ROBÓTICA

TESIS

Que para obtener el grado de

Maestro en Ciencias en Ciencias Computacionales

Presenta

Juan Gabriel Lóp ez Solórzano

Director de la tesis:

Dr. Raúl Pinto Elías

Co-Director de la tesis:

M.C. José Luis González Rubio Sando val

Cuernavaca, Morelos Julio del 2003

Page 2: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado
Page 3: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

TABLA DE CONTENIDO

Capítulo 1 Introducc ión .................................................................................. 1

1.1 Antecedentes ....................................................................................................... 1 1.2 Descripción del problema..................................................................................... 5 1.3 Estado del Arte..................................................................................................... 5 1.4 Propuesta de solución.......................................................................................... 6

1.4.1 Objetivo de la tesis............................................................................................... 7 1.4.2 Alcances de la tesis.............................................................................................. 7 1.4.3 Metodología de solución....................................................................................... 7 1.4.4 Beneficios y productos esperados ........................................................................ 8

1.5 Organización de la tesis ....................................................................................... 8

Capítulo 2 Fundamentación teórica............................................................. 10

2.1 Definición del término tareas .............................................................................. 10 2.2 Definición del término detallador de tareas......................................................... 10 2.3 Celdas de trabajo ............................................................................................... 11

2.3.1 Elementos más comunes que componen una celda de trabajo robotizada.......... 11 2.3.1.1 Robots ........................................................................................................... 11 2.3.1.2 Efectores finales............................................................................................. 11 2.3.1.3 Sistemas de visión ......................................................................................... 12 2.3.1.4 Almacenes ..................................................................................................... 12 2.3.1.5 Alimentadores ................................................................................................ 12 2.3.1.6 Máquinas herramienta CNC ........................................................................... 12 2.3.1.7 Bandas transportadoras ................................................................................. 13 2.3.1.8 Piezas de trabajo............................................................................................ 13 2.3.1.9 Mesas de trabajo............................................................................................ 13

2.3.2 Simulación gráfica de las celdas de trabajo ........................................................ 13 2.4 Robot industrial .................................................................................................. 13

2.4.1 Definición de un robot industrial.......................................................................... 14 2.4.2 Conceptos básicos............................................................................................. 14

2.4.2.1 Eslabón.......................................................................................................... 14 2.4.2.2 Articulación .................................................................................................... 14

2.4.3 Configuraciones de robots.................................................................................. 15 2.4.3.1 Cartesiano...................................................................................................... 15 2.4.3.2 Cilíndrico........................................................................................................ 15 2.4.3.3 Esférico o polar .............................................................................................. 15 2.4.3.4 Scara ............................................................................................................. 16 2.4.3.5 Angular o antropomórfico ............................................................................... 16

2.5 Herramientas para generación de gráficos en 3D .............................................. 16 2.6 Herramientas para generar analizadores léxicos-sintácticos.............................. 16

2.6.1 Alfabeto ............................................................................................................. 16 2.6.2 Cadena .............................................................................................................. 17 2.6.3 Lenguaje............................................................................................................ 17 2.6.4 Gramática .......................................................................................................... 17 2.6.5 Analizador léxico................................................................................................ 18 2.6.6 Analizador sintáctico .......................................................................................... 18

Capítulo 3 Análisis del detallador de tareas ............................................... 20

3.1 Análisis de los elementos de la celda de trabajo ............................................... 20 3.1.1 Robots ............................................................................................................... 20

3.1.1.1 Resolución del problema cinemático directo ................................................... 21

Page 4: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

3.1.1.1.1 Cinemática del robot ................................................................................ 22 3.1.1.1.2 Representación de un cuerpo rígido en el espacio.................................... 23

3.1.1.1.2.1 Representación de la posición........................................................... 23 3.1.1.1.2.2 Representación de la orientación....................................................... 23

3.1.1.1.3 Matriz de transformación Homogénea ...................................................... 27 3.1.1.1.4 Método de Denavit-Hartenberg (D-H) ....................................................... 28 3.1.1.1.5 Algoritmo D-H para la obtención del modelo cinemático directo................ 32

3.1.2 Efectores finales................................................................................................. 34 3.1.3 Almacenes......................................................................................................... 35 3.1.4 Alimentadores .................................................................................................... 35 3.1.5 Máquinas herramienta CNC ............................................................................... 36 3.1.6 Piezas de trabajo ............................................................................................... 36 3.1.7 Mesas de trabajo................................................................................................ 36 3.1.8 Sistemas de visión ............................................................................................. 37 3.1.9 Bandas transportadoras ..................................................................................... 37

3.2 Selección de la herramienta de visualización ..................................................... 37 3.2.1 DirectX de Microsoft ........................................................................................... 38 3.2.2 Java3DTM ........................................................................................................... 38 3.2.3 OpenGL............................................................................................................. 38

3.3 Selección de la herramienta para generar analizadores léxico-sintácticos ......... 39 3.3.1 Flex y Bison ....................................................................................................... 39 3.3.2 JAVACC............................................................................................................. 39 3.3.3 ANTLR (Another Tool for Language Recognition)............................................... 39

Capítulo 4 Diseño del detallador de tareas ................................................. 40

4.1 Estructura de la base de información ................................................................. 40 4.1.1 Estructura de la tabla robots............................................................................... 41 4.1.2 Estructura de la tabla almacenes........................................................................ 42 4.1.3 Estructura de la tabla alimentadores................................................................... 43 4.1.4 Estructura de la tabla máquinas ......................................................................... 43 4.1.5 Estructura de la tabla piezas .............................................................................. 44 4.1.6 Estructura de la tabla sistemas de visión ............................................................ 44 4.1.7 Estructura de la tabla bandas transportadoras.................................................... 45 4.1.8 Estructura de la tabla celdas de trabajo.............................................................. 46 4.1.9 Estructura de la tabla relaciones......................................................................... 47 4.1.10 Estructura de la tabla puntos .............................................................................. 47

4.2 Lenguaje para la especificación de las tareas .................................................... 48 4.2.1 Palabras reservadas .......................................................................................... 48 4.2.2 Funciones o comandos ...................................................................................... 48 4.2.3 Estructura del programa para la especificación de las tareas.............................. 50 4.2.4 Gramática que define el lenguaje para especificar las tareas.............................. 50

Capítulo 5 Desarrollo del detallador de tareas ........................................... 51

5.1 Interfaz de los elementos ................................................................................... 51 5.2 Implementación de la representación gráfica de celdas de trabajo..................... 53

5.2.1 Inicializar OpenGL.............................................................................................. 54 5.2.2 Mapeo de la escena a la pantalla de la computadora......................................... 54 5.2.3 Establecer fuentes de luz y propiedades del material de los objetos ................... 57 5.2.4 Dibujo de objetos geométricos............................................................................ 59 5.2.5 Transformaciones de modelado ......................................................................... 61

5.3 Gramática empleada para la especificación de tareas ....................................... 63 5.3.1 Funcionamiento de ANTLR ................................................................................ 63 5.3.2 Especificación del analizador léxico y sintáctico con ANTLR............................... 64 5.3.3 Generación del analizador léxico y sintáctico con ANTLR................................... 66

5.4 Detallado de las tareas....................................................................................... 67

Page 5: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

Capítulo 6 Casos de prueba ......................................................................... 68

6.1 Plan de pruebas................................................................................................. 68 6.2 Resultados......................................................................................................... 77 6.3 Análisis de resultados ........................................................................................ 85

Capítulo 7 Conclusiones............................................................................... 86

7.1 Conclusiones ..................................................................................................... 86 7.2 Trabajos futuros ................................................................................................. 89

8 Referencias .................. ................................................................................. 90

9 Anexos .... .................... ................................................................................. 92

A. Gramática de entrada para ANTLR.................................................................... 92 B. OpenGL ............................................................................................................. 98

Page 6: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado
Page 7: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

LISTA DE FIGURAS Figura 1.1 Manipuladores robóticos utilizados para manipular objetos radioactivos,

peligrosos para el operador............................................................................ 2 Figura 1.2 Metodología de solución utilizada desarrollar el detallador de tareas............. 8 Figura 2.1 Eslabones y articulaciones (joints), elementos principales que forman la

estructura de un robot industrial. .................................................................. 14 Figura 2.2 Diferentes combinaciones de articulaciones más comúnmente utilizados en

los robots industriales................................................................................... 15 Figura 3.1 Diagrama que muestra los dos problemas fundamentales (problema

cinemático directo y problema cinemático inverso) a resolver en la cinemática del robot. ...................................................................................................... 22

Figura 3.2 Representación de un vector en un sistema de coordenadas cartesianas 3D...................................................................................................................... 23

Figura 3.3 Sistema de referencia fijo XYZ y sistema UVW asociado al objeto cuya orientación se desea definir ......................................................................... 25

Figura 3.4 Muestra la rotación del sistema UVW con respecto al X un ángulo ............. 25 Figura 3.5 Sistema de referencia UVW rotado sobre el eje Y un ángulo φ. ................... 26 Figura 3.6 Sistema de referencia UVW rotado sobre el eje Z........................................ 27 Figura 3.7 Valores que toman cada una de las submatrices que conforman la matriz de

transformación homógenea T(z,θi). .............................................................. 30 Figura 3.8 Valores que toman cada una de las submatrices que conforman la matriz de

transformación homógenea T(0,0,di). ........................................................... 30 Figura 3.9 Valores que toman cada una de las submatrices que conforman la matriz de

transformación homógenea T(ai,0,0). ........................................................... 31 Figura 3.10 Valores que toman cada una de las submatrices que conforman la matriz de

transformación homógenea T(x, αi). ............................................................. 31 Figura 3.11 Parámetros D-H (θi,di,ai,αi) para un eslabón giratorio................................. 33 Figura 3.12 Representación gráfica de un efector final a través del detallador de tareas.

..................................................................................................................... 34 Figura 3.13 Representación gráfica de un almacén a través del detallador de tareas... 35 Figura 3.14 Representación gráfica de una mesa de trabajo a través del detallador de

tareas. .......................................................................................................... 36 Figura 3.15 Representación gráfica de una banda transportadora y un robot a travéz del

detallador de tareas...................................................................................... 37 Figura 5.1 Interfaces que conforman la estructura general del detallador de tareas...... 53 Figura 5.2 Pantalla utilizada para generar la representación gráfica de las celdas de

trabajo. ......................................................................................................... 54 Figura 5.3 Volumen de visualización en perspectiva (gluPerspective()). ...................... 56 Figura 5.4 Colocación del punto de vista utilizando el comando gluLookAt(). ............... 57 Figura 5.5 a) Esfera iluminada, b) Esfera sin iluminación. Generadas con comando de

OpenGL........................................................................................................ 57 Figura 5.6 Esfera iluminada usando una fuente de luz tipo rayo láser. ........................ 59 Figura 5.7 A) Cubo en modelo sólido y B) en modelo de alambre generados con

OpenGL........................................................................................................ 60 Figura 5.8 A) Esfera sólida; B) esfera en modelo de alambre generadas con OpenGL.

..................................................................................................................... 60 Figura 5.9 Robot Tipo Scara en A) modelo alambre y B) sólido; generados con el

detallador de tareas...................................................................................... 61 Figura 5.10 Traslación de un cubo a lo largo del eje Z.................................................. 62

Page 8: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

Figura 5.11 Rotación de un cubo sobre el eje Y un ángulo de 45°................................ 62 Figura 5.12 Escalado de un cubo utilizando el comando glScalef. ................................ 63 Figura 5.13 Funcionamiento general de la herramienta ANTLR................................... 63 Figura 6.1 Representación en 3D (modelo sólido y de alambre) de un robot Scorbot,

realizado con el detallador de tareas. ........................................................... 70 Figura 6.2 Representación gráfica de una mesa de trabajo a través del detallador de

tareas. .......................................................................................................... 71 Figura 6.3 Representación gráfica de un alimentador ("Feeder1"). ............................... 71 Figura 6.4 Vista lateral de la Banda Transportadora ("Banda1"). .................................. 72 Figura 6.5 Representación gráfica de un sistema de visión a través del detallador de

tareas. .......................................................................................................... 72 Figura 6.6 Vista superior de la celda de trabajo el la cuál será definida una tarea que

será detallada............................................................................................... 73 Figura 6.7 Vista lateral de la celda de trabajo creada en el detallador de tareas........... 73 Figura 6.8 Representación gráfica de un robot cilíndrico (Modelo sólido y alambre)..... 74 Figura 6.9 Vista superior de la Banda Transportadora ("Banda1"). ............................... 75 Figura 6.10 Vista superior de la celda de trabajo para el caso de prueba C.................. 76 Figura 6.11 Vista lateral de la estructura de la celda de trabajo, caso C. ...................... 76 Figura 6.12 Gráfica que muestra los valores de la posición del efector final del robot

Scara generados por el detallador de tareas y el Robotics ToolBox. ............ 78 Figura 6.13 Acercamiento de la Figura 6.12, para comparar los resultados generados

por las dos herramientas. ............................................................................. 78 Figura 6.14 Valores de la orientación del efector final obtenidos con las herramientas

indicadas. ..................................................................................................... 79 Figura 6.15 Interfaz utilizada para la especificación de una tarea de inspección........... 79 Figura 6.16 Estructura de la celda y detalle de la tarea (inspección)............................. 81 Figura 9.1 Gráficos generados a partir de diferentes primitivas geométricas. .............. 99

Page 9: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

LISTA DE TABLAS Tabla 4.1 Principales tipos de datos utilizados en las tablas de la base de información.

..................................................................................................................... 41 Tabla 4.2 Tabla “Robots”, utilizada para almacenar los datos de cada robot industrial. 41 Tabla 4.3 Tabla “Parámetros D-H”, permite almacenar los parámetros Denavit-

Hartenberg de un determinado robot............................................................ 42 Tabla 4.4 Tabla “Almacenes”, utilizada para almacenar los datos de un almacén. ....... 42 Tabla 4.5 Tabla “Piezas Almacenadas” Es utilizada para almacenar la posición de

almacenamiento de una pieza de trabajo. .................................................... 43 Tabla 4.6 Tabla “Alimentadores”, utilizada para almacenar los datos de los

alimentadores............................................................................................... 43 Tabla 4.7 Tabla “Máquinas”, guarda los datos de las máquinas herramienta CNC. ...... 43 Tabla 4.8 Tabla “Procesos” que es utilizada para almacenar los datos de cada uno de

los procesos que es capaz de realizar una máquina herramienta CNC........ 44 Tabla 4.9 Tabla “Piezas”, utilizada para almacenar los datos de las piezas de trabajo. 44 Tabla 4.10 Tabla “Visión”, utilizada para almacenar los datos de los sistemas de visión.

..................................................................................................................... 44 Tabla 4.11 Tabla “Criterios” que es utilizada para almacenar los datos de cada uno de

los criterios de calidad aplicados a un proceso de inspección. ..................... 45 Tabla 4.12 Tabla “Bandas”, almacena los datos generales para las bandas

transportadoras. ........................................................................................... 45 Tabla 4.13 Tabla “SegmentosBanda” es utilizada para almacenar la información de

cada uno de los segmentos que forman la estructura de una banda transportadora.............................................................................................. 45

Tabla 4.14 Tabla “Celdas”, utiilizada para almacenar la información de cada uno de los elementos que forman una celda de trabajo en particular............................. 46

Tabla 4.15 Tabla “Relaciones”, utilizada para almacenar las relaciones establecidas entre los elementos de una celda de trabajo. ............................................... 47

Tabla 4.16 Tabla “Puntos”, utilizada para almacenar los puntos (posición y orientación) que un robot debe seguir para alcanzar a otro elemento.............................. 47

Tabla 4.17 Palabras reservadas del lenguaje utilizado para la especificación de las tareas. .......................................................................................................... 48

Tabla 4.18 Funciones o comandos del lenguaje utilizados para especificar las tareas. 49 Tabla 5.1 Interfaz de cada uno de los elementos comunes que pueden formar una celda

de trabajo. .................................................................................................... 52 Tabla 5.2 Interfaces auxiliares, utilizadas en el detallador de tareas............................. 52 Tabla 6.1 Parámetros D-H de un robot Scara de 4 grados de libertad. ......................... 69 Tabla 6.2 Parámetros D-H de los robots Scorbot de 5 grados de libertad..................... 70 Tabla 6.3 Matriz que indica las relaciones existentes entre los elementos que forman la

celda de trabajo............................................................................................ 74 Tabla 6.4 Parámetros D-H de un robot cilíndrico de 4 grados de libertad. .................... 74 Tabla 6.5 Matriz que presenta las relaciones entre los elementos que forman la celda de

trabajo. ......................................................................................................... 77 Tabla 9.1 Nombre de las primitivas de OpenGL y su significado................................... 98

Page 10: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado
Page 11: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

1. Introducción

Juan Gabriel López Solórzano 1

Capítulo 1

Introdu cc ión

La necesidad, cada vez mayor, de aumentar la productividad y conseguir productos acabados con una calidad uniforme, está haciendo que la industria gire cada vez más hacia la automatización de la fabricación, lo que ha conducido al uso de robots capaces de efectuar una amplia variedad de funciones de fabricación en un entorno de trabajo [GROO95].

“La robótica es una tecnología con un futuro y también es una tecnología para el

futuro” [GROO95]. En la actualidad es un campo de investigación muy amplio e interesante, todos los esfuerzos de investigación están basados en mejorar la forma en que los robots trabajan [GROO95]. Si continúan las tendencias actuales, y si las investigaciones vigentes tienen éxito, la robótica será una tecnología factible, y los robots del futuro pueden llegar a tener muchos de los atributos de los seres humanos. 1.1 Antecedentes

“A lo largo de la historia, el hombre se ha sentido fascinado por máquinas y dispositivos capaces de imitar las funciones y los movimientos de los seres vivos”. [BARR97]. Los griegos utilizaban la palabra automatos, para denominar a estas máquinas. De automatos se deriva la actual palabra autómata: máquina que imita la figura y movimiento de un ser animado. Existen diversas máquinas que fueron creadas, dentro de las cuales podemos mencionar al Gallo de Estrasburgo (1352), el León mecánico construido por Leonardo Da Vinci (1542,1519), etc., pero entre las invenciones mecánicas de más importancia en la industria se encuentran la hiladora giratoria de Hargreaves (1770), la hiladora mecánica de Crompton (1779), el telar mecánico de Cartwright (1785) y el telar de Jacquard (1801) que fueron aplicadas a la industria textil. Es a partir de estas invenciones que se comienza la aplicación de

Page 12: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

1. Introducción

máquinas automáticas a la producción. Esto dio origen a la automatización de la producción.

Los precursores más directos de los robots son los que se denominaron

telemanipuladores (Figura 1.1) [BARRI97], y fueron creados para realizar tareas con objetos radioactivos, peligrosos para el operador. Estos telemanipuladores estaban formados de un dispositivo maestro-esclavo. Donde el dispositivo maestro permanecía en un lugar seguro y el operador lo movía manualmente, reproduciéndose fielmente la misma secuencia en el dispositivo esclavo.

Figura 1.1 Manipuladores robóticos utilizados para manipular objetos radioactivos, peligrosos para el operador.

Para los telemanipuladores era necesario un operador; el cambiar el operador

por un programa de computadora que controle los movimientos realizados por el manipulador, dio lugar al surgimiento del concepto de robot.

En la actualidad los robots se utilizan en diversas operaciones industriales, para

realizar funciones hostiles o repetitivas para el ser humano.

Existe una gran cantidad de operaciones de producción, las cuales pueden ser clasificadas en las siguientes categorías: • Transferencia de material y carga-descarga de máquinas. Estas son las

operaciones mediante las cuales el robot sujeta y mueve una pieza de trabajo. Esta categoría también incluye aplicaciones en las que el robot transfiere partes dentro y fuera de una máquina de producción (por ejemplo una máquina herramienta CNC1).

• Operaciones de procesado. Estas son las operaciones en las cuales el robot usa

una herramienta como efector final, mediante la cual se realiza una operación de

1 CNC (Control Numérico Computarizado).

Page 13: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

1. Introducción

Juan Gabriel López Solórzano 3

procesado sobre una pieza de trabajo. Como ejemplo se puede mencionar el pintado y la soldadura.

• Operaciones de Ensamblado. El robot es usado para colocar los componentes o

piezas que forman un subensamble o producto terminado [GROO95].

Un robot industrial puede realizar las funciones o tareas antes mencionadas, mediante la programación del robot, es decir, a través de la definición de una serie de acciones que el robot debe llevar a cabo durante la realización de su tarea.

Los principales métodos para programar los robots son:

• Programación por aprendizaje directo manual. • Programación textual.

“En la programación por aprendizaje directo manual, el programador agarra físicamente el brazo de robot (y el efector final) y lo mueve manualmente a lo largo del ciclo de movimiento deseado” [GROO95]. Cuando el robot es demasiado grande se usa un dispositivo especial de programación, este dispositivo tiene básicamente la misma geometría del robot, pero es más fácil de manipular durante la programación.

Este tipo de programación presenta dos desventajas principales, la pérdida de tiempo para programarlo y la dificultad de hacerlo; por lo que la otra alternativa es la programación textual (lo robots que utilizan este tipo de programación son los contemplados en este trabajo de tesis), que “permite indicar la tarea al robot mediante el uso de un lenguaje de programación específico” [BARR97]. La tarea que realiza el robot es especificada mediante el uso de una serie de comandos que pueden ser editados y posteriormente ejecutados. Los comandos más importantes dentro del lenguaje son los destinados al control de los movimientos del robot.

La programación textual es el método más utilizado en la actualidad debido a que proporciona una mayor flexibilidad para la realización de las tareas, basta con generar un nuevo programa para que el robot realice una nueva tarea. La programación textual se clasifica comúnmente en 4 niveles: articulación (joint), manipulador, objeto y tarea.

En la programación a nivel articulación, la posición del efector final2 es

especificada en términos de los ángulos o desplazamientos de las articulaciones, este tipo de programación es de muy bajo nivel, y el programador tiene que especificar los valores de cada una de las articulaciones del robot, haciendo muy tedioso este trabajo. En la programación al nivel del manipulador, la posición del efector final se especifica en términos de coordenadas cartesianas, sin necesidad de especificar los valores de las articulaciones.

Al nivel de objeto, la programación se realiza de manera más cómoda, ya que se

da en función de los objetos a manejar; por último en la programación al nivel de la tarea, el usuario realiza la especificación de los objetivos deseados, sin la necesidad de definir los movimientos que debe realizar el robot. 2 También llamado elemento terminal, es una herramienta que va unida a la muñeca (parte final del robot). Ver sección 2.3.1.2 para más información.

Page 14: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

1. Introducción

La programación tanto al nivel del objeto como de la tarea, aún en la actualidad, son temas de investigación vigentes, puesto que no se ha logrado una implementación eficiente de este tipo de lenguajes [MEYN00] [BARR97].

La fase de programación del robot, es muy relevante debido a que suele requerir

un tiempo considerable. Este tiempo en la industria puede traducirse en pérdidas cuantiosas de dinero y tiempo. Lo anterior ha provocado que los lenguajes de programación para robots estén en constante evolución, cada vez más con mayor nivel de abstracción con el objetivo de hacer la programación más fácil.

El detallador de tareas de visión robótica es una aproximación para la creación

de un ambiente de programación de robots al nivel de la tarea. Con este trabajo de tesis se pretende dar una aproximación a la solución de algunos de los problemas que abarca la programación al nivel de la tarea.

Dentro del grupo de visión artificial del Centro Nacional de Investigación y

Desarrollo Tecnológico el presente trabajo de tesis forma parte de un proyecto mayor denominado: Sistema de Visión Robótica Modular (SVRM). Derivados de este proyecto se tienen los siguientes sub-proyectos: Esquema para la integración de Sistemas de Visión Robótica (Apoyado por el COSNET en 1999, ref. 760.99-P), Sistema de Comunicación para una arquitectura modular de Visión Robótica (COMMOD) (Apoyado por el COSNET en 2001, clave 639.01-P) y Sistema de Visión para una arquitectura modular de Visión Robótica (VISIMOD) (Apoyado por el COSNET en 2001, clave 637.01-P),

Con todo esto se pretende dejar una base que sirva para el desarrollo de

prototipos de sistemas de robots controlados mediante percepción visual, bajo un marco de trabajo que facilite un diseño modular, reutilizable e interoperable.

El presente trabajo esta relacionado con la tesis: Diseño de un sistema de

calibración automática para un sistema de visión robótica modular, cuyo objetivo es lograr la correspondencia de un punto en el sistema de visión que tiene dos dimensiones (X, Y), a un punto en el espacio de tres dimensiones (X, Y, Z).

El detallador de tareas de visión robótica es una primera aproximación a un

ambiente de programación al nivel de la tarea, con el objetivo de hacer frente a los siguientes problemas:

• La programación de un robot industrial es un proceso que muchas veces implica

quitar el robot del proceso de producción, lo cual se traduce en pérdidas. Por esto es importante realizar la programación en el menor tiempo posible y de la manera más fácil.

• Los lenguajes de programación de robots que proporcionan los proveedores de robots son comúnmente a nivel del manipulador, por lo que se tiene que especificar cada uno de los movimientos que este debe realizar para ejecutar su tarea.

• En la actualidad no existe una normalización en cuanto a los procedimientos de programación de los robots. Por el contrario, cada fabricante ha desarrollado su método particular, válido únicamente para sus robots.

Page 15: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

1. Introducción

Juan Gabriel López Solórzano 5

1.2 Descripción d el problema

El problema que se desea abordar se limita a un componente del Sistema de Visión Robótica Modular (SVRM): el detallador de tareas. Esta herramienta debe permitir la especificación de un conjunto de tareas de visión robótica al nivel de la tarea (a través del uso de un lenguaje formal) y las especificaciones se traducen en acciones simples y ejecutables por los componentes individuales del sistema. Estos componentes individuales podrán ser dados de alta en el detallador de tareas, es decir, que en esta herramienta se podrán especificar todos los elementos y las relaciones de interacción que habrá entre ellos, esto formará la configuración donde se llevará a cabo la tarea de visión robótica. 1.3 Estado d el Arte

Desde la aparición de los lenguajes textuales (década de los 70´s) se ha estado investigando sobre la programación de los robots. Puesto que la fase de programación es importante para que una tarea sea realizada de una manera adecuada.

A continuación se presentan algunos trabajos que tratan el problema de la programación de los robots industriales. [MEYN00] Control of industrial robots through high-level task programming. En esta tesis se presenta una plataforma experimental en robótica (XPROB), esta plataforma ha sido diseñada con el objetivo de ser una herramienta que facilite el desarrollo de aplicaciones de robótica. Ofrece un ambiente de programación al nivel de la tarea y una representación dinámica de equipos de una celda de trabajo. Con el objetivo de hacer la re-programación de un sistema robótico industrial de una manera más fácil, menos costosa y en el menor tiempo posible. XPROB está formado por 4 módulos principales: • Modelado del mundo. Es llevado a cabo a través del paradigma orientado a objetos,

y se toman todos los elementos que integran una celda de manufactura, así como los atributos que se deben de guardar para cada uno de ellos, es decir, este módulo mantiene la información del ambiente de trabajo. El modelado del mundo contiene una representación de todos los elementos (robot, bandas, etc.) y sus características; como por ejemplo la descripción geométrica, o la descripción cinemática de los robots.

• Especificación de la tarea. La descripción de una tarea es proporcionada en modo texto y su sintaxis cumple con una determinada gramática. En el detallador de tareas la especificación se realizará también a través de un lenguaje formal (ver sección 4.2).

• Síntesis de programa de robot. Se encarga de dividir (descomponer) la especificación de la tarea en un conjunto de comandos de bajo nivel.

• Ejecución de comandos. Este módulo finaliza la traducción de la tarea por medio de la conversión de los comandos de bajo nivel, generados en el módulo de síntesis de programa de robot, en comandos nativos de la máquina o dispositivo.

El desarrollo de todos los módulos anteriormente mencionados, requieren mucho

tiempo de investigación. La programación al nivel de la tarea no es un problema fácil de

Page 16: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

1. Introducción

resolver y en la actualidad se sigue investigando sobre este tema. Debido a esta complejidad, en la presente tesis sólo se abarcaron 3 módulos (ver sección 1.4): • Modelado del mundo. En el presente trabajo, el modelado del mundo es la Base de

información y está formada por una serie de tablas de información (ver apartado 4.1), que mantienen los datos de todos los elementos que pueden formar la celda de trabajo. Es importante mencionar que en este trabajo de tesis, el modelado del mundo no es desarrollado utilizando el paradigma orientado a objetos, puesto que cada elemento es agregado a la celda mediante una interfaz; el paradigma orientado a objetos se podría aplicar en la definición de un lenguaje formal que permitiera definir (crear) nuevos elementos en la celda de trabajo.

• Especificación de la tarea. Dicha especificación se lleva a cabo a través de un lenguaje formal, cuya gramática se muestra en el anexo A.

• Síntesis del programa de robot. Dentro de este trabajo este módulo es denominado detallado (descomposición) de las tareas. Este módulo consiste en que la especificación de la tarea se divide en instrucciones simples, manejables por los elementos de la celda de trabajo (robots, máquinas herramienta CNC, etc.).

El último módulo denominado ejecución de comandos no fue implementado,

puesto que está fuera del alcance de la presente tesis. Este módulo podría ser abordado en trabajos posteriores.

Otro de los trabajos es el presentado en [BRIN94] donde se muestra un método

de programación orientado a tareas, el cual consiste en crear un ambiente de programación que cumpla con los objetivos de reuso, mantenimiento y fiabilidad. Este método está basado en el modelo WORW que mantiene la información de los objetos que se encuentran en la celda de trabajo; esté método utiliza el paradigma orientado a objetos. En este trabajo utilizan el software denominado IGRIP3 para realizar la simulación de la tarea.

Comúnmente cada proveedor de robots industriales, proporciona software de simulación únicamente para sus robots. Esto se puede ver como una desventaja ya que este software es muy limitado.

En [KIM97] se muestra una arquitectura de software para el control de una celda de manufactura ágil (flexible), esta arquitectura se desarrolló usando la tecnología orientada a objetos para facilitar la modificación de los elementos de la celda y la introducción de nuevos productos. Cuando se define un nuevo componente, en esta herramienta se deben crear nuevas clases para controlar al nuevo hardware. En este trabajo no se presenta suficiente información. Además de que no mencionan si utilizan algún software de simulación de la celda de trabajo.

1.4 Propu esta de solución

En los siguientes apartados se presentará el objetivo, los alcances y la metodología de solución de la presente tesis.

3 IGRIP es una marca registrada de DENEB Robotics Inc.

Page 17: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

1. Introducción

Juan Gabriel López Solórzano 7

1.4.1 Objetivo de la tesis

Desarrollar una herramienta (el detallador de tareas de visión robótica) que permita la definición de una tarea que involucre la Visión Robótica y esta sea dividida en instrucciones simples manejables por los elementos (robot, banda, etc.) del sistema. Desarrollar el modelo de un elemento ejecutor, sus interfaces y requerimientos mínimos. 1.4.2 Alcances de la tesis • Desarrollar los modelos para la herramienta de definición de un conjunto de

problemas de visión robótica, haciendo uso de la teoría de compiladores. Los problemas que abarcará son:

• Inspección visual. • Ensamblado de 2 o 3 piezas. • Transformación o modificación de partes.

• Desarrollar los modelos descriptivos y/o funcionales de los elementos ejecutores (unidades de proceso).

• Implementar la herramienta (detallador de tareas) considerando los dos modelos anteriormente indicados (herramienta de definición y modelos descriptivos).

• Las primitivas que serán tomadas en cuenta para el sistema de visión serán: detección de partes, orientación de partes, determinación y confirmación del punto de agarre, y la orientación de la parte en la herramienta de sujeción, inspección y determinación del punto de depósito.

• Para el manipulador se consideran los siguientes comandos: comandos de movimiento, comandos de efectores, así como las constantes, variables y otros datos relevantes.

• Los ejecutores (elementos) que se consideran son: 1.- Los que devuelven datos; 2.-Los que ejecutan comandos y 3. Los mixtos (devuelven datos y reciben comandos).

1.4.3 Metodo logía de solución

La metodología es presentada en la Figura 1.2. Todos los elementos mencionados en la sección 2.3.1 (robots, bandas, piezas, etc.), serán mantenidos en una base de información que contendrá todos los datos relacionados a cada uno de ellos.

De la base de información se seleccionarán todos los elementos que integrarán

la estructura de la celda de trabajo, una vez teniendo los elementos, se prosigue con el establecimiento de las relaciones entre los mismos, es hasta este punto donde la celda de trabajo queda totalmente definida.

Después se especifica una tarea (ver sección 4.2) a ejecutarse en la celda de

trabajo. Tomando la especificación de la tarea se realiza el detalle (descomposición) de la tarea, que consiste en especificar la acción que debe realizar cada uno de los elementos que intervienen en la tarea.

Page 18: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

1. Introducción

Figura 1.2 Metodología de solución utilizada desarrollar el detallador de tareas.

1.4.4 Beneficios y produ ctos esperados Los beneficios y productos esperados son obtener una herramienta que permita la definición de una actividad de visión robótica y la desglose en instrucciones simples manejables por los elementos ejecutores y desarrollar el modelo de un elemento ejecutor, sus interfaces y requerimientos mínimos. 1.5 Organización d e la tesis

La tesis está estructurada en 7 capítulos, en el primer capítulo fue presentada una introducción sobre el campo de la robótica, específicamente sobre la problemática que existe en la programación de los robots industriales, así también se hizo mención de algunos trabajos relacionados con la presente tesis. Por último se presentó la propuesta de solución.

La fundamentación teórica será tratada en el capítulo 2, definiendo cada una de

las herramientas o conceptos utilizados en el desarrollo de este documento de tesis. En el capítulo 3 se presenta el análisis de los elementos comunes que forman una celda de trabajo; así como el análisis de las herramientas para la generación de gráficos 3D y de las herramientas para generar analizadores léxico-sintácticos.

El diseño de la herramienta es tratado en el capítulo 4, se muestra la estructura

de las tablas que almacenan la información del entorno de trabajo, así como de los

Base de información

Elementos (robots, bandas, etc.).

Elegir elementos para generar la

estructura deseada Relacionar elementos

Celda de trabajo

Especificación

de la tarea

Detalle de la

tarea

Acciones llevadas a cabo por cada elemento que interviene en la tarea.

Page 19: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

1. Introducción

Juan Gabriel López Solórzano 9

elementos que lo componen. La implementación de la herramienta es descrita en el capítulo 5. Por último los casos de prueba, las conclusiones de la tesis y los trabajos futuros, son presentados en los capítulos 6 y 7 respectivamente.

Page 20: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

2. Fundamentación Teórica

Capítulo 2

Fund amentación teórica

Dentro de este capítulo se definirán diversos conceptos relacionados con el detallador de tareas, con el objetivo de presentar los fundamentos teóricos utilizados en la presente investigación, los cuales serán de utilidad para comprender los capítulos que serán desarrollados posteriormente.

2.1 Definición d el término tareas

En esta tesis se hace uso del concepto “tareas”, para hacer referencia a acciones o funciones que pueden ser realizadas por un robot industrial, banda transportadora, sistema de visión o máquina herramienta CNC. Un ejemplo de una tarea, sería el mover una pieza de trabajo de un lugar a otro; en este caso esta tarea es clasificada dentro de la categoría transferencia de materiales (ver Antecedentes).

2.2 Definición d el término detallador de tareas

Detallador de tareas se refiere a la descomposición (división) de las tareas. Las tareas en esta herramienta pueden especificarse de dos maneras, y para cada una de las cuales existe un nivel de detalle diferente:

• La tarea se puede especificar definiendo la tarea a realizar (Inspección,

transformación (maquinado de una pieza) o ensamble) sobre la celda de trabajo, y el detallador de tareas realiza el detalle en términos de las instrucciones del lenguaje (ver sección 4.2), indicando la secuencia de operaciones a realizar en la celda de trabajo.

• La otra forma de especificar las tareas es realizarla mediante las instrucciones del lenguaje (ver 4.2.2) y la descomposición consiste en que

Page 21: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

2. Fundamentación Teórica

Juan Gabriel López Solórzano 11

las tareas son detalladas en términos de los puntos en el espacio que el robot debe seguir para realizar su función, y en su defecto si no es una tarea realizada por un robot, el detalle consiste en indicar el elemento que realizará la tarea.

2.3 Celdas de trabajo

Un robot industrial muy raramente trabaja de forma aislada, generalmente forma parte de un proceso de fabricación, junto con otros elementos como pueden ser bandas transportadoras, almacenes, máquinas herramientas CNC, etc. El robot y el equipo asociado son lo que comúnmente se le denomina celda de trabajo del robot [GROO95]. En las secciones siguientes se muestran los elementos más comunes que forman una celda de trabajo del robot. 2.3.1 Elementos más comunes que compon en un a celda de trabajo robo tizada

En [BAAR95][ESHE99] se define el equipo común de una celda de trabajo robotizada. Tales elementos son robots, sistemas de visión, almacenes, efectores finales, alimentadores, bandas transportadoras, máquinas herramientas CNC, piezas de trabajo y mesas de trabajo. Es importante mencionar que estos son los elementos más comunes, a partir de los cuales se pueden generar diversas configuraciones de celdas de trabajo, estos elementos no son los únicos ya que existe una gran cantidad de dispositivos o máquinas, los cuales están en constante evolución, por lo que es imposible poder contemplar a todos, es por esto que en este trabajo de tesis, se contemplarán los elementos más comúnmente encontrados en las celdas de trabajo.

A continuación se definen cada uno de estos elementos, por último se hace

mención de las herramientas para generar gráficos en 3D, así también se presentan las herramientas que generan analizadores léxicos y sintácticos. 2.3.1.1 Robo ts

El robot industrial es la parte primordial de una celda de trabajo, ya que éste es un elemento activo, porque desarrolla las operaciones de manipulación, y es el que interactúa con los otros equipos o elementos. En la sección 2.4 se presenta información más detallada de este elemento, debido a la relevancia del mismo dentro del ambiente de trabajo. 2.3.1.2 Efectores finales

Los efectores finales son dispositivos que van unidos a la muñeca del robot (parte final del brazo del robot, y está constituida por varios componentes que le permiten ser orientada en una diversidad de posiciones) [GROO95]. Estos dispositivos son los que hacen a un robot de propósito general, puesto que sólo con cambiar el efector final el robot puede ser usado para diferentes tareas, por ejemplo si el efector final es una pinza, el robot puede utilizarse para mover una pieza de trabajo de un lugar a otro (operaciones de manipulación); si el robot tiene como efector final una pistola de soldar el robot puede realizar una operación de soldadura. Ver apartado 3.1.2 para más información sobre efectores finales.

Page 22: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

2. Fundamentación Teórica

2.3.1.3 Sistemas de visión

El sistema de visión es un componente muy importante en la robótica. Tanto para operaciones de inspección, selección de objetos con orientación aleatoria, así como reconocimiento de objetos. El sistema de visión algunas veces llamado también visión artificial o visión por computadora, es un campo de investigación complejo y multi-disciplinario.

La visión artificial puede ser definida como el conjunto de procesos de obtención,

caracterización e interpretación de información de imágenes tomadas de un mundo tridimensional. Estos procesos pueden a su vez dividirse en 6 áreas principales:

a) Adquisición de imagen

b) Preprocesamiento

c) Segmentación

d) Descripción

e) Reconocimiento

f) Interpretación [FU94]

A continuación se describe cada una de las etapas: a)La adquisición de imagen

es el proceso a través del cual se obtiene una imagen digital; b) El preprocesamiento incluye técnicas tales como la reducción del ruido y realce de detalles; c) La segmentación es el proceso que divide una imagen en regiones que contienen objetos de nuestro interés; d) Mediante los procesos de descripción se obtienen las características (por ejemplo, tamaño, forma, área) convenientes para diferenciar entre un objeto y otro; e) El reconocimiento es el proceso que permite identificar a estos objetos (por ejemplo, una llave inglesa, un tornillo); f) Finalmente, la interpretación le asocia un significado a un conjunto de objetos reconocidos [FU94].

2.3.1.4 Almacenes

Otro de los elementos importantes en una celda de trabajo robótica, es el almacén, el cual tiene como objetivo general almacenar materiales por un cierto tiempo [GROO87].

2.3.1.5 Alimentadores

Los alimentadores son otro tipo de dispositivo de almacenamiento. Difieren de los almacenes en que almacenan una cantidad menor de piezas de trabajo (materiales) y de un solo tipo, además frecuentemente se encuentran en las estaciones de ensamblado. 2.3.1.6 Máquinas herramienta CNC

Dentro de una celda de trabajo, pueden existir máquinas herramienta CNC (control numérico por computadora) que realizan operaciones de maquinado tales como: torneado, taladrado, fresado, entre otras. Estos procesos son aplicados a las piezas de trabajo.

Page 23: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

2. Fundamentación Teórica

Juan Gabriel López Solórzano 13

2.3.1.7 Bandas transportadoras

Las bandas transportadoras están diseñadas para mover materiales entre localizaciones específicas sobre una trayectoria fija. Además que es el dispositivo por medio del cual los elementos de la celda de trabajo se relacionan y comunican. 2.3.1.8 Piezas de trabajo

Las piezas de trabajo, son cualquier objeto sobre los que una manipulación o modificación es desarrollada [MEYN00]. La manipulación es realizada por un robot industrial y la modificación (proceso) es realizada por una máquina herramienta CNC o también puede ser realizado por un robot.

2.3.1.9 Mesas de trabajo

Las mesas de trabajo, son lugares destinados para tareas de ensamblado o para almacenar temporalmente piezas de trabajo.

2.3.2 Simulación g ráfica de las celdas de trabajo

Todos los elementos anteriormente mencionados pueden formar parte de una celda de trabajo en específico. Es a partir de estos elementos que se pueden generar diferentes estructuras (layout o plano de la celda de trabajo), tomando los elementos necesarios. La definición del layout del sistema es un proceso iterativo del que debe resaltar la especificación del tipo y número de robots a utilizar, así como de los elementos periféricos (máquinas, bandas, etc.), indicando la disposición relativa de los mismos. En este proceso iterativo es importante la experiencia del equipo técnico responsable del diseño. La utilización de herramientas informáticas, sistemas CAD, simuladores, etc., facilitan enormemente esta tarea [BARR97]. Es por eso que dentro de este trabajo de tesis se desarrolló un espacio 3D para facilitar la creación de la estructura de la celda.

En la siguiente sección se presenta información más detallada de los robots

industriales,

2.4 Robot indu strial

Esta sección tiene como objetivo profundizar un poco más sobre el elemento principal de la celda de trabajo, el robot industrial.

El robot industrial, como tal es una tecnología estrechamente relacionada con la automatización; en un contexto industrial la automatización se define como “una tecnología que está relacionada con el empleo de sistemas mecánicos, electrónicos y basados en computadoras, en la operación y control de la producción” [GROO87]. Existen 3 clases de automatización:

• Automatización fija • Automatización programable • Automatización flexible

Page 24: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

2. Fundamentación Teórica

El robot industrial es clasificado como una automatización programable y algunas veces aplicada también en la automatización flexible.

Una vez clasificado el robot industrial dentro de la tecnología de automatización, se seguirá con la definición del mismo, también se darán algunos conceptos comúnmente utilizados en robótica, los cuales son empleados a lo largo de este documento.

2.4.1 Definición d e un robo t indu strial

La definición más comúnmente aceptada posiblemente sea la de la Asociación de Industrias Robóticas (RIA), según la cual:

“Un robot industrial es un manipulador multifuncional reprogramable, capaz de mover materias, piezas o herramientas especiales, según trayectorias variables, programadas para realizar diversas tareas” [BARR97]. 2.4.2 Conceptos básicos

Tomando en cuenta su estructura, un robot industrial está formado por una serie de eslabones (links) unidos entre sí por articulaciones (joints). El número de articulaciones determina el número de grados de libertad (dregrees-of-freedom) del robot industrial [SPON89].

2.4.2.1 Eslabón

Se le llama eslabón a cada uno de los cuerpos rígidos (ver Figura 2.1) o segmentos que forman al robot.

2.4.2.2 Articulación

Las articulaciones empleadas para el diseño de robots suelen implicar un movimiento relativo de los eslabones contiguos, movimiento que es lineal o de revolución. Las articulaciones lineales o prismáticas denotadas por P implican un movimiento deslizante o de translación de los eslabones en conexión. Las articulaciones de revolución denotadas por R son rotacionales, es decir que giran sobre un determinado eje.

Figura 2.1 Eslabones y articulaciones (joints), elementos principales que forman la estructura de un robot industrial.

Articulaciones

Page 25: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

2. Fundamentación Teórica

Juan Gabriel López Solórzano 15

2.4.3 Configuraciones de robo ts

El uso de diferentes combinaciones de articulaciones en los robots, dan como resultado diferentes configuraciones. Tomando en cuenta únicamente las primeras tres articulaciones, que son las más importantes para posicionar el efector final en un punto en el espacio; las combinaciones más frecuentes son: cartesiano, cilíndrico, esférico o polar, SCARA y angular.

2.4.3.1 Cartesiano

En la Figura 2.2 A) se muestra un robot cartesiano, este tipo de configuración consta únicamente de articulaciones prismáticas PPP [SPON89]. Por lo cual sólo es capaz de realizar movimientos lineales sobre los ejes X, Y, Z.

Figura 2.2 Diferentes combinaciones de articulaciones más comúnmente utilizados en los robots industriales.

2.4.3.2 Cil índrico

La configuración cilíndrica es aquella que cuenta con las articulaciones RPP (ver B) Figura 2.2). Este tipo de configuración tiene una columna vertical y un dispositivo de deslizamiento que puede moverse hacia arriba o hacia abajo. El brazo está unido al dispositivo deslizante de modo que puede moverse en sentido radial con respecto a la columna [GROO95]. El espacio de trabajo se aproxima a un cilindro. 2.4.3.3 Esférico o po lar

La configuración esférica, tiene las articulaciones RRP (ver C) Figura 2.2). Utiliza un brazo telescópico que puede elevarse o bajar alrededor de un pivote horizontal. Este pivote está montado sobre una base giratoria[GROO95].

Page 26: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

2. Fundamentación Teórica

2.4.3.4 Scara

La configuración SCARA (for selective Compliant Articulated Robot for Assembly). Este tipo de configuración es RRP, puesto que las articulaciones de hombro y codo giran alrededor de ejes verticales (ver D) Figura 2.2). Es ampliamente utilizado en tareas de montaje. 2.4.3.5 Angu lar o antropo mórfico

La configuración angular también llamada antropomórfica, debido a que se asemeja a un brazo humano, porque está formada por dos partes que son el brazo y antebrazo, montados sobre un pedestal vertical. Unidos por articulaciones rotacionales RRR. (ver E) Figura 2.2) 2.5 Herramientas para generación d e gráficos en 3D

Dentro de este trabajo de tesis se hace uso de una herramienta para generar gráficos en 3D para representar gráficamente los elementos que componen una celda de trabajo, por lo que no se utiliza un software comercial para la representación gráfica de la celda.

Para poder generar la representación de una celda es necesario contar con una herramienta para la generación de gráficos en 3D, que soporte las siguientes características o funciones: dibujar primitivas 3D (puntos, líneas y polígonos), a partir de los cuales se formarán objetos complejos; manipulación del espacio 3D (rotaciones, traslaciones, escalado); manejo del color y sombras así como soporte de iluminación. Estas son las funciones básicas para este trabajo de tesis, que serán utilizadas para generar una escena tridimensional de la celda de trabajo (su estructura). Esta escena permitirá una comprensión más clara de la distribución de los elementos que forman la celda.

De todas las herramientas para generar gráficos en 3D, fueron analizadas:

OpenGL, Java3D y DirectX por ser las más populares, estas herramientas son API´S (interfaz para programación de aplicaciones) que proporcionan las primitivas básicas, a partir de las cuales se puede generar una escena 3D (ver sección 3.2).

2.6 Herramientas para generar analizadores léxicos-sintácticos

Dentro de la metodología de solución (ver sección 1.4.3) existe un módulo llamado especificación de la tarea. Esta especificación se realizó a través de un lenguaje formal el cual es definido mediante una gramática.

A continuación se presentan algunas definiciones, que servirán para comprender

lo que es un lenguaje formal, y por último se definirá la función del analizador léxico y sintáctico.

2.6.1 Alfabeto

Un conjunto no vacío y finito de símbolos se conoce como alfabeto. Por ejemplo

un alfabeto podría ser el siguiente ∑ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, que es el conjunto de todos los dígitos.

Page 27: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

2. Fundamentación Teórica

Juan Gabriel López Solórzano 17

2.6.2 Cadena Una secuencia finita de símbolos de un determinado alfabeto se le conoce como

palabra o cadena. Así por ejemplo si se tiene el siguiente alfabeto ∑ = { ‘A’,..’Z’}. Algunas palabras o cadenas formadas a partir de este alfabeto pueden ser PROGRAM, INSPECCION, etc. así también aquellas palabras que no tiene sentido como MKPW, HTRA, etc.

2.6.3 Lengu aje

Un lenguaje es un conjunto de palabras o cadenas. Así el siguiente conjunto de

palabras {1,25,56,236} es un lenguaje sobre el alfabeto compuesto por dígitos.

2.6.4 Gramática La gramática es un método formal para especificar, de una manera finita, el

conjunto de cadenas de símbolos que constituyen al lenguaje. Una definición formal de una gramática [KELL95] es la siguiente: Una gramática es una cuádrupla: G = (∑, N,S,P) Donde: ∑ es el alfabeto, conjunto de símbolos terminales. N es el conjunto de símbolos no terminales. S es un símbolo no terminal llamado símbolo inicial. P son un conjunto de reglas de sustitución llamadas producciones.

El símbolo inicial S es un símbolo no terminal a partir del cual se aplican las reglas de la gramática para obtener las distintas cadenas del lenguaje. Las producciones P son las reglas que se aplican desde el símbolo inicial para obtener las cadenas del lenguaje. El conjunto de producciones P se define por medio de la enumeración de las distintas producciones, en forma de reglas, dentro de este trabajo de tesis se utilizó el metalenguaje EBNF (Extended Backus Naur Form), para especificar las producciones. Considere la gramática G = (∑, N, S, P), donde ∑ = {a, b, c}; N = {T, O, Q} y P son las reglas de producción:

S �

Oa O

� bQ

O �

cQ Q

� bc

En las reglas de producción la fecha (

�) se lee como “se sustituye por”. Esto

quiere decir que el símbolo no terminal es sustituido por la parte derecha de la regla. Dadas estas reglas de producción podemos obtener la cadena “cbca”, aplicando primero la regla S

� Oa, después O

� cQ y por último Q

� bc. Estas reglas permiten

generar las cadenas válidas para el lenguaje que será generado. A continuación se presentarán los diferentes tipos de gramáticas que existen.

Page 28: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

2. Fundamentación Teórica

En 1959, Noam Chomsky [KELL95] definió una jerarquía para las gramáticas, en función de la forma de las reglas de producción P. La clasificación comienza con un tipo de gramática que pretende ser universal, aplicando restricciones a las reglas de producción se van obteniendo los otros tipos de gramáticas. Esta clasificación es jerárquica, es decir que cada tipo de gramática engloba a todos los tipos siguientes.

Los tipos de gramáticas son los siguientes:

• Gramáticas de tipo 0 o gramáticas no restringidas. • Gramáticas de tipo 1 o sensibles al contexto. • Gramáticas de tipo 2 o independientes del contexto. • Gramáticas de tipo 3 o gramáticas regulares.

Haciendo un análisis de estos tipos de gramáticas, la gramática utilizada en este

trabajo de tesis, es clasificada como una gramática de tipo 2 o independiente del contexto. Puesto que en la gramática de tipo 2, sus reglas de producción sólo admiten tener un símbolo no terminal en su parte izquierda, es decir son de la forma:

A � α

Siendo A ∈ N y α ∈ (N ∪ ∑)+

Este tipo de gramática también se llama libre de contexto, debido a que A puede sustituirse por α, independientemente del contexto en donde aparezca A. Vea anexo A para más información sobre la gramática utilizada dentro de este trabajo [KELL95].

En las siguientes secciones se presenta la definición de los analizadores léxicos y

sintácticos.

2.6.5 Analizador léxico La principal función de un analizador léxico consiste en leer los caracteres de

entrada (dentro de este trabajo la especificación de la tarea) y elaborar como salida una secuencia de componentes léxicos o tokens que utiliza el analizador sintáctico para hacer el análisis [AHO98]. 2.6.6 Analizador sintáctico

Un analizador sintáctico obtiene una cadena de componentes léxicos del analizador léxico y comprueba si la cadena puede ser generada por la gramática del lenguaje. Para poder generar analizadores léxicos-sintácticos existen diferentes herramientas, que reconocen una gramática determinada, de las que destacan Flex-Bison, ANTLR, JavaCC, por mencionar algunas. Estas herramientas serán tratadas en la sección 3.3.

Page 29: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

2. Fundamentación Teórica

Juan Gabriel López Solórzano 19

En este capítulo se han definido los elementos comunes que pueden formar una celda de trabajo, haciendo énfasis en los robots industriales, debido a su importancia. Así también fueron presentadas secciones que trataron aspectos sobre gráficos en 3D y analizadores léxicos-sintácticos. En el siguiente capítulo se abordará el análisis de los elementos comunes que forman una celda de manufactura. Analizando además las herramientas para generar gráficos en 3D y los analizadores léxico-sintácticos.

Page 30: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

3. Análisis del detallador de tareas

Capítulo 3

Análisis del detallador de tareas

Para poder realizar la descomposición de las tareas, es necesario conocer las características principales de todos los elementos que interactúan en el desarrollo de una determinada tarea. En este capítulo se muestra el análisis de cada uno de los elementos, para poder determinar las características que mejor los modelen. Además se presenta la herramienta seleccionada para la representación gráfica de la celda de trabajo, así como la herramienta para generar analizadores léxico-sintácticos. 3.1 Análisis de los elementos de la celda de trabajo

En la sección 2.3.1 se mencionaron los elementos comunes (robots, bandas, etc.) que pueden formar una celda de trabajo. Realizando el análisis de cada uno de los elementos se encontraron diferentes tipos o configuraciones, por esto es necesario conocer las características principales que serán contempladas en la base de información que almacenará los datos de cada uno de los elementos. Es muy importante mencionar que se hizo un análisis más profundo de los robots industriales, como se ha expresado en el desarrollo de este documento, es la parte principal de una celda de trabajo. Los otros elementos, aunque también son relevantes, en este trabajo de tesis no son analizados profundamente. Estos elementos (bandas, máquinas herramientas CNC, almacenes, etc.) podrían ser tratados en trabajos posteriores, para un mejor modelado de los mismos. 3.1.1 Robo ts

Para poder generar una tabla de información (ver sección 4.1.1) con los datos más relevantes que modelan un robot industrial, se realizó un estudio sobre los diferentes tipos de robots industriales y sus características afines.

Page 31: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

3. Análisis del detallador de tareas

Juan Gabriel López Solórzano 21

En [MILL91] se presentan las características y acciones que son comunes a todos los robots, partiendo de este estudio se seleccionaron algunas características importantes. Dentro de las cuales se encuentra el número de grados de libertad y la capacidad de carga.

Como ya se ha comentado, el robot industrial realiza una tarea a través de una serie de movimientos que éste debe realizar. Estos movimientos implican un desplazamiento desde una posición inicial a una posición final. Muchos de los robots permiten especificar el tipo de interpolación a utilizar al realizar el movimiento [GROO95] La interpolación se refiere al método utilizado por el controlador del robot, para generar la trayectoria que el robot seguirá para que llegue a un punto en el espacio deseado. Las interpolaciones son: • Interpolación de articulación. Este tipo de movimiento es el utilizado por omisión por

muchos robots comerciales. El controlador determina cuánto debe desplazarse cada una de las articulaciones. Después selecciona la articulación que requiere la mayor cantidad de tiempo, y teniendo en cuenta el tiempo y la cantidad de movimiento de las articulaciones restantes, el controlador subdivide el movimiento en pequeños incrementos. Este movimiento se le conoce como trayectoria punto a punto.

• Interpolación en línea recta. El controlador del robot calcula una trayectoria en línea recta del punto inicial al final. Por lo que calcula una serie de puntos (cada punto de la serie implica que todas las articulaciones del robot realicen un desplazamiento para alcanzar cada uno de los puntos).

• Interpolación circular. Este tipo de movimiento se específica a través de tres puntos, para poder definir una trayectoria circular. Esta aproximación circular consta de segmentos cortos de línea recta.

Además de los tipos de movimientos (trayectorias), el rango de velocidad que

soporta el robot, es un dato importante que debe ser tomado en cuenta. Otros movimientos que pueden soportar los robots son el acercamiento o

alejamiento de un punto a lo largo del eje Z (APPRO y DEPART) [GROO95]. Estos movimientos son utilizados, cuando el desplazamiento que realiza el robot es pequeño, debido a esto se requiere más precisión en el movimiento.

También es importante conocer si se pueden definir trayectorias o definir un

punto en el espacio a través del lenguaje que soporta el controlador. De igual forma, las funciones correspondientes para abrir o cerrar el efector final también deben ser contempladas. Todo lo mencionado anteriormente, se refiere a las funciones que el robot es capaz de realizar. En el siguiente apartado se abordará el problema cinemático directo. 3.1.1.1 Resolución d el problema cinemático d irecto

En la sección 1.4.3 se muestra la metodología de solución, dentro de está existe un módulo denominado relacionar elementos, este módulo tiene como objetivo relacionar todos los elementos que forman la celda de trabajo. El robot industrial dentro de una celda es un elemento activo que interactúa con otros dispositivos o elementos, en este trabajo de tesis un robot es relacionado con otro elemento a través de una serie de puntos (trayectoria ) que este debe seguir para que exista tal relación.

Page 32: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

3. Análisis del detallador de tareas

Para poder establecer la relación es necesario conocer la posición y orientación del efector final del robot, y este problema está relacionado con la cinemática del robot, específicamente con el problema de la cinemática directa, que será tratada en las secciones siguientes.

3.1.1.1.1 Cinemática del robot

“La cinemática del robot estudia el movimiento del mismo con respecto a un sistema de referencia. De esta manera la cinemática se interesa por la descripción analítica del movimiento espacial del robot como una función del tiempo, y en particular por las relaciones entre la posición y la orientación del extremo final del robot con los valores que toman sus coordenadas articulares” [BARR97].

Dentro de la cinemática existen dos problemas fundamentales: • Cinemática directa. • Cinemática inversa. La cinemática directa, consiste en determinar la posición y orientación del

extremo final (efector final) del robot, con respecto a un sistema de coordenadas que se toma como referencia, conocidos los valores de las articulaciones y los parámetros geométricos de los eslabones del robot; la cinemática inversa, resuelve la configuración que debe adoptar el robot para una posición y orientación conocidas. En la Figura 3.1 se muestra la relación entre estos dos problemas. Es importante mencionar que el problema cinemático inverso no se implementó, debido a que no está dentro del alcance de este trabajo de tesis. Este problema se abordará en un trabajo posterior.

Figura 3.1 Diagrama que muestra los dos problemas fundamentales (problema cinemático directo y problema cinemático inverso) a resolver en la cinemática del robot.

Para resolver el problema de la cinemática directa, se comenzará explicando

algunos temas para comprender mejor la forma de solucionarlo.

Page 33: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

3. Análisis del detallador de tareas

Juan Gabriel López Solórzano 23

3.1.1.1.2 Representación de un cuerpo rígido en el espacio

Un cuerpo rígido es localizado en el espacio, especificando su posición y orientación con respecto a un sistema de referencia fijo.

3.1.1.1.2.1 Representación de la posición

Como se ha visto en temas anteriores, se trabajará sobre un espacio

tridimensional. Tomando esto en cuenta, el sistema de referencia estará formado de una terna ortogonal de vectores coordenados (ver Figura 3.2), con los ejes X, Y y Z, comúnmente denominado Sistema de Coordenadas Cartesianas.

Para representar un punto (posición de un cuerpo rígido) a en un sistema

coordenado de 3 dimensiones, es necesario expresarlo mediante los componentes (x, y, z) que corresponden a los ejes coordenados del sistema XYZ. Este punto tiene un vector p(x, y, z) (ver Figura 3.2) asociado, que va desde el origen del sistema XYZ hasta el punto a, por lo tanto la posición del extremo de p está definida por los tres componentes (x, y, z), que son las coordenadas cartesianas del vector, estos valores son las proyecciones del vector p sobre cada uno de los ejes X, Y y Z.

De lo anterior se puede decir que un punto tiene 3 grados de libertad, debido a

que éste puede realizar movimientos sobre los ejes X, Y y Z.

Figura 3.2 Representación de un vector en un sistema de coordenadas cartesianas 3D.

3.1.1.1.2.2 Representación de la orientación

Un cuerpo rígido no está totalmente definido especificando sólo su posición, es

necesario especificar también su orientación con respecto a un sistema de referencia.

Page 34: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

3. Análisis del detallador de tareas

En un espacio tridimensional la orientación está definida por tres grados de libertad, es decir que puede existir una rotación sobre cada uno de los ejes (X, Y, Z). Una forma sencilla de describir la orientación de un objeto, es asignarle un sistema de referencia asociado al objeto y después estudiar la relación espacial entre los dos sistemas (sistema asociado al objeto y el sistema de referencia fijo).

Por ejemplo, si tenemos dos sistemas de referencia, el sistema XYZ que es el sistema de referencia fijo y UVW el sistema asociado al objeto cuya orientación se desea definir (ver Figura 3.3 ). Los vectores unitarios (ejes) del sistema XYZ son ix, jy, kz

mientras que los del sistema UVW son iu, jv, kw. Un vector p puede ser definido en cualquiera de los dos sistemas de la siguiente manera:

• En términos del sistema de referencia del objeto:

Puvw = [ Pu, Pv, Pw] T = pu.iu + pv. Jv + pw. Kw

• En términos del sistema de referencia XYZ

Pxyz = [ Px, Py, Pz] T = px.ix + py. Jy + pz. Kz

Con lo cual se puede obtener la siguiente equivalencia:

Donde:

es la matriz de rotación que define la orientación del sistema UVW con respecto al sistema XYZ. También se le llama matriz de cosenos directores y se trata de una matriz ortonormal.

=

wzvzuz

wyvyuy

wxvxux

kkjkik

kjjjij

kijiii

R

=

w

v

u

z

y

x

p

p

p

R

p

p

p

Page 35: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

3. Análisis del detallador de tareas

Juan Gabriel López Solórzano 25

−=

ααααα

cossen0

sencos0

001

),(XRot

Figura 3.3 Sistema de referencia fijo XYZ y sistema UVW asociado al objeto cuya orientación se desea definir .

La principal utilidad de esta matriz es representar la orientación de sistemas

girados únicamente sobre uno de los ejes principales del sistema de referencia. Por lo que en un sistema de tres dimensiones, existen 3 matrices, una para cada eje sobre el que se realiza la rotación. Estas matrices se presentan a continuación.

En la Figura 3.4 Figura 3.4se muestra la orientación del sistema UVW, cuando el eje U coincide

con el eje X, la cual es representada por la matriz:

Ecuación 3.1

Figura 3.4 Muestra la rotación del sistema UVW con respecto al X un ángulo .

Page 36: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

3. Análisis del detallador de tareas

−=

φφ

φφφ

cos0sen

010

sen0cos

),(YRot

−=

100

0cossen

0sencos

),( θθθθ

θZRot

La siguiente matriz representa la orientación del sistema UVW, cuando el eje V coincide con el eje Y (ver la Figura 3.5).

Ecuación 3.2

Figura 3.5 Sistema de referencia UVW rotado sobre el eje Y un ángulo φ.

Por último se presenta la matriz de rotación que representa la orientación del

sistema UVW, cuando es rotado sobre el eje Z un ángulo θ (ver Figura 3.6):

Ecuación 3.3

Page 37: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

3. Análisis del detallador de tareas

Juan Gabriel López Solórzano 27

Figura 3.6 Sistema de referencia UVW rotado sobre el eje Z.

Las tres matrices anteriores (Ecuación 3.1, Ecuación 3.2 y Ecuación 3.3) se

denominan matrices básicas de rotación para un sistema espacial de tres dimensiones.

3.1.1.1.3 Matriz de transformación Homogénea

En las secciones anteriores se presentaron las herramientas para especificar la posición y orientación de un cuerpo rígido, pero ninguna de estas herramientas permite especificar la posición y orientación de manera conjunta. Una herramienta denominada matriz de transformación homogénea, permite la representación conjunta de la posición y orientación. Como se ha mencionado, se trabajará sobre un espacio tridimensional para representar a un objeto rígido, la representación del objeto en coordenadas homogéneas se realiza en un espacio n+1 dimensional, esto quiere decir que un vector p(x,y,z) es representado en coordenadas homogéneas por p(wx, wy, wz, w); donde w es un valor arbitrario y que representa un factor de escala.

Por ejemplo si se tiene un sistema de referencia XYZ, un vector p = ai + bj + ck, donde i, j, k son los vectores unitarios del sistema; este vector se puede representar en coordenadas homogéneas como: p = aw + bw + cw + w.

Por ejemplo, un vector 2i + 4j + 3k se puede representar en coordenadas homogéneas como [2,4,3,1]T o también [6,12,9,3]T.

Así es como se representan los vectores en coordenadas homogéneas, por lo que surge el concepto de matriz de transformación homogénea. “Se define como matriz de transformación homogénea T a una matriz de dimensión 4 X 4 que representa la transformación de un vector de coordenadas homogéneas de un sistema de coordenadas a otro” [BARR97].

La matriz de transformación homogénea tiene la siguiente estructura:

=

=

EscaladoaPerspectiv

nTranslacióRotación

wf

pRT

XX

XX

1131

1333

Page 38: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

3. Análisis del detallador de tareas

Una matriz de transformación está compuesta de cuatro submatrices; una submatriz R3X3 que corresponde a una matriz de rotación: una submatriz p3X1 que corresponde al vector de translación; una submatriz f1X3 que representa una transformación de perspectiva y una submatriz w1X1 que representa el escalado global.

En el caso de robótica sólo interesa la submatriz de rotación R3X3 y la submatriz de traslación p3X1, considerando la submatriz f1X3 como cero y w1X1 como la unidad, por lo que la matriz de transformación homogénea queda de la siguiente manera:

Esta matriz representa la posición y la orientación de un sistema UVW con respecto al sistema de referencia XYZ.

La función que tiene esta matriz es conocer las coordenadas (rx, ry, rz) del vector r con respecto al sistema XYZ a partir de las coordenadas (ru, rv, rw) del sistema UVW:

La matriz de transformación homogénea T sirve para representar la posición y orientación de un cuerpo con respecto a un sistema de referencia. Esta herramienta es la utilizada para resolver el problema cinemático directo del robot.

3.1.1.1.4 Método de Denavit-Hartenberg (D-H) Denavit y Hartenberg propusieron un método sistemático para describir y

representar la geometría espacial de los elementos de una cadena cinemática, y en particular de un robot, con respecto a un sistema de referencia fijo. Este método utiliza una matriz de transformación homogénea para describir la relación entre dos elementos rígidos adyacentes (eslabones). Para resolver el problema cinemático directo, es necesario buscar una matriz de transformación homogénea 4 X 4 que relacione la localización espacial del extremo del robot (efector final) con respecto al sistema de coordenadas de la base del robot.

“De forma general un robot de n grados de libertad consta de n eslabones

unidos por n articulaciones, de forma que cada par articulación-eslabón constituye un

=

=

10101333 TraslaciónRotaciónpR

T XX

=

11w

v

u

z

y

x

r

r

r

Tr

r

r

Page 39: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

3. Análisis del detallador de tareas

Juan Gabriel López Solórzano 29

grado de libertad” [BARR97]. A cada eslabón se le puede asociar un sistema de referencia solidario a él y, utilizando las transformaciones homogéneas, es posible representar las rotaciones y traslaciones relativas entre los distintos eslabones que componen al robot.

La matriz de transformación homogénea que representa la posición y orientación relativa entre los sistemas asociados a dos eslabones consecutivos del robot se suele denominar matriz i-1Ai. Así por ejemplo 0A1 describe la posición y orientación del sistema de referencia solidario al primer eslabón con respecto al sistema de referencia solidario a la base, 1A2 representa la posición y orientación del segundo eslabón con respecto del primero, y así sucesivamente.

Una matriz que represente la posición y orientación del tercer eslabón con

respecto al sistema de referencia asociado a la base es llamada 0A3, la cual es el resultado de multiplicar las matrices 0A1

1A2 2A3, por medio de esta multiplicación es

posible representar total o parcialmente una cadena cinemática (robot). Por ejemplo para un robot de 6 grados de libertad, la posición y orientación del

sistema solidario al eslabón final con respecto al sistema de coordenadas asociado a la base se puede expresar mediante la matriz 0A6. Cuando se toman en cuenta todos los grados de libertad, a la matriz 0An, se suele denominar matriz T. Así para un robot de 6 grados, se tiene que la posición y orientación del extremo final del robot está dada por la siguiente matriz:

T = 0A6 = 0A1

1A2 2A3

3A4 4A5

5A6 La forma habitual de asignar un sistema de referencia a cada eslabón es usando

la representación Denavit-Hartenberg (D-H). Denavit-Hartenberg propusieron en 1955 un método matricial que permite establecer de manera sistemática un sistema de coordenadas {Si} ligado a cada eslabón i de una cadena articulada (robot), pudiéndose determinar las ecuaciones cinemáticas de la cadena completa.

Según la representación D-H, escogiendo adecuadamente los sistemas

asociados a cada eslabón, será posible pasar de uno al siguiente mediante 4 transformaciones básicas que dependen exclusivamente de las características geométricas del robot.

Estas transformaciones básicas consisten en una sucesión de rotaciones y

traslaciones que permiten relacionar el sistema de referencia del elemento i con el sistema del elemento i-1. Las transformaciones son las siguientes:

1. Rotación alrededor de zi-1 un ángulo θi 2. Traslación a lo largo de zi-1 una distancia di; vector di(0,0,di) 3. Traslación a lo largo de xi una distancia ai; vector ai(ai,0,0) 4. Rotación alrededor del eje xi un ángulo αi

Teniendo en cuenta que el producto de matrices no es conmutativo, las

transformaciones se han de realizar en el orden indicado. De este modo se tiene:

i-1Ai = T (z,θi) T(0,0,di) T(ai,0,0) T(x, αi)

Page 40: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

3. Análisis del detallador de tareas

A continuación se muestran cada una de las transformaciones y cómo están constituidas:

La primera matriz de transformación T(z,θi), está estructurada por la matriz de rotación sobre el eje Z (Ecuación 3.3); y como no existe traslación, la submatriz de traslación es cero. Como se mencionó anteriormente, en robótica la perspectiva es cero y el escalado es la unidad (ver Figura 3.7):

Figura 3.7 Valores que toman cada una de las submatrices que conforman la matriz de transformación homógenea T(z,θi).

La siguiente transformación T(0,0,di), representa únicamente una traslación (a lo

largo del eje Z), por tanto la matriz de rotación es una matriz identidad (Ver Figura 3.8).

Figura 3.8 Valores que toman cada una de las submatrices que conforman la matriz de transformación homógenea T(0,0,di).

1000

0100

00

00

ii

ii

CS

SC

θθθθ

(Ecuación 3.3) Rotación Z)

Submatriz Translación

Perspectiva Escalado

1000

100

0010

0001

id

Matriz de Rotación

Submatriz Translación

Perspectiva Escalado

Page 41: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

3. Análisis del detallador de tareas

Juan Gabriel López Solórzano 31

La transformación T(ai,0,0), representa una traslación (a lo largo del eje X), por lo tanto la estructura de la matriz de transformación homogénea se muestra en la Figura 3.9.

Figura 3.9 Valores que toman cada una de las submatrices que conforman la matriz de transformación homógenea T(ai,0,0).

Por último la estructura de T(x, αi), incluye una rotación sobre el eje X (Ecuación

3.1), y no existe ninguna translación, la matriz de transformación homogénea tiene la forma que se muestra en la Figura 3.10.

Figura 3.10 Valores que toman cada una de las submatrices que conforman la matriz de transformación homógenea T(x, αi).

1000

0100

0010

001 ia

Matriz de Rotación

Submatriz Translación

Perspectiva Escalado

1000

00

00

0001

ii

ii

CS

SC

αααα

(Ecuación 3.1) Rotación X

Submatriz Translación

Perspectiva Escalado

Page 42: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

3. Análisis del detallador de tareas

A continuación se presenta el producto de estas matrices:

Ecuación 3.4

donde θi, ai, di, αi son los parámetros D-H del eslabón i. Teniendo esta matriz

sólo falta obtener los parámetros θi, ai, di, αi para poder generar las matrices i-1Ai y por medio de estas matrices obtener las relaciones entre los eslabones del robot.

Para que la matriz i-1Ai relacione los sistemas {Si} y {Si-1}, es necesario que los

sistemas se hayan escogido siguiendo ciertas reglas. Estas reglas y la obtención de los 4 parámetros D-H, conforman un algoritmo para la resolución del problema de la cinemática directa, el cual es presentado en la siguiente sección.

3.1.1.1.5 Algoritmo D-H para la obtención del modelo cinemático directo El siguiente algoritmo es descrito en [BARR97]. D-H 1. Numerar cada articulación comenzando con 1 (primer eslabón móvil de la

cadena) y acabando con n (último eslabón móvil). Se numerará como eslabón 0 a la base fija del robot.

D-H 2. Numerar cada articulación comenzando por 1 (la correspondiente al primer grado de libertad) y acabando en n.

D-H 3. Localizar el eje de cada articulación. Si este es rotativo, el eje será su propio eje de giro. Si es prismático, será el eje a lo largo del cual se produce el desplazamiento.

D-H 4. Para i de 0 a n-1 situar el eje zi sobre el eje de la articulación i+1. D-H 5. Situar el origen del sistema de la base {So} en cualquier punto del eje z0. Los

ejes x0 e y0 se situarán de modo que formen un sistema dextrógiro con z0. D-H 6. Para i de 1 a n-1, situar el sistema {Si} (solidario al eslabón i) en la intersección

del eje zi con la línea normal común a zi-1 y zi. Si ambos ejes se cortasen se situaría {Si} en el punto de corte. Si fuesen paralelos {Si} se situaría en la articulación i+1.

D-H 7. Situar xi en la línea normal común a zi-1 y zi. D-H 8. Situar yi de modo que forme un sistema dextrógiro con xi y zi.

=

=

=−

1000

0

1000

00

00

0001

1000

0100

0010

001

1000

100

0010

0001

1000

0100

00

00

1

iii

iiiiiii

iiiiiii

ii

ii

i

i

ii

ii

ii

dCS

SaCSCCS

CaSSSCC

CS

SC

a

d

CS

SC

A

ααθθαθαθθθαθαθ

ααααθθ

θθ

Page 43: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

3. Análisis del detallador de tareas

Juan Gabriel López Solórzano 33

D-H 9. Situar el sistema {Sn} en el extremo del robot de modo que zn coincida con la dirección de zn-1 y xn sea normal a zn-1 y zn.

D-H 10. Obtener θi como el ángulo que hay que girar en torno a zi-1 para que xi-1 y xi queden paralelos.

D-H 11. Obtener di como la distancia, medida a lo largo de zi-1, que habría que desplazar {Si-1} para que xi y xi-1 queden alineados.

D-H 12. Obtener ai como la distancia medida a lo largo de xi (que ahora coincidiría con xi-1) que habría que desplazar el nuevo {Si-1} para que su origen coincidiese con {Si}.

D-H 13. Obtener αi como el ángulo que habría que girar entorno a xi (que ahora coincidiría con xi-1), para que el nuevo {Si-1} coincidiese totalmente con {Si}.

D-H 14. Obtener las matrices de transformación i-1Ai definidas en la Ecuación 3.4. D-H 15. Obtener la matriz de transformación que relaciona el sistema de la base con el

extremo del robot T = 0A1, 1A2 ..

n-1An. D-H 16. La matriz T define la orientación (submatriz de rotación) y posición (submatriz

de translación) del extremo referido a la base en función de las n coordenadas articulares.

Los cuatro parámetros de D-H (θi,di,ai,αi) representan (ver Figura 3.11):

θi Es el ángulo que forman los ejes xi-1 y xi medido en un plano perpendicular al eje

zi-1, utilizando la regla de la mano derecha. Se trata de un parámetro variable en articulaciones giratorias.

di Es la distancia a lo largo del eje zi-1 desde el origen del sistema de coordenadas (i-1)-ésimo hasta la intersección del eje zi-1 con el eje xi. Se trata de un parámetro variable en articulaciones prismáticas.

ai es la distancia a lo largo del eje xi que va desde la intersección del eje zi-1 con el eje xi hasta el origen del sistema i-ésimo, en el caso de articulaciones giratorias. En el caso de articulaciones prismáticas, se calcula como la distancia más corta entre los ejes zi-1 y zi.

αi Es el ángulo de separación del eje zi-1 y el eje zi medido en un plano perpendicular al eje xi, utilizando la regla de la mano derecha.

Figura 3.11 Parámetros D-H (θi,di,ai,αi) para un eslabón giratorio.

Page 44: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

3. Análisis del detallador de tareas

Una vez obtenidos los parámetros D-H, el cálculo de las relaciones entre los eslabones consecutivos del robot se obtiene de forma inmediata, ya que estas relaciones vienen dadas por las matrices A, que se calculan según la Ecuación 3.4. Las relaciones entre eslabones no consecutivos vienen dadas por las matrices T que, como ya se comentó anteriormente, se obtienen como producto de un conjunto de matrices A.

Obtenida la matriz T, esta expresará la orientación (submatriz (3 X 3) de rotación) y posición (submatriz (3 X 1) de traslación) del extremo del robot en función de sus coordenadas articulares.

Es importante mencionar que estos parámetros son datos muy importantes que

es necesario contemplar, para modelar la cinemática de los robots industriales. A continuación se presentará el análisis de los restantes elementos (efectores finales, bandas, almacenes, etc.). 3.1.2 Efectores finales

Existen muchos tipos de efectores finales necesarios para realizar una gran variedad de funciones. Los efectores finales comúnmente son clasificados en dos categorías que son:

• Pinzas • Herramientas

Las pinzas son principalmente utilizadas para sujetar y sostener objetos. Existen

diversos tipos de pinzas y comúnmente son clasificadas dependiendo al modo de sujeción utilizado, el cual puede ser mecánico, magnético, adhesivo o de ventosas. Pero las pinzas más comunes son las pinzas mecánicas. Una pinza mecánica es un efector final que utiliza dedos mecánicos impulsados por un mecanismo para agarrar una pieza. En este trabajo de tesis se toma en cuenta principalmente las pinzas mecánicas de dos dedos (uñas). Por lo cual es necesario conocer las dimensiones de la base del efector, así como la de los dedos, además otro dato importante es el rango de apertura de la pinza y la capacidad de carga. En la Figura 3.12 se muestra la representación de una pinza en el espacio 3D.

Figura 3.12 Representación gráfica de un efector final a través del detallador de tareas.

Page 45: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

3. Análisis del detallador de tareas

Juan Gabriel López Solórzano 35

3.1.3 Almacenes

Los almacenes son elementos que sirven para almacenar las piezas de trabajo. Dentro de este trabajo de tesis se tomaron en cuenta aquellos almacenes cuya estructura es similar a una matriz, con cierto número de columnas y renglones. Fue contemplada la información geométrica de la estructura del almacén (alto, largo y ancho). Es importante mencionar, que no fueron manejados (aplicados) los sistemas de almacenaje y recuperación automático (AS/RS) y los sistemas de almacenamiento tipo carrusel. Debido a que estos dispositivos requieren un análisis más profundo para realizar un modelado efectivo de ellos. Para efecto de esta tesis sólo se contemplan almacenes que presenten una estructura sencilla. En la Figura 3.13 se presenta un ejemplo de un almacén.

Figura 3.13 Representación gráfica de un almacén a través del detallador de tareas.

3.1.4 Alimentadores

Este otro elemento tiene al igual que el almacén la función de proporcionar piezas a la celda de trabajo. De este elemento se tomaron en cuenta las características geométricas (alto, largo, ancho), otro dato importante es el número de piezas que puede almacenar. Esta es la información mínima, a partir de la cual se puede formar una visualización en 3D, de un alimentador (Feeder). Este dispositivo proporciona piezas al robot con una posición y orientación conocidas.

Page 46: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

3. Análisis del detallador de tareas

3.1.5 Máquinas herramienta CNC

Otro equipo con el que un robot puede interactuar, es la máquina herramienta CNC. Estas máquinas son utilizadas principalmente para realizar algún proceso de producción, dentro de los que destacan el torneado, fresado o taladrado. Estos procesos de transformación son aplicados a las piezas de trabajo.

La pieza de trabajo, comúnmente está sujeta sobre una plataforma de trabajo, y

la máquina realiza una serie de movimientos relativos a la pieza. Estas máquinas tienen una herramienta que es la que realiza la modificación (transformación) de la pieza. Este tipo de tecnología, es considerado también como automatización programable al igual que los robots industriales, ya que se pueden realizar diferentes tareas o procesos, con sólo especificar un nuevo programa para que la máquina realice el proceso deseado.

Existen muchos tipos de máquinas herramienta, y sería imposible poder

contemplar todos los tipos, es por eso que en este trabajo de tesis, se toman en cuenta las dimensiones de la máquina, así como una lista de procesos, que la máquina puede realizar. 3.1.6 Piezas de trabajo

En el caso de las piezas de trabajo, se toman las características geométricas

(alto, largo, ancho). También es considerado el peso de la pieza, porque es un parámetro útil, para validar si un determinado robot industrial, tiene la capacidad de soportar el peso de la pieza. 3.1.7 Mesas de trabajo

Para generar una representación 3D de una mesa de trabajo, es necesario conocer las dimensiones de la cubierta de la mesa, así como de las patas. Con esta información se puede generar la representación gráfica de las mesas de trabajo (vea la Figura 3.14).

Figura 3.14 Representación gráfica de una mesa de trabajo a través del detallador de tareas.

Page 47: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

3. Análisis del detallador de tareas

Juan Gabriel López Solórzano 37

3.1.8 Sistemas de visión

Un sistema de visión es utilizado en una celda principalmente para realizar tareas de inspección. Un sistema de visión está formado por una cámara y una computadora; la cámara toma las imágenes del mundo real y las envía a la computadora; la computadora contiene todos los algoritmos, para realizar una serie de procesos. En la celda de trabajo un sistema de visión es representado por una cámara, por lo que es necesario sus dimensiones (alto, largo y ancho). Y es necesario indicar los procesos que el sistema de visión puede realizar. 3.1.9 Bandas transportadoras

Existen diferentes tipos de bandas transportadoras, la diferencia radica principalmente en la estructura de la misma. Para que el modelado de una banda sea lo más general posible, se podrá formar una banda a partir de una serie de segmentos rectos, para formar la estructura deseada. Por lo que son necesarias las dimensiones de los segmentos y la secuencia en que estos deben de ir. Además es contemplada también la velocidad de la banda. En la Figura 3.15 se muestra una vista superior de una banda transportadora y un robot, generados por el detallador de tareas (Espacio 3D).

Figura 3.15 Representación gráfica de una banda transportadora y un robot a travéz del detallador de tareas.

Las siguientes secciones son dedicadas al análisis de la herramienta para generar gráficos en 3D, y de las herramientas para generar analizadores léxico-sintácticos. 3.2 Selecc ión d e la herramienta de visualización

En la sección 2.5 se mencionaron las características necesarias que debe proporcionar una herramienta para generar escenas (gráficos) en 3D. Estas características son útiles para el desarrollo de este trabajo de tesis. Las herramientas analizadas se presentan a continuación.

Page 48: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

3. Análisis del detallador de tareas

3.2.1 DirectX de Microsoft

Microsoft® DirectX® es un conjunto de interfaces para programación de aplicaciones de bajo nivel (APIs), para crear juegos y otras aplicaciones multimedia de alto desempeño.

Dentro de este conjunto de API´s se encuentra un componente especial

denominado “Direct3D Graphics” que proporciona una API que es usada para programar gráficos en 3D. Este componente permite generar escenas 3D, con las características que se necesitan para este trabajo de tesis. Microsoft® DirectX® cuenta además con otros componentes que son utilizados para manejar sonido, vídeo, etc. La principal desventaja de Microsoft® DirectX® es que únicamente funciona en Sistemas Operativos Microsoft, lo cual sería un inconveniente para este trabajo de tesis, que será integrado con trabajos anteriores y posteriores al mismo, pensando que en un futuro pueda ser implantado en diferentes plataformas. 3.2.2 Java3DTM

Java3DTM se utiliza para incorporar fácilmente gráficos 3D de alta calidad, escalables e independientes de la plataforma en applets y aplicaciones basadas en la tecnología JavaTM. Java 3D es una interfaz de programación de aplicaciones (API) que proporciona un conjunto de interfaces orientadas a objetos que soportan un simple modelo de programación de alto nivel. Esta API permite construir y controlar el comportamiento de objetos 3D y ambientes visuales [SUN00].

Como se mencionó en el párrafo anterior, esta herramienta está basada en la tecnología Java, lo cual representaría una desventaja utilizar Java3D, debido a que se tiene contemplado unir este trabajo de tesis, con otros trabajos desarrollados anteriormente. Estos trabajos fueron desarrollados usando C++ Builder, si la implementación de este trabajo se desarrollara en Java para hacer uso de Java3D, esto provocaría que el proceso de unir dichos trabajos sea más difícil, puesto que estarían en lenguajes de programación distintos. 3.2.3 OpenGL

“OpenGL es definido estrictamente como una interfaz de software para gráficos por hardware.” En esencia, es una librería de modelado y gráficos 3D que es multi-plataforma y muy rápida. Usa algoritmos cuidadosamente desarrollados y optimizados por Silicon Graphics, Inc. (SGI), un líder mundialmente reconocido en gráficos por computadora y animación” [WRIG96].

La ventaja principal de OpenGL, es que es independiente de la plataforma.

Además de que existe hardware especial que soporta OpenGL, el cual hace que las implementaciones sea mucho más rápidas [HOLL01]. La API seleccionada para generar la estructura de la celda de trabajo en 3D fue OpenGL debido a las ventajas que esta proporciona. Microsoft® DirectX® no fué seleccionada porque únicamente funciona sobre sistemas operativos Microsoft.

Page 49: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

3. Análisis del detallador de tareas

Juan Gabriel López Solórzano 39

Java3DTM es una API muy potente, pero no fue seleccionada debido a que está basada sobre la tecnología JavaTM y este trabajo de tesis se pretende fusionar con trabajos previos y posteriores desarrollados en lenguaje C++, por lo que era necesario utilizar una API que permitiera trabajar con C++ y poder hacer la fusión de una manera mas rápida. 3.3 Selecc ión d e la herramienta para generar analizadores léxico-sintácticos

En la sección 2.6 se mencionó la necesidad de crear un analizador léxico-sintáctico de un determinado lenguaje. Este lenguaje servirá para especificar las tareas que serán detalladas (divididas). Debido a esto, en los siguientes puntos se mencionarán algunas herramientas que se estudiaron para generar el analizador léxico-sintáctico. 3.3.1 Flex y Bison

Flex y Bison son las herramientas más tradicionales, para generar compiladores. El Flex es utilizado para generar un análisis léxico sobre un texto de entrada, que consiste en el reconocimiento de patrones léxicos (tokens), que serán utilizados por el Bison, para generar el parser (analizador sintáctico). La desventaja que se observa es que se utilizan dos herramientas para generar el parser. Además de que la manera de especificar la gramática es muy confusa.

3.3.2 JAVACC

Java Compiler Compiler (JavaCC) es el generador de parsers más popular para aplicaciones en Java. Esta herramienta genera código en Java, razón por la cual no se utilizó en este trabajo de tesis. 3.3.3 ANTLR (Another Tool for Langu age Recogn ition)

ANTLR es un generador de parsers de dominio público (con archivos fuentes). Esta herramienta permite especificar de manera conjunta los analizadores léxico y sintáctico. Esta herramienta fue la seleccionada, debido a que es la más fácil de utilizar y permite depurar errores. Además de que esta herramienta a sido utilizada en el CENIDET en algunos trabajos, obteniéndose buenos resultados. En la sección 5.3.3, se presentará la forma en que la gramática utilizada en esta herramienta es implementada en ANTLR.

En este capítulo se presentó el análisis de cada uno de los elementos más comunes que pueden forman una celda de trabajo. Además fue presentado el método utilizado para resolver el problema cinemático directo de los robots, así también se selecciono la herramienta para generar gráficos en 3D y la herramienta para generar el analizador léxico-sintáctico. En el siguiente capítulo se presentará el diseño de cada una de las tablas de la base de información que son utilizadas para almacenar los datos de cada uno de los elementos, así como almacenar la información de la estructura de las celdas de trabajo. También se definen los comandos o instrucciones utilizados para definir las tareas.

Page 50: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

4. Diseño del detallador de tareas

Capítulo 4

Diseño d el detallador de tareas

En este capítulo se presenta el diseño de cada una de las tablas de información que serán utilizadas para almacenar todos los datos de los elementos que forman la celda de trabajo. También es presentado el diseño del lenguaje para la especificación de las tareas. 4.1 Estructura de la base de información

Como ya se mencionó en el punto 2.3.1, una celda de trabajo está formada por elementos tales como robots, almacenes, alimentadores, máquinas herramienta CNC, piezas, mesas de trabajo, sistemas de visión y bandas transportadoras; a partir de estos elementos se puede formar una celda de trabajo en específico, sobre la cual se efectuará una tarea determinada. Este trabajo de tesis permite crear una configuración en específico a partir de estos elementos, por lo que es necesario contar con la información necesaria que será agregada a la base de información.

A continuación se presenta la estructura de las tablas de información que son

utilizadas en este trabajo de tesis. Dentro de estas tablas se encuentran las que almacenan la información de los elementos; las que mantienen las relaciones entre los elementos, así como la tabla que almacena la estructura de las celdas de trabajo.

Todas las tablas que a continuación se presentan, contienen una columna denominada “Tipo”. Esta columna indica el tipo de dato del campo. Los tipos de datos utilizados se muestran en la Tabla 4.1:

Page 51: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

4. Diseño del detallador de tareas

Juan Gabriel López Solórzano 41

Tabla 4.1 Principales tipos de datos utilizados en las tablas de la base de información.

Letra Tipo M Memo. N Numérico. C Cadena. B Booleano.

4.1.1 Estructura de la tabla robo ts

Uno de los elementos principales, sin duda, en una celda es el robot industrial. En este trabajo de tesis se pretende que pueda especificarse el robot o robots que se utilizarán en la celda, por lo que es necesario guardar los datos del robot, en la base de información. Los datos comunes a los robots industriales se muestran en la Tabla 4.2 :

Tabla 4.2 Tabla “Robots”, utilizada para almacenar los datos de cada robot industrial.

Campo Tipo Descripción

Nombre C Es un identificador del robot. Ngrados N Almacena el número de grados de libertad. CapCarga N Capacidad de carga del robot. Configuración C Configuración del robot (Scara, Cartesiano, etc.). Efector C Nombre del efector final (herramienta) que tiene instalado el robot.

MovArticulacion B Es un valor booleano (falso o verdadero) y especifica si el robot puede realizar el movimiento interpolado de articulación.

ComMovArticulacion C Guarda el nombre del comando para realizar el movimiento interpolado de articulación.

MovRecto B Es un valor booleano y especifica si el robot puede realizar un movimiento con trayectoria en línea recta.

ComMovRecto C Nombre del comando para realizar el movimiento interpolado en línea recta. (trayectoria en línea recta).

MovCircular B Es un valor booleano y especifica si el robot puede realizar el movimiento interpolado circular.

ComMovCircular C Nombre del comando para realizar el movimiento interpolado circular.

Approach B Valor booleano que indica si el robot puede realizar un movimiento de acercamiento sobre el eje Z.

Depart B Valor booleano que indica si el robot puede realizar un movimiento de alejamiento sobre el eje Z.

Eje B Valor booleano que indica si el robot tiene la capacidad de mover un eje (articulación), a través del lenguaje.

ComEje C Comando para mover un eje en particular. ComAbrir C Comando utilizado para abrir o accionar el efector final. ComCerrar C Comando para cerrar o desactivar el efector final del robot.

ComVelocidad C Comando utilizado para modificar la velocidad con la que el robot realiza sus movimientos.

ComPunto C Comando utilizado para definir un punto desde el lenguaje. ComTrayectoria C Comando utilizado para definir una trayectoria.

ComSeguirT C Comando utilizado para seguir una trayectoria (serie de puntos almacenados).

Page 52: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

4. Diseño del detallador de tareas

La tabla Robots se encuentra relacionada con la Tabla 4.3, que se muestra a continuación, la cual almacena los parámetros D-H de cada eslabón (link) que contiene el robot.

Tabla 4.3 Tabla “Parámetros D-H”, permite almacenar los parámetros Denavit-Hartenberg de un determinado robot.

Campo Tipo Descripción

Robot C Campo que almacena el nombre del robot, es utilizado para relacionar la tabla robots con esta tabla (tabla Parámetros D-H).

NumLink N Almacena el número de eslabón.

ThetaVMin N Cuando se trata de una articulación giratoria. Este campo almacena el valor mínimo (en grados) del rango de movimiento. Cuando la articulación es de traslación, el valor es cero.

ThetaVMax N Cuando se trata de una articulación giratoria. Este campo almacena el valor máximo (en grados) del rango de movimiento. Cuando la articulación es de traslación, el valor es cero.

ThetaF N En algunos casos una articulación puede tener un ángulo de rotación fijo. Este valor es almacenado en este campo.

DV N En el caso de una articulación de traslación, almacena la cantidad de desplazamiento que el robot puede realizar. Si es una articulación de rotación, su valor es cero.

DF N Almacena un valor fijo de desplazamiento.

A N

Es la distancia a lo largo del eje xi que va desde la intersección del eje zi-1 con el eje xi hasta el origen del sistema i-ésimo, en el caso de articulaciones giratorias. En el caso de articulaciones prismáticas, se calcula como la distancia más corta entre los ejes zi-1 y zi.

Alpha N Es el ángulo de separación del eje zi-1 y el eje zi medido en un plano perpendicular al eje xi, utilizando la regla de la mano derecha.

La Tabla 4.3 mostrada anteriormente almacena los valores de los parámetros Denavit-Hartenberg del robot. Debido a que se realiza una representación gráfica de los robots, el estado de cada articulación (coordenadas articulares) se almacena en la Tabla 4.14. 4.1.2 Estructura de la tabla almacenes

Para los almacenes se guardan los datos que se muestran en la Tabla 4.4:

Tabla 4.4 Tabla “Almacenes”, utilizada para almacenar los datos de un almacén.

Campo Tipo Descripción

Nombre C Es un identificador del almacén. NumColumnas N Almacena el número de columnas del almacén. NumRenglones N Almacena el número de renglones del almacén. MedColumnas M En este campo se almacena las medidas de cada una de las

columnas. MedRenglones M Almacena las medidas de cada una de los renglones del

almacén. Ancho N Almacena el ancho del almacén.

Page 53: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

4. Diseño del detallador de tareas

Juan Gabriel López Solórzano 43

Además de los datos del almacén, también es necesario conocer qué piezas se encuentran contenidas dentro del almacén, esta información es almacenada en la Tabla 4.5. Entre la tabla “almacenes” y la tabla “piezas almacenadas” se establece una relación uno a muchos.

Tabla 4.5 Tabla “Piezas Almacenadas” Es utilizada para almacenar la posición de almacenamiento de una pieza de trabajo.

Campo Tipo Descripción

Nombre C Nombre del almacén. Campo a través del cual se establece la relación con la tabla Almacenes.

Renglón N Renglón del almacén donde se encuentra almacenada la pieza. Columna N Columna del almacén donde se encuentra almacenada la pieza. Pieza C Nombre de la pieza almacenada. 4.1.3 Estructura de la tabla alimentadores

Toda la información de los alimentadores, es almacenada en la Tabla 4.6.

Tabla 4.6 Tabla “Alimentadores”, utilizada para almacenar los datos de los alimentadores.

Campo Tipo Descripción

Nombre C Nombre del alimentador. Npiezas N Número máximo de piezas que puede contener el

alimentador. Pieza C Nombre de la pieza que contiene el alimentador. Alto N Alto del alimentador. Largo N Largo del alimentador. Ancho N Ancho del alimentador. 4.1.4 Estructura de la tabla máquinas

La información de las máquinas herramienta CNC, se encuentra en la Tabla 4.7

Tabla 4.7 Tabla “Máquinas”, guarda los datos de las máquinas herramienta CNC.

Campo Tipo Descripción

Nombre C Nombre de la máquina herramienta CNC. Tipo C Tipo de máquina (torno, taladro, fresadora). Alto N Alto de la máquina herramienta CNC. Largo N Largo de la máquina herramienta CNC. Ancho N Ancho de la máquina herramienta CNC.

Los procesos que puede realizar una máquina herramienta, son almacenados en la Tabla 4.8.

Page 54: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

4. Diseño del detallador de tareas

Tabla 4.8 Tabla “Procesos” que es utilizada para almacenar los datos de cada uno de los procesos que es capaz de realizar una máquina herramienta CNC.

Campo Tipo Descripción

Máquina C Nombre de la máquina herramienta CNC. Este campo es utilizado para establecer una relación entre la tabla máquinas y la tabla procesos.

Nombre C Nombre del proceso que realiza la máquina. Archivo C Ruta del archivo, que contiene las instrucciones por medio de las cuales

una máquina realiza el proceso. Duración C Duración del proceso. 4.1.5 Estructura de la tabla piezas La información de las piezas de trabajo es almacenada en Tabla 4.9.

Tabla 4.9 Tabla “Piezas”, utilizada para almacenar los datos de las piezas de trabajo.

Campo Tipo Descripción

Nombre C Nombre de la pieza de trabajo. Peso N Peso de la pieza. Efector C Efector utilizado para manipular la pieza de trabajo. Alto N Alto de la pieza. Largo N Largo de la pieza. Ancho N Ancho de la pieza. La representación de las piezas de trabajo en el espacio tridimensional es realizada por medio de un cubo escalado con las medidas de alto, largo y ancho. 4.1.6 Estructura de la tabla sistemas de visión Los datos de los sistemas de visión son almacenados en la Tabla 4.10.

Tabla 4.10 Tabla “Visión”, utilizada para almacenar los datos de los sistemas de visión.

Campo Tipo Descripción

Nombre C Nombre del sistema de visión. Localiza B Valor booleano que indica si el sistema de visión realiza el

proceso de localización de objetos. Orientación B Valor booleano que indica si el sistema de visión realiza el

proceso de reconocimiento de la orientación de objetos. Punto_Agarre B Valor booleano que indica si el sistema de visión realiza el

proceso de determinar el punto de agarre de una pieza. Confirmar_Agarre B Valor booleano que indica si el sistema de visión realiza el

proceso de confirmar el punto de agarre. Inspección B Valor booleano que indica si el sistema de visión realiza el

proceso inspección de piezas de trabajo. Det_Deposito B Valor booleano que indica si el sistema de visión realiza el

proceso de determinar el punto de depósito. Alto N Alto del sistema de visión. Largo N Largo del sistema de visión. Ancho N Ancho del sistema de visión.

Page 55: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

4. Diseño del detallador de tareas

Juan Gabriel López Solórzano 45

Los criterios de calidad aplicados a un proceso de inspección realizado por un sistema de visión, son almacenados en la Tabla 4.11.

Tabla 4.11 Tabla “Criterios” que es utilizada para almacenar los datos de cada uno de los criterios de calidad aplicados a un proceso de inspección.

Campo Tipo Descripción

Visión C Nombre del sistema de visión Este campo es utilizado para establecer una relación entre la tabla Visión y la tabla Criterios.

Nombre C Nombre del criterio de calidad. Archivo C Ruta del archivo, que contiene las instrucciones por medio de las cuales

se define el criterio de calidad. 4.1.7 Estructura de la tabla bandas transportadoras

La información de las bandas transportadoras está contenida en la tabla “bandas“ y en la tabla “SegmentosBanda”, que se presentan a continuación.

Tabla 4.12 Tabla “Bandas”, almacena los datos generales para las bandas transportadoras.

Campo Tipo Descripción

Nombre C Nombre de la banda transportadora. NumEstaciones N Número de estaciones de trabajo, que contiene la banda

transportadora. Velocidad N Velocidad de la banda transportadora.

Tabla 4.13 Tabla “SegmentosBanda” es utilizada para almacenar la información de cada uno de los segmentos que forman la estructura de una banda transportadora.

Campo Tipo Descripción

Banda C Nombre de la banda. Campo utilizado para relacionar la tabla bandas y la tabla Segmentos Banda.

NumSegmento N Número de segmento. Tipo

N

Almacena el tipo de segmento. Existen 4 tipos: 1. Segmento vertical hacia arriba↑. 2. Segmento vertical hacia abajo ↓. 3. Segmento horizontal a la derecha →. 4. Segmento horizontal a la izquierda ←.

Largo N Largo del segmento. Ancho N Ancho del segmento. Estaciones M Es un campo tipo memo que almacena las posiciones de las

estaciones de trabajo. La tabla SegmentosBanda se utiliza para almacenar la estructura de la bandas, la cual posteriormente será representada gráficamente.

Page 56: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

4. Diseño del detallador de tareas

4.1.8 Estructura de la tabla celdas de trabajo

Las tablas que se presentaron anteriormente son utilizadas para almacenar la información de cada uno de los elementos. Para formar una celda de trabajo se necesita almacenar la información de los elementos que forman la celda, así como la localización de estos elementos dentro de la celda. Esta información se almacena en la tabla “celdas”.

Tabla 4.14 Tabla “Celdas”, utiilizada para almacenar la información de cada uno de los elementos que forman una celda de trabajo en particular.

Campo Tipo Descripción

Celda C Identificador de la celda de trabajo. Es utilizado para relacionar ambas tablas (celdas y elementos).

NombreElemento C Nombre del elemento que forma parte de la celda de trabajo. PosTrasX N Posición del elemento sobre el eje X. PosTrasY N Posición del elemento sobre el eje Y. PosTrasZ N Posición del elemento sobre el eje Z. PosRotX N Rotación del elemento sobre el eje X. PosRotY N Rotación del elemento sobre el eje Y. PosRotZ N Rotación del elemento sobre el eje Z. AArt1 N Valor de la articulación 1. Aart2 N Valor de la articulación 2. Aart3 N Valor de la articulación 3. Aart4 N Valor de la articulación 4. Aart5 N Valor de la articulación 5. Aart6 N Valor de la articulación 6. Aart7 N Valor de la articulación 7. Aart8 N Valor de la articulación 8. Aart9 N Valor de la articulación 9. AArt10 N Valor de la articulación 10. EPosX M Si el elemento es un robot, se almacena la expresión para calcular el valor de

X del efector final. En caso contrario, no se utiliza. EPosY M Si el elemento es un robot, se almacena la expresión para calcular el valor de

Y del efector final. En caso contrario, no se utiliza. EPosZ M Si el elemento es un robot, se almacena la expresión para calcular el valor de

Z del efector final. En caso contrario, no se utiliza. ENOrientacionX M Si el elemento es un robot, se almacena la expresión para calcular el valor de

X del vector N. En caso contrario, no se utiliza. ENOrientacionY M Si el elemento es un robot, se almacena la expresión para calcular el valor de

Y del vector N. En caso contrario, no se utiliza. ENOrientacionZ M Si el elemento es un robot, se almacena la expresión para calcular el valor de

Z del vector N. En caso contrario, no se utiliza. EOOrientacionX M Si el elemento es un robot, se almacena la expresión para calcular el valor de

X del vector O. En caso contrario, no se utiliza. EOOrientacionY M Si el elemento es un robot, se almacena la expresión para calcular el valor de

Y del vector O. En caso contrario, no se utiliza. EOOrientacionZ M Si el elemento es un robot, se almacena la expresión para calcular el valor de

Z del vector O. En caso contrario, no se utiliza. EAOrientacionX M Si el elemento es un robot, se almacena la expresión para calcular el valor de

X del vector A. En caso contrario, no se utiliza. EAOrientacionY M Si el elemento es un robot, se almacena la expresión para calcular el valor de

Y del vector A. En caso contrario, no se utiliza. EAOrientacionZ M Si el elemento es un robot, se almacena la expresión para calcular el valor de

Z del vector A. En caso contrario, no se utiliza.

Page 57: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

4. Diseño del detallador de tareas

Juan Gabriel López Solórzano 47

Todas las tablas anteriormente presentadas mantienen los datos de todos los elementos que pueden formar una celda de trabajo, así como la información de la propia celda de trabajo.

4.1.9 Estructura de la tabla relaciones

Enseguida se presenta la tabla de información utilizada para almacenar las

relaciones (interacción) entre los elementos de la celda (ver Tabla 4.15).

Tabla 4.15 Tabla “Relaciones”, utilizada para almacenar las relaciones establecidas entre los elementos de una celda de trabajo.

Campo Tipo Descripción

Celda C Nombre de la celda de trabajo. NumRelacion N Número de relación establecida dentro de una celda de trabajo. Robot C Nombre del robot (elemento activo) que se relaciona. ObjetoPasivo C Nombre del elemento pasivo (banda transportadora, almacén, etc.).

NumEstacion N Cuando el objeto pasivo es una banda transportadora, es necesario especificar el número de la estación de trabajo.

TagPasivo N

Número entero que indica la categoría a la que pertenece el objeto pasivo. Si es 1 significa que es un sistema de visión, 2 una máquina herramienta CNC, 3 un alimentador, 4 un almacén, 5 una banda transportadora, 6 una mesa de trabajo.

4.1.10 Estructura de la tabla pun tos

La tabla “relaciones” es relacionada con la tabla “puntos” (ver Tabla 4.16) la cual

mantiene todos los puntos en el espacio que un determinado robot debe seguir para alcanzar un determinado elemento (elemento pasivo).

Tabla 4.16 Tabla “Puntos”, utilizada para almacenar los puntos (posición y orientación) que un robot debe seguir para alcanzar a otro elemento.

Campo Tipo Descripción

Celda C Nombre de la celda de trabajo. NumRelacion N Número de relación establecida dentro de una celda de trabajo. Nombre C Identificador del punto en el espacio.

X N Almacena el valor de X que es utilizado para definir la posición del efector final.

Y N Almacena el valor de Y que es utilizado para definir la posición del efector final.

Z N Almacena el valor de Z que es utilizado para definir la posición del efector final.

Roll N Almacena el valor del giro (Roll) que es utilizado para definir la orientación del efector final.

Pitch N Almacena el valor de elevación (Pitch) que es utilizado para definir la orientación del efector final.

Yaw N Almacena el valor de desviación (Yaw) que es utilizado para definir la orientación del efector final.

Page 58: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

4. Diseño del detallador de tareas

A continuación se presenta el diseño de la gramática, mencionando las palabras reservadas utilizadas para especificar la tarea.

4.2 Lengu aje para la especificac ión de las tareas

En las siguientes secciones se presentarán las palabras reservadas del lenguaje y la estructura del programa. 4.2.1 Palabras reservadas

Las palabras reservadas del lenguaje se muestran en la Tabla 4.17.

Tabla 4.17 Palabras reservadas del lenguaje utilizado para la especificación de las tareas.

Palabra Reservada Función

ELSE Esta palabra reservada es utilizada para indicar las instrucciones o comandos que serán ejecutados cuando una operación de inspección rechaza una pieza inspeccionada4.

END Indica el final del bloque principal del programa utilizado para especificar la tarea.

IF Se utiliza para comenzar una sentencia de condición, específicamente para la operación de inspección.

BEGIN Indica el comienzo del bloque principal del programa de especificación.

INT Se utiliza para definir una variable tipo entero. PROC Se utiliza para definir un procedimiento dentro del programa.

PROGRAM Palabra clave que se utiliza al comienzo de un programa de especificación de tareas.

REPEAT Se utiliza para definir un ciclo.

VAR Es utilizada para comenzar la sección de declaración de variables.

4.2.2 Funciones o comando s

La sintaxis de las funciones utilizadas para especificar las tareas se muestra en la Tabla 4.18:

4 En el contexto de este trabajo, sólo se implementó el IF-ELSE para proceso de inspección, sin embargo la extensión de la sentencia se deja para trabajos futuros.

Page 59: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

4. Diseño del detallador de tareas

Juan Gabriel López Solórzano 49

Tabla 4.18 Funciones o comandos del lenguaje utilizados para especificar las tareas.

Comando Sintaxis / Descripción

CALL

CALL id_proc Donde id_proc es el nombre del procedimiento. Este comando sirve para indicar una llamada a un procedimiento con el nombre id_proc. Este procedimiento tiene que haberse definido anteriormente. Ejemplo: CALL Proced_Uno;

GET

GET(Lugar_Origen<[col]<[ren]>>, NomPieza) Donde Lugar_Origen es el elemento de donde se tomará la pieza (banda, mesa, almacén, etc.); [col][ren] son opcionales y si se utilizan sirven para indicar la posición de la pieza dentro de un almacén; sólo se utiliza [col] para especificar el número de la estación de trabajo de una banda transportadora, de la cual se va a obtener la pieza. Por último el parámetro NomPieza indica el nombre de la pieza a obtener. Este comando es utilizado para obtener o tomar una pieza de trabajo de un lugar específico para posteriormente moverlo a otro lugar. Esta instrucción es realizada por un robot industrial.

PUT

PUT(Lugar_Destino<[col]<[ren]>>) Donde Lugar_Destino es el lugar (elemento) de donde se colocará la pieza (banda, mesa, etc.); [col][ren] son opcionales, si se utilizan sirven para indicar la posición donde se colocará la pieza dentro de un almacén; sólo se indica [col] para especificar el número de la estación de trabajo de una banda transportadora, en la cual se colocará la pieza. Este comando es utilizado para colocar o dejar una pieza de trabajo de un lugar específico. Esta instrucción es realizada por un robot industrial.

INSPECTION

INSPECTION (Criteriovisión, Nom_Pieza) Donde Criteriovisión es el nombre del criterio de calidad que será utilizado por el sistema de visión encargado de realizar el proceso de inspección sobre la pieza Nom_Pieza. Este comando se utiliza para realizar un proceso de inspección, sobre una pieza. Es utilizado dentro de una sentencia IF, debido a que este proceso devuelve un valor booleano (verdadero o falso), dependiendo de si pasa o no el proceso de inspección.

MOVE

MOVE(Nombre_Banda, Num_Estacion) Donde Nombre_Banda es la banda transportadora que realizará un movimiento hasta la estación indicada por Num_Estacion. Este comando es realizado únicamente por la banda transportadora.

PROCESS

PROCESS(Nom_Maquina, Nom_Proceso) Donde Nom_Maquina es el nombre de la máquina herramienta CNC y Nom_Proceso es el nombre del proceso, que contiene las instrucciones que debe realizar la máquina para efectuar el proceso de producción deseado.

Page 60: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

4. Diseño del detallador de tareas

4.2.3 Estructura del programa para la especificac ión d e las tareas

Para especificar las tareas es necesario seguir la siguiente estructura:

Esta estructura tiene 3 secciones principales: el encabezado, procedimientos y bloque principal. En el encabezado se indica el nombre del programa, y también se declaran las variables globales. En la sección de procedimientos se definen uno o más procedimientos, así como la declaración de variables locales. Las variables globales y procedimientos son opcionales, es decir, pueden o no ser declarados. El bloque principal (última sección) contiene las sentencias que corresponden al programa principal. Las sentencias que se pueden utilizar son las funciones o comandos que se definieron en la Tabla 4.18, además de una sentencia condicional (IF-ELSE) o ciclo (REPEAT). 4.2.4 Gramática que define el lengu aje para especificar las tareas

La gramática utilizada para definir el lenguaje se presenta en el anexo A. En este anexo se presentan los dos archivos: Lexer.g y Parser.g, los cuales son utilizados para definir la gramática en ANTLR.

En este capítulo fue abordado el diseño de la herramienta. Se definió la base de información y se presentó además el diseño de la gramática (palabras reservadas y funciones). En el capítulo siguiente se abordará la implementación (desarrollo) de la herramienta.

PROGRAM id;

[[ VAR

Declaración de variables globales ]

PROC id

VAR

Declaración de Variables Locales

{

Sentencias

} ]

.

. , INICIO

Sentencias

FIN.

Page 61: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

5. Desarrollo del detallador de tareas

Juan Gabriel López Solórzano 51

Capítulo 5

Desarrollo del detallador de tareas

Dentro de este capítulo se tratará el desarrollo (implementación) del detallador de tareas de visión robótica. Este capítulo consta de cuatro secciones principales que son:

• La interfaz de los elementos. • La representación gráfica de la celda. • La gramática empleada para especificación de las tareas. • El detallado de las tareas.

Enseguida se describen cada una de estas secciones.

5.1 Interfaz de los elementos

Se le denomina interfaz de los elementos a cada una de las pantallas (interfaz gráfica) utilizadas para manejar la información de cada elemento (agregar, borrar o modificar datos).

En la sección 3.1, se analizaron cada uno de los elementos comunes que

pueden formar una celda de trabajo, identificándose los datos importantes que se almacenarán en una determinada tabla de información. Estas tablas se muestran detalladamente en la sección 4.1 y conforman la base de información de este trabajo.

Para que el usuario pueda acceder, modificar y consultar la información de los

elementos y celdas de trabajo, se desarrolló una interfaz gráfica en C++ Builder 5.0.

Page 62: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

5. Desarrollo del detallador de tareas

En esta sección serán tratadas las interfaces de los elementos; la implementación tanto de la representación gráfica así como de la gramática para la especificación de tareas serán tratadas en las secciones 5.2 y 5.3 respectivamente.

El objetivo principal de las interfaces de los elementos es permitir al usuario

interactuar con la base de información, ya que por medio de estas puede almacenar, modificar y borrar información de cada uno de los elementos. Creando nuevos elementos o modificando la información de los ya existentes, se puede generar una configuración particular de una celda de trabajo.

Las interfaces son las siguientes (ver Tabla 5.1):

Tabla 5.1 Interfaz de cada uno de los elementos comunes que pueden formar una celda de trabajo.

Interfaz/Pantalla Descripción

FormRobot Interfaz utilizada para agregar, modificar, borrar y consultar información de robots industriales.

FormPiezas Interfaz que permite agregar, modificar, borrar y consultar información de las piezas de trabajo.

FormEfectores Interfaz utilizada para manejar la información de los efectores finales FormVision Interfaz utilizada para manejar la información de los sistemas de visión.

FormMaquinas Interfaz utilizada para manejar la información de las máquinas herramienta CNC.

FormFeeders Interfaz utilizada para manejar la información de los alimentadores. FormAlmacenes Interfaz utilizada para manejar la información de los almacenes.

FormBandas Interfaz utilizada para manejar la información de las bandas transportadoras.

FormMesas Interfaz utilizada para manejar la información de las mesas de trabajo. FormWorkCell Interfaz utilizada para generar la celda de trabajo.

Como se puede observar existe una interfaz para cada elemento. Todas estas

interfaces tienen dos objetivos en común: mostrar la información del elemento para modificarla y permitir la introducción de datos para un nuevo elemento. La última interfaz FormWorkCell no representa un elemento individual, sino la estructura de la celda de trabajo.

A continuación se presentan 2 interfaces auxiliares que son utilizadas dentro de la herramienta (ver Tabla 5.2):

Tabla 5.2 Interfaces auxiliares, utilizadas en el detallador de tareas.

Interfaz/Pantalla Descripción

Principal Interfaz principal a través de la cual se puede elegir un elemento o formar una celda de trabajo.

FormListaElementos

Si por ejemplo en la interfaz Principal, se selecciona a los robots; la interfaz FormListaElementos mostrará una lista de todos los robots almacenados actualmente en la base de información. El funcionamiento es el mismo independientemente del elemento seleccionado.

A continuación se muestra en la Figura 5.1, la interacción de las interfaces

mencionadas anteriormente.

Page 63: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

5. Desarrollo del detallador de tareas

Juan Gabriel López Solórzano 53

Figura 5.1 Interfaces que conforman la estructura general del detallador de tareas.

5.2 Implementación d e la representación g ráfica de celdas de trabajo

En esta sección se explica cómo se desarrolló la representación gráfica de la estructura de las celdas de trabajo. Como ya se comentó anteriormente, la representación gráfica fue realizada a través de la API OpenGl.

En la Figura 5.2 se muestra el espacio tridimensional que se utiliza para generar

la estructura de la celda de trabajo. Este espacio permitirá representar todos los elementos que forman una celda, además de la manipulación de estos elementos, en términos de su localización dentro de este espacio 3D.

TPrincipal

TFormRobots

TFormWorkCell

TFormPiezas

TFormEfectores

TFormVision

TFormMaquinas

TFormFeeders

TFormAlmacenes

TFormBandas

TFormMesas

TFormListaElementos

Page 64: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

5. Desarrollo del detallador de tareas

Figura 5.2 Pantalla utilizada para generar la representación gráfica de las celdas de trabajo.

Para generar una escena 3D con OpenGL, se deben cubrir las siguientes

etapas:

• Inicializar OpenGL • Definir cómo la escena será mapeada a la pantalla de la computadora. • Establecer fuentes de luz y propiedades del material de los objetos. • Dibujar objetos geométricos. • Uso de la transformación de modelado.

A continuación se explican detalladamente cada una de las etapas.

5.2.1 Inicializar OpenGL

Esta primera etapa se implementó a través del uso de un componente para C++ Builder 5.0 desarrollado por Daniel Plakosh [PLAK03]. Este componente tiene como objetivo principal preparar el área cliente donde se trabajará, creando un “OpenGL Rendering context” que es necesario para ejecutar comandos de OpenGL. La forma de usar este componente es similar al componente TPanel de C++ Builder 5.0. Sólo es necesario agregar a la ficha (formulario) el componente con las dimensiones deseadas, una vez realizado esto se puede comenzar a utilizar comandos del OpenGL. 5.2.2 Mapeo de la escena a la pantalla de la computadora

El mapeo consiste en especificar la región de la pantalla que va ha ser utilizada para desplegar la escena 3D y cómo será graficada.

Page 65: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

5. Desarrollo del detallador de tareas

Juan Gabriel López Solórzano 55

Este mapeo es definido a través del uso de los comandos glViewport y

gluPerspective o glOrtho. glViewport específica la región que la imagen ocupa sobre la pantalla de la

computadora, es decir, es la región sobre la cual será mapeada la escena o gráfico. Este comando tiene el siguiente formato:

void glViewport(GLint x, GLint y,GLsizei width, GLsizei height);

donde x, y especifican la esquina inferior izquierda del puerto de vista; width y height son el ancho y alto, respectivamente, del rectángulo generado para el puerto de vista (viewport).

Además de definir viewport es necesario especificar el volumen de visualización. El volumen de visualización determina cómo un objeto es proyectado sobre la pantalla (usando una proyección en perspectiva u ortogonal), y define qué objetos o porciones de objetos son recortados de la imagen final, que es enviada a la pantalla de la computadora [WOO97]. La proyección en perspectiva hace a la escena 3D más realista, debido a que proporciona el efecto de profundidad, es decir, que si un objeto está localizado más lejos del punto de vista, este se ve más pequeño. La proyección ortogonal hace que todos los objetos se vean del mismo tamaño independientemente de su distancia al punto de vista. En este trabajo de tesis se va a generar una escena 3D de la estructura de la celda de trabajo, por lo que es necesario tener una vista realista de la misma. Debido a esto, el tipo de proyección utilizado fue la proyección de perspectiva, y esta se define a través del siguiente comando: void gluPerspective(GLdouble fovy, GLdouble aspect, GLdouble Near, GLdouble Far); donde fovy corresponde al ángulo de apertura del campo de visión. Aspect define la relación entre el ángulo de visión horizontal y vertical (es la anchura entre la altura). Near, es la distancia mínima a la que deben estar los objetos para salir en la escena y Far es la distancia máxima. Para comprender mejor este comando se puede recurrir a la Figura 5.3.

Page 66: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

5. Desarrollo del detallador de tareas

Figura 5.3 Volumen de visualización en perspectiva (gluPerspective()).

En la Figura 5.3 se hace referencia al punto de vista (posición y orientación de la cámara), este punto de vista es especificado a través del comando gluLookat:

void gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble lookAtx, GLdouble lookAty, GLdouble lookAtz, GLdouble upx, GLdouble upy, GLdouble upz );

Donde eyex, eyey, eyez, especifican la posición de la cámara; lookAtx, lookAty, lookAtz, es hacia donde está mirando la cámara y los parámetros upx, upy, upz definen la orientación de la cámara (ver Figura 5.4).

Page 67: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

5. Desarrollo del detallador de tareas

Juan Gabriel López Solórzano 57

Figura 5.4 Colocación del punto de vista utilizando el comando gluLookAt().

La inicialización de OpenGL, la especificación de cómo la escena debe ser mapeada en la pantalla y colocar el punto de vista del observador (la cámara). Son operaciones que sirven para preparar el espacio 3D, donde serán generados los objetos. 5.2.3 Establecer fuentes de luz y propiedades del material de los objetos

Antes de generar un objeto es necesario establecer las fuentes de luz y las propiedades del material de los objetos. Esto es lo que en realidad proporciona la noción de tres dimensiones. En la Figura 5.5 a) se muestra una esfera con una fuente de luz y con propiedades de material específico; y b) muestra una esfera sin fuente de iluminación.

Figura 5.5 a) Esfera iluminada, b) Esfera sin iluminación. Generadas con comando de OpenGL.

Page 68: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

5. Desarrollo del detallador de tareas

Con esto se puede concluir que la especificación de fuentes de iluminación dentro de una escena y el establecimiento de las propiedades del material de los objetos que serán iluminados, son importantes debido a que le dan el aspecto de tres dimensiones, además de proporcionarle mucho más realismo a los objetos.

OpenGL proporciona funciones para establecer fuentes de iluminación. Una

fuente de iluminación en OpenGL está compuesta de tres tipos de luz que son: una luz ambiental (ambient), que es la cantidad de luz que no incide directamente sobre el objeto sino que llega a él después de reflejarse por toda la escena; una luz difusa que llega de una dirección particular, pero es reflejada uniformemente fuera de la superficie, en varias direcciones un ejemplo de una luz difusa es una luz fluorescente; y por último la luz especular, que al igual que la luz difusa, tiene una dirección específica, pero con la diferencia que la luz es reflejada completamente en una dirección en particular. Lo último que falta para especificar completamente la fuente de luz es su posición dentro de la escena. Más adelante se verán los comandos utilizados para crear fuentes de iluminación.

Estos componentes de luz (ambiental, difusa y especular) son especificados,

usando una combinación RGBA (Red, Green, Blue, Alpha). El valor de Alpha se utiliza para lograr un efecto de transparencia, que no se utiliza en este trabajo, por eso se considera siempre con el valor 1.

A continuación se muestran los comandos utilizados para crear fuentes de

iluminación. El comando para especificar todas las propiedades de una luz es glLightfv(), el

cual tiene tres parámetros y su sintaxis es la siguiente:

glLightfv(GLenum light, GLenum pname, TYPE param) este comando crea una luz especificada por light, la cual puede ser GL_LIGHT1,... GL_LIGHT2,...GL_LIGHT7, la característica de la luz es establecida por pname, la cual puede ser GL_AMBIENT,GL_SPECULAR o GL_DIFFUSE, estos son los más comunes, existen otras características que no son utilizadas en este trabajo. El argumento param contiene los valores (en un arreglo) que son asignados a la característica pname.

Un ejemplo de una luz de rayo láser podría establecerse de la siguiente manera: GLfloat ambientLight[] = { 0.05f, 0.0f, 0.0f, 1.0f }; GLfloat diffuseLight[] = { 0.10f, 0.0f, 0.0f, 1.0f }; GLfloat specular[] = { 0.99f, 0.0f, 0.0f, 1.0f}; GLfloat lightPos[] = { 0.0f, 40.0f, 10.0f, 1.0f }; glLightfv(GL_LIGHT0,GL_AMBIENT,ambientLight); glLightfv(GL_LIGHT0,GL_DIFFUSE,diffuseLight); glLightfv(GL_LIGHT0,GL_SPECULAR,specular); glLightfv(GL_LIGHT0,GL_POSITION,lightPos); glEnable(GL_LIGHT0);

En el código anterior, los comandos glLightfv se utilizan para especificar las propiedades de la luz, en cada uno de sus componentes. Estos comandos crean la luz

Page 69: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

5. Desarrollo del detallador de tareas

Juan Gabriel López Solórzano 59

GL_LIGHT0. En este caso como se trata de una luz de rayo láser, la luz ambiental que emite es casi nula por eso sus valores son: ambientLight[] = { 0.05f, 0.0f, 0.0f, 1.0f } los cuatro valores corresponden a RGBA mencionados anteriormente, y se puede interpretar que esta luz, emite muy poca luz ambiental (un 5 % de rojo ) . Ahora bien la luz difusa, que emite un rayo láser es muy poca es por eso que sus valores son diffuseLight[] = { 0.10f, 0.0f, 0.0f, 1.0f }; el rayo láser emite casi en su totalidad una luz especular por eso en sus valores specular[] = { 0.99f, 0.0f, 0.0f, 1.0f}, su valor en rojo es casi uno, lo que indica que emite una luz roja bastante fuerte, en una dirección específica. Por último para que la luz sea aplicada a la escena es necesario activarla, mediante el comando glEnable(GL_LIGHT0). Una escena generada con esta fuente de luz se vería como la Figura 5.6.

Figura 5.6 Esfera iluminada usando una fuente de luz tipo rayo láser.

Además de la fuente de iluminación también es necesario establecer las

propiedades del material de los objetos. Las propiedades del material de los objetos son los colores de ambiente, difuso y especular, el brillo, y el color de cualquier luz emitida. Como se puede observar las características son conceptualmente similares a las de las fuentes de luz, con la diferencia de que el comando usado es:

glMaterialfv(GLenum face, GLenum pname, TYPE param) El argumento que cambia es el face, que se refiere a la cara del objeto, a la que

las propiedades del material será aplicado, y pueden ser GL_FRONT, GL_BACK o GL_FRONT_AND_BACK.

Con los comandos anteriormente mencionados es posible definir las fuentes de

luz y las propiedades del material de los objetos a dibujar. Estas características que soporta OpenGL, son muy completas. Dentro de este trabajo sólo se hizo uso de los comandos básicos, para más información consultar [WOO97].

5.2.4 Dibujo de objetos geométricos

OpenGL proporciona primitivas para dibujar objetos geométricos sencillos tales

como líneas, puntos y polígonos. A partir de los cuales se pueden generar objetos más complejos. Dentro de este trabajo de tesis, los elementos (robots, bandas, almacenes, etc.) están estructurados por una serie de cubos y esferas.

Page 70: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

5. Desarrollo del detallador de tareas

Estas primitivas más complejas tales como cubos, esferas, conos, etc., así como algunas otras funciones de más alto nivel son proporcionadas por la librería GLUT (The OpenGL Utility Toolkit), desarrollada por Mark J. Kilgard de Silicon Graphics Inc.

A continuación se presentan los comandos utilizados para dibujar un cubo sólido

o en modo alambre, respectivamente.

void glutSolidCube(GLdouble size); void glutWireCube(GLdouble size);

donde size es la longitud de cada lado. El cubo es centrado al sistema de coordenadas del modelo.

En la Figura 5.7 se pueden observar dos cubos generados con los comandos

glutSolidCube() y glutWireCube() respectivamente, donde la longitud de sus lados es igual a 1.

Figura 5.7 A) Cubo en modelo sólido y B) en modelo de alambre generados con OpenGL.

Dentro de este trabajo de tesis también se utilizaron las esferas, y los comandos

para generar esferas (sólidas y en modo alambre) son:

void glutSolidSphere(GLdouble radius,GLint slices, GLint stacks); void glutWireSphere(GLdouble radius,GLint slices, GLint stacks);

donde radius corresponde al radio de la esfera, slices número de subdivisiones alrededor del eje Z y el argumento stacks es el número de subdivisiones a lo largo del eje Z.

En la Figura 5.8 se muestra una esfera (sólida y en modelo de alambre) con radio igual a uno, 10 slices y 10 stacks.

Figura 5.8 A) Esfera sólida; B) esfera en modelo de alambre generadas con OpenGL.

Page 71: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

5. Desarrollo del detallador de tareas

Juan Gabriel López Solórzano 61

5.2.5 Transformaciones de modelado

En la sección anterior se mostraron las primitivas geométricas utilizadas en este trabajo de tesis, para generar los elementos de la celda de manufactura. A continuación se muestra un ejemplo de un robot tipo Scara (ver Figura 5.9), que fue creado con el detallador de tareas, específicamente dentro del módulo de graficación de elementos.

Figura 5.9 Robot Tipo Scara en A) modelo alambre y B) sólido; generados con el detallador de tareas.

En la Figura 5.9 se pueden ver las esferas que están localizadas en las articulaciones del robot tipo Scara. Estas esferas fueron creadas utilizando el comando glutSolidSphere() visto anteriormente, pero los segmentos o eslabones de este robot no están representados por cubos propiamente, ya que un cubo se caracteriza por que todos lados tienen la misma longitud.

Para poder representar este robot y los elementos restantes, se implementaron las operaciones de escalado, rotación y traslación de figuras geométricas (en este caso de cubos y esferas).

OpenGL proporciona estas operaciones y las llama transformaciones de

modelado. Además de que la forma en que realiza estas operaciones es modificando la matriz de modelado actual. Ya que OpenGL maneja matrices y únicamente le aplica las transformaciones para lograr el efecto deseado. La primera transformación que es analizada es la traslación. El comando de OpenGL es:

void glTraslatef(TYPE x, TYPE y, TYPE z); Este comando multiplica la matriz actual por una matriz que desplaza al objeto en las direcciones dadas por los valores x,y,z.

Page 72: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

5. Desarrollo del detallador de tareas

Este comando desplaza un objeto sobre cada uno de los ejes dependiendo de los valores indicados por x, y, z. En la Figura 5.10 se muestra una traslación sobre el eje z en 3 unidades.

Figura 5.10 Traslación de un cubo a lo largo del eje Z.

La rotación se realiza con el siguiente comando:

void glRotatef(TYPE angle, TYPE x, TYPE y, TYPE z); Este comando multiplica la matriz actual por una matriz que rota el objeto en dirección contraria a las manecillas del reloj. El argumento angle especifica el ángulo de rotación. Este comando permite aplicar una rotación sobre un eje a la vez.

Un ejemplo de rotación sobre el eje Y en un ángulo de 45° es mostrado en la Figura 5.11.

Figura 5.11 Rotación de un cubo sobre el eje Y un ángulo de 45°.

Page 73: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

5. Desarrollo del detallador de tareas

Juan Gabriel López Solórzano 63

Por último es presentada la transformación de escalado, cuyo comando es el siguiente:

void glScalef(TYPE x, TYPE y, TYPE z); Este comando multiplica la matriz actual por una matriz que hace que un objeto sea alargado, encogido o reflejado sobre los ejes. Cada coordenada x,y,z de cada punto del objeto es multiplicado por su correspondiente argumento.

Un ejemplo (ver Figura 5.12) se muestra un escalado 3 veces mayor en el eje Y; en los ejes X y Z no existe ningún escalado, porque el valor de los argumentos es uno.

Figura 5.12 Escalado de un cubo utilizando el comando glScalef.

5.3 Gramática empleada para la especificac ión d e tareas

En esta sección, se abordará la implementación de la gramática (ver sección 4.2.4), la cual es utilizada, para especificar la tarea que será detallada (dividida).

Como se mencionó en la sección 3.3 la herramienta utilizada para generar el

analizador léxico-sintáctico fue ANTLR (Another Tool for Language Recognition) [PARR89]. 5.3.1 Funcionamiento de ANTLR

En la Figura 5.13 se muestra el funcionamiento general de la herramienta ANTLR.

Figura 5.13 Funcionamiento general de la herramienta ANTLR.

Gramática

ANTLR

Analizador

léxico-sintáctico

Page 74: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

5. Desarrollo del detallador de tareas

Como se puede observar en la figura anterior, para que ANTLR genere un analizador léxico-sintáctico, necesita como entrada la gramática del lenguaje a reconocer. ANTLR soporta la notación Extendida BNF (Backus Naur Form) para expresar la gramática. ANTLR genera el analizador léxico-sintáctico por omisión en lenguaje Java, pero también se puede generar en lenguaje C++, como se verá en las siguientes secciones. 5.3.2 Especificac ión d el analizador léxico y s intáctico con ANTLR

Para que ANTLR reconozca una gramática, es necesario especificar una clase “lexer” y una clase “parser”. La clase “lexer” describe la forma en que una serie de caracteres son agrupados en una serie de componentes léxicos (tokens), es decir, un analizador léxico. La clase “parser”, analiza una serie de tokens para verificar si cumplen con determinadas reglas de sintaxis.

Para definir estas clases (lexer y parser) en ANTLR, se debe crear un archivo

con extensión *.g, para cada una de ellas. La estructura general de estos archivos se muestra a continuación:

La sección header {} es opcional, y se utiliza para escribir código fuente en el

lenguaje generado por ANTLR. La sección options{}, es utilizada para indicarle a ANTLR el lenguaje que debe

utilizar para generar el código, ya que por omisión el código lo genera en Java. El presente trabajo está implementado en lenguaje C++, por lo que se necesita que la salida generada por esta herramienta sea en este lenguaje. Esto se logra con el comando: language="Cpp", que debe ir dentro de esta sección (options). La siguiente sección es la definición de la clase lexer o parser según sea el caso; esta clase cuenta con los siguientes apartados: • Declaración de la clase. Se define la clase mediante la siguiente sintaxis: class

<identificador> extends clase_base. Se debe iniciar con la palabra class después se define el nombre de la clase, la palabra extends se utiliza para definir la clase

header{ } options { } class NombreClase extends Lexer o Parser; options { opciones } { miembros de la clase lexer o parser } tokens { } reglas léxicas o reglas de parser

Page 75: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

5. Desarrollo del detallador de tareas

Juan Gabriel López Solórzano 65

base la cual puede ser Lexer o Parser. Una clase Parser se declararía de la siguiente manera: class MiParser extends Parser;

• Opciones de la clase (Lexer o Parser). Si la clase es Lexer, en esta sección se especifica el vocabulario (alfabeto) a utilizar; el nombre del vocabulario generado (tokens) por el lexer. En el caso de que la clase sea Parser, dentro de esta sección se especifica el vocabulario, este vocabulario es el que es generado por la clase Lexer. Además dentro de esta sección se puede utilizar la sentencia defaultErrorHandler para activar o desactivar la generación automática de mensajes de error. • Miembros de la clase. En esta parte se pueden definir variables o funciones que

se utilicen dentro de la clase.

Después de definir la clase (Lexer o Parser) la siguiente sección es denominada tokens{} y es utilizada cuando es una clase Lexer. En esta sección se definen cadenas que son palabras reservadas del lenguaje que se está especificando.

La ultima sección es la que se utiliza para definir las reglas léxicas o reglas de parser según sea el caso. Estas reglas tienen un nombre (identificador válido), opcionalmente un conjunto de argumentos, un valor de retorno y una acción inicial; por último contiene una alternativa o alternativas.

La estructura de una regla en ANTLR es:

A continuación se explican cada uno de sus componentes: Nombre_Regla: Es el nombre de la regla (identificador válido en C++). [parámetros]: ANTLR permite que una regla pueda recibir parámetros (valores de entrada). returns [tipo id, tipo id,...]: Se utiliza cuando se desea que una regla devuelva un valor. {Acción inicial} Esta parte se puede utilizar para la inicialización de variables. Por último se especifican las diferentes alternativas que son separadas por “|”. Lo cual indica que se puede elegir sólo una alternativa de todas las que existen.

Como fue tratado en la sección 2.6, estas reglas también se conocen con el nombre de reglas de producción. De forma general una regla en ANTLR se compone de un símbolo (Nombre_Regla) que se encuentra del lado izquierdo de : que será sustituido por una de las alternativas del lado derecho. Cada una de las alternativas estará formado por símbolos terminales y símbolos no terminales (ver sección 2.6).

Nombre_Regla [parámetros] returns [tipo id, tipo id...] { acción inicial} : alternativa_1 | alternativa_2 ... | alternativa_n ;

Page 76: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

5. Desarrollo del detallador de tareas

Para expresar estas reglas en ANTLR se utiliza la notación EBNF, esta notación permite utilizar los siguientes operadores:

?: significa que el símbolo (o grupo de símbolos entre paréntesis) que se encuentra a la izquierda del operador es opcional (puede aparecer una vez o no).

* significa que un símbolo (o grupo de símbolos entre paréntesis) puede ser repetido cero o más veces.

+ significa que un símbolo (o grupo de símbolos entre paréntesis) puede ser repetido una o más veces.

Los archivos Lexer y Parser (archivos con extensión *.g) generados en este trabajo de tesis, son presentados en el anexo A. A continuación se muestra cómo se utiliza la herramienta ANTLR para generar el analizador léxico y sintáctico a partir de los archivos Lexer.g y Parser.g, respectivamente. 5.3.3 Generación d el analizador léxico y s intáctico con ANTLR

Antes de mostrar cómo se utiliza ANTLR, se explicará cómo obtener esta herramienta, para su utilización.

A través de la página web http://www.antlr.org, se puede obtener un archivo

comprimido (antlr-2.7.1.zip) que contiene todos los archivos que forman la herramienta ANTLR. El contenido del archivo antlr-2.7.1.zip deber ser extraído al disco duro de la computadora donde se va a utilizar ANTLR. Una vez extraído el contenido se crearán varios directorios con archivos del ANTLR, que son necesarios para la herramienta. Dentro de estos archivos existe un componente que tiene el nombre de antlr.jar. Este componente es el que se utiliza para generar el analizador léxico y sintáctico. Cabe mencionar que esta herramienta requiere de un compilador o máquina virtual de Java para que funcione.

A continuación se muestra los comandos que se deben realizar para que ANTLR

genere el analizador léxico y sintáctico de la gramática. En la línea de comandos de MS-DOS se debe escribir las siguientes

instrucciones:

java -classpath C:\antlr-2.7.1;.; antlr.Tool Lexer.g ↵ java -classpath C:\antlr-2.7.1;.; antlr.Tool Parser.g ↵

La primera línea ejecuta la herramienta ANTLR (antr.Tool) y el parámetro es el archivo donde está definida la clase lexer (Lexer.g). En la segunda línea el parámetro es el archivo que contiene la clase Parser. Una vez realizado lo anterior ANTLR genera dos archivos principales en lenguaje C++. El nombre que tienen estos archivos es el mismo que se utilizó para nombrar a las clases Lexer y Parser, en este trabajo se nombraron como LexerTesis y ParserTesis respectivamente. Por lo que los archivos LexerTesis.cpp y ParserTesis.cpp son la implementación del analizador léxico y sintáctico.

Page 77: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

5. Desarrollo del detallador de tareas

Juan Gabriel López Solórzano 67

5.4 Detallado de las tareas

Para generar el detallado de las tareas, es necesario haber formado la estructura de la celda, indicando todos los elementos que formarán parte de ella. Una vez creada la estructura, es necesario establecer las relaciones entre cada uno de los elementos. Es decir, que dentro de una celda pueden existir uno o más robots industriales, pero cada uno de ellos tiene su propio volumen de trabajo, por lo que no pueden cubrir todo el espacio que ocupa una celda, por esto se debe especificar para cada robot, los elementos (bandas, almacenes, etc.) con los que interactúa. Esta relación se establece especificando los puntos en el espacio que el robot debe seguir para alcanzar el elemento con el que se está relacionando.

Una vez definida la celda de trabajo se procede a especificar la tarea a realizar.

Dentro de este trabajo de tesis se permite especificar la tarea, en cualquiera de las siguientes formas:

• La primera forma consiste en especificar la tarea a realizar (inspección,

transformación o ensamblado de piezas), sobre la celda de trabajo, y el detallador de tareas generará una serie de instrucciones (lenguaje definido para especificar la tarea ver sección 4.2.2) que indican la secuencia de operaciones necesarias para la realización de la tarea.

• La segunda forma de especificar las tareas es haciendo uso del lenguaje definido para especificar la tarea (ver sección 4.2.2). Las instrucciones corresponden a funciones que puede realizar un elemento en particular. El detalle de estas tareas (instrucciones) consiste en indicar el elemento que realiza la tarea. En caso de que la instrucción sea GET o PUT, las cuales son realizadas por un robot, el detalle consiste en indicar cada uno de los puntos que este debe seguir para realizar la tarea.

El descomponer una tarea consiste en indicar las operaciones que deben

realizar cada uno de los elementos que intervienen en la realización de la tarea. Para saber si un elemento interviene en la tarea se verifican las relaciones establecidas en la celda de trabajo.

Para ver el detalle (descomposición) de las tareas vea los casos de prueba, en el capítulo 6.

Page 78: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

6. Casos de prueba

Capítulo 6 Casos de prueba

En este capítulo se presenta la realización de pruebas del detallador de tareas, con el objetivo de validar su funcionamiento; serán presentados tres casos de prueba. Se comenzará con la descripción de cada caso de prueba, seguido de los resultados obtenidos y por último se realiza el análisis de los resultados. 6.1 Plan de pruebas

El plan de pruebas consta de 3 casos, los cuales son explicados a continuación: Caso A: Dentro de este trabajo de tesis, fue resuelto el problema cinemático directo5 para los robots industriales. El objetivo de esta prueba es validar que efectivamente este problema es resuelto satisfactoriamente. Como ya se ha comentado, la solución del problema cinemático directo da como resultado la posición y orientación del efector final.

Para realizar dicha validación, se usó una biblioteca para Matlab denominada: Robotics ToolBox [CORK02]. Esta biblioteca proporciona muchas funciones que son útiles en robótica, incluye cinemática, dinámica y generación de trayectorias. Esta biblioteca es utilizada para simulación, así como análisis de resultados de experimentos con robots. En este caso de prueba serán comparados los resultados obtenidos por el detallador de tareas y los que genera la biblioteca de Matlab. Dichas herramientas reciben como entrada los parámetros D-H de un robot tipo Scara, estos datos son mostrados en la Tabla 6.1:

5 Aunque no estaba contemplado en los alcances, se implementó la solución del problema cinemático directo para poder realizar la experimentación del detallador de tareas.

Page 79: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

6. Casos de prueba

Juan Gabriel López Solórzano 69

Tabla 6.1 Parámetros D-H de un robot Scara de 4 grados de libertad.

Link θθi di ai ααI 1 360° 0 40 cms. 0 2 360° 0 40 cms. 180° 3 0 40 cms. 0 0 4 360° 40 cms. 0 0

Para comprobar que ambas herramientas dan el mismo resultado, se realizó el

cálculo de la posición y orientación del robot Scara. La posición y orientación del robot se obtiene a partir de los valores de sus articulaciones (configuración que adopta el robot).

Para este caso de prueba se comienza cuando todas las articulaciones tienen el valor de cero (0,0,0,0), posteriormente se modifica en incrementos de 1° a cada una de las articulaciones (en orden secuencial) hasta llegar a los valores que se indican a continuación: la primer articulación 200°, la segunda 90°, la tercera 20° y por último la articulación cuatro 90°. Esto se traduce en 400 configuraciones (ya que se modifican en incrementos de a un grado por estado y en forma seriada; esto es, se modifica una articulación a la vez desde cero hasta llegar al valor indicado y el proceso se repite para la siguiente articulación, hasta procesar las cuatro articulaciones) diferentes que adopta el robot, las cuales son:

Para cada una de estas configuraciones del robot, se calculó la posición y orientación del efector final del robot Scara (ver Figura 6.13).

[0,0,0,0] . . .

[200,0,0,0] . . .

[200,90,0,0] . . .

[200,90,20,0] . . .

[200,90,20,90]

Page 80: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

6. Casos de prueba

Los resultados obtenidos de esta prueba son descritos en la sección 6.2. A continuación se explicará el siguiente caso de prueba B. Caso B: Este segundo caso de prueba, tiene como objetivo principal presentar el proceso del detallado de una tarea realizada sobre una celda de trabajo en específico. A continuación se presentan los diferentes elementos que forman la celda de trabajo:

• Robots Scorbot. Este robot tiene 5 grados de libertad, y sus parámetros D-H son los que se muestran en la Tabla 6.2. En esta celda de trabajo se utilizan tres robots Scorbot cuyos nombres son: “Scorbot1”, “Scorbot2” y “Scorbot3”. La representación en 3D (modelo sólido y alambre) de un robot Scorbot se muestra en la Figura 6.1.

Tabla 6.2 Parámetros D-H de los robots Scorbot de 5 grados de libertad.

Link θθI di ai ααi 1 310° 36.4 cms. 0 90° 2 ±130° 0 22 cms. 180° 3 ±130° 0 22 cms. 0 4 ±130° 0 0 90° 5 570 0 0 0

Figura 6.1 Representación en 3D (modelo sólido y de alambre) de un robot Scorbot, realizado con el detallador de tareas.

Page 81: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

6. Casos de prueba

Juan Gabriel López Solórzano 71

• Mesas de trabajo. Dentro de esta celda se utilizarán 3 mesas de trabajo. Una es utilizada para contener las piezas de trabajo que fueron rechazadas por un proceso de inspección (“MesaPzaR”). La otra mesa (“Mesa”) es utilizada como soporte para el sistema de visión y la tercera es una mesa para ensamble (MesaEnsamble). Estos tres elementos tienen las siguientes dimensiones: 65 cms. de alto, 60 cms. de ancho y 60 de largo. Ver Figura 6.2.

Figura 6.2 Representación gráfica de una mesa de trabajo a través del detallador de tareas.

• Alimentador. En esta celda se utilizó un solo alimentador, el cual es

denominado “Feeder1”. Sus medidas son 20 cms de alto, 40 cms largo y 20 cms ancho. Este alimentador almacena las piezas “PiezaA”, y tiene la capacidad para almacenar 5 piezas (ver Figura 6.3).

Figura 6.3 Representación gráfica de un alimentador ("Feeder1").

Page 82: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

6. Casos de prueba

• Banda transportadora. La banda transportadora es denominada “Banda1” y contiene tres estaciones de trabajo. Sus medidas son 20 cms. ancho, 200 cms de largo (ver Figura 6.4).

Figura 6.4 Vista lateral de la Banda Transportadora ("Banda1").

• Sistema de visión. El último elemento que es utilizado es el sistema de visión,

el cual es denominado “Vision1”. Las dimensiones de la cámara son: 10 cms alto, 10 cms ancho y 15 cms largo. La representación en 3D se muestra en la Figura 6.5.

Figura 6.5 Representación gráfica de un sistema de visión a través del detallador de tareas.

Page 83: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

6. Casos de prueba

Juan Gabriel López Solórzano 73

En la Figura 6.6 y Figura 6.7, se muestra la vista superior y la vista lateral de la estructura de la celda, respectivamente.

Figura 6.6 Vista superior de la celda de trabajo el la cuál será definida una tarea que será detallada.

Figura 6.7 Vista lateral de la celda de trabajo creada en el detallador de tareas.

Page 84: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

6. Casos de prueba

A continuación se muestran las relaciones que existen entre los elementos: El robot Scorbot1 está relacionado con el Feeder1, Banda1 estación 2. El robot Scorbot2 está relacionado con MesaPzaR, Vision1 y con Banda1 estación 1. El robot Scorbot3 está relacionado con MesaEnsamble y con Banda estación 3. Estas relaciones se observan mejor en la Tabla 6.3.

Tabla 6.3 Matriz que indica las relaciones existentes entre los elementos que forman la celda de trabajo.

MesaEnsamble MesaPzaR Vision1 Banda1 Feeder1 Scorbot1 √ √ Scorbot2 √ √ √ Scorbot3 √ √

Caso C: El objetivo de este caso de prueba es presentar el proceso del detallado de una tarea, esta tarea será la misma que el caso B, para comprobar que la herramienta realiza el detalle de la tarea, aunque la celda tenga una estructura diferente. A continuación se presentan los diferentes elementos que forman la celda de trabajo:

• Robots Cilíndricos. Este robot tiene 4 grados de libertad, sus parámetros D-H son los que se muestran en la Tabla 6.4. En esta celda de trabajo se utilizan tres robots Cilíndricos cuyos nombres son: “Cilíndrico1”, “Cilíndrico2” y “Cilíndrico3”. La representación en 3D (modelo sólido y alambre) de un robot Cilíndrico se muestra en la Figura 6.8.

Tabla 6.4 Parámetros D-H de un robot cilíndrico de 4 grados de libertad.

Link θθI di ai ααi 1 360° 40 cms. 0 0 2 90 30 cms. 0 90° 3 0 30 cms. 0 0 4 360° 5 cms. 0 0

Figura 6.8 Representación gráfica de un robot cilíndrico (Modelo sólido y alambre).

Page 85: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

6. Casos de prueba

Juan Gabriel López Solórzano 75

• Banda transportadora. La banda transportadora es denominada “Banda1” y contiene tres estaciones de trabajo. Esta formada por 3 segmentos de 20 cms. de ancho, 200 cms de largo (ver Figura 6.9).

Figura 6.9 Vista superior de la Banda Transportadora ("Banda1").

• El sistema de visión (Vision1), el alimentador (Feeder1) y las mesas de trabajo

(Mesa, MesaPzaR, MesaEnsamble). Son de las mismas características que el caso B.

En la Figura 6.10 y Figura 6.11, se muestra la vista superior y la vista lateral de

la estructura de la celda, respectivamente.

Page 86: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

6. Casos de prueba

Figura 6.10 Vista superior de la celda de trabajo para el caso de prueba C.

Figura 6.11 Vista lateral de la estructura de la celda de trabajo, caso C.

Page 87: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

6. Casos de prueba

Juan Gabriel López Solórzano 77

A continuación se muestra las relaciones que existen entre los elementos: El robot Cilíndrico1 está relacionado con el Feeder1, Banda1 estación 1. El robot Cilíndrico2 está relacionado con MesaPzaR, Vision1 y con Banda1 estación 2. El robot Cilíndrico3 está relacionado con MesaEnsamble y con Banda estación 3. Estas relaciones se observan mejor en la Tabla 6.5.

Tabla 6.5 Matriz que presenta las relaciones entre los elementos que forman la celda de trabajo.

MesaEnsamble MesaPzaR Vision1 Banda1 Feeder1 Cilíndrico1 √ √ Cilíndrico2 √ √ √ Cilíndrico3 √ √

6.2 Resultados

A continuación se presentan los resultados que se obtuvieron en cada uno de los casos de prueba. Caso A: Para este primer caso de prueba, fueron comparados los resultados obtenidos por el Robotics ToolBox y el detallador de tareas. La Figura 6.12 muestra la posición del efector final del robot Scara, dependiendo de las diferentes configuraciones de sus articulaciones.

En esta figura únicamente se representa la posición, para una mejor comprensión de los resultados, y se puede observar que las dos herramientas generan los mismos resultados. La Figura 6.13 muestra de una manera más clara que existe una correspondencia entre cada punto generado por las herramientas (Robotics ToolBox y Detallador de tareas).

A continuación se muestran los resultados obtenidos en el cálculo de la orientación del efector final.

Page 88: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

6. Casos de prueba

Figura 6.12 Gráfica que muestra los valores de la posición del efector final del robot Scara generados por el detallador de tareas y el Robotics ToolBox.

Figura 6.13 Acercamiento de la Figura 6.12, para comparar los resultados generados por las dos herramientas.

Page 89: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

6. Casos de prueba

Juan Gabriel López Solórzano 79

Tomando en cuenta la orientación (Roll, Pitch, Yaw), la biblioteca Robotics ToolBox generó los resultados que se muestran en la Figura 6.14 a); y la Figura 6.14 b) es generada por el detallador de tareas. En esta figura se ve claramente que las herramientas generan los mismos resultados.

Figura 6.14 Valores de la orientación del efector final obtenidos con las herramientas indicadas.

Caso B: Dentro de este caso de prueba se definirá la tarea de Inspeccionar la PiezaA , bajo un cierto criterio de calidad (CriterioVision1) que es realizado por el sistema de visión Visión1, si la pieza pasa el proceso de inspección se debe colocar en la mesa de ensamble (Mesaensamble), en caso contrario llevarla a la mesa de piezas rechazadas (MesaPzaR). Esta tarea es especificada dentro de la interfaz para las celdas de trabajo (FormWorkcell), como lo muestra en la Figura 6.15:

Figura 6.15 Interfaz utilizada para la especificación de una tarea de inspección.

a) Robotics ToolBox. b) Detallador de tareas.

Page 90: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

6. Casos de prueba

La tarea definida anteriormente es detallada por la herramienta, en una serie de instrucciones, que indican el recorrido que la PiezaA debe seguir sobre la celda de trabajo, para que ésta pueda ser inspeccionada.

Estas instrucciones son tomar la PiezaA del Feeder1, para después colocarla en la Banda1 estación 2, y que sea trasladada a la estación 1 de la banda (estación en la que se encuentra el sistema de visión Vision1), donde será inspeccionada la pieza, si la pieza es rechazada, se colocará en la mesa de piezas rechazadas (MesaPzaR), en caso contrario, será enviada a la estación 3 para que sea colocada en la mesa de ensamble (MesaEnsamble). Traduciendo lo anterior, en instrucciones del lenguaje definido en esta tesis, el detalle generado por la herramienta es el siguiente:

En la Figura 6.16 se indica la sección de la interfaz donde se genera el detalle de

las tareas, en esta figura también se puede ver la estructura de la celda de trabajo.

PROGRAM DEMO; BEGIN GET(Feeder1,PiezaA); PUT(Banda1[2]); MOVE(Banda1,1); GET(Banda1[1],PiezaA); PUT(Vision1); IF(INSPECTION(CriterioVision1,PiezaA)) { GET(Vision1,PiezaA); PUT(Banda1[2]); MOVE(Banda1,3); GET(Banda1[3],PiezaA); PUT(MesaEnsamble); } ELSE { GET(Vision1,PiezaA); PUT(MesaPzaR); } END.

Page 91: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

6. Casos de prueba

Juan Gabriel López Solórzano 81

Figura 6.16 Estructura de la celda y detalle de la tarea (inspección).

Page 92: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

6. Casos de prueba

Una vez detallada la tarea a este nivel, se prosigue con el detalle a un nivel más específico (descomposición). El cual se muestra a continuación:

El detalle de la tarea que genera la herramienta es el siguiente:

/* Get */ Robot: Scorbot3 Mover: p1sc3f Mover: p2sc3f Gripper: Cerrar /* Put */ Robot: Scorbot3 Mover: p1sc3be1 Mover: p2sc3be1 Gripper: Abrir /* Move */ Banda: Banda1 Mover a la Estación: 1 /* Get */ Robot: ScorBot2 Mover: p1sc2be2 Mover: p2sc2be2 Gripper: Cerrar /* Put */ Robot:ScorBot2 Mover: p1sc2v Mover: p2sc2v Gripper: Abrir /* Bloque Pieza Rechazada */ //Get Robot:ScorBot2 Mover: p1sc2v Mover: p2sc2v Gripper: Cerrar /* Put */ Robot:ScorBot2 Mover: p1sc2mr Mover: p2sc2mr Gripper: Abrir /* Bloque Pieza Rechazada */

Page 93: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

6. Casos de prueba

Juan Gabriel López Solórzano 83

Caso C: Dentro de este caso de prueba se definirá la misma tarea del Caso B, la cual es inspeccionar la PiezaA bajo el criterio CriterioVision1 realizado por el sistema de visión Vision1, trasladando esta pieza hacia la mesa de ensamble (MesaEnsamble) en caso de que cumpla con la inspección, en caso contrario será enviada a la mesa de rechazos (MesaPzaR). Con este caso se podrá observar que el detallador de tareas es el encargado de indicar el flujo de la pieza sobre la celda sin importar que esta tenga una distribución diferente.

La secuencia generada por el detallador de tareas es: tomar la PiezaA del Feeder1, después colocarla en la Banda1 estación 1, para que sea trasladada a la estación 2 de la banda (estación donde se encuentra el sistema de visión Vision1), para que sea inspeccionada la pieza, si la pieza es rechazada, es colocada en la mesa de piezas rechazadas (MesaPzaR), en caso contrario, es enviada a la estación 3 para que sea colocada en la mesa de ensamble (MesaEnsamble).

A continuación se muestra lo que genera la herramienta:

PROGRAM DEMO; BEGIN GET(Feeder1,PiezaA); PUT(Banda1[1]); MOVE(Banda1,2); GET(Banda1[2],PiezaA); PUT(Vision1); IF(INSPECTION(CriterioVision1,PiezaA)) { GET(Vision1,PiezaA); PUT(Banda1[2]); MOVE(Banda1,3); GET(Banda1[3],PiezaA); PUT(MesaEnsamble); } ELSE { GET(Vision1,PiezaA); PUT(MesaPzaR); } END.

Page 94: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

6. Casos de prueba

Una vez detallada la tarea, se prosigue al detalle (descomposición) de estas

tareas a un nivel de detalle más específico.

El detalle de las tareas que genera la herramienta es el siguiente:

/* Get */ Robot: Cilindrico1 Mover: p1c1f Mover: p2c1f Gripper: Cerrar /* Put */ Robot: Cilindrico1 Mover: p1c1b1 Mover: p2c1b1 Gripper: Abrir /* Move */ Banda: Banda1 Mover a la Estación: 2 /* Get */ Robot: Cilindrico2 Mover: p1c2b2 Mover: p2c2b2 Gripper: Cerrar /* Put */ Robot:Cilindrico2 Mover: p1c2v Mover: p2c2v Gripper: Abrir /* Bloque Pieza Rechazada */ //Get Robot:Cilindrico2 Mover: p1c2v Mover: p2c2v Gripper: Cerrar /* Put */ Robot:Cilindrico2 Mover: p1c2mr Mover: p2c2mr Gripper: Abrir /* Bloque Pieza Rechazada */

Page 95: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

6. Casos de prueba

Juan Gabriel López Solórzano 85

6.3 Análisis de resultados

El caso de prueba A, como se mostró anteriormente en la sección 6.1, se realizó con el objetivo de validar la solución del problema cinemático directo de los robots industriales. Los resultados obtenidos tanto por el detallador de tareas y la biblioteca para Matlab son los mismos. Esto se traduce en que el problema cinemático directo fue resuelto correctamente dentro de este trabajo de tesis.

Los casos de prueba B y C, se plantearon con el objetivo de presentar el

detallado de las tareas. Además en cada uno de estos casos de prueba se comprobó que se puede definir la misma tarea en diferentes estructuras de celdas de trabajo y la herramienta realiza el detallado de la misma. Con el detallado de las tareas en ambos casos, se puede observar que se cumple el objetivo del presente trabajo de tesis (ver sección 1.4.1), ya que el detallador de tareas permite la especificación de tareas, las cuales son desglosadas (detalladas), en instrucciones simples realizadas por los elementos que forman la celda de trabajo.

Page 96: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

7. Conclusiones

Capítulo 7

Conclusiones

En este capítulo se presentan las conclusiones obtenidas del presente trabajo, los trabajos futuros propuestos se presentan en la última sección de este capítulo. 7.1 Conclusiones

Como ya se a mencionado anteriormente, el detallador de tareas de visión robótica está formado de tres módulos principales:

• La interfaz de los elementos. Son una serie de pantallas (formularios) que son

utilizados para actualizar la información existente de los elementos (robots, bandas, etc.), además permiten agregar nuevos elementos. Es importante mencionar que para la realización de este módulo se tuvo que realizar una análisis de cada uno de los elementos más comunes que pueden formar una celda de trabajo.

• La representación gráfica. Esto módulo fue implementado con el objetivo de poder generar la estructura deseada de la celda de trabajo, a través de un espacio 3D, que permite representar gráficamente cada uno de los elementos que lo componen, así también para simular la cinemática de los robots.

• El lenguaje para especificar las tareas. Este módulo tiene como objetivo, permitir la especificación de las tareas que serán detalladas, a través de una serie de sentencias o comandos (ver sección 4.2.2)

Page 97: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

7. Conclusiones

Juan Gabriel López Solórzano 87

A continuación se presentan los logros alcanzados, en cada uno de estos módulos:

• La interfaz de los elementos.

o Se realizó un análisis más detallado de los robots industriales, puesto que es el elemento principal dentro de la celda de trabajo, logrando modelar la cinemática directa, a través del método de Denavit-Hartenberg [BARR97].

o Se puede especificar a través de los parámetros D-H cualquier tipo de robot industrial, haciendo la herramienta más general y así poder experimentar con diferentes tipos de robots.

o Respecto a los elementos restantes (bandas, máquinas herramienta CNC, etc.), no fueron analizados en su totalidad, ya que cada elemento por sí solo requiere mucho tiempo de investigación. Además que la realización de un análisis más a fondo de estos elementos quedan fuera del alcance de esta tesis.

• La representación gráfica. o Uno de los objetivos alcanzados con este módulo es la representación de

la estructura de la celda de trabajo, sobre un espacio 3D, con la posibilidad de tener diferentes perspectivas de la misma, permitiendo al diseñador de una celda de trabajo poder generar diferentes estructuras con los elementos disponibles.

o Otro de los logros alcanzados es la simulación de la cinemática del robot, permitiendo manipular cada una de sus articulaciones, reflejándose los movimientos en el espacio 3D, indicando la posición y orientación del efector final. La simulación de la cinemática directa puede ser utilizada en cursos de robótica, para analizar el movimiento de los robots industriales.

o La representación gráfica de los elementos es realizada de manera sencilla utilizando cubos y esferas para formar la estructura de cada elemento. En esta herramienta no se realiza a gran detalle la representación de los elementos.

• El lenguaje para especificar las tareas. o El lenguaje fue implementado usando la herramienta ANTLR. Este

lenguaje puede ser tomando como base, para generar un lenguaje más completo.

En términos generales, a través de la herramienta que en esta tesis se desarrolló

y las pruebas realizadas sobre esta, se puede concluir que a pesar de haber sido un trabajo laborioso (debido a que se tuvo que investigar sobre diferentes áreas tales como robótica, gráficos en 3D y teoría de compiladores, cada una de estas áreas es compleja por si misma) se obtuvo lo siguiente:

• Se logró cumplir con el objetivo de este trabajo de tesis, el cual era crear un detallador de tareas.

• Se implementó el problema cinemático directo para los robots industriales, el cual no estaba contemplado en los alcances de esta tesis, pero fue necesario desarrollarlo para realizar la experimentación del detallador de tareas. El método utilizado para resolver este problema es el propuesto por Denavit y Hartenberg en 1955 [BARR97], el cual es utilizado ampliamente y se considera como un

Page 98: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

7. Conclusiones

estándar en robótica. Otra de las ventajas que representa este método es que puede modelar la cinemática de cualquier robot.

• De la prueba experimental Caso A los resultados fueron correctos, y se pudo comprobar a través de una biblioteca Robotics ToolBox para Matlab, siendo Matlab una herramienta que tiene aplicación en varios campos de investigación.

• Se implementó un lenguaje formal, que es usado para especificar las tareas.

A través de este trabajo se ha dado un primer paso para generar un ambiente de programación a nivel tarea, que sería de gran utilidad para programar procesos o tareas de una forma más fácil y en el menor tiempo.

Actualmente otros alumnos de maestría están trabajando sobre algunos puntos

de este trabajo de tesis, con la finalidad de ir complementando este trabajo de tesis y poder generar un producto más completo.

Cabe mencionar que algunas herramientas utilizadas para el desarrollo de la

presente tesis (ANTLR, OpenGL, Robotics ToolBox) están siendo utilizados en otros trabajos de tesis. Todo esto debido a los buenos resultados obtenidos al hacer uso de dichas herramientas en este trabajo.

Es importante mencionar que estas herramientas son utilizadas por primera vez en el grupo de visión artificial, por lo que no existen trabajos previos que hagan uso de ellas. Por lo que fue necesario investigar su funcionamiento y aplicación.

Page 99: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

7. Conclusiones

Juan Gabriel López Solórzano 89

7.2 Trabajos futuros

A continuación se mencionan los trabajos futuros para complementar el presente

trabajo de tesis. • Mejorar el detallador de tareas, simulando algunos otros elementos como pueden

ser la banda transportadora o la máquina herramienta CNC. • Estudiar otros métodos con los que se pudiera resolver el problema cinemático

directo de los robots. Esto con el objetivo de que se pueda implantar en un simulador de robots en tiempo real.

• Resolver el problema cinemático inverso. Así como contemplar la dinámica del robot.

• Simular para el robot industrial los distintos tipos de movimientos (lineal, circular, de articulación).

• En el presente trabajo se representó cada elemento en un espacio tridimensional, pero de una manera estructural, sin detalles en cuanto a la forma del elemento. Por lo que sería necesario una herramienta que permita generar modelos CAD (diseño asistido por computadora) de dichos elementos (bandas, efectores finales, piezas, etc.). Para que pueda ser utilizado para generar un ambiente de simulación más real.

• Definir un lenguaje más completo para programar un proceso, y que este lenguaje permita la especificación de nuevos elementos.

• Optimización, paralelismo-concurrencia de procesos, planificación de tareas, simulación de las tareas o procesos (calculo de tiempos, insumos, etc.), deben ser contemplados.

Page 100: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

Referencias

8 Referencias

[AHO98] Aho A.V., Sethi R., Ullman J.D. Compiladores Principios, técnicas y herramientas. Addison Wesley LongMan 1998.

[BAAR95] Baartman, J.P. Automation of assembly operations on parts. ISBN 90-370-0119-X. http://www.wbmt.tudelft.nl/pto/research/publications/Dissertation_Baartman/dissert.bk.html

[BARR97] Barrientos A., Peñin L.F., Balaguer C., Aracil R. Fund amentos de Robó tica. McGraw-Hill Publishing Company, 1997.

[BRAD82] Brady M., Hollerbach J.M., Johnson L.T., Perez T., Mason M.T. Robo t Motion. The MIT Press Cambridge, Massachusetts and London, England,1982.

[BRIN94] Brink K., Olsson M., Bolmsjo. Task oriented robo t programming. Robotics Group, Dept. of Production and Materials Engineering, Lund University, Lund, Sweden, in Proceedings of the Scandinavian Symposium on Robotics, pages 103-109, Robotics Society in Finland, Octuber 1994.

[COIF83] Coiffet P. Robo t Techno logy Modeling and control. Prentice-Hall Inc, 1983.

[CORK02] Corke P. I. Robo tics TOOLBOX for MATLAB (Release 7). Manufacturing Science and Technology Pinjarra Hills, AUSTRALIA. 2002. http://www.cat.csiro.au/cmst/staff/pic/robot

[ESHE99] Eshed Robotec. Open-CIM Computer Integrated Manufacturing for Indu strial Training Applications Software Version 1.52 User’s Manual.

[FU94] Fu K.S., González R.C., Lee G. C.S. Robó tica: Control, detecc ión, visión e inteligencia. McGraw-Hill 1994.

[GROO87] Groover M.P. Automation, Production Systems and Computer Integrated Manufacturing. Pearson Higher Education, 1987.

[GROO95] Groover M.P., Weiss M., Nagel R.N., Odrey N.G. Indu strial Robo tics Techno logy, Programming and applications. McGraw-Hill Publishing Company, 1986.

Page 101: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

Referencias

Juan Gabriel López Solórzano 91

[HOLL01] Hollingworth J., Butterfield D., Swart B., AllSop J. C++BuilderTM

Developer´s Guide. Copyright © 2001 by Sams Publishing.

[KELL95] Kelley D. Teoría de Autómatas y Lengu ajes Formales. Prentice Hall-Simon & Schuster International Group. 1995.

[KIM97] Kim Y., Jo J., Velasco V., Barendt N. A Flexible Software Architecture for Agile Manufacturing. Departament of Computer Engineering & Science and Department of electrical Engineering & Applied Physics. Center for Automation and Intelligent Systems Reseach (CAISR). Case Western Reserve University. Cleveland, Ohio 44106. 1997 IEEE International Conference on Robotics and Automation.

[MEYN00] Meynard J.P. Control of indu strial robo ts through h igh-level task programming. Thesis. Institute of technology Linkopings University, Sweden ,2000.http://citeseer.nj.nec.com/426018.html

[MILL91] Miller D. J. y Lennox R. C. An ob ject-oriented environment for robo t system architectures, Sandia National Laboratories. IEEE Contr. Syst., vol. 112, pp. 14--23, Feb. 1991.

[NIKO93] Nikoleris G., Brink K., Olsson M., Bolmsjo G. Simpli fied programming o f robo ts -SPORT. Robotics Group, Dept. of Production and Materials Engineering, Lund University, Lund, Sweden, in Proceedings of Robotikdagar, paper B2,2-3 june 1993. Linkopings, Sweden.

[PARR89] Parr T. ANTLR (ANother Tool for Langu age Recogn ition), 1989. Home page: http://www.antlr.org

[PLAK03] Plakosh D. OpenGL Compon ent for C++ Builder 5.0. http://www.cobweb.net/~dplakosh/

[SPON89] Spong M.W., Vidyasagar M. Robo t Dynamics and Control. John Wiley & Sons. Inc., 1989.

[SUN00] Sun Microsystems. The Java 3DTM API Specification. Version 1.2, April 2000.http://java.sun.com/products/java- media/3D/forDevelopers/J3D_1_2_API/j3dguide/index.html

[WOO97] Woo M., Neider J., Davis T. OpenGl Programming Guide: The Off icial Guide to Learning Opengl, Version 1.1. Addison-Wesley Pub Co; 2nd edition (January 1997)

[WRIG96] Wright Jr. R. S., Sweet M. R. OpenGL SuperBible, Second Edition. Macmillan Computer Publishing. 1996.

Page 102: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

Anexos

9 Anexos

A. Gramática de entrada para ANTLR Archivo Lexer.g options { mangleLiteralPrefix = "TK_"; language="Cpp"; } class LexerTesis extends Lexer; options { k=2; exportVocab=LexerTesis; charVocabulary = '\3' ..'\377' ; defaultErrorHandler =false; } tokens { "CALL";"VAR";"REPEAT";"INT"; "IF"; "ELSE"; "PROGRAM"; "PROC";"BEGIN";"END";"GET";"PUT”;"MOVE";"PROCESS";"INSPECTION"; } WS_ : (' ' | '\t' | '\n' {newline();} | '\r' ) { _ttype = antlr::Token::SKIP; } ; SL_COMMENT : "//" (~'\n' )* '\n' { _ttype = antlr::Token::SKIP; newline(); } ; ML_COMMENT : "/*" ( { LA(2)!=' /' }? ' *' | '\n' { newline(); } | ~(' *' |'\n' ) )*

Page 103: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

Anexos

Juan Gabriel López Solórzano 93

"*/" { $setType(antlr::Token::SKIP); } ; LPAREN options { paraphrase="' (' "; } : ' (' ; RPAREN options { paraphrase="' )' "; } : ' )' ; LCURLY: ' {' ; RCURLY: ' }' ; CI: ' [' ; CD: ' ]' ; ASSIGN : ' =' ; SEMI: ' ;' ; COMMA : ' ,' ; CHAR_LITERAL : '\'' (ESC|~'\'' ) '\'' ; STRING_LITERAL : ' "' (ESC|~' "' )* ' "' ; MEN : ' <'

Page 104: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

Anexos

; MENI : ' <' ' =' ; MAY : ' >' ; MAYI : ' >' ' =' ; IGUAL : ' =' ' =' ; protected ESC : '\\' ( ' n' | ' r' | ' t' | ' b' | ' f' | ' "' | '\'' | '\\' | ' 0' ..' 3' ( options { warnWhenFollowAmbig = false; } : DIGIT ( options { warnWhenFollowAmbig = false; } : DIGIT )? )? | ' 4' ..' 7' ( options { warnWhenFollowAmbig = false; } : DIGIT )? ) ; protected DIGIT : ' 0' ..' 9' ;

Page 105: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

Anexos

Juan Gabriel López Solórzano 95

INT : (DIGIT)+ ; ID options { testLiterals = true; paraphrase = "an identifier"; } : (' a' ..' z' |' A' ..' Z' |' _' ) (' a' ..' z' |' A' ..' Z' |' _' |' 0' ..' 9' )* ; Archivo Parser.g header { #include "WorkCell.h" } options { mangleLiteralPrefix = "TK_"; language="Cpp"; } class ParserTesis extends Parser; options { k =2; importVocab= LexerTesis; //importar el vocabulario defaultErrorHandler=false; } program : cabecera ( procedimientos )* bloqueprincipal EOF ; cabecera: prog:TK_PROGRAM id:ID sem:SEMI (declaracionvariablesglobales)? ; declaracionvariablesglobales : tvar:TK_VAR Cad = var:variable ; declaracionvariableslocales : tvarl:TK_VAR Cad = varl:variable declarador returns[AnsiString Cadena] {Cadena = "";} : id:ID {Cadena = id->getText().c_str();} ; variable returns[AnsiString Aux] {AnsiString Temp;} : tipo Temp = declarador sem:SEMI {Aux = Temp;} ;

Page 106: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

Anexos

procedimientos : tproc:TK_PROC id:ID (declaracionvariableslocales)? bloqueproc tipo: ( t_in:TK_int ) ; bloqueprincipal : t_ini:TK_BEGIN ( sentencia )* t_fi:TK_END ; bloqueproc : t_lc:LCURLY ( sentencia )* t_rc:RCURLY ; bloquerepetir : t_lc:LCURLY ( sentencia )* t_rc:RCURLY ; bloqueif : t_lc:LCURLY ( sentencia )* t_rc:RCURLY ; bloqueelse : t_lc:LCURLY ( sentencia )* t_rc:RCURLY ; sentencia :rep_e:TK_REPEAT LPAREN id:ID RPAREN bloquerepetir | TK_MOVE LPAREN banda:ID COMMA estacion:INT RPAREN SEMI | TK_GET LPAREN origen:ID (indicesget)? COMMA NomPieza:ID RPAREN SEMI TK_PUT LPAREN destino:ID (indicesput)? RPAREN SEMI | TK_CALL proc:ID SEMI | TK_PROCESS LPAREN maquina:ID COMMA proceso:ID RPAREN SEMI | i = asignacion | sentenciacondicional indicesget : CI col:INT CD (CI ren:INT CD)? ; indicesput : CI col:INT CD (CI ren:INT CD)? ;

Page 107: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

Anexos

Juan Gabriel López Solórzano 97

asignacion returns [int Num] : id:ID ASSIGN num:INT SEMI ; sentenciacondicional : e_if:TK_IF LPAREN expresion RPAREN bloqueif ( // Ambiguedad if-else estandard options{warnWhenFollowAmbig = false; }: e_else:TK_ELSE (bloqueelse)? ; expresion : TK_INSPECTION LPAREN Criteriovision:ID COMMA pieza:ID RPAREN | relacional ; relacional : Operando1 = operando OperadorRelacional = oprelacional Operando2 = operando ; oprelacional returns[AnsiString Temp] : men:MEN {Temp = men->getText().c_str(); } | meni:MENI {Temp = meni->getText().c_str();} | may:MAY {Temp = may->getText().c_str();} | mayi:MAYI {Temp = mayi->getText().c_str();} | igual:IGUAL {Temp = igual->getText().c_str();} ; operando returns [AnsiString Temp]: entero:INT | iden:ID ;

Page 108: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

Anexos

B. OpenGL OpenGL es una interfaz de aproximadamente 120 comandos, los cuales se usan para especificar los objetos y las operaciones necesarias para producir aplicaciones interactivas en tres dimensiones.

Este anexo tiene como objetivo principal, presentar los comandos disponibles para dibujar primitivas (objetos geométricos), a partir de los cuales se pueden formar objetos más complejos.

OpenGL proporciona comandos para crear puntos, líneas y polígonos (primitivas). Estas primitivas se definen por medio de un conjunto ordenado de vértices.

El comando utilizado para definir un vértice es el siguiente:

void glVertex3f(coords);

Especifica un vértice para ser usando en la descripción de un objeto.

El comando glVertex3f debe ser utilizado entre los comandos glBegin() y glEnd().

void glBegin(GLenum mode);

Marca el comienzo de una lista de vértices que describe una primitiva geométrica. El tipo de primitiva es indicado por mode, el cual puede ser cualquiera de los valores mostrados en la tabla

Tabla 9.1 Nombre de las primitivas de OpenGL y su significado.

Valor Significado GL_POINTS Puntos individuales GL_LINES Pares de vértices interpretados como segmentos de líneas

individuales GL_POLYGON Polígono convexo GL_TRIANGLES Ternas de vértices interpretados como triángulos GL_QUADS Cuádruplas de vértices interpretados como polígonos de

cuatro lados GL_LINE_STRIP Series de segmentos de líneas conectados GL_LINE_LOOP Parecido al anterior, con la diferencia en que se añade un

segmento entre el primer y último segmento GL_TRIANGLE_STRIP Triángulos conectados GL_TRIANGLE_FAN Abanico de triángulos GL_QUAD_STRIP Cuadriláteros conectados

Para marcar el final de una lista de vértices se utiliza glEnd():

void glEnd(void);

Page 109: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

Anexos

Juan Gabriel López Solórzano 99

A continuación se presenta un bloque de código con el fin de poder apreciar la salida, con cada uno de las primitivas mostradas en la Tabla 9.1.

glBegin(<primitiva>);

glVertex3f(-10.0,0.0,10.0); //V1

glVertex3f(0.0,0.0,20.0); //V2

glVertex3f(10.0,0.0,10.0); //V3

glVertex3f(10.0,0.0,-10.0); //V4

glVertex3f(0.0,0.0,-20.0); //V5

glVertex3f(-10.0,0.0,-10.0); //V6

glEnd();

El código anterior define 6 vértices, y genera diferentes salidas dependiendo el parámetro <primitiva> (ver Figura 9.1).

Figura 9.1 Gráficos generados a partir de diferentes primitivas geométricas.

Page 110: DETALLADOR DE TAREAS - CENIDET Juan... · Centro Nacional de Investigación y Desarrollo Tecnológico cenidet DETALLADOR DE TAREAS DE VISIÓN ROBÓTICA TESIS Que para obtener el grado

Anexos

Para indicar el color que tendrán las primitivas, se usa el siguiente comando:

void glColor3f(GLfloat red, GLfloat green, GLfloat blue);

Para especificar un color se utiliza el modelo RGB (rojo-verde-azul). Por lo que se tiene que indicar a través de los parámetros red, green, blue, como una mezcla de colores, donde un valor de cero indica no usar el color. La cantidad de color a aplicar debe estar dentro del rango de cero a uno. Los puntos, líneas y polígonos son dibujados por omisión con un grosor de un píxel, OpenGL proporciona varios comandos para modificar la apariencia de estas primitivas.

void glPointSize(GLfloat size);

Establece el ancho en píxeles de los puntos dibujados; size debe se más grande que 0.0 y por omisión es 1.0.

void glLineWidth(GLfloat width);

Establece el ancho en píxeles de las líneas.; width debe ser mas grande que cero y por omisión es 1.0.

void glLineStipple(GLint factor, GLushort pattern);

Establece el patrón punteado para las líneas. El argumento pattern es una serie de 16-bits de 0´s y 1´s, y estos son repetidos como sea necesario sobre una línea dada. Se comienza con los bits de derecha a izquierda. El patrón puede ser expandido o alargado usando el parámetro factor. Para habilitar y deshabilitar el punteado de líneas se usa glEnable() y glDisable() respectivamente, con el parámetro GL_LINE_STIPPLE. Considere el siguiente bloque de código: glLineStipple(1, 0x3F07); glBegin(GL_LINES); glvertex3f(0.0,0.0,0.0); glvertex3f(20.0,0.0,0.0); glEnd();

El patrón 0X3F07 traducido a binario es 0011111100000111, por lo cual la línea será dibujada con 3 píxeles encendidos, 5 apagados, 6 encendidos y dos apagados. Si el factor fuera 2, el patrón de la línea seria 6 encendidos, 10 apagados, 12 encendidos y 4 apagados.