Buscar

5_movim_doc

Prévia do material em texto

1 
 
PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO GRANDE DO SUL 
FACULDADE DE ENGENHARIA 
 
44646-04 SISTEMAS ROBOTIZADOS (Eng. Controle e Automação) 
Prof. Felipe Kühne 
 
 
Comandos de Movimentação I 
 
INTRODUÇÃO 
 
Nesta aula será visto o procedimento básico para a criação de trajetórias de movimentação para 
manipuladores. 
 
Os comandos a serem utilizados são DIMP, ATTACH, MOVE. Mais detalhes a seguir. 
 
Para uma melhor compreensão do procedimento, usaremos nesta aula apenas comandos em modo 
DIRETO. 
 
 
VARIÁVEIS DE POSIÇÃO 
 
Nas aulas anteriores, vimos como podemos manipular (ler e escrever) variáveis de dados. Estas variáveis 
podem simples ou vetores, locais ou globais. Os comandos utilizados são: DEFINE/GLOBAL (para 
variáveis simples) e DIM/DIMG para vetores. Estas variáveis organizam-se na memória do controlador da 
seguinte forma: 
 
A 
 
 
 
VETP[1] 
VETP[2] 
VETP[3] 
VETP[4] 
VETP[5] 
 
 
Cada elemento acima representa um endereço de memória. Ou seja, variáveis simples ocupam um 
endereço apenas, e vetores ocupam, ordenadamente, a quantidade de endereços de memória proporcional 
ao seu tamanho. Note que cada elemento de um vetor pode ser manipulado como se fosse uma variável 
simples. 
Agora, para o problema de movimentação do robô e planejamento de trajetórias, precisamos definir uma 
sequência de pontos no seu espaço de trabalho, onde se localizará o órgão terminal (garra) do robô. Estes 
2 
 
pontos vão definir então a trajetória desempenhada pelo robô durante a execução de uma determinada 
tarefa. 
 
Cada um destes pontos é referente a uma configuração do órgão terminal. Por configuração entendemos 
o conjunto de variáveis de junta que definem a posição e orientação do órgão terminal no seu 
espaço de trabalho. Uma variável de junta é definida como a posição do membro posterior com relação 
ao membro anterior. Notem que um robô é um conjunto de membros rígidos conectados por juntas, sendo 
que estas juntas podem ser rotacionais ou prismáticas. Para juntas rotacionais, a variável da junta será 
uma posição angular, e para juntas prismáticas a variável será uma posição linear. 
 
Logo, dados os parâmetros dos membros (tamanhos), a configuração e anatomia do robô e as variáveis 
das juntas, o controlador é capaz de, através de cálculos de cinemática direta, definir a posição e 
orientação do órgão terminal. 
 
Então, é fácil de observar que uma variável de posição é formada pelo conjunto de variáveis das juntas 
que definem uma determinada configuração. Assim sendo, para podermos armazenar uma trajetória para 
movimentação do robô, teremos, na verdade, uma seqüência de configurações. Chamaremos este tipo de 
dado simplesmente de vetor de posições. 
 
Um vetor de posições organiza-se na memória do controlador, da seguinte maneira: 
 
 Junta 1 Junta 2 ... ... Junta n 
VETP[1] 
 
 
VETP[2] 
 
 
VETP[3] 
 
 
... 
 
 
VETP[i] 
 
 
 
 
Onde i é o tamanho do vetor e n é o número de juntas (ou o número de graus de liberdade) do robô. Cada 
uma das linhas acima representa um elemento do vetor de posições. Cada coluna representa uma variável 
da junta. Ou seja, a primeira coluna da primeira linha é a variável da junta 1 do elemento 1 do vetor. 
3 
 
COMANDO DIMP 
 
Para declara (criar) um vetor de posições, usamos o comando DIMP. 
 
DIMP 2LM1A[50] 
 
O comando acima cria um vetor de posições chamado 2LM1A de 50 elementos. O número de variáveis 
das juntas para cada elemento é definido automaticamente pelo controlador. 
 
Este comando deve ser executado sempre no modo direto. Ou seja, esta variável será global. 
 
Para este vetor ser posteriormente utilizado para movimentar o robô, precisamos armazenar uma 
configuração em cada um dos elementos. Caso você tente utilizar um elemento não inicializado, o 
controlador retornará um erro indicando este estado. 
 
 
COMANDO ATTACH 
 
Usaremos o modo TEACH para o posicionamento do robô e armazenamento das configurações. 
 
Note que o nome deste modo de operação (teach) é bastante sugestivo: estamos ensinando o robô quais 
as configurações que o mesmo deve assumir ao longo da trajetória. Então, esta tarefa será feita 
inteiramente pelo Teach Pendant (TP): iremos posicionar o órgão terminal em uma determinada 
configuração e então armazenar a mesma no vetor. Mas, notem que o TP não possui um teclado alfa-
numérico de forma que possamos escrever o nome do vetor previamente criado. 
 
Assim sendo, temos que informar ao TP, através do modo direto, qual o vetor que será utilizado para 
armazenar as configurações. Isto é feito através do comando ATTACH: 
 
ATTACH 2LM1A 
 
Após isto, o TP sabe em qual vetor de posições as configurações serão armazenadas. 
 
Podemos agora movimentar o robô e carregar o vetor com configurações variadas. Através do TP, basta 
selecionar o eixo desejado e selecionar o sentido do movimento (positivo ou negativo). Assim que o 
órgão terminal do robô atingir a configuração desejada, basta selecionar o botão RECORD POSITION 
no TP. Note que o nome do vetor criado anteriormente aparecerá no display, e o cursor piscará até ser 
digitada a posição dentro do vetor em que a configuração corrente será gravada. Esta posição pode 
assumir valores de 1 até o tamanho do vetor. 
 
O nome do vetor deve, obrigatoriamente, aparecer no display do TP no momento em que RECORD 
POSITION for selecionado. Caso isto não aconteça, o comando ATTACH pode não ter sido executado 
com sucesso. 
 
Vimos nas primeiras aulas que existem dois modos para movimentação do robô: espaço das juntas e 
espaço cartesiano. A seleção de um espaço ou de outro durante a gravação do vetor não modifica os 
4 
 
valores das variáveis das juntas armazenadas em cada elemento do vetor, e nem define o tipo de 
movimentação que será desempenhado pelo robô entre um ponto e outro. 
 
Assim, podemos definir o seguinte procedimento básico para criação e armazenamento de um vetor de 
posições: 
 
1) DIMP (modo direto) 
2) ATTACH (modo direto) 
3) Movimento do robô (modo teach) 
4) RECORD POSITION (modo teach) 
 
Os passos 3 e 4 são repetidos até que todos os pontos de referência de uma determinada trajetória estejam 
armazenados no vetor. 
 
 
COMANDO MOVE 
 
Podemos agora utilizar o modo DIRETO para fazer com que o robô atinja as configurações armazenadas 
no vetor de posições: 
 
MOVE 2LM1A[1] 
 
O comando acima vai fazer com que o robô saia da configuração atual e atinja a configuração armazenada 
no primeiro elemento do vetor 2LM1A. 
 
Assim, para o robô percorrer a trajetória, basta executar comandos MOVE em seqüência no terminal: 
MOVE 2LM1A[2], MOVE 2LM1A[3], e assim por diante. 
 
Observem que o objetivo final é o planejamento de uma trajetória, embora estejamos apenas planejando e 
armazenando pontos de referência. Entretanto, comumente precisamos nos preocupar também com o tipo 
de movimento que o robô desempenhará para interligar estes pontos. 
 
Quando o comando MOVE é utilizado, o tipo de movimento desempenhado pelo robô é livre. Ele decidirá 
qual é o movimento mais conveniente para cada uma das juntas de acordo com critérios internos do 
controlador, aos quais o usuário não tem acesso. 
 
Ou seja, em uma análise simplificada, podemos dizer que não temos controle sobre o tipo de trajetória 
que o robô vai realizar entre dois pontos. Por outro lado, em algumas tarefas o tipo de trajetória é muito 
importante e define se um determinado movimento é possível de ser realizado. 
 
Por exemplo, imagine que o robô necessita realizar uma trajetória vertical linear de forma a retirar um 
pallet da esteira. Lembre que existem restrições físicas que impedem que o pallet se movimente 
lateralmente. Assim, temos que garantir que a trajetória que o robô desenvolver durante este movimento 
respeite este requisito. Isto pode ser feito com o comando MOVEL: 
 
MOVEL 2LM1A[3] 
5 
 
No exemplo acima, o robô vai se movimentar ao longo de uma trajetória linear entre a sua configuração 
atual e a configuração armazenadano elemento 2LM1A[3]. 
 
 
COMANDOS PARA MOSTRAR/APAGAR VARIÁVEIS DE POSIÇÃO 
 
Vimos nas aulas anteriores comandos para apagar programas da memória do controlador (REMOVE), 
listar variáveis (LISTVAR) e apagar variáveis (DELVAR). 
 
Para listar variáveis de posição, utiliza-se o comando LISTP. Este comando retornará, no terminal (modo 
direto), uma lista com todas as variáveis e vetores de posições gravados na memória do controlador. 
 
Muitas vezes é interessante podermos visualizar os valores numéricos que estão gravados em cada 
variável de posição. Isto pode ser feito através do comando LISTPV: 
 
LISTPV 2LM1A[4] 
 
O comando acima vai mostrar, no terminal do Robosoft, os valores das variáveis das juntas que compõem 
a configuração armazenada na variável 2LM1A[4]. Estes valores estão expressos em passos do encoder, o 
que, para um usuário do sistema, pode não ter um sentido físico muito fácil de entender, já que não 
sabemos qual a fração de posição angular (junta rotativa) ou linear (junta prismática) correspondente a 
cada passo do encoder. As coordenadas cartesianas também são mostradas, em valores para os eixos X, Y 
e Z, em milímetros. As coordenadas cartesianas ainda mostram a orientação do órgão terminal do robô: P 
(pitch) e R (roll) expressas em graus. 
 
 LISTPV POSITION 
 
O comando acima mostra as variáveis das juntas e os valores cartesianos para a configuração atual do 
robô. 
 
Como os vetores de posições são globais (são declarados no modo direto), é interessante removermos eles 
sempre que concluímos alguma tarefa e aquele vetor não mais será usado. Isto é feito através do comando 
DELP: 
 
DELP 2LM1A 
 
O comando acima vai apagar o vetor 2LM1A da memória do controlador. Após pressionar Enter, o 
usuário deverá confirmar a remoção do vetor. Digite “YES” + Enter para confirmar. Qualquer entrada 
diferente irá abortar a operação. Note que, se este vetor estiver sendo utilizado por algum programa, o 
mesmo não será apagado. Antes, o programa deve ser removido (comando REMOVE). 
6 
 
EXERCÍCIO 
 
1. Crie um vetor de posições de 5 elementos; 
• Modo direto: DIMP 2LM1A[5] 
 
2. Relacione o mesmo ao TP 
• Modo direto: ATTACH 2LM1A 
 
3. Armazene neste vetor cinco configurações, através do TP; 
• Modo teach: posiciona o robô 
• Modo teach: RECORD POSITION + posição do vetor + ENTER 
 
4. No terminal do Robosoft, movimente o robô ao longo dos pontos gravados, observando sempre o 
comportamento do robô, das suas juntas e do órgão terminal. 
• Modo direto: MOVE 2LM1A[pos. do vetor] 
 
5. Repita o passo (4) utilizando o comando MOVEL; observe o comportamento do robô. 
• Modo direto: MOVEL 2LM1A[pos. do vetor] 
 
6. Remova o vetor da memória do controlador. 
• DELP 2LM1A

Continue navegando