Tutorial RobotStudio PT.pdf

November 30, 2017 | Author: sergiorlimeira | Category: Robot, Technology, Software, Personal Computers, Time
Share Embed Donate


Short Description

Download Tutorial RobotStudio PT.pdf...

Description

INSTITUTO POLITÉCNICO DE LEIRIA ESCOLA SUPERIOR DE TECNOLOGIA E GESTÃO EEC – 3º ano – Robótica e Visão Computacional

TUTORIAL Nº 1 PROGRAMAÇÃO OFFLINE E SIMULAÇÃO COM O ROBOTSTUDIO 6.04

Índice 1

Objetivos .................................................................................................................................. 2

2

Introdução ................................................................................................................................ 2

3

Elementos Base....................................................................................................................... 2 3.1

Versão Utilizada ................................................................................................................................. 3

3.2

Ambiente de Trabalho ........................................................................................................................ 4

3.3

Abrir e Simular um Ambiente de Trabalho Exemplo .......................................................................... 5

3.4

Criar Ambientes de Trabalho ............................................................................................................. 8

3.5

Sistemas de Coordenadas ................................................................................................................ 9

3.6

Espaço de Trabalho e Alcance do Robô ......................................................................................... 10

3.7

Adicionar Ferramentas Existentes .................................................................................................... 11

3.8

Adicionar Objetos Existentes ........................................................................................................... 12

3.9

Criar e Importar Novos Objetos ....................................................................................................... 14

3.10

Modos de Visualização .................................................................................................................... 16

3.11

Movimentar o Robô e Criar Caminhos ............................................................................................ 17

4

Criar um Workobject .............................................................................................................. 20

5

Criar um Caminho com Base nos Vértices de um Objeto....................................................... 22

6

Criar Caminhos ao Longo das Arestas de um Objeto............................................................. 26

7 Alteração da Localização do Espaço de Trabalho Após a Criação das Posturas e/ou do Caminho ....................................................................................................................................... 29 8

Adicionar Sinais ao Robô ....................................................................................................... 30

9

Programação Gráfica do Robô e Simulação .......................................................................... 32

10

Utilização Direta de Código RAPID .................................................................................... 37

11

Principais Instruções RAPID .............................................................................................. 40

11.1

Variáveis e Constantes .................................................................................................................... 41

11.2

Controlo de Fluxo ............................................................................................................................ 42

11.3

Instruções de Movimento ................................................................................................................. 42

11.4

Entradas/Saídas (sinais) .................................................................................................................. 44

11.5

Procedimentos (Funções) com Argumentos ................................................................................... 44

11.6

Algumas Notas Finais ...................................................................................................................... 45

12

Gravação da Simulação em Vídeo ..................................................................................... 45

2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

1/45

1

Objetivos

Pretende-se com este tutorial guiar o estudante na aprendizagem e aplicação de conceitos fundamentais na utilização de manipuladores industriais, através da utilização do software RobotStudio da ABB, nomeadamente: • Princípios básicos (sistemas de coordenadas, espaço de trabalho, alcançabilidade, etc.); • Carregar e movimentar um manipulador; • Carregar e movimentar ferramentas; • Carregar objetos existentes; • Criar e importar novos objetos; • Criar e utilizar Workobjects; • Gerar caminhos com base na geometria de objetos; • Criar e utilizar sinais para coordenar tarefas robóticas; • Utilização de código RAPID; • Gravar um vídeo da simulação. NOTA: É importante que guarde o seu trabalho no final de cada secção, pois o mesmo poderá ser necessário na secção seguinte, razão pela qual não deverá fazer nenhuma secção sem ter concluído todas as anteriores. No final deverá guardar o trabalho desenvolvido, pois este, ou parte deste, poderá ser utilizado nos tutoriais seguintes.

2

Introdução

Dada a complexidade no desenvolvimento de uma tarefa automatizada com recurso a robôs, é imprescindível a utilização de software de simulação para uma maior produtividade. Além de reduzir o tempo de desenvolvimento e possíveis erros de conceção, permite ainda reduzir o tempo de paragem das linhas de produção durante o processo de desenvolvimento. O RobotStudio é o software de simulação e desenvolvimento produzido e fornecido pela ABB, um dos principais produtores de manipuladores industriais. Neste software é possível encontrar um número elevado de robôs desenvolvidos pela ABB, permitindo a sua utilização imediata em ambiente de simulação. É possível ainda controlar e monitorizar a execução de tarefas por robôs reais, desde que as versões de software e controlador sejam compatíveis. Neste tutorial encontra uma descrição passo a passo dos principais elementos do RobotStudio, bem como exemplos e/ou ligações para exemplos fornecidos pelos docentes e/ou juntamente com o software. Este tutorial foi desenvolvido de modo a que os estudantes adquiram autonomia na procura de soluções para problemas inesperados que possam surgir. Assim, ao longo deste documento encontrará vários ponteiros para secções de ajuda do próprio RobotStudio. Todos os elementos que não façam parte deste tutorial, ou não sejam fornecidos juntamente com o RobotStudio, são disponibilizados no Moodle ou num sítio Web relacionado com o fabricante com a respetiva ligação explicitamente indicada na respetiva secção deste tutorial.

3

Elementos Base

Tal como indicado nas aulas teóricas, a cada manipulador robótico está associado um controlador e uma consola, tal mostra a Figura 1. No caso da ABB são utilizadas as seguintes terminologias (robôs de outras marcas usam terminologias semelhantes): • RAPID – linguagem de programação utilizada para controlar os robôs da ABB; 2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

2/45

• •







• • •

Robot manipulator – corresponde ao manipulador robótico em si; Control module – corresponde ao módulo responsável pelo controlo dos movimentos do robô, normalmente constituído por um computador capaz de interpretar linguagem RAPID e comunicar com os módulos de acionamento; Drive module – módulo que contém a eletrónica de potência, capaz de receber as indicações do módulo de controlo e acionar os motores das juntas do manipulador. Tipicamente um módulo de acionamento da ABB suporta até 9 juntas, pelo que é necessário um módulo por robô (o qual tem tipicamente 6 juntas); FlexController – Corresponde à unidade denominada como “Controlador” na Figura 1, a qual contém o módulo de controlo, o módulo de acionamento, e outros módulos necessários ao funcionamento do ABB (por exemplo, de comunicação); FlexPendant – Consola de comando ligado ao controlador. Com um ecrã, que poderá ser tátil, e teclas, esta permite de uma forma fácil a programação e controlo do manipulador online; Tool – Ferramenta utilizada no elemento terminal do robô. A título de exemplo, e tal como poderá confirmar na Figura 1, poderá ser utilizada uma garra; RobotWare – designação utilizada pela ABB para se referir ao software utilizado para controlar o robô, i.e., corresponde ao sistema instalado no controlador; Station – ambiente de trabalho, constituído por um ou mais manipuladores robóticos e demais objetos e mecanismos. Consola

Manipulador

Controlador

Figura 1 – Manipulador robótico ABB IRB2400 existente no Laboratório de Robótica.

É ainda importante definir alguns conceitos base relacionados com a programação de robôs, quer em ambientes reais, quer em ambientes simulados: • Programação online – consiste em programar um robô através do módulo real do mesmo; • Programação offline – consiste em programar um robô virtual através de um editor de texto ou num programa de simulação; • Controlador virtual – software que simula o controlador real, permitindo interagir e programar um robô virtual como se fosse um robô real; • Sistema de coordenadas (ou frame) – quer no ambiente real, quer no ambiente simulado, torna-se bastante útil a utilização de diferentes sistemas de coordenadas para diferentes operações, objetos ou áreas de trabalhos;

3.1

Versão Utilizada

No Laboratório de Simulação de Sistemas (DS0.10) encontra-se instalada a versão 6.04.01 do RobotStudio. Aconselha-se a utilização da versão 64-bit para um melhor desempenho, caso tenha um PC 64-bit. 2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

3/45

A versão do RobotStudio utilizada na UC de Robótica está disponível para descarregar gratuitamente no sítio Web do fabricante, no entanto essa versão apenas disponibiliza todas as funcionalidades durante 30 dias. No Moodle, Secção “FAQ – RobotStudio” da página da UC de Robótica, encontra as instruções necessárias para descarregar e instalar o RobotStudio. A ESTG possui uma licença de campus que permite a utilização do RobotStudio sem restrições de tempo para trabalhos académicos, desde que utilizada dentro do campus. Consulte a FAQ no Moodle para mais informações relativamente à instalação e configuração do RobotStudio no seu PC.

3.2

Ambiente de Trabalho

Abra o RobotStudio, surgindo o ambiente de trabalho inicial ilustrado na Figura 2. De salientar o ícone no topo, à direita, com o ponto de interrogação (também acessível através do menu FileHelp), o qual permite aceder ao menu de ajuda do RobotStudio. Esse menu contém vários itens, sendo os mais relevantes os seguintes: • RobotStudio Help – acesso a um sistema de ajuda bastante completo sobre a utilização do RobotStudio; •

RAPID Instructions, Functions and Data Types – acesso à descrição da linguagem de programação, em particular das várias funções disponíveis.

Figura 2 – Ambiente inicial de trabalho do RobotStudio.

Se após a conclusão do(s) tutorial(ais) tiver dúvidas sobre alguma funcionalidade ou função, este é um dos repositórios onde encontrará a informação necessária. Nesta altura deverá abrir a secção RobotStudio Help e, no separador Contents, abrir o item Introduction to RobotStudio  User Interface  Ribbon, tabs and groups. Neste item verá uma descrição resumida dos vários blocos disponíveis no ambiente de trabalho do RobotStudio, tal como mostra a Figura 3.

Figura 3 – Blocos disponíveis no ambiente de trabalho do RobotStudio (retirado de RobotStudio Help).

Como pode confirmar pela ajuda fornecida pelo programa, tem-se: File – acesso às funcionalidades de sistema do RobotStudio, como criar um documento novo, gravar, opções da aplicação, etc.; 2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

4/45

Home – acesso as funcionalidades base do RobotStudio, nomeadamente importar sistemas, robôs, criar caminhos, etc.; Modeling – acesso à criação de objetos, medidas, operações CAD, etc.; Simulation – acesso aos comandos e controlo de simulação; Controller – acesso aos comandos de sincronização e controlo dos controladores, sejam estes virtuais ou reais; RAPID – acesso ao editor e depurador de código RAPID; Add-ins – acesso a opções adicionais instaladas, nomeadamente controlo de soldadura, etc.. Feche a janela de ajuda do RobotStudio.

3.3

Abrir e Simular um Ambiente de Trabalho Exemplo

Além de incluir inúmeros robôs e um conjunto de ferramentas, o RobotStudio inclui ainda um conjunto de exemplos completos de ambientes de trabalhos prontos a simular. Estes exemplos estão armazenados num ficheiro comprimido específico do RobotStudio, o qual permite facilmente transferir o ambiente de trabalho entre diferentes computadores/utilizadores. O RobotStudio disponibiliza três funcionalidades para este fim, acessíveis através do menu File  Share (ver Figura 4): •

Pack and Go – permite exportar todo um ambiente de trabalho num único ficheiro comprimido. Esse ficheiro poderá depois ser utilizado noutro computador, ou por outro utilizador para abrir e/ou editar esse mesmo ambiente de trabalho1;



Unpack and Work – permite abrir e trabalhar num ambiente de trabalho armazenado através da opção Pack and Go;



Save Station as Viewer – permite guardar a estação com simulações que tenham sido efetuadas, permitindo visualizar as mesmas em PCs que não tenham o RobotStudio instalado. Note que não é possível editar esse ambiente de trabalho.

NOTA: Todos os trabalhos devem ser entregues para avaliação utilizando o ficheiro obtido através da opção Pack and Go. Aconselha-se ainda que os estudantes façam frequentemente cópias de segurança do ambiente de trabalho desenvolvido usando essa opção. Sempre que mudarem de computador devem também usar esta opção para copiar a estação de trabalho entre PCs.

Figura 4 – Ficheiros Pack & Go.

Note-se que um ambiente de trabalho no RobotStudio é composto por múltiplos ficheiros. A opção Pack & Go permite criar um único ficheiro comprimido que inclui todos esses ficheiros. 1

2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

5/45

O RobotStudio inclui alguns exemplos completos que pode experimentar, dois dos quais se descrevem de seguida.

3.3.1 Exemplo de soldadura 1. Escolha a opção Unpack and Work clicando no menu File  Share  Unpack and Work e clique em Next. De seguida navegue até ao ficheiro com o ambiente de trabalho pretendido, neste caso disponibilizado na pasta “C:\Program Files (x86)\ABB Industrial IT\Robotics IT\RobotStudio 6.04\Samples\Stations” com o nome “Demo AW Station.rspag”. 2. Escolha uma pasta para onde descompactar o sistema a trabalhar, por exemplo, uma pasta em “Os meus documentos” (pode ser a pasta sugerida por omissão). A opção “Unpack to Solution” serve para indicar ao RobotStudio que deve ser criada uma pasta específica para o ambiente em questão. Caso não ative esta opção, a pasta será partilhada por outros ambientes, tipicamente na pasta padrão do RobotStudio. Embora ocupe mais espaço, aconselha-se a ativar esta opção para manter todos os ficheiros necessários numa mesma estrutura dentro duma pasta específica do ambiente a trabalhar.

Figura 5 – Exemplo de soldadura.

3. Proceda com as opções indicadas por omissão, exceto relativamente à opção Library Handling, onde deverá escolher a opção Load files from Pack & Go. Quando clicar em Finish ambiente de trabalho será carregado (note que o carregamento do ambiente de trabalho usando a opção Unpack and Work pode demorar algum tempo, podendo surgir alguns avisos, os quais podem ser ignorados). No final deverá surgir um ambiente semelhante ao da Figura 5. No canto inferior direito pode visualizar “Controller status: 1/1”, sendo o dígito da esquerda o número de controladores utilizados, e o dígito da direita o número de controladores ativos. NOTA: Procure utilizar e desenvolver um dado ambiente de trabalho sempre na mesma pasta, no mesmo PC, para assim evitar gastar tempo com a operação Unpack and Work. Neste ambiente encontra um manipulador robótico e um posicionador, estando o manipulador equipado com uma ferramenta de soldadura ABICOR Binzel. Para iniciar a simulação do sistema, escolha o menu Simulation e pressione a opção Play. Em qualquer altura poderá utilizar o botão esquerdo do rato para selecionar objetos do ambiente de trabalho e o botão direito para aceder a opções desses mesmos objetos. A roda do rato permite aproximar e afastar, Ctrl + botão esquerdo do rato permite arrastar o ambiente e, finalmente, Ctrl + Shift + botão esquerdo do rato permite rodar o ambiente. Feche o ambiente clicando no menu File seguido da opção Close. Note que sempre que executa uma simulação ocorrem alterações no ambiente, incluindo configuração dos robôs, posição dos 2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

6/45

objetos, etc.. Ao selecionar a opção de guardar as alterações efetuadas, está na verdade a alterar o ambiente face ao seu formato original, mesmo que apenas tenha corrido a simulação. Assim, deverá sempre gravar o ambiente antes de efetuar uma simulação, ou selecionar a opção Reset (menu Simulation) após a simulação e antes de gravar o ambiente, repondo este no estado em que estava antes da simulação.

3.3.2 Exemplo de uma Linha de Produção Abra e simule um outro exemplo fornecido, nomeadamente o exemplo “Demo Solar Simulation.rspag”. Neste exemplo, ilustrado na Figura 6, pode ver a simulação de parte de uma linha de produção de pequenos painéis solares. Este exemplo introduz componentes avançados de simulação, os quais permitem que o primeiro robô consiga corrigir a posição de cada uma das células ao colocar as mesmas na mesa rotativa. Este exemplo inclui ainda a simulação de tapetes (conveyors em inglês). De salientar que são utilizados dois controladores, um por robô, tal como poderá confirmar pela informação “Controller Status 2/2” no canto inferior direito.

Figura 6 – Exemplo de uma linha de produção de painéis solares.

Simule este exemplo e veja o mesmo a correr.

3.3.3 Outros exemplos Na pasta Samples\Stations (onde encontra os exemplos anteriores) encontra ainda os exemplos “Demo FlexLoader.rspag” (Figura 7) e “Demo Exhaust Pipe.rspag” (Figura 8).

Figura 7 – FlexLoader.

Figura 8 – Exhaust Pipe.

No exemplo da Figura 7 encontra uma simulação com múltiplos robôs a trabalhar coordenadamente em soldadura, utilizando um único controlador, enquanto no exemplo da Figura 8 encontra dois manipuladores novamente a realizar uma operação de soldadura, mas neste caso coordenada com um posicionador, também neste caso com um único controlador. 2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

7/45

3.4

Criar Ambientes de Trabalho

Na secção anterior teve a oportunidade de simular ambientes complexos com múltiplos robôs, já fornecidos com o RobotStudio. O primeiro passo para simular um sistema automatizado consiste na criação do mesmo no ambiente de simulação, neste caso o RobotStudio. Note que é possível criar todo o ambiente de trabalho, incluindo objetos, no RobotStudio. No entanto a alteração de objetos criados dentro do RobotStudio é muito limitada, sendo apenas possível apagando os existentes e criando novos, ou através de funções de corte, união, etc. Não é possível, por exemplo, modificar as dimensões de um cubo criado previamente, alterando apenas as propriedades deste. Como tal poderá optar por criar o ambiente e/ou objetos deste num sistema de modelação 3D (ex. Autocad, Inventor, SolidWorks, Google ShetchUp, etc.) para importar no RobotStudio2. NOTA: De modo a acelerar o processo de desenvolvimento deverá sempre projetar previamente (por exemplo, em papel), o ambiente de trabalho a simular com todas as dimensões incluídas. Tal como indicado na ajuda do RobotStudio (ver RobotStudio Help  Building stations  Workflow for building a station), existem três formas de criar um novo ambiente de trabalho (menu File  New): •

Solution with Empty Station – cria um novo ambiente de trabalho completamente vazio numa pasta isolada;



Solution with Station and Robot Controller – cria um novo ambiente de trabalho apenas com um robô e um controlador, de acordo com o modelo escolhido, numa pasta isolada;



Empty Station – cria um novo ambiente de trabalho completamente vazio.

A forma típica para criar o ambiente é utilizar a opção Solution with Station and Robot Controller, selecionando o manipulador que se pretende (veremos outras opções posteriormente). Existe um canal no YouTube criado pela ABB, o qual contém um conjunto de tutoriais e guias para iniciar a utilização do RobotStudio, os quais complementam a documentação fornecida pelos docentes e pela ajuda do RobotStudio. Poderá aceder a esse canal em3: http://www.youtube.com/user/RobotStudio Note no entanto que uma boa parte dos tutoriais disponibilizados naquele canal estão desatualizados e não são aplicados diretamente na versão utilizadas nas aulas. De salientar ainda que, para a realização dos trabalhos e conclusão da UC não é necessário consultar esses vídeos, embora o possa fazer.

3.4.1 Criar um ambiente de trabalho com um robô e um controlador Esta secção demonstra como criar um novo ambiente de trabalho com um único robô e um controlador: 1. Clique File  New  Solution with Station and Robot Controller (pode demorar na 1ª vez

Para verificar quais os tipos de ficheiros suportados para importar objetos 3D para o RobotStudio, clique em Home  Import Geometry  Browse for Geometry e confirme na nova janela as extensões suportadas. Note que algumas geometrias não permitem operações de snap, como é o caso das criadas no Google SketchUp. 3 Poderá visualizar algumas reportagens sobre casos reais na utilização de manipuladores robóticos, em particular do ambiente de simulação RobotStudio. 2

2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

8/45

que corre); 2. Selecione um robô em Robot model, por exemplo o IRB1600_6kg_1.2m4, o nome a atribuir ao ambiente de trabalho (Solution Name), o nome a atribuir ao controlador (Controller Name), a pasta onde quer gravar e clique em Create; 3. Durante o arranque pode confirmar a inicialização do controlador, através da passagem a verde do estado do controlador (canto inferior direito da janela principal); 4. Pode fazer zoom, pan e rodar o ambiente seguindo as indicações fornecidas na Secção 3.3.1 ; 5. Para voltar a visualizar toda o ambiente de trabalho, clique na opção View All, disponível clicando com o botão direito do rato no ambiente (ver Figura 9);

Figura 9 – Visualizar todo o ambiente de trabalho.

6. Para gravar o ambiente de trabalho criado, clique em File  Save Station ou Save Station As, caso pretenda alterar o nome e/ou a localização do mesmo e atribua um nome ao ambiente; 7. Pode confirmar que o ambiente foi gravado com sucesso verificando a mensagem que aparece no separador Output (na parte inferior da janela do RobotStudio); Caso queira exportar o ambiente de trabalho desenvolvido, quer para o abrir noutro PC, quer para ficar com uma cópia de segurança, deverá utilizar a opção Pack & Go, seguindo os seguintes passos: 1. File  Share  Pack and Go; 2. Escolha um nome e local para o ficheiro a armazenar e clique em OK. Nesta altura poderá confirmar através do explorador do Windows que o ficheiro em causa foi criado.

3.5

Sistemas de Coordenadas

Na base de qualquer sistema que implique movimento estão os sistemas de coordenadas, também denominados de referenciais. Em manipulação robótica é usual utilizar-se múltiplos sistemas de coordenadas, relacionados entre si de forma hierárquica, tal como abordado na aula teórica. Como detalha a ajuda do RobotStudio (RobotStudio Help  Introduction to RobotStudio  Terms and Concepts  Coordinate Systems), definem-se os seguintes sistemas de coordenadas (ver exemplo típico na Figura 10):

O nome do robô indica que este é um modelo com 6 kg de carga máxima suportada e 1.2 m de alcance máximo. 4

2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

9/45

World Coordinate System – Este é o referencial do mundo, que serve de base a todo o ambiente de trabalho. Sempre que alguma coordenada é especificada em coordenadas do mundo, é a este referencial que se refere; Task Frame Coordinate System – Este referencial, definido relativamente ao referencial anterior, pode ser usado como referencial base de uma dada tarefa. É sobretudo útil se houver múltiplas células de trabalho no mesmo ambiente, com múltiplos robôs ou mecanismos a trabalhar numa mesma célula. Nessa situação poderá haver um mesmo referencial base para os vários robôs ou mecanismos5; Base Coordinate System – Sistema de coordenadas base associado a cada robô, localizado por omissão no centro da base do mesmo, junto ao plano de apoio da sua base; Tool Center Point Coordinate System (TCP) – Referencial associado à ferramenta. Tipicamente o local onde a ferramenta deverá trabalhar será especificado para que o TCP fique coincidente com essa postura, sendo essa postura a que é armazenada durante a opção Teach Target (a descrever posteriormente). Cada robô tem um referencial por omissão denominado tool0, inicialmente localizado no extremo do punho; Workobject Coordinate System – O Workobject é um referencial auxiliar que pode servir de base a uma qualquer zona de trabalho, facilitando a alteração e especificação de pontos de trabalho com base em objetos existentes. Por omissão todos os robôs possuem inicialmente um Workobject denominado wobj0, o qual é coincidente com o referencial base do robô. A título de exemplo pode observar um conjunto de referenciais na Figura 11 num ambiente semelhante ao que irá criar ao longo deste tutorial. Neste exemplo os referências do mundo, de base do robô, da tarefa, bem como o Workobject por omissão (wobj0) estão coincidentes. O referencial da “ferramenta” por omissão, tool0, encontra-se no extremo do punho. O referencial AW_Gun corresponde ao referencial associado à ferramenta inserida no robô. Neste exemplo foi ainda adicionado um novo Workobject (Workobject_1), associado a um hipotético espaço de trabalho (neste caso a face superior do cubo exibido). Note que as cores dos eixos são sempre as mesmas, isto é, os eixos X são vermelhos, os Y são verdes e os Z são azuis (XYZ ↔ RGB). tool0

World, Base, Task, wobj0

Figura 10 – Relação entre os vários referenciais.

3.6

AW_Gun

WorkObject_1

Figura 11 – Examplo the referenciais utilizados.

Espaço de Trabalho e Alcance do Robô

Para a escolha do robô a utilizar no projeto de um sistema robotizado é essencial determinar o Note que não é obrigatória esta abordagem quando são utilizados múltiplos robôs. A abordagem típica é que cada robô utilize o seu referencial base, sendo assim os movimentos independentes. 5

2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

10/45

espaço de trabalho, operações a efetuar e alcance necessário. Assim, a escolha do robô deverá ser feita apenas depois de responder a estas questões. Em termos de alcançabilidade, isto é, determinação do espaço de trabalho do robô, o RobotStudio possui uma ferramenta útil (note que o alcance do robô, bem como a carga máxima e outros dados fazem parte das especificações tipicamente disponibilizadas pelo fabricante). Tendo por base a estação criada anteriormente (ver Figura 9) clique, no separador Layout, com o botão direito do rato no robô (IRB1600_6_120__02) e selecione a opção Show Work Envelope, resultando no ambiente de trabalho ilustrado na Figura 12. Desta forma fica bem patente quais os pontos que o robô consegue alcançar.

Figura 12 – Espaço de trabalho do manipulador industrial em 2D.

Figura 13 – Espaço de trabalho do manipulador industrial em 3D.

Após selecionada a opção Show Work Envelope, pode selecionar, no separador Work Envelope, entre mostrar o espaço de trabalho em 2D ou 3D, bem como escolher se quer ver o espaço alcançável pelo punho (não tem em conta a última ligação do robô) ou pela ferramenta (caso não tenha nenhuma ferramenta, corresponde ao elemento terminal). Note que esta informação só por si não é suficiente, pois o facto de o robô atingir um dado ponto com uma determinada orientação não significa que o consiga com qualquer outra orientação. Assim, se o robô irá conseguir ou não atingir uma determinada postura (posição mais orientação) irá depender muito da orientação escolhida.

3.7

Adicionar Ferramentas Existentes

Esta secção detalha a adição de ferramentas ao manipulador. A ferramenta é uma parte crucial de um manipulador, sendo a sua escolha dependente da tarefa a executar. As ferramentas podem ser desenvolvidas à parte, no RobotStudio e/ou num programa de CAD (a ver num tutorial futuro), para posteriormente serem importadas e adicionadas a um robô. Execute os seguintes passos: 1. Abra o ambiente de trabalho criado no ponto anterior, caso o tenha fechado; 2. Adicione uma ferramenta através da opção Home  Import Library  Equipment (a primeira vez que acede a este menu pode demorar algum tempo) seguida da escolha da ferramenta MyTool, tal como ilustrado na Figura 14; 3. Por omissão a ferramenta adicionada é colocada na origem do ambiente de trabalho, i.e., na posição (X,Y,Z) = (0,0,0) com orientação (RX,RY,RZ)=(0,0,0), sendo necessário adicionala ao robô. Para tal, no separador Layout selecione a ferramenta adicionada, MyTool, e arraste-a para o robô (no mesmo separador), tal como ilustrado na Figura 15. À questão “Do you want to update the position of ‘MyTool’?” responda “Yes”, de forma a garantir que a 2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

11/45

ferramenta será colocada no punho do robô na postura certa.

Figura 14 – Escolha de uma ferramenta.

Figura 15 – Atribuição de uma ferramenta ao robô.

NOTA: Quando adiciona um manipulador ao ambiente de trabalho, o sistema de coordenadas que é considerado nos movimentos deste é o do elemento terminal, visível na ponta do manipulador. Quando se adiciona uma ferramenta, o referencial utilizado passa a ser o da ferramenta. De facto poderá constatar que o espaço de trabalho do robô (Work Envelop) aumentou com a adição da ferramenta. Na prática o que acontece é que o referencial base da ferramenta é feito coincidir com o referencial do elemento terminal do robô, passando o sistema de coordenadas utilizado nos movimentos do robô a ser o da (ponta da) ferramenta. Assim, quando criar posturas e caminhos, tal deve ser efetuado considerando sempre a ferramenta, isto é, no desenvolvimento de um ambiente de trabalho, não deve criar posturas ou caminhos sem ter primeiro adicionado a ferramenta que pretende ao robô.

3.8

Adicionar Objetos Existentes

Esta secção descreve como adicionar objetos previamente criados ao ambiente de trabalho. Execute os seguintes passos: 1. Selecione a opção Home  Import Geometry  Browse for Geometry e escolha o objeto “Table_small.sat” disponível na pasta “C:\Program Files (x86)\ABB Industrial IT\Robotics IT\RobotStudio 6.04\ABB Library\Training Objects”, resultando no ambiente ilustrado na Figura 16;

Figura 16 – Adição de um objeto ao ambiente.

Figura 17 – Movimento livre.

Figura 18 – Mesa centrada.

2. Selecione o objeto adicionado, i.e., a mesa, e ative a opção de movimento manual clicando em Home  Move, tal como ilustra a Figura 17. Movimente a mesa para que esta fique em frente ao robô, sensivelmente ao centro deste e dentro do espaço de trabalho, tal como 2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

12/45

ilustra a Figura 18); NOTA: Preferencialmente deverá utilizar um movimento específico e não um movimento manual. Para tal, clique na mesa com o botão direito do rato (no ambiente de trabalho ou no separador Layout), e escolha a opção Position  Set Position. Em coordenadas do mundo (World) introduza as coordenadas (X,Y,Z) = (700, -375, 0) [mm]. Clique em Apply6 e confirme que a mesa fica dentro do espaço de trabalho do robô (Work Envelop); 3. Adicione um novo objeto através de Home  Import Geometry  Browse for Geometry e da escolha do ficheiro “C:\Program Files (x86)\ABB Industrial IT\Robotics IT\RobotStudio 6.04\ABB Library\Training Objects\Curve_thing.sat”; 4. Altere o aspeto do objeto através dos seguintes passos: a. Clique no objeto com o botão direito do rato; b. Escolha a opção Modify  Graphic Appearance…;

Figura 19 – Alteração do aspeto gráfico do objeto.

Figura 20 – Aspeto gráfico final do objeto.

c. Em Selection escolha a opção Body (ver Figura 19) e altera na opção Simple Color para laranja; d. Repita a operação para a componente maior do objeto, com a cor castanha, resultando no aspeto ilustrado na Figura 20. e. Clique em OK para terminar. 5. Coloque este último objeto em cima da mesa utilizando um movimento baseado em dois pontos, origem e destino, como detalhado nos seguintes passos: f.

Clique no objeto com o botão direito do rato;

g. Escolha a opção Position  Place  One point; h. Ative a opção Snap End7, selecionando a mesma na barra inferior da janela do RobotStudio (ver Figura 21); i.

6 7

Figura 21 – Ativar a opção Snap End.

Clique num dos campos das coordenadas do ponto de origem (Primary Point - From) e depois clique num canto inferior do objeto. Depois clique num dos campos das coordenadas do ponto destino (Primary Point - To) e clique um canto correspondente

Pode ainda aplicar uma operação de rotação seguindo passos similares com a opção de rotação/orientação. Opções semelhantes às que encontra no AutoCAD ou outro qualquer software de desenho geométrico.

2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

13/45

do tabuleiro da mesa, à semelhança do ilustrado na Figura 22;

Figura 22 – Movimento de um objeto usando dois pontos.

j.

Clique em Apply resultando no ambiente ilustrado na Figura 23.

6. Rode o objeto clicando no mesmo com o botão direito do rato e selecionando a opção Position  Rotate. Altere o referencial de coordenadas para Local, selecione o eixo dos Zs e um ângulo de rotação de -90º e aplique a rotação; NOTA: Na opção Rotate poderá rodar em torno de um eixo definido por si, ou em torno de um eixo de coordenadas pré-definido, tal como aconteceu neste caso.

Figura 23 – Objeto deslocado.

Figura 24 – Postura final do objeto.

7. Altere em Snap Mode para a opção Snap Object e centre o objeto através da opção de mover baseado em dois pontos (como realizado anteriormente), mas utilizando como referência pontos intermédios da peça e da mesa. No final a peça deverá estar centrada na mesa, tal como mostra a Figura 24. Tire proveito do facto de poder apenas aplicar a translação em eixos selecionados (opção Translate along these axes). 8. Guarde o trabalho. O RobotStudio inclui não só um conjunto de objetos de interesse, mas também um conjunto de ferramentas que poderá utilizar, nomeadamente de soldadura, jato de água, etc. Estes itens estão disponíveis na pasta indicada anteriormente e também através do menu Home  Import Library (embora aqui possam ter informação extra, não geométrica, adicionada). Poderá ainda clicar em File  Share  Content Sharing para aceder a um conjunto de modelos (e vídeos) disponibilizados pela comunidade e/ou para partilhar os conteúdos desenvolvidos por si.

3.9

Criar e Importar Novos Objetos

Os objetos que constituem o ambiente de trabalho podem ser desenvolvidos no próprio RobotStudio ou numa aplicação externa e posteriormente importados. Estes objetos são denominados de 2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

14/45

geometry no RobotStudio, dado que se tratam de figuras geométricas. Quando a essas figuras geométricas estão associadas outras características e funcionalidades próprias do RobotStudio (ferramentas, mecanismos, robôs, etc.), passam a denominar-se library (biblioteca). Tipicamente quando são importadas bibliotecas, estas mantêm a sua ligação ao ficheiro externo, sendo apenas criado um novo ficheiro se o utilizador pretender efetuar alterações à biblioteca. Relativamente aos objetos compostos apenas por figuras geométricas, o RobotStudio permite importar um conjunto de formatos diferentes, nomeadamente sat, igs/iges, stp/step/p21, vda/vdafs, model/exp, CATPart/CATProduct, prt/asm, ipt, wrl/vrml/vrml1/vrml2, jt, stl, ply, 3ds e dae (aceda à lista completa fazendo Home  Import Geometry  Browse for Geometry). Note no entanto que alguns formatos poderão necessitar de uma licença extra. Com a instalação do RobotStudio é ainda disponibilizada uma ferramenta que permite converter conjuntos de ficheiros do AutoCAD numa única operação, ferramenta essa denominada de CAD Converter. Caso o estudante se sinta confortável com um destes formatos pode desenvolver o seu ambiente de trabalho na aplicação correspondente e importá-la no RobotStudio. Caso contrário pode desenvolver o ambiente no próprio RobotStudio, embora com bastantes limitações quando comparado com aplicações específicas de modelação e desenho 3D. Lembre-se que o RobotStudio é um software de simulação na área da Robótica, não é um software de desenho. Os passos seguintes descrevem a utilização básica do RobotStudio para criar figuras geométricas: 1. Abra a estação criada anteriormente, caso esteja fechada, e selecione a opção Modeling  Solid  Box (ver Figura 25); 2. Como pode confirmar na Figura 26, na definição da posição e dimensão do paralelepípedo tem a opção de escolher qual o referencial utilizado como base (por omissão é no referencial do mundo). Neste caso pretende-se adicionar um paralelepípedo com 600 mm de lado, centrado na posição (0, 1100, 0) [mm] e orientado segundo os eixos de coordenadas. Dado que a especificação da posição do paralelepípedo se baseia num dos vértices deste, tem que introduzir as coordenadas para o vértice (-300, 800, 0) [mm] e orientação (0,0,0) para manter o alinhamento com o referencial de base. Relativamente à dimensão, se colocar apenas o comprimento, o RobotStudio assume a mesma dimensão para todos os lados.

Corner Point

Figura 25 – Criar um paralelepípedo.

Figura 26 – Posições e dimensões na criação de um paralelepípedo.

Como pode observar pelo resultado, ilustrado na Figura 27 (após alteração da cor do material para vermelho), foi adicionado um elemento no separador Modeling, denominado Part_1. Este objeto (part) é constituído neste momento por um elemento apenas, denominado de Body. 2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

15/45

3. Adicione agora uma pirâmide retangular com a mesma altura do paralelepípedo e mesmas dimensões de base, tal como ilustrado na Figura 28 (utilize a opção Snap Object para facilitar o posicionamento da pirâmide). Fica assim com dois elementos: Part_1 e Part_2.

Figura 27 – Estrutura de informação de objetos.

Figura 28 – Conjunção de múltiplos objetos.

4. Caso se pretenda que os dois objetos criados sejam um só, existem várias alternativas. A mais simples consiste em arrastar um dos elementos (Body) para o outro objeto, no separador Modelling. Neste ficam apenas com um objeto formado por dois elementos distintos. Cada um dos elementos pode ser selecionado de forma independente. Experimente esta opção, desfazendo-a de seguida (undo) para voltar à situação anterior; 5. Alternativamente pode fazer a união dos dois objetos clicando em Modeling  Union seguido da seleção dos dois objetos. Esta operação resulta num objeto com um único elemento. Experimente realizar esta operação. A opção Keep Original permite guardar os objetos originais. Existe um conjunto de formas geométricas que pode criar, bem como um conjunto de operações que pode efetuar, todas disponibilizadas a partir do menu Modeling. Estas figuras geométricas e operações são em tudo idênticas às existentes em aplicações de modelação 2D e 3D. Encontra mais informação sobre as mesmas em RobotStudio Help  Modeling Tab. NOTA: Os nomes atribuídos aos vários elementos constituintes do ambiente de trabalho podem facilmente ser editados clicando duas vezes com o botão esquerdo do rato nos mesmos, ou clicando com o botão direito do rato seguido da opção Rename. Procure atribuir sempre nomes sugestivos aos vários elementos, permitindo assim uma mais fácil reutilização, depuração e avaliação do trabalho desenvolvido.

3.10 Modos de Visualização Por vezes alguns dos pormenores do ambiente de trabalho poderão ser mais percetíveis em diferentes modos de visualização. Em particular, poderá recorrer ao modo wireframe (modelo de arames), situação em que as superfícies serão transparentes e apenas visualizadas as arestas, tal como exemplificado na Figura 29. Para aceder a esta visualização, clique em Home  Graphics Tools  Representation  Wireframe. Caso queira dar um aspeto mais avançado em termos de gráficos, pode selecionar a opção Advanced Lighting no mesmo menu. No entanto tal não é aconselhado durante o desenvolvimento, pois implica um consumo mais elevado de recursos computacionais por parte do RobotStudio.

2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

16/45

Figura 29 – Modelo de Arames.

3.11 Movimentar o Robô e Criar Caminhos Nesta secção irá aprender os modos básicos para: •

Movimentar o robô;



Criar posturas de trabalho (tipicamente denominados em inglês por Target Point ou Geometry Points, GPs);



Criar um caminho a realizar pelo robô.

A forma mais simples de especificar um movimento/trajetória para um manipulador, é “ensinandolhe” posturas de interesse, posturas essas que são depois unidas num movimento pré-configurado. A estas posturas está associada uma configuração do robô, bem como um tipo de movimento entre posturas (linear, circular ou de junta). Essas posturas são normalmente denominados em inglês por targets, sendo o processo de as criar denominado Teach target. O caminho que une essas posturas denomina-se em inglês de path. Os passos que se seguem permitem de uma forma simples compreender a diferença entre um movimento de junta e um movimento linear, sendo que, para este último, é necessário que o controlador atue sobre uma ou mais juntas em simultâneo. Poderá ainda observar os valores mínimos e máximos de cada junta, os quais limitam o movimento do manipulador em si. Realize os seguintes passos: 1. Abra o ambiente de trabalho criado anteriormente, caso ainda não esteja aberto; Movimento de Juntas (manual) 2. Selecione movimento manual de juntas, clicando em Home  Freehand Jog Joint (ver Figura 30); 3. Neste modo, quando seleciona uma junta, esta fica marcada. Experimente selecionar cada uma das seis juntas do robô e movimentá-las com o rato. Para testar as juntas mais próximas do elemento terminal do robô, aconselha-se a que faça zoom a essa zona;

2016/2017 – 2º Semestre, EEC, RVC

Figura 30 – Movimento manual de juntas.

Hugo Costelha e Carlos Simplício

17/45

Movimento Linear (manual) 4. Selecione agora movimento manual linear, clicando em Home  Freehand Jog Linear (ver Figura 31); 5. Neste modo poderá movimentar o robô sem que ocorram alterações da orientação do elemento terminal. Para tal selecione e arraste um dos eixos. Poderá confirmar que o robô movimenta várias juntas de modo a garantir um movimento linear segundo o eixo e direção selecionados. Note que, caso tenha selecionado uma das opções de Snap, o robô tentará ir para essas posições;

Figura 31 – Movimento manual linear.

6. Desabilite a opção Jog Linear; Controlo manual (numérico) de juntas 7. No separador Layout selecione o robô IRB1600_6_120__02 (ver Figura 32), aparecendo um novo menu de topo, Mechanism Tools, correspondente à seleção feita;

Figura 32 – Selecionar o 8. Abra o separador de controlo e visualização numérica das robô. juntas clicando em Mechanism Tools  Modify  Mechanism Joint Jog. Surgirá um novo separador, ilustrado na Figura 33. Também poderá aceder a esta funcionalidade, clicando com o botão direito do rato no robô, no separador Layout, seguido da opção Mechanism Joint Jog;

9. Neste separador poderá controlar e visualizar o valor de cada junta do robô. Poder arrastar os valores com o rato, clicar nas setas ou, após selecionar um dos valores de junta, escrever um valor específico através do teclado. Nesse separador poderá ainda monitorizar a configuração utilizada bem como as coordenadas do Tool Center Point (TCP), i.e., as coordenadas da ferramenta;

Figura 33 – Controlo manual (numérico) de juntas.

Controlo manual (numérico) linear 10. Poderá da mesma forma ativar o controlo numérico linear, clicando em Mechanism Tools  Modify  Mechanism Linear Jog; 11. No novo separador poderá visualizar as coordenadas em posição (X, Y, Z) e orientação (RX, RY e RZ) do elemento terminal de acordo com o referencial escolhido; Movimento para a postura Home 12. O robô pode possuir um conjunto de posturas armazenadas, sendo uma destas, incluída por omissão, denominada Home. Esta corresponde tipicamente à postura do robô em que todas as juntas estão na sua posição zero. Pode em qualquer altura colocar o robô nesta postura clicando com o botão direito do rato no robô no separador Layout, seguido da opção Jump Home; Figura 34 – Adicionar uma postura de trabalho.

2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

18/45

Criar posturas de trabalho (targets) 13. Existem várias formas de criar posturas de trabalho. Uma delas consiste em colocar a ferramenta do robô na postura pretendida, gravando de seguida essa postura. Para tal, mantenha o robô na postura Home (ponto anterior) e selecione a opção Home Teach Target (se surgir um aviso sobre o uso dos referenciais “tool0” e “wobj0”, escolha a opção “Yes”), como mostra a Figura 34. Note que esta postura foi adicionada considerando a tarefa, Workobject e ferramenta definidos em Settings do separador Home (ver Figura 35); Figura 35 – Adicionar uma 14. Mova o robô atuando na junta 1 e guarde a postura alcançada postura de trabalho. executando de novo Home  Teach Target; 15. Mova o robô utilizando um movimento linear ao longo do eixo dos Zs negativo, seguido de um movimento linear horizontal ao longo de X positivo. Guarde a nova postura alcançada através da função Teach Target e cancele a opção de mover o robô; 16. Escolha o separador Paths&Targets e expanda as propriedades do robô de modo a visualizar as posturas criadas anteriormente, tal como mostra a Figura 36. Confirme que foram criadas 3 posturas com os nomes por omissão: Target_10, Target_20 e Target_30. Note que pode selecionar uma ou mais posturas, ficando estas evidenciadas no ambiente;

Figura 36 – Posturas de trabalho criadas.

Criar um caminho 17. Adicione um novo caminho (vazio) ao robô executando Home  Path  Empty Path (ver Figura 37). Por omissão o novo caminho denomina-se Path_10; 18. Selecione as 3 posturas criadas anteriormente e arraste-as para o caminho criado no ponto anterior, resultando num conjunto de instruções tal como ilustra a Figura 38. Por omissão o movimento a realizar entre as várias posturas é do tipo linear, razão pela qual é utilizada a função MoveL (futuramente serão dados mais detalhes sobre esta e outras funções). Confirme que o caminho aparece no ecrã (ver Figura 40);

Figura 37 – Criar um caminho vazio.

NOTA: O caminho que é desenhado no ecrã não corresponde necessariamente à trajetória que o robô irá descrever, pois tal depende do tipo de movimentos escolhidos e respetivos parâmetros. 19. Selecione as 3 instruções adicionadas ao caminho, clique com o botão direito do rato nessa seleção e escolha a opção Edit Instruction. Altere o tipo de movimento de Linear (linear) para Joint (junta) na opção Motion Type, resultando assim no conteúdo ilustrado na Figura 39; 20. Clique em Simulation  Monitor, ative a opção Enable TCP trace, altere a cor Trace color para laranja e clique em OK. Desta forma ficará marcada a posição por onde o robô passar 2016/2017 – 2º Semestre, EEC, RVC

Figura 38 – Posturas de trabalho criadas.

Figura 39 – Caminho com movimento de juntas.

Hugo Costelha e Carlos Simplício

19/45

sempre que executar uma trajetória programada; 21. No separador Layout, clique com o botão direito do rato na postura Target_10 e escolha a opção Jump To Target;

Figura 40 – Caminho criado.

Figura 41 – Caminho executado.

22. Clique com o botão direito do rato no caminho criado (Path_10) e escolha a opção Move Along Path. O caminho gerado será carregado para o controlador virtual e executado pelo robô. Deverá visualizar no ambiente a execução do caminho criado, ficando marcado a laranja o caminho efetivamente realizado pela ponta de ferramenta. Como pode confirmar, o caminho não corresponde às linhas retas entre as várias posturas (mais à frente voltará a abordar esta questão); NOTA: No final da execução do movimento anterior irá surgir o erro Program pointer has been reset na janela de Output do RobotStudio. Esse erro é esperado e resulta do facto de, para testar o caminho, ter sido criado e carregado um programa temporário para o controlador do robô. Como no final o programa desaparece, o apontador de programa é perdido. Tal não deverá acontecer quando tiver a realizar uma simulação completa, como verá nos tutoriais futuros. 23. Para terminar guarde o ambiente desenvolvido, de preferência utilizando a opção Pack & Go. Note-se que as várias posturas criadas podem ser reutilizadas em múltiplos caminhos, pelo que deve dar-lhes nomes relevantes para facilitar a identificação de cada uma. Para tal basta clicar duas vezes no nome da postura cujo nome pretende alterar. É muito importante que tenha percebido a diferença entre um movimento de junta e um movimento linear. Enquanto num movimento linear a ferramenta realiza uma linha reta entre o ponto anterior e o ponto objetivo, na realização de um movimento de junta não há qualquer garantia quanto ao trajeto realizado pelo robô, apenas que irá começar e terminar nas posturas especificadas. Tal significa que não devem ser utilizados movimentos de junta quando se realizam operações sensíveis, tais como levantar e colocar objetos, ou em aproximações a objetos, pois poderá haverá o risco de colisões. Por outro lado, a utilização de movimentos lineares deve ser evitada sempre que possível, pois além do custo computacional mais elevado para o cálculo do movimento a realizar por parte do controlador do robô, há tipicamente um custo energético e um tempo de execução superior quando comparado com o movimento de junta para as mesmas duas posturas de origem e destino. Num movimento de junta o robô escolhe o caminho mais rápido entre a postura de partida e postura de chegada.

4

Criar um Workobject

Tal como detalhado na ajuda do RobotStudio, na secção “How to program robots”, item 2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

20/45

“Workobjects”, um Workobject consiste num referencial de coordenadas que é utilizado como origem na criação de um conjunto de posturas/caminhos tipicamente associados a um objeto, área de trabalho e operação específicos. Considere que criou um caminho ao longo das arestas de um dado objeto e que esse caminho tem por base um Workobject. Caso pretenda processar a peça numa postura diferente, tudo o que terá que fazer será reajustar o Workobject. Caso não tivesse usado um Workobject nessa situação, seria necessário refazer todo o caminho e criar novamente todas as posturas associadas. É fundamental a utilização de Workobjects para cada operação, devendo sempre começar qualquer tarefa pela criação destes. Outro conceito importante reside na escolha da configuração com que cada postura é atingida num dado caminho. Embora tipicamente um manipulador, em particular um com seis juntas, seja capaz de atingir a mesma postura com várias configurações distintas (valores diferentes de juntas), a escolha das configurações é crucial para a execução do caminho com sucesso. Ao longo desta secção ficará mais familiarizado com este conceito. Realize os seguintes passos: 1. Abra o ambiente de trabalho gerado no tutorial anterior; 2. Selecione a peça em cima da mesa e centre-a no separador de visualização, clicando na mesma com o botão direito do rato e escolhendo a opção View Center. Faça zoom à peça, resultando numa visualização semelhante à da Figura 42; 3. Ative a opção Snap End ou Snap Object; 4. Clique em Home  Other  Create Workobject;

Figura 42 – Visualização da peça.

5. Modifique o nome do Workobject de Workobject_1 para MyWorkobject (procure sempre que estes nomes sejam sugestivos);

Figura 43 – Seleção dos pontos para criar um Workobject.

6. Na componente User Frame clique em Frame by points, selecione a opção Three-point e escolha os três pontos que definem o referencial associado ao plano de trabalho (Workobject), tal como ilustra a Figura 43. O primeiro ponto corresponde à origem do Workobject, o segundo é um ponto ao longo do eixo X (positivo) e o terceiro é um ponto ao longo do eixo Y (positivo);

2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

21/45

7. Clique em Create, terminado assim a criação do Workobject. No final o referencial associado ao Workobject ficará visível, tal como ilustrado na Figura 44. Poderá inclusive seleciona-lo no separador Paths&Targets de modo a ficar mais visível. Note ainda que na secção Settings do menu Home passou a estar selecionado o Workobject agora criado;

5

Figura 44 – Workobject.

Criar um Caminho com Base nos Vértices de um Objeto

Anteriormente aprendeu a criar posturas e a gerar um caminho com base nestas. Na prática interessa que as posturas criadas tenham alguma relação com a tarefa a desenvolver, tipicamente associadas a objetos a trabalhar. Esta secção mostra como pode criar um caminho com base nos vértices de um dado objeto. De salientar que as posturas geradas estarão associadas ao Workobject criado na secção anterior. Com o ambiente anterior aberto, execute os seguintes passos: 1. Selecione a opção Home  Target  Create Target de modo a poder criar várias posturas; 2. Escolha quatro pontos nos vértices da peça clicando nos mesmos (no sentido dos ponteiros do relógio e começando pelo vértice na origem do Workobject), tal como ilustra a Figura 45 (deverá ter a opção Snap Object ativada). Note que as posturas são automaticamente adicionadas à lista à esquerda. Confirme que o Workobject selecionado é o MyWorkobject, que a ferramenta selecionada é a ferramenta MyTool e clique em Create para terminar a adição das posturas, resultando na Figura 46; NOTA: Quando as posturas não são adicionadas usando a opção Teach target estas não incluem a configuração do robô, razão pela qual ficam com um ponto de exclamação associado na lista de posturas. Tal significa que não há ainda confirmação que a postura é de facto alcançável pelo robô, algo que será determinado nos passos seguintes.

Figura 45 – Criação de posturas num objeto.

Figura 46 – Posturas criadas num objeto.

3. De modo a facilitar a perceção das posturas definidas é possível visualizar a ferramenta do robô nestas. Para tal selecione todas as posturas do Workobject criado e ative a opção Target Tools  Modify  View tool at target  MyTool, resultando na informação disponível na Figura 47.

2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

22/45

Figura 47 – Visualização da ferramenta nas posturas criadas.

Figura 48 – Posturas após primeira rotação.

Figura 49 – Posturas após segunda rotação.

4. Tal como a Figura 47 mostra, as posturas escolhidas não são as ideais, pelo que têm de ser alteradas. Para tal, mantendo todas as posturas selecionadas, clique em Target Tools  Modify  Rotate. Com o referencial local selecionado, selecione o eixo de rotação X e rode 180º, obtendo o resultado ilustrado na Figura 48. Selecione agora o eixo de rotação Z e rode novamente 180º, obtendo o resultado ilustrado na Figura 49;

Figura 50 – Escolha da configuração.

5. Selecione a primeira postura do Workobject e clique em Target Tools  Modify  Jump To Target8. Irá surgir uma janela para escolher a configuração desejada. Experimente as várias configurações disponíveis, escolha no final a primeira e faça Apply (não feche a janela das configurações). Na Figura 50 encontra o resultado esperado após a escolha da configuração (0,-1,0,0); Poderá também aceder à opção Jump To Target clicando com o botão direito do rato na postura. Um número razoável das opções disponíveis nos menus está também disponível por esta via. 8

2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

23/45

6. Ative a opção Target Tools  Modify  View Robot at Target de modo a visualizar o robô na postura selecionada. Selecione uma postura de cada vez das 4 criadas para o Workobject e escolha a configuração desejada, de preferência a mesma que na postura anterior ou próxima desta. Após configurar todas as posturas feche a janela das configurações e cancele a opção View Robot at Target. Note que à medida que configura as posturas estas deixam de ter um ponto de exclamação associado, indicando que a postura foi verificada e é alcançável pelo robô; 7. Crie um novo caminho vazio e adicione estas 4 posturas a esse caminho, arrastando-as para lá; 8.

Teste a execução do caminho, selecionando o mesmo e clicando em Path Tools  Modify  Move Along Path, obtendo a trajetória indicada na Figura 51;

9. Como pode verificar pelo resultado obtido, o robô não executa os movimentos sempre em linha reta entre posturas consecutivas, embora o resultado seja bastante mais próximo do que o esperado, comparativamente à utilização de movimentos de juntas (MoveJ). Tal devese aos parâmetros utilizados para o movimento. Como não efetuou qualquer alteração a estes parâmetros, este terá sido definido com as características indicadas na barra inferior da janela do RobotStudio, nomeadamente movimentos lineares (MoveL) com velocidade de 1000 mm/s (v1000), aproximação de 100 mm (z100), a ferramenta MyTool e o Workobject MyWorkobject (pode confirmar estes parâmetros colocando o ponteiro do rato por cima de cada instrução de movimento). Neste caso em concreto, como definiu uma aproximação de 100 mm, assim que o robô estiver a menos de 100 mm da próxima postura, este avança para o movimento seguinte;

Figura 51 – Caminho executado com erro.

Figura 52 – Caminho executado com precisão.

10. Para a trajetória a realizar, tem duas hipóteses: poderá apagar as instruções, alterar as opções na barra inferior da janela do RobotStudio e voltar a adiciona-las; alternativamente pode selecionar todos os movimentos no separador Paths&Targets e, clicando com o botão direito do rato, escolher a opção Edit Instruction. Na janela que aparece altere a opção zone de z100 para fine, a precisão máxima do robô. Clique em Apply e feche a janela; 11. Aceda novamente à opção Simulation  Monitor e clique na opção Clear Trace para apagar o traçado anterior e altere a cor para magenta para ser mais visível; 12. Corra novamente o caminho criado e verifique que a trajetória realizada pela ferramenta é a apresentada na Figura 52. Verifique ainda que agora o robô para nos cantos da peça por breves instantes, algo que não acontecia no movimento anterior; 13. Grave o ambiente criado.

2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

24/45

Mas qual o significado do parâmetro zone? Como poderá confirmar na ajuda RAPID Instructions, Functions and Data types  Data types  zonedata – Zone data, o parâmetro zone é do tipo zonedata. Quando esse parâmetro é fine, o robô executa a trajetória com a precisão máxima e tipicamente esse ponto passa a ser um ponto de paragem. Quando esse parâmetro toma um dos valores indicados na Tabela 1, o movimento do robô passa a ser um movimento aproximado, em função do valor escolhido, à semelhança do exemplo ilustrado na Figura 53. Name z0 z1 z5 z10 z15 z20 z30 z40 z50 z60 z80 z100 z150 z200

Path zone TCP path Orientation 0.3 mm 0.3 mm 1 mm 1 mm 5 mm 8 mm 10 mm 15 mm 15 mm 23 mm 20 mm 30 mm 30 mm 45 mm 40 mm 60 mm 50 mm 75 mm 60 mm 90 mm 80 mm 120 mm 100 mm 150 mm 150 mm 225 mm 200 mm 300 mm

Ext. axis 0.3 mm 1 mm 8 mm 15 mm 23 mm 30 mm 45 mm 60 mm 75 mm 90 mm 120 mm 150 mm 225 mm 300 mm

Tabela 1 – Dados de aproximação prédefinidos

Figura 53 – Execução de um caminho.

Mas qual o significado dos valores utilizados para a escolha de uma dada configuração? Tal como descreve a secção de ajuda RobotStudio Help  Introduction to RobotStudio  Terms and concepts  Robot axis configurations, uma dada configuração é definida com 4 valores inteiros, cujos significados dependem do tipo de robô. No caso dos robôs com 6 juntas em série, os três primeiros número significam: um número maior ou igual a zero corresponde a um movimento no quadrante positivo correspondente (a começar em 0 para o primeiro quadrante); um número negativo corresponde a um movimento no quadrante negativo correspondente (a começar em -1). O quarto elemento indica qual das 8 possíveis posições do punho para três casos particulares do robô (singularidades). No caso de juntas prismáticas o número inteiro indica o deslocamento em metros da junta (arredondado para baixo). Apenas se incluem na configuração as juntas que o fabricante considera relevantes para distinguir entre as várias configurações possíveis para atingir a postura final do robô, podendo variar entre robôs. A título de exemplo, considere o valor [0 -1 2 1] para um robô IRB 140: •

O primeiro valor, 0, diz respeito à primeira junta (base), indicando um ângulo entre 0º e 90º (1º quadrante positivo);



O segundo valor, -1, corresponde a um ângulo para a quarta junta entre 0º e -90º (1º quadrante negativo);



O terceiro valor, 2, corresponde a um ângulo para a sexta junta entre 180º e 270º (3º quadrante positivo);



O quarto valor, 1, indica que o punho estaria numa posição idêntica à da Figura 54;

Aceda ao Mechanism Joint Jog do robô, varie as juntas 1, 4 e 6 e confirme que a configuração é a esperada. Para mais informações sobre estes parâmetros, consulte a ajuda em RAPID Instructions, Functions and Data types  Data types  confdata – Robot 2016/2017 – 2º Semestre, EEC, RVC

Figura 54 – Exemplo de configuração

Hugo Costelha e Carlos Simplício

25/45

configuration data. Conclui-se que a escolha das configurações a utilizar pode não ser trivial, dado que podem existir duas posturas consecutivas com configurações diferentes, as quais podem ser incompatíveis, em particular se o robô estiver a realizar um movimento linear entre ambas. Uma forma de minimizar estes problemas é utilizar a configuração automática. Essa opção está disponível em Path Tools  Modify  Auto Configuration e será descrita na secção seguinte. Note, no entanto, que mesmo utilizando a configuração automática poderá não ser possível gerar um caminho entre todos os pontos definidos. Note também que o facto de o robô não conseguir realizar a configuração automática, não significa que não seja possível realizar o caminho escolhendo outras configurações. Esses casos poderão ser resolvidos alterando as configurações manualmente ou alterando as posturas, quer individualmente, quer alterando o objeto (e respetivo Workobject) movendo/orientando este para um local mais acessível por parte do manipulador ou que não implique alteração de configurações.

6

Criar Caminhos ao Longo das Arestas de um Objeto

Criar caminhos com base nos vértices de um objeto permite realizar tarefas com base na geometria destes. No entanto, para objetos com geometrias mais complexas, existem alternativas mais práticas de criar esses caminhos. Os passos seguintes ilustram esse processo: 1. Abra o ambiente final criado na alínea anterior, caso o tenha fechado, e esconda os caminhos previamente criados, Path_10 e Path_20 (estes não serão utilizados nos passos que se seguem), bem como o cubo e a pirâmide. Para tal clique nos mesmos com o botão direito do rato e desative a opção View  Visible, resultando no ambiente ilustrado na Figura 55; 2. Modifique a vista de forma ficar idêntica à da Figura 55 e ative a opção Surface Selection, como mostra a Figura 56;

Figura 55 – Adição de um objeto.

Figura 56 – Seleção de superfícies.

3. Selecione a opção Modeling  Border around Surface; 4. Selecione a superfície da peça, tal como ilustra a Figura 57, e clique em Create seguido de Close, criando assim uma curva ao longo do bordo da superfície selecionada, como ilustra a Figura 58; 5. Ative a opção Curve Selection (ver a Figura 59) e selecione a curva criada no ponto anterior;

2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

26/45

Figura 57 – Modo de seleção de superfície.

Figura 58 – Curva criada ao longo da aresta.

Figura 59 – Seleção da fronteira de uma superfície Figura 60 – Geração de um caminho ao longo do bordo de uma superfície.

6. Com a curva selecionada clique agora em Home  Path  AutoPath, resultando no separador exibido na Figura 60. Faça as seguintes alterações: a. Para o campo Reference Surface selecione a superfície superior da peça (a mesma utilizada no ponto 4); b. Altere o campo Tolerance (desvio máximo permitido do caminho relativamente à curva) para 1 mm, verificando que o número de pontos gerados aumenta com a diminuição deste valor; c. Altere o campo Approximation Parameters para Circular (para permitir movimentos circulares no caminho gerado e não apenas movimentos lineares). Verifique que ao alterar esta opção diminui consideravelmente o número de pontos nas zonas curvas do caminho;

Figura 61 – Caminho gerado ao longo do bordo da superfície.

2016/2017 – 2º Semestre, EEC, RVC

Figura 62 – Visualização da ferramenta numa postura.

Hugo Costelha e Carlos Simplício

27/45

d. Clique em Create resultando em 10 posturas criadas e um caminho, tal como mostra a Figura 61; 7. Selecione a primeira postura guardada e ative a opção Target Tools Modify  View Tool at Target  MyTool, de modo a vizualisar a postura da ferramenta (Figura 62); 8. Selecione todas as posturas guardadas, visualizando assim a ferramenta em todas as posturas geradas (Figura 63); 9. Para permitir que o robô realize o caminho pretendido de forma suave e minimizando problemas na realização da trajetória devemos garantir uma maior compatibilidade entre posturas consecutivas. Um primeiro passo é a reorientação das mesmas. Para tal selecione a primeira postura e clique em Target Tools  Modify  Rotate, surgindo o separador visível na Figura 64;

Figura 63 – Visualização da ferramenta em todas as posturas guardadas.

Figura 64 – Rotação da postura.

10. Selecione o eixo dos Zs como eixo de rotação e aplique uma rotação de -90º no referencial local, resultando na postura indicada na Figura 65; 11. Selecione agora todas as posturas exceto a primeira e clique em Target Tools  Modify  Align Target Orientation surgindo o separador visível na Figura 66;

Figura 65 – Postura após rotação.

Figura 66 – Alinhar a orientação de um conjunto de posturas.

12. Selecione para o campo Reference a primeira postura e escolha alinhar todas as posturas com a primeira segundo o eixo do X (Align Axis) mantendo o eixo dos Z inalterado (Lock Axis). Clique em Apply e selecione novamente todas as posturas para confirmar que obteve o resultado ilustrado na Figura 67;

2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

28/45

Figura 67 – Posturas após alinhamento de orientação.

Figura 68 – Sequência de movimentos para executar o caminho.

13. Como pode confirmar observando a lista de posturas, estas apresentam um sinal de aviso. Se colocar (sem clicar) o rato por cima da postura poderá constatar que o aviso se deve ao facto de ainda não ter sido escolhida qualquer configuração para as várias posturas. Para faze-lo rapidamente e de forma automática, selecione o caminho criado e clique em Path Tools  Modify  Auto Configuration. Ser-lhe-á solicitado para escolher a configuração da primeira postura, devendo tipicamente escolher aquela que lhe pareça mais próxima de todas as possíveis configurações ao longo do caminho, neste caso (0,-1,0,0). No final poderá confirmar na janela de mensagens (Output) que a configuração automática do caminho foi bem-sucedida; 14. No separador Paths&Targets pode visualizar a sequência de instruções de código RAPID que permite executar o caminho gerado (ver Figura 68), nomeadamente instruções MoveL para movimentos lineares e MoveC para movimentos circulares, as quais serão estudadas em mais detalhe posteriormente; 15. Para terminar confirme que o robô consegue executar o caminho com sucesso. Para tal deverá selecionar o caminho e clicar em Path Tools  Modify  Move Along Path. Deverá ver o robô a executar o caminho gerado (note que poderá demorar alguns segundos até que o robô inicie a execução do caminho); 16. Experimente ainda alterar a aproximação para z0 e/ou fine, e repetir a execução do caminho para observar mais uma vez o impacto dessa opção.

7 Alteração da Localização do Espaço de Trabalho Após a Criação das Posturas e/ou do Caminho Pode ocorrer que seja necessário alterar o local onde uma dada peça é operada pelo robô, já depois de ter gerado todos os caminhos com base na geometria da peça. Um exemplo típico dessa necessidade, é quando o projeto é feito no ambiente de simulação, mas depois na prática existem algumas variações face ao projeto. Neste caso a utilização de um Workobject garante que se pode proceder a essa alteração com um esforço mínimo. Os passos seguintes ilustram essa situação para o ambiente de trabalho desenvolvido na secção anterior: 1. Comece por movimentar a peça para o canto da mesa, resultando no ambiente de trabalho ilustrado na Figura 69. Como pode observar, a movimentação da peça não teve qualquer impacto no caminho previamente gerado, pelo que é necessário corrigir o caminho;

2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

29/45

Figura 69 – Alteração da posição do objeto de trabalho.

Figura 70 – Seleção do Workobject.

2. Dado que o caminho foi gerado tendo por base o Workobject definido previamente, para que o caminho fique correto basta atualizar o Workobject. Para tal selecione o Workobject utilizado para definir as posturas (ver Figura 70) e clique em Workobject Tools  Modify  Modify Workobject. Na janela de definições que surge, à semelhança do que aconteceu aquando da criação deste, altere as propriedades do User Frame procedendo da mesma forma de quando criou o Workobject (ver Figura 43). Clique em Apply, sendo todo o caminho corrigido e de novo coincidente com o bordo utilizado anteriormente, tal como mostra a Figura 71; 3. Observando a lista de posturas e caminhos criados (ver Figura 72) conclui-se que se perdeu a configuração efetuada anteriormente. Tal é de esperar, dado que as posturas foram todas alteradas, pelo que é necessário reconfigurar todas as posturas; 4. Para reconfigurar o caminho execute novamente a autoconfiguração. Execute no final a função Move Along Path para o caminho gerado de modo a confirmar a correta configuração do mesmo; 5. Guarde o trabalho.

Figura 71 – Alteração do Workobject.

Figura 72 – Caminho desconfigurado.

Nesta secção teve oportunidade de confirmar as vantagens associadas à utilização de Workobjects associados aos objetos ou espaços de trabalho. Caso não tivesse utilizado um Workobject nesta situação, teria que ter criado novamente todos os pontos um a um e gerado o caminho novamente, o que seria um processo mais moroso face à atualização do Workobject, mesmo num caso simples como este.

8

Adicionar Sinais ao Robô

A interação entre robôs e/ou autómatos é normalmente baseada em módulos bastante conhecidos 2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

30/45

e utilizados (DeviceNet, EtherCat, Ethernet/IP, etc.). No entanto a interação com os sensores e atuadores é tipicamente bastante mais simples, funcionando através de sinais analógicos e/ou digitais (naturalmente que também é possível que a interação com os autómatos seja feita com recurso a entradas/saídas digitais e/ou analógicas). Qualquer manipulador industrial pode estar equipado com um conjunto de entradas/saídas digitais e/ou analógicas. Os sinais são tipicamente utilizados para medir valores de sensores e acionar atuadores (ou pré-acionadores), à semelhança do que acontece com os autómatos. A leitura dos sensores permite tomar decisões, alterando assim os atuadores que são acionados. Os sinais podem ainda ser utilizados para coordenação simples entre múltiplos robôs, embora haja outras formas mais avançadas de o fazer, como é o caso da opção MultiMove da ABB. No entanto este tipo de abordagem mais avançada não está disponível para coordenar robôs de diferentes fabricantes. Esta secção descreve os passos necessários para adicionar sinais a um robô. Tal poderia facilmente expandir-se para qualquer outro tipo de utilização de sinais digitais. Note, no entanto, que este exemplo em particular não tem por base nenhum caso específico, mas somente exemplificar a utilização de sinais. Considere-se um robô que apenas arranca quando uma determinada entrada ficar com o nível alto, e que ativa uma saída quando terminar o movimento. Assim, é necessário adicionar esses sinais ao robô, dado que por omissão este não vem configurado com qualquer saída ou entrada no ambiente de simulação. 1. Abra o ambiente de trabalho criado anteriormente, caso o tenha fechado, selecione o robô no separador Layout e clique na opção Controller  Configuration Editor  I/O; 2. É necessário adicionar os sinais a utilizar no robô, neste caso a saída digital doOperationEnded e a entrada digital diStartOperation. Para adicionar um sinal, com o painel de configuração do sistema I/O, clique no tipo Signal com o botão direito do rato e selecione a opção New Signal…. Atribua um nome ao sinal (Name), escolha o tipo de sinal pretendido (Type of Signal), deixe a opção Assigned to Device livre (dado que é um sinal do controlador virtual), atribua uma descrição em Signal Identification Label e altere o Access Level para All. A alteração do tipo de acesso é sobretudo relevante para as saídas, pois caso contrário não poderíamos forçar o valor das saídas manualmente a partir do simulador. Na Figura 74 encontra um exemplo para o sinal doOperationEnded (para mais informações sobre os vários parâmetros consulte RobotStudio Help  Controller Tab  Configuration Editor);

Figura 73 – Adicionar um sinal.

Figura 74 – Configuração de um sinal virtual.

3. Na janela Configuration – I/O System selecione o tipo Signal e confirme que os sinais estão corretamente adicionados. Caso não estejam, poderá clicar com o botão direito do rato, selecionar a opção Edit Signal(s)… e proceder às alterações pretendidas. Nesta visualização 2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

31/45

pode também adicionar novos sinais através do botão direito do rato e da opção New Signal…;

Figura 75 – Sinais adicionados.

4. Feche o separador de configuração das entradas/saídas, clique com o botão direito do rato no robô (no separador Controller), escolha a opção Restart  Restart (Warmstart) e clique em OK para reiniciar o controlador e aplicar as alterações efetuadas; NOTA: No menu Restart tem várias opções, as quais são detalhadas em RobotStudio Help  Controller tab  Features for both virtual and controllers. Tipicamente deverá utilizar a opção Restart (Warmstart), apenas disponível para controladores virtuais, pois permite reiniciar o controlador carregando novas configurações do mesmo. Caso tenha algum problema com o controlador, esta é a opção a usar. 5. Faça uma cópia de segurança dos parâmetros do robô através da opção Controller  Save Parameters (opção junto a Configuration Editor). Caso queira usar a configuração criada num outro robô ou simulação poderá carregar estes parâmetros, cujos ficheiros têm a extensão *.cfg;

9

Programação Gráfica do Robô e Simulação

Para melhor exemplificar a utilização de sinais, irá utilizar-se dois robôs coordenados por entradas/saídas. De modo a acelerar o desenvolvimento deste tutorial, está disponível no Moodle uma estação de trabalho do RobotStudio já preparada. Relativamente ao que se fez acima, foi adicionado um robô semelhante com as mesmas entradas e saídas, bem como os movimentos necessários para cada robô, semelhantes aos movimentos criados anteriormente. Figura 76 – Ambiente fornecido com dois Colocados todos os elementos no ambiente de robôs. trabalho, interessa agora programar os robôs para executar a tarefa em questão. A programação do robô e a configuração da simulação pode ser puramente gráfica, ou pode incluir edição de código. Nesta secção descreve-se o método puramente gráfico, enquanto na secção seguinte se aborda a utilização/edição direta de código.

1. Abra o ambiente de trabalho indicado acima; NOTA: No RobotStudio o separador Paths&Targets do ambiente de trabalho diz respeito à edição do ambiente mas não necessariamente à informação que está armazenada no controlador do robô. Assim, para que esta informação esteja disponível no controlador virtual do robô, é necessário carregar essa informação para o controlador. Caso se utilizasse um robô real teria que se proceder 2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

32/45

da mesma forma, mas nesse caso a sincronização seria feita para o controlador real em vez de ser feita para o controlador virtual. 2. No separador Paths&Targets clique com o botão direito do rato no controlador IRB1600_6kg_1.2m_1 seguido de Synchronize to RAPID…, surgindo a janela da Figura 77. Mantenha todos os módulos selecionados para que sejam todos sincronizados e clique em OK. Repita a mesma operação para o controlador IRB1600_6kg_1.2m;

Figura 77 – Sincronização para o Controlador Virtual.

Figura 78 – Configuração da simulação.

NOTA: A sincronização tanto pode ser feita do ambiente de trabalho para o controlador virtual, como pode ser feita também no sentido contrário. Em qualquer dos casos pode escolher sincronizar apenas uma parte da informação. Aliás, é aconselhável que escolha apenas a informação indispensável a sincronizar (neste caso foi a primeira sincronização, daí terem sido escolhidos todos os componentes). Deverá ter cuidado com esta operação, em particular quando editar o código diretamente, pois a mesma substitui os programas no controlador virtual ou no ambiente de trabalho, dependendo do sentido da sincronização. 3. Concluída a sincronização com o controlador virtual, clique em Simulation  Simulation Setup, surgindo a janela da Figura 78; 4. Selecione a tarefa T_ROB1 para o controlador IRB1600_6kg_1.2m e, na opção Entry point, escolha o caminho Path_Part_surf, tal como mostra a Figura 79. Repita o procedimento para a tarefa T_ROB1 do controlador IRB1600_6kg_1.2m_1. Com estas configurações está a definir qual a função com que cada controlador deve arrancar, isto é, qual a função de base que este irá correr;

Figura 79 – Especificação do caminho a executar. Figura 80 – Configuração do modo de simulação.

5. Ainda nesta janela, selecione o controlador IRB1600_6kg_1.2m_1 (nesta altura as opções Continuous e Single Cycle ficam disponíveis, tal como mostra a Figura 80). Se selecionar Continuous os caminhos especificados serão realizados de forma cíclica, continuamente. Se selecionar Single Cycle os caminhos serão executados apenas uma vez. Mantenha selecionada a opção Single Cycle em cada controlador e clique em Close; 2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

33/45

6. Clique em Simulation  Play e confirme que os robôs executam os caminhos especificados; Neste momento tem uma simulação completa a correr, com ambos os robôs a executar caminhos semelhantes, sendo que o IRB1600_6kg_1.2m_1 executa os movimentos a metade da velocidade do robô IRB1600_6kg_1.2m. No entanto, como pode observar, não se verifica qualquer coordenação entre os robôs, havendo mesmo colisão entre estes. Para tal é necessário incluir na programação do robô instruções para ler as suas entradas e atuar nas suas saídas. Os passos seguintes irão garantir que um robô não realiza a aproximação à peça enquanto o outro robô não terminar a sua operação. 7. Com a opção IRB_1600_6kg_1.2m T_ROB1 selecionada em Home  Settings, clique com o botão direito do rato na primeira instrução do caminho Path_Part_surf do robô IRB1600_6kg_1.2m e escolha a opção Insert Action Instruction…. No separador Create Action Instruction utilize as opções indicadas na Figura 81 e clique em Create. Desta forma adiciona a instrução WaitDI da linguagem RAPID, a qual permite esperar que uma saída digital atinja um determinado valor. Neste caso especificou-se a entrada diStartOperation com o valor 1;

Figura 81 – Instrução WaitDI.

Figura 82 – Instrução SetDO.

8. Repita o processo para adicionar uma instrução a seguir à última instrução do caminho com os dados indicados na Figura 82. A instrução SetDO com o parâmetro doOperationEnded e valor 1 será utilizada para sinalizar que a operação terminou; 9. Repita o processo para adicionar no final do caminho, a instrução WaitDI com o valor 0 para a entrada diStartOperation e, após a instrução WaitDI diStartOperation 1, a instrução SetDO com a saída doOperationEnded e o valor 0. No final deverá ter um caminho idêntico ao ilustrado na Figura 83; 10. Repita o processo para o segundo robô, resultando no caminho ilustrado na Figura 84; 11. Dado que foram efetuadas alterações ao caminho é necessário voltar a sincronizar este com o controlador virtual. Para tal, para o controlador IRB1600_6kg_1.2m, clique com o botão direito do rato em cima do caminho Path_Part_surf e escolha a opção Synchronize to RAPID…, surgindo a janela da Figura 85. Clique OK para terminar a sincronização. Note que ao iniciar a sincronização clicando diretamente num caminho específico, automaticamente é selecionado apenas esse caminho para sincronização;

2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

34/45

Figura 83 – Caminho final do IRB1600_6kg_1.2m.

Figura 84 – Caminho final do IRB1600_6kg_1.2m_1.

Figura 85 – Sincronização do caminho Path_Part_surf. 12. Repita o procedimento de sincronização para o IRB1600_6kg_1.2m_1; 13. Corra novamente a simulação clicando em Simulation  Play e Confirme que nada acontece. Nada acontece porque ambos os robôs estão à espera que uma entrada seja ativada, o que não está a ser feito neste momento. Clique em Simulation  Stop para parar a simulação; 14. Clique em Simulation  I/O Simulator para aceder ao painel de entradas/saídas do controlador, tal como mostra a Figura 86;

Figura 86 – Simulador de entradas/saídas.

Figura 87 – Listas de sinais do utilizador.

15. Para o sistema IRB1600_6kg_1.2m escolha a opção User List em Filter e clique em Edit Lists…, surgindo uma janela idêntica à da Figura 87. Clique em New List, atribua um nome (por exemplo, User) e adicione os sinais diStartOperation e doOperationEnded, tal como 2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

35/45

mostra a Figura 88. Clique em OK e repita o procedimento para o sistema IRB1600_6kg_1.2m_1. No final deverá visualizar à direta os sinais adicionados, tal mostra a Figura 89;

Figura 88 – Lista final de sinais do utilizador. Figura 89 – Simulador de E/S com lista de utilizador.

16. Inicie novamente a simulação (Simulation  Play) e force a entrada diStartOperation a 1 para o sistema IRB_1600_6kg_1.2m. Verifique que o robô executa a trajetória e ativa a saída diOperationEnded no final. Repita as operações para o outro robô e verifique o mesmo comportamento; 17. Embora já seja possível controlar a operação de ambos os robôs, estes não executam ainda as operações de forma coordenada, pois falta ainda interligar os robôs. Clique em Simulation  Station Logic, resultando na janela da Figura 90. Esta janela permite definir a lógica de funcionamento de alto nível da estação de trabalho, incluindo ligações entre controladores e outros dispositivos; 18. Neste caso apenas existem dois controladores/robôs em termos de equipamento ativo, o que pode ser confirmado clicando no separador Design, como mostra a Figura 91. Para interligar os mesmos, aceda ao separador Signals and Connections e clique em Add I/O Connections. Na janela que aparece escolha as opções como mostra a Figura 92 e clique em OK;

Figura 90 – Lógica da estação.

Figura 91 – Diagrama de blocos da estação.

19. Repita a operação, mas agora para adicionar a ligação entre a saída doOperationEnded do controlador IRB1600_6kg_1.2m_1 à entrada diStartOperation do controlador IRB1600_6kg_1.2m; 20. Clique no separador Design para verificar as ligações adicionadas (poderá arrastar os blocos para ter uma melhor visualização das ligações). Tipicamente as ligações também podem ser adicionadas a partir deste separador, simplesmente arrastando saídas para entradas; 2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

36/45

Figura 92 – Adição de uma ligação.

Figura 93 – Diagrama de blocos da estação.

21. Se arrancar a simulação após estas ligações feitas, os robôs irão continuar parados, pois embora as ligações estejam feitas, ambos irão ficar à espera de um sinal positivo na sua entrada para poder iniciar o movimento. No entanto basta que ative (através do I/O Simulator) a entrada de um dos robôs para automaticamente o processo se desenrolar infinitamente; Mesmo conseguindo ter solucionado o problema, é ainda necessário o utilizador simular uma entrada, o que não é desejável. Para evitar esse problema poder-se-ia adicionar no ambiente gráfico a ativação da saída de um dos robôs no arranque, provocando o início do movimento do outro robô. No entanto essa não é a abordagem aconselhada, sendo preferível editar diretamente o código RAPID, como mostra a secção seguinte.

10

Utilização Direta de Código RAPID

Neste momento é já capaz de criar uma simulação completa com vários robôs/controladores, mas considerando um único fio de execução, pré-programado pelo utilizador graficamente. Como será de esperar, nem sempre é desejável ou sequer possível que assim seja, sendo útil em determinadas situações ter sistemas com execução mais complexas. Estas sequências de operação, implementados diretamente em código, podem ser baseados em variáveis internas ou nos valores das entradas/saídas do robô. No caso particular dos robôs da ABB, a linguagem utilizada denominase de linguagem RAPID. No menu de ajuda do RobotStudio encontra uma ligação para RAPID  RAPID Instructions, Functions and Data types, onde encontra uma descrição de todas as funções que podem ser utilizadas em linguagem RAPID. Nesta secção terá oportunidade de interagir diretamente com o código RAPID e ficar a conhecer as principais funções deste. Para informação mais detalhada dessas e outras funções deverá consultar a ajuda RAPID indicada acima. Com os próximos passos pretende-se perceber como é feito o acesso ao código RAPID. O código será ainda alterado para que o robô esteja a operar continuamente, sem que para tal seja necessário alterar a configuração da simulação ou forçar manualmente uma entrada do robô. 1. Abra o ambiente criado na secção anterior, caso não esteja aberto; 2. Vá a Simulation  Simulation Setup e confirme que a opção Single Cycle está selecionada para ambos os controladores; 3. No I/O Simulator verifique que todas as entradas e saídas que foram adicionadas a ambos os controladores estão a 0. 4. Arranque a simulação, situação em que os robôs deverão ficar parados à espera da entrada digital a 1, como mostra a Figura 94; 2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

37/45

5. Clique no menu RAPID, surgindo o ambiente ilustrado na Figura 94; 6. Selecione o menu Controller e faça duplo clique em IRB1600_6kg_1.2m_1  RAPID  T_ROB1  Module1, surgindo o programa em código RAPID associado ao módulo Module1 do controlador (ver Figura 95);

Figura 94 – Acesso ao menu RAPID.

Figura 95 – Código RAPID.

7. Observando o novo separador T_ROB1/Module1, pode confirmar que já existe um programa no controlador. Esse código existe no controlador devido à sincronização efetuada anteriormente. Todos os caminhos que foram selecionados, bem como as posturas utilizadas por esses caminhos, foram adicionados ao código RAPID. Pode ainda verificar a instrução de código atualmente a ser executada, marcada por uma seta amarela, e a instrução atual de movimento (entretanto já concluída), marcada por um pequeno robô. Como se pode confirmar, o robô está à espera da ativação duma entrada. Verifique que o mesmo se passa para o outro robô; Um programa em RAPID pode ser separado em vários módulos, correspondendo cada módulo a um ficheiro, tal como acontece, por exemplo, em linguagem C. Aqui usar-se-á sempre apenas um módulo. O módulo gerado automaticamente pelo RobotStudio com base nas posturas e caminhos criados tem tipicamente atribuído o nome Module1. A linha de código MODULE Module1 no início do ficheiro identifica isso mesmo, isto é, o início do módulo denominado Module1. Pode igualmente verificar que o módulo é terminado com a instrução ENDMODULE. Imediatamente após o início do módulo encontra a definição das posturas definidas no ambiente gráfico do RobotStudio, sendo estas constantes (CONST) do tipo robtarget. Estes valores não deverão ser editados diretamente em código. De seguida encontra procedimentos (funções), cujo início e fim estão identificados pelas instruções PROC função() e ENDPROC, respetivamente. Estes procedimentos são o equivalente às funções em linguagem C, podendo também ter argumentos. A função main, tal como em linguagem C, corresponde à função principal, sendo esta a função chamada quando o código arranca. Quando esta função terminar o programa termina a sua execução. Neste momento esta função não existe, pois não foi ainda definida, dado que foi definida a função Path_Part_surf como sendo a função de arranque (caso nada seja feito, por omissão a função main é a função principal, de arranque). 8. No código gerado pode confirmar que existem uma função, Path_Part_surf(), a qual corresponde exatamente aos caminhos criados anteriormente no ambiente gráfico; 9. Para resolver o problema de ser necessário ativar uma entrada para o sistema arrancar, basta agora adicionar essa instrução diretamente no código RAPID. De facto, para ter maiores garantias no arranque, devem sempre confirmar o estado inicial do sistema e 2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

38/45

garantir as condições iniciais, tal como em automação. Assim, adicione a função main() de modo a que fique como mostra a Figura 96 e a Figura 97, para os robôs IRB1600_6kg_1.2m e IRB1600_6kg_1.2m_1, respetivamente. Note que ao começar a escrever uma dada instrução de código, automaticamente lhe é sugerido como terminar a mesma. Este auxílio à programação é tipo de qualquer editor de código recente, sendo bastante útil para evitar erros. As instruções iniciadas com “!” são comentários e deverão ser incluídos no código sempre que necessários. Deverá também utiliza-los na documentação das funções. De salientar ainda que o ciclo WHILE TRUE DO, que termina na instrução ENDWHILE, serve para ter um ciclo de funcionamento infinito, e que as várias variáveis utilizadas foram definidas no início do programa. Pode, no entanto, definir variáveis em cada função, tal como acontece noutras linguagens de programação. As funções serão explicadas em mais pormenor mais à frente neste tutorial. PROC main() ! Ir para a postura base MoveJ Home,v1000,z50,MyTool\WObj:=wobj0; ! Garantir condições iniciais SetDO doOperationEnded,0; WaitDI diStartOperation,0; ! Entrar no ciclo infinito WHILE TRUE DO Path_Part_surf; ENDWHILE ENDPROC

Figura 96 – Função main() para o robô IRB1600_6kg_1.2m. PROC main() ! Ir para a postura base MoveJ Home,v1000,z50,MyTool\WObj:=wobj0; ! Garantir condições iniciais SetDO doOperationEnded,0; WaitDI diStartOperation,0; ! Dar ordem de arranque ao outro robô SetDO doOperationEnded,1; ! Entrar no ciclo infinito WHILE TRUE DO Path_Part_surf; ENDWHILE ENDPROC

Figura 97 – Função main()para o robô IRB1600_6kg_1.2m_1.

10. Apague a instrução inicial para movimentar para a postura Home da função Path_Part_surf em ambos os controladores, dado que essa instrução foi incluída na função main; 11. Neste momento efetuou as alterações propostas, mas as mesmas não foram ainda aplicadas ao controlador. Para tal deverá clicar em RAPID  Apply (All Changes), atualizando assim o código em ambos os controladores; 12. Aceda a Simulation  Simulation Setup e altere em T_ROB1, para ambos os controladores, a opção Entry point para main. Desta forma os controladores volta ao funcionamento padrão, isto é, em que a função main é a função principal, com a qual o controlador inicia. Clique em Close; 13. Corra novamente a simulação clicando em Simulation  Play e verifique que corre como esperado. Confirme que os robôs executam os caminhos ao longo das arestas, mas um de cada vez; As alterações agora efetuadas ocorreram diretamente no código RAPID e foram aplicadas ao controlador, no entanto não estão disponíveis ainda no ambiente de trabalho gráfico. 2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

39/45

14. Aceda ao menu Home e abra o separador Paths&Targets. Verificando os caminhos, pode confirmar que não contêm as alterações efetuadas diretamente no RAPID. Para sincronizar a informação no ambiente gráfico com a informação no controlador (virtual), escolha um dos controladores e aceda a RAPID  Synchronize  Synchronize to Station…. Na janela que aparece escolha apenas o que foi modificado, isto é, o caminho que alterou e a função main, tal como mostra a Figura 99, e clique em OK. Repita o processo para o outro controlador;

Figura 99 – Aplicação das alterações introduzidas no código.

15. Aceda novamente ao separador Paths&Targets do menu Home e confirme que os caminhos estão coerentes com a informação submetida diretamente em código RAPID (ver Figura 98); Como pode constatar pelo exemplo anterior, no caso Figura 98 – Resultado da particular da função main(), a informação disponibilizada no sincronização. ambiente gráfico (ver Figura 98) não corresponde exatamente à informação introduzida anteriormente no código RAPID (ver Figura 96) em termos visuais. Tal deve-se ao facto de no ambiente gráfico apenas poder incluir instruções de movimento e ações, não podendo incluir instruções como declaração de variáveis ou lógica de programação (ciclos, testes de valor, etc.). Por esta razão é importante que apenas use o ambiente gráfico para criar posturas e caminhos, deixando o resto da programação para o código RAPID, tendo atenção à informação que sincroniza entre ambos. A conjugação da criação de caminhos no ambiente gráfico, com a edição direta do código RAPID, permite criar simulações mais complexas, aliando uma fácil e prática criação de caminhos com a utilização de um conjunto vasto de instruções disponibilizadas pela linguagem RAPID, à semelhança de uma outra qualquer linguagem de programação (por exemplo, C). É assim possível criar execuções alternativas com base em, por exemplo, informação de sensores ou ordens externas.

11

Principais Instruções RAPID

Tal como indicado anteriormente, em RobotStudio Help  RAPID Instructions, Functions and Data types encontra a descrição detalhada de todas as funções RAPID existentes. Em RobotStudio Help  Additional Resources  RAPID Overview encontra uma introdução ao RAPID. Nesta secção procura-se documentar as principais instruções, devendo consultar os documentos acima para mais detalhes.

2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

40/45

11.1 Variáveis e Constantes A linguagem RAPID inclui os seguintes quatro tipos de dados fundamentais: num – tipo de dado numérico, inteiro ou decimal; dnum – tipo de dado numérico, inteiro ou decimal, com o dobro da precisão de num; string – cadeia de carateres (texto); bool – tipo booleano, podendo ser FALSE ou TRUE EXEMPLO: Declarar variáveis do tipo num e atribuir valores VAR num length; VAR dnum pi; VAR string name; VAR bool finished length := 10; pi := 3.141592653589793; name := "John" finished := TRUE;

11.1.1

Variáveis persistentes

A linguagem RAPID permite criar variáveis persistentes. Estas variáveis mantêm o seu valor mesmo após terminar e reiniciar o programa. Estas devem ter um valor atribuído inicialmente. EXEMPLO: Declarar uma variável persistente PERS num nbr := 1;

11.1.2

Constantes

Constantes são variáveis cujo valor é atribuído na declaração e não pode ser alterado posteriormente. EXEMPLO: Declaração de constantes CONST num gravity := 9.81; CONST string greating := "Hello"

11.1.3

Operadores

Tal como em C, estão disponíveis operadores numéricos e relacionais. Os operadores numéricos básicos são os mesmos da linguagem C, isto é: +: adição; -: subtração; *: multiplicação; /: divisão. Relativamente aos operadores relacionais, são em tudo semelhantes aos da linguagem C: =: comparação de igualdade; : comparador maior; =: comparador maior ou igual; : comparador de não igualdade; É também possível utilizar o operador “+” para concatenação de cadeias de caracteres

2016/2017 – 2º Semestre, EEC, RVC

Hugo Costelha e Carlos Simplício

41/45

EXEMPLO: Concatenação de cadeias de caractéres VAR string firstname := "John"; VAR string lastname := "Smith"; VAR string fullname; fullname := firstname + " " + lastname; A variável fullname contém no final o texto "John Smith".

11.2 Controlo de Fluxo A linguagem RAPID inclui as principais instruções de controlado de fluxo, como é o caso das instruções IF/ELSE, TEST e ciclos FOR e WHILE. Encontra abaixo alguns exemplos da aplicação destas instruções. EXEMPLO: Utilização da instrução IF/ELSE VAR num time := 38.7; IF time < 40 THEN TPWrite "Part produced at fast rate"; ELSEIF time < 60 THEN TPWrite "Part produced at average rate"; ELSE TPWrite "Part produced at slow rate"; ENDIF NOTA: A função TPWrite é utilizada para escrever texto na consola do robô. EXEMPLO: Utilização de um ciclo FOR FOR i FROM 1 TO 5 DO TPWrite "Hello"; ENDFOR EXEMPLO: Utilização de um ciclo WHILE VAR num sum := 0; VAR num i := 0; WHILE sum
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF