PAULO FARIA SANTOS AMARAL
Eng. de Eletrônica, Instituto Tecnológico de
Aeronáutica, 1976
Mestre em Engenharia, Instituto de Pesquisas
Espaciais, 1979
CONCEPÇÃO E IMPLEMENTAÇÃO DE UM LABORATÓRIO PARA DESENVOLVI
MENTÓ DE TÉCNICAS E PROGRAMAÇÃO DE TAREFAS DE ROBOS INDUS
TRIÁIS.
VOLUME I
Tese apresentada à Escola
Politécnica da USP para a
obtenção do Título de
Doytor em Engenharia.
Orientador: Prof. Dr. Lucas Antonio Moscato
Professor Adjunto do Departstmento de
Engenharia de Eletricidade da EPUSP.
São Pa:ulo, 1985
C : ; F R G : A T s i U C L E A R / S P
-y
V
A Teresa, amiga e companheira de todas as horas e aos meus pais, Carlos e lolanda.
Este trabalho contou com o suporte financeiro das
"!' seguintes Instituições.
.0 Q FDTE : Fundação para o Desenvolvimento Tecnológi^
o
CO da Engenharia.
LSD : Laboratório de Sistemas Digitais da Esco
Ia Politécnica da Universidade de São Pau
O Io.
GAM : Grupo de Aplicação de microcomputadores do
^ Centro Tecnológico da Universidade Fede
^ ral do Espirito Santo.
1 ^ FAPESP: Fundação para o Amparo a Pesquisa do Esta
do de São Paulo.
- CAPES : Coordenadoria de Aperfeiçoamento de Pro
fessores do Ensino Superior.
- ^
AGRMíECIMEiríTOS
'.7^ Aq Professor Lucas Antonio Moscato pela orienta
ção e apoio irrestrito a este trabalho.
Ao Professor Antonio Marcos de A. Massola pela
~ sua amizade e incentivo durante toda a minha permanência no
LSD.
Ao amigo Benedito Geraldo Miglio Pinto, pelo pro
^ jeto da parte mecânica do robô e pelas suas sugestões no d£
^ correr do trabalho.
Aos amigos Antônio Sérgio de Souza, pela ajuda na
utilização do sistema de visão para o robô, e Carlos Eduar
C do Cugnasca, pela implementação do processador do nível O
de controle para o robô.
Ao amigo Jun Okamoto Junior, pela sua dedicação
* como estagiário no início do projeto.
^ Ao Sr. Giacomo Henrique Doro pela dedicação e e£
V mero na construção das partes mecânicas do robô e a todos
os amigos da oficina mecânica.
Aos desenhistas Marcos Augusto Rosa, Sônia de
Queiroz e Almerita E. Monteiro pelo capricho na confecção
dos vários desenhos deste trabalho.
^ A amiga Nadia Aparecida Vicentini pela datilogra
fia cuidadosa dos originais.
A todos os amigos que me acolheram com tanta sim
patia no Laboratório de Sistemas Digitais e que direta ou
indiretamente contribuíram para a execução deste trabalho.
••V
Este trabalho é dedicado à concepção e implementa
ção de um laboratório para desenvolvimento de técnicas
e programação de tarefas de robos industriais.
Inicialmente o estado da arte dos robôs indus
Zi triáis é apresentado e,em seguida, o desenvolvimento e a
J ¡ , construção do robô industrial do tipo braço articulado com
cinco graus de liberdade, acionados por motores de passo
controlados em malha fechada de posição, projetado para
equipar o laboratório são detalhados.
As características deste robô desenvolvido e da
arquitetur^a hierárquica em três níveis e distribuída do si£
tema de controle do laboratório são apresentadas.
Os programas desenvolvidos para o ensino por
aprendizagem, calibração e execução de tarefas para o micro
computador dedicado ao controle do robô são detalhados,
assim como o sistema operacional, as linguagens de programa
ção, as rotinas para transformação de coordenadas e ^s faci^
lidades do computador do nível 1 de controle, dedicado a
servir de infra-estrutura de programação para o laborat£
rio.
Uma linguagem de alto nível para programação de
robôs industriais, LIPRI, concebida e implementada para ser
mais uma ferramenta de desenvolvimento do laboratório é
apresentada.
Finalizando, alguns exemplos de programação de
tarefas típicas de robôs industriais são implementados com
os recursos do laboratório concebido.
.-0
ABSTRACT
This work is concerned with the design and implementation of a laboratory for the development, research and task programming of industrial robots.
The state of the art in industrial robots is presented together with the detailed design and construction of the laboratory's manipulator with 5 degrees of freedom. This robot is driven by stepping motors controlled with position feedback.
Also presented are characteristics and specifications of the manipulator and the laboratory's control system, based in a 3 level hierarchically distributed architecture.
Also described is the calibration, teaching by showing and task execution programs of the robot's
•" microcomputer. The system microcomputer's operational system, programming languages, coordinates transform
C procedures and facilities are shown.
A high level language for industrial robot programming, named LIPRI, was conceived and implemented as a development tool for the laboratory.
Finally, some examples of tipical industrial robot tasks are implemented.
•'" I M D I C E
^ Pág.
•V
-V
INTRODUÇÃO 01
CAPITULO I - SOBRE OS ROBOS INDUSTRIAIS
1.1 - INTRODUÇÃO 08
Q 1.2 - COMPONENTES DE UM ROBO INDUSTRIAL 10
Sj 1,2.1 - Arquitetura mecânica dos robôs indus
- triáis 13
_ 1.2.2 - Mão-ferramenta de robôs industriais .. 20
1.2.2.1 - Mão-ferramenta do tipo gar
ra 21
1.2.2.2 - Mão-ferramenta tipo ferra
menta 24
^ 1.2.3 - Acionamento de robôs industriais 25
1.2.4 - Sistema de controle dos robôs indu£
triáis 28
1.2.5 - Dispositivos de sincronização com
eventos externos 38
1.2.6 - Sistema sensorial ^. 41
V 1.3 - PROGRAMAÇÃO DA TAREFA 53
1.3.1 - Programação por aprendizagem 54
1.3.2 - Programação por linguagem de alto ní
vel 58
1.4 - PROPOSTA PARA UM LABORATORIO DE DESENVOLVI
MENTO DE TÉCNICAS E PROGRAMAÇÃO DE TAREFAS
^ PARA ROBOS INDUSTRIAIS 62
V 1.5 - CONCLUSÃO 66
CAPITULO II - ARQUITETURA MECÂNICA E CARACTERlSTI
CAS DO'ROBO INDUSTRIAL DESENVOLVIDO
2.1 - INTRODUÇÃO 70
2.2 - ARQUITETURA MECÂNICA 71
-V
-'-^
2.2.1 - Acionamento do giro do robô 76
2.2.2 - Acionamento do braço 78
2.2.3 - Acionamento do ante-braço 79
2.2.4 - Acionamento do punho 82
^ 2.3 - CARACTERÍSTICAS DO ROBO DESENVOLVIDO 86
^.Z 2.3.1 - Volume de trabalho 87
2.3.2 - Precisão do robô 87
- 2.3.3 - Capacidade de carga 89
2.3.4 - Velocidade de operação 92
2.3.5 - Outras características 93
2.4 - SISTEMA DE REALIMENTAÇAO DE POSIÇÃO E DETE
ÇAO DE FIM DE CURSO 94
2.4.1 - Mecânica do sistema de realimentaçao . 95
2.4.2 - Sinais gerados para o sistema de
controle 98
¡) _ 2.5 - GARRA MECÂNICA DO ROBO INDUSTRIAL 100
2.5.1 - Construção mecânica da garra 100
2.5.2 - Sistema de acionamento e realimenta
ção da garra 102
2.6 - APLICABILIDADE DO ROBO INDUSTRIAL DESENVOLVI — *
DO 104 2.7 - CONCLUSÃO 107
CAPITULO III - SISTEMA DE CONTROLE PROPOSTO PARA
O LABORATORIO
3.1 - INTRODUÇÃO 110
3.2 - SISTEMA HIERÁRQUICO PROPOSTO 111
3.3 - DESCRIÇÃO DO NÍVEL O DE CONTROLE 115
3.3.1 - Arquitetura do computador de contro
le . 118
3.3.2 - Acionamento dos motores de passo 122
•3.3.3 - Sistema de realimentaçao 133
3.3.4 - Caixa de aprendizado de tarefas 139
Q Pág.
-V
^
Pag.
^ ^ 3.3.5 - Sincronização com eventos externos ... 140
3.3.6 - Deteção de chaves limites 142
3.3.7 - Comunicação com o nível 1 de contro
le 145
3.4 - DESCRIÇÃO DO NiVEL 1 DE CONTROLE 147
3.4.1 - Arquitetura do computador do nível
1 149
3.4.2 - Interface controladora de. acesso di
reto à memória 150
_ 3.4.3 - Interface controladora de discos
flexíveis 152
3.4.4 - Interface para digitalizador de ima
gens e monitor de vídeo 153
'Z 3.4.5 - Interfaces para comunicação serial:
terminal de vídeo, impressora, ni
^. vel O e nível 2 154
3.5 - NÍVEL 2 DE CONTROLE 155
3.5.1 - Configuração do nível 2 de controle .. 157
^ 3.5.2 - Funções do nível 2 de controle 160
3.6 - CONCLUSÃO j . 161
CAPITULO IV - PROGRAMAS SUPORTE PARA O LABORATÓRIO
4.1 - INTRODUÇÃO 164
^ 4.2 - PROGRAM/.S PARA O NiVEL O DE CONTROLE 165
4.2.1 - Programa MONITOR 167
^ 4.2.2 - Programa de CALIBRAÇÃO 173
4.2.3 - Programa de aprendizado de tarefas ... 183
Z 4.2.4 - Programa de execução de tarefas 190
4.3 - PROGRAMAS DO NiVEL 1 DE CONTROLE 192
- 4.3.1 - Programa "Bootstrap" e programa MO
NITOR : 194
^ 4.3.2 - Sistema operacional do nível 1 de
controle 196
•J
w
Pág,
4.3.3 - Programa formatador de discos 199
4.3.4 - Programas suportes e linguagens Jde
programação de microcomputadores di£
poníveis 200
4.3.5 - Programa emulador de terminal e edi_
^ tor de figuras 201
^ 4.4 - TRANSFORMAÇÃO DE COORDENADAS 205
4.4.1 - Resolução das equações cinemáticas
para o robô do laboratório 209
4.4.2 - Transformação de coordenadas de jun
ção para coordenadas de motor e vi
ce-versa 215
4.4.3 - Transformação de coordenadas de jun
ção para coordenadas cartesianas 218
4.4.4 - Transformação de coordenadas carte
sianas para coordenadas de junção .... 221
4.5 - CONCLUSÃO 221 .-.jm-
CAPÍTULO V - LIPRI: LINGUAGEM PARA PROGRAMAÇÃO DE
^ ROBOS INDUSTRIAIS ,
5.1 - INTRODUÇÃO 226
* 5.2 - ESTRUTURA DA LINGUAGEM 228
5.2.1 - Configuração do sistema 228
^ 5.2.2 - Sintaxe dos programas em LIPRI 236
^ 5.3 - DECLARAÇÃO DA LINGUAGEM LIPRI 240
5.3.1 - Declarações das variáveis de proce£
samento 241
V 5.3.1.1 - Declaração BYTE 241
% 5.3.1.2 - Declaração WORD 241
- 5.3.1.3 - Decalração COOLEAN 242
5.3.1.4 - Declaração STRING 242
5.3.1.5 - Declaração ARRAY 243
^ 5.3.1.6 - Declaração FILE 244
j
Pág.
5.4 -
5.3.1.7 - Declaração LABEL 246
5.3.2 - Declarações de entidades geométricas . 246
5.3.2.1 - Declaração POINT 246
5.3.2.2 - Declaração LINE 248
5.3.2.3 - Declaração CIRCLE 250
5.3.2.4 - Declaração TRAJECT 252
5.3.2.5 - Declaração FIGURE 254
5.3.3 - Declarações de procedimentos 255
5.3.3.1 - Declaração PROCEDURE 255
5.3.3.2 - Declaração INTERRUPT PROCE
DURE 256
5.3.3.3 - Declaração TASK 256
COMANDOS DA LINGUAGEM LIPRI 257
5.4.1 - Comandos de controle de processamen
to 258
5.4.1.1 - Comando GO TO 258
5.4.1.2 - Comando IF 258
5.4.1.3 - Comando FOR 259
5.4.1.4 - Comando WHILE 260
5.4.1.5 - Comando PROCEDURE .*. . 260
5.4.1.6 - Comando TASK . . . 261
5.4.1.7 - Comando RETURN 261
5.4.1.8 - Comando WAIT 261
5.4.1.9 - Comando PAUSE 262
5.4.1.10- Comando STOP 263
5.4.1.11- Comando HALT , 263
5.4.1.12- Comando BEGIN 264
Comandos de linhas de sincronismo ... 264
5.4.2.1 - Comando SET . 264
5.4.2.2 - Comando RESET 265
5.4.2.3 - Comando INPUT 265
5.4.2.4 - Comando OUTPUT 266
Pág.
5.4.3.1 - Comando
mética
de atribuição arit
5.4.3.2 - Comando de atribuição boo
leana .
5.4.4 - Comandos de movimentação do robô
5.4.4.1 - Comando MOVE
5.4.4.2 - Comando HOME
5.4.4.3 - Comando FOLLOW
5.4.4.4 - Comando APPROACH
Z- 5.4.4.5 - Comando DEPART
5.4.4.6 - Comando CLOSE
z 5.4.4.7 - Comando OPEN
5.4.4.8 - Comando SPEED
5.4.4.9 - Comando INTERPOLATE
5.4.5 - Comandos de entrada e saída
5.4.5.1 - Comando DISPLAY
5.4.5.2 - Comando READ
266
268
269
269
273
274
276
277
278
279
280
280
281
281
281
5.4.5.3 - Comando PRINT 282
5.4.6 - Comandos de visão 282 tf
5.4.6.1 - Comando FIND 282
5.4.6.2 - Comando LEARN 283
5.4.6.3 - Comando RECOGNIZE 284
5.4.6.4 - Comando INSPECT 284
5.4.7 - Comando de controle de interrupção ... 285
5.4.7.1 - Comando EI 285
5.4.7.2 - Comando Dl 285
5.5 - UTILIZANDO O COMPILADOR LIPRI 286
5.6 - COMPARAÇÃO COM OUTRAS LINGUAGENS PARA PROGRA
MAÇAO DE ROBOS INDUSTRIAIS 288
5.7 - CONCLUSÃO 297
5.4.3 - Comandos de atribuição 266
..V
-V
Pág.
APÊNDICE I - CONJUNTO DE INSTRUÇÕES EXECUTÁVEIS PE
^ LO NlVEL O DE CONTROLE 309
APÊNDICE II - MENSAGENS DE ERRO DA LINGUAGEM LIPRI . 333
APÊNDICE III - EXEMPLOS DE PROGRAMAÇÃO DE TAREFAS
TÍPICAS DE ROBOS INDUSTRIAIS COM O
2 LABORATÓRIO 340
^ A3.1 - ESTAÇÃO SE SOLDA PONTO ROBOTIZADA 342
V A3.2 - ROBO COMO EQUIPAMENTO DE TRANSFERÊNCIA DE
Zi PEÇAS 346
A3.3 - ESTAÇÃO DE SOLDA A ARCO ROBOTIZADA 352
A3.4 - ESTAÇÃO ROBOTIZADA DE INSPEÇÃO DE PEÇAS COM
SISTEMA DE VISÃO 359
BIBLIOGRAFIA 367
CONCLUSÕES FINAIS 299
LISTA DE FIGUHAS
i:^ Pág.
Fig. 1.1 - Diagrama de blocos de um robô indu£
trial típico 11
Fig. 1.2 - Graus de liberdade de um corpo sóli
do no espaço 14
Fig. 1.3 - Configurações básicas para os três
primeiros graus de liberdade da ar
quitetura mecânica de' um robô indu£
trial 16 -V
..'Zi Fig. 1.4 - Estrutura clássica para a parte me
^ canica responsável pela orientação
da mão-f erramenta 17
7* Fig. 1.5 - Especificação do volume de trabalho
^ de um robô industrial 18
Z Fig. 1.6 - Alguns tipos de garras 22
Fig. 1.7 - Garra mecânica de duas mãos 23
Fig. 1.8 - Algumas ferramentas usuais adapta
das em robôs: a) solda a arco; b)
cabeçote de solda ponto; c)maçarico;
Vv d) tirador de porcas automático; e)
^ cadinho 24
^ Fig. 1.9 - Troca de ferramentas tipo baioneta ... 25
' Fig. 1.10 - Diagrama de blocos de controle de
uma junta de um robô 31
Pág.
Fig. 1.11 - Sistema de coordenadas de junção pa
ra um robô articulado com seis graus
de liberdade 33
Fig. 1.12 - Diferença entre movimentos retilí^
neos no sistema cartesiano e no sis
tema de coordenadas de junção para
um manipulador com duas articulações .. 34
Fig. 1.13 - Sistemas de coordenadas cartesiano
(x,y,z) e de ferramenta (x',y',z') .... 35
"-- Fig. 1.14 - Geração de trajetórias retilíneas no
espaço cartesiano para um robô com
duas articulações 36
Fig. 1.15 - Robô executa a tarefa enquanto a
peça passa pela sua região de traba
lho 41
Fig. 1.16 - Montagem de um sensor de trilha de
solda 46
Fig. 1.17 - Opções de montagem de sensores de
visão utilizados com robôs indu£
triáis 49
Fig. 1.18 - Desenho esquemático de um sensor ti
po pele artificial 52
Fig. 1.19 - Sistema sensorial de um robô avança
do 53
Pág,
Fig. 1.20 - Métodos de programação por aprendi^
zagem para robôs industriais 55
Fig. 1.21 - Níveis de descrição de tarefas pa
ra robôs industriais 60
Fig. 1.22 - Diagrama de blocos do laboratório
proposto 63
Fig. 1.23 - Fotografia do LÍDER -. Laboratório
Integrado para Desenvolvimento e En
sino da Robótica 67
Fig. 2.1 - Fotografia da arquitetura mecânica
do robô desenvolvido 72
Fig. 2.2 - Sistema de transmissão sem-fim / co
roa para todos os cinco graus de li
berdade 74
* Fig. 2.3 - Detalhes de montagem do sistema de
acionamento do giro do robô 77
Fig. 2.4 - Diagrama esquemático de montagem da
caixa de engrenagens móvel do robô .... 80
Fig. 2.5 - Diagrama de montagem das engrena
gens no cotovelo do braço 81
Fig. 2.6 - Diagrama esquemático de montagem
do punho 83
Fig. 2.7 - Graus de liberdade do robô desenvol^
vido e volume de trabalho 86
Pág.
Fig. 2.8 - Curva de torque x velocidade do
motor 90
Fig. 2.9 - Sinais gerados e montagem dos senso
res no disco do codificador angu
lar incrementai 95
Fig. 2.10 - Montagem do sistema de acionamento
e realimentaçao de cada grau de \\_
berdade do robô 97
Fig. 2.11 - Posição das chaves limites para ca
'•' da grau de liberdade 99
^ Fig. 2.12 - Montagem esquemática da garra mecâ
.. nica desenvolvida para o robô 103 ---té
Fig. 3.1 - Estrutura típica de um sistema de
'" ^ controle hierárquico 112
V Fig. 3.2 - Estrutura hierárquica proposta para
o laboratório 114
Fig. 3.3 - Diagrama de blocos esquemático do
nível O de controle 116
Fig. 3.4 - Diagrama esquemático da arquitetura
do computador de controle do nível
O 121
Fig. 3.5 - Esquema geral do acionamento dos mo
tores de passo 124
Pág.
, ^
Fig. 3.10 - Diagrama esquemático do sistema de
realimentaçao de posição para um
motor (A) 134
Fig. 3.11 - Esquema de interrupção do processa
dor ao se atingir a contagem final ..^ 138
Fig. 3.12 - Esquema das linhas de sincronismo
do robô 141
Fig. 3.13 - Circuito de deteção das chaves limi^
tes 144
Fig. 3.14 - Interface de comunicação serial com
o nível 1 de controle 146
Fig. 3.15 - Diagrama de blocos esquemático do
nível 1 de controle 148
jáQ ^ Fig. 3.6 - Interligação das fases do motor . de
passo de quatro fases 126
Fig. 3.7 - Diagrama esquemático da placa con
troladora de motores de passo 128
Fig. 3.8 - Diagrama de geração dos sinais de
pulso e direção para os motores de
— ^ passo 131
Fig. 3.9 - Curva de aceleração e desaceleração
^ gerada pelo controlador de acelera
-'•' ção 133
Pág.
Fig. 3.16 - Diagrama de blocos da interface con
troladora de acesso direto à memo
ria 151
Fig. 3.17 - Interface controladora de discos
flexíveis 153
Fig. 3.18 - Interfaces seriais de comunicação
com terminal de vídeo, impressora e
nível O de controle 156
Fig. 3.19 - Configuração do sistema PDPll/34 158
Fig. 4.1 - Definição da posição de origem do
robô 174
Fig. 4.2 - Listagem de uma seção com o progra
ma de aprendizado 189
Fig. 4.3 - Seção de utilização do programa de
execução de tarefas utilizando o
programa do sub item anterior 193
Fig. 4.4 - Configuração de memória do computa
dor do nível 1 com o sistema opera
clonal carregado 197
Fig. 4.5 - Seção de edição de figuras e o ar
quivo correspondente criado pelo
editor 206
Fig. 4.6 - Modelo cinemático utilizado pelas
rotinas de transformação de coorde
nadas 208
— •
:0
Fig. 4.8 - Figura para a solução inversa do
Z robô desenvolvido 213
Fig. 4.9 - Rotinas TESTATING, MOTANG, ANGMOT
para teste de atingibilidade e con
_ versão de coordenadas de motor para
coordenadas de junção e vice-versa . . . 219
V Fig. 4.10 - Rotina para transformar um ponto em
coordenadas de motor (junção) em
coordenadas cartesianas 220 -•V
Fig. 4.11 - Rotina que converte as coordenadas
de um ponto no sistema cartesiano
< para as coordenadas de junção e em
Z seguida para as de motor ^ 222
.. Fig. 5.1 - Configuração do compilador LIPRI,
_ suas saídas e seu relacionamento
com os arquivos do usuários 229
Fig. 5.2 - Arquivos de entrada do compilador
Zí LIPRI na configuração atual do Ia
^ boratório LÍDER 232
• -J
_ Fig. 5.3 - Execução de um programa objeto cria
do pelo compilador LIPRI na configu
^ ração atual do laboratório LÍDER 235
Fig. 4.7 - Vista lateral do robô posicionado
em um ponto T onde são dadas as
suas coordenadas de junção 210
^ Pág,
Pág,
Z^ Fig. 5.4 - Seção com o compilador LIPRI 287
-é
Fig. 5.5 - Arquivo de listagem gerado pelo com
pilador LIPRI 289
Fig. 5.6 - Arquivo objeto criado pelo coipilador ... 290
Fig. A3.1- Robô executando uma solda ponto simu
lada 344
Fig. A3.2- Robô transferindo peças de um alimen
tador para caixas 347
Fig. A3.3- Robô executando uma solda a arco 354
Fig. A3.4- Estação robotizada de inspeção de pe
ças com sistema de visão 361
CG".;;:::^:o ; ; A C : 0 : , ; L zi Lr : E R G ; A r j u c L E A R / S P
LISTA BE TABELAS
•li
Pág.
Tab. 2.1 - Características construtivas do para
fuso sem-fim 75
Tab. 2.2 - Características construtivas da co
roa 76
Tab. 2.3 - Características das engrenagens côni^
cas do diferencial do punho do robô ... 85
Tab. 2.4 - Relação entre velocidade de trabalho
e carga transportável 93
Tab. 2.5 - Características principais do robô
industrial desenvolvido 105
Tab. 3.1 - Especificação dos sinais dos barra
mentos externos do computador do ní
^ vel O * 120
Tab. 3.2 - Características dos motores de passo
utilizados no robô e na garra 125
I
Tab. 3.3 - Freqüência de fases para movimentar
o motor em passo completo 126
Tab. 3.4 - Freqüência de fases para movimentar
o motor de passo em meio passo 127
Tab. 3.5 - Dados armazenados na memoria do deco
dificador de estados 136
-V Pág,
Q . Tab. 4.1 - Teclas de movimentação dos motores
— para o programa de aprendizado 185
-V
y
' y
" J
:';:.-_v
Zi
.01
A construção de máquinas e dispositivos que reali^
zassem o trabalho pesado, repetitivo e em grande quantidade
sempre teve uma importância primordial em toda a história
da humanidade.
Desde as mais simples ferramentas, passando pelas
máquinas a tração animal, as máquinas movidas a água e a
vento, sempre foi uma preocupação constante a automatiza
ção dos meios de produção.
Com a invenção da máquina a vapor, o controle da
fonte de energia passou a ser feito de uma maneira fácil e
ZJ precisa, tendo ainda a grande vantagem de ser facilmente
transportável, sendo essa uma das causas principais da indus
- trialização das cidades e da revolução industrial ocorrida
no século passado.
Com o domínio da tração elétrica, as desvantagens
da utilização do vapor para movimentar as máquina,p das fá
V bricas foram sendo gradualmente eliminadas pelas vantagens
I" da energia elétrica, que possibilitou a construção de moto
- res menores, silenciosos e limpos além de possuírem lom ren
dimento consideravelmente maior.
As guerras mundiais deste século deram um impulso
enorme à automação dos processos industriais, principalmen
V te àqueles em que um mesmo produto era produzido da mesma
forma e em grandes quantidades.
O aumento exponencial do custo da mão-de-obra le
vou à idéia das linhas de montagem onde um determinado pro
cesso de fabricação é sub-dividido em etapas pequenas e sim
MTROBUÇAO
.02.
pies permitindo a utilização de operários semi-qualifloa
dos, principalmente nas funções de transporte de materiais
" e pequenas montagens; para tarefas mais qualificadas, máqui
-rJ nas especiais, dedicadas e custosas eram desenvolvidas e
O construídas.
O o alto custo para se automatizar a produção de um
_ produto, associado à sua rápida desvalorização, incentiva
ram pesquisas na direção de uma automatização mais flexí
vel, voltada para produtos que tivessem vida curta no merca
"•Zj do ou exigidos em pequenas quantidades e que possibilitas
sem, de uma forma fácil e econômica, a mudança da produção
de um produto para outro em uma mesma fábrica utilizando as
mesmas máquinas.
Com o advento das máquinas de comando numérico pa
ra a automação flexível dos processos de fabricação, resta
va a etapa, bastante difícil de ser automatizada, de manipu
lação de peças e ferramentas necessárias para a execução de
uma determinada tarefa, principalmente dentro do conceito
de. automação flexível onde as peças e ferramentas variavam
dependendo do produto produzido, o que tornava inviável ec£
nomicamente o desenvolvimento de máquinas automáticas espe
cíficas para esta função.
* George Devol, em 1956 [16], deu o primeiro passo
* na direção da solução deste problema com a invenção de um
dispositivo automático para manipulação e transferência de
peças. O rápido desenvolvimento da indústria de microeletrô
nica, gerando processadores e componentes periféricos pode
rosos a um custo cada vez mais baixo, tornou economicamente
possível o surgimento dos robôs industriais que estão preen
^ chendo cada vez mais a lacuna que faltava na automatização
flexível das linhas de produção.
.03.
Assim, é de fundamental importância que a pesqui^
sa e o desenvolvimento da tecnologia de robôs industriais
seja por nós dominada para evitarmos que, como tantos outros
avanços tecnológicos (computadores, semicondutores, perifé^
ricos, etc) as iniciativas para o seu desenvolvimento ocor
ram somente quando o mercado já estiver saturado de "know-
~^ A colocação de robôs nas indústrias vem sendo
apontada como a causa de uma nova revolução industrial,
^ " principalmente em países como o Japão e os EUA, onde a sua
.-.v utilização vem crescendo de uma maneira impressionante, ten
; do seus reflexos em países não detentores desta tecnologia,
notadamente na indústria automobilística onde o seu emprego
é mais numeroso.
^ Esses robôs industriais podem ser separados em
três grupos: os robôs de primeira geração, que não possuem
'^Z sensores para verificar mudanças de estado do ambiente de
trabalho sendo incapazes de se adaptarem automaticamente a
qualquer evolução não previsível no tempo e no espaço deste
ambiente, sendo deste grupo a grande maioria dos robôs uti_
lizados atualmente; os robôs de segunda geração, munidos de
sensores capazes de verificar alterações não previsíveis no
"••• ambiente de trabalho e automaticamente alterar o seu compor
.':Z tamento para se adaptar ao novo estado deste ambiente e os
^ robôs de terceira geração, com capacidade de auto-aprendiza
— do, dedução e conclusão, estes ainda num estágio muito pri
^ mijbivo.
*
No Brasil, a utilização de robôs industriais, mes
* mo os de primeira geração, é ainda praticamente inexisten
te; mas, a exemplo do que vem ocorrendo nos países indu£
. . V » . trializados, o seu emprego deverá sofrer um rápido desenvo¿
vimento nos próximos anos, dentro do nosso parque indu£
trial.
.04.
how" estrangeiro.
7^^
,Um número bastante elevado de pesquisas vem sen
do desenvolvido visando melhorar o desempenho e aplicações
de robôs industriais, principalmente no que se refere à sua
precisão de posicionamento e velocidade, sua velocidade de
execução de tarefas, seus sensores e seus métodos de progra
mação, mas bem poucos são os trabalhos referentes ao desen
volvimento de equipamentos dedicados ao ensino e pesquisa
das várias técnicas associadas ao desenvolvimento de robôs
industriais.
O objetivo desta tese é o desenvolvimento e cons
trução de um laboratório que tenha toda a infra-estrutura
necessária para a pesquisa de novas técnicas e o ensino da
robótica voltada para aplicações industriais.
Como robótica entendem.os a ciência que estuda os
robôs e suas aplicações, sendo completamente multidiscipM
nar envolvendo a mecânica, eletrônica, matemática, processa
mento de dados, multiprocessamento, sensoreamento, teoria
de linguagens, organização industrial e outras mais.
Assim, este laboratório consta de ferramentas ne
cessarias e suficientes para permitir qué vários aspectos
desta diversidade de disciplinas aplicadas à robótica indus
trial possam ser ensaiadas, pesquisadas e ensinadas de uma
maneira rápida, eficiente e o mais próximo possível da rea
lidade industrial.
Este trabalho, que descreve a concepção e imple
mentação do LÍDER - Laboratório Integrado para Desenvolvi^
mento e Ensino da Robótica, é dividido em cinco capítulos.
O primeiro capítulo tem como objetivo mostrar o
z^
:'Z
.05.
estado da arte dos robôs industriais e da sua programação
de tarefas, servindo de base para a proposta do laboratório
M " desenvolvido.
Zè "Sj O capítulo II aborda a arquitetura mecânica do ro
bô industrial projetado e construído para o laboi-atório,
^ apresentando seus detalhes construtivos, seu sistema de
~^ acionamento e realimentaçao de posição, suas característi^
^ cas e especificações bem como sua aplicabilidade.
No capítulo III é apresentado o sistema de contro
le implementado para o laboratório; sua concepção de contro
le é hierárquica, dividida em três níveis distintos de con
trole, sendo que apenas dois estão completamente implementa
dos. A descrição de todos os componentes de cada nível, bem
como a de seus programas de controle, é detalhada neste ca
Z pítulo.
••- O capítulo IV trata dos programas-suporte imple
mentados descrevendo os algoritmos utilizados para a tran^
formação de coordenadas, as rotinas de calibr^ação e manuten
ção do robô, o programa de aprendizado e controle de execu
ção de tarefa e outros programas de apoio disponíveis no Ia
Z boratório.
O quinto capítulo se refere à apresentação da lin
guagem de alto nível para programação de robôs industriais
desenvolvida para o laboratório. A estrutura dos programas,
suas estruturas de dados e seus comandos são apresentados
neste capítulo.
No apêndice III são apresentados alguns exemplos,
¿a. de utilização de robôs industriais, implementados no labora
tório.
—-r-X
•
.06.
Se a utilização de robôs industriais no Brasil
ainda é uma questão polêmica devido às estruturas sociais e
econômicas • atuais e mesmo se esta utilização é economicamen
te viável, a pesquisa e o desenvolvimento desta tecnologia
se encontra, sem sombra de dúvida, bastante atrasada. O
objetivo principal deste trabalho é tentar dar um passo na
direção de solucionar este problema sendo voltada para o
verdadeiro fator de domínio de qualquer tecnologia: a forma
ção de recursos humanos.
..V
•
-y
•
'"'3 -r^
"_^7Z CAPlTUIX) I - SOBKE OS ROBOS HffiUSTRIAIS
:::.::Z
"Does a robot displace a human being? Certainly, but he does so at a job that, simply because a robot can do it, is beneath the dignity of a human being; a job that is no more than mindless drudgery. Better and more human jobs can be found for human beings - and should"
(Isaac Asimov)
.,v
Q . 08.
1.1 - IfíTRODUÇÂO
Zi>
•- ''- Desde sua aparição, a palavra robô vem sendo_ asso
,V ciada à uma idéia popular negativa representando sempre uma
ameaça aos seres humanos. Esta palavra, vinda do inglês
, "robot" é originária da palavra tcheca "robota" que signify
^ ca trabalhador. Ela foi primeiramente empregada em 1921 nu
ma peça de teatro de Karel Capek chamada R.U.R ("Rossum's
Universal Robots") [ 1 ]. Nesta peça, um brilhante cientista
Zi criou uma linha de robôs projetados para liberar a humanida
ZJ de do trabalho. No começo o projeto é completamente bem su
^ cedido até que estes robôs começajn a ser utilizados em guer
ras para matar seres humanos. Depois que um cientista irre£
ponsável do laboratório de Rossum coloca emoções e sentimen
tos nos robôs a tragédia se consuma. Os robôs, mecanicamente
perfeitos, não toleram mais serem tratados como escravos p£
los humanos imperfeitos, se rebelam e aniquilam toda a vida
humaiia. . -y
A partir daí, vários autores de ficção científica
continuaram utilizando o termo robô geralmente para descr£
ver seres extremamente fortes e inteligentes quase* sem.pre
em luta contra a humanidade. Esta imagem sinistra persiste
até hoje no imaginário popular, a despeito de esforços de
autores tais como Isaac Asimov e de filmes na linha de "Per
didos no Espaço" e "Guerra nas Estrelas", que tentam modifi^
car esta imagem nos apresentando o verdadeiro papel a ser
desempenhado pelos robôs nas próximas décadas, que é o de
auxiliar a humanidade liberando-a de trabalhos que não são
próprios para seres humanos seja devido à periculosidade da
tarefa ou limitações físicas (força por exemplo) para execu
tá-la, seja devido à falta de atributos necessários para
torná-la interessante para a mente humana.
Mesmo quando aplicada à robótica industrial, a pa
.09.
lavra robô é usada ainda para denominar uma grande divers_i
dade de máquinas começando desde dispositivos mecânicos ex£
cutando uma única e repetitiva série de movimentos, passan
do por equipamentos mais sofisticados, controlados por com
3 putador, indo até aos robôs ditos inteligentes com um sist£
^ ma sensorial avançado permitindo uma capacidade de decisão
-j^ e geração de planos para a execução de uma dada tarefa.
-V
Todos estes dispositivos denominados de robôs in
dustriais podem ser classificados em uma das duas catego
•- rias: aqueles que já atingiram um nível de confiabilidade e
V tecnologia suficiente para torná-los economicamente viáveis
na indústria; e aqueles cujas dificuldades e necessidades
tecnológicas, pelo seu grau de complexidade, ainda são in
viáveis economicamente de serem utilizados.
Apesar das aplicações dos robôs nas indústrias ain
da se restringirem a tarefas simples e sem. muita necessida
de de equipamentos de grande complexidade, a tendência é
que, devido à elevação constante do custo de mão-de-obra,
associada ao desenvolvimento de tecnologias a um custo cada tf
vez menor, tarefas cada vez mais complexas sejam realizadas
por robôs industriais gerando as fábricas versáteis e total^
mente automatizadas.
Este capítulo tem como objetivo principal apresen
tar o estado da arte da robótica industrial no que concerne
à arquitetura mecânica e acionamento dos robôs, seu sistema
de controle, seus dispositivos de sincronização, seus sens£
res e suas formas de aprendizado de tarefas.
Ao final do capítulo apresentaremos a proposta de
um laboratório que possibilite, de uma maneira econômica e
versátil, abranger grande parte dos tópicos referentes aos
robôs industriais no que diz respeito ao ensino e à pesqui
z^
sa desta tecnologia.
1.2 - COMPOffíEKTES BE ÍM KOBO IMJÜSTRIAI-
Segundo a definição do RIA ("Robot Institute of
America"), um robô industrial é um manipulador reprograma
vel multi-funcional projetado para mover materiais, partes
ferramentas ou dispositivos especiais, através de movimen
--^ tos programados para a execução de uma diversidade de tare
,S fas.
Desta forma, as características importantes para
que o dispositivo seja considerado um robô são: versatilida
de, programabilidade e que, uma vez programado, ele realize
a tarefa por si só, sem a interferência de operadores huma
nos.
Um robô industrial típico pode ser mostrado como
tendo os componentes apresentados na figura 1.1 e descritos
abaixo. .
- Manipulador com mão-ferramenta e acionadores:
Uma estrutura mecânica composta de engrenagens,
elementos de transmissão e acionadores, possuin
do graus de liberdade suficientes para a execu
ção das tarefas destinadas ao robô. A mão-ferra
menta é o dispositivo responsável pela execução
do trabalho útil.
- Fonte de potência:
Fornece a energia na forma adequada para os
acionadores e o sistema de controle do robô.
.10.
.11
SISTEMA SENSORIAL
\7
DISPOSITIVO DE PROGRAMAÇÃO DE
TAREFA
FONTE
POTENCIA
CONTROLADOR <F
o MEMORIA
DE TAREFA
MANIPULADOR COM MÃO-FERRAMENTA E
ACIONADORES
\7
DISPOSITIVOS DE
SINCRONIZAÇÃO
Fig. 1.1 - Diagrama de blocos de um robô
trial típico.
indus
- Controlador: *
É o responsável pela coordenação e execução das
funções a serem executadas pelo robô.
- Memória de tarefa:
Ê o meio de armazenamento utilizado pelo contro
lador para guardar programas de novas tarefas
ou, a partir de programas anteriormente guarda
dos, executar uma tarefa já aprendida.
- Dispositivo de programação de tarefa:
Uma unidade de entrada e saída com funções tais
que facilite a programação do robô por um opera
o
•O
.12.
^ dor.
- Dispositivos de sincronização:
3 São dispositivos que permitem a coordenação das
ações do robô com máquinas e/ou eventos exter
^ nos.
- Sistema sensorial:
Z Conjunto de sensores que permitem ao robô reco
'2^ nhecer mundaças de condições no seu meio amblen
-> te de trabalho.
Desta forma, um robô industrial, composto da int£
gração dos vários dispositivos descritos acima, possui as
características de versatilidade, aprendizado e automação
O que têm sido os principais atrativos para a sua crescente
^ utilização na automiação de processos industriais.
Embora possuindo uma mesm.a definição, os robôs in
dustriais diferem enormemente uns dos outros segundo sua
forma, seus tipos de acionamento, seu sistema de oontrole e
V seus sensores dependendo do tipo da aplicação para a qual
Z ele é construído.
Estes vários tipos de robôs industriais podem ser
classificados em três categorias ou gerações [58]:
^ - Primeira geração (1960 - 1970)
São os robôs do tipo "playback". Possuem sistema
de controle e sensores necessários apenas para
'3 memorizarem uma determinada tarefa e executá-la
repetidamente sem possibilidade de alteração da
mesma durante sua execução.
. 1 3 .
. J
o
- Segunda geração ( 1 9 8 0 ) :
São robôs dotados de sistema de controle que
permitem a integração de sensores externos (vi_
são, tato, ultra-som, etc) para verificar mudan
ças no seu ambiente de trabalho e alterar a sua
programação para se adaptar automaticamente ã
condições não previstas neste ambiente.
- Terceira geração ( 1 9 9 0 ) :
Serão robôs capazes de. aprenderem sem interf£
rência de operadores tendo ainda a capacidade
de dedução e conclusão sobre o seu ambiente de
trabalho e a tarefa a ser executada.
Ao contrário do que acontece na indústria de ml
croeletrônica, onde componentes mais modernos tornam obsol£
tos e inúteis outros mais antigos, é de se esperar que, nas
fábricas do futuro, robôs pertencentes a cada uma destas ca
tegorias trabalhem em harmonia nos vários estágios componen
tes do processo de fabricação.
' Tentaremos nos itens seguintes apresentar o esta
^ do da arte dos vários componentes dos robôs industriais.
- 1 . 2 . 1 - ATMJUÍtetara raecânica dos robôs industriais
•O o A arquitetura mecânica de um robô industrial con
^ siste de uma estrutura composta de juntas articuladas e/ou
de deslizamento, dotada de vários graus de liberdade, de mo
do a ser capaz de, quando comandada, posicionar sua mão-fer
ramenta em um determinado ponto do espaço de trabalho, se
gundo uma determinada orientação.
.14.
Para se especificar a localização e orientação de
um corpo rígido em um determinado sistema de coordenadas,
são necessários seis parâmetros, sendo que três servem para
localizar o centro de gravidade deste objeto e os outros
três especificam a sua orientação em relação ao centro de
gravidade, como visto na figura 1.2.
Fig. 1.2 - Graus de liberdade de um corpo sólido
no espaço .
o - 'O
Desta forma, podemos dizer que um corpo rígido no
espaço tridimiensional possui seis graus de liberdade. Supon
do a mão-ferramenta de um robô um corpo rígido, para que
ela possa ser colocada em qualquer ponto do espaço de traba
lho do robô, em qualquer orientação, este robô necessita
ter no mínimo seis graus de liberdade.
Assim, a arquitetura mecânica de um robô pode ser
^ .15.
-J Já para a orientação da mão-f erramenta, os vários
Z tipos de robôs possuem uma arquitetura semelhante, com os
^ três graus de liberdade mostrados na figura 1 . 4 , correspon
^ dentes aos graus de liberdade de um punho.
o
sub-dividida em duas partes: a primeira que posiciona a
mão-ferramenta no espaço e a segunda que a orienta.
O .
o Robôs industriais comerciais usualmente possuem
três graus de liberdade para a primeira parte e de um a
três graus de liberdade para a segunda, dando um total de
quatro a seis graus de liberdade dependendo da aplicação a
^ que se destina o robô.
Para a parte da arquitetura mecânica do robô, re£
Z ponsável pela localização da mão-ferramenta, uma variedade
^ de configurações já foram construídas, mas sempre sendo uma
^ combinação das estruturas básicas associadas aos sistemas
^ de coordenadas cartesiano, cilíndrico, polar e de revolução
como mostrado na figura 1.3 a seguir.
Ê claro que nada impede a construção de robôs cora
Z mais de três graus de liberdade para esta primeira parte.
Isto levaria à vantagem de uma maior versatilidade do robô
referente à capacidade de contornar obstáculos mas por outro
lado, aumenta sobremaneira a complexidade dos algoritmos de
controle devido à redundância da estrutura. *
.16,
.J
Fig. 1.3 - Configurações básicas para os três pri^
meiros graus de liberdade da arquitetu
ra mecânica de um robô industrial.
.17.
-y
Fig. 1.4 - Estrutura clássica para a parte mecâni^
ca responsável pela orientação da mão-
ferramenta.
O número de graus de liberdade e a maneira como
eles são estruturalmente implementados dependem bastante do
tipo de aplicação, mas a prática mostra que seis graus de
liberdade, como visto acima, torna o robô bastante versátil
para um grande número de aplicações.
Outras características importantes da estrutura
mecânica de um robô são: [20]
- Volume de trabalho:
É o conjunto de pontos atingidos pelo robô quan
do ele passa por todas as suas combinações geo
métricas possíveis. Este volume de trabalho é
.18.
•O
função das grandezas geométricas do robô, seus
graus de liberdade e suas limitações mecânicas
para cada um destes graus de liberdade. A figu
ra 1.5 abaixo mostra a especificação do volume
de trabalho para um determinado robô industrial.
40»
719 ^ - ^ ^ • ^ f e w
0
Fig. 1.5 - Especificação do volume de trabalho de
um robô industrial [ 4 ].
CO.-:::: : : . : [ : : : E R G : A T ^ U C L E A R / S P
1. p. E. N.
.19.
- Peso do robô:
Como o nome diz, é quanto o robô pesa, variando
desde alguns quilos até algumas toneladas para
os varios tipos de robôs encontrados no merca
do. Esta é uma característica importante quando
o robô tem que ser fixado no teto ou em vigas
para a execução do seu trabalho.
- Capacidade de carga:
É o peso máximo que o robô consegue manipular
mantendo as suas especificações. Para os robôs
^ atuais esta capacidade de carga varia desde al
gumas gramas até algumas centenas de kilos, d£
Z pendendo do robô e da aplicação a que ele se áes_
tina.
_ - Resolução:
Também chamada de precisão, é o menor intervalo
entre dois pontos adjacentes do volume de traba
lho que podem ser distinguidos um do outro pelo
sistema de controle do robô. A resoluçíão é nor
malmente dependente do controlador do robô,
seus sensores e sua capacidade de carga, varían
do de alguns milímetros até alguns centésimos
de milímetros para os mais precisos.
- Repetibilidade:
Refere-se a maior diferença de posicionamento
atingida pelo robô quando comandado várias v£
zes para retornar a uma mesma posição. Este pa
râmetro mede a estabilidade do sistema de coor
denadas interno do robô e suas folgas, sendo
correntemente o parâmetro mais importante utili
,20.
zado para avaliar um robô, devido ao fato de a
maioria deles manipularem objetos entre locali_
" zações conhecidas sem a utilização de sensores
externos [ 30] .
3
- Velocidade e aceleração:
Podem ser definidos como a velocidade e acelera
ção máximas que um robô consegue deslocar sua
mão-ferramenta de um ponto para outro. Estes pa
râmetros dependem muito da estrutura mecânica
do robô, de seus acionadores e sistema de con
trole e da carga transportada, atingindo valo
res de até 120 graus/s para movimentos rotati_
vos e até 3 m/s para movimentos translacionais.
Estes parâmetros são importantes na determina
ção do tempo do ciclo de trabalho para um deter
minado robô em uma determinada aplicação.
Ê importante ressalvar que várias destas caract£
Z rísticas são também dependentes do sistema de controle do
robô, seus acionadores, seus elementos de transmissão, seus
^ sensores etc. Pesquisas vêm sendo realizadas de modo a tor
_ nar os robôs industriais mais rápidos, mais precisos e mais
leves, transportando cargas maiores.
O 1.2.2- Mão—ferransenta de robos induistriáis
Podemos classificar em dois tipos, as operações
possíveis de serem executadas por um robô industrial: a ma
nipulação de partes ou peças e o posicionamento de uma de
terminada ferramenta ou aparelho necessário para a execução
Z) de uma dada tarefa.
J
.21 .
Para o primeiro tipo é utilizada uma espécie de
garra, que normalmente é projetada para otimizar o processo
onde ela é empregada, enquanto para o segundo tipo, a me
Ihor solução é fixar a ferramenta ou aparelho, diretamente
ao braço do robô.
Enquanto a parte de posicionaunento de um robô é
extremamente versátil, a sua mão-ferramenta deve ser proje
tada para a aplicação que se tem em vista para aquele robô.
1.2.2.1 - íSão-ferraEsenita do tipo garr-a
Normalmente, quando a tarefa do robô consiste em
manipular peças ou partes em um determinado processo de fa
bricação, utiliza-se uma mão-ferramenta do tipo garra cone£
tada diretamente ao punho do robô.
O tipo de garra utilizado depende da foi'-ma, peso
e material a ser manipulado; existindo uma diversidade de
opções. As mais utilizadas são as garras mecânicas, a vá
cuo e as magnéticas. *
Garras que possam ser utilizadas em uma diversida
de de operações, normalmente tentando emular a mão humana,
são objetos de inúmeras pesquisas mas não se encontram ain
da em um estágio tal que possam ser empregadas na indÚ£
tria [48 ] .
Alguns tipos de garras mais utilizadas estão mos
tradas esquematicamente na figura 1.6,
.?2
<0¥
GARRA EVOLUÍDA
GAIIO A VÜCUO
GARRAS MAGNÉTICAS
GARROS MECÂNICAS
Fig. 1.6 - Alguns tipos de garras
A for'ca com que uma de Lermiriada garra deve segu
rar um objeto a ser manipulado deponde de váraos fatores»
entre eles o peso da peça, a distância de pegada em relação
ao centro de gro.vidade da peça, a direção do movimfento a
ser realizado e a máxima aceleração do manipulador car^regan
do a peça. Esta força tem que ser calculada de forma que a
garra nunca largue o objeto ou permita uma mudança de orlen
tação da peça em relação ao robô.
Os tipos de aciona-mento de uma garra mecânica p o
dem ser elétrico, pneií.inático e hidráulico, sendo que todos
os três tipos são bastantes utilizados na pi-^ática.
Para a aplicação de r-obôs industriais alimentando
máquinas fer'ra . iT ientas em células flexíveis de fabricação, uma
garr'a mecânica muito utilizada é a com. duas mãos, mostrada
na figura 1.7 a S E A ' U i r .
.23.
Fig. 1.7 - Garra mecânica de duas mãos.
Z Esta garra tem a vantagem de diminuir o número de
movim.entos a ser realizado pelo robô, pois com uma aproxima
^ ção ela pode pegar a peça já usinada com uma das mãos, gi
rar o conjunto e colocar, com a outra mão, uma peça não us^
nada na máquina. Este tipo de operação reduz consideravel^
^ mente a duração do ciclo de trabalho do robô.
-Q
" As garras a vácuo e magnéticas são mais dependen
tes ainda da aplicação, pois variam bastante com o tipo de
^ superfície disponível para a pegada, sua temperatura e o ma
^ terial a ser pego. Por exemplo, uma garra magnética só pode
pegar materiais ferro-magnéticos.
'Z^ Em [ 32] vemos um exemplo de aplicação de robôs na
C manipulação de tubos de televisores onde a melhor solução
encontrada, devido à fragilidade dos mesmos, foi a utiliza
,^ ção de uma garra a vácuo.
Algumas pesquisas tem sido feitas utilizando-se li
gas com memória [42] na confecção de garras mecânicas para
robôs industriais. Tais ligas são elementos mecânicos cuja
•1 forma depende de sua temperatura. Controlando-se esta
.24.
temperatura por meio da corrente elétrica que passa pelos
elementos, controla-se então a sua forma.
1.2.2.2 - Eão—ferraiŒeinita tipo ferran.enita
Um robô em uma linha de produção tem, normalmen
te, uma função específica. Quando para esta função é neces
sário utilizar uma determinada ferramenta ou aparelho, tor
na-se mais conveniente adaptá-lo diretamente ao braço do ro
bô ao invés de se projetar uma garra para segurá-lo.
Algumas ferramentas tipicamente empregadas podem
ser vistas de maneira esquemática na figura 1.8.
'Z
Fig. 1.8 - Algumas ferramentas usuais adaptadas
em robôs: a) solda a arco; b) cabeçote
de solda ponto; c) maçarico; d) tira
dor de porcas automático; e) cadinho;
f) esmeril [16].
.25.
Se for o caso de um mesmo robô necessitar de duas
ou mais ferramentas e/ou aparelhos para a execução de uma
dada tarefa; um sistema de encaixe por baioneta pode ser
utilizado, semelhantemente aos existentes em máquinas ferra
mentas de comando numérico, como o mostrado na figura 1.9.
Fig. 1.9 - Troca de ferramentas
[16].
tino baioneta
Ao se escolher um determinado robô para utilizar
uma determinada ferramenta deve-se levar em conta o peso
daquela ferramenta e seus acessórios, a precisão requerida
e os máximos esforços originados na execução do trabalho.
1.2.3 - AcionsüDentò de i > D b ô s imdiasItríaLis
J
Como mostrado, a arquitetura mecânica de um robô
industrial é um conjunto de estruturas e juntas capazes de
movimentos em várias direções para realizar um determinado
trabalho. Estes mecanismos são acionados por atuadores que
Z'Zj
.26.
podem ser acoplados diretamente às estruturas ou juntas cor
respondentes ou podem transmitir movimentos para estas jun
tas através de correntes, engrenagens, correias, parafusos
de esferas recirculantes etc.
Os três tipos de acionadores mais utilizados em
robôs industriais são os hidráulicos, elétricos e pneumát_i
COS.
Os acionadores hidráulicos, lineares e rotacio
nais, oferecem a maior relação entre potência e peso sendo,
até o momento, a melhor opção para os grandes robôs. Como
o custo dos atuadores hidráulicos não é proporcional à po
tência entregue, este tipo de acionamento se torna caro pa
ra robôs de pequeno e médio porte.
Os robôs utilizando acionamento elétrico têm como
atuadores motores de corrente contínua com imã permanente,
motores de passo e mais recentemente motores de corrente a.l_
ternada.
•
Os motores CC têm sido os mais empregadoè devido
principalmente à facilidade de servo controladores tanto de
posição como de velocidade, bem como à grande variedade de
motores deste tipo no mercado.
Os motores de passo são empregados em robôs pequ£
nos e devido à grande facilidade de se controlar velocidade
e posição muitas vezes são empregados em malha aberta, di£
pensando a necessidade de sensores e codificadores custo
SOS. Problemas de se detetar perda de pulsos, devido a tor
ques grandes, às vezes torna impraticável trabalhar em ma
lha aberta quando grande precisão e repetibilidade são exi^
gidas.
.27.
O avanço na eletrônica de chaveamento tem levado
à possibilidade de se controlar motores de corrente alterna
da tanto em posição como em velocidade sendo esta uma área
promissora de acionamento principalmente devido ao baixo
custo dos motores envolvidos.
Todos estes motores elétricos possuem uma caracte_
rística de torque-velocldade que obrigam o uso de engrena
gens e sistemas de transmissão na construção destes robôs.
Pesquisas utilizando motores elétricos com terras raras
(magnetos de samarium-cobalto) têm levado à construção de
motores CC com uma alta relação de torque/peso tornando po£
sível a utilização de acionamento direto, isto é, o motor
é colocado diretamente na junta a ser acionada. Este tipo
de construção vai aumentar a precisão e repetibilidade, bem
como diminuir a necessidade de manutenção dos robôs, uma
vez que eliminará as engrenagens e sistemas de transmissão
atualmente utilizados no acionamento eléti-ico que, devido
aos desgastes e folgas, contribuem para degenerar as especi^
ficações iniciais dos robôs [55].
O acionamento pneum.ático, similar ao acitinamento
hidráulico, tem como vantagens sobre este o seu baixo custo
e a não utilização de fluídos, mas por outro lado, tem a s£
ria desvantagem de ser de difícil controle quanto ao pos^^
cionamento e velocidade de servo-atuadores. Esta desvánta
gem tem levado à utilização deste tipo de acionamento em ro
bôs de sequência fixa, ou seja, robôs que possuem pontos de
paradas determinadas mecanicamente.
Ê interessante frizar que o ambiente onde o robô
será utilizado têm alguma influência sobre o melhor tipo de
acionamento para aquele robô. Por exemplo, para tarefas de
pintura com solventes altamente inflamáveis e explosivos,
os robôs com acionam.ento hidráulico, por sua característi
"Z
.28.
-3 ;:3 O- tipo de acionamento a ser utilizado em um robô
. depende de cada caso específico, sendo que algumas vezes a
(fc, melhor solução é empregar uma combinação dos três tipos de
_ acionamento vistos acima.
1.2.4 - Sistenüa de comtrole dos robôs iiradustriais
Os sistemas de controle dos robôs industriais va
riam desde simples seqüenciadores mecânicos até computado^
res de grande porte, passando por seqüenciadores eletro-m£
caniços, eletrônicos, controladores lógicos programáveis, ml_
crocomputadores, minicomputadores e sistemas distribuídos de
computadores.
Funções inerentes a todos os sistemas de controle
de robôs industriais são:
1 - Possibilitar a programação ("memorização") de
uma determinada tarefa. 4
2 - A partir de dados armazenados na memória de
tarefa e de sinais vindos de dispositivos de
realimentaçao localizados no robô, controlar
a trajetória do manipulador de maneira a que
ele realize a tarefa programada.
^ 3 - Comunicar-se com dispositivos externos (ou
3 tras máquinas, sensores, etc) de forma a sin
^ cronizar a execução da tarefa com eventos ex
^ ternos e/ou alterar esta execução de forma a
adaptá-la a modificações percebidas no amblen
'" te de trabalho do robô.
ca menos inflamante e explosiva, são os mais indicados.
. 2 9 .
Estas funções variam enormemente, quanto à compl£
"" xidade, na implementação de cada robô, sendo dependentes da
^ " gama de atividades previstas para aquele robô, sendo que a
3 sua potencialidade e versatilidade são determinadas pelo
^ seu sistema de controle.
^ A função 1 acima, será tratada com mais detalhes
^ no item 1.3 a seguir e a função 3 nos sub-itens 1.2.5 e
1.2.6. Desta forma, neste sub-item trataremos apenas da fun
ção 2, qual seja, o controle da trajetória do robô na realã^
Z zação da tarefa.
^ Quanto ao tipo de controle de trajetória, os ro
^ bôs industriais podem ser divididos em dois grupos:
— - Robôs não-servocontrolado.
- Robôs servocontrolados.
Os robôs não-servocontrolados são aqueles em que
o comando dos atuadores, realizado em malha aberta, é do ti
po liga-desliga, sendo que o controle do posicionanífento é
dado por chaves de fim de curso no manipulador ou em sequen
O dadores fora do robô.
Robôs empregando este tipo de controle são os mais
^ simples sendo conhecidos também por robôs "bang-bang", "pick
and place" ou de seqüência limitada. A programação destes
robôs é feita determinando a seqüência de movimentos deseja
da e posicionando-se convenientemente as chaves de fim de
O curso de cada eixo do manipulador.
Este robôs operam com velocidades altas, com boa
repetibilidade, baixo custo e grande confiabilidade. Suas
desvantagens são a pequena capacidade de programação e posi_
.30.
cionamento, a grande dificuldade de alteração de programas
tornando a sua utilização pouco flexível.
Embora ainda seja, atualmente, o tipo de robô mais
utilizado na indústria, provavelmente ele não será utiliza
do nas fábricas do futuro, por não permitir mudanças contro
ladas automaticamente por uma linha de transmissão. Somente
os robôs controlados por computador permitem esta facilida
de. Assim, no decorrer deste sub-item, concentraremos nossa
atenção nos robôs servocontrolados comandados por computa
dor.
Nos, robôs servocontrolados, o comando dos aciona
dores é feito em m.alha fechada com realimentaçao de posi^
ção, velocidade e/ou aceleração.
A vantagem deste tipo de controle em relação ao
anterior é que o robô pode ser posicionado em. qualquer pon
to do seu volume de trabalho, ponto este não mais determina
do por chaves limites mas sim por valores de referência ar_
^ ma?;enados em memórias. Esta facilidade implica em uma m.aior
flexibilidade na programação pois desvios, subrotiíias e S £
leção de programas de acordo com sinais externos podem ser
facilmente conseguidos com este tipo de sistema de contr£
Z le. E mais, agora o controle do robô é dependente de sinais
(bits) idênticos aos gerados em sistemas de projeto assist_i
^ dos por computador, abrindo a possibilidade de interligação
^ entre os mesmos.
^ O diagrama de blocos de um controlador PID (Pr£
'Zj porcional Integral Derivativo) para uma das junções de um
robô pode ser visto esquematicamente na figura 1.10 abaixo.
Nesta figura, K é o ganho do erro de posição que
tem por função melhorar o tempo de resposta do sistema, L
.31.
é o ganho da integral do erro que garante um controle de
estado estacionário e H é o ganho derivativo que melhora a
estabilidade" e evita oscilações no sistema. Estes três valo
res, que podem ser diferentes para cada uma das junções de
um robô, caracterizam completamente um sistema de realimen
tação.
Um esquema deste tipo é implementado no(s) compu
tadores que formam o sistema de controle do robô, sendo que
mesmo o tipo de controle pode ser facilmente alterado depen
dendo do estado da tarefa sendo executada. Um exemplo é a
mudança do esquema da figura 1.10 acima de controle para um
esquema onde a variável a ser realimentada é o tonque do mo
tor, bastante utilizado em aplicações de montagem [34].
« Y
e-ed
ANGULO COMANDADO
- ed
K K
H H VELOCIDADE
ÂNGULO
Fig. 1.10 - Diagrama de blocos do controle de uma
junta de um robô.
p- -
. 3 2 .
Quanto ao controle da trajetória muitas pesquisas
vêm sendo feitas para torná-lo mais rápido, preciso e ef¿
ciente. Neste controle, tanto os fatores cinemáticos (geome_
tria do robô, velocidade e aceleração) bem como os dinâmi^
COS (tonques, massas, energia) são de grande valia na obten
ção de sistemas de controle melhores.
Estudo da dinâmica, dos manipuladores com a obten
ção de modelos teóricos e ferramentas de estimação automát_i
ca de parâmetros dos robôs tem uma im.portância fundam.ental
na otimização das respostas dos manipuladores [18 ] [38 ].
A cinemática de robôs refere-se à geometria, velo
cidade e aceleração de suas partes referentes a um dado si£
tema de coordenadas.
A posição de um determinado robô pode ser reprie
sentada em qualquer um dos três sistemas de coordenadas a
^ seguir.
.y - Sistema de coordenadas de junção.
- Sistema de coordenadas cartesiano.
- Sistema de coordenadas de ferramenta.
O sistema de coordenadas de junção é o mais natu
ral sendo o conjunto de ângulos e deslocamento de cada jun
ta do robô, como mostra a figura 1.11 para um robô articula
do.
Neste sistema, um determinado ponto do espaço mais
a orientação da mão-ferramenta do robô é representado por:
PI = (e, 3, a, ç. 6, Y)
. 3 3 .
Fig. 1 . 1 1 - Sistema de coordenadas de junção para
um robô articulado com seis graus de
liberdade
J
'O
Quando na programação de uma determinada tarefa
somente os pontos extremos de uma trajetória são importan
tes, sendo que o caminho percorrido pelo mianipulador entre
estes pontos é irrelevante, o sistema de coordenadas de jun
ção, por ser o mais simples e direto de se controlar, é o
mais indicado.
Um movim.ento interpolado neste sistema de coord£
nadas corresponde a calcular a velocidade de cada atuador
de junção de forma a que todos comecem a se movimentar ao
mesmo tempo e terminem o movimento também ao mesmo tempo.
.34.
i 3
Uma vez que a relação entre as coordenadas de jun
ção e as coordenadas cartesianas é altamente não linear, es
te tipo de-interpolação normalmente conduz a caminhos curv_i
líneos no sistema cartesiano para a maioria das arquitetu
ras mecânicas dos robôs, como mostra a figura 1.12 para um
robô com duas articulações.
ZJ
DESTINO
INICIO
Fig. 1.12 - Diferença entre movimentos retilíneos
no sistema cartesiano e no sistema de
coordenadas de junção par^a um manipu
lador com duas articulações [ 9 ].
o sistema de coordenadas de junção, embora sim
pies, é muitas vezes difícil de ser utilizado para determi^
nadas tarefas. Quando é necessário exprimir relações entre
pontos a serem atingidos pelo robô ou mesmo se estes pontos
estiverem se movendo segundo uma determinada lei, torna-se
impraticável a utilização deste sistema de coordenadas.
Para resolver este tipo de problema, sistemas de
coordenadas externos ao robô são utilizados. A figura 1.13
abaixo mostra a definição dos outros dois sistemas de coor
denadas mais utilizados.
.35.
O
o
Zj
z
:.Z)
:0
:0 ::0
Fig. 1.13 - Sistemas de coordenadas cartesiano
(x, y, z) e de ferramenta (x', y', z').
No sistema de coordenadas cartesianas a posição
do robô é especificada por três valores associados a cada
eixo do sistema de coordenadas mais três ângulos definindo
a orientação da mão-ferramenta do robô.
'O
'O
•o 'O
PI = (x, y, z, ç, 6, Y)
A cinemática dos robôs trata das relações de
transformação entre os sistemas de coordenadas de junção pa
ra os sistemas de coordenadas externos ao robô e vice-versa.
Para se obter movimentos retilíneos no espaço car
. 3 6 .
tesiano normalmente são feitas interpolações entre os pon
tos extremos da reta e utiliza-se interpolação no sistema
de coordenadas de junção entre dois pontos adjacentes. A
precisão da trajetória é função do número de pontos interpo
lados no sistema cartesiano, como mostra a figura 1.14.
•V
:0
Fig. 1.14 - Geração de trajetórias retilíneas no
espaço cartesiano para um robô com
duas articulações.
. 3 7 .
No terceiro sistema de coordenadas, o de ferramen
ta, a origem e orientação do sistema são alinhadas com a
mão-f erramenta do robô, daí vindo o nome. Este alinhamento
permite definir-se naturalmente movimentos na direção da
ferramenta e no plano normal a esta direção, facilitando a
especificação do algumas tarefas.
Desta forma, devido à natureza e quantidade de
computação exigidas, uma parte crítica do sistema de contro
O le de robôs é dedicada ao cálculo de posições e ti-ansforma
ções necessárias pela movimentar o robô de uma determinada
maneira.
A solução mais adotada para a resolução destes
problemas é a utilização de matrizes de transformação homo
gêneas onde a posição do robô, seguindo uma determinada sé_
rie de movimentos, é representada pelo produto de matrizes
de transformação especificando movimentos incrementais [45 ] .
A arquitetura de um sistema de controle de robôs
industriais, para executar as três funções básicas definj^
das no início deste sub-item, possui uma enormidadej» de so
luções dependentes dos tipos de sensores integrados ao ro
bô, dos sistemas de coordenadas possíveis de serem utiliza
das, das suas especificações, e t c . Elas podem ser implemen
tadas com um único microcomputador até ao extremo de utili_
zar-se redes de computadores de médio e grande porte para o
controle do robô.
A complexidade dos programas de controle cresce
de forma exponencial com o número de sensores, com a quan
tidade de informação entregue por estes sensores e com as
maneiras que estas informações são processadas para modifi_
car as trajetórias do robô. Para robôs com uma interação
complexa com sistemas sensores, a tendência é a utilização
. 3 8 .
Uma nova possibilidade é a utilização de memórias
EEPROM ("ellectrically erasable programmable -read only
memory") que possuem a não volatilidade das EPROM's tendo
ainda a capacidade de alteração dos programas do robô por
uma linha de comunicações sempre que for necessário, o que
é muito desejado para as fábricas do futuro [29],
1.2.5 - Bispositivos de siocixniizagao CCM eventos externos
O robô como uma parte integrante de um determina
do processo, deve ter a capacidade de sincronizar suas ações
com as de outros dispositivos e eventos deste mesmo proce£
so.
i. P . E. N.
de estruturas hierárquicas de controle, onde o sistema é
particionado em módulos tais que cada um apresente uma com
plexidade limitada independente da complexidade total do
sistema [ 1 ].
Com o custo decrescente dos computadores, a imple
mentação destes sistemas hierárquicos de controle é feita
utilizando-se redes distribuídas de processadores chegando
—^ a ter-se um computador dedicado ao controle específico de
O cada uma das junções do robô [51].
Quanto às memórias de tarefas de robôs industriais
^ uma grande variedade de tipos são utilizadas sendo as mais
^ frequentes atualmente os discos flexíveis, fitas magnéti^
cas, discos rígidos e memórias de bolha magnética, princi^
pálmente pelo fato de serem meios não voláteis de armazena
O mento. Memórias do tipo EPROM ("erasable programmable read
Z only memox-Y") também são utilizadas em robôs se não é nece^
^. sária uma mudança muito frequente dos programas de tarefas.
:'0
.39.
Por exemplo, num processo de descarga de um torno
de comando numérico, o robô só deve pegar a peça usinada
quando for .garantido que o eixo da árvore está em repouso e
que a placa esteja aberta, ou, num processo de alimentação
de uma prensa, tem que ser garantido que só ocorrerá a pren
sagem após o robô ter colocado a peça e se retirado. Esta
sincronização é obtida pelos dispositivos do robô de sincro
nização com eventos externos.
Assim, todos os robôs industriais devem dispor de
sinais de entrada e saída de forma a sincronizar suas ações
de acordo com os eventos do processo onde ele é utilizado.
Estes sinais dependem bastante da aplicação podendo vir des
de simples chaves limites até sinais vindos de outros sis
temas eletrônicos de controle, seja de máquinas de comando
numérico, outros robôs ou computadores de supervisão de
processos.
Estes sinais podem ser utilizados de duas mane^^
ras pelo sistema de controle do robô. Na primeira o progra
ma de controle testa um determinado sinal e dependendo do
seu estado executa uma determinada ação. Na segunda, este
sinal é ligado ao sistema de interrupção do controlador.
Quando ele ocorre, o sistema de controle suspende a ativida
de que estava sendo executada e desvia para uma rotina que
tratará a ocorrência daquele sinal. Uma vez tratada, o pro
grama de controle retorna para a atividade que foi suspendi^
da.
Um. exemplo de uma aplicação típica de um robô em
pregado para soldagem ponto a ponto de uma carrocería de
automóvel serve para ilustrar o tipo de sincronização que
um robô deve ter:
- Quando a carrocería do automóvel entra na linha
.o
'O
. 4 0 .
de soldagem, o seu tipo é determinado, seja por
leitura óptica de um código, seja por informa
• ção de um sistema central, de controle, e passa
do ao robô a fim de que ele selecione o progra
ma de soldagem daquele tipo de carrocería.
- Quando a carrocería está posicionada, esta in
formação é passada ao sistema de controle do ro
bô para que ele inicie a soldagem.
- A partir do sinal anterior, o robô posiciona a
pistola de soldagem na primeira posição a ser
soldada e envia um sinal para o equipamento de
solda iniciar a soldagem.
- Quando a solda está pronta, o equipamento de
O soldagem avisa o robô e ele posiciona a pistola
na próxima posição e o ciclo continua até que
,^ todos os pontos tenham sido soldados.
- Quando o robô tiver se afastado da carrocería
ele envia um sinal para o controlador <ie esteí^
ra e o automóvel é retirado daquela estação de
ZJ soldagem.
Outro tipo de sincronização possível é quando o
robô tem que realizar a tarefa em uma peça sobre uma estei^
ra em movimento contínuo.
Duas soluções são possíveis. A primeira é ensinar
tj o robô com a peça parada e depois colocá-lo em uma plata
forma que se desloca sincronam.ente com a esteira. Esta solu
^ ção envolve uma mecânica mais complexa além de se perder
tempo com o retorno da plataforma do robô após a execução
da tarefa.
.41.
.—
A segunda maneira é, com o robô parado, fornecer
informação contínua da posição da peça na esteira e o sist£
ma de controle utilizar esta informação para corrigir, o po
sicionamento do manipulador enquanto a peça passa pela r£
gião de trabalho, como mostra a figura 1,15.
'.^
SENSOR
Fig. 1.15 - Robô executa a tarefa enquanto a pe
ça passa pela sua região de trabalho.
Para este tipo de solução, o controlador do robô
deve ser capaz de trabalhar em coordenadas cartesianas ao
invés de coordenadas de junção, como foi visto no item an
terior.
1.2.6 - Sistessa sensorial
O sistema sensorial tem um papel fundamental para
o desenvolvimento e aplicação de robôs industriais, pois
.42.
possibilita a sua adaptação a mudanças no ambiente de traba
^ Iho, a verificação da execução de uma tarefa ou comando, o
controle de- posicionamento e velocidade, a deteção de obsta
> culos, a identificação e localização de objetos e outros fa
^ tores que possam influenciar o funcionamento do robô na ex£
cução de um determinado serviço.
^ Isto não significa que um robô tenha que ter n£
" çessariamente um sistema sensorial complexo para ser aplica
" do. A própria utilização industrial atual desmente este fa
^ to pois a maioria dos robôs em uso tem um sistema senso
" rial simples e mesmo assim é largamente empregada. Esta po£
.... sibilidade ocorre somente para aplicações onde possa ser
^ garantido que não ocorrerão mudanças no ambiente onde o TO_
^ bô irá funcionar e que todas as peças a serem manipuladas
" por ele sejam apresentadas na mesma posição com a mesma
^ orientação.
•
\ C o m o em inúmeras aplicações isto não é possível,
ou se for é muito caro e pouco flexível com relação à alte
^ rações, existe a necessidade de robôs mais flexíveis e ver
^ sáteis em termos de interações com as peças e coiíiponentes
da tarefa, e a única maneira de se conseguir isto é dotá-lo
. de um sistema sensorial desenvolvido.
Por exemplo, seria muito mais interessante e eco
^ nômico se um robô fosse capaz de pegar uma peça dentro de
^ uma caixa cheia, orientá-la e continuar a execução da tar£
^ fa do que ter que apresentá-la já posicionada e orientada
para o robô pegá-la.
"'Zj
' Concluímos então que um robô será tanto mais ver
sátil e flexível quanto mais desenvolvido for o seu sistema
^ sensorial. Esta conclusão tem levado a um grande esforço de
pesquisa nesta área, no intuito de aumentar a capacidade
.43.
dos sensores e a sua integração com o sistema de controle
dos robôs.
Os sensores utilizados por um robô industrial po
dem ser classificados em dois tipos: sensores de percepção
interna e sensores de percepção externa.
Os sensores de percepção interna estão mais asso
ciados à dinâmica e acionamento da estrutura mecânica sendo
utilizados para fornecerem informações para o sistema de
realimentaçao do controlador do robô. Os mais empregados
são os sensores de posição, velocidade, aceleração e tor
que podendo cada uma das juntas do manipulador possuir um
conjunto destes sensores.
A informação destes sensores têm como principal
função verificar se o acionamento dos atuadores foi executa
do conforme comandado e também se está dentro dos limites
admitidos pela estrutura mecânica do manipulador.
Os sensores de percepção externa estão associados
à informações fora da estrutura mecânica, sendo aelaciona
das ao ambiente e ao contexto da execução da tarefa. Eles
têm a finalidade de equipar o robô com sentidos rudimenta
res parecidos com os sentidos fundamentais do ser humano:
visão, audição e tato.
Passaremos a dar uma breve idéia dos sensores
mais empregados com robôs industriais.
- Sensores de partes e peças:
São os sensores mais simples servindo basicamen
Z te para detectar se em uma dada posição existe
uma peça ou não. Eles podem ser por contato
(chaves) ou a distância, por meio de detecção
.44.
óptica, magnética, elétrica, térmica, acústica
e t c .
Sensores de proximidade:
A finalidade destes sensores é determinar a àis
tância de um objeto referente ao sensor, tanto
para manipulação do objeto como para evitar ohs^
táculos na trajetória do robô [43].
Os sensores de proximidade podem ser divididos
em três categorias conforme o tipo de detecção
do sinal [11]:
a - Aqueles em que o objeto a ser detectado na
turalmente transmite o sinal (temperatura,
radiação, e t c ) .
b - O objeto está equipado com um transmissor
do sinal.
c - O sinal é transmitido para o objeto e o
refletido é detectado.
Embora existam sensores de proximidade* nestas
três categorias, a terceira categoria oferece
vantagens que a tornam mais promissora pois,
principalmente, independe das características
intrínsecas do objeto a ser detectado.
Vários tipos de sinais transmitidos são utiliza
dos em sensores de proximidade da terceira catie
goria. Entre eles, os mais utilizados são:
1 - Ultra-som: a medida da distância é obtida
pela determinação do intervalo de tempo en
tre o sinal transmitido e o sinal refleti^
do. A aplicação do efeito "doppler" permi
.45.
te também medir-se a velocidade entre o
objeto e o sensor.
2 - Ondas de rádio freqüência: são de uso limi^
tado na atualidade devido à sua complexida
de e alto custo.
3 - Radiação luminosa: são os mais utilizados
atualmente sendo os mais empregados os de
radiação infra-vermelha e lasers. Normalmen
te a distância é medida pela diferença de
fase entre o sinal • transmitido e o recebi^
do. Os lasers, pelo fato de serem de radia
^ ção coerente difíceis de serem encontradas
..V no ambiente de trabalho do robô e de grande
,.Z- precisão, oferecem os sensores de proximida
* de mais exatos; e, utilizando-se de técni^
cas de reflexões múltiplas, vários pontos
do objeto podem ser medidos, existindo tra
balhos que utilizam este fato tanto para me_
dir distâncias como para reconhecimento de
objetos [59].
Embora as câmaras de televisão possam ser usa
^ das como detectores de proximidade, elas serão
discutidas no item específico de sensores de vi
são.
'Z - Sensores de trilha de solda:
" São sensores que determinam a linha de soldagem
-• entre duas peças.
Dois tipos de sensores são utilizados: um que
^ detecta o esforço e a direção deste esforço
através do contato físico entre um sensor e a
trilha a ser soldada; outro detecta opticamen
V
.46.
te o caminho a ser soldado medindo as caractie
rísticas da junção.
Um sensor do segundo tipo fabricado pela ASEA
[ 5] pode ser visto esquematicamente na figu
ra 1.16.
ENTRADA DE AR
SAÍDA DE AR
SENSOR Ó P T I C O
Fig. 1.16 - Montagem de um sensor de trilha de
solda [ 5 ].
J
D
•D
.D
7j
.47.
O sensor é um medidor de distância unidimensio
nal, montado na garra do robô na frente do fio
O de solda. Quando detectando a trilha, o robô mo
^ ve o sensor na direção da superfície ou através
>. da borda ou junção a ser soldada. O sinal é
^ processado pelo computador e o robô é comandado
convenientemente até que condições de fim de
soldagem sejam detectadas. Além de determinar a
junção, este tipo de sensor pode medir o espaça
^ mento entre as partes o que permite ao robô
^ automaticamente adaptar os parâmetros de solda
para aquela junção.
- Sensores de visão:
Estes sensores têm por objetivo, através do pro
cessamento de imagens, o reconhecimento de p£
ças e a localização e determinação de caract£
rísticas geométricas de um objeto e entre vá
rios objetos [11].
As pesquisas em visão artificial para robôs tem
_ por fim o desenvolvimento de novos sensores de
imagens, principalmente os de visão tridimensio
' nal, as modelagens da imagem obtida, algoritmos
O de reconhecimento de formas e análises de c£
nas.
^ Os sensores de visão podem ser divididos em >
duas categorias:
- bidimensionais;
- tridimensionais.
A visão bidimensional, atualmente a única com
.48.
algumas aplicações práticas na indústria, utili^
za como principais sensores os tubos vidicom,
matrizes de foto-diodos e circuitos integrados
do tipo CCD. Enquanto os dois últimos tipos já
fornecem a imagem digitalizada, o tubo vidicom
necessita de um digitalizador de imagem. Esta
imagem é digitalizada em uma matriz, normalmen
te em torno de 256 x 256 pixels ("picture
element") onde cada pixel possui de 2 até 256
níveis de cinza. Imagens mais simples, chamadas
de imagens binárias, sao aquelas cujos pixels
possuem apenas dois níveis de cinza e são as
mais freqüentes atualmente na indústria.
Uma vez digitalizada a imagem, ela pode então
ser submetida a várias técnicas de filtragem pa
ra separar características não importantes da
mesma, e em seguida, algoritmos de análise de
cenas são empregados para extrair as informa
ções desejadas da imagem.
A visão tridimensional será certamente ¿a mais
utilizada no futuro, por ser deste tipo o uni^
verso de trabalho do robô.
Atualmente consegue-se a visão tridimensional
utilizando-se duas cameras bidimensionais em
planos ortonormais, embora sensores tridimensi£
nais já estejam em desenvolvimento.
A figura 1.17 mostra diversas possibilidades de
montagem de sensores de visão para uso com ro
bôs industriais.
.49.
rn-A A-^ 1—K V/ •
Fig. 1.17 - Opções de montagem de sensores de vi
são utilizados com robôs industriais.
i
Os sensores de visão bidimensionais são suficien
tes para uma série de problemas tais como con
trole de qualidade, inspeção de peças, localiza
ção e reconhecimento de objetos planos e t c .
O processamento de imagens visando o reconheci^
mento de formas tem uma série de dificuldades,
entre as quais se destacam:
- o grande volume de informação a ser processa
do, entregue pelos sensores;
• J
.50.
- a variação da imagem obtida devido as transia
ções e rotações dos objetos;
- os problemas de sombreamento e perspectivas;
- o tempo necessário para o processamento.
Para evitar que o sistema de visão aumente con
sideravelmente o tempo do ciclo de trabalho de
um robô, todo o processamento da imagem deve
ser feito em um intervalo que vai de décimos de
segundos até alguns segundos.
Os trabalhos em visão artificial estão direcio
nados em aumentar e estender estas capacidades
apresentadas acima.
- Sensores de tato:
Também chamados de pele artificial, têm como
principal objetivo determinar os esforços real^^
zados ao se pegar lama peça, a forma desta peça
e a existência de deslizamento entre a t>eça e
a garra. Estes sensores têm normalmente a infor
mação apresentada de forma matricial.
Sensores utilizando agulhas que, dependendo se
encostam ou não no objeto, fecham contatos já
foram utilizados. Em outros, estas agulhas são
colocadas dentro de núcleos magnéticos e o de£
locamente das mesmas, proporcional ao esforço
em cada uma, pode então ser medido.
Um sensor determinando também o esforço, pode
ser visto na figura 1.18, onde coloca-se sobre
uma matriz de contatos um elastômero carregado,
.51.
cuja resistencia e proporcional ao esforço nor
mal [ 1 2 ] . Desta forma, a corrente que passa por
cada contato da matriz é proporcional ao esfor
ÇO sobre o,elastomero naquele ponto.
Assim, a pele artificial fornece sinais elétri_
eos correspondentes à parte pegada do objeto e
à posição desta parte relativa à garra do robô
com uma precisão dependente apenas do passo da
matriz de contatos.
O processamento dos sinais vindos deste sensor
pode ser feito de modo semelhante, mas de manei^
ra mais simples em relação ao dos sinais de vi_
são, podendo algoritmos de reconhecimento e Io
calização de partes serem desenvolvidos.
- Sensores de voz:
A finalidade destes sensores é comandar a execu
ção de uma tarefa através de comandos falados e
também permitir que o robô, através de fonemas,
informe as condições da realização de suâ tar£
fa. Já existem dispositivos que reconhecem a.!
guns fonemas e a grande quantidade de pesquisas
neste campo sugerem que este tipo de sensores e
transdutores serão bastante utilizados.
Embora estes sejam os tipos de sensores mais co
muns, existem aqueles que são voltados para aplicações es^
pecíficas tais como sensores de temperatura, radioatividade,
cores, etc..
Um robô dotado de vários sensores integrados ao
seu sistema de controle pode ser visto de maneira esquema
.52,
Zj
-O
Z ALIMENTAÇÃO
/7777 m n rm
z
z Fig. 1.18 - Desenho esquemático de um sensor tipo
pele artificial [12] .
tica na figura 1.19 a seguir.
Assim, um robô equipado com estes sensores, tor
na-se multo mais flexível dispensando equipamentos custosos
e difícies de serem alterados necessários para apresentar
as peças em posições e orientações definidas. Mesmo o reco
nhecimento de falhas e ocorrências imprevistas podem ser m£
Ihor tratadas pelo sistema de controle se o robô possuir um
A 3
.53.
::;:3
A ; 3
:::3
3
".• 3
U L T R A SOM
C O N T A T O _
V E L O C I D A D E
A C E L E R A Ç Ã O
T E L E M E T R I A
P E L E A R T I F I C I A L
V I S A O
SENSORES DE
TORQUE
MEDIDOR DE
PROXIMIDADE
Fig. 1.19 - Sistema sensorial de um robô avança
do [19].
3
•3
7~'3
r:-3
: r3
sistema sensorial mais desenvolvido.
Um exemplo prático onde um robô dotado de visão
consegue pegar e orientar uma peça dentro de uma caixa chela
delas já foi demonstrado experimentalmente [ 7 ]. *
Estes robôs, embora possuindo sensores rudimenta
res, já são capazes de nos dar uma idéia das capacidades
dos futuros robôs e das limitações dos atuais.
1.3 - PROGRAMAÇÃO DA TAREFA
A programação da tarefa consiste em dispositivos
e programas suportes necessários para se ensinar uma deter
minada tarefa a um robô industrial.
Existem dois métodos para se programar esta tare
.54.
fa: o método direto ou programação por aprendizagem e o mé
todo indireto, correspondente à programação da tarefa com
uma lingagem do tipo utilizada em computadores.
Mesmo sendo a maioria dos robôs empregados na in
dústria programados por aprendizagem, as linguagens para pr£
gramação de robôs tem sido alvo de constantes pesquisas o
que em breve refletirá em um aumento de sua utilização in
dustrial.
Neste item serão feitas considerações sobre estes
dois métodos de programação de tarefas para robôs indu£
triáis.
1.3.1 - PrograMação por apreedizageia
Este tipo de programação é mais indicado para ta
refas simples, fortemente repetitivas e em um ambiente de
trabalho totalmente conhecido e invariante.
Neste método, a tarefa a ser executada é í)artici£
nada em uma série de trajetórias e ações e cada uma delas
é "mostrada" ao robô, no modo de aprendizagem, que as mem£
riza, podendo depois repeti-las.
A maneira física de se ensinar uma tarefa neste
tipo de programação assume três modos, como mostrado na fi_
gura 1.20.
O primeiro método é o de aprendizagem direta onde
o operador guia fisicamente o robô pela sua mão-ferramente,
num modo de aprendizagem do seu sistema de controle. Este
método é mais indicado para robôs com estrutura mecânica l£
ve e com movimentos reversíveis, tendo a vantagem de se uti
3
. 5 5 .
3
3
3
-V
3
3
Fig. 1.20 - Métodos de programação por aprendiza
gem para robôs industriais.
lizar os próprios sensores do robô para fornecer os sinais
da tarefa a serem memorizados.
Na segunda maneira, indicada para robôs de grande
porte ou com estruturas mecânicas não reversíveis, i m simu
lador físico da estrutura do robô, com as mesmas dimensões
e sensores de posicionamento e velocidade, é utilizado du
rante a fase do aprendizado. A tarefa é executada pelo ope
rador guiando esta estrutura, ligada ao sistema de controle
do robô que vai memorizando a tarefa para depois comandar o
robô para os mesmos movimentos realizados no simulador. A
principal desvantagem deste método é a necessidade de se
construir outra estrutura idêntica geométricamente à do r£
bô, com os mesmos sensores o que é bastante caro de se
obter.
Na terceira maneira, utiliza-se um simulador ou
caixa de aprendizado para telecomandar o robô. Neste meto
3
-o
.56.
A memorização da tarefa durante a aprendizagem por
3 estes três métodos pode ser feita de duas maneiras pelo
sistema de controle do robô, conforme comandado:
- Programação ponto a ponto:
Nesta maneira o operador comanda a memorização
de cada ponto essencial de um.a trajetória e so
mente estes pontos são gravados na memória de
tarefa, de forma que o caminho entre dcjls pon
tos consecutivos não é determinado, sendo depen
dente do algoritmo de controle utilizado.
Este método é empregado para transferência de
^ peças, soldagem ponto a ponto e outras aplica
^ çoes que não requeiram um controle preciso da
^ trajetória e velocidade entre os pontos da tare
3 fa.
- Programação por caminhos contínuos:
Aqui, o sistema de controle é comandado para
memorizar os pontos da trajetória com uma deter
minada frequência de airiostragem elevada (60 Hz
do, o operador, através desta caixa, comanda os acionado
res do robô para a execução da tarefa que é também mem£
rizada pelo sistema de controle para execução futura. A van
tagem deste método em relação ao anterior é que o próprio
robô e seus sensores são utilizados, o que é bem mais bara
to e preciso, sendo também possível comandar-se tanto es
truturas de movimentos reversíveis como de movimentos irr£
versíveis.
Facilidades como movimentos retilíneos e circula
res tanto no sistema de coordenadas cartesianas como no de
ferramentas podem ser facilmente implementados.
3
.57.
por exemplo), sendo a posição de cada ponto
amostrado armazenado na memoria de tarefa do ro
bô.
Assim, devido ao grande número de pontos armaz£
nados e à inércia dos acionadores e da própria
estrutura do robô, ele percorrerá a trajetória
de uma maneira contínua e precisa, tendo tam
bém controle sobre a velocidade de execução que
poderá ser a mesma ensinada, maior ou menor de
pendendo da aplicação. A frequência de amostra
gem pode ser também programada.
Devido ao grande número de pontos armazenados,
uma memória de massa é necessária para este mo
do de programação sendo também limitado o núm£
ro máximo de programas disponíveis ao mesmo tem
po na memória do robô.
Uma terceira maneira de memorização da tarefa po
de^ser a combinação das duas primeiras, ou seja, armaz£
na-se os pontos importantes de uma trajetória e define-se o
tipo de interpolação a ser feita entre eles (linear ou cir
cular) durante a execução. Desta maneira, reduz-se consid£
ravelmente a necessidade de memória e pode-se ter tanto o
controle da trajetória como o de velocidade entre os pon
tos.
A programação por aprendizagem é indicada para a
memorização de trajetórias simples, sendo bastante utiliza
da nos ambientes industriais principalmente pela simplicida
de e rapidez de se ensinar a tarefa e por não ser necessá
rio um grande conhecimento de técnicas de programação, po
dendo o operário ensinar a tarefa ao robô.
' .58.
3 Por outro lado, este tipo de programação por
-• aprendizado possui sérias desvantagens listadas a seguir:
- Todas as posições devem ser ensinadas mesmo aque
Ias que podem ser determinadas por processamen
to.
:0 - Fica muito difícil ensinar tarefas requerendo
uma grande precisão de posicionamento (montagem
^ mecânica por exemplo).
- A utilização de sensores é difícil de ser feita
usando-se a programação por aprendizado.
— Z^ - A alteração de programas é bastante difícil e
^ trabalhosa tendo-se que, na maioria das vezes,
_ ensinar toda a tarefa para o robô.
^ - O robô é utilizado durante a aprendizagem dim.i
nuindo o seu tempo de máquina útil.
::0
- Ê difícil se não impossível, a interligação de
sistemas CAD/CAM ("Computer Aided Design"/"Com
puter Aided Manufacturing") com robôs utilizan
do este tipo de aprendizado [24].
Assim, para evitar-se todas estas desvantagens,
tem sido feito um grande esforço no desenvolvimento de lin
guagens de programação para robôs industriais.
1.3.2 - Programação por linguageca de alto nivel
As linguagens de programação para robôs indu£
triáis possuem uma sintaxe parecida com a das linguagens
! CU; . : : : ; : .í ; . 0 N A C : 0 : ; / L D F F - E R G í A ! A ; C L E A R / S P
í I. P. E . N .
^ .59.
^ de alto nível para computadores (BASIC, PASCAL, ALGOL,
^ FORTRAN etc.) tendo, além dos comandos e estruturas destas
;_D "~ linguagens,, outros comandos associados a funções de movimen
to do robô e interligação com sensores externos.
Basicamente, para a programação do robô, a tarefa
a ser executada é particionada em etapas e descrita segun
do a linguagem de programação, que por sua vez é compilada
-• ou interpretada, gerando comandos de uma linguagem de nível
mais baixo ou diretamente executáveis pelo sistema de con
trole do robô.
Os cinco níveis de descrição de uma tarefa a ser
executada por um robô, que podem ser vistos na figura 1.21,
são: nível de objetivo, nível de programação estruturada,
nível de movimentos primitivos, nível de ponto a ponto e
nível de microcomputadores [ 8 ] .
No nível mais baixo não podemos dizer que exista
uma linguagem para robôs, pois as tarefas são programadas
utilizando-se as instruções do microcomputador que controla
o robô. Este nível é também conhecido como nível df aciona
O dor.
... O nível ponto a ponto está mais relacionado com a
programação por aprendizado, também não existindo uma lin
guagem propriamente dita.
-O
^ O primeiro nível, onde pode-se dizer que existe
3 uma determinada linguagem de programação, é o nível de mo
vimentos primitivos. As linguagens deste nível estão para
as do anterior assim como os montadores estão para o código
de máquina de um processador. O que caracteriza as lingua
gens deste nível são desvios condicionais, chamadas de sub
rotinas com ou sem parâmetros, uma maior capacidade de inte
J
.60.
ragir com sensores e alguma forma de processamento paral£
lo.
NIVEL DE I N T E L I
G E N C I A HUMANA
N I V E L O R I E N T A D A
PARA A T A R E F A
NIVEL DE PROGRAMA-
CAO E S T R U T U R A D A
T
N I V E L DE
MICROCOMPUTADOR
N Í V E L :
TOS PRI
)E MOVIMEN-
MITIVOS
N I V E L DE
A P O N T O
: PONTO
Fig. 1.21 - Níveis de descrição de tarefas
robôs industriais.
para
No nível de programação estruturada, as lingua
gens são caracterizadas por estruturas de controle mais so
fisticadas, possuem estruturas de dados abstratas mais com
plexas, utilizam bastante as transformações de coordenadas
e permitem a integração de sensores e processamento paral£
Io.
Para o nível de objetivo, a característica princj^
pai das linguagens é tratar automaticamente as interfaces
.61.
^ com sensores e transformação de coordenadas sem a interven
- ção do programador, tendo capacidade de decisão e geração
de planos de trabalho. Este tipo de linguagem não possui
». ainda nenhuma implementação prática sendo a que mais se
aproxima a AUTOPASS [37].
^ Linguagens existentes comercialmente encontram-se
^ ainda entre os níveis de movimentos primitivos e programa
Z ção estruturada, principalmente porque algumas dificuldades
^ não foram ainda, superadas tais como:
.'A
^ - Dificuldade de se determinar quantitativamente
o universo de trabalho do robô;
- Imprecisões nas estruturas dos robôs e das pe_
ças a serem manipuladas;
_ - Ineficiência dos algorítm.os para evitar c o M •y
soes e tratar de condições de erros; ~^
- Dificuldade de interpretação das informações dos
Z diversos equipamentos sensoriais e uma integra
^ ção eficiente com o sistema de controle dos ro
- bôs;
^ - Dificuldade de geração automática de planos de
ação e modelagem do universo do robô*
C A despeito destas dificuldades tecnológicas, as
•^IJ linguagens de programação de robôs têm o seu lugar garant¿
do no futuro porque são as únicas soluções para resolver os
^ problemas apresentados cora a programação por aprendizado
vistas no sub-item anterior.
.62.
Voltaremos a tratar com mais detalhes das lingua
gens de alto nível para programação de robôs industriais no
capítulo V deste trabalho, onde apresentaremos a concepção
e implementação de uma linguagem no nível de programação es^
truturada.
1.4 - PROPOSTA PARA IM LABORATORIO BE BESEM¥OL¥I]MEMTO BE
TÊOCICAS E PSQGRAMAÇiíO DE TAREFAS PARA ROBOS IfJDlíS
TRIÁIS
Como apresentado nos itens anteriores, a robótica
é uma ciência extremamente multidisciplinar envolvendo vá
rios tópicos que vão desde mecânica simples até processamen
to digital de imagens, passando por uma grande diversidade
de outras tecnologias.
Pouca ênfase vem sendo dada ao desenvolvimento de
equipamentos dedicados ao ensino e pesquisa na área de robó
tica. Neste item apresentaremos a proposta de um laborató
Z rio chamado LÍDER - Laboratório Integrado para o Desenvolvi^
mento e Ensino da Robótica, concebido e implementadq^ de for
, ma a fornecer a infra-estrutura necessária para que as dis
cipllnas mais importantes da robótica industrial possam ser
ensinadas e pesquisadas com um baixo custo mas possuindo to
das as características encontradas nos robôs utilizados na
indústria.
Um diagrama de blocos simplificado da estrutura
do laboratório desenvolvido está mostrado na figura 1.22 a
• seguir.
O robô industrial desenvolvido para o laboratório
é do tipo manipulador articulado com 5 graus de liberdade e
uma mão-ferramenta do tipo garra mecânica acionados por mo
.63.
r-« O
m o o :
-1 o UJ ü ^>
X CJ O UJ
-1 tl.
_l O O CO o tu
_l
Ul
_l bJ >
^— —. N
i « i s
n
r -s ^ < q: te UJ o i -
« Ol O O .
Fig. 1.22 - Diagrama de blocos proposto.
do laboratório
.64.
1 - Suporte para a programação de microcomputad£
res tanto para o nível 1 como para o nível
O de controle.
O tores de passo e com realimentaçao de posição através de
,3 codificadores opto-eletrônicos incrementais.
A arquitetura de controle do laboratório possui
uma estrutura hierárquica de controle com três níveis áes_
critos sucintamente a seguir.
O O nível O de controle é baseado em um microcom
; putador dedicado ao controle do robô tendo interfaces para
Q controle dos seis motores, um sistema de realimentaçao de
^ posição, interfaces para sinais de'sincronismo com eventos
externos, interface para uma caixa de aprendizado interati^
^ va com o operador e uma interface para comunicação com o ní.
vel superior.
3 Os programas deste nível constituem basicamente
— um pacote para aprendizado ponto a ponto através da caixa
'- de controle, rotinas de calibração e movimentação do robô
e interfaceamento com os sinais de sincronismo, além dos
u" programas de comunicação com o nível 1 de controle.
-V ''Z O nível 1 de controle é baseado em um mifirocompu
tador com sistema operacional compatível com o CP/M e
64Kbytes de memória, tendo interfaces para terminal de ví_
^ deo, impressora serial, interface para dois acionadores de
disco flexível e um digitalizador de imagens de camera vidi^
com, além das interfaces de comunicação para os outros dois
níveis.
Para este nível, podemos separar os programas em
três tipos:
.65.
2 - Suporte para programação de robôs industriais
3 - Programas de comunicação para os outros ní_
veis.
Os programas suporte para programação de microcom
putadores são implementados no sistema operacional compatí_
vel com o CP/M tendo todas as facilidades de um sistema de
desenvolvimento de programas para microcomputadores tais
como primitivas de entrada e saída, gerenciamento de arqui^
vos em disco, montadores, editores,' testadores de programas
e várias linguagens de programação de alto nível entre elas
o BASIC, FORTRAN, PL/I e PASCAL.
Os programas suporte para a programação de robôs
implementados no laboratório são:
- Program.as para transformação de coordenadas.
- Programas para interpolações lineares e circula
res no espaço.
*
- Linguagens de alto nível para programação "off-
line" de robôs industriais.
- Programas de execução de tarefas.
Os programas de comunicação serão responsáveis pe_
las trocas de dados entre este nível e os outros dois.
Para o nível 2 de controle está prevista a liga
ção com o minicomputador PDP 11/34 possuindo, entre outros
periféricos, um terminal gráfico de alta resolução, tendo
como objetivo aumentar a capacidade de processamento do la
boratório. A comunicação entre este nível e o nível 1 será
•V
. 6 6 .
feita por intermédio de uma interface serial de alta veloci^
dade, sendo que programas de simulação do robô e de tarefas
programadas.em outros níveis e mesmo lingaugens mais sofÍ£
ticadas poderão ser implementadas neste nível.
Assim, entendemos que esta arquitetura permitirá
cobrir a maior parte dos tópicos apresentados no decorrer
deste capítulo podendo experiências serem feitas cobrindo
desde robôs de primeira geração até os de terceira geração
equipados de sistemas sensoriais desenvolvidos e possuindo
alguma capacidade de decisão.
Toda a estrutura do laboratório foi feita de uma
maneira modular e flexível de modo que novas característi^
cas possam ser facilmente implementadas.
A fotografia da figura 1.23 mostra uma vista g£
ral do laboratório implem.entado.
Nos capítulos seguintes apresentaremos com mais
detalhes cada um dos componentes do laboratório proposto.
1.5 - COMCUJSSO
Este capítulo teve por objetivo apresentar uma
idéia do estado da arte dos robôs industriais no que se
refere aos seus componentes e métodos de programação, não
pretendendo de forma alguma, esgotar todas as pesquisas e
trabalhos realizados e em. andamento na área.
Uma enquete realizada no Japão para se determinar
as principais causas da introdução de robôs nas indústrias
levou ao seguinte resultado [35]:
.67.
-J
•O —\ •V
-J
O O O
o
-o Fig. 1.23 - Fotografia do LÍDER - Laboratório In tegrado para Desenvolvimento e Ensino da Robótica.
.68.
J economia de mão-de-obra 44,
V
melhoria nas condições de trabalho 25,0%
aumento da flexibilidade de fabricação .... 13,5%
melhor controle da produção 8,0%
outros 9,0%
^ Isto nos mostra que a principal causa da robotiza
ção nos países desenvolvidos é ainda a substituição da mão-
de-obra, bastante cara. Para o Brasil, devido ao custo ha.±_
xo da mão-de-obra, provavelmente demorará alguns anos até
que a sua substituição seja economicamente viável, sem con
tar ainda com as dificuldades originárias da nossa estrutu
ra sócio-econômica.
Mesmo sendo discutível a aplicação ou não de ro
bôs nas indústrias brasileiras, indiscutível é que já nos
encontramos atrasados em relação ao desenvolvimento desta
tecnologia.
Estes robôs apresentados neste capítulo, conside
rados ainda primitivos, já servem para demonstrar que a ro
botização veio para ficar e, com toda certeza, será^uma rea
lidade nos parques industriais do futuro em todos os paí^
ses, desenvolvidos ou não.
Assim, apresentamos neste capítulo a proposta de
um laboratório visando o desenvolvimento de recursos huma
nos e novas tecnologias em robótica industrial.
CAPITULO I I - ARQOTTETTUKA KiECÂMICA E CARACTERlSTI_
CAS DO KOBO IIÍDUSTRIAL DESElIWOL¥IDO
Com a suprema ousadia de tentarmos
imitar a criatura é que percebemos
a perfeição do Criador.
3
3 .70.
2.1 - IMTHODOÇSO
j O.objetivo deste capítulo é apresentar os deta
lhes construtivos e as características principais da arqul
tetura mecânica do robô industrial desenvolvido para o labo
ratório apresentado neste trabalho
3 A concepção e o projeto mecânico deste robô foram
) feitos pelo Grupo de Aplicação de Microcomputadores (GAM)
^ da Universidade Federal do Espírito Santo e a sua constru
ção e montagem foram realizadas na Oficina Mecânica do De
partamento de Engenharia de Eletricidade da Escola Politéc
' nica da USP [3 ] .
* Este robô, tendo uma arquitetura mecânica sim
; pies, possui todas as características e funções dos robôs
^ industriais de sua categoria comercializados nos EUA e Ja
pão, sendo ainda que o seu projeto foi feito de modo que
sua arquitetura permitisse testar-se várias técnicas de
construção mecânica e acionamento freqüentemente utilizados
em, robôs industriais com acionamento elétrico.
Ele possui cinco graus de liberdade rotativos,
acionados por motores de passo controlados em malha fecha
da realimentados por codificadores angulares incrementais,
tendo uma capacidade de carga de Ikg e uma extensão máxima
de 70cm.
Na primeira parte do capítulo descreveremos com
detalhes a mecânica de acionamento de todos os seus graus
de liberdade. A seguir listaremos as suas características
principais tais como volume de trabalho, precisão de pos3_
cionamento, capacidade de carga e velocidade de operação.
Na seqüência serão apresentados o sistema de rea
.71.
-3
.O o
2.2 - ARQUITETUKA MECAlMICA
A arquitetura mecânica do robô industrial desen
volvido é baseada no sistema de coordenadas de revolução
possuindo três graus de liberdade rotativos para o posicio
namento de sua mão-ferramenta e dois graus de liberdade,
também rotativos, para a orientação desta mão-ferramenta no
espaço de trabalho. Todos estes graus de liberdade são acio
nados por motores de passo situados na base do robô e reali^
mentados em posição por codificadores angulares incremen
tais.
Toda a sua estrutura é construída em duro alum.í_
nio sendo que o braço foi construído a partir de um perfil
com ranhuras, de forma a obter-se uma estrutura IcAse e rígj^
da o suficiente para não comprometer a precisão do robô.
A fotografia da figura 2.1 mostra uma vista da
arquitetura mecânica do robô, equipado com a sua mão-ferra
menta do tipo garra mecânica.
Podemos ver que todos os motores de acionamento
dos graus de liberdade se situam na base de forma a que o
braço fique o mais leve possível. A única exceção é o motor
de acionamento da garra mecânica que, por ser destacável, a
melhor solução foi colocá-lo na parte inferior do braço. A
mecânica da garra será detalhada no item 2.5 a seguir.
limentação de posição e seus detalhes construtivos e as ca
—^ racterísticas da garra mecânica desenvolvida para o robô.
^ Finalmente serão mostradas algumas aplicações pa
ra este robô industrial construído.
.3 3 .72,
3
Fig. 2.1 - Fotografia da arquitetura mecânica do robô desenvolvido.
.73.
' 3 1 - Caixa de engrenagens da base fixa do robô.
2 - Caixa de engrenagens da base móvel do robô.
O
3 3 - Braço com cotovelo e punho.
Estes blocos básicos são compostos de estruturas,
^ mancais e rolamentos, engrenagens e sistemas de redução, cor
_ rentes e correias, eixos e motores de forma a permitir a
transmissão de movimento para todas as articulações do bra
ÇO.
A transmissão do movimento do eixo do motor para
- a estrutura do robô é feita utilizando-se uma redução do ti
^ po sem-fim/coroa, padrão para todos os seus cinco graus de
liberdade.
•
—' A montagem desta redução sem-fim/coroa pdde ser
3 vista esquematicamente na figura 2.2 abaixo.
O parafuso sem-fim feito em aço SAE-1045, montado
sobre rolamentos de esfera, é fixado ao eixo do motor atra
vés de uma chaveta redonda e travado axialmente por anéis
de encosto na tampa e no motor, de forma que ele possa g^
rar livremente sem folgas axiais e com baixo atrito.
A coroa, confeccionada em bronze fosforoso para
diminuir o atrito e o desgaste, é montada em um eixo orto
gonal ao eixo do sem-fim, podendo ser chavetada neste eixo
ou montada sobre rolamentos de agulhas para rodar livremen
te em relação ao eixo suporte, dependendo do grau de liber
3
Assim, podemos dividir a arquitetura mecânica do
3 robô, sob o ponto de vista construtivo, em três blocos prin
cipais:
3
-3
O
D
3
3
3
3
3
3
.74.
Fig. 2.2 - Sistema de transmissão sem-fim / coroa
para todos os cinco graus de liberda
de.
dade correspondente a ser acionado.
As tabelas 2.1 e 2.2 fornecem as características
:3
' 3 . 3 •3
3
3
.75.
construtivas principais do parafuso sem-fim e da coroa res
pectivamente.
A partir das tabelas podemos ver que a redução total
do sistema de transmissão é de 30, sendo esta a única redu
ção pois todos os outros sistemas de transmissão não possuem
redução.
Embora esta transmissão seja padrão para todos os
graus de liberdade, a transmissão do movimento da coroa pa
ra a junta correspondente àquele grau de liberdade é dife
rente para cada um deles sendo que os detalhes serão aprig
sentados nos sub-itens a seguir.
Tabela 2.1 - Características construtivas do para
fuso sem-fim.
.3
"3
Módulo axial (Mx): 2,01044
Módulo normal (Mn): 2
Diâmetro primitivo (d): f9.65
Número de roscas (Z): 1
Ângulo de pressão normal (an): 20°
Ângulo de hélice ( B ) : 5°50'29"
Sentido da hélice: direito
Passo axial (Px): 6,316
Passo normal (Pn): 6,283
Altura da rosca (h): 4,5
Entre eixo (a): 39,9815
(dimensões em mm)
-3
.76.
Tabela 2.2 - Características construtivas da co
roa.
Módulo (M): 2,01044
Módulo normal (Mn): 2
Diâmetro primitivo (d): 60,313
Número de dentes (Z): 30
Ângulo de pressão normal (an): 20°
Ângulo de hélice (3): 5°50'29"
Sentido da hélice: direito
'Z Passo aparente (Pt): 6,316
Passo normal (Pn) : 6,283
Altura do dente (h): 4,5
Entre eixo (a): 39,9815
(dim.ensões em mm.)
2.2.1 - ACIOOAÜEAEIRNTO do giro do robô
O primeiro grau de liberdade é o responsável pelo
giro de todo o braço do robô. Este movimento é conseguido
através da caixa de engrenagens da base fixa do robô.
Uma vista em corte da montagem desta caixa é mos
trada esquematicamente na figura 2.3.
O movimento do motor é transmitido para a coroa
através do sistema sem-fim/coroa padrão mostrado anterior
mente. A cor-oa é fixada ao eixo vertical vasado, sendo este
eixo montado na caixa sobre dois rolamentos de esfera, tra
vados por anéis de pressão.
.77,
0 0
MOTOR A
Fig. 2.3 - Detalhes de montagem do sistema de acio namento do giro do robô.
.78.
-3? 3 A caixa móvel de engrenagens é fixada à parte
3 superior deste eixo sendo que todos os cabos de ligações
para ela passam através do furo interno deste eixo.
3 3
-3
A coroa é fixada ao eixo por meio de um sistema
de travamento que possibilita o deslocamento axial da mesma
de forma a eliminar completamente a folga entre o sem-fim e
a coroa e a permitir uma compensação do desgaste por atri^
to.
A montagem do eixo da caixa móvel sobre relamen
tos permite um giro sem folgas e com baixo coeficiente de
atrito.
2.2.2 - AcionaEsento do braço
O segundo grau de liberdade do robô consiste na
elevação e abaixamento do braço. O acionam.ento deste grau
de liberdade é feito a partir da caixa de engrenagens mó
vel, assim como todos os outros graus de liberdade restan
tes. *
Um desenho esquemático de montagem desta caixa
de engrenagens é apresentado na figura 2.4 a seguir.
O sistema de transmissão sem-fim/coroa (SCB), cor
respondente ao acionamento do braço, é montado na caixa de
engrenagens móvel. A coroa é montada sobre rolamentos de
agulhas em um eixo (El) ortogonal ao eixo do sem-fim, sendo
posicionada e travada axialmente por intermédio de espaça
dores montados sobre este mesmo eixo.
O braço do robô é montado sobre dois suportes sen
do que um, (S2) gira livremente sobre rolamentos de agulhas
co::::::zy.Q NAC.C::,'l. D E E r j c R G i A n u c l e a r / s p
i. P. E. N.
.79.
Z^ sobre o eixo E2 e o outro (SI) é travado por meio de uma
chaveta no pescoço da coroa do sistema de transmissão sem-
^ fim/coroa (SCB).
^ o posicionamento e o travamento da coroa corres
^ pendente ao grau de liberdade do braço permitem ajustar-se
"" a folga de transmissão de modo a compensar o desgaste dos
•.•O dentes e obter-se uma transmissão bastante precisa.
A estrutura do braço é feita com dois perfis de
^ duro alumínio nas laterais e duas tampas, superior e infe . . . ^ — ^ rior, também de duro alumínio, formando uma caixa de secção
^ quadrada leve e rígida. Espaçadores de alumínio são utiliza
dos de modo a aumentar ainda mais esta rigidez. O
Z Por ser o braço do robô um sistema bastante des
^ balanceado, um contra-peso de m.ola foi colocado preso à tam
-V pa superior do braço de forma que, sem carga, o sistema fi
^ que em equilíbrio, aumentando a velocidade de operação do
z" mesmo e sua capacidade de carga.
2.2.3 - Acioiiaiaento tJo aute—braço
O ante-braço do robô é montado fixado a um eixo
que gira sobre mancais de bronze na extremidade superior do
braço. O grau de liberdade do ante braço consiste na eleva
ção e abaixamento deste em relação ao braço.
A figura 2.5 mostra a montagem das engrenagens no
eixo E3 do cotovelo do braço.
O motor que aciona o ante-braço é fixado à base
móvel (figura 2.4) e seu movimento é transmitido para a co
roa através da transmissão sem-fim/coroa SCC montada no
.80.
•O
"Z
3
•O
1^
l¡)( )( )( )( )( \\'^
]}{ )< )< )( X N \ V
Fig. 2.4 - Diagrama esquemático de montagem da
caixa de engrenagens móvel do robô.
' 3 3 3
.81
3
3 3 3
3
-3 3 3
E I X O E3
\ -1
Fig. 2.5.-- Diagrama de montagem das engrenagens no cotovelo do braço.
eixo E2. A coroa é fixada ao eixo por meio de chaveta e seu posicionamento axial é feito através de espaçadores de modo que as folgas sejam eliminadas.
.82.
V
Esta corrente, por ter o seu curso limitado, é
tensionada por um distorcedor de forma a obter-se uma tran£
missão sem folgas e com pouca perda de potência do motor.
As engrenagens de corrente são de nylon e possuem
um sistema de aperto que elimina a folga nas chavetas per
mitindo uma montagem fácil.
O acionamento do ante-braço é pantográfico em, r£
lação ao braço, ou seja, ao movimentar-se o braço do robô, a
orientação do ante-braço em relação à base do robô não se
altera, mudando apenas a sua localização.
O ante-braço é também construído com perfis de
duro alumínio nas laterais tendo tampas do mesmo mgiterial
em cima e embaixo. Espaçadores são fixados entre as lat£
rais de maneira que sua rigidez seja aumentada.
2.2.4 - Acionamento do pimlno
São dois os graus de liberdade do punho do robô.
Um corresponde ao abaixamento e levantamento da mão-ferra
menta no plano do braço e ante-braço e o outro corresponde
ao giro da mão-f erramenta ao redor de seu eixo principal.
Estes dois movimentos são obtidos por intermédio
de um, sistema diferencial de engrenagens cónicas montadas
O
o o movimento da coroa é transmitido para uma en
, grenagem de corrente fixada por chaveta na extremidade do
, -- eixo E2. A corrente passa pelo interior do braço e engata
^ em outra engrenagem de corrente fixada por chaveta ao eixo
E3 do cotovelo, sendo que o ante-braço é fixado por parafu i
SOS na flange deste eixo.
' . 3
.-3
-3
O
3
•3 3
.83.
em uma cruzeta fixada sobre mancáis de bronze na extremida
de do ante-braço do robô, como mostra a figura 2.6.
Quando as duas engrenagens cónicas laterais giram
no mesmo sentido e com a mesma velocidade, temos o abaixa
mento e elevação da mão-ferramenta. Quando elas giram com a
mesma velocidade mas em sentidos opostos, temos apenas o gi
ro desta mão-ferramenta. Ao girarem com velocidades diferen
tes teremos uma combinação de rotação e abaixamento ou el£
vação da mão-ferramenta do robô, sendo esta fixada por meio
de rosca ao pescoço da engrenagem cónica central do diferen
ciai.
3
3
-3 -. ^
•3 ;:3 - 3
Fig. 2.6 - Diagrama esquemático de montagem
punho.
do
sa .84.
:3 A transmissão do outro sistema SCE para a outra
engrenagem cónica é semelhante ao anterior com a única dif£
rença de que a engrenagem de corrente na caixa móvel de en
3 grenagens é fixada diretamente ao pescoço da coroa^
Como o giro do punho não é limitado mecanicamen
te, isto é, várias voltas podem ser programadas, as corren
tes e as correias dentadas não são emendadas. Este fato
obrigou a necessidade de esticadores. Os esticadores das
correntes são rodas montadas na tampa inferior do braço e
reguláveis de forma a dar a tensão adequada às correntes.
Os esticadores das correias dentadas são montados nos espa
çadores do ante-braço. Desta forma consegue-se uma transmis
são sem folgas da caixa móvel para o punho do robô.
O eixo central da cruzeta é vazado de modo a per
mitir que cabos e fios passem dentro dele para a mão-ferra
Os movimentos do punho são originados de dois mo
tores de passo fixados na lateral da caixa móvel de engrena
gens. Estes motores transmitem o movimento para dois sist£
mas sem-fim/coroa, SCD com a coroa chavetada ao eixo El
^ e SCE com a coroa apoiada sobre rolamentos de agulhas ao
eixo E2, como mostra a figura 2.4. — \
A coroa do sistema SCD transmite movimento para
O o eixo El que tem na sua extremidade uma engrenagem de cor
Q rente tajnbém chavetada, que transmite, pela corrente, para
^ uma engrenagem dupla apoiada no eixo do cotovelo. Esta en
^ grenagem dupla tem de um lado dentes para corrente e do
outro dentes para correia dentada. Esta correia dentada, pas N ~
sando pela lateral do ante-braço na sua parte interna, tran£
—' mite o movimento para outra engrenagem de correia dentada
O fixada ao pescoço da engrenagem cónica correspondente, do
^ sistema diferencial do punho.
.85,
menta.
O pescoço da engrenagem central do diferencial é
rosqueado de forma a poder-se montar a mao-ferramenta nela.
O movimento do punho também é pantográfico tanto
em relação ao movimento do braço como em relação ao movimen
to do ante-braço do robô, assim, a sua orientação relativa
à base do mesmo só pode ser alterada acionando-se os moto
res associados ao punho.
A tabela 2.3 abaixo mostra as características das
engrenagens cónicas do sistema diferencial do punho do ro
bô.
Tabela 2.3 - Características das engrenagens côni
cas do diferencial do punho do robô.
Módulo (M): 2,0
Número de dentes (Z): 4 21
'3 Passo (P): 6,28
Altura dos dentes (h): 4,5
Angulo externo (al): 48°51•
Angulo de fundo (ai): 40°11'12"
Angulo de pressão (a): 20°
- Semi-ângulo do cone
primitivo (y): 45°
(dimensões em mm)
.86.
:3
~3 .O
.3)
:3
:0 O
O
^3 3
2.3 - CARACTERÍSTICAS BO ROBO DESEIWOIL¥IBO
Como visto no item anterior, este robô possui uma
arquitetura articulada, com cinco graus de liberdade rotat_i
vos, como mostrado na figura 2.7.
3
Fig. 2.7 - Graus de liberdade do robô desenvolvi^
do e volume de trabalho.
a : Giro do braço em relação a um eixo perpendicu
lar a base.
e : Abaixamento e elevação do braço.
.87.
Y : Abaixamento e elevação do ante-braço.
p : Abaixcimento e elevação do punho no plano • do
braço e ante-braço.
r : Rotação do punho.
Apresentaremos a seguir as principais caracterí^
ticas da arquitetura mecânica construída.
2.3.1 - Yolioaiae de traballio
Todos os graus de liberdade do robô, exceto o de
' rotação do punho, têm limites mecânicos bem definidos.
Estes limites mecânicos configuram o volume de
trabalho do robô, isto é, todos os pontos possíveis de se
rem. atingidos pela mão-ferramenta do robô. O volume de tra
balho para este robô esta mostrado na figura 2.7, correspon
' dendo ao volume varrido pela área hachurada quando esta so
^ fre uma rotação de 180 graus ao longo do grau de* liberda
3 de a.
É importante frizar que na determinação deste vo
lume de trabalho não foi considerada nenhuma mão-ferramenta
fixada ao robô, ou seja, este volume sofrerá algumas modif_i
cações quando ao punho do robô for fixada uma mão-ferramen
ta.
2.3.2 - Precisão do robô
A precisão do robô pode ser definida como o inter
valo entre dois pontos adjacentes do volume de trabalho que
.88.
-.3 3 '3 -3 Tanto os motores de passo como o sistema de reali^
mentação empregados na construção do robô distinguem 400
- pontos por cada revolução do motor.
^ A redução do sem-fim/coroa é de 30, o que implica
"" na divisão da circunferencia por 12.000 pontos.
3 Assim temos:
•3 Q - Grau de liberdade a (giro do robô).
rmax = comp. braço + com.p. ante-braço + comp. punho =
= 344 + 297 + 36 = 677 mm
. ~ 2 . ir. rmáx , , p = precisão = donde
ndiv
2 TT 677 pa = — — - = 0,35 mm para o pior caso,
12000
Para a média teremos:
2. TT.677/2 -pa = -— = 0,18 mm
12000
-O í3 podem ser distinguidos pelo sistema de controle do robô.
^ Esta precisão depende do acionamento e realimen
tação, das reduções na arquitetura mecânica e do máximo
raio associado ao movimento. Assim, podemos calcular a' pr£
cisão de acionamento para cada grau de liberdade do robô.
:3
:3
- Grau de liberdade B (braço do robô),
rmáx = comp. braço = 344 mm
'3 p0 = 2,JL.344 ^ p^^3
-3
:3
:3
:3
-3
.89.
12000
- Grau de liberdade Y (ante-braço do robô)
rmáx = comp. ante-braço = 297 mm
3 PY = ^-"^ •^^'^ = 0,16 mm 12000
- Grau de liberdade p (punho do robô)
rmáx = 36 mm
pp =: '" = 0,02 mm 12000
Assim, o pior caso é quando o robô estiver com o
braço todo esticado tendo uma precisão de 0,35 mm. Como e£
ta é uma situação extrema, podemos admitir que a precisão
média do robô é de 0,2 mm.
2.3.3 - Capacidade de carga
A capacidade de carga está relacionada ao torque
máximo que o motor consegue executar, à redução do sistema
de acionamento e seu rendimiento, bem como ao tamanho da
:3
.90.
alavanca onde a força é exercida.
Uma curva característica do torque versus veloci
dade do motor de passo utilizado funcionando em meio passo
(400 pulsos/volta) pode ser vista na figura 2.8 [53].
£ ü O.
I N O
UJ
O
CC
TORQUE V S V E L O C I D A D E 150
(10.8)
30 (2 .-16)
O 500 1000 1500 2000 2500 3OO0 3500 4000 4500 5000
V E L O C I D A D E ( P U L S O S / S)
Fig. 2.8 - Curva de torque x velocidade do motor,
Para uma freqüência máxima projetada de 3000 pul^
sos/seg vemos que o torque desenvolvido pelo motor é de
4/32 Kgf.cm.
Desta forma, o torque máximo do motor de passo utj^
lizado é de 4,32 Kgf.cm, para a velocidade máxima desejada,
a redução do sistema sem-fim/coroa é de 30 e podemos cons¿
derar um rendimento de 80%. Logo temos que a carga máxima
para cada grau de liberdade será aproximadamente:
C = T.RE.RD
B
P
2 onde
C : carga máxima
T : torque desenvolvido pelo motor
RE : redução
RD : rendimento do sistema
33
zQ
.3
3
^ B : braço de alavanca
3 P : peso do braço
:3
3
3
^ - Grau de liberdade B (braço do robô).
.91.
Assim, substituindo os valores para cada grau de
liberdade temos:
Para este grau de liberdade existe uma mola para
contra-peso resultando em um peso total do braço visto pelo
motor de 1 Kg.
3 C = ^'3^-30.0,8 _ 1 ^ ^^Q3
67,7 2
- Grau de liberdade y (ante-braço do robô)
C = ^'^^-^P-P'^ - 2 . 2,49 Kg ^ ' 29,7 2
3 - ^ - Grau de liberdade p (punho do robô) .
C ^ 4,32.30.0,8 _ 0 ^ ^ 28,55 Kg
3,6 2
Para os graus de liberdade a e r, a carga é ap£
nas de inércia sendo bem maior do que 1 Kg especificada pa
ra o robô.
Concluímos então que a carga máxima suportada pe
.92.
lo robô mantendo as suas características é de 1 Kg. É claro
que reduzindo-se a velocidade de operação a máxima carga
transportável aumenta, como será mostrado no próximo sub-
item.
2.3.4 - Velocidade de operação
A velocidade de operação do robô pode ser defini^
da como a máxima velocidade que ele consegue se deslocar
mantendo as suas especificações.
Para o item anterior, a carga máxima do robô foi
calculada para uma velocidade de 3000 pulso/seg o que cor
responde, com o sistema de redução utilizado, a uma veloci^
dade angular de 90 graus/seg, sendo esta a sua velocidade
de operação.
Ao se diminuir a velocidade de trabalho do robô,
há um aumento da carga máxima transportável por ele. Podje
mos ver na tabela 2.4 abaixo, a relação entre a velocidade
de operação e a carga transportável, sempre para o aior ca
so.
Ê importante frizar que as velocidade mais altas
de trabalho só podem ser conseguidas com um procedimento de
aceleração e desaceleração tanto por limitações do motor
como da própria estrutura mecânica do robô. A maneira como
esta aceleração e desaceleração são obtidas será apresenta
da no capítulo III.
3 .93.
Tabela 2.4 - Relação entre velocidade de trabalho
w e carga transportável.
Velocidade Carga Kg •D graus/seg Carga Kg
— 15 2,56
30 2,18
45 1,80
60 1,52
75 1,27
90 1,03
2.3.5 - Oetras características
Podemos citar como outras características do' robô
desenvolvido as seguintes:
- Peso total : o peso total do robô é de 20 Kg.
*
- Tipo de montagem : a montagem do robô foi proje
tada para um funcionamento unicamente horizon
tal.
- Fixação : para que os motores de passo funcionem
corretamente, a base do robô deve ser fixada
rigidamente. Para tanto existe uma placa presa
à base fixa do mesmo e esta deve ser fixada
por quatro parafusos a uma mesa sólida.
fe
fe .94.
2.4 - SISTEMA BE REALIMEITÍTAÇAO BE POSIÇJSO E BETEÇAO BE FIM
DE CURSO
O sistema de realimentaçao de posição é responsa
vel pelo correto posicionamento do robô conforme comandado.
Embora os motores de passo sejam, por si só, àis
positivos que possibilitam o controle do posicionamento em
malha aberta, para o caso de aplicação em acionamento de
robôs industriais, concluímos que o seu funcionamento só é
satisfatório em malha fechada de posição, devido principa]^
mente às características dinâmicas particulares de uma es
trutura articulada com cinco ou mais graus de liberdade
que não permitem determinar-se precisamente o máximo torque
gerado para cada jnotor, ocasionando, inevitavelmente, per
das de pulsos nos motores de passo.
Assim, embora o robô tenha sido inicialmente pro
jetado para funcionar em malha aberta, foi necessário desen
volver um sistema de realimentaçao de posição para se atin
g i ^ a precisão e repetibilidade necessárias.
*
Com o intuito de garantir que um erro de programa
ção, ou mesmo uma distração do operador, não ocasionassem
prejuízos mecânicos à estrutura do robô ao serem atingidos
os seus limites, um conjunto de chaves de fim de curso foi
colocado para cada grau de liberdade de forma a que estas
interrompessem o acionamento de todos os motores ao ser
qualquer uma delas, atingida, preservando assim o robô. Além
desta função de segurança, estas chaves servem para se de
terminar a posição de referência ao se energizar o sistema
de controle do robô.
Neste item descreveremos tanto o sistema de reali
mentação do robô como o seu sistema de deteção de fim de
.95,
curso, sob o ponto de vista dos detalhes mecânicos de con£
trução.
2.4.1 - Mecânica do sistesaa de realinDentação
Para o sistema de realimentaçao do robô foi proje
tado um codificador angular incremental com sensores ópti^
eos (diodo emissor de infra-vermelho e foto transistor) men
tados em um disco ranhurado fixado ao eixo do motor, para
cada um dos graus de liberdade [31].
Para se conseguir a mesma resolução dos motores de
passo utilizados é necessário que os codificadores apresen
tem 400 pulsos por volta. Um disco com 100 divisões como o
mostrado na figura 2.9, com dois sensores foi utilizado.
QA
QB
SENSOR A SENSOR B
DISCO COM
Fig. 2.9 - Sinais gerados e montagem dos sensores
no disco do codificador angular incr£
mental.
.96.
Os sensores fornecem uma onda quadrada e são defa
sados de 1/4 do período, um do outro, gerando ondas quadra
das como as mostradas também na figura 2.9 [57].
O circuito eletrônico associado ao codificador g£
ra um sinal de direção e de pulso a cada transição de cada
uma destas ondas quadradas. Com o disco possuindo 100 divi_
soes e cada período tendo quatro transições, teremos a reso
lução desejada de 4 0 0 pulsos/volta.
Um dispositivo de ajuste permite calibrar a dis
tância entre os sensores de modo a obter-se uma defasagem
exata, pois todo o princípio de funcionamento depende desta
relação entre as ondas geradas por cada sensor. Os detalhes
do princípio de funcionamento deste sensor e do circuito
utilizado para a contagem dos pulsos serão mostrados no pro
ximo capítulo.
O disco ranhurado é fixado ao eixo de cada motor
e os sensores são montados em um anel espaçador.como deta
lhado na figura 2.10, que apresenta o sistema completo com.
acionamento e realimentaçao para cada. grau de liberjdade do''
robô.
Tanto a caixa de engrenagens como o anel espaça
dor possuem rebaixamentos que permitem um perfeito alinha
mento entre o sem-fim e o eixo do motor, acoplamento este
feito por uma chaveta redonda.
O disco é fixado ao eixo do motor com um sistema
de bucha que não permite qualquer tipo de deslocamento en
tre ele e o eixo.
Os sensores são fixados no anel e uma vez calibra
dos, podem ser retirados e todo o conjunto desmontado sem
Oq
O I
1—T
O (D o
0. M O H-
cr-
C C
c ^ ^
o • o
o Ul
o. m (? rl-
(D o 3 P
D. a CD p
!13 o C UJ.
O D. 0) 1
1_J CP 1 -'.
ri-Ò O d
IP CD
3
3
3
3
3
3
"3
.98.
3 se alterar a calibração.
3 o sistema de fixação dos codificadores incremen
tais são idênticos para todos os graus de liberdade do ro
bô.
' Desta forma, os sinais originados nos sensores
) ópticos permitem ao sistema de controle do robô determinar
2) precisamente a posição de cada grau de liberdade independen
Q temente se houve perda de pulso no motor de acionamento
^ e mesmo se aquele motor esta conseguindo acionar aquela jun
ta. 3
3 3 2.4.2- Sinais gerados para o sistema de controle
Os sinais gerados na arquitetura mecânica do robô
que são entradas para o seu sistema de controle são de dois
tipos:
- Sinais vindos dos codificadores angulares in
crementais do sistema de realimentaçãoído robô.
- Sinais vindos de um conjunto de chaves limites
associadas a cada fim de curso de. cada um dos
graus de liberdade do robô.
Os sinais do primeiro tipo já foram explicados no
sub-item anterior..
Como dito anteriormente, são duas as funções dos
sinais vindos das chaves de fim de curso:
1 - Proteger a estrutura do robô interrompendo o
acionamento dos motores ao ser atingida alguma
chave.
-
i. P . F. N.
~3
:3
:3
.99.
2 - Fornecer uma referência para o sistema de con
trole determinar a posição inicial do robô ao
ser energizado.
Um total de nove chaves são montadas na arquitetu
ra mecânica do robô, reguladas de modo a dar a excursão
mostrada na figura 2.7 para cada grau de liberdade.
Elas são em número de dois para todos os graus de
liberdade exceto o giro do punho, pois este, por não po£
suir limites mecânicos tem apenas uma chave para marcar a
posição de referência.
O posicionamento das chaves é mostrado na
ra 2.11 a seguir.
figu
CPA
3
C L R
CPB
Fig. 2.11 - Posição das chaves limites para cada
grau de liberdade.
.-3
.O
::3
.100.
Estas chaves são normalmente abertas e quando
atingidas levam uma entrada do sistema de controle para o
nível lógico O e este então processa a informação, ou para
interromper o acionamento dos motores, ou para avisar que
um determinado grau de liberdade atingiu sua posição de r£
^ ferência.
A eletrônica e o processamento destes sinais oriun
dos da arquitetura mecânica do robô serão detalhados no ca
pítulo III.
^ 2.5 - G M Í H A MECÂJraCA D O R O B O IMíBSTRIAI.
Como foi dito anteriormente, a arquitetura mecâni^
ca do robô é utilizada para posicionar uma determinada mão-
ferramenta que executará realmente o trabalho útil do robô.
Esta mão-ferramenta, como o nome sugere, pode ser
do tipo garra ou do tipo ferramenta, dependendo da aplica
ção a que o robô se destina.
Para o robô em questão, a engrenagem cónica cen
trai possui uma rosca que permite a adaptação de uma garra
ou de uma ferramenta ao seu punho.
Neste item apresentaremos uma garra mecânica de
senvolvida para o robô, sua construção mecânica, seu sist£
ma de realimentaçao e suas características principais.
2.5.1 - Construção imecânica da garra
A garra mecânica projetada e construída para o
robô industrial do laboratório possui dois dedos, sendo o
' .101.
¡3 seu desenho esquemático de montagem mostrado na figura
2.12.
A montagem dos dedos na garra é feita através de
barras paralelas que possibilitam um funcionamento pantográ
fico dos mesmos, ou seja, os dedos ficam sempre paralelos
3 ao abrir ou fechar a garra.
O 3 Estes dedos podem ser destacados de modo a que
outros, com formas específicas para outras aplicações, pos_
^ sam ser adaptados na garra. Com dedos retos, a máxima aber
tura é de 5 cm.
3 -3 Toda a garra é construída em duro alumínio sendo
: 3 que apenas as barras paralelas são de nylon.
:';3 r 3
3
o fechamento da garra é realizado através de um
cabo de aço e o seu retorno à posição aberta é feito pox'-
molas situadas na garra. Este acionamento por cabo permite
a montagem do motor na parte inferior do robô diminuindo a
influência do peso da mão como carga do robô.
A mecânica do acionamento está mostrada na parte
superior da figura 2.12.
Um motor de passo aciona um sistema de parafuso
e porca com um travamento que impede a mesma de girar mas
permite o seu deslocamento axial em relação ao parafuso. A
capa do cabo de aço é fixada na ponta da montagem e o cabo
é preso à porca através do pino de travamento como mostra
do na figura.
A outra ponta da capa do cabo de aço é fixada à
tampa inferior do ante-braço do robô, e um. distorcedor é co
locado no meio do cabo de forma a permitir que várias rota
. 3
. 3
• D
.3
3
3
3
.102.
ções da garra não enrole o cabo de aço.
^3 Todo o conjunto mecânico é fixado na tampa sup£
Z 3 rior do braço do robô, como mostra a fotografia da figu
O ra 2.1.
2.5.2 - Sistema de aciomaimeinito e realiimeinitação da garra
3 o acionamento da garra é realizado por um motor
3 de passo com 400 pulsos por volta como indicado na figu
ra anterior.
Este motor de passo é realimentado em posição com
um codificador angular incrementai utilizando disco ranhura
do montado no eixo do motor e sensores ópticos, da mesma ma
neira explicada para os outros graus de liberdade do robô.
Uma chave limite atuada pelo pino de travamento
da porca do sistema de acionamento permite iniciar a posi_
ção da garra toda aberta, como sua posição de referência. *
0 sistema de realimentaçao possui duas funções bá
sicas:
1 - Garantir a posição real dos dedos da garra in
dependentemente de erros de acionamento no mo
tor de passo;
2 - Verificar, por processamento no programa, que
a garra, mesmo acionada não fecha mais, indi_
cando que o objeto já foi pego com a máxima
força e então, permitir a determinação do ta
manho do objeto pego.
73 .103.
:3 :0 3
..3
Assim, um objeto de dimensões desconhecidas pode
ser pego por esta garra, desde que ele seja rígido e tenha
uma dimensão na pegada menor do que a máxima abertura da
garra
-3
:3>
3
3
3
SENSORES
DISCO
3 Fig. 2.12 - Montagem esquemática da garra mecâni^
ca desenvolvida para o robô.
Todo o processamento dos sinais vindos da garra
é feito de maneira idêntica aos sinais vindos dos outros
graus de liberdade do robô, sendo que os seus detalhes s£
rão apresentados no capítulo seguinte.
..13
m
-O
. 1 0 4 .
2 . 6 - A P L I C A B I L I D A O E D O R O B O I I S D Í I S T R U S lL D E S E I J ¥ 0 L V I D 0
Às características principais do robô industrial
desenvolvido, vistas neste capítulo, estão resumidas ria ta
bela 2 . 5 abaixo:
Tabela 2 . 5 - Características principais do robô
industrial desenvolvido
3>
Tipo de arquitetura: Braço articulado
Número de graus de liberdade: 5
O Excursão dos graus de liberda
de a: (_90O-*+90o) 0 B: (00-90°)
y : (e-1200-e) p: (y"90°-y + 90° )
Dimensões: h: 235 mm
b: 344 mm
.A c: 2j97 mm
p: 36 mm
Tipo de acionamento: motores de passo
com realimentaçao
de posição
Carga máxima: 1 Kg
Velocidade de operação: 90°/seg
- Peso do robô: 20 Kg
Precisão de posicionamento: 0 , 2 mm
- Mão-ferramentas disponíveis: garra mecânica ser
vocontrolada
li? 3
.105.
Um robô industrial com as características mostra
"' das acima possui diversas aplicações na indústria, escolas,
universidades e outros ambientes. Entre elas podemos citar:
- Desenvolvimento de técnicas e ensino em robóti_
ca
Esta foi a aplicação primordial para a qual ele
foi projetado. A sua arquitetura simples perm^
te a troca, de motores de passo por motores de
corrente contínua com dimensões compatíveis mu
dando completamente o tipo de acionamento do
robô. O estudo de sistemas de transmissão com
~/ correntes, correias dentadas e sem-fim/coroa po
3 de ser realizado nesta arquitetura. Novos sist£
mas sensores podem ser desenvolvidos, novas gar
ras e uma vasta gama de programas aplicados à
^ robótica podem ser realizados com este protóti^
po.
- Manipulação de peças e partes na indústria
^Z ' Este robô com a sua capacidade de cargaa^ sua
• j precisão de posicionamento e sua velocidade de
operação pode ser empregado na indústria, como
parte integrante do processo de fabricação na
manipulação de peças e partes seja para carga
e descarga de máquinas operatrizes, seja para
aplicações de armazenamento e empilhamneto de
peças ou de distribuição das mesmas para outros
processos.
• 5 ^
3
•V
- Sistemas de inspeção de peças
Munido de um sistema de visão computadorizado,
este robô pode ser empregado na automação de
sistemas de inspeção de peças, onde a sua fun
;3
O
3
3
•o
.3
r3)
.106.
Q Com um equipamento de soldagem a arco de pequ£
no porte, este robô pode ser utilizado em aplj^
cações de automação do processo de soldagem de
peças.
Montagem mecânica
Esta também é uma aplicação possível para este
robô desde que não seja necessária uma grande
força para inserir as peças nem que estas p£
ças sejam muito pesadas.
Ensaios de fadiga em equipamentos
3 Este robô pode ser programado para ficar op£
rando equipamentos com botões e o seu computa
dor de controle receber informações do funciona
mento dos botões de forma a que testei de fadi^
ga em condições reais de operação possam ser
automatizados.
- Auxílio a pessoas com alto grau de deficiência
^ física
Munido de sensores especiais e de uma programa
ção especial, este robô pode ser colocado jun
to a uma pessoa com grande deficiência física
(quadraplégicos) de forma a aumentar a sua capa
cidade de manipulação tais como se servir de
Z alimentos, telefone, virar páginas de livros,
3 colocar fitas e discos etc. [6] [36].
ção seria o correto posicionamento de peças na
estação de medição e a sua retirada e destina
ção uma vez terminado o teste.
- Sistemas de solda a arco de pequeno porte
^ .107.
O robô, como o computador, sendo um equipamento
flexível e programável, tem suas aplicações limitadas ap£
^ nas pela criatividade das pessoas que com ele operam. As
e¡3 aplicações descritas acima são apenas algumas sugeridas, mas
zf^ de forma alguma, esgotcim toda a gama possível de utilização
—^ de robôs deste tipo.
2.7 - COMCJLUSM
Neste capítulo apresentamos a parte referente à
construção e características da arquitetura mecânica do ro
bô no que diz respeito ao seu acionamento, suas especifica
ções e seu sistema de realimentaçao de posição. ;0
3
Apresentamos também os detalhes de construção da
garra mecânica utilizada no robô e demos uma idéia de algu
3 mas aplicações possíveis para o equipamiento desenvolvido.
O Entretanto, só poderemos entender completamente
como os sinais gerados pelos dispositivos apresentados nes
te capítulo asseguram um funcionamento correto do^robô, ao
entrarmos nos detalhes do seu processamento pelos circuitos
utilizados no seu sistema de controle.
O
-^j A utilização de motores de passo para o aciona
mento do robô tornou, por um lado, mais fácil o seu contro
le de posicionamento e velocidade, mas não dispensou, por
outro lado, a utilização de um. sistema de realimentaçao
de posição, e, por ser este motor um injetor de vibrações
^ mecânicas em várias freqüências, ressonâncias na estrutu
O ra mecânica ocorrem, perturbando a suavidade do movimento,
"3 e ocasionando também perdas de pulsos, detetadas e corrigi
^ das pelo sistema de realimentaçao [22].
•o
"3
-o
D
•3
.108.
A parte crítica na estrutura mecânica do robô que
afeta o seu correto posicionamento são as folgas e a não
rigidez de"seus componentes. Estas folgas foram levadas a
um mínimo possível sem prejudicar o seu funcionamento - e a
influência da não rigidez é diminuída com procedimentos de
aceleração e desaceleração nos movimentos.
Embora este robô tenha sido projetado e construí,
do para ser um equipamento dedicado ao laboratório, objeti^
vo deste trabalho, as suas características permitem uma vas
ta gama de aplicações industriais.
-3 •D
3 ) 3
3
:0
3
CAPITUM) III - SISTEMA DE C01P3TR0LE PROPOSTO PARA
O LABORATORIO
3 '' "... A maquinaria, como instrumen
O tal que é, encurta o tempo de tra
\ ' balho, facilita o trabalho, é uma
vitória do homem sobre as forças
naturais, aumenta a riqueza dos
que realmente produzem, mas, com
sua aplicação capitalista, gera re_
3 sultados opostos: prolonga o tempo
3 de trabalho, aumenta sua intensida
de, escraviza o homem por meio das
forças naturais, pauperiza os ver
_ dadeiros produtores ..."
(Karl Marx)
:.0 .110.
3.1 - IMTItODUÇAO
Como dito anteriormente, temos por objetivo neste
'" trabalho apresentar a concepção e implementação do LÍDER -
D Laboratório Integrado para Desenvolvimento e Ensino da Robó
tica, realizado no Laboratório de Sistemas Digitais da Esco
Ia Politécnica da USP.
Neste capítulo nos deteremos na estrutura e nos
"' circuitos do sistema de controle proposto para este labora
tório. A arquitetura de controle proposta é hierárquica, ten
...O do no nível mais alto, nível 2, um microcomputador PDPll/34
do LSD com a função de aumentar a capacidade de processamen
• Q to do laboratório proposto no que diz respeito à simulação
^ gráfica, linguagens complexas de programação de robôs, ban
C O S de dados, processamento sofisticado de imagens, etc.
3 No nível mais baixo a seguir, nível 1, temos um
O sistema para desenvolvimento de programas para robôs basea
3 do em um microcomputador com memória de massa e com sistem.a
.í»> operacional compatível com o CP/M, tendo a função principal
de ser ferramenta para desenvolvimento de programas e cir
cuitos voltados para aplicações em robôs industriais. Este
nível será capaz de se comunicar com processadores do ní_
3 vel mais inferior, nível O, que tem como função principal o
controle dedicado de movimentação do robô e de suas interfaces
de comunicação com o ambiente externo.
A primeira parte do capítulo é dedicada à apresen
tação detalhada do sistema hierárquico proposto e às fun
ções de cada nível de controle.
3 A seguir descreveremos com detalhes a implementa
3 ção de cada um destes níveis sob o ponto de vista de arqui_
tetura e interfaces implementadas bem como de funcionamento
.111
dos circuitos que executam estas funções.
Um sistema hierárquico distribuído de controle
consiste num conjunto de micro/minicomputadores dispostos
em uma estrutura de árvore onde, aos processadores de nível
mais baixo são associadas funções dedicadas e específicas e
aos de mais alto nível funções de propósitos mais geral tais
como controlar e coordenar o sistema como um todo [62].
3 3
Num sistema hierárquico os processadores na base
da pirâmide são usualmente baseados em miicr^oprocessadores
com um número reduzido de periféricos enquanto o processa
dor do topo consiste em um minicomputador ou mesmo um compu
tador de grande porte com grande capacidade de processamen
to e arm.azenamento de informação.
A figura 3.1 apresenta um sistema hierárquico de
controle típico, possuindo três níveis.
O nível O de controle pode ser um microcomputador
^ dedicado a funções básicas tais como ler informação de sen
"2 sores, atuar motores e interfaces, executando um determina
-j do programa de controle.
O nível 1 pode ter funções diversas como transmj^
" tir para o nível O.programas e comandos de controle e rece
^ ber dados para armazenamento em dispositivos de memória,
além de executar funções de análise em tempo real e desen
3 volvimento de programas.
^ No nível mais alto, nível 2, estão as funções de
coordenação de todo o processo, bancos de dados mais so
3 3.2 - SISTEMA HIERÁRQUICO PROPOSTO
3
.112.
fisticados e armazenamento de todos os dados e
funcionais do piocesso controlado.
paramètres
3
3
Normalmente a comunicação entre estes níveis é
feita utilizando-se linhas dedicadas entre cada processador
e seus inferiores e superior na hierarquia.
A grande vantagem deste sistema de controle é a
divisão do processo como um todo em partes dedicadas, meno
res e mais simples podendo ser feito um procedimento "top-
down" ou "bottom-up" de desenvolvimento tanto dos circui^
tos como dos programas para cada um destes níveis, facili^
tando e n o r m e m i O n t e a implementação e manutenção futura dos
dispositivos que controlam o processo.
f
N l V E L NlVEL NlVEL N l V E L N lVEL N l V E L £5 0 0 0 0 0
Fig. 3.1 - Estrutura típica de um sistema de con
trole hierárquico.
3)
3
:0
.113.
As suas desvantagens principais são o "overhead"
de comunicação entre os vários níveis e os seus aspectos de
confiabilidade, isto é, se o processador do topo da pirâmi^
de falha, todo o controle do sistema é comprometido, e se
algum dos elos de comunicação falha, todos os processadores
em níveis mais baixo são desconectados do sistema.
Estas desvantagens não pertubam muito a implemen
tação de um laboratório baseado nesta arquitetura de contro
3 le, embora sejam cruciais para um sistema de controle de
3 processos em tempo real.
^ A figura 3.2 apresenta um diagrama esquemático da
estrutura proposta para o laboratório integrado para desen
volvimento e ensino da robótica.
o o nível O de controle do laboratório corresponde
3 a um processador dedicado ao controle do robô e às interfa
ces de comunicação do robô com equipamentos externos. Este
processador executa programas de controle fixos, residentes
em sua memória, e recebe e transmite informações (dados e
programas de tarefas do robô) para a memória de maGsa do ní_
3 vel 1 através de uma linha de comunicação serial.
—3 O nível 1 de controle é baseado em um microcompu
tador com sistema operacional compatível com o CP/M tendo
como funções principais servir de sistema de desenvolvimen
to para programas do nível O de controle e possibilitar o
interfaceamento de sensores tais como sistemas de visão da
área de trabalho dos robôs a ele conectado. Ele se comunica
com os dois níveis, superior e inferior através de linhas
de comunicação serial.
O nível mais alto de controle está previsto para
ser implementado em um minicomputador PDPll/34, tendo como
¡3
-3
.114.
13 :3
•3 ^3 .3 .3 -3 .3
3
"3
P D P n / 3 4
N I V E L l
CP/M
NIVEL
0
ROBO 3
NIVEL
0
ROBO 4
Fig. 3.2 - Estrutura hierárquica proposta para o
laboratório.
.115.
funções aumentar a capacidade de processamento do laborató
rio no que diz respeito à implementação de linguagens para
programação.de robôs mais sofisticadas sistema de simula
ção e coordenação de trabalho entre vários robôs e t c . A co
municação com o nivel 1 de controle será feita utilizando
linhas de comunicação serial de alta velocidade.
No atual estágio do trabalho encontra-se implemen
tada apenas a área marcada na figura 3.2, sendo que nos
itens seguintes deste capitulo apresentaremos os detalhes
de funcionamento e implementação dás várias partes componen
tes dos dois niveis implementados e as funções previstas pa
ra o nivel mais alto de controle.
3.3 - DESCRIÇSO DO ]Ml¥E]L O DE COJSTROtE
O nivel O de controle consiste em um microcomputa
dor e interfaces dedicados ao controle do robô associado a
este processador.
Um diagrama de blocos esquemático da organização
deste computador e de suas interfaces principais está mos
trado na figura 3.3.
As funções básicas deste nivel de controle podem
ser vistas a seguir:
- Acionamento dos motores de passo do robô com
velocidade, aceleração e direção programadas.
- Processamento dos sinais vindos dos codificado
res angulares incrementais montados nos motores
do robô.
,\ O O O o i> 1
I 6 1 1 } \ } , . ) c 1. l i 11 l i w ÛJ> k ü h ^
< a>
Oq
W
W
I
a
P
O O
ET-
O M O CO O
m o w C CD 3 P> r t o O
CL O
C
\ 7
Comunicação Nível 1
CD INT. I N I CR COMUN. SINCRON. M 1-1
J>í PROCESSADOR
A
7S
Linhas ds Sincronisrtx) ^
Caixa (Je Aprendizado
INT ACIONASISTEMA
CHAVES ACIONA
SISTEMA CHAVES MENTO
SISTEMA
REALIM, LIMITES MOTOR
REALIM,
l2. 01
.117.
•D
:0 3
bô.
Interface para os sinais de sincronismo com even
tos externos relacionados ao robô.
3 - Interface de comunicação serial com o nível 1
de controle.
Todo este processamento dos sinais vindos das vá
rias interfaces existentes no nível O de controle é feito
^ por cinco programas principais implementados neste nível a
O saber:
O jfcj - Programa monitor
f 3 Fornece suporte para a programação e testes dos
A ' programas para o microcompuatdor. ^
- Programa de calibração
Movimenta os motores do robô de forma a que, in
dependentemente de sua posição inicial, ele
atinja a sua posição de referência.
- Programa de aprendizado
A partir de sinais e comandos vindos da caixa
de aprendizado, movimenta o robô e guarda na me
mória de tarefa o programa aprendido.
- Programa de execução
A partir do programa aprendido carregado na me
- Processamento dos sinais vindos das chaves limi_
^ tes de cada um dos graus de liberdade do robô.
2 - Interface e processamento dos sinais e comandos
vindos da caixa de aprendizado de tarefas do ro
mória de tarefa, controla o robô de forma
executar aquele programa.
O
-o 3 3 - Programa de comunicação
O São rotinas básicas que cuidam da tansferência
3 de dados e programas do nível 1 de controle pa
ra o nível O e vice-versa.
O funcionamento de cada um destes programas será
visto com detalhes no capítulo IV deste trabalho. Neste
item nos deteremos na descrição do computador e de cada uma
das interfaces que configuram o nível O de controle do labo
ratório.
3.3.1 - Arquitetura do coiaputador de conti-ole
O computador de controle do nível O é baseado no
microprocessador 18085 da INTEL com relógio de 3,072 MHz
(cristal de 6,144 MHz com divisão por dois interna ao pro
cessador).
Este processador possui instruções de tamanho va
riável de 8, 16 ou 24 bits e palavra de dados de 8 bits sen
do o menor ciclo de instrução (quatro períodos do relógio)
de 1,45 microsegundos. Ele possui seis registradores de pro
pósito geral de 8 bits e um acumulador. Estes seis registra
dores podem ser endereçados individualmente ou em pares
dependendo do tamanho do operando (8 ou 16 bits).
Sua capacidade de endereçamento de memória é de
64 Kbytes e possui ainda cinco entradas de interrupção prio
rizadas (TRAP, RST7.5, RST6.5, RST5.5 e INTR) que geram en
dereços únicos de memória para rotinas de tratamento destas
- • '•• - • • Í - - E R G : A Í J Ü C L E A R / s p !. P . E . Í \ I .
— . 1 1 9 . « ' - « ^
interrupções. Todas elas, com excessão da TRAP são mascará
veis através de programação.
O processador 18085 é descrito completamente em
[26] de forma que não será dada uma descrição mais detalha
da aqui.
Um diagrama esquemático da arquitetura do computa
dor de controle do nível O pode ser visto na figura 3.4.
Todos os sinais originários do processador são
amplificados por questão de "fan-out" gerando três barramen
tos principais internos (PABI, PDBI e PCBI) e três barramen
tos externos (PMAB, PMDB e PMCB) sendo que uma especifica
ção de cada um destes sinais pode ser vista na tabela 3.1
para os barramentos externos.
A memória do computador do nível O é organizada
em três bancos:
y
,^ . 1 - 1 6 Kbytes de memória EPROM (O - 3FFF em hexa
decimal) montadas na placa do processador. • W
^ 2 - 8 Kbytes de memória EPROM (4000H - 5FFFH) e'
3 8 Kbytes de memória RAM (6000H - 7FFFH).
3 - 1 6 Kbytes de memória RAM (8000H - BFFFH).
Os dois últimos bancos de memória são montados em
placas separadas e conectadas ao barramento externo como
^ mostra a figura 3.4, sendo que mais um banco de 16 Kbytes po
de ainda ser adicionado.
.120.
3
Sinal Descrição funcional Conector
PMAB(0-15) Barramento de endereços do 032,S32 ...
processador ... C39,S39
PMDB(0-7) Barramento de dados do 05,S5 ...
processador ... C8,S8
PMCB :
NMEMR Leitura de memória C9
NMEMW Escrita de memória S9
NMIOR Sinal de leitura de E/S CIO
NMIOW Sinal de escrita de E/S SIO
PMLAL Limpa ao ligar Cll
PIN5.5 Interrupção RST5.5 Sll
PINT6.5 Interrupção RST6.5 S20
PINT7.5 Interrupção RST7.5 017
PMHOLD Pedido de HOLD 016
PMHLDA Atendimento de HOLD C15
PMCOUT Relógio de saída * S15
PAEN Inibe barramento de saída S16
PMSID Entrada serial do 8085 S17
PMSOD Saída serial do 8085 S22
PMSO,PMSl Linhas de status do 8085 021,022
PMIOM Linha de lO/M do 8085 020
PMALE Sinal de validade de endereço S21
PREADY Sinal de READY do processador 028
NMINT7... Pedidos de interrupção que C29,S29 ...
. . .NMINT2 geram INTR ... 031,S31
Tabela 3.1 - Especificação dos sinais dos barra
mentos externos do computador do ní
vel O
.121.
3
"3
OUTRAS INTERFACES
PABI mum
Fig. 3.4 - Diagrama esquemático da arquitetura do computador de controle do nivel O.
-O
.3
13
:3 "3
-3
'3
.122.
^ As outras interfaces necessárias para implementar
3 as funções do nível O de controle são colocadas no barramen
2i3 to externo do computador sendo que elas serão descritas d£
^ talhadamente nos itens que se seguem.
3.3.2 - Acionaimento dos imotores de passo
Para robôs de pequeno porte e grande precisão, a
utilização de acionamento elétrico vem sendo dominante, como
visto no capítulo I deste trabalho.
As principais razões da utilização de motores de
passo ao invés de motores de corrente contínua na constru
ção de robôs são [41] [47]:
a - O motor de passo é por si só um dispositivo
de movimentos discretos sendo adequado para
comando por microcomputadores.
b - O erro de posicionamento em um motor de passo
corretamente controlado não é acumuíativo, i£
3 to é, pode-se obter um controle de posição e
Ij velocidade acurado com estes motores.
o - Motores de passo produzem alto torque estáti^
co, dispensando a utilização de freios.
d - Para velocidades baixas pode-se movimentar e
parar o motor instantaneamente e mesmo rever
'3 ter a direção do movimento.
e - Uma vez que os motores de passo utilizam pul^
SOS digitais de potência o seu controle dis
pensa a implementação de amplificadores linea
-3
:0 -O
'O
1.0
.123.
res de potência de alto custo de desenvolvi^
mento.
f - Os procedimentos de projeto para um controla
dor com motores de passo são mais simples do
que para um motor de corrente contínua.
g - Não é necessário ter conhecimento preciso tan
to das características do motor como de sua
carga para o correto funcionamento do mesmo ,
desde que suas condições de torque/freqüência
máximas sejam respeitadas.
Todas estas razões nos levaram a utilizar motores
de passo para o acionamento do robô. Para garantir o seu
correto posicionamento, um sistema de realimentaçao foi im
plementado com codificadores angulares incrementais monta
dos no eixo dos motores como foi detalhado no capítulo an
terior.
Neste sub-item apresentaremos os detalhes de fun
cionamento dos cartões que convertem os sinais de plilso e di
reção no chaveamento das fases do motor e a lógica de gera
ção dos pulsos e direções para todos os motores. No próximo
sub-item explicaremos o funcionamento do circuito de reali
mentação de posição.
Um esquema geral do acionamento dos seis motores
de passo (um para cada grau de liberdade mais o acionamento
da garra) está mostrado na figura 3.5 a seguir.
O circuito de acionamento dos motores de passo po
de ser dividido em duas partes. A primeira é responsável
pela geração de pulsos de freqüência e curvas de aceleração
e desaceleração, bem como dos sinais de direção para todos
.124.
3>
3)
PMDB
c
PMAB
PMCB
C
t o o
m hl CC
t o o
UJ <I Q UJ DC Q <
o < CE ' o
o -l l j
CC
MOTB
DRIVER E MOTE
Fig. 3.5 - Esquema geral do acionamento dos moto
res de passo.
os motores de passo do,robô, e a segunda parte é responsa
vel pela conversão destes sinais de pulso e direção em um
seqüenclamento específico de chaveamento das fases do motor
para a sua movimentação correta em uma ou outra direção.
.125.
Os motores de passo utilizados tem alta resolução
(200 pulsos por volta ou 400 pulsos em meio passo) sendo
que as suas. características principais estão mostradas na
tabela 3.2 para os motores do robô e da garra.
Tabela 3.2 - Características dos motores de passo
utilizados no robô e na garra.
Parâmetros motor do motor da
Parâmetros robô garra
Angulo de passo 1,8° 1,8°
Tensão de alimentação 2,9 V 5,9 V
Corrente/fase 3,1 A 0,88 A
Resistência/fase 0,95 n 5,9 íl
Indutância/fase 3,8 mH 11,0 mH
Torque estático 10,8 Kpcm 3,8 Kpcm
Torque residual 0,36 Kpcm 0,^6 Kpcm
Inércia do rotor 0,67 Kpcm* 0,12 Kpcm*
Peso 1,48 Kg 0,57 Kg
Número de fases 4 4
Um esquema de como as quatro fases dos motores
de passo são interligadas internamente e a seqüência de co
mutação das fases para passo completo e meio passo estão mos
tradas nas figuras 3.6 e tabelas 3.3 e 3.4 respectivamente.
:3 ::3
.126,
FASE I A
F A S E 2A
FASE TB
FASE 2 B
Fig. 3.6 - Interligação das fases no motor de pas
so de quatro fases.
3
3
CW
Tabela 3.3 - Seqüência de fases para movimentar o
motor em passo completo.
IA IB 2A 2B
XXXX XXXX
XXXX XXXX
x x x x XXXX
x x x x XXXX
XXXX XXXX
Início
CCW
XXXXj LIG,
I ( DES,
.127.
Tabela 3.4 - Seqüência de fases para movimentar
CW
o motor de passo
IA IB 2A 2B
XXXX
XXXX XXXX
XXXX
XXXX XXXX
XXXX
XXXX XXXX
XXXX
XXXX XXXX
XXXX
Início
CCW
Assim, uma placa foi projetada e construída para
do com I —
tabelas
servir de interface entre os sinais digitais vindos do com
putador e a seqüência de fases mostradas nas duas
anteriores para motores de passo de quatro fases.
Um diagrama esquemático desta placa pode ser vis
to na figura 3.7 que segue. Ela se compõe de três partes
principais: geração de seqüência de fases, regulador das ca
racterísticas do motor e excitadores de potência.
A parte de seqüência de fases tem três entradas
a saber:
- PULSO
A cada transição negativa deste sinal, gera-se
3
3
.128.
o CO CO <t a. til Q
3
— 2 r,
< CD m
CM 111 o < < lu CE Ü CO ~o Ul Z < 5 Q'UJ U-i "8 S UJ CO
CONTADOR
DRIVER
1 , CO o < UJ U_
Q o 111
8 CO < Q.
Fig. 3.7 - Diagrama esquemático da placa ladora de motores de passo.
contro
:0
3
SI»
.129.
uma nova seqüência de fase conforme uma das ta
belas anteriores de modo a que o motor avance
W um passo.
3 - DIREÇÃO
_^ Determina o sentido de rotação do motor de pa£
so (nível O é CW e nível 1 é CCW).
- PASSO/MEIO PASSO
Determina se o motor vai se mover no modo de
^ passo ou de meio passo (nível O e nível 1 res^
pectivamente).
O As seqüências de fases para passo e meio passo
2 são armazenadas em uma memória PROM ("Programmable read
-» only memory") sendo que a tabela é selecionada pelo sinal
PASSO/MEIO PASSO. Os sinais de PULSO e DIREÇÃO são entradas
^ de um contador de duplo sentido de contagem. As saídas da
" memória passam por excitadores de potência transistorizados
- que comutam as fases do motor.
Q O controle da corrente que passa em cada fase do
motor é feito por um oscilador "chopper" sendo que a corren
te é determinada pelo tempo de nível O da onda do oscila
dor, tempo este regulado por um potenciómetro da placa, po
dendo variar desde 0,5 A até 5 A, dependendo do motor a ser
acionado.
A alimentação do cartão é 24 V e o pico de corren
te que passa na fase do motor que foi imediatamente aciona
da é regulado por outro potenciómetro.
As principais vantagens desta placa em relação a
outras que controlam motores de passo são:
:3
.130.
-V
3
•y Este contador programável é utilizado neste cir
cuito no modo de funcionamento 3, como divisor de frequen
cia. A frequência do relógio do microcomputador (3,072 MHz)
é dividida por dois sendo esta freqüência a entrada do con
tador programável utilizado para gerar as curvas de acel£
ração e desaceleração dos motores. A saída deste contador
é entrada para os outros seis contadores sendo cada um d_e
les dedicado à geração do sinal de pulso de um motor.
A direção é programada carregando um valor do
barramento de dados em um registro de direção endereçado co
- Elimina a necessidade de resistores de baixo va
lor e grande capacidade de dissipação de poten
. cia para limitar a corrente nas fases.
- Permite alimentar um motor com tensão bem maior
do que a nominal melhorando sua curva de tor
que/velocidade.
- Maior eficiência em termos de corrente exigida
da fonte.
- Características do motor são ajustáveis sem prie
cisar trocar ou adicionar componentes.
A segunda parte do acionamento dos motores de pas
so correspondem à geração dos sinais de pulso e direção
para os cartões controladores dos motores de passo.
Um diagrama esquemático do circuito utilizado pa
ra este fim está mostrado na figura 3.8. Toda a lógica
do, circuito é baseada nos contadores programáveis da pasti^
lha 18253-5 da INTEL, onde suas principais caractftrísticas
W são vistas em [28].
3 . 1 3 1
3 •3
3
< o o o Q ^ ^
£ S í £ - í o o o o D Q.
REGISTRO DE
DIREÇAOÍPDIR)
A A A
00 < z
D.
s
c
iS o < CC z UJ . , .
N •I-
CM
4 CO
CO CO o Q l»-
CO C3 CO CG
Cl. Cl
BUFFER
I
m
a:
> ^ I l-^ 5
o
g o
i -o
UJ
a. o UJ
o
i r
o u .
| . | -
o
REGISTRO DE
HABILITAÇÃO HABIM
A / \ A OD O
03 O
..V
Fig. 3.8 - Diagrama de geração dos sinais de pul^
so e direção para os motores de passo.
3
.132.
mo uma porta de saída do processador.
^ Outro registro é utilizado para habilitação do
5 motor, ou seja, ao se carregar 1 em um determinado bit do
Zj registro, habilita-se o motor correspondente àquele bit,
ao se carregar O, inibe-se o movimento daquele motor.
Desta forma, para se conseguir a interpolação do
movimento dos motores no espaço de coordenadas de junção,
3 isto é, fazer com que o robô ao se deslocar de um ponto pa
O ra outro, todos os motores comecem a se movimentar ao mesmo
2 tempo e terminem o movimento também ao mesmo tempo, progra
- ma-se valores calculados de divisores de freqüência para
_ cada motor, como será visto no próximo capítulo. Assim, os
seis contadores dedicados aos motores são responsáveis por
gerar pulsos em freqüências proporcionais ao número de pul_
SOS que o seu motor irá se deslocar.
7j
A aceleração é conseguida em todos os motores de
^ forma proporcional à calculada acima para cada motor mudan
^ do-se o valor do divisor do contador de aceleração durante
o movimento de forma a que a curva de aceleração e*desacel£
•** ração mostrada na figura 3.9 seja obtida.
2, Assim, esta curva de freqüência gerada pelo conta
^ dor de aceleração é dividida pelos contadores dedicados a
^ cada motor gerando curvas de aceleração e desaceleração pro
^ porcionais para cada motor, preservando a interpolação em
coordenadas de junção dos movimentos.
3 A medida que cada motor atinge o seu ponto de des
3 tino, o contador dedicado àquele motor é automaticamente ini
bido parando o movimento e gerando uma interrupção para o
^ processador como será visto no próximo sub-item do sistema
de realimentaçao
.133.
FREQÜÊNCIA
FftR. INICIO ACELER. PERCURSO DESACEL. CHEG4DA PAR TEMPO
Fig. 3.9 - Curva de aceleração e desaceleração
gerada pelo controlador de aceleração.
..V
3.'3.3 - Sistema de realimeinitação
Conforme mostrado no item 2.4 do capítulo ant£
rior, o sistema de realimentaçao de posição utilizada no ro
bô é baseado em codificadores angulares incrementais com
sensores opto-eletrônicos.
Um diagrama completo do circuito de realimentaçao
de posição para um motor (motor A no caso) pode ser visto
na figura 3.10.
Cada sensor é composto de um diodo emissor de
infra-vermelho e de um foto transistor, polarizados como
mostra a figura e montados sobre o disco ranhurado de forma
, a ,\ i» i) 4 ' t> 4 » <• 4.' v» ^ \> Áj^ii i i i ) 4 ' i ) v r^u 'U í T ^ o 1) I I í' v.t o
OP
CO
o
r t 4 Ö 0 (D M->S tü P M H-> 3
CD • P
r t CD W
PI JO 0 c
CD 3 CD ct "a H-
0 0 w 0 a
P! 0 0 M •a p m
c+ p 0
3 d P 3
P
.3 & Io CD
A + 1 2
X
n ç v ^ 4 1234
J J , I
SAA^
S A B .
COMPARADOR
t , _ l SENSORES MONTADOS NO DISCO
<C-L_1—- > " " ° c c 3
CWA N/W
CCWA
CONTADOR A CW(A)
TCWA
ÍM1 CONTADOR A
C C W ( A ) TCCVIÍA
PMDB
PMCB
ÄHMOA w
•O
.135.
a ficarem em quadratura de fase. Os sinais vindos destes
sensores são quadrados por um comparador e entram em um
circuito decodificador de estados gerando pulsos a cada
transição de qualquer dos dois sinais na direção do movimen
to.
Este circuito decodificador de estado é baseado
em um registro que endereça a memória com os estados atuais
O (QA^lN, QABN) e anteriores (QAAN-1, QABN-1), amostrados com
uma freqüência bastante alta (1,5 MHz) de forma a que todas
as transições gerem pulsos de contagem, e mais o sinal de
habilitação do motor (GATEA) e um comando (PULSTIM) de for
ma que, com os dados mostrados na tabela 3.5 armazenados na
memória, os sinais de pulso na direção CW (CWA) e pulsos na
Ti direção CCW (CCWA) sejam adequados para o circuito de conta
^ gem da parte inferior da figura 3.10.
Assim, olhando na tabela 3.5 referenciando os es
tados marcados nas formas de onda da figura 3.10 podemos
ver que quando o motor está andando (GATEA=1), enquanto
estivermos amostrando os sinais na região 1, CWA e CCWA es
3 tarão em nivel 1 (1->1). Ao avançarmos na direção ÇW, de 1
^ para 2, vemos que durante um periodo de amostragem a saida
CWA irá para zero (l->2) e no próximo retornará para 1
(2->2) gerando um pulso na direção CW. Se ao invés de irmos
para o estado 2, a partir do 1, irmos para o estado 4, ou
seja, andarmos na direção CCW, a saida CCWA irá para zero
(l->4) durante um período de amostragem e em seguida retor
nará para 1 (4->4), gerando um pulso na direção CCW.
Assim, a cada transição de qualquer um dos sinais,
o decodif icador de estados gera um pulso de contagem na d_i
reção correta. Com um disco de 100 divisões, obteremos com
este circuito um total de 400 pulsos por volta, que é a
resolução do motor de passo.
.136.
" - ^ PULSTIM GATEA QABN-1 QABN QAAN-1 QAA CWA CCWA ESTADO
" - ^
X 1 0 0 0 0 1 1 1->1
O X 1 0 0 0 1 0 1 l->2
X 1 0 0 1 0 1 0 2->l
o X 1 0 0 1 1 1 1 2->2 o "~J
X 1 0 1 0 0 1 0 l->4
X 1 0 1 0 1 1 1 ?
X 1 0 1 1 0 1 1 ?
Zj X 1 0 1 1 1 0 1 2->3
X 1 1 0 0 0 0 1 4->l
X 1 1 0 0 1 1 1 ?
' X 1 1 0 1 0 1 1 ?
X 1 1 0 1 1 i 0 * 3->2
X 1 1 1 0 0 1 1 4->4
X 1 1 1 0 1 1 0 4->3
X 1 1 1 1 0 0 1 3->4
X 1 1 1 1 1 1 1 3->3
1 0 X X X X 1 1 PAR
0 0 X X X X 0 0 PAR
X=0 ou 1, ?=ilegal, PAR=motor parado
Tabela 3.5 - Dados armazenados na memória do deco dificador de estados.
. 1 3 7 . 7^
Estes pulsos gerados por esta máquina seqüencial
3 são contados por dois contadores programáveis implementados
com o timer 18253-5 da INTEL, como mostra a figura 3.10 na
sua parte inferior, sendo que um deles conta os pulsos na
direção CW e o outro na direção CCW.
Estes contadores são programados no modo O, modo
' este que interrompe o processador na contagem terminal.
Quando qualquer um dos contadores atingir a conta
--j gem final o circuito lógico gera dois sinais, HMOA que in
terrompe a contagem dos contadores e a geração de pulsos pa
ra o motor de passo correspondente (figura 3.8) e RA que,
^ na figura 3.11, gera uma interrupção RST6.5 para o processa
dor e coloca em um registrador endereçado como porta de en
^ trada, o vetor correspondente ao motor de mais alta priori^
^ dade que atingiu a contagem final [56].
Assim, o seguinte algoritmo é utilizado para ga
^ rantir que o motor se deslocou da quantidade de pulsos cor
reta ao se movimentar de uma posição para outra:
g 1 - A partir da posição atual e da posição deseja
da, determina-se a direção do movimento (CW
ou CCW) e o número de pulsos que o motor dev£
rá andar de uma posição para a outra.
2 - Calcula-se a velocidade que o motor se deslo^
cará e coloca-se o valor no contador divisor
de freqüência correspondente àquele motor (f_i
gura 3.8).
3 - Armazeña-se o número de pulsos a ser contado
no contador da direção correspondente e FFFFH
no outro contador (figura 3.10).
3
.138.
A+5
RA
GATEA
RB
GATEB
RC
GATEC
RD
GATED
RE
GATEE
RF 6ATEF
> > > > > >
-C 0
-C 1
-04
-C 5
-C 6
Í8 o < Q CC O d:
Q l
lU o
8 < u Üs o o o
E I
I
A 0
A l
A2
>
EO >
t e
g Ui
> u o o oc I-52 o TU a:
PMDB
RST6 5
Fig. 3.11 - Esquema de interrupção do processador
ao se atingir a contagem final.
4 - Habilita-se a interrupção do processador e o
motor que irá se deslocar (GATE).
5 - Quando a interrupção ocorrer, inibe-se o mo
tor (GATE) e determina-se o número de pulsos
que ainda falta andar, correspondendo ao núme
ro de pulsos recebidos no contador da dir£
ção oposta ao movimento.
C O M I S G A O N A C I G ° . : A L O E E N E R G Í A N U C L E A R / S P
1. P . E . N .
.139.
3.3.4 - Caixa de aprendizado de tarefas
A interface para a caixa de aprendizado de tar£
fas tem por função permitir o controle dos movimentos do ro
bô por meio de um teclado montado em um terminal portátil
de forma a que tarefas possam ser ensinadas ao robô.
Esta entrada de programas a serem executados pelo
robô é feita particionando-se a tarefa em pontos principais
e levando manualmente o robô, através do acionamento de
seus motores, comandados pelas teclas da caixa de aprendiza
do.
Uma vez posicionado o robô no ponto desejado, te
cias da caixa permitem armazenar o ponto, colocar parame
tros tais como velocidade de saida etc.. Outros comandos
de controle de execução da tarefa podem ser entrados a par
tir da caixa de aprendizado.
Existem duas caixas de aprendizado para o labora
tório. Uma tem como terminal de entrada uma caixa portátil
com teclas e um mostrador alfa-numérico de 32 caracteres.
6 - Se este número for maior do que 1, retorna-se
ao passo 3, senão, termina.
Desta forma, com este procedimento garante-se que
o motor sempre andará o número exato de pulsos independente
de eventuais perdas.
O circuito da figura 3.10 é repetido para cada um
dos motores do robô e o algoritmo de realimentaçao é reali^
zado para os seis motores, como será visto com detalhes na
programação da rotina de deslocamento, a ser vista no próxi
mo capitulo.
.140.
que possibilita apresentar os comandos entrados e mostrar
um menu de comandos selecionáveis pelas teclas. Esta caixa
e o seu correspondente programa de aprendizado e execução
de tarefas estão detalhados em [13].
A segunda utiliza o terminal de vídeo do nível 1
-Z> de controle como a caixa de aprendizado.
* A interface para esta segunda caixa de aprendizado
- é, então, a própria interface de comunciação entre os dois
^ níveis de controle, que será detalhada no sub-item 3.3.7.
A definição das teclas e a sintaxe dos comandos pa
ra o aprendizado de tarefas utilizando o terminal de vídeo
O será mostrada no sub-item 4.2.3 do próximo capítulo.
3.3.5 - S i n c r o n i z a ç ã L O CCMB e v e n t o s e x t e r n o s
No processo produtivo, o robô deve interagir cora
outros equipamentos componentes deste processo de forma a
sincronizar suas ações e iniciar funções dependen^do de esta
dos e comandos destes outros equipamentos.
Esta sincronização é feita através de uma interfa
ce com sinais de entrada e saída que podem ser processados
e testados através de comandos implementados no programa
3 de execução do robô, comandos estes que são entrados atra
O vés da caixa de aprendizado de tarefas ou através do código
^ gerado pela compilação da linguagem de alto nível para pro
gramação do robô, que será vista no capítulo V.
Esta interface de sincronismo possui oito linhas
binárias TTL ("transistor transistor logic") de entrada
Z e oito linhas binárias de saída TTL além de seis linhas TTL
.141.
de entradas de interrupção, como mostra a figura 3.12 a se
gulr.
As oito linhas de entrada e as oito linhas de saí^
da são implementadas com duas portas da interface periféri^
ca programável I8255A da INTEL [27].
As linhas de saida são programadas escrevendo-se o
valor do acumulador em uma porta de saida do processador e
as de entrada são lidas através de uma porta de entrada,
sendo que comandos do robô podem testar ou colocar um nivel
em bits separados destes registradores ou ler e escrever os
oito bits de uma vez só.
C
C í l
/ \/ a; REGISTRO DE
S A I D A
BUFFER T T L
8 LINHAS SAJDA
5
REGISTRO DE
ENTRADA
A
BUFFER T T L
8 LINHAS ENTRADA
PMAB
PMDB
PMCB
\/ v \ / CODIFICADOR
INTERRUPÇÃO
BUFFER T T L
l A
6 LINHAS DE I N T R
Fig. 3.12 - Esquema das linhas de
do robô.
sincronismo
^ .142.
3.3.6 - Deteção de chaves limites
Como explicado no sub-item 2.4.2, são duas as fun
ções das chaves limites associadas a cada grau d^ liberdade:
1 - Proteger a estrutura do robô interrompendo o
acionamento dos motores ao ser acionada algu
ma chave.
2 - Fornecer uma referência de posição para a de
terminação da posição inicial do robô.
As chaves estão posicionadas no robô conforme mo£
trado na figura 2.11 e fornecem entradas para o circuito de
deteção das chaves ' limites apresentado na figura 3.13 a S(B
guir.
^ As seis entradas de interrupção geram as interrup
1% ções RST2 - RST7 do 8085, sendo que elas podem ser habilita
das ou mascaradas também através de comandos do robô.
Sempre que uma interrupção for gerada através das
linhas de entrada, e ela estiver habilitada, o controle do
robô passará a ser feito por comandos em rotinas de intei^
rupção, que, uma vez terminadas, retornarão o controle para
:3 o comando seguinte ao último executado antes da interrup
ZZ^ ção.
Desta forma, estas linhas de sincronismo permitem
"" uma grande flexibilidade na interface do robô com outros ro
3 bôs ou equipamentos componentes do processo de produção tais
como máquinas de comando numérico, prensas, equipamentos de
•Z\ soldagem, eventos comandados por chaves, e t c .
.143.
A Interrupção TRAP do processador 8085, não masca
rável por programação, é associada às chaves limites por
ser esta interrupção a de maior prioridade do processador.
O circuito lógico da parte inferior da figura
3.13 tem a função de fazer um mascaramento por circuitos
desta interrupção. Ao se iniciar o processador (RESETIN=1),
ZZZJ tanto o flip-flop FFl como o FF2 são zerados inibindo a in
terrupção TRAP.
:Z^Zé
O sinal HTRAP, vindo de üma porta de saída progra
mável do processador é utilizado para habilitar (transi^
••'-" ção 0->l) ou inibir (nível O) a interrupção TRAP, conforme
---'- mostra o circuito.
- Todas as entradas das chaves possuem resistores
_ de forma que, quando elas estiverem no seu estado normal
_ (abertas), estas entradas estejam em nível 1 fazendo com
que o codificador de prioridade não codifique nenhuma entra
da, deixando sua saída GS em nível O. Quando uma ou mais cha
^ ves são atingidas, elas fecham e colocam nível O nas suas
2, entradas correspondentes do codificador, sendo qu| a de
j maior prioridade (0->7) é codificada nas linhas A3-A0 e a
saída GS vai para nível 1. Estas saídas, GS e A3-A0 podem
ser lidas através de uma porta de entrada do processador
para se determinar se alguma chave foi atingida (GS=1) e
qual foi atingida (A3-A0).
Se a interrupção TRAP estiver habilitada, ao ser
atingida alguma chave, a transição de GS (0->l) faz o
flip-flop FF2 ir para nível 1, interrompendo o processador
e então pode-se determinar qual chave foi atingida lendo-se
a porta de entrada deste circuito.
Assim, na iniciação do robô aciona-se os motores
-3 •V
3 .144,
t n i n o ü C L Q - _ i _ i _j o o o O ü O o o o
Fig. 3.13 - Circuito de deteção das chaves
tes.
limi
. 1 4 5 .
adequados até atingir as chaves correspondentes de forma
a calibrar os graus de liberdade; como será visto no progra
ma de calibração apresentado no sub-item 4.2.2 do próximo
capítulo.
Uma vez calibrado, coloca-se uma rotina de segu
rança na interrupção TRAP que, ao ser atingida alguma chave
limite, para imediatsimente todos os motores do robô e en
via uma mensagem de erro para o terminal.
3.3.7 - Comariicação cem o nível 1 de controle
A comunicação entre os dois níveis de controle é
^ feita por uma linha serial de alta-velocidade que permite
transmitir dados e comandos de um nível para o outro.
Esta comunicação serial é implementada com a in
terface programável de comunicação I8251A da INTEL [28j, s£
gundo o padrão RS-232C conforme mostra a figura 3.14.
A taxa de transmissão é obtida através da divisão
do relógio processador por dois e por um valor armazenado
em um contador programável 8253-5 funcionando em modo três
(divisor de freqüências). Esta taxa de transmissão pode ser
programada desde 110 até 19200 Bauds.
o*
A comunicação é assíncrona com sete bits sem par¿
dade, sendo estes parâmetros carregados no registro de co
mando do 8251A.
Linhas de interrupção e de pedidos de interrupção
podem ser usadas pará fazer uma comunicação por pedido de
interrupção ou, utiliza-se o teste da interface para saber
se algum dado foi recebido.
73 .146,
'3í 73
'3
C C O
PMAB
7
11 8253 - 5
•f N
1,536 MHz
•f2
PCLK
i I US ART
8251A
CONVERSOR RS232C
PMDB
PMCB
7>
7>
A
— ' A A A ) q : : t t t Q w CC
, q t t t - (0 T * ^ 0
-3 Fig. 3.14 - Interface de comunicação serial com o
nível 1 de controle.
Outra interface de comunicação serial por progra
mação está implementada utilizando as linhas SID e SOD do
processador, podendo um terminal de vídeo ser conectado di
retamente ao processador de nível O. A taxa de transmissão
desta interface é automática, sendo determinada ao se ini^
ciar o processador e teclando-se espaço no terminal.
.-Z^J 3.4 - DESCRIÇÃO DO MlVEL 1 DE GOIITHOI^
.147.
•y
•Í0
O nível 1 de controle tem por componentes um mi
crocomputador e interfaces necessárias para dotar o labora
tório de uma infra-estrutura flexível de desenvolvimento de
programas de controle para os computadores de níveis inf£
riores e programas mais sofisticados para programação do r£
bô tais como,rotinas de transformação de coordenadas, ínter
polações no espaço e linguagens de alto nível para progra
mação de tarefas, além do desenvolvimento de novos sensores.
Um diagrama de blocos esquemático da organização
deste microcomputador e suas interfaces para os equipamen
tos periféricos existentes neste nível pode ser visto na fi
gura 3.15.
As funções básicas implementadas neste nível de
controle são:
- Tornar disponível para todos os outros níveis
os recursos de periféricos existentes neste n¿
vel tais como impressora, memória de massa, sen
sores, terminal de vídeo, etc.
- Ser uma infra-estrutura eficiente e flexível pa
ra desenvolvimento de programas de controle e
aplicativos para os níveis inferiores.
- Ter capacidade de expansão para o desenvolvimen
to de sensores de alta integração necessitando
um processamento sofisticado dos seus sinais
de saída (visão, tato, voz, etc).
- Prover comunicação serial entre este nível e os
níveis inferiores e superior da estrutura de
controle.
i I ! vV ò ti O V» i> O i\ ò ò a 4 » U i.l li ü i> i.i U o U U li i) (¡1 IJ ü ü Ü 4
OQ
CO
cn
3 O
< 05 (í OQ
SU a CD a
CD o o cr r+ *^ o
CD
O O O M
M •Q C CD 3 et H-o o
a o
16K
EPROM
O 3—]
O RAM
O O 48K
RAM
O
A RST2
SEL.BANCO
RST7
I N T .
PROCESSADOR
7\
_INT, N Í V E L 2
: N T .
N Í V E L 0
TV 7 \ I N T
I M P R
C
L
COMUNICAÇÃO SERIAL
<
i
INT TVD
IMPRESSORA TERMINAL! DE VIDEO
DIGITALIZADOR DE .IMAGENS
INTERFACE
FUDFPY - DISK
A
0> iz
CONTROLADOR DMA
(TTÎ
MONITOR
CAMARA CANAL ÇS CANAL 1 VIDEO
00
73 .149.
Z3
Os programas disponíveis neste nível e o seu si£
tema operacional serão tratados no capítulo seguinte deste
'• trabalho, Sendo que aqui apresentaremos os detalhes de im
plementação de cada uma destas interfaces e o seu computa
-3 dor de controle.
3.4.1 - Arquitetura do coimputador do nível 1
O microcomputador de controle tem como processa
dor o 18085 da INTEL, sendo utilizada a mesma plr.ca descri_
ta no item 3.3.1 para o microcomputador de controle do nível
O.
A única modificação, decorrente da necessidade do
sistema operacional compatível com o CP/M implantado neste
nível precisar de memória RAM e partir da posição O de end£
reçamento é a existência de um circuito ehaveador de banco
de memórias EPROM para memórias RAM, através do endereçamen
to de uma porta de saída do processador.
Assim, ao se iniciar o processador (sinal RESET),
o banco de mem.órias EPROM interno à placa do processador
é habilitado a partir da posição O até 3FFFH e o seu banco
de RAM correspondente é inibido, ficando em alta impedância
as suas saídas.
Desta forma, um programa de iniciação é gravado
permamentemente em memória EPROM e sempre executado ao se
iniciar o sistema. Quando for necessário o banco de memória
RAM para executar o sistema operacional residente em disco,
este programa cuida do chaveamento de um banco para outro
através da programação de uma porta de saída. Uma vez cha
veado para memória RAM, a memória EPROM só será de novo
habilitada ao se iniciar o sistema.
:3
-3
3
3
.150.
Todos os sinais do barramento do processador são
idênticos aos descritos na tabela 3.1 com a inclusão do sl
nal PMRAM ho conector S13 que é responsável pela habilita
ção do banco de memória RAM na posição de endereçamento de
O a 3FFFH.
Este processador do nível 1 de controle possui
16 Kbytes de memória EPROM ou RAM (O - 3FFFH) e 48 Kbytes
de memória RAM (4000H - FFFFH), num total de 64 Kbytes de
memória.
As outras interfaces colocadas nos barramentos de
endereço, dados e controle do processador, existentes neste
nivel, serão descritas a seguir.
3.4.2 - Interface controladora de' acesso direto à jmemiioria
Esta interface controladora de acesso direto à
memória foi implementada baseada no controlador programável
de' acesso direto à memória 18257-5 da INTEL [27 ] .
Um diagrama de blocos simplificado da interface
implementada pode ser vista na figura 3.16.
A interface possui quatro canais disponíveis para
permitir que periféricos transfiram ou recebam dados dir£
tamente da memória, em alta taxa de transmissão, sem a in
terferência direta do processador.
Sua função básica é gerar, depois de receber um
pedido do periférico através das linhas PMDRQ0-PMDRQ3, ende
recos seqüenciais de memória e sinais de controle que permi
tirão ao periférico, associado àquele canal, ler ou escrje
ver dados diretamente na memória. A aquisição dos barramen
.151
•D
r
C PMI o c
t u
3 m
C PMC!
C PMAB
OL t u
3 m
a: t u
t m
7>
7\
CONTROLADOR
DMA
8 257 -5
8212
PMDRQ0 . NDACK0 * PMDROl NDACKl ^
BUFFER PMDRQ2^ NDACK2 ^ PMDRQ3 ^ NDACK3 ^
Fig. 3.16 - Diagrama de blocos da interface con
troladora de acesso direto à memória. I
tos do processador é feita através do sinal PHOLD e PAEN
do PMCB. Conflitos de pedidos são resolvidos pela lógica
de prioridades programáveis do 8257-5.
Dois canais de acesso direto à memória já estão
ocupados na interface. O canal 2, com sinais de controle
PMDRQ2 e NDACK2, utilizado pela interface controladora de
discos flexíveis e o canal 3, com sinais PMDRQ3 e NDACK3,
que é utilizado pelo digitalizador de imagens para transm_i
tir a imagem digitalizada da câmara para a memória ou a ima
gem processada na memória para o monitor de video do sist£
ma de visão.
.152.
Os outros dois canais (PMDRQO, NDACKO e PMDRQl,
NDACKl) estão disponíveis para outras aplicações tais como
sensores ou interfaces de comunicação para outros níveis.
3.4.3 - Interface controladora de discos flexíveis
^ Esta interface é baseada no controlador programa
^ vel de discos flexíveis 18271 da INTEL [27] sendo utilizada
para prover a memoria de massa necessária para o funciona
mento do nivel 1 de controle, memoria esta obtida por dois
C acionadores de disco flexível de oito polegadas, face sim
—. pies e densidade simples no formato IBM 3740 num total de
Q 512 Kbytes de memoria na linha.
^ O diagrama de blocos desta interface está mostra
^ do na figura 3.17.
Um oscilador de 4 MHz gera a freqüência básica
— . para o controlador de disco. As características dos aciona
dores e da formatação dos discos são programadas em regi£
_ tros internos do 8271, na sua iniciação, e então, * comandos
de leitura e escrita de setores no disco geram pedidos para
a interface controladora de acesso direto à memoria, sendo
'Z as leituras e escritas feitas sem a interferência do proces^
'3 sador.
Z Códigos de fim de transferência e resultados (se
^ houve erros ou não.)» são lidos e processados pelo computa
dor, e caso tenha havido algum erro, uma nova tentativa é
feita, repetindo-se a operação.
'ZJ Um programa especial de formatação e verificação
de discos foi implementado e será descrito no próximo cap_í
^ tulo.
.153.
Z3
'D
PMDB
0 0 CC LI U. Ü.
m
PMAB
PMCB c 8,0,
MHz
oc UL u . u . m
CC Ui u . u . ID 03
C O
- > PMDRQ2
NDACK2
CONTROLADOR
D E DISCOS
t
F L E X Í V E I S
8271
C
O S C I L ; 4,(ZÍd0MHz
ac UL u . u . m
DC UL
3
UJ CO
DISCO
A
S E L A
S E L B
Disco B
iz
3 Fig. 3.17 - Interface controladora de discos fie
xíveis.
3.4.4 - Interface para digitalizador de imciagens e monitor
de vídeo
Estas interfaces e os seus programas corresponden
tes são explicados detalhadamente em [52] sendo que aqui,
apresentaremos apenas a sua funcionalidade.
A interface digitalizadora de imagens tem como
entrada um sinal de vídeo vindo de uma câmara vidicon de
- - O
7^
-3
.154.
circuito fechado de televisão. Esta imagem é amostrada e d¿
gitalizada em dois niveis (imagem binaria) em uma freqüên
cia tal que o quadro é obtido como uma matriz de 256 x 256
pixels. Na aquisição da imagem a interface do digitalizador
é programada de tal forma que sempre que um byte de imagem
for formado, um pedido para a interface controladora de
acesso direto à memoria é gerado e o byte transferido, re
petindo-se a operação até que toda a imagem tenha sido
adquirida.
•O A interface para o monitor de video funciona de
3 duas maneiras, selecionáveis por chaves. Na primeira, a
-Q imagem atual digitalizada da câmara é mostrada e na outra ,
^ pode-se mostrar uma imagem já processada na memória do com
putador ou do disco. O
^ Para a segunda maneira, existe na interface um
Q banco de memórias RAM suficiente para o armazenamento de
-3 uma imagem, e a transferência da memória do computador para
este banco é feita trambém com a interface de acesso direto
à ipemória.
* -
Os programas que fazem a aquisição da imagem, a
transferência para o monitor de video e os algoritmos de
O localização, reconhecimento e aprendizagem de peças, utili^
-' zando este sensor de visão, estão também apresentados em
[52].
3.4.5 - Interfaces para comunicação serial: terminal de ví
deo, inapapessora, nível O e nível 2
As interfaces de comunicação serial são todas
implementadas de maneira semelhante à descrita no item
3.3.7. Um esquema das interfaces montadas pode ser visto
;3 —
.155.
na figura 3.18.
• A taxa de transmissão é selecionada em um divisor
programável para cada uma das interfaces seriais de comun^
cação implementadas com a pastilha I8251A, sendo que tanto
para o terminal de vídeo como para a impressora, elas fun
cionam em 9600 Bauds.
A interface de comunicação para o nivel O é im
plementada com todos os sinais do padrão RS-232C de forma
a que seja possível colocar-se um MODEM para transmistir
por linha telefônica do nivel 1 para o nivel O, colocado
remotamente.
A interface de comunicação para o nivel 2 de con
trole deverá respeitar os protocolos de comunicação do
PDPll/34. Espaço físico e conectores estão previstos.no com
putador de nivel 1 para esta implementação, assim como para
^outras interfaces de comunicação serial para outros compu
tadores do nível O de controle, para o caso de mais de um
ro^ô estar ligado ao nivel 1.
3.5 - Ml¥E]L, 2 DE COIÍTROUE
Para o nivel 2 de controle do laboratório está
prevista a interligação entre o computador de nível 1 e o
minicomputador PDPll/34 do Laboratório de Sistemas Digitais
da EPUSP.
Esta interligação terá por objetivo principal au
mentar consideravelmente os recursos de processamento, uma
vez que para várias aplicações, o processamento com um mi^
crocomputador de oito bits é insuficiente.
.156,
00 o c i _ i _
< 40
</> CM CD
—J —J
05 ü o- <M n r o
<o
8"
-4DSR — CTS á —íRXD >
RTS " Z
- • D T R •TXD
Fig. 3.18 - Interfaces seriais para comunicação
com terminal de video, impressora e
nivel O de controle.
.157.
É importante ressaltar que o laboratório encon
tra-se implementado apenas com um processador de nível 1 e
um processador de nível O controlando um robô, embora a sua
concepção tenha sido feita para o controle de diversos ro
bôs, agindo em separado ou coordenados de maneira a coopera
rem na execução de uma dada tarefa, problemas estes que s£
rão vitais para a automação completa das fábricas do futuro.
Estes tipos de problemas envolvem um processamento
veloz e poderoso,em tempo real, de forma que a possibilidade
de ter-se um minicomputador para implementar estas funções
foi prevista para o laboratório.
3.5.1 - Configiiração do nível 2 de controle
A configuração atual do sistema PDPll/34 existen
te no laboratório pode ser vista na figura 3.19.
—> A unidade central de processamento é o PDP11/34A
^ possuindo os seguintes equipsunentos periféricos e interfa
ces:
- Memória a semicondutor
256 Kbytes de memória a semicondutor, sendo es
^ tá a máxima capacidade do PDPll. . A
2 - Console
Terminal para entrada e saída de dados e coman
dos para o sistema operacional do computador.
_ - Unidades de fita magnética
o sistema possui uma unidade de fita magnética
^ de 1600 bits por polegada podendo acessar fitas
5
^ U \\ W \\ í - ^ r r - ^ - ^ r T T ^ O O ^' u O i . » i..) o U i.1 l» U ü 4J ü O t
1""
c."
rn I 9 1
c;
r-
:2D
OP •
CO • M CO
o o 3 i-b p-
CP c p o P! O
O cn H-02 c+ CD 3 P a
M CO J5w
F I T A
M A G N É T I C A
A
i z INTERFACE
COMUNICAÇÃO SERIAL
A
DISCO
R Í G I D O
A
i z
AZ
IMPRESSORA
A
i z TERMINAL
GRAFICO
256 KBYTES
RAM
A
i z TERMINAL
DE VIDEO
A
I z UNIBUS
7> 16 INiTERFACES DE COMUNICAÇÃO SERIAL RS232 C (M AXIMO 9600 BAUDS)
A
íl
7>
DISCOS
FLEXÍVEIS
CO - D
00
.159.
O - Impressoras
O sistema esta equipado com uma impressora de
linha em 300 Ipm.
- Terminal gráfico
Acoplado ao sistema existe um terminal gráfico
^ . AED512 da MITSUBISHI, colorido, de alta resolu
ção e com programas de suporte tais c*omo roti^
nas para traçado de retas, círculos, endereça
mento de cursor e "zoom" automático da imagem.
- Interfaces de comunicação serial
Existe a possibilidade de se colocar até dezes
O seis equipamentos com comunicação serial no pa
2) drão RS-232C na taxa de transmissão de 9600
- Bauds.
^ Qualquer outra interface da DEC ("Digital Equlpnent
Corporation") pode ser colocada no sistema. Entre elas po
demos citar interfaces para digitalização de imagens em vá
Z rios níveis de cinza e mesmo coloridas de alta velocidade
em vários formatos de gravação.
.- Unidades de discos rígidos
São duas as unidades de discos rígidos, \_ ambos
removíveis tendo uma capacidade total de 56
MBytes de armazenamento.
- Unidades de discos flexíveis
A configuração existente no laboratório possui
duas unidades de discos flexíveis de oito pol£
gadas e gravação em densidade simples e dupla
existindo programas para conversão de formatos.
.160.
e interfaces para unidade de processamento aritmético de
ponto flutuante, que podem ser de bastante interesse para
o laboratório de robótica.
O sistema operacional deste computador é o RSXllM
versão 3.2, sendo que várias linguagens de programação tais
como FORTRAN, PASCAL, ASSEMBLER, C e outras, são disponí^
veis para a programação.
3.5.2 - Ftmções do nível 2 de controle
As funções básicas previstas para o computador
do nível 2 de controle são:
Implementação de linguagens mais sofisticadas pa
ra programação de tarefas de robôs industrias ,
linguagens estas que podem, possuir geração auto
-mática- de planos- de- ação -e-um-maior—interfacea
mento com sensores do meio ambiente do robô.
*
- Implementação de programas de simulação de tare
•o fas e de controle de trajetória com saídas para
^ o terminal gráfico de alta resolução do computa
»> dor.
^ - Programas que acessem bancos de dados de sist£
mas CAD/CAM e retirem dados de posicionamento
" geométrico que possam ser processados por lin
guagens de programação de tarefas executáveis
^ neste nível ou no nível 1 de controle.
- Sensores de visão mais sofisticados com imagens
em vários níveis de cinza ou mesmo coloridas e
até possivelmente imagens tridimensionais.
.161.
Estas são apenas algumas funções previstas para
este nível de controle, sendo que a sua flexibilidade é to
tal, dependendo apenas da criatividade de quem for operar
com este laboratório.
3.6 - COIÍCIUUSSO
Neste capitulo nos dedicamos a apresentar a arqui^
tetura de controle do LÍDER - Laboratório Integrado para
-iD Desenvolvimento e Ensino da Robótica, arquitetura esta ba
seada em um sistema de controle hierárquico e distribuído.
^ Apresentamos os detalhes de implementação dos cir
_ cuitos componentes dos processadores e interfaces de contro
le e comunicação do nível O, dedicado ao acionamento e con
trole do robô e do nível 1, voltado para fornecer a infra-
V estrutura de desenvolvimento de novos programas e senso^
,V res voltados para a robótica.
• • ^
^ y Finalmente, mostramos as funções básicas previs
tas para o nível 2 de controle e os trabalhos possíveis de
serem desenvolvidos neste nível, junto com os recursos dos
^ outros níveis, voltados para a robótica.
No próximo capítulo mostraremos os programas im
plementados neste níveis de controle do laboratório, sendo
que eles são alguns exemplos de algoritmos de controle e
^ programas suportes já implementados com seus recursos.
Outros trabalhos [13] [52] já estão sendo feitos
Z no L Í D E R , de forma a aumentar os seus recursos e melhorar
"3 as formas de programação e interação do robô com o seu am
-- biente de trabalho.
.162.
A implementação dos computadores de nivel O e ní
vel 1 com processadores e interfaces de baixo custo visa,
^ principalmente, tornar o seu preço acessível para possibili
tar que universidades e escolas técnicas possam dispor des
te equipamento de forma a que seus alunos tenham um treina
mento rápido e eficiente, tão perto quanto possível da rea
lidade da robótica, esta nova disciplina, do presente e
mais seguramente do futuro.
— ^ - . ^ .'-î-i'- X.;:* ¿A. • •• »"S^-i
PAULO FARIA SANTOS AI'íARAL
Eng. de Eletrônica, Instituto Tecnológico de
Aeronáutica, 1976
Mestre em Engenharia, Instituto de Pesquisas
E; T ' < = ' C Í a i s , 1979
CONCEPÇÃO E IMPLEMENTAÇÃO DE UM LABORATÓRIO PARA DESENVOLVI
MENTO DE TÉCNICAS E PROGRAMAÇÃO DÉ TAREFAS DE ROBOS INDUS
TRIÁIS.
VOLUME II
Tese apresentada à Escola
Politécnica da U^P para a
obtenção do Título de
Doutor em Engenharia.
Orientador: Prof. Dr. Lucas Antonio Moscato
Professor Adjunto do Departamento de
Engenharia de Eletricidade da EPUSP.
São Paulo, 1985
\ •
"1
c c ; . : ; : : ^ vJ 1
V
C A P I T U L O I ¥ - P R O G R A M A S S O P O R T E P A R A O JLABORATORIO
•J
"1 - A robot may not injure a human
being or, through inaction, ,Y
< ^ allow a human to be Ijarmed.
2 - A robot must obey orders given
by humans except when that
Zi conflicts with the First Lav/.
3 - A robot must protect its own
"v existence unless that con
flicts with the First or Second
Laws."
(As três leis da robótica de
Isaac Asimov)
.164.
4.1 - HÍTffODOÇ^O
Neste capítulo nos dedicaremos a apresentar os
programias desenvolvidos como suporte para o laboratório LI
DER, de forma a permitir que o mesmo possa ser utilizado co
mo infra-estrutura de ensino e pesquisa em robótica indus
trial.
Como mostrado anteriormente, o desenvolvimento do
laboratório foi uma atividade multidisciplinar envolvendo
projetos de componentes mecânicos,'eletrônica de sensores
e atuadores, projetos de circuitos digitais de controle e
desenvolvimento de programas de controle e linguagens de pro
gramação.
O objetivo principal deste capítulo é mostrar co
mo a arquitetura mecânica do robô, seus sensores e atuado
res junto com çs dois microcomputadores do laboratório e os
seus circuitos de interface específicos para o controle do
robô, são relacionados e controlados de maneira a obter-se
um^movimento fácil e preciso bem como um,a grande facilida
de de utilização dos recursos disponíveis de forma*a poder
mos ter programas de tarefas sofisticadas e eficientes em
um curto espaço de tempo.
Primeiramente, apresentaremos os programas desen
volvidos para o nível O de controle, implementados com a
infra-estrutura do nível 1, para serem utilizados no compu
tador do nível O voltado para o controle do robô, o aprendi
zado e a execução de tarefas.
A seguir, apresentaremos os programas existentes
no nível 1 de controle, dedicado a servir de infra-estrutu
ra de programação para o laboratório. O sistema operado
nal e o programa monitor disponível neste computador serão
.165.
3
-3
Na seqüência, mostraremos os programas voltados
para a transformação de coordenadas de junção para coordena
das cartesianas e vice-versa, bem como os de transformação
de coordenadas de junção para coordenadas de motor utiliza
dos pelo programa de controle do robô. Neste item mostrar£
1 mos a resolução das equações cinemáticas para o robô desen
_j volvido.
Para que todos estes recursos pudessem ser utili^
^ zados com facilidade e de uma maneira mais transparente e
eficiente para o usuário, foi desenvolvida uma linguagem de
Z alto nível para a programação de robôs industriais que será
O objeto do próximo capítulo.
Zé E importante frizar que todos estes programas
desenvolvidos e apresentados neste capítulo, em.bora aumen
tem consideravelmente a capacidade de ensino e pesquisa do
^ laboratório e permitam um fácil e preciso controle^do robô,
Q são exemplos de aplicação da infra-estrutura proposta, sen
Zj do que outros, utilizando outras técnicas e filosofias di
ferentes podem também ser implementados.
Zj '
4.2 - PROGRAMAS PARA O MtVEL O DE COMROLE Zd
Estes programas têm por finalidade permitir ao
^ usuário do laboratório testar programas para o computador
^ do nível O de controle e também permitir o desenvolvimentoe
^ testes de tarefas para o robô.
^ Os programas implemientados neste nível são os se
z
apresentados, suas linguagens de programação, os programas
para suporte de desenvolvimento' e para comunicação com o
Q nível O serão detalhados nesta parte.
.166.
guintes:
O - Programa MONITOR
Permite ao usuário carregar e testar programas
ZJ armazenados na memória do microcomputador bem
como verificar conteúdos de posições de memória
• e registradores.
- Programa de CALIBRAÇÃO
Independentemente da posição inicial do robô,
ao se executar este programa, o mesmo é movimen
tado de forma que no final ele esteja colocado
na sua posição de referência.
ZÉ
Zd
'Z)
Q
z Zà
ZJ
Programa de APRENDIZADO
Z Através do terminal de vídeo do nível 1 de con
trole, utilizado como caixa de aprendizado, es
te programa permite ensinar uma determinada se
qüência de movimentos ao robô e também colocar
na sua memória de tarefa, instruções executa
veis pelo computador do robô. Em conjiyito com o
; programa editor de figuras do nível 1, pode-se
Q criar um arquivo em disco com pontos, linhas,
Q círculos e trajetórias, arquivo este utilizável
pela linguagem de alto nível, o que será visto
no próximo capítulo.
- Programa de EXECUÇÃO
Uma vez carregada uma determinada tarefa, este
programa permite executar a tarefa passo a pa£
so, de maneira contínua, modificar pontos apren
didos em temipo de execução e listar os comandos
da tarefa carregada na memória.
.167.
Todos estes programas e sua maneira de utilização
serão vistos com detalhes nos sub-itens apresentados a sje
guir.
4.2.1 - Prograr-na MCfflTOR
Este programa MONITOR é gravado em memoria EPROM
e ocupa os primeiros 2 Kbytes de memoria do processador, sen
do executado sempre ao se ligar o computador ou ao se aper
tar o botão RESET do nível 0. • '
A sua função é permitir ao usuário, através de co
mandos vindos de uma entrada serial (usualmente acoplada a
um terminal de vídeo), carregar programas na memória do com
putador, salvar programas testados em um dispositivo de ar
mazenamento, transferir o controle.do processador para o
programa do usuário, mostrar o conteúdo de posições de memo
ria como dados ou como instruções, mostrar o conteúdo de r£
gistradores, programar portas de entrada e saída e outras
fupções a serem vistas a seguir.
*
Na concepção atual do laboratório, a interface de
entrada e saída configurada para o monitor do nível O está
ligada na interface de entrada e saída serial para comunica
ção com o nível O, do nível 1 de controle. Desta forma, pa
^ ra se executar o programa monitor do nível O, deve-se tam
bém executar no nível 1 o programa emulador de terminal, que
configura este nível 1 de controle como terminal para o ní
'• vel O, permitindo a utilização do mesmo terminal de vídeo
^ para os dois níveis e de outros recursos tais como memória
de disco e impressora também para o nível O de controle.
Os comandos aceitos por este programa monitor pos
suem uma sintaxe bem simples, sendo todos os números entra
.168.
Zj
<end. inicial> : :=<núm.ero hexadecimal>
dos em código hexadecimal. A seguir apresentaremos uma des^
crição simplificada, na metalinguagem BNF, de cada comando
do programa monitor. Todos os seus comandos ter-minam com a
tecla retorno do carro e alimentação de linha do terminal
(<CRLF>).
- Comando GO:
<comando G0>::=G<end.programa>|
G<end.programa>-<ponto parada>|
G<end.prógrama>-<ponto parada>-
<ponto parada>
<end.programa>::=<número hexadecimal>
<ponto parada> : : =<númiero hexadecimal>
Este comando tem por finalidade transferir o con
trole do processador para o programa do usuário que está
na posição de memória definida por <end.programa>. A especi^
fiçação de pontos de parada é opcional, sendo que até dois
pontos podem ser especificados no comando. Caso se especif_i
que um ou dois pontos de parada, ao ser o primeiro deles
^ atingido pelo processador, é gerada uma interrupção do pro
grama e o controle do processador volta para o monitor sem
modificar o estado do programa interrompido. Os pontos de
^ parada só funcionam se o programa estiver carregado em memo
ria RAM.
- Comando LIST:
<comando LIST>::=L<end.lnicial> <end.final>
•i
Z4
Z-t
.169.
<end.final>::=<número hexadecimal>
Este comando serve para listar uma " determinada
parte da memoria, da posição definida por <end.inicial> até
a definida por <end.final>, no formato de instruções. A saí_
da do comando é apresentada no terminal como a posição de
memória onde está colocada a instrução e a instrução pro
priamente dita. Se em uma determinada posição for encontra
do um código inválido, uma mensagem de erro é enviada e a
listagem continua daquele ponto.
- Comando DISPLAY:
<comando DISPLAY>::=D<end.inicial> <end.final>
A finalidade deste comando é listar, como dados,
o conteúdo da memória desde a posição inicial até a final.
- Comando SUBSTITUTE:
^ • <comando SUBSTITUTE>::=S<end.inicial> <seqüência
de valores> *
<seqüêncla de valores>::=<espaço><novalor>|
<espaço><novalor><seqüên
cia_de valores>|
<espaço>
Este comando tem por objetivo substituir o conteú
do de uma ou várias posições de memória. A cada espaço en
trado, é apresentado o conteúdo da memória daquela posição
e se um novo valor for entrado ele é substituido. Se não
for desejada a substituição entra-se com espaço e o conteú
do da posição seguinte é mostrado. O comando termina com
<CRLF>.
.170.
- Comando INSERT:
' <comando INSERT> : : =I<end. inicialxCRLFxseqüência
ZJ de números hexadecimal><ESC>
Zi
ZJ
<seqüêncla de números hexadecimal>: :=<seqüência
de dígitos>I
<seqüência de dígitos><CRLF>
<seqüêncla de números hexadecj^
mal>
O objetivo deste comando é inserir uma determina
da seqüência de dados a partir da posição dada por <end.in3^
cial>. Todos os dígitos entrados são colocados dois a dois
em cada posição de memória, A inserção termina com o carac
ter ESC.
- Comando MOVE:
<comando MOVE>::=M<end.incial> <end.flnal>
<end.dest>
Como o próprio nome diz, este comando serve para
^ transferir o conteúdo das posições de memória desde o
Z <end.inicial> até o <end.final> para as posições a partir
do <end.dest> ela incluída.
- Comando REG:
<comando REG>: :=X<CRLF>|
X<id.de registro> <seqüência de
~v valores>
<id.de registro: : =A | B | D 1 H | S
.171.
O objetivo deste comando é verificar ou alterar o
conteúdo de um determinado registro. Ao se enviar só o X, o
conteúdo de todos os registros são apresentados. Se for" o
caso de se alterar um registro, entra-se com X mais o iden
tificador de registro e o valor a ser colocado naquele re_
gistro.
- Comando PORT:
<comando PORT>::=P<end.do port> E|
:. P<end.do port> S <novalor>
Este comando é utilizado para se programar um va
lor em uma porta de saída cujo endereço hexadecimal é dado
por <end.do port>, ou para se 1er o valor de uma determina
da porta de entrada.
- Comando FILL:
<comando FILL>::=F<end.iniclal> <end.flnal>
<valor>
*
Ao se executar este comando terem.os o byte esp_e
cificado por valor colocado na memória desde a posição da
da por <end.inicial> até a dada por <end.final>.
- Comando TEST:
<comando. TEST>::=T<end.inicial> <end.final>
<valor>
Este comando tem por objetivo executar um teste
de memória desde a posição <end.inicial> até a posição
<end.final>. Se o valor for diferente de O, testa-se a es
crita e leitura com o valor e seu comiplemento. Se for O, t£
das as combinações possíveis de O a FFH serão testadas.
O ! »
.172.
Assim, com os comandos READ e WRITE associados
ao progrsima emulador de terminais no nível 1, podemos guar
dar programas desenvolvidos no nível O em discos flexíveis
no nível 1 ou criar arquivos do tipo hexadecimal através das
- Comando READ: • :
<comando READ>::-R<valor>
A função deste comando é ler um arquivo no forma
to hexadecimal através da porta serial de entrada. Quando o
programa emulador de terminal estiver ativo no nível 1, ao
se executar este comando é solicitado o nome de um arquivo
hexadecimal em uma das unidades de disco, do nível 1. Uma
vez especificado o arquivo, o processador do nível 1 acessa
o mesmo e transfere o seu conteúdo para o nível O que se
encarrega de colocá-lo na posição determinada pelos regi£
tros do arquivo somado ao valor especificado no comando.
Desta forma podemos ter todos os arquivos e programas do ní_
vel O armazenados na memória de disco do nível 1 e carr£
gá-los quando for desejado com este comando do monitor.
- Comando WRITE:
<comando WRITE>::=W<end.inicial> <end.final>
Este comando tem por função escrever os conteúdos
de memória desde a posição dada por <end. inicial> até a po
sição dada por <end.final> em um arquivo hexadecimal e
transmití-lo para a porta serial de saída. Quando o progra
ma emulador estiver, ativo no nível 1, o processador recebe
o arquivo transmitido e em seguida solicita o nome do arqui^
vo hexadecimal onde ele será colocado no disco. Se o arqui^
vo já existir, o anterior é apagado e o recebido é colocado
no disco. Se não existir o arquivo, um novo é criado com o
iè nome especificado mais a terminação .HEX.
• Z
O
.173.
várias linguagens existentes no nível 1 de controle e trans
mití-los para a memória do comiputador do nível O.
4.2.2 - P r C ' g r a i E a de CALIBmÇÍÍO
Como mostrado no sub-item 2.4.2, os sinais vindos
das chaves limites associadas a cada grau de liberdade po£
suem duas funções, sendo uma delas, a de fornecer uma ref£
rência para o sistema de controle determinar a posição ini^
ciai do robó, independentemente da posição em que ele se en
centrar.
O programa que realiza o controle da movimentação
do robô de forma a que ele atinja a sua posição de referen
cia é o de calibração.
Como mostrado na figura 2,11, a cada grau de
berdade estão associadas duas chaves limites. O programa
consiste em movimentar ordenadamente cada grau de liberdade
do,, robô até que ele atinja uma determinada chave limite e
uma vez calibrado cada um deles, é realizado um * movimento
controlado de formia a que ele chegue na sua posição de
ferência.
Como posição de referência para o robô foi defini_
do o seguinte ponto no espaço de coordenadas de junção:
Porig = ( a , B, Y, p, r) -
Porig = ( 0 ° , 45", -45°, 0 % O")
mais a garra, quando estiver acoplada ao robô, no seu esta
do aberto, como mostra a figura 4.1 abaixo.
.174.
•0«
Zi
Fig. 4.1 - Definição da posição de origem do robâ
Nesta posição inicial os motores são iniciados
com o valor 8000H; desta forma, o ponto de origem em coordje
nadas de motor, incluindo a garra é:
Porig = (NA, NB, NC, ND, NE, NF) =
Porig = (8000H, 8000H, 8000H, 8000H, BOOOH, 8000H)
1*»
Em coordenadas cartesianas, levando em conta os
c r
Zi
.175.
•a'
•Cf
Z - Rotina ZERCHL
As rotinas principais componentes do programa de
calibração são:
' Verifica se alguma chave limite está acionada
e movimenta o robô até que esta chave deixe de
w estar acionada. -
- Rotina MOVE
Dados uma freqüência máxima de deslocamento, a
direção que cada motor irá se deslocar, o deslo
camento de cada um deles em número de pulsos e
um vetor de habilitação indicando os motores
que se movimentarão, esta rotina movimenta cada
-. motor habilitado do robô, na direção especifica
Zi da com o número de pulsos especificado para aque
le motor. Para os três primeiros graus de liber
dade (a, B, Y ) , correspondentes aos miotores A,
B, e C respectivamente, é feito um cálculo de
freqüência de cada um de forma a executar um mo
vimento interpolado em coordenadas de junção,
isto é, todos os motores começajn a se deslocar
'i ao mesmo tempo e terminam o movimento ao mesmo
eixos XYZ mostrados na figura 4.1, o ponto de origem será:
Porig = (x, y , z , p, r) =
Porig = (0,600.3, 268.2, 0°, 0°)
onde X , y , z são dados em mm e p, r dados em graus.
Assim, este programa de calibração tem por finalñ^
dade dar esta posição de referência única para todos os pro
gramas desenvolvido para o robô.
.176.
tempo. Esta rotina utiliza uma rotina associa
da à interrupção RST6.5 do processador.
- Rotina INT6.5
Cuida da realimentaçao de posição de todos os
motores, ou seja, quando o controlador de um mo
tor pede interrupção, esta rotina utiliza a in
formação vinda do sistema de realimentaçao para
determinar se o motor já atingiu a sua posição
final.
A seguir serão apresentados os algoritmos, em lin
guagem algorítmica, para cada uma destas rotinas e finalmen
te o programa de calibração.
a - Rotina ZERCHL:
1 - Lê vetor das chaves limites (CHAVEL fig. 3.13).
2 - Se nenhuma chave atingida então faça:
para motores. , •*
retorna.
y 3 - Para a chave limite atingida, movimenta o mo
tor correspondente na direção contrária à da
chave.
4 - Volta para passo 1.
5 - Fim.
Ao final desta rotina, todas as chaves limites es^
tão desligadas e o robô está parado.
.177.
'-Z>
ZJ
"Zi
PDIR : Registro de direção dos motores (Fig.3.8).
PHABIM : Registro de habilitação de movimento dos
motores (Fig. 3.8).
CW(m) : Contador de pulsoc do sistema de realimen
tação da direção CW para o motor m (Fig. 3.10).
CC¥(m) :. Contador de pulsos do slstemia de reali_
mentação da direção CCW para o motor m (Fig.3.10).
DIVISOR(m) : Freqüência correspondente à velocida
de que o motor m se deslocará (Fig. 3.8).
Com estas informações, o algoritmo para a rotina
b - Rotina MOVE:
Esta rotina é a rotina de movimentação do robô.
São dados os seguintes parâmetros:
FREQ : Freqüência correspondente à velocidade má
xima de movimento dos motores.
DIR(m) : Se O, motor m na direção CW, se 1 motor
m na direção CCW.
HABIL(m) : Se O, motor m não anda, se 1, motor m
anda.
DESL(m) : Número de pulsos que motor m vai andar
em DIR(m) se HABIL(m). for 1. .
O Os seguintes símbolos são utilizados para mostrar
•"^ o algoritmo da rotina move:
. 178.
MOVE implementada é o seguinte:
V 1- - MAX = O. Para m = A, B, C faça:
^ Se HABIL(m)=l então faça:
Z>> MAX=máximo (MAX , DESL (m) ) .
---p 2 - Para m = A, B, C faça:
Se HABIL(m)=l então faça:
DIVISOR(m)-(FREQ*MAX)/DESL(m)
3 - Para m = D, E, F faça:
DIVISOR(m)=FREQ.
4 - Para m = A, B, C, D, E, F faça:
Se HABIL(m)=l então faça:
CW(m)=DESL(m).
CCW(m)=FFFFK.
senão faça:
CCW(m)=DESL(m).
CW(m)=FFFFH.
5 - PDIR^DIR. PHABIM=HABIL.
5 6 - Habilita interrupção RST6.5.
"\ 7 - Se HABIL(m) = O para m = A, B, C, D, E, F
então: retorna,
senão: volta para 6.
8 - Fim.
Esta rotina coloca nos contadores correspondentes
'• à direção na qual o motor andará o número de pulsos deseja
Z dos. Conforme as figuras 3.10 e 3.11, quando um contador de
.179.
um motor habilitado atinge a contagem O, a interrupção
RST6.5 é gerada e o número de pulsos recebidos no contador
da direção contrária é o que ainda falta para aquele motor
<e* andar, como foi explicado no sub-item 3.3.3. A rotina INT65
Z é que trata das interrupções como será visto a seguir.
A rotina MOVE fica em um ciclo nos passos 6 e 7
esperando até que todos os motores tenham atingido o ponto
final (HABIL(m)==0 para qualquer m) . Ao final da rotina
^ MOVE, todos os motores habilitados terão se deslocado da
^ quantidade de pulsos especificada para cada um deles.
^ 2 - Lê vetor de interrupção INTV (Fig. 3.11)
Z^
c - Rotina INT65
1 - Inibe interrupção RST6.5.
3 - Se INTV=0 então faça:
Habilita interrupção RST6.5.
Retorna.
senão faça:
m==motor correspondente a INTV.
^ 4 - PHABIM(m)=0 (Para motor m ) .
Z 5 - Se DIR(m)==0 então faça:
CW(m)=FFFFH-CCW(m).
Q Se CW(m)<l então faça: HABIL(m)=0.fim.
senão faça: CCV/(m) =^FFFFH.
senão
faça:CCW(m)=FFFFK-CW(m).
Se CCW(m)<l então faça:HABIL(m)=0.fim,
senão faça:CW(m)-FFFFH.
.180.-
6 - PHABIM(m)=l. Volta para 2.
7 - Fim.
Esta rotina calcula o número de pulsos recebidos
pelo contador da direção contrária do motor que interrom
peu, e se for igual a O, marca o motoi como terminado, se_
não, programa o número de pulsos que ainda falta andar, mo
vimenta o motor e vai verificar se outro motor já interrom
peu. Se nenhum outro interrompeu, retorna.
O programa de calibração utiliza estas rotinas vi£
tas acima, sendo que o seu algoritmo de controle está mos
trado a seguir.
- Programa de CALIBRAÇÃO
As definições dos símbolos utilizados no programa
de calibração estão miostradas abaixo:
^ CBA : Chave limite superior do motor B (Fig. 2.11
e 3.13). *
CCB : Chave limite inferior do motor C.
CPA : Chave limite superior do levantamento do
pulso (motores D e E ) .
CLR : Chave limite do giro do pulso (motores D
e E) .
CAA : Chave limite da esquerda do giro (motor A ) .
CLEA : Chave limite da garra no estado aberto
(motor F ) .
.181.
INIT : Variável correspondente ao motor que está
em processo de calibração.
TRAP : Rotina inicialmente associada à interrup
ção TRAP do processador que para os motores e d£
v-^lve a chave atingida em CHAVE.
SAFEMO : Rotina associada à interrupção TRAP no
final da calibração que para todos os motores e
imprime mensagem de erro ao ser alguma chave lim_i
te atingida, retornando o controle para o progra
ma monitor.
0 algoritmo do progi^am.a de calibração está mostra
do a seguir:
1 - Programa todos os contadores do controlador
do robô e inicia todos os registros de contro
2 - Coloca rotina TRAP na interrupção TRAP.
3 - Chama rotina ZERCHL. INIT=B.
4 - Habilita a interrupção TRAP.
5 - Movimenta motor B para atingir CBA.
6 - Entra em HALT esperando interrupção TRAP.
7 - Se CHAVE=CBA então faça: Para motor B.
INIT=C
8- Chama ZERCHL.
Movimenta C para CCB.
Habilita TRAP.
Volta para 6.
J
.0
ZJ
- V
9 - Se CHAVE=CCB então faça:
Se INIT o C então volta para 3.
senão faça: Para motor C.
INIT=E
y 10- Chama ZERCHL.
7j Movimenta E para CPA
Habilita TRAP.
Volta para 6.
^ 11 - Se CHAVE=CPA então faça:
^ Se INIT o E então volta para 8.
^ senão faça: Para motor E.
INIT=D
Chama ZERCHL. -V
Move D e E para gi
rar na direção de
CLR.
Z Habilita TRAP.
Z Volta para 6.
- , 12 - Se CHAVE=CLR então faça:
Se INIT o D então volta para 10. *
senão faça: INIT=A.
^ Chama ZERCHL.
-* Move A para atingir
Z CAA.
^ Habilita TRAP.
Volta para 6.
13 - Se CHAVE=CAA então faça: INIT=F.
Chama ZERCHL.
^ Move F para CLFA.
Habilita TRAP.
- Volta para 6.
o .182.
Zi
.183
14 - Se CHAVE <> CLFA então faça: Imprime erro.
volta para moni^
tor.
15 - Coloca rotina SAFEMO na interrupção TRAP.
16 - Coloca deslocamento e freqüência para atingir
ponto de origem. Habilita interrupção TRAP.
17 - Chama rotina MOVE.
18 - Fim.
Ao final da execução deste programa o robô estará
parado na posição inicial. Independentemente da posição on
Z de ele estava localizado.
4.2.3 - PrograaEa de spr^odizado de tajrefas
São duas as funções deste programa de aprendizado
de tarefas: ., • , <
1 - Utilizando o terminal de vídeo como caixa de
aprendizado, ensinar uma determinada tarefa
ao robô.
2 - Utilizando o terminal de vídeo do nível 1 jun
to com o programa editor de figuras a ser vi£
to no sub-item 4.3.5, posicionar o robô em
pontos do espaço e guardar as coordenadas de^
te ponto em um determinado arquivo.
Sempre que o programa de aprendizado é chamado,
ele calibra o robô de forma a que todas as tarefas sejam
'Z
•
'Z
"Iv
.184.
ensinadas com relação ao mesmo ponto de origem. Uma vez ter
minada a calibração, a seguinte mensagem é colocada no ter
minai indicando que o programa está pronto para receber c£
mandos:
PROGRAMA APRENDIZADO
As teclas correspondentes aos comandos possíveis
de serem entrados no programa de aprendizado podem ser s£
^ paradas em dois gr.pos:
1 - Teclas de movimentação de motores.
2 - Teclas para outros comandos de aprendizado.
As teclas para movimentação de motores podem ser
^ vistas, junto com a sua função na tabela 4.1 a seguir.
O movimento do motor comandado começa ao se aper
tar a tecla correspondente e termina quando qualquer tecla
for apertada no terminal de vídeo ou algumai chave* limite
ter sido atingida.
Além destas teclas, a tecla W é utilizada para
movimentar o robô para um ponto já aprendido. O formato
do comando é:
W<end.da memória de tarefa em hexadecimal><CRLF>
Se o comando da memória de tarefa for o de posi^
cionamento de todos os motores (código 4FH), o robô é leva
do automaticamente para aquela posição. Se o comando for
outro, é enviada uma mensagem de erro e o comando é anula
do.
•V
T O
:Zj
- ' ^
"Z
-'Zi
zz
zZ.
: Q
izz
•-Zi
:ZZ
Ty
•-^
-V
"y
:i
\:ZZj
.185.
TECLA EFEITO COORD.DE MOTOR
A motor A na direção a+ aumenta
S motor A na direção ci diminui
B motor B ña direção 3+ aumenta
N m.otdr B na direção P- diminui
C motor C na djreção Y- aumenta
V motor C na direção Y+ diminui
D motor D nas direções p- e r+ aumenta
F motor D nas direções p+ e r- diminui
E motor E nas direções p+ e r+ aumenta
R motor E nas direções p- e r- diminui
G motor F para abrir a garra aumenta
' H motor F para fechar a garra diminui
Z motor D e E na direção r-
X motor D e E na direção r+
T motor D e E na direção p-
Y motor D e E na direção p+
Zi
z^
ZZi
Este comando W é muito interessante para posicio
nar o robô com precisão em um ponto já aprendido anterior
mente.
As outras teclas do programa de aprendizado tem
Tabela 4.1 - Teclas de movimentação dos motores
para o programa de aprendizado.
.186.
r i »
ZZ
as seguintes funções:
Zj
L - Lista na tela do terminal de vídeo os coman
dos já aprendidos. O formato do comando L e o
seguinte:
'-- O - Envia para a porta de comunicação com o nível
O l a posição atual do robô em coordenadas de
ZZ motor.
"Zé
'Zt
'Zi
Z L<end.inicial> <end.final> <CRLF>
' -y
Após este comando, a memória da tarefa é lis
tada com o mnemiônico das instruções e os seus
parâmetros em hexadecimal, sendo que se o có
digo encontrado for inválido, uma * mensagem
Z de erro é enviada e a listagem continua daque
Z la posição em diante.
Z - Q - Este comando serve para definir o valor de
^ freqüência máxima (FREQ) dos movimentos progra
mados até o próximo comando Q. Seu formato é
o seguinte:
Z
Z Q<valor da freqüência> <CRLF>
Z ^ P - Uma vez posicionado o robô, ao entrar-se com ^ o comando P, aquele ponto especificado pelas Z
coordenadas atuais e guardado como um comando iZ
z
Z , . •
'Z • '
z
tz ,.-
7Zj "-^ M - Termina o aprendizado e retorna o controle pa
:Q ra o programa monitor, mostrando o último en
dereço da memória de tarefa programada, para
um possível comando WRITE do monitor para saj^
var o programa aprendido.
sz
T w
'Z
.187.
I - Além dos comandos de posicionamento do robô
mostrados acima, existe um vasto conjunto de
instruções que também podem ser colocadas na
_ memória de tarefa do robô e executadas pelo
~^ programa de execução a ser visto no próximo
sub-item. A definição de cada uma destas xr\B_
'Z truções e a sua finalidade e parâmetros estão
mostrados no Apêndice I deste trabalho, sendo
que elas podem ser divididas nas seguintes ca
tegorias:
a - Instruções de movimentação do robô.
b - Instruções de tratamento de linhas de sin
cronismos.
_ . c - Instruções de entrada e saída.
d - Instruções de controle de interrupção,
e - Instrução de controle de processamento,
Zj
:0
ZZ
„o
"Z - h - Instruções de conversão de formatos.
f - Instruções de desvios condicionais,
g - Instruções de atribuição.
i - Instruções de endereçamento indexado,
j - Instruções de operações aritmiéticas.
na memória de tarefa e o seu endereço é mo£
trado no terminal de vídeo para um possível
comando de retorno (W). i '
.188.
1 - Instruções de operações booleanas.
•Q . A função do comando I do programa de aprendi_
zado é colocar na memória de tarefa uma des
tas instruções de cada vez. Ao se teclar I,
_ o programa pede o código da instrução a ser
inserida (Apêndice I) e em seguida os parâ]Ti£
. tros daquela instrução especificada. Uma vez
completada a instrução, ela é mostrada no ter
:0 minai e o programa espera as teclas P para
programar a instrução ou a tecla Q para abor
tá-la e voltar para o aprendizado.
^ Um exemplo de uma utilização do programa de apren
dizado com os comandos mostrados acima pode ser visto na
listagem da figura 4.2.
Este programa de aprendizado definido acima permi
te utilizar-se extensivamente e com grande facilidade todos
os recursos do computador do nível O, sendo ainda bastante
fácil e eficiente de se programar tarefas complexas para o
robô do laboratório. «
Uma vez terminada a aprendizagem de uma tarefa,
pode-se armazená-la em um arquivo hexadecimal na memória
de disco do nível 1 de controle, pela utilização do comando
^ WRITE do monitor.
..,y
'Z
' O
zz
.189.
.86800
D PROGRAMA DE APRENDIZADO
. =60 «80 í O «8020 «8030
Z ENTRE COM CÓDIGO DO COMANDO OB SET Oi
SET Oí REPROGRAMA Q=ABORTA 8040
Z » ENTRE COM CÓDIGO DO COMANDO OA UAIT 20
WAIT 0020 P-PROGRAMA Q^ABORTA 8042 *•
= 8000 «8045 «L 8000 8045
8000: MOVP 0080 8000 8000 8000 8000 8Ü00 8000 00 80í0: MOVP 0060 8íC0 8000 8000 8000 8000 8000 00 0020s MOUP 0060 8íC0 8Í3E 8000 8000 8000 8000 00 8030: MOVP 0060 OíCO 8Í3E 8000 82A0 7D60 8000 OQ 8040s SET Oí 8042: UAIT 0020 8045: MOVP 0060 9000 8000 8000 8000 8000 8000 00 «8055
.W8000 8055 :í08000004F800000800080008000a000800ü8000AÍ :Í08010004F6000C08Í0080008000000080008000FO :Í08020004F6000C08Í3E8Í008000800080008000AÍ :í08030004r6000C08í3E8í0080Aü82607DOD8DD092 : Í08040000B0Í.0A20004F600000800080008000804B
Z :068050000080008000002A :O0OOOO0íFF
^ ENTRE COM O NOME DE ARQUIVO TIPO HEX (R OU W) OU APR ( E D I T ) B:TESD3
Fig. 4.2 - Listagem de uma seção com o programa
de aprendizado.
.190,
4.2.4- Pixígraaa de execução de tarefas
CZ A finalidade deste programa é permitir a execução
;3 de uma tarefa já armazenada na memória de tarefa do robô.
:0
'O
'.-V
Esta tarefa pode ter sido aprendida pela utiliza
ção do programa de aprendizado ou criada pela linguagem de
alto nível para a programação de robôs industriais a ser
descrita no próximo capítulo.
Uma tarefa armazenada era arquivo hexadecimal na
memória de disco do nível 1 de controle pode ser carregada
na memória de tarefa do robô pela utilização do comando READ
do monitor.
São seis os comandos possíveis de serem entrados
no programa de execução de tarefas a saber:
Uma vez chamado o programia de execução de tare
'Z fas, ele realiza a iniciação de todas as portas e registros
do controlador do robô e im.prlme a seguinte mensagem no ter
. .-j minai de vídeo indicando que está pronto para receber coman
dos:
^ PROGRAMA DE EXECUÇÃO t '
' Q —
"'Z Comando de Calibração:
'•• H : Chama o programa de calibração do robô sem
alterar o conteúdo da memória de tarefa.
"Z
Comando de Listagem:
ZJ L<end.inicial> <end.final> <CRLF>
' L i s t a as instruções armazenadas na memória
:."J de tarefas desde a posição dada por <:end.
"Z
"O
Z^
.191.
inicial> até a dada por < end. final > . Códj^
gos de operação inválidos geram . mensagens
"'•O - de erro.
'"'Zi
Zi
Z^
z^
Zj
Comando de execução passo a passo:
ZZj P : Este comando causa a execução de uma instru
-- ção do programa armazenado na memória de ta
refas e o retorno do controle para o progra
ma de execução. A instrução a ser executada
é listada, a execução é completada para ca
da vez que a tecla P for aper-tada.
'ZZJ
TZJ Comando Aprendizado:
Z~J A : A função deste comando é alterar uma deter
'Z minada instrução já armazenada na memória
;v de tarefa uo robô sem ser necessário ensi^
nar todo o programa de novo. Executa-se o
programa no modo passo a passo até a instru
ção imediatamente anterior à que se deseja
V~—^Z alterar seja executada. Então entra-se com
Z^ZZt a tecla A e o controle é transferido para
ZZZ'Z ° programa de aprendizado até que uma nova
instrução seja entrada (comando P do apren
dizado), quando o controle retorna para o
programa de execução. É importante que a
instrução a ser entrada ocupe o mesmo espa
Ç O de memória da instrução anterior, pois
y senão pode-se destruir outras instruções se
Z guintes ou deixar alguma sujeira na memória
de tarefa.
Comando de Execução:
E : Uma vez testado o programa passo a passo can
o comando P, ou alterado com o comando A,
il 92
pode-se executar diretamente o programa com
o comando E. A execução é terminada ao ser
encontrada a instrução STOP (código OOH) que
faz com que o controle retorne ao programa
Z de execução.
.Z
"z
"Z
V
•V
:y
Comando Monitor:
M : Termina o programa de execução retornando o
controle para o programa monitor.
Uma seção de utilização do programma de execução
pode ser vista na figura 4.3 a seguir.
V O programa de execução é capaz de executar todas
as instruções mostradas no Apêndice I. Se durante a execu
ção da tarefa for encontrado um código de instrução inváli_
do, uma mensagem de erro é enviada para o temrinal e a
execução do programa é abor ,ada.
4.3 - PEO>GRiy; SAS EQ ííI\rEL 1 D E COFjTHOLE
As funções básicas previstas para o nível 1 de
controle, como mostradas no item 3.4, são as seguintes:
- Servir de infra-estrutura básica para o desen
•O volvimento de programas para os demais níveis de
---^ controle do laboratório e para ele próprio.
- Prover meios de comunicação serial com os outros
níveis.
- Dotar o laboratório de programas mais sofisti^
'O cados para programação de robôs industriais tais
ZJ como programas para transformação de coordena
.193,
G72Í3 ZZ PROGRAMA DE EXECUÇÃO
.... •TT»'
- z
—Z
•"V
• Q
. V
Zj
-l. 8ÜÜ0 8055
8000: MOVP 0080 8000 8000 8000 8000 8000 8000 00 80Í0: MOVP 0060 8íC0 8000 8000 8000 8000 8000 00 8020: MOVP 0060 81C0 8Í3E 8000 8000 8000 8000 00 8030: MOVP 0060 8íC0 8Í3E 8000 82A0 7D60 8000 00
ZS^ 8040: SET Oí ' 8042: WAIT 0020 8045: MOVP 0060 8000 8000 8000 8000 8000 8000 00 8055: STOP
801.0,: MOVP 0060 8iC0 8000 8000 8000 8000 8000 00
8020: MOVP 0060 8100 8i3E 8000 8000 8000 8000 00
8030: MOVP 0060 8iC0 8Í3E 8000 82A0 7D60 8000 00
— , ... V -
8040: SET Oi
'• 8042: WAIT 0020 *
ZrJZj 8045: MOVP 0060 8000 8000 8000 8000 8000 8000 00 8055: STOP EXECUÇÃO COMPLETADA PROGRAMA DE EXECUÇÃO
Fig. 4.3 - Seção de utilização do programa de
^ execução de tarefas utilizando o pro
- Q grama aprendido no suL-item anterior.
.194,
das, linguagens de alto nível para programação
de robôs, rotinas de interpelação e desenvolvi^
• mento de outros sensores.
.'lO
Neste item nos dedicaremos a apresentar os progra
mas suporte disponíveis para a implem.entação das duas pri^
meiras funções listadas acima. As rotinas de transformação "1—<y
^ de coordenadas serão apresentados no item 4.4 a seguir e a
linguagem de alto nível para programiação de robôs, junto
T^-Z com as rotinas de interpelação serão vistas no próximo capí
IT.Q tulo. Os programas para desenvolvimento de outros sensores
'• ^ são objetos de outros trabalhos sendo realizados no labora
tório.
"Z Passaremos neste item a descrever os programas su
portes para desenvolvimento de novos programas para o ní_
vel 1 e outros níveis de controle.
'.O
4.3.1 - PRTD.'gra.i3a "Bootstrap" e pr-ograiaa MOlTíITOR
O programa "Bootstrap" e MONITOR estão * armazena
dos em memória EPROM e ocupam os primeiros 4 Kbytes de memo
,-O ria do computador do nível 1, sendo o início do "Bootstrap"
a posição OOOOH de memória.
Desta forma, sempre ao ligar-se o computador de
^ nível 1 ou ao apertarmos a tecla RESET do nível 1, execu
ta-se o programa "Bootstrap". Este programa executa as s£
^ guintes ações mostradas no algoritmo a seguir:
:'Zi .Z - Programa "Bootstrap":
1 - Se autocopia e copia o programa MONITOR para
um banco de memoria RAM único r..(fora dos
.195.
2 - Chaveia o banco de memória EPROM inicial para
memória RAM (Fig. 3.15).
3 - Verifica se a unidade de disco A está pronta.
Se estiver pronta então faça:
Tenta copiar o sistema Operacional.
Se conseguiu então transfere o controle
para o slstemia op£
racional.
senão vai para 4.
4 - Recopia o MONITOR para os primeiros 2 Kbytes
de memória RAM:
5 - Transfere o controle para o programa MONITOR.
6 - Fim.
7- Q
-O
o
Assim, sempre ao se ligar o sistema ou apertar-se
o botão RESET teremos ativo no nível 1 ou o sistema opera
clonal, se o disco de sistema estiver colocado na unidade A
de disco ou o programa MONITOR caso haja algum problema na
carga do sistema operacional.
O programa MONITOR possui os mesmos comandos úes
critos para o programa MONITOR do nível O, apresentado no
sub-item 4.2.1.
O sistema operacional será descrito no sub-item
a seguir.
16 Kbytes iniciais que são chaveados por me_
mória RAI^) .
.196.
-z
Zà
- SBOD : Sistema Básico de Operação de Disco,
- PCT : Processador de Comandos de Terminal.
- ATP : Area Transitoria de Programas.
a configuração de memoria para um sistema com
-Q 64 Kbytes de memoria é mostrada na figura 4.4 a seguir:
-O zj •
Z o processador de comandos do terminal ocupa as po
' Zj sições de E400H até EBFFH e o SBES e SBOD ocupam de ECOOH
As 2 5 6 primeiras posições de memoria são reserva
das para os parâmetros do sistema sendo que 1 2 8 bytes são
dedicados a um "buffer" de leitura e escrita em disco.
a FFFFH.
A área do PCT pode, durante a execução de progra
mas, ser ocupada pelo programa do usuário, desde que ao fi
-•^ 4 . 3 . 2 - Sisteii7:a cperacional do mí-^el 1 de controle
; 0_ sistema operacional implementado no computador
-•^j do nível 1 de controle é compatível com o sistema operado
nal CP/M ("Control Program for Microcomputers") versão 2.2
_ da Digital Research [ 1 4 ] .
A principal função do sistema operacional é tor
'Z nar disponível de uma forma simples os recursos de periférj^
eos e escrita e leitura de discos do sistema.
Como o C P / M , o sistema operacional é composto de
quatro partes a saber:
- SBES : Sistema Básico de Entrada e Saída.
.197,
'-.Zi
7Zy
-Z
zZ
ZZ-j
•Zj
V
«y
"y
FFFFH:
ECOOH:
E400H:
lOOH:
OH:
SBES + SBOD
PCT
ATP
PARÂMETROS DO SISTEMA
Fig. 4.4 - Configuração de memória do comiputador
do nível 1 com o sistema operacional
carregado.
nal seja executado uma reiniciação do sistema (Desvio para
a posição 0 H ) .
Desta forma, um programa que ocupe até 59 Kbytes
de miemória pode estar carregado ao MIESMO tempo na memória
do computador do nível 1.
Facilidades disponíveis para o usuário podem ser
ZZ^
.198,
divididas em dois grupos:
-, Operações de entrada e saída simples
Z Incluídas neste grupo estão a leitura de um ca
racter no terminal, a escrita de um caracter
no terminal ou na impressora, verificação do
status de dispositivos de entrada e saída, im
primir um conjunto de caracteres na impressora e
1er um conjunto de caracteres do terminal,entre
outras.
zZ
- Operações de escrita e leitura de disco
Temos neste grupo a iniciação do sistema do
[Z disco, seleção do acionador, criação, abertura,
fechamento, apagamento, mudança de nome, leitu
ra e escrita aleatória ou seqüencial em arqui_
_ vos, colocação de endereços de acesso direto à
mem.ória etc.
.'-V Todas estas funções são executáveis com una ini^
•^j ciàção de parâmetros e uma chamada de subrotina para o pon
- to de entrada localizado na posição 0005H. Maiores informa
^ ções sobre estas rotinas disponíveis podem -ser encontra
das em [14 ] .
Todos os arquivos do sistema operacional são
"Z catalogados no diretório com um nome de até 8 caracteres
ZZ começados por letra e uma extensão de até 3 caracteres.
Comandos intrínsecos para ler o diretório (DIR) J
escrever um arquivo ASCII no terminal (TYPE), mudar de nome
um determinado arquivo (REN), apagar um arquivo (ERA) e
guardar um programa da ATP em disco (SAVE) são im.plementa
Z dos no próprio sistema operacional.
î
î
V
V
1
.199
Outros comandos para copiar arquivos, editar ar
quivos, verificar espaço e tamanho de arquivos em disco,
testar programas, transformar programas em formato hexade
cimal para formato executável e etc, são também disponíveis
como comandos transitórios.
Informações de como utilizar estes comandos e
^ ^ suas opções estão descritos em [63 ] e [25 ] , sendo que não
nos deterem.os m.ais sobre o sistema operacional do nível 1
de controle.
Importante é frizar que qualquer programa ou lin
guagem executável no sistema operacional CP/M versão 2.2 po
de ser utilizado no computador do nível 1 de controle. Unia
descrição de alguns destes programas existentes será dada
no sub-item 4.3.4 deste capítulo.
4 . 3 . 3 - Frog.ra-a for^rataidor de discos
Este programa foi desenvolvido em FORTRAN com o
^ objetivo de iniciar um disco não formatado ou apagar com
pie tamente um» disco fazendo um.a nova formatação do mesmo.
Ele está gravado em um arquivo com o nome FORMA
TA.COM e pode ser utilizado para formatar discos tanto na
unidade A como na unidade B, sendo que para gravar o sist£
ma no disco formiatado deve-se utilizar o programa gerador
de sistema (SYSGEN).
Uma vez formatadas todas as trilhas o programa ve
rifica uma a uma para garantir uma formatação correta. Ura
disco gravado pode tar;bém ser verificado tirando-se o selo
que peiiiiJ t.e a escrita no disco e chamando o programa forma
-T^ tador para testar o disco, i
.200,
A formatação dos discos é feita segundo o padrão
IBM 3740 para discos de 8 polegadas face e densidade sim
pies.
4.3.4 - Prograüsas suportes e lirrguagens de prograüisação de
laicrocc - ü i i p t E t a d o r e s dispomivêis
Como dito anteriormente, qualquer programa compa
tível com o sistemia operacional CP/M pode ser utilizado no
computador do nível 1 do laboratório desde que ele esteja
armazenado em disco de 8 polegadas densidade simples e face
simples, em código do processador 8085.
Entre os vários progra.mas existentes, compatíveis
com o sistemia operacional CP/M podemos citar:
- Programa DDT ("dynamic debugging tool'!*)
Permite executar program.as passo a passo, com
pontos de paradas, executar apenas uma parte do
""Z programa, listar valores de memória e de regi£
*- Zj tradores, listar instruções em código mnemonic
- . -^ C O etc, sendo um programa completo para testes
de programa [^3].
- Programas editores ED e WORDSTAR
São programas que permitem a criação e modifica
ção de arquivos em disco sendo que o último per
mite trabalhar com arquivos documentos e não do
cumentos tendo facilidades para imiprimir, apa
-j* ga.r, copiar e uma série de comandos para proces
z:
•ZJ
""^ Vários discos podem ser formatados sendo que o
programa de formatação retorna o controle para o sistema
;:Q "" operacional ao se apertar a tecla ESC.
.201.
4.3.5 - Pi ogr-aiaa eciulador de terminal e editor de rig ;¿Ar£S
Como mostrado no item 4.2, os programas do nivel
O de controle são ativados a partir do terminal de vídeo do
nível 1 com um programa emulador de terminal e editor de
V figuras chamado MONITED, desenvolvido para a comunicação en
tre os dois níveis.
Como o próprio título deste sub-item deixa claro,
são duas as funções deste programa MONITED:
samento de palavras [25] e [39].
- Prograrrias montadores ASM e macromontadores MBO
[49].
- Linguagem de programação FORTRAN IV [SO].
- Linguagem C de programação.
- Linguagem COBOL.
- Linguagem PASCAL [15].
- Linguagem BASIC interpretado e compilado [40].
'•y - Linguagem PL/I.
- Programa BBII para gerenciamento de banco de
dados.
"''""" e vários outros programas aplicativos compatíveis o :com o
CP/M disponíveis no mercado de programas. i,
-O
-.4
.202
1 - Fazer com que o computador do nível 1 emule
um terminal para o computador do nível O, per
IZZ-Z . mitindo ainda que este tenha acesso aos recur
\.ZZ SOS do nível 1 (principalmente disco e impres^
^ - 3 sora).
\-:Z F 2 - Implementar um editor de figuras para a lin
f""'^ guagem de alto nível a ser vista no próximo
capítulo.
f ZZZ-Z Para a primeira função, ó programa implementado
simplesmente transmite para o nível O qualquer caracter en
trado no teclado do terminal de vídeo e mostra no terminal
qualquer caracter recebido do nível O de controle.
Além desta função, o programa reconhece os coman
dos READ e WRITE do monitor do nível O e, para o comando
READ, solicita o nome do arquivo hexadecimal a ser lido, e
uma vez especificado, acessa o arquivo e o transmite para o
nível O. Para o comando WRITE, o programa armazena todos os
caracteres recebidos do nível O e depois solicita o nome do
arquivo onde serão armazenado os dados recebidos, *e uma vez
especificado o arquivo, guarda os dados naquele arquivo.
:j "j A tecla control-N ("N) faz com que o programa emu
lador termine, passando o controle para o sistema operado
^ nal do nível 1.
Ao receber um control--P ("P) do nível O, o progra
ma monitor redireciona todos os dados recebidos do nível
Z 0-^para a impressora até receber outro caracter "P.
A segunda função do programa, como editor de fi
^ guras para a linguagem de alto nível, deve ser utilizada em
conjunto com o programa de aprendizado ativo no nível O de
^ controle.
C C : , Í ; : C . . .•.rz.c.UL zi L M E R G : A N U C L E A R / S P
.203.
As figuras possíveis de serem editadas são: PON
:'ZJ TOS, LINHAS, ClCULOS e TRAJETÓRIAS.
Uma vez ativados os programas KONITED no nivel 1
-j de controle e o programa de aprendizado no nivel O, as se_
_ guintes teclas são utilizadas pai-a a edição de figuras:
r o
ZZ
-V
ZZj
"Z^
o "O
- Control-E ( E ) :
Inicia a edição de um arquivo de figuras, se ne
nhum estiver em edição. O programa solicita a
O especificação do nome do arquivo a ser editado.
Q Se o arquivo já existir o programa coloca as no
vas figuras no final do arquivo sem destruir as
já existentes. Se o arquivo não existir, um ar
quivo é criado com aquele nome e as figuras
editadas serão colocadas nele. A extensão de um
arquivo criado por este editor ,<--.e será sempre
. APR.
- Control-F ("F):
..V Termina a edição do arquivo corrente, permltln
do que outro arquivo possa ser editado.
Uma vez que um determinado arquivo esteja sendo
editado, as seguintes teclas são comandos para o editor de
figuras:
- Control-P ("P):
V Avisa ao editor de figuras que um ponto será
7J editado. Ao se entrar com esta tecla, o editor
solicita o nome daquele ponto devendo ser espe_
cificado um nome com até 8 caracteres, sendo o
primeiro uma letra. Durante a edição todas as
outras teclas do programa de aprendizado funci£
nam como descritas naquele programa. Desta for
.204 .
ma, pode-se posicionar o robô no ponto a ser
Z^ editado com aquele nome e tecla-se Control-W
Z-Z " • (" W) para armazená-lo.
--' - Control-V/ ("W) :
ZZj Avisa ao editor que aquele ponto onde esta o
robô é um ponto da figura em edição. Se a figu
ra for um ponto, basta um para terminar a
edição do ponto, se for uma linha, dois são
necessários, se um círculo três e se for uma tra
- jetória são necessários tantos "W quantos forem
os pontos da trajetória.
':7.Z .. - - Control-L ("L) :
Avisa ao editor que uma linha será editada. O
editor solicita o nome da linha e espera . dois
referentes aos dois pontos no espaço do robô
que determinam aquela linha.
-y - Control-C C^C) :
Edita um círculo com o nome especifioiado e os
3 três pontos correspondentes às posições do robô
.Zj ao serem entrados os três comandos "V/.
- Control-T C^T) :
Edita uma trajetória. Uma trajetória é definida
como sendo um conjunto de N pontos (N>=1), sen
do que o editor solicita o nome ' e o número
de pontos daquela trajetória. A partir daí, fi
ca esperando a entrada de N comandos para es
pecificar os N pontos correspondentes àquela
trajetória.
Tantas figuras quanto se queira podem ser armaze
"-O
-.hi
"Z
•"O .o
'Z
.205.
nadas em um arquivo. Uma vez terminada a edição do arqui_
vo, a tecla ' N retorna o comando para o sistema operacional
O do nível 1 de controle e o arquivo editado pode ser visto
Q com o comando TYPE do sistema operacional.
O arquivo criado pelo editor de figuras é do tipo
texto sendo que ele pode ser modificado, acrescentado, fi
guras podem ser apagadas, coordenadas alteradas etc, com
O qualquer um dos editores de textos disponíveis no labora
:¿j ' tório. .
A figura 4.5 mostra uma.seção com o editor de
figuras MONITED e o arquivo correspondente criado.
Como estas figuras e este arquivo serão utiliza
Zi dos pela linguagem de alto nível desenvolvida, será mostra
do no capítulo seguinte.
Os pontos componentes das figuras em arquivos
criados pelo editor de figuras terão sempre o atributo JUNC
para especificar que as coordenadas são coordenadas de jun
ção. *
4.4 - TEAííSFOREíAÇM DE C(D>ORB'EIÍADAS
Para a implementação das rotinas de transformação
de coordenadas foi considerado o modelo cinemático do robó
com um sistema de coordenadas cartesianas e um sistema de
coordenadas de junção como mostrado na figura 4.6. O robô
pode ser visto como o conjunto de segmentos retos articula
dos com as dimensões também mostradas na referida figura.
A especificação da posição e orientação da mão-
ferramenta, no ponto T nos dois sistemas de coordenadas é:
>
• -4
.206
.G6B00 PROGRAMA DE APRENDIZADO
ZJ E D I T O R DE F I G U R A S
E N T R E COM 0 NOME DE A R Q U I V O T I R O HEX ( R OU W) OU APR ( E D I T ) B : F I G U R A
A R Q U I V O N O V O
e d i t a n d o . . .
e n t r e com nome do ronto ( 8 c a r a c t . max) ORIGEM PONTO e d i t a d o *
Z ENTRE COM NOME DA LINHA <8 CARACT. MAX) RETA « « LINHA EDITADA
ENTRE COM NOME DO CIRCULO (8 CARACT. MAX) SOLDA
CIRCULO EDITADO ~j *
ENTRE COM NOME DA TRAJETÓRIA (8 CARACT. MAX) TRAJT
ENTRE COM NUMERO DE PONTOS DA TRAJETÓRIA 03
TRAJETÓRIA EDITADA
FIM DA EDICAO
TYPE B:FIGURA.APR
POINT ORIGEM JUNC
S>8000 T,8000 ^8000 9>8000 ^,8000 9>8000
RETA O JUNC
S>8D00 <r>8000 gi8000 Í 8 0 0 0 S8000 ÍSOOO Í>80D0 9Í8000 S8000 'B80Q0 'J>8000 Í80ÜO CIRCLE SOLDA JUNC 9)8000 Í 8 0 0 0 T,8000 Î8000 Î8000 T,8000 S7F98 SeOOO Ï80U0 58000 <j;8000 9)8000 SÍ7F98 9Í8087 9)8000 3,8000 S8Q00 Í 8000 TRAJECT TRAJT 03 JUNC 9)7F98 9-)8087 T)8000 9Í8000 SiOOQO Ï S O O O Î808F 9ie087 <Í80Ü0 SiBOOO SBOÜO 18000 Î.80SF Ï8087 SiSOOO 9Í80D0 9Í7F2E 9)8000
Fig. 4.5 - Seção de edição de figuras e o arquivo
correspondente criado pelo editor.
MONITED
EMULADOR DE COMANDOS PARA MONITOR NIVEL O
APERTE RESET NIVEL O E TECLE ESPAÇO « ROBOVOO
-Z
J
ZJ
•—\
.207.
- Solução direta : Transforma a posição dada em
coordenadas de junção para coordenadas cartesia
nas.
"Z
' - ^
Para que estas rotinas possam ser diretajnente ut_i
::ZZi lizáveis no laboratório, são ainda necessárias as seguintes
sub-rotinas:
- Solução inversa : Converte um ponto dado em coor
denadas cartesianas para coordenadas de junção.
Z ANGMOT : Converte um ponto dado em coordenadas de
- junção para as coordenadas de motor utilizáveis
MOTANG : Converte um ponto dado em coordenadas de
motores para as coordenadas de junção dò robó.
pelo controlador do robô.
TESTATING : Testa se um ponto dado em coordenadas,
de junção e atingível pelo robô, ou seja, se este
ponto, está dentro do seu volume de trabalho esp£
Zi4 cificado no item 2.3.
Todas estas rotinas e sub-rotinas serão vistas cem
detalhes no decorrer deste item.
junção : T = ( a , B, Y , P , r)
cartesiano : T = (x, y, z, p, r)
O objetivo deste item é prover um conjunto de
fórmulas matem.áticas e duas rotinas que realizem a transfer
mação da posição de um sistema para o outro, rotinas estas
que implementami as soluções do robô chamadas de [l7].
• Z
.208,
Zí>
-•al'
I O
¡'0
- o
l O
O 'O 'O
Fig. 4.6 - Modelo cinemático utilizado pelas roti
nas de transformação de coordenadas.
.•4
-O
-O
y
" O
.209
No primeiro sub-item apresentaremos a dedução das
equações matemáticas das duas soluções para o robô desenvol_
vido e na seqüência apresentaremos as rotinas escritas em
PASCAL para os vários procedimentos.
4.4.1 - KesQjltiçao das equaçõss cineiaáticas para o rctoô do
laboratório
- Solução direta:
Para a solução direta, o ponto T onde esta pos3^
clonada e orientada a mão-ferramenta do robô é dado por:
T = ( o t , B , Y . P . 0"de
a = Angulo em radíanos do giro do braço.
3 = Angulo em radíanos da elevação do braço.
•y = Ângulo em radíanos da elevação do ante-braço.
p = Ângulo em radíanos da elevação do punho.
r = Ângulo em radíanos da rotação do punho.
A figura 4.7 a seguir apresenta o posicionamento
do robô em um ponto T qualquer, tendo o plano do braço e
ante-braço coincidente com o plano do papel.
A solução direta do robô consiste em determinar
mos o ponto T em coordenadas cartesianas, ou seja,
T = (x, y, z, p, r)
.210,
cs-
Fig. 4.7 - Vista lateral do robô posicionado em
um ponto T onde são dadas as suas coor
denadas de junção.
-vi
Os ângulos p e r são os mesmo do sistema de coor
denadas de junção.
O primeiro passo é determinarmos a altura z do
ponto T e a distância d da projeção do ponto T no plano XY
até a origem O do sistema de coordenadas cartesianas.
r,0
-y
Logo,
z = h + KN + GI + ET ( 4 . 1 )
-O d = MN + KG + IE ( 4 . 2 )
"O donde,
onde
z = h + b.sen(B) + a.sen(Y) + l.sen(p) (4.3)
d = b.cos(B) + a.cos(Y) + l.cos(p) ( 4 . 4 )
Zé Do triângulo OFy temos que:
X = d.sen(a) ( 4 . 5 )
y = d.cos(ci) ( 4 . 6 ) 'y ' i
Z Substituindo ( 4 . 4 ) em ( 4 . 5 ) e ( 4 . 6 ) temos:
X = sen(oi). (b.cos(3) + a.cos(Y) + l.cos(p)) ( 4 . 7 )
y = cos(a).(b.cos(6) + a.cos(Y) + l.cos(p)) ( 4 . 8 )
Assim a solução direta é dada por
T = (x, y, z, p, r)
X é dado por ( 4 . 7 ) ,
Temos que z é a soma das contribuições verticais
dos vários segmentos do robô e d é a soma das contribuições
... Q ' horizontais destes mesmos segmentos.
~ ^ .211.
•-T-â • z é dado por (4.3) e
VO :.::0 P = P
O
. o
• y
•TOt
"O
.212,
r = r.
- Solução inversa:
Para esta solução consideramos o ponto T dado por
T = ( x , y , z, p, r)
e desejamos encontrar as coordenadas de junção deste ponto
^ a saber:
T = ( a , B , Y , P, J-'- )
Para a solução inversa utilizamos a figura 4.8 pa
ra servir de base para as deduções.
Da figura temos:
a = a r c t a n ( x / y ) sendo que (4.9)
se X = y = O então assumimos que oí = O.
Os segmentos hl=IN e ã^MN são dados por:
hl = z - l.sen(p) - h (4.10)
x ' + y ^ - l.cos(p) (4.11)
y é dado por (4.8),
.213,
-S
-O -O
"O •Z
-O
"O
•O
:0
'O
:0
'.Zà
Fig. 4.8 - Figura para a solução inversa do robô
desenvolvido.
Do triangulo retângulo MNI temos que:
o + hl^' e
e = arctan(hl/d)
(4.12)
(4.13)
Desta forma, para o triangulo líKI temos os três
lados conhecidos (b, a, o) e desejamos conhecer o ângulo R.
A trigonometria nos mostra que se o<b+a, ou seja,
o triangulo MKI existe, temos:
"Z
-O
•V
"Z
"O "O
.214.
tg(R/2) = rc/(pe - a) (4.14)
onde re é o raio da circunferencia inscrita ao triángulo e pe o semiperímetro do mesmo [ip].
pe = (a + b + o)/2 (4.15)
4 re (pe-a) (pe-b) (pe-o)/pe (4.16)
7.Z Substituindo (4.15) e (4.16) em (4.14) temos:
tg(R/2) = / ( (a+o-b) (a+b-o) )/(a+b+o) (b+o-a) ) (4,17)
logo,
O R - 2.arctan(A/((a+o-b)(a+b-o))/(a+b+o)(b+o-a))) O (4.18)
Da figura 4.8 podemos ver que
B = R + e (4.19) *
"'• y Dos triângulos MKC e KGI temos que:
•-- d = b.cos(B) + a.cos(Y) (4.20) rO
:::Z - a.sen{y) = hl - b.sen(B) {A. 22)
hl = b.sen(3) + a.sen(Y) (4.21)
logo.
a.cos(Y) = d - b.cos(B) (4.23)
Dividindo (4,22) por (4.23) temos:
.215.
: ~- Y - arctan( (hl-b.sen(B ) )/(d-b.cos(í3 )) (4.25)
-V
tan(Y) - (hl-b.sen(B))/(d-b.cos(B)) (4.24)
onde temos que se tanto numerador como o denominador forem
menores do que O teremos
Y = Y ~ e se
o denominador for igual a O então
Y = T r/2 se hl-b.sen(3) > O e
Y = - T r / 2 se hl-b.sen(B) < O
Assim, a solução inversa é dada por
T = (a, B, Y. P» r) onde
a é calculado por (4.9),
3 é calculado por (4.19), *
Y é calculado por (4,25) e
P = P
r = r
V 4.4.2- Transfonsacsio de coordenadas de juoção para ' coorde
E x a d a s ; de E s o t o r e vice-versa
Como visto, o ponto de origem é definido com:
Oy
- y
;0
.216.
Porig = ( a , 3 , Y , P » r ) =
Porig = (0°, 45°, -45°, 0°, 0°).
0 programa de aprendizado e de execução conside
ram este ponto em coordenadas de motor como sendo
Porig = (8000H, BOOOH, BOOOH, 8000H, 8000H)
Por coordenadas de motor entendemos os valores in
teiroE utilizados pelo sistema de controle para o posicio
namento do robô. Como visto no capítulo II, o sistema de
acionamento divide a circunferência por 12000 partes para
todos os graus de liberdade, o que faz com que.a cada pulso
do motor corresponda a;
1 pulso = 360°/l200 = 0,03° (4.26)
Na tabela 4.1 temos a relação do sentido de varia
ção dos vários graus de liberdade em relação à variação
das coordenadas de motor para cada um deles.
*
Desta tabela e da equação (4.26) miais o valor das
coordenadas de motor e de junção para o ponto de origem, po_
demos concluir que as relações entre os ângulos de junção
e as coordenadas de motor são:
a = 0,03°.(MOTA - BOOOH) (4.27)
3 = O,03°.(MOTB - BOOOH) + 45° (4.28)
Y = 0,03°.(BOOOH - MOTC) - 45° (4.29)
p = 0,015°.(MOTE - MOTD) (4.30)
r = O,015°.(MOTE + MOTD) (4.31)
.217.
'O
"'" Destas equações podemos tii- ar as relações entre as
coordenadas de motor e os ângulos de junção para os varios
-.srO graus de liberdade.
" O
"Z
ZZ ZÉ
Z'-Za
-ZZ.ZZ
MOTA = INTEIR0(l00.a/3 + BOOOH) (4.32)
MOTB = INTEIROdOO. (3-45)/3 + BOOOH) (4.33)
MOTC = INTEIR0(8000H - 100.(Y+45)/3) (4.34)
MOTD = INTEIR0(8000H - 100.(9p-r)/3) (4.35)
MOTE = INTEIR0(8000H + 100.(p+r)/3) (4.36)
onde a, 8, Y> P» r são dados em graus. *
.y Zi Assim três rotinas foram desenvolvidas:
O T E S T A T I N G ( A N G ) :
> ^ A N G é um vetor real de coordenadas de junção. E £
ta rotina testa se todos os ângulos de A N G levam
o robô para um ponto dentro do seu volume de tra
balho. O resultado, verdadeiro ou falso é coloca
' do em uma variável booleana global ( A T I N G ) . No
y vetor ANG temos que ANG(l)=a, ANG(2)=3, ANG(3)=Y,
Z A N G ( 4 ) - P e ANG(5)=r.
• • - O n d e MOTA, MOTB, MOTC, MOTD e MOTE são as coorde
- r - õ nadas de motor dos motores A, B, C, D e E respectivamente e
.:, O a , B , Y » P > r são dados em graus, sendo que os seus limites
mecânicos estão mostrados na tabela 2.5 onde limitamos para
estas rotinas o ângulo de rotação da mão-ferramenta supon
do n = 2.
z 3
•
.218.
:.:;y MOTANG(MOT,ANG):
MOT é um vetor inteiro de coordenadas de motores.
Esta rotina transforma os valores de coordenadas
de motores em MOT (MOT( 1 ) =:MOTA, M0T(2)=M0TB, MOT
(3)=M0TC, M0T(4)=M0TD, M0T(5)=M0TE) nos ângulos de
junção correspondente e testa se 0 resultado é
um ponto atingível.
'".•RO
ANGMOT(ANG,MOT):
: R . O Realiza 0 inverso de MOTANG , ou seja, testa se
as coordenadas de junção em. ANG representam um pon
to atingível pelo robô e se for, coloca os valo
res correspondentes às coordenadas de motor em
-V MOT.
" O
Uma listagem destas três rotinas está mostrada
na figura 4.9 a seguir, sendo que a codificação foi feita
em PASCAL e as definições de constantes e variáveis estão no
Início da listagem, sendo válidas para todas as rotinas des
te item.
:)
: o 4. 4.3 - TransfojL'îiiaç.ao de C C O R D E F I I A D R T S de J U F B Ç S O para coorde
ïïiadas cartesianas
" O
" O
Esta transformação de coordenadas é realizada
pela rotina abaixo:
JUCART(MOT,COOR):
MOT é um vetor de coordenadas de motor e COOR é
" • . ' O um vetor real de coordenadas cartesianas sendo
- " O que, COOR(l)=x, COOR(2)=yCOOR(3)=z, C00R(4)=p,
. 0
: 0
C00R(5)=r. Nesta rotina chajria-se inicialmente a . 0
: 0 rotina MOTANG e então aplica-se as equações desen
' 0
" •RO -
ro
7^
rõ .219.
'O MODULE TRANSCOR; CONST PI= -3. Í4i5?27y
B=344.(3; A-297.0;
-O L=i47.0j
TO Tí0G--=0.Õ3-T200=^D.0ííi: K = 33. 33333: P li 80=^0. 01:^45329: P 12--= í .570796; HBAL=ia23.0 5 AMB=64i.O:
•Z^ AMEB = -47.Ó-BHEA^47.0-
—^ MPI2—Í .5:^0796; Cí 80^:57. 29578;
T-v ' TYPE COORD = ARRAYCÍ..61 OF REAL; MOTOR = ARRAY Í : Í..6: OF INTEÓER;
«-K- K « « - J f ii « « ii K íí- «•« * «•«• ii ii ü K-«• ) ( -;<• • « • « K- ii ii ii ii ii ii ii a ii -» ii ) VAR ATING: EXTERNAL BOOLEAN:
, - {aHii -)!• H -H-« •« • « • « • ) ! • « « « - K ii ii ii a •¥.• ii -K- ii ii ii •><• tt •>(• ii ii ii -Á- ü- ii ii « ü * -K- ii ) PROCEDURE TESTATING<VAR ANG ÍCOORD): BEGIN ATING:-TRUE; IF
O If' ]: F < A N G C 31< - A N G C 2 3 - í 2 o ) O R < A N G i: 31 > A N G C 21 > T H É N ' A TI ís! G: = F- A L 8 E IF (ANGI:41<=:ANG1:3-J-9D)0R(ANG!:4:J>ANGí;3H90) ti-ien ATINGS-FALÔE? IF (ANGC53<--360)0R<ANGC51>360) THEN ATINGs =^FALSE; END; PROCEDURE MOTANG(VAR MOT:MOTOR;
O VAR ANG:COORD í ; BEGIN ANGL" í 1: -Ti00« <MOTC i 1 -1) ; ANGr21: =-T í OO-h (MOTC21 -1) +45; ANGC 33 s =Tí 00« <I-MOTC31)-45 :
y ANGC4i:=T200«(M0Tr:5:i~M0TC4fl> ; i A N G C 5 : : 7- 2 O O « ( M O 7 C 5 :i M O T C 4 3 ) = TESTATING( ANG) ; END;
_ ( rr ¥ : « « í< -« ii ii V: )(• « « « « « « V 4r « 5(-« « « « «ÍK- )f « « X « « « * « « K í( ) PROCEDURE ANGMOKVAR ANGsCOORD;
VAR MOT: MOTOR); BEGIN TESTATING(ANG);
O IF ATING THEN BEGIN
- MOTCíl:=I+ROUND(K«ANGCil)-M0TC2l: = I + R0UND(K«(ANGC21-45)) ;
^ M0TC31: = I-R0ÜND(l<«(ANGC31 + 45) ) í M0TC4l: = I-R0UND(K«(ANGC41~ANGCS-J) ) ; M0TC5l: = I+R0UND(i<«(AN8C41+ANGC51) ) ;
O END; END;
^ ( « « « « « « « « « « « « « « « « « « « « « « « » « « « « « « í í « « « « X « « « « « « « « « « « « « « í 4 « í t )
V - •
'O
Fig. 4.9 - Rotinas TESTATING, MOTANG e ANGMOT pa
^ ra teste de atingibilidade e conversão
"" de coordenadas de motor para coordena
-y das de junção e vice-versa.
:0
'O ' • • -
•y
V
• V
•y -.V
.220.
volvidas em 4.4.1 para a solução direta do robô.
"'-' ' -Esta rotina implementada em PASCAL está mostrada
VO na figura 4.10.
T Q
PROCEDURE JUCARKUAR MOTs hOTOR y VAR COOR: COORD);
VAR P,D,TETAC:REAL; BEGIN
v NOTANG(MOT,COOR); IF NOT ATING THEN EXIT ELSE
-y BEGIN P:-C00RC43«PIÍ80; COOR C11 : = (COOR Li 1«P1180); C00R[:21 ::=(C00RL21«PI180) ; TETAC s = < COOR C31;!P1180) ;
-y COOR 1131 : : H+B 1N ( COOR f. 21 ) + A«81N ( TETAC ) +L«81N ( P ) ; D : -B-KCOS ( COOR 1:2:J ) +AÍ!-C0G ( TETAC ) +L-XC03 ( P ) ; C00R[:2JS-D*C0S(C00RCÍ1) ; C00R1;Í:I n:n:D»si>.HC00RCí D ) ; END; END;
«• « ¥: « « ¥: Í<- « « -K- ÍÍ IC- « « « V: X « K «• Í I « « « K « « X « I{ K « )
Fig. 4.10 - Rotina para transformar um ponto em
coordenadas de m»otor (junção) em coor
denadas cartesianas.
3 T^ ' -
m _ 4.4.4 - Transfornaacao de coordeimadas cartesianas para coor
denadas'de junção
Q Esta transformação é realizada pela rotina/
CARTJU(COOR,MOT):
-r^ Como mostrado na figura 4.11, onde se encontra a
implementação em PASCAL desta rotina, inicialmen
te aplica-se as equações da solução inversa àe_
senvolvidas em 4.4.1 e uma vez calculadas as coor
• denadas de junção é chamada a rotina ANGMOT para
O termos em MOT as coordenadas de motor equivalente
O . o ponto cartesiano inicialmente em COOR.
"Z É importante frizar que todas estas rotinas encon
_ tram-se implementadas em um único módulo separado, compila
do em separado e possível de ser ligado a qualquer programa
do nivel 1 que necessite uma tra.nsf ormação de coordenadas pa
•y ra o robo desenvolvido.
' Outra característica importante destas rg)tinas é
que as dependencias de parâmetros físicos do robó estão to
das concentradas nestas rotinas, sendo que se alterarmos
estes parâmetros do robo, ou mesmo se desejarmos utilizar
os programas para outro robo, apenas estas rotinas devem
•y
•V ser alteradas.
4.5 - amciÀssm
Neste capítulo nos dedicajDOs a apresentar os pro
gramas suporte para o laboratório LÍDER, tanto para o nível
O de controle, dedicado especificamente ao acionamento, p£
riféricos e sistema de realimentaçao do robô, como para o
nível 1 de controle, voltado para prover a infra-estrutura
',:0
'Z
« 222,
..J
.V
'..V
"Z
• ZJ
Fig. 4.11 - Rotina que converte as coordenadas de
um ponto no sistema cartesiano para
as coordenadas de junção e em seguida
para as de motor.
CQ:::,ZZ:Z i ' T C C . : : ; L 'ÒZ l ; : E R G : A M U C L E A R / S P
;;;to
:;s--'0 procedure cartju(var coor: coord; VAR MOT: MOTOR);
^ VAR TETA, ALFA, BETA, GAMA, D,H1 ,P , O, R: REAL; BEGIN,
^ IF (CÒ0RCi3=--0) AND(C0ORC23-0) THEN BEGIN ALFA:=-PI2;
O IF C0ORL"4:i-9O THEN IF C00RL33OHBAL THEN BEGIN ATING:^=FALSE; EXIT; END;
^ END ELGE IF C00RL-2I--0 THEN
BEGIN ATINGn-FALSE; EXIT; END ELSE
ALFA : =--:ARCTAN (COOR C i J /COOR C 2:1) ; P:=-C00Rr4:ftPIiBG; D : =SQR T ( SQR < COOR C i 3 ) -í SGR ( COOR 1123 ) ) ~L«COS (P ) ;
.-Q Hi :-::^COORC33-L«SIN(P)-H; TETA:-ARCTAN(Hi/D);
Zj 0: = GQR T < SQR < D) iSCxR (H Í ) ) ; IF 0>AHB THEN BEGIN
ATING:=FAL,SE; O E:>^^T;
END ELSE O IF 0-AMB THEN BEGIN _ BETA:=TETA; Z GAMA:=TETA;
END ELSE BEGIN R:=SORT< ( (AM£B+0)K(AMB-0) )/( (AMB-fO)«(BMEA+0) ) ) • BETA:=-2>fARCTAN<R)+TETA; P:-Hi--B«SIN(BETA) ; 0s=D-BKCOS(BETA);
O IF 0-0 THEN IF P>0 THEN GAMA:=PI2 ELSE GAMA:-MP 12
ELSE BEGIN GAMA:=-ARCTAN(P/0) ; IF (0<0) AND (P<0) THEN GAMA:-GAMA-PI; END;
END; Z C00RC13 5=ALFA«Cí8O;
C00Ri:23:-BETA)tCí80; COORCSls=GAMA«Ci80; ANGMOT(COOR,MOT); END;
. 2 2 3 .
de desenvolvimento de programas aplicativos para microcom
putadores voltados para a robótica e de programas de tare
' fas para robôs industriais.
Para o nível O de controle, foi miostrado neste
capítulo o programa básico MONITOR, que permite testar pro
gramas e prove o m.eio de comunicação com o nível l œ controle
para troca de comandos e arquivos em formato hexadecimal,
funcionando em conjunto comi o prograjna MONITED no nível 1.
O programa de CALIBRAÇÃO'do robô, também executa
do no nível O fazendo com que, independentemente da posição
em que ele se encontre, ao terminar a sua execução o robô
esteja localizado na sua posição de origem também foi apre_
sentado.
Os programas de APRENDIZADO de tarefas e de EXECU
ÇÃO, suas funções e seus comandos foram descritos no decor
rer do capítulo sendo que o conjunto de instruções executa
veis encontra-se detalhado no Apêndice I.
Para o nível 1 de controle, mostramos t) progra
ma "Bootstrap" que se encarrega da carga do sistema opera
cional ou do monitor do nível 1, sendo que o sistema opera
cional, compatível com o sistema CP/M, e os diverses progra
mas suportes utilizáveis para desenvolvimento de outros pro
gramas foram apresentados.
O programa editor de figuras em arquivos direta
mente utilizáveis pela linguagem de alto nível com os seus
respectivos comandos foram mostrados, sendo que a referida
linguagem será objeto do próximo capítulo.
Finalmente apresentamos a resolução das equações
cinemáticas para o robô desenvolvido, tanto no sentido di
ZZJ
.224.
""^ Acreditamos que este conjunto de programas mostra
dos neste capítulo e no próximo, tornem o laboratório bas_
O tante sofisticado e eficiente no que diz respeito ao ensino
e desenvolvimento de novas técnicas em robôs industriais.
•V Convém ressaltar que todos estes programas já são
exemplos de utilização do próprio laboratório e de seus r£
cursos para o desenvolvimento da robótica.
reto (coordenadas de junção para coordenadas cartesianas),
como no sentido inverso (coordenadas cartesianas para coor
denadas de -junção). As rotinas necessárias para a utiliza
"Zè ção destas soluções encontram-se explicadas no final do ca
O pítulo, sendo disponíveis para qualquer usuário do labora
tório e em particular para o com.pilador da linguagem de a.\_
to nível.
ro :o O? Oí
O O o
O
CAPITULO V - LIPHI: LIKGUAGEM PAMA FROGHiMAlQlJÍO DE ROBOS IMDIiSTRIAIS
'One of the most basic features of language is that it is a form of behavior. . . . The unique ifeature of language behavior is that it allows communication between individuals to enlist help, to issue carroands, to organize group behavior, and to receive feedback information from the sensory experiences of others".
(James S. Albus)
,;::0 -^^e.
5.1 - IfíTRODUÇAO
:;:zz
- O • • Neste capítulo descreveremos a linguagem de alto
nível LIPRI: Linguagem para Programação de Robôs Indu£
V O triais, desenvolvida para servir de ferramenta para progra
mação de tarefas de robôs industriais e utilização de sens£
res de alta integração ijunto com a capacidade de sincroni^
mo de eventos externos mais evoluída para o laboratório
LÍDER.
Os primeiros robôs industriais, nos idos de 1960
só podiam ser programados através de caixas de aprendizado
onde coordenadas de pontos relevantes da tarefa a ser execu
tada eram memorizadas por meio de comiandos. Embora grande
parte dos robôs industriais em utilização atualmente ainda
^ sejam programados desta maneira, as dificuldades apresenta
das no sub-item 1.3.1 levaram à única solução possível para
V viabilizar a automação completa das fábricas do futuro, on
de robôs serão utilizados com sistemas CAD/CAM: as lingua
gens para programação "off-llne" de tarefas para robôs in
dustriais [33] [46].
'4
^ Desde então, apareceram várias linguagens, prat_i
^ camente uma para cada robô que dispunha desta facilidade,
Z em niveis de complexidade variando desde linguagens volta
^ das para movimentos primitivos até linguagens tentando im
^ plementar algumas características da inteligência humana
tais como geração de planos de ação e decisões baseadas em
^ modelos dinâmicos do ambiente de trabalho, como mostrado no
" sub-item 1.3.2 deste trabalho.
V
Z A grande parte destas linguagens normalmente n£
cessitam de uma grande capacidade de processamento, e são
usualmente implementadas em um ou mais computadores de gran
de porte, para executarem os seus programas, ficando restri
.227.
tas a laboratorios de pesquisas de universidades e institu
tos [8 ] [24] [44], raramente chegando a ter alguma utiliza
O ção industrial.
zZ
zQ
Além da exigencia de grande capacidade de proce£
samento, a maioria delas é bastante dedicada a um determina
do robô ou a uma familia de robôs, algumas sendo ainda dedi^
cadas a uma determinada aplicação, mas todas tendo uma pe
quena ou quase nenhuma portabilidade de uma máquina para
•'--• outra.
O nosso objetivo nesta parte do trabalho foi áe
senvolver uma linguagem a nivel de linguagem estruturada ,
com a preocupação de possuir os principais atributos de uma
linguagem de alto nivel para programação de robôs mas que
necessitasse de uma pequena capacidade de processamento
(usualmente eficiente até em microcomputadores de 8 bits),
sendo de um custo consideravelmente menor e ainda o mais
transportável possivel de um robô para outro.
A linguagem implementada é do tipo compilador, ten
do sido desenvovlida em PASCAL padrão e executável em qual_
quer sistema operacional compatível com o sistema CP/M.
Ê esta linguagem, a estrutura de seus programas ,
suas declarações e comandos que passaremos a descrever nes
te capítulo.
Na seqüência apresentaremos uma seção com o compi^
lador LIPRI e no final faremos uma comparação entre esta
linguagem implementada e outras linguagens desenvovlldas pa
ra robôs industriais.
.228.
Q 5.2.1 - Configuração do sisteraia
Como dito anteriormente, o compilador LIPRI foi
implementado na linguagem PASCAL padrão, sendo executável
em qualquer sistema compatível com o sistema oí^eracional
Z CP/M versão 2.2.
Zj O diagrama esquemático da figura 5.1 apresenta a
configuração do compilador e o seu relacionamento com os vá
rios arquivos de entrada do usuário e a geração dos seus
arquivos de saída, ao ser entrado o comando [23]:
y
ry
onde o compilador LIPRI e seus "overlays" estão na unidade
LIPRI B:ARQDOUSU<crlf>
de disco de sistema e o arquivo do usuário está na outra
unidade.
... O 5.2 - ESIROTILFRA DA LUíGUAGEM
-- A linguagem LIPRI é do tipo linguagem compilada,
-V ou seja, tendo como entrada um arquivo do programa fonte
escrito segundo a sintaxe de linguagem, temos como saída um
arquivo de listagem deste programa compilado e, se o progra
ma estiver sintaticamente correto, um arquivo do programa
^ objeto equivalente ao programa fonte, executável pelo com
putador controlador do robô.
Neste item veremos como são criados e quais as fi_
nalidades dos vários arquivos processados è componentes do
compilador LIPRI, as informações contidas nos seus arquivos
de saída, como executar o arquivo objeto no computador do
robô e ainda a sintaxe dos programas escritos em LIPRI.
1 í
O b u V o u c) ü i) i) D ó o y ü ü ú y ü ú v i\ u l' i> i'' <L) v ü ü 4 Í
1
cn O C P o
3 < a H> O p H-m w oq
C CD --í
o P w «O
c CO PI m c o c 'S D.
CD O H- M O P O • O o
H- 3 0 Xí rs H-p M
3 P CD a
o rt O
O H O Tí 3
H O m
W d P m
ENTRADA COMPILAÇÃO SAIDA rv3 rv> CD
.230.
•V
- LIPRI.001
0 É o arquivo do primeiro "overlay" do compilador
Z LIPRI, sendo carregado após a iniciação feita
- por LIPRI.COM. Ê este "overlay" que executa a
^ análise sintática do programa do usuário (B:ARQ
DOUSU.LIP) gerando em LIPRI.TMP uma forma Ínter
mediarla em quádruplas para o programa do usuá
^ rio, e em (B:ARQDOUSU.PRN) um arquivo de lista
V gem do programa compilado com os erros de sin
taxe que porventura houver. .
- LIPRI.002
É o arquivo do segundo "overlay" do compilador
LIPRI, sendo carregado na memória após ter sido
completada a análise sintática e geração da for
ma intermediária no arquivo LIPRI. TMP pelo prá^
meiro "overlay" do compilador. Esta parte do
compilador é responsável pela geração de código
no arquivo (B:ARQDOUSU.HEX) tendo como entradas
o arquivo da forma intermediária LIPRI.TMP e
quantos arquivos de dados com figuras geométri^
cas especificados no programa do usuário. Caso
haja algum tipo de erro no processo de geração
Pela figura 5.1, podemos ver que o compilador LI_
PRI é composto dos seguintes arquivos tendo as funções lis
tadas a seguir:
- LIPRI.COM
—>. É o arquivo principal, raiz do compilador LIPRI,
sendo ele responsável pelas iniciações necessá
rias do compilador e pela coordenação geral do
^ processo de compilação, estando ativo na memo
"' ria do processador durante toda a compilação.
.-.V .231 .
• J
ZJ
de código, mensagens são enviadas para o termá^
nal de vídeo e tcunbém para o arquivo de lista
Z gem do programia fonte.
^ - LIPRI.TMP
Como ficou evidenciado na descrição dos outros
arquivos, este arquivo tem por finalidade o ar
mazenamento da forma intermediária em quádru
pias, equivalente ao programa fonte do usuário
sendo apenas um arquivo existente durante a com
pilação, não sendo acessível ao usuário.
- LIPERROS.TXT
É o arquivo que contém as mensagens de erro en
viadas pelo compilador LIPRI. Caso este arquivo
não esteja presente na unidade de disco de si£
tema, as mensagens de erro são enviadas apenas
com um número correspondente ao erro, sendo que
o seu significado encontra-se mostrado no Apên
dice II deste trabalho.
Mensagens indicando o estado da compilação e de
erros na geração de código, criação de arquivos e outros tl_
pos são enviados para o terminal de vídeo de forma a que o
operador saiba exatamente em que fase e o que está acont£
cendo com o seu programa durante a sua compilação.
O relacionamento e a criação pelo usuário dos vá
rios arquivos que são entradas para o compilador LIPRI po
dem ser vistos esquematicamente na figura 5.2, para o labo
ratório LÍDER na sua configuração atual, sendo que o sign¿
ficado de cada um destes arquivos é dado logo a seguir.
.232,
Q
• y
Fig. 5.2 - Arquivos de entrada do compilador L I
PRI na configuração atual do laborató
rio l í d e r .
.233.
- Arquivos com extensão .LIP
São arquivos de programas fonte para o compila
dor LIPRI, sendo criados e modificados por qual_
quer um dos editores de texto do computador, do
nível 1 de controle. É neste arquivo que uma d£
terminada tarefa é codificada em linguagem LI
PRI com as declarações e comandos a serem vi£
tos nos próximos itens.
- Arquivos com extensão .APR
São arquivos com figuras geométricas componen
tes da tarefa a ser executada pelo robô, cria
dos utilizando o programa MONITED, monitor e
editor de figuras como explicado no sub-item
4.3.5 deste trabalho.
- Outros arquivos de dados
São arquivos também com figuras geométricas, po
dendo ter qualquer tipo de extensão, estes cria
dos diretamente com um editor de textos do ní_
vel 1 de controle ou através de outros * progra
mas aplicativos, podendo conter pontos em coor
denadas de junção ou coordenadas cartesianas
mais os ângulos de orientação da mão-ferramenta
Estes programas aplicativos podem ser tais que
acessem bancos de dados de sistemas CAD/CAM e
gerem arquivos de dados diretamente utilizáveis
pelo compilador LIPRI.
- Arquivos de figuras
São arquivos gerados pelo sistema de visão do
laboratório LÍDER [52] contendo características
de figuras aprendidas pelo mesmo e possíveis de
serem reconhecidas ou localizadas por comandos
Z3> -234.
da linguagem LIPRI em tempo de execução.
Uma vez criado o arquivo objeto em formato hexade
^ cimal (B:ARQDOUSU.HEX) pelo compilador LIPRI, ele pode ser
"Z diretamente executado pelo com.putador do robô, como mostra
:j a figura 5.3.
zz
Inicialmente o arquivo objeto do programa do usuá
rio deve ser carregado na memória de tarefa do computador do
nível O. Isto é feito pela execução do programa MONITED no
nível 1 e do programa MONITOR no nível O como explicado nos
sub-itens 4.2.1 e 4.3.5. Uma vez carregado, executa-se o
programa de execução de tarefas (sub-item 4.2.4) e o robô
começará a executar a tarefa programada, podendo utilizar
os recursos de impressora e terminal de vídeo do nível 1 de
controle, seja para listagem de resultados da tarefa, seja
para entrada de dados em tempo de' execução.
'O
" -y
Quando os comandos de processamento de imagem ti
verem sido utilizados pelo usuário no seu programa fonte,
_ deve-se então, ao ser ativado o programa objeto no nível O
_ de controle, executar o programa de processamento de imagens
correspondente no nível 1 de controle, e então os arquivos
de figuras podem ser utilizados seja para reconhecimento de
O imagens, localização de peças, aprendizado de novas figu
'Z ras ou inspeção de peças.
^ Assim, com esta configuração de sistema, podemos,
^ através de comandos da linguagem LIPRI, utilizar todos os
recursos disponíveis do laboratório LÍDER, de uma maneira
—^ fácil, eficiente e de rápida alteração para novas tarefas.
~z
ZZ
'Z
Z)
-Z/
o O
5 N Z
2 O
O o
o 1-S
to > UJ
.235,
to
LU
5 => s
o
Fig. 5.3 - Execução de um programa objeto criado
pelo compilador LIPRI na configuração
atual do laboratório LÍDER.
.236.
Para descrevermos a sintaxe do programa, das de
clarações e dos comandos, utilizaremos a meta-linguagem BNF
-y ("Backus-Naur Normal Form") sendo que exemplos de cada de
Q claração e comandos serão mostrados no decorrer das descr_i
2J ções.
-O Neste Ítem nos deteremos na sintaxe do programa
escrito em LIPRI, e nos dois itens seguintes apresentaremos
detalhadamente a sintaxe e funcionalidade de cada uma das
y declarações e comandos da linguagem. Exemplos de programas
;Q completos e funcionais escritos em LIPRI, serão mostrados
no Apêndice III deste trabalho.
- Estrutura Sintática do programa:
<programa>::=BEGIN <conjunto de declarações> <con
^ junto de comandos>END.
O
<conjunto de declarações> : : =<declaração> |
< dec laraçãox con junto
de declarações>
<conjunto de comandos>::=<linha de comando>|
<linha de comando <con
junto de comandos>
5.2.2 - Sintaxe dos programas em JLIPRI
"""^ 'A sintaxe dos progran-ias escritos em LIPRI é sem£
'""•Zl Ihante à sintaxe dos programas escritos em linguagens estru
turadas tais como PASCAL e ALGOL, tendo as declarações de to
dos os objetos da linguagem apresentadas no começo do pr_o
grama e em seguida os comandos de processamento.
.237,
<linha de comando>::=<comando>|
'"" < label> : < comando>
< comentário
-y
O
O
Zj
^i
. — y
<declaração::=<declaração de variável de pro
cess.>I
<declaração de entidade geom£
trica> I
<declaração de procedimento|
•jí <comentário>
—ZZi <comando>: : =<comando de controle de processamen
to> I <comando de linhas de sincronismo|
<comando de atribuição|
<comando de movimentação do robô>|
<comando de entrada e saída> |
!y <comando de visão |
<comando de controle interrupção
<declaração de variável de process.>::= <declara
ção BYTE>I *
<declaração WORD>|
<declaração BOOLEAN>|
<declaração STRINO i
<declaração ARRAY>|
^ <declaração FILE>|
^ • <declaração LABEL>
-- <declaração de entidade geométrica> : : =<declaração
'ZZ POINT>|
<declaração LINE>|
<declaração CIRCLE>|
<declaração TRAJECT>|
<declaração FIGURE>
•-• .238,
<declaração de procedimento>::=<declaração
PROCEDURE>I
<declaração INTERRUPT
PROCEDURE> I
-y <declaração TASK>
<comando de controle de processamento>::=<comando
GO T0>| =3
<comando IF>|
<comando FOR>|
"- <comando WHILE> |
:Q <comando PROCEDURE>|
<comando TASK>|
<comando RETURN>|
<comando WAIT>|
<coniando PAUSE> |
<comando STOP>|
<comando KALT>|
<comando BEGIN>
'Z
"Z
z
"Z
z
".Z
'Z
<comando de linhas de sincronismo>::=<comando
SET>I *
<comando RESET>|
<comando INPUT>|
Z <comando OUTPUT> i
<comando de atrlbuição>::=<comando de atribuição
arltmética>|
<comando de atribuição
booleana>
.239.
<comando de movimentação do robo>::= <comando
-Z MOVE>I
. < comando HOME> | -
<comando FOLLOW>|
' <comando APPROACH> |
<comando DEPART>|
_ <comando CLOSE>|
~^ <comando OPEN>[
'"• <comando SPEED> |
ZO <comando INTERPOLATE>
—¿y
^ <comando de entrada e saída>::=<comando DISPLAY>|
<comando READ> |
<comando PRINT> •
<comando de visão> : : =<comando FIND> |
C <comando LEARN>|
<comando REC0GI\1IZE> i
•• <comando INSPECT>
, <comando de interrupção> : :-<comando EI> |
^ <comando DI>*
. -a
Z <label>::=<identificador>
<identificador>::=<letra>I<letra><continuação do
identificador>
Para esta linguagem o tamanho do identificador s£
rá limitado em oito caracteres, sendo outros, se houver,
ignorados.
^.J^ <continuação do identif icador> :: =<letra> I <número>
<letra>::=A|BlC|. . . |Z
[;,"_T,,y
' "y
"y :" 'y .y
-.y
.240.
'•-S <constante sem sinal> : : =<número> |
<número><constante sem
sinal>
<número real>::=<parte inteira>.<parte fraciona
ria>
ZZ
-Z
Zj
<parte inteira> : : =<constante sem sinal>
~y
:::: Q
' Z
-y Será considerado comentário qualquer caracter até
: Z o final do registro.
<parte fracionária>::=<constante sem sinal>
<comientário>: :=%<texto
A seguir serão detalhados cada um dos comandos e
das declarações especificados acima.
5.3 - DECLARAÇÃO DA LlfíGíIAGEM LIPRI
Como visto no item acima as declarações da lingua
gem LIPRI podem ser divididas em três grupos:
- Declarações de variáveis de processamento.
- Declarações de entidades geométricas.
- Declarações de procedimentos.
A sintaxe e a finalidade de cada uma destas decla
rações estão mostradas nos sub-itens a seguir.
<número>::=0 i 1|2| ...|9
.241
5.3.1 - Beclairações das variá-weis de processamento
5.3.1.1 - Beclaração BYTE
<declaração BYTE>::=BYTE <lista de identificado
res> ;
<lista de identificadores>::=<identificador>|
Z <identificador>,<lis
Z ta de identificado
— res>
• V
Exenplos: BYTE Bl ;
BYTE B2,A12345,BITE;
-0
Um byte é uma variável de processamento inteira
cujo valor pode estar contido entre -128 e +127, sendo que
se desejarmos uma variável inteira fora destes limites ela
deverá ser declarada como V/ORD. Um byte ocupa fisicamente
uma posição de memória num total de 8 bits.
*
5.3.1.2 - Beclaração ¥ORB
<declaração WORD> ::-V/ORD <lista de identificado
res> ;
Exemplos: WORD Wl;
WORD W34567,PALAVR,A;
z
Zj Esta declaração define uma variável inteira ocu
pando dois bytes de memória num total de 16 bits, podendo
seu valor estar compreendido entre -32568 e +32567.
Z) .242.
Exemplos: BOOI.EAN FLAG;
BOOLEAN FLAGl,STATUS,READY;
-- xdeclaração BOOLEAN >::-BOOLEAN <lista de identif!
cadores> ;
"'"- A finalidade desta declaração é definir uma varia
vel lógica podendo assumir dois valores: VERDADEIRO e FAL
SO. Esta variável ocupa fisicamiente um byte de memória, sen
-Q do que o valor considerado como FALSO é o valor G e o VER
DADEIRO é qualquer valor diferente de O.
Q
Z 5.3.1.4- Declaração STRDíG
;j <declaração STRING>::-STRING <lista de strings>;
_ <lista de strings> ::-< identif icador de string> |
<identificador de string>,
<llsta de stringsx
O <identificador de string>::-<identificador>
'<texto>'
Zj
<texto>::= í qualquer seqüência de caracteres ex
ceto '}
O Exemplos: STRING MENS'ERRO DE EXECUÇÃO';
:0 STRING MENSl'ERROl',
MENS2'ERR0 NO CIRCUITO DE POS^
ÇAO' ;
O objetivo desta declaração é associar um identi
C O M : S G ; ^ O Í . A C O L Z Í Í E R G I A N U C L E A R / S P r:¡ r' r^.l
5.3.1.3 - Declaração EOOL:
.243.
ficador a urna seqüência de caracteres na memória. Um identi_
ficador representado desta maneira ocupa na memória do pro
cassador do robô o número de caracteres mais um de bytes de
memória.
5.3.1.5 - Beclaração AHJRAY
<declaração ARRAY>::=ARRAY <lista de identifica
dores de array> ;
: Q .
<lista de identificadores de array>::=<identifica
dor de array> |
<identificador de array>,
<lista de identificadores de
array>
V <identificador de array>::=<identificador>(<dimen
^ são>)<tipo do array>
_ , <dimensão>::= {número inteiro maior do que O}
<tipo de array>::=BYTElWORD IBOOLEAN
J Exemplos: ARRAY A(9) BYTE;
ARRAY Bl(45) BYTE,PALAVR(10) WORD,
FLAGS(5) BOOLEAN;
Um elemento declarado desta maneira é entendido
como uma matriz de uma dimensão de elementos correspondentes
ao <tipo de array> especificado na declaração. O número de
elementos é o valor de <dimensão> mais um, sendo que o pri^
meiro elemento da matriz é endereçado com O e o último
com o valor de <dimensão>.
--7, .244.
O número de posições de memória ocupadas pela ma
triz dependerá do seu tipo, sendo que se for uma m.atriz de
'Z bytes ou de variáveis booleanas, ocupará tantos bytes quan
2> to for o número de elementos e se for do tipo WORD ocupará
^ duas vezes o número de elementos em bytes de memória.
—
O armazenamento da matriz na memória do robô é
^ feito de modo sequencial sendo a primeira posição ocupada
^ pelo elemento O e a última pelo último elemento da matriz.
O -j 5.3.1.6- Beclaração FILE
o
<declaração FILE>::=FILE <lista de identifie. de
arquivos>;
O <lista de identifie, de arquivos>::= <identifica
2) dor de arquivo>|
<ldentificador de arquivo>,
<lista de identifie, de ar
^ quivo> *
Z <identificador de arquivo>::=<identificador>•
V <especificação do ar
Q quivo>'
Zj ^ <especificação do arquivo: : = <identif icador>. <es
pecificação do tipo>
<especificação do tipo>::= { identificador com
O três caracteres}
Exemplos: FILE FILEI'ARQUI.DAD',ENTGEO•FIGS.APR';
^ FILE MEUFIL'ARQUIl.DAD' ,PONTOS
'PONTOS.COR •;.
.245.
Esta declaração associa um identificador a um
'• arquivo do sistema operacional do computador do nível 1. Es
O - te arquivo pode conter coordenadas de pontos ou figuras pro
•^ cessadas pelo sistema de visão do nível 1.
Os formatos dos dados armazenados nestes arqui
vos serão apresentados nas declarações correspondentes a ca
da uma das figuras possíveis de existirem no arquivo. A or
dem em que estas figuras e entidades geométricas estão arma
'Z zonadas no arquivo é irrelevante.
Se durante a compilação do programa do usuário
for especificada uma entidade geométrica em um arquivo e se
o arquivo não existir ou se a entidade não estiver no arqui^
vo especificado uma mensagem de erro será enviada.
Tantas entidades quanto necessário podem estar ar
mazenadas em um mesmo arquivo, e caso existam duas entida
des com o mesmo nome, a primeira que for encontrada será
considerada, sendo a outra desprezada.
A extensão destes arquivos definidos nestas decla
rações pode ser de qualquer tipo, sendo que o formato do
arquivo criado pelo programa MONITED, monitor e editor de
figuras é compatível com o formato exigido pelo compilador,
sendo que a sua extensão é .APR.
Os arquivos serão apenas lidos pelo compilador
LIPRI durante o processo de compilação, sendo que arquivos
protegidos podem ser colocados como entradas para o compila
dor e declarados da maneira vista acima.
:'z^ . V. 2 4 6 .
5 . 3 . 1 . 7 - D e c l a r - a ç ã o L A B E L
^ <declaração LABEL>::=LABEL <lista de identifica
dores de label>:
^ y <lista de identificadores de label>::=<identifica
dor de label>|
<identificador de label>,
<lista de identificadores de
label>
<identificador de label>::=<identificador>
Exemplos: LABEL LI;
LABEL LOOP,REPETE,VOLTA;
A finalidade desta declaração é associar um iden
tificador a um determinado ponto do programa do usuário sen
do que desvios podem ser realizados para aquele ponto atra
vés de comandos GO TO. Este identificador definido desta
maneira pode estar associado a qualquer comando em qualquer
ponto do programa dp usuário, sendo que apenas um comando d£
ve estar associado ao identificador.
A definição de rótulos existe apenas em tempo de
compilação, não ocupando posições de memória..
5 . 3 . 2 - B e c l a r a ç õ e s d e e n t i d a d e s g e o e é t r i c a s
5 . 3 . 2 . 1 - D e c l a r a ç ã o
<declaração POINT>::=POINT <lista de especifica
ção de pontos>;
zO.
-Z <especificação de ponto>::=<lista de identifica
dores de ponto
IN<identificador de
'--Zi arquivo
ZZ-Zi
— < l i s t a de identificadores de ponto: := <identifi.
cador de ponto> i
<identificador de ponto>,
<lista de identifleaderes de
^ , ponto>
ZZ <identif icador de p o n t o ::-<identificador>
Exemplos: FOINT PI,P2,PEGA IN MEUFIL;
POINT PONTOORG IN PONTOS;
t
Esta declaração tem por finalidade associar um
identificador a um determinado ponto no espaço. As coordena
das deste ponto estão definidas no arquivo associado ao pon
to em sua declaração. Estas coordenadas podem ser de dois
tipo: coordenadas de junção e coordenadas cartesianas.
O formato de uma definição de um ponto no espaço
em um determinado arquivo pode ser:
POINT
<nome do ponto
JUNC
<mota> <motb> <motc> <motd> <mote> <motf>
"O •«'lista de especificação de pontos>::= <especifica
ção de ponto |
••'••O • <especif icação de ponto> ,
.'Z <lista de especificação de pontos>
.247.
. 248.
-Z para um ponto definido em coordenadas de junção, onde os
valores <mota> até <motf> são os valores de coordenadas de
motor para aquele ponto em questão. Ë este formato de ponto
que é criado pelo programa editor de figuras.
O outro formato, corresponde a um ponto definido
em coordenadas cartesianas sendo o seguinte:
POINT
ZZj <nome do ponto
CART
<coord x> <coord y> <coord z> <ang p> <ang r>
<mão>
onde <coord x> <coord y> e <coord 2> são os valores reais das
coordenadas x, y e z do ponto definido, <ang p> e <ang r >
ZJ são os valores dos ângulos de orientação da mão-ferramenta
~ no ponto definido e <mão> é o valor de abertura da mão na
quele ponto.
5.3.2.2 - Declaração LIME *
<declaração LINE>::=LINE <lista de especificação
de retas>;
<lista de especificação de retas>::= <especifica
ção de reta>|
<especificação de reta>,
<lista de especificação
de retas>
<especificação de reta>::=<lista de identificado
res de retas>
IN<identificador de arqui
vo>
. 249.
•y <identificador de reta>: :=<identificador>
Exemplos: LINE L1,L2,L3,L89 IN MEUFIL;
Z LINE RETA IN FILl;
Esta declaração define um ou mais segmentos de
retas no espaço de trabalho do robô. Um segmento de reta
é especificado por dois pontos não coincidentes no espaço,
sendo estes dois pontos definidos no arquivo associado à de
claração de cada segmento de reta.
O formato dos segmentos de retas definidos em um
dado arquivo pode ser visto de duas maneiras a seguir apre
sentadas:
4
- Formato em coordenadas de junção:
LINE
<nome da linha>
JUNC
<motal> <motbl> <motcl> <motdl> <motel> <motfl>
<niota2> <motb2> <motc2> <motd2> <mote2> <motf2>
- Formato em coordenadas cartesianas:
LINE
<nome da linha>
CART
<coord xl> <coord yl> <coord zl> <ang pl>
<ang rl> <mãol>
<lista de identificadores de retas>::= <identifi
cador de reta>|
'Z " <identificador de reta>,
3 <lista de identificadores
de retas>
-y
.250.
<coord x2> <coord y2> <coord z2> <ang p2>
<ang r2> <mão2>
onde os símbolos possuem os mesmo significados dados na de_
claração POINT só que um para cada ponto associado ao se£
mento de reta definido pela declaração LINE.
O .sentido de percurso pela mão-ferramenta do robô
seguindo o segmento de reta é definido sempre do primeiro
ponto especificado para o segundo, a não ser que tenha si
do especificado um movimento de trás para frente como será
visto no comando FOLLOW.
5.3.2.3 - Beclaraição CIRCLE
<declaração CIRCLE> ::-CIRCLE <lista de especif
ficação de circulos>;
<lista de especificação de círculõs>::- <especifi_
cação de círculo>|
<especificação de círculo,
<lista de especificação de
círculos>
<especificação de círculo>::=<lista de ident. de
círculos>
IN<identificador de arqu_i
vo>
<lista de ident. de círculos>::= < identificador
de círculo>|
<ident if icador de círculo,
<lista de ident. de círcu
los>
.251.
Exemplos: CIRCLE Cl IN FILl;
CIRCLE C1,CIRC,C2 IN MEUFIL,C3 IN FILl;
A definição de um segmento de círculo a ser Eegui_
do pelo robô é idêntica à definição do segmento de reta só
que para o círculo são necessários três pontos do espaço
não alinhados.
Os formatos para uma definição do círculo em um
dado arquivo são os seguintes:
- Formato em coordenadas de junção:
CIRCLE
<nome do círculo
JUNC
<motal> <motbl> <motcl> <motdl> <motel> <motfl>
<mota2> <motb2> <motc2> <motd2> <m.ote2> <motf2>
<mota3> <motb3> <motc3> <motd3> <mote3> <motf3>
- Formato em coordenadas cartesianas:
*
CIRCLE
<nome do círculo>
CART
<coord xl> <coord yl> <coord zl> <ang pl>
<ang rl> <mãol>
<coord x2> <coord y2> <coord z2> <ang p2>
<ang r2> <mão2>
<coord x3> <coord y3> <coord z3> <ang p3>
<ang r3> <mão 3>
O sentido de percurso do segmento de círculo é
sempre do primeiro ponto, passando pelo segundo e terminan
do no terceiro ponto a não ser que o sentido inverso tenha
sido especificado.
.252.
5.3.2.4 - Declairação TRAJECT
<declaração TRAJECT>::-TRAJECT <listade espe
cificação de trajetórias>;
<lista de especificação de trajetórias>::= <esp£
cificação de trajetória>|
<eEpecificação de trajeto
ria>,<lista de especifica
ção de trajetória>
<especificação de trajetória>::=<lista de ident.
de trajetória> IN
<identificador de arquivo
<lista de ident. de trajetória>::-<ident. de tra
jetória>|
<ident. de trajetória>,<li£
ta de ident. de trajeto
ria>
<ident. de trajetória>::=<identificador> («número
de pontos>)
Exemplos: TRAJECT CAMINH(IO) IN DADOS;
TRAJECT Tl(8),T2(4) ,T3(2) IN DADOS;
TRAJECT Tl(8),T2(56),T3(100)
IN DAD0S,DIR1(6),RET(5)
IN ARQUI;
Esta declaração tem por finalidade associar um
identificador a um conjunto de pontos no espaço considera
dos como uma trajetória a ser seguida pelo robô. Estes pon
tos podem ser definidos tanto em coordenadas de junção como
em coordenadas cartesianas, sendo a especificação de uma
^ .253.
-V
- Form.ato em coordenadas de junção:
TRAJECT
<nome da trajetória>
<número de pontos n da trajetória>
O JUNC
<miotal> <motbl> <motcl> <motdl> <motel> <motfl>
I I I I I I I I I I I I
I I I I I I I I I I I I
<motan> <motbn> <motcn> <motdn> <moten> <motfn>-
- Formato em coordenadas cartesianas:
TPJVJECT
<nome da trajetória>
<número de pontos n da trajetória>
CART
<coord xl>.<coord yl> .<coord zl> <ang pl>,
<ang rl> <mãol> I I I I 11 I I
I I I I I I I I
I I I I I I I I
<coord xn> <coord yn> <coord zn> <ang pn>
<ang rn> <mãon>
O sentido de percurso da trajetória especificada
será sempre do primeiro para o último ponto especificado na
definição da trajetória no arquivo, sendo que se no comando
FOLLOW for especificado o sentido inverso, o robó percorr£
rá a trajetória do último ponto especificado para o primei^
ro.
•-^ trajetória em um determinado arquivo feita em um dos dois
O formatos abaixo:
:3
.?54.
o número de pontos de uma trajetória tem que ser
"fZ-Z sempre maior do que O, não possuindo um limite superior. A
Zj --. única restrição é ter-se o mesmo número de pontos definidos
na declaração, na especificação da trajetória no arquivo.
ZZ
.y
7.-Z
5.3.2.5 - Beclstração FIGÜíRE
-Vv <declaração FIGURE>::=FIGURE <lista de identifica
-'7j dores de f iguras> ;
<lista de identificadores de figuras> : : =<identifi_
cador de figura>| <ident_i
ficador de figura>, <lista
de identificadores de fi_
J guras>
<identificador de figura>::=<identificador> ±N
<identificador de arquivo
Exemplos: FIGURE FIGURA IN MINHFIG;
FIGURE FIGURA IN MINHFIG,CAIXA^IN
T-v FIGCAIXA;
Esta declaração define uma figura possível de ser
reconhecida pelo processador de imagens do nível 1, sendo
que apenas uma figura pode ser definida por arquivo especi_
ficado.
O formato da definição da figura é gerado automa
ticamente pelo processador de imagens, sendo inacessível ao
usuário. Maiores informações quanto a este arquivo de figu
ras podem ser encontradas em [52].
.255,
ZZ
'Z
'Zt
"Z
5.3.3 - Declarações de procedisentos
5.3.3.1 - Declaração FSOCEBURE
<declaração PROCEDURE>::-PROCEDURE <nome da
procedurexcorpo da proce
dure>;
w <noine da procedure> : : = <ldentif icador>
<corpo da procedure>::=BEGIN<conjunto de coman
dos>END;
Exemplos: PROCEDURE MOVEPl;
BEGIN
IF FLAG THEN Bl:-10;
MOVE PI;
END;
^ Esta declaração tem por objetivo definir uma roti_
na possível de ser chamada em qualquer ponto do prdgrama do
usuário .
Na implementação corrente da linguagem LIPRI os
procedimentos não admitem passagem de parâmetros, utilizan
^ do apenas variáveis globais. Outra restrição é que os pro
cedimentos devem ser definidos após as definições . anterio
res, sendo as últimas declarações do programa.
Z Qualquer comando dos especificados no próximo
Z item poderá ser utilizado no <conjunto de comandos> do pro
" cedimento.
.256.
•Z
Zj
•y
<número da interrupção::=0|1|2|3I4|5
3 Exemplos: INTERRUPT PROCEDURE 3;.
-5 BEGIN
Bl:=10;
END;
O objetivo desta declaração e associar um procedo^
mento a uma linha de interrupção do controlador do robô.
Z Sempre que a interrupção ocorrer e ela estiver habilitada,
a execução do programa é desviada para o procedimento ass£
ciado àquela interrupção. Se uma interrupção estiver habili_
tada mas nenhum procedimento for associado a ela, quando
ela ocorrer nada acontecerá, prosseguindo a execução do pr£
grama normalmente. *
Zà
5.3.3.3 - Declaração TASK
<declaração TASK>::=TASK <lista de identificad£
res de tarefa>;
<lista de identificadores de tarefa>::=: <identifj^
cador de tarefa> 1 <ldentifj^
- cador de tarefa>,<lista de
^ identificadores de tarefa>
5.3.3.2 - Beclaração IfüTERRUPT P5íOCED)lIIIKE
:ZZi <declaração INTERRUPT PROCEDURE>::-INTERRUPT
PROCEDURE <número da
interrupção> <corpo da
procedure>;
]Z3
:zZ>
-y
f y
"•-••
. 257.
<identif icador de taref a >:: = <identif icador > IN
<identif icador de arquivo >
ZZO Exemplos: TASK LIMPB IN LIMPBT;
TASK Tl IN rUl,T2 IN PEG;
Esta declaração tem por objetivo definir uma tare
fa em um determinado arquivo, tarefa esta já diretamente
executável pelo controlador do robô, ou seja, criada pelo
'3 programa de aprendizado do robô ou pela compilação de um ar
quivo fonte pelo compilador LIPRI.
Sempre que um comando especificando uma determina
da tarefa for executado, a execução da tarefa corrente é
terminada e a nova tarefa é carregada na memória de tarefa
do robô e o controle do mesmo passa para os comandos compo
. n e n t e s da nova tarefa.
5.4 - COimif-MXíS DA LlfüCTAGEM LIPMI
Como visto no sub-item 5.2.2, os comandol exi£
tentes na linguagem LIPRI podem ser divididos em sete gru
y pos vistos a seguir:
- Comandos de controle de processamenteo.
- Comandos de linhas de sincronismo.
- Comandos de atribuição.
•\'Z - Comandos de movimentação do robô,
- Comandos de entrada e saída.
zZ
•y
'Z
ZZ
.258,
..:.Z¿ - Comandos de interrupção.
Todos os comandos possíveis da linguagem LIPRI s£
rão detalhados tanto no ponto de vista de sintaxe como de
funcionalidade nos sub-itens a seguir.
^ 5.4.1 - Conaandos ds controle de processainento
5 . 4 . 1 . 1 - Coísando GO TO
•y
^ <comando GO T0>: :=G0 TO <identificador de label>;
Z Exemplos: GO TO LABEL;
- GO TO LI;
_ Este comando tem por objetivo desviar incondiclo
na,lmente o controle da execução da tarefa para o comando
'"" associado ao <identif icador de label> . Caso nenhum^ comando
tenha sido associado ao rótulo, uma mensagem de erro é en
"Zé viada para o arquivo de listagem.
5.4.1.2 - C o s a n d o IF
<comando IF> : :=IF <condição> THEN <comando>;|
Z IF <condição> THEN <comando> ELSE
.t <comando> ;
^ <condição>: :=<expressão booleana>
- Comandos de visão.
.259,
ZZ
'Z
"Z
' -Z
-y
• y
'Z
..-ii
Este comando tem o mesmo sentido do comando IF
das linguagens estruturadas.
' -y 5.4.1.3- CoHiando FOR
-y
<comando FOR>::=FOR <variável for>:=<lista do
for> DO <comando>;
<variável for>::=<identificador de byte>|
"•• <identificador de worda
<lista do for>::=<expressão aritméticaxparte de
iteração
<parte de iteração>::=T0 <expressão aritmética>I
DOWNTO <expressão
ZZ-^ aritmética>
Exemplos: FOR A:=B+C TO K DO BEGIN
D:=C+1;
FLAG:=TRUE;
END;
^ FOR A:-50 DOV/NTO 30 DO LISTA(A):=0;
'y
•'•'y
"y
•4
Exemplos: IF FLAG THEN MOVE PONTO;
IF •A+B<=20' THEN GO TO LI ELSE FOLLOW
. CAMINH;
IF IN(7) THEN BEGIN
APPROACH P1:100.5,DZ;
MOVE STRAIGHT PEGA TO
P3 > 80;
WAIT 20;
Q CLOSE 21;
:Q END; .
"•Zé
Zé
•Z
Zé
'. Zé
.260.
Este comando tem a mesma finalidade dos comandos
FOR das linguagens estruturadas.
5.4.1.4 - Cosaando l-JHILE
<comando WHILE>::=WHILE <expressao booleana> DO
<comando>:
^ Exemplos: WHILE FLAG DO GO TO LABELl;
WHILE 'A =100' DO TASKl;
WHILE NOT FLAG DO BEGIN
Bl:=20;
APPROACH P0NT:50.5QDX
'Zé > 60;
FLAG:=IN(5) ;
END;
A finalidade deste comando é idêntica à do coman
do WHILE das linguagens estruturadas.
5.4.1.5 - Conando PEOCEBÜBE
<comando PROCEDURE>::=<nome da procedure>;
Exemplos: MOVEPl;
SOMA;
O objetivo deste comando é desviar o controle do
processamento para a rotina definida pelo <nome da procedu
re> . Esta rotina deve estar declarada em uma declaração
PROCEDURE anterior, caso contrário há um erro de compila
ção.
•
"Z
.261.
5.4.1.6 - CoEsando TASK
•<comando TASK> :: =<identif icador de task> ;
Exemplos: LIMPBT;
T2;
Tl;
O objetivo deste comando é ativar o programa asso
ciado ao <identificador de task>. Este programa deve estar
definido em uma declaração TASK anterior. Se o arquivo cor
respondente especificado na declaração TASK não for encon
trado, uma mensagem de erro é enviada e a execução do pro
grama é abortada.
Este comando termina a execução do programa que
o ativou, no ponto da ativação, e destrói todas as varia veis utilizadas pelo programa anterior, começando uma nova
tax^efa especificada pelo comando.
5.4.1.7 - CoMaimdo METUMM. *
<comando RETURN>::-RETURN;
O objetivo deste comando é interrom.per a execução
de um procedimento ou de um procedimento de interrupção
retornando o controle para o ponto do programa imediatamen
te posterior ao ponto onde ocorreu o desvio para o procedi
mento.
5.4.1.8 - CcsEiído ¥AIT
<comando WAIT>::=WAIT <condição>;
^ . 2 6 2 .
•y
•é
5.4.1.9 - Cc-sando PAUSE
<comando PAUSE>::-PAUSE ; i
PAUSE <identificador de
string>;
Exemplos: PAUSE;
PAUSE ERROl;
O objetivo deste comando é suspender a execução
do programa até qua a tecla C (valor 43H) seja recebida p£
Ia entrada serial correspondente ao monitor.
Se um <identificador de strlng> for especificado
no comando, antes da execução ser suspensa, o conjunto de
caracteres associado ao <identificador de string> é enviado
pela saída serial correspondente ao programa monitor.
CQziz.o z- Z N E R G I A W U C L E A R / S P
-• <condj.ção> ::=<número de segundos> |
1:3 <expressão booleana>
--j Exemplos: W A I T 2 0 ;
, W A I T IN(4)=T'RUE,
W A I T I N ( 6 ) = I N ( 7 ) OR FL A G ;
O objetivo deste comando é suspender a execução
r.3 do programa até que a <condição> ocorra. Esta <condição> p£
de ser ou um determinado número de segundos especificado por
— ^ <ni3mero de segundos> ou o controle é suspenso até que a ex
, pressão <expressão booleana> assuma o valor verdadeiro.
.263.
'Zé
ZJ
Zé
z z^
-Z
5.4.1.10 - Ccaianiíio STi
<comando STOP> : : =STOP; |
STOP <identificador de string>;
Exemplos: STOP;
STOP ERROl;
-V O objetivo deste comando é terminar a execução
Q da tarefa, retornando o controle do processador ao programa
de execução de tarefas.
Se um <identificador de string> estiver especifi^
cado no comando, o conjunto de caracteres associado àquele
<identificador de string> é enviado pela saída serial cor
respondente ao programa monitor.
z 5.4.1.11 - Cesando HALT
<comando HALT>::-HALT; |
HALT <identif icador de s-«ring>;
Exemplos: HALT;
HALT ERROl;
O objetivo deste comando é suspender a execução
da tarefa até que uma interrupção habilitada ocorra.
Se um <identificador de string> estiver especi
ficado no comando, o conjunto de caracteres correspondente
àquele <identificador de string>, definido na sua declara
ção, é enviado para a saída serial correspondente ao progra
ma monitor.
.264
z zZ z-Zé
ZiZZ
'Z
..V
ZZé
"O
Este comando tem por finalidade fazer com que um conjunto de comandos seja considerado como um comando, ten do o mesmo sentido do comando BEGIN das maiorias das lingua gens estruturadas.
5.4.2 - Coaandos de u n h a s de sincronisisio
5.4.2.1 - CO'Siando SET
4 <comando SET>::=SET <identificador de linha de
saida>;
<identificador de linha de saída>::=OUT(<espec.de saída>)
Z <espec. de saída>::-O|1|2|3|4!5|6|7
Exemplos: SET OUT(O); SET 0UT(7);
O objetivo deste comando é colocar um valor cor respondente ao nível lógico 1 (VERDADEIRO) na linha de saí
-::zO , 5.4.1.12 - Cesando BEGIEI
\ <comando BEGIN>::=BEGIN <conjunto de comandos> 1-Q END;
Exemplos: BEGIN '-'• A: =1500*1 + 45; Z-ZJ B:-600/3*LIST;
ZZ IF 'A>B' THEN B:=0; END;
.265.
Z^
-O
-
"Z
"Z
"ZZ
Z"Zi*
"•ZZ
5.4.2.2 - CGsando KESET zD
zZ
<comando RESET>::=RESET <identificador de linha
""^ de saída>;
ZZZ
Exemplos: RESET 0UT(3);
RESET 0UT(5) ;
Este comando tem a finalidade oposta à do comando
anterior, qual seja, a de colocar o nível lógico O (FALSO)
na linha de saída especificada pelo comando.
j 5.4.2.3 - Cceaindo O Í F U T
- -<comando 1NPUT>::-INPUT <variável aritmética>;
Exemplos: INPUT Bl;
INPUT Q;
INPUT VET(3);
O objetivo deste comando é ler o valor de todas
as entradas associadas às linhas de sincronismo colocando o
valor em uma variável aritmética.
Z--:y4 As entradas são colocadas em um byte com o seguln
-ZZZ te formato:
MSB LSB
IN(7) IN(6) IN(5) IN(4) IN(3) IN(2) IN(l) IN(0)
'' da especificada pelo < identificador de linha de saída>, dei^
ZZ xando inalteradas as outras linhas.
:5) . ^
.266.
Se uma variável que ocupe dois bytes for especi_
ficada neste comando, o valor das entradas serão colocadas
no byte rnenos significativo com O colocado no byte mais sig
niflcativo.
5.4.2.4 - CoEiando 0«TPOT
<comando OUTPUT>::=OUTPUT <variável aritmêtica>;
Exemplos: OUTPUTBITE;
OUTPUT DADOA; •
O objetivo deste comando é colocar um byte especif
ficado pelo parâmetro <variável aritmética> em todas as li_
nhas de saída de sincronismo do robô.
A configuração das linhas de saída, assumida por
este comando é a seguinte:
MSB LSB
0UT(7) 0UT(6) 0UT(5) 0UT(4) 0UT(3) 0UT(2) OUT(l) Ol]ff(0)
Se uma variável aritmética que ocupe dois bytes
for colocada como parâmetro deste comando, somente o byte
menos significativo será utilizado para programar as linhas
de saída de sincronismo.
5.4.3 - Coisanidos de atribuição
5.4.3.1 - Cosando de atribuição aritmética
<atribuição aritmética>::=<variável,aritmética>:=
<expressão aritmética>;
.267.
<expressão aritmética> : : =<terino> |
••• <operador unárioxtermo> |
, <expressão aritmética> <op£
rador de soma><termo>
_ <termo>::=<fator>I
<termo><operador de muitiplicação>
<fator>
<fator>::=<constante sem sinal>|
<varlável arltmética>|
(<expressão aritmética>)
Zi
'Z
<variável aritmétlca>::=<ident. de byte>|
<ident. de word>|
<ldent. de array byt.e>
(<expressão aritrratica > ) |
<ident. de array word>
(<expressão aritmética > )
<operador unário>::= -
<operador de soma>::=+|-
<operador de multiplicação>::=*| /
Exemplos: ARITl:=A+(D*E)/25;
AIT2:=BITE;
DADO:=-55;
EXEMP:=(AIT2*LIST(5));
O objetivo deste comando é colocar o valor resu_l
tante do cálculo da <expressão aritmética> na variável
aritmética definida por <variável aritmética>.
3
.268.
<expressão booleana>::=<termo booleano>¡
NOT <termo booleano |
<expressão booleanaxopera
dor ouxtermo booleano>
*
<operador o u > : : = 0 R | X 0 R
-.-4
"ZZi
.V
- ..--4
^
<termo booleano> : : =:<fator booleano> |
<termo booleanoxoperador e>
<fator booleano>
<operador e>::=AND¡=
Z <fator booleano>::=<variável booleana>|TRUE|
FALSE I
<identificador de linha de en
trada>|
(<expressão booleana>)|
Se o número de posições ocupadas pela variável
-Z aritmética for diferente do número de posições ocupadas
IQ pelo resultado da expressão aritmética o resultado da ex
;Q pressão é convertido para o tipo de variável a ser atribuí^
da, isto é, se o tipo da variável for WORD, e o resultado
_ for BYTE, monta-se uma palavra tipo WORD com o byte mais
_ significativo igual a zero e o menos significativo igual
ao valor da expressão. Se o tipo da variável for BYTE e o
••' resultado for do tipo V/ORD, armazena-se na variável apenas
o byte menos significativo do resultado da expressão.
_ 5.4.3.2- CoEaamdo de aitribuição booleana Zé
^ <atribuição booleana>::=<variável booleana>:=
<expressão booleana>;
•
.269.
'<expressão aritmética> <opera
dor de relaçãoxexpressão arit
mética>'
<variável booleana>::=<identificador booleano|
<ident.de array booleano
(<expressão aritmética>)
z^ <identificador de linha de entrada>::=IN (<espec.
de entrada>)
<espec. de entrada>::=0|1|213[4|5|617
zzZ <operador de relação: :=> | < | = | >= | <= |
o
z:Zé
Exemplos: B00L:=IN(4) AND FLAG XOR TRUE;
FLAG:='ARITl+56<=64';
BOOL:=NOT FLAG AND TRUE;
Este comando tem por finalidade atribuir o resul^
tado de uma <expressão booleana> à uma variável booleana da
da por <variável booleana>.
.•'.'"--•^ 5.4.4 - Cosaanidos de I B O V I weinitação do robô
Z" •••^
• ZZZ—_ 4
5.4.4,1 - CoEssndo MO¥E
<comando MOVE>::=<parte do comando move>;|
<parte do comando move> > <veloci
^ z. Z d a d o ;
<parte do comando move>::=MOVE <identificador de
ponto>1
zzz^
ZZZJ
.270.
^ MOVE * <identificador de
ZZ p o n t o I
•^j , MOVE STRAIGHT <identifica
-- dor de ponto> TO <ident2^
ficador de ponto>|
MOVE STRAIGHT * <identifi
cador de ponto> TO <identic
ficador de ponto> |
•V MOVE <identificador de
' Z • array word>|
MOVE * <identificador de
array word>|
MOVE <identificador de jun
^ ção> : =<expressão aritmét_i
ca>
Z^ <identif icador de junção ::-JUN(<espec . de junção )
^ <espec.de junção::=1|2|3I4|5|6
^ Exemplos: MOVE PI; (1)
^ . MOVE STRAIGHT PI TO P2; . . Gi2)
"Z MOVE JUN(2):=200+BYTl; (3)
MOVE * VET >80; (4)
MOVE ORIG >90; (5)
O objetivo deste comando é deslocar o robô para
um determinado ponto do espaço ou para uma seqüência calou
'* lada de pontos do espaço como será visto a seguir.
Se no comando MOVE definirmos o parâmetro opcÍ£
^ nal <velocidade>, a velocidade do movimento será a definida
por este parâmetro; caso contrário será utilizada a veloci_
dade definida pelo último comando SPEED de compilação e ca
^ so nenhum tenha sido executado, uma velocidade de 20 será
.271.
considerada. O parâmetro <velocic3ade> corresponde à percen
^ tagem da velocidade máxima com que será feito o movimento.
2^ o comando MOVE pode ser de dois tipos: um comando
— que faz com que o robô se desloque para um determinado pon
^ to, independentemente do ponto onde ele estiver; e um coman
^ do que faz com que o robô se desloque de um ponto a outro
ponto segundo uma determinada linha reta (MOVE STRAIGHT).
Z Para os comandos do primeiro tipo, podemos esp£
2, cificar o ponto para onde o robô irá se deslocar de três ma
— neiras diferentes. Na primeira maneira o ponto é especifica
do por um <identificador de ponto que deve ter sido decla
rado em uma declaração POINT anterior e cujas coordenadas
devem estar definidas no arquivo associado à declaração
^ (exemplos 1 e 5 ) .
2, Na segunda maneira, o ponto é definido pelos valo
— res dos elementos de um vetor do tipo WORD de seis elemen
tos, sendo estes valores considerados as coordenadas de mo
^ tor para aquele ponto, sendo, para o exemplo 2, considerado
VET(O) a coordenada do motor A e VET(5) a coordenada do mo
'•-- tor F.
.
Na terceira maneira, apenas um dos motores do ro
— bô é comandado para se deslocar para a coordenada de motor
^ dada pelo resultado da <expressão arltmética>, motor este
especificado pelo elementos JUN(<expec. de j u n ç ã o ) , como
mostrado no exemplo 3.
'Z Para o outro tipo de comando MOVE, o robô se de£
2J locará de um ponto, especificado pelo primeiro <identifica
dor de ponto> , para o ponto especificado pelo segundo
_ <identificador de ponto> segundo uma linha reta. Os pontos
intermediários são calculados pelo algoritmo de interpola
.272.
ção linear no espaço, sendo o número de pontos interpolados
entre os dois extremos igual ao.valor especificado pelo ú_l
timo comando- de compilação INTERPOLATE. Caso nenhum coman
do INTERPOLATE tenha sido entrado, o valor considerado se_
rá 1, ou seja, o compilador calculará apenas o ponto médio
entre os dois pontos especificados neste comando.
0 algoritmo de interpolação linear utilizado pelo
compilador para calcular os pontos a serem seguidos pelo
robô pode ser visto a seguir:
- Algoritmo de interpolação linear:
1 - Calculam-se as coordenadas cartesianas XI, Yl
Zl, X2, Y2, Z2 dos dois pontos especificados
no comando MOVE.
2 - Calcula-se DX=(X2-X1)/INT, DY=(Y2-Y1)/INT,
DZ-(Z2-Z1)/INT onde INT é número de "pontos de
finido pelo comando INTERPOLATE mais 1.
3 - Calcula-se a coordenada de junção parajt o pri^
meiro ponto correspondente a XI, Yl e Zl. V£
rifica se este ponto é atingível e se for g£
ra-se uma instrução de mover para aquele pon
to.
4 - Para 1=1 até INT faça:X=X1+I*DX.
Y=Y1+I*DY.
Z=Z1+I*DZ.
Transforme o ponto X, Y,
Z para coordenadas de
junção.
Verifique se é atingí_
vel.
'.ZJ
-ZZ.Zj
Z'Z'.'Z
:Zi
Zj
Zj
ZZ
.273,
5.4.4.2 - CoEãiamdo HOME
<comando HOME>::=HOME;
Exemplo: HOME;
Este comando tem por objetivo executar uma calj^
bração do robô. Ao terminar a execução deste comando, o ro
bô estará posicionado no seu ponto de origem.
••4
Se for, gera-se instru
ção para mover para o
ponto.
5 - Fim.
Desta forma, para o comando MOVE STRAIGHT, pontos
a serem interpolados são calculados com o algoritmo de in
terpolaçao linear mostrado acima.
A orientação da mão-ferramenta do robô é conside_
rada como a orientação definida pelo primeiro ponto do m£
vimento interpolado.
O parâmetro * em qualquer um destes comandos MOVE
significa que se deseja considerar no m.ovimento o valor es
pecificado na coordenada do ponto para o estado da mão - fer
ramenta do robô. Normalmente este parâmetro é utilizado quai
do o robô estiver equipado com uma mão-ferramenta do tipo
garra servo controlada. Se o * não for colocado, o movimen
t O ' s e r á considerado apenas para os motores de posicionamen
t o do robô. *
. 274. :ZZJ
5.4.4.3 - CoHiSndo FOtLOW
Z ^ '"• <comando FOLLOW >::=<espec. do follow >;| <espec.do follow> > <velocida de>;
< e E p e c . d o f o l l o w > : : - F O L L O W < i d e n t i f i c a d o r de ca m i n h o > I
•"--V FOLLOW < i d e n t i f i c a d o r d e c a
Zj m i n h o > BACK | FOLLOV/ * < i d e n t i f i c a d o r de ca
m i n h o > |
FOLLOW * < i d e n t i f i c a d o r de ca m i n h o >
BACK -y "Z
<identif icador de caminho >::= <identif icador de linha>|
<identificador de circulo>| <identificador de trajeto ria>
I Exemplos: FOLLOW * LINEl FOLLOW CIRCLES; FOLLOW * TRAJB FOLLOW CAMINH BACK >40;
0 objetivo deste comando é fazer com que o robô siga uma determinada figura geométrica.
Esta figura é definida pelo parâmetro <identifica dor de caminho >, podendo ser uma linha, um círculo ou uma trajetória.
A velocidade que o robô seguirá o caminho é deter
:zZZ .275.
• V
minada pelo parâmetro < velocidade > do comando ou pelo últi^
mo comando SPEED compilado.
,ZZ^
z^
Se o caminho for uma linha, será feita uma inter
polação linear entre os dois pontos extremos da linha. Se
for um círculo será feita uma interpolação circular e se
for uma trajetória, os movimentos serão interpolados em coor
denadas de junção entre os vários pontos da trajetória.
A orientação da mão-ferramenta será, para os dois
primeiros casos, a orientação especificada pelo primeiro
ponto do caminho. Para a trajetória, a orientação será a
de cada ponto componente da trajetória.
A interpolação circular executada para seguir um
determinado círculo é a seguinte: (sendo possíveis apenas
círculos no plano paralelo ao plano XY)
1 - Calcula as coordenadas X, Y e Z para os três
pontos que definem o círculo.
2 - Verifica se a coordenada Z é a mesma para t£
dos os pontos (círculos em planos paralelos
ao plano XY). Se não for, imprime erro e abor
ta a inteipolação.
3 - Determina as coordenadas do centro do
lo, Xc, Yc, Z e o raio r.
circu
...J 4 - Faz a translação dos pontos que definem o
círculo de forma a especificarem um círculo
com centro no eixo z.
5 - Calcula o ângulo Ai e Af referentes ao ponto
inicial do círculo e ac final, e a direção de
-V
.276.
5.4.4.4 - CcMamdo AFPROACH
<comando APPROACH>::=<parte do approach>;|
<parte do approach> > <vel£
cidade>;
deslocamento de Ai para Af dada pelo ângulo
do ponto intermediário Am.
6 - Calcula ANG=(Af-Ai)/(INT+1) onde INT é o núme
ro de pontos a serem interpolados.
7 - Para I-O até INT+1 faça:X=Xc+Rcos(Ai+I*ANG).
Y=Yc+Rsen(Ai+I*ANG).
Calcula as coordena
das de junção para o
ponto X, Y, Z.
Verifica se o ponto é
atingível. Se for g£
ra instrução para m£
ver para o ponto.
8 - Fim.
Se no comando FOLLOW for especificado o parâmetro
* as coordenadas especificadas para a mão-ferramenta do ro
bô,serão levadas em consideração para o movimento, tendo es
te parâmietro o mesmo sentido que ele tem no comanda MOVE.
:0
"J Se o parâmetro BACK for utilizado em um comando
'2 FOLLOW, isto fará com que o movimento do robô seja feito do
— último para o primeiro ponto de caminho especificado ou cal^
culado para o comando.
:z .211.
<parte do approach>::-APPROACH <identificador de
'^Z ponto: <distância> ,
-" <direção> |
•^ APPROACH <identificador de
ponto>=<identificador de •-y
ponto : <distância> , <dir£
ç ã o
<direção>::-DX|DY|DZ|-DX|-DY|-DZ
<distância>::=<número real>
Exemplos: APPROACH P1:30.5,DZ >70; ( 1 )
APPROACH P0NT0=P1:50.0,-DY; . (2)
Este comando tem por finalidade fazer com que o
-Zi robô se aproximie do ponto especificado por < identif icador de
•'ZZ ponto da distância especificada por <distância> segundo a
orientação referente aos eixos coordenados dada por <dir£
ção>.
"Z A velocidade pode ser definida no próprio^comando
Z ou caso não o seja, será utilizada a velocidade especificada
pelo último comando SPEED compilado.
Se como no exemplo (2) for associado um nome ao
ponto referente à aproximação, aquele nome será considerado
como um ponto definido e poderá ser utilizado em comandos
subseqüentes a este comando.
5.4.4.5 - Co-saamido DEPART
<comando DEPART>::-<parte do depart>;|
<parte do depart> > <velocida
de>;
.278.
•V
Q
zO
<direção>
Exemplos: DEPART PI:50.0,-DX;
DEPART STRAIGHT P45:45.6,DZ> 56;
•'-Z Este comando tem por função fazer com que o robô
z:Z se afaste de um ponto definido por <identificador de ponto>
j da distância definida por <distância> segundo a orientação
definida por <direção>, referente a um dos eixos do sistema
_ de coordenadas. •J
A velocidade de afastamento pode ser definida no
•V próprio comando ou pelo último comando SPEED compilado.
Este miovimento pode ser feito interpolado em coor
denadas de junção de um ponto para outro ou pode ser feito
segundo uma interpolação linear no sistema de coordenadas
cartesiano, quando o parâmetro STRAIGHT deve ser íespecifi_
cado. Quando a interpolação for linear, o algoritmo de in
Q terpolaçao linear visto no comando MOVE será também utiliza
Zj do neste comando.
5.4.4.6 - Conaanidlo CLDSE
<comando CLOSE> : : =CLOSE <abertura da mão> ; |
Zt GLOSE <abertura da m,ão> , <identi^
•^j ficador booleano>;
Exemplos: CLOSE 5.0;
CLOSE 10.O,PEGOU;
<parte do depart>::-DEPART <identificador de pon
to> : < distância> ,<direção>|
^ . DEPART STRAIGHT <identifica
dor de ponto>:<distância>,
••V
-•V
•J
.279.
^ Este comando serve para controlar a abertura de
uma mão-ferramenta servo-controlada associada ao robô.
Ao terminar a execução deste comando, a garra do
robô terá fechado até ficar com a abertura especificada em
<abertura da mão>. Se uma variável booleana especifiçada por
<identificador booleano for entrada no comando, se o sist£
ma de controle da garra conseguir fechar até a abertura
V especificada, é colocado o valor VERDADEIRO na variável
Z booleana. Se não conseguir fechar, quando o objeto pegado
for maior do que <abertura da mão>, coloca-se o valor FAL
SO.
Este tipo de comando permiite ao robô pegar um
objeto sem saber a priori qual a sua medida, desde que ele
seja rígido e tenha um tamanho menor do que a máxima abertu
ra da garra.
5.4,4.7 - CoaaiTiíJo OPEíâ
< comando OPEN> : : =OPEN < abertura da mão>;|£)PEN;
Exemplos: OPEN 50.4;
OPEN 25.0;
OPEN;
Este comando OPEN tem por finalidade definir uma
abertura a ser colocada na garra servo-controlada do robô.
Se a abertura da garra não for especificada no comando, a
garra será aberta ao seu máximo através da deteção de chave
limite associada a garra, sendo então um processo de calí
bração da garra.
. 2 3 0 .
5.4.4.8 - Cc-si&rido SPSE3
•<comando SPEED>::=SPEED <porcentagem da velocida
de iTiáx :'jija> ;
Exemplos: SPEED 10;
SPEED 90:
Este comando tem por função definir uma velocida
de de "default" para comandos de movimentação do robô que
se seguirem e não estiverem explicitadas no próprio comando
as velocidades de movimentação.
Se nenhum comando SPEED for especificado, este va
lor de "default" será considera.do pelo compilador como 20.
O valor entrado no comando de velocidade corres_
ponde à percentagem da velocidade máxima de operação do ro
bü.
5.4.4.9 - Ccraíidoi lErTEMPOUiTit •*
<comando INTERPOLATE>::-INTERPOLATE <número depon
tos> ;
<número de pontos>::= { inteiro positivo }
Exemplos: INTERPÓLATE 100;
INTERPOLATE 1000;
Este comando tem por objetivo definir o número de
pontos interpolados a ser calculado pelo compilador para
seguir um caminho que necessite de interpolação como mostra
do nos comandos MOVE STRAIGHT, FOLLOV/ e DEPART.
. 281 .
Caso este comando não tenha sido especificado, o
compilador assume um valor igual a 1 para este parâmetro.
5.4.5 - C c v"Eant íOi3 de entrada e salda
5.4.5.1 - CoiEi£iniCio D I S P L A Y
<comanQo DISPLAY>::-DISPLAY <lista de elementos>;
<lista de elementcs> : : =<elernento> ! <elemento > ,< 1 is
ta de elementos>
<elemento>::=<variável>I / |'<string>'
Exemplos: DISPLAY /, Al, LISTA( 5 ) > BITE , /;
DISPLAY 'FIM DO PROGRAMA',/;
O objetivo deste comando é enviar psra a porta
serial de saída associada ao monitor do controlador do robô
os valores ern hexadecimal das variáveis especificadas no co
mando e do conjunto dos caracteres especificados em "strings"
definidos no próprio comando.
Para cada / especificada como parâmetro do coman
do, corresporiderá um retorno do carro e alimentação de li_
nha.
5.4.5.2 - Cciîarîdo EEAD
<comando READ>::=READ <lista de identific£dores>
Exemplos : REA.D Al , LI STA ( 4 ) , DADO ;
.282.
Este comando tem por finalidade entrar com os va
lores de variáveis em tempo de execução da tarefa.
Os dados são recebidos como valores hexadecimais
vindos em código ASCII pela linha serial de entrada do con
trolador do robó, associada ao monitor.
5.4.5.3 - ComBuão PKOST
<comando PRINT>::PRINT <íista de elementos>;
Exemplos: PRINT Al,/,LISTA(7),BITE ;
PRINT /,'ESPERANDO LINHA DE SINCRONIS
MO ' ;
Este comando tem a mesmia finalidade do comando
DISPLAY só que os dados são enviados para a impressora do
nível 1 e não para o terminal de vídeo.
5.4.6 - Ccaandos de visão
"Z
5.4.6.1 - Coaanido FIMO
<comando FIND>::=FIND <identificador de figura>,
<vetor de posição,<variável boo
leana>
<identificador de flgura>: :=<identificador>
<vetor de posição>::=<identificador de array WORD
de 6 elementos>
Zr^ .283.
A comunicação entre os dois programas é feita uti
lizando-se a porta serial de saída e a porta serial de en
trada associada ao monitor do controlador do robó.
O programa de processamento devolve em < variável
booleana> VERDADEIRO, se a figura foi localizada, e FALSO
caso contrário.
Se a figura foi localizada, em <vetor> estarão colo
cadas as coordenadas de motor do ponto referente ao centro
de gravidade da figura.
5.4.6.2 - CoEniamido LEAMÍ
*
<comando LEARN>::-LEARN <identificador de
figura>;
Exemplo: LEARN MINHFIG;
Este comando, associado ao programa processador
de imagens no nível 1 de controle, tem. por finalidade colo
car no arquivo associado ao <identificador de figura>, os
parâmetros necessários para que o sistema de visão possa re
conhecer a figura posteriormente.
. .,^,^^^^^^zz—"f-^
' ^ - ^ ^ ' ^^'1.^=^:^; „ _ j
^ Exemplos: FIND MINHFIG, VETOR,OK; -V
•V Este comando tem por finalidade localizar uma de
Z terminada figura declarada anteriormente, através de um pro
grama de processamento de imagens ativo no nível 1, de con
trole do laboratório.
.:3
.284.
5.4.6.3 - CoEiaïKâo RECOGMIZE
<Comando RECOGNIZE>::-RECOGNIZE <identificador de
figura>,<variável boolea
na> ;
Exemplo: RECOGNIZE MINHFIG,FLAG ;
^ Este comando tem a mesma função do comando FIND
"Z só que o sistema de visão não retorna o vetor de posição do
.V centro de gravidade da figura. Ele só retorna uma valor VER
DADEIRO ou FALSO em <variável booleana> dependendo se ele
reconheceu ou não a figura especificada por <identificador
de figura>.
5.4.6.4 - Ccmando lííSPECT
<comando INSPECT> : : =INSPECT <identif icador de fi.
gura>, <vetor de atributos>;
<vetor de atributos>::=<identificador de array
WORD de 6 elementos>
Exemplo: INSPECT MINHFIG,VETATR;
Este comando deve ser dado depois de um comando
RECOGNIZE que retorne VERDADEIRO para a figura especifica
da.
Em <vetor de atributos> o sistema de visão retor
nará os atributos área da figura, centro de gravidade, núme
ro de furos, perímetro e maior dimensão da figura, nos ele
mentos respectivos de O a 5 de <vetor de atributos>.
:3 73
,--3
ri
.285.
Maiores informações sobre estes comandos de vi
são podem ser encontradas em [52],
5.4.7 - Co-^anão de c o n t r o l e de i n t e r r u p ç ã o
"^"l^ 5.4.7.1 - Coüüando EI •
<comando EI> : :-EI; |EI <número da interrupção;
<número da interrupção::-O|1|2!3|4|5.
Exemplos: EI;
EI 3;
Este comando tem por objetivo habilitar uma deter
minada linha de interrupção do processador de controle do
robô, definida por <número de interrupção ou todas elas,
caso nenhuma seja explicitamente definida.
5.4.7.2 - CoEnsndo Dl
<comando DI>::=DI;|DI <número da interrupção;
Exemplos: Dl,
Dl O;
O objetivo deste comando é inibir uma determinada
linha de interrupção do processador definida por < número
da interrupção> ou todas elas caso nenhuma tenha sido expli^
citamente referenciada.
No começo da execução da tarefa, todas as inter
.286.
O programa foi criado no arquivo PROGOK.LIP com
a utilização de um dos editores de texto do sistema de con
trole do nível 1.
Colocando-se o disco com o arquivo fonte na unida
de B do sistema e o disco com o compilador LIPRI na unidade
A, entramos com o seguinte comando para compilar o programa:
LIPRI B:PROGOK
As mensagens enviadas para o term.inal de vídeo do
sistema durante a compilação estão mostradas na figura
5.4 a seguir.
Quando a raiz do compilador é carregada (LIPRI.
COM), a mensagem
LIPRI:Linguagem de Programação de Robôs Industriais. VERSl.l
é enviada e as iniciações do compilador são executadas.
Quando elas terminarem e o "overlay" de análise
sintática estiver na memória, a mensagem
rupções estão automaticamente inibidas, e sempre que' uma
"""" delas ocorrer e o controle passar para o seu procedimento
^3 de interrupção correspondente, ela ficará automaticamente
inibida até a execução de uma instrução EI com o seu número
de interrupção ou som.ente EI.
:zO
zzo 5 . 5 - U T I U L Z M S M O COIÍPILAD-OK L I P E I
zzO _
Neste item apresentaremos a compilação completa
de um programa com o compilador LIPRI.
. 2 8 7 .
Análise Sintática
:0
linhas do fonte = 4Í Total de código = 8Í2 Total de dados ~ 5ó Numero de erros ~ O LIPRI Ví.isCompi 1acao terminada
4
Fig. 5.4 - Seção com o compilador LIPRI.
Uma vez terminada a análise sintática e a geração
da forma intermediária do programa, o "overlay" de geração
de código é carregado e a mensagem
Início de geração de código
é enviada.
Para cada linha do arquivo objeto em formato hexa
decimal criada é enviado um caracter 4^.
-•-w* " é enviada e a cada 10 linhas do programa fonte analisadas
S'0 um caracter + é mandado para o terminal.
-3
zO
ZO
LIPRI BíPROGOK i-Q LIPRIsLinguagcm de Programação de Robos Industriais. VERS i.í
Analise sintática ++++ Inicio da geração de código tH? tí n IHHÍ t4 n M n ÍH* ÍS n n iUHHt-}t }4 M n Ü n U H « «ÍHHHHHÍ«tí» n ÍHHÍ ?í ^ n u « Fim da geração de código
.288.
Quando termina a compilação o total de linhas do
programa fonte, o código gerado e a memoria de dados ocupa
''-• ^ da são listados, como visto na figura 5.4.
No arquivo B:PROGOK.PRN teremos, após o final da
compilação, o arquivo de listagem gerado pelo compilador
^ LIPRI, arquivo este mostrado na figura 5.5 a seguir.
Na primeira coluna do arquivo de listagem é mos
trado o número da linha e na segunda o nivel de BEGIN e END
;C de cada comando.
, Se existisse algum erro de sintaxe, ele seria
^ apontado na linha correspondente e uma mensagem do erro pro
vável seria colocada no arquivo de listagem. No final do
arquivo é apresentado o total de. erros de sintaxe cometidos
pelo usuário. As miensagens de erre e a compilação de alguns
:Z programas errados podem ser vistos no Apêndice II deste ca
pitulo.
^ ' O arquivo objeto criado pelo compilador LIPRI em
formato hexadecimal pode ser visto na figura 5.6 a'seguir
l 5.6 - COMPARAÇKO COM OUTRAS LlflGÍÍAGEfüS PARA PROGRAI'ÎAÇSO BE
- ROBOS IffíBÜSTRIAJES
Esta comparação da linguagem LIPRI com outras lin
guagens para programação de robôs industriais será feita
de uma maneira tabular, onde colocaremos as características
V da linguagem LIPRI nas tabelas comparativas das outras lin
Z guagens disponíveis principalmente em universidades e insti
- tutos de pesquisas nos EUA, apresentadas em [24].
.289,
TYPE B.-PROGOK.PRN
to
^ V
i 2 3 4 5 6 7 8 9
Í 0 tí Í 2 13 Í 4 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 41
O
Programa Exemplo
BEGIN % % % ARRAY "víEKS) UORDj; % LABEL REPETEj % BOOLEAN FLA6,NPEG0LJy Z F I L E F l ' B i P O N T E S . A P R ' -% POINT P Í , P 2 , P 3 IN F i ; LINE L í IN F íy TRAJECT T R A B ( 5 ) IN F l -"Á % Fim das Declarações.
DISPLAY 'TESTANTO H O V E ' , / / ; SPEED 9 6 ; INTERPOLATE 20; MOVE P í > 9 0 ; REPETE:
APPROACH PONT==Pl : íOO.O, -DZ; MOVE STRAIGHT PONT TO P í >2D0; «OVE P I ; DISPLAY /,'entre com flag'; READ FLAG; ^
IF FLAG THEN GO TO REPETE; HOVE PONT; INTERPOLATE 50 ; SPEED 2 0 0 ; HOVE STRAIGHT PONT TO P2 >200; FOLLOW a TRAB >80; FOLLOW TRAB BACK >iOO; HOME; DISPLAY 'FIM DO T E S T E ' , / -y. % Fim do programa % END.
0 NUMERO DE ERROS= 0
Fig. 5.5 - Arquivo de listagem gerado pelo comply
lador LIPRI.
.290,
Zj
- w
TYPE B:PROGOI<.HEX
Í07B0E00544553544 i4E544FP04D4F564524Ó56EA7 Í07BÍE0G74726520Ó36F6D20¿6¿-(:;6ÍÓ72446494DF3 OA702EC)0204 44F2Ü544 553544 524DÍ í O 8 O 0 0 O O 4 F Í: O O O ü D B O O O B O (D O í í 0 O 0 H 0 0 0 8 0 O 0 O O O A í i O 8 010 ü O D 3 030 3 O 3 [) 3 C) 3 O 3 0 3 ü 3 U 3 O 3 ü 3 0 3 O 3 O 3 0330 í O 8 O 2 O CJ () O; O 3 O 3 O 3 ü 3 0 3 O 3 D 3 i 9 2 C íí O í i. D E 7 B í 7 í 7 A C i0803000-';F5AOÜDES2237FOOaOOÜ800080üaeOOí94 Í0804GÜ04F^000DEB2747D588Í0ÜG0Ü0800080Ü1D6 Í08050Ü04FC800DE82747D588ÍOGB000800ÜBOOÍ5E iD80600a5CDE828A7D4A8i5CDE82A07D3D8i5CDEBÍ Í080700Ü82B57D2F8Í5CDE82GB7D208Í5CDE82E05B .UJ80800G7DÍ .1.8Í5CDE82F67D028Í5CDE82ÜB7EF3F7 Í0809Ü008Ü5GDE82207EE3805CDE82357ED4805C84 Í080A00ÜDE824A7EC3805CDE825E7EB3805CDEB2DE Í08ÜD000737EA28Ü5GDE82877E9Í805CDE829B7E06 Í080C00080305CDE82AF7E6E805CDE82C37E5D8ÜFF Í080D0005CDE82D67E4B805CDE02EA7E38805CDEAF .1.0B0E00Q82FD7E268Ü5CDE82Í07FÍ3805CDEB22330 Í080F00Ü7F00804F6000DE82237F00800080008Ü50 Í081000000800Í Í 7 i í iC7B Í30C70 ÍB Í2B1ÜG7B1947 1081Í00040804FÓ000DE82747D5SBÍ. 008000800006 10812000000í4FCaOODEB2747D5BBíOÜBü0080Ü08D 1081300080015GC882847D60815CB282947D678ÍAD 10814000 5 C 9 C 8 2 A 4 7 D 6D815C8 ó 8 2 B 3 7 D7 3 815C 6F 5 3 108Í500082G27D788Í5G5982D17D7C815C4282DFE4 108160O 0 7 D 8 0 (3 í 5 C 2 B B 2 E E 7 D 83815G í 4 B 2 F C 7 D 8628 10817000815CFD8Í097E888Í5CEÓ8ÍÍ67E89815C57 10 8 í 8 O 0 O G F' 812 47 E 8 A 815 G P, 7 813 0 7 E 8 A 8 í 5 C A O 8 x 2 8 108190003D7E8ASÍ5C8881497E8981507081557EC3 108 i A00087B15059816 í 7Ee5815C418 3.6C7E833 í AO 1081B0005C29S1777E7F815C118Í827E7B815CF985 108iC000Bü8C7E778i5CEí80977E728i5CC980A122 1081D0007E6C815CB180AA7E668Í5C9980B37E5F93 10 8 i E O O0815081B O B C 7 E588 í 5 C 6 9 & D C 5 7 E; 5 O 815 C; E 9 Í081F0005Í80CD7E48815G3980D57E3F8Í5C228Ü74 1082000ÜDD7E368Í5C0A80E47E2C8Í5GF27FEB7E31 1082100021815C[)A7FF27Elá815CC27FF87E0B8íól Í08220Ü05CAA7FFE7EFF805C937F037FF2805C7B95 10823a007F087FE5805G647F0D7FDB805C4G7Fl178 108240007FGA805C357F157FBC8Ü5CÍE7FÍ97FAD47 Í0825000805G077FÍC7F9E805CF07EÍE7F8E805C32 Í0826000D97E207F7E805CC27E227F6D805GAC7E6A 10827000247F5C805C957E247F4B805C7F7E257FA5 ÍÜ82800039805C697E257F26805C537E247FÍ38045 108290005C3D7E237F00804F50003D7E458Ü008006 Í082AOOOOG8000800080004F50003D7E4580D080AF 1082B0003681CA7E0080004F50003D7E45800080AO Í082C000777FOD7D0080004F50003D7E45807D7E94 1082D000777FOD7DÜ080004F5000DF7C45807D7EE4 1082E000777F0D7D0080D04F64Ü0DF7C45807D7EC0 1082F000777FOD7D0080014F64003D7E45807D7E4F Í083000D777F0D7D0080ÜÍ4F640Ü3D7E45800080B9 10831000777F0D7D0080014Fá40a3D7E458000a0A9 Í08320Ü03681CA7EÜ08Ü0Í4F64003D7E4580Ü08Ü1A 0D8330000Ü80008000800118112B7B1700Ü9 OOOOOÜOíFF
Fig. 5 .6 - Arquivo objeto criado pelo compilador.
Z3
'-3
-3
--y
•V
-y
' .J
.291 ,
As tabelas foram confeccionadas para as seguintes
-íp linguagens de programação de robôs industriais:
- AL
Q Esta linguagem foi desenvolvida no Laboratorio
de Inteligencia Artificial de Stanford, sendo
baseada no PASCAL concorrente. Ela é compilada
em um PDP-10 e o código resultante é carregado
em um PDP-11, com unidade de ponto flutuante e
128K bytes de memória onde é executado.
- AML [54 ]
É a linguagem desenvolvida pela IBM para progra
mação de robôs. Um interpretador implementa a
— linguagem básica e define suas operações primi^
_ tivas, sendo necessário um minicomputador IBM
Série/l com um. m.ínim.o de 192K bytes de m.em.ória.
- HELP
E a linguagem oferecida pela "General Electric
-*' Company" para o seu sistema de robôs , 'cartesia
~4 nos. Ela é implementada como um interpretador
baseado em PASCAL e é executada em um LSI-11/2
com um microcomputador para o controle de cada
junção do robó.
- JARS
Linguagem desenvolvida pelo grupo de robótica
e teleoperação da NASA, sendo a própria lingua
gem PASCAL com comandos de movimentação de ro
V bôs embutidos. Para executar os programas é ne
^ cessário um computador PDPll/34 tendo unidade
de ponto flutuante e deixando para o usuário
apenas 28K bytes de memória disponível.
.292'.
•:.Z
zZ
- MCL
Esta linguagem foi desenvolvida baseada na lin
guagem APT para programação de máquinas de con
trole numérico, sendo utilizada pelo robô T-3
da Cincinnati Milacron. A versão mais sofistica
-V da para controle de uma célula de manufatura uti_
Q liza um computador IBM 3 7 0 com 1 Mega byte de
memória, sendo que uma versão mais simples pode
ser executada em um PDPll, com 128K de memória.
- RAIL [21]
É a linguagem desenvolvida pela Automatix, para
utilização com sistema de visão, solda à arco
e montagem mecânica, sendo executada por um mj^
Z crocomputador Motorola 68000.
- RPL
•ré
Z Desenvolvida pelo "SRI International" em
Stanford ela é baseada em LISP com sintaxe de
\_ _ •- FORTRAN e necessita de um compilador cruzado
que executa em um PDP-IO gerando código para um
PDP-11 ou LSI-11 sendo os esforços atuais empr£
é gados para controlar um robô PUMA 550 com um
Z sistema de visão VS-100.
- VAL [ 60] [61 ]
'2 . É unia linguagem para programação de robôs desen
volvida pela Unimation para a sua família de
^ robôs PUMA. Ela é baseada em construções da lin
^ guagem BASIC, sendo interpretada por um compu
* tador DEC LSI-ll/03 e mais recentemente em
^ LSI-11/23, tendo um microprocessador 6503 dedi^
Z cado ao controle de cada junção do robô.
.293;
:3
- LIPRI
A linguagem apresentada neste capítulo e basea
da em construções semelhantes à da linguagem PAS
CAI tendo comandos específicos para movimenta
ção do robo, sendo compilada em qualquer siste_
ma operacional compatível com CP/M 80 Versão
2.2, gerando um código (Apêndice l) facilmente
. •. . implementável em qualquer microcomputador de
controle de robôs, sendo o corrente implementa
do em um microcomputador baseado no 8085 dedica
do ao controle de robô. A sua implementação foi
feita em PASCAL padrão.
A seguir passaremos a apresentar os dados de com
paração de uma maneira tabular onde estará colocada a lin
guagem LIPRI junto com as outras apresentadas em [24 ] .
—
Modalidade da linguagem:
'3
'Z
"3
texto:
menu:
AL PM. HELP JARS MCL RAIL RPL VAL LIPRI
X X X X X
X
X X ^ X X
Tipo de linguagem:
ZJ Subrotinas:
Extensão:
Linguagem nova:
AL AML HELP JARS MCL RAIL RPL VAL LIPRI
X X
X X X X X
ZZrZ)
z:3)
<,;-z3
.294,
-o -o
Tipos de dados geométricos:
Sistema de coord.:
Ângulos de june:
Vetores:
Transformações:
Rotações:
Caminhos:
AL AML HELP JARS MCL RAIL RPL VAL LIPRI
X
X
X X
X
X
X
X
X
X
X
X
X
X
X
X X
X X
X X
X
Número de braços controlados:
AL AIViL HELP JARS MCL RAIL RPL VAL LIPRI
Um braço: X X X X X X
Múltiplos braços: X X X
Estruturas de controle:
AL Ar/L HELP JARS MCL RAIL RPL VAL LIPÍ
Comandos rotulados: X X X X X X X
IF-THEN: X X X X X X X * X X
IF-THEN-ELSE: X X X X X X X X
WHILE-DO: X X X X X X X X
DO-UNTIL: X X X X X
CASE: X X X X
FOR: X X X X X X
BEGIN-END: X X X X
COBEGIN-COEND: X X X
PROCEDURE: X X X X X X X X X
X X
Q
Zé
.295,
Tipos de movimentos:
Interpelação
coord.junção:
Linha reta
entre pontos:
Funções
splines:
Círculos geométrj^
C O S implícitos:
Trajetórias geom£
tricas implíc.:
Calculo em temipo
real de traj.:
Linhas de sincronismo:
AL AML HELP JARS MCL RAIL RPL VAL LIPRI
X X X X X X X X
X ..X X X X X
X X X X X
X
X
X
AL AML HELP JARS MCL RAIL RPL VAL LIPRI
Entradas binárias: 0 64 * 0 242 6 32 32 *
Saídas binárias: 0 64 * 2 242 10 32 32 *
Entradas analógicas: 64 0 * 0 242 0 32 0 0
Saídas analógicas: 4 0 0 0 242 0 64 0 0
* significa configurável para o sistema.
Interfaces para sensores:
Visão:
Força:
Sensores de proxi
midade:
AL AML HELP JARS MCL RAIL RPL VAL LIPRI
X X X X X X X
X X
X
X
X
1
X X X
1: Para pegar objetos com a garra.
X X
.296
Programas suporte:
Editor de texto:
Sistema de arquivos:
Editor em execução:
Interpretador:
Compilador:
Simulador:
MACRO:
Comandos Include:
Arquivos de comandos:
Estatíticas de
erros:
Funções de auxílio:
AL AML HELP JARS MCL RAIL RPL VAL LIPPJ
X
X
X
X
X
X X
X
X
X
X
X X
X
X X
X
X
X
X
X
X
X
X
X
X
X
X
X X
X X
X X
X
X
X
X
X
Características de testes:
Passo a passo:
Pontos de parada:
Trace:
Listagem:
AL AML HELP JARS MCL RAIL RPL VAL LIPRI
X X X X X
X X
X
X
X
X
X
X
X X
X X í
X
X
X
X
Desta forma, podemos ver que a linguagem LIPRI
desenvolvida possui os principais atributos de uma lingua
gem para programação de robôs industriais. Alguns exemplos
de programação de tarefas para o robô do laboratório com a
linguagem LIPRI podem ser vistos no Apêndice III.
.297.
5.7 - COíiCLÜSÍÍO
.Este capítulo foi dedicado à apresentação da lin
guagem LIPRI (Linguagem para Programação de Robôs Indu£
triáis) desenvolvida no laboratório LÍDER para utilização
com o robô construído.
Inicialmente apresentamos a configuração do siste
ma para a execução da linguagem, os principais arquivos do
compilador e os arquivos de entrada necessários para compi^
lar e executar um programa, suas finalidades e a maneira de
criá-los.
A seguir, apresentamos a sintaxe dos programas
escritos em LIPRI, detalhando todas as suas declarações e
comandos, apresentando exemplos de cada um deles.
Uma seção com o compilador LIPRI utilizado para
compilar um programa exemiplo foi apresentado.
Finalizando o capítulo, fizemos uma comparação
com outras linguagens para programação de robôs * indus
triáis, utilizando as tabelas apresentadas em[24 ] e incluín
do nelas as características da linguagem desenvolvida.
Como conclusão básica desta comparação, podemos
dizer que a linguagem LIPRI, possui os principais atributos
de uma linguagem de programação de robôs, tendo ainda a van
tagem de necessitar de uma pequena e pouca custosa infra-
estrutura para a compilação e execução de seus programas.
Sob o ponto de vista da portabilidade da lingua
gem para outros sistemas de desenvolvimento e outros robôs,
devemos ressaltar que pelo fato da linguagem ser executada
sob o sistema operacional compatível com o CP/M, sistema
'«sé
•-y
•eé
«y
.298.
este largamente difundido em varias máquinas, e pela sua
implementação em linguagem PASCAL padrão, a sua portabili
dade é bastante razoável, e por termos colocado a dependen
cia de atributos da arquitetura mecânica em um módulo sepa
rado e estanque da linguagem e mais, sendo o código gerado
por ela composto de instruções facilmente implementadas por
qualquer controlador dedicado a um robô, podemos dizer que
é grande a sua portabilidade.
-3
COmClLOSOES Fiimis
3
"Quem perdeu o trem da história por querer saiu do juízo sem saber
— foi mais um covarde a se esconder 3 diante de um novo mundo".
y (Beto Guedes e Ronaldo Bastos) 3 • ' - • - . "Z
•ZZ>
—^
•:z3
——., , — w
ZJ-3
.300.
A despeito de todas as profundas modificações nas
estruturas sociais, necessárias para a mudança da socieda
de atual para uma sociedade onde o trabalho robotizado fos
se utilizado em larga escala, soluções terão que ser encon
tradas de forma a que esta transformação seja a mais suave
e amena para todos, patrões e empregados, principalmente pa
ra aqueles que tiverem seu trabalho substituído, porque os
robôs industriais vieram para ficar.
Para países em um estágio de desenvolvimento in
ferior, existe ainda um problema adicional nesta mudança:
o de desenvolver esta tecnologia de forma a não se tornarem
ainda mais dependentes dos países desenvolvidos.
Tecnologia, independentemente da área, não se
transfere nem se compra, se desenvolve; e o principal fator
de desenvolvimento de qualquer tecnologia é a formação de
recursos humanos.
Este trabalho, dedicado à concepção e imijblementa
ção de um laboratório para o desenvolvimento e ensino de
técnicas voltadas para robôs industriais, produziu vários
resultados. Como contribuições podemos apresentar o projeto
e construção de um robô industrial do tipo braço articulado
com cinco graus de liberdade, acionado por motores de pas
so com realimentaçao de posição e equipado com uma garra
mecânica servo-controlada, uma estrutura de controle hierár
quica e distribuída para a execução das diversas funções
apresentadas no decorrer do trabalho, programas suportes pa
ra programação do robô por aprendizado, execução de tare
fas, transformações de coordenadas e uma linguagem de alto
nível para programação de tarefas de robôs industriais.
.301.
Podemos citar também, a título de contribuição, a
interligação destes vários sistemas em um sistema único e
de fácil operação que é o próprio laboratório LÍDER - Labo
ratório Integrado para Desenvolvimento e Ensino da Robót^^
ca, objetivo principal deste trabalho.
Como dificuldade principal da sua execução pode
mos considerar a sua característica multidisciplinar exigin
''' do a solução de problemas de origem mecânica associados ao
•cy acionamento e aos sensores do robô, problemas relacionados
Z ao desenvolvimento e implementação'de circuitos elétricos/
- eletrônicos de controle, programação de rotinas de controle
_ em tempo real com a utilização intensiva de interrupções e
de desenvolvimento e implementação de linguagens de alto
nível em microcomputadores que exigem a divisão de progra
mas e o gerenciamento de "overlays", sendo que podemos con
siderar a maioria destes problemas solucionados de uma for
ma eficiente e econômica, como apresentado no decorrer de
todos os capítulos anteriores.
0)\ No primeiro capítulo nos dedicamos a apresentar
o estado da arte dos robôs industriais e a proposta para
o desenvolvimento do laboratório LÍDER.
No segundo capítulo, apresentamos a arquitetura me
canica do robô desenvolvido, seus acionadores, seu sistema
de realimentaçao, suas características principais e a gar
ra mecânica desenvolvida para o robô.
y A escolha de motores de passo para o acionamento
^ do-robô, por um lado facilitou o seu controle devido à sim
plicidade de se controlar corretamente a sua posição e velo
cidade, ainda mais utilizando o sistema de realimentaçao
proposto, mas por outro lado, por ser este motor um inj£
tor natural de vibrações mecânicas, dificultou enormemente
3
o
. V
.302.
a geração de trajetórias suaves. Em miáquinas-ferramentas uti
lizando motores de passo, este problema de vibrações inje
tadas pelos motores é resolvido não permitindo o seu acio
namento em freqüências coincidentes com as freqüências de
ressonância da estrutura da máquina. Em. robôs industriais
isto não pode ser feito porque, devido à necessidade de
ter-se movimentos interpolados, as freqüências para os moto
res são calculadas por algoritmos, sendo dependentes do ães
locamente de cada motor, ou seja, esta freqüência não é
controlável o que inevitavelmente leva a coincidências com
freqüências de ressonância da estrutura do robô, principal^
mente para baixas velocidades.
Robôs acionados por motores de corrente contínua
apresentam um movimento mais suave, mas não possuem as van
tagens da utilização dos motores de passo apresentadas no
item 3.3.2.
Quanto ao sistema de realimentaçao proposto, con
cluímos que ele representa uma grande melhoria para o corre
to.funcionamento do robô. Inicialmente, o controle do robô
foi feito em malha aberta. A dinâmica do manipulador articu
lado, onde tonques para as várias articulações são difíceis
de serem determinados pois dependem do acionamento de ou
tras articulações, ocasiona tonques no eixo dos motores su
periores ao máximo torque permitido de forma a que erros
por perda de pulsos ocorrem, comprometendo a repetibilidade
do robô. Para solucionar este problema, duas soluções eram
possíveis. A prim,eira sendo o superdimensionamento de todos
os motores, o que acarretava motores maiores, mais pesados
e mais caros além das necessidades adicionais para o seu
acionamento e a segunda sendo a colocação de um sistema de
realimentaçao de posição para corrigir eventuais perdas de
pulsos. Optamos pela segunda solução e a sua implementação,
conforme descrita, melhorou consideravelmenete a repetibi
.303.
lidade do robô.
CO:::;33;:o R.;\C:G::/L Líi EivERGlA W U C L E A R / S P I C) C M
Concluímos então que um robô do tipo braço articu
lado acionado por motores de passo deve ter necessariamente
um sistema de realimentaçao de posição.
Problemas de folgas e não rigidez mecânica da es
trutura também comprometem a repetibilidade do robô. Para a
implementação realizada, algumas soluções foram realizadas
para minimizar estes problemas, tais como trabalhar com a
coroa deslocada em relação ao sem-fim e colocar espaçadores
para aumentar a rigidez da caixa do braço. Achamos que ou
tras soluções dariam melhores resultados tais como a util_i
zação de coroas bipartidas e a confecção do braço com mat£
riais de alta rigidez e pequeno peso tal como o composite.
Estas soluções não foram implementadas devido ao
alto custo envolvido o que certamente encareceria bastante
o desenvolvimento do laboratório, mas se fosse o caso de
uma confecção em escala industrial do robô, sugeriríamos
que elas fossem utilizadas.
No capítulo III apresentamos a arquitetura do sis
tema de controle do laboratório, arquitetura esta baseada
em um sistema de controle hierárquico distribuído com três
níveis.
Esta arquitetura foi escolhida em detrimento de
uma arquitetura centralizada com um, único processador, prin
cipalmente pela simplificação de sua implementação devido
ao particionamento da tarefa em pequenas sub-tarefas que
permitem a sua implementação em processadores menores e tam
bém,por acharmos ser este tipo de arquitetura natural para
o gerenciamento das fábricas automatizadas do futuro, onde
existirão vários processadores dedicados a tarefas específi
.304.
cas (controle de robôs, máquinas de controle numérico, sen
sores etc.) coordenados por processadores de níveis mais
altos.
A implementação do controlador do robô com um
microcomiputador de 8 bits só foi possível devido à utiliza
ção desta estrutura de controle e de circuitos LSI para im
plementação de funções dedicadas como mostrado no decorrer
deste capítulo.
No quarto capítulo apresentamos os programas su
portes para o laboratório, tanto para o nível O, dedicado
ao controle do robô, como para o nível 1, dedicado à infra-
estrutura de programação do laboratório.
Os programas de calibração, aprendizado e execu
ção de tarefas apresentados, fornecem uma estrutura eficien
te e fácil de se utilizar para a programação de tarefas com
plexas para o robô, sem requererem uma grande experiência em
programação do operador, sendo voltados principalmente para
t pessoas não especializadas.
i
o programa editor de figuras utilizadas pela lin
guagem de alto nível foi uma maneira eficiente e fácil que
encontramos para a utilização desta linguagem emi toda sua
extensão, dispensando a preocupação de quantificarmos o uni^
verso do robô, quantificação esta de bastante dificuldade.
A concepção e implementação de um conjunto de in£
truções baseadas em memória implementadas pelo controlador
do robô (Apêndice I), além de permitir a utilização de toda
a capacidade do laboratório através do programa de aprendi
zado, tornou bastante portátil a linguagem de alto nível d£
senvolvida, para outros robôs. Para tanto, basta que o con
trolador implemente este conjunto de instruções para po
.305.
der-se utilizar a linguagem de alto nível para aquele robô.
As i^otlnas de transformação de coordenadas, dis
poníveis para qualquer usuário do laboratório, ampliam enor
memente a sua capacidade de processamento pois permitem a
criação de novos programas gerando dados diretamente execu
táveis pelo controlador do robô através da linha de comuni
cações entre os dois níveis ou em arquivos diretamente ace£
sados pela linguagem de alto nível.
Finalmente, no capítulo V, apresentamos a defini
ção da linguagem LIPRI - Linguagem para Programação de Ro
bôs Industriais, implementada no laboratório.
A opção de se im.plementar uma linguagem compila
da, ao invés de uma linguagem interpretada, veio também da
necessidade de termos um processador miais simples e barato
para o controle do robô pois, com um com.pilador, o cálculo
de trajetórias e análise de comandos são feitos "off-llne",
diminuindo sobremianeira a capacidade de processamento ne
cessaria. Por outro lado, comandos que necessitam de um pro
cessamento "on line" de trajetórias são mais difíceis* de
serem implementados com uma linguagem do tipo compilador.
A possibilidade de definição de figuras geométrj^
cas, possíveis de serem editadas direta e automaticamentep£
Io programa editor de figuras junto com o programas de apren
dizado, facilita bastante a programação de tarefas compl£
xas com a linguagem LIPRI, principalmente por ser de gran
de dificuldade quantificar e determinar dimensões no amblen
te de trabalho do robô. Esta facilidade fica evidente nos
exemplos de implementação de tarefas típicas de robôs indus
triáis feitos no laboratório e apresentados no Apêndice III
deste trabalho.
.306.
A comparação com outras linguagens de programação
de robôs apresentada no final do capítulo V mostra que, a
linguagem LTPRI proposta, apresenta a maior parte das facilj^
dades das outras linguagens permitindo ainda, a sua utiliza
ção em microcomputadores e sendo transportável para
outros computadores e robôs como tairibém mostrado naquele ca
pítulo.
Comandos utilizando um sensor de visão foram def¿
nidos sendo que a sua implementação está sendo feita em con
iunto com o trabalho apresentado em [52].
Exemplos de programação de tarefas típicas para
robôs industriais, utilizando os recursos do laboratório
desenvolvido, podem ser vistos no Apêndice III deste traba
lho.
Como trabalhos futuros podemos sugerir:
1 - Simulação gráfica da execução de tarefas pro
gramadas para o robô, através da utilização do
terminal gráfico do nível 2 dé controle pro
posto.
2 - Interligação com sistema CAD/CAM em desenvol^
vimento na EPUSP para posicionamento de peças
em placas de circuito impresso.
3 - Interligação do robô com o torno/frezadora de
controle numérico em desenvolvimento na Uni^
versidade Federal do Espírito Santo, com o
intuito de se implementar uma célula flexível
de fabricação.
4 - Implementação de outros sensores para o robô
...V
• 5 *
4.
•CS'
.307.
tais como sensores de tato, de voz e proximj_
dade, com a sua integração na linguagem LIPRI.
5 - Colocação de outro robô e implementação de
comandos de sincronismo e coordenação de tare
fas para dois ou mais robôs na linguagem
LIPRI.
Assim, este laboratorio, da forma com que foi con
cebido e implementado, junto com os prograonas e sensores
nele desenvolvidos, servirá de infra-estrutura para o ensa
ño e a pesquisa de novas tecnologias e técnicas visando o
aprimoramento dos robôs industriais.
APEíffilCE I - COííJüIffO BE llíSTRÜÇOES EXECII!TA¥EIS
PELO JMl¥EL O BE COIiTKOLE
I:-O -y
•^—-y
Z- J te —
:y y
.•y
•Q
:Q
'-.y
- y
••y
".y
' y
y
.309.
•••y 7 - Instruções de atribuição.
o*
8 - Instruções de conversão.
9 - Instruções de índices.
10 - Instruções aritméticas.
11 - Instruções de operações booleanas,
A seguir descreveremos cada uma destas instruções
implementadas nestes grupos apresentando o seu código de
operação, seus parâmetros e a sua finalidade.
- Instruções de movimentação do robô.
As instruções neste grupo do conjunto de instru
ções têm por finalidade prover meios de movimentação do ro
bô.
As instruções executáveis pelo computador do ní_
vel O, dedicado ao controle do robô, podem ser divididas
em 11 grupos a saber:
1 - Instruções de movimentação do robô.
2 - Instruções de linhas de sincronismo.
3 - Instruções de entrada e saída.
4 - Instruções de interrupção.
5 - Instruções de controle de processamento.
6 - Instruções de desvios.
.310.
Elas são as seguintes:
1:Instruções MOVP: código: 4FH
Formato:
4F<divfreq><mota><motb><motc><motd><mote><motf><hbmão>
Esta instrução é utilizada para fazer o robô se
movimentar da sua posição atual para a posição especificada
pelas coordenadas de motor <mota> até <motf> com uma fre
qüência máxima de movimentação de motores especificada pelo
parâmetro <divfreq> . Esta é a maior instrução do robô ocu
pando um. total de 16 bytes.
O parâmetro <hbmião> serve para especificar se a
coordenada da mão servo-controlada será ou não utilizada no
movimento. Se este parâmetro for O, o motor da garra é tam
bém acionado e se for diferente de O, o motor da garra não
é acionado no movimento, permianecendo na coordenada ante
rior a esta instrução.
Esta instrução só pode ser gerada pelo comando P
do programa de aprendizado, não podendo ser entrada pelo co
mando I do mesmo programa.
2:Instrução MOVV: código: 56H
Formato:
56<hbmão><endereço do vetorxdivfreq>
Esta instrução tem por objetivo fazer com que o
robô se desloque para uma posição cujas coordenadas de mo
.311.
tor são especificadas pelos valores armazenados nas Pos¿
ções Iniciadas por <endereço do vetor>, sendo a coordenada
do motor A a primeira de a do motor F a última, e o byte m£
nos significativo colocado antes do mais significativo.
O parâmetro <hbmão> especifica se o motor da gar
ra será acionado e a velocidade do movimento é dada pelo pa
râmetro <divfreq>.
3:Instrução MOVJ: código: 57H
Formato:
57<número da junçaoxendereço da coordenadaxdivfreq>
o objetivo desta instrução é fazer com que o miO
tor associado à junção especificada por <nûmero da junção
se desloque para a coordenada indicada por <endereço da C £
ordenada>, sendo o byte menos significativo da coordenada
armazenado neste endereço e o mais significativo no seguln
te. *
A velocidade do m.ovimento é dada pelo parâm,etro
<divfreq>.
4:Instrução MOVC: código: 5CH
Formato:
5C<mota><motb><motc>
Esta instrução só pode ser gerada pela linguagem
de alto nível, quando são especificados miovimentos interpo
V
.312.
lados em coordenadas cartesianas.
5:Instrução HOME: código: 18H
Formato:
18
Esta instrução de um byte tem por objetivo calj^
brar o robô. Após a sua execução, o robô estará na sua posi
ção de origem, com as coordenadas do ponto de origem.
6:Instrução CLOV: código: 58H
Formato: *
"Z
V 58<motfxendereço booleano>
O objetivo desta instrução é comandar o fechamen
to da garra para a coordenada especificada pelo parâmetro
<motf>. Se o sistema de controle conseguir fechar a garra
até esta coordenada, é colocado um valor verdadeiro na va
riável booleana especificada por <endereço booleano> . Se
o sistema de realimentaçao da garra detetar que a mesma não
consegue mais fechar, a coordenada da garra é atualizada
para o valor real da mesma e coloca-se falso na variável 1 : 3 booleana especificada.
• A velocidade do movimento é especificada pela
última instrução MOVP executada, sendo que apenas os moto
res A, B e C podem se movimentar, ou seja, a orientação
da mão-ferramenta do robô permenece inaltei-ada.
/sa.
—•es?
5A<raotf>
.313.
7:Instrução CLOS: código: 59H
Esta instrução tem por objetivo abrir a garra até
ç- o valor especificado por <motf>.
9: Instrução OPEN: código: 5BH
^ Formato:
sr
^ o objetivo desta instrução é ocasionar a abertu
^ ra da garra até a sua máxima abertura, detetável pela cha
ve limite associada à garra. Esta instrução é, de fato, uma
instrução de calibração da garra.
Formato:
59<motf>
O objetivo desta instrução é fechar a garra até
o valor de coordenadas do motor F especificado por <motf>.
Nenhum teste é feito, sendo que o sistema de controle acio
na a garra até que o sistema de realimentaçao indique que
a coordenada foi atingida.
8:Instrução OPNV: código: 5AH
Formato:
•cs'
.314.
- Instruções de linhas de sincronismo.
1:Instrução SET: código: OBH
Formato:
OB<número da linha>
A instrução SET tem por objetivo colocar o nível
1 na linha de saída especificada pelo parâmetro < número
da linha>.
2:Instrução RESET: código: OGH
Formato:
OC<número da linha> a
O objetivo desta instrução é colocar o nível ló
gíco O na linha de saída especificada por <número de li
nha>.
3:Instrução TEST: código: 42H
Formato:
42<número da linhaxendereço booleano>
A instrução TEST tem por objetivo verificar
As instruções deste grupo tem por objetivo tratar
das 8 linhas de entrada e 8 linhas de saída utili.zadas pai^a
sincronizar o robô com outros equipamentos.
.315.
. nível lógico da linha de entrada especificada por <número
da linha>. Se este nível for 1 ela coloca o valor verdadei -_
' ro na variável booleana especificada por <endereço boolea
-zZj no>. Caso contrário o valor falso é colocado.
4:Instrução INP: código: ODH
Formato:
OD<endereço do byte>
O objetivo desta instrução é colocar o valor de
todas as linhas de entrada em um byte, com a linha númiero
7 sendo o bit mais significativo, e armazená-lo na posição
especificada por <endereço do byte>.
5:Instrução CUT: código: OEH
Formato:
i
OE<endereço do byte>
Esta instrução coloca o byte armazenado em <ende
reco do byte> nas linhas de saída sendo o bit mais signifi
cativo do byte colocado na linha 7.
- Instruções de entrada e saída.
Estas instruções tem por objetivo colocar o con
teúdo de um endereço especificando uma palavra, um byte
ou uma seqüência de caracteres ou no terminal de vídeo ou
na impressora do laboratório, e também ler o valor de um by
te ou palavra entrados pelo terminal de vídeo.
/5ü
-Cf
.316.
1: Instrução DISW: código: OFH
Coloca o conteúdo do byte em <endereço do byte>
'•as» no terminal de vídeo.
3:Instrução DIST: código: IIH
4
Formato:
ll<endereço do string>
Coloca a seqüência de caracteres começando no
endereço dado por <endereço do string> até o caracter $ no
terminal de vídeo.
4:Instrução RDW: código: 12H
Formato:
Formato:
OF<endereço da palavra>
Coloca o conteúdo da palavra em <endereço da pa
lavra> no terminal de vídeo.
2:Instrução DISB: código: lOH
Formato:
10<endereço do byte>
9
-y
.317.
12<endereço da palavra>
5:Instrução RDB: código: 13H
Formato:
13<endereço do byte>
Coloca o byte recebido em hexadecimal do terminal
de vídeo no endereço especificado por <endereço do byte>.
6:Instrução PRIW: código: 14H
Formato:
14<endereço da palavra> *
Tem a mesma função de DISW só que para a impres
sora.
7:Instrução PRIB: código: 15H
Formato:
15<endereço do byte>
Tem a mesma função de DISB só que para a impres
sora.
Tem como função colocar o valor recebido em hexa
decimal do terminal de vídeo na palavra especificada por
<endereço da palavra>.
•*
z-é
•4
.318.
8:Instrução PRST: código: 16H
10:Instrução PRLF: código: 51H
Formato:
51
Envia um retorno do carro e uma alimentação de
linha para a impressora.
- Instruções de interrupção.
As instruções deste grupo tem por finalidade habi^
litar ou inibir interrupções do processador que controla o
robô.
Formato:
16<endereço do string>
Tem a mesma função de DIST só que para a impres
sora.
9;Instrução CRLF: código: 17H
Formato:
17
Envia um retorno do carro e uma alimentação de
linha para o terminal de vídeo.
1:Instrução EI
Formato:
.319,
código: 05H
- -J 05
Esta instrução tem por objetivo habilitar
as linhas de interrupção do robô.
todas
3y
2:Instrução Dl
Formato:
código: 06H
06
O objetivo desta instrução é inibir todas as
nhas de interrupção do robô.
11
3:Instrução EINT;
Formato:
07<número da linha>
código: 07H It
A instrução EINT faz com que a interrupção asso
ciada ao <número da linha> seja habilitada.
4:Instrução DINT;
Formato:
código: 08H
<:3
08<número da linha>
j .320.
:ZJ
^ Esta instrução inibe a interrupção associada ao
<número da linha>.
5:Instrução PINT: código: 50H
Formato:
50<número da interrupçaoxendereço da rotina>
-j
'•Zj
-Z
Esta instrução associa a rotina especificada no
endereço <endereço da rotina> à interrupção associada ao pa
râmetro <número de interrupção.
- Instrução de controle de processamento.
1:Instrução PAUS: código: OlH
Formato:
01. 4
O objetivo desta instrução é suspender a execução
de uma determinada tarefa até que a tecla 'C seja enviada
para o controlador do robô através da linha de comunicação
com o nível 1 de controle.
2:Instrução STOP: código: OOH
Formato:
Esta instrução termina a execução de uma determl
00
73
'--70 I
V
3
3
3
nada tarefa.
3:Instrução HALT: código: 02H
Foi'-mato:
02
O objetivo desta instrução é suspender a execução
-V de uma tarefa só prosseguindo quando ocorrer uma interrup
72 ção habilitada.
4:Instrução RET: código: 04H
Formato:
04
A execução desta instrução faz com que uma deter
minada rotina seja terminada retornando o controlé para o
endereço armazenado na pilha do processador.
5:Instrução CALL: código: 09H
Formato:
09<endereço da rotina>
Esta instrução desvia o controle para a rotina cu
jo início está especificado pelo parâmetro <endereço da ro
tina>.
.322.
6:Instrução WAIT: ' código: OAH
7:Instrução NOP: código: 03H
Formato:
03
-y
Zj
-y
y
• .j
Zj - Instruções de desvio.
Esta instrução não realiza nenhuma operação,
^ y
1:Instrução JUMP: código: 19H
Formato:
19<endereço do programa>
O objetivo desta instrução é desviar incondicional^
mente o controle da tarefa para a instrução colocada em
<endereço do programa>.
Z 2:Instruções de desvios condicionais a um valor:
Formato:
) *
Formato:
OA<número de segundos>
Esta instrução suspende a execução da tarefa pelo
número de segundos especificado em <número de segundos>.
.323.
<código><endereço do programa><endereço da variável>
Estas instruções desviajn o controle da tarefa pa
ra o ponto dado por <endereço do prograjna> dependendo do va
lor da variável especificada em <endereço da variável> .
São os seguintes os mnemónicos, os códigos e a
condição destas instruções:
mnemónico <código > condição de desvio
JZW lAH Se a palavra for igual a zero
JZB IBH Se o byte for igual a zero
JNZW ICH Se a palavra for diferente de zero
JNZB IDH Se o byte for diferente de zero
3:Instruções de desvios condicionais a uma comparação:
Formato :
* <código><end.do programaxend.operl><end.oper2>
O objetivo desta instrução é desviar o controle da
execução da tarefa para a posição especificada em <end. do
programa > se a condição associada ao código ocorrer para
os dois operandos especificados por <end.operl> e <end.
oper2 >.
Os mnemónicos, os códigos e as condições de des
vio para as instruções deste tipo estão mostrados a seguir.
1. P . E. N.
.324.
4 -mnemônico <código> condição de desvio tipo de oper.
JGEW lEH Se operl>=oper2 palavras
JGEB IFH Se operl>=oper2 bytes
JLEW 20H Se operl<=oper2 palavras
JT,KR 21H Se operl<=oper2 bytes
JEQW 22H Se operl=oper2 palavras
JEQB 23H Se operl=oper2 bytes
JGTW 24H Se operl>oper2 palavras
JGTB 25H Se operl>oper2 bytes
JLSW 26H Se operl<oper2 palavras
-
JLSB 27H Se operl<oper2 bytes
V
1:Instrução
Instruções de
ATRV/:
atribuições.
código: 28H
Formato:
28<end.palavra fonte><end.palavra destino> *
O objetivo desta instrução é colocar o conteúdo
da palavra especificada em <end.palavra fonte> na palavra
especificada em <end.palavra destino.
2:Instrução ATRB:
Formato:
código: 29H
29<end.byte fonte xend. byte destino
Transfere o conteúdo do byte especificado em
•V
"Z .32b.
<end.byte fonte> para o byte especificado em <end.byte des
tino>.
3:Instrução ATIW: código: 2Ah
Formato:
2A<valor imediato palavraxend.palavra destino>
Transfere o <valor imediato palavra> para a pala
vra especificada em <end.palavra destino>.
4:Instrução ATIB: código: 2BH
Formato:
2B<valor imediato bytexend.byte destino>
Transfere o <valor imediato byte> para o byte es
pecificado em <end.byte destino>. *
5:Instrução ATXW: código: 2CH
Formato:
2C<end.palavra fonte><end.do endereço da palavra destino>
Transfere o conteúdo da palavra especificada em
<end.palavra fonte> para a palavra cujo endereço é o conteú
do da posição especificada em <end.do endereço da palavra
destino >.
z3
. ..y
'••y
" y
' -y
• y
' y
.326,
6'.Instrução ATXB: código: 2DH
7:Instrução AXTW: código: 52H
Formato:
52<end.do endereço da palavra fonte><end.palavra destino>
Transfere o conteúdo da palavra cujo endereço é
especificado por < end.do endereço da palavra fonte> para à:
palavra especificada em <end.palavra destino.
8:Instrução AXTB: código: 53H
Formato:
53<end.do endereço do byte fontexend.byte destino>
" Transfere o conteúdo do byte cujo endereço é
"s, especificado por <end.do endereço do byte fonte> para o
byte especificado em <end.byte destino.
Formato:
2D<end.byte fonte><end.do endereço do byte destino>
Transfere o conteúdo do byte especificado em
<end.do byte fonte> para o byte cujo endereço é o conteúdo
da posição especificada em <end.do endereço do byte desti
no> .
zz:>
"Z
-Z
• y
- 3
"Zé
.327.
Formato:
y
2F<end.da palavraxend . do byte>
Transfere o byte menos significativo da palavra
especificada em <end. da palavra> para o byte especificado
" em <end.do byte>. *
'Z
Zé - Instruções de índices.
Estas instruções são utilizadas para calcular o
endereço de um elemento em um vetor.
1:Instrução INDW: código: 30H
Formato:
30<índice do elementoxend.basexend.do end.do elemento
Esta instrução multiplica por dois o valor de
- Instruções de conversão.
1:Instrução CVBW: código: 2EH
Formato:
2E<end.do bytexend.da palavra>
Transfere o byte especificado em <end.do byte> pa
ra o byte menos significativo da palavra especificada em
<end.da palavra> colocando O no byte mais significativo.
2:Instrução CVWB: código: 2FH
3
•y
••"3 :*-3
y
y
.328.
<índice do elemento> soma com o valor de <end.base> e colo
ca o resultado na posição especificada por <end.do end. do
elemento.-
2:Instrução INDB: código: 31H
Formato:
31<índice do elementoxend .basexend. do end. do elemento>
2J Esta instrução soma o valor do <índice do elemen
t o ao valor do <end.base> e coloca o resultado no endereço
especificado por <end.do end. do elemento.
- Instruções aritméticas.
1:Instruções de troca de sinal:
CHSW código: 54H
CHSB código: 55H . 4 -
Formatos:
:""Zé 54<end.da palavraxend.do resultado
—_Q 55<end.do bytexend.do resultado>
Estas instruções trocam o sinal da palavra ou do
^ byte especificado no primeiro parâmetro e colocam o resuj^
^ tado na palavra ou byte especificado no segundo parâmetro.
Z'Z 2:Instruções de um operando:
Formato:
z ^
z2
--3
.329.
<código><end.operando>
mnemônico < código > função
INCW 3CH incrementa palavra
INCB 3DH .incrementa byte
DCRW 3AH décrémenta palavra
DCRB 3BH décrémenta byte
. . .
'IS. -y
' ^
".y
::ZJ
• 3
3:Instruções de dois operandos:
Formato:
<código><end. operlxend. oper2><end. resul>
Estas instruções executam a operação especificada
no <código> entre os operandos cujos endereços estão esp£
cificados em <end.operl> e <end.oper2> e colocam o resulta
do no endereço especificado em <end.resul>.
Os mnemônicos e <código> junto com as funções pa
ra as Instruções aritméticas deste grupo estão mostradas
abaixo:
— ^
Estas instruções servem para incrementar ou de
crementar uma palavra ou um byte, sendo seus mnemónicos e
<código> mostrados abaixo:
zm
Z O
z:3
—O
-O
-O
.330.
...
7- -3^
mnemónicos < código > função tipo dos oper.
ADDW 32H operl+oper2 palavras
ADDB 33H operl+oper2 bytes
SUBW 34H operl-oper2 palavras
SUBE 35H operl-oper2 bytes
MUXW 36H operl*oper2 palavras
MUXB 37H operl*oper2 bytes
DIW 38H operl/oper2 palavras
DIVB 39H operl/oper2 bytes
— Instruções de operações booleanas.
1 :Instrução NOT código: 3EH
Formato :
3E<end. operxend. resul>
Esta instrução complementa logicamente o byte
especificado em <end.oper> e coloca o resultado enf <end.re
sul> .
2:Instruções lógicas de dois operanao:
Formato:
<código><end. operlxend. oper2><end. re sul >
Estas instruções executam a operação lógica defi
nida por <código> entre os dois operandos do tipo byte e
colocam o resultado no byte especificado por <end.resul>.
.331
5=3 Estas instruções estão mostrados abaixo
mnemônico < código > função
AND 4 OH operl e oper2
z-'-Z OR 3 EH operl ou oper2
zzz3
XOR 41H operl ou exclusivo
oper2
3:Instruções de comparação aritmética.
Formato:
•V
•o*
•3
— -y
<códigoXend.operl> <end.oper2> <end.resul>
Estas instruções fazem a com.paração especificada
por <código> entre os operandos especificados por <end.
operl> e <end.oper2> e colocam o resultado, verdadeiro ou
falso no byte especificado por <end.resul>.
Os mnemônicos, o <código> e a comparação executa
da pelas instruções deste tipo estão mostradas abaixo.
mnemônico <código> CCTnparação tipo de oper.
EQUW 43H operl=oper2 palavras
EQUB 44H operl=oper2 bytes
DIFW 45H operl<>oper2 palavras
DIFB 46H operl<>oper2 bytes
GEQW 47H operl>=oper2 palavras
GEQB 48H operl>=oper2 bid;es
LEQW 49H operl<=oper2 palavras
LEQB 4AH operl<=oper2 bytes
. 332,
(cont.)
mnemônico <código> conparação tipo de oper.
GTRW 4BH operl>oper2 palavras
GTRB 4CH operl>oper2 bytes
LESW 4DH operl<oper2 palavras
LESB 4EH operl<oper2 bytes
Assim, estas são todas as instruções executáveis
pelo computador de controle do robô.
Elas podem ser entradas através do comando I do
programa de aprendizado ou são geradas automaticamente pela
linguagem de alto nivel LIPRI.
-SSM
...y
APEîÎDICE II - KEffíSAGEIíS D E EHHO DA LHíGÜAGEM LIPMI
.334.
Neste apêndice listaremos as mensagens de erro
que o compilador da linguagem LIPRI envia ao detetar erros
de sintaxe .durante a compilação.
Como apresentado no capítulo V, estas mensagens
estão armazenadas no arquivo LIPERROS.TXT. Caso este arqui_
vo não esteja presente no disco de sistema quando o erro
ocorrer, apenas o número do erro é colocado no arquivo .PRN
de listagem.
Apresentaremos o número dos erros e suas mensa
gens correspondentes, sendo que o motivo do erro fica óbvio
através da mensagem.
Ao final do apêndice, mostraremos exemplos de com
pilação de programas com erros de sintaxe para ilustrar co
mo estas mensagens de erro são colocadas no arquivo de li£
tagem.
Além destas mensagens apresentadas, algumas são
colocadas diretamente no terminal de vídeo, normalmente
associadas a erros de acesso ao disco do sistema oii a cálcu
los de transformação de coordenadas que geram pontos não
atingíveis pelo robô.
Mensagens de Erros:
ERRO 1: Caracter invalido
ERRO 2: BEGIN esperado
ERRO 3: ; esperado
ERRO 4: Identificador definido anteriormente
335.
ERRO 5: Identificador não definido
ERRO 6: Identificador esperado
ERRO 7: Numero inteiro esperado
ERRO 8: ) esperado.
ERRO 9: Tipo de array esperado
ERRO 10: ( esperado
ERRO 11: . esperado
ERRO 12: ' esperada
ERRO 13: > esperado
ERRO 14: < esperado
ERRO 15: PROCEDURE esperado
ERRO 16: TO esperado
ERRO 17: THEN esperado
ERRO 18: := esperado
ERRO 19: TO ou DOWNTO esperado
ERRO 20: DO esperado
ERRO 21: OUT esperado
ERRO 22: , esperado
.336.
ERRO 23: = esperado
ERRO 24: IN, esperado
ERRO 25: Comando invalido
ERRO 26: : esperado
ERRO 27: Estouro na tabela de símbolos
ERRO 28: Variável booleana esperada
ERRO 29: Variável aritmética esperada
ERRO 30: Identificador de arquivo esperado
ERRO 31: Operador de relação esperado
ERRO 32: Variável do FOR invalida
ERRO 32: Label ja definido anteriormente
é
ERRO 33: Numero de interrupção invalido
ERRO 34: Numero de linha de entrada e saida invalido
ERRO 35: Identificador de caminho invalido
ERRO 36: Identificador de ponto invalido
ERRO 37: Identificador de string invalido
ERRO 38: Label definido mas não especificado
ERRO 39: Especificação de direção esperada (DX ou DY ou
DZ)
y**
•
.337.
A seguir apresentaremos dois exemplos de progra
•fjj mas compilados com erros de sintaxe. Os programas não tem
f^, nenhum sentido prático a não ser o de servirem de exemplos
de programas errados. Nesta linguagem , o erro sempre ocor
re no símbolo anterior ao símbolo apontado pela rotina
de erro.
' - Exemplos de programas com erros de sintaxe.
9
ERRO 40: Numero de junção invalido
ERRO 41: Ponto não encontrado no arquivo especificado
ERRO 42: Numero de pontos da trajetória diferente do encon
trado no arquivo.
.338.
í 0 BEGIN 2 1 FILE Fí ' B : T E S D F - A P R ' ; 3 í POINT Pí IN Fí; 4 1 LINE LINH I N Fl; 5 i TRAJECT TRAJ,TRAJO) IN.Fl;
^ --—^ > > > > > ERRO >>>>> 10 < esperado
> > > > > ERRO >>>>> 4 Identificador definido arit er i orment 6 1 BYTE Bll; 7 1 DISPLAY / , ' E N T R E COM VALOR D E Bl',/; 8 1 READ Bl;
rt > > > > > ERRO >>>>> 5 Identificador nao definido
9 1 I F 'Bí=0' T H E N BEGIN rt
> > > > > ERRO >>>>> 5 Identificador nao definido rt
> > > > > ERRO >>>>> 29 Variável aritmética esperada ÍO 2 HOME; i% 2 SPEED 80; Í2 2 INTERPOLATE 20; , Í3 2 FOLLOW TRAJ >60; i4 2 FOLLOW LINH >60; Í5 2 MOVE Pl; Í6 2 D E P A R T STRAIGHT PlsíOO,DZ >8Ü; 17 2 FOLLOW TRAJ2 >70;
rt > > > > > ERRO >>>>> 5 Identificador nao definido
> > > > > ERRO >>>>> 36 Identificador de caminho invalido 18 2 END; 19 1 END-19 •
NUMERO D E ERROS= 7
.339.
i 0 BEGIN 2 1 FILE Fl 'B:SOLDA.APR'; 3 í POINT PEGF IN Fl; 4 i TRAJECT TRAJ(3),TRAJ2(3) IN Fl; 5 1 LINE LINII Fí;
> > > > > ERRO >>>>> 24 IN esperado 6 1 BOOLEAN NPEGOU; 7 1 BYTE BIE; 8 1 LABEL VOLTA;
7. 9 í LABEL VOLTA; 7.
iO 1 y. PROGRAMA PRINCIPAL íí 1 % 12 i HOME; 13 í SET Ot.JT(0); Í4 1 VOLTA: 15 1 DISPLAY /,'Tecle "C" para colocar ferramenta 16 í PAUSE; 17 1 SPEED ;
> > > > > ERRO >>>>> 7 Numero inteiro esperado 18 í INTERPOLATE 20; 19 í CLOSE 0.0,NPEGOU; 20 1 IF BíE THEN BEGIN
> > > > > ERRO >>>>> 28 Variável booleana esperada 21 2 DISPLAY /,'Nao aclnou ferramenta' 22 2 OPEN; 23 2 GO TO VOLTA; 24 2 END; 25^ i RAD Bi;
> > > > > ERRO >>>>> 5 Identificador nao definido rt > > > > > ERRO >>>>> 25 Comando invalido
26 í DISPLAY /,'Tecle "C" para soldar',/; 27 1 PAUSE; 28 1 VOLTAS FOLLOW TRAJ;
rt > > > > > ERRO >>>>> 33 Label ja definido anteriormente 29 í RESET 0T(0);
> ) > > > ERRO >>>>> 21 OUT esperado rt
> > > > > ERRO >>>>> 3 ; esperado 30 í FOLLOW LINH >60; 31 i SET OUT(O); 32 i FOLLOW TRAJ2; 33 1 DISPLAY /,'Pausa para soltar ferramenta',/; 34 i PAUSE; 35 i OPEN; 36 i END. 36 0
NUMERO DE ERROS= 8
zã
APÊlffl)ICE I I I - EXEPÜPLJOS D E PKQ<SHAmÇAO D E T A B E F A S
T Í P I C A S D E K O B Î Ï S I I S D Ü S T E I A I S COM
o LAEORATÖIttO
ra-'
.-V
.341.
Neste apêndice apresentaremos alguns exemplos de
programação de tarefas típicas de robôs industriais utili^
zando os recursos disponíveis no laboratório LÍDER.
Os exemplos apresentados serão apenas ' simulação
das aplicações verdadeiras, mas simulações que ilustram os
principais problemas encontrados nas situações reais.
Mostraremos como utilizar os recursos do labora
tório em quatro tipos de aplicações industriais a saber:
1 - Estação de solda ponto robotizada.
2 - Robô como equipamento de transferência de pe
ças.
3 - Estação de solda arco robotizada.
4 - Estação robotizada de inspeção de peças com
sistema de visão.
A primeira aplicação será programada uttilizan
do-se apenas os recursos do programa de aprendizado e de
execução de tarefas descritos no capítulo IV e apêndice I
deste trabalho.
Para os outros exemplos utilizaremos a linguagem
de alto nível LIPRI para programar as tarefas do robô.
No último exemplo, utilizaremos um programa para
inspeção de peças com sistema de visão utilizando os recur
SOS descritos em [ 52].
A apresentação de cada um dos exemplos consistirá
em uma pequena descrição da tarefa a ser executada e a ma
.342,
A3.1 - ESTAÇÍÍO DE SOLDA P O M O EOBOTIZADA
O objetivo deste exemplo é simular uma estação
de solda ponto onde o robô posiciona o cabeçote de solda em
cada um dos pontos onde deve ser soldada a chapa e gera os
com.andos e os tempos para a m.áquina de soldar, de forma que
a solda seja feita dentro das especificações da chapa e do
referido equipamento de solda.
Na soldagem por pontos, as peças são solda^das em
um número de pontos localizados na linha de união desejada,
sendo um processo destinado principalmente para a união
de chapas finas.
O ciclo de soldagem por pontos se desenvolve na
seguinte seqüência:
- Ciclo de posicionamento do cabeçote.
- Ciclo de compressão.
- Ciclo de soldagem.
- Ciclo de solidificação.
neira como ela foi programada no laboratório, sendo que
uma fotografia da montagem de cada exemplo e as listagens
dos vários programas encontram-se no final de cada um de
les.
Passaremos a descrever cada uma das quatro aplica
ções, sendo que elas têm apenas a função de ilustrar a uti^
lização dos vários recursos do laboratório, não esgotando
de maneira alguma, todas as aplicações de robôs industriais
que podem ser treinadas e desenvolvidas com estes recursos.
. 343.
- Ciclo de resfriamento.
A duração típica de todo o processo de soldagem
para cada um dos pontos é de 1 a 2 segundos, sendo que a
qualidade da soldagem depende também da precisão com que os
tempos de cada um destes ciclos é controlado.
No exemplo, simularemos o cabeçote de soldagem
com um estilete tendo na sua extremidade uma lâmpada, sendo
que o ciclo de soldagem é mostrado acendendo-se esta lampa
da.
Cada um dos ciclos, a menos do de posicionamento
do cabeçote, terá no exemplo a duração de 1 segundo, sendo
que serão soldados 12 pontos, 6 em cada lateral de uma es
trutura colocada no ambiente de trabalho do robô.
Após cada soldagem com.pleta da peça, o robô se
calibra e fica esperando (comando PAUSE) um comando de cai
xa de aprendizado (tecla "C") para executar a soldagem de
outra peça.
A figura A3.1 apresenta a fotografia da montagem
realizada para a simulação deste exemplo, sendo que o pro
grama ensinado através do programa de aprendizado de tar£
fas encontra-se a seguir.
.344.
Fig. A3.1 - Robô executando uma solda ponto simu lada.
- LISTAGEM DO PROGRAMiA DE SOLDA PONTO.
.345,
-L 8000 809B
3
8000 ! MOVP 0080 8000 8000 8000 8000 8000 8000 00 80.10 : GET 00 8012 . PAUS 8013 : HOME 8014. ! JUMP 8025 8017 : RSET 00 8019 : UAIT 0001 80ÍC : SET 00 80ÍE : UAIT 0001 8021 : UAIT 0001 8024 : RET 8025 : MOVP 0060 7C07 8000 8000 8000 8000 8000 00 8035 s MOVP 0060 7 007 8163 8000 8000 8000 8000 00 8045 ! MOVP 0060 7C07 8163 813C 82BD 7D42 8000 00 8055 ! MOVP 0060 7C07 8163 82FA 82BD 7D42 8000 00 8065 : MOVP 0060 7C07 7FC1 82FA 82BD 7D42 8000 00 8075 : CALL 8017 8078 : MOVP 0060 7C07 7FE5 81C3 82BD 7D42 8000 00 8088-: CALL 8017 808B ! MOVP 0060 7C07 7FF4 8078 82BD 7D42 8000 00 809B ! CALL 8017
-L 809E 818F
809E s MOVP 0060 7C07 7FD8 7F6F 82BD 7D42 8000 00 80AE : CALL 8017 80BÍ : MOVP 0060 7C07 7F88 7E0B 82BD 7D42 8000 00 80CÍ ! CALL 8017 * 80C4 : MOVP 0060 7C07 7F0D 7CBC 82BD 7D42 8000 00 80D4 : CALL 8017 80D7 : MOVP 0060 7BB6 7F0D 7CBC 82BD 7D42 8000 00 80E7. : CALL 0017 80EA-: MOVP 0060 7BB6 7F7A 7DE2 82BD 7D42 8000 00 80FA 5 CALL 8017 80FD : MOVP 0060 7BB6 7FD3 7F15 82BD 7D42 8000 00 810D : CALL 8017 8110 : MOVP 0060 7BB6 800B 8074 82BD 7D42 8000 00 8120 : CALL 8017 8123 : MOVP 0060 7BB6 7FEE 8 ICO 82BD 7D42 8000 00 8133 : CALL 8017 8136 5 MOVP 0060 7B9D 7FCD 82E0 82BD 7D42 8000 00 8146 : CALL 8017 8149 : MOVP 0060 7B9D 7Fa2 83A0 82BD 7D42 8000 00 8159 : CALL 8017 815C : MOVP 0060 7B9D 80CC aSAO 82BD 7D42 8000 00 8Í6C : MOVP 0060 7FBA 80CC 83A0 82BD 7D42 8000 00 8Í7C : MOVP 0060 8000 8000 8000 8000 8000 8000 00 818C : JUMP 8000 818F : STOP
C G : . E ^ ^ E R G I A N U C L E A R / S P
C- M
- O
.346.
A3.2 - H O B O com EQlJIPAMEiFWO BE TRAÜÜSFERÊIÍCIA DE PEÇAS
Neste exemplo apresentaremos a aplicação de robôs
Industriais como equipamento para transferência de peças.
A aplicação consiste em um alimentador de peças
que fornece um sinal para o robô informando quando existe
alguma peça presente. Este alimentador pode fornecer duas
peças de tamanhos diferentes, uma com seção quadrada de
3,3 cm e outra com seção circular de 2,5 cm. de diâmetro.
A tarefa do robô consiste em: ao receber o sinal
de peça presente, pegar a peça com sua garra servo-controla
da, identificar através dos comandos de controle da garra
o tipo de peça pegada e colocar em caixas separadas cada
uma destas peças. Se não existir mais nenhuma peça, o robô
se calibra e fica aguardando a chegada de mais peças.
O programa foi implementado utilizando a linguagem
de alto nivel LIPRI, sendo que os pontos importantes da ta
rel'a foram editados com o programa editor de figuras, geran
do o arquivo TRANSF.APR. i
A fotografia da figura A3.2 apresenta o robô exe
cutando a tarefa e a seguir estão apresentadas as listagens
tanto do arquivo TRANSF.APR como do programa em LIPRI que
executa a referida tarefa. O significado de cada um dos el£
mentos e da ação de cada um dos comandos utilizados encon
tra-se detalhado nos comentários do programa apresentado.
.347,
-3
Fig.A3.2 - Robô transferindo peças de um alimenta dor para caixas.
.348
- LISTAGEM DO ARQUIVO TRANSF.APR:
TYPE TRANSF.APR
POINT ZZ ORIG
JUNC :Z S;8000 S8000 48000 48000 48Ü00 48000
TRAJECT z PEGPECA
05 I— JUNC 1 ---- 47804 58000 48000 48000 48000 48000
%7BC4 18000 48000 4860 E 47930 48000 •Z S7BC4 ?>80D0 483C6 486CE 47930 48000
S7BE2 47E73 4835B 486CE 47930 48000 SÍ7BE2 SÍ7E73 48323 486CE 47930 48000
- TRAJECT —'' TIREPECA 03 JUNC g)7BE2 58097 48323 486CE 47930 475Í4 57BE2 48097 47FFE 486CE 47930 475Í4
-Z) Í>7BE2 48097 47FFE 48684 47449 S75Í4 9-' TRAJECT
PECAí — • 02
JUNC SÍ7BE2 48097 47FFE 48BB4 47449 475 í 4 48266 48097 47FFE 48BB4 47449 475Í4
Z TRAJECT PECA2 — 02 JUNC 47BE2 48097 47FFE 48BB4 47449 47514
- 47DF0 48097 47FFE 48BB4 47449 475Í4 TRAJECT TRAFIM 02 JUNC 47DF0 48097 47FFE 47FA3 48057 47968 48000 48000 48000 48000 48000 48000
.349.
LISTAGEM DO PROGRAMA EM LIPRI PARA TRANSFEREN CIA DE PEÇAS.
.3..-^
'ZZ3 .350.
1 O BEGIN 2 i
Z-'^ 3 í y. Programa para transferencia de pecas
" 3 ... 4 í '•'^ 5 1
Zj 6 í y. Declarações 7 í
, ^ 8 í FILE DADOS'BíTRANSF.APR'; 9 1
10 1 % DADOSí Arquivo com as figuras da tarefa 1 1 1
' ^ 12 1 POINT ORIG IN DADOS; -2 13 1
14 1 % ORIG: Ponto de origem do robo r.O 15 1
16 1 TRAJECT PEGPECA(5),TIREPECA(3), r 17 1 PECAí(2),PECA2(2),TRAFIH<2) I N D A D O S ;
... - 18 1 ' 19 1 % PEGPECAs Posiciona garra no alimentador
... 20 í y. TIREPECAs Tira uma peca do alimentador 21 1 % PECÁIS Trajetória para cubo
rZ 22 1 % PECA22 Trajetória para cilindro 23 1 % T R A F I M : Trajetória final 24 1
^ ^ 25 1 BOOLEAN NPEGOU; - 26 1
., 27 1 % N F E G O U s Variável de teste de pegada 28 1
- 29 1 LABEL VOLTA, TENTADENOVO; _ 30 1 V 3i í % IN(0): Igual a O tem peca
32 ' 1 % Igual a 1 nao tem peca 33 1 ' *
- 2 34 1 35 1 % Comee o dos comandos
. 36 1 _ 37 1 % Mensagem de inicio
38 1 ^ 39 1 DISPLAY /,'PROGRAMA DE TRANSFERENCIA DE PECAS',/;
40 1 41 1 42 1 % Define velocidade de default 43 1 44 1 SPEED 100; 45 1 46 1 VOLTA: 47 í 48 1 y. Cal i bra robo 49 1 50 1 HOME; 51 1 52 1 y. Espera peca no alimentador 53 1 54 1 UAIT NOT INCO); 5 1
Z3
Í3 .351.
•^3 56 í 57 í 58 í 59 í 60 2
-:r.-5 6Í 2 62 2
:::3 63 2 _ 64 2
65 2 66 67
2 2
ZZ 68 2 69 2 70 2 7í 2
zz 72 3 73 3 74 3 75 3 76 3 77 3 78 2 79 3 80 3 8í 3 82 3 83 4 84 4 85 4 86 4 87 ' 4 88 3 89 4 90 4 9í 4
_ 92 4 93 3 94 3 95_ 2 96 2 97 2 98 2 99 2 00 2 Oí 2
-V 02 2 03 2 04 í 05 í 06 í 07 í 08 í 09 í
% Tem peca, vai pegar UHILE NOT IN(0) DO
BEGIN
FOLLOW PEGPECA >80;
'/. Tenta pegar a maior
TENTADENOVO:
GLOSE í9.O,NPEGOU;
IF NOT NPEGOU THEN
BEGIN
% Peca cjuadrada
FOLLOW TIREPECA; FOLLOW PECA2; END ELSE
BEGIN
CLOSE 0.0,NPEGOU;
IF NPEGOU THEN BEGIN % Espera sinal de tem peca OPEN; WAIT NOT IN<0); GO TO TENTADENOVO-END ELSE
BEGIN * v. Peca e cubo FOLLOW TIREPECA; FOLLOW PECAÍ; END;
END;
% Larga peca
OPEN;
% VAI PARA ORIGEM
MOVE ORIG >80;
END; 7. WHILE
7. Nao tem mais pecas
GO TO VOLTA;
END.
.352,
::0 A3.3 - ESTAÇÃO DE SOiLDA A ARCO RGBQTIZADA
A operação de soldagem, de boa qualidade, a arco
elétrico requer um perfeito controle da posição e velocida
de da pistola ao longo da trajetória a ser soldada, exigin
do do soldador uma grande habilidade e perfeito uso de seus
sentidos em ambientes extremamente agressivos (calor, fuma
ça, faiscamento, radiações ultra-violeta) e desconfortáveis
(roupas especiais de couro e máscaras de proteção).
Esta é uma aplicação de robôs industriais que vem
sendo mais rapidamente desenvolvida principalmente pelo des
conforto e dificuldade da operação, que refletem diretamen
te na qualidade da solda por operadores humanos, e também
por não requerer modificações essenciais no equipamento pa
di-'ao de solda a arco. A adaptação se resume numa fixação
adequada da pistola de soldagem no punho o robô e a geração
de alguns sinais de sincronismo entre o equipamento de sol^
da e o controlador do robô.
" r " - J
Neste exemplo, utilizaremos o robô para simular
uma tarefa de solda a arco onde duas bordas de um.a peça d£
vem ser soldadas em uma chapa posicionada no ambiente de
trabalho do robô.
A pistola de soldagem é simulada por um estilete
fixado na- garra do robô, tendo uma lâmpada- na^sua—ex tremi da
de, sendo que o arco é mostrado acendendo-se a lâmpada.
Esta tarefa é programada utilizando-se a lingua
gem de alto nível LIPRI, onde os pontos, linhas e trajeto
rias, componentes do processo, foram editadas no arquivo
SOLDA.APR utilizando-se o editor de figuras apresentados no
capítulo IV.
•<»>
•;;zZ
.353.
Inicialmente o robô se calibra e fica esperando
a tecla 'C no terminal de vídeo para iniciar a soldagem.
Uma vez comandado, o robô realiza as duas soldas
nas laterais da peça, executando a interpolação linear en
tre os dois pontos de definição de cada lateral, e depois,
leva a pistola para uma posição de limpeza da ponta. Uma
vez executada a lim.peza, ele se calibra de novo e espera um
novo comando para iniciar outra soldagem.
A figura A3.3 apresenta a fotografia do robô ex£
cutando a soldagem de uma das laterais da peça. A listagem
do arquivo de figuras e do programa em LIPRI utilizado en
contram-se a seguir, onde os comentários esclarecem o sig
nificado de cada elemento e comando do programa.
3 .354.
Fig. A3.3 - Robô executando uma solda a arco.
-"3
- LISTAGEM DO ARQUIVO SOLDA.APR:
.355
TRAJECT POSFER 04 JUNC 9Í7E87 48000 48000 48000 48000 48000 Î7E87 48000 40000 48CÓ2 47FÍ5 48000 SÍ7F5D 47E2D 48039 48C62 47FÍ5 48000 S7F5D 47E2D 4809C 48CÓ2 47FÍ5 48000 LINE BORDí JUNC í)7F5D 47E2D 4809C 48C62 47FÍ5 48000 57F34 47F97 48324 48C62 47FÍ5 48000 TRAJECT P03LIMP 05 JUNC g;7F34 4807C 48324 48C62 47FÍ5 48000 ÍL7F34 4807C 48324 487 3F 479FD 48000 Ï7F34 4807C 48324 484DA 47C5F 48000 47FC8 47FAÍ 484A7 4a4DA 47C5F 48000 9>7FC8 47F46 484A7 484DA 47C5F 48000 TRAJECT P0SB0R3 04 JUNC 48044 48002 484A7 484DA 47C5F 48000 48044 48002 484A7 47EB0 47Ó33 48000 48ÍÍ6 47FÍ4 484A7 47EB0 47633 48000 480DE 47FÍ4 484A7 47EB0 47633 48000 W N E • — - — -
B0RD3 JUNC 480DE 47FÍ4 484A7 47EB0 47633 48000 480A5 47E2F 48202 47EB0 47633 48000 TRAJECT TRAJF 04 JUNC 480A5 48092 48202 47EB0 47633 48000 4B0A5 48092 48202 48377 47AF9 48000 47FCÍ 48092 48202 48377 47AF9 48000 48000 48000 48000 48000 48000 48000
, .356,
LISTAGEM DO PR0GRAI»1A EM LIPRI PARA A SOLDAGEM A ARCO,
.357.
¿.o z^ í 0 BEGIN
c 3 í % Programa para executar solda a arco
'-'3 5 \ V. Declarações
6 7 FILE DADOS 'BsSOLDA.APR'; 8 ^
9 i % DADOS: Arquivo com os pontos da tarefa "Z ÍO i
ii i TRAJECT POSFER(4),P0SLIHP<5),P0SB0R3(4),TRAJF(4) 12 i IN DADOS-13 1
,—^ í-4 i % POSFER: Posiciona pistola na borda 1 da peca
" Zi 15 1 % P0SB0R3: Posiciona pistola na borda 3 da peca 16 i 7. POSLIMP: Posiciona pistola no lugar de limpez
OÍ 17 i % TRAJES Trajetória de fim de solda 18 i 19 i LINE B0RD1,B0RD3 IN DADOS; 20 1 21 i 7. BORDls Primeira borda a ser soldada 22 i % B0RD3S Segunda borda a ser soldada 23 i 24 1 7. OUT(0>s Igual a 1 pistola desligada 25 i % Igual a 0 pistola ligada 26 1 27 i PROCEDURE SOLDE; 28 i % 29 1 % Liga equipamento de solda
- W 30 1 % 31 i BEGIN , 32 2 RESET OUT(O);
-V 33 2 WAIT 1; * _ 34 2 END;
35 1 36 i PROCEDURE DESLIGSOLD; 37 i 7. 38 1 7. Desliga equipamento de solda 39 í %
"z 40 i BEGIN 41 2 SET OUT<0); - 42 2 WAIT 1; 43 2 END; 44 i 45 i 7. Inicio dos comandos 46 i 47 1 % Desli ga p i stola 48 i 49 1 SET OUT(O); 7. Desliga solda. 50 i 51 i 7. Vai calibrar robo 52 i 53 1 DISPLAY /,'CALIBRANDO ROBO',/; 54 1 HOME; 55 i
56 57 58' 59 60 6í 62 63 64 65 66 67 68 69 70 7Í 72 73 74 75 76 77 78 79 80 8í 82 83 84 85 86 87 88 89 90 9í 92 93 94 95 96 97 98 99 ÍOO ÍOí Í02 Í03 ÍÜ4 105 Í06 107 108 109 110
.358.
Espera tecla 0 no terminal
DISPLAY /,'TECLE: "C" PARA SOLDAR',/; PAUSE;
y. Ue1oc id ad e e n umer o d e i n t er p o1ac oes
SPEED i00; INTERPOLATE 20;
y. Posiciona pistola na primeira borda
FOLLOW POSFER;
% Liga pistola e espera arco
SOLDE;
% Segue a borda soldando
FOLLOW BORDl >400;
% Desl i ga p i st ola
DESLIGSOLD;
% Posiciona pistola na segunda borda
FOLLOW P08B0R3;
% Ligapistola
SOLDE: *
îegue segunda borda soldando
FOLLOW B0RD3 >400;
y. Desl i ga p i st ol a
DESLIGSOLD;
% Pos iciona pistola no limpador
FOLLOW POSLIHP; WAIT 3;
% Retorna pí\ra origem
FOLLOW TRAJF;
% MensageMi i de fim
DISPLAY /,'FIM DA SOLDA',/; END.
:0 .359.
A3.4 - ESTAÇJiO ROBOTIZ/ÍDA BE UüSPEÇAO BE PEÇAS COM SISTEMA
BE YISAO
O objetivo deste exemplo é apresentar a utiliza
ção do robô na implementação de um.a estação automática de
inspeção de peças com sistema de visão.
A aplicação consiste em um alimentador de peças,
a serem inspecionadas com respeito ao seu número de furos,
que fornece um sinal para o controlador do robô indicando
quando existe alguma peça. presente.
A tarefa do robô é a seguinte: ao receber o sinal
de peça presente, pegar a peça e colocá-la na posição de
inspeção, em baixo do sensor de visão do laboratório e se
retirar da área de inspeção. Quando isto ocorrer, o contro
lador do robô envia um sinal para o processador de visão e
a inspeção é realizada, recebendo então, do processador, a
informação do número de furos encontrados na peça. Dependen
do desta informação, o robô pega novamiente a peça e a colo
ca em uma caixa de peças sem furos ou em outra caixa de pe
ças com furos. *
O processador de visão é implementado no nível 1
de controle, sendo que a sua descrição encontra-se em [52].
Para esta tarefa, o importante são as suas entradas e saí
das a saber:- - "
- Ao se comandar o início da inspeção, o processa
dor de visão envia o valor, de uma variável
booleana, verdadeiro (diferente de O) para o
controlador do robô, indicando o início da ins
peção;
- Quando o robô tiver colocado uma peça em baixo
.360.
da camera, ele envia para o processador de vi^
são um caracter 'V, indicando o inicio da veri^
• ficação da peça;
- Quando o sistema de visão tiver terminado a
inspeção da peça, ele manda para o controlador
do robô o número de furos encontrados na peça,
e o robô, com esta informação, coloca a peça
na sua caixa correspondente, repetindo então o
ciclo;
- Quando não existirem mais peças no alimentador,
o robô se calibra e fica esperando um com.ando
de reinício da inspeção.
O robô foi program^ado utilizando a linguagem LI_
PRI e os dados de posicionamento foram gerados no arquivo
INSPEC.APR pelo programa editor de figuras.
Este exemplo serve para ilustrar a sincronização
do^robô e do sistema de visão através da linha de comunica
ção serial com o nível 1 de controle. *
A fotografia da figura A3.4 apresenta o robô e a
configuração do laboratório para este sistema de inspeção
de peças, sendo que a linguagem do arquivo INSPEC.APR e do
programa elñ LIPRI utilizados para ^ execliçãõ^da tarefa" ^n
contram-se a seguir.
Os comandos de visão descritos no capítulo V não
foram utilizados por não estarem totalmente implementados
ainda, sendo que o processamento da imagem foi feito por
um programa especialmente desenvolvido para o exemplo.
3
.361,
A
Fig. A3.4 - Estação robotizada de inspeção de pe
ças com sistema de visão.
- LISTAGEM DO ARQUIVO INSPEC.APR:
.362,
Í800Ü 48000 48000 47E8D
48000 48000 48000 48000 48000 486F2 4790E 48000 48342 486F2 4790E 48000 48342 486F2 479ÜE 48000
48ÍF9 4BÍF9 48ÍF9 47EAA
2 4790E 4752D 47F90 48B95 474ÓB 4752D 47F90 48B9S 474ÓB 4752D 47F90 48B95 4746B 4752D
47F90 48B95 474ÓB 47004 47F90 48B95 474ÓB 47CC4
TRAJECT ALIM 04 JUNC 47BDD 47BDD 47BDD 47BDD TRAJECT COLPEC 04 JUNC 47BDD 47BDD 489C8 489C8 TRAJECT AFASTE 02 JUNC 489C8 47EAA 489C8 4846B TRAJECT LEVANTE 02 JUNC 489C8 47E84 489C8 4BÜ8Í TRAJECT SEMFURO 03 JUNC 489C8 47E6F 47E6F TRAJECT FURADA 03 JUNC 489C8 48273 48273 POINT ORIG JUNC 48000 48000 48000 48000 48000 48000
47F90 48B95 474ÓB 47406 47F90 48B95 4746B 47406
4808Í 4808Í 4808 í
47F90 48B95 4746B 47406 S7F90 48B95 4746B 47406 48Í 48B95 4746B 47406
48081 4808 í 482D8
47F90 48B95 4746B 47406 47F90 48B95 4746B 47406 47F90 48B95 474ÓB 47406
.363.
- LISTAGEM DO PROGRAMA EM LIPRI PARA INSPEÇÃO DE
PEÇAS. *
.364.
í 2 3 4 5 6 7 8 9
ÍO ií Í2 Í3 i4 15 16 17 18 19 20 21 22
26 27 28 29 30 31 32 33 34 35 36 37 38 39
AQ 41 42 43 44 45 46 47 48 49 50 51 52 53 54
O DEGIN 7. 7. P r o g r E u i i í t f>ara i n s i p c c a o der p e c a s 7. com si st. de visão % 7. Inicio das d e c l a r a ç õ e s % %
FIÍ..E DADOS'E): INSPEC.APR' ;
7. DADOSs Arquivo de dados das figuras
POINT ORIG IN DADOS;
7. ORIG: Ponto de origem do robo.
TRAJECT ALIM(4),C0LPEC(4),AFASTE<2),LEVANTE(2), FURADA(3),SEMFUR0<3) IN DADOS;
% % 7. 7. 7, 7.
ALIM: Posiciona garra na peca COLPEC: Coloca peca no sistema de inspeção AFASTE: Robo se retira da area de inspeção LEVANTE s Robo levanta a peca FURADA: Trajetória de pecas com furos SEMFUROsTrajetori a de pecas sem furos
BYTE NUMFUROS;
7. NUMFUROS : Var i avel lida do sistema de visão
BOOLEAN NPEGOU,COMECE;
% %
% 7. %
NPEGOU COMECE
IN(0)
:Variavel do resultado da pegada sVariavel de comando para inicio
s igual a ü tem peca igual a 1 nao tem peca no ali ment ador
LABEL VOLTA; 7. 7. SPEED 100;
HOME;
VOLTAS READ COMECE;
7. Velocidade de default
% Robo se calibra
% Espera comando do sistema de visão
3 3
IF COMECE THEN BEGIN UHILE NOT IN<0) DO
BEGIN
7. Posiciona garra no alimentador
ÒZ
56 3 57 3 FOLLOW ALIM ; 58 3 59 3 '/. Comanda fechamento da garra 60 3 6Í 3 CLOSE 0.0,NPEGOU; 62 3 WHILE NPEGOU DO 63 3 BEGIN % Nao achou peca 64 4 OPEN; '/. Abre garra 65 4 WAIT NOT IN<0); % espera sinal de 66 4 CLOSE 0-0,NPEGOU; 7. Tenta outra vez
- 67 4 END; 68 3 69 3 7. Coloca peca no sistema de visão 70 3 7í 3 FOLLOW COLPEC ; 72 3 73 3 7. Larga peca 74 3 75 3 OPEN; 76 3 77 3 % Se afasta da area de inspeção 78 3 79 3 FOLLOW AFASTE ;
.A 80 3 — 8í 3 % Comanda inspeção mandando V
82 3 83 3 DISPLAY 'V; 84 3 85 3 % Le numero de furos do sistema de visão 86 3 87 3 READ NUMFUROS; 88 3 89 3 7. Volta para pegar peca 90 3 9í 3 FOLLOW AFASTE BACK ; 92 3 93 3 7. Pega peca 94 3 95 3 CLOSE 0.0,NPEGOU; 96 3 FOLLOW LEVANTE ; 97 3 98 3 /í Segue trajetória dependendo do numero de furos 99 3
100 3 IF 'NUMFUROS=0' THEN 101 3 BEGIN 102 4 FOLLOW SEMFURO ; 103 4 OPEN; 104 4 END ELSE
• ^ 105 3 BEGIN 106 4 FOLLOW FURADA ; 107 4 OPEN; 108 4 END;
( 109 3 % Volta para origem 110 3
D ; V . ; . : : . . . : :;/V::;O;.;,l. zí L N E R G Í A N U C L E A R , S P ^
L P. E . N.
.366
iíí 3 í Í2 3
. . • ^ ÍÍ3 2 % Nao tem mais pecas . . • ^
í. i 4 2 " ÍÍ5 2 HOME; ií6 2 ÍÍ7 2 V. Sinaliza fim para o ií8 2 ií9 2 DISPLAY 'F'; Í20 2 END; Í2Í 1 122 1 % Volta para o inicio 123 1 124 i GO TO VOLTA; 125 1 END. 125 0
MOVE ORIG >64; END;
NUMERO DE ERROS= O
.367.
BIBLIOGRAFIA
[ 1 ] - ALBUS, J.S. - Brains, Behaviors and Robotics - Byte
book, McGraw, N.H., 1981.
[ 2 ] - AMARAL, P.F.S.; CAMPOS, G.L.; PINTO, B.G.M. - "Ro
bôs Industrials" - Tutorial 4, I CONAI, 11-15
Julho, 1983, pp.88-105.
[ 3 ] - AMARAL, P.F.S.; PINTO, B.G.M.; MOSCATO, L.A.; CUG
NASCA, C.E, - "0 Desenvolvimento e a Construção
de um Robô Industrial do Tipo Braço Articulado"
- Anais do I Congresso Nacional de Automação In
dustrial, 11 a 15 Julho, 1983, pp.342-349.
[ 4 ] - ASEA - Industrial Robot System for Inspection ASEA,
- CF 09-6006E, Mar. 1983.
[ 5 ] - ASEA - IRB Adaptative Torch Positioner for Arc
Welding - ASEA CK 09-1207E, April 1983.
[ 6 ] - AYLOR, J.H.; et all - "The Impact of Microtomputers
on Devices to Aid the Handicapped" - Computer,
IEEE, Jan. 1981, pp.35-40.
[ 7 ] - BIRK, J.R.; KELLEY, R.B.; MARTINS, H.A.S. - "An
Orienting Robot for feeding Workpieces Stored in
Bins" - IEEE Transactions on Systems Man and
Cybernetics, Vol. SMC 11, ne2, Feb. 1981, pp.151-
160.
[ 8 ] - BONNER, S.; SHIN, K. - "A Comparative Study of
Robot Languages" - Computer, Dec. 1982, pp.82-96.
.368.
^ [ 9 ] - BRADY, M. et All - Robot Motion: Planning and Con
Z' trol - The MIT Press, 1983.
[lO] - BRONSHTEIN, L.; SEMENDIAEV, K. - Manual de Matemati^
cas para Ingenieros y Estudiantes - MIR, 1973.
Zj
[11] - COIFFET, P. - Robot Technology: Interaction with the
Environment - Prentice Hall Inc., 1981.
[12] - CLOT, J. - Les Capteurs en Robotique - Note LAAS
n5 82065, Juin 1982.
[13] - CUGNASCA, C.E. - Desenvolvimento de um Sistema Inte
rativo para Programação de Robôs Industriais
por Aprendizado de Tarefas - Dissertação de Mes
trado. Preliminar, Escola Politécnica da USP,
1985.
[14] - DIGITAL RESEARCH - CP/M 2.0 Interface Guide Digital
Research, 1979.
[15] - DIGITAL RESEARCH - PASCAL/MT+: User's Guide - Digital
Research, 1981.
[16] - ENGELBERG, J. - Robotics in Practice - AMACOM,
1980.
[17] - FEATHERSTONE, R. - "Position and velocity transfer
mations between robot end-effector coordinates
and joint angles" - The International Journal of
Robotics Research, Vol.2, n^2. The MIT Press,
Summer 1983, pp.35-45.
"3 .369.
[IQ] ~ FERREIRA, E.P. - Contribuition à L' Indentification
de Paramètres et à la Commande Dynamique Adapta
:3 tive des Robots Manipulateurs - Thèse Docteur-
Ingenieur, Université Paul Sabatier, 1984.
.•- [19] - FERRETI, M. - "Le Dossier de la Robotique Indus
trielle: vers la Generation 3" - Nouvel Autonatis
me, Nov. 1978, pp.315-327.
3 [20] - FLORA, P.C. - Robotics Industry Directory - Robo
Z tics Industry Directory, 1982.
[21] - FRANKLIN, J.W.; VANDERBRUG, G.L. - "Programming
Vision and Robotics Systems with RAIL" - Robot
" VI, Conference Proceedings, 2-4 Mars 1982, pp.
392-406.
C [22] - GAUDIO, I.D.; D'AURIA, A. - "Mechanical Behavior of
2^ Sigma Robot" - Proceedings of the 9th Internatio
nal Symposium on Industrial Robots, March 13-15,
1979, pp.601-619.
é
[23] - GRIES. D. - Compiler Construction for Digital Com
puters - John Willey Inc., 1971.
[24] - GRUVER, W.A.; SOROKA, B.I.; CRAIG, J.J.; TURNER,
T.L. - "Industrial Robot Programming Languages:
A Comparative Evaluation" - IEEE Transaction on
System Man and Cybernetics, Vol. SMC-14, n^4,
July/August 1984, pp.565-570.
[25] - HOGAN, T. - OSBORNE CP/M User's Guide - McGraw-Hill
Inc., 1981.
.370.
[26] - INTEL - MOS 80/85 Family User's Manual - Intel Cor '-^ poration, 1979.
••'3 [27] - INTEL Peripheral Design Handbook - Intel Corpora 2) tion, 1979.
^ [28] - INTEL - Component Data Catalog - Intel Corporation 1981.
3 [29] - INTEL - EEPROM - Application Guide - Intel Corpora Z tion, 1981.
_ [30] - JARVIS, J.F. - "Robotics" - Computer, Oct. 1984, pp. 283-292.
[31] - JOHNSON, R. - "Designing with Optical Shaft Enco O ders" - Robotics Age, Vol.5 n^ 3, May/June 1983, C pp.27-34.
o [32] - KAGER, T.M. - "Robot Implementation and the Domino , Effect" - Robot VI, Conference Proceedings,
^ 2-4 Mar. 1982, pp.184-206. '*
3 [33] - KEMPF, K.G. - "Robot Command Languages and Artlfj^ 3 cial Intelligence" - Robot VI, Conference Pro ^ ceedings, 2-4 Mars 1982, pp.369-391.
_ [34] - KOREN, Y.; ULSOY, A.G. - "Control of DC servo-motor Driven Robots" - Robot IV, Conference Proce£
^ dings, 2-4 Mars 1982, pp.184-206
C [35] - LAURGEAU, C. - "Un defi Industriel: Historie et — Geographie des Robots et de leurs Applications" ^ - Le Nouvel Automatisme, Dec. 1980, pp.37-46.
Zj
.371,
[36] - LEIFER, L. - "Rehabilitative Robots" - Robotics Age,
Vol.3, n 5 3, May/June 1981, pp.4-15.
[37] - LIEBERMAN, L.I.; WESLEY, M.A. - "AUTOPASS: An
Automatic Programming System for Computer Con
trolled Mechanical Assembly" - IBM J,Research
and Development, Vol.21 n^ 4, July 1977, pp.321-
333.
[38] - MEGAHED, S.M. - Contribuition à la Modélisation
Géométrique et Dynamique des Robots Manipula
teurs à Structure de Chaîne Cinématique Sim.ple
ou Complexe - Thèse Docteur ès Sciences, Univer
site Paul Sabatier, 1984,
[39] - MICROPRO - WORDSTAR, User's Manual - MicroPro Inter
national Corporation, 1982.
[40] - MICROSOFT - Basic Compiler User's Manual - Micro
soft, 1981.
[41] - MOTIWALLA, S. - "Continuous Path Control * with
Stepping Motors" - Robotics Age, Vol.3, r\^A, Ju
ly/August 1981, pp.28-36.
[42] - NAKANO, Y.; FUJIE, M.; H O S A D A , Y . - "HITACHI'S Ro
bot Hand" - Robotics Age, July 1984, pp.18-20.
[43] _ OKADA, T. - "The development of an optical di£
tance sensor for robots" - The International
Journal of Robotics Research, Vol.1, n94. The
MIT Press, Winter 82, pp.3-14.
.372.
[44] - PARK, W. T. - "Minicomputers Software Organization
for Control of Industrial Robots" - Proceedings
of COMPSAC, Oct. 27-31 1980, pp.164-171.
[45] - PAUL, R.P. - Robot Manipulators: Mathematics, Pro
gramming and Control - The MIT Press, 1981.
[46] - PEREZ-LOZANO, T. - "Robot Programming" - Proce£
dings of The IEEE, Vol.71, ns 7, July 1983, pp.
821-841.
[47] - RAHMAN, M.F. - An Experimental Study of the Perfor
manee of Variable Reluctance Type Stepping Mo
tors - Ph.D. Thesis, The University of Manches
ter Institute of Science and Technology, Oct.
1978.
[48] - ROVETA, A. - "On Specific Problem of Design of
multipurpose mechanical Hands in Industrial
Robots" - Proceedings of the 7th International
Symposium on Industrial Robots, 19-21 Oct. 1977,
pp.337-343. *
[49] - SCOPUS - Microscopus Macro Assembler - Manual do
Usuário - Scopus Tecnologia, p-970.1257.87.A.
[50] - SCOPUS - Manual de Programação FORTRAN -Microscopus
- Scopus Tecnologia, p.970.1257.90.A:
[51] - SHIN, K.G.; MALIN, S. - "A hierarchically Distri_
buted Robot Control System" - Proceedings of
the COMPSAC , Oct.27-31 1980, pp.814-820.
D
O
"3 .373.
[52] - SOUZA, A.S - Sistema de Visão Robótica baseado em
Microcomputadores - Tese de Doutoramento Preli^
minar. Escola Politécnica da USP, 1985.
O [53] - SUPERIOR ELECTRIC - DC Stepping Motors - Catalog -
^ Superior Eletric, 1979.
^ [54] - TAYLOR, R.H.; GROSSMAN, D.D - "An integrated Robot
System Architecture" - Proceedings of the IEEE,
3 Vol.71,, ne 7, July 1983, pp.842-856.
"Z [55] - TETSUGU, Y. "The Expanding Applications of Precision
Micromotors" - J.E.;, Nov. 1981, pp.45-53.
^ [56] - TEXAS - The TTL Data Book for Design Engineers
^ Texas Instrumnests Inc. 1976.
Z [57] - TEXAS - The Optoelectronics Data Book for Design
Engineers - Texas Instruments Inc., 1978.
[58] - TOGAI, M. - "Japan's next generation of Robots"
Computer, March 1984, pp.19-25.
[59] - TORRES, M.C. - Etude et Realization D'un Capteur
Permettant La Mesure Precise de La Position
D'un Objet Dans L'Espace. Applications, Thèse
Docteur de Spécialité, E.E.A., Université Paul
Sabatier, 1979.
[60] - UNIMATE - Puma Robot: Equipment and Programming
Manual - CONDEC - Unimation Robotics, May 1982.
[61] - UNIMATE - Puma Robot: User's Guide to VAL - CONDEC-
Unimation Robotics, May 1982.
3 . 3 7 4 .
•f [ 6 2 ] - WEITZIvlAN, C . - Distributed Micro/Minicomputers Sys ^ tems: Structure Implementation and Applications 3 Prentice Hall, New Jersey, 1980.
[ 6 3 ] - ZAKS, R . - The CP/M Handbook with MP/M - SYBEX Inc., 1980,
Top Related