scieee AI-readable full text Open interactive document viewer

Simulador cinemático de un robot manipulador industrial

Román-Romero, M. Dolores

Abstract

Este trabajo fin de grado trata sobre la implementación de un simulador cinemático de un robot manipulador industrial, orientado al aprendizaje de los principios de programación y desarrollado mediante la herramienta de software matemático MATLAB, dicho simulador debe tener como características principales ser capaz de emular las características de programación que incorporan los lenguajes a nivel robot y resultar fácilmente accesible a los alumnos de las ingenierías. Asimismo, el simulador tendrá la capacidad de definir los objetos que integran el entorno físico que rodean al robot con el objeto de simular la interacción cinemática del brazo manipulador con dicho entorno. Para ello, primero se realizará un estudio de los lenguajes de nivel robot, en este caso concreto V+, con el objeto de elaborar un catálogo de funciones y estructuras relevantes, concretamente se trataran las estructuras de datos, funciones del robot, etc. A partir de estos, se elaborarán las especificaciones que debe cumplir el simulador cinemático. Por último se realizarán unas prácticas sobre el simulador orientadas al aprendizaje y elaboración de los manuales de usuario del mismo.

Full text

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA Grado en Ingeniería de Computadores SIMULADOR CINEMÁTICO DE UN ROBOT MANIPULADOR INDUSTRIAL KINEMATIC SIMULATOR OF AN INDUSTRIAL ROBOT ARM Realizado por M. Dolores Román Romero Tutorizado por D. Enrique Domínguez Merino Cotutorizado por D. Víctor F. Muñoz Martínez Departamento Lenguajes y Ciencias de la Computación UNIVERSIDAD DE MÁLAGA MÁLAGA, diciembre 2014 Simulador Cinemático de un Robot Manipulador Industrial  Página 5 RESUMEN Este trabajo fin de grado trata sobre la implementación de un simulador cinemático de un robot manipulador industrial, orientado al aprendizaje de los principios de programación y desarrollado mediante la herramienta de software matemático MATLAB, dicho simulador debe tener como características principales ser capaz de emular las características de programación que incorporan los lenguajes a nivel robot y resultar fácilmente accesible a los alumnos de las ingenierías. Asimismo, el simulador tendrá la capacidad de definir los objetos que integran el entorno físico que rodean al robot con el objeto de simular la interacción cinemática del brazo manipulador con dicho entorno. Para ello, primero se realizará un estudio de los lenguajes de nivel robot, en este caso concreto V+, con el objeto de elaborar un catálogo de funciones y estructuras relevantes, concretamente se trataran las estructuras de datos, funciones del robot, etc. A partir de estos, se elaborarán las especificaciones que debe cumplir el simulador cinemático. Por último se realizarán unas prácticas sobre el simulador orientadas al aprendizaje y elaboración de los manuales de usuario del mismo. Palabras clave: Robot industrial, robótica, simulador, brazo manipulador, MATLAB, cinemática, programación, V+ Simulador Cinemático de un Robot Manipulador Industrial  Página 6 ABSTRACT This work deals with the implementation of a kinematic simulation of an industrial robot manipulator, which is oriented to the learning programming principles and it is developed by the mathematical software tool MATLAB, this simulator must be capable to emulate the characteristics of programming languages that are incorporated at robot level and show kind access to students of engineering. Moreover, the simulator will have the ability to define the objects that make up the physical environment surrounding the robot in order to simulate the kinematic manipulator arm interaction with its environment. To that end, first a study level robot languages will be made, in this case V +, in order to develop a catalog of relevant functions and structures, that is the addressed data structures, the robot functions, etc. Thus, the specifications that must meet the kinematic simulator are developed. Finally, some practices will be made with the simulator oriented to the learning and development of user manuals. Palabras clave: Industrial robot, robotics, simulator, manipulator arm, MATLAB, kinematics, decoupling, , programming, V+ Simulador Cinemático de un Robot Manipulador Industrial  Página 7 1. INTRODUCCIÓN ................................................................................................... 9 1.1 Objetivo .......................................................................................................... 9 1.2 Contenido de la memoria .............................................................................. 10 2. FUNDAMENTOS DE LA ROBÓTICA ...................................................................... 13 2.1 Definición de robot ............................................................................................ 13 2.2 Clasificación de los robots ................................................................................. 15 2.3 Definición de Robótica ....................................................................................... 16 2.4 Componentes de un sistema robot .................................................................... 18 3. ROBOTS MANIPULADORES ................................................................................. 23 3.1 Estructura de los robots manipuladores............................................................. 24 3.2 Estructuras mecánicas ...................................................................................... 26 3.3 Parámetros característicos ................................................................................ 28 4. CINEMÁTICA DE UN ROBOT MANIPULADOR ..................................................... 29 4.1 Representación de la posición y la orientación .................................................. 31 4.2 Modelo cinemático directo ................................................................................. 32 4.3 Caracterización de los eslabones de un robot manipulador ............................... 32 4.4 Construcción del modelo directo........................................................................ 33 4.5 Modelo cinemático inverso ............................................................................... 34 4.6 Desacoplo cinemático ....................................................................................... 35 5. PROGRAMACIÓN .................................................................................................. 37 5.1 Programación por guiado .................................................................................. 38 5.1.1 Guiado pasivo ................................................................................................ 38 5.1.2 Guiado activo ................................................................................................. 39 5.2 Programación textual ......................................................................................... 41 6 SIMULACION CINEMÁTICA ................................................................................... 59 6.1 Sistema de simulación gráfica ........................................................................... 59 6.2 Funciones del simulador .................................................................................... 59 6.3 Posiciones del robot. ........................................................................................ 65 6.4 Configuración del robot y gestión de la pinza. .................................................. 66 6.5 Funciones de movimiento. ................................................................................ 66 6.6 Tratamiento de señales asíncronas .................................................................. 68 CONCLUSIONES ....................................................................................................... 73 Bibliografía .................................................................................................................. 75 ANEXOS ..................................................................................................................... 77 Simulador Cinemático de un Robot Manipulador Industrial  Página 8 PRÁCTICA 0 ........................................................................................................... 77 PRÁCTICA 1 ........................................................................................................... 81 PRÁCTICA 2 ........................................................................................................... 85 PRÁCTICA 3 ........................................................................................................... 89 PRUEBA DE PLANIFICACIÓN ............................................................................... 93 Simulador Cinemático de un Robot Manipulador Industrial  Página 9 1. INTRODUCCIÓN Los robots manipuladores se han hecho imprescindibles en nuestros días, son herramientas poderosas utilizadas con frecuencia en la industria, pero también podemos encontrarlos en otras áreas como por ejemplo la medicina. Se caracterizan por su capacidad para realizar tareas peligrosas para las personas, trabajos en lugares de difícil acceso, manipulación de objetos pesado o de gran tamaño, tareas que requieren precisión y repetitividad. Su diseño permite el posicionamiento de un efector final de una manera precisa y flexible. La flexibilidad de un brazo manipulador depende de los grados de libertad posea, cuantos más grados de libertad tenga un brazo manipulador, en más puntos en el espacio y con más orientaciones podrá posicionarse. Los principios e la programación de los robots industriales abarcan nuevos conceptos y metodologías que no son habituales en los lenguajes de programación convencionales como pueden ser el manejo de las entradas y salidas, la concurrencia, la recuperación de errores, los movimientos del robot y el modelado geométrico del entorno. Gracias al uso de simuladores el aprendizaje de estos conceptos se hace más sencillo al conseguir estos reproducir los movimientos como si de un robot industrial se tratara. A causa de lo anterior surge la idea de crear un simulador cinemático basado en trabajos previos desarrollados en este ámbito bajo la plataforma MATLAB. 1.1 Objetivo El objetivo principal de este trabajo es el desarrollo de un simulador de un robot industrial antropomórfico basado en MATLAB, y capaz de emular las características de programación que incorporan los lenguajes a nivel robot. Asimismo, esta plataforma tendrá la capacidad de definir los objetos que componen el entorno físico que rodea al robot con el propósito de simular la interacción cinemática del robot con los elementos de su entorno. Para ello se analizarán los lenguajes a nivel robot convencionales con el fin de elaborar un catálogo con las funciones y estructuras más importantes que los definen para después implementarles en el simulador Simulador Cinemático de un Robot Manipulador Industrial  Página 10 1.2 Contenido de la memoria La memoria de este trabajo fin de grado se estructura en vario capítulos, en el primero “FUNDAMENTOS DE LA ROBÓTICA” se hace una introducción al mundo de la Robótica, definiendo los conceptos robot y robótica, tipos de robot, así como una descripción detallada de los componentes de un sistema robot. En los siguientes capítulos se va resolviendo progresivamente el problema del control cinemático de los movimientos en el caso de los robots manipuladores industriales hasta llegar al desarrollo del simulador. En el capítulo “ROBOTS MANIPULADORES” se define el término robot industrial, profundizando en los sistemas robotizados, su estructura y elementos terminales, también se presentan las distintas estructuras de los robots manipuladores y sus parámetros característicos. A continuación encontramos el capítulo “CINEMÁTICA DE UN ROBOT MANIPULADOR”, donde se introduce el concepto de localización como herramienta para especificar tanto la posición y la orientación de los objetos que forman el entorno de trabajo del robot como las del elemento terminal de este último, también se definen los distintos modelos que resuelven el problema cinemático: cinemática directa, cinemática inversa y desacoplo cinemático, que simplifica El capítulo denominado “PROGRAMACIÓN”, describe las distintas técnicas de programación a nivel robot, sus ventajas y las características básicas que debe tener un lenguaje de programación a nivel robot para que se considere óptimo. Se trata la programación explícita de los robots manipuladores, detallando las características de este tipo de lenguajes desde las instrucciones de movimiento a la integración de sensores. Finalizando con los capítulos encontramos el denominado “SIMULACIÓN CINEMÁTICA” donde se implementa el simulador cinemático del brazo manipulador a partir de las funciones desarrolladas en MATLAB en el presente trabajo. Además de los capítulos descritos arriba, tenemos el apartado “ANEXOS” donde se incluyen cuatro prácticas comentadas que implementan distintas tareas del brazo manipulador así como, una simulación del mundo de bloques. Por último las “CONCLUSIONES” a las que se han llegado tras la redacción de la memoria y el desarrollo de este trabajo y las “REFERENCIAS BIBLIOGRÁFICAS” de las fuentes consultadas para la realización de este trabajo. Simulador Cinemático de un Robot Manipulador Industrial  Página 11 Plan de trabajo seguido para la elaboración de este trabajo fin de grado: 1. Estudio de los lenguajes de nivel robot convencionales con el objeto de crear un catálogo de funciones y estructuras más relevantes que los definen. En concreto se han analizado las estructuras de datos, funciones del robot, gestión de señales. Con todo ello, se ha elaborado las especificaciones que debe cumplir el simulador cinemático. 2. Selección del brazo robot para simular, construcción del modelo cinemático directo e inverso, para realizar el modelo geométrico tridimensional del brazo manipulador para su representación en MATLAB. 3. Diseño del editor usado para incorporar a la escena del robot los objetos con los que este debe interaccionar, en concreto se han definido cajas, cintas transportadoras y sensores. 4. Elaboración del bucle de simulación, donde se incorporan las funciones definidas en el punto 1. 5. Desarrollo de un conjunto de prácticas sobre el simulador orientado al aprendizaje y documentación de las mismas. Simulador Cinemático de un Robot Manipulador Industrial  Página 18 2.4 Componentes de un sistema robot Después de todo lo expuesto, llegamos a la conclusión de que un robot es una máquina compleja que se compone de dos partes fundamentales, una parte mecánica, encargada de actuar sobre el mundo real, y otra electrónica que constituye la inteligencia del mismo. Configuración básica de un sistema robot Teniendo en cuenta que un robot debe realizar determinadas tareas en un entorno concreto podemos hablar de un sistema robot-entorno definiéndolo como un conjunto de subsistemas, podemos clasificar estos subsistemas en: Subsistema de la tarea Es el encargado de elaborar la trayectoria que trazará el robot para realizar la tarea asignada a partir del programa del usuario. Proporciona la comunicación entre la persona y la máquina a través de un lenguaje, este debe estar diseñando para optimizar tanto la productividad de la programación como la ejecución de la tarea. El sistema de la tarea define la capacidad de planificación autónoma del sistema robot tanto para definir el nivel de comunicación hombre-robot, como para responder en tiempo real a situaciones no previstas, como detección de fallos y recuperación de planes, estos se refieren al uso de la realimentación sensorial del entorno de trabajo con el objeto de generar acciones que, ante posibles imprevistos, garanticen que la tarea se lleve a buen término. Los cuatro niveles de programación permitidos en la comunicación persona-máquina son, de tarea, de acción, de robot y articular, siguiendo la secuencia que detallamos a continuación. USUARIO ROBOT ENTORNO ACTUADOR CONTROL SENSORES Simulador Cinemático de un Robot Manipulador Industrial  Página 19 En el nivel tarea el operador describe la tarea en un lenguaje natural, esto es traducido a una secuencia de acciones de movimientos básicos (nivel de acción), estas acciones se traducen una a una al lenguaje propio del robot (nivel robot) y este código servirá para obtener las trayectorias articulares (nivel articular), que actúan de referencia para el subsistema de control. TAREA Subsistema de control El subsistema de control se encarga, de ejecutar, con los mínimos errores posibles, las trayectorias articulares planificadas, incluso ante la presencia de perturbaciones, aquí los comandos de alto nivel son convertidos en referencias para los actuadores físicos. Para esto, la estrategia de control se configura a partir de los modelos cinemáticos y dinámico de la componente mecánica, de forma que la respuesta temporal de esta última verifique las especificaciones de control impuestas. Planificador de acciones Traductor de acciones Intérprete de comandos Programación a nivel de acción Programación a nivel de robot Programación a nivel articular Programación a nivel de tarea Trayectorias articulares Programas Acción Simulador Cinemático de un Robot Manipulador Industrial  Página 20 La salida de este bucle interno de servocontrol, se encamina hacia el subsistema actuador para que las convierta en la energía cinética que moverá la mecánica. Para esta acción, este último subsistema, mediante el uso de la electrónica de potencia, amplifica las consignas de control, a los niveles adecuados para excitar a los actuadores. Subsistema actuador Este se compone de los actuadores y los amplificadores de potencia encargados de mover a la estructura mecánica. La naturaleza de estos elementos determina las prestaciones del robot en cuanto a movilidad, capacidad de carga o precisión en sus movimientos. Los actuadores se clasifican en: -Neumáticos. Usan aire comprimido y se caracterizan por su ligereza y su tamaño compacto, sin embargo, tienen la desventaja de que son imprecisos. -Hidráulicos. Son similares al émbolo neumático, pero utiliza aceite en vez de aire. Consiguen movimientos más precisión aunque más lentos, tienen una gran capacidad para manejar grandes cargas pero necesitan estrategias de control más complejas. -Eléctricos. Estos son los más usados en la actualidad, gracias al servocontrol se pueden usar sobre ellos sofisticadas técnicas de regulación automática con la que se consigue altas prestaciones en cuanto a precisión. Algoritmo de control Modelo cinemático del robot Trayectorias articulares Consignas de control Modelo dinámico del robot Configuración actual Simulador Cinemático de un Robot Manipulador Industrial  Página 21 Subsistema mecánico. El subsistema mecánico está compuesto por una serie de elementos rígidos conectados entre sí y que se encargan de actuar sobre su entorno de trabajo por medio de una herramienta especializada en la tarea que tiene que realizar, este puede configurarse de múltiples maneras, como por ejemplo un brazo manipulador, una plataforma móvil, pistola de pintura, fresadoras etc…. Subsistema de proceso Este describe la forma en la que el robot realiza la tarea especificada, para ello hay que tener en cuenta una serie de cuestiones como son el sorteo de obstáculos, la velocidad de desplazamiento de los elementos mecánicos con el fin de sincronizarlos con otras máquinas, la seguridad de los operarios humanos. El subsistema de proceso se define como externo al sistema robot y se compone de todos los elementos que se encuentran en el interior del entorno de trabajo. En el caso de robots poliarticulados este subsistema resulta más limitado que en los móviles, facilitando esto la construcción de un mapa exacto para que facilite al sistema de control la realización de la tarea. En este caso se dice que la tarea se realiza en un entorno estructurado y no necesita de mucha capacidad sensorial para realizar la tarea, lo que abarata costes. Subsistema sensorial Es el encargado de recopilar todos los datos recogidos por los sensores y procesarlos para que puedan ser interpretados por los subsistemas de la tarea y de control. A través de este subsistema el robot conoce tanto su estado interno como el del entorno en el que trabaja. Para ello, se encuentra dotado de sensores internos que informan al sistema de control de la configuración que posee la estructura mecánica en cada momento, y externos que suministran datos acerca del ámbito donde el robot realiza la tarea. El subsistema sensorial permite el acceso a unos sensores virtuales, que proporcionan la información a nivel de abstracción requerido. . En resumen, el proceso de interpretación sensorial es complejo y vulnerable a las condiciones ambientales de trabajo, llevando a extraer falsas conclusiones, este hecho condiciona que los robots industriales poseen un bajo grado de percepción sensorial que compensan estructurando el entorno de trabajo. Por otro lado los sensores externos tienen un coste elevado y una complicada puesta a punto, cuando en las aplicaciones industriales se buscan soluciones sencillas y robustas Simulador Cinemático de un Robot Manipulador Industrial  Página 22 ESQUEMA DE LOS SUBSISTEMAS DE UN ROBOT Subsistema de la tarea Nivel de tarea Nivel de acción Nivel de robot Nivel articular Subsistema mecánico Brazo manipulador Plataforma móvil Pistola de pintura Fresadora Subsistema de control Modelo mecanismo Algoritmos de control Electrónica de control Subsistema de proceso Entorno de trabajo Operarios Otros sistemas Subsistema sensorial Sensores internos Sensores externos Subsistema actuador Neumáticos Hidráulicos Eléctricos Amplificadores Estado del entorno y del robot Percepción sensorial Interacción entorno Configuración actual Consignas de control Trayectorias articulares Programa de usuario Percepción sensorial Simulador Cinemático de un Robot Manipulador Industrial  Página 23 3. ROBOTS MANIPULADORES Existen ciertas dificultades a la hora de establecer una definición formal de lo que es un robot industrial. Según la Asociación de Industrias de Robótica (RIA, Robotic Industry Association): "Un robot industrial es un manipulador multifuncional reprogramable, capaz de mover materias, piezas, herramientas, o dispositivos especiales, según trayectorias variables, programadas para realizar tareas diversas" Según la Organización Internacional de Estándares (ISO) que define al robot industrial como: "Manipulador multifuncional reprogramable con varios grados de libertad, capaz de manipular materias, piezas, herramientas o dispositivos especiales según trayectorias variables programadas para realizar tareas diversas" Se incluye en esta definición la necesidad de que el robot tenga varios grados de libertad. Una definición más completa es la establecida por la Asociación Francesa de Normalización (AFNOR), que define primero el manipulador y, basándose en dicha definición, el robot: Manipulador: mecanismo formado generalmente por elementos en serie, articulados entre sí, destinado al agarre y desplazamiento de objetos. Es multifuncional y puede ser gobernado directamente por un operador humano o mediante dispositivo lógico. Robot: manipulador automático servo-controlado, reprogramable, polivalente, capaz de posicionar y orientar piezas, útiles o dispositivos especiales, siguiendo trayectoria variables reprogramables, para la ejecución de tareas variadas. Normalmente tiene la forma de uno o varios brazos terminados en una muñeca. Su unidad de control incluye un dispositivo de memoria y ocasionalmente de percepción del entorno. Normalmente su uso es el de realizar una tarea de manera cíclica, pudiéndose adaptar a otra sin cambios permanentes en su material. Simulador Cinemático de un Robot Manipulador Industrial  Página 24 Común en todas las definiciones anteriores es la aceptación del robot industrial como un brazo mecánico con capacidad de manipulación y que incorpora un control más o menos complejo. Un sistema robotizado, en cambio, es un concepto más amplio, engloba todos aquellos dispositivos que realizan tareas de forma automática en sustitución de un ser humano y que pueden incorporar o no a uno o varios robots, siendo esto último lo más frecuente. 3.1 Estructura de los robots manipuladores Un manipulador robótico consta de una secuencia de elementos estructurales rígidos, denominados enlaces o eslabones, conectados entre sí mediante juntas o articulaciones que permiten el movimiento relativo de cada dos eslabones consecutivos. Una articulación puede ser:  Lineal (deslizante, traslacional o prismática), si un eslabón desliza sobre un eje solidario al eslabón anterior.  Rotacional, en caso de que un eslabón gire en torno a un eje solidario al eslabón anterior. Lineal Rotacional El conjunto de eslabones y articulaciones se denomina cadena cinemática. Se dice que una cadena cinemática es abierta si cada eslabón se conecta mediante articulaciones exclusivamente al anterior y al siguiente, exceptuando el primero, que se suele fijar a un soporte, y el último, cuyo extremo final queda libre. A éste se puede conectar un elemento terminal o actuador final: una herramienta especial que permite al robot de uso general realizar una aplicación particular, que debe diseñarse específicamente para dicha aplicación: una herramienta de sujeción, de soldadura, de pintura, etc. El punto más significativo del elemento terminal se denomina punto terminal (PT). En el caso de una pinza, el punto terminal vendría a ser el centro de sujeción de la misma Simulador Cinemático de un Robot Manipulador Industrial  Página 25 Los elementos terminales pueden dividirse en dos categorías:  Pinzas  Herramientas Las pinzas se utilizan para tomar un objeto, normalmente la pieza de trabajo, y sujetarlo durante el ciclo de trabajo del robot. Hay una diversidad de métodos de sujeción que pueden utilizarse, además de los métodos mecánicos obvios de agarre de la pieza entre dos o más dedos. Estos métodos suplementarios incluyen el empleo de casquillos de sujeción, imanes, ganchos, y cucharas. Una herramienta se utiliza como actuador final en aplicaciones en donde se exija al robot realizar alguna operación sobre la pieza de trabajo. Estas aplicaciones incluyen la soldadura por puntos, la soldadura por arco, la pintura por pulverización y las operaciones de taladro. En cada caso, la herramienta particular está unida a la muñeca del robot para realizar la operación. A los manipuladores robóticos se les suele denominar también brazos de robot por la analogía que se puede establecer, en muchos casos, con las extremidades superiores del cuerpo humano. Semejanza de un brazo manipulador con la anatomía humana Simulador Cinemático de un Robot Manipulador Industrial  Página 26 Se denomina grado de libertad (g.d.l.) a cada una de las coordenadas independientes que son necesarias para describir el estado del sistema mecánico del robot (posición y orientación en el espacio de sus elementos). Normalmente, en cadenas cinemáticas abiertas, cada par eslabón-articulación tiene un solo grado de libertad, ya sea de rotación o de traslación. Pero una articulación podría tener dos o más g.d.l. que operan sobre ejes que se cortan entre sí. Distintos grados de libertad de un brazo de robot Para describir y controlar el estado de un brazo de robot es preciso determinar:  La posición del punto terminal (o de cualquier otro punto) respecto de un sistema de coordenadas externo y fijo, denominado el sistema mundo.  El movimiento del brazo cuando los elementos actuadores aplican sus fuerzas y momentos. El análisis desde el punto de vista mecánico de un robot se puede efectuar atendiendo exclusivamente a sus movimientos (estudio cinemático) o atendiendo además a las fuerzas y momentos que actúan sobre sus partes (estudio dinámico) debidas a los elementos actuadores y a la carga transportada por el elemento terminal. 3.2 Estructuras mecánicas Según la geometría de su estructura mecánica, un manipulador puede ser:  Cartesiano, cuyo posicionamiento en el espacio se lleva a cabo mediante articulaciones lineales.  Cilíndrico, con una articulación rotacional sobre una base y articulaciones lineales para el movimiento en altura y en radio.  Polar, que cuenta con dos articulaciones rotacionales y una lineal.  Esférico (o de brazo articulado), con tres articulaciones rotacionales.  Mixto, que posee varios tipos de articulaciones, combinaciones de las anteriores. Es destacable la configuración SCARA (Selective Compliance Assembly Robot Arm)  Paralelo, posee brazos con articulaciones prismáticas o rotacionales concurrentes. Simulador Cinemático de un Robot Manipulador Industrial  Página 27 Configuración geométrica Estructura cinemática Espacio de trabajo Ejemplo cartesianos tipo cantilever tipo pórtico cilíndrico Polar Esférico Simulador Cinemático de un Robot Manipulador Industrial  Página 34 Las dos formas más comunes de asignación de sistemas de coordenadas a cada eslabón del robot manipulador son las denominadas DH1 yDH2. DH1: Es la más estándar de las dos, consiste en ubicar el sistema i-ésimo solidario con el eslabón homónimo en el extremo más distante al mismo. DH2: Al contrario que en el anterior, el sistema {i}, solidario al elemento i-ésimo, se ubica en el extremo más próximo de éste, es decir, sobre el eje denominado i. Asignación de sistemas según la notación DH1 Asignación de sistemas según la notación DH2 Como ejemplo de modelos cinemáticos directos podemos destacar el robot de tipo SCARA y el robot tipo RX90. Robot tipo SCARA Robot tipo RX90 4.5 Modelo cinemático inverso Si el modelo cinemático directo consiste en que a partir de una serie de variables de las articulaciones hallamos la posición y la orientación del extremo final, el modelo cinemático inverso, consiste en que dadas la posición y orientación del extremo final, hallar el vector de variables de articulación La resolución no es sistemática: Depende de la configuración del robot y pueden existir soluciones múltiples. Simulador Cinemático de un Robot Manipulador Industrial  Página 35 • Este tipo de solución presenta las siguientes ventajas:  Posibilidad de resolución en tiempo real (seguimiento de trayectorias).  Posibilidad de incluir restricciones que garanticen la mejor solución (por ejemplo, límite en los recorridos articulares).  Posibilidad de simplificaciones.  Problema: No siempre existe. 4.6 Desacoplo cinemático Una de las principales dificultades que nos encontramos en la resolución de los robots manipuladores, es que generalmente nos enfrentamos a sistemas de seis dimensiones. Por esto debemos buscar fórmulas que simplifiquen el problema original. El concepto de desacoplo cinemático se refiere a la posibilidad de resolver de forma independiente la cinemática inversa de la posición y de la orientación. Los manipuladores con una muñeca de modelo esférico cumplen que los tres primeros eslabones de la cadena cinemática se utilizan de forma exclusiva para posicionar, mientras que la muñeca se usa para alcanzar la orientación requerida. En el caso concreto del manipulador RX90 podemos alcanzar un punto concreto en el espacio de trabajo de cuatro formas distintas, comenzando por la esquina superior izquierda y teniendo en cuenta la similitud con el brazo humano, sería:  Brazo izquierdo con codo arriba  Brazo izquierdo con codo abajo  Brazo derecho con codo arriba  Brazo derecho con codo abajo Soluciones para alcanzar un punto en el espacio Simulador Cinemático de un Robot Manipulador Industrial  Página 36 Simulador Cinemático de un Robot Manipulador Industrial  Página 37 5. PROGRAMACIÓN Desde el punto de vista de la Robótica, la programación se define como un lenguaje formal diseñado para expresar procesos que pueden ser llevados a cabo por máquinas, en nuestro caso concreto consistirá en el conjunto de ordenes necesarias para que poner el robot manipulador en movimiento con objeto de interaccionar, por medio de su efector final, con otros elementos del entorno de trabajo. Dichos desplazamientos no tienen por qué ser inamovibles, pueden depender de las decisiones que tome el sistema basándose en la lectura de los sensores externos, de la comunicación con otros componentes automáticos o incluso con un operador humano. En el caso de la programación de un robot el tiempo de ejecución es esencial y algunas variables pueden contener datos que dependan de las lecturas de los sensores externos. Por otro lado el programa, además de definir la tarea, debe controlar que esta se realice sin errores. Generalmente el robot no trabaja en solitario, convive con otros elementos como máquinas, cintas transportadoras e incluso otros robots. La sincronización es fundamental por lo que para que la tarea finalice correctamente si ciclo de movimiento, su respuesta ante eventos externos o la comunicación deben cumplir ciertas restricciones de tiempo real. Por otro lado tenemos que tener en cuenta al interaccionar con el mundo real, pueden ocurrir fallos como la caída del objeto que transportaba la pinza o colisiones por las imprecisiones a la hora de ejecutar un movimiento. Los programas tienen que tener en cuenta estos imprevistos y ser capaces de recuperar la ejecución de la tarea en la medida de lo posible, cuando ocurran. Es importante que la tarea se pueda codificar de manera eficiente y que proporcione facilidades para el desarrollo de la misma como unas herramientas adecuadas para la depuración y validación del programa. Basándonos en lo anterior, podemos definir dos técnicas para la programación de un robot manipulador: por guiado y textual. Programación en Robótica Textual Por guiado Simulador Cinemático de un Robot Manipulador Industrial  Página 38 5.1 Programación por guiado En este tipo de programación, el propio brazo interviene en el trazado del camino y en las acciones a desarrollar en la tarea de la aplicación. Esta característica determina, inexcusablemente, la programación "on-line". La programación por guiado se subdivide en dos clases: 5.1.1 Guiado pasivo La programación por guiado pasivo se subdivide a su vez en:  Guiado pasivo directo En este caso, el programador puede tomar el extremo del robot y llevarlo hasta los puntos deseados a través de las trayectorias más adecuadas. La unidad de control del robot registra de manera automática la señal de los sensores de posición de las articulaciones en todos los puntos recorridos. La técnica de guiado pasivo directo se utiliza, por regla general, en labores de pintura. El operario conduce la muñeca del manipulador o del brazo maestro, determinando los tramos a recorrer y aquellos en los que la pistola debe expulsar una cierta cantidad de pintura. Con esta programación, los operarios sin conocimientos de "software", pero con experiencia en el trabajo a desarrollar, pueden preparar los programas eficazmente. La programación por guiado pasivo directo tiene pocas posibilidades de edición, ya que, para generar una trayectoria continua, es preciso almacenar o definir una gran cantidad de puntos, cuya reducción origina discontinuidades. El "software" se organiza, aquí, en forma de intérprete. Programación por guiado Por guiado activo Por guiado pasivo Programación por guiado pasivo Por guiado pasivo por maniquí Por guiado pasivo directo Simulador Cinemático de un Robot Manipulador Industrial  Página 39  Guiado pasivo por maniquí La dificultad física de mover toda la estructura del robot se resuelve a través de este procedimiento. En este caso se dispone de un doble del robot, mientras que éste permanece fuera de línea. El doble posee una configuración idéntica que el robot real, pero es mucho más ligero y fácil de mover. La programación se realiza llevando de la mano a este doble, mientras que la unidad de control muestrea y almacena con cierta frecuencia los valores que toman los sensores de posición de las articulaciones, para su posterior repetición por el robot. La programación, usando el guiado pasivo por maniquí, consiste en determinar las acciones y movimientos del brazo manipulador, a través de un elemento especial para este cometido. En este caso, las operaciones ordenadas se sincronizan para conformar el programa de trabajo. 5.1.2 Guiado activo Esta posibilidad permite emplear el propio sistema de accionamiento del robot, controlado desde una botonera o bastón de mando (conocido como joystick) para que sea éste el que mueva sus articulaciones. Atendiendo a la potencia del sistema, se habla de guiado básico y guiado extendido. Guiado Básico El robot es guiado por los puntos por los cuales se desea que pase durante la fase de ejecución automática del programa. Durante ésta, la unidad de control interpola dichos puntos según determinadas trayectorias. Muchas veces no es posible incluir ningún tipo de estructuras de control dentro del programa, por lo que los puntos son recorridos siempre secuencialmente, en el mismo orden que se programaron. Un ejemplo de este tipo de programación es la utilizada en casi todos los robots de pintura, donde la unidad de control muestrea automáticamente los puntos recorridos por el robot con una frecuencia muy alta. Guiado Extendido Permite especificar, junto a los puntos por los que deberá pasar el robot, datos r elativos a la velocidad, tipo de trayectoria, precisión con la que se quiere alcanzar los puntos, control del flujo del programa, atención a entradas/salidas binarias, etc. En este caso, el método guiado de utilizado es el de la botonera o joystick. El guiado por extendido aumenta la potencia del sistema de programación. Programación por guiado activo Por guiado extendido Por guiado básico Simulador Cinemático de un Robot Manipulador Industrial  Página 40 Dependiendo del algoritmo de control que se utilice, el robot pasa por los puntos finales de la trayectoria enseñada. Hay que tener en cuenta que los dispositivos de enseñanza modernos no sólo permiten controlar los movimientos de las articulaciones del manipulador, sino que pueden, también, generar funciones auxiliares, como: - Selección de velocidades - Señalización del estado de los sensores - Borrado y modificación de los puntos de trabajo - Funciones especiales Al igual que con la programación por guiado pasivo directo, en la que se emplea un elemento de enseñanza, el usuario no necesita conocer ningún lenguaje de programación. Simplemente, debe habituarse al empleo de los elementos que constituyen el dispositivo de enseñanza. De esta forma, se pueden editar programas, aunque como es lógico, muy simples. La estructura del "software" es del tipo intérprete; sin embargo, el sistema operativo que controla el procesador puede poseer rutinas específicas, que suponen la posibilidad de realizar operaciones muy eficientes. Ventajas de la programación por guiado: -Son fáciles de aprender. -Requieren de un espacio de memoria relativamente pequeño para almacenar la información. Inconvenientes de la programación por guiado: -Necesidad de utilizar al propio robot y su entorno para realizar la programación, lo que obliga a sacar al robot de la línea de producción e interrumpir ésta. - Inexistencia de una documentación del programa. - Falta de adaptabilidad en tiempo real con el entorno. - No pueden tratar con facilidad interacciones de emergencia. - Dificultad de realizar modificaciones en el mismo. Simulador Cinemático de un Robot Manipulador Industrial  Página 41 5.2 Programación textual En este caso la programación está formada por un texto de instrucciones o sentencias, para cuya elaboración no es necesaria la intervención del robot; es decir, permite indicar la tarea al robot a través de un lenguaje de programación específico. Con la programación textual el operador no define, prácticamente, las acciones del brazo manipulador, sino que se calculan, en el programa mediante el uso de las instrucciones textuales adecuadas. Por ejemplo, en una aplicación de ensamblaje de piezas, en la que se requiere una gran precisión, los posicionamientos seleccionados mediante la programación por guiado no son suficientes, debiendo ser sustituidos por cálculos más perfectos y por una comunicación con el entorno que rodea al sistema. En la programación textual, la posibilidad de edición es total. El robot, sólo interviene en la puesta a punto final. Dependiendo del lenguaje utilizado, pueden elaborarse programas de distinta complejidad, con inclusión de saltos condicionales, empleo de bases de datos, posibilidad de creación de módulos operativos intercambiables, capacidad de adaptación a las condiciones del mundo exterior…. Dentro de la programación textual, podemos distinguir dos grupos de características completamente distintas: 5.2.1 Programación textual explicita En este grupo, el programa consta de una secuencia de órdenes o instrucciones concretas, que van definiendo con rigor las operaciones necesarias para llevar a cabo la tarea. La programación explicita engloba a los lenguajes que definen los movimientos punto a punto, similares a los de programación por guiado, pero formulado en lenguaje Programación textual Programación textual específica Programación textual explícita Simulador Cinemático de un Robot Manipulador Industrial  Página 42 formal. En este tipo, el tratamiento de las situaciones anormales, colisiones…queda a cargo del programador. Dentro de la programación explicita, hay dos niveles:  Nivel de movimiento elemental Abarca los lenguajes dirigidos a controlar los movimientos del brazo manipulador. Se subdividen a su vez en dos tipos:  Articular. Cuando el lenguaje se dirige al control de los movimientos de las diversas articulaciones del brazo.  Cartesiano. Cuando el lenguaje define los movimientos relacionados con el sistema de manufactura, es decir, los del efector final. Los lenguajes del tipo cartesiano utilizan transformaciones homogéneas. Esta característica hace al programa muy versátil, independizando a la programación del modelo particular del robot, puesto que un programa, en coordenadas cartesianas, puede utilizarse en otro, con diferentes coordenadas, mediante el sistema de transformación correspondiente. Por el contrario, los lenguajes de tipo articular indican los incrementos angulares de las articulaciones.  Nivel estructurado Intenta introducir relaciones entre el objeto y el sistema del robot, para que los lenguajes se desarrollen sobre una estructura formal. Estos lenguajes describen objetos y transformaciones con objetos, disponiendo, muchos de ellos, de una estructura de datos arborescente. El uso de lenguajes con programación explícita estructurada aumenta la comprensión del programa, reduce el tiempo de edición y simplifica las acciones encaminadas a la consecución de tareas determinadas. En los lenguajes estructurados, es típico el empleo de las transformaciones de coordenadas, que exigen un cierto nivel de conocimientos. Por este motivo dichos lenguajes no son populares hoy en día. Programación textual explícita Textual Nivel de movimiento elemental Articular Estructurado Simulador Cinemático de un Robot Manipulador Industrial  Página 43 5.2.2 Programación textual especificativa Se trata de una programación del tipo no procesal, en la que el usuario describe las especificaciones de los productos mediante una modelización, al igual que las tareas que hay que realizar sobre ellos. El sistema informático para la programación textual especificativa ha de disponer del modelo del mundo donde se encuentra el robot. Este modelo será, normalmente, una base de datos más o menos compleja, según la clase de aplicación, pero siempre requiere potentes ordenadores para el procesar una gran cantidad de información. El trabajo de la programación consistirá, simplemente, en la descripción de las tareas a realizar, lo que permite poder realizar trabajos complicados. Actualmente, los modelos del mundo son del tipo geométrico. Dentro de este tipo programación, hay dos clases dependiendo de si el modelo está orientado a objetos o a objetivos. Si el modelo se orienta al nivel de los objetos, el lenguaje trabaja con ellos y establece las relaciones entre ellos. Teniendo en cuenta la imprecisión de los cálculos del ordenador y de las medidas de las piezas, se precisa de una ejecución previa, para ajustar el programa al entorno del robot. Los lenguajes con un modelo del universo orientado a los objetos son de alto nivel, permitiendo expresar las sentencias en un lenguaje similar al usado comúnmente. Por guiado Textual Guiado activo Guiado pasivo Explicita Programación Robótica Especificativa Movimiento elemental Estructurada Cartesiana Articular Orientada a objetivos o tareas Orientada a objetos Guiado pasivo por maniquí Guiado pasivo directo Básico Extendido Simulador Cinemático de un Robot Manipulador Industrial  Página 50 componer como estas últimas y resultan muy dependientes del brazo robot. De las funciones descritas para las localizaciones, sólo admiten el uso de DECOMPOSE. Por último destacar que todas las variables creadas y utilizadas dentro de un programa poseen un ámbito global, es decir, se pueden invocar y modificar desde cualquier otra rutina que se encuentre ubicada en la memoria de la unidad de control del robot. Se puede anular esta característica para un conjunto concreto de variables, utilizando la orden LOCAL acompañada de la lista de variables que se desea que queden para uso exclusivo en la rutina que las creó. Movimiento del brazo robot y actuación de la pinza. En este apartado englobamos las ordenes que hacen que el brazo interaccione con su entorno de trabajo y la actuación de su efector final. Estas órdenes de movimientos contemplan la generación de trayectorias articulares y cartesianas. En lo que respecta al efector final, se refieren a la apertura y cierre de la pinza, lo que se realiza con las sentencias, OPENI Y CLOSEI. Las funciones básicas de movimiento son MOVE y MOVES, a las que se les asigna como único argumento de entrada una variable de tipo localización (T) que indica donde debe situarse el efector final: MOVE mueve el brazo mediante una trayectoria articular mientras que MOVES utiliza una trayectoria cartesiana. MOVE T: Movimiento articular hacia T MOVES T: Movimiento cartesiano hacia T Por regla general, el lenguaje robot cuando se encuentra más de una orden de movimiento consecutiva en un programa, no efectúa las paradas intermedias, sino que realiza la ejecución de la secuencia como si se tratara de un solo movimiento. Como resultado de esto la trayectoria global construida interpola las localizaciones inicial y final, y aproxima las intermedias. Si se desea que el sistema no concatene el tramo actual con el siguiente se usa la sentencia BREAK a continuación de la orden de movimiento. Simulador Cinemático de un Robot Manipulador Industrial  Página 51 EJEMPLO: La siguiente imagen muestra dos ejemplos de una trayectoria cartesiana que parte de T1, pasa por T2 y termina en T3. T1 representa la localización inicial de la pinza, T2 y T3 se ha definido con la función TRANS. En la imagen de la izquierda ( a) Concatenación sin suavizado) se ilustra el efecto de la sentencia BREAK de forma que el movimiento de la pinza dibuja 2 segmentos rectilíneos Efecto de la sentencia BREAK en la concatenación de trayectorias El código que generaría esta trayectoria sería: MOVES T2 BREAK MOVES T3 Si eliminamos la sentencia BREAK, tendríamos una trayectoria con suavizado, en este caso el brazo concatena los dos segmentos anteriores, y para efectuar la transición entre ambos, suaviza su punto común de unión en T2, pasa por esta localización si hacer parada en ella. El código que generaría esta trayectoria sería: MOVES T2 MOVES T3 La velocidad de desplazamiento se define mediante la sentencia SPEED con la que se indica al manipulador el porcentaje de la velocidad, considerada como normal, con la que se ejecutarán las órdenes de movimiento. EJEMPLO: Para hacer que el manipulador se desplace al 20% de la velocidad considerada normal durante el próximo movimiento, la sentencia sería: SPEED 20 Si queremos que esta velocidad se mantenga durante toda la ejecución del programa, deberíamos escribir: SPEED 20 ALWAYS Simulador Cinemático de un Robot Manipulador Industrial  Página 52 Otro punto importante en los desplazamientos cartesianos es la especificación del tipo de solución del brazo que se tomará para resolver la cinemática inversa, a la que se denomina control de la configuración del brazo. Para esto se usan las sentencias: LEFTY y RIGHTY para elegir entre la solución brazo izquierdo o brazo derecho. ABOVE o BELOW para indicar si partimos de codo arriba o codo abajo. FLIP o NOFLIP para indicar si la muñeca se girará o no. Hay que tener en cuenta que estas órdenes de control de la configuración, sólo determinan la manera en la que el brazo realizará los desplazamientos, y en el caso de que una localización no pueda alcanzarse con la configuración indicada, se generará un error y el sistema no intentará otra alternativa. Existen también unas órdenes auxiliares de movimiento que facilitan la tarea de manipulación. Estas se utilizan para acercarse hasta o alejarse desde un punto próximo de una localización tomada como referencia para la manipulación de un objeto. APPRO T, D Permite al robot aproximar su efector final a una distancia D, expresada en milímetros, de la localización T con un movimiento articular. APPROS T, D Permite al robot aproximar su efector final a una distancia D, expresada en milímetros, de la localización T con un movimiento cartesiano. Por el contrario las órdenes DEPART y DEPARTS alejan el efector final de su localización actual con un movimiento sobre su eje Z negativo la distancia expresada en milímetros que figura como único argumento de entrada. Tomando como argumento D. las sentencias quedarían como se detalla a continuación: DEPART D Aleja al efector final a una distancia D mediante un movimiento articular. DEPARTS D Aleja el efector final a una distancia D mediante un movimiento cartesiano. La orden READY es una instrucción especial, que se encarga de llevar al brazo robot a su posición de descanso, definida en grados sexagesimales, mediante un desplazamiento articular. Simulador Cinemático de un Robot Manipulador Industrial  Página 53 CODIFICACIÓN TRASLADO CAJAS Disponemos de un brazo manipulador RX90 al lado del cual tenemos cinco cajas, numeradas del 1 al 5. Las cajas 4 y 5 actúan a modo de plataforma donde en su parte superior se pueden colocar las cajas 1,2 y 3, se pretende trasladas las cajas 1,2 y 3 desde la caja 4 donde están posadas a la caja 5. Se va a detallar el programa en lenguaje V+ que codifica la tarea descrita donde se puede ver como se declaran las variables, las órdenes de movimiento y de gestión de la pinza del robot. .PROGRAM PIEZAS ;Definicion de variables de la tarea SETTBP=TRANS(0,400,400,0,180,90); SETTBD=TRANS(400,150,200,0,180,0); LD=150; Separacion en destino LP=200; Separacion en origen SD=200; Aproximacion en destino SP=100; Aproximacion en origen ;Velocidad y control de la configuracion SPEED 50 ALWAYS; Velocidad LEFTY ; Brazo izquierdo ABOVE ; Codo arriba NOFLIP ; Sin giro ;Bucle principal del programa FOR I=1 TO 3 ;ETAPA 1: Agarre de una pieza APPRO TBP,SP ;Aproximación al agarre BREAK Simulador Cinemático de un Robot Manipulador Industrial  Página 54 MOVES TBP ;Ir al agarre CLOSEI; DEPARTS SP ;Alejarse del agarre ;ETAPA 2: Traslado de la pieza APPRO TBD,SD ;Aproximación a destino BREAK MOVES TBP ; Ir a destino OPENI; DEPARTS S ; Alejarse del destino ;ETAPA 3: Origen y destino de la próxima pieza SET TBP= SHIFT(TBP BY LP,0,0) SETTBD=SHIFT(TBP BY 0,-LD,0); END READY .END Todos los programas en V+ empiezan con la sentencia .PROGRAM seguida del nombre del programa y termina con .END Concurrencia y gestión de señales asíncronas La concurrencia se refiere a la capacidad de un sistema informático para simultanear varias acciones. Desde el enfoque de la programación es importante la concurrencia de alto nivel que permite la ejecución simultánea de varios programas de usuario y la gestión de forma asíncrona de señales recogidas por los sensores externos. Al añadir la capacidad de generar señales de salida, el robot podrá comunicarse y sincronizarse de forma eficiente con el resto de los elementos del entorno. El lenguaje V+ permite la concurrencia de un programa de control del robot con un conjunto de programas de control de procesos. Las señales digitales de entrada y salida se gestionan con dos sentencias básicas: SIG para leer el estado de una señal de entrada o salida y SIGNAL para producir una salida. Simulador Cinemático de un Robot Manipulador Industrial  Página 55 Clasificación de las señales: Señales de entrada desde el exterior: Comprendidas en el intervalo [1……64], su estado se lee con la función SIG Señales de salida externa: Comprendidas en el intervalo [1001……1064], su estado puede leerse con SIG o bien cambiarlo por SIGNAL Señales internas de solo lectura: se usan igual que las de entrada desde el exterior, su intervalo [3001…..3032] Señales internas de lectura y escritura: Se manejan de la misma forma que las de salida externa, son la incluidas en el intervalo [2001……2032] La función SIG devuelve el valor cierto o falso resultado de realizar la operación AND sobre todas la señales binarias cuyos identificadores aparecen como argumentos de entrada. La sentencia SIGNAL se utiliza para cambiar el estado de las señales de salida externas o internas de lectura y escritura, que figuran en su lista de parámetros de entrada. Si un identificador va seguido de un signo negativo indica la desactivación de la señal referenciada, si es positiva su activación. Con el objeto de que el robot se sincronice con eventos externos, existen tres sentencias básicas: DELAY, WAIT y REACTI. DELAY detiene el movimiento del robot durante los segundos que aparecen el su único parámetro de entrada. WAIT seguida de una expresión lógica, introduce el programa en un bucle de espera hasta que el resultado de la evaluación de su argumento de entrada sea cierto. REACTI se utiliza para monitorizar las señales de entrada, tanto externas como internas. Sus argumentos de entrada son el identificador de señal (puede llevar un signo negativo) y el nombre de la rutina que se desea ejecutar. EJEMPLO La escena consta de un brazo robot, de una cinta transportadora y una plataforma de paletizado, el sistema emplea también dos sensores externos y digitales de presencia, uno de barrera, situado en un extremo de la cinta transportadora y otro de proximetría situado en la base de la pinza del robot. La tarea consiste en el traslado de las tres piezas, que avanzan sobre la cinta transportadora en dirección al sensor de barrera, a la plataforma de paletizado. La tarea comienza en el momento que el robot pone en funcionamiento la cinta transportadora mediante el uso de las señales de salida 1 y 2. SIGNAL 1, 2 Simulador Cinemático de un Robot Manipulador Industrial  Página 56 Con la primera activa su motor y con la segunda se establece el sentido de la marcha. Esta acción produce el movimiento de las piezas, que se detendrán cuando la primera de ellas sea detectada por el sensor de barrera asociado a la señal de salida 1002. WAIT SIG(1002) SIGNAL -1 Para localizar y coger la pieza, el robot, primero desplaza la pinza a la localización denominada BARRIDO. SET BARRIDO=TRANS (300, 170, 280, 0. 180, 0) Y ahora se realiza un movimiento articular de aproximación sobre la vertical, en este caso se ha tomado 120 mm como distancia de aproximación segura APRO BARRIDO, 120 MOVES BARRIDO En este punto la pinza y el sensor de proximetría apuntan hacia abajo y perpendicular a la cinta. El robot comienza un movimiento rectilíneo con el objeto de detectar la presencia de una caja mediante su sensor de proximetría, cuando esto ocurre se detecta un flanco de subida, que indica que la pinza se encuentra encima de la caja y se activa la función AGARRE REACTI 1001, AGARRE MOVES BARRIDO: TRANS (-200,0,0,0,0,0) Ahora solo resta cerrar la pinza y subir la caja 150 mm sobre la cinta transportadora. .PROGRAM AGARRE MOVES SHIFT (HERE BY 40,0,0) APPROS HERE, -80 CLOSEI DEPARTS 150 .END La localización de destino de la caja se define: SET DESTINO=TRANS (0, 400, 0, 180, 90) Para trasladar la caja que porta el robot en su pinza, basta con realizar una secuencia de aproximación a DESTINO, abrir la pinza y alejarse. APPRO DESTINO, 100 MOVES DESTINO OPENI DETARTS 100 Simulador Cinemático de un Robot Manipulador Industrial  Página 57 CODIFICACIÓN PALETIZADO A continuación se detalla el programa PALETIZADO que realiza la tarea completa. Comentar que al finalizar el bucle principal para el traslado de las cajas, se retorna el brazo a su posición de descanso y se desactivan todas las señales de salida mediante la orden RESET. .PROGRAM PALETIZADO SET BARRIDO=TRANS(300,170,280,0,180,0) SET DESTINO=TRANS(0,400,400,0,180,90) SPEED 50 ALWAYS LEFTY ABOVE FLIP SIGNAL 1, 2 FOR I= 1 TO 3 WAIT SIG(1002) SIGNAL -1 APPRO BARRIDO, 120 MOVES BARRIDO REACTI 1, AGARRE MOVES BARRIDO:TRANS(-200,0,0,0,0,0) APPRO DESTINO, 100 MOVES DESTINO OPENI DEPARTS 100 DESTINO=SHIFT(DESTINO,200,0,0) SIGNAL 1 END READY RESET .END El programa se ha completado con la especificación de la velocidad del robot y las órdenes para el control de la configuración. Simulador Cinemático de un Robot Manipulador Industrial  Página 58 Simulador Cinemático de un Robot Manipulador Industrial  Página 59 6 SIMULACION CINEMÁTICA 6.1 Sistema de simulación gráfica La simulación gráfica en tres dimensiones de la cinemática del movimiento de un robot manipulador permite un análisis previo de la ejecución de una tarea antes de programarla en el robot real. Mediante este análisis podemos sacar conclusiones sobre el tipo de trayectoria o identificar posibles colisiones. La principal ventaja que aporta este tipo de simulación es que para ciertos pasos del desarrollo de una aplicación no es necesario el uso del robot, evitando así un desgaste innecesario del mismo. En este capítulo vamos a desarrollar un simulador cinemático del brazo manipulador RX90 construido a partir de las funciones desarrolladas en MATLAB en este trabajo. Con este se pretende tanto ilustrar los aspectos de la programación a nivel robot, como integrar todos los conceptos expuestos sobre la cinemática de los robots manipuladores. 6.2 Funciones del simulador Este simulador cinemático se basa en una serie de funciones desarrolladas en MATLAB y que se ejecutan dentro de este paquete software, bien desde la ventana de comandos o en el interior de un programa que codifica la tarea del robot. Por otro lado, requiere que se especifique la geometría de los distintos cuerpos que componen el entorno de trabajo del robot. El resultado de la simulación lo constituye la animación cinemática, dentro de una ventana gráfica del robot en interacción con los objetos de su entorno. Contamos con tres tipos de objetos, caja, sensor y cinta transportadora, que pueden forman parte de la escena del robot. Tipos de objetos que forman parte del entorno del robot Todos ellos cuentan con un sistema de coordenadas asociado, de forma que la posición cartesiana de este último con respecto al sistema {0} de la base del robot, se Simulador Cinemático de un Robot Manipulador Industrial  Página 66 6.4 Configuración del robot y gestión de la pinza. Este conjunto de funciones no poseen ni parámetros de entrada ni de salida, se encargan exclusivamente de modificar el estado interno del robot para tenerlo en cuenta a la hora de realizar el próximo movimiento. o ABOVE: Establece la configuración “codo arriba” para seleccionar la solución del modelo cinemático inverso. o BELOW: Configuración “codo abajo” para el mismo propósito. o LEFTY: Selección de la solución ”brazo izquierdo”. o RIGHTY: Establece la configuración ”brazo derecho”. o FLIP: Se selecciona la solución ”muñeca girada”. o NOFLIP: Configuración ”muñeca sin girar” o OPENI: Simula la apertura de la pinza del manipulador, si posee un cuerpo cogido, en cuyo caso lo soltaría. o CLOSEI: Simula el cierre de la pinza, de manera que si un cuerpo de tipo caja se encuentra a una distancia menor de la establecida en el parámetro de sensibilidad, este se dará por cogido. En el próximo movimiento el manipulador lo trasladara sujeto por la pinza. 6.5 Funciones de movimiento. Por las limitaciones de MATLAB, no se contempla la concatenación de las ordenes de movimiento con suavizado. Es decir, la implantación es similar a emplear una sentencia del tipo BREAK al final de cada desplazamiento de la pinza. o MOVE (Tf): Simula el movimiento articular del brazo manipulador, desde la postura actual hasta el destino especificado en el argumento de entrada. Durante el movimiento traslada al objeto que porta en la pinza y comprueba el estado de las señales de entrada para lanzar la reacción correspondiente. Simulador Cinemático de un Robot Manipulador Industrial  Página 67  Tf: Matriz homogénea o vector articular de seis componentes que especifica el destino del movimiento. o MOVES (Tf): Similar a la función anterior, sólo que realiza un movimiento cartesiano rectilíneo.  Tf: Matriz homogénea que especifica el destino del efector final. o DEPART (d): Aleja el efector final con un movimiento articular de la localización actual del mismo. La localización de destino se encuentra a una distancia ”d” sobre el eje Z negativo de la actual.  d: Distancia en milímetros que se alejara el efector final sobre su eje Z a partir de la posición actual. o DEPARTS (d): Similar a la función anterior, sólo que el movimiento se realiza en el espacio cartesiano. o APPRO (T,d): Posiciona el efector final con un movimiento articular en una localización calculada a partir de una de referencia T que se traslada sobre su eje Z una distancia d negativa expresada en milímetros.  T: Transformación homogénea de referencia.  d: Distancia en milímetros que se alejar el efector final sobre el eje Z de T. o APPROS(T,d): Similar a la función anterior, excepto que el movimiento de aproximación se realiza en el espacio cartesiano. o READY: Mueve, de forma articular, el robot a su posición de descanso, especificada por el vector articular [0,-90,90,0,0,0] en grados. Simulador Cinemático de un Robot Manipulador Industrial  Página 68 6.6 Tratamiento de señales asíncronas Este grupo de funciones posee ciertas particularidades que las diferencian de las correspondientes presentadas en V+. En primer lugar, el número de señales de entrada coincide con el de sensores digitales utilizados en la escena. De esta manera, la señal uno corresponde al sensor que porta en la garra el manipulador, y se van asignando sucesivamente y en orden, una a una, a cada uno de los sensores declarados en el fichero de configuración. En nuestro ejemplo al único sensor especificado, se le asigna la señal número dos. En cuanto a las señales de salida, se asignan dos de ellas, en orden, a cada cinta transportadora presente en la escena. A la cinta transportadora especificada, se le asignan las señales de salida uno y dos. o SIGNAL (sn): Activa o desactiva la señal indicada en el parámetro de entradas n, en función del signo de este último (si es positivo activa la señal, y en caso negativo la desactiva). Estas señales se utilizan para cambiar el estado de movimiento de los objetos de tipo cinta transportadora, de forma que la cinta iésima tiene asociadas las señales i e i+1. La primera de ellas activa el movimiento, y la segunda especifica el sentido del mismo, si i+1 > 0 el movimiento se produce en sentido positivo del eje X de la cinta; en caso contrario si i+1<0 el movimiento es en sentido negativo sobre el dicho eje.  sn: Cuando es positiva activa la señal especificada, si es negativa la desactiva. o s=SIG(sn): Devuelve el estado de una señal de entrada. El sistema admite la creación de objetos de tipo sensor, que simulan sensores de proximetría digitales. Esta función devuelve 1 si el sensor ha detectado un objeto, en caso contrario devuelve un 0.  sn: Número del sensor que se desea comprobar.  s: Estado del sensor: 0 no detecta, 1 detecta. o REACTI (sn,fun): Establece la función fun de reacción que se ejecutará cuando se detecte el cambio del estado de la señal sn de entrada especificada. Una vez ejecutada esta orden, se sondea la señal durante toda la ejecución de la tarea del robot, de forma que cuando se detecta el cambio de estado, se interrumpe el movimiento del robot y se pasa a ejecutar la función MATLAB especificada en su argumento de entrada. Simulador Cinemático de un Robot Manipulador Industrial  Página 69 Una vez acabada, se continúa con la ejecución del programa principal por la instrucción siguiente de donde se produjo la interrupción.  sn: Número de señal de entrada que se sondeara. Si es negativo este parámetro, se lanzara la reacción en un flanco de bajada. Si es positivo en el flanco de subida.  fun: Cadena de caracteres que indica la función MATLAB que se quiere ejecutar. o WAIT (sn): Detiene el programa del robot hasta que la señal especificada cambia de flanco. Mientras el robot permanece parado, se actualiza la posición de todos los objetos sobre las cintas transportadoras y el estado de todas las señales de entrada. En este estado de espera, se atienden las señales y reacciones especificadas con REACTI  sn: Número de la señal que se espera que cambie de estado. Si es negativo el parámetro, el movimiento del robot queda suspendido hasta que se produzca un flanco de bajada. En el caso de que sea positivo, se detiene hasta un flanco de subida. Si le valor de entrada es nulo, se espera hasta que se pulse una tecla. EJEMPLO TRASLADO CAJAS A continuación describimos como se codifican las tareas del robot con el simulador en lenguaje MATLAB, para ello nos basamos en mismo ejemplo que planteamos en el capítulo anterior: “Disponemos de un brazo manipulador RX90 al lado del cual tenemos cinco cajas, numeradas del 1 al 5. Las cajas 4 y 5 actúan a modo de plataforma donde en su parte superior se pueden colocar las cajas 1,2 y 3. Trasladar las cajas 1,2 y 3 desde la caja 4 a la 5” Las principales diferencias entre la versión de V+ y la que se detalla a continuación, son la desaparición de las sentencias BREAK y SPEED. PROGRAM (´entorno.dat´) % Definición de las variables de la tarea PIEZA=TRANS(0,400,400,0,180,90); DESTINO=TRANS(400,150,200,0,180,0); LD=150; % Separación en destino LP=200; % Separación en origen SD=200; % Aproximación en destino SP=100; % Aproximación en origen Simulador Cinemático de un Robot Manipulador Industrial  Página 70 % Control de la configuración LEFTY; % Brazo izquierdo ABOVE; % Codo arriba FLIP; % Con giro % Bucle principal del programa for i=1:3, % ETAPA 1: Agarre de una pieza APPRO (PIEZA, SP); % Aproximación al agarre MOVES (PIEZA); % Ir al agarre CLOSEI; DEPARTS(SP); % Alejarse del agarre %ETAPA 2: Traslado de una pieza APPRO (DESTINO, SD); % Aproximación al destino MOVES (DESTINO); % Ir al destino OPENI; DEPARTS (SD); % Alejarse del destino %ETAPA 3: Origen y destino de la próxima pieza PIEZA=SHIFT (PIEZA,LP,0,0); DESTINO=SHIFT (DESTINO,0,-LD,0); end READY; Fichero de configuración´entorno.dat´ sería: Observador (giro, elevacion, apertura): 6020 5 Sensor del robot (rango en mm.): 150 Velocidad del robot (de 0 a 1): 0.05 Sensibilidad de la pinza (distancia en mm.): 100 Tipos de cajas (lx, ly, lz, color):3 500 200 300 9 200 400 100 11 40 80 80 44 Cajas (posx, posy, posz, giro, tipo):5 200 400 1 0 1 400 0 1 0 2 0 400 301 0 3 200 400 301 0 3 400 400 301 0 3 Simulador Cinemático de un Robot Manipulador Industrial  Página 71 EJEMPLO PALETIZADO En este ejemplo sirve para explicar la gestión de las señales asíncronas. En este caso, la instrucción WAIT del simulador es sensiblemente diferente de la empleada en V+. Por otro lado las sentencias SIGNAL y SIG del simulador sólo contemplan un número de señal como argumento de entrada. La escena consta de un brazo robot, de una cinta transportadora y una plataforma de paletizado, el sistema emplea también dos sensores externos y digitales de presencia, uno de barrera, situado en un extremo de la cinta transportadora y otro de proximetría situado en la base de la pinza del robot. La tarea consiste en el traslado de las tres piezas, que avanzan sobre la cinta transportadora en dirección al sensor de barrera, a la plataforma de paletizado. PROGRAM (´entorno3.dat) BARRIDO=TRANS(300, 170, 280, 0, 180,0); DESTINO=TRANS(0,400, 400, 0, 180, 90); LEFTY; ABOVE; FLIP; SIGNAL(2); for i=1:3, SIGNAL(1); WAIT (2); SIGNAL (-1); APPRO(BARRIDO, 120); MOVES(BARRIDO); REACTI(1, ´AGARRE´); MOVES (BARRIDO*TRANS(-200, 0, 0, 0, 0, 0)); APPRO (DESTINO, 100); MOVES (DESTINO); OPENI; DEPARTS(100); DESTINO=SHIFT (DESTINO, 200,0,0); end READY; Simulador Cinemático de un Robot Manipulador Industrial  Página 72 En lo que respecta a la función AGARRE, la cual se ejecuta cuando se detecte un flanco de subida del sensor que porta el robot en la pinza, el código sería el siguiente function AGARRE() MOVES (SHIFT(HERE, 40,0,0); APROS (HERE, -80); CLOSEI; DEPARTS (150); Fichero de configuración ´entorno3.dat´ Observador (giro, elevacion, apertura): 60 20 6 Sensor del robot (rango en mm.): 150 Velocidad del robot (de 0 a 1): 0.05 Sensibilidad de la pinza (distancia en mm.): 100 Tipos de cajas (lx, ly, lz, color): 3 500 200 300 9 600 200 100 11 40 80 80 44 Cajas (posx, posy, posz, giro, tipo): 4 200 400 1 0 1 350 -100 101 90 3 400 -220 101 90 3 450 -350 101 90 3 Sensores (posx, posy, posz, giro, rango): 1 510 190 120 -90 200 Cintas transportadoras (posx, posy, posz, giro, tipo, velocidad): 1 500 -400 100 90 2 5 Simulador Cinemático de un Robot Manipulador Industrial  Página 73 CONCLUSIONES La elaboración de este trabajo fin de grado ha resultado muy interesante, he tenido la oportunidad de aprender conceptos importantes en el ámbito de la robótica y por otro lado, me ha permitido aplicar contenidos vistos durante el curso pasado en la asignatura de Sistemas Inteligentes. Analizados los distintos tipos de programación concluimos que en la programación por guiado, las acciones que se pueden programar son limitadas, el robot sufre un desgaste innecesario y no realiza ningún trabajo útil mientras dura el proceso de programación. Por el contrario, en la programación textual, se basa en especificar la tarea del robot mediante sentencias, con lo cual, la flexibilidad de codificación es mayor, se pueden utilizar todas las prestaciones de los lenguajes de programación convencionales; sin embargo, se exige un operador especializado. Dado esto, como solución se opta por la programación a nivel robot, donde el lenguaje es imperativo con instrucciones especializadas para el movimiento del brazo, la gestión de la pinza o para el tratamiento de sensores. Nótese, que los lenguajes de nivel robot y el lenguaje V+ en concreto, poseen muchas más instrucciones y prestaciones que las descritas en esta memoria. En este trabajo se han descrito e ilustrado las características que distinguen a este tipo de programación mediante ejemplos sencillos. La simulación gráfica en tres dimensiones de la cinemática del movimiento de un brazo manipulador permite el análisis previo de la ejecución de una tarea, lo cual ayuda a detectar errores de programación (como por ejemplo colisiones del robot manipulador con otro robot u objeto del entorno), dando la oportunidad de corregirlos antes ser programado en el robot real, con el consiguiente ahorro de tiempo y esfuerzo. De cara a la docencia, la capacidad del simulador para trabajar sin estar conectado al brazo robot real favorece el aprendizaje de los alumnos, ayudándoles a entender con mayor facilidad los principios teóricos básicos para el control y posicionamiento del brazo manipulador. Al mismo tiempo que les permitirá interactuar y practicar con un software cuyas funciones son similares a las que encontrarán en un software profesional para el control de robots industriales. Este trabajo se ha centrado en las características más relevantes de los lenguajes a nivel robot, en un futuro se podrían desarrollar más funciones con el objeto de que el brazo manipulador sea capaz de simular tareas más específicas. Simulador Cinemático de un Robot Manipulador Industrial  Página 74 Simulador Cinemático de un Robot Manipulador Industrial  Página 75 Bibliografía Robótica: Control de robots manipuladores (2011) Fernando Reyes Cortés Fundamentos de la Robótica. McGraw Hill 2º Edición (2007) Barrientos A., Peñín L.F:, Balaguer C., Aracil Santoja R. Robótica. Prentice Hall. 3º Edición. (2006) Craig John J. Robótica: Manipuladores y Robot Móviles. Marcombo Boixareu Editores (2001) Ollero A. Introduction to Robotics. Addison-Wesley (1991) McKerrow P. J. Robótica Industrial. Marcombo (1.988) Ferraté G., Amat J., Ayza J., Basañez L., Ferrer L., Huber R., Torres C. Robótica: Control, Detección, Visión e Inteligencia. McGraw Hill (1988) Fu K.S., González R. C., Lee C.S.G. Industrial Robotics: Technology, Programming and Applications. McGraw Hill (1986) Groover M. P., Weiss M., Nagel R.N, Odrey M. G. The MathWorks Inc. (1994-2012) Using Matlab Version R2012b Simulador Cinemático de un Robot Manipulador Industrial  Página 82 LEFTY; ABOVE; Implementamos un bucle para trasladar las cajas consecutivamente Coge una pieza Posiciona la pinza con un movimiento articular a una localización calculada tomando como referencia la caja en el espacio cartesiano y cierra la pinza para coger la caja y mueve la pinza. for i=1:3, MOVE(PIEZA); APPROS(PIEZA,-100); CLOSEI; DEPARTS(100); Traslada el objeto que porta la pinza, desde la postura actual hasta el destino especificado, en este caso donde se localiza el sensor, en el argumento de entrada y Simulador Cinemático de un Robot Manipulador Industrial  Página 83 comprueba el estado de las señales de entrada para lanzar la reacción correspondiente. Posiciona la pinza en una localización calculada tomando como referencia de destino y abre la pinza para soltar la caja. Por último aleja la pinza. MOVES(DESTINO); APPROS(DESTINO,-200); OPENI; DEPARTS(200); PIEZA=SHIFT(PIEZA,200,0,0); DESTINO=SHIFT(DESTINO,0,-150,0); end READY; Simulador Cinemático de un Robot Manipulador Industrial  Página 84 FICHERO DE CONFIGURACIÓN PRÁCTICA 1 Observador (giro, elevacion, apertura): 60 20 6 Sensor del robot (rango en mm.): 150 Velocidad del robot (de 0 a 1): 0.05 Sensibilidad de la pinza (distancia en mm.): 100 Tipos de cajas (lx, ly, lz, color): 3 500 200 300 9 200 400 100 11 40 80 80 44 Cajas (posx, posy, posz, giro, tipo): 5 200 400 1 0 1 400 0 1 0 2 0 400 301 0 3 200 400 301 0 3 400 400 301 0 3 Sensores (posx, posy, posz, giro, rango): 3 550 150 120 -90 200 550 0 120 -90 200 550 -150 120 -90 200 Simulador Cinemático de un Robot Manipulador Industrial  Página 85 PRÁCTICA 2 En esta práctica disponemos de un brazo manipulador situado junto a un conjunto de cinco cajas numeradas como 1,2,3,4 y 5 las cajas 4 y 5 actúan como plataformas. OBJETIVO: Trasladar una pieza desde la caja 4 a la caja 5, esta última consta de una cinta transportadora con un sensor de barrera que detiene la cinta cuando detecta la pieza, está orientada para el paletizado de piezas. La función PROGRAM invoca al fichero de configuración donde se establecen los valores iniciales de las variables internas del simulador, entorno2.txt PROGRAM('entorno2.txt') La variable pieza construye una transformada homogénea a partir de la posición cartesiana (0,400,500) expresada en milímetros, y la representación de la orientación (0,180,90) expresada en grados, igualmente para la variable destino realiza una transformada homogénea a partir de la posición cartesiana (400,150,400) y la representación de la orientación en grados (0,180,0) PIEZA=TRANS(0,400,500,0,180,90); DESTINO=TRANS(400,150,400,0,180,0); Establece el manipulador como "brazo izquierdo" y "codo arriba” LEFTY; ABOVE; Simulador Cinemático de un Robot Manipulador Industrial  Página 86 La pinza se mueve hasta la posición donde se encuentra la caja, la agarra y se aleja de la posición inicial. MOVE(PIEZA); APPROS(PIEZA,-100); CLOSEI; DEPARTS(100); La pinza traslada la caja, la lleva hasta la posición de destino y la suelta en la cinta transportadora. MOVES(DESTINO); APPROS(DESTINO,-200); OPENI; SIGNAL(1); SIGNAL(-2); DEPARTS(200); WAIT(2); SIGNAL(-1) CLOSEI; READY; Simulador Cinemático de un Robot Manipulador Industrial  Página 87 FICHERO DE CONFIGURACIÓN PRÁCTICA 2 Observador (giro, elevacion, apertura): 60 20 6 Sensor del robot (rango en mm.): 150 Velocidad del robot (de 0 a 1): 0.05 Sensibilidad de la pinza (distancia en mm.): 100 Tipos de cajas (lx, ly, lz, color): 3 500 200 300 9 400 200 100 11 40 80 80 44 Cajas (posx, posy, posz, giro, tipo): 2 200 400 1 0 1 0 400 301 0 3 Sensores (posx, posy, posz, giro, rango): 1 550 -150 120 -90 200 Cintas transportadoras (posx, posy, posz, giro, tipo, velocidad): 1 500 -200 100 90 2 5 Simulador Cinemático de un Robot Manipulador Industrial  Página 88 Simulador Cinemático de un Robot Manipulador Industrial  Página 89 PRÁCTICA 3 Esta práctica presenta un sistema robótico empleado para el paletizado de piezas. Tenemos un brazo robot, una cinta transportadora y una plataforma de paletizado. Asimismo el sistema dispone de dos sensores externos y digitales de presencia, uno de barrera, montado en un extremo de la cinta transportadora y otro de proximetría situado en la base de la pinza del manipulador. OBJETIVO: Trasladar tres cajas, que avanzan en la cinta transportadora, caja 5, en dirección al sensor de barrera a la plataforma de paletizado, caja 4. Se carga el fichero de configuración donde se establecen los valores iniciales de las variables internas del simulador, en este caso entorno3.txt PROGRAM('entorno3.txt') La variable BARRIDO construye una transformada homogénea a partir de la posición cartesiana (300,170,280) expresada en milímetros, y la representación de la orientación (0,180,0) expresada en grados, definiendo la posición de la pinza en el momento de agarrar la caja igualmente para la variable DESTINO, realiza una transformada homogénea a partir de la posición cartesiana (0,400,400) y la representación de la orientación en grados (0,180,90), definiendo esta donde la pinza debe posar la caja y soltarla. BARRIDO=TRANS(300,170,280,0,180,0); DESTINO=TRANS(0,400,400,0,180,90); Simulador Cinemático de un Robot Manipulador Industrial  Página 90 Establece el manipulador como "brazo izquierdo" y "codo arriba” y "muñeca girada" LEFTY; ABOVE; FLIP; Se activa la cinta transportadora y el sentido de la marcha, la caja se traslada sobre la cinta transportadora hasta que el sensor de barrera la detecta y para esta, la pinza se traslada hasta la posición declarada y agarra la caja, que traslada hasta la localización definida en destino, el bucle toma el siguiente valor hasta que trasladar todas las cajas. SIGNAL(2); for i=1:3, SIGNAL(1); WAIT(2); SIGNAL(-1); APPRO(BARRIDO,120); MOVES(BARRIDO); REACTI(1,'AGARRE'); MOVES(BARRIDO*TRANS(-200,0,0,0,0,0)); APPRO(DESTINO,100); MOVES(DESTINO); OPENI; DEPARTS(100); DESTINO=SHIFT(DESTINO,200,0,0); end READY; Simulador Cinemático de un Robot Manipulador Industrial  Página 91 FICHERO DE CONFIGURACIÓN PRÁCTICA 3 Observador (giro, elevacion, apertura): 60 20 6 Sensor del robot (rango en mm.): 150 Velocidad del robot (de 0 a 1): 0.05 Sensibilidad de la pinza (distancia en mm.): 100 Tipos de cajas (lx, ly, lz, color): 3 500 200 300 9 600 200 100 11 40 80 80 44 Cajas (posx, posy, posz, giro, tipo): 4 200 400 1 0 1 350 -100 101 90 3 400 -220 101 90 3 450 -350 101 90 3 Sensores (posx, posy, posz, giro, rango): 1 510 190 120 -90 200 Cintas transportadoras (posx, posy, posz, giro, tipo, velocidad): 1 500 -400 100 90 2 5