programacion de un robot manipulador

64

Upload: lor986

Post on 05-Jan-2016

38 views

Category:

Documents


1 download

DESCRIPTION

programacion de un robot

TRANSCRIPT

Page 1: Programacion de Un Robot Manipulador
Page 2: Programacion de Un Robot Manipulador

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

Page 3: Programacion de Un Robot Manipulador

Programación de robots industriales en RAPID

Robot ABB 140

Page 4: Programacion de Un Robot Manipulador

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

Page 5: Programacion de Un Robot Manipulador

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

Page 6: Programacion de Un Robot Manipulador

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

Page 7: Programacion de Un Robot Manipulador

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

Page 8: Programacion de Un Robot Manipulador

Lenguajes de Programación ABB

8

Lenguajes

ARLA (1981)

RAPID (1994)

S4

S5 (IRC5)

Page 9: Programacion de Un Robot Manipulador

Menus de windows, RAPID

Paletas de ARLA

Programación por guiado

9

Page 10: Programacion de Un Robot Manipulador

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

Page 11: Programacion de Un Robot Manipulador

Programación fuera de línea

Ordenador

Unidad de programación

Sistema de control

Manipulador

11

Page 12: Programacion de Un Robot Manipulador

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

Page 13: Programacion de Un Robot Manipulador

Programación fuera de línea

Robot Studio (ABB)

Creación de una estación Creación de un programa

13

Page 14: Programacion de Un Robot Manipulador

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

Page 15: Programacion de Un Robot Manipulador

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

Page 16: Programacion de Un Robot Manipulador

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

Page 17: Programacion de Un Robot Manipulador

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

Page 18: Programacion de Un Robot Manipulador

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

Page 19: Programacion de Un Robot Manipulador

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

Page 20: Programacion de Un Robot Manipulador

Principales aplicaciones

Soldadura (laser y arco)

Otras

Embalaje/Pintura

Ensamblaje

Manipulación de material/Alimentación de máquinas 20

Page 21: Programacion de Un Robot Manipulador

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

Page 22: Programacion de Un Robot Manipulador

Panel lateral del controlador IRC5

Partes

22

Page 23: Programacion de Un Robot Manipulador

Unidad de programación

Partes Principales del FlexPendant

23

Page 24: Programacion de Un Robot Manipulador

Partes de la pantalla

pantalla

24

Page 25: Programacion de Un Robot Manipulador

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

Page 26: Programacion de Un Robot Manipulador

Lenguaje de programación RAPID

Herramientas de creación programas:

Simuladores (RobotStudio)

Paletas de Programación (TeachPendant)

Ordenador (Editor ASCII)

Robotics -

8-

26

Page 27: Programacion de Un Robot Manipulador

Estructura de un programa

Instrucciones

Acaban en “;”

Comentarios “!”

Asignación “:=“

Unidades:

milímetros

Grados

sexagesimales

Función Principal

PROC main() 27

Page 28: Programacion de Un Robot Manipulador

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

Page 29: Programacion de Un Robot Manipulador

Tipos de datos en RAPID

Alcance

Globales

Locales

Variabilidad

Constantes

CONST num repeticion;

Variables

VAR num veces_repetidas;

Persistentes

PERS num pinza_cogida;

29

Page 30: Programacion de Un Robot Manipulador

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

Page 31: Programacion de Un Robot Manipulador

1000

zzzz

yyyy

xxxx

paon

paon

paon

T

Tipos de datos

31

Datos de posición y

orientación

Page 32: Programacion de Un Robot Manipulador

Tipos de datos: Sistemas de coordenadas

*

*

32

Page 33: Programacion de Un Robot Manipulador

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

Page 34: Programacion de Un Robot Manipulador

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

Page 35: Programacion de Un Robot Manipulador

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

Page 36: Programacion de Un Robot Manipulador

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

Page 37: Programacion de Un Robot Manipulador

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

Page 38: Programacion de Un Robot Manipulador

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

Page 39: Programacion de Un Robot Manipulador

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

Page 40: Programacion de Un Robot Manipulador

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

Page 41: Programacion de Un Robot Manipulador

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

Page 42: Programacion de Un Robot Manipulador

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

Page 43: Programacion de Un Robot Manipulador

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

Page 44: Programacion de Un Robot Manipulador

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

Page 45: Programacion de Un Robot Manipulador

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

Page 46: Programacion de Un Robot Manipulador

Lenguaje de programación RAPID

Instrucciones de movimento:

Interpolación circular:

MoveC P2,P3,v150,z15,Tool;

P0

P3

P2

P0

P1

46

Page 47: Programacion de Un Robot Manipulador

Control del movimiento del robot

Especificación el movimiento del robot:

Precisión Punto de paso

Esfera deprecisión

Puntodestino

47

Page 48: Programacion de Un Robot Manipulador

Lenguaje de programación RAPID

Zonedata: Z50

fine

Punto de paso

Esfera deprecisión

Puntodestino

50 mm

48

Page 49: Programacion de Un Robot Manipulador

Lenguaje de programación RAPID

Instrucciones de movimento:

Trayectoria circular:

MoveC Pto_int, pto_final,v80,fine,Tool0;

Traza arcos de circunferencia

49

Page 50: Programacion de Un Robot Manipulador

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

Page 51: Programacion de Un Robot Manipulador

Lenguaje de programación RAPID

Speeddata: v100

VelSet

0 tf

q qf

V

100 mm/s

tacc

Pendiente

51

Page 52: Programacion de Un Robot Manipulador

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

Page 53: Programacion de Un Robot Manipulador

Control del flujo de ejecución

IF <condicion> THEN

ENDIF

IF <condicion> THEN

ELSE

ENDIF

IF <condicion> THEN

ELSEIF <condicion>

ELSE

ENDIF

53

Page 54: Programacion de Un Robot Manipulador

Control del flujo de ejecución

WHILE <condicion> DO

ENDWHILE

FOR <contador> FROM <valor inicial> TO <valor final> [STEP incremento] DO

….

ENDFOR

54

Page 55: Programacion de Un Robot Manipulador

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

Page 56: Programacion de Un Robot Manipulador

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

Page 57: Programacion de Un Robot Manipulador

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

Page 58: Programacion de Un Robot Manipulador

Rutinas Procedimientos

Funciones que no devuelven valor

Funciones

Funciones que devuelven un valor

TRAP

Rutinas de tratamiento de interrupciones

58

Page 59: Programacion de Un Robot Manipulador

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

Page 60: Programacion de Un Robot Manipulador

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

Page 61: Programacion de Un Robot Manipulador

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

Page 62: Programacion de Un Robot Manipulador

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

Page 63: Programacion de Un Robot Manipulador

%%%

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

Page 64: Programacion de Un Robot Manipulador

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