SP CAMPUS PIRACICABA ROBÓTICA · O programador especifica apenas as ações a tomar sobre os...

26
ROBÓTICA Prof a . Dra. GIOVANA TRIPOLONI TANGERINO Tecnologia em Automação Industrial NOÇÕES DE PROGRAMAÇÃO SP – CAMPUS PIRACICABA https ://giovanatangerino.wordpress.com [email protected] [email protected]

Transcript of SP CAMPUS PIRACICABA ROBÓTICA · O programador especifica apenas as ações a tomar sobre os...

ROBÓTICAProfa. Dra. GIOVANA TRIPOLONI TANGERINO

Tecnologia em Automação Industrial

NOÇÕES DE PROGRAMAÇÃO

SP – CAMPUS PIRACICABA

https://giovanatangerino.wordpress.com

[email protected]

[email protected]

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.

ROBÔ SCARA DA IBM

Área de trabalho

Prof. Dra. Giovana Tripoloni Tangerino

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;

EXERCÍCIOS

● Escreva as letras ao lado,

sabendo-se que cada quadrado

possui aresta igual a 10 mm.