L a programaci6n de un robot puede definirse en su expresi6n basica, como una trayectoria de movimientos que se escriben en un lenguaje espedfico, que se almacena enlamemoria del sistema decontrol. El sistema deprogramaci6n deun robot industrial eslainterface que permite el acceso alas capacidades funcionales. El elemento control dentro deeste sistema, es ellenguaje deprogramaci6n, queesel medio decomunicaci6n entre el hombre yel robot. Lastendencias eintereses delos sistemas deprogramaci6n son~ 1.- Proporcionar una mayor capacidad expresiva quepermita una programaci6n masfacil delastareasarealizar por el robot, mejorando laflexibilidad enlossistemas demanufactura 0encualquier proceso productivo en el que seutilice. 2.- Integrar funciones quepermitan unamayor adaptaci6n del robot asuentorno. Al integrar funciones complejas depercepci6n enel sistema decontrol del robot, se realiza la adaptabilidad. Algunas de estas funciones pueden ser: visi6n artificial, capacidad demedir distancias, etc. 3.- Reducir los costos desistemas informaticos deuna manera continua. Los robots actuales reciben informaci6n (datos de entrada), que proviene de Sensores y de otros dispositivos externos. Pueden enviar senales a elementos de maquinas 0equipos que operan en lacelda defabricacion. Ademas, pueden tomar decisiones, comunicarse con otras computadoras para recibir yenviar informacion relacionada con datos yproblemas deproduccion. Laprogramaci6n por guiado es tal vezlamas sencillayconsiste enque el operador mueve manualmente laherramienta 0elemento terminal del robot atraves de la secuencia de operaciones requeridas, que posteriormente seran repetidas dcli- camente, tal ycomo el operador haTealizado lasecuencia (veaseFigura 4.1). Aeste tipo de programacion tambien seIeconoce como programaci6n no textual, modo deensenanza por aprendizaje 0programacion enlinea (on line). En esta tecnica de programacion no existe lenguaje formal de programaci6n; existe dependencia delaestructura fisicadel robot ylaprogramaci6n sellevaacabo enbase alos convertidores Ana16gico-Digital (A/ D) yDigital-Ana16gico(D/ A), que relaciona el robot con la unidad de control que esta constituida por unidades cableadas 0por microprocesadores, que generalmente hayuno por articulaci6n. Laventaja deestatecnicadeprogramaci6n esqueunoperador noexperimentado puede hacer el programa, yaque prescinde de simbolos abstractos. Por otro lado, tiene ladesventaja de que el robot queda sujeto auna programaci6n de secuencia rigida, sinlaposibilidad dehacer modificaciones 0detomar decisiones inteligentes conel ambiente del robot atravesdeSensores. Ademasestaprogramaci6n estediosa, peligrosa, ineficiente y subutilizada, yaque mientras el robot es programado, no realiza trabajo util. Tampoco esposible programar mientras el robot estarealizando sutarea. Aeste tipo detrabajo seIellama "trabajo enlinea" (on line). Aestatecnica seIeconoce t'.lmbiencomo metoda depaso directo yseutiliza cOnfrecuencia para la programaci6n de trayectorias coQtinuas complejas. Un ejemplo de ella, es la aplicaci6n derobots enel pintado por pulverizaci6n, para10cual el elemento terminal (pistola depintura pulverizada), debe realizar unmovimiento (trayectoria) quesigue un ciclo preestablecido para aplicar la pintura de una manera uniforme sobre la superficie total arecubrir conlapintura. Otro ejemplo deestatecnica deprograma- ci6n, eslaaplicaci6n delasoldadura dearco, paralacual serequiere laprogramaci6n deuna trayectoria continua. Laprogramaci6n gestual, essimilar alaanterior. Enestatecnica, el robot esguiado atraves de una cajade control, teclado, palanca de mando u otros medios (vease Figura 4.2a. EI empleo de estos dispositivos de guiado pueden ser necesarios por motivos deincomodidad 0insalubridad delatarea arealizar. Enestos casos, lacaja de control (Teach Pendat) impulsa las articulaciones del robot acada uno de los puntos deseados enel espacio detrabajo yseregistran dichos puntos enlamemoria del sistema de control para reproducirse cuando sea necesario. Lacajade control (vease Figura 4.2b) para controlar los movimientos del robot, cuenta con conmu- tadores demando, haciendo que el robot sedesplace en coordenadas cartesianas 0 enpolares. Aestatecnica deprogramaci6n seIeconoce tambien como guiado directo odeaprendizaje directo yesel masutilizado enlaactualidad. --:------l r =; ; : : J _ _ _ _ I El desarrollo de estos robots guiados esta orientado adisminuir lapeligrosidad, la subutilizaci6n del robot y de su sistema de programaci6n, lograndose grandes mejoras en el metodo deaprendizaje delos robots enlarealizaci6n desus tareas. Lasventajas deun sistema deprogramaci6n gestual son lassiguientes: 1.- Requiere programadores modestos, con pocos conocimientos informaticos. 2.- Sencillez conceptual del sistema deprogramaci6n. 3.- Bajocosto del sistema informatico. Lasdesventajas deestatecnica deprogramaci6n son lassiguientes: 1.- Operaci6n compleja cuando lastrayectorias son largas. 2.- Programaci6n enlinea. Estoquiere decir queel robot no tiene lacapacidad de trabajar mientras seefecrualaprogramaci6n, 10cual hace quebajelaproductividad. 3.- Nohay intercambio deprogramas con otros robots instalados. 4.- Complejidad desincronizaci6n enlaslineas deproducci6n. 5.- Precisi6n limitada. Como puede apreciarse, lasdesventajas son mayores quelasventajas, por 10que serecomienda laimplementaci6n derobots con este tipo deprogramaci6n atareas que conceptual y operativamente sean simples como los ejemplos mencionados anteriormente. Tratando de aprovechar lasventajas delaprogramaci6n gestual, se han desarrollado algunos sistemas que potencien dichas ventajas; para ello, sehan propuesto extensiones que tiendan areducir laslimitaciones. Deeste modo, tras el aprendizaje, segenera automaticamente un programa en lenguaje textual sobre el que sepuede intervenir para perfeccionar 0modificar el programa. Latecnica de programaci6n textual es una programaci6n que utiliza un lenguaje (texto) para-definir lasecuencia delasoperaciones del cicIodetrabajo (veaseFigura 4.3). Laprogramaci6n textual, implicalautilizaci6n deun lenguaje deprogramaci6n especializado, que permite generar facilmente movimientos ytrayectorias. Paraello se utiliza una terminal de computadora, para introducir las instrucciones del pro- grama en el sistema decontrol. Tambien seemplea una cajadecontrol para definir lasposiciones delos diferentes puntos delatrayectoria detrabajo requerida. Laprogramaci6n textual es una programaci6n fuera de linea (off line), 10cual quiere decir quemientras serealizalaprogramaci6n, el robot puede estar ejecutando alguna tarea yaprogramada. Con este tipo de programaci6n (off line), el programa completo puede introducirse enlacomputadora parasuposterior cargaenel sistema decontrol del robot. Estoagilizalastareas del robot al hacer posible uncambio rapido deun cicIode trabajo aotro. En1aprogramacion anive1robot seespecifican 10smovimientos del robot, as! como 1asacciones comp1ementarias para 1area1izacion de latarea requerida. Laconfigu- racion de1asecuencia del robot contiene sentencias (ordenes 0comandos detexto), que definen los movimientos y las acciones del entorno atraves de Sensores que implican senales binarias (si Ino). Las funciones principa1es de 10s1enguajes de programacion de este nivel de programacion, son 10ssiguientes: 1.- Definir los movimientos del robot. 2.- Acceder alainformaci6n delos Sensores. 3.- Actuar sobre equipos perifericos a1robot 0sobre otros robots. Lasventajas de1aprogramaci6n anivel robot, son lassiguientes: Posibilidad deespecificar movimientos ytrayectorias diversas. Posibilidad deinteraccionar con el entorno. Posibilidad deprogramar mientras el robot esta trabajando. Posibilidad desincronizaci6n con otros equipos deproducci6n. Posibilidad deefectuar movimientos precavidos. Posibilidad deseleccionar acciones alternativas. Lasdesventajas de1aprogramacion anive1robot son lassiguientes: Requiere expertos en programaci6n en computadoras. Requiere amplios conocimientos yexperiencia en el proceso productivo. Programaci6n muy laboriosa. Requiere preyer incidentes. Imposibilidad derealizar cilculos aritmeticos complejos. Capacidad limitada decomunicaci6n con otras computadoras. Incapacidaddeexpansiondelossistemasdesoftw{Jre . IncapacidaddeutilizarSensorescomplejos. Enlatecnica deprogramaci6n textual anivel detarea las operaciones que realiza el robot se definen como tareas de muy alto nivel, por ejemplo: atornillar, insertar, inspeccionar, introducir piezaXenun agujero Y,etc. Los lenguajes de programaci6n a nivel tarea requieren de la definici6n del entorno, delacinematica del robot ydelastareas elementales. Ademas, requiere de modelos geometricos completos del entorno, delos perifericos ydel mismo robot, de manera que sepuedan generar en forma automatica, movimientos yestrategias de operaci6n. Este tipo de programaci6n permite que el programador ignore los detalles de lamanipulaci6n del robot, haciendo posible una mayor productividad . .Por consiguiente, el programador sera esencialmente experto en el proceso de producci6n. Estatecnica deprogramaci6n eslademayor relevancia paralosprocesos deCAD/CAM. Losprogramas del robot pueden ser cargados desde unaterminal decomputadora atraves deun sistema decomunicaci6n RS232similar al delos sistemas deControl Numerico Directo (DNC) para accionar maquinas CNC en red network. Latecnica de programaci6n anivel de tarearequiere de sistemas informaticos capaces de generar automaticamente las operaciones intermedias ydefinirlas deta- lladamente. Aqui nos estamos refiriendo alageneraci6n automatica de planes de acci6n enInteligencia Artificial (AI). Si enladefinici6n delatareaestin implicadas las operaciones intermedias arealizar, el sistemainformitico s610debegenerar automiti- camente sudefinici6n detallada. Aestetipo deprogramaci6n seIedenomina denivel deobjeto, yaque seespecifican lasoperaciones unitarias aefectuar sobre losobjetos (situar, insertar, girar, etc.). El conjunto decomandos deoperaci6n seingresan enla computadora utilizando lenguajes ypaquetes software, tales como el AMi yAUTOPASS, basados generalmente en compiladores como Pascal. Asimismo los software anivel deobjeto son altamente (niles. Lossistemas CAD/CAM han influido sobre laprogramaci6n de los robots, motivo por el cual han hecho su aparici6n los simuladores grificos del robot ydelatarea a realizar. Lossimuladores graficos cuentan conunmodelo geometrico deobjetos, un modelo geometrico cinematico yun modelo geometrico del entorno. Lasimulaci6n graficaincrementa laproductividad ylaseguridad delaprogramaci6n fuera delinea (off line). El simulador tiene como funci6n hacer que el robot-simulador seexprese graficamente abase deinstantineas secuenciales (veaseFigura 4.4), 0bien efectuar lasimulaci6n cinetica del movimiento completo ensuperposici6n (veaseFigura 4.5) en imagenes pr6ximas que expresan la silueta del movimiento del robot. El movimiento del robot-simulador seacciona mediante teclado, rat6n, tabla digitali- zadora, ete. .. LI SP- 3D' Looi ~l eL or och, aue 3D I I MAG Aumento en laproduetividad al haeer mas faeUlaprogramaci6n fuera de linea (off line). Definici6n delasposiciones delos objetos. Posibilidad degenerar el programa enbase alasimulaci6n grafica. Generaci6n deplanes deacci6n en inteligencia artificial. Posibilidad de integrar funciones complejas de percepci6n-actuaci6n, modelaje de objetos yubicaci6n yrelaci6n delos objetos del robot ensuentorno. Prevenci6n de colisiones. El software tiene la posibilidad de detectar choques e interferencias. Facilidad detransferencia deprogramasaotros robots. El sistema del robot debe ser capaz soponar laprogramaci6n del robot, el controlador del robot, lainterconexi6n con los elementos perifericos ylared de comunicaci6n con otros sistemas decomputadoras (veaseFigura 4.6). (~I1Ltt't .ltc lllmunH:;H.:ionc~ ~'(ln ufrllS si~h:mas dt.' ,:llmplltadt1ra de f;ihril.:a \ \ \ \ \ \ \ \ \ \ \ Sistema npcralivl,.) MUJ ll mnllltor Contr,,1 de mandos Sc~t1~ncia y lllgica Modo Modaiirlad de CJ I l": HHl t:jCt:UI.'H: m Lenguaje prt)g.ram;t Disptl~iti . os pcnfcricos Laprogramaci6n sellevaacabo enlacomputadora atraves del teclado, haciendo posible editar, monitorear y ejecutar programas. Por medio delacajade control es posible mover el brazo adiferentes posiciones y enseiiar al robot laruta aseguir en un proceso determinado. Con el teclado se registran las posiciones de la ruta (enseiianza deposiciones). Tambien esposible mover el robot conel teclado yhacer los registfos correspondientes. El programa seprocesa en lacomputadora atraves del sistema operativo. El controlador seencarga deleer yejecutar las instrucciones delaprogramaci6n. Existe un elevado numero de lenguajes que seutilizan en laprogramaci6n de los robots. Todos ellos con menor 0mayor exito. Unbuen lenguaje deprogramaci6n, seria aquel que es amigable con el usuario, expandible, flexible, con capacidad de aprendizaje ydeintercomunicaci6n con el entorno del robot. Algunos lenguajes deimponancia son los siguientes: AL (Assembly Language). Desarrollado en 1974 en el Laboratorio de LA. de Stanford, USA,yes uno de los primeros lenguajes de programaci6n de robots. Se .desarroll6 apanir dellenguaje WAVE, el cual esconsiderado como el primer lenguaje textual para programaci6n derobots. VAL (VictorsAssembly Language). Desarrollado en 1979por laempresa Unimate Inc, USA. Se trata de un lenguaje de programaci6n expHcita. Permite mezclar la programaci6n enlinea con ladefuera delinea. VAL II (VictorsAssemblyLanguageversi6n II). Estelenguaje rempb.za al VAL, yfue introducido en el mercado en 1984. Permite laejecuci6n en paralelo del programa decontrol del robot conun programa decontrol delaperiferia del mismo, mediante un sistema decomunicaci6n. AML (A.Manufacturing Language). Esun lenguaje de utilizaci6n dificil; sin em- bargo, sigue disponible desde 1982. AUTOPASS (Autoamated Pans Assembly). Desarrollado por IBM en 1982. Es un sistema deprogramaci6n demuyaltonivel, orientado aobjetos yatareasdeensamble ysimilares. Requiere deun sistema demodelaje del entorno del robot. MeL (Manufacturing Control Language). Desarrollado por Me. Donnell Douglas Corp., para mejora dellenguaje APT (Automatically Programmed Tooling) que se utiliza en la programaci6n automatica de las maquinas-herramienta de control numerico. Setrata deun lenguaje dealto nivel, que permite laprogramaci6n fuera delinea. MAL (Multipurpose AssemblyLanguage). Desarrollado por laUniversidad Politec- nica de Milan, Italia. Fue desarrollado para controlar un robot con dos brazos. Es descendiente del robot SigmadeOlivetti. MAL Extended. Desarrollado por el Instituto de. Electrotecnia y Electronica del Politecnico de Milan, Italia. Este lenguaje incorpora elementos de programacion estructurada al sistema deprogramacion MAL. ACL (Advanced Control Language). Desarrollado por Eshed Robotec en Tel Aviv, Israel. Esun lenguaje dealtonivel parallevar acabomultiples tareas ycomunicacion con el entorno delos robots. Unlenguaje de programacion es una coleccion de signos ypalabras, los cuales debenser comprendidos tanto por el programador uoperador como por lacompu- tadora del robot. Ellenguaje deprogramacion seutilizapara definir lasoperaciones que el robot debe llevar acabo. Loslenguajes textuales de robots existen en una gran variedad de estructuras y capacidades. Se clasifican como lenguajes de primera generacion (VAL, AL, etc.) y lenguajes desegunda generacion (MCL, VAL II, etc.). Aqui nos referiremos fundamen- -talmente alos lenguajes desegunda generacion, que son 10smas desarrollados yse identifican por ser lenguajes textuales de alto nivel, flexibles, interactivos, fuera de linea ydegran capacidad. Para los fines que sepretenden en este texto, seconsideran yse describen las sentencias (comandos) mas generales delos diversos lenguajes yseilustra en forma general como seprograma un robot. Unaconstante esunvalor queno cambiaenel programa. Unavariable esun simbolo que puede tomar diversos valores en el programa. Las constantes y variables se expresan entre corchetes y pueden ser enteros, numeros reales 0cadenas de simbolos. El control del movimiento del robot esuna funcion muy importante yseexpresa textualmente como MOVE. MOVE significaque el brazo del robot debe moverse. Paraellohayque especificar adonde debe moverse el brazo. Para ello es necesario especificar el punto al cual debe moverse. Ejemplo: MOVE P [1] , significa que el brazo del robot debe moverse al punto P [1] previamente definido en lacomputadora con el comando DEF P[l] en el modo EDIT. El movimiento aP[1]significaqueel elemento terminal secolocaental posicion en interpolacion lineal (lenguaje ACL) En lenguaje VAL II existen las sentencias APPRO y DEPART. Laprimera mueve el elemento terminal enlacercania del punto P [1] descentrando laherramienta en el eje Z aun valor de -50mm. A partir de esta posici6n el elemento terminal (he- rramienta) semueve enlinea recta. Lasegunda, hace que el robot semueva apartir del punto deagarre a10largo del ejeZdelaherramienta auna distancia de 50mm. Control deVelocidad: SPEED. El comando SPEED define lavelocidad conlaqueel brazo del robot debe moverse. Seespecifica enporcentaje delavelocidad mixima del robot 0enunvalor especifico en mm/min 0en pulg./seg. Esto depende delas caracteristicas propias dellenguaje deprogramaci6n utilizado. Ejemplo: SPEED 60, significaqueel brazo del robot semueve a160%desuvelocidad mixima; 0bien, significapuede significar queel robot semueve a60mm/min (segun el tipo de lenguaje utilizado); 0bien puede programarse avoluntad en una u otra forma. Definici6n dePuntos en el Espacio: DEF PA. Lasposiciones en el espacio deben definirse en el programa introduciendo la informaci6n por teclado enlafunci6n EDIT. Lascoordenadas decadapunto sedefinen enel programa delasiguiente manera: SetX = 25 SetY = 30 Set Z= 40 Otra manera dedefinir puntos en el espacio esutilizando lacajadecontrol para conducir el brazo alaposici6n A[1]. Luego deteclado seintroduce ladefinici6n del punto A [1] con lafunci6n HERE, indicando: HERE A[1], 10cual significaqueIeposici6n aquehasidollevado el brazo del robot es el punto A [1]. Desde teclado tambien sepueden declarar lasposiciones del brazo del robot: se introducen los valores enlamemoriade lacomputadora yseIedeclara: HERE A [1]. Apertura yCierre delaPinza: OPEN yCLOSE. Mediante estos comandos seefecrua laapertura (OPEN) y el cierre (CLOSE) de la pinza (elemento terminal). Enel sistema deprogramaci6n ACL laapertura ycierre de la pinza se efecrua inmediatamente, mientras que en la programaci6n VAL II, los efecrua simultaneamente con el movimiento que sigue. EnVALLII, si sequiere que la acci6n seainmediata, seprograma OPEN! yCLOSE!. El mejor control de lapinza selogra en los programas que permiten introducir variantes como lasque muestran 10ssiguientes ejemplos: CLOSE 20mm, que significa: cierra lapinza 20mm. CLOSE 1.5Kgf,quesignifica: cierralapinza conuna fuerzade1.5Kg.Estoimplica que los dedos delapinza tiene sensores defuerza tictiles. RUN[prog] Ejecuta programa [nombre del programa] Ejemplo: RUNTRM02,que significa: corre programa TRM02. A [prog] Abortar programa [nombre del programa] Ejemplo: APROI,que significa: aborta programa PROI STOP[prog] Abortar programa [nombre del programa] en el modo EDIT. Ejemplo: STOPAVOS,que significa: aborta programa AVOSen el modo EDIT. SUSPEND[prog] Suspender temporalmente [nombre del programa] Ejemplo: SUSPENDS]CO,que significa: suspende temporalmente el programa S]C03. GOSUB[prog] Ir alasubrutina [ ] Ejem:plo: GOSUBR]P06,que significa: ve ala subrutina'R]po6. DEIAY[var] Retarda lafunci6n Ejemplo: DEIAY20,que significa: retarda lafunci6n 20segundos. WAIT[var 1] {<I>/s. /?:. I=} [var 2] Esperar 0parar el programa hasta que se cum- pIa una condici6n entre variables, Ejemplo: WAITAB4, que significa: esperar hasta que ABreciba un valor mayor que 4. TRIGGER[prog] By IN/ OUT[n] I/O Dispara programa por una entrada 0por una salida (una sola vez). PEND[var 1] FROM[var 2] Fijar el valor de unavariable Si lavar 1= 0se tiene que lavar 2 =,0 Si lavariable es diferente de cero, pueden ocurrir dos cosas: varl=var2 var2 = 0 POST[var 3] TO[var 2] Fijar el valor de una variable Ejemplo: Si la [var 2] = 0corre programa hasta que la [var 3] sea diferente de cero. GETCOM [n] [var] Leer un bite cadavezycolocarlo en lavariable que esta en ese co- mando. PRCON [n] [arg 1] {[arg 2] [ arg 3DEnviauna cadena deinformacion (texto 0valo- res numericos). CLRCOM [n] Toma el valor que esti en el buffer yponlo en lavariable hasta que en- cuentre un RETIJ RN. Ejemplo de Programacion: Transportar el bloque delamesa AalaByluego dela B alaA (vease Figura 4.7). "Pos. ref. ~. 2--------~ .3 "..-----------; } r -- - ----1 I I i I I I I : ~!/7~ r- -- 1 I I i I I I I : ~(!/7~ Paso2: Definir lasvariables locales conDIM PA (definevariables locales) enel modo EDIT, indicando el numero deposiciones en que sehadecolocar lapinza para llevar acabo el trabajo. DIM PA C [4] Paso 3: Declarar las posiciones del robot en el modo EDIT. Esta declaraci6n se puede realizar dedos maneras: 1.- Guiando el robot (enseftanza deposiciones) a cada punta donde se va a posicionar e indicar al sistema mediante teclado la declaraci6n de cada posici6n (vease Figura 4.6). HERE C [1] Aqui eslaposici6n 1 HERE C [2] Aqui eslaposici6n 2 HERE C [3] Aqui eslaposici6n 3 HERE C [4] Aqui eslaposici6n 4 2.- Definiendo por teclado lascoordenadas decadaposici6n. Unavez accionado el robot acada posici6n desdeel teclado, declararle suposici6n. HERE C [1] HERE C [2] HERE C [3] HERE C [4] MOVE C [2] Desde laposici6n dereferencia el robot seposiciona en 2. OPEN Abrelapinza. MOVE C [1] Muevete alaposici6n 1. CLOSE Cierra lapinza. MOVE C [2] Muevete ala posici6n 2. MOVE C [3] Muevete ala posici6n}. MOVE C [4] Muevete ala posici6n 4. OPEN Abrelapinza. MOVE C [3] Muevete ala posici6n 3. (El robot seretira delaposici6n 4para dar Lugaraalguna maniobra). DELAY 30Retarda lafunci6n siguiente 30segundos. MOVE C [4] Muevete ala posici6n 4. CLOSE Cierra lapinza. MOVE C [3] Muevete ala posici6n 3. MOVE C [2] Muevete ala posici6n 2. MOVE C [1] Muevete alaposici6n 1. OPEN Abrelapinza. MOVE C [2] Muevete ala posici6n 2. Paso5: Llamaral robot asuposicion dereferenciamediante el comando: HOMMI NG 0RUN0 Paso6: Correr el programa enel modo EXECUTE. RUNEPOOI