Técnicas e Linguagens de Programação de Robôs

Documentos relacionados
ROBÓTICA PROGRAMAÇÃO DE ROBÔS

COMPONENTES DE UM SISTEMA ROBÓTICO

Prof. Daniel Hasse. Robótica Industrial

Introdução à Programação. João Manuel R. S. Tavares

ROBÓTICA PLANEJAMENTO DE TRAJETÓRIAS. Prof a. Dra. GIOVANA TRIPOLONI TANGERINO Tecnologia em Automação Industrial

Robótica. Acetatos de Apoio às Aulas. Programação de sistemas robóticos. Paulo Augusto Ferreira de Abreu. Elaborados por: (Professor Auxiliar)

Módulo 3 - Estrutura e configuração de Sistemas Operativos monoposto

Tecnólogo em Análise e Desenvolvimento de Sistemas. Sistemas Operacionais (SOP A2)

1- INTRODUÇÃO AOS ROBÔS INDUSTRIAIS

Robótica. Linguagens de Programação para Robótica (manipuladores)

Introdução à Programação

Organização e Arquitetura de Computadores I

CAPÍTULO Robôs industriais. 2. Classificação dos robôs. industriais. 3. Sensores. 4. Acionamento e controle de robôs

Gerações de Robôs 1ª Geração

ROBÓTICA NOÇÕES DE PROGRAMAÇÃO. Prof a. Dra. GIOVANA TRIPOLONI TANGERINO Tecnologia em Automação Industrial

Estrutura e características gerais dos robôs. - Configuração básica de um robô - Articulações - Movimento e precisão

O Manual do KCM Tablet. Jörg Ehrichs Tradução: José Pires

CONJUNTO DE INSTRUÇÕES

O COMPUTADOR POR DENTRO

ZS Rest. Manual Profissional. BackOffice Mapa de Mesas. v2011

1- INTRODUÇÃO AOS ROBÔS INDUSTRIAIS MODELAGEM GEOMÉTRICA

A robótica abrange tecnologia de mecânica, eletrônica e computação. Alem disso, participam em menor grau teoria de controle, microeletrônica,

Organização e Arquitetura de Computadores I

Sistema automático para impressão de informação em garrafas de gás. Memória Descritiva

Introdução à Programação de Computadores Fabricação Mecânica

Manipulação Robótica. Aula 2

Introdução à Robótica Industrial. Aula 2

COMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES. Adão de Melo Neto

Disciplina: Robótica Aula 02: Conceitos Básicos

Arquitetura de Um Computador

MECATRÔNICA MANIPULADORES ROBÓTICOS

Introdução ao Controlo Numérico Computorizado III Sintaxe de Escrita (G, M, ) João Manuel R. S. Tavares Joaquim Oliveira Fonseca

ROBÓTICA SISTEMAS DE REFERÊNCIA. Prof a. Dra. GIOVANA TRIPOLONI TANGERINO Tecnologia em Automação Industrial

Introdução ao Controlo Numérico Computorizado III Sintaxe de Escrita (G, M, )

Escoamentos Exteriores em torno de Corpos Não-fuselados

Automação Industrial PEA-2211: INTRODUÇÃO À ELETROMECÂNICA E À AUTOMAÇÃO AUTOMAÇÃO: CONTROLADOR LÓGICO PROGRAMÁVEL

ü Na década de 1920 os dispositivos mecânicos foram substituídos pelos relés; ü O uso da lógica de relés dificultava modificações do processo;

PLANIFICAÇÃO INTRODUÇÃO ÀS TECNOLOGIAS DE INFORMAÇÃO BLOCO I

Qualidade. Ana Madureira

Memória. Arquitetura de Von Neumann. Universidade do Vale do Rio dos Sinos Laboratório I Prof.ª Vera Alves 1 CPU. Unidade de controle ULA

Programação Estruturada Aula - Introdução a Linguagem de Programação

7. A linguagem robcomm

Robótica 3. Orientação (ângulos) Yaw (em torno de Z) Pitch (em torno de Y) Roll (em torno de X) EME006 - Automação Industrial Z X PUNHO ROLL PITCH Z X

Linguagens de Programação

Controladores Lógicos Programáveis (CLP) Disciplina: TAIE4

INTRODUÇÃO À ROBÓTICA. Professor HENRIQUE

Ferramentas Web, Web 2.0 e Software Livre em EVT

Windows 95/98/Me/2000

Desenvolvimento de Aplicações Desktop

INTRODUÇÃO A ROBÓTICA. Prof. MSc. Luiz Carlos Branquinho Caixeta Ferreira

2º Laboratório de Sistemas e Sinais (LEIC Alameda 2008/09)

Compiladores. Introdução à Compiladores

Cinemática de Mecanismos

Colisões em Máquinas de Medir 3D

FERRAMENTA DE CONFIGURAÇÃO DE PAINEL SENSÍVEL AO TOQUE MANUAL DE OPERAÇÃO

Desenvolvimento de um Protótipo e de Metodologias de Controlo de uma Cadeira de Rodas Inteligente

Computadores podem ser úteis em problemas que envolvem: Grande número de dados. Grande número de cálculos. Complexidade. Precisão.

CNC Comando Numérico Computadorizado

Capítulo 8. Estruturas de Controle no Nível de Sentença

Arquiteturas RISC e CISC. Adão de Melo Neto

Linguagem C Princípios Básicos (parte 1)

Automação da Produção

Procedimento. Função. Selecção Condicional - a instrução if-then-else. expressão if lógica then instrução else instrução


(72) Inventor(es): (74) Mandatário: (54) Epígrafe: APLICAÇÃO COMPUTORIZADA PARA O CONTROLO DE ROBOTS INDUSTRIAIS

Fundamentos de Programação Introdução

Teste do Programa Writer do OpenOffice

6 Aplicações Detalhes da Implementação

Introdução ao MatLab Gráficos e manipulação de dados

Escola Secundária de Emídio Navarro

ISO/IEC 12207: Manutenção

Automação da Produção

PROGRAMAÇÃO I. Introdução

SMART PANELS MADE EASY

I1, I2 e In são instruções simples ou estruturadas da linguagem Pascal.

1 - Ambiente de desenvolvimento

Problemas para Automação Industrial. Série 4: Modelação usando o diagrama funcional GRAFCET. Programação de autómatos

Computação e Programação

CONTROLADOR do MOTOR de PASSO

SSC510 Arquitetura de Computadores 1ª AULA

ROBOT ROAMER. Manual de utilização. Características do Recurso Educativo:

Robótica. Executores. Prof. Oswaldo Flório Filho Profª. Alice Flora Madeira Ribeiro Flório Prof. Wagner Toscano

Manufatura Assistida por Computador

Índice 85 21/01/ :29:50

Gerência de Dispositivos. Adão de Melo Neto

Explorar Restrições Esboço

TÉCNICO EM MANUTENÇÃO E SUPORTE EM INFORMÁTICA FORMA SUBSEQUENTE. Professora: Isabela C. Damke

Competição.

Gerência de Dispositivos. Adão de Melo Neto

Compilador de LP3 para C3E e P3

w w w. b a l a n c a s m a r q u e s. p t B M G e s t

Aula teórica 7. Preparado por eng.tatiana Kovalenko

Nas rampas pivotantes existe um ponto fixo e a rampa desloca-se em movimento circular em torno desse ponto.

Programação por Objectos Introdução. Introdução 1/18

Modelação, Identificação e Controlo Digital

Arquitetura e Organização de Computadores

USB Tablet. Guia de instalação

1 ESCOLA POLITÉCNICA DA USP Aspectos Gerais Eduardo L. L. Cabral ESCOLA POLITÉCNICA DA USP

Resolução de Problemas com Computador. Resolução de Problemas com Computador. Resolução de Problemas com Computador

13/08/15. Informática Alguns Conceitos. Informática Alguns Conceitos. Definição de Informática. Computadores

Transcrição:

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 - - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 1

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-2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 2

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ô. - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 3

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. - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 4

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. - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 5

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. - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 6

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. - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 7

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. Figura 5 Uma consola 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: - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 8

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 - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 9

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: - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 10

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). - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 11

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: 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. Situação inicial Situação final B A D C D B A C Figura 7 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. - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 12

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. - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 13

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. - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 14

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. - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 15

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; - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 16

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ô. - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 17

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. - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 18

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. - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 19

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. - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 20

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 - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 21

(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 - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 22

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. - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 23

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. - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 24

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. - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 25

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

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 HERE P1 WHERE TEACH TEACH P1 Descrição Define a variável P1 como sendo a posição actual do braço do robô. 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. É usado para registar uma séria de valores de posição sob o comando da tecla de registo na consola. 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. - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 27

Edição e controle do programa EDIT ASSEMBLY1 M E SPEED EXECUTE ASSEMBLY1 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. 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 Faz o sistema executar o programa chamado ASSEMBLY1 Outros comandos de modo monitor STORE COPY FLIST RENAME DELETE DO (instrução) Armazenar os programas nos discos Copiar programas Carregar arquivos de discos contidos num disco Dar novos nomes a arquivos Apagar arquivos Faz com que o robô execute uma instrução específica de programação COMANDOS DE MOVIMENTO MOVE P1 MOVES P1 APPRO e DEPART APPRO P1, 50 MOVE P1 DEPART 50 SPEED DRIVE 4, -62,5, 75 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. Faz o movimento ocorrer ao longo de uma trajectória retilínea da posição actual até ao ponto P1. Comandos de aproximação e afastamento. 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. Comando para ajustar a velocidade. 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 CLOSE OPENI CLOSEI OPEN 75 M CLOSEI 50 GRASP Abrir o gripper. Este comando é executado durante o movimento seguinte do robô. Fechar o gripper. Este comando é executado durante o movimento seguinte do robô. Abrir o gripper. Este comando é executado imediatamente, em vez de ser executado durante o movimento seguinte. Fechar o gripper. Este comando é executado imediatamente, em vez de ser executado durante o movimento seguinte. 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. 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. - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 28

GRASP 12,7, 120 conveniente de pegar um objecto e testar para assegurar se o contacto foi feito. 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 ABOVE ou BELOW FLIP ou N0FLIP 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. Solicitam uma mudança na configuração do robô, de modo que o cotovelo do robô seja apontado para cima ou para baixo, respectivamente. 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 SIGNAL Desliga todos os sinais externos de saída. É 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 WAIT SIG(1001, -1003) REACT VAR1, SUBR2 É usado para controlar a execução do programa com base nos sinais de entrada. 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. 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 WHILE... DO... END DO... UNTIL CASE... OF... VALUE... END O formato desta sequência é convencional, excepto que a palavra chave END é usada para significar o fim da sequência de comandos. O formato desta sequência é convencional, excepto que a palavra chave END é usada para indicar o fim da sequência de comandos. 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. Esta sequência proporciona um meio de executar um grupo de instruções entre qualquer número de grupos. - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 29

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

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,...). - 2000/2001 - Ricardo Silva, Rui Cabral, Henrique Carvalho 31