Está en la página 1de 43

Robótica 2

Programación de
Robots
Programación del Robot
Índice

1. Métodos de Programación de robots


1. Clasificación según el procedimiento
2. Programación por guiado
3. Programación textual
2. Requerimientos de un sistema de
programación
3. Estandarización
4. Ejemplo de programación

Programación del Robot 2


Programación de robots

• Objetivo: indicar la secuencia de acciones a realizar durante


una tarea
– Movimiento a puntos predefinidos
– Manipulación de objetos
– Interacción/sincronización con el entorno

• Partes del robot involucradas en la ejecución de un


programa
– Memoria
– Sistema de control cinemático/dinámico
– E/S

Programación del Robot 3


Métodos de programación
de robots
• Falta de normalización
– No obstante hay orígenes y patrones comunes que
dan lugar a cierta semejanza
AL (Algol Like) Univ. Stanford 1974
– Existen ciertos intentos de normalización
IRL (Norma DIN-96 )
• Criterios de Clasificación
– Procedimiento utilizado
– Potencia del sistema

Programación del Robot 4


Métodos de programación de
un robot
• Programación por guiado o aprendizaje
– Pasivo
• directo
• por maniquí
– Activo
• Programación textual
– Nivel robot
– Nivel objeto
– Nivel tarea
Es frecuente la utilización conjunta de programación por
guiado y textual

Programación del Robot 5


Programación por guiado o
aprendizaje
Consiste en hacer
realizar al robot, o a una
maqueta del mismo, la
tarea (llevándolo
manualmente por
ejemplo) al tiempo que
se registran las
configuraciones
adoptadas, para su
posterior repetición de
manera automática. Robots de pintura Gaiotto de
programación mediante guiado

Programación del Robot 6


Programación por guiado
Pasivo
El programador debe aportar directamente la energía para mover
el robot. El registro de las configuraciones que adopta el robot es
continuo (La unidad de control muestrea y graba
automáticamente las posiciones de las articulaciones a una
frecuencia elevada)
– Directo: Se toma del extremo al robot y se le lleva por la trayectoria. La
unidad de control del robot registra automáticamente la medida de los
sensores de posición de las articulaciones
– Maniquí: El robot permanece fuera de línea y se utiliza un doble de éste
(maniquí) con la misma configuración cinemática pero más ligero y fácil
de mover. La unidad de control muestrea y almacena, los valores que
toman los sensores de posición del maniquí para su posterior repetición
por el robot.

Programación del Robot 7


Clasificación de la
programación por guiado:
Guiado Activo
Para mover el robot se utiliza el sistema de
accionamiento del robot a través de una botonera o
Joystick.
La unidad de control registra únicamente las
configuraciones del robot que el programador indique
expresamente.
– El movimiento que ha llevado el robot hasta alcanzar la configuración
final es irrelevante, siendo necesario incorporar datos que definan la
trayectoria del robot
– Posibilidad de incluir instrucciones de control del flujo del programa
(saltos, repetición de movimientos), atención a entradas/salidas
binarias, etc.
– Posibilidades de guiado según diferentes sistemas de coordenadas
(articular o cartesiano)

Programación del Robot 8


Paleta de programación por
guiado activo

Programación del Robot 9


Ventajas e inconvenientes de
la programación por guiado
• Ventajas
– Son los más adecuados para programar determinadas tareas (p.e.:pintura).
– No precisan disponer de las coordenadas de los elementos relevantes del entorno de
trabajo
– No se producen errores de posicionamiento por una incorrecta calibración del robot o su
entorno
– No se precisa de las funciones del modelado y control cinemático (en particular en el
Guiado Directo), desapareciendo los problemas asociados (existencia de soluciones
múltiples y puntos singulares).
• Inconvenientes
– Necesidad de utilizar al propio robot y su entorno para realizar la programación,
obligando a sacar al robot de la línea de producción e interrumpiendo ésta.
– Dificultad de documentar el programa.
– Dificultad de realizar modificaciones en el programa (particularmente en el Guiado
Directo)
– Dificultad en la depuración y puesta a punto de las aplicaciones.

Programación del Robot 10


Programación textual
• La tarea queda especificada mediante una serie
de instrucciones textuales (Lenguaje formal)
• Similar a un programa informático
• El texto del programa es editado en un sistema
informático, que puede ser independiente del
robot, no precisando la presencia de éste
durante la fase de desarrollo del programa
(programación fuera de línea).
• Diferentes sintaxis, con mayor o menor grado
de abstracción

Programación del Robot 11


Niveles de programación
textual
• Nivel robot (movimientos a realizar por el robot)
– AS (KAWASAKI)
– KAREL (FANUC)
– KRL (KUKA)
– RAPID (ABB)
– V+ (ADEPT)
– VAL II (UNIMATION).
• Nivel objeto (estado en que quedan los objetos)
– LAMA (MIT - 1976).
– AUTOPASS (IBM - 1977).
– RAPT (Universidad de Edimburgo - 1978).
• Nivel tarea (objetivo o sub-objetivo a conseguir)

Programación del Robot 12


Ejemplo de tarea de
programación
Se pretende situar la pieza A, sobre la que se apoya la
pieza B, en el interior del orificio de la pieza D.

Programación del Robot 13


Programación a nivel robot.
Operación de colocar B sobre C
Mover_a P1 via P2 ; Situarse en un punto sobre la pieza B
Vel = 0.2 * VELMAX ; Reducir la velocidad
Pinza = ABRIR ; Abrir la pinza
Prec = ALTA ; Aumentar la precisión
Mover_recta_a P3 ; Descender verticalmente en línea recta
Pinza = CERRAR ; Cerrar la pinza para coger la pieza B
Espera= 0.5 ; Esperar para garantizar cierre de pinza
Mover_recta_a P1 ; Ascender verticalmente en línea recta
Prec = MEDIA ; Decrementar la precisión
Vel = VELMAX ; Aumentar la velocidad
Mover_a P4 via P2 ; Situarse sobre la pieza C
Prec = ALTA ; Aumentar la precisión
Vel = 0.2 * VELMAX ; Reducir velocidad
Mover_recta_a P5 ; Descender verticalmente en línea recta
Pinza = ABRIR ; Abrir pinza

Programación del Robot 14


Programación a nivel objeto

Situar B sobre C haciendo coincidir


LADO_B1 con LADO_C1 y LADO_B2 con LADO_C2 ;

Situar A dentro D haciendo coincidir


EJE_A con EJE_HUECO_D y BASE_A con BASE_D ;

• Disminuye la complejidad del programa.


• La programación se realiza de manera más cómoda.
• Un planificador de la tarea se encargará de consultar una
base de datos y generar las instrucciones a nivel de robot.

Programación del Robot 15


Programación a nivel tarea

Ensamblar A con D

El programa se reduce a una única sentencia ya que


se especifica qué es lo que debe hacer el robot en
lugar de cómo debe hacerlo.

Programación del Robot 16


Programación híbrida
(guiado+textual)
En la práctica actual, se utilizan ambos métodos de
manera combinada, permitiéndose desarrollar el
programa mediante la escritura de las instrucciones
(textual) y utilizando la posibilidad de guiado en
línea para adquirir los puntos del entorno.
Los puntos se definen por guiado y se “edita” el
programa.
Sistemas como RAPID de ABB, VAL II de Staübli y
V+ de Adept Technology son ejemplos de este modo
de programación.
Programación del Robot 17
Resumen modos de
programación de un robot
Programaci—n de robots

Conjunto de instrucciones de
movimiento y funciones
auxiliares que definen el
trabajo a realizar por el robot

Aprendizaje Textual

Se hace que el robot (o una La tarea del robot de expresa


maqueta del mismo ), realice
mediante una serie de
una vez la tarea , al tiempo instrucciones escritas en un
que se registran las lenguaje formal
configuraciones adoptadas

Pasivo Activo Robot Objeto Tarea

El robot se mueve utilizando


sus propios actuadores , en Las instrucciones hacen
Las instrucciones hacen Las instrucciones hacen
Los actuadores del robot referencia al modo en que
funci—n de lsa —rdenes dadas referencia directa a las referencia a la tarea u
est‡n sin energ’a deben quedar los objetos
por el usuario desde el panel acciones del robot objetivo final a conseguir
manipulados por el robot
de programaci—n .

Directo Maniqu’

Se utiliza una estructura


S
Se mueve directamente al M
ligera con la misma
robot, venciendo la
cinem‡tica que el robot ,
resistencia de sus sistemas
registr‡ndose sus
de transmisi—n y su peso
movimientos .

Programación del Robot 18


Requerimientos de un sistema
de programación de robots
Cada fabricante de robot ha desarrollado su propio
modo de programación, pero las necesidades
comunes en todos ellos han originado un cierto
paralelismo y afinidad
• Entorno de desarrollo.
• Modelado del entorno.
• Tipo de datos.
• Manejo de entradas/salidas (digital y analógica).
• Comunicaciones.
• Control de movimiento.
• Control del flujo de ejecución del programa.
Programación del Robot 19
Entorno de desarrollo
• Importante para incrementar la productividad
• Complejidad debido a la interacción con el entorno
(procedimiento de prueba-error)
• Permite mover al robot en línea en coordenadas
articulares, del mundo y de la herramienta
• Mayoría de lenguajes interpretados
• Capacidad de depuración y ejecución paso a paso
• Capacidad de monitorización
• En la actualidad se utilizan sistemas multitarea que
permiten control simultáneo y sincronizado de
varios elementos (robots, sistemas de visión o
transporte…)
Programación del Robot 20
Modelado del entorno.
Modelo relacional
Modelo del entorno: Representación de los
objetos con los que interacciona. (localización,
dimensiones, peso, etc.)
Localización definida mediante un sistema de
referencia asociado al objeto.
En ocasiones se permite establecer relaciones
de unión entre objetos (representada mediante
una estructura arborescente). No
Objetos independientes: el movimiento de
uno no afecta al otro
Objetos con unión rígida: el movimiento de
uno implica el del otro y viceversa
Objetos con unión no rígida: el movimiento
de uno implica el del otro, pero no al revés.
Las relaciones pueden ser actualizadas por el
programador (haciendo uso de composición
de transformaciones) o automáticamente. Asi
sé consigue un mayor grado de abstracción
en la escritura del programa
Programación del Robot 21
Tipos de datos
• Tipos convencionales (enteros, reales, booleanos…)
• Especificación de la localización (posición y orientación)
– Coordenadas articulares (q1,…, qn)
– Coordenadas cartesianas
• Posición (px, py, pz)
• Orientación
–Ángulos de Euler
–Cuaternios
–Matriz de cosenos directores
• Matrices de transformación homogéneas
Programación del Robot 22
Manejo de entradas/salidas
• Nivel más sencillo de comunicación con otras máquinas o procesos
que cooperan con el robot.
• Habitualmente digitales
• Objetivo: integración y sincronización con el proceso
• Modos:
– Activación o desactivación de salidas. Control del flujo del programa en
función de las entradas
– Tratamiento de interrupciones: Ante la señal se ejecuta la rutina de
interrupción. La interrupción del flujo normal del programa. puede realizarse
inmediatamente (incluso en mitad del movimiento del robot), cuando
finaliza la ejecución de la instrucción en curso (al finalizar el movimiento), o
cuando finaliza el ciclo de trabajo fijado por el programa (al finalizar la
secuencia).
– Integración de sensores (digitales o analógicos):
• Modificación de la trayectoria
• Elección entre alternativas
• Obtención de identidad, posición y características de objetos
• Cumplimiento de restricciones externas

Programación del Robot 23


Comunicaciones
• Comunicación con otros robots, máquinas equivalentes o sistemas
informáticos responsables de la planificación y gestión de la producción.
• Permite:
– La adaptación de los movimientos del robot a situaciones cambiantes
en la línea
– La carga o actualización del programa del robot en función de nuevas
ordenes de producción
– La monitorización o supervisión del estado de la célula
– El control del estado de la producción.

• Modos de comunicación acordes con el estado actual de la tecnológía:


(RS232, Devicenet, CanBus, Profibus, Ethernet, etc.).
• En caso de necesidad se puede recurrir a las entradas/salidas digitales
(solución de compromiso)
• Uso de controladores abiertos bajo buses y S.O. estándares permite una
gran flexibilidad de adaptación a futuros estándares de comunicaciones.

Programación del Robot 24


Control de movimiento
Posibilidad de especificación de:
– Punto de destino
– Tipo de trayectoria (Punto a punto, trayectoria continua)
– Velocidad y aceleración medias del recorrido
– Precisión de alcance del punto de destino (via points)
– Movimientos condicionados (medida de sensores)
• Movimiento protegido (guarded motion):
interrupción del movimiento
• Movimiento acomodaticio (compliant motion): modificación
del movimiento (Sensores de Fuerza, Seguimiento cordón,
Localización de piezas por visión)

Programación del Robot 25


Puntos de paso o via points

Programación del Robot 26


Movimiento monitorizado o
protegido
Interrupción del movimiento del robot por verificarse algún
tipo de condición externa programada.

Moverse a P1, hasta que D=1

(o también)
D Moverse a P1
Si D=1 entonces PARAR

P1
Z?

Programación del Robot 27


Movimiento acomodaticio
El movimiento (trayectoria, velocidad
o destino) se ve modificado por la
medida de un sensor.
• Seguimiento de cordón de
soldadura
• Ensamblado mediante sensor de
fuerza
• Destino y trayectoria fijado por
sistema de visión

Programación del Robot 28


Control de flujo de ejecución
del programa

• Empleo de bucles for, repeat, while,…


• Empleo de condiciones if, then,…
• Capacidad de procesamiento en paralelo
– Control de varios robots bajo un sólo programa
– Control de un robot en una célula integrada
• Utilización de señales de sincronismo (semáforos)
• Tratamiento de interrupciones/errores
• Establecimiento de prioridades

Programación del Robot 29


Estandarización

• Varios intentos sin el suficiente éxito


• IRL (Industrial Robot Language)
– Norma DIN (DIN-66312 “Industrial Robot Language (IRL)”.
Septiembre 1996)
– En su definición se consideró el ISO/TR Manipulating
industrial Robot. Intermediate Code for Roobts (anulado en
el 2004)
– Asumido por algunos robots como opción (Festo)
– Concepto de código intermedio

Programación del Robot 30


Concepto de código intermedio
N lenguajes M robots 
1 código intermedio
NxM traductores
 N+M traductores

Programación del Robot 31


Ejemplo programa IRL
PROGRAM ejemploIRL
VAR
INPUT BOOL: pieza at 1; {entrada digital que indica la presencia de pieza}
repetir at 2; {entrada digital que indica el deseo de repetir la acción}
OUTPUT BOOL: electrm at 1; {salida digital que activa el electroimán del efector final}

BEGIN
IF NOT pieza THEN HALT; ENDIF;
R_ACC:= 300.0; {especifica la aceleración}
R_SPEED:= 100.0; {especifica la velocidad}
Bucle:
MOVE LIN p_sb_pieza; {movimento en línea recta a punto sobre pieza}
MOVE LIN p_pieza; {movimento en línea recta a punto recogida pieza}
electrm:=TRUE; {activa el electroimán del efector para coger la pieza}

MOVE LIN p_sb_pieza; {movimento en línea recta a punto sobre pieza}


MOVE LIN p_intermedio; {movimento en línea recta a punto intermedio}
MOVE LIN p_destino; {movimento en línea recta hasta situarse sobre destino}
electrm:=FALSE; {desactiva el electroimán del efector para dejar la pieza}
MOVE LIN p_intermedio; {regresa al punto intermedio }

IF repetir = TRUE THEN GOTO bucle; ENDIF; {¿Repetir  coger nueva pieza?}

MOVE LIN home; {Fin de tarea. Se retorna a la posición de reposo}


HALT; {Para la ejecución del programa}

END PROGRAM

Programación del Robot 32


Ejemplo de programación
Célula de verificación y empaquetado
de componentes.
•Los componentes llegan a la célula
a través de un alimentador, de
donde el robot ha de cogerlos y
realizar un test específico de
validación sobre ellos.
•Si el test resulta positivo, se coloca
el componente en el primer agujero
libre del pallet de 3x5 situado en una
cinta de transporte contigua. Esta
cinta se mueve mediante un motor
controlado por el propio robot.
•Si el test resultase negativo
(componente defectuoso), se
colocará el componente en una caja
de componentes desechados.

Programación del Robot 33


Ejemplo de programación
Señales de Entrada-Salida
• Entradas digitales :
– Ea : Indica si hay componente en el alimentador.
– Eh : Indica la existencia de componente en la herramienta (pinza).
– Et : Indica si el test ha resultado positivo.
– Ep : Indica si el pallet está disponible.
• Salidas digitales:
– Sn : Alarma que indica la necesidad de un nuevo componente.
– Sh : Alarma que indica que no hay componente en la pinza.
– Sm: Señal de control del motor de la cinta de transporte.
– St : Señal de activación del test.

Programación del Robot 34


Ejemplo de programación
Instrucciones básicas
Nom. Parámetros Descripción Ejemplo

POS$ Variable posición (x,y) Posiciona el extremo del robot en la posición POS$ Pa
especificada.
SBR N1 Subrutina Llamada a una subrutina. SBR 300
BUC N1rep.,identificador Bucle de repetición. BUC 5, 1
REP Identificador de bucle Fin de bucle. REP 1
OPE Var,Operacion,Var Realización de una operación entre variables. OPE Pv=Pa+Pi
SAL* N1 de línea, condición Salto condicional. SAL* 100, Ea=1
SAL N1 de línea Salto incondicional. SAL 104
EST Valor numérico Esperar un tiempo en segundos. EST 2
GPZ Variable orientación Girar pinza a una orient. GPZ Oa
ESE Id. Entrada = valor Esperar entrada. ESE Ea=1
RET - Retorno de subrutina. RET
VEL tipo y velocidad Asignar velocidad. VEL a=2000
MON Id entrada = valor, línea de Monitoriza el valor de una señal un tiempo, si MON Ea=1,506,30
salto, tiempo de espera la señal toma el valor indicado salta a línea.
VAR Id.variable = posición Definición de var. de posición. VARPa= 100,100
VARa Id.variable = orientación Definición de var. de orientación. VARa Op = 100
SUB - Subir la pinza. SUB
BAJ - Bajar la pinza. BAJ
SLD Id.Salida = valor,tiempo Activar salida durante un tiempo. SLD Sn=1,10
Por defecto es siempre.

Programación del Robot 35


Ejemplo de programación
Macroinstrucciones
MAC COG ; Definición de la macroinstrucción COGER
PINZA = ABRIR
BAJ
EST 0.5
PINZA = CERRAR
SUBIR
END MAC

MAC DEJ ; Definición de la macroinstrucción DEJAR


BAJ
PINZA = ABRIR
EST 0.5
SUB
PINZA = CERRAR
END MAC

Programación del Robot 36


Ejemplo de programación
Inicialización de variables
Se definen velocidad lineal y angular del efector final y variables con posiciones y
orientaciones a utilizar durante el desarrollo de la aplicación.

1 VEL =2000 ; Velocidad base de posicionamiento


2 VELa =100 ; Velocidad de giro de la pinza
3 VAR Pa = -450,275 ; Posición del alimentador
4 VAR Pt = 0,450 ; Posición del dispositivo de test
5 VAR Pi = 330,-30 ; Posición de comienzo del pallet
6 VAR Pd = -250,450 ; Pos. almacén de comp. defectuosos
7 VAR Pv = 330,-30 ; Pos. pallet libre y auxiliar
8 VAR Pf = 330,-30 ; Pos. de la fila libre
10 VAR Ic = 80, 0 ; Incremento de columna
11 VAR If = 0, 80 ; Incremento de fila
12 VARa Op = 100 ; Orientación del comp. en pallet
13 VARa Oa = 0 ; Orientación del comp. en alimentación
16 VARa Ot = 50 ; Orientación de dispositivo de test

Programación del Robot 37


Ejemplo de programación
Proceso de llenado de pallet
Se pide un nuevo pallet, se recoger el componente, se realiza el test.
Si el test resulta positivo, se coloca el componente en el pallet y se actualiza la variable de primera posición
libre
Si el test es negativo, se desecha el componente y se deja en la zona de componentes defectuosos.
Si desaparece el pallet durante el llenado, se pedirá un nuevo pallet y se reiniciará el proceso.

100 SBR 300 ; Solicita pallet nuevo


101 BUC 5,filas ; Bucle de indexación de filas
102 OPE Pv=Pf ; Comienzo de fila
103 BUC 3,columnas ; Bucle de indexación de columnas
104 SAL* 100,Ep=0 ; No hay pallet; comenzar proceso
105 SBR 500 ; Tomar componente del alimentador
106 SBR 600 ; Realizar test
107 SAL* 110,Et=1 ; Componente válido. Situarle en pallet
108 SBR 700 ; Componente defectuoso. Rechazarle
109 SAL 104 ; Coger un nuevo componente
110 SLD St=0 ; Test pasado, desactivar test y sacar
111 SUB ; componente del dispositivo de test
112 SBR 400 ; Colocar componente en pallet
113 OPE Pv=Pv+Ic ; Incrementar posición de columna
114 REP columnas ; fin de indexación de columnas
115 OPE Pf=Pf+If ; Incrementar fila
116 REP filas ; Fin indexación filas, pallet lleno
117 SAL 100

Programación del Robot 38


Ejemplo de programación
Subrutina de nuevo pallet
Verificación de que el pallet nuevo está posicionado en la
posición de llenado, inicializando las variables Pv y Pf a la
primera posición del pallet (Activación de la salida que controla
el motor de movimiento de la cinta).

300 OPE Pv=Pi ; Inicialización de Pv


301 OPE Pf=Pi ; Inicialización de Pf
302 SLD Sm=1 ; Pedir nuevo ballet. Activar cinta
303 EST 2 ; Tiempo de evacuación pallet anterior
304 ESE Ep=1 ; Espera llegada de pallet nuevo
305 SLD Sm=0 ; Parar cinta
306 RET ; Fin de nuevo pallet
Programación del Robot 39
Ejemplo de programación
Subrutina de colocar en pallet

Colocar un componente en la primera posición libre en


el pallet.

400 POS$ Pv ; Ir a posición libre en pallet


401 GPZ Op ; Con la correcta orientación
402 DEJ ;
403 RET ; fin de colocar en pallet

Programación del Robot 40


Ejemplo de programación
Subrutina colocar componente
Espera un máximo de 30 segundos la llegada de un componente al alimentador.
Si no llega, emite una alarma durante 10 segundos y lo vuelve a intentar.
Si llega, lo recoge, verificando que está en la pinza del robot.
Si no está (por ejemplo, porque ha resbalado) emite una alarma y trata de realizar la operación
de nuevo.

500 POS$ Pa ; Posicionarse sobre el alimentador


501 GPZ Oa ; Orientándose correctamente
502 MON Ea=1,506,30 ; Monitoriza entrada 1 durante 30s máx.
503 EST 30 ; Espera de 30 segundos
504 SLD Sn=1,10 ; Si no llega componente en 30s
505 SAL 502 ; Alarma (Sn) durante 10s y repite acción
506 COG ; Llega componente, cogerlo.
507 SAL* 510,Eh=0 ; Verificar que componente ha sido cogido
508 RET ; Fin de tomar componente
510 SLD Sh=1,5 ; Fallo al coger el componente
511 SAL 500 ; Emitir alarma(Sh)durante 5s. Reintentar

Programación del Robot 41


Ejemplo de programación
Subrutina de test
Coloca el componente en el dispositivo de test y lo
activa.

600 POS$ Pt ; Posicionarse sobre dispositivo de test


601 GPZ Ot ; orientarse correctamente
602 BAJ ; Introducir componente en dispositivo
603 SLD St=1 ; Activar test
604 RET ; Fin de test

Programación del Robot 42


Ejemplo de programación
Subrutina de rechazo componente
Rechaza los componentes que no pasan el test y los
deja en el almacén de componentes defectuosos.

700 SLD St=0 ; Componente defectuoso


701 SUB ; Sacarlo del dispositivo de test
702 POS$ Pd ; Posicionar en almacén defectuosos
703 DEJ ; Dejar componente
705 RET ; Fin de rechazar componente

Programación del Robot 43

También podría gustarte