robo aranha

Click here to load reader

Embed Size (px)

Transcript of robo aranha

Leonardo Torati RA: 0205022 8 SEM

INTERFACE PARA CONTROLE DE MOVIMENTOS DE UM ROB TIPO ARANHA COM QUATRO PATAS (AR+)

Jaguarina 2005

1

Leonardo Torati RA: 0205022 8 SEM

SISTEMA DE CONTROLE DO ROB AR+

INTERFACE PARA CONTROLE DE MOVIMENTOS DE UM ROB TIPO ARANHA COM QUATRO PATAS (AR+)

Monografia apresentada disciplina Trabalho de Concluso de Curso, do Curso de Cincia da Computao da Faculdade de Jaguarina, sob a orientao do Prof. Andr Mendeleck, como exigncia parcial para concluso do curso de graduao.

Jaguarina 2005

2

TORATI, Leonardo. Interface para controle de movimentos de um rob tipo aranha com quatro patas. Monografia defendida e aprovada na Faculdade de Jaguarina FAJ no dia 16.DEZ.05 pela banca avaliadora:

__________________________________________________________________________ Prof. Andr Mendeleck Orientador Faj

__________________________________________________________________________ Prof. Presidente da Banca Avaliadora

__________________________________________________________________________ Prof. Convidado

3

AGRADECIMENTOS

Gostaria de agradecer a todas as pessoas que, de alguma forma, colaboraram para a realizao desta Monografia. Em particular, gostaria de agradecer: ao Prof. Andr Mendeleck, orientador do trabalho, por acreditar na minha capacidade de realizao e por compartilhar um pouco do seu conhecimento comigo, orientando sabiamente os meus passos para a realizao desta Monografia. aos Professor Paulo por ensinar a essncia da criao de uma monografia e aos professores Peter e Silvio, por me ajudarem no desenvolvimento das tcnicas de programao empregadas no desenvolvimento do software de controle do rob tipo aranha.

4

RESUMOFace s exigncias por qualidade e produtividade, cada vez mais est se automatizando os processos produtivos. Por exemplo, tornos com controle numrico, robs de montagem e soldagem, permitem a uniformizao da qualidade e flexibilizam a linha da produo. Por outro lado, robs so utilizados para explorar lugares onde, por enquanto, o homem ainda no pode ir, como o fundo do oceano ou os planetas "prximos" da Terra. Para isso, esses robs precisam movimentar-se de forma autnoma, geralmente sob a superviso de um sistema computadorizado que est embarcado no mecanismo, contudo, algumas aplicaes necessitam de intenso processamento que realizado externamente. Assim, deve-se estabelecer um meio de comunicao. Existem vrios meios de realizar a comunicao do rob com o computador. A comunicao atravs da porta serial um exemplo de comunicao utilizado e o rob precisa ser capaz de interpretar os comandos enviados pelo computador. Para o rob tipo aranha com quatro patas (AR+) desenvolvido neste projeto, so utilizados servo-motores para permitir o movimento das patas e o sistema desenvolvido (ARc) para controlar o rob permite a criao de seqncias de movimentos. As seqncias criadas pelo sistema ARc podem ser salvas e reutilizadas. O sistema foi desenvolvido na linguagem Java e utiliza o banco de dados Firebird para armazenar as seqncias de movimentos.

Palavras-chave: ROBTICA, ROB ARANHA, SERVO-MOTOR.

5

ABSTRACT

In this work we developed a system and a Man Machine Interface to control the moviments of a four legs mobile robot called spider robot. The system can move the robot front, back, left and right sides. The robot has four legs with two articulations each. The actuators are servo-motors with position control. The system was developed using JAVA language and FIREBIRD data base system.

6

Sumrio1. INTRODUO................................................................................................................ 08 1.1. Robtica....................................................................................................................... 08 1.2. Robtica Mvel ............................................................................................................ 10 2. METODOLOGIA ............................................................................................................. 13 3. O ROB ......................................................................................................................... 14 3.1. Projeto: Interface para controle de movimento de um rob aranha de quatro patas .. 14 3.2. Componentes utilizados .............................................................................................. 14 3.3. Estrutura ...................................................................................................................... 17 3.4. Movimentos ................................................................................................................. 19 3.5. Sistema de controle ..................................................................................................... 21 4. AR ROB ARANHA DE QUATRO PATAS............................................................... 26 4.1. Movimento ................................................................................................................... 27 4.2. Projeto ......................................................................................................................... 28 5. DIVISO DO SISTEMA ARc........................................................................................ 29 5.1. Classes de informao (Mdulos de informao) ....................................................... 29 6. NVEL BAIXO ................................................................................................................. 33 6.1. Relao entre os mdulos do nvel Baixo ................................................................... 37 7. NVEL ALTO ................................................................................................................... 38 7.1. Mdulos de controle .................................................................................................... 38 7.2. Mdulos de interao .................................................................................................. 41 7.3. Relao entre os mdulos do nvel Alto ...................................................................... 46 8. NCLEO......................................................................................................................... 47 9. BANCO DE DADOS ....................................................................................................... 49 9.1. Tabelas ........................................................................................................................ 49 10. TRAJETRIA DE UM COMANDO ............................................................................... 53 10.1. Trajetria do comando na viso do operador ............................................................ 53 10.2. Trajetria do comando na viso do sistema .............................................................. 54 11. CONCLUSO ............................................................................................................... 57 Bibliografia ........................................................................................................................... 58 ANEXO 1 Cdigo Fonte do Sistema ARc

7

Lista de IlustraesFigura 1 Servo-Motor......................................................................................................14 Figura 2 Placa Servo-Controladora SB Servo-Control ...................................................15 Figura 3 Conector do Servo-Motor .................................................................................15 Figura 4 Pulsos para o servo-motor ...............................................................................16 Figura 5 Estrutura Bsica ...............................................................................................18 Figura 6 Disposio dos componentes...........................................................................18 Figura 7 Articulaes das patas .....................................................................................19 Figura 8 Pata estendida na direo contrria base .....................................................20 Figura 9 Pata estendida na direo da base ..................................................................20 Figura 10 Movimento para o sentido oposto base.......................................................21 Figura 11 Sistema de controle........................................................................................21 Figura 12 IHM .................................................................................................................23 Figura 13 Seqncias NPA e NSAs ...............................................................................24 Figura 14 NPA e NSAs ...................................................................................................24 Figura 15 ICM .................................................................................................................25 Figura 16 Identificao das patas e motores..................................................................26 Tabela 1 Posio dos motores nas patas.......................................................................26 Tabela 2 Comando .........................................................................................................31 Figura 17 Escalonador....................................................................................................35 Figura 18 Relao entre os mdulos do nvel Baixo ......................................................37 Figura 19 rvore do Desmontador NSA .........................................................................39 Figura 20 Loop na execuo de um NSA.......................................................................40 Figura 21 Tela Principal..................................................................................................41 Figura 22 Tela de Edio NPA .......................................................................................42 Figura 23 Tela de Edio NSA .......................................................................................44 Figura 24 Tela de Configurao .....................................................................................45 Figura 25 Relao entre os mdulos do nvel Alto .........................................................46 Figura 26 Relao entre os mdulos atravs do Ncleo................................................48 Tabela 3 Comando .........................................................................................................50 Tabela 4 Exemplo de comando armazenado .................................................................50 Tabela 5 Exemplo tabela NSA........................................................................................51 Tabela 6 Exemplo tabela NSA Lista ...............................................................................51

8

1. INTRODUOA automao de processos, equipamentos e manufaturas atinge as mais variadas reas do contexto scio-econmico e do nosso cotidiano. Como ator principal, o computador e seus agregados de hardware e software tem facilitado a implementao de processos produtivos e melhorado a qualidade de vida. Assim, novas tecnologias e novos equipamentos surgem para facilitar ou, at mesmo, automatizar determinadas tarefas rotineira. Por exemplo, pequenos robs so utilizados para explorar lugares onde, por enquanto, o homem ainda no pode ir, como o fundo do oceano, outros planetas, ou realizando atividades "domsticas" de limpeza. Como caractersticas principais, esses elementos robticos devem ser autnomos e Ter capacidade de auto-aprendizado.

1.1 Robtica

A busca de qualidade total no processo produtivo e manufatura fazem surgir uma crescente demanda de tarefas com eficincia, eficcia e preciso. Existem tambm tarefas a serem realizadas em lugares onde a presena humana se torna difcil, arriscada e at mesmo impossvel, como o fundo do mar ou a imensido do espao. Para realizar essas tarefas, se faz cada vez mais necessria a presena de dispositivos (robs), que realizam essas tarefas sem risco de vida. A robtica a rea que se preocupa com o desenvolvimento de tais dispositivos.

A Robtica uma rea multidisciplinar que busca o desenvolvimento e a integrao de tcnicas e algoritmos para a criao de robs. A robtica integra contextos comuns s reas de engenharia mecnica, engenharia eltrica, inteligncia artificial, entre outras, que se faz necessria para se projetar essas maravilhosas tecnologias. [CAEIRO; SERRA; JORGE, O primeiro grande..., 19.JUN.05]

Os robs permeiam as mais variadas reas de nossa sociedade: robs que prestam servios, como os desarmadores de bomba, robs com a nobre finalidade da pesquisa cientfica e educacional, robs mdicos, robs de manipulao e at mesmo os robs operrios, que se instalaram em nossas fbricas e foram responsveis pela "segunda

9

Revoluo Industrial", revolucionando a produo em srie e fornecendo maior qualidade aos produtos. Uma dos maiores sonhos do homem construir uma mquina com "Inteligncia Artificial" capaz de agir e pensar como ele. No entanto, este desejo esconde em seu subconsciente a vontade de possuir um "escravo metlico" que satisfaa todos os seus desejos. "Este sonho humano est perto de se tornar realidade com o espantoso avano da tecnologia computvel". [LIMA, Home Page. 10.ABR.05] A palavra rob tem origem da palavra tcheca robotnik, que significa servo, o termo rob foi utilizado inicialmente por Karel Capek em 1923, nesta poca a idia de um "homem mecnico" parecia vir de alguma obra de fico.

No s do homem moderno o desejo de construir tais robs, existem alguns fatos histricos que nos mostram que a idia no nova, por exemplo, existem inmeras referncias sobre o "Homem Mecnico" construdo por relojoeiros com a finalidade de se exibir em feiras. [LIMA, Home Page. 10.ABR.05]

Temos relatos tambm da realizao de vrias "Animaes Mecnicas" como o leo animado de Leonardo da Vinci, e seus esforos para fazer mquinas que reproduzissem o vo das aves. Porm estes dispositivos eram muito limitados, pois no podiam realizar mais que uma tarefa, ou um nmero reduzido delas. [KLICKEDUCAO, Quem foram.... 10.OUT.05]

A idia de se criar mquinas que substitussem o trabalho humano j bem antiga, sendo datada desde a Grcia antiga com Ctesibus, em 270 A.C, que desenvolveu figuras animadas movidas com a energia da gua. O primeiro rob mvel foi o rob Shakey, desenvolvido nos laboratrios do Instituto de Pesquisas de Stanford no ano de 1966. Apesar de ser pioneiro, o rob j possua muitos dos recursos utilizados atualmente na grande maioria dos robs: [TOURINO, Sistema de rastreamento..., 22.MAI.05] - Cmera de TV; - Sensor por triangulao laser; - Sensores de coliso por contato; - Conexo via rdio com computadores PDP-10 e PDP-15 (figura ) para controle e vdeo; - Programas para percepo do ambiente, modelagem e ao.

10

Um rob qualquer dispositivo capaz de executar alguma tarefa normalmente realizada pelo homem, como por exemplo, movimentar peas. [TORATI, Leonardo]

A idia de se construir robs comeou a tomar fora no incio do sculo XX com a necessidade de aumentar a produtividade e melhorar a qualidade dos produtos. nesta poca que o rob industrial encontrou suas primeiras aplicaes, o pai da robtica industrial foi George Devol. [CAEIRO; SERRA; JORGE, O primeiro grande..., 19.JUN.05]

Atualmente devido aos inmeros recursos que os sistemas de microcomputadores nos oferecem, a robtica atravessa uma poca de contnuo crescimento que permitir, em um curto espao de tempo, o desenvolvimento de robs inteligentes fazendo assim a fico do homem antigo se tornar a realidade do homem atual.

Sem dvida a automao industrial foi, e um grande impulsionador da tecnologia de robtica. Cada vez mais tem se procurado aperfeioar os dispositivos, dotando-os com inteligncia para executar as tarefas necessrias. Por exemplo, usando Redes Neurais procura-se a linearizao de acionamentos eletromecnicos; com Fuzzy Logic pode-se fazer o planejamento de trajetria para robs redundantes; ou utilizando Sistemas Especialistas possvel a deteco de problemas e/ou rapidamente encontrar solues para problemas especficos.

1.2 Robtica Mvel

"Um rob mvel um rob com capacidade de se locomover, ou seja, um sistema que possui auto-propulso, capacidade de locomoo (re)programvel, controle automtico ou semi-automtico e capacidade de realizar uma determinada tarefa." [TORATI, Leonardo]

Existem robs mveis que atuam em diferentes ambientes como terrestres, aquticos, subaquticos, robs voadores e at mesmo robs espaciais, como telescpios robotizados ou que atuam em outros planetas, como os robs exploradores enviados para marte (Opportunity, Sojourner).

Existem diversos critrios que classificam os robs mveis:

11

o o

Tipo de locomoo Rodas: como veculos convencionais Pernas: como insetos Quadrpedes: quatro patas Hetpodes: seis patas

o o o o o

Hovers: flutuam por meio de fluxo de ar. Tipo de estrutura (rgida, flexvel, nica, modular) Forma geomtrica Simples, como retngulo, circular Complexa - multi articulada como as rtulas Ambiente de funcionamento (terrestre, aqutico, sub-aqutico, areo, espacial, etc.) Nvel de autonomia Tele operado, com superviso humana remota Totalmente autnomo, sem superviso

A aplicabilidade de robs mveis muito ampla, principalmente as plataformas mveis intercambiveis. A seguir apresentamos alguns exemplos:

- Alguns exemplos de atividades j executadas por robs mveis:

-

Desarmamento de bombas e artefatos perigosos e localizao de sobreviventes em reas de risco: O desarmamento de artefatos explosivos envolve um grande risco de vida e esse tipo de rob tem por funo permitir que um especialista perito em explosivos possa desarmar o dispositivo perigoso sem envolver risco de vida. O especialista controla o rob a uma distncia segura, atravs de cmeras ele v o que o rob v e utiliza ferramentas instaladas no rob para executar a tarefa de desarmar o artefato explosivo. Esse tipo de rob mvel tambm utilizado para procurar por sobreviventes 15.MAI.2005] em reas risco como, por exemplo, entre escombros de desabamentos, locais com gs txicos presentes, etc. [SANTUCI CARVALHO,

-

Recuperao de turbinas em usinas hidreltricas: Pesquisadores da Universidade Federal de Santa Catarina (CTC-UFSC) e do Instituto de Tecnologia para o Desenvolvimento (Lactec), de Curitiba (PR), desenvolveram o primeiro rob capaz de recuperar ps das turbinas de usinas hidreltricas do Brasil. Chamado de

12

Roboturb, projeto foi apresentado nesta semana em Florianpolis. O Roboturb um rob soldador, que se fixa nas paredes das ps das turbinas por meio de ventosas. Ele possui ainda um trilho, no qual ele consegue mobilidade suficiente para atuar em uma rea maior da p sem precisar se deslocar. [INOVAO TECNOLGICA, Rob brasileiro..., 25.MAI.2005]

-

Pesquisa submarina: Um pequeno submarino rob chamado Spray um rob autnomo que atravessou a corrente do Golfo coletando dados cientficos. Lanado no dia 11 de Setembro de 2004, cerca de 100 milhas nuticas ao sul da ilha Nantucket, Estados Unidos, o submarino de dois metros de comprimento chegou s Bermudas aps viajar por mais de 600 milhas a uma velocidade de cerca de um quilmetro por hora, a uma profundidade de 1.000 metros. Trs vezes ao dia o Spray ia at a superfcie, sempre coletando dados cientficos. [INOVAO TECNOLGICA, Rob submarino..., 25.MAI.2005]

Este ano (2005), na Feira Internacional de Cincia e Engenharia da Intel, um aluno portugus de 18 anos desenvolveu e apresentou um prottipo de uma aranha rob com seis patas. Carlos Arsnio, aluno que desenvolveu o projeto, disse ter utilizado pernas para melhor mobilidade do rob e que, um rob com essa capacidade de mobilidade poderia ser utilizado para vrias funes, desde construo civil at desarmamento de bombas. [ANSNIO, Um Robot Aranha, 29.SET.05]

13

2. METODOLOGIA

Atravs de pesquisas sobre robs e robs mveis ser possvel entender aspectos bsicos sobre o funcionamento, os componentes, os movimentos e o controle desses equipamentos, podendo, assim, realizar novas pesquisas desses aspectos bsicos individualmente focando nas necessidades para realizao do projeto. Atravs das informaes adquiridas nas pesquisas ser possvel desenvolver um modelo do rob aranha de quatro patas e aplicar estudos sobre a estrutura, os movimentos, etc. Um elemento fundamental para a operacionalidade do mecanismo o software gestor de movimentos. Realizamos vrias pesquisas para levantar as informaes necessrias sobre as caractersticas (requisitos) do software, ser feito um estudo sobre uma linguagem de programao que permita o desenvolvimento tanto da parte lgica quanto da parte visual do sistema e um banco de dados de fcil utilizao. Um prottipo real do rob aranha de quatro patas dever ser construdo para testes prticos do sistema de controle. Ser desenvolvida uma interface visual para o sistema de controle, que vai permitir que pessoas operando o computador (operadores) controlem o rob aranha de quatro patas.

14

3. O ROB

3.1 Projeto: Interface para controle de movimento de um rob aranha de quatro patas (AR+)O rob AR+ (aranha rob de quatro patas) um rob mvel do tipo quadrpede, servocontrolado e seu controle feito totalmente por computador pela porta serial atravs de uma interface grfica com o operador. O operador (usurio), atravs de um programa, informa quais movimentos o rob deve executar, o programa gera os comandos necessrios para executar tais movimentos e os envia para o rob atravs da porta serial. Uma placa servo-controladora, situada no centro do rob, recebe os comandos do computador e os interpreta fazendo movimentar oito servomotores, dois em cada uma das quatro patas do rob.

3.2 Componentes utilizadosO AR+ possui oito servo-motores e uma placa servo-controladora.

Figura 1 - Servo-motor

15

CNEXO SERIAL

COMPUTADOR

MAX 232

CONTROLE VCC GND

VCC 5V 3A

PO TNCIA

Figura 2 Placa Servo-Controladora SB Servo-Control Os motores possuem trs conectores: alimentao de energia, terra e controle. Cada motor precisa de uma tenso de alimentao e sinais no conector de controle entre 4,6 e 6 V.

CONTROLE VCC 4.6 a 6 V TERRA (GND)

Figura 3 - Conector do Servo-Motor

A placa controladora de servo-motores, SB Servo Control da Solbet, conectada ao computador pela porta serial (RS232-C), por onde recebe os comandos, e tem capacidade de controlar at oito servo-motores. Tambm possui integrada toda a eletrnica necessria para implementar um sistema capaz de se posicionar em um determinado ngulo, sob o

MOTORES

PIC 16F628

16

comando de um sinal eletrnico. O controle do servo-motor realizado atravs de pulsos de amplitude constante de 5V na sua entrada de controle. Os pulsos de controle devem se repetir a cada 25~30 ms. Se o pulso tiver uma largura de 1,5 ms, o servo ficar na posio central. Com um pulso de 1 ms o servo se deslocar todo para a esquerda, e um pulso de 2 ms provocar desvio do servo para toda a direita.

Pulso de 1 ms - Esquerda

Pulso de 1,5 ms - Centro

Pulso de 2 ms - Direita

Figura 4 Pulsos para o servo-motor

Esses pulsos devem ser mantidos durante todo o tempo. A falta dos pulsos ir fazer com que o servo retorne para a posio central. Os servo-motores se movimentam cerca de 180 e recebem como comandos valores inteiros de 1 a 128. Ento, para indicar ao motor que deve ser assumido uma rotao de 90, deve-se enviar o valor 64, ou seja, 180 equivalem a um valor 128, 90, a 64 e assim por diante. Os comandos enviados para a SB Servo Control, atravs da porta serial, so compostos por trs campos: identificao do servo, deslocamento desejado (ngulo) e terminador (CR). A identificao do servo dada por letras maisculas, na seguinte seqncia:

17

A, servo 1 B, servo 2 at H, servo 8 Exemplos de comandos: A23 B77 H110 Um valor de 65 para o deslocamento corresponde a um pulso de 1,5 ms, o que corresponde a um deslocamento de 0 grau. Valores acima de 65 at 130 provocam deslocamento de at 60 graus no sentido horrio e abaixo de 65, geram deslocamento de at 60 graus no sentido anti-horrio. Ao ser energizado, o sistema assume a gerao de pulsos de 1,5 ms, levando todos os servos posio de 0 grau. A placa SB Servo Control possui 5 conectores: JP1, JP2, JP3, JP4 e X1. JP1, JP3 e JP4 so utilizados em conjunto. JP1: Tenso de controle dos servos. O servo A corresponde ao pino 1. JP3: Tenso de alimentao dos servos. Pode variar de 4,6 a 6 V. JP4: Terra. JP2: Alimentao DC do sistema. Pode variar de 5 a 6 v. X1: Conector DB-9 RS232-C. Utilizado para interligar o sistema a um microcomputador via interface serial. Alguns problemas podem ocorrer, como trepidao do servo, por exemplo. Isso pode ocorrer se o sistema no estiver devidamente alimentado ou a alimentao de energia no estiver estabilizada.

3.3 EstruturaAs estrutura do rob AR+ feita principalmente de alumnio. A base tem a forma de um + (sinal de adio) e as patas so conectadas uma em cada lado da base, como na figura.

18

Patas

Base em forma de +

Figura 5 - Estrutura bsica

Cada pata tem duas articulaes e cada articulao movimentada por um servo-motor. A placa SB Servo Control fica no centro da base. Os servo-motores esto distribudos dois em cada pata, um na articulao ligada a base e outro na articulao central da pata. Na extremidade de cada pata h um p de apoio feito de borracha.

MD

PS DE APOIOMC

SERVO-MOTORES

MB

MA

INTERFACE CONTROLE

ME

MF

MG

MH

Figura 6 - Disposio dos componentes

19

BASE

ARTICULAES

Figura 7 - Articulaes das patas

3.4 MovimentosO AR+ tem seus movimentos limitados em quatro direes (N, S, L e O), tornando menos complexo e mais confivel sua movimentao. O AR+ no possui sensores, os movimentos so gerados pelo programa de computador que se baseia em informaes previamente inseridas, ou seja, o programa entende que certos valores de comandos correspondem a determinados movimentos, mas no so fornecidas informaes sobre se os movimentos planejados foram realmente executados. Ento, com a limitao das direes de movimentos, os movimentos gerados pelo programa so executados com maior confiabilidade pelo rob. Para se deslocar o AR+ se apia em duas patas paralelas, estendendo as outras duas patas, uma em direo contrria base e outra na direo da base. Veja a figura:

20

BASE

Figura 8 - Pata estendida na direo contrria base

BASE

Figura 9 - Pata estendida na direo da base

Aps o posicionamento das patas estendidas, as patas de apoio levantam, deixando somente as patas que esto estendidas sustentando a estrutura. Neste momento o rob est pronto para se deslocar. Para isso, as patas que esto sustentando a estrutura se movimentam. Se a pata estiver estendida para a direo da base do rob, ela executa um movimento de forma a assumir a direo contrria base. Se a pata estiver estendida para a direo contrria base, faz o movimento na direo da base.

21

BASE

Figura 10 - Movimento para o sentido oposto base

Como o rob AR+ tem a forma de um + (sinal de adio), todas as quatro patas se movimentam no sentida da base ou oposto base. O mtodo de movimento apresentado vlido para qualquer uma das quatro direes em que o rob se movimenta.

3.5 Sistema de controle

BASE DE DADOS

GERADOR DE TAREFAS

MOTOR A

MOTOR B

MOTOR C

IHM INTERFACE HOMEM / MQUINA

MOTOR D

SOFTWARE DE CONTROLE

SERIAL RS232

INTERFACE DE CONTROLE DOS MOTORES

MOTOR E

GERADOR DE MOVIMENTOS

CONTROLE DOS MOTORES

MOTOR H

MOTOR G

MOTOR F

Figura 11 - Sistema de Controle

22

O rob AR+ totalmente controlado por um software (sistema de controle) instalado em um computador do tipo PC. Esse software se comunica com o rob enviando comandos, formados por caracteres ASCII, atravs da porta serial utilizando o protocolo RS232-C. O sistema de controle um software que: gera movimentos, controla movimentos, possui uma interface Homem-Mquina (IHM), armazena movimentos e gera tarefas. Controle dos Motores: Gera a posio de cada motor conforme a posio desejada das patas. As informaes do Controle dos Motores so enviadas para o rob. Gerador de Movimentos: Seqncia as posies necessrias dos motores para a gerao de movimento. Os movimentos podem ser simples, compostos ou seqenciais. Movimento simples: o movimento executado por um nico motor, por exemplo, o movimento do motor C. Movimento composto: o movimento executado por mais de um motor de um mesmo conjunto, ou seja, para movimentar uma pata do rob, so necessrios movimentos de mais de um motor dessa mesma pata; um conjunto de movimentos simples. Movimento seqencial: uma composio de movimentos compostos que so executados seqencialmente para executar uma determinada tarefa, como por exemplo, andar para frente, andar para traz, etc. Interface Homem-Mquina (IHM): Realiza a interface do rob com o operador permitindo a implementao funcional das aes a serem realizadas. A IHM permite ao operador:

23

IHMCONTROLE INDIVIDUAL DOS MOTORES CONTROLE INDIVIDUAL DAS PATAS

CONTROLE DE MOVIMENTO EM ALTO NIVEL

GRAVAO DE MOVIMENTOS

Figura 12 IHM

-

Controle Individual dos Motores: a posio de cada motor pode ser alterada. Controle Individual das Patas: Cada pata possui um conjunto de motores que tm suas posies alteradas de acordo com o movimento desejado da pata, ou seja, o operador informa o que a pata deve fazer e a posio dos motores ajustada pelo sistema.

-

Controle de Movimento em Alto Nvel: O rob possui um conjunto de patas que tm suas posies alteradas de acordo com o movimento do rob, ou seja, o operador informa o que o rob deve fazer e a posio das patas ajustada pelo sistema.

-

Gravao de Movimentos: Os movimentos ou seqncias de movimentos realizados podem ser gravados para serem reutilizados em outros movimentos ou seqncias de movimentos.

Base de Dados: Armazena seqncias de movimento dos motores. Essas seqncias formam os Conjuntos de Aes (CAs). O conjunto de aes que contm os movimentos bsicos do rob e chamado de Ncleo Primrio de Ao (NPA). O NPA a base para outras seqncias de movimento. Quando novos conjuntos de aes so criados, so chamados de Ncleos Secundrios de Aes (NSA) e podem ser criados a partir do NPA ou

24

de outros NSAs. Cada seqncia de um NPA ou NSA possui um identificador (label) e um tempo de espera (delay) alm da seqncia de movimentos. Sequencias NPA / NSA

DELAY

LABEL

SEQNCIA

Figura 13 - Seqncias NPA e NSAs

Gerador de tarefas: Gera composies de movimentos e aes (NSAs) para executar uma determinada tarefa. Uma vez validada a tarefa, esta armazenada no Banco de Dados, tornando-se um novo NSA.

NSA

NPA

NSA

NSA

Figura 14 - NPA e NSAs

Interface de Controle dos Motores (ICM): Recebe os comandos do computador e aplica nos motores.

25

CNEXO SERIAL

COMPUTADOR

MAX 232

CONTROLE VCC GND

VCC 5V 3A

PO TNCIA

Figura 15 ICM

TERRA

Componentes da ICM: Conexo serial: Plug DB9 para conexo do fio serial que liga a ICM ao computador. MAX 232: Chip que faz a interface de comunicao da ICM com o computador utilizando o protocolo RS232. PIC 16F628: Micro controlador que contm o programa de controle dos servomotores. Potncia: Chip que distribui a energia necessria para cada dispositivo.

Os servo-motores so conectados ICM por meio de 3 fios: VCC, TERRA e CONTRLE, onde VCC e TERRA so para a alimentao de energia e CONTROLE fornece a freqncia de controle de posio do servo-motor.

MOTORES

PIC 16F628

26

4. AR+ ROB ARANHA DE QUATRO PATAS

O Rob AR+ um quadrpede no formato de uma aranha que se movimenta de frente ou de lado, ele no executa movimentos circulares como, por exemplo, girar em torno de si mesmo. Cada uma das quatro patas do AR+ possui dois motores que permitem o movimento da pata. Como cada pata possui dois motores e o rob possui quatro patas, so necessrios oito motores e uma placa para controle dos motores. Esses componentes so distribudos da seguinte forma:

C

PATA N

A

PATA LG EINTERFACE CONTROLE

F

H

PATA OB

PATA S

D

Figura 16 Identificao das patas e motores MOTORES PATA N S L O SUPERIOR A B E F INFERIOR C D G H

Tabela 1 Posio dos motores nas patas

27

A tabela acima indica quais motores pertencem a qual pata e em qual parte da pata o motor est situado. Por exemplo, a pata N possui o motor A na parte superior e o motor C na parte inferior. A atribuio de letras para cada motor vlida a partir do momento em que os motores so conectados na placa servo-controladora, pois na placa que esto descritos quais contados do circuito onde conectado o servo-motor pertence a qual letra de identificao. Como possvel observar na figura 16 e na tabela 1, os motores no esto distribudos em seqncia nas patas. O programa agrupa os motores em dois grupos: grupo X = {A, B, C, D} e grupo Y = {E, F, G, H}. O grupo X tem prioridade sobre o grupo Y, ou seja, durante a execuo dos comandos, a seqncia do grupo X sempre enviada primeiro que a seqncia do grupo Y. No decorrer deste documento, veremos mais detalhes sobre como os comandos so enviados para o rob. As patas dianteira e traseira pertencem ao grupo X, ento, podemos dizer que elas tm prioridade sobre as patas laterais, que pertencem ao grupo Y. Portanto, os movimentos sero executados primeiro pelas patas dianteiras e depois pelas patas laterais. Mas por que executar apenas duas patas de cada vez ao invs de oito? Os motores utilizados nas articulaes das patas do AR+ consomem muita energia ao se movimentarem. Quanto mais motores forem movimentados simultaneamente, mais corrente eltrica (Amperes) ser requerida da fonte de energia. Fontes de corrente contnua com potncia suficiente para suprir os oito motores se movimentando simultaneamente so difceis de encontrar, ento, reduzindo o os movimentos simultneos dos motores reduz a necessidade de fontes mais fortes, facilitando o acesso a fontes de energia capazes de funcionar o rob AR+. Ao movimentar duas patas so movimentados quatro motores simultaneamente.

4.1 MovimentoO rob AR+ anda em quatro direes: para frente, para trs, para a esquerda e para a direita. Para se mover, ele no executa rotaes em torno de seu prprio eixo, ou seja, quando anda para a esquerda, por exemplo, todo o corpo do rob deslocado para a esquerda mantendo sempre a frente voltada para a mesma direo.

28

Quando se move para frente, as patas laterais apiam-se na superfcie de modo a liberar o movimento das patas dianteiras e traseiras. As patas liberadas tomam a posio inicial de um passo para frente, ou seja, ficam estendidas para frente. Quando as patas dianteiras e traseiras esto posicionadas, as patas laterais so levantas deixando todo o apoio nas patas dianteiras e traseiras, que, assim que estiverem apoiadas, se movimentam para trs, tomando a posio final e deslocando o corpo do rob para frente. Para se mover para trs, executado um movimento semelhante ao de mover para frente, onde apenas as posies inicial e final so invertidas. E para se mover para esquerda ou direita, as patas que apiam so a dianteira e a traseiras e as patas laterais assumem os movimentos inicial e final. Para que o rob execute os movimentos de cada motor para movimentar as patas e se deslocar, o software ARc responsvel por coletar os comandos fornecidos pelo operador, tratar esses comandos e envia-los para o rob. A seguir, ser detalhado a construo e o funcionamento do software de controle do rob AR+ (ARc).

4.2 ProjetoO projeto foi desenvolvido na linguagem Java verso 1.5.0. Duas Bibliotecas de expanso foram utilizadas no projeto: o driver JDBC para o banco de dados Firebird e; API javax.comm, utilizada para envio dos comandos via porta serial. Foram criados mdulos (Classes) com funes especficas para cada parte o sistema. Os mdulos controlam desde a conexo com o banco de dados, as telas de interao com o operador at mecanismos de escalonamento e ajuste de espera. Grande parte dos mdulos necessita de parmetros de ajuste para executar corretamente as funes atribudas. Esses parmetros so armazenas e podem ser ajustados pelo operador, de acordo com a necessidade. O sistema foi dividido em dois nveis: nvel Baixo e nvel Alto. Onde cada nvel possui funes e mdulos exclusivos ou compartilhados. Os mdulos podem ser classificados em: mdulos de controle, informao, interao e ncleo, onde a classificao dada de acordo com a funo do mdulo.

29

5. DIVISO DO SISTEMA ARc

O sistema ARc dividido em duas partes onde cada parte chamada de Nvel, respectivamente, Nvel Baixo e Nvel Alto. Os nveis foram criados para dividir o processo de desenvolvimento do sistema, onde o nvel Baixo compreende os mdulos necessrios para que um determinado comando chegue ao rob com as informaes ajustadas e corretas e, o nvel Alto, compreende os mdulos necessrios para construir, armazenar e reutilizar os comandos a serem enviados para o rob e permitir a interao do usurio operador. H um mdulo especial que no pertence a nenhum dos nveis. Esse mdulo, chamado Ncleo, responsvel pela interao dos outros mdulos, tanto do nvel Alto quanto do nvel Baixo. Alm da diviso do sistema em nveis h uma outra diviso criada para agrupar os mdulos com um propsito em comum. As divises dos mdulos so: Mdulos de informao, Mdulos de Controle, Mdulos de Interao e Ncleo. Os mdulos de Controle, Interao e Ncleo recebem e retornam informaes, portanto, necessrio entender, primeiro, como as informaes so organizadas (mdulos de Informao). Nota: A partir deste momento, os mdulos de informao sero chamados de Classes para facilitar a compreenso quando estivermos relatando os mdulos de controle e sero utilizadas notaes peculiares da linguagem Java (linguagem em que o sistema foi desenvolvido).

5.1 Classes de Informao (Mdulos de Informao)As classes (ou mdulos) de informao so unidades cuja funo servir como um grupo de informaes em comum, ou seja, uma forma de agrupar informaes para representar um determinado objeto. Por exemplo, uma classe Motor possui informaes de posio e tempo de espera utilizadas em um motor real do rob AR+. A seguir, uma descrio das classes de Informao:

30

MOTOR a unidade bsica de informao do sistema. O Motor a abstrao do modelo fsico do Servo-motor utilizado no rob AR+ e est contido em todas as classes de informao. Em alguns momentos a referncia para essa classe ser feita como Informao de Motor. A classe Motor possui as informaes necessrias para o controle do motor real. Essas informaes so: Valor: posio do eixo que deve ser assumida pelo motor real. ID: identificao do motor real interpretada pela placa servo-controladora. Delay: tempo de espera necessrio para que o motor real complete o movimento indicado pela informao valor. FILA MOTOR uma fila do tipo FIFO de classes do tipo Motor com algumas modificaes. A FilaMotor permite as seguintes aes: Insero: insere um Motor no fim da fila. Remoo: remove o primeiro Motor da fila. Alterao: permite alterar um determinado Motor da fila. Altera o Motor apenas por outro Motor, no permite excluso. Consulta: permite consultar as informaes de um Motor da fila. A FilaMotor utiliza uma classe de informao exclusiva chamada ElementoFilaMotor. Essa classe serve apenas para organizao da FilaMotor, portando, no utilizada em outras classes do sistema. COMANDO a abstrao de uma ao (um comando) enviada para o rob. O Comando composto por quatro classes do tipo FilaMotor, que representam as quatro patas do rob: N, S, L e O. Portando, o Comando possui informaes para todos os motores reais do rob, em outras palavras, o Comando um conjunto de informaes dos motores reais necessrias para que o rob execute algum movimento.

31

COMANDO FilaMotor Motor N S L O (ID Motor 1, Valor, Delay), (ID Motor 2, Valor, Delay, ...) (ID Motor 1, Valor, Delay), (ID Motor 2, Valor, Delay, ...) (ID Motor 1, Valor, Delay), (ID Motor 2, Valor, Delay, ...) (ID Motor 1, Valor, Delay), (ID Motor 2, Valor, Delay, ...) Tabela 2 Comando

FILA COMANDO uma fila do tipo FIFO de classes do tipo Comando. A FilaComando permite as seguintes aes: Insero: insere um Comando no fim da fila. Remoo: remove o primeiro Comando da fila. A Fila de Comandos utiliza uma classe de informao exclusiva chamada

ElementoFilaComando. Essa classe serve apenas para organizao da Fila de Comandos, portando, no utilizada em outras classes do sistema. COMANDO ESCALONADO Um comando possui quatro filas motor e passa por vrios processos at ser enviado para o rob. O rob recebe apenas uma informao de cada vez, ento, o comando passa por um mdulo chamada Escalonador e convertido em um comando escalonado. O comando escalonado possui uma nica fila motor com as informaes de motor ajustadas na seqncia correta para serem enviadas. FILA COMANDO ESCALONADO Assim como a Fila de Comandos, a Fila de Comnados Escalonada uma fila do tipo FIFO de classes do tipo Comando Escalonado. A Fila de Comandos Escalonados permite as seguintes aes: Insero: insere um Comando no fim da fila. Remoo: remove o primeiro Comando da fila. A Fila de Comandos Escalonados tambm utiliza uma classe de informao exclusiva chamada ElementoFilaComandoEscalonado. Essa classe serve apenas para organizao da Fila de Comandos Escalonados, portando, no utilizada em outras classes do sistema.

32

NPA A classe NPA representa um Ncleo Primrio de Ao, que contm um determinado Comando que enviado para o rob. O NPA contm as seguintes informaes: ID: Identificao do NPA; Comando: uma informao do tipo Comando. O NPA possui mtodos que permitem apenas coletar o ID e o Comando. Essas duas informaes do NPA so definidas no construtor NPA. NSA A classe NSA representa um Ncleo Secundrio de Aes. O Ncleo Secundrio de Aes uma lista de execuo onde os itens dessa lista so NPAs e/ou outros NSAs. A lista executada em seqncia. O NSA contm as seguintes informaes: ID: Identificao do NSA; Lista: lista de NPAs ou NSAs. A informao Lista do tipo Vector, onde Vector uma classe utilizatria do java pra trabalhar com vetores (java.util.Vector) e BDListaElemento uma classe utilizada somente pelo NSA para permitir o armazenamento de informaes do NPA/NSA listado. Essas informaes so: ID, Tipo (NSA/NPA). NSA PROCESSADO Antes de ser executado, o NSA deve ser desmontado em comandos, ou seja, todos os itens da lista do NSA, sejam NPAs ou outros NSAs devem ser lidos e armazenados em uma nica fila de comandos escalonados pronta para a execuo. Ao desmontar um NSA, os comandos e as informaes de motores dos comandos passam por diversos processos como o Controle de Delay e o Escalonador (ambos sero vistos mais adiante). Ao conclurem a passagem por esses processos, as informaes esto prontas para serem enviadas ao rob, mas, ao invs disso, so armazenadas em um arquivo que, posteriormente, poder ser enviado para o rob em conjunto com outros arquivos. Cada arquivo representado por um NSA Processado. O NSA Processado possui uma informao de identificao (ID) e um comando escalonado, onde esto todos os comandos prontos para serem enviados ao rob.

33

6. NVEL BAIXO

O operador cria uma seqncia de comandos e, em determinado momento, solicita a execuo dessa seqncia pelo rob AR+. Uma seqncia de comandos passa por diversos mdulos at ser, literalmente, enviada para o rob. Esses mdulos compem o Nvel Baixo do Sistema de Controle do rob AR+. Os mdulos que compem o nvel Baixo so: Controle de Delay, Escalonador, Serial CMDE e Transm. A seguir uma descrio desses mdulos:

CONTROLE DE DELAY Os motores do AR+ executam movimentos de rotao no seu eixo onde podem rotacionar com limite de 120. O sistema envia a informao da posio que cada motor deve assumir, ou seja, o sistema informa se o motor deve se posicionar a 0, 35, etc, informando o valor correspondente ao ngulo. Essa informao tratada como um movimento. Quando um movimento enviado para algum dos motores do rob, o motor precisa de um determinado tempo para executar tal movimento. Esse tempo de espera necessrio chamado de delay. O Controle de Delay calcula o delay necessrio para que o motor realize o movimento indicado. O sistema envia a informao do movimento para um determinado motor e aguarda o tempo indicado pelo delay para enviar outra informao ao mesmo motor, que por sua vez, possui outro tempo de delay. Se o tempo de delay no for respeitado, o motor no completar o movimento em execuo, passando a assumir o novo movimento enviado. Para calcular o delay necessrio para o movimento enviado ao motor, o Controle de Delay possui um parmetro configurvel que informa quanto tempo o motor leva para executar um movimento de 50. efetuado um calculo usando uma regra de trs e o resultado o delay necessrio para executar o movimento enviado para o motor. O Controle de Delay recebe uma Fila de Comandos e atribui delay a todos os motores contidos nos comandos da fila de comandos, retornando a fila ajustada para outro mdulo utilizar.

34

ESCALONADOR O rob AR+ possui quatro patas, ento foi criada a classe Comando que possui quatro filas de motores, onde cada fila de motores representa uma pata do rob. O problema que para enviar os comandos para o rob, apenas um comando pode ser enviado de cada vez, ou seja, as quatro filas de motores de um comando precisam virar uma s de forma que as informaes sejam enviadas na ordem correta. A funo do Escalonador mesclar as quatro filas de motores de um comando em uma fila. O comando que passa pelo Escalonador transformado em um Comando Escalonado. A estratgia de escalonamento empregada pelo escalonador simples: so removidas algumas informaes de motores do comando selecionado, nos quais representam o movimento de duas patas; os delays das informaes de motores removidas so verificados e selecionado a informao de motor com o maior delay; as outras informaes de motores no selecionadas so ajustadas com delay igual a zero; as informaes de motores so inseridas em um comando escalonado sendo a ltima informao inserida a selecionada com o maior delay. Quando o mdulo Transm (ser visto a seguir) ler um comando escalonado, vai ler a informao de motor e aguardar o tempo indicado pelo delay para, somente aps esperar, ler a prxima informao de motor. Por isso as informaes de motores que continham delay menor so ajustadas para zero, fazendo com que todas sejam enviadas rapidamente, uma aps a outra, de forma que os motores sejam sincronizados e aguarda o maior delay entre as informaes de motores enviadas garantindo a execuo de correta de todos os motores do rob. O Escalonador recebe uma fila de comandos, processa e retorna um fila de comandos escalonada.

35

Maior delay N COMANDO S

Informaes de Motores

A1 B1 C1 D1

A2 B2 C2 D2

A3 B3 C3 D3

A4 B4 C4 D4

Filas de Informaes de Motores

L O

COMANDO ESCALONADO

A1

A2

B2

B1

Figura 17 - Escalonador SERIAL CMDE Foi visto anteriormente que um NSA Processado armazenado em arquivo para depois ser executado. O mdulo Serial CMDE o mdulo responsvel por gravar e ler um arquivo NSA Processado. O nome Serial CMDE quer dizer Comando Escalonado Serializado. Este mdulo utiliza a interface Serializable e recursos de gravao de arquivos do Java para manipular os arquivos NPA Processados. A classe NPAProcessado gravada em um arquivo utilizando um ObjectOutputStream e lida utilizando um ObjectInputStream. Ao gerar um arquivo, o Serial CMDE grava o nome do arquivo no banco de dados para poder referenciar o arquivo e, ao excluir o arquivo, o registro no banco de dados tambm removido. O nome do arquivo e da entrada no banco de dados o mesmo do NSA que originou o NSA Processado.

36

TRANSM O sistema ARc utiliza um mdulo especial para envio dos comandos. Esse mdulo utiliza a biblioteca de expanso javax.comm fornecida pela Sun. A javax.comm permite o controle das portas de comunicao do computador. No caso deste projeto, a javax.comm utilizada para controlar a porta serial. O TRASM recebe uma fila de comandos escalonada e faz o envio seqencial das informaes de motores contida nas filas, sempre respeitando o delay indicado em cada informao de motor.

37

6.1 Relao Entre os Mdulos do Nvel Baixo

Fila de Comandos

Controle de Delay

Fila de Comandos

Escalonador

Arquivo Serializado

Serial CMDE

Fila de Comandos Escalonada

Serial CMDE

Fila de Comandos Escalonada

TRANSM

AR+

Figura 18 Relao entre os mdulos do nvel Baixo

38

7. NVEL ALTO

Como visto, quando se tem uma seqncia de comandos e essa seqncia enviada para o rob, os mdulos pelo qual essa seqncia passa constituem o nvel Baixo. Mas como a seqncia de comandos foi criada? O nvel Alto compreende os mdulos necessrios para criar, armazenar e reutilizar os comandos a serem enviados para o rob e permitir a interao do usurio operador. Esses mdulos pertencentes ao nvel Alto esto distribudos em duas categorias: Controle e Interao.

7.1 Mdulos de ControleCONEXO O sistema ARc armazena informaes em um banco de dados. O mdulo Conexo responsvel por carregar os drivers necessrios e executar a conexo com o banco de dados. Atualmente, o ARc conecta ao banco de dados Firebird utilizando um driver JDBC prprio do Firebird. Se for necessrio a troca do banco de dados ou do driver de conexo, essa troca feita somente no mdulo Conexo, que passa a disponibilizar acesso ao banco de dados para todo o programa.

CONTROLE BD O Controle BD responsvel por executar todas as manipulaes na base de dados, ou seja, ele que insere, altera e remove dados da base de dados. Qualquer mdulo do sistema que precise gravar ou ler informaes do banco de dados faz uma chamada para o Controle BD, no qual retorna a informao solicitada.

39

DESMONTADOR NSA Como visto anteriormente, o NSA uma lista de execuo que possui itens NPAs e/ou NSAs. Quando o NSA preparado para execuo, todos os comandos dos itens da lista NSA devem ser extrados e preparados em uma fila de comandos. Ao encontrar um NPA na lista NSA, o Desmontador extrai o comando do NPA encontrado e o coloca em uma fila. Quando encontrado um NSA na lista NSA, ele deve ser desmontado, ento, o Desmontador cria uma nova instncia de si mesmo e informa a fila de comandos onde devem ser armazenados os comandos e o NSA que deve ser desmonstado. Um NSA um espcie de rvore onde os ns so ou outros NSAs da lista e as folhas so os NPAs. O Desmontador efetua as lituras das folhas dessa rvore efetuando uma busca por profundidade. Ao concluir a leitura do NSA (rvore), o Desmontador retorna uma fila de comandos contendo todos os comandos (folhas).

NSA 1

NSA 2

NPA 5

NSA 4

NPA 1

NSA 3

NPA 6

NSA 5

NPA 8

NPA 2

NPA 3

NPA 4

NPA 7

Figura 19 rvore do Desmontador NSA

Observando a rvore acima, possvel entender a leitura feita pelo Desmontador. A fila de comandos possui a mesma seqncia dos NPAs encontrados na rvore, j que um NPA um comando.

40

VALIDADOR NSA Como visto, o NSA um rvore onde os comandos so as folhas. O sistema ARc permite a edio de NSAs. Supondo que existam trs NSAs onde o primeiro chama o segundo, o segundo o terceiro e o terceiro o primeiro. Ao executar qualquer um desses NSAs, o programa ficaria em redundncia, ou seja, a execuo ficaria presa em um loop infinito, causando o travamento do sistema.

NSA 1

NSA 2

NSA 3

NPA ?

Figura 20 Loop na execuo de um NSA

O Validador NSA foi criado para verificar se o NSA a ser executado no possui referncias circulares. Se nenhuma referncia circular for encontrada e execuo procede normalmente, caso contrrio, a execuo interrompida.

41

7.2 Mdulos de InteraoTELA PRINCIPAL

Figura 21 Tela Principal

A tela principal do sistema ARc permite executar o processamento, a execuo de comandos e o acessa as telas de edio de NSAs e NPAs. Os NSAs criados aparecem na parte esquerda da tela na lista NSAs e podem ser selecionados e processados. Ao processar um NSA ele aparece na lista NSAs Processados situada ao centro. Os NSAs Processados podem ser selecionados para execuo onde, ao selecionar, so adicionados Lista de Execuo onde so executados sequencialmente conforme a lista. A pequena lista situada a parte inferior esquerda da tela o LOG, onde aparecem as mensagens de aes executadas pelo sistema.

42

TELA DE EDIO DE NPA

Figura 22 Tela de edio NPA

A tela de edio de NPA permite criar um NPA dispondo controles para configurao dos movimentos dos motores, ou seja, permite que o usurio operador configure as informaes de motores que sero inseridas no NPA criado. A tela de edio de NPA dividida em quatro partes: sliders de controle, listas de informaes de motores, botes de ao e concluso de NPA. Sliders de controle: H um slider para cada motor do rob. Os sliders so controles deslizantes e permitem configurar o valor que cada motor deve assumir para realizar um movimento.

43

Listas de informaes de motores: Todas as informaes de motores so adicionadas nas listas. Cada lista representa um motor especfico. Os itens das listas podem ser adicionados ou removidos, sempre que um item de uma lista removido um item de mesma posio das outras listas tambm removido. Botes de ao: Os botes de ao permitem adicionar, remover e visualizar as informaes que esto sendo editadas. Os botes so os seguinte:

ADD: Adiciona os valores indicados nos sliders nas listas. Resetar: Volta a posio de todos os sliders para a posio inicial. Visualizar: faz com que o rob assuma a posio indicada nos sliders, permitindo ver a posio real a ser tomada pelos motores do rob. Editar: L as informaes selecionadas nas listas e ajusta os sliders. Limpar: Remove todas as informaes das listas. Remover: remove os itens selecionados nas listas.

Concluso de NPA: onde inserido o nome do NPA e escolhida a opo Salvar ou Cancelar.

44

TELA DE EDIO DE NSA

Figura 23 Tela de Edio NSA A tela de edio de NSA permite criar, editar e excluir um NSA. Esta tela composta por trs partes: NPA, NSA e Novo NSA. Parte NPA: Todos os NPAs existentes so exibidos em uma lista onde podem ser selecionados para fazer parte do novo NSA, editados ou excludos. Ao adicionar um NPA como parte de um novo NSA ele aparece na lista Novo NSA. Parte NSA: Assim como os NPAs, os NSAs existentes so exibidos numa lista onde podem ser selecionados para fazer parte do novo NSA, editados ou excludos. Ao adicionar um NSA com parte de um novo NSA ele aparece na lista Novo NSA. Parte Novo NSA: Os NPAs e NSAs so adicionados a lista Novo NSA para serem parte do novo NSA. Esta parte utilizada para criar, salvar e editar NSAs.

45

TELA DE CONFIGURAO

Figura 24 Tela de Configurao

A tela de Configurao permite ajustar alguns parmetros do sistema ARc, como inicializao dos motores, login do banco de dados e tempo de delay. As configuraes de inicializao dos motores permitem ajustar qual a posio que deve ser assumida pelo rob no momento da carga do sistema. As informaes de banco de dados indicam o nome de usurio e senha para serem utilizados na abertura do banco de dados e onde est o arquivo de banco de dados. O tempo de delay o parmetro utilizado pelo mdulo do nvel Baixo Controle de Delay para calcular o tempo necessrio para o rob executar o movimento. Os botes salvar e cancelar permitem salvar ou no as alteraes nas configuraes.

46

7.3 Relao Entre os Mdulos do Nvel AltoEDIO DE NPA PRINCIPAL CONFIGURAES

EDIO DE NSA

CONTROLE BD

CONEXO

NPA

NSA

DESMONTADOR NSA

VALIDADOR NSA

FILA DE COMANDOSFigura 25 - Relao Entre os Mdulos do Nvel Alto

47

8. NCLEO

Como visto anteriormente, o sistema ARc foi dividido em dois nveis que possuem mdulos que comunicam entre si. O problema : como fazer a comunicao entre os mdulos do mesmo nvel e/ou de um nvel diferente? O Ncleo se comunica com todos os mdulos do sistema, de forma a centralizar as chamadas aos mdulos, ou seja, se um mdulo precisa enviar ou coletar informaes de outro mdulo solicita ao ncleo que execute a ao. O Ncleo se encarrega de solicitar e enviar as informaes para os mdulos. Para fazer com que o Ncleo veja e seja visto por todos os mdulos, todos os mdulos so carregados a partir do Ncleo e recebem uma referncia do ncleo no momento de sua criao. Para explicar melhor vamos utilizar termos da linguagem Java: Os mdulos so instanciados dentro do Ncleo e uma referncia do Ncleo passada no construtor dos mdulos. Por exemplo, para exibir os NSAs existentes na tela Principal, a tela Principal solicita ao Ncleo que solicite ao Controle BD uma lista de NSAs, o Ncleo executa a tarefa e retorna a lista para a tela Principal. Por intermediar a comunicao entre os mdulos dos dois nveis, o Ncleo no pertence a nenhum dos nveis, fica situado externamente aos dois nveis. O Ncleo, alm centralizar todos os mdulos, tambm armazena as informaes de parmetros utilizadas pelos mdulos. Para isso possui um mdulo de informao prprio chamado Parmetros.

PARMETRO: MDULO DE INFORMAO As informaes contidas no mdulo Parmetro so gravadas em um arquivo de propriedades do Java, o properties. A classe properties do Java tem a funo de armazenar identificadores e valores, normalmente, em um arquivo texto com extenso .properties. Esse arquivo lido sempre que o programa inicia e pode ser gravado sempre que o usurio operador alterar as configuraes e clicar no boto Salvar na tela Configuraes.

48

Abaixo, um diagrama representativo de como a relao entre os mdulos atravs do Ncleo:

Mdulos do nvel Alto

Ncleo

Todos os mdulos, com exceo dos mdulos de informao, precisam passar pelo ncleo para se comunicarem, inclusive os mdulos de mesmo nvel.

Mdulos do nvel Baixo

Figura 26 Relao entre os mdulos atravs do

49

9. BANCO DE DADOS

O sistema ARc armazenas informaes como NPAs e NSAs em um banco de dados para que essas informaes possam ser utilizadas mais de uma vez. O banco de dados utilizado neste Trabalho de Concluso de Curso o Firebird 1.5 que acessado pelo java atravs de um driver JDBC. Apenas recursos de leitura e gravao em tabelas so utilizados. A seguir veremos quais so as tabelas utilizadas pelo sistema e como o mapeamento de um mdulo de informao (classe) foi feito para o banco de dados:

9.1 TabelasO sistema ARc utiliza cinco tabelas: Comando, NPA, NSA, NSA_LISTA e PROC. Tabela COMANDO: A tabela COMANDO armazena as informaes de uma classe Comando. Os campos da tabela COMANDO so: NPA: Referncia do NPA ao qual o comando armazenado pertence. PATA: Identificador que indica qual fila de motores (pata) do comando o motor pertence. MOTOR: Identificao do motor que dever receber o valor armazenado. VALOR: Valor a ser passado para o motor. (Lembrando que as informaes de motores de um comando passa por diversos ajustes at chegar ao rob) ORDEM: Garante que a ordem de leitura das informaes da tabela seja a mesma mostrada durante a criao do comando. Abaixo, veja um exemplo de como acontece o mapeamento do objeto Comando para a tabela COMANDO, respectivamente: (onde: V = valor e D = delay)

50

COMANDO FilaMotor Motor N S L O (N1, V1, D1), (N2, V2, D2), ..., (Nn, Vn, Dn) (S1, V1, D1), (S2, V2, D2), ..., (Sn, Vn, Dn) (L1, V1, D1), (L2, V2, D2), ..., (Ln, Vn, Dn) (O1, V1, D1), (O2, V2, D2), ..., (On, Vn, Dn) Tabela 3 - Comando

NPA NPA 1 NPA 2 NPA 1 NPA 1 NPA 1 NPA 3 NPA 3 NPA 2

PATA N N S S L L O O

MOTOR N1 N2 S1 S2 L1 L2 O1 O2

VALOR V1 V2 V1 V2 V1 V2 V1 V2

ORDEM 01 05 02 06 03 07 04 08

Tabela 4 Exemplo de Comando armazenado

Os comandos s so salvos quando atribudos a um NPA, ou seja, a tabela COMANDO uma espcie de lista de informaes de um NPA. O valor do campo ORDEM da tabela COMANDO atribudo a medida que as informaes vo sendo salvas.

TABELA NPA A tabela NPA foi criada para armazenar as informaes essenciais de cada NPA. Nesta verso do sistema ARc, a tabela NPA armazena apenas uma listagem de NPAs existentes, mas a inteno j deixar o banco de dados preparado para inserir informaes diferentes sem precisar reestruturar as tabelas.

51

TABELA NSA Assim como a tabela NPA, a tabela NSA tambm uma listagem com a intenteno de deixar o banco de dados preparado. TABELA NSA LISTA Como visto anteriormente, um NSA possui uma lista cujos elementos podem ser NPAs ou NSAs. A tabela NSA LISTA foi criada para armazenar essa lista. Os campos da tabela NSA LISTA so: NSA: Referncia ao NSA no qual o elemento da lista pertence. ITEM: Referncia ao Item listado (nome NPA ou NSA). TIPO: Tipo do item listado (NPA ou NSA). ORDEM: Garante que a ordem de leitura das informaes da tabela seja a mesma mostrada durante a criao da lista do NSA. Para poder mapear as informaes de um NSA para a tabela NSA LISTA, existe uma classe chamada BDListaElemento utilizada exclusivamente para este fim. Ao solicitar gravao dos dados, a lista do NSA convertida em uma lista de BDListaElemento e depois enviada para a gravao. A classe BDListaElemento possui as seguintes informaes: ID: Identificao (Nome) do item da lista (NPA ou NSA). TIPO: Tipo do item (NPA ou NSA). O mapeamento do NSA, com a classe BDListaElemento fica simples: NSA: passo frente LISTA do NSA (BDListaElemento) ID TIPO Frente1 NPA Traz2 NPA Tabela 5 Exemplo tabela NSA TABELA NSA LISTA NSA ITEM TIPO Passo frente Frente1 NPA Passo frente Traz2 NPA Tabela 6 Exemplo tabela NSA Lista

ORDEM 1 2

52

O campo NSA da tabela recebe o nome do NSA; o campo ITEM recebe o ID do BDListaElemento; o campo TIPO recebe o TIPO do BDListaElemento e; o campo ORDEM incrementado conforme a leitura de cima para baixo na lista NSA. TABELA PROC Como visto, um NSA quando processado, gerado um arquivo com o nome do NSA. A tabela PROC armazena o nome desse arquivo indicando que o arquivo foi gerado. apenas uma listagem de nomes de arquivos criados com o processamento de NSAs.

53

10. A TRAJETRIA DE UM COMANDO

At agora, vimos que os comandos passam por diversas alteraes at serem transmitidos para o rob. Neste captulo, veremos o trajeto que um comando faz desde sua criao at a execuo do mesmo pelo rob.

10.1 Trajeto do comando na viso do operadorUm comando nasce na tela de Edio de NPA, afinal, todos os NPA so comandos, equanto um NSA, uma lista de comandos. Na tela de edio de NPA, o operador informa ao sistema a posio de cada motor e, aps informar vrias posies diferentes para um mesmo motor, dizemos que este motor executa um movimento. O operador informa vrias posies para todos os motores do rob e salva o NPA. O NPA salvo armazenado no banco de dados e listado na tela de edio de NSA. Na tela de edio NSA o NPA criado pode ser selecionado para uma ou mais listas de execuo de um novo NSA. O mesmo NPA pode ser incluido quantas vezes necessrio em uma lista de um mesmo NSA, ou seja, o NSA pode possuir uma chamada para um determinado NPA vrias vezes em sua lista. O operador, na tela de edio de NSA, cria um novo NSA contendo outros NPAs ou NSAs salvos e salva o novo NSA, que armazenado no banco de dados e passa a ser listado na tela Principal. Na tela principal, o operador seleciona o NSA desejado e solicita que seja processado. O NSA desmontado e gerado um arquivo no computador contendo as informaes dos movimentos executados pelo NSA processado. Ao processar um NSA, ele passa a ser listado na lista de NSAs Processados e pode ser selecionado para execuo. O operador seleciona um ou mais NSAs Processados e solicita execuo. Todas as informaes dos NSAs Processados selecionadas para execuo so concatenadas e enviadas para o rob.

54

10.2 Trajeto do comando na viso dos sistemaCriando o NPA: Na tela de edio de NPA, o operador informou as posies dos motores e solicita que os dados sejam salvos como um novo NPA. Cada posio informada pelo operador convertida em uma informao de motor (classe de informao Motor) e colocada em um Comando (classe de informao Comando). O Comando inserido em uma classe NPA (classe de informao) juntamente com o nome atribudo ao novo NPA. O novo NPA passado para o mdulo Controle BD, acionado a partir do Ncleo, para ser salvo no banco de dados. O Controle BD l todas as informaes de motores dentro do NPA e salva no banco de dados. Criando o NSA: Na tela de edio de NSA, o operador seleciona os NPAs e NSAs que iro compor a lista de novo NSA e solicita que os dados sejam salvos como um novo NSA. A lista de NPAs e NSAs selecionados inserida em uma nova classe NSA (classe de informao). Essa nova classe NSA enviada para o Controle BD para ser salva. O Controle BD salva cada item das lista de execuo do novo NSA no banco de dados. Processando um NSA para a exeucuo: Na tela Principal, o operador escolhe o NSA e solicita que seja processado. Quando o operador escolhe o NSA, ele seleciona o nome do NSA em uma lista, ento, o Controle BD utiliza esse nome selecionado e resgata as informaes desse NSA no banco de dados, retornando uma classe NSA (classe de informao). Essa classe NSA precisa ser ajustada para que suas informaes estejam corretas antes de serem enviadas para o rob, ento enviada aos mdulos de controle. O primeiro mdulo que o NSA percorre o VALIDADOR (mdulo do nvel alto) que verifica se a lista no possui redundncia que possa travar o sistema. Ao passar pelo Validador, o NSA segue para o DESMONTADOR (classe do nvel alto) onde todas as informaes de motores so extradas para um Fila de Comandos (classe de informao). A Fila de Comandos contm todas as informaes de motores do NSA na seqncia em que devem ser executados, ento, essa Fila enviada para os mdulos do nvel baixo onde as informaes de motores sero ajustadas.

55

O primeiro mdulo de nvel baixo a receber a Fila de Comandos o Controle de Delay que l os valores de cada informao de motor em cada comando da fila de comandos. O dado valor em uma informao de motor (classe de informao Motor) a posio que o motor deve assumir. O Controle de Delay verifica qual vai ser o movimento do motor de acordo com as informaes de motores, calcula o delay necessrio para que os movimentos sejam executados corretamente e atribui o delay para cada informao de motor nos comandos da fila de comandos. Aps serem atribudos os delays, a fila de comandos segue para o mdulo Escalonador que ajusta os delays e mescla as filas internas de cada comando na fila de comandos, retornando uma fila de comandos escalonada. Essa fila de comandos escalonada enviada para o mdulo Serial CMDE onde gerado um arquivo serializado com as informaes da fila. Execuo um NSA Processado: A partir do momento que gerado o arquivo do NSA Processado, o nome desse NSa aparece na lista NSA Processados da tela principal, onde o operador pode seleciona-lo para execuo. O operador seleciona e adiciona os NPAs Processados que deseja executar para a lista de execuo e solicita execuo da lista. Cada item da lista de execuo o nome de um NSA Processado. O sistema percorre todos os nomes de NSA Processados da lista de execuo e, a cada nome, solicita ao Serial CMDE que des-serialize o NSA Processado, ou seja, o Serial CMDE l o arquivo e retorna uma classe NSA Processado. A classe NSA Processado contm uma fila de comandos escalonada. Se forem selecionados mais de um NSA Processado para execuo, o sistema l arquivo a arquivo e concatena em seqncia todas as filas de comandos escalonados existentes nos NSA Processados lidos dos arquivos em uma nica fila. A fila de comandos escalonados final enviada para o mdulo TRANSM que l a fila e converte os comandos para um arquivo de texto (ASCII). A parte externa do mdulo TRANSM l o arquivo de texto e envias os comandos para a placa servo-controladora do rob atravs da porta serial. O arquivo texto possui duas informaes distintas: o comando literalmente interpretado pelo rob e o delay que deve ser aguardado at o envio do prximo comando. Essas

56

informaes so distribudas linha a linha: nas linhas mpares so lidos os comandos e nas linhas pares, os delays.

57

11. CONCLUSO

Neste Trabalho de Concluso de Curso desenvolvemos um rob tipo aranha servocontrolado, onde manifestamos as competncias e habilidades especficas para a rea de computao permitindo um aprendizado aprofundado da linguagem Java e sobre sistemas robticos. O controle de robs exige o uso de sistemas computacionais que permitam processamento em tempo real e linguagens de programao de mais baixo nvel, contudo, conseguimos mostrar que a linguagem Java, apesar de interpretada, pode ter utilizada no desenvolvimento de interfaces para robtica. Mesmo sendo uma linguagem com execuo mais lenta que as utilizadas atualmente para robtica, possui mtodos que podem facilitar o desenvolvimento e o controle de aplicaes robticas. Com relao funcionalidade e operacionalidade do rob, a estratgia utilizada empregando NSAs e NPAs mostrou-se eficaz na transmisso e controle dos movimentos, mesmo os movimentos sincronizado. Como trabalhos futuros, podemos incorporar uma cmera e sensores (ultra-som, infravermelho, ... ) permitindo o desenvolvimento de sistemas para a navegao autnoma de robs com auto-aprendizado. Por outro lado, a linguagem java tambm permite a criao de uma mquina virtual para facilitar e padronizar sistemas de controle em robtica, ou seja, frameworks prprios para robtica mvel de forma a ter java como linguagem em comum de desenvolvimento.

58

Bibliografia

UERJ, Universidade do Estado do Rio de Janeiro. Movimento dos animais tem aplicao na construo de robs. Disponvel em: http://www2.uerj.br/~agenc/htmmaterias/materias/2003mes08_07/01.htm Acesso em: 25.MAR.05 WIKIPDIA, Definio de cinemtica. Disponvel em: http://pt.wikipedia.org/wiki/Cinem%C3%A1tica Acesso em: 25.MAR.05 ALMEIDA, Luis. Luis de Almeida home page. Disponvel em: http://sweet.ua.pt/~lda/index.htm Acesso em: 10.ABR.05 SEW-EURODRIVE. Home Page Perguntas e Respostas. Disponvel em: http://www.sew.com.br/modulos/faq/main_faq.asp Acesso em: 10.ABR.05 LIMA, Christiane. Home Page. Disponvel em: http://www.robofull.hpg.ig.com.br/ Acesso em: 10.ABR.05 VIRGILIO. Newton Channel. Disponvel em: http://members.xoom.virgilio.it/ailab/ Acesso: 12.ABR.05 VERLAB, Laboratrio de Viso Computacional e Robtica. Robtica Mvel. Disponvel em: http://www.lrvpa.dcc.ufmg.br/cursos/roboticamovel/ Acesso: 12.ABR.05 UFRN, Departamento de Engenharia de Computao e Automao. Notas de aula de Percepo Robtica. Disponvel em: http://www.dca.ufrn.br/~lmarcos/courses/robotica/notes/index.html Acesso em: 21.ABR.05 SANTUCI CARVALHO, Marco Antnio. Utilizao de robs autnomos na deteco e desarmamento de minas terrestres. Disponvel em: http://www.lrvpa.dcc.ufmg.br/. Acesso em: 15.MAI.2005 INOVAO TECNOLGICA, Redao. Rob brasileiro recupera turbinas de usinas hidreltricas. Disponvel em: http://www.inovacaotecnologica.com.br/noticias/noticia.php?artigo=010180041130 Acesso em: 25.MAI.2005 INOVAO TECNOLGICA, Redao. Rob submarino autnomo cruza a corrente do Golfo. Disponvel em: http://www.inovacaotecnologica.com.br/noticias/noticia.php?artigo=010180041116 Acesso em: 25.MAI.2005 NETBEANS, Welcome. Disponvel em: http://www.netbeans.org. Acesso em: 18.JUL.05 FERIBIRD, Relational Database for the New Millenium. Disponvel em: http://firebird.sourceforge.net. Acessado em: 27.AGO.05.

59

JAVA, Java Tecology. Disponvel em: http://java.sun.com. Acessado em: 3.JUN.05. PORTAL JAVA, A maior comunidade Java do Brasil. Disponvel em: http://www.portaljava.com. Acessado em: 2.SET.05. ROB CLUBE, Robtica e Eletrnica. Algumas dicas de como desenvolver o seu projeto. Disponvel em: http://www.roboclube.com.br/mand.html. Acessado em: 2.SET.05. ANSNIO, CARLOS. Um Robot Aranha. Disponvel em: http://www.intel.com/cd/corporate/education/emea/por/elem_sec/comp_awards/isef/success/ 221560.htm. Acessado em: 29.SET.05. KLICKEDUCAO, Robtica. Quem foram os antepassados dos robs industriais?. Disponvel em: http://www.klickeducacao.com.br/Conteudo/Referencia/tecnologia/Item_View/0,1655,1009tecnologia-23---POR,00.html. Acessado em: 10.OUT.05. TOURINO, SRGIO ROBERTO GONALVES. Sistema de rastreamento para robs mveis utilizando viso embarcada. Disponvel em: http://www.graco.unb.br/~tourino/mestrado/dis.html. Acessado em: 22.MAI.05. CAEIRO, CLIA MARGARIDA; SERRA, DIANA ROLDO; JORGE, JOSEANA DIAS. O primeiro grande momento da inteligncia artificial. Disponvel em: http://www.citi.pt/citi_2005_trabs/ia/index.html. Acessado em: 19.JUN.05. JAVA, JavaTM 2 Platform Standard Edition 5.0 API Specification. Disponvel em: http://java.sun.com/j2se/1.5.0/docs/api/index.html. Acessado em: 04.JUN.05.

1

ANEXO 1 Cdigo Fonte do Sistema ARc

Para desenvolver o cdigo do sistema foi utilizado o NetBeans IDE 4.1, encontrado em http://www.netbeans.org.

CLASSES[ ar ] [ informao ] BDLista.java ............................................................................................3 Comando.java .........................................................................................3 ComandoEscalonado.java .....................................................................4 ElementoComando.java .........................................................................4 ElementoComandoEscalonado.java .....................................................5 ElementoMotor.java................................................................................5 FilaComando.java ...................................................................................6 FilaComandoEscalonado.java ...............................................................8 FilaMotor.java........................................................................................10 Motor.java ..............................................................................................12 NPA.java ................................................................................................13 NSA.java ................................................................................................13 NAProcessado.java ..............................................................................14 ValorMotores.java .................................................................................14 [ controle ] ControleDelay.java................................................................................16 Escalonador.java ..................................................................................19 SerialCMDE.java....................................................................................20

2

Transmissor.java ..................................................................................22 [ controle.bd ] Conexo.java ...................................................................................26 ControleBD.java ..............................................................................27 DesmontadorNSA.java ...................................................................35 ValidadorNSA.java ..........................................................................36 [ interao ] Config.java.............................................................................................39 Principal.java.........................................................................................47 Splash.java ............................................................................................55 TelaAguarde.java ..................................................................................57 TelaNPA.java..........................................................................................58 TelaNSA.java .........................................................................................81 [ ncleo ] Ncleo.java ............................................................................................88 Paramentros.java ..................................................................................93 Main.java......................................................................................................98

3

PACOTE: ar.informacao BDLista.java1 /* 2 * BDLista.java 3 * 4 */ 5 6 package ar.informacao; 7 8 /** 9 * Utilizado para intermediar a passagem de dados do Banco de Dados e do NSA. 10 * @author Leonardo Torati 11 */ 12 public class BDListaElemento { 13 14 public String id, tipo; 15 16 /** 17 * 18 */ 19 public BDListaElemento(String ID, String TIPO) { 20 id = ID; 21 tipo = TIPO; 22 } 23 24 public String toString(){ 25 return id + " (" + tipo + ")"; 26 } 27 } 28

Comando.java1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 /* * Comando.java */ package ar.informacao; /** * * @author Leonardo Torati */ public class Comando { public FilaMotor n, s, l, o; public int getElementos(){ int i = n.getElementos() + l.getElementos() + s.getElementos() + o.getElementos(); return i; } public String toString(){

4

21 22 23 24 25 26 27 28 29 30 }

}

return ("CMD: " + getElementos());

public Comando(){ n = new FilaMotor("N"); s = new FilaMotor("S"); l = new FilaMotor("L"); o = new FilaMotor("O"); }

ComandoEscalonado.java1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 /* * ComandoEscalonado.java */ package ar.informacao; import java.io.Serializable; /** * * @author Leonardo Torati */ public class ComandoEscalonado implements Serializable{ public FilaMotor fila; public ComandoEscalonado(FilaMotor f){ fila = f; } public ComandoEscalonado(){ fila = new FilaMotor("X"); } }

ElementoComando.java1 2 3 4 5 6 7 8 9 10 11 12 13 14 /* * ElementoComando.java */ package ar.informacao; import ar.*; /** * * @author Leonardo Torati */ public class ElementoComando {

5

15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 }

private Comando comando; private ElementoComando proximo; public public public public void setComando(Comando cmd){comando = cmd;} Comando getComando(){return comando;} void setProximo(ElementoComando p){proximo = p;} ElementoComando getProximo(){return proximo;}

public String toString(){ return ("" + comando); } public ElementoComando(Comando c, ElementoComando p){ proximo = p; comando = c; }

ElementoComandoEscalonado.java1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 /* * ElementoComandoEscalonado.java */ package ar.informacao; /** * * @author Leonardo Torati */ public class ElementoComandoEscalonado { private ComandoEscalonado comando; private ElementoComandoEscalonado proximo; public public public public void setComando(ComandoEscalonado cmd){comando = cmd;} ComandoEscalonado getComando(){return comando;} void setProximo(ElementoComandoEscalonado p){proximo = p;} ElementoComandoEscalonado getProximo(){return proximo;}

22 23 24 25 26 }

public ElementoComandoEscalonado(ComandoEscalonado c, ElementoComandoEscalonado p){ proximo = p; comando = c; }

ElementoMotor.java1/* 2 * ElementoMotor.java 3 */ 4 5 package ar.informacao;

6

6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33

import ar.*; import java.io.Serializable; /** * * @author Leonardo Torati */ public class ElementoMotor implements Serializable{ private Motor motor; private ElementoMotor proximo; public void setMotor(Motor m){motor = m;} public Motor getMotor(){return motor;} public void setProximo(ElementoMotor p){proximo = p;} public ElementoMotor getProximo(){return proximo;} public ElementoMotor(Motor m, ElementoMotor p){ motor = m; proximo = p; } public String toString(){ return motor.getId() + motor.getValor(); }

}

FilaComando.java1/* 2 * FilaComando.java 3 */ 4 5 package ar.informacao; 6 7 /** 8 * 9 * @author Usuario 10 */ 11 import java.util.Vector; 12 import ar.informacao.ElementoComando; 13 import ar.informacao.Comando; 14 15 /** 16 * 17 * @author Leonardo Torati 18 */ 19 public class FilaComando{ 20 private Vector v; 21 private int qtd; 22 private ElementoComando inicio, fim; 23 24 public int getElementos(){return qtd;} 25 26 public Vector getVector(){

7

27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85

}

return v;

public void adicionar(Comando c){ if(c != null){ //criar elemento ElementoComando e = new ElementoComando(c, null); //adicionar elemento v.add(e); //setar inicio e fim if(qtd == 0){ //primeiro elemento inicio = e; fim = e; }else{ fim.setProximo(e); fim = e; } //incrementar contador qtd++; } } public Comando remover(){ Comando retorno = null; if(qtd == 0){ //fila vazia retorno = null; }else{ //fila n?o vazia //remover cabe?a ElementoComando tmp; retorno = inicio.getComando(); tmp = inicio; inicio = inicio.getProximo(); tmp = null; //System.gc(); } } qtd--;

return retorno;

public Comando consultar(int pos){ Comando ret = null; if(qtd > 0 && pos 0 && pos 0 && pos 0 && pos 0 && pos < qtd){ ElementoMotor e = v.get(pos); ret = e.getMotor(); } } return ret;

public void alterar(int pos, Motor m){ //pre: pos eh valido e m != null //pos: motor do elemento na pos indicada eh reconfigurado if(qtd > 0 && pos < qtd && m != null){ ElementoMotor e = v.get(pos); e.setMotor(m); v.set(pos, e);

12

116 117 118 119 120 121 122 123 124 125 126 }

}

}

public FilaMotor(String sid){ id = sid; v = new Vector(); inicio = null; fim = null; qtd = 0; }

Motor.java1 2 3 4 5 6 7 8 9 10 11 12 13 14 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 /* * Motor.java */ package ar.informacao; import java.io.Serializable; /** * * @author Leonardo Torati */ public class Motor implements Serializable{ private int valor; //valor private int delay; private String id, nome; public void setValor(int v){ valor = v; } public public public public void setId(String s){id = s;} String getId(){return id;} void setNome(String n){nome = n;} String getNome(){return nome;}

public void setDelay(int d){delay = d;} public int getDelay(){return delay;} public int getValor(){return valor;} public Motor(String s, int v, int d){ valor = v; delay = d; id = s; } public String toString(){return "" + id + valor + "(" + delay + ")";} }

13

NPA.java1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 /* * NPA.java */ package ar.informacao; import ar.informacao.Comando; /** * * @author Leonardo Torati */ public class NPA { String id; Comando cmd; public String getId(){ return id; } public Comando getCmd(){ return cmd; } /** Creates a new instance of NPA */ public NPA(String ID, Comando CMD) { id = ID; cmd = CMD; } } public String toString(){ return id; }

NSA.java1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 /* * NSA.java */ package ar.informacao; import ar.informacao.*; import java.util.Vector; /** * * @author Leonardo Torati */ public class NSA { private String id; private Vector lista; public String getId(){ return id; } public Vector getLista(){ return lista; } /** Creates a new instance of NSA */ public NSA(String ID, Vector LISTA) { id = ID; lista = LISTA; } public String toString(){ return id; }

14

27 }

NSAProcessado.java1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 /* * NSAProcessado.java */ package ar.informacao; /** * * @author Leonardo Torati */ public class NSAProcessado { private String id; private ComandoEscalonado cmde; public String getId(){ return id; } public ComandoEscalonado getComandoEscalonado(){ return cmde; } public void setComandoEscalonado(ComandoEscalonado c){ cmde = c; } /** Creates a new instance of NSAProcessado */ public NSAProcessado(String ID) { id = ID; cmde = null; } public NSAProcessado(String ID, ComandoEscalonado c) { id = ID; cmde = c; } public String toString(){ return id + " ("+cmde.fila.getElementos()+")"; }

}

ValorMotores.java1 2 3 4 5 6 7 8 9 10 11 12 13 14 /* * ValorMotores.java */ package ar.informacao; /** * * @author Leonardo Torati */ public class ValorMotores { public int a, b, c, d, e, f, g, h;

15

15 16 17 18 19 20 21 }

public ValorMotores(){ } public ValorMotores(int valPadrao){ a = b = c = d = e = f = g = h = valPadrao; }

16

PACOTE: ar.controle

ControleDelay.java1 2 3 4 5 6 7 8 9 10 11 12 13 14 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 42 43 44 45 46 47 48 49 50 51 52 53 54 /* * ControleDelay.java */ package ar.controle; import ar.nucleo.*; import ar.informacao.*; import ar.nucleo.Nucleo; /** * * @author Leonardo Torati */ public class ControleDelay { private Nucleo nucleo; private FilaComando fentrada, fsaida; private int tempoDelay; private int da, db, dc, dd, de, df, dg, dh; /** * */ public void setEntrada(FilaComando fila){ fentrada = fila; } /** * */ public FilaComando getSaida(){ return fsaida; } /** * */ public void ajustarDelay(){ fsaida = new FilaComando(); Comando cmd; //descarregar fila de entrada if(fentrada != null){ while(fentrada.getElementos() > 0){ //remover proximo comando cmd = fentrada.remover(); //calcular fila cmd.n = calcular(cmd.n); cmd.s = calcular(cmd.s); cmd.l = calcular(cmd.l); cmd.o = calcular(cmd.o);

17

55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112

} }

//adicionar comando na saida fsaida.adicionar(cmd);

nucleo.msg(fsaida.getElementos() + " Comandos.", true);

}

private int getUltimoValor(Motor m){ if(m.getId().equals("A")){ return da; } if(m.getId().equals("B")){ return db; } if(m.getId().equals("C")){ return dc; } if(m.getId().equals("D")){ return dd; } if(m.getId().equals("E")){ return de; } if(m.getId().equals("F")){ return df; } if(m.getId().equals("G")){ return dg; } if(m.getId().equals("H")){ return dh; } return 0; } private void setUltimoValor(Motor m){ if(m.getId().equals("A")){ da = m.getValor(); return; } if(m.getId().equals("B")){ db = m.getValor(); return; } if(m.getId().equals("C")){ dc = m.getValor(); return; } if(m.getId().equals("D")){ dd = m.getValor(); return; } if(m.getId().equals("E")){ de = m.getValor(); return; }

18

113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169

}

if(m.getId().equals("F")){ df = m.getValor(); return; } if(m.getId().equals("G")){ dg = m.getValor(); return; } if(m.getId().equals("H")){ dh = m.getValor(); return; }

private FilaMotor calcular(FilaMotor fila){ int delay, ultimoVal, diferenca; Motor motor; //calcular delay para cada motor da fila //verificar motores for(int i=0;i 0){ cmde = new ComandoEscalonado(); Comando cmd; Motor mn, ms, ml, mo, m; int delay; while(entrada.getElementos() > 0){ cmd = entrada.remover(); while(cmd.getElementos()>0){ delay = maiorDelay(cmd); mn ms ml mo = = = = cmd.n.remover(); cmd.s.remover(); cmd.l.remover(); cmd.o.remover();

m = new Motor(mn.getId(), mn.getValor(), 0); cmde.fila.adicionar(m); m = new Motor(ms.getId(), ms.getValor(), 0);

20

49 50 51 52 53 54 55 56 57 58

cmde.fila.adicionar(m); m = new Motor(ml.getId(), ml.getValor(), 0); cmde.fila.adicionar(m); m = new Motor(mo.getId(), mo.getValor(), delay); cmde.fila.adicionar(m); } }

59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 }

nucleo.msg("Escalonador: " + cmde.fila.getElementos() + " elementos no comando escalonado."); if(gravar == true) gravarNSAProcessado(); } } public ComandoEscalonado getSaida(){return cmde;} private int maiorDelay(Comando cmd){ int ret=0, delay; Motor m; m=cmd.n.primeiro(); delay = m.getDelay(); if(delay > ret) ret = delay; m=cmd.s.primeiro(); delay = m.getDelay(); if(delay > ret) ret = delay; m=cmd.l.primeiro(); delay = m.getDelay(); if(delay > ret) ret = delay; m=cmd.o.primeiro(); delay = m.getDelay(); if(delay > ret) ret = delay; } return ret;

/** * */ public Escalonador(Nucleo n) { nucleo = n; entrada = null; } private void gravarNSAProcessado(){ NSAProcessado nsap = new NSAProcessado(id, cmde); nucleo.getControleBD().updateNSAProcessado(nsap); }

SerialCMDE.java1 /* 2 * SerialCMDE.java

21

3 4 5 6 7 8 9 10 11 12 13 14 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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60

*/ package ar.controle; import ar.informacao.*; import java.io.*; /** * * @author Leonardo Torati */ public class SerialCMDE { //public void setCmde(ComandoEscalonado c){cmde = c;} //public void setId(String ID){id = ID;} public boolean serializar(ComandoEscalonado cmde, String id){ boolean ret = true; //criar e serializar arquivo if(id.equals("") == false && cmde != null){ try{ File file = new File(id + ".nsap"); FileOutputStream out = new FileOutputStream(file); ObjectOutputStream objout = new ObjectOutputStream(out); objout.writeOb