1 PROJETO DE UMA LINGUAGEM PARA PROGRAMAÇÃO DE ROBÔS MANIPULADORES Project of a programming language for robots manipulators Moisés Ribeiro dos SANTOS JUNIOR Faculdade de Jaguariúna André MENDELECK (Orientador) Faculdade de Jaguariúna Resumo: Neste artigo apresentamos uma proposta de linguagem para programação de movimentos de um robô manipulador com três graus de liberdade. A linguagem tem características textuais em português e foi baseada na estrutura física de um robô manipulador construído por alunos do curso de Engenharia de Controle e Automação da FAJ. Palavras-chave: Compiladores; Linguagem de Programação; Comandos. Abstract: This article presents a proposal for a programming language for the motion for a robot manipulator with three degrees of freedom. The language has textual characteristics in Portuguese and was based on the physical structure of a manipulator robot built by students of Control Engineering and Automation of the FAJ. Key-words: Compilers; programming language ; Commands.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
1
PROJETO DE UMA LINGUAGEM PARA PROGRAMAÇÃO
DE ROBÔS MANIPULADORES
Project of a programming language for robots manipulators
Moisés Ribeiro dos SANTOS JUNIOR
Faculdade de Jaguariúna
André MENDELECK (Orientador)
Faculdade de Jaguariúna
Resumo: Neste artigo apresentamos uma proposta de linguagem para programação
de movimentos de um robô manipulador com três graus de liberdade. A linguagem
tem características textuais em português e foi baseada na estrutura física de um
robô manipulador construído por alunos do curso de Engenharia de Controle e
Automação da FAJ.
Palavras-chave: Compiladores; Linguagem de Programação; Comandos.
Abstract: This article presents a proposal for a programming language for the
motion for a robot manipulator with three degrees of freedom. The language has
textual characteristics in Portuguese and was based on the physical structure of a
manipulator robot built by students of Control Engineering and Automation of the
FAJ.
Key-words: Compilers; programming language ; Commands.
2
1. INTRODUÇÃO
A programação dos movimentos de um robô exige do desenvolvedor um
conjunto de competências e habilidades intrínsecas de várias áreas do
conhecimento. A complexidade dos movimentos solicita a utilização de ferramentas
computacionais que auxiliem na implementação das tarefas. A forma tradicional para
a programação de robôs manipuladores consiste na utilização de linguagens
textuais, tais como AL, AML entre outras.
A complexidade de movimentos e ações, principalmente em função do número
de graus de liberdade do mecanismo e da tarefa a ser implementada, faz-se
necessário a utilização de ferramentas computacionais amigáveis que auxiliem os
desenvolvedores de aplicações.
Nesse cenário, observamos que existe a necessidade de uma ferramenta de
auxílio em relação à programação dos movimentos do robô, como por exemplo, uma
linguagem de programação simplificada baseada em comandos textuais ou uma
IHM/IHC Gráfica.
Tomando por base um robô manipulador construído por alunos do curso de
Engenharia de Controle e Automação da FAJ foi possível verificar a necessidade da
criação de uma linguagem de programação que facilitasse o processo de controle de
movimentos do robô, de tal forma a facilitar o desenvolvimento de aplicações. Assim,
propomos uma linguagem de programação textual com comandos em língua
portuguesa formal, definidos em um ambiente de alto nível, permitindo controle dos
movimentos a serem executados pelos robôs.
3
2. TIPOS DE LINGUAGEM DE PROGRAMAÇÃO DE ROBÔS
Existem diversas linguagens de programação desenvolvidas para o controle de
hardwares mecânicos. Devido ao grande avanço da robótica, cresce também a
necessidade de melhores ferramentas para o desenvolvimento de aplicações para
robôs manipuladores.
Devido à complexidade de movimentos e ações passíveis de implementação
nos robôs, faz-se necessário o desenvolvimento de ferramentas computacionais
amigáveis que auxiliem os desenvolvedores de aplicações.
Nesse cenário grandes empresas vêm procurando aprimorar o controle dos
robôs através de comandos que são definidos em linguagens específicas que
proporcionam o acionamento das funções que um hardware mecânico pode
executar, sem que haja um embasamento mais aprofundado em estudos de
estruturas de controle por parte de seu programador.
Abaixo pode ser observado as diversas linguagens de programação para robôs
existentes no mercado.
Figura 1 – Extraída da Revista Mecatrônica Atual de 11/02/2009
4
3. ESTRUTURA DA LINGUAGEM PARA PROGRAMAÇÃO DE ROBÔS
MANIPULADORES E SUAS CARACTERISTICAS
A linguagem proposta está centrada em diretivas verbal no infinitivo, onde os
comandos iniciam por um verbo, associando a uma ação do robô. Na sequência é
esperado que seja digitado pelo programador um segundo comando, definindo para
qual servo-motor destina-se a ação imposta pelo verbo. E enfim é esperado o grau
intensidade com que esse comando agirá sobre os movimentos do robô, definidos
em números naturais positivos.
Por exemplo, LEVANTAR ANTEBRACO 10. Nesta estrutura textual temos os
caracteres alfanuméricos de um código da linguagem e o resultado esperado é que
haja um movimento de deslocamento vertical para cima do antebraço do robô, ou
seja, da posição em que ele se encontra para a posição definida no comando.
A linguagem tem por características comandos em português, escritos de
forma seqüencial baseados na estrutura física do robô manipulador que, com seus 3
graus de movimento interpreta a função de um braço humano. Com a linguagem
pretende-se de forma otimizada fornecer ao desenvolvedor, mais uma ferramenta
para auxilio no controle de um robô, através de comandos que possa fazer com que
suas rotinas sejam executadas.
Essa linguagem é compilável, ou seja, necessitará de um compilador que
compile seus códigos e os traduza de tal forma, que os comandos originais em
português sejam recodificados em comando específico para acionamento e controle
dos atuadores (servo-motores) instalados no mecanismo físico. Esse processo de
tradução consiste em traduzir o programa-fonte e para um programa-alvo especifico
para o robô.
A seguir é apresentada a lista de comandos que foram elaborados baseando
no robô manipulador construídos por alunos do Curso de Engenharia de Controle e
Automação da FAJ.
5
VERBO: É o primeiro comando a ser digitado pelo programador sendo ele,
responsável pela ação dos movimentos do robô manipulador. (ABAIXAR, ABRIR,
FECHAR, LEVANTAR, GIRAR).
SUBSTANTIVO: É o segundo comando a ser digitado pelo programador
responsável pelos motores do robô manipulador. (ANTEBRACO, BASE, GARRA
PUNHO)
NUMERAL: E o terceiro comando a ser digitado pelo programador sendo
responsável pelo grau de intensidade dos movimentos do robô. (10, 20, 30, 40,
50,...)
Cada comando da linguagem está associado a controlar os servos-motores
que tenham relação com o que está sendo solicitado pelo programador. Por
exemplo: O programador digita um comando que pede para que o robô abaixe a sua
base em um determinado grau de intensidade. A solicitação não pode ser atendida
porque o comando que está associado à base do robô é o comando girar, ou seja, o
robô não foi desenvolvido para abaixar sua base e sim para gira - lá. Caso ocorra do
programador solicitar esse comando lhe será informado que essa operação não
compete ao servo-motor especificado.
Os macros comandos da linguagem foram definidos baseados em cada
movimento que o robô manipulador pode executar.
ABAIXAR: Comando associado ao servo-motor ANTEBRACO e PUNHO.
Esse comando permite que os motores associados façam um deslocamento vertical
para baixo.
ABRIR: Comando associado ao servo-motor GARRA. Esse comando permite
que o motor associado faça um movimento de abertura da garra.
6
FECHAR: Comando associado ao servo-motor GARRA. Esse comando
permite que o motor associado faça um movimento de fechamento da garra.
GIRAR: Comando associado ao servo-motor BASE. Esse comando permite
que o motor associado faça um movimento de giro da base.
LEVANTAR: Comando associado ao servo-motor ANTEBRACO e PUNHO.
Esse comando permite que os motores associados façam um deslocamento vertical
para baixo.
Os comandos devem ser escritos de forma alternada, ou seja, um comando de
cada vez. Sendo assim o programador terá que verificar o comando que esteja
precisando para o momento e com qual motor irá trabalhar. Após essa análise o
programador poderá digitar o comando para que o robô execute a tarefa.
Nessa estrutura definimos as regras da seguinte forma:
1. Ação dos movimentos: Esse será sempre o primeiro comando a ser
digitado, ou seja, nele o programador definirá qual ação deseja
7
Figura 2 – Esquema de um robô manipulador
Base
Braço
Articulação
Punho
Articulação
Articulação
Garra
8
4. COMO A LINGUAGEM DE PROGRAMAÇÃO DE ROBÔS
MANIPULADORES PODERÁ SER USADA
A linguagem está sendo proposta baseada no robô manipulador que consta
na figura 2 deste artigo. O robô é composto por uma base e quatro motores.
O ambiente de desenvolvimento de aplicações e simulação estará integrado a
uma interface gráfica como apresentado na figura 3, para a execução dos comandos
digitados pelo programador. Abaixo segue a descrição detalhada das funções de
cada motor.
Comandos associados os atuadores-motores do robô manipulador:
BASE = Base do robô (Comando associado ao servo-motor 1 )
ANTEBRACO = Antebraço do robô (Comando associado ao servo-motor 2 )
PUNHO = Punho do robô (Comando associado ao servo-motor 3 )
GARRA = Garra do robô (Comando associado ao servo-motor 4 )
Comandos associados aos Movimentos dos links (estruturas do robô):
M1 = GIRAR
M2 = LEVANTAR; ABAIXAR
M3 = LEVANTAR; ABAIXAR
M4 = ABRIR; FECHAR
9
Estes comandos podem ser associados produzindo uma sequência de
movimentos. A seguir apresentamos alguns exemplos de como esses comandos
poderão ser atribuídos ao robô manipulador através de digitações de códigos
propostos pela linguagem:
GIRAR BASE 30
Obs.: Faz com que a base do robô gire em 30 graus.
ABAIXAR ANTEBRACO 20
Obs.: Faz com que o braço do robô abaixe em 20 graus.
LEVANTAR ANTEBRACO 10
Obs.: Faz com que o braço do robô levante em 10 graus.
ABAIXAR PUNHO 40
Obs.: Faz com que o punho do robô abaixe em 40 graus.
LEVANTAR PUNHO 30
Obs.: Faz com que o punho do robô levante em 30 graus.
ABRIR GARRA 50
Obs.: Faz com que a garra do robô abra em 50 graus
FECHAR GARRA 40
Obs.: Faz com que a garra do robô feche em 40 graus
10
A figura abaixo refere-ser ao robô manipulador em seu estado inicial. Após
todas as operações em que o robô foi incumbido ele volta ao seu estado de origem e
está pronto para receber novas instruções de seu programador.
Figura 3 - Robô em seu estado inicial
11
A figura abaixo simula que o robô tenha recebido um comando para girar sua
base. Notamos que houve um deslocamento horizontal à esquerda (olhando o robô
de frente). Obs. Essa simulação foi feita manualmente e o comando associado
refere-se a base do robô.
Figura 4 – Robô após receber comando
12
5. IMPLEMENTAÇÃO DA LINGUAGEM PARA PROGRAMAÇÃO DE ROBÔS
MANIPULADORES PROPOSTA
Utilizando a linguagem de programação C++ foi desenvolvido um protótipo
de um compilador. Em um estudo sobre compiladores estabelecemos em 3 etapas a
criação de comandos para uma linguagem de alto nível ou seja, uma linguagem de
aproximação maior entre o hardware mecânico e o programador.
Na primeira etapa foi estudado sobre a análise léxica, ou seja, onde são
verificadas as sentenças de caracteres digitados pelo programador. Aqui definimos
através de algoritmos a verificação e validação dos caracteres de entradas
denominados em tokens de entrada. Foi feito a separação desses tokens e depois a
validação dos mesmos. Nota-se que o protótipo aceita que seja digitado quaisquer
termos porém, valida-os apenas os termos corretos de acordo com a sintaxe da
linguagem.
Após essa etapa passamos para a análise sintática onde definimos as
regras e o dicionário da linguagem. As regras e o dicionário foram definidos
baseados nos movimentos do robô juntamente com o nome dado a cada servo-
motor e o grau de intensidade do movimento a ser executado. A sintaxe da
linguagem está definida em palavras do vocabulário português em que se espera em
primeiro lugar uma ação a ser atribuída a um servo-motor.
Por fim fizemos a associação dos comandos da linguagem aos seus
respectivos servos-motores, ou seja, nesse estudo análise semântica observamos
como cada motor poderia estar sendo manipulado pela sintaxe da linguagem e a
qual comando seria atribuído essa associação. Por exemplo: É aceito pelo
compilador um comando em que o programador venha solicitar em que a base do
robô abaixe ou levante. Sabendo que a base do robô tem a finalidade de girar 360°
associamos o comando girar a base do robô. Abaixo segue a figura do programa
desenvolvido neste artigo.
13
Figura 5 – Protótipo de um Compilador para linguagem de programação robótica
6. PROCEDIMENTOS PARA A ANÁLISE LEXICA
O procedimento para a realização da análise léxica no software para
verificação de sentenças é realizado, como o procedimento acima descreve,
separando as palavras dos caracteres que não são relevantes como, por exemplo,
os espaços em branco. Ou seja, quando é digitado o comando: GIRAR BASE 45 é
selecionado somente as palavras que farão sentido para o funcionamento e
validação do sistema eliminando os espaços em branco, com isso é gerada uma
lista das palavras que fica armazenada no quadro de "Entradas" à direita.
14
Esse trecho descrito acima é realizado pela função atribuída ao botão 1, que segue