Programação dos Manipuladores
Docente: Talitha Ferreira
Tecnóloga em Mecatrônica Industrial
Curso Técnico em Mecatrônica
SENAI – CIMATEC
Os 3 níveis de programação
• Existem 3 maneiras diferentes de se
programar um manipulador:
– Teach by Showing
– Linguagens de programação explicitas – Linguagens em nível de tarefa
Teach by Showing
• Inicialmente os robôs eram programados por
um método que envolve:
– Levar o robô as posições desejada, uma a uma; – Gravar cada posição na memória e
– Usar um sequenciador para repetir as posições, na mesma ordem que foi mostrada.
Teach by Showing: Teaching Pendant
• Como levar o robô à posição desejada?
• O robô é controlado para chegar na posição
desejada utilizando um Teaching Pendant, ou
Teaching Box:
– Controles remotos que permitem movimentar o robô e salvar os pontos de controle.
Exemplo
de
Teaching
Box
Exemplo de
Teaching Box -
Teaching Boxes
• Teaching boxes geralmente possuem:
– Botões que permitem o controle individual de cada junta do robô;
– Botões que permitem realizar movimentações em cada grau de liberdade do mundo cartesiano (x,y,z);
– Alguns controladores possuem habilidades de programação.
Exemplo de Teaching Pendant
•
https://www.youtube.com/watch?v=MueFQdr
QD4M
Concluindo TbS
• Programar robôs “na marra” usando o
teaching box ainda é muito usado:
– Para programar robôs isolados;
– Para programar tarefas muito simples (pois não vale a pena fazer uma programação para elas);
• O Teaching box é muito usado, mas
geralmente para corrigir pequenos desvios na
programação.
Linguagens de Programação para
Robôs Manipuladores
Linguagens de Programação para
Robôs (RPLs)
• A partir dos anos 90 a tendência tem sido a
programação de robôs através de programas
escritos em linguagens de programação
específicas:
– Motivado pelo baixo custo dos computadores. – Estas linguagens são chamadas de
Requisitos de uma linguagem de
programação robótica
• Modelagem do mundo :
– Os programas de manipulação devem, por
definição, incluir objetos que se movimentam no espaço tridimensional e, portanto, é claro que qualquer linguagem de programação de robôs precisa de um meio para descrever essas ações. – O elemento mais comum das linguagens de
programação robótica é a existência de tipos
Requisitos de uma linguagem de
programação robótica
• Especificação de movimento :
– Uma função muito básica de uma linguagem de programação robótica é permitir a descrição dos movimentos desejados do robô.
– Com o uso de expressões de movimento na linguagem, o usuário faz a interface com planejadores de trajetória.
– As expressões de movimento permitem ao usuário especificar pontos de passagem, o ponto meta e a escolha entre usar o
movimento por interpolação de juntas ou o cartesiano em linha reta.
– Além disso, o usuário pode ter o controle sobre a velocidade ou duração de um movimento .
Requisitos de uma linguagem de
programação robótica
• Fluxo de execução :
– Como nas linguagens de programação de
computador mais convencionais, um sistema de programação robótica permite ao usuário
especificar o fluxo de execução
• Conceitos tais como teste e ramificação, laços,
chamadas de sub-rotinas e mesmo interrupções são encontradas nas linguagens de programação robótica.
Requisitos de uma linguagem de
programação robótica
• Fluxo de execução :
– Mais do que em muitas aplicações para
computadores, o processamento paralelo é
importante nas aplicações de células de trabalho automatizadas.
– Portanto, primitivas de sinal e espera são muito encontrados nas linguagens de programação robótica que, por vezes, apresentam construtos de execução paralela mais sofisticados.
Requisitos de uma linguagem de
programação robótica
• Ambiente de programação:
– A programação de manipuladores é difícil e tende a ser bastante interativa com muitas tentativas e erros.
• Se o usuário fosse forçado a repetir continuamente o ciclo de “editar-compilar-executar” das linguagens compiladas, a
produtividade seria baixa.
– Portanto, a maioria das linguagens de programação é hoje
interpretada, de forma que expressões individuais de
linguagem podem ser executadas isoladamente durante o desenvolvimento do programa e a depuração.
Requisitos de uma linguagem de
programação robótica
• Integração de sensores :
– Uma parte de extrema importância da
programação de robôs está relacionada à interação com os sensores.
– O sistema deve ter meios de questionar os
sensores e de usar as respostas em construtos do tipo if-then-else.
– A capacidade de especificar monitores de eventos para observar transições nesses sensores em
Tipos de Linguagens RPL
• Linguagens de programação de robô
assumiram muitas formas também:
– Linguagens especializadas para manipuladores – Bibliotecas especializadas, para linguagens de
programação existentes
– Bibliotecas atreladas a novas linguagens de programação. (Não descuto aqui)
Linguagens especializadas
• Linguagens completamente novas,
desenvolvidas especificamente para abordar
problemas específicos dos manipuladores.
• Podem ou não ser consideradas uma
linguagem de programação de computador
geral.
• Exemplo: VAL desenvolvida pela Unimation,
Inc 3.
VAL
• VAL foi desenvolvida especialmente como
uma linguagem de controle de
manipuladores.
• Inicialmente era bastante fraca:
– Não possuia ponto flutuante ou cadeias de caracteres e sub-rotinas não poderiam passar argumentos.
• Versões mais recentes oferecem estes
recursos: VAL III e V+.
Programa exemplo genérico: Pick and Place
Defina os pontos: P1: Safely above workpiece P2: 10 cm above bin A P3: At position totake part from bin A P4: 10 cm Above bin B P5: At position to
take part from bin B.
Defina o programa: Move to P1 Move to P2 Move to P3 Close gripper Move to P2 Move to P4 Move to P5 Open gripper Move to P4
Programa em VAL
PROGRAM PICKPLACE 1. MOVE P1 2. MOVE P2 3. MOVE P3 4. CLOSEI 0.00 5. MOVE P4 6. MOVE P5 7. OPENI 0.00 8. MOVE P1 .ENDOutras RPLs
• Existem dezenas de RLPs:
– VAL, VAL II, VAL III, V+, da Unimation e Adept e Staubli – RAPID, da ABB
– KRL, da KUKA
– Karol e TP, da FANUC
– INFORM, da Motoman Yaskawa. – MBA4, Mitsubishi
RAPID, da ABB
• Talvez a mais utilizada RPL. Possui:
– meios para definir constantes, variáveis e outros objetos de dados.
– comandos para o movimentação, ferramenta e manipulação de E/S e modo de monitoramento.
– aritmética e operadores de lógica e uma estrutura de controle de programas.
– também pode se comunicar com um PC externo e via interface serial.
RAPID (do manual…)
• The movements of a robot are programmed as pose-to-pose movements.
• The basic motion characteristic must be defined before motion can start. This contains position data (end position and external axes), speed data, zone data, tool data and work-object data.
• The user can also define maximum velocity, acceleration, management of different robot configurations, payload, behaviour close to singular points and so on.
RAPID (do manual.….)
• Possui diversos tipos de comando: – If, then, else
– Repeat, for, while,
– There are for example 10 different move commands availabe.
• An example of command is
– MoveL ToPoint := [940,0,1465,0.707,0,0.707,0], Speed := v50, Zone := z50, Tool := gripper1
RAPID (do manual….)
Motion RAPID Summary
3-12 Overview
5.2 Positioning instructions
Instruction Type of movement:
MoveC TCP moves along a circular path MoveJ Joint movement
MoveL TCP moves along a linear path MoveAbsJ Absolute joint movement
MoveCDO Moves the robot circularly and sets a digital output in the middle of the corner path.
MoveJDO Moves the robot by joint movement and sets a digital output in the middle of the corner path.
MoveLDO Moves the robot linearly and sets a digital output in the middle of the corner path.
MoveCSync1 Moves the robot circularly and executes a RAPID procedure MoveJSync1 Moves the robot by joint movement and executes a RAPID
procedure
MoveLSync1 Moves the robot linearly and executes a RAPID procedure
1. Only if the robot is equipped with the option “Advanced Functions”.
5.3 Searching
During the movement, the robot can sear ch for the position of a work object, for example. The searched position (indicated by a sensor signal) is stored and can be used later to position the robot or to calculate a program displacement.
Instruction Type of movement:
SearchC TCP along a circular path SearchL TCP along a linear path
5.4 Activating outputs or interrupts at specific positions
Normally, logical instructions are executed in the transition from one positioning instruction to another. If, however, special motion instructions are used, these can be executed instead when the robot is at a specific position.
Instruction Used to:
TriggIO1 Define a trigg condition to set an output at a given position TriggInt1 Define a trigg condition to execute a trap routine at a given
position
Conclusão de RLPs
• Um programa consiste de:
– Vá com velocidade máxima até um ponto proximo ao destino (pnto de aproximação);
– Diminua a velocidade e chege ao destino; – Faça a tarefa;
– Afaste-se até um ponto próximo em velocidade reduzida;
Bibliotecas Especializadas
• Diversas bibliotecas de programação de robôs
foram desenvolvidas implementando funções
específicas para manipulação.
• O usuário utiliza uma linguagem (C, por
exemplo), e chama funções da biblioteca para
realizar as tarefas.
ARCL – Advanced Control Robot
Library
• Do mesmo autor do Matlab Robotics Toolkit.
• Bibliotecas para Linguagem C com funcões
similares as criadas para o Matlab.
ARCL
• Possui funções para:
– Definir robôs
– Definir posições no espaço 3D
– Mover o robô, com planejamento de trajetória – Sincronizar diversos robôs
Outras Bibliotecas
• RCCL, de Richard Paul (predecessora da ARCL)
• The Robotics Toolbox for Python, by Peter
Corke de novo.
• CLARAty, da NASA
• OROCOS Project, U. Louven
• ROS Industrial ****
Problemas das Linguagens de
Programação
• Modelo de mundo interno versus realidade
externa:
– Uma característica central dos sistemas de programação de robôs é o modelo de mundo mantido internamente no
computador.
– Mesmo quando esse modelo é bastante simples, há amplas
dificuldades para garantir que ele corresponda à realidade física que está tentando modelar.
– Discrepâncias entre o modelo interno e a realidade externa
resultam em falha ou ineficiência para pegar objetos, colisões e uma série de outros problemas sutis.
Problemas das Linguagens de
Programação
• Sensibilidade ao contexto:
– Um código que funciona de forma confiável
quando é testado isoladamente, costuma falhar quando é colocado no contexto do programa mais amplo.
– Esses problemas surgem em geral das
dependências de configuração do manipulador e da velocidade dos movimentos.
Problemas das Linguagens de
Programação
• Recuperação de erro:
– Outra consequência direta de trabalhar com o mundo
físico é a de que os objetos talvez não estejam exatamente onde deveriam e, portanto, os movimentos que lidam com eles podem falhar.
– Parte da programação do manipulador implica tentar
considerar isso e tornar as operações de montagem o mais robustas possível, mas, mesmo assim é provável que os erros corram e uma parte importante da programação do manipulador é como se recuperar desses erros.
Off-Line Programming
• Definimos um sistema programação off-line
(OLP) como uma linguagem de pro-gramming
do robô que foi suficientemente extendida,
geralmente por meio de computação gráfica,
de modo que o desenvolvimento de
programas podem ocorrer sem o acesso ao
robô propriamente dito.
Off-Line Programming
• Sistemas de programação off-line são
importantes tanto como auxiliares na
programação de automação industrial, bem
como plataformas para a pesquisa em
robótica.
• Problemas centrais:
– Interface com o usuário – Modelagem 3D
Principais aspectos dos OLP
• Interface do usuário:
– Uma grande motivação para o desenvolvimento de um sistema OLP é criar um ambiente que torna mais fácil a programação de manipuladores, de
forma que a interface é de fundamental importância.
– Outra grande motivação é eliminar a dependência de uso do equipamento físico durante a
Principais aspectos dos OLP
• Modelagem 3-D :
– Um elemento fundamental nos sistemas OLP é o uso de modelos gráficos do robô simulado e sua célula de trabalho.
• Isso requer que o robô e todos os equipamentos, peças e ferramentas da célula de trabalho sejam modelados como objetos tridimensionais.
Principais aspectos dos OLP
• Modelagem 3-D :
– Para acelerar o desenvolvimento do programa, é proveitoso usar todos os modelos CAD de peças ou ferramentas que estejam diretamente
disponíveis a partir do sistema CAD no qual o projeto original foi feito.
Principais aspectos dos OLP
• Modelagem 3-D :
– Uma utilização importante da geometria tridimensional dos modelos de objeto é na
detecção automática de colisão — ou seja,
quando alguma colisão ocorre entre objetos no ambiente simulado, o sistema OLP deve
automaticamente alertar o usuário e indicar com exatidão onde ela acontece.
Principais aspectos dos OLP
• Emulação cinemática :
– Um componente fundamental na manutenção da validade do mundo simulado é a emulação fiel dos aspectos geométricos de cada manipulador
simulado. – Problemas:
• Cinemática inversa e direta • Geração de trajetória
OLP mais conhecidos
• Robcad – talvez o mais famoso de todos.
• Workspace – antigo e com versões livres
• Wincaps da DENSO
• ROS
• …
• E outros não só para robos, como para a
montagem da planta toda (CIM)
Computer-integrated manufacturing
• Digital manufacturing and simulation
solutions.
• São soluções completas para a automação de
toda a linha de montagem.
• Exemplos:
– Delmia + Catia da Dassault
Ver Workspace
• Ver videos • Ver Workspace
Conclusão
• Linguagens de programação eficientes são um
dos pre-requisitos para um bom sistema
robótico.
• Todas são parecidas em sintaxe, iguais em
semântica.
• OLPs são onde se programa o robô, para
testes reais somente usado para ajustes.
Conclusão
• Maneiras de programar um robô estão
mudando:
– Mais interativas, mais inteligentes…
– Rodney brooks new robot, Rethink Robotics Baxter.
Robô ABB – IRB 6400
Manipulador:
Modelo do Robô Faixa de movimento
Eixo 1 Eixo 2 Eixo 3 Eixo 4 Eixo 5 Eixo 6
IRB 2400 + 180º - 180º + 110º - 100º + 65º - 60º + 185º - 185º + 115º - 115º + 400º - 400º
IRB 6400R + 180º - 180º + 85º - 70º + 100º - 28º + 300º - 300º + 120º - 120º + 300º - 300º
Movimento linear no sistema da base
Movimento linear no sistema da ferramenta
Características
Fonte: http://www.youtube.com/watch?v=ZfYzsj5xILs Movimento - Linear; - Reorientação da Ferramenta; - Eixo-a-eixo.Instruções de Movimentação
• Os movimentos do robô são programados “passo a passo”, isto é, “mova-se a partir da posição atual para a nova posição”.
• A trajetória entre estas duas posições é então calculada automaticamente pelo robô.
• As características básicas dos movimentos, tais como o tipo da trajetória, são especificadas pela escolha da instrução de posicionamento apropriada.
• As características restantes são especificadas pela definição de dados que são argumentos da instrução:
Dados de posicionamento (posição final para eixos externos e do robô); Dados de velocidade (velocidade desejada);
Dados de zona (precisão do posicionamento);
Dados de ferramenta (por exemplo, a posição do TCP);
Instruções de Movimentação
P0 P1 MoveC Ponto2 Ponto3 P. de Aproximação• MoveJ é usado para mover o robô rapidamente de um ponto a outro quando o movimento não tem que ser em linha reta.
• O robô e eixos externos movem-se ao ponto de destino ao longo de uma trajetória não linear. Todos os eixos alcançam o ponto de destino ao mesmo tempo.
Exemplo: MoveJ p1, vmax, z30, tool2;
O ponto central da ferramenta (TCP) da ferramenta,
tool2, é movido ao longo de uma trajetória não linear para a posição, p1, com dado de velocidade vmax e dado de zona z30.
• MoveL é usado para mover o ponto central da ferramenta (TCP) linearmente para um dado destino. Quando o TCP tiver de permanecer estacionário, esta instrução pode também ser usada para reorientar a ferramenta.
Exemplo: MoveL p1, v1000, z30, tool2;
O TCP da ferramenta, tool2, é movido linearmente para a posição p1, com dado de velocidade v1000 e dado de zona z30.
• MoveC é usado para mover o ponto central da ferramenta (TCP) circularmente para um certo destino. Durante o movimento, a orientação normalmente permanece relativo ao círculo.
Exemplo: MoveC p1, p2, v500, z30, tool2;
O TCP da ferramenta, tool2, é movida circularmente para a posição p2, com dado de velocidade v500 e dado de zona z30. O círculo é definido pela posição de início, o ponto do círculo p1 e o ponto de destino p2.
Exercício
Programar em ABB Rapid através de instruções de movimentação a figura ao lado.
Passo 1: Determinar os pontos.
Passo 2: Determinar os movimentos; Paso 3: Escrever as linhas do programa.
Exercício
Instruções de Comunicação
Existem quatro maneiras possíveis de comunicação por meio de canais seriais:
Mensagens podem ser mostradas através do display da unidade de programação e o usuário pode responder perguntas, tais como o número de peças a serem processadas.
Informações baseadas em caracteres podem ser escritas ou lidas a partir de arquivos de texto em um disquete. Deste modo, por exemplo, a estatística de produção pode ser armazenada e processada posteriormente em um PC. A informação também pode ser impressa através de uma impressora conectada ao robô.
Informações binárias podem ser transferidas entre o robô e um sensor, por exemplo.
Informações binárias podem ser transferidas entre o robô e um sensor, por exemplo, com um protocolo.
Instruções de Comunicação
• A decisão de escolher entre usar a informação baseada em caracteres ou a informação binária depende de como o equipamento com o qual o robô se comunica trata a informação.
• Um arquivo, por exemplo, pode possuir dados que são armazenados de forma binária ou baseado em caracteres.
• Se a comunicação for necessária em ambas as direções simultaneamente, a transmissão binária será necessária.
• Cada canal serial ou arquivo deve primeiramente ser aberto. Fazendo-se isso, o canal/arquivo recebe um nome que é usado como uma referência para leitura/escrita.
• A unidade de programação pode ser usada todas as vezes e não precisa ser aberta. • Ambos texto e valores de certos tipos de dados podem ser impressos.
Exercício
Fonte: http://www.youtube.com/watch?v=C18yf6irv0w
Exercício
Exercício
Exercício
Várias Instruções
Várias instruções são usadas para
• atribuir valores aos dados,
• esperar um certo período de tempo até que uma condição ser satisfeita,
WaitUntil (Espera uma condição ser satisfeita )
WaitUntil é usado para esperar até que uma condição lógica seja satisfeita; por exemplo, pode esperar até que uma ou mais entradas sejam ligadas.
Exemplo
WaitUntil di4 = 1;
WaitDI (Espera um sinal de entrada digital)
WaitDI (Wait Digital Input) é usado para esperar até que um sinal de entrada digital seja ligado.
Exemplo
WaitDI di4, 1;
(A execução do programa continua somente após a entrada di4 ser ligada.)
WaitDI grip_status, 0;
WaitDO (Espera até que um sinal de saída digital seja ligado)
WaitDO (Wait Digital Output) é usado para esperar até que um sinal de saída digital seja ligado.
Exemplo
WaitDO do4, 1;
(A execução do programa continua somente após a entrada do4 ser ligada.)
WaitDO grip_status, 0;
Comment
Comment é usado somente para tornar o programa mais fácil de entender. Não tem efeito na execução do programa.
Exemplo:
! Vai para a posição acima do palete MoveL p100, v500, z20, tool1;
(É inserido um comentário no programa para torná-lo mais fácil de entender.)
SINAIS DE ENTRADA E SAÍDA
O robô pode ser equipado com um número de sinais digitais e analógicos do usuário que podem ser lidos e mudados a partir do programa.
Princípios de programação
Os nomes dos sinais são definidos nos parâmetros do sistema e, usando estes nomes, eles podem ser lidos pelo programa. Os valores simbólicos para sinais digitais também são definidos nos parâmetros do sistema. Valores simbólicos, como ligado/desligado ou aberto/fechado, podem ser usados em vez de 1/0 para tornar o programa mais fácil de ler. O valor de um sinal analógico ou de um grupo de sinais digitais é especificado por um valor numérico.
Set
(Liga um sinal de saída digital ligado )Set é usado para levar o valor de um sinal digital para um.
Exemplos:
Set do15;
(O sinal do15 é levado para 1.)
Set weldon;
Reset
(Desliga um sinal de saída digital ligado )Reset é usado para levar o valor de um sinal digital para zero.
Exemplos:
Reset do15;
(O sinal do15 é levado para 0.)
Reset weld;
TPReadNum
(Lê um número da unidade de programação )TPReadNum (Teach Pendant Read Numerical) é usado para ler um número da unidade de programação.
Exemplo
TPReadNum reg1, “Quantas unidades devem ser produzidas?“;
(O texto “Quantas unidades devem ser produzidas? ” é escrito no display da unidade de programação. A execução do programa espera até que um número seja informado pelo teclado numérico da unidade de programação. Aquele número é guardado em reg1.)
While
( Repetir enquanto...)WHILE é usado quando um número de instruções devem ser repetidas enquanto uma condição é satisfeita.
Se for possível determinar previamente o número de repetições, a instrução FOR pode ser usada.
Exemplo :
WHILE reg1 < reg2 DO ...
reg1 := reg1 +1; ENDWHILE
FOR
(Repete por um certo número de vezes)
FOR é usado quando uma ou várias instruções são repetidas um número de vezes.
Se as instruções são repetidas contanto que uma dada condição é encontrada, a instrução WHILE é usada.
Exemplos: FOR i FROM 1 TO 10 DO routine1; ENDFOR
(Repete a rotina 10 vezes. )
FOR
(Repete por um certo número de vezes)
FOR (identificador) FROM (valor inicial) TO (valor final) DO
(expressão ou listade instruções);
ENDFOR
-Identificador: o nome do dado que conterá o valor atual do contador; - Valor inicial: o valor inicial desejado do contador;
EXERCÍCIO: Fazer dois programas no ROBOT
STUDIO, utilizando WHILE e FOR.
Deve ser perguntado ao operador qual a forma geométrica ele quer entre o círculo, quadrado e triângulo, caso seja escolhido o triângulo perguntar quantas vezes deseja fazer o desenho.