Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad

Programación de un robot colaborativo para tocar xilófono mediante RobotStudio y MATLAB, Tesis de Ingeniería Industrial

Un proyecto de ingeniería en el que se programó un robot colaborativo de la marca abb, modelo irb14000 yumi, para tocar un xilófono mediante la software robotstudio y matlab. El robot se programó para interpretar notas musicales solicitadas a través de la comunicación opc ua y se utilizaron las tres leyes de la robótica de isaac asimov. El documento detalla el proceso de programación, la configuración de las interfaces de usuario y la sincronización de los módulos del robot.

Tipo: Tesis

2021/2022

Subido el 22/02/2024

josep-vendrell
josep-vendrell 🇪🇸

2 documentos

1 / 138

Toggle sidebar

Documentos relacionados


Vista previa parcial del texto

¡Descarga Programación de un robot colaborativo para tocar xilófono mediante RobotStudio y MATLAB y más Tesis en PDF de Ingeniería Industrial solo en Docsity! UNIVERSIDAD DE VALLADOLID ESCUELA DE INGENIERIAS INDUSTRIALES Grado en Ingeniería Electrónica Industrial y Automática Simulación de un Robot Colaborativo YuMi (ABB) en entorno RobotStudio comandado desde MATLAB mediante protocolo OPC UA para tocar un Xilófono. Autora: Pozas Mata, Elena Tutor: Herreros López, Alberto Departamento de Ingeniería de Sistemas y Automática Valladolid, julio, 2022 III Summary The main objective of this project is to program a multitasking collaborative robot by using the simulation and programming software RobotStudio, in order to play a xylophone based on the notes requested from MATLAB through the OPC UA communication protocol. The keys struck by the robot are read by MATLAB using the same communication protocol to generate the sound of the corresponding note at each moment. To request the notes in a more dynamic way, a Human-Machine Interface has been developed, which allows to control the entire simulation. Key Words IRB14000 YuMi Robot, RobotStudio, MATLAB, OPC UA, Human-Machine Interface V ÍNDICE GENERAL 1.Introducción y objetivos ...................................................................................... 1 1.1. Objetivos del proyecto ............................................................................. 1 1.2. Planteamiento del trabajo ...................................................................... 3 1.3. Estructura de la memoria ....................................................................... 5 2.Marco teórico y estado del arte ......................................................................... 7 2.1. Marco teórico ........................................................................................... 7 Tipos generales de robots ....................................................................... 10 2.2. Estado del arte....................................................................................... 14 3.Metodología y software utilizado ..................................................................... 17 3.1. Descripción del software ....................................................................... 17 RobotStudio .............................................................................................. 17 MATLAB ..................................................................................................... 18 ABB IRC5 OPC ........................................................................................... 19 4.Desarrollo del proyecto .................................................................................... 21 4.1. PRIMERA FASE: Programación RobotStudio ....................................... 21 4.1.1. Modelado de la estación ............................................................... 21 4.1.2. Componentes inteligentes ............................................................. 25 Pinza YuMi ................................................................................................ 26 Xilófono ..................................................................................................... 30 Botonera ................................................................................................... 33 4.1.3. Configuración del controlador ....................................................... 38 4.1.4. Lógica de la estación ..................................................................... 42 4.1.5. Trayectorias y puntos ..................................................................... 44 Jointtarget ................................................................................................. 44 Tooldata .................................................................................................... 45 Wobjdata ................................................................................................... 47 Robtarget .................................................................................................. 48 4.2. SEGUNDA FASE: Programación RAPID ................................................. 51 4.2.1. Variables globales .......................................................................... 51 4.2.2. Procedimientos .............................................................................. 54 ÍNDICE DE FIGURAS VIII Figura 28. Componentes Attacher Pinza YuMi. ................................................. 28 Figura 29. Componentes Detacher Pinza YuMi. ................................................ 29 Figura 30. Componentes JointMover Pinza YuMi. ............................................. 29 Figura 31. Diseño Componente inteligente Pinza YuMi. .................................. 30 Figura 32. Componente inteligente Xilófono. .................................................... 31 Figura 33. Componentes Plane Sensor Xilófono. .............................................. 31 Figura 34. Componentes Highlighter Xilófono. .................................................. 32 Figura 35. Diseño Componente inteligente Xilófono. ....................................... 33 Figura 36. Componente inteligente Botonera. .................................................. 34 Figura 37. Componente Highlighter Botonera. .................................................. 34 Figura 38. Componente inteligente Botón DO_0. ............................................. 34 Figura 39. Componente Highlighter Botón. ....................................................... 35 Figura 40. Componente LogicGate [NOT] Botón. .............................................. 35 Figura 41. Componente Positioner Botón.......................................................... 35 Figura 42. Diseño Componente inteligente Botonera. ..................................... 38 Figura 43. Diseño Componente inteligente Botón. ........................................... 38 Figura 44. Crear un controlador virtual. ............................................................. 39 Figura 45. Opciones controlador IRB14000. .................................................... 40 Figura 46. Editor de configuración de señales del controlador. ...................... 41 Figura 47. Simulador de E/S IRB14000. ........................................................... 42 Figura 48. Diseñar la lógica de la simulación. .................................................. 42 Figura 49. Lógica de estación. ........................................................................... 43 Figura 50. Jointtarget de la estación.................................................................. 45 Figura 51. Crear Jointtarget. ............................................................................... 45 Figura 52. Tooldata de la estación. .................................................................... 46 Figura 53. Crear Tooldata. .................................................................................. 47 Figura 54. Wobjdata de la estación. .................................................................. 47 Figura 55. Crear Wobjdata. ................................................................................. 48 Figura 56. Robtarget de la estación. .................................................................. 49 Figura 57. Crear Robtarget. ................................................................................ 49 Figura 58. Trayectorias y puntos. ....................................................................... 50 Figura 59. Diagrama de llamadas de procedimientos...................................... 51 Figura 60. Sincronizar con RAPID. ...................................................................... 52 ÍNDICE DE FIGURAS IX Figura 61. Puntos de la estación en RAPID T_ROB_R. ...................................... 52 Figura 62. Puntos de la estación en RAPID T_ROB_L. ...................................... 53 Figura 63. Variables globales. ............................................................................. 54 Figura 64. PROC AbrirPinza T_ROB_R. ............................................................... 55 Figura 65. PROC AbrirPinza T_ROB_L. ................................................................ 55 Figura 66. PROC CerrarPinza T_ROB_R. ............................................................. 55 Figura 67. PROC CerrarPinza T_ROB_L. ............................................................. 56 Figura 68. PROC First T_ROB_R. ......................................................................... 57 Figura 69. PROC Escritura T_ROB_R. ................................................................. 58 Figura 70. PROC PulsarTeclas T_ROB_R. ........................................................... 58 Figura 71. PROC PulsarTeclas T_ROB_L. ........................................................... 59 Figura 72. PROC SyncCojeMaza T_ROB_R. ........................................................ 60 Figura 73. PROC SyncCogeMaza T_ROB_L. ....................................................... 60 Figura 74. PROC SyncDejaMaza T_ROB_R. ....................................................... 61 Figura 75. PROC SyncDejaMaza T_ROB_L. ........................................................ 61 Figura 76. PROC SyncPulsarTeclas T_ROB_R. ................................................... 63 Figura 77. PROC SyncPulsarTeclas T_ROB_L. ................................................... 63 Figura 78. Esquema PROC SyncPulsarTeclas. ................................................... 64 Figura 79. Diagrama de bloques del código del programa. .............................. 66 Figura 80. PROC mainXilofono_R T_ROB_R. ...................................................... 67 Figura 81. PROC mainXilofono_L T_ROB_L. ....................................................... 67 Figura 82. Rutinas TRAP T_ROB_R. .................................................................... 68 Figura 83. Rutinas TRAP T_ROB_L. ..................................................................... 68 Figura 84. Añadir nuevo Alias. ............................................................................ 70 Figura 85. OPC Data Access Explorer. ................................................................ 70 Figura 86. Identificador completo de una variable en el servidor OPC. ........... 71 Figura 87. Archivo .txt con las notas de las canciones que se pueden solicitar. ............................................................................................................................... 74 Figura 88. Interfaz de usuario (HMI). .................................................................. 74 Figura 89. Propiedades HMI. ............................................................................... 75 Figura 90. Función que genera el sonido de las notas. .................................... 75 Figura 91. Conectar al servidor HMI. .................................................................. 76 Figura 92. Función del botón Conectar HMI. ..................................................... 77 ÍNDICE DE FIGURAS X Figura 93. Coger Mazas HMI. ............................................................................. 78 Figura 94. Función del botón CogerMazas HMI. ............................................... 78 Figura 95. Pulsar notas en tiempo real HMI. ..................................................... 79 Figura 96. Función del botón DO_1 HMI. .......................................................... 79 Figura 97. Escoger canción y Leer Fichero HMI. ............................................... 80 Figura 98. Función del botón Leer Fichero HMI. ............................................... 80 Figura 99. Dejar Mazas HMI. .............................................................................. 81 Figura 100. Función del botón Dejar Mazas HMI. ............................................ 81 Figura 101. Desconectar al servidor HMI. ......................................................... 81 Figura 102. Función del botón Desconectar HMI. ............................................ 82 Figura 103. Simulación CogerMazas. ................................................................ 86 Figura 104. Simulación LeerFichero. ................................................................. 87 Figura 105. Simulación Pulsar notas en tiempo real. ...................................... 88 Figura 106. Simulación DejarMazas. ................................................................. 89 1 CAPÍTULO 1 Introducción y objetivos El crecimiento de la robótica colaborativa en los últimos años se debe principalmente al éxito de sus aplicaciones industriales. Estas ventajas no solo pueden utilizarse en este ámbito, sino que también tienen cabida en aplicaciones artísticas, creativas e innovadoras, como la desarrollada para este trabajo, que aprovecha las capacidades de un robot colaborativo para realizar tareas que van más allá de la industria. A lo largo del presente informe, se va a desarrollar y explicar la elaboración de la estación y la programación de un robot colaborativo multitarea, en la que se ha pretendido abarcar, de una manera original y entretenida, varias ramas de la ingeniería utilizando un protocolo de comunicación para leer y escribir diferentes variables declaradas en el programa RAPID del robot, desde una interfaz de usuario. 1.1. Objetivos del proyecto Para la realización de este trabajo se ha escogido el robot colaborativo de dos brazos de la compañía ABB Robotics IRB 14000 YuMi (Figura 1). Figura 1. Robot IRB14000 YuMi. 1.INTRODUCCIÓN Y OBJETIVOS 2 El objetivo principal es programar este robot a través del software de simulación y programación RobotStudio, donde se crea de forma virtual el modelo de la estación, junto con la configuración de todas las entradas y salidas digitales del controlador necesario, y el código de programación que contendrá los movimientos e instrucciones a realizar por el robot, con el fin de tocar un xilófono en función de las notas solicitadas a través de la interfaz de usuario desarrollada con MATLAB. Las láminas golpeadas por el robot son leídas por MATLAB mediante el mismo protocolo de comunicación para generar el sonido de la nota correspondiente en cada momento. Por ello es necesaria la comunicación entre la interfaz y el robot. Para la comunicación que se quiere establecer entre RobotStudio y MATLAB se ha escogido el protocolo de comunicación OPC UA, que permite intercambiar información y datos entre una máquina y otra de una manera simplificada. De lo anteriormente expuesto, se extraen más esquemáticamente los siguientes objetivos relativos al presente Trabajo de Fin de Grado: ▪ Crear una estación en el entorno de simulación RobotStudio que cuente con los componentes necesarios para que el robot YuMi sea capaz de tocar un xilófono creado con este software. ▪ Programar en lenguaje RAPID el código necesario para definir los movimientos e instrucciones a realizar por el robot. ▪ Establecer una comunicación entre RobotStudio y MATLAB utilizando el protocolo OPC UA, con el fin de leer y escribir desde MATLAB variables declaradas en RobotStudio. ▪ Desarrollar con MATLAB una Interfaz Hombre-Máquina con la que se controle toda la simulación de un modo más dinámico. ▪ Implementar conocimientos en diferentes campos de la ingeniería. ▪ Dar a la robótica una aplicación artística, creativa e innovadora. En la Figura 2 se puede ver un esquema donde se reflejan las acciones que se llevan a cabo en la comunicación entre RobotStudio y MATLAB. 1.INTRODUCCIÓN Y OBJETIVOS 3 Figura 2. Esquema comunicación OPC entre RobotStudio-MATLAB. A lo largo de los siguientes capítulos se muestran y explican las diferentes fases de las que ha constado este proyecto, así como todos los elementos que han sido necesarios para su realización. 1.2. Planteamiento del trabajo Todo el proyecto se ha desarrollado de manera virtual, simulando en RobotStudio tanto los movimientos del robot como el xilófono, incorporando unos sensores de posición sobre las láminas para poder saber en qué momento y qué nota se ha golpeado. En la Figura 3 se muestra un esquema que muestra la relación que se plantea de manera virtual entre los diferentes elementos de la estación, junto con la comunicación con MATLAB, es decir, la relación que se ha llevado a cabo para el presente trabajo. Figura 3. Simulación virtual Robot YuMi y comunicación OPC con MATLAB. Sin embargo, la intención final de este proyecto es implementar sobre un robot real la ejecución de la simulación. Esto podría realizarse de dos formas distintas: 7 CAPÍTULO 2 Marco teórico y estado del arte En este capítulo se recopila información relacionada con el ámbito en el que se puede enmarcar este proyecto, para poder entender el contexto actual sobre el tema. 2.1. Marco teórico En el primer tercio del siglo XX se inicia el desarrollo de la ingeniería en sus diferentes ramas, (mecánica, electrónica, informática y telecomunicaciones), que van a permitir la construcción de robots modernos. La construcción de máquinas que imitan las tareas humanas se remonta a la antigüedad [1]. Isaac Asimov utilizó por primera vez el término “robótica” en los relatos cortos reunidos en su libro “I Robot” (“Yo robot”), publicado en 1950. En el relato titulado “Runaround”, ambientado en el año 2056, se postulan las tres leyes de la robótica, expuestas en la Tabla 1. LEYES DE LA ROBÓTICA PRIMERA Un robot no debe dañar a un ser humano ni, por su pasividad, dejar que un ser humano sufra daño. SEGUNDA Un robot debe obedecer las órdenes que le son dadas por un ser humano, excepto cuando estas órdenes están en oposición con la primera Ley. TERCERA Un robot debe proteger su propia existencia, hasta donde esta protección no esté en conflicto con la primera o segunda ley. Tabla 1. Las tres leyes de la robótica según Asimov. Asimov consideró necesario añadir una cuarta ley, antepuesta a las demás, la denominada ley número cero, que afirma que un robot no debe actuar simplemente para satisfacer intereses individuales, sino que sus acciones deben preservar el beneficio común de toda la humanidad. En 1983, H. Roselund y W.Pollard, construyeron el primer brazo articulado (o manipulador) para pintura al spray, lo que representó una nueva forma de entender la producción industrial al incorporar robots a las cadenas de producción [2]. 2.MARCO TEÓRICO Y ESTADO DEL ARTE 8 En 1939 se presentan diversas novedades en robótica popular, como el robot humanoide Elektro (Figura 5), y el perro mecánico Sparko, los cuales eran atracciones en la feria mundial de Nueva York celebrada aquel año. Figura 5. Robot humanoide Elektro. Se trataba de máquinas que realizaban movimientos simples, de escasa articulación, con rutinas mecánicas repetitivas. Con estos robots surgen en esta época dos de las grandes ramas de la robótica moderna: la rama industrial y la rama del entretenimiento. En 1947, D.S. Halder, de la compañía automovilística Ford de Detroit, acuña el término “automatización” y pone en marcha una estrategia para ir sustituyendo al ser humano de muchas de las tareas del proceso de fabricación de automóviles. G.C. Devol, uno de los pioneros de la robótica industrial, patenta en 1956 un controlador que registraba señales eléctricas por medio de magnetos que accionan un dispositivo mecánico, logrando una máquina flexible, adaptable al entorno y fácil de manejar. A partir de esto es cuando puede denominarse robot a una máquina. Los aspectos relacionados con el control son fundamentales para la asignación de tareas a un robot. En el año 1962 ocurren diversos acontecimientos de gran importancia para la robótica. H.A. Enst publica un trabajo sobre sensores táctiles MH-1 aplicados a una mano robotizada de tipo ANL 8, dotada de 6 grados de libertad y de un procesador TX-0 que revoluciona el sector e inicia el desarrollo de los sensores y la retroalimentación, demostrando la conducta adaptativa de un robot por primera vez en la historia [3]. Por su parte R. Tomovic y G. Boni desarrollan una mano con sensores de presión que proporciona una señal de realimentación de entrada al motor para 2.MARCO TEÓRICO Y ESTADO DEL ARTE 11 ▪ De servicio: en esta clasificación podrían entrar todos los robots no industriales, como los robots de limpieza o de servicios médicos. ▪ Industriales: están destinados a realizar de forma automática determinados procesos de fabricación o manipulación. ▪ Clasificación según la configuración de sus ejes: Viene determinada por el tipo de las tres primeras articulaciones, que son las que determinan la posición de la herramienta en el espacio y el tipo de coordenadas con las que se determina esta posición o localización. ▪ Robot polar o esférico: la primera y segunda articulación son de ejes de rotación perpendiculares entre sí, y la tercera es prismática, es decir, se tienen dos giros y un desplazamiento, que permiten posicionar un punto en el espacio mediante coordenadas polares. ▪ Robot cilíndrico: utiliza un giro en la base y dos desplazamientos perpendiculares entre sí, para determinar la posición de los puntos por medio de coordenadas cilíndricas. Se controla fácilmente y es rápido, pero solo se usa para casos en que no haya obstáculos en su zona de trabajo y el acceso a ella se haga horizontalmente. ▪ Robot cartesiano: sus tres articulaciones principales son prismáticas y los ejes ortogonales entre sí. Son rápidos, muy precisos, de fácil control, amplia zona de trabajo y elevada capacidad de carga, pero ocupan mucho espacio relativo. Se utilizan en aplicaciones que requieren movimientos lineales de alta precisión. ▪ Robot SCARA: robot con dos articulaciones de rotación y una prismática. Es rápido, barato y preciso, pero solo tiene accesibilidad a zonas de trabajo que estén en planos perpendiculares a su eje vertical. ▪ Robot angular o antropomórfico: tiene sus tres principales articulaciones de tipo rotacional, por lo que emplea las coordenadas angulares para determinar las posiciones de su elemento terminal. Se llama antropomórfico porque simula los movimientos de un brazo humano. 2.MARCO TEÓRICO Y ESTADO DEL ARTE 12 Otro tipo de clasificación de robots, en función de su modalidad, podría ser el robot colaborativo y el robot no colaborativo. Las aplicaciones colaborativas son diferentes a las de los sistemas robóticos tradicionales, ya que las personas pueden trabajar próximos al sistema del robot cuando está en funcionamiento colaborativo y se permite el contacto físico humano-robot bajo ciertas condiciones, sin necesidad de aislar el robot mediante resguardos o vallas [6]. Se pueden distinguir diferentes modos de colaboración en este tipo de robots [7]: ▪ Parada de robot con reinicio automático: La premisa es que, en el espacio compartido con una persona, el robot no se mueva bajo ninguna circunstancia. ▪ Guiado manual: El robot colaborativo y el operario trabajarán conjuntamente de forma segura y ergonómica para realizar tareas que requieren precisión humana. En esta zona de colaboración, el operario es quien dirige el movimiento del robot con un guiado manual, hacia la posición en la que resto de zonas el robot trabaja en modo normal, con las seguridades necesarias. ▪ Monitorización de velocidad y posición: El robot colaborativo y el operario se mueven simultáneamente por dentro del mismo espacio. Si la distancia que los separa se reduce, el robot se detiene, pasando a estar en el modo de “Parada de seguridad monitorizada”. ▪ Limitación de fuerza y potencia: Es el modo más interesante, ya que permite la interactuación más directa entre personas y el robot. Las velocidades y la potencia del robot colaborativo están limitadas. Para este trabajo se ha escogido un modelo de robot colaborativo de la compañía ABB. Como se puede ver en la Figura 1, este robot consta de dos brazos robóticos. Cada brazo cuenta con siete ejes, lo que le permite realizar una gran variedad de movimientos, para alcanzar los puntos deseados. A la característica de poder trabajar colaborativamente con humanos, se le une la posibilidad de sincronizar sus brazos. 2.MARCO TEÓRICO Y ESTADO DEL ARTE 13 El espacio de trabajo que alcanza este robot se puede ver en la Figura 8, donde aparece representado para diferentes vistas, como son el alzado frontal, la vista isométrica, la vista en planta y el alzado lateral del robot [8]. Figura 8. Data Sheet, Vistas robot YuMi ABB. A continuación, se muestran los datos fundamentales que aparecen en la hoja de datos del robot YuMi para poder definir en su totalidad a éste. En la Tabla 2 se muestran sus características, en la Tabla 3 el movimiento de cada eje, definiendo la amplitud de trabajo y la velocidad máxima de cada uno de ellos, y en la Tabla 4 aparecen algunos resultados. Tabla 2. Data Sheet, Características robot YuMi ABB. Tabla 3. Data Sheet, Movimiento robot YuMi ABB. 2.MARCO TEÓRICO Y ESTADO DEL ARTE 16 Figura 12. Célula de Trabajo, TFM de Víctor Lobo Granado [12]. Finalmente, en el año 2021 Rodrigo Sancho García desarrolló una célula de trabajo robótica que contaba con dos robots, y que tenía como objetivo realizar dos tareas. La primera, un ensamblaje automático por piezas de un coche de juguete, y la segunda, detectar el tamaño, la posición o el color de una serie de cubos. Esta célula se puede ver en la Figura 13. Figura 13. Célula de Trabajo, TFG de Rodrigo Sancho García [13]. 17 CAPÍTULO 3 Metodología y software utilizado En este proyecto, se ha buscado integrar varias ramas de la ingeniería, como son la robótica y las comunicaciones industriales. Para conseguir esto, se han utilizado varios softwares diferentes. Para la parte de la robótica, tanto para el modelado de la estación como la programación en lenguaje RAPID se ha utilizado el software de simulación y programación offline de ABB, RobotStudio, con el que se ha podido diseñar la estación de trabajo, y simular y programar los movimientos del robot multitarea YuMi. Este programa se basa en ABB VirtualController, una copia exacta del software real que ejecuta sus robots en producción. Esto permite realizar simulaciones muy realistas, utilizando programas de robot reales y archivos de configuración idénticos a los utilizados en el taller, aunque para este trabajo solo se realizará la parte virtual, ya que en la universidad todavía no se cuenta con un robot YuMi de dos brazos. Para la parte de las comunicaciones se han utilizado dos softwares distintos: - MATLAB para crear la interfaz Hombre-Máquina con la aplicación “AppDesigner”, - y ABB IRC5 OPC para la conexión OPC, con el que se ha podido sincronizar y coordinar MATLAB y RobotStudio. 3.1. Descripción del software RobotStudio Es el software de simulación y programación offline de ABB, que ofrece una réplica digital completa (Digital Twin) de activos o sistemas físicos para que pueda ver lo que sucede en su línea de producción de forma remota [14]. La herramienta de programación offline RobotStudio de ABB permite a los usuarios crear, simular y probar una instalación completa de robot en un entorno virtual 3D sin tener que visitar o perturbar su línea de producción real. Permite crear, programar y simular células y estaciones de robots industriales de la compañía ABB. Es un simulador comercial potente, con diversas características y capacidades, entre las que destacan [15]: 3.METODOLOGÍA Y SOFTWARE UTILIZADO 18 • Creación automática de cualquier tipo de estación. • Importación de geometrías y modelos 3D de cualquier formato (RobotStudio trabaja sobre CATIA). • Programación y simulación cinemática de las estaciones. • Facilidad de diseño y creación de células robóticas (robot y dispositivos). • Permite exportar los resultados obtenidos en simulación a la estación real. Además, proporciona un entrono virtual muy realista que permite simular de manera muy precisa una aplicación o un proceso real. El simulador RobotStudio funciona sobre RobotWare, el cual se instala junto con RobotStudio, y proporciona el conjunto de archivos necesarios para implementar todas las funciones, configuraciones, datos y programas requeridos para el control del sistema del robot. El lenguaje de programación de alto nivel para controlar robots industriales ABB, utilizado por este software, se denomina RAPID. Las características de este lenguaje de programación son las siguientes: • Parámetros de rutina: o Procedimientos: utilizados como un subprograma. o Funciones: devuelven un valor de un tipo específico y se utilizan como argumento de una instrucción. o Rutinas TRAP: un medio para responder a las interrupciones. • Expresiones aritméticas y lógicas. • Manejo automático de errores. • Programas modulares. • Multitarea. MATLAB Es una plataforma de programación y cálculo numérico utilizada por millones de ingenieros y científicos para analizar datos, desarrollar algoritmos y crear modelos [16]. Combina un entorno de escritorio perfeccionado para el análisis iterativo y los procesos de diseño con un lenguaje de programación que expresa las matemáticas de matrices y arrays directamente. Una de las prestaciones con las que cuenta MATLAB es la aplicación “AppDesigner”, para crear apps web y de escritorio en MATLAB, la ha sido utilizada para la realización de la interfaz de usuario de este trabajo. Permite crear apps profesionales de una manera sencilla, arrastrando y colocando los componentes visuales para crear el diseño de una interfaz gráfica de usuario 21 CAPÍTULO 4 Desarrollo del proyecto En este capítulo se detalla en profundidad cómo se ha desarrollado el trabajo, describiendo las diferentes fases de éste, entre las que destacan la programación en RobotStudio, la programación en RAPID, y el establecimiento de la comunicación OPC UA entre RobotStudio-MATLAB. 4.1. PRIMERA FASE: Programación RobotStudio En este apartado se explicará cómo se ha modelado la estación de trabajo del robot, así como el diseño de los componentes inteligentes de los que se compone la estación, la configuración del controlador virtual, y la lógica de la estación que se ha utilizado para que todos los componentes inteligentes cumplan su función. 4.1.1. Modelado de la estación El primer paso a la hora de utilizar el software de RobtStudio, es crear una solución con estación vacía para partir desde cero, y añadir poco a poco el controlador y los demás elementos de los que se compone la estación. A continuación, se abre la Biblioteca ABB, situada en la pestaña “Posición inicial”, donde se encuentran todos los robots, posicionadores y tracks de ABB disponibles para la simulación en RobotStudio, y se selecciona el robot colaborativo IRB 14000 YuMi (Figura 15) que se utilizará en esta estación. 4.DESARROLLO DEL PROYECTO 22 Figura 15. Importar robot colaborativo IRB 14000 YuMi de la biblioteca ABB. Posteriormente, se crean las herramientas del robot, una para cada brazo. Para ello, se importan las herramientas ya diseñadas por ABB para este robot, situadas nuevamente en la pestaña “Posición inicial”, y seleccionamos “Equipamiento” desde “Importar biblioteca” (Figura 16). Figura 16. Importar herramientas ABB Smart Gripper del equipamiento de ABB. Con el objeto de situarlas en la posición correcta, se arrastran las herramientas hasta el brazo correspondiente del robot, y se actualiza la posición de estas. Automáticamente se colocarán en el eslabón 7 del robot (Figura 17). 4.DESARROLLO DEL PROYECTO 23 Figura 17. Colocar herramientas en el robot. Para modelar el xilófono en la estación, se utilizan las opciones de modelado propias del software RobotStudio. En la pestaña de “Modelado”, se crean 8 tetraedros, uno para cada lámina del xilófono, correspondiente a un tono de la escala diatónica, y 4 tetraedros para la base del xilófono (Figura 18). Figura 18. Crear tetraedro. Se coloca delante del robot, en una posición centrada respecto a la base de coordenadas del robot. Cada lámina tendrá un color y una dimensión determinada, cuyo centro estará alineado en el eje y para diferenciar cada tono, y generar el sonido adecuado (Figura 19). 4.DESARROLLO DEL PROYECTO 26 Figura 22. Crear Componente inteligente. Pinza YuMi Este componente se ha creado de tal forma que sea capaz de coger cualquier pieza, no solo las baquetas del xilófono. Para ello se han añadido tres sensores, dos sensores planos en la superficie interna de los dedos, y un sensor lineal en el centro de la herramienta (Figura 23). Los sensores planos tienen por objeto detectar hasta dónde tiene que cerrar la pinza el robot. Por su parte, el sensor lineal se emplea para detectar hasta dónde tiene que descender el robot para coger el objeto. Este mecanismo es análogo a la herramienta que se utiliza en otros trabajos para el robot IRB 120. Figura 23. Componente inteligente “Smart Gripper Servo Fingers”. Los componentes de los que está formada la herramienta del robot son los siguientes: ▪ Logic Gate [AND] (Figura 24): la señal Output es activada por la operación lógica especificada, en este caso AND, en las dos señales InputA y InputB, con el retardo especificado en Delay. Para que se active la salida, ambos sensores planos deben tener valor 1. 4.DESARROLLO DEL PROYECTO 27 Figura 24. Componente LogicGate [AND] Pinza YuMi. ▪ Logic SRLatch (Figura 25): tiene un estado estable. Si la señal Set vale 1, se activa la señal de salida, mientras que la señal de salida inversa InvOutput vale 0. Si la señal Reset vale 1, se desactiva la señal de salida, mientras que la señal de salida inversa InvOutput vale 1. La señal Set será activada cuando los dos sensores planos valgan 1, y la señal Reset cuando se solicite abrir la pinza. Si la salida vale 1, la salida de la pinza “PiezaAgarrada” también valdrá 1. Figura 25. Componente LogicSRLatch Pinza YuMi. ▪ Line Sensor (Figura 26): define una línea por sus parámetros Start, End y Radius. El parámetro Start especifica el punto de inicio. El parámetro End especifica el punto final. Finalmente, el parámetro Radius especifica el radio. Cuando una señal Active tiene el valor alto, el sensor detecta los objetos que están en intersección con la línea. Los objetos que están en intersección se muestran en la propiedad SensedPart y el punto de la pieza en intersección más cercana al punto inicial del sensor de línea se muestra en la propiedad SensedPoint. Cuando se produce la intersección, se activa la señal de salida SensorOut. Se ha colocado un sensor lineal en el centro de la herramienta para detectar hasta dónde tiene que descender el robot para coger el objeto. Figura 26. Componente LineSensor Pinza YuMi. ▪ Plane Sensor (Figura 27): define un plano mediante los parámetros Origin, Axis1 y Axis2. El parámetro Origin especifica el origen del plano, y los parámetros Axis1 y Axis2 especifican los ejes del primer y segundo 4.DESARROLLO DEL PROYECTO 28 plano, respectivamente. Cuando la señal de entrada Active está activada, el sensor detecta los objetos que presentan intersección con este plano. Los objetos en intersección se muestran en la propiedad SensedPart y cuando se produce la intersección, se activa la señal de salida SensorOut. Se han colocado dos sensores planos sobre la superficie interna de los dedos de la pinza para detectar cuando se llega a tocar el objeto que se desea coger por ambos lados, y así saber en qué momento debe dejar de cerrarse. Figura 27. Componentes PlaneSensor Pinza YuMi. ▪ Attacher (Figura 28): conectará el objeto Child a Parent cuando se activa la señal Execute. Si Parent es un mecanismo, como en este caso, también es necesario especificar la brida Flange a la que conectarse. Si la entrada Execute está activada, el objeto subordinado se conecta al objeto superior. Si Mount está activado, el objeto subordinado también se montará sobre el objeto superior, con los parámetros Offset y Orientation especificados. La salida Executed se activa al finalizar. Se utiliza para que el objeto detectado por la pinza se mueva junto con ella. Figura 28. Componentes Attacher Pinza YuMi. ▪ Detacher (Figura 29): desconectará el objeto Child del objeto cuando se activa la señal Execute. Si Keep position está activado, la posición se mantendrá. De lo contrario, el objeto subordinado se posiciona con respecto a su objeto superior. Al finalizar, la señal Executed se activa. Se utiliza para que el objeto detectado por la pinza deje de moverse junto con ella, y así poder dejar el objeto en la posición deseada. 4.DESARROLLO DEL PROYECTO 31 golpear la tecla cambiando temporalmente a blanco el color de la tecla golpeada. Figura 32. Componente inteligente Xilófono. Los elementos de los que se compone el componente inteligente del xilófono son los siguientes: ▪ Plane Sensor (Figura 33): define un plano mediante los parámetros Origin, Axis1 y Axis2. El parámetro Origin especifica el origen del plano, y los parámetros Axis1 y Axis2 especifican los ejes del primer y segundo plano, respectivamente. Cuando la señal de entrada Active está activada, el sensor detecta los objetos que presentan intersección con este plano. Los objetos en intersección se muestran en la propiedad SensedPart y cuando se produce la intersección, se activa la señal de salida SensorOut. Figura 33. Componentes Plane Sensor Xilófono. 4.DESARROLLO DEL PROYECTO 32 ▪ Hightlighter (Figura 34): cambia temporalmente el color de Object a los valores RGB especificados en Color (el [255 255 255] es el valor del color blanco en RGB). El color se mezcla con el color original de los objetos tal y como se definen por Opacity. En este caso no se utililiza esta opción, ya que Opacity tiene valor 255. Cuando la señal Active se desactiva, Object recibe sus colores originales. Figura 34. Componentes Highlighter Xilófono. Este componente cuenta con ocho salidas y ninguna entrada (Tabla 9). Cuando se active un sensor se activará también el cambio de color del objeto asociado y se mandará la señal a las salidas del xilófono (Tabla 10). Nombre Tipo de señal DO_0 DigitalOutput DO_1 DigitalOutput DO_2 DigitalOutput DO_3 DigitalOutput DO_4 DigitalOutput DO_5 DigitalOutput DO_6 DigitalOutput DO_7 DigitalOutput Tabla 9. Señales de E/S Xilófono. 4.DESARROLLO DEL PROYECTO 33 Objeto de origen Señal de origen Objeto de destino Señal o propiedad de destino PlaneSensor_1_DO SensorOut Xilofono DO_0 PlaneSensor_2_RE SensorOut Xilofono DO_1 PlaneSensor_3_MI SensorOut Xilofono DO_2 PlaneSensor_4_FA SensorOut Xilofono DO_3 PlaneSensor_5_SOL SensorOut Xilofono DO_4 PlaneSensor_6_LA SensorOut Xilofono DO_5 PlaneSensor_7_SI SensorOut Xilofono DO_6 PlaneSensor_8_DO SensorOut Xilofono DO_7 PlaneSensor_1_DO SensorOut Luz_1_DO Active PlaneSensor_2_RE SensorOut Luz_2_RE Active PlaneSensor_3_MI SensorOut Luz_3_MI Active PlaneSensor_4_FA SensorOut Luz_4_FA Active PlaneSensor_5_SOL SensorOut Luz_5_SOL Active PlaneSensor_6_LA SensorOut Luz_6_LA Active PlaneSensor_7_SI SensorOut Luz_7_SI Active PlaneSensor_8_DO SensorOut Luz_8_DO Active Tabla 10. Conexiones de E/S Xilófono. En la Figura 35 se muestra el resultado final del xilófono, con todas sus salidas y las conexiones de todos los componentes. Figura 35. Diseño Componente inteligente Xilófono. Botonera La botonera sirve para activar alguna entrada del controlador, o para visualizar en todo momento el estado de las diferentes señales. Para ello, contaremos con dieciséis botones que activarán las entradas del controlador, y dieciséis “bombillas” que cambiarán a color rojo cada vez que se active una salida, creando el efecto de que están encendidas (Figura 36). Las dieciséis entradas y salidas corresponden a las dieciséis entradas y salidas de las que cuenta el controlador. Cada uno de los botones que activarán las entradas también son componentes inteligentes que pertenecen a la botonera. 4.DESARROLLO DEL PROYECTO 36 Este componente cuenta con quince salidas y quince entradas (Tabla 11), correspondientes con las quince salidas y las quince entradas con las que cuenta el controlador. Su funcionamiento es el siguiente: - Cuando se active una salida del controlador, se activará también el cambio de color del objeto asociado y se mandará la señal a las salidas de la botonera. - Cuando se active una entrada del controlador, se activará la entrada del botón, haciendo que el botón cambie de posición para simular que está pulsado (Tabla 12). Nombre Tipo de señal Nombre Tipo de señal DO_0 DigitalOutput DO_0 DigitalOutput DI_1 DigitalInput DO_1 DigitalOutput DI_2 DigitalInput DO_2 DigitalOutput DI_3 DigitalInput DO_3 DigitalOutput DI_4 DigitalInput DO_4 DigitalOutput DI_5 DigitalInput DO_5 DigitalOutput DI_6 DigitalInput DO_6 DigitalOutput DI_7 DigitalInput DO_7 DigitalOutput DI_8 DigitalInput DO_8 DigitalOutput DI_9 DigitalInput DO_9 DigitalOutput DI_10 DigitalInput DO_10 DigitalOutput DI_11 DigitalInput DO_11 DigitalOutput DI_12 DigitalInput DO_12 DigitalOutput DI_13 DigitalInput DO_13 DigitalOutput DI_14 DigitalInput DO_14 DigitalOutput DI_15 DigitalInput DO_15 DigitalOutput Tabla 11. Señales de E/S Botonera. Objeto de origen Señal de origen Objeto de destino Señal o propiedad de destino Botonera DI_0 Luz DI_0 Active Botonera DI_1 Luz DI_1 Active Botonera DI_2 Luz DI_2 Active Botonera DI_3 Luz DI_3 Active Botonera DI_4 Luz DI_4 Active Botonera DI_5 Luz DI_5 Active Botonera DI_6 Luz DI_6 Active Botonera DI_7 Luz DI_7 Active Botonera DI_8 Luz DI_8 Active Botonera DI_9 Luz DI_9 Active Botonera DI_10 Luz DI_10 Active Botonera DI_11 Luz DI_11 Active Botonera DI_12 Luz DI_12 Active 4.DESARROLLO DEL PROYECTO 37 Botonera DI_13 Luz DI_13 Active Botonera DI_14 Luz DI_14 Active Botonera DI_15 Luz DI_15 Active Boton DO_0 DO_0 Botonera DO_0 Boton DO_1 DO_1 Botonera DO_1 Boton DO_2 DO_2 Botonera DO_2 Boton DO_3 DO_3 Botonera DO_3 Boton DO_4 DO_4 Botonera DO_4 Boton DO_5 DO_5 Botonera DO_5 Boton DO_6 DO_6 Botonera DO_6 Boton DO_7 DO_7 Botonera DO_7 Boton DO_8 DO_8 Botonera DO_8 Boton DO_9 DO_9 Botonera DO_9 Boton DO_10 DO_10 Botonera DO_10 Boton DO_11 DO_11 Botonera DO_11 Boton DO_12 DO_12 Botonera DO_12 Boton DO_13 DO_13 Botonera DO_13 Boton DO_14 DO_14 Botonera DO_14 Boton DO_15 DO_15 Botonera DO_15 Tabla 12. Conexiones de E/S Botonera. El componente inteligente del botón, perteneciente también a la botonera, cuenta con una salida (Tabla 13). Cuando se active una entrada del controlador, se activará también el cambio de color del objeto asociado y cambiará de posición, simulando que se ha pulsado ese botón. Se mandará la misma señal de entrada del botón a la salida del botón. (Tabla 14). Nombre Tipo de señal DO_0 DigitalOutput Tabla 13. Señales de E/S Botón DO_0. Objeto de origen Señal de origen Objeto de destino Señal o propiedad de destino LogicGate [NOT] Output Posicion OFF Execute Boton DO_0 BotonDO_0 LogicGate [NOT] InputA Boton DO_0 BotonDO_0 Luz boton Active Boton DO_0 BotonDO_0 Posicion ON Execute Boton DO_0 BotonDO_0 Boton DO_0 DO_0 Tabla 14. Conexiones de E/S Botón DO_0. En la Figura 42 se muestra el diseño final de la botonera, con todas sus salidas y las conexiones de todos los componentes. 4.DESARROLLO DEL PROYECTO 38 Figura 42. Diseño Componente inteligente Botonera. En la Figura 43 se muestra el diseño de los botones, con todas sus salidas y las conexiones de todos los componentes. Figura 43. Diseño Componente inteligente Botón. 4.1.3. Configuración del controlador Para crear un controlador, en la pestaña “Posición inicial” encontramos la opción de Controlador virtual, la cual nos proporciona tres posibilidades: - Crear un controlador virtual desde diseño. - Crear un nuevo controlador. - Añadir un controlador ya existente (Figura 44). Para este caso, se crea un controlador virtual en función de un diseño existente, al cual se le ha denominado IRB14000. 4.DESARROLLO DEL PROYECTO 41 El siguiente paso es modificar las entradas y las salidas dadas por defecto. El controlador cuenta con ocho entradas y ocho salidas. Se necesita una salida por tecla del controlador, por lo que se va a aumentar el número de entradas y salidas a dieciséis. Para ello, en la pestaña de “Controlador”, en “Configuración”, se selecciona “I/O System” para abrir el editor de configuración y modificar las entradas y salidas del controlador (Figura 46). Figura 46. Editor de configuración de señales del controlador. A la hora de modificar las señales y las salidas, hay que tener en cuenta el valor que tiene Device Mapping en cada señal. No se puede asignar el mismo valor de Device Mapping a dos señales del mismo tipo a la vez. Si hay una entrada que ya tenga un valor asignado, ese valor solo se puede volver a utilizar para una salida, pero no para otra entrada. Por este motivo se han modificado estos valores que venían por defecto, y se han reservado el rango del 0 al 15 para las entradas y salidas que se van a usar (Figura 47). 4.DESARROLLO DEL PROYECTO 42 Figura 47. Simulador de E/S IRB14000. 4.1.4. Lógica de la estación Dentro de la pestaña “Simulación”, en “Lógica de estación” (Figura 48), se puede diseñar la lógica de la simulación conectando los componentes inteligentes. Figura 48. Diseñar la lógica de la simulación. En la lógica de estación se unen las salidas de la botonera con las entradas del IRB 14000, y las salidas del IRB 14000 con las entradas de la botonera, para que cuando se active alguna salida, se vea el cambio de color de las “luces” de la botonera. Las salidas del xilófono se unen con las entradas del controlador, ya que se necesita esta señal para saber en qué momento llega a golpear una tecla el robot. 4.DESARROLLO DEL PROYECTO 43 Las salidas DO_15 y DO_14 del IRB 14000 se usarán para activar las entradas Cerrar y Abrir de la pinza YuMi del brazo derecho. Para la pinza YuMi del brazo izquierdo se usarán las salidas DO_13 y DO_12. Todo esto se puede ver en la Figura 49 y en la Tabla 15. Figura 49. Lógica de estación. Objeto de origen Señal de origen Objeto de destino Señal o propiedad de destino IRB14OOO DO_15 Pinza_YuMi_R Cerrar IRB14OOO DO_14 Pinza_YuMi_R Abrir Pinza_YuMi_L PiezaDetectada IRB14000 DI_15 Pinza_YuMi_R PiezaDetectada IRB14000 DI_15 Xilofono DO_1 IRB14000 DI_1 Xilofono DO_0 IRB14000 DI_0 Xilofono DO_2 IRB14000 DI_2 Xilofono DO_3 IRB14000 DI_3 Xilofono DO_4 IRB14000 DI_4 Xilofono DO_5 IRB14000 DI_5 Xilofono DO_6 IRB14000 DI_6 Xilofono DO_7 IRB14000 DI_7 IRB14OOO DO_13 Pinza_YuMi_L Cerrar IRB14OOO DO_12 Pinza_YuMi_L Abrir IRB14OOO DO_0 Botonera DI_0 IRB14OOO DO_1 Botonera DI_1 IRB14OOO DO_2 Botonera DI_2 4.DESARROLLO DEL PROYECTO 46 (una herramienta estacionaria), los datos de la herramienta definen tanto la herramienta como la pinza que sostiene el objeto de trabajo. Los datos de la herramienta tool0 que vienen por defecto corresponden al último eje del robot, justo en la muñeca, sin ninguna herramienta incorporada. Para poder posicionar correctamente el tooldata en el centro de los dedos de la herramienta Smart Gripper, se aumenta el valor de posición del eje z a 114,2 milímetros y se crea un dato de herramienta para cada brazo, denominados “Pinza_YuMi_R” y “Pinza_YuMi_L”. Este dato se usará para coger y dejar las mazas. Para golpear el xilófono se necesita un nuevo dato de herramienta que incorpore tanto la herramienta Smart Gripper como las mazas. Para ello se le da un valor al eje z de 314,2, lo que correspondería con el centro de la cabeza de las mazas. Estos datos de herramienta se pueden ver definidos en la estación en la Figura 52. Figura 52. Tooldata de la estación. En la pestaña “Posición inicial”, dentro de “Trayectorias y puntos”, se crea un nuevo dato de herramienta. Se pueden definir diferentes propiedades de la herramienta, como su posición y su carga. Para poder modificar los datos de herramienta, se selecciona “Objeto de trabajo” (Figura 53). 4.DESARROLLO DEL PROYECTO 47 Figura 53. Crear Tooldata. Wobjdata Se utiliza para describir el objeto de trabajo que el robot está soldando, procesando, moviendo por sí solo, etc. Si los objetos de trabajo están definidos en una instrucción de posicionamiento, la posición se basará en las coordenadas del objeto de trabajo. Para esta estación se necesitan tres objetos de trabajo, uno para coger y dejar las mazas, otro para golpear las láminas del xilófono, y otro para realizar movimientos “base” del robot y llevarlo a una posición cercana a la posición de reposo. Estos objetos de trabajo se pueden ver en la Figura 54. Figura 54. Wobjdata de la estación. Los objetos de trabajo se crean en la pestaña “Posición inicial”, dentro de “Trayectorias y puntos”, se crea un nuevo objeto de trabajo. El sistema de coordenadas se puede definir seleccionando tres puntos pertenecientes al 4.DESARROLLO DEL PROYECTO 48 objeto de trabajo deseado, dos puntos para el eje x, cuyo orden definirá el sentido del eje z, y un punto para el eje y (Figura 55). Robtarget Se utiliza para definir la posición del robot y de los ejes externos. Los datos de posición se utilizan en las instrucciones de movimiento para indicar la posición hacia la que deben desplazarse los ejes del robot y los ejes externos. Cada uno de los robtarget pertenece a un objeto de trabajo concreto, definido un punto por cada objeto de trabajo: - uno para las mazas, en la parte superior de la varilla, - otro genérico para todas las láminas del xilófono, - y otro cercano a la posición de reposo del robot. Estos puntos se pueden ver definidos en la estación en la Figura 56. Figura 55. Crear Wobjdata. 4.DESARROLLO DEL PROYECTO 51 4.2. SEGUNDA FASE: Programación RAPID En este apartado se analizará el código RAPID programado para el robot. Se pueden distinguir dos tipos de rutina distintos, procedimientos y rutinas TRAP. A este conjunto de rutinas, junto con un conjunto de declaraciones de datos, se le conoce como módulo. Existen dos módulos distintos, uno para cada brazo, con variables y rutinas muy similares: el módulo “Xilofono_L” para el brazo izquierdo, y el módulo “Xilofono_R” para el brazo derecho. El procedimiento principal de estos módulos es llamado a su vez por otro módulo denominado “M_main”. En la Figura 59 se muestra un diagrama de llamadas de procedimientos, donde se puede ver qué procedimiento es llamado por cuál. Figura 59. Diagrama de llamadas de procedimientos. 4.2.1. Variables globales Las variables declaradas al inicio del código corresponden a los puntos definidos en la estación, explicados en el apartado 4.1.5. Para poder obtener las coordenadas de estos puntos y objetos de trabajo, existe la posibilidad de sincronizarlos con RAPID. En la pestaña “Posición inicial”, en “Sincronizar”, se selecciona la opción de sincronizar con RAPID y se abre una ventana donde poder seleccionar los puntos que se quieren sincronizar, así como el módulo donde se quieren utilizar esos puntos, y el tipo de variable requerida para cada punto. Para poder sincronizar un robtarget, los puntos tienen que estar dentro del Path de “Trayectorias y Posiciones” (Figura 60). 4.DESARROLLO DEL PROYECTO 52 Figura 60. Sincronizar con RAPID. Automáticamente aparecerán los puntos en el módulo seleccionado. Los puntos pertenecientes al módulo de la tarea del brazo izquierdo se muestran en la Figura 61. Figura 61. Puntos de la estación en RAPID T_ROB_R. Los puntos pertenecientes al módulo de la tarea del brazo derecho se muestran en la Figura 62. 4.DESARROLLO DEL PROYECTO 53 Figura 62. Puntos de la estación en RAPID T_ROB_L. A continuación, aparecen en el programa el resto de las variables globales que no son puntos de la estación y que se utilizan en varios procedimientos, o se inicializan fuera de estos. En la Figura 63 se puede ver la declaración de: - Las variables necesarias para las interrupciones del programa. - Variables de tipo syncident para identificar qué instrucciones de MultiMove de los distintos programas de tarea deben estar sincronizadas entre sí. - Variables tipo num, string y bool para el resto de la programación del módulo. Las variables que van a ser leídas o escritas por MATLAB deben estar declaradas como tipo PERS para poder establecer la comunicación. Este tipo de variables se caracteriza porque cada vez que cambia su valor durante la ejecución del programa, también se cambia el valor de su inicialización. Por ello para inicializar siempre estas variables con un valor determinado se igualan a ese valor al principio del programa. 4.DESARROLLO DEL PROYECTO 56 Figura 67. PROC CerrarPinza T_ROB_L. First Este procedimiento se ejecuta siempre al compilar el programa. Es fundamental para poder utilizar las interrupciones. Primero se cancelan todas las interrupciones que podrían haberse activado antes de comenzar la simulación, y después se conecta cada variable de interrupción, previamente definida, con la rutina TRAP deseada. Por último, se asocia una entrada del controlador a la variable de interrupción correspondiente. Este procedimiento es igual para los dos brazos. En el brazo derecho se iguala la variable que contiene el número de la nota pulsada a cero para que comience siempre con ese valor. En la Figura 68 se puede ver el código de este procedimiento. 4.DESARROLLO DEL PROYECTO 57 Figura 68. PROC First T_ROB_R. Escritura Una de las opciones que existen en este programa, es la de leer un fichero que incluye las notas de una canción. Este fichero es leído por MATLAB, el cual se encarga de escribir en RAPID todas las notas en una variable de tipo string. Para poder obtener el valor numérico de cada nota y separar cada uno de los caracteres de la variable string, se utiliza el procedimiento que se puede ver en la Figura 69. Además, también se utiliza para saber si el número de notas almacenadas en el fichero es par o impar. Este procedimiento es el mismo para las dos tareas. 4.DESARROLLO DEL PROYECTO 58 Figura 69. PROC Escritura T_ROB_R. PulsarTeclas Otra opción que existen en este programa es la de pulsar las notas según se van solicitando en tiempo real desde MATLAB. Las láminas que están más cerca del brazo derecho serán golpeadas por el brazo derecho y las notas que están más cerca del izquierdo serán golpeadas por el brazo izquierdo. Para que esto suceda así existe una variable que indica si el brazo está ocupado o no. Solo se golpeará una nota cuando ambos brazos estén libres. A continuación, se muestra este procedimiento para el brazo derecho (Figura 70) y para el brazo izquierdo (Figura 71). Figura 70. PROC PulsarTeclas T_ROB_R. 4.DESARROLLO DEL PROYECTO 61 Figura 74. PROC SyncDejaMaza T_ROB_R. Figura 75. PROC SyncDejaMaza T_ROB_L. SyncPulsarTeclas En la Figura 76 y en la Figura 77 se muestra el código de los movimientos que se utilizan para que el robot golpee las láminas. Para ello se necesita que los brazos estén coordinados, por lo que se usarán dos instrucciones MultiMove por cada movimiento. Sin embargo, para golpear la primera y última nota se requiere de una única instrucción de este tipo, ya que los brazos no empiezan a moverse a la vez. El brazo derecho comenzará golpeando las notas. Para la primera nota, este brazo no necesita ningún tipo de sincronización al comienzo del movimiento, ya que solo está ejecutándose este brazo, por lo que este procedimiento cuenta con una variable que indica el número de nota que se está ejecutando, denominada “paso”. Lo mismo sucede cuando se golpea la última nota. El último brazo que golpee la nota no necesitará la última instrucción de MultiMove. Ahora bien, no siempre será el mismo brazo el último en golpear la nota. Dependiendo de si el número de notas solicitadas es par o impar, acabará el brazo izquierdo o el brazo derecho, y dependiendo de eso un brazo tendrá o 4.DESARROLLO DEL PROYECTO 62 no tendrá la última instrucción de sincronización. Todo esto se contempla en este procedimiento con sentencias “IF”. En el esquema de la Figura 78 se representan los diferentes movimientos que se realizan cuando se llama a este procedimiento dentro de un bucle. En dicho esquema, se muestra de forma visual cuándo se utilizan las instrucciones MultiMove, así como el valor que tiene en cada momento la variable con el número de nota que se ha pulsado. Esto será útil para el momento en el que MATLAB lea esta variable. Si vale distinto de cero, generará el valor de esa nota, y si vale cero sabrá que la próxima vez que cambie su valor se habrá golpeado una nota nueva. Además, en este procedimiento se utiliza un tipo de instrucción que realiza una búsqueda lineal usando el robot, denominada “SearchL”. Para golpear una tecla, el robot realiza tres movimientos básicos: - Desplazamiento a una posición base, un poco más alejado del xilófono que la posición de reposo para que no golpee ninguna nota no deseada. - Desplazamiento a una posición con el valor del eje y correspondiente a la nota que se quiere golpear. - Desplazamiento a otra posición en sentido lineal para buscar la posición en la que se encuentra la lámina del xilófono. Durante el movimiento, el robot supervisa una variable declarada como tipo PERS, la cual actúa como señal digital de entrada. Cuando el valor de la señal cambia al valor solicitado, el robot lee inmediatamente la posición actual, permitiendo obtener las coordenadas de contorno del xilófono. Al utilizar el bus de campo DeviceNet, obtenemos tiempo breves, dado que utiliza el cambio de estado como tipo de conexión. Se utiliza como argumento [\Stop], con el que el robot se detiene lo antes posible, sin mantener el TCP en la trayectoria (paro rígido) cuando el valor de la señal de búsqueda cambia a activo. Sin embargo, el robot se mueve una distancia corta antes del paro y no regresa a la posición buscada, es decir, a la posición en la que cambió la señal. El cambio del valor de la señal digital a supervisar se realiza por medio de interrupciones. Cuando la maza atraviesa el sensor de la tecla que va a golpear, este activa la señal de entrada del controlador de la nota correspondiente y se interrumpe el movimiento con una rutina TRAP que contiene la señal digital a supervisar igualada a uno. Además, esta instrucción también necesita dos robtarget: 4.DESARROLLO DEL PROYECTO 63 - Uno con la posición del TCP y de los ejes externos en el momento del disparo de la señal de búsqueda, denominado en este caso sp. - Otro con el punto de destino de los ejes del robot y de los ejes externos, que en este caso dependerá de la nota solicitada. El resto de los argumentos son los que se utilizan en todas las instrucciones de movimiento, como la velocidad, la herramienta y el objeto de trabajo. Figura 76. PROC SyncPulsarTeclas T_ROB_R. Figura 77. PROC SyncPulsarTeclas T_ROB_L. 4.DESARROLLO DEL PROYECTO 66 Figura 79. Diagrama de bloques del código del programa. 4.DESARROLLO DEL PROYECTO 67 Figura 80. PROC mainXilofono_R T_ROB_R. Figura 81. PROC mainXilofono_L T_ROB_L. 4.2.3. Rutinas TRAP Una rutina TRAP es un conjunto de instrucciones que es disparado por una interrupción. Este programa cuenta con trece rutinas TRAP. Ocho de estas rutinas sirven para cambiar el valor de la señal a supervisar por la instrucción SearchL y el valor de la variable que contiene el número de nota golpeada, en el caso de la tarea del brazo derecho, la cual será leída por MATLAB posteriormente para que el xilófono suene correctamente. Serán activadas por señales de entrada del controlador, activadas por el sensor colocado sobre las láminas. Las cinco rutinas restantes servirán para seleccionar la opción correcta que se ha 4.DESARROLLO DEL PROYECTO 68 solicitado en el menú que contiene el procedimiento principal. Serán activadas por señales de entrada del controlador, activadas por el usuario a través de la interfaz de MATLAB. Si se activa la opción que finaliza el programa, se activará una rutina que parará el robot en el instante en el que es activada, y a continuación volverá a su posición base, a modo de seguridad. Figura 82. Rutinas TRAP T_ROB_R. Figura 83. Rutinas TRAP T_ROB_L. 4.DESARROLLO DEL PROYECTO 71 Después se establece la conexión, y ya se puede acceder al espacio de nombres. Todos los servidores OPC deben publicar un espacio de nombres, que consiste en una disposición del nombre de cada elemento del servidor (también conocido como ID de elemento) asociado con ese servidor. El espacio de nombres proporciona el mapa interno de cada dispositivo y ubicación que el servidor puede monitorear y/o actualizar [25]. Se selecciona el elemento del que se quiere obtener su ID y se añade a un grupo en el servidor para obtener su nombre dentro del servidor, como se puede ver en la Figura 86. Figura 86. Identificador completo de una variable en el servidor OPC. Una vez hecho esto, se programan los comandos suficientes en MATLAB para establecer la conexión, los cuales aparecerán dentro del HMI, y se activarán al seleccionar el botón correspondiente a la conexión. Para ello, se siguen los pasos recogidos en la Tabla 19. Después ya se podrían utilizar las funciones de MATLAB “write” y “read” según se quiera escribir o leer. 4.DESARROLLO DEL PROYECTO 72 Paso 1 Crear un objeto de cliente de acceso a datos de OPC. Paso 2 Conectarse al servidor de acceso a datos de OPC. Paso 3 Crear un grupo de objetos de acceso a datos OPC. Paso 4 Explorar el espacio de nombres del servidor. Paso 5 Agregar elementos de acceso al grupo de datos OPC. Paso 6 Configurar las propiedades del grupo para el registro. Paso 7 Desconectar. Tabla 19. Pasos de comunicación OPC. 4.DESARROLLO DEL PROYECTO 73 4.4. Manual de usuario del HMI Para solicitar las notas de un modo más dinámico, se ha desarrollado una Interfaz Hombre-Máquina (HMI) con la que se puede controlar toda la simulación. A continuación, se desarrolla el manual de la interfaz de usuario que se ha creado con la aplicación de MATLAB “AppDesigner”. 4.4.1. Descripción La presente interfaz de usuario se ha creado con el fin de poder solicitar las notas en tiempo real de una manera más sencilla, similar a la de tener un teclado donde poder pulsar las notas requeridas en cada momento, así como de poder escoger la acción que se quiera ejecutar, ya sea coger las mazas, leer las notas de un fichero que incluye el número de cada nota de una canción entera, o dejar las mazas en su posición inicial. Para poder seleccionar cada una de las acciones que realiza el robot, es necesario que haya una comunicación entre la interfaz y el robot, por lo que existe un modo de conexión con el que se inicializa la comunicación, y un modo de desconexión, con el que finaliza tanto la comunicación como la simulación y se envía inmediatamente el robot a su posición de reposo, independientemente de lo que esté haciendo en ese momento, a modo de seguridad para el usuario. 4.4.2. Datos de entrada Para poder utilizar esta interfaz de usuario al completo, es necesario que exista un fichero en formato TXT en la misma carpeta en la que se encuentra la interfaz. Dentro de este fichero están escritos el número correspondiente a cada nota de una canción, separadas por una barra. La interfaz se ha programado de tal manera que no pueda leer más de cuatro canciones, y cada secuencia de notas esté separada por una fila, en la que aparecerá el título de la canción escrita, como se puede ver en la Figura 87. 4.DESARROLLO DEL PROYECTO 76 A continuación, se explica la funcionalidad que tiene cada uno de los botones con los que cuenta esta interfaz. Conectar Este botón es el primero que debe ser pulsado para poder utilizar esta interfaz. Establece la comunicación con el robot e inicia la lectura de la variable que indica las notas que son golpeadas por el robot, la cual va a ser constante durante toda la simulación, ejecutándose en paralelo con el resto de funciones, las cuales actuarán como interrupciones. Por defecto, la luz que aparece al lado de este botón aparece de color rojo, pero cuando se pulsa este, luce de color verde, como se puede ver en la Figura 91, para saber en todo momento si estamos estableciendo una comunicación con el robot o no. Figura 91. Conectar al servidor HMI. En la Figura 92 se puede ver el código de la función propia de este botón, donde se siguen los pasos reflejados en la Tabla 19 para establecer una comunicación OPC. 4.DESARROLLO DEL PROYECTO 77 Figura 92. Función del botón Conectar HMI. Coger Mazas El botón denominado “Coger Mazas”, el cual se puede ver recuadrado en rojo en la Figura 93, se pulsa para llamar al procedimiento en el que están 4.DESARROLLO DEL PROYECTO 78 programados los movimientos del robot para poder coger las mazas cuando se encuentran en su posición inicial. Figura 93. Coger Mazas HMI. En la Figura 94 se puede ver el código de la función propia de este botón, donde se activa y desactiva la señal de entrada del controlador correspondiente a la primera opción que aparece en el procedimiento principal del programa. Figura 94. Función del botón CogerMazas HMI. Pulsar notas en tiempo real Para poder pulsar cualquier nota que se quiera solicitar en tiempo real, se han creado ocho botones, uno para cada tecla del xilófono, del mismo color que éstas y con el nombre de la nota a la que corresponden para semejar la apariencia del xilófono real, y para darle una apariencia mucho más visual y llamativa, como se puede ver en la Figura 95. Cada vez que se pulse un botón, el brazo del robot al que corresponda esa nota golpeará la lámina correspondiente. Si se pulsan notas entre do y fa, se moverá el brazo derecho, mientras que si se pulsan notas de sol a do se moverá el brazo izquierdo, por motivo de la cercanía a estas. 4.DESARROLLO DEL PROYECTO 81 Figura 99. Dejar Mazas HMI. En la Figura 100 se muestra el código de la función propia de este botón, donde se activa y desactiva la señal de entrada del controlador correspondiente a la cuarta opción que aparece en el procedimiento principal del programa. Figura 100. Función del botón Dejar Mazas HMI. Desconectar El botón de desconectar, el cual se puede ver en la Figura 101, es el último que debe ser pulsado para poder finalizar la simulación y desconectar la comunicación con el robot. Al ser pulsado, la luz volverá a ser de color rojo, indicando que ya no existe comunicación. Figura 101. Desconectar al servidor HMI. 4.DESARROLLO DEL PROYECTO 82 La Figura 102 muestra el código de la función correspondiente al botón “DESCONECTAR”, donde se puede ver que se iguala la variable “stop” a uno para finalizar la lectura de las notas que son golpeadas, se activa la entrada del controlador correspondiente a la rutina TRAP que contiene la última opción del procedimiento principal para finalizar la simulación, y se desconecta la variable denominada “da”, utilizada para crear un objeto de cliente de acceso a datos de OPC. Figura 102. Función del botón Desconectar HMI. 4.4.5. Paso a paso A continuación, se enumeran los pasos a seguir a la hora de utilizar esta interfaz de usuario, una vez se ha iniciado el servidor con la aplicación “ABB IRC5 OPC Configuration”, y el controlador del robot IRB14000 está en estado activo. PASO 1: Iniciar la simulación del robot desde RobotStudio. PASO 2: Iniciar la simulación de la interfaz de usuario desde MATLAB. PASO 3: Pulsar el botón “CONECTAR” para iniciar la comunicación. PASO 4: Pulsar el botón “Coger Mazas” para que el robot coja las mazas situadas sobre el soporte de mazas, en la posición inicial. PASO 5: Dependiendo de si se quiere que el robot toque una canción de las incluidas en el menú, o si se quiere que toque las notas que se van solicitando en tiempo real, se seguirá uno de los siguientes pasos: - PASO 5.1: Para leer las notas del fichero: - PASO 5.1.1: Seleccionar una de las canciones que aparecen en el menú. - PASO 5.1.2: Pulsar el botón “Leer Fichero” para que el robot comience a tocar la canción seleccionada. 4.DESARROLLO DEL PROYECTO 83 - PASO 5.2: Pulsar cualquiera de los botones denominados con el nombre de la nota a la que se corresponde ese botón, en función de la nota que se quiera que toque el robot. PASO 6: Pulsar el botón “Dejar Mazas” para que el robot deje las mazas sobre el soporte de mazas, en la posición inicial. PASO 7: Pulsar el botón “DESCONECTAR” para que el robot vuelva a su posición base y se finalice la comunicación.
Docsity logo



Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved