Upload
lor986
View
33
Download
1
Embed Size (px)
DESCRIPTION
programacion de un robot
Citation preview
A. Giménez ([email protected])
Área de Ingeniería Mecánica
Departamento de Ingeniería
Módulo 1.- Fundamentos de robótica de manipulación
Práctica 1. Programación básica de un robot manipulador
Programación de robots industriales en RAPID
Robot ABB 140
Indice
Lenguajes de programación. 1. Introducción General
2. Robot IRB 140 y Sistema IRC5
3. Lenguaje RAPID – Estructuras de Datos
– Instrucciones de movimiento
– Instrucciones lógicas
Referencias Bibliográficas: 1. Fundamentos de robótica, 2ª Ed. MCGRAW-
HILL, 2007 Barrientos 2. Manual de referencia de RAPID
4
Introducción. Programación de robots
El robot industrial es un manipulador
multifuncional reprogramable
Adaptación rápida y económica a diferentes tareas y
aplicaciones
Cerca de 1.000.000 de unidades en funcionamiento
en el mundo
El sistema de programación es la
herramienta con que cuenta el usuario para
acceder a las prestaciones del robot
5
Introducción. Programación de robots
Durante la ejecución de un programa se
interacciona con: La memoria del sistema: lectura y actualización de
variables
La memoria de programa: control de flujo de
ejecución
El sistema de control dinámico y cinemático: da las
señales de mando de los accionadores
Las entradas-salidas del sistema: digitales o
analógicas, para sincronizarse con otros equipos
Entorno exterior: mediante las acciones que ejecuta y
mediante sensores externos 6
CALCULO
DE
TRAYECTORIAS MODELO
CINEMÁTICO
PROGRAMA
MUESTREO
CONTROL
DINÁMICO
Punto de destino Tipo de trayectoria Velocidad media y tiempo Precisión Herramienta
Velocidad y aceleración máxima de la articulación
Trayectorias articulares qi(t)
Referencias para el control dinámico qi(kT)
MODELO
DINÁMICO
GENERACIÓN
DE
TRAYECTORIAS
PROGRAMA
MUESTREO
CONTROL
DINÁMICO MODELO
DINÁMICO
Programación de robots
(Barrientos [1])
MODELO
CINEMÁTICO
SENSORES
EXTERNOS
SENSORES
EXTERNOS
7
Lenguajes de Programación ABB
8
Lenguajes
ARLA (1981)
RAPID (1994)
S4
S5 (IRC5)
Menus de windows, RAPID
Paletas de ARLA
Programación por guiado
9
Programación textual
Se basa en la existencia
de un lenguaje formal de
programación para
indicar los comandos al
robot
PROGRAMA:
Secuencia de ordenes
10
Programación fuera de línea
Ordenador
Unidad de programación
Sistema de control
Manipulador
11
Programación fuera de línea
Se desarrolla en la oficina, no en la fábrica
Ventajas:
Durante la programación no se necesita ni el
robot ni su entorno
El programa queda totalmente documentado
Posibilidad de simulación del programa
creado, verificando tiempos, colisiones, etc.
Posibilidad de cargarlo y “ejecutarlo” desde
fuera
12
Programación fuera de línea
Robot Studio (ABB)
Creación de una estación Creación de un programa
13
Requerimientos de un sistema de programación de robots
Lenguaje de programación avanzado:
Entorno de programación
Modelado del entorno
Tipos de datos avanzados
Control del flujo de ejecución del programa
Manejo de E/S: digitales y analógicas
Control de movimiento
Auto-acomodación según información sensorial
externa
14
Modelado del entorno
Es la representación que tiene el programa del robot
de los objetos con los que trabaja
Normalmente son características geométricas:
Posición y orientación en los sistemas más clásicos
– Asignando a cada objeto un sistema de referencia solidario
– En coordenadas articulares (q1, … , qn)
– En coordenadas cartesianas (X, Y, Z, Q1, Q2, Q3, Q4)
Sistemas avanzados: Modelado tridimensional
– Modelos de Fronteras
– Geometría Constructiva de Sólidos
Características físicas
Pesos, c.d.g. e inercias para definir las cargas
Máxima velocidad, aceleración, etc.
15
Rígida
No rígida
Pinza
Modelado del entorno
Mundo
Cinta
Pieza B
No rígida
No rígida
No rígida
Robot
Pieza A
Rígida
Rígida
Mesa
Pieza C
Pieza D
No rígida
16
Robot IRB 140
80 mm
70 mm
6 kg
Carga
suplemtaria en
el antebrazo
1 kg
Carga suplementaria
en la muñeca 0.5 kg
Carga 6 kg
Alcance 0.81 m
Repetibilidad 0.03 mm
17
6 Ejes = 6 GDL
Test de precision a 1.000 mm/s
518 520 522 524 526 528 530
290
300
310
320
330
340
350
360
Path XY: mc6 (red/green), decbuf (blue/black)
x [mm]
y [
mm
]
Sin TrueMove ni
QuickMove
Con la segunda versión
de TrueMove y
QuickMove
18
Montaje del robot
Gran alcance en un radio de 360º
Puede ser montado en cualquier ángulo
No hay limitación en el montaje con el primer eje
19
Principales aplicaciones
Soldadura (laser y arco)
Otras
Embalaje/Pintura
Ensamblaje
Manipulación de material/Alimentación de máquinas 20
Controlador IRC5
Controlador del Robot.
Igual para cualquier modelo IRB
Ligero
Conexiones industriales
Robot –PC
Seta de emergencia
Motores ON/OFF
Contador de programas
21
Panel lateral del controlador IRC5
Partes
22
Unidad de programación
Partes Principales del FlexPendant
23
Partes de la pantalla
pantalla
24
Lenguaje de programación RAPID
El ≈ 60% de los robot en el mundo son ABB
RAPID (Robotics Application Programming Interactive Dialogue)
Características más importantes Lenguaje de alto nivel estructurado
El entorno de programación se maneja con ventanas y menús desplegables
Los programas se guardan en formato estándar
El software del controlador es instalable por el usuario
Fácil manejo de los parámetros del sistema
25
Lenguaje de programación RAPID
Herramientas de creación programas:
Simuladores (RobotStudio)
Paletas de Programación (TeachPendant)
Ordenador (Editor ASCII)
Robotics -
8-
26
Estructura de un programa
Instrucciones
Acaban en “;”
Comentarios “!”
Asignación “:=“
Unidades:
milímetros
Grados
sexagesimales
Función Principal
PROC main() 27
Expresiones del lenguaje
Aritméticas: Devuelven una valor numérico si operan con variables de tipo num
y una cadena si operan con cadenas de caracteres.
Utilizan los operadores aritméticos: *, +, -, /, DIV (división entera), MOD (resto)
Ejemplo: perimetro := 2 * 3.14 * radio;
frase: = “IN” + “PUT”;
Lógicas: Devuelven un valor de tipo bool
Utilizan los operadores lógicos: <, >, <>, =, <=, >=, AND, OR, NOT, XOR
Ejemplo: DInput(di1) = 1
num1 < num2;
nombre1 = nombre2;
Doutput(do1) = 0 AND pos1.x > 100
28
Tipos de datos en RAPID
Alcance
Globales
Locales
Variabilidad
Constantes
CONST num repeticion;
Variables
VAR num veces_repetidas;
Persistentes
PERS num pinza_cogida;
29
Tipos de datos en RAPID
Atómicos Un solo dato
Num
Bool
Registro Contienen una estructura de datos
string – Cadena de caracteres. Máximo 80, incluidas las comillas
Pos – Guarda la posición X, Y, Z (los tres son tipo num)
Orient – Guarda la orientación q1, q2, q3, q4 (los cuatro son tipo num)
30
1000
zzzz
yyyy
xxxx
paon
paon
paon
T
Tipos de datos
31
Datos de posición y
orientación
Tipos de datos: Sistemas de coordenadas
*
*
32
Tipos de datos en RAPID
pose
trans pos
rot orient
Var pose sitio:=[[1000,200,3500],[0.7,0,0.7,0]];
confdata
cf1, cf4, cf6, cfx
Var confdata configuracion:=[-1,0,1,0];
extjoint
eax_a, eax_b, …, eax_f
Extjoint ejes_externos:=[9E+09, 9E+09,…., 9E+09]; 33
Tipos de datos (ROBTARGET)
Sirve para definir la posición del robot y de sus
ejes externos
trans pos
rot orient
robconf confdata
extax extjoint
CONST robtarget punto_reposo:=
[[1780,2500,3500],
[0.707,0.707,0,0],[0,-1,0,0],
[9E+09,...]]; 34
Tipos de datos (JOINTARGET)
Alamcena la posición en giros de cada eje
dataobject of jointtarget >
< robax of robjoint >
< rax_1 of num >
< rax_2 of num >
< rax_3 of num >
< rax_4 of num >
< rax_5 of num >
< rax_6 of num >
< extax of extjoint >
< eax_a of num >
< eax_b of num >
< eax_c of num >
< eax_d of num >
< eax_e of num >
< eax_f of num >
CONST jointtarget calib_pos :=
[ [ 0, 0, 0, 0, 0, 0],
[ 0, 9E9,9E9, 9E9, 9E9, 9E9] ];
35
Tipos de datos (Velocidad)
Especifica la velocidad a la que se mueve el robot y los
ejes externos
speeddata
v_tcp num velocidad del TCP en mm/s
v_ori num velocidad de reorientación en º/s
v_leax num velocidad de los ejes externos lineales
v_reax num velocidad de los ejes externos rotacionales
v100, v500, …, v2000
Muchos están definidos por defecto
en la configuración del robot
36
Tipos de datos (Precisión del movimiento)
Indica la zona de precisión por la que van
a pasar los puntos intermedios de paso.
zonedata
finep num Es un punto de precisión fino
pzone_tcp num en mm
pzone_ori num en º
pzone_eax num en mm ó en º
z100, z20, …, z5, finep
Muchos están definidos por defecto
en la configuración del robot
zone_ori num
zone_leax num
zone_reax num
37
Tipos de datos (Herramienta)
Contiene la información de la herramienta que se
usa.
tooldata
robothold bool La herramienta está sujeta por el
robot
tframe pose en mm
tload loaddata en mm
Si no hay herramienta: tool0
Es el único dato por defecto 38
Tipos de datos
Datos para representar cargas
Posición del c.d.g.
Orientación de los ejes principales de inercia
Masas y momentos de inercia
Datos para representar herramientas
(TCP)
Posición y orientación de su punto de trabajo
Carga
39
4321 qqqqPPP zyx
X
YZ
Xr
Yr
Zr
Tipos de datos
X
YZ
Matriz TCP (posición y orientación)
Carga
Ix
Iz Iy
c.d.g
40
Tipos de datos (datos de la carga)
Contiene la información de la pieza que se está
moviendo.
loaddata
mass num Masa de la pieza
cog pos centro de gravedad de la pieza
aom orient orientacion de los ejes principales de inercia
ix num momento de inercia eje x
iy num momento de inercia eje y
iz num momento de inercia eje z
Datos predefinidos: load0 load1 41
Lenguaje de programación RAPID
Declaración de datos:
Puntos:
CONST robtarget A:= [[1780,2500,3500],
[0.707,0.707,0,0],[0,-1,0,0], [9E+09,...]];
Herramientas:
CONST tooldata pinza:= [TRUE,
[[350,250,500],[1,0,0,0]], [1,[0,125,250],
[1,0,0,0],0.1,1,0]];
42
Control del movimiento del robot
Hay que especificar el movimiento del
robot:
Punto de destino (posición y orientación)
Tipo de trayectoria espacial: articulares,
recta, recta modificada, arco de círculo, etc.
Sistema de coordenadas utilizado
Base: referida al sistema del mundo
Mundo
Herramienta: en el extremo o estacionaria
Objeto: referido a un sistema de usuario 43
Lenguaje de programación RAPID
Instrucciones de movimento:
Articulares:
MoveJ C1,v100,z5,pinza;
Opciones
[\T
MoveJ C1,v100\T:=5,z5,pinza;
Articulares absolutas:
MoveAbsJ punto,v100,z3,pinza; 44
Lenguaje de programación RAPID
Instrucciones de movimento:
Línea recta en cartesianas:
MoveL P2,v80,fine,Tool0;
Opciones
Offs(…)
MoveL Offs(P2,0,0,100),v80,fine,Tool0;
45
Lenguaje de programación RAPID
Instrucciones de movimento:
Interpolación circular:
MoveC P2,P3,v150,z15,Tool;
P0
P3
P2
P0
P1
46
Control del movimiento del robot
Especificación el movimiento del robot:
Precisión Punto de paso
Esfera deprecisión
Puntodestino
47
Lenguaje de programación RAPID
Zonedata: Z50
fine
Punto de paso
Esfera deprecisión
Puntodestino
50 mm
48
Lenguaje de programación RAPID
Instrucciones de movimento:
Trayectoria circular:
MoveC Pto_int, pto_final,v80,fine,Tool0;
Traza arcos de circunferencia
49
Control del movimiento del robot
Especificación el movimiento del robot:
Velocidad media del recorrido
· En la propia instrucción
· Definición global
0 tf
q qf
V
Vnominal
tacc
Pendiente
50
Lenguaje de programación RAPID
Speeddata: v100
VelSet
0 tf
q qf
V
100 mm/s
tacc
Pendiente
51
Control del flujo de ejecución
Permitir al programador especificar el flujo de operaciones del robot en función de una serie de condiciones lógicas
Instrucciones tradicionales:
IF ... THEN ... ELSE
Selección por casos: CASE
Bucles: FOR, WHILE, REPEAT
Procesamiento en paralelo multitarea
¡La ejecución correcta del programa en sentido inverso no está garantizada!
52
Control del flujo de ejecución
IF <condicion> THEN
…
ENDIF
IF <condicion> THEN
…
ELSE
…
ENDIF
IF <condicion> THEN
…
ELSEIF <condicion>
…
ELSE
…
ENDIF
53
Control del flujo de ejecución
WHILE <condicion> DO
…
ENDWHILE
FOR <contador> FROM <valor inicial> TO <valor final> [STEP incremento] DO
….
ENDFOR
54
Manejo de Entradas/Salidas
Para comunicar y sincronizar el robot con otras
máquinas o procesos de fabricación
Mediante señales binarias de entrada/salida Dosificación y mezcla Transporte de mortero Bombeo Robot de proyección
Transporte de moldes
Red SINEC-L1
Com. serie RS-232
E/S digitales 24v DC
PC control
FACTORIAOFICINA
55
Manejo de Entradas/Salidas
Poner una salida digital a 1
Set <signaldo> ej: set do8;
Poner un salida digital a 0
Reset <signaldo> ej: Reset do8;
Cambia un señal de valor
SetDO <señal>,<valor> ej: SetDO do8, 1;
Lectura de una entrada digital
Dinput(Entrada digital) ej: booleano:=Dinput(di4);
Lectura de una entrada digital
TestDI(entrada digital) ej: valor:=TestDI(di6);
Ginput(gi1)
Goutput(go2)
56
Instrucciones de espera
Detiene la ejecución del programa durante un tiempo
en segundos
WaitTime <tiempo> ej: WaitTime 5;
Espera un tiempo o hasta que se cumpla una
condición
WaitUntil <condicion> [\MaxTime]
WaitUntil Dinput(di3) ej: Reset do8;
Cambia un señal de valor
SetDO <señal>,<valor> ej: SetDO do8, 1;
57
Rutinas Procedimientos
Funciones que no devuelven valor
Funciones
Funciones que devuelven un valor
TRAP
Rutinas de tratamiento de interrupciones
58
Interrupciones
Main()
0.- Connect TRAP Inp 1
1.- Move P1
2.- Move P2
3.- Grip On
4.- Wait 0.5
5.- Move P3
6.- Grip Off
7.- Move P4
8.- Set Output1
9.- Wait 2
10.- ~ ~ ~ ~ ~
TRAP Inp 1
1.- Reset Output1
2.- Reset Output2
3.- Move P100
4.- Write “Reparar Pinza”
5.- Wait Input20
6.- ~ ~ ~ ~ ~
Dosificación y mezcla Transporte de mortero Bombeo Robot de proyección
Transporte de moldes
Red SINEC-L1
Com. serie RS-232
E/S digitales 24v DC
PC control
FACTORIAOFICINA
59
Manejo de Entradas/Salidas
Comunicaciones avanzadas:
Punto a punto con una conexión serie
Carga y descarga de programas
Monitorización y supervisión
Control directo del robot (Computer Link)
Impresora línea serie
Buses de campo (PROFIBUS, RIO, CAN,
etc.)
Redes de área local (LAN) 60
Manejo de Entradas/Salidas (II)
Otra función de la E/S es la integración de
la información aportada por sensores
externos:
Modificar la trayectoria en línea en función
de la información sensorial de visión artificial,
láser, fuerza/par, etc.
Detección de obstáculos mediante
ultrasonidos, láser, infrarrojos, etc.
Tipos de movimientos:
Acomodaticios
Protegidos 61
PROGRAMA EJEMPLO
• El robot se encuentra esperando en un punto de
reposo (punto A) la activación de la entrada digital 1
• En cuanto la entrada digital 1 pasa al estado UNO,
el robot se aproxima al punto B para coger la pieza.
• El robot lleva la pieza al punto C pasando por una
zona segura
• El ciclo finaliza en el punto de reposo
62
%%%
VERSION:1
LANGUAGE:ENGLISH
%%%
MODULE EJEMPLO
CONST robtarget A:=[[200,100,500],[0.7,0.7,0,0],
[0,-1,0,0], [9E+09,...]];
………….
CONST tooldata pinza:= [TRUE, [[0,0,10],
[1,0,0,0]], [0,[0,0,0],[1,0,0,0],0,0,0]];
PROC cerrar_pinza()
WaitTime 0.5;
Set spinza;
ENDPROC
PROC coger_pieza()
MoveJ B1,v100,z5,pinza;
MoveL B,v80,fine,pinza;
cerrar_pinza;
ENDPROC
63
PROC main()
abrir_pinza;
MoveJ A,v100,fine,pinza;
WaitDI econtrol,1;
coger_pieza;
MoveL B1,v80,z5,pinza;
MoveJ D,v100,z100,pinza;
MoveJ C1,v100,z5,pinza;
MoveL C,v80,fine,pinza;
abrir_pinza;
MoveL C1,v80,z5,pinza;
ENDPROC
ENDMODULE
64