50
Automação e Robótica I Técnicas e Linguagens de Programação de Robôs Ricardo Silva – nº 1841 Rui Cabral – nº 1547 Henrique Carvalho – nº 1331 - Viseu, 2001 -

Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

  • Upload
    hakhanh

  • View
    212

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1

Automação e Robótica I

Técnicas e Linguagens de

Programação de Robôs

Ricardo Silva – nº 1841

Rui Cabral – nº 1547

Henrique Carvalho – nº 1331

- Viseu, 2001 -

Page 2: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 2

1 - Introdução

Neste trabalho vamos apresentar uma visão geral dos diferentes tipos e métodos de

programação de robôs, o processo de desenvolvimento de um programa para um robô e ainda uma

abordagem às linguagens de programação mais usadas.

Em primeiro lugar, temos de estabelecer algumas terminologias:

• Os graus de liberdade de um robô serão numerados da seguinte forma: θ1, θ2, θ3, etc.

Usualmente os robôs industriais têm entre 4 e 6 graus de liberdade, um em cada junta.

Figura 1

• No final do braço do robô, está situado um órgão terminal. Nas figuras abaixo podemos ver

alguns dos mais utilizados.

Figura 2 Figura 3 Figura 4

Page 3: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 3

Considerando o órgão terminal da figura 2, o chamado gripper, vamos definir um ponto

no meio dos dois “dedos” denominado end-point (Pe) do robô.

Se, por exemplo, o robô tem um gripper de dois dedos, para poder levantar objectos,

definimos geralmente Pe como um ponto entre os dois dedos, de modo que quando um objecto

está neste ponto, tudo o que o robô tem a fazer para o levantar é fechar o gripper para agarrar

o objecto. Pode então executar um movimento com o objecto entre os dedos.

Mas não é suficiente definir Pe como um ponto. É também necessário “atribuir-lhe” um

sistema de coordenadas, para que possamos definir a posição de Pe no espaço, e a sua

orientação. Deste modo, estamos com todas as condições para definir uma posição e uma

orientação do gripper do robô relativamente à posição e à orientação de Pe.

A posição e orientação de Pe precisa de ser definida relativamente a um sistema de

eixos de referência global. Para isto, normalmente é utilizado um sistema de coordenadas fixo

na base do robô, que não deve ser movido.

Neste momento apenas é importante saber o que é o Pe e que a sua posição e

orientação no espaço de trabalho é determinada pelos valores da posição das juntas – θ1, θ2,

θ3, etc.

Uma posição e orientação especial de Pe no espaço, e por conseguinte um

determinado conjunto de valores de posição das juntas é chamada configuração do braço do

robô.

Page 4: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 4

2 - Tipos de programação de robôs

Podemos distinguir três tipos diferentes de níveis de programação de robôs, baseados nos

diferentes tipos de acção básica que estão especificados em cada um destes três níveis.

a) Programação a nível das juntas – no qual as acções básicas são posições (e

possivelmente movimentos) de cada junta individualmente: ângulos no caso de juntas

rotacionais e posições lineares no caso de juntas prismáticas.

b) Programação a nível do robô – no qual as acções básicas são as posições e

orientações (e porventura trajectórias) de Pe e do sistema de coordenadas afecto.

c) Programação de alto nível, que pode ser subdividida em:

i. Programação a nível de objectos – no qual as acções básicas são

operações a ser executadas nas partes, ou relações que devem ser

estabelecidas entre as partes.

Um exemplo desta ideia é o colocar um bloco sobre outro:

Pegar Bloco A pelo LadoA1 e LadoA3

Mover Bloco A. para Posição2

Pegar Bloco B pelo LadoB1 e LadoB3

Colocar Bloco B no topo de Bloco A

Com LadoA5 alinhado com LadoB6 e

Com LadoA1 alinhado com LadoB1 e

Com LadoA2 alinhado com LadoB2

Aqui, os blocos A e B são do mesmo tamanho, com os lados numerados de 1

a 4, face do topo número 5, e face de baixo número 6.

As relações alinhados com especificadas no último comando deste pequeno

programa a nível de objectos, são as instruções necessárias para localizar o

Bloco B relativamente ao Bloco A no espaço.

Page 5: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 5

Para este programa ser um programa completo que possa ser compilado e

interpretado em comandos actuais de robô, teremos que acrescentar algumas

definições dos dois objectos envolvidos, e definições da Posição2 e das outras

posições utilizadas.

ii. Programação a nível de tarefas – neste caso, as acções básicas

especificadas pelo programa são tarefas completas ou subtarefas, tais como:

• Agarra a caneta vermelha

• Coloca o copo na mesa

Para este tipo de programas funcionar, o sistema do robô precisa de saber,

de alguma maneira, de tipos de canetas e cores, de copos e partes que são

necessárias para fazer a tarefa. Dar informações deste tipo ao sistema não é

fácil.

A programação a nível das juntas e a nível do robô continua a ser o tipo de programação de

robôs mais utilizada. A programação a nível de objectos não tem tido muito êxito, e por isso continua a

ser assunto de investigação. A nível industrial, não há linguagens de programação a nível de tarefas

que possam ser aplicadas, e por isso são também assunto de estudo e investigação.

Estes problemas advém do facto de tanto a programação a nível de objectos como de tarefas

carecer que o robô tenha algum tipo de controlo inteligente.

Page 6: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 6

3 - Métodos de programação de robôs

Podemos também dividir os métodos de programação de robôs em dois tipos diferentes:

• métodos de programação On-line;

• métodos de programação Off-line.

A diferença entre estes dois tipos de programação reside no facto de na programação on-line

ser necessário utilizar o robô a ser programado para gerar o programa, enquanto que na programação

off-line não é preciso ter o robô senão na fase final de teste e implementação.

A programação off-line envolve a escrita do programa em modo texto numa linguagem de

programação de robô. As linguagens mais utilizadas na programação de robôs irão ser descritas mais

à frente. Por agora vamos analisar os métodos de programação.

3.1 - MÉTODOS DE PROGRAMAÇÃO ON-LINE

3.1.1 - Programação por amostragem ou programação por ensino

Este tipo de programação consiste na movimentação física do braço do robô através dos

movimentos e acções que terá que efectuar num determinado processo. Ao mesmo tempo que esta

movimentação física é efectuada, o robô regista as posições (e trajectórias se necessário) para onde,

ou através das quais, o robô terá de se deslocar.

• Se o controlador apenas regista (na sua memória) posições estáticas da configuração do

robô, e não trajectórias, isto é chamado programação ponto-a-ponto. Cada configuração é

identificada por um número ou um nome simbólico. (Note-se que o termo ponto-a-ponto

não pode ser interpretado no seu sentido lato pois, o que é realmente registado são as

configurações do braço, ou seja, a posição e orientação de Pe.

A execução do programa só envolve que o sistema de controlo do robô mova o braço do

robô para cada uma das configurações registadas na sequência especificada no programa.

Page 7: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 7

• Se o controlador pode registar as trajectórias pelas quais o órgão terminal do robô deve

passar, isso é a chamada programação por trajectória. Este conceito é bastante

semelhante à programação ponto-a-ponto excepto no facto de serem gravados muitos

mais “pontos” (configurações do robô). O número necessário e a distância entre eles, são

automaticamente determinados pelo sistema de controlo do robô. O controlador

simplesmente simplifica o movimento do braço do robô enquanto o programador o move na

direcção desejada.

A execução do programa é apenas uma questão de repetir as trajectórias programadas

pela ordem pela qual foram programadas.

Outros tipos de acções não são geralmente possíveis de programar com este método de

programação, contudo existe usualmente uma maneira de programar a abertura/fecho do gripper, ligar

ou desligar um ponta de solda, etc.

Durante este tipo de programação, os motores do robô são desligados. Por este facto, este tipo

de programação é muitas vezes conhecido como programação on-line passiva.

A maior vantagem deste tipo de programação é que é bastante fácil de fazer, e não requer

nenhum conhecimento especial de programação ou treino.

As principais desvantagens são:

o não é prática para robôs muito grandes ou pesados;

o não pode ser usada em situações perigosas;

o grande precisão e movimentos em linha recta são difíceis de conseguir, assim

como outra trajectória geométrica, como circunferências, etc;

o é difícil de associar sensores de dados externos;

o a sincronização com outras máquinas ou equipamentos da célula de trabalho é

difícil.

Para robôs de pequenas dimensões e que só são usados para tarefas relativamente simples

que não envolvam outras máquinas ou robôs, este método de programação é ainda o mais eficaz e o

menos dispendioso.

Page 8: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 8

3.1.2 - Programação pela consola

Algumas das dificuldades podem ser ultrapassadas usando o método de programação pela

consola (teach-box). Este método usa uma consola e uma programação on-line activa.

A consola é um painel de controlo que está conectado ao sistema

de controlo do robô, que pode ser usado para fazer o braço do robô

deslocar-se para uma configuração especial ou executar outras

operações tal como abrir ou fechar o gripper.

A consola geralmente tem um conjunto de botões que permite

configurações especiais ou operações que podem ser gravadas como um

passo do programa. É também possível armazenar movimentos

particulares que usam trajectórias definidas.

O uso deste método de programação requer que os motores do

robô estejam ligados. Isto é chamado, algumas vezes, de programação on-line activa. Isto significa

também que é potencialmente perigoso pois, o programador tem uma grande tentação de estar perto

do robô enquanto este está a ser programado para melhor observar o que se está a passar, para

ajustar ou alinhar melhor a posição e orientação do gripper, etc. Isto nunca deverá acontecer! O robô

deve sempre ser colocado em modo de segurança antes de o programador poder entrar na sua área

de trabalho.

Se for possível, utilizando a consola, incluir especificações de movimento e velocidade e/ou

especificar outras condições das acções e movimentos do robô, tais como o tipo de trajectória a usar

entre duas configurações, este método de programação é algumas vezes chamado de programação

extendida com a consola.

Ambos os métodos, descritos anteriormente, são métodos de programação on-line. A

programação por ensino é essencialmente um método para programação a nível das juntas. A

programação com a consola é um método que usualmente permite misturar a programação a nível das

juntas e a programação a nível do robô num mesmo programa. É algumas vezes mais conveniente

mover somente uma junta, para estabelecer algumas configurações desejadas do robô, do que tentar

comandar o movimento do Pe.

Embora ambos os métodos serem os mais usados, têm duas importantes desvantagens:

Figura 5 – Uma consola

Page 9: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 9

Ø Na programação on-line é preciso aceder ao robô enquanto está a ser

programado, isto significa que o robô não pode estar a fazer mais nada enquanto

está a ser programado, ou por outras palavras, enquanto a programação estiver a

decorrer não poderão ser utilizados quaisquer periféricos ou robôs dependentes do

mesmo sistema de controlo. Se existe mais do que um robô, cada um deles tem de

ser individualmente programado, o que significa que uma linha de produção com

diversos robôs tem de ser parada para que se possa proceder à programação de

cada um deles. Isto implica uma paragem na produção e uma perda de tempo, que

terá consequências financeiras.

Ø O programa gerado pelos métodos de programação on-line, só existem na

memória do sistema de controlo do robô e pode não ser possível transferi-lo para

outro PC, por exemplo para imprimir o programa. Isto torna os programas difíceis

de documentar e modificar. Mais uma vez, isto traduz-se em custos acrescidos na

programação e na reprogramação utilizando robôs com métodos de programação

on-line.

Os métodos de programação on-line só podem ser usados para programação a nível das

juntas ou a nível do robô. Não podem ser usados para programação de alto nível.

3.2 - MÉTODOS DE PROGRAMAÇÃO OFF-LINE

Os métodos de programação off-line envolvem a criação de um ficheiro de texto contendo as

instruções do robô e outras declarações que formam o programa que o robô vai executar, tais como,

definições dos pontos, etc.

Neste sentido, a programação off-line de robôs é muito parecida com a implementação de

programas de computadores usando as linguagens C, C++, Java, ou outras. As linguagens de

programação de robôs são, porém, tipicamente mais simples e frequentemente não suportam boas

práticas de programação muito facilmente. Por exemplo, muitas linguagens de programação de robôs

ainda têm a declaração goto, uma fonte bastante conhecida de erros e bugs em qualquer tipo de

programas. Os ambientes de programação, que suportam o processo de desenvolvimento do

Page 10: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 10

programa, são tipicamente como que “primitivos” em comparação com os ambientes actuais de

programação de computadores.

Tal como num programa de computador, o ficheiro de texto especifica a sequência das acções

básicas que deverão ser executadas, juntamente com outra informação necessária para controlar a

velocidade máxima do movimento do órgão terminal (Pe), ou tipos de trajectórias que devem ser

seguidas entre dois pontos , por exemplo.

As maiores vantagens da programação off-line são:

Ø Os programas podem ser desenvolvidos sem ser necessário utilizar o robô;

Ø A sequência de operações e movimentos do robô podem ser optimizados ou

facilmente melhorados, uma vez que o programa básico já foi desenvolvido;

Ø Procedimentos e subrotinas anteriormente desenvolvidas e testadas podem ser

usadas;

Ø Dados de sensores externos podem ser incorporados, embora isso torne o

programa mais complicado, e consequentemente mais difícil de modificar e alterar;

Ø Dados em CAD podem ser utilizados, por exemplo as dimensões das partes e as

relações geométricas entre elas;

Ø Os programas podem ser testados e avaliados utilizando técnicas de simulação,

embora isto não possa nunca retirar a necessidade de fazer o teste final do

programa no robô real;

Ø Os programas podem ser mais facilmente modificados e verificados. E ainda mais

facilmente ser devidamente documentados e comentados.

A programação off-line pode ser usada para desenvolver programas a nível do robô e

programas de alto nível. É possível utilizar os métodos off-line para programação a nível das juntas

mas muito raramente são utilizados.

A relação entre a programação on-line e off-line e entre controlo de cinemática e básico num

robô industrial é o representado na figura seguinte:

Page 11: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 11

Figura 6

Alguns exemplos de linguagens de programação de robôs são:

• Linguagens de programação a nível de robô:

o AL – Universidade de Stanford, USA (1974);

o AML - IBM (1982);

o LM – Universidade de Grenoble (1989);

o VAL-II – Univation (1983);

o V+ - Adept (1989);

o RAPID – ABB (1994).

• Linguagens de programação a nível de objectos:

o LAMA – MIT Laboratório de Investigação(1976);

o AUTOPASS – IBM (1977);

o RAPT – Universidade de Edimburgo (1978-86).

Page 12: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 12

4 - Processos de desenvolvimento de um programa de robô

Nesta secção vamos dar uma visão dos seis passos no processo de desenvolvimento bom e

fidedigno de um programa de robô.

Como este conceito do processo de desenvolvimento do programa é um pouco difícil de

explicar apenas teoricamente vamos considerar o seguinte exemplo:

Situação inicial Situação final

AB

CD

Figura 7

AB

CD

Figura 8

Para executar a tarefa acima proposta, temos alguns passos que devemos dar. Os seis passos

básicos no processo de programação do robô são:

Passo 1: Analisar e decompor a tarefa numa série de operações dos objectos envolvidos, e especificar

a sua ordem.

Por exemplo, para executar a tarefa definida acima teremos de decompô-la na seguinte

sequência de operações dos três Blocos:

I. Retirar o Bloco B de cima do Bloco A, e colocá-lo ao seu lado;

II. Colocar o Bloco A em cima do Bloco C;

III. Colocar o Bloco B em cima do Bloco A;

IV. Alinhar o Bloco A com o Bloco C;

V. Alinhar o Bloco B com o Bloco A.

Tarefa: Mover o Bloco A e o Bloco B de modo a formar uma torre no topo do Bloco C, na seguinte

ordem C, A, B, desde o fundo. Todos os blocos devem estar bem alinhados na torre final.

Page 13: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 13

As primeiras 3 operações são obviamente necessárias. As duas últimas operações de

alinhamento são apenas necessárias para ter a certeza que cada bloco está correctamente alinhado

com o debaixo. A simples tarefa de colocar um bloco em cima de outro não garante que eles fiquem

alinhados, por isso estas operações extra são necessárias.

Sabendo que estas duas operações de alinhamento serão necessárias é apenas um caso de

experiência, e isto ilustra o facto de que cada passo do processo de programação necessita de

bastante experiência do modo de funcionamento de todo o processo antes de a podermos

implementar.

Esta solução apresentada com as cinco operações definidas anteriormente não é a única

possível e também não é a melhor.

Por exemplo, é provavelmente melhor alinhar logo o Bloco A com o Bloco C imediatamente

depois deste ter sido colocado em cima do Bloco C, uma vez que o robô já está nessa posição. Esta

operação depende, é claro, de não haver deslocação dos blocos A e C aquando da colocação do Bloco

B por cima do Bloco A. Se a operação for feita suavemente isto provavelmente é verdade.

Outra possibilidade, se os dedos do gripper forem largos o suficiente, e se o robô tiver

suficientes graus de liberdade (o que se considera neste caso) é pegar ao mesmo tempo no Bloco A e

B e colocá-los directamente por cima do Bloco C. Isto implicaria uma redução das operações a fazer, e

por consequência do tempo de execução do programa, mas é uma possibilidade mais arriscada de

fazer e provavelmente irá falhar.

Se mover os Blocos A e B juntos não é seguro, ou se não for possível devido à largura do

gripper, ou se o robô não tem suficientes graus de liberdade, outra possibilidade é mover o Bloco C.

Nada nos diz na tarefa que esta opção não é possível.

Mover o Bloco C para o mais próximo possível do Bloco A significa que as operações a

realizar com os Blocos A e B implicam trajectórias menores, logo serão mais rápidas. Não terão

necessidade de passar por cima do Bloco D, o que significa um menor risco de colidir com ele ou com

outros obstáculos no caminho.

Todas estas possibilidades mostram-nos que as tarefas do robô não estão usualmente

especificadas. Fica ao critério do programador estudar todas as possibilidades e implementar aquela

que considere mais fiável, rápida e com menos possibilidade de fracasso. É, por isso, importante que

todos os aspectos relativos à tarefa a executar sejam considerados neste estado da programação.

Page 14: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 14

Mudar, mais tarde, o modo como a tarefa é executada pode trazer elevadas despesas e ser mais

propenso a erros.

Passo 2: Identificar e especificar todas as situações necessárias ao programa, todos os movimentos e

acções do robô.

Uma situação é uma configuração particular do braço do robô e do estado do espaço de

trabalho – ou seja, onde é que as diversas partes estão e como estão orientadas. Uma configuração do

robô é definida pela posição e orientação do sistema de eixos colocado no órgão terminal (Pe) do robô.

Assim, para a nossa tarefa de exemplo, nós poderemos especificar as seguintes situações:

0. A situação em que a tarefa começa – dá-nos a configuração inicial do robô e a

localização das partes;

1. A situação em que Pe está sobre o Bloco D, e as partes estão numa localização

qualquer – utilizada para definir trajectórias livres de colisão de um lado da mesa para

o outro;

2. A situação em que Pe está verticalmente acima do centro do topo do Bloco B (na sua

localização inicial) – donde o robô pode executar a tarefa de pegar no bloco sem

problemas;

3. A situação em que Pe está coincidente com o centro do Bloco B – utilizada para definir

a localização de aperto do Bloco B;

4. A situação em que Pe está ao lado do Bloco A, a uma altura igual a metade da altura

do Bloco A, e a uma distância suficiente deste para que o robô tenha espaço para

colocar o Bloco B – utilizado para definir a tarefa de poisar o Bloco B depois de ter sido

retirado de cima do Bloco A.

É uma boa ideia tentar identificar e especificar as situações que podem ser usadas para

programar diferentes acções do robô. A tarefa 1, indicada acima, é um exemplo disto: é usada para

definir a trajectória de todos os movimentos que terão de passar por cima do bloco D.

Um cuidado especial é também preciso na definição da situação 4, usada para definir o poisar

do Bloco B. É melhor acrescentar um pouco mais de altura à localização de Pe definida por esta

situação de forma que o robô largue o Bloco B quando este está a pouca distância da mesa. Quando o

robô abrir o gripper o Bloco B irá cair assim, a uma distância muito próxima da mesa.

Page 15: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 15

Este procedimento é feito porque existe sempre um pequeno erro na posição e orientação real

de Pe, e se definirmos a tarefa 4 para colocar o Pe exactamente metade da altura do Bloco B sobre a

mesa, existe o risco que quando o robô executa esta tarefa, ele vai tentar mover o Bloco B mais

abaixo do que a mesa. O robô ao colidir com a mesa, e como esta tem mais força que o braço do robô

vai fazer com que o sistema de controlo pare o robô.

A definição de situações precisa assim de ter em conta as possíveis consequências ou efeitos

de erros considerados pequenos que geralmente ocorrem em tarefas realizadas pelo robô.

Existem dois tipos de erros: erros absolutos e erros de repetição. Erros absolutos acontecem

quando o robô não coloca o órgão terminal (Pe) na configuração para a qual foi programado. Este erro

não é frequente no espaço de trabalho, depende da geometria do braço do robô e de outros aspectos

do seu controlo. Usualmente os erros absolutos serão mínimos se o Pe se encontrar próximo do corpo

do robô (base), do que se Pe se encontrar numa das extremidades do espaço de trabalho. Definir

movimentos próximos da base do robô podem minimizar o aparecimento de erros absolutos, mas

podem ser mais restritos dependendo da geometria do braço do robô. Arranjando maneira de os

movimentos se fazerem o mais próximo possível da base do robô irá, por isso, minimizar o

aparecimento de erros absolutos.

Os erros de repetição ocorrem quando o robô está programado para fazer sempre o mesmo

movimento repetidamente, movendo Pe para a mesma posição e orientação. Usualmente, o robô não

vai deslocar o Pe exactamente para o mesmo sítio do Pe definido (erro absoluto) nem irá exactamente

para o mesmo sítio de cada vez. Existirá sempre um pequeno volume de espaço à volta de Pe para o

qual o robô irá mover o Pe, de cada vez que for instruído para o fazer.

Tanto os erros absolutos como os erros de repetição podem ser minimizados recorrendo a

movimentos lentos do robô. Algumas vezes é também possível especificar o nível de precisão

requerido para cada movimento. Uma precisão mais alta significa que os movimentos serão feitos com

pequenas acelerações, e por consequência, o robô irá demorar mais tempo a realizar os movimentos.

Um ponto intermédio entre a precisão e o tempo de execução requeridos precisa de ser estabelecido

para cada movimento em cada programa.

Page 16: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 16

Passo 3: Identificar quaisquer tipos de acções ou operações repetidas e especificá-las como

subrotinas com parâmetros.

Tal como em qualquer programação de computadores, se o robô precisar de executar a

mesma sequência de movimentos e acções em diferentes pontos do programa, ele deve utilizar o

mesmo código para o fazer. Isto é melhor implementado com a definição de subrotinas. Este facto irá

aumentar a manutenção do programa e reduzir a probabilidade de erros de programação.

Na tarefa que considerámos como exemplo, podemos identificar partes de aquisição e partes

de colocação que requerem similares sequências de movimentos e acções que serão precisas diversas

vezes. Por exemplo, poderemos definir uma subrotina, chamada Pegar-Poisar que servirá para pegar

no Bloco e também poisar o Bloco.

Esta subrotina tem três argumentos:

Inicio – define a localização de Pe no inicio das tarefas de pegar e poisar;

ObterPonto – define a localização de Pe quando o robô fecha o gripper para pegar

num Bloco ou o abre para poisar o Bloco;

Acção – define se a acção a executar é de pegar ou poisar.

DefineProcedimento Pegar-Poisar (Inicio, ObterPonto, Acção)

Se Situação_corrente = Inicio então

Se Acção = “Pegar” então Abrir_gripper

Caso contrário Acção = “Poisar” então

Se gripper = ABERTO então

FALHA com a mensagem (‘ Nenhum Bloco no Gripper’);

Caso contrário FALHA com a mensagem (‘A acção especificada não existe’);

Mover para ObterPonto com velocidade = BAIXA e precisão = ALTA ;

Se Acção = “Pegar” então Fechar_o_ gripper;

Caso contrário se Acção = “Poisar” então Abrir_gripper;

Mover para Inicio com velocidade = BAIXA e precisão = ALTA ;

Caso contrário FALHA com a mensagem (‘Robô não está no inicio’);

FimDoProcedimento;

Page 17: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 17

Como podemos ver no código acima para esta subrotina, muitas das suas linhas de código são

de validação dos valores dos parâmetros, de modo a verificar se determinada acção pode ser

executada.

O comando Mover para é também definido para ser um movimento lento e com grande

precisão. Por outro lado, mover o Pe para o Inicio pode ser feito mais rapidamente e com menos

precisão.

Passo 4: Desenhar e desenvolver o programa completo e toda a sua documentação.

Mesmo depois de se terem especificadas, implementadas e testadas as operações, as

situações e subrotinas, há ainda muito trabalho a ser feito, nomeadamente no que concerne á

implementação e documentação dum programa de robô completo. Esta implementação, e todas as

decisões tomadas, devem ser consistentes com as dos passos anteriores.

Passo 5: Testar e depurar o programa utilizando um simulador do robô e do seu espaço de trabalho.

Os ambientes de programação off-line actuais fornecem-nos simuladores que podem ser

utilizados para modelar e depois simular o robô e o seu espaço de trabalho com todos os

equipamentos existentes.

O aproveitamento deste simulador pode tornar as operações de teste e depuração de um

programa muito mais fáceis, mas isto só é possível se o simulador é baseado num bom modelo do

robô actual e do seu espaço de trabalho. Implementar um bom modelo de simulação pode, muitas

vezes, ser uma dificuldade e requerer muito tempo.

Este passo, como é obvio apenas se aplica aos métodos de programação off-line.

Passo 6: Testar o programa no robô real.

Depois de um programa ter sido implementado, depurado, e testado utilizando um simulador,

deve ser testado num robô real. Um simulador nunca deve ser encarado comum teste suficiente para

um programa de robô.

Page 18: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 18

Se o programa a implementar é para ser executado em mais que um robô, por exemplo numa

linha de produção com 10 robôs que vão todos executar as mesmas tarefas, temos de decidir em

quantos deles vamos testar o programa.

Testar o programa num só robô pode não ser a melhor solução. Testar o programa em todos

os 10 robôs da linha de produção se calhar é demasiado. De modo a podermos decidir em quantos

robôs vamos testar o programa é necessário saber algumas características dos robôs onde o programa

vai ser executado, tais como a sua história e desempenho. Quanto menos se souber destes dois

aspectos em mais robôs teremos de testar o programa.

Para concluir, um processo de programação de robô envolve muitas decisões e escolhas, e

cada uma delas terá consequências e implicações nos passos subsequentes. É então muito importante

registar devidamente todas estas decisões e escolhas, juntamente com as razões que nos levaram a

optar por elas, durante o processo de implementação do programa.

Não tendo em conta todos estes aspectos, poderá dar origem a acidentes, custos

desnecessários de produção e falhas muito dispendiosas.

Page 19: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 19

5 - Programando com sensores externos

Os sensores externos utilizados nas aplicações industriais de robôs podem ser divididos em dois

tipos:

1. Sensores complexos ou de múltiplos valores

a. Sensores de força de múltiplos eixos

b. Sensores de múltipla pressão ou toque

c. Câmaras e sistemas de visão

2. Sensores simples ou de valor único

a. Sensores de toque ou contacto

b. Sensores de um eixo

c. Interruptores

Os sensores simples ainda podem ser subdivididos em:

Ø sensores binários ou de bit único

Ø sensores analógicos ou multi-bit, que precisam de conversores

analógico/digitais e valores de 8 ou 16 bit.

Os sensores complexos são, na verdade, subsistemas completos que precisam de hardware e

software especial e interfaces com o sistema de controlo do robô. São também caros.

Os sensores simples podem ser ligados directamente ao sistema de controlo do robô que

normalmente têm entradas analógicas e digitais. Estes sensores são baratos.

Existem três aspectos importantes relativamente aos sensores que devem ser considerados

quando se decide usá-los nas aplicações industriais.

Fiabilidade – os sensores e qualquer periférico ou software devem ser de grande fiabilidade

nas condições de aplicação, e que depois de testados tenham dado excelentes provas de

funcionamento nas condições de aplicação.

Page 20: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 20

Calibração – a calibração dos sensores não deve demorar muito tempo a fazer, nem deve

precisar de especialização ou material especial para a fazer, não deve precisar de ser feita

muito frequentemente.

Precisão – a precisão dos sensores utilizados deve ser constante com o tempo e utilização,

mas não deve ser maior do que o necessário para uma aplicação particular.

Os melhores sensores que se podem usar considerando a sua fiabilidade, calibração e

precisão, são os sensores binários. Um dos pontos fortes é o facto de não precisarem de calibração.

Quanto aos outros aspectos, são muito fiáveis pois são quer mecanicamente quer electricamente muito

fáceis de fazer. E têm precisão absoluta partindo do principio que estão a funcionar bem.

Os sensores complexos são muitas vezes usados para fornecer dados sobre os objectos

envolvidos numa tarefa ou sobre o órgão terminal do robô, a posição global e a orientação, por

exemplo.

Para concluir, quanto mais sensores forem usados, mais complicado ficará o programa e por

consequência mais difícil de testar e depurar, e a previsão do tempo de execução mais difícil de fazer.

Todas estas consequências de usar até sensores binários, pode ser razão suficiente para não usar

sensores ou o mínimo possível, e em vez disso, utilizar movimentos e acções do robô mais robustas,

mesmo que o programa fique mais extenso e com um tempo de execução superior.

Page 21: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 21

6 - Linguagens de programação de robôs

A maioria das linguagens de programação de robôs implementadas hoje em dia usa uma

combinação de programação textual e programação pela consola. A linguagem textual é usada para

definir a lógica e a sequência do programa, enquanto as posições específicas dos pontos no espaço de

trabalho são definidas por meio de um consola. Isto pode ser imaginado como um método de

programação off-line/online, no sentido que o programa em si pode ser escrito off-line com a linguagem

textual, enquanto os pontos devem ser definidos online com o consola.

6.1 - LINGUAGENS TEXTUAIS DE PROGRAMAÇÃO DE ROBÔS

A primeira linguagem robótica textual foi WAVE, desenvolvida em 1973 como uma linguagem

experimental de pesquisa no Stanford Artificial Intelligence Laboratory. A pesquisa, envolvendo um

robô ligado a um sistema de visão de máquina, foi realizada usando a linguagem WAVE. A pesquisa

demonstrou a viabilidade de coordenação visual/motora do robô. O desenvolvimento de uma

linguagem subsequente começou em 1974, em Stanford. A linguagem foi chamada AL, e podia ser

usada para controlar braços múltiplos em tarefas exigindo coordenação dos braços.

Muitos dos conceitos das linguagens WAVE e AL foram aproveitados no desenvolvimento da

primeira linguagem textual de programação de robôs comercialmente disponível, a linguagem VAL

(Victor Assembly Language, de Victor Scheinman). A linguagem VAL foi introduzida em 1979 pela

Unimation Inc. para seus robôs da série PUMA. Essa linguagem foi melhorada para VAL II e lançada

em 1984.

O trabalho de desenvolvimento de linguagens de programação de robôs prosseguiu também

nos laboratórios T. J. Watson Research Labs, da 3M Corporation, tendo começado por volta de 1976.

Duas das linguagens da IBM foram a AUTOPASS e a AML (A Manufacturing Language), esta última

sendo comercialmente disponível desde 1982 com os robôs da IBM. Ambas as linguagens são

dirigidas para tarefas de montagem e tarefas relacionadas.

Algumas das outras linguagens textuais para robôs que deveriam ser mencionadas incluem

RAIL, introduzida em 1981 pela Automatix, para montagem com robôs e solda eléctrica assim como

visão de máquina, MCL (Manufacturing Controle Language), desenvolvida sob o patrocínio da Força

Aérea Norte-Americana pela McDonnell-Douglas como melhoramento da linguagem APT

Page 22: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 22

(Automatically, Programmed Tooling), o HELP, uma linguagem desenvolvida pela General Electric

Company sob licença da firma italiana DEA.

6.2 - GERAÇÕES DE LINGUAGENS DE PROGRAMAÇÃO DE ROBÔS

As linguagens textuais de programação de robôs possuem uma variedade de estruturas e

capacidades. Estas linguagens estão ainda em evolução. Podem-se identificar duas gerações de

linguagens textuais e especular sobre como iria parecer uma linguagem de futura geração.

6.2.1 - Linguagens de primeira geração

As linguagens de primeira geração usam declarações de listagens de comandos e

procedimentos da consola para desenvolver programas de robôs. Estas linguagens foram

principalmente desenvolvidas para implementar controle de movimento com uma linguagem textual de

programação e são, às vezes, chamadas de motion level language. Características típicas incluem a

capacidade de definir movimentos do manipulador (usando as declarações para definir a sequência

dos movimentos e a consola para definir a localização dos pontos), interpolação linear, ramificação e

comandos elementares por sensores envolvendo sinais binários (ON-OFF). Em outras palavras, as

linguagens de primeira geração possuem capacidades semelhantes aos métodos avançados de

programação por consola usados para realizar as instruções de programação do robô. Estas

linguagens podem ser usadas para definir a sequência de movimentos do manipulador (MOVE),

possuem capacidade de entrada/saída (WAIT/SIGNAL) a podem ser usadas para escrever sub-rotinas

(BRANCH). Para escrever um programa de complexidade baixa/média, um utilizador provavelmente

acharia mais fácil usar os métodos de programação pela consola, enquanto pessoas com experiência

em programação de computadores provavelmente achariam mais fácil usar as linguagens de primeira

geração. A linguagem VAL é um exemplo de uma linguagem de programação de robôs de primeira

geração.

As limitações comuns das linguagens de primeira geração incluem a incapacidade de

especificar cálculos aritméticos complexos para usar durante a execução do programa, a incapacidade

de usar sensores complexos a dados fornecidos pelos mesmos, e uma capacidade limitada de

Page 23: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 23

comunicação com outros computadores. Essas linguagens não podem facilmente ser ampliadas para

futuros melhoramentos.

6.2.2- Linguagens de segunda geração

As linguagens de segunda geração superam as limitações das de primeira geração e

aumentam sua capacidade incorporando características que fazem o robô parecer mais inteligente. Isto

permite ao robô realizar tarefas mais complexas. Estas linguagens foram chamadas linguagens de

programação "estruturadas", porque possuem grupos de comando estruturados usados em linguagens

de programação de computadores. Linguagens de segunda geração comercialmente disponíveis

incluem VAL II (Anexo 1), A RAIL (Anexo 2) e a ML (Anexo 3). A programação nestas linguagens é

muito parecida com a programação de computadores. Isto poderia ser considerado uma desvantagem,

já que exige um programador de computador para realizar a programação. As linguagens de segunda

geração usam geralmente um consola para definir posições no espaço de trabalho.

As características e capacidades destas linguagens de segunda geração podem ser citadas

como se segue:

1. Controle de movimento: esta característica é basicamente a mesma que para as linguagens de

primeira geração.

2. Capacidades de monitorização avançadas: os melhoramentos nas linguagens de segunda

geração normalmente incluem a capacidade de manusear muito mais que simples sinais

binários (on-off) e a capacidade de controlar dispositivos através dos dados fornecidos

pelos sensores.

3. Inteligência limitada: isto é, a capacidade de utilizar as informações recebidas sobre o

ambiente de trabalho para modificar o comportamento do sistema de forma programada.

4. Comunicações a processamento de dados: linguagens de segunda geração geralmente

possuem meios para interagir com computadores a bases de dados de computadores

com a finalidade de manter registros, gerar relatórios e controlar actividades nas células

de trabalho.

A capacidade de controle de movimento em algumas das linguagens de segunda geração vai

além da capacidade da geração anterior, pela inclusão de problemas de geometria mais complexos do

que interpolação linear. A linguagem MCL, por exemplo, é baseada na linguagem APT.

Page 24: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 24

Consequentemente a linguagem MCL inclui muitas das características de definição de geometria,

contidas na linguagem APT. Por exemplo, linhas, círculos, planos, cilindros a outros elementos

geométricos podem ser definidos em APT e MCL.

As capacidades de monitorização avançadas incluem o uso de sinais analógicos, além de

sinais binários, e a capacidade de comunicar-se com dispositivos que são controlados por esses sinais.

O controle do gripper é um exemplo das capacidades sensoras ampliadas das linguagens da

segunda geração. Uma operação típica do gripper usando uma linguagem de primeira geração envolve

comandos para abrir ou fechar a garra. Linguagens de segunda geração permitem o controle de

“dedos” com sensores que podem medir forças. O sensor monitoriza as forças ou pressões durante o

fechamento contra um objecto, e o controlador do robô é capaz de regular a intensidade da força de

pega que é aplicada ao objecto.

A terceira característica proporcionada pelas linguagens de segunda geração é a inteligência

limitada. Em vez de repetir sempre o mesmo modelo de movimento com pequenas diferenças para

diversas configurações do produto, o robô tem a capacidade de reagir frente a eventos irregulares que

ocorrem durante o ciclo de trabalho de uma maneira que parece inteligente. A inteligência é limitada no

sentido que ela deve ser programada no controlador do robô. O robô não pode fazer nada, por conta

própria - nada além do que ele foi programado para fazer.

As linguagens de primeira geração são bastante limitadas na sua capacidade de comunicar

com outros computadores. Normalmente, qualquer comunicação com outros controladores a

dispositivos externos semelhantes deve ser realizada por meio dos comandos WAIT a SIGNAL das

portas de entrada/saída do robô. Linguagens de segunda geração possuem uma maior capacidade de

interagir com outros sistemas computadorizados. A capacidade de comunicação seria mantida para

conservar registros de produção em cada produto, gerando relatórios de desempenho a funções

semelhantes de processamento de dados.

Uma característica relacionada das linguagens de segunda geração é a extensibilidade. Isto

significa que a linguagem pode ser estendida ou aprimorada pelo usuário para dar conta dos requisitos

de futuras aplicações, futuros dispositivos sensores a futuros robôs, todos podendo ser mais

sofisticados do que na época em que a linguagem foi, inicialmente liberada. Significa também que a

linguagem pode ser expandida para desenvolver comandos, sub-rotinas e macros (com um mecanismo

para passar valores de parâmetros do programa principal), que não são incluídos no conjunto inicial de

instruções.

Page 25: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 25

6.2.3 - Linguagem de futura geração

As linguagens de programação de futura geração envolverão um conceito chamado

Modelamento de mundo. Outros termos às vezes usados incluem linguagens baseadas em modelos e

linguagens de tarefa. Num esquema de programação baseado no Modelamento de mundo, o robô

possui o conhecimento do mundo tridimensional e é capaz de desenvolver seu próprio conhecimento

passo a passo, para realizar uma tarefa baseada num objectivo definido do que precisa ser realizado.

De acordo com esta definição, existem dois aspectos básicos de uma linguagem de

programação baseada num sistema com modelo tridimensional. O primeiro é que o sistema de robô

possui na sua memória de controle um modelo tridimensional do seu espaço de trabalho.

O segundo aspecto é a capacidade de auto-programação. De facto, o programador humano

fornece ao sistema um objectivo, e o sistema desenvolve o seu próprio programa de acções

necessárias para realizar o objectivo.

Page 26: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 26

Anexo 1

Page 27: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 27

LINGUAGEM VAL II

Esta linguagem foi desenvolvida pela Unimation Inc. e é usada para os seus robôs industriais.

VAL II é uma versão mais aperfeiçoada da linguagem de programação VAL, lançada pela Unimation

em 1979 para os seus robôs industriais da série PUMA.

§ DESCRIÇÃO GERAL

VAL II é um sistema de controle por computador e uma linguagem de programação de robôs

desenvolvidos para os robôs industriais Unimation. O VAL II tem a capacidade de definir facilmente a

tarefa que um robô deve efectuar, isto porque as tarefas são definidas por programas escritos pelo

utilizador. Esta linguagem tem como grandes vantagens a de incluir a capacidade de reagir a

informações provenientes de sensores, como visão de máquina, desempenho melhorado em termos de

geração de trajectória do braço e trabalhando em situações de emergência ou usando sistemas de

coordenadas de referência.

§ COMANDOS MONITOR

O modo monitor do sistema VAL II é usado para funções como definições de posições de

pontos no volume de trabalho, edição e execução de programas, calibração do braço do robô e

operações semelhantes.

Definindo posições

Comando Descrição

HERE P1 Define a variável P1 como sendo a posição actual do braço do robô.

WHERE Solicita que o sistema exiba a posição actual do robô em coordenadas espaciais cartesianas e variáveis da articulação do punho. Ele exibe também a abertura actual do gripper se o robô for equipado com uma mão posicionada por servocomando.

TEACH É usado para registar uma séria de valores de posição sob o comando da tecla de registo na consola.

TEACH P1 Com a execução deste comando, a primeira variável de posição registada será P1, a próxima será P2, a terceira será P3 e assim por diante. É possível ensinar uma trajectória completa posicionando sucessivamente o robô, usando a consola e pressionando a tecla de registo.

POINT PA = P1 Estabelece o valor de PA (uma variável de posição) igual ao valor de P1.

Page 28: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 28

Edição e controle do programa

EDIT ASSEMBLY1

M

E

Comandos para entrada e saída no modo edição do programa. O comando EDIT abre o programa que deve ser chamado ASSEMBLY1. O Comando E (E de EXIT) provoca a saída e volta para o modo monitor.

SPEED Especificação da velocidade. Este comando no modo monitor do sistema VALL II, é fornecido antes da execução do programa da seguinte maneira: SPEED 50

EXECUTE ASSEMBLY1 Faz o sistema executar o programa chamado ASSEMBLY1 Outros comandos de modo monitor

STORE Armazenar os programas nos discos

COPY Copiar programas

FLIST Carregar arquivos de discos contidos num disco

RENAME Dar novos nomes a arquivos

DELETE Apagar arquivos

DO (instrução) Faz com que o robô execute uma instrução específica de programação

§ COMANDOS DE MOVIMENTO

MOVE P1 Usado para definir a trajectória do movimento, faz com que o braço do robô se mova num movimento de interpolação de junta até ao ponto P1.

MOVES P1 Faz o movimento ocorrer ao longo de uma trajectória retilínea da posição actual até ao ponto P1.

APPRO e DEPART Comandos de aproximação e afastamento.

APPRO P1, 50

MOVE P1 DEPART 50

O primeiro comando movimenta a ferramenta para a posição e a orientação especificadas por P1 com um deslocamento ao longo do eixo z da ferramenta de uma distância de 50 mm. O comando MOVE movimenta a ferramenta até ao ponto P1. A instrução DEPART movimenta a ferramenta afastando-se de P1 a uma distância de 50 mm ao longo do eixo z da ferramenta.

SPEED Comando para ajustar a velocidade.

DRIVE 4, -62,5, 75 Uma articulação individual pode ser deslocada de uma certa distância usando este comando, que muda o ângulo da articulação 4, movimentando-a de 62,5° no sentido negativo a uma velocidade de 75% da velocidade de modo monitor.

§ CONTROLE DO GRIPPER

OPEN Abrir o gripper. Este comando é executado durante o movimento seguinte do robô.

CLOSE Fechar o gripper. Este comando é executado durante o movimento seguinte do robô.

OPENI Abrir o gripper. Este comando é executado imediatamente, em vez de ser executado durante o movimento seguinte.

CLOSEI Fechar o gripper. Este comando é executado imediatamente, em vez de ser executado durante o movimento seguinte.

OPEN 75 M CLOSEI 50

O primeiro comando faz abrir o gripper até 75 mm durante o movimento seguinte do robô. O segundo comando faz fechar o gripper imediatamente para 50 mm.

GRASP Permite verificar se o gripper fechou conforme esperado. Este comando fornece um método conveniente de pegar um objecto e testar para assegurar se o contacto foi feito.

Page 29: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 29

conveniente de pegar um objecto e testar para assegurar se o contacto foi feito.

GRASP 12,7, 120 Este commando faz com que o gripper se feche imediatamente e verifica se a abertura final é inferior ao valor especificado de 12,7 mm. Se for, o programa passará para o comando 120 no programa.

MOVET P1, 75 Faz um movimento de interpolação de junta desde a posição anterior até ao ponto P1, durante este movimento a abertura da “mão” é alterada para 75 mm.

MOVEST P1,75 Comando com as mesmas características do anterior, mas este faz um movimento rectilíneo.

§ CONTROLE DE CONFIGURAÇÃO

RIGHTY ou LEFTY Proporcionam uma mudança na configuração do robô de braço articulado, de modo que as primeiras três juntas (rotação da base, do ombro e do cotovelo) se assemelhem com o braço humano direito e esquerdo, respectivamente.

ABOVE ou BELOW Solicitam uma mudança na configuração do robô, de modo que o cotovelo do robô seja apontado para cima ou para baixo, respectivamente.

FLIP ou N0FLIP Proporcionam uma mudança no campo de operação de junta 5 (num robô de 6 juntas) par ângulos positivos ou negativos, respectivamente.

§ CONTROLE DE INTERTRAVAMENTO

RESET Desliga todos os sinais externos de saída.

SIGNAL É usado para ligar e desligar sinais externos. Números positivos de sinal ligam os sinais correspondentes, e números negativos de sinal desligam.

SIGNAL –1, 4 Desliga o sinal de saída 1 e liga o sinal de saída 4.

WAIT É usado para controlar a execução do programa com base nos sinais de entrada.

WAIT SIG(1001, -1003) Pára a execução do programa até que o sinal externo (de entrada) 1001 esteja ligado e o sinal de entrada 1003 esteja desligado.

REACT VAR1, SUBR2 Monitorização contínua do sinal binário externo identificado como variável VAR1 e procura por uma transição de sinal do seu estado actual para o estado alternativo.

§ CONTROLE DO PROGRAMA

A linguagem VAL II contém um determinado número de sequências de instruções que podem

ser utilizadas para organizar logicamente secções de programas do utilizador e para controlar a ordem

em que elas são executadas. Estes comandos de controle do programa incluem:

IF... THEN... ELSE... END O formato desta sequência é convencional, excepto que a palavra chave END é usada para significar o fim da sequência de comandos.

WHILE... DO... END O formato desta sequência é convencional, excepto que a palavra chave END é usada para indicar o fim da sequência de comandos.

DO... UNTIL Este comando opera na sequência inversa em relação ao comando WHILE... DO, já que a condição lógica é testada depois que os comandos ou grupos de comandos são executados.

CASE... OF... VALUE... END Esta sequência proporciona um meio de executar um grupo de instruções entre qualquer número de grupos.

Page 30: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 30

Anexo 2

Page 31: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 31

LINGUAGEM RAIL

A linguagem RAIL é uma linguagem de programação desenvolvida pela Automatix para o seu

sistema de CAM (Computer Aided Manufacturing).

§ DESCRIÇÃO GERAL

Pode ser utilizada para controlar sistemas de fabrico tendo comandos específicos para

controlar um equipamento de solda, além disso possui comandos para controlar o robô numa linha de

montagem e permitir a sua ligação a periféricos, tais como alimentadores de peças, sensores,

conveyors e equipamentos de manuseamento de materiais.

Além disso, integra ainda comandos para interface com um sistema de visão que se destina a

verificar a qualidade ou identificar determinado componente da linha de fabrico.

§ CARACTERÍSTICAS

As principais características da linguagem RAIL são:

- comandos para movimentar o robô, incluindo aproximação ou afastamento de posições;

- comandos de solda do robô e meios para ajustar os parâmetros de solda, como a voltagem e

a taxa de avanço do arame de solda;

- um método simples de acesso aos input e output que estejam ligados a equipamentos;

- comandos para carregar programas a partir do sistema de arquivo, exibir variáveis ou

programas do utilizador, editar e/ou armazenar programas;

- nomes de variáveis com comprimento até 20 caracteres;

- estruturas de controlo semelhantes às disponíveis no Pascal, tais como, IF...THEN...ELSE,

WHILE...DO, WAIT, etc;

- expressões aritméticas, comparativas e lógicas;

- uma biblioteca de funções incorporada no sistema, que contém as principais funções

matemáticas (seno, coseno, raiz quadrada, ...).

Page 32: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 32

§ POSIÇÕES

Esta linguagem possui três tipos de dados para posições do robô: pontos, trajectória e sistema

de coordenadas de referencia.

Pontos

Um ponto indica-nos a posição e a orientação do gripper relativamente a um sistema de

coordenadas de referência, normalmente localizado na base do robô. Exemplo:

P1=(300,0, 200,0, 100,0, 50,0, 25,0, 35,0)

Os três primeiros valores são dimensões lineares expressas em milímetros ou polegadas,

indicando as coordenadas x, y, z do orgão terminal (gripper) no espaço. Os três últimos valores são os

angulos de orientação em graus relativamente ao sistema de referencia espacial.

Trajectórias

A trajectória é uma série de pontos ligados entre si. Quando o robô é comandado para se

movimentar ao longo de uma trajectória, ele movimenta-se suavemente através de cada ponto na

trajectória, sem parar ou diminuir a marcha em qualquer dos pontos intermédios. Uma trajectória é

especificada indicando os pontos que a definem, como no seguinte comando PATH:

SEAM1 = PATH (P1, P2, P3, P4)

Sistemas de coordenadas de referência

Um sistema de coordenadas de referência é definido no sistema RAIL, definindo a origem, um

ponto ao longo do eixo x e um ponto situado no plano xy.

§ COMANDOS DO MOVIMENTO DO ROBÔ

O comando básico é o MOVE. O comando RAIL suporta 3 tipos de movimentos do robô:

rectilíneo, assíncrono e circular.

Page 33: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 33

Movimento Linear

O movimento rectilíneo da ponta da ferramenta é realizado por maio de interpolação linear.

Este movimento é a condição de default no sistema RAIL, se o utilizador não definir um dos outros

tipos de movimentos, o robô irá movimentar-se linearmente.

MOVE P1 Comando para um movimento rectilíneo.

Movimento Assíncrono

O movimento assíncrono é um movimento de interpolação de junta do braço do robô. O braço

é movimentado de ponto a ponto usando o menor movimento possível para cada articulação e de

modo coordenado, de forma que todas as juntas começam o movimento ao mesmo tempo.

Este movimento tem a vantagem de permitir a execução mais rápida de um movimento.

MOVE SLEW P1 Comando para um movimento assíncrono definido usando o comando SLEW.

Movimento Circular

Esta especificação de movimento faz com que o braço do robô se movimente de tal forma que

a ponta da ferramenta se desloque ao longo de um arco circular formado pelos pontos indicados no

caminho.

CIRCLE Comando que é usado para especificar uma interpolação circular num comando de movimento. Por exemplo: MOVE CIRCLE PATH (P1, P2, P3, P4).

Aproximação e Afastamento

APPROACH 50 FROM P1

M DEPART 50

O primeiro comando faz com que a ferramenta se movimente até uma posição 50 mm a partir do ponto P1 ao longo do eixo z da ferramenta. O segundo comando faz com que a ferramenta se afaste 50 mm do ponto.

Rotação da ferramenta

ROTATE HAND 180 Comando para girar o actuador de 180° no sentido horário, em volta do eixo de rotação.

Abertura e fecho do gripper

OPEN Comando que controla a abertura do actuador do tipo gripper.

CLOSE Comando que controla o fecho do actuador do tipo gripper

Page 34: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 34

Solda

WELD Comando que permite a realização de uma operação de solda num ponto ao longo de um caminho.

§ COMANDOS LEARN

O conjunto LEARN é utilizado para definir dados de posições com a consola de programação.

O comando pode ser utilizado para programar pontos no espaço ou relativamente a outras posições

predefinidas. Pode também ser usado para ensinar trajectórias e sistemas de coordenadas.

LEARN P1, P2, P3, P4 Neste comando, os quatro pontos são ensinados movimentando o braço para as posições designadas, usando as teclas de movimento da consola de programação e pressionando a tecla de registo para armazenar cada posição de ponto na sequência adequada.

LEARN FRAME Este comando facilita ao utilizador o ensino de 3 posições. Estas posições correspondem à origem do sistema de coordenadas, um ponto ao longo do eixo x e um ponto no plano xy do sistema de coordenadas.

§ SOLDA

A linguagem RAIL proporciona uma variedade de opções para controlar um robô para

operações de solda. Como já foi referido anteriormente o comando básico de solda da linguagem RAIL

é o WELD, para mais facilmente se entender como funciona este comando, apresentamos de seguida

um exemplo:

WELD SEAM1 WITH WELDSCHED[3] Neste comando a trajectória de solda é chamada de SEAM1. A clausula WITH WELDSCHED[3] identifica que os parâmetros de solda a serem usados durante essa trajectória são definidos no programa de solda 3.

§ ENTRADA/SAÍDA

INPUT PORT SWITCH1 7 Este comando define uma variável chamada SWITCH1 para ser uma informação de entrada para a unidade controladora através da porta de entrada número 7.

OUTPUT PORT MOTOR3 15 Define a variável MOTOR3 como uma saída da unidade controladora através da porta 15. Durante o programa, essa saída pode ser ligada ou desligada por meio dos comandos MOTOR3 = ON e MOTOR3 = OFF.

WAIT UNTIL Este comando é usado para sincronizar a execução de um programa em linguagem RAIL com alguma condição. Quando este comendo é encontrado, a execução do programa é interrompida até que a condição de teste esteja satisfeita.

WAIT 2 SEC

WAIT 2

Este comando é utilizado para retardar a execução do programa para um intervalo especificado de tempo. Este intervalo de tempo é especificado em segundos (SEC) ou em milisegundos (MSEC). Se este intervalo não for especificado as unidades de tempo

Page 35: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 35

WAIT 2000 MSEC serão consideradas como sendo segundos. Logo, cada um dos comandos aqui considerados teriam um retardo de tempo idêntico.

§ ENTRADA/SAÍDA PARA OPERADOR E SISTEMA DE ARQUIVOS

READ Lê os dados numéricos introduzidos pelo operador. Os números devem ser inteiros ou reais.

READS É usado para ler dados introduzidos em forma de cadeia de caracteres (Ex: texto contendo quaisquer caracteres ASCII, caracteres alfabéticos, números, pontuação, etc) pelo operador.

WRITE Este comando é usado para escrever mensagens para o operador no monitor de vídeo

SAVE É usado para guardar o valor corrente das variáveis de RAIL, e/ou as definições escritas pelo utilizador, num arquivo ou numa fita.

SAVE ‘PARTFILE’ PARTCOUNT, GOODPARTS, BADPARTS Este comando proporciona um meio de guardar os valores correntes das variáveis (PARTCOUNT, GOODPARTS, BADPARTS) na lista de variáveis existentes na fita. O nome do arquivo é PARTFILE.

LOAD ‘PARTFILE’ Carrega o arquivo da fita cassete para a memória do computador.

FILER É usado para operações tais como a listagem do conteúdo de uma fita para copiar ou apagar arquivos, e assim por diante.

§ CONTROLE DO PROGRAMA

A linguagem RAIL contém um conjunto de comandos típicos para controle do programa, como

IF... THEN, IF... THEN... ELSE e outros. O comando WHILE... DO permite ao programador continuar a

execução de um determinado comando durante o tempo que uma condição especificada de teste

permanecer verdadeira.

Page 36: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 36

ANEXO 3

Page 37: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 37

LINGUAGEM AML

A linguagem AML é uma linguagem de programação interactiva de alto nível desenvolvida pela

IBM Corporation para ser utilizada no seu robô IBM 7565.

§ DESCRIÇÃO GERAL

Como o nome indica é uma linguagem de manufactura que possui diversos tipos e operadores

de dados, sub-rotinas de sistema, estruturas de controlo da linguagem, estação de exibição de dados e

controlos de input/output de arquivos, edição interactiva e facilidade de eliminação de erros, assim

como identificadores do sistema para ajudar a melhorar a leitura do programa.

É uma linguagem orientada para sub-rotinas, ou seja, os programas são escritos estruturando

a aplicação como um conjunto de chamadas para as sub-rotinas escritas pelo utilizador e também

daquelas que integram o sistema. A utilização destas sub-rotinas, quer sejam implementadas pelo

utilizador quer aquelas que integram o sistema, são feitas da mesma maneira.

§ COMANDOS AML

Existem três tipos de comandos na linguagem AML:

- comando executável;

- comando de declaração de variável;

- comando de declaração de sub-rotinas.

Os comandos em AML são semelhantes a frases em inglês, o seu sentido é captado

interpretando em primeiro lugar as palavras e as expressões nela embutidas. Com excepção de casos

especiais, todos os comandos AML terminam num ponto-e-virgula (;).

Page 38: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 38

Comandos Executáveis

Os comandos executáveis realizam cálculos, comparações e outras funções semelhantes.

Constituem a lógica que o interpretador deve executar e diferem dos outros dois tipos de comandos

porque não preservam armazenamento ou proporcionam nomes para variáveis ou sub-rotinas.

O comando consiste num rótulo opcional e a expressão a ser interpretada. Um ponto-e-virgula

termina o comando. O rótulo é separado da expressão por dois-pontos(:).

rótulo: expressão;

Exemplo:

CALC: 5-1/2*10

Comandos de Declaração de Variável

Os comandos de declaração de variável têm a seguinte forma:

id: NEW expressão;

ou

id: STATIC expressão;

Os componentes do comando de declaração de variável são os seguintes: o nome da variável

(chamado “id” na linguagem AML); o comando que identifica o comando como um comando de

declaração e uma expressão que o interpretador avalia para determinar o tipo de variável e o valor

inicial; um ponto-e-virgula a terminar o comando.

Exemplos:

X1: NEW 12,0;

Neste comando é declarado um valor inicial de 12,0 à variável X1.

X2: NEW (2,5*X1);

Neste comando é declarado a variável X2 através de uma expressão que a avalia em relação

ao produto de 2,5 vezes o valor corrente de X1.

As variáveis NEW são interpretadas sempre que a sub-rotina dentro da qual residem é

chamada. O interpretador analisa a expressão do lado direito da vírgula de cada vez que uma sub-

Page 39: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 39

rotina é chamada, e é reservado espaço para armazenamento da nova variável. Quando a execução

acaba e o controlo é devolvido ao programa principal, o espaço alocado para a variável nova é

libertado.

Declarações de variáveis STATIC só são interpretadas quando as variáveis são declaradas, e

isto ocorre no momento da primeira chamada para a sub-rotina na qual elas residem.

Ao contrário das variáveis NEW, as variáveis STATIC não são libertadas do armazenamento

quanto termina a execução da sub-rotina; elas permanecem armazenadas, assim como os valores

correspondentes, mesmo quando o programa não está a ser executado. Assim, o último valor

conservado para qualquer variável STATIC está disponível para uso futuro no programa principal.

Os comandos NEW e STATIC são usados pelo interpretador para determinar como tratar uma

variável declarada. Para variáveis que ficam de fora da sub-rotina não existe diferença na maneira

como o comando é interpretado. A diferença aplica-se apenas para a utilização numa sub-rotina.

Comando de Declaração de Sub-rotina

Uma sub-rotina consiste numa colecção de comandos AML. Os comandos de declaração

de sub-rotina servem para lhe reservar espaço no armazenamento a atribuir um nome para

referência futura no programa. Os comandos de declaração de sub-rotina têm a seguinte

forma:

id: SUBR(p1, p2, p3...pn);

subrstatement1;

subrstatement2;

...

subrstatementn;

END;

Os componentes da declaração de sub-rotina são os seguintes:

- o "id", ou nome da sub-rotina, que identifica a sub-rotina para referência

subsequente seguida por dois-pontos (:);

- o comando SUBR, que serve para declarar a sub-rotina em AML;

Page 40: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 40

- parâmetros (p1, p2, p3...pn), que são transferidos do programa principal para

use na chamada da sub-rotina. Quando especificados estes devem ser

colocados entre parênteses;

- o corpo da sub-rotina, que consiste em comandos AML, cada um terminando

com um ponto-e-virgula (;):

subrstatement1 ;

subrstatement2;

...

subrstatementn;

Esses comandos têm o mesmo formato a seguem as mesmas regras que outros comandos

AML. O ponto-e-vírgula (;) depois do último comando (subrstatementn) a antes do comando

END é opcional, e o comando END, indica o fim da sub-rotina.

Um ponto-e-vírgula (;) segue o comando END. Regras especiais acerca do sinal (;) aplicam-se

ao comando END para sub-rotinas armazenadas dentro de outras.

§ CONSTANTES E VARIÁVEIS

A linguagem AML usa vários tipos de constantes a de variáveis, que podem ser números

inteiros reais ou cadeias. Constantes e variáveis conjuntas são também possíveis no sistema AML,

incluindo conjuntos que contêm uma combinação de números inteiros, números reais e elementos em

cadeia. Os conjuntos são incluídos entre parênteses angulares < >, e os elementos são separados por

vírgulas.

A linguagem AML permite a definição de conjuntos bidimensionais, além dos conjuntos

convencionais de uma dimensão. Um conjunto bidimensional contém ao mesmo tempo fileiras a

colunas de elementos. Um uso típico de um conjunto bidimensional seria definir um arranjo de

coordenadas no espaço de trabalho de um robô. Um exemplo de comando de declaração de variável é:

R:NEW < <-6,0,-25,0, 3,1>, <-6,0,-2,2, 3,5>,

<1,3, 0,5, 3,2>, <5,2,-25,1, 3,0>,

<8,1,-2,2, 3,3>, <8,4, 15,5, 3,5> >;

Page 41: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 41

Os elementos individuais do conjunto bidimensional estão entre parênteses angulares e

podemos incluir mais de duas dimensões. Nesse exemplo, um conjunto bidimensional é usado para

representar um arranjo tridimensional. O valor de R pode ser representado graficamente para os seis

pontos.

Valores das coordenadas correspondentes R X Y Z 1 -6,0 -25,0 3,1 2 -6,0 -2,2 3,5 3 1,3 0,5 3,2 4 5,2 -25,1 3,0 5 8,1 -2,2 3,3 6 8,4 15,5 3,5

Pode-se ter acesso aos elementos individuais desse conjunto na linguagem AML por meio dos

símbolos R(1), R(2) etc. Por outras palavras, R(4) representa (5,2, 25,1, 3,0). Isto poderia ser útil para

identificar um ponto no espaço para o qual o robô seria dirigido.

§ COMANDOS DO CONTROLO DO PROGRAMA

A linguagem AML tem alguns comandos de controlo do programa para a execução condicional

do programa. Essas expressões condicionais incluem os comandos IF...TI-IEN, IF...THEN...ELSE,

WHILE...DO a REPEAT...UNTIL.

Os comandos IF...THEN a IF...THEN...ELSE têm a interpretação convencional.

O comando WHILE...DO permite ao programador executar repetitivamente uma expressão, até

que uma condição seja satisfeita. A forma do comando é:

WHILE condição DO expressão

O comando REPEAT...UNTIL é semelhante ao comando WHILE...DO, excepto que a ordem de

condição a expressão é invertida. A sua forma genérica é, portanto:

REPEAT expressão UNTIL condição

Page 42: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 42

§ COMANDOS DO MOVIMENTO

A linguagem AML foi projectada para o robô IBM 7565, que tem coordenadas com uma

configuração máxima de seis juntas mais a garra. As juntas 1, 2 e 3 são lineares, enquanto as 4, 5 e 6

são rotacionais. A garra é também considerada linear em termos de abertura entre seus dedos.

Os comandos de movimento para o robô IBM 7565 requerem a especificação da junta e da

distância a ser percorrida. A distância pode ser especificada ou dando um nome às coordenadas no

espaço de trabalho para as quais o robô deve se dirigir ou especificando a distância incremental a ser

percorrida. Os dois comandos associados são MOVE e DMOVE. Por exemplo, o comando

MOVE (<JX,JY>, <8,5, 1,5>);

indica que as duas juntas JX a JY deveriam ser movimentadas para seus valores correspondentes de

coordenadas de 8,5 a 1,5 in (inches), respectivamente.

O comando DMOVE é usado para realizar um movimento relativo à posição corrente. Por

exemplo, o comando

DMOVE(JZ, 3,0);

movimentaria o punho do robô 3 ir para cima numa direcção vertical.

Dois outros comandos de movimento em linguagem AML são AMOVE e GUIDE.

O comando AMOVE proporciona o mesmo movimento básico a especificação da trajectória

que o comando MOVE; a diferença é que este completa o movimento antes de continuar com qualquer

comando subsequente no programa. Com o comando AMOVE, o sistema pode realizar muitas tarefas

enquanto o movimento está sendo concluído, como funções de processamento de dados ou cálculos.

Obviamente, qualquer movimento subsequente deve esperar que o movimento actual esteja completo.

O formato do comando AMOVE é o mesmo que o comando MOVE:

AMOVE (<JX,JY>, <8,5, 1, 5>);

Page 43: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 43

O comando GUIDE permite o use de uma consola de programação para movimentar o

conjunto especificado de juntas sob controle de direccionamento motorizado. O consola de

programação do robô IBM possui teclas de controle que correspondem às juntas e direcções

particulares. Para cada junta existe uma tecla para os sentidos positivo e negativo que pode ser

pressionada para conseguir o movimento desejado da junta. Quanto mais tempo a tecla é pressionada,

mais rapidamente a junta se movimenta. Quando a tecla é libertada, o movimento da junta pára. Uma

vez movimentado o robô para a posição desejada, o movimento da junta pára, a tecla "END" no

consola de programação é pressionada, o conjunto de posições dos eixos é exibido no monitor, e o

controle é devolvido para o interpretador de AML. Por exemplo, vamos considerar o seguinte comando:

GUIDE (<JX,JY,JZ>);

Isto faria os eixos x, y e z movimentarem-se através do consola de programação. O utilizador

poderia então movimentar esses eixos com as teclas do consola de programação. Terminada a

manipulação, o usuário pressiona a tecla "END", e o seguinte tipo de informação é exibido no monitor:

<2,03700, 27,600, 4,00300>

Essa informação poderia então ser usada para definir um comando MOVE, se desejado.

A velocidade de execução de um movimento programado é estabelecida com o comando

SPEED. O comando

SPEED (0,5)

ajusta a velocidade para quaisquer movimentos subsequentes (até que a velocidade seja alterada)

para 0,5 vezes a velocidade plena. Velocidades válidas variam de 0,0 até 1,0 vezes a velocidade

máxima do robô.

Page 44: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 44

§ COMANDOS PARA SENSORES

O robô IBM 7565 proporciona um interface de entrada/saída para sensores para ser ligado com

vários equipamentos dentro da célula de trabalho, tais como sensores, dispositivos, ferramentas,

alimentadores e outros. O sistema tem uma entrada ou saída digital de 1 bit, assim como uma

entrada/saída digital de vários bits (até 16 bits). O sistema IBM 7565 suporta até 64 definições de

entrada/saída lógica. Se o robô for equipado com uma garra com sensores, comandos adicionais são

possíveis para interligação com seus sensores.

Entrada/saída para sensores

Três dos comandos mais importantes para entrada/saída de sensores na linguagem AML são:

DEFIO, SENSIO a MONITOR.

O comando DEFIO é usado para definir um dispositivo lógico de entrada/saída para sensores,

ao qual pode-se ter acesso através dos comandos SENSIO ou MONITOR. A forma do comando DEFIO

é

DEFIO (group,type,format,sbit,length,scale,offset)

Os cinco primeiros parâmetros entre parênteses são obrigatórios, e os dois últimos são

opcionais.

- Group é um número inteiro ou um conjunto que especifica o canal de entrada/saída.

- Type refere-se a um dispositivo de entrada ou de saída (0 para entrada e diferente de

zero para saída).

- Format é um número inteiro ou conjunto que especifica o formato dos dados de

entrada/saída do sensor. Um 1 especifica que um contacto fechado corresponde a -1 e

um contacto aberto corresponde a zero. Um 2 significa que o contacto fechado

corresponde a 1 e o valor do contacto aberto é novamente zero.

- Sbit é um número inteiro ou um conjunto que especifica o número de bit do começo de

campo de entrada/saída. Os números de bits variam de 0 a 15, sendo o bit 0 o mais à

esquerda.

Page 45: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 45

- Length é um número inteiro ou um conjunto que especifica o comprimento do campo

do bit. Os campos de bits variam de 1 a 16 bits.

- Scale é um número real ou conjunto opcional que especifica o factor da escala que

deve ser usado para dimensionar a entrada/saída de modo a tornar seu tamanho

compatível com o sistema. O valor default é 1.

- Offset é um número real ou um conjunto opcional que especifica a constante a ser

usada para afastamento lateral da escala. O valor default é 0.

O comando DEFIO retorna a definição de um bit ou um conjunto vizinho de bits aos quais se

pode ter acesso pelo comando SENSIO. O retorno é chamado de ionum.

O ionum é um número inteiro ou um conjunto que especifica o identificador numérico para cada

entrada/saída definida. O valor deve ser usado em todas as referências para essa entrada/saída lógica

em particular.

O formato do comando SENSIO é:

SENSIO(ionum,padrão)

- ionum é o valor (ou valores) que determina(m) a entrada ou saída que deve ser

realizada. Até dez ionums podem ser especificados num único comando SENSIO,

permitindo a execução de 10 entradas/saídas a partir do mesmo comando;

- padrão é um número inteiro, um número real, um conjunto que especifica o endereço

para operações de entrada ou os dados a serem usados para operações de saída.

Um exemplo do use dos comandos DEFIO a SENSIO seria:

DEFIO (21,0,1,0,1);

1016

SENSIO (1016,INT)

Page 46: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 46

O 21 no comando DEFIO refere-se ao canal 21; o primeiro 0 indica que o tipo é entrada; o

primeiro 1 indica o formato; o segundo 0 indica o primeiro bit do campo, e o segundo 1 indica que o

campo tem um comprimento de 1 bit. O comando DEFIO retorna o ionum a ser fornecido pelo comando

SENSIO (1016). O INT é usado para referenciar os valores sob o controle do programa AML..

O comando MONITOR permite o uso de um ou mais dos canais de entrada/saída para a leitura

dos sensores a intervalos regulares de tempo. Isto pode ser usado para projectar um sistema de

interrupção para monitorização de segurança, por exemplo.

O comando MONITOR difere do comando SENSIO, já que permite uma monitorização quase

que contínua de sinais emitidos por sensores em vez de pontos específicos no programa AML.

Capacidades sensoras da garra

Existe uma garra com capacidades sensoras para o robô IBM 7565. Essas capacidades

incluem avaliação da força com medidores de deformação (strain gauges) e avaliação óptica com um

díodo emissor de luz.

Os sensores podem ser usados com comandos SENSIO a MONITOR. Os monitores de

deformação são usados para detectar forças positivas e negativas em três direcções. Os medidores de

deformação que correspondem às três direcções são:

- Sensores de ponta: Esses sensores indicam se existe uma força que pressiona de

baixo para cima na garra. Isto poderia ocorrer, por exemplo, se a garra fosse

pressionada contra a mesa de trabalho. Teria também um valor se um objecto

estivesse agarrado pela garra com esta orientação vertical, o peso do objecto iria fazer

com que a força fosse registada nestes sensores. Os comandos SET a SRT em

linguagem AML são usados como identificadores lógicos de entrada/saída para os

sensores da direita nos comandos SENSIO a MONITOR.

- Sensores de pressão: Se a garra for fechada sobre um objecto, esses sensores de

pressão indicarão a pressão com valores positivos de medição. Se a garra for

introduzida fechada dentro de um copo e depois for aberta contra os lados do mesmo,

Page 47: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 47

serão indicados valores negativo. Os comandos SLP a SRP, em linguagem AML, são

usados como identificadores de entrada/saída lógica para os comandos SENSOR e

MONITOR.

- Sensores laterais: Se a garra for movimentada contra um obstáculo lateral, esses

sensores irão indicar a presença do obstáculo. Os comandos SLS a SRS, em

linguagem AML, são usados como identificadores de entrada/saída lógica para os

comandos SENSOR e MONITOR.

O comando LED, em linguagem AML, pode ser usado com os comandos SENSIO a MONITOR

para determinar se um objecto está bloqueando o díodo emissor de luz. Por exemplo, o comando

SENSOR(LED,INT)

-1

retorna zero para indicar que nenhum objecto está a bloquear o LED, enquanto um valor de -1

indica que nenhum objecto está a bloquear o caminho da luz. O comando LED identifica o número de

entrada/saída lógica do circuito detector de luz da garra.

§ PROCESSAMENTO DE DADOS

A linguagem AML contém algumas capacidades de processamento de dados para interligação

com periféricos. O robô IBM 7565 inclui os seguintes dispositivos de processamento de dados: teclado

e monitor, impressora (opcional), disco (opcional), disquete, consola de programação (que inclui um

visor de 10 caracteres) e uma linha de comunicações, que permite a comunicação entre sistemas e

estações de trabalho diferentes, incluindo a transferência de arquivos entre sistemas. Existem 14

canais disponíveis para transferir dados entre o sistema e os dispositivos periféricos. Alguns canais são

reservados: o canal 0 é para o terminal de teclado e monitor, o canal 1 é para a impressora,, o canal 2

é para o consola de programação e o canal 3 é o arquivo de mensagens do sistema. Os canais

remanescentes podem ser usados para ter acesso a arquivos armazenados em discos do utilizador.

Vários comandos podem ser usados pelo programador para definir a comunicação do sistema

para os periféricos. Estes incluem os comandos WRITE, PRINT e DISPLAY.

Page 48: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 48

O comando WRITE é usado para escrever um registo lógico dentro do arquivo através de um

canal definido.

WRITE(0, `Good Morning');

O comando escreveria as palavras "Good Morning" no terminal de exibição através do canal 0.

O comprimento máximo do registo que é transmitido depende do canal de saída.

Se um comando WRITE é emitido para o canal 0 (terminal de exibição), o comprimento

máximo é de 79 caracteres. Se um comando WRITE é emitido para o canal 1 (impressora), o

comprimento máximo é de 132 caracteres. Se o comprimento dos dados for maior que o comprimento

máximo de registo, aparecerá uma mensagem de erro.

O comando PRINT escreve os valores de uma lista de expressões num canal de dados

correntemente aberto. PRINT é diferente de WRITE porque os dados na expressão são convertidos em

formato de caracteres antes de ser exibidos e porque mais de um registo pode ser transmitido para o

dispositivo. Com o comando WRITE, apenas um registo está escrito para o dispositivo.

Uma outra diferença entre PRINT a WRITE é que os dados de saída são guardados até um

caractere EOL ou EOP (fim de linha ou de impressão) ser detectado ou a capacidade do buffer ser

excedida. Mais uma vez o número do canal deve ser fornecido como um dos argumentos no comando.

O comando DISPLAY é o mesmo que o comando PRINT dirigido para o canal 0. Não requer

nenhuma identificação do canal. O comando seguinte serve como ilustração:

DISPLAY(`Good Morning', EOL);

O comando READ é usado para receber dados de um dispositivo periférico. Ele lê um registo

lógico do canal especificado. O comando seguinte ilustra o formato do comando READ:

READ(0, DATA1);

(Isto iria ler um arquivo chamado DATA1)

Outros comandos do sistema incluem ERASE (para apagar um arquivo de um disco a libertar o

espaço ocupado por ele, COPYFILE (para copiar um arquivo de um disco para o outro ou para o

mesmo disco.

Page 49: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 49

Índice

1 - Introdução ................................................................................................................................ 1

2 - Tipos de programação de robôs ................................................................................................. 4

3 - Métodos de programação de robôs............................................................................................. 6

3.1 - Métodos de programação on-line......................................................................................... 6

3.1.1 - Programação por amostragem ou programação por ensino............................................. 6

3.1.2 - Programação pela consola........................................................................................... 8

3.2 - Métodos de programação off-line ......................................................................................... 9

4 - Processos de desenvolvimento de um programa de robô........................................................... 12

Passo 1: Analisar e decompor a tarefa numa [...]. ................................................................... 12

Passo 2: Identificar e especificar todas [...]............................................................................. 14

Passo 3: Identificar quaisquer tipos [...].................................................................................. 16

Passo 4: Desenhar e desenvolver o programa completo e toda a sua documentação................ 17

Passo 5: Testar e depurar o programa [...]. ............................................................................ 17

Passo 6: Testar o programa no robô real. .............................................................................. 17

5 - Programando com sensores externos....................................................................................... 19

6 - Linguagens de programação de robôs ..................................................................................... 21

6.1 - Linguagens textuais de programação de robôs ................................................................... 21

6.2 - Gerações de linguagens de programação de robôs............................................................. 22

6.2.1 - Linguagens de primeira geração ................................................................................. 22

6.2.2- Linguagens de segunda geração ................................................................................. 23

6.2.3 - Linguagem de futura geração ..................................................................................... 25

Anexos

Linguagem VAL II .................................................................................................................... 27

§ DESCRIÇÃO GERAL ........................................................................................................ 27

§ COMANDOS MONITOR...................................................................................................... 27

Page 50: Técnicas e Linguagens de Programação de Robôsengricardosilva.awardspace.com/trabalhos/pdf/lingrob.pdf · - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1 Automação

Automação e Robótica I – Técnicas e Linguagens de Programação de Robôs

- 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 50

§ COMANDOS DE MOVIMENTO.............................................................................................. 28

§ CONTROLE DO GRIPPER.................................................................................................. 28

§ CONTROLE DE CONFIGURAÇÃO......................................................................................... 29

§ CONTROLE DE INTERTRAVAMENTO..................................................................................... 29

§ CONTROLE DO PROGRAMA .............................................................................................. 29

Linguagem RAIL...................................................................................................................... 31

§ DESCRIÇÃO GERAL ........................................................................................................ 31

§ CARACTERÍSTICAS ......................................................................................................... 31

§ POSIÇÕES .................................................................................................................... 32

§ COMANDOS DO MOVIMENTO DO ROBÔ ................................................................................ 32

§ COMANDOS LEARN......................................................................................................... 34

§ SOLDA......................................................................................................................... 34

§ ENTRADA/SAÍDA ............................................................................................................ 34

§ ENTRADA/SAÍDA PARA OPERADOR E SISTEMA DE ARQUIVOS.................................................... 35

§ CONTROLE DO PROGRAMA .............................................................................................. 35

Linguagem AML ...................................................................................................................... 37

§ DESCRIÇÃO GERAL ........................................................................................................ 37

§ COMANDOS AML........................................................................................................... 37

§ CONSTANTES E VARIÁVEIS............................................................................................... 40

§ COMANDOS DO CONTROLO DO PROGRAMA.......................................................................... 41

§ COMANDOS DO MOVIMENTO............................................................................................. 42

§ COMANDOS PARA SENSORES............................................................................................ 44

§ PROCESSAMENTO DE DADOS............................................................................................ 47