sp campus piracicaba robÓtica · o programador especifica apenas as ações a tomar sobre os...
TRANSCRIPT
ROBÓTICAProfa. Dra. GIOVANA TRIPOLONI TANGERINO
Tecnologia em Automação Industrial
NOÇÕES DE PROGRAMAÇÃO
SP – CAMPUS PIRACICABA
https://giovanatangerino.wordpress.com
ALGORITMO
Robô executará uma missão
Mover, pegar, deslocar, etc
Planejamento de trajetória
Leitura de sensores
Envio de comandos: Acionamento de atuadores
Prof. Dra. Giovana Tripoloni Tangerino, 2017-1
LINGUAGENS ROBÓTICAS
Há, talvez, tantas linguagens robóticas quantos são os fabricantes de robôs.
Cada fabricante projeta sua própria linguagem robótica.
Muitas linguagens robóticas são baseadas em alguma outra linguagem comum,
como: Cobol, Basic, C e Fortran.
Outras linguagens são autônomas e não se relacionam com qualquer outra
linguagem comum
Prof. Dra. Giovana Tripoloni Tangerino (NIKU, 2015)
NÍVEL DE CONTROLE DE PROGRAMAÇÃO
Sistemas guiados: ensinar mostrando
O operador indica os movimentos que o robô deve fazer
O usuário guia o robô de forma manual ou através da interação com um dispositivo
de ensino.
Programação ao nível do robô
O utilizador escreve um programa a especificas as sequências de movimentos que o
robô terá de executar
Linguagens de manipulação especializados (VAL, V-II, V+, AL de Stanford)
Biblioteca robótica para uma linguagem de computação existente, (AR-BASIC da Americam
Cimglex baseada em BASIC, JARS da NASA baseada em PASCAL)
Biblioteca robótica para uma nova linguagem de propósito geral (RAPID da ABB Robotics,
AML da IBM, KAREL da GMF Robotics).
Programação ao nível da tarefa
O programador especifica apenas as ações a tomar sobre os objetos que o robô
manipulará
O sistema deve ter a habilidade de realizar muitas tarefas de planejamento
automaticamente.
(CRAIG, 2006)D
MODOS DE PROGRAMAÇÃO A maioria dos robôs industriais pode ser programada em mais de um modo.
Modo configuração física
o operador configura chaves e paradas que controlam os movimentos do robô.
Normalmente usado junto com outros dispositivos como CLPs
Modo acompanhamento ou ensino
As articulações do robô são movidas com um console de instruções.
Quando a localização e orientação deseja é alcançada, o local é inserido (ensinado) no
controlador
Durante a reprodução, o controlador move as articulações para as mesmas localizações
e orientações.
Essa modalidade geralmente é ponto a ponto, como tal, o movimento entre os pontos
não é especificado ou controlado. Somente os pontos que são ensinados são alcançados
garantidamente.
Prof. Dra. Giovana Tripoloni Tangerino (NIKU, 2015)
MODOS DE PROGRAMAÇÃO Modo acompanhamento contínuo
Todas as articulações do robô são movidas simultaneamente, enquanto o movimento é
continuamente amostrado e gravado pelo controlador.
Durante a reprodução, o movimento exato que foi gravado é executados.
Os movimentos ensinados por um operador, seja por meio de um modelo, movendo
fisicamente o atuador final, ou “vestindo” o braço do robô e deslocando-o por meio da
sua área de trabalho.
Modo Software
Um programa é escrito off-line ou online, e é executado pelo controlador para
controlar os movimentos
É o modo mais sofisticado e versátil e pode incluir informação sensorial, instruções
condicionais e ramificações.
Requer um conhecimento prático de sintaxe de programação do robô, antes de
qualquer programa escrito.
Prof. Dra. Giovana Tripoloni Tangerino (NIKU, 2015)
NÍVEIS DE LINGUAGENS ROBÓTICAS Nível microcomputador:
Os programas são escritos em linguagem de máquina
É o mais básico e é muito eficiente, mas é difícil de compreender e difícil para outros
acompanharem.
Todas as linguagens acabarão por ser interpretadas ou compiladas para este nível.
Nível ponto a ponto:
As coordenadas dos pontos são inseridas sequencialmente, e o robô segue os pontos,
conforme especificado.
Tipo muito primitivo e simples de programação, que é fácil de usar, mas não muito
poderoso.
Carece de desvios, de informação sensorial e de instruções condicionais.
Ex.: Milacron T3 da Funky e Cincinnati.
Nível primitivo de movimentação:
É possível desenvolver programas mais sofisticados, incluindo informação sensorial,
desvios e instruções condicionais.
A maioria das linguagens neste nível são interpretadas.
Ex.: VAL da Unimation, V+ da Adept.
Prof. Dra. Giovana Tripoloni Tangerino (NIKU, 2015)
NÍVEIS DE LINGUAGENS ROBÓTICAS Nível Programação estruturada:
A maioria das línguas neste nível são compiladas
Poderosas e permitem uma programação mais sofisticadas, mas são mais difíceis de
aprender.
Nível Orientado a tarefa:
Não existem linguagens reais neste nível ainda.
Em vez de programar um robô para executar uma tarefa programando cada passo
necessário para completa-la, o usuário deveria apenas mencionar a tarefa, enquanto o
controlador criaria a sequência necessária.
Ex.: Autopass, proposta pela IBM na dácada de 1980, nunca se materializou.
Prof. Dra. Giovana Tripoloni Tangerino (NIKU, 2015)
TIPOS DE EXECUÇÃO
Linguagem interpretada
Executam uma linha do programa por vez, sequencialmente.
Vantagem: permite ao usuário executar e depurar o programa, parcela por parcela.
Desvantagem: execução é mais lenta e não muito eficiente.
Robôs com linguagem interpretada: Unimation, VAL, Adept V+ e AML da IBM.
Linguagem compilada
Usam um compilador para traduzir todo o programa em linguagem de máquina
antes de ser executado.
Vantagens: muito rápidos e eficientes.
Desvantagem: depuração de erros muito mais difícil.
Prof. Dra. Giovana Tripoloni Tangerino (NIKU, 2015)
REQUERIMENTOS DE UMA LINGUAGEM DE PROGRAMAÇÃO
Modelagem do entorno
movimentos de objetos no espaço tridimensional: Tipos geométricos, ângulos de articulação, posições cartesianas, orientações e sistemas de referência.
Especificação do movimento
planejadores de trajetória: especificar pontos de passagem, o ponto de destino e se vai ser utilizado um movimento interpolador das articulações ou em linha reta cartesiana, podendo ter controle sobre a velocidade e a duração de um movimento.
Fluxo de execução
ramificações, ciclos, chamadas de sub-rotinas, interrupções.
Processamento paralelo: mais de um robô utilizando a mesma célula de trabalho simultaneamente
Monitorar vários processos com algum tipo de sensor, responder a certos eventos detectados pelos sensores.
Ambiente de programação
Um bom ambiente de programação fomenta a produtividade do programador.
A programação de manipuladores é difícil e tende a ser muito interativa, com muitos testes e erros.
Integração de sensores
O sistema deve ter, no mínimo, a capacidade de consultar sensores de tato e força.
Alguns sensores podem ser parte de outro equipamento da célula.
Prof. Dra. Giovana Tripoloni Tangerino (NIKU, 2015)
CLASSIFICAÇÃO – NÍVEL DE INTELIGÊNCIA
Japanese Industrial Robot Association (JIRA)
Classe 1: Dispositivo de movimentação manual
Acionado por um operador
Classe 2: Robô de sequência fixa
Um dispositivo que executa as etapas sucessivas de uma tarefa de acordo com um determinado método, imutável, que é difícil de modificar
Classe 3: Robô de sequência variável
Mesmo que o classe 2, mas fácil de modificar
Classe 4: Robô de reprodução (playback)
Onde o operador humano guia manualmente o robô a executar uma tarefa fixa. O robô registra os movimentos e, em operações posteriores, reproduz os mesmos movimentos de acordo com as informações gravadas.
Classe 5: Robô de controle numérico
O operador fornece apenas o programa do movimento, em vez de o ensinar manualmente
Classe 6: Robô inteligente
Percebem e interagem com alterações no ambiente.
(NIKU, 2015)
Exemplo: linguagem V+, robôs Adept
Prof. Dra. Giovana Tripoloni Tangerino (NIKU, 2015)
Linguagem usada em robôs Adept, interpretado, permite desvios, comunicação sensorial de entrada e de saída, movimentos em linha reta, etc.
O usuário pode definir uma distância “altura” ao longo do eixo z do atuador final, que pode ser usado com os comandos chamados APPRO (de aproximação) e DEPART para se aproximar ou se afastar de um objeto sem colisão.
Um comando chamado MOVE permitirá ao robô se mover de sua posição atual para o próximo local especificado.
No entanto, MOVES farão o mesmo em uma linha reta.
LINGUAGEM AML da IBM
Programação ao nível do robô
Linguagem interpretada
Linguagem orientada pra sub-rotinas.
Simulador: IBM 7535
http://www.iem.unifei.edu.br/gorgulho/download/robo.html
Comandos da linguagem AML:
Prof. Dra. Giovana Tripoloni Tangerino
Estrutura do programa
Três tipos de comandos:
Executáveis
Declaração de variáveis
Declaração de sub-rotinas
Todos comandos terminam em
ponto-e-vírgula (;)
Prof. Dra. Giovana Tripoloni Tangerino
Estrutura do programa
Etapas:
Escrever algoritmo: “Editar”
“Compilar”
“Simular”
Para ligar deve-se acionar: “Manip Power” -> “Return
Home” -> “Auto” -> “Start Cycle”
Parar:
“Stop”(para na linha do programa na qual se encontra)
“Stop Cycle”: para no fim (end)
Prof. Dra. Giovana Tripoloni Tangerino
Exemplo 1: Movimentando a garra
Prof. Dra. Giovana Tripoloni Tangerino
-- Nome: Programa 1
-- Função: executar os
movimentos da garra
-- Observação: não há
movimento do braço
Programa1:Subr;
Down;
Grasp;
Delay(1);
Up;
Release;
Delay(1);
End;
Down
descer
Grasp
fechar
Delay(1)
tempo de espera em s
Up
subir
Release
soltar
End
fim
Exemplo 2: movimentando o braço
Prof. Dra. Giovana Tripoloni Tangerino
-- Nome: Programa 2
-- Função: ilustrar o movimento
absoluto (PMove) e incremental
(DpMove);
Programa2:Subr;
PMove(PT(315,490,0));
DpMove(-25,70,0);
PMove(PT(-620,0,90));
DpMove(500,185,0);
PMove(PT(650,0,0));
End;
PMove(PT(x,y,r))
x e y são os pontos em mm
R é o ângulo em graus,
se conhece os pontos e não
conhece o ângulo faça r = 0.
Valores absolutos
DpMove(x,y,r)
igual o anterior, mas é
incremental
Declaração de variáveis: constantes
Valores que são repetidos em um programa podem se
beneficiar do uso de constantes.
Uma constante pode receber um valor numérico (inteiro
ou real) ou uma coordenada.
O comando é NEW, precedido de um indicador
Prof. Dra. Giovana Tripoloni Tangerino
Controle de Fluxo de programa
BRANCH (rótulo)
Para se fazer “desvios” no programa utiliza-se rótulos.
Um rótulo é uma palavra seguida do caractere dois pontos.
o comando BRANCH (rótulo) que executa um salto incondicional.
Prof. Dra. Giovana Tripoloni Tangerino
Contadores A contagem de tarefas pode ser bastante útil na elaboração de um programa.
Por exemplo, a cada 25 peças trabalhadas é necessário executar os
movimentos para substituição do conjunto.
Para manipular contadores a linguagem AML utiliza-se de cinco comandos:
STATIC COUNTER, SETC, INCR, DECR e TESTC.
STATIC COUNTER:
Um contador deve ser definido no início do programa para ser utilizado
posteriormente. Essa definição consiste na escolha de um identificador (nome) para
o contador, seguindo as regras descritas e usando o comando STATIC COUNER, como
abaixo. Sempre que um contador é definido seu valor é zero.
Contador1:Static Counter;
SETC:
Para colocar um valor específico em um contador usa-se o comando SETC.
O exemplo abaixo define o valor 14 para o Contador1, ou seja, são passados como
parâmetros o nome do contador e o valor desejado para ele.
SetC(Contador1, 14);
Prof. Dra. Giovana Tripoloni Tangerino
Contadores INCR e DECR
A contagem pode ser incrementada com o comando INCR ou decrementada com o
comando DECR.
Os exemplos a seguir mostram que basta fornecer o nome do contador como
parâmetro.
Incr(Contador1);
Decr(Contador1);
TESTC.
● Para testar se o contador atingiu um determinado valor utiliza-se o comando
TESTC.
● Os três parâmetros necessários são: nome do contador, valor de comparação e
rótulo de destino.
● O exemplo a seguir verifica se Contador1 atingiu o valor 15.
● TestC(Contador1, 15, FechaCaixa);
● Se o Contador1 não atingiu o valor 15, então o fluxo do programa segue para a
próxima linha. No caso de ter atingido esse valor, ocorrerá um salto para a linha
definida pelo rótulo FechaCaixa.
Prof. Dra. Giovana Tripoloni Tangerino
Exemplo 3:
Prof. Dra. Giovana Tripoloni Tangerino
-- Nome: Programa 3
-- Função: ilustrar o uso de contadores e rótulos;
-- Observação: acionar a opção Contadores do menu Visualizar.
Contador1:Static Counter; -- define o primeiro contador
Contador2:Static Counter; -- define o segundo contador
Programa3:Subr;
Inicio:; -- Rótulo Início
TestC(Contador1,10,Final); -- Se Contador1=10 salta para
Final
Incr(Contador1); -- Incrementa o Contador 1
Branch(Inicio); -- Salta para o Início
Final:; -- Rótulo Final
Pmove(Pt(585,205,0)); -- Movimenta o braço
Pmove(Pt(650,0,0)); -- Movimenta o braço
Incr(Contador2); -- Incrementa o Contador 2
SetC(Contador1,0); -- Zera o Contador 1
Branch(Inicio); -- Salta para o Início
End;
Exemplo 3:
O programa a seguir cria dois contadores denominados de Contador1 e
Contador2.
O Contador1 é incrementado no início do programa e, logo em seguida,
comparado com o valor 10.
Enquanto esse valor não é atingido, o fluxo é desviado para o início do
programa pelo comando Branch(Inicio).
Quando Contador1 atinge o valor 10, o fluxo é desviado para a parte inferior
do programa iniciada pelo rótulo Final.
Esta parte do programa executa dois movimentos do braço, incrementa o
Contador2, zera o Contador1 e salta para o Início novamente.
Prof. Dra. Giovana Tripoloni Tangerino
Movimento em linha reta: LINEAR
Os movimentos de um robô com articulações
rotacionais ocorrem em forma de arcos.
Isso pôde ser notado no Programa 2, do artigo
anterior.
Mas há situações onde é necessário
movimentar o órgão terminal em linha reta.
Para isso, a linguagem AML traz o comando
LINEAR(qualidade), onde o parâmetro
qualidade permite definir o grau de
linearidade do movimento e pode receber os
seguintes valores: 0 até 10, 20, 30 e 50.
Prof. Dra. Giovana Tripoloni Tangerino
-- Nome: Programa 5
-- Data: 26-01-2004
-- Função: ilustrar o uso de
constantes e movimento
linear;
X:New 0;
Programa5:Subr;
PMove(PT(290,500,0));
Linear(X);
PMove(PT(-290,500,0));
PMove(PT(-290,250,0));
PMove(PT(290,250,0));
PMove(PT(290,500,0));
Linear(0);
PMove(PT(650,0,0));
End;