Linguagens de programação PDF

Title Linguagens de programação
Author Paolo Machado
Course Programação de Computadores
Institution Centro Universitário do Norte
Pages 126
File Size 1.4 MB
File Type PDF
Total Downloads 86
Total Views 140

Summary

As notas tiradas nas aulas sobre tópicos relevantes no assunto de: linguagens de programação...


Description

CENTRO UNIVERSITÁRIO DO NORTE ESCOLA DE ARQUITETURA, ENGENHARIA E TI

PROGRAMAÇÃO

NOTAS DE AULA

ALUNO: Paolo Machado

PROFESSOR: Jose Maria Plum

Linguagens de programação de robôs industriais. Do controle numérico às estruturas robóticas Há muito tempo, alguns anos atrás, eu estava curioso para obter informações sobre a programação de robôs industriais. Pesquisei na Internet e fiquei surpreso com a pouca informação elaborada que encontrei; poucos textos repetidos várias vezes. Alguns trabalhos de compilação foram publicados nos anos 80, mas nada desse tipo depois.

• uma taxonomia ou classificação de linguagens de programação de robôs. • uma descrição de cada um dos idiomas • um local temporário dos idiomas, para que você possa construir uma linha do tempo dos idiomas. E tudo isso com uma perspectiva histórica, desde as primeiras línguas na segunda metade da década de 1950 até os dias atuais.

Outra idéia-chave neste trabalho foi que praticamente tudo o que foi refletido no documento foi extraído das fontes encontradas; para que o texto subseqüente seja composto pela maior parte dos textos devidamente pesquisados, encontrados, em alguns casos traduzidos, mesclados, ordenados, ... exceto esta introdução e o ponto II em que, como minha própria idéia, divido todo o escopo temporal em três etapas ou ciclos. E assim o projeto começou e, pouco a pouco, ano após ano, venho construindo este documento. Sobre o autor

O autor realizou estudos universitários em Ciência da Computação na Universidade Politécnica de Valência entre 1987 e 1992, obtendo um diploma de bacharel (hoje equivalente ao de Engenheiro de Ciência da Computação) em 1994, depois de ler e defender o Projeto de Graduação Final. Uso de texto O texto deste documento pode ser usado livremente, sem fins comerciais, com a única condição de citar a fonte. O autor gostará de enviar um e-mail informando o que foi usado e para que ([email protected])

Referências Todas as referências incluídas no final deste texto foram localizadas e lidas (total ou parcialmente) e algumas delas foram extraídas para este trabalho. A bibliografia não foi artificialmente "engordada". De qualquer forma, você pode ter usado parte de outro livro, documento ou página da web e esqueceu de anotá-la. Todos os livros, textos e documentos mencionados podem ser encontrados na Internet. De qualquer forma, se alguém estiver interessado em um e não conseguir encontrá-lo, poderá fornecê-lo perguntando-me em [email protected]. As referências ou bibliografia não seguem as diretrizes da ISO 690, nem qualquer estilo (Vancouver, APA, MLA, CSE, NLM, Harvard, IEEE, Chicago, etc.), mas como me pareceu e como escrevi: o trabalho, autor ou autores, instituição ou empresa ou universidade e ano. Nos casos de livros extraídos do Google Livros, adicionei o URL. Eles estão organizados em ordem alfabética do título (sem levar em conta os artigos iniciais - a, the, el, la, los, etc). Contribuições O autor apreciará qualquer contribuição para este documento: correção de erros (que certamente existem e muitos), expansão de algum texto, contribuição de novo texto, etc. Obviamente, seguindo o espírito do que já foi expresso, a fonte da qual a informação foi extraída também deve ser fornecida. As contribuições podem ser enviadas para o e-mail do autor ([email protected]) O autor publicará novas versões do texto que incluem as contribuições recebidas, bem como as suas. Na seção “contribuições”, serão explicadas as contribuições de outras pessoas, citando-as, se assim o desejarem. Nota: uma possível contribuição, se alguém estiver disposto a fazê-lo, seria padronizar toda a bibliografia com algum estilo ISO 690. Expansão futura No ponto II, dividi a história das linguagens de programação de robôs industriais em três estágios: linguagens de controle numérico, linguagens robóticas e estruturas robóticas. O restante do texto, a taxonomia de

idiomas e a coleta de informações para cada idioma em particular, concentram-se no segundo estágio, o das linguagens robóticas. Em uma versão futura, o documento será expandido para incluir uma análise do terceiro estágio, o das estruturas robóticas. Além disso, possivelmente é feita uma extensão temporal para trás, incluindo uma análise das diferentes linguagens de controle numérico. II As três etapas da programação de robôs industriais Desde o início da década de 1950, os computadores começaram a ser usados para controlar as máquinas-ferramentas até hoje, a história dos robôs industriais e sua programação evoluiu e mudou com o tempo. Em um primeiro nível de detalhe, podemos distinguir três estágios ou ciclos diferentes. II.1 Primeira etapa: linguagens CNC Esse estágio se tornaria como a pré-história das linguagens de programação robótica. Nessas linguagens, ainda não estamos falando de robôs, mas de máquinas-ferramentas, como tornos, brocas, fresadoras, polidoras etc., mas que possuem um sistema de automação, ou seja, são operadas por comandos que recebe de um sistema informatizado. É o computador que controla a posição e a velocidade dos motores que acionam os eixos da máquina. O Controle Numérico Computadorizado (CNC) surgiu no início dos anos 50 no Instituto de Tecnologia de Massachusetts (MIT), onde uma grande fresadora foi automatizada pela primeira vez. A linguagem CNC mais usada é definida nas normas 6983 da ISO (International Standardization Organization), RS274D da EIA (Electronic Industries Association) e 66024/66025 da DIN. Este padrão consiste em uma série de códigos definidos com uma letra e dois números. Por exemplo, códigos G representando movimentos ou códigos M para funções como partida, parada, troca de ferramenta, etc. Também é conhecido como código G ou código G. No entanto, surgiram outras linguagens do CNC, como 2CL, AUTOSPOT, BOSS, CAMP, FMILL, GEPLAD, MILMAP, PROMO, STEP-NC, SYMPAC ou ZAP, para dar um exemplo.

A fronteira entre a linguagem CNC e a linguagem de programação robótica não é clara e bem definida. Por exemplo, a família de linguagens APT (Ferramentas Automaticamente Programadas) é geralmente considerada como linguagens CNC na maior parte da literatura, apesar de ser uma linguagem bastante avançada, especialmente na definição de geometria (semelhante a uma linguagem CAD). Eles foram incluídos neste documento como linguagens de programação robótica. Pelo contrário, algumas das linguagens mais primitivas consideradas robóticas pela literatura vão pouco além de uma lista de posições pelas quais a máquina ou o robô deve passar. Às vezes, a diferenciação parece obedecer ao dispositivo em que o programa é executado: se é uma máquina-ferramenta (fresadora, torno etc.), é considerado um CNC, e se é um braço com n eixos,

II.2 Segunda etapa: linguagens de programação de robôs As linguagens de programação de robôs começaram a se desenvolver no final dos anos 50 e início dos anos 60. Exceto pelas linguagens da família APT1, que, como indicado, estariam em algum momento entre esse período e a anterior, a primeira linguagem de programação no nível do robô foi o MHI (Mechanical Hand Interpreter) desenvolvido no MIT em 1960 para o robô MH-1 e que dificilmente tinha primitivos para mover o robô, testar os sensores e ramificar o programa de acordo com determinadas condições. Outra das linguagens mais primitivas é o WAVE, desenvolvido em 1970 na Standford University e considerado por muitos como a primeira verdadeira linguagem de programação de robôs.

Durante quatro décadas, o desenvolvimento dessas línguas proliferou. Este documento descreve mais de 20 idiomas que surgiram nos anos 60, cerca de 30 idiomas dos anos 70, cerca de 60 idiomas dos anos 80 e outros 30 idiomas dos anos 90, além de outras 30 línguas que, sendo dessas mesmas décadas, não foi possível datar o ano de início. A partir do ano 2000, a geração de novas linguagens de programação de robôs é drasticamente reduzida, entrando no terceiro ciclo de tempo. Durante essas décadas, os idiomas foram projetados por universidades e institutos de pesquisa e por empresas do setor de robótica. O primeiro idioma comercial foi o SIGLA (Sigma Language), desenvolvido por Olivetti em 1974.

Logicamente, ao longo desse tempo, as línguas evoluíram. No começo, eles eram basicamente uma lista de pontos, coordenadas, através das quais o braço robótico passa. Pouco a pouco, funcionalidades são incorporadas para controlar o fluxo do programa (loops, ramificações etc.), para receber informações de sensores e visão, para tomar decisões, para emitir ordens para diferentes efetores do robô e para sincronizar a ação do vários braços ou robôs. Em grande parte, a evolução das linguagens foi uma consequência da evolução dos robôs: os robôs deixaram de ser braços simples e as linguagens incorporavam mecanismos para lidar com as novas funcionalidades que os robôs possibilitavam, como sensorização, visão, robôs móveis etc.

Outra linha de evolução das linguagens de programação de robôs foi a de todas as linguagens de programação, o marco mais notável foi a introdução da programação estruturada no final da década de 1970. A definição de estruturas de dados é permitida com esse paradigma. e controle mais complexo, transformações de coordenadas etc. Além disso, o entendimento do programa aumenta, o tempo de edição é reduzido e as ações voltadas para a realização de tarefas são simplificadas. Ao contrário do que aconteceu com a programação estruturada, a chegada do paradigma orientado a objetos no início dos anos 90 teve pouco impacto (se não zero) nas linguagens de programação robótica. Um fato notável é a longa duração de idiomas, especialmente aqueles desenvolvidos por empresas fabricantes de robôs. Assim, os robôs da ABB continuam a usar a linguagem RAPID que se originou em 1994; Os robôs da Adept e da Stäubli usam a linguagem V + de 1989. Da mesma forma, os da Mitsubishi com MBA (Melfa Basic) ou os da Kuka com KRL. Os desenvolvedores estão emitindo novas versões dos idiomas para atualizálos, mas eles continuam sendo usados. Por exemplo, o SPEL da Seiko-Epson (Suwa seiko Production Equipment Language) teve sua primeira versão em 1984 e, trinta anos depois, em 2014, a versão 7.1 foi publicada. II.3 Terceiro Estágio: Estruturas Robóticas

A partir do ano 2000, a programação no campo robótico vive a mesma situação que em outras áreas: novas linguagens de programação não são mais publicadas e “frameworks”, plataformas ou pacotes de software para o desenvolvimento de programas para robôs proliferam. . Essas estruturas geralmente permitem diferentes linguagens de programação, fornecem abstração para diferentes robôs, fornecem ambientes de desenvolvimento e ambientes de simulação, bibliotecas e componentes, etc. Certamente os mais conhecidos são OROCOS (Open Robot Control Software) e ROS (Robot Operating System), mas existem muitos mais, como Player & Stage, Carmen, Microsoft Robotics Studio, Robot Framework, Robot Framework, RoboComp, Gobot, etc. II.4 Exclusões

Na análise realizada neste documento, não consideramos certos sistemas que não são linguagens de programação de robôs, mas sim sistemas de simulação, geralmente gráficos, do comportamento do robô, como: • GRASP (Pacote de simulações de aplicativos de robôs gráficos), do sistema BYG (não confunda com a linguagem de programação do robô com a mesma sigla GRASP, programa geral de simulação de braços de robôs) • IGRIP (Programa de instruções para robôs gráficos interativos), desenvolvido pela Universidade de Cornell

• GRIPPS, desenvolvido pela Universidade Tecnológica de Michigan • LOCAL, ANIMATE, COMANDO, AJUSTE e CONSTRUÇÃO, desenvolvido pela McDonell Douglas Automation • ROBOT-SIM da GE / Calma. • AutoBots, da Autosimulations Inc. (Utah); • CATIA (Gráficos interativos tridimensionais assistidos por computador), da Dassault Systems (França) • KARMA (Sistema de manipulação de robôs baseado no conhecimento) da Universidade da Califórnia • University of Minnesota MnCell • SRI RCode • RoboCam da Robotics Research and Development Ca. • Robot-Sim, da General Electrics Calma Co. • RoboTeach da General Motors • RoboGraphics, da ComputerVision Corporation • TIPS / GS (TIPS / Geometris Simulator), da Associação de Pesquisa TIPS Também não levaram em conta as linguagens de programação para robôs exclusivos para outras áreas da robótica, exceto a industrial, como as linguagens dedicadas aos robôs educacionais que proliferaram nos últimos anos. III Classificação de linguagens de programação de robôs Diferentes tipos de classificação de linguagens de programação de robôs podem ser feitas, levando em consideração diferentes fatores. III.1 Taxonomia geral. A taxonomia ou classificação de idiomas mais generalizada na literatura existente sobre o assunto é a seguinte: 1. Programação por gestos ponto a ponto, programação de ensino ou programação guiada 1.1. Orientação passiva 1.1.1. Orientação passiva direta 1.1.2. Orientação passiva sobre manequins 1.2. Orientação ativa 1.2.1. Orientação básica 1.2.2. Orientação alargada 2. Programação textual

2.1. Programação textual explícita 2.1.1. Programação textual explícita ao nível dos movimentos elementares 2.1.2. Programação textual estruturada explícita 2.2. Programação textual específica 2.2.1. Programação textual específica no nível da tarefa 2.2.2. Programação textual específica a nível objetivo III.1.1 Programação de gestos ponto a ponto, programação de ensino ou programação guiada A programação é feita online, ou seja, com o robô "no local". Não requer a gravação de um programa, mas é baseado no ensino direto da máquina pelo usuário. O método é semelhante às regras de operação de um gravador, pois possuem instruções semelhantes: PLAY (reprodução), RECORD (registro), FF (avanço rápido), FR (retrocesso), PAUSA, PARADA, etc. Além disso, você pode ter instruções auxiliares, como INSERIR (inserir um ponto ou uma operação de trabalho) e DELETE (excluir). A programação é realizada ponto a ponto, posicionando o elemento terminal do robô nos pontos precisos para executar a tarefa. Esses pontos são armazenados no sistema de controle para que os movimentos possam ser repetidos posteriormente. Os movimentos podem ocorrer em sistemas de coordenadas cartesianas, cilíndricas ou de união, possibilitando inserir e excluir as instruções desejadas. Também é possível implementar funções relacionadas a sensores externos, bem como revisar o programa passo a passo, para frente e para trás. O programa gerado pode ser armazenado para que você não precise repetir o ensino no futuro. Outra maneira pela qual esses idiomas foram chamados é "idiomas de nível servo". Um programa consiste em uma série de terminais, velocidades e comandos de entrada / saída. Cada ponto é representado como um grupo de coordenadas do eixo, portanto, um robô de 6 eixos representa uma posição com 6 valores. Os programas são específicos para o robô. Os comandos de entrada / saída geralmente consistem em ler o estado de uma chave (entrada) ou acionar um relé (saída), após a execução de um movimento. O caminho entre os pontos finais é gerado pelo controlador do robô, calculando uma série de pontos intermediários entre eles. O servocontrole

então move cada eixo para ir para a posição de destino, que será o primeiro ponto intermediário. Uma vez alcançado, o robô irá para o próximo ponto intermediário, Eles também são conhecidos como linguagens de programação guiadas, porque consiste em fazer o robô, ou um modelo dele, executar a tarefa, registrando automaticamente as configurações adotadas para sua repetição subsequente. Soluções diferentes são usadas para guiar o robô até os pontos desejados: III.1.1.1 Orientação passiva: se os atuadores do robô estiverem desconectados e o programador fornecer diretamente a energia para mover o robô, isso será chamado de orientação passiva. Por sua vez, pode ser de dois tipos: III.1.1.1.1 Orientação direta passiva: Nesse caso, o programador pode pegar o final do robô e levá-lo aos pontos desejados pelos caminhos mais adequados. A unidade de controle do robô registra automaticamente o sinal dos sensores de posição da junta em todos os pontos percorridos. Um exemplo é o caso dos robôs de pintura da empresa Gaiotto, que foram programados com esse procedimento. III.1.1.1.2 Orientação passiva do manequim: A dificuldade física de mover toda a estrutura do robô é resolvida através deste procedimento. Nesse caso, um dobro do robô está disponível, enquanto o robô permanece offline. O duplo tem uma configuração idêntica à do robô real, mas é muito mais leve e fácil de mover. A programação é realizada com o dobro da mão, enquanto a unidade de controle coleta e armazena com certa frequência os valores obtidos pelos sensores de posição das articulações, para posterior repetição pelo robô. Um exemplo é o caso de robôs de pintura fabricados pela Nordson, que são programados usando este procedimento. III.1.1.2 Orientação ativa: Essa possibilidade permite que você use o próprio sistema de acionamento do robô, controlado a partir de um teclado ou manípulo de controle (conhecido como joystick), para que ele mova as articulações. Exemplos desse tipo são encontrados nos robôs ABB (ARLA) ou em Cincinnati Milacron (T3). Considerando o poder do sistema, falamos sobre orientação básica e orientação estendida.

III.1.1.2.1 Orientação básica: O robô é guiado pelos pontos pelos quais você deseja que ele passe durante a fase de execução automática do programa. Durante isso, a unidade de controle interpola esses pontos de acordo com certas trajetórias. Muitas vezes, não é possível incluir nenhum tipo de estrutura de controle no programa; portanto, os pontos são sempre percorridos seqüencialmente, na mesma ordem em que foram programados. Um exemplo desse tipo de programação é o usado em quase todos os robôs de pintura, onde a unidade de controle automaticamente coleta os pontos percorridos pelo robô com uma frequência muito alta. III.1.1.2.2 Orientação estendida: Permite especificar, juntamente com os pontos pelos quais o robô deve passar, dados relacionados à velocidade, tipo de trajetória, precisão com a qual você deseja alcançar os pontos, controle do fluxo do programa, atenção para entradas / saídas binárias, etc. Nesse caso, o método guiado usado é o do teclado ou do joystick. Orientações estendidas aumentam a potência do sistema de programação. Os métodos guiados são muito úteis e têm vantagens, por serem fáceis de aprender e exigir um espaço de memória relativamente pequeno para armazenar as informações. Eles podem ser programados por operadores familiarizados com o aplicativo, mas sem serem programadores de computador. Também é relativamente fácil programar um caminho em uma situação geométrica complexa com muitos obstáculos. No entanto, também possui desvantagens, como a necessidade de usar o próprio robô e seu ambiente para executar a programação, o que força o robô a ser retirado da linha de produção e interrompê-lo, tornando o sistema improdutivo durante a programação. Há também a falta de documentação para o programa e a dificuldade de fazer modificações nele. Para executar novas tarefas, a programação não pode contar com procedimentos de uso geral desenvolvidos anteriormente, como bibliotecas de sub-rotinas. O desenvolvimento modular de programas não é possível. A programação pode ser perigosa, pois o operador está próximo ao robô durante o processo de aprendizado e depuração do programa. Finalmente, a programação da aprendizagem pode não ser adequada em um ambiente altamente automatizado e flexível. Essas linguagens não são linguagens no sentido de "linguagens de computador", mas são meios de programação no nível do servo. Algumas das línguas orientadoras são: T3, Funky e AR-SMART.

III.1.2 Programação textual O programa é constituído por um texto de instruções ou frases, cuja preparação não requer a intervenção do robô; isto é, são realizadas «offline». Com esse tipo de programação, o operador praticamente não define as ações do braço manipulado, mas elas são calculadas, no programa, usando as instruções textuais apropriadas. Em uma aplicação como a montagem de peças, na qual é necessária alta precisão, as posições selecionadas pela programação gestual não são suficientes e devem ser ...


Similar Free PDFs