23
Manual de Operação ROBOTEC Versão 1.0 Novembro 2012

Manual robotec

Embed Size (px)

Citation preview

Page 1: Manual robotec

Manual de Operação

ROBOTEC

Versão 1.0

Novembro 2012

Page 2: Manual robotec

Manual de operação ROBOTEC

ROBOTEC é um controlador do braço robótico AL5D(Lynxmotion) e editor de

algoritmos em Português. Tem por objetivo auxiliar o aprendizado do aluno iniciante

em programação através da execução e visualização das etapas de um algoritmo. Com

esse interpretador, os alunos poderão implementar seus próprios algoritmos que por sua

vez movimentam um braço robótico, e através dessa animação torna-se fácil

compreender, de forma rápida e dinâmica, como as estruturas por eles desenvolvidas se

comportam.

Com o intuito de difundir este novo sistema para a comunidade acadêmica,

informamos que o interpretador ROBOTEC encontra-se disponibilizado gratuitamente,

levando-se em consideração o leftright, ou seja, o sistema possui código aberto,

permitindo aos interessados o desenvolvimento de novas funcionalidades, desde que

mantida a filosofia inicial do mesmo e mencionadas ás autorias.

Desenvolvido por:

Antônio Carlos Tamanini;

Magno Ronan Ritzmann;

Nilson Ribeiro Modro.

Versão 1.0

Novembro 2012

Page 3: Manual robotec

Sumário 1. INTRODUÇÃO ............................................................................................. 3

2. ESTRUTURA DO PROGRAMA .................................................................... 4

3. PALAVRAS RESERVADAS ......................................................................... 5

4. PONTUAÇÃO ............................................................................................... 6

5. MAIÚSCULAS E MINÚSCULAS .................................................................. 7

6. TIPOS DE DADOS ........................................................................................ 8

7. DECLARAÇÃO E INICIALIZAÇÃO DE VARIÁVEIS .................................... 9

8. FLUXO DE SAÍDA ..................................................................................... 10

9. OPERADORES ........................................................................................... 12

10. COMANDO SE ........................................................................................ 13

11. COMANDOS DE REPETIÇÃO ................................................................. 14

12. FUNCIONALIDADES DAS ABAS ........................................................... 16

13. PRIMEIROS PASSOS .............................................................................. 22

Page 4: Manual robotec

3

1. INTRODUÇÃO

A grande dificuldade na concepção e no entendimento de algoritmos esta em

como entender as estruturas dinâmicas das possíveis execuções do algoritmo a partir de

sua estrutura estática. A linguagem definida no ROBOTEC visa auxiliar o processo de

aprendizagem do aluno iniciante em programação, integrando os aspectos dinâmicos e

estáticos em uma só ferramenta, permitindo ao aluno escrever seus programas em uma

derivação do “Portugol” - pseudo-linguagem de programação, executando e

visualizando, através da movimentação do braço robótico AL5D da Lynxmotion, o

comportamento ativo do seu algoritmo. O ROBOTEC aborda o mínimo de blocos

básicos (de dados e controle) necessários para o aprendizado de algoritmos, os quais se

encontram descritos nos demais itens deste Help.

Page 5: Manual robotec

4

2. ESTRUTURA DO PROGRAMA

Todo programa ROBOTEC inicia-se com a palavra reservada programa seguida do

nome do programa, que obedece as normas de nomenclatura de identificadores. A

seguir, são feitas as declarações de variáveis, caso existam, conforme o capítulo 7 deste

manual e, posteriormente, é iniciado o bloco de comandos com a palavra reservada

movimentos e inicio, encerrando-se o programa com a palavra-chave fim.

programa <nome do programa>;

inicio_var

<declaração de variáveis> <opcional>;

fim_var

movimentos

inicio

<sequência de comandos>

fim

Um exemplo de programa é:

programa exemplo_01;

inicio_var

inteiro:cont1=100;

inteiro:cont2=150;

string:str="valor da minha str";

fim_var

movimentos

inicio

para(cont1=100;cont1<150;cont1++) faca//comentario1

adicionar_movimento(2,cont1,75);

fim_para

fim

Page 6: Manual robotec

5

3. PALAVRAS RESERVADAS

Palavras reservadas são palavras-chave da linguagem, não podendo as mesmas

serem atribuídas a nenhum identificador (nome do programa e das variáveis definidos

pelo usuário) pertencente ao programa. Por exemplo, não podemos ter uma variável

chamada para.

As palavras-chave no ROBOTEC são:

programa, movimentos, inicio_var, fim_var, string, real, inteiro, se, entao, senao, fim_se para,

fim_para, faca, enquanto, fim_enquanto, inicio, fim, adicionar_movimento, abre_garra,

fecha_garra, gira_base, move_ombro, move_cotovelo, move_pulso, gira_pulso, imprima.

As regras para nomenclatura dos identificadores encontram-se no capitulo 7.

Page 7: Manual robotec

6

4. PONTUAÇÃO

Um sinal de pontuação é um tipo de palavra-chave abreviada. É um símbolo

composto por um ou dois caracteres, que tem um significado especial para o

interpretador. O conjunto completo de sinais da linguagem inclui os seguintes símbolos:

// ; , ( )

O sinal “;” encerra uma instrução, exceto nos casos em que a mesma possua

delimitadores, como no comando para. Esse sinal informa ao interpretador que ocorreu

o fim de uma instrução. Desse modo, podemos ter mais de uma instrução na mesma

linha ou ter uma única instrução em mais de uma linha. O símbolo // deve ser inserido

para especificar um comentário. Comentários em programas são mensagens que só

serão vistas pelo programador, sendo completamente ignoradas pelo interpretador. São

utilizados visando dar maior compreensão ao algoritmo. O símbolo // permite que

apenas uma linha seja comentada por vez, como segue o exemplo:

// Isto é um comentário

// Autor < seu nome>

programa meuPrimeiroPrograma;

inicio_var

string:helloworld="hello world"; //Declarando e inicializando a variável helloworld

fim_var

movimentos

inicio

imprima (helloworld);

fim

Os comentários podem ser inseridos em qualquer posição dentro do programa.

Page 8: Manual robotec

7

5. MAIÚSCULAS E MINÚSCULAS

A linguagem definida no ROBOTEC não é sensível a caracteres maiúsculos e

minúsculos em nenhuma parte do código. Exemplo:

Robotec, robotec, ROBOTEC, RoBoTeC.

São variáveis iguais.

String - é uma palavra reservada como string.

Devido a isto, é recomendável utilizar um padrão para a nomenclatura dos

identificadores.

Page 9: Manual robotec

8

6. TIPOS DE DADOS

O ROBOTEC fornece um conjunto de tipos de dados básico, onde cada um

deles serve a um propósito específico, definindo desse modo, o escopo dos valores que

as variáveis podem assumir no programa. Os tipos básicos implementados são:

inteiro - representando o conjunto dos números inteiros;

real - representando os pontos flutuantes;

string - representando um conjunto de um ou mais caracteres.

Page 10: Manual robotec

9

7. DECLARAÇÃO E INICIALIZAÇÃO DE VARIÁVEIS

Todas as variáveis devem ser declaradas e iniciadas antes de serem usadas. Esta

declaração deve ser feita no início do programa. As variáveis possuem uma

característica em comum que é o tipo de dado associado. Isso é, além de escolhermos

um nome apropriado para uma variável, devemos também dizer que tipo de informação

deve ser armazenada nela. Uma declaração é definida por um tipo, seguido de : e o

nome da variável daquele tipo e então o símbolo = e o valor inicial da variável e para

encerrar o ; , tal como o seguinte exemplo:

inteiro: num2 =2;

string: nome=”seu nome”;

As variáveis podem ser distribuídas entre declarações livremente. O exemplo

acima poderia ser igualmente escrito como:

Inteiro: num2=2; string: nome=”seu nome”;

Os nomes das variáveis podem ser compostos de letras e dígitos, sendo que o

primeiro caractere deve ser, obrigatoriamente, uma letra. Identificadores válidos: count,

A1,a2. Identificadores inválidos: 1A, 21 etc.

Para inicializar uma variável, ou atribuir um valor a ela, deve-se usar o símbolo

= como exemplo de atribuição num2=12; onde num2 é o nome da variável declarada e

já iniciada, = é o símbolo de atribuição e 12 é o valor a ela atribuído.

Quando interpretamos as instruções acima, os nomes das variáveis são

substituídos pelos valores associados na memória. É importante observar que o

resultado da expressão do lado direito de um comando de atribuição deve ser coerente

com o tipo declarado para a variável do lado esquerdo. Ao longo do programa é

possível, através de atribuições, alterar os valores dessas variáveis na memória.

Page 11: Manual robotec

10

8. FLUXO DE SAÍDA

O ROBOTEC permite que um programa envie dados para o ambiente externo.

Isto pode ocorrer com o uso dos comandos imprima, adicionar_movimento, abre_garra,

fecha_garra, gira_base, move_ombro, move_cotovelo, move_pulso e gira_pulso. Não é

possível entrar com valores para o programa no momento de sua execução.

O comando imprima permite que sejam apresentados na saída padrão,

normalmente o monitor, mensagens e valores obtidos através da execução do programa,

como mostra o exemplo abaixo:

programa meuPrimeiroPrograma;

inicio_var

string:helloworld="olá Mundo...";

fim_var

movimentos

inicio

imprima (helloworld);

fim

a saída no monitor seria:

olá Mundo...

Os demais comandos enviam para a interface serial conectada ao braço robótico os

valores para que ocorra a movimentação do mesmo, abaixo seguem exemplos de

aplicação destes comandos:

adicionar_movimento(1,50,75); //Este comando envia para o braço robótico a informação de

que o servo-motor numero 1 deve se mover para a posição 50 com uma velocidade de 75 passos

por minuto.

abre_garra(50); //Este comando efetua a abertura da garra do robô em 50%, esta porcentagem

pode ser modificada a critério do usuário.

fecha_garra(); //Este comando fecha a garra do robô, não há valores para este comando.

Page 12: Manual robotec

11

gira_base(128); // este comando efetua a movimentação do servo-motor conectado a base do

robô para a posição 128;

move_ombro(135); // este comando efetua a movimentação do servo-motor conectado ao ombro

do robô para a posição 135;

move_cotovelo(120); // este comando efetua a movimentação do servo-motor conectado ao

cotovelo do robô para a posição 120;

move_pulso(140); // este comando efetua a movimentação do servo-motor conectado ao braço

do robô para a posição 140;

gira_pulso(90); // este comando efetua a movimentação do servo-motor conectado ao pulso do

robô para a posição 90;

Page 13: Manual robotec

12

9. OPERADORES

O ROBOTEC utiliza também operadores que, são símbolos que executam várias

operações sobre os seus argumentos. O sinal de mais (+) é um operador. Em uma

expressão, ele soma dois valores:

a = b + c;

As variáveis a, b, c poderiam ser de quaisquer tipos numéricos de dados. Nesta

operação, b é acrescentado a c, sendo o resultado atribuído à variável a. O sinal de

atribuição = nessa expressão é também um operador, com a capacidade única de copiar

um valor a sua direita para a variável a sua esquerda. No ROBOTEC, existem

operadores aritméticos, relacionais e de atribuição, que estão demonstrados abaixo.

Operações aritméticas:

adição (+)

subtração (-)

multiplicação (*)

divisão (/)

Essas operações devem ser efetuadas apenas com os operandos de um mesmo tipo.

Operadores relacionais:

maior (>); maior ou igual (>=); menor (<); menor ou igual (<=); igual (==);

diferente (!=)

Operadores de atribuição:

atribuição (=)

incremento (++)

decremento (--)

Os operadores de incremento e decremento são similares à atribuição, realizando

operações de adição e subtração, respectivamente. Dessa forma, uma variável é

incrementada ou decrementada em uma unidade. Portanto, essa variável deve ser do tipo

inteiro. Em uma atribuição, não podem ser usados operadores de incremento e

decremento. Exemplos:

x = a; // x recebe o valor de a.

x--; // x é decrementado em 1.

x = x-1; // operação idêntica a anterior.

x++; // x é incrementado em 1.

x = x++ ou x = x--; // operações não suportadas.

Page 14: Manual robotec

13

10. COMANDO SE

O comando utilizado para tomada de decisões no ROBOTEC é o se, que é

acompanhado, opcionalmente, pelo senao. Sua sintaxe é bastante simples, necessitando

acrescentar uma expressão que retorne um tipo lógico após a palavra se, a palavra

reservada entao e uma lista de comandos e terminar com a palavra reservada fim_se,

caso o senao seja utilizado, também haverá uma lista de comandos e o fim_se passa a

ficar após os comandos do senao. Por exemplo, para exibir o valor de uma variável “x”

apenas se este valor for maior do que 5, pode-se utilizar a seguinte instrução:

se (x > 5)entao

imprima(x);

senao

imprima (“x é menor q 5!”);

fim_se;

Os parênteses, as palavras então e fim_se, são obrigatórios.

Page 15: Manual robotec

14

11. COMANDOS DE REPETIÇÃO

Na linguagem do ROBOTEC, podemos utilizar os comandos enquanto e para,

para aplicar instruções repetidamente. O comando enquanto tem sintaxe semelhante a

do comando se, bastando inserir alterar a palavra reservada após o fecha parênteses do

comando para faca e adicionar uma expressão que retorne um tipo lógico entre as

palavras reservadas enquanto e fim_enquanto e uma lista de comandos entre estas

palavras, como mostra o exemplo:

i = 0;

enquanto( i < 10)faca

abre_garra(i);

i++;

fim_enquanto;

Nesse comando, a expressão relacional é avaliada antes da execução da

instrução ou bloco de comandos, ou seja, caso essa expressão seja falsa no início da

execução do loop, os comandos não serão executados.

O comando para tem a seguinte sintaxe, após a palavra reservada para são

adicionados a seguinte estrutura de verificação: abre parênteses <variável=valor> ;

<variável + condição>; <variável + incremento ou decremento> e fecha parênteses após

o fecha parênteses é adicionada a palavra faca e após esta palavra os comandos a serem

executados seguidos de ; e terminando o bloco com fim_para, abaixo segue um

exemplo do comando para:

para (i=0; i < 10; i++)faca

abre_garra(i);

fim_para

Dentro dos parênteses, após a palavra-chave para, há três argumentos que

controlam a ação do loop. No primeiro argumento, há uma instrução que é executada

uma única vez antes do início do loop, atribuindo um valor a uma variável. A

inicialização e a atribuição de valor que compõem o primeiro e o terceiro argumento do

comando para, respectivamente, fazem referência a uma mesma variável. O segundo

Page 16: Manual robotec

15

argumento é uma expressão relacional que a instrução para testa no princípio do loop. O

último argumento é executado ao final do loop, após a execução da instrução ou bloco

de comandos, que devem estar entre as palavras faca e fim_para.

Page 17: Manual robotec

16

12. FUNCIONALIDADES DAS ABAS

O Robotec possui quatro abas e três menus, as abas suportam diferentes tipos de

controle do braço robótico exceto a aba Serial que define e conecta o braço robótico ao

software através de uma porta “COM” selecionada pelo usuário.

Figura 1 - Interface principal, aba Serial (menu Arquivos)

Fonte: O Autor

A figura 1 exibe a interface principal, aba Serial, que possui os campos Porta

com e Bauds e os botões Conectar, Desconectar e Limpar.

As funções para cada um dos campos e botões estão descritos na tabela 1.

Tabela 1 - Funções dos campos da aba Serial

Campo/ Botão Função

Porta com Definir a porta para conexão do braço robótico.

Bauds Definir a taxa de transmissão da porta selecionada.

Conectar Aplicar as configurações e estabelecer a conexão.

Desconectar Desconectar o braço robótico do software.

Limpar Limpar o histórico das conexões.

Fonte: O autor

Page 18: Manual robotec

17

O menu arquivo presente na interface principal é responsável por carregar,

excluir, criar e salvar um algoritmo na aba Programa, e encerrar o software.

Figura 2 - Interface principal, aba Serial (menu Edit)

Fonte: O Autor

O menu Edit, ilustrado na figura 2 é responsável por copiar apagar ou procurar

uma frase ou letra no algoritmo digitado na aba Programa.

Para utilizar as funções de copiar ou apagar basta selecionar o texto que se

deseja apagar ou copiar e clicar no menu Edit e na função desejada.

Page 19: Manual robotec

18

Figura 3 - Interface principal, aba Serial (menu Help)

Fonte: O Autor

O menu Help presente na interface principal é responsável por exibir os créditos

de desenvolvimento do software e o sub-menu ajuda exibe este manual.

Figura 4 - Interface principal aba Controle

Fonte: O Autor

Page 20: Manual robotec

19

A aba ilustrada na figura 4 possui controles quem movem individualmente os

servo-motores, e possui também o botão “Reiniciar” que é responsável pelo

posicionamento inicial do braço robótico para que os movimentos possam ser

executados de forma correta.

A descrição da relação entre as barras de rolagens e a movimentação do braço

robótico esta presente na tabela 2.

Tabela 2 - Relação de movimentação entre a barra de rolagem e o braço robótico

NOME SERVO-

MOTOR

FUNÇÃO RESTRIÇÃO

Motor 1 0 Responsável por enviar os bits referentes a

movimentação da base do braço robótico para

a porta serial, esta relacionada ao giro do

braço por completo.

0° a 180°

Motor 2 1 Responsável por enviar os bits referentes a

movimentação do ombro(Shoulder) do braço

robótico para a porta serial, atua de forma

vertical.

0° a 180°

Motor 3 2 Responsável por enviar os bits referentes a

movimentação do cotovelo(Elbow) do braço

robótico para a porta serial, atua de forma

vertical.

30° a 100°

Motor 4 3 Responsável por enviar os bits referentes a

movimentação do pulso(Wrist) do braço

robótico para a porta serial, atua de forma

vertical.

0° a 180°

Motor 5 4 Responsável por enviar os bits referentes ao

giro do pulso do braço robótico para a porta

serial, está relacionado ao giro do pulso.

0° a 180°

Motor 6 5 Responsável por enviar os bits referentes a

movimentação da garra(Grip) do braço

robótico para a porta serial, está relacionado

ao movimento de abrir e fechar a garra do

efetuador.

0° a 180°

Motor 7 - Disponível para futuras modificações no braço

robótico.

-

Motor 8 - Disponível para futuras modificações no braço

robótico.

-

Page 21: Manual robotec

20

Velocidade - Define o intervalo de envio entre os bits de

saída do software.

-

Reiniciar 0,1,2,3,4,5 Envia para todos os servos-motores, os dados

para sua posição inicial.

-

Fonte: O autor

Figura 5 – Interface principal aba Álgebra

Fonte: O Autor

A Figura 5 ilustra a janela principal do Sistema e a aba “Álgebra”, esta aba tem a

finalidade de mover o braço robótico para coordenadas específicas além de, em

conjunto com a cinemática inversa implantada no sistema, mover o braço em retas,

diagonais e círculos, através dos botões “Mover” presentes nesta aba.

Page 22: Manual robotec

21

Figura 6 - Interface principal aba Programa

Fonte: O Autor

A Figura 6 ilustra a janela principal do Sistema e a aba “Programa”, esta aba tem como

objetivo propiciar que um algoritmo seja criado, editado e apagado, possui o botão

“Verificar”, que efetua a análise sintática e semântica do código digitado e libera para

clique o botão “Rodar”, que executa o algoritmo, movendo o braço robótico em

conformidade com os comandos descritos no algoritmo.

Page 23: Manual robotec

22

13. PRIMEIROS PASSOS

Para executar seu primeiro algoritmo, ou mover o braço robótico através do

software pelas abas de controle ou álgebra, deve-se posicionar manualmente antes de

ligar o braço robótico de forma que todos os servo-motores fiquem na metade de sua

movimentação total, como ilustrado na figura 7.

Figura 7 - Posição Inicial do braço robótico

Fonte: O autor

Após isto se pode ligar o braço robótico e iniciar o ROBOTEC, e na aba Serial

seleciona-se a porta de comunicação na qual o braço esta conectado e então o botão

conectar é pressionado. A partir deste ponto pode-se ser usada qualquer uma das abas:

Controle, Álgebra ou Programa.

Sugere-se que ao efetuar a conexão do software com o braço robótico o botão

reiniciar presente na aba controle seja pressionado, evitando dessa forma problemas na

movimentação.

IMPORTANTE: Devido à ausência de sensores os motores não possuem proteção e

desta forma podem ser danificados no caso de excesso de peso ou força contraria, evite

que o braço robótico colida com a mesa ou objetos, se isto ocorrer desligue-o

imediatamente.