CAPÍTULO 7 LENGUAJE DE PROGRAMACIÓN DE BRAZO ROBÓTICO 7.1 Fundamentos de programación. Un robot manipulador es bien sabido que se trabaja con la programación en el que se define un proceso donde indica una secuencia de acciones en el cual se llevara acabo una tarea. Estas acciones consisten en moverse a puntos predefinidos y manipular objetos del entorno. Es importante tener en cuenta la memoria del sistema para ejecutar un programa, en donde se utilizan variables para el sistema de control cinemático y dinámico del robot que tienen como objetivo manipular los accionamientos del robot a partir de especificaciones del movimiento que se le proporciona y las entradas-salidas del sistema para sincronizar el robot. La programación es la herramienta con que cuenta el usuario para acceder a las diversas prestaciones del robot, existiendo una relación directa entre las características de la programación y del robot. Programar un robot consiste en indicar paso por paso las diferentes acciones para mover de manera automática el brazo a un punto o abrir y cerrar la pinza, etc. La flexibilidad en la aplicación del robot y, por tanto, su utilidad dependerá en gran medida de las características de su sistema de programación. 7.2 TIPOS DE PROGRAMACIÓN. Existen diversos métodos para realizar la programación de los robots, algunas atienden a la potencia del método, mientras que otros se emplean para indicar la secuencia de acciones a realizar. De acuerdo con este criterio, un robot puede ser programado mediante el guiado o procedimiento textual. 7.2.1 Programación por guiado Este tipo de programación requiere de una determinada tarea para ser desarrollada por el robot, un ejemplo es determinar una trayectoria de manera manual durante cierto tiempo, mediante configuraciones adoptadas y repetirlo de forma automática. Para poder guiarlo por las trayectorias o puntos deseados se utilizan diferentes soluciones, como pueden ser el guiado básico y guiado extendido. Guiado básico: Es una secuencia de puntos, que son ejecutados por la unidad de control donde los interpola para generar dicha trayectoria, un ejemplo de esto, los robots de pintura donde su unidad de control ejecuta los puntos con una frecuencia alta en automático. Guiado extendido: Permite la especificación de datos como la velocidad, el tipo de trayectoria, la precisión de almacenamiento de puntos, control de flujo del programa, atención de entradas/salidas binarias, etc. El dispositivo de enseñanza suele estar constituido por botones, teclas, pulsadores, luces indicadoras, ejes giratorios o joystick.
Ventajas:
fáciles de aprender requiere de poco espacio de memoria para almacenar información
Vesventajas:
necesidad de utilizar el robot entorno para realizar la programación dificultad para realizar modificaciones
7.2.2 Programación textual Es la indicación de una tarea a realizar por el brazo robótico utilizando un lenguaje de programación especifico que corresponde a ordenes que son editadas y después ejecutadas, por lo que se obtiene un texto de programa. Esta programación textual se clasifica en tres niveles: robot, objeto y tarea. Ventajas:
especifica diferentes movimientos, trayectorias capacidad de relación con el entorno.
Desventajas.
requiere de conocimientos técnicos de programación experiencia en la realización de estrategias de movimiento basado en la información sensorial.
Nivel robot En los lenguajes de este nivel es el programador el encargado de seleccionar las funciones necesarias y su secuencia para realizar la tarea, se especifican movimientos como la velocidad, direcciones de aproximación y salida, apertura y cierre de pinza, entre otros datos que debe realizar el robot. Existen varios lenguajes de programación, entre ellos se pueden destacar los siguientes: AL AML LM VAL II V+ RAPID
Nivel objeto Es aquella en que sólo se especifica el objetivo final, sin necesidad de dar información sobre los resultados intermedios. Este nivel se disminuye la dificultad de programar debido a que se realiza de manera más cómoda porque se manejan instrucciones en función del objeto a manejar. Necesitan de un planificador de tareas, donde se consulta una base de datos y poder generar las instrucciones a nivel robot. En este nivel se tiene un grado de dificultad para desarrollar los lenguajes, pero se pueden encontrar los siguientes: LAMA AUTOPASS RAPT Nivel tarea Engloba lenguajes de alto nivel en los que el programador especifica las tareas en términos de relaciones de posición entre las piezas a ensamblar, donde se especifica una sola sentencia para mover al robot, requieren de modelos geométricos completos del entorno de trabajo, para que realicen tareas más complejas. 7.3 REQUERIMIENTOS DE UN SISTEMA DE PROGRAMACIÓN DE ROBOTS. Tradicionalmente los requerimientos generales para un sistema de programación de robots son los siguientes: 7.3.1 Entorno de programación Es de gran importancia, el contar con un entorno de programación adecuado a las necesidades. Para programar un manipulador es complicado interactuar con el entorno debido a procesos continuos de prueba y error. A consecuencia de esto, la mayoría de los sistemas de programación son de tipo interpretación, pudiéndose realizar un seguimiento paso a paso de lo programado en cada momento. Eliminando las caracterizas de editar-compilar-ejecutar generando demasiado tiempo. Por lo que un sistema de programación debe presentar una buena capacidad de depuración y de ejecución paso a paso, teniendo en cuenta la interacción en tiempo real que existe entre los distintos equipos de la célula con el controlador del robot. También es aconsejable de la monitorización continua del desarrollo del programa, como los sistemas operativos multitarea, permitiendo el control simultaneo y sincronizado de varios robots o del robot con otros sistemas.
7.3.2 Modelado del entorno Es la representación que tiene el robot de los objetos con los que interacciona, limitándose a características geométricas: posición y orientación de los objetos, y en ocasiones a su forma, dimensiones, peso, etc. Para definir la posición y orientación de los objetos del modelo, lo más frecuente es asignar a cada objeto de manera solidaria un sistema de referencia, de manera que la posición y orientación de este sistema referidos a un sistema base, normalmente denominado sistema del mundo, definiendo de manera única las del objeto. Algunos modelos del entorno permiten establecer relaciones entre objetos. estas establecen la posible unión física entre los objetos. dos objetos pueden ser independientes (el movimiento de uno no afecta al otro), tener dependencia de unión rígida (el movimiento de uno implica el del otro y viceversa) o tener una dependencia de unión no rígida (el movimiento de uno implica el del otro, pero no al revés). 7.3.3 Tipos de datos Cuenta con datos convencionales (enteros, reales, booleanos, etc.), operaciones de interacción con el entorno, como son, por ejemplo, los que especifican la posición y orientación de los puntos y objetos a los que debe acceder el robot. Utilizando coordenadas articulares para posicionar y orientar su extremo como el objeto en cuestión. Utilizando coordenadas cartesianas después de haber asociado un sistema de referencia de coordenadas al objeto, su posición se describe por las coordenadas cartesianas del origen, mientras que la orientación admite diferentes tipos de representación:
Ángulos Euler: Cuaternios: Matriz noa:
La representación conjunta de posición y orientación del extremo del robot se consigue agrupando las tres coordenadas de posición con alguno de los métodos de representación de la orientación. Los diferentes sistemas de programación existentes emplean un o varias de estas representaciones:
VAL II (Staubli) emplea () () AML (IBM) emplea () () ARLA (ABB) emplea () () RAPID (ABB) emplea () ()
V++ (ADEPT) emplea () () AL (STANFORD) emplea () ()
En VAL II, V+ y RAPID también existe la posibilidad de emplear matrices de transformación.
7.3.4 Manejo de entradas/salidas. Para el manejo de salidas binarias el robot posee instrucciones de activación o desactivación de las mismas. En cuanto a las entradas, el robot tiene capacidad de leerlas y controlar el flujo del programa en función de su valor, como o saltos condicionales. Algunos sistemas comienzan su ciclo de trabajo cuando le llega una señal binaria automáticamente. Una utilización especial de las entradas binarias es la generación de interrupciones. Una utilización a mayor nivel de la comunicación del robot con su entorno lo constituye el empleo de comunicaciones de red o conexión punto a punto, permitiendo generar al robot en un sistema informático general controlando su funcionamiento desde un computador externo. Un ejemplo de estos sistemas son RAPID de ABB y VAL II de Staubli. También se aplica en la integración de sensores para la programación de robots de muy diversas formas, entre las que se pueden destacar la siguientes:
Modificar la trayectoria. Elegir entre diversas alternativas. Obtener la identidad y posición de objetos y sus características. Cumplir con restricciones externas. Control de movimiento. En la programación se debe especificar el movimiento del robot.
Es importante incluir los siguientes parámetros para el control de movimiento: 1. La velocidad: Suele ser frecuente indicarla en la propia instrucción de movimiento como tanto por ciento de una velocidad base definida aparte, de modo que pueda alterar la velocidad en el programa 2. La trayectoria: Puede ser de tipo punto a punto, coordinadas o trayectorias continuas, englobando este último caso a la línea recta, interpolación circular y otras. 3. El control (cinemático - dinámico) del robot: Recibe las referencias de posición procedentes del programa, no admitiendo una referencia hasta que el extremo del robot no alcanza la referencia en vigor con la precisión indicada. Se ha de tener en cuenta la posibilidad de que el robot al recorrer la trayectoria generada tenga que pasar por un punto singular, ya sea
porque los valores de sus ejes no estén definidos de forma biunívoca o porque alguno de ellos deba alcanzar una velocidad excesiva para mantener la posición, orientación y velocidad deseadas del extremo. Algunos sistemas, como el RAPID, permiten especificar qué tipo de interpolación se debe utilizar de forma general durante la ejecución de una trayectoria cuando se ha de pasar por estos puntos singulares. 7.3.5 Control de flujo de ejecución del programa. Se emplean estructuras de bucles (for, repeat, while, etc.). Así como la capacidad de procesamiento en paralelo, tanto para el control de uno o varios robots bajo ordenes de un solo programa.
7.4 LENGUAJE DE PROGRAMACIÓN RAPID El lenguaje RAPID, fue desarrollado en el año 1994 por la empresa ABB, constituye un lenguaje de programación textual de alto nivel que incluye características como la utilización de funciones y procedimientos, la posibilidad de usar rutinas parametrizables, la estructura completamente modular del programa o la posibilidad de declarar rutinas y datos como locales o globales. Un programa escrito en RAPID consiste en una serie de instrucciones que describen el trabajo del robot. cada instrucción tiene asociada una serie de parámetros que definen de forma completa la acción a realizar. Estos parámetros específicos a cada instrucción pueden ser valores numéricos, referencias a un dato, expresiones de datos, llamadas de funciones o cadenas de caracteres. Los programas se desarrollan en la paleta de programación bajo un entorno de menús dirigidos. A través del joystick situado en la propia paleta y de los diversos botones adicionales (tipo de movimiento, ejes externos, entradas/salidas) se puede realizar entrada de datos por guiado e interaccionar con el entorno en cualquier momento. Los programas también pueden ser escritos desde un PC con un editor de texto convencional. Los programas desarrollados en RAPID se denominan tareas e incluyen el programa en si junto con varios módulos de sistema, que integran rutinas y datos de tipo general. 7.4.1 Características de lenguaje de programación RAPID. Para los módulos existen tres tipos de rutinas o subprogramas posibles:
Procedimiento: Rutina que no devuelve ningún valor y se utiliza como una instrucción. Función: Rutina que devuelve un dato de tipo específico y que se utiliza como una expresión. Rutina TRAP: Son rutinas que se asocian a interrupciones y se ejecutan cuando estas se activan.
Los datos a manejar pueden ser dos tipos:
Tipo de dato atómico: No se definen en función de otro tipo y no se puede dividir en diferentes componentes. Tipo de dato registro: Está compuesto por una serie ordenada de componentes con sus respectivos nombres. Los componentes pueden ser a su vez de tipo atómico o de tipo registro.
Estos datos, que se pueden definir como globales o locales tanto en módulos como en subrutinas, pueden ser definidos como: Constantes: (CONS) representan datos de un valor fijo a los que no se puede reasignar un nuevo valor. Variables: (VAR) son datos a los que se les puede asignar un nuevo valor durante la ejecución del programa. Persistentes: (PERS) son variables en las que cada vez que se cambia su valor durante la ejecución del programa, también se cambia el valor de su inicialización. 7.4.2 Tipos de datos con los que se trabaja son:
Numérico: num. Lógico: bool. Cadena: string.
7.4.3 Estructuras de lenguaje de programación. Es importante destacar la existencia de una serie de estructuras predefinidas de datos con distintos campos para la utilización por parte del usuario, como puede ser: Confdata Descripción: estructura para especificar la configuración del robot. Campos: cf1:cuadrante del eje 1 Ejemplo: VAR confdata conf1:=[1,-1,0] Loaddata Descripción: Describe la carga colocada en la muñeca del robot. Campos: mass: Peso de la carga en Kg cog: Orientación de gravedad de la carga.
aom: Orientación de los ejes de inercia en el centro de gravedad expresada como cuaternios. Ejemplo: PERS loaddata pieza=[5,[50,0,50],[1,0,0,0],0,0,0]; Tooldata. descripción: Estructura para especificar las características de una herramienta. campos: robhold: Define si el robot tiene la herramienta o no. tframe: Sistema de coordenadas de la herramienta (posición y orientación de la herramienta). tload: Dato tipo loaddata. Ejemplo: PERS tooldata 23,0,75],[1,0,0,0],0,0,0]]
pinza:=[TRUE,[[97,0,220],[0,924,0,0,383,0]][5,[-
Robtarget Descripción: Se utiliza para definir la localización del robot y de los ejes externos. Campos: trans: Desplazamiento en x, y, z del sistema de coordenadas. rot: Rotación del sistema de coordenadas como cuaternios. robconf: Configuración del robot (cf1, cf4, cf6 y cfx). extax: Posición de los ejes externos. Ejemplo: VAR robtarjet posicion:= [600,500,225],[1,0,0,0],[1,1,0,0],[11,12,9E9,9E9,9E9,9E9]];
[
Motsetdata. Descripción: Se utiliza para la definición de algunos parámetros de movimiento que afecta a las instrucciones de posicionamiento del programa. Campos: Vel.oride: Velocidad como porcentaje del programa vel.max: Velocidad máxima en mm/s sing.wrist: Desviación de la orientación de la herramienta para evitar singularidad de la muñeca. sing.arm: Desviación de la orientación de la herramienta para evitar singularidad en el brazo.
El sistema de programación RAPID tiene una gran variedad de instrucciones para controlar el flujo de ejecución del programa, destacándose: las llamadas de rutinas con distintos parámetros, instrucciones de repetición tipo FOR, tipo IF, tipo WHILE. Además de contar con operaciones aritméticas (asignación, +, *, /) que se pueden asociar números para vectores o matrices, con funciones como son: Add, Clear, Incr, Decr, Abs y operadores booleanos para el tratamiento de variables tipo bool.
7.5 Parámetros generales de movimiento del robot:
AccSet: Máxima aceleración permitida. SingArea: Método de interpolación. GripLoad: Peso de la pieza a manipular. VelSet: Velocidad máxima y sobre velocidad. Intrucciones de movimiento generales: MoveC: Mover el TCP de manera que este describa un circulo. MoveJ: Mover el robot con trayectoria articular (isócrona o coordinada en articulares). MoveL: Mover el TCP del robot describiendo una línea recta. Variables de tipo general predefinido: MoveJ [\Conc]: Ejecución concurrente. Se ejecutan las siguientes instrucciones a medida que el robot se mueve. ToPoint: Punto destino del robot (tipo de dato: robtarget). Si se graba directamente por guiado aparecerá un asterisco. Speed: velocidad que afecta al movimiento. [\V]: Velocidad específica del TCP. [\T]: Tiempo en segundos que debe tardar en realizar el movimento. Zone: Zona del movimiento para que se empiece a ejecutar la siguiente instruccion. [\Z]: Presicion del TCP. Tool: la herramienta en uso. [\WObj]: Objeto de trabajo con el que el movimiento está relacionado.
Los movimientos se programan a base de posiciones definidas, es decir, se le dice al robot que se mueva desde donde encuentra a una posición determinada. El sistema permite manipular señales de entrada/salida de diversas maneras. Se definen los nombres de las señales en los parámetros del sistema y a través de una llamada a la función correspondiente se puede leer su valor (DInput) o modificarlo (SetDo). Se permite también la comunicación con la paleta de control, tanto para mostrar mensajes en pantalla (TPWrite), como para leer la información que se introduzca a través de ella (TPRedStr). Existe la posibilidad de que el programador controle las acciones a realizar cuando en una determinada subrutina aparece un error no previsto.