• Nenhum resultado encontrado

2009.1MonografiaTCC-completafinal-correção-vfentragaecolegi

N/A
N/A
Protected

Academic year: 2021

Share "2009.1MonografiaTCC-completafinal-correção-vfentragaecolegi"

Copied!
102
0
0

Texto

(1)

Nelson Alves Ferreira Neto

DESENVOLVIMENTO DE ESTACIONAMENTO AUTÔNOMO

BASEADO EM LÓGICA FUZZY

FEIRA DE SANTANA 2010

(2)

NELSON ALVES FERREIRA NETO

DESENVOLVIMENTO DE ESTACIONAMENTO AUTÔNOMO

BASEADO EM LÓGICA FUZZY

FEIRA DE SANTANA 2010

(3)

NELSON ALVES FERREIRA NETO

DESENVOLVIMENTO DE ESTACIONAMENTO AUTÔNOMO

BASEADO EM LÓGICA FUZZY

Trabalho de Conclusão de Curso apresentado ao curso de Engenharia de Computação da Universidade Estadual de Feira de Santana para a obtenção do título de Bacharel em Engenharia de Computação.

Orientador: Prof. Anfranserai Morais Dias

FEIRA DE SANTANA 2010

(4)

Dedico este trabalho a meu pai e minha mãe por me apoiarem nessa caminhada. E minha mulher e minha filha por sempre me darem força para continuar.

(5)

RESUMO

Esse trabalho descreve o projeto e implementação de um sistema capaz de estacionar um carro em uma vaga paralela de estacionamento de maneira autônoma. O sistema foi subdividido em três subsistemas menores: um ambiente simulado, um controlador Fuzzy e um hardware implementado no carro (responsável por coletar dados e controlar os motores).

Uma parte do projeto foi desenvolvida em Java (para ser executada no PC) e a outra num microcontrolador. A comunicação entre o Computador e o microcontrolador é feita através da USB.

São descritos neste documento, a pesquisa e seleção dos componentes de hardware a compor o projeto, as estratégias adotadas para o desenvolvimento e a implementação do controlador Fuzzy responsáveis pelas decisões do sistema.

(6)

ABSTRACT

This paper describes the design and implementation of a system able to park a car unattended. The system was divided into three smaller subsystems: a simulation environment, a Fuzzy Controller and the hardware implemented in the car.

Part of the project was developed in Java (to run on PC) and the other in the microcontroller. The communication between the computer and the microcontroller is done through the USB protocol.

It describe here the search and selection of hardware components to compose the project, the strategies adopted for the development and the implementation of the Fuzzy controller that controls the system.

(7)

LISTA DE FIGURAS

Figura 1: Comparativo Lógica Clássica e Lógica Fuzzy. ... 17

Figura 2: Graus de compatibilidade dos elementos x (temperatura) no conjunto A (febril). .. 18

Figura 3: Conjunto clássico, "crisp", versus conjunto nebuloso. ... 18

Figura 4: Propriedade dos conjuntos nebulosos. ... 20

Figura 5: Intersecção de conjuntos. ... 21

Figura 6: União de conjuntos. ... 22

Figura 7: Operação de complemento ... 23

Figura 8: Representação da uma variável lingüística. ... 25

Figura 9: Controlador Fuzzy. ... 26

Figura 10: Representação gráfica da variável lingüística inclinaçãoDaCurva. ... 27

Figura 11: Representação gráfica da variável lingüística raioDeCurva. ... 28

Figura 12: Máquina de inferência do controlador de Mamdani. ... 29

Figura 13: Posição do centro de área. ... 30

Figura 14: Posição do método média dos máximos... 31

Figura 15: Modelo cinemático de um carro. ... 31

Figura 16: Receptáculo. ... 32

Figura 17: Funcionamento do sensor de distância. ... 34

Figura 18: Disposição dos sensores no carro. ... 36

Figura 19: Dimensões do sensor "Sharp - GP2D120". ... 38

Figura 20: Esquemático do controlador de motor L298. ... 40

Figura 21: Estrutura do sistema. ... 41

Figura 22: Relação distância/tensão do Data Sheet com os aferidos no testes. ... 44

Figura 24: Forma gráfica da função de interpolação das medidas da Tabela 17... 46

Figura 27: Algoritmo da função de conversão. ... 46

Figura 25: Frame gráfico do mundo virtual. ... 47

Figura 26: Comunicação entre componentes. ... 48

Figura 27: Modelagem do deslocamento do carro... 49

Figura 28: Vértices calculados pela simulação... 50

Figura 33: Função de cálculo de próximo vértice. ... 50

(8)

Figura 31: Visualização 2D do mundo simulado. ... 52

Figura 32: Vértices compartilhados entre o carro e os sensores... 53

Figura 33: Prováveis pontos que definem o vértice onde o feixe de luz incide. ... 54

Figura 34: Seleção do ponto de incidência do feixe de luz do sensor. ... 54

Figura 35: Diagrama de classes do sistema de controle. ... 56

Figura 36: Máquina de estados do sistema. ... 57

Figura 37: Pré-condição para estacionar. ... 58

Figura 38: Carro estacionado. ... 58

Figura 39: Função Fuzzy que representa a variável lingüística "DistânciaDoSensor". ... 60

Figura 40: Função Fuzzy que representa a variável lingüística "ÂnguloDaDireção". ... 61

Figura 41: Carro para trás e para direita - entrando na vaga. ... 62

Figura 43: Carro entrando na vaga com direção para esquerda - andando para trás. ... 63

Figura 46: Regras que modelam a entrada no carro na vaga – para trás e para direita. ... 63

Figura 48: Regras que modelam a entrada no carro na vaga – para trás e para esquerda. ... 64

Figura 49: Regras de mudança de direção – regras não Fuzzy. ... 64

Figura 47: Para frente e para direita - alinhando. ... 65

Figura 50: Indo para frente e para a direita – regras para alinhar o carro. ... 65

Figura 49: Para frente e para esquerda - alinhando. ... 66

Figura 52: Indo para frente e para Esquerda – regras para alinhar o carro. ... 66

Figura 54: Regras não Fuzzy que decidem quando o carro vai mudar de trajetória. ... 67

Figura 55: Regras de alinhamento do carro andando para trás e com a direção para a direita. 67 Figura 52: Para trás e para direita - alinhando. ... 68

Figura 54: Para trás e para esquerda - alinhando. ... 69

Figura 57: Regras de alinhamento do carro andando para trás e direção para a esquerda. ... 69

Figura 55: Indo para frente e para direita - alinhando... 70

Figura 56: Para frente e para esquerda - alinhado. ... 71

Figura 57: Configuração do clock. ... 73

Figura 58: Diagrama de pinos do L298... 74

Figura 59: Diagrama de controle da direção de um motor DC. ... 74

Figura 60: Diagrama da ponte H. ... 75

Figura 61: Saída do PWM. ... 76

Figura 62: Diagrama de blocos do Timer2. ... 76

Figura 63: Modelagem do controle dos motores. ... 78

(9)

Figura 65: Seleção dos canais e da tensão de referência para o ADC. ... 80

Figura 66: Modelagem para ICSP e depuração. ... 82

Figura 67: Modelagem da comunicação USB. ... 83

Figura 68: Vaga que tem carro na frente e na traseira – vaga tipo 1. ... 85

Figura 69: Vagas em que há carros apenas na frente – vaga tipo 2. ... 86

Figura 70: Dimensões virtuais do carro. ... 87

Figura 71: Trajeto básico realizado pelo carro. ... 87

Figura 72: Carro inclinado no sentido de sair da vaga. ... 88

Figura 73: Carro inclinado no sentido de entrar na vaga. ... 89

Figura 74: Carro posicionado afastado do veículo ao lado. ... 90

(10)

LISTA DE TABELAS

Tabela 1: Propriedades de uma t-norma. ... 21

Tabela 2: Operações que completam a t-conorma. ... 22

Tabela 3: Propriedades do operador de negação. ... 24

Tabela 4: Conjunto de regras de um sistema. ... 26

Tabela 5: Variáveis e seus valores fuzificados. ... 27

Tabela 6: Regras de inferências de compatibilidade (Min). ... 29

Tabela 7: União das compatibilidades dos termos das variável lingüística. ... 29

Tabela 8: Exemplo de regras. ... 29

Tabela 9: Exemplo de classes e dispositivos. ... 33

Tabela 10: Caracteristicas do "LV-MacSonar EZ1". ... 37

Tabela 11: Características do sensor "Sharp - GP2D12". ... 38

Tabela 12: Características do sensor "Sharp - GP2D120". ... 38

Tabela 13: Características dos microcontroladores PIC10F220 e PIC10F222 ... 39

Tabela 14: Características dos PIC18F4550 e PIC18F2550. ... 40

Tabela 15: Relação da tensão por distância dos sensores. ... 43

Tabela 16: Valores médios e desvio padrão para medidas de todos os sensores. ... 44

Tabela 17: Relação tensão/distância de acordo com a Figura 22. ... 45

Tabela 18: Entradas e saídas para função que calcula próximo vértice. ... 51

Tabela 19: Semi-retas delimitadoras com o x fixo. ... 52

Tabela 20: Semi-retas delimitadoras com o y fixo. ... 52

Tabela 21: Controle do sentido de rotação de um motor DC. ... 74

Tabela 22: Valores transmitidos e identificadores. ... 84

Tabela 23: Posições do carro na primeira tentativa de estacionar – primeira sessão. ... 88

Tabela 24: Posições do carro na segunda tentativa de estacionar – primeira sessão. ... 89

Tabela 25: Posições do carro na terceira tentativa de estacionar – primeira sessão. ... 90

Tabela 26: Posições do carro na quarta tentativa de estacionar – primeira sessão. ... 91

Tabela 27: Posições do carro na quinta tentativa de estacionar – primeira sessão. ... 92

Tabela 28: Posições do carro na primeira tentativa de estacionar – segunda sessão. ... 93

Tabela 29: Posições do carro na segunda tentativa de estacionar – segunda sessão. ... 93

Tabela 30: Posições do carro na terceira tentativa de estacionar – segunda sessão. ... 94

(11)

Tabela 32: Posições do carro na quinta tentativa de estacionar – segunda sessão. ... 95

Tabela 33: Posições do carro na primeira tentativa de estacionar – terceira sessão. ... 95

Tabela 34: Posições do carro na segunda tentativa de estacionar – terceira sessão. ... 96

(12)

INTRODUÇÃO ... 14 1 FUNDAMENTAÇÃO TEÓRICA ... 16 1.1 LÓGICA FUZZY ... 16 1.2 CONJUNTOS NEBULOSOS ... 17 1.2.1 PROPRIEDADES DE CONJUNTOS ... 19 1.2.2 OPERAÇÕES ... 20 1.2.3 INTERSEÇÃO ... 20 1.2.4 UNIÃO ... 22 1.2.5 VARIÁVEIS LINGUÍSTICAS ... 24 1.3 CONTROLADORES FUZZY ... 25 1.3.1 FUZIFICAÇÃO ... 26 1.3.2 MOTOR DE INFERÊNCIAS ... 28 1.3.3 DESFUZIFICAÇÃO ... 30

1.3.4 MODELO CINEMÁTICO DO CARRO ... 31

1.4 USB ... 32

1.5 SENSOR DE DISTÂNCIA INFRAVERMELHO ... 33

2 METODOLOGIA ... 34

3 DESENVOLVIMENTO ... 35

3.1 ANÁLISE E DEFINIÇÕES ... 35

3.1.1 ANÁLISE E ESCOLHA DOS EQUIPAMENTOS ... 36

3.1.1.1 O SENSOR DE DISTÂNCIA ... 37

3.1.1.2 O MICROCONTROLADOR ... 39

3.1.1.3 O SIRCUITO ACIONADOR... 40

3.1.2 DEFINIÇÃO DA ESTRUTURA DO SISTEMA ... 41

3.2 TESTES E MEDIÇÕES ... 42

3.2.1 TESTE DOS EQUIPAMENTOS ... 42

3.2.2 SUBSISTEMA DE CODIFICAÇÃO DE MEDIDAS... 43

3.3 CONTROLE FUZZY E MUNDO VIRTUAL ... 46

3.3.1 DESENVOLVIMENTO DO MUNDO VIRTUAL ... 47

3.3.1.1 CÁLCULO DOS VÉRTICES DO CARRO... 48

3.3.1.2 MODELAGEM DOS SENSORES E CÁLCULO DAS DISTÂNCIAS ... 52

(13)

3.3.3 MODELAGEM DO CONTROLADOR ... 55

3.3.4 ESTADOS DO PROCESSO DE ESTACIONAMENTO ... 56

3.3.5 PROCESSO DE INFERÊNCIA ... 59

3.3.6 MODELAGEM DAS REGRAS ... 59

3.4 PROJETO DO HARDWARE E COMUNICAÇÃO USB ... 71

3.4.1 CONFIGURAÇÕES DO CLOCK ... 72

3.4.2 O CONTROLE DOS MOTORES ... 73

3.4.3 SENSORES DE DISTÂNCIA ... 78

3.4.4 ICSP E MONITORAMENTO ... 81

3.4.5 COMUNICAÇÃO USB ... 82

3.5 MIGRAÇÃO PARA O MUNDO REAL ... 83

3.5.1 PROTOCOLO DE COMUNICAÇÃO ... 84

4 TESTES E RESULTADOS ... 84

4.1 PRIMEIRA SESSÃO DE TESTES ... 88

4.1.1 TESTE 1 ... 88 4.1.2 TESTE 2 ... 89 4.1.3 TESTE 3 ... 90 4.1.4 TESTE 4 ... 90 4.1.5 TESTE 5 ... 91 4.2 SEGUNDA SESSÃO ... 92 4.2.1 TESTE 1 ... 92 4.2.2 TESTE 2 ... 93 4.2.3 TESTE 3 ... 93 4.2.4 TESTE 4 ... 94 4.2.5 TESTE 5 ... 94 4.3 TERCEIRA SESSÃO ... 95 4.3.1 TESTE 1 ... 95 4.3.2 TESTE 2 ... 96 4.3.3 TESTE 3 ... 96 4.4 OUTROS TESTES ... 97 4.5 RESULTADOS ... 97 5 CONCLUSÕES ... 99

(14)
(15)

INTRODUÇÃO

Desde 1958, com a fracassada tentativa da Chrysler de embarcar em alguns de seus modelos o sistema de injeção eletrônica (SAMAHÁ, 2003), que carros não são mais, apenas meros sistemas mecânicos de locomoção. Com o avanço da computação e da microeletrônica, ao longo dos últimos anos, eles passaram a carregar, cada vez mais, uma quantidade maior de tecnologias embarcadas. Alguns exemplos disso são os freios ABS, que não permitem que os carros travem as rodas no momento da frenagem (JUNG, et al., 2005), o controle de tração, que controla a distribuição de potência do motor evitando que o carro rode na retomada de aceleração e o controle de estabilidade, que traz conforto e tranqüilidade para os motoristas na condução dos veículos. Há também outros tipos de dispositivos embarcados, como o que controla os sistemas bicombustíveis e híbridos, que visam melhorar a eficiência e reduzir o consumo de combustível dos veículos, tendo como resultado carros menos nocivos à natureza. Nos últimos sessenta anos, paralelo ao desenvolvimento da computação e da microeletrônica, também surgiu e cresceu uma nova linha de pesquisa vinculada à computação – a Inteligência Artificial (IA). Um dos ramos de pesquisa dessa linha visa à criação de dispositivos inteligentes capazes de realizar tarefas relativamente complexas ou repetitivas para os seres humanos. Ao longo desse período foram desenvolvidas muitas metodologias de IA, como Lógica Fuzzy, Redes Neurais Artificiais (RNA) e Algoritmos Genéticos (AGs). Boa parte dos avanços nessa área vem, em parte, do sonho humano de viver em uma sociedade com um elevado índice de automação, onde existam sistemas inteligentes autônomos capazes de realizar as suas tarefas indesejáveis. Já na década de 50, o russo Isaac Asimov mexia com o imaginário popular através de suas obras de ficção científica que popularizaram o termo robô e introduziram as Leis da robótica (HOFFMANN, 2006).

No atual cenário tecnológico, ainda não foi desenvolvido nenhum equipamento capaz de imitar o comportamento do cérebro humano, mas sistemas, ditos inteligentes, capazes de realizar tarefas específicas, já começam a se tornar realidade em muitas áreas, como por exemplo, o reconhecimento de imagens (impressão digital, nódulo cancerígeno, reconhecimento de faces).

A tarefa de estacionar um carro em uma vaga paralela necessita de um certo grau de inteligência para ser realizada. Atualmente já existem vários equipamentos eletrônicos que

(16)

tem como objetivo auxiliar esse tipo de manobra, como sensores de estacionamento posicionados nos pára-choques e câmeras. Existe até um carro protótipo da BMW capaz de estacionar automaticamente em uma vaga.

O trabalho que será apresentado descreve a implementação de um sistema, baseado em Lógica Fuzzy, que é capaz de estacionar um veículo de forma autônoma numa vaga paralela de um estacionamento. Este sistema necessitará que o motorista apenas pare o carro na frente da vaga e o acione. Daí para frente ele verificará se o carro cabe na vaga e o estacionará.

Na primeira sessão deste documento será apresentada a fundamentação teórica, onde são expostos os conceitos sobre Lógica Fuzzy (teoria dos conjuntos nebulosos e controles Fuzzy), o modelo cinemático de um carro (modelo que descreve o deslocamento de um carro sobre as rodas, na qual não é permitido que estas deslizem), uma breve introdução sobre USB e o funcionamento dos sensores de distância usados nesse projeto. Na segunda sessão é mostrada a metodologia. A terceira sessão descreve o desenvolvimento, contendo a análise e escolha dos equipamentos, os testes realizados com estes dispositivos, o desenvolvimento do controlador Fuzzy e do módulo de simulação, o projeto do hardware e a comunicação USB entre o hardware e o software. A quarta sessão mostra os testes realizados e a discussão dos resultados. Na quinta sessão são apresentadas as conclusões deste trabalho, e por último são fornecidas as referências.

(17)

1 FUNDAMENTAÇÃO TEÓRICA

Neste tópico serão expostos os principais conceitos teóricos envolvidos no projeto. Serão explicitados os conceitos envolvidos com a Lógica Fuzzy e com o sistema diferencialmente plano que modela o deslocamento de um carro, onde não é considerado o deslizamento das rodas – ou seja, o modelo cinemático do carro.

1.1 LÓGICA FUZZY

A Lógica Fuzzy permite o tratamento de expressões que envolvam grandezas não exatas (NASCIMENTO JR.; YONEYAMA, 2000). Esta metodologia é capaz de capturar informações vagas, em geral descritas numa linguagem natural, e convertê-las para um formato numérico, no qual elas possam ser tratadas (KLIR E YUAN, 1995). Essas informações vagas podem ser observadas quando o ser humano infere graus de veracidade para as informações expostas como, por exemplo, “A criança não está com febre, mas está um pouco quente” ou “A criança está com febre, mas não está muito quente”.

Diferentemente da lógica clássica, o procedimento de inferência na Lógica Fuzzy não tem exatamente uma regra como antecedente de outra (SANDRI; CORREA, 1999). Nesta Lógica, se verifica o grau de compatibilidade das premissas – o grau de pertinência delas. E a partir disso, se obtém a conclusão (os valores de controle).

Um exemplo de como são definidas as pertinências nas lógicas Fuzzy e clássica podem ser vistos na Figura 1. Para a lógica tradicional se a velocidade é menor que 40 km/h, ela é pequena; se ela está entre 40 e 80 km/h, ela é média; se não, a velocidade é grande. Já na Lógica Fuzzy, as variações do grau de compatibilidade desses valores nos conjuntos variam gradativamente.

(18)

Figura 1: Comparativo Lógica Clássica e Lógica Fuzzy.

1.2 CONJUNTOS NEBULOSOS

A teoria dos conjuntos nebulosos foi desenvolvida a partir de 1965 com os trabalhos de Lotfi Zadeh, professor na Universidade da Califórnia em Berkeley (SANDRI; CORREA, 1999).

Essa teoria busca traduzir, em termos formais, as informações imprecisas que ocorrem, de maneira natural, na representação dos fenômenos da natureza, como descritos por humanos numa linguagem corriqueira (NASCIMENTO JR.; YONEYAMA, 2000).

Na teoria clássica dos conjuntos, valores podem estar apenas, totalmente compatíveis ou não com um dado conjunto – ver equação (1). Já na abordagem dos conjuntos nebulosos, esses valores de compatibilidade são contínuos no intervalo de 0 a 1.

𝐴 𝑥 = 1 𝑠𝑒 𝑥 ∈ 𝐴

0 𝑠𝑒 𝑥 ∉ 𝐴 (1)

Formalizando, seja U o universo de discurso formado genericamente por elementos {x}. Um conjunto nebuloso (Conjunto Fuzzy) A do universo de discurso U é definido por uma função de pertinência 𝝁𝑨 𝒙 : 𝐔 → [𝟎, 𝟏]. O valor dessa função, que vai de 0 a 1, indica o grau de compatibilidade do elemento x com o conjunto A: para 𝝁𝑨(x) = 1, é completamente compatível com A; para 𝝁𝑨(x) = 0 é, completamente não compatível com A; e para 0 ≤ 𝝁𝑨(x), ≤ 1, é parcialmente compatível com A. Veja Figura 2.

(19)

Figura 2: Graus de compatibilidade dos elementos x (temperatura) no conjunto A (febril).

Analogamente, um conjunto A da teoria dos conjuntos clássica pode ser visto como um conjunto nebuloso específico, denominado usualmente de “crisp”, para o qual a função de compatibilidade é dada por 𝝁𝑨(𝒙): 𝐔 → {𝟎, 𝟏}, ou seja, a pertinência é do tipo “tudo ou nada”, “sim ou não”, e não gradual como para os conjuntos nebulosos, ver Figura 3, (SANDRI; CORREA, 1999).

(20)

1.2.1 PROPRIEDADES DE CONJUNTOS

A cardinalidade de um conjunto nebuloso (Conjunto Fuzzy) é dada pela área formada no gráfico da função que o define, conforme mostra a Figura 4. Pode-se expressar a cardinalidade de um conjunto nebuloso A qualquer por:

I. Para valores discretos de x pertencente ao universo U:

𝐴 = 𝑥 ∈ 𝑼𝜇𝐴 𝑥 (2)

II. Para valores contínuos de x pertencente ao universo U:

𝐴 = ∫ 𝜇𝑼 𝐴 𝑥 (3)

O núcleo de um dado conjunto nebuloso A, definido por Nu(A). É formado pelo conjunto de valores x do universo U que são completamente compatíveis com A, ou seja, aonde 𝜇𝐴 𝑥 = 1, Figura 4:

𝑁𝑢 𝐴 = {𝑥 ∈ 𝑈/ 𝜇𝐴 𝑥 = 1} = 𝐴1 (4)

A altura de um conjunto nebuloso A, expresso por Al(A), denota o maior grau de compatibilidade que um dado elemento x pertencente a U pode ter em A (Figura 4):

𝐴𝑙 𝐴 = 𝑠𝑢𝑝

(21)

Figura 4: Propriedade dos conjuntos nebulosos (SANDRI; CORREA, 1999).

1.2.2 OPERAÇÕES

Na teoria clássica, quando se tem um valor x pertencente a um conjunto A ou a um conjunto B, diz-se que 𝒙 ∈ (𝑨 ∪ 𝑩). Já quando se tem um valor x pertencente a um A e a um outro conjunto B, diz-se que 𝒙 ∈ (𝑨 ∩ 𝑩) (NASCIMENTO JR.; YONEYAMA, 2000). Assim como nos conjuntos “crisp”, lógica clássica, na teoria dos conjuntos nebulosos também existe a necessidade de fazer operações sobre os conjuntos, tais como união, interseção e complemento. Essas operações são descritas a seguir.

1.2.3 INTERSEÇÃO

A operação de intersecção é representada graficamente na Figura 5, a qual mostra a geração de um novo conjunto C, a partir de dois conjuntos nebulosos A e B (ZADEH, 1965). Est a operação, 𝐶 = (𝐴 ∩ 𝐵), é descrita pela equação (6).

(22)

Figura 5: Intersecção de conjuntos.

Genericamente, na teoria dos conjuntos nebulosos, uma operação de intersecção pode ser tratada como normas triangulares – t-norma (NASCIMENTO JR.; YONEYAMA, 2000). Numa operação do tipo 𝑡 0, 1 𝑋 0, 1 → [0, 1], ∀𝑎, 𝑏 ∈ [0, 1], ela obedece às seguintes propriedades, conforme a Tabela 1.

Tabela 1: Propriedades de uma t-norma.

Propriedade Nome

t(a, 0) = 0 condição de contorno

t(a, b) = t(b, a) comutatividade

t(a, t(b, c)) = t(t(a, b), c) associatividade

t(a, 1) = a condição de contorno

(a ≤ c) ^ (b ≤ d) ⇒ t(a, b) ≤ t(c, d) monotonicidade

O que se pode verificar é que uma operação min(a, b) é uma t-norma, logo é uma operação de intersecção.

(23)

1.2.4 UNIÃO

De acordo com ZADEH (1965), uma operação de união, que gere um novo conjunto C, de dois conjuntos nebulosos A e B, 𝐶 = (𝐴 ∪ 𝐵), pode ser dada pela equação (7).

∀𝑥 ∈ 𝑈, 𝜇𝑐 𝑥 = max⁡{𝜇𝐴 𝑥 , 𝜇𝐵 𝑥 } (7)

Essa idéia está representada na Figura 6, a qual mostra graficamente o resultado dessa operação.

Figura 6: União de conjuntos.

Assim como a intersecção, a união de conjuntos nebulosos pode ser representada com o uso de conormas triangulares, t-conormas ou S-normas (SANDRI; CORREA, 1999).

Para uma operação do tipo 𝑡 0, 1 𝑋 0, 1 → [0, 1], ∀𝑎, 𝑏 ∈ [0, 1], ela obedece, além das propriedades “condição de contorno” e “monotonicidade” da Tabela 1, as seguintes propriedades mostradas na Tabela 2.

Tabela 2: Operações que completam a t-conorma.

Propriedade Nome

t(a, 1) = 1

(24)

Como pode ser percebido, uma operação max(a, b) se enquadra em uma operação t-conorma. Além dos operadores max() e min() para t-conorma e t-norma respectivamente.

1.2.5 COMPLEMENTO

A operação de complemento para conjuntos nebulosos (Conjuntos Fuzzy) pode ser tida como a negação deste conjunto. A operação de complemento em um conjunto A gera um novo conjunto E, E = Ac ou E = ┐A, sendo descrita pela equação (8) e ilustrada na Figura 7.

∀𝑥 ∈ 𝑈, 𝜇𝐸 𝑥 = 1 − 𝜇𝐴 𝑥 (8)

Figura 7: Operação de complemento

De forma análoga ao que foi feito para a intersecção e a união, também pode se definir genericamente a operação de negação.

Um operador 𝑛 0, 1 → [0, 1], ∀𝑎 ∈ [0, 1] é dito ser de negação se obedece às propriedades dispostas na Tabela 3 (NASCIMENTO JR.; YONEYAMA, 2000).

(25)

Tabela 3: Propriedades do operador de negação. Propriedade n(0) = 1 n(1) = 0 a < b ⟹ n(a) < n(b) n(n(a)) = a 1.2.6 VARIÁVEIS LINGUÍSTICAS

Formalmente, uma variável lingüística pode ser definida como uma quádrupla (X, T(X), U, M), onde:

X é o nome da variável que tem como variável base x;

T(X) é conjunto de termos que X pode assumir (cada elemento de T(X) é um rótulo L dos termos que a variável X pode assumir);

U é o universo de discurso; e

M é o conjunto de regras semânticas (que associa cada rótulo L de X a um conjunto Fuzzy no universo U) (SANDRI; CORREA, 1999).

A Figura 8 ilustra um exemplo de uma variável lingüística onde temos os seguintes valores:

X = velocidadeDoCarro;

U = [0, 150];

(26)

Figura 8: Representação da variável lingüística.

1.3 CONTROLADORES FUZZY

As técnicas de Controladores Fuzzy (Controladores Nebulosos) tiveram início em 1976, com E. H. Mamdani (SANDRI; CORREA, 1999). Um controlador Fuzzy, ao contrário de controladores convencionais (onde os algoritmos de controle são descritos por equações algébricas ou diferenciais) faz uso de modelos que tentam aproximar as habilidades do raciocínio humano que permitem a tomada de decisões racionais em ambientes de incerteza e imprecisão (Mendel, 1995). Esse tipo de sistema faz uso da teoria dos conjuntos nebulosos, com base em variáveis lingüísticas, para modelar as suas regras imprecisas e suas inferências.

Um controlador Fuzzy é composto basicamente por três etapas, conforme a Figura 9. A primeira etapa é a de Fuzificação, nela as entradas numéricas são transformadas em termos de variáveis lingüísticas e suas respectivas pertinências (compatibilidade). Na segunda etapa, o motor de inferência recebe estes termos (Conjuntos Fuzzy) das variáveis lingüísticas e, a partir da sua base de conhecimento previamente definida (regras de inferência), infere novos conjuntos de outras variáveis lingüísticas (Conjuntos Fuzzy para variáveis de saídas). A última etapa, a de Desfuzificação, converte os conjuntos gerados pelo motor de inferência em valores numéricos bem definidos, os quais são as saídas de acionamentos do controlador.

(27)

Figura 9: Controlador Fuzzy.

Os principais modelos de controladores Fuzzy são os de Mamdani, Larsen, Takagi-Sugeno e o de Tsukamoto (SANDRI; CORREA, 1999). O modelo descrito aqui será de Mamdani, o qual foi usado no sistema desenvolvido.

1.3.1 FUZIFICAÇÃO

Um controlador Fuzzy é um sistema que tenta imitar o raciocínio humano. Isso só será factível se esse raciocínio for possível de se modelar usando regras do tipo SE... ENTÃO (GOMIDE E GUDWIN, 1994). Um controlador desse tipo, ilustrado na Figura 9, deve conter uma base de regras que represente o seu conhecimento.

Imagine um sistema que controla a velocidade de um carro fazendo uma curva. Para esse exemplo foi definida um base de regras simplificadas, conforme mostra a Tabela 4, para ser usada como parâmetro na etapa de Fuzificação.

Tabela 4: Conjunto de regras de um sistema.

REGRAS

SE (raioDaCurva == pequeno E inclinaçãoDaCurva == poucoPositiva) ENTÃO velocidadeDoCarro <= pequena;

SE (raioDaCurva == grande E inclinaçãoDaCurva == positiva) ENTÃO velocidadeDoCarro <= grande;

SE (raioDaCurva == grande E inclinaçãoDaCurva == poucoNegativa) ENTÃO velocidadeDoCarro <= pequena;

(28)

A Fuzificação converte os valores numéricos de entrada em termos de variáveis lingüísticas (conjuntos nebulosos) e seus respectivos graus de compatibilidade (pertinência do valor de entrada ao conjunto). A Tabela 5 mostra, para uma dada situação onde o raio da curva é de 75 metros e a inclinação da mesma é 23 graus positivo, os valores das variáveis fuzificadas – valores de compatibilidade das entradas com os termos das variáveis lingüísticas de acordo com os conjuntos nebulosos que são associados a cada uma dessas variáveis. Esses conjuntos são mostrados nas Figuras 10 e 11.

Assumiremos neste documento a seguinte notação para as funções de compatibilidade (pertinência): μABabcd(x) indica o grau de pertinência do conjunto que representa o termo

“abcd”, vinculado à variável lingüística que tem como iniciais do seu rótulo “AB”.

Tabela 5: Variáveis e seus valores fuzificados.

Variáveis Lingüísticas Valores Fuzificados

inclinaçãoDaCurva 𝜇ICpoucoNegativa (23) = 0,0, 𝜇ICpoucoPositiva (23) = 0,3, 𝜇ICpositiva (23) = 0,7 raioDaCurva 𝜇𝜇RCpequeno (75𝑚) = 0,2 RCgrande (75𝑚) = 0,8

(29)

Figura 11: Representação gráfica da variável lingüística raioDeCurva.

1.3.2 MOTOR DE INFERÊNCIAS

O procedimento de inferência é responsável por processar os dados de entrada fuzificados de modo a inferir as ações do controlador Fuzzy, aplicando o operador de implicação Fuzzy e as regras da base de conhecimento do controlador (GOMIDE; GUDWIN, 1994).

O modelo de inferência descrito aqui é o modelo de Mamdani. A inferência tradicionalmente utilizada por este modelo é chamada de Inferência Max-Min, a qual utiliza as operações de união e intersecção – t-conoma e t-norma de Zadeh.

O procedimento é o seguinte: a partir dos valores fuzificados e do conjunto de regras que modela o conhecimento humano, como por exemplo, os das Tabelas 4 e 5, deve-se verificar para cada regra, se ela é ativada pelos conjuntos de entradas (se todos os condicionais são validos – maiores que zero). Com esta condição satisfeita, a menor compatibilidade (pertinência) dentre todos os condicionais será atribuída como altura do conjunto inferido (termo de uma variável lingüística) – esta é a etapa que corresponde ao processo Min (procedimento Max-Min de Mamdani). Após todas as regras terem sido concluídas, poderá haver mais de um conjunto para um mesmo termo, será mantido o conjunto que tiver a maior altura inferida – esta corresponde à etapa Max (procedimento

(30)

Max-Mim). A Figura 8 e as Tabelas 6 e 7 mostram o processo de inferência de Mamdani, de acordo com as regras da Tabela 8.

Figura 12: Maquina de inferência do controlador de Mamdani.

Tabela 6: Regras de inferências de compatibilidade (Min).

Inferências com os Termos das Variáveis Lingüísticas Min(𝜇ICpoucoPositiva 23 , 𝜇RCpequeno (75𝑚))  𝜇VCpequena (𝑥)1

Min((𝜇ICpositiva 23 , 𝜇RCgrande (75𝑚))  𝜇VCgrande (𝑥)1

Tabela 7: União das compatibilidades dos termo das variável lingüística.

União das várias pertinências Inferidas para o Mesmo Termo Lingüístico 𝜇VCpequena (𝑥) = Mix(𝜇VCpequena (𝑥)1)

𝜇VCgrande (𝑥) = Max( 𝜇VCgrande (𝑥)1)

Tabela 8: Exemplo de regras.

REGRAS

SE (inclinaçãoDaCurva == poucoPositiva E raioDaCurva == pequeno) ENTÃO velocidadeDoCarro <= pequena;

SE (inclinaçãoDaCurva == positiva E raioDaCurva == grande) ENTÃO velocidadeDoCarro <= grande;

(31)

1.3.3 DESFUZIFICAÇÃO

Como pode ser visto na Figura 12, o resultado obtido pelo modelo de Mamdani é um conjunto nebuloso, que por sua vez é um subconjunto do conjunto que representa a variável lingüística de saída.

Sabe-se que para acionar um controle é necessário um valor definido, como não é possível usar uma representação Fuzzy para isso, há a necessidade de se desfuzificar o conjunto em um valor numérico.

Os processos mais conhecidos para se obter um valor numérico, a partir de um conjunto nebuloso são os de Centro de Área (COA) e o de Média dos Máximos (MOM) (NASCIMENTO JR.; YONEYAMA, 2000):

 Para o método de centro de área (COA) podemos achar o valor desfuzificado aplicando a equação (9). Seguindo o exemplo apresentado, aplicando-se esse método ao resultado mostrado na Figura 12 temos o valor de saída 96,3 km/h, conforme a Figura 13;

𝑣 =

𝑛𝑖=0𝜇𝑐 𝑣𝑖 ∗𝑣𝑖 𝜇𝑐(𝑣𝑖) 𝑛 𝑖=0 (9)

Figura 13: Posição do centro de área.

 Para o mesmo resultado do exemplo mostrado na Figura 12, só que com o método médio dos máximos (MOM), temos o valor desfuzificado conforme Figura 14. Nesse método também é usada a equação (9), só que consideram-se apenas os valores de pico da função que representa o conjunto nebuloso.

(32)

Figura 14: Posição do método média dos máximos.

1.3.4 MODELO CINEMÁTICO DO CARRO

Trata-se de um sistema diferencialmente plano, onde se considera que é permitido às rodas apenas rolarem e não deslizarem (FRANGA; SOUSA; PEREIRA, 2003). Nesse modelo de cinemática (Ackerman) as coordenadas do veículo são definidas por (x, y, θ), onde x e y indicam o ponto médio do eixo traseiro do veículo e θ indica a sua orientação, ou seja, o ângulo em relação à direção de referência (HEINEN et al., 2006), Figura 15.

Figura 15: Modelo cinemático de um carro.

O deslocamento do veículo é descrito pelas equações (10), (11), (12), onde o ponto (x, y) representa a posição mediana do eixo traseiro do veiculo, θ é o ângulo entre o carro e o

(33)

referencial horizontal, φ é o ângulo de condução das rodas dianteiras com relação ao eixo horizontal do carro, v é a velocidade das rodas dianteiras, L é a distância entre o eixo dianteiro e traseiro, conforme mostra a Figura 15. O x‟ representa o incremento a ser dado a x na iteração i+1 (xi+1 = xi + x‟), y‟ é o incremento da coordenada y e θ‟ é o incremento do ângulo

do carro com relação ao referencial

𝑥

= cos𝜃. 𝑠𝑒𝑛𝜑. 𝑣

(10)

𝑦

= sen𝜃. 𝑐𝑜𝑠𝜑. 𝑣

(11)

𝜃

=

1

𝐿

𝑠𝑒𝑛𝜑. 𝑣

(12)

1.4 USB

A USB (Universal Serial Bus – barramento serial universal) surgiu em 1995 com o consórcio de algumas companhias (Compaq, Hewlett-Packard, Intel, Lucent, Microsoft, Nec e Philips) que formaram o USB Implementers Forum. Trata-se de um barramento que foi criado para padronizar a comunicação entre o PC e os periféricos. A comunicação USB 1.1 pode funcionar a 1,5 ou 12 Mbits/s. Ele é capaz de configurar um dispositivo sem a necessidade de reiniciar a máquina.

O barramento USB fornece ao Vcc uma tensão de 5 V e 500 mA de corrente elétrica e para o GND uma tensão de 0 V. Os fios D+ e D- são os responsáveis pela transferência de dados, (ELETRÔNICA, 2008). De acordo com a numeração mostrado na Figura 16, o Vcc é equivalente ao pino 1, o D- ao pino 2, o D+ ao pino 3 e o GND o pino 4. O D- e o D+, referem-se aos pinos de dados da comunicação.

(34)

A comunicação USB pode ser subdividida em várias classes de dispositivos. Cada classe define o comportamento de dispositivos que têm funcionamento semelhante (USB IMPLEMENTERS, 2001). Alguns exemplos de classes são mostrados na Tabela 9.

Tabela 9: Exemplo de classe e dispositivos (USB IMPLEMENTERS, 2001).

Classe Dispositivo

Display Monitor

Comunicação Modem

Armazenamento em massa Pendrive

Áudio Auto-falantes

Dispositivo de Interface Humana Teclado, Mouse

A classe HID (Human Interface Device - Dispositivo de Interface Humana) define a comunicação entre dispositivos, que provavelmente são operados diretamente por seres humanos (teclado, mouse, etc.), com hosts. Inclui-se também nessa classe dispositivos que, apesar de não requererem interação humana, provêm dados em um formato similar, como leitores de códigos de barras e termômetros (ZUQUIM, 2001).

O protocolo HID simplifica a comunicação USB. Ao se conectar um dispositivo, ele envia, para o host, o “HID Descriptor”, o qual é um array de bytes contendo informações referentes ao dispositivo e a descrição dos tipos de pacotes de dados a tranmitir, (USB IMPLEMENTERS, 2001).

1.5 SENSOR DE DISTÂNCIA INFRAVERMELHO

Os sensores de distância usados nesse projeto são do tipo infravermelho e indicam a distância por meio de uma saída, não linear, analógica.

Eles funcionam da seguinte maneira. Há um LED (Light Emitting Diode – Diodo Emissor de Luz) que emite um feixe óptico infravermelho, o qual é projetado no objeto e refletido de volta no PSD (Position Sensing Device – Sensor de Posição). O local de incisão do feixe óptico no PSD variará de acordo com a distância com que o objeto refletido está do sensor. Quando o objeto muda do local “A” para o local “B”, é detectada uma alteração no ponto de incisão do feixe óptico, do ponto a para o ponto b, pelo PSD, conforme mostra a Figura 17. Essa mudança de posição é processada, gerando uma alteração, não linear, na tensão de saída do dispositivo (SHARP CORPORATION, 1998).

(35)

Figura 17: Funcionamento do sensor de distância (SHARP CORPORATION, 1998).

2 METODOLOGIA

O trabalho foi dividido em etapas. Na primeira etapa foi feita a análise dos equipamentos que seriam adquiridos para compor o sistema. Tratou-se da análise de qual seria o carro a ser usado, quais as características dos sensores (levando-se em consideração as dimensões do carro) e qual ou quais microcontroladores seriam necessários para a realização do projeto. Ainda nessa etapa foi definida, com base nos recursos escolhidos, a arquitetura do sistema como um todo.

Na seqüência foram realizados testes no carro para conhecer a relação entre os níveis de tensão e rotação do motor de tração, assim como, a função que relaciona os níveis de tensão aos ângulos de abertura das rodas. Também foram feitos testes com os sensores de distância e desenvolvido um subsistema para codificar os valores medidos, nos sensores, em níveis de tensão para distância (em centímetro).

Baseado na análise das dimensões do carro e nas características dos sensores, foi desenvolvido um sistema em software para simular parcialmente o comportamento do sistema no mundo real. Esse passo permitiu uma definição razoável de quais seriam as possíveis dimensões da vaga aonde o carro poderia estacionar. Também com isso, foi possível modelar cerca de 80% das regras fuzzy do sistema de controle.

(36)

Na última etapa foi desenvolvido o projeto do Hardware do sistema, juntamente com sua comunicação USB. Foi feita a substituição das informações providas pelo mundo simulado, ao sistema de controle, pelas informações adquiridas via comunicação USB com o carro real e feito os ajustes necessários para se alcançar os resultados esperados – o carro estacionar na vaga paralela de estacionamento de maneira autônoma.

3 DESENVOLVIMENTO

O desenvolvimento que será descrito nesta sessão refere-se à implementação de um sistema capaz de estacionar um carro em uma vaga paralela de estacionamento de maneira autônoma. Ele foi subdividido em duas partes, uma desenvolvida em Java (que roda no PC) e outra implementada em um microcontrolador (fixado no carro).

O controlador Fuzzy foi implementado no computador, para facilitar o ajuste e a depuração do mesmo. Foi desenvolvido em software um subsistema para simular o ambiente e a situação em que o carro estaciona – o “Mundo Virtual”. A simulação se comunica com o controlador por via de um módulo protocolo, o qual também é responsável pela comunicação com o microcontrolador situado no carro – este protocolo gerencia a troca do “mundo virtual” pelo sistema real implementado no carro (essa troca não é perceptível ao controlador Fuzzy).

A parte do sistema desenvolvido no carro (no microcontrolador) se comunica com o sistema em Java pela USB.

Para efeito de simplificação e devido às restrições temporais e orçamentárias o protótipo foi desenvolvido em um carro miniatura usando sensores de distâncias e micro-controladores.

3.1 ANÁLISE E DEFINIÇÕES

Para o desenvolvimento desse projeto optou-se por adquirir um carro com a mecânica pronta – um carro de controle remoto genérico que já tivesse os sistemas de tração e direção nativos. Também para efeito de diminuição dos custos com equipamentos, optou-se por implementar um sistema capaz de estacionar o carro apenas nas vagas situadas na lateral direita do carro. A partir dessa restrição foi levantada a necessidade de seis sensores a serem

(37)

posicionados no carro para detectar a vaga, permitindo que ele se localize durante o processo de estacionamento.

A disposição dos sensores no carro foi feita conforme a Figura 18. Os sensores S(0) e S(5) ficam nas extremidades do carro (um apontando para frente e o outro para trás respectivamente) e servem para o carro se localizar e evitar batidas. Os sensores S(1) e S(4) ficam posicionados na diagonal (formando um ângulo de 45º graus com os outros sensores) e servem, entre outras coisas, para o carro detectar a vaga. Por fim, os sensores S(2) e S(3) ficam posicionados na lateral direita do carro (formando um ângulo de 90º com o mesmo) são usados para ajudar a decidir quando entrara na vaga e par evitar batidas laterais.

Figura 18: Disposição dos sensores no carro.

3.1.1 ANÁLISE E ESCOLHA DOS EQUIPAMENTOS

O primeiro passo para decidir quais seriam os equipamentos a serem usados no projeto foi a escolha do carro. Para esta decisão, foram levados alguns fatores em consideração, tais como restrições orçamentárias do projeto e facilidade de aquisição do equipamento.

Foi encontrado, localmente, um carro de controle remoto genérico com o sistema de direção e de tração prontos, que atendiam aos requisitos mínimos desejados. As dimensões do carro são 11 cm de largura e 25,5 cm de comprimento, e tem uma distância de 15,5 cm entre eixos. Estas medidas estão dispostas na Figura 18.

(38)

3.1.1.1 O SENSOR DE DISTÂNCIA

Para essa etapa foram analisados alguns sensores de distância, ultrasônicos e infravermelhos, para decidir qual se adequaria melhor às necessidades do projeto.

Um dos sensores examinados foi o “LV-MaxSonar - EZ1”. Ele é do tipo ultrasônico e tem as características mostradas na Tabela 10, conforme o Data Sheet do fabricante (MAXBOTIX, 2007). Este sensor possui alguns benefícios como baixo custo, dados de saída precisos e estáveis e baixo consumo. Ele foi descartado devido ao seu ponto inicial de medição ser muito grande em relação às dimensões do carro. Ele só faz medições a partir de 15,24 cm de distância do ponto em que o sensor está posicionado.

Tabela 10: Caracteristicas do "LV-MacSonar EZ1".

Sensor Ultrasônico o “LV-MaxSonar - EZ1”

Alimentação 2.5V - 5.5V

Distâncias medidas 15,24 cm – 6,45 metros

Faixa de detecção de obstáculos 0 a 6,45 metros

Saídas Largura de pulso, tensão analógica e saída

serial digital

Consumo 2 mA

Tempo médio para medição 50 ms

O segundo sensor analisado foi o “Sharp - GP2D12”, do tipo infravermelho. As características desse sensor estão dispostas na Tabela 11 (SHARP CORPORATION (a), 2006). Este sensor não sofre significativas influências em relação à cor do objeto do qual se está medindo a distância sendo um sensor de baixo custo e com apenas uma saída analógica. Ele é composto por um LED que emite um feixe de raios infravermelhos e um PSD (Position Sensitive Detector – Detector de Posição) que detecta a posição onde o raio refletido está incidindo. Este sensor se mostrou mais adequado para o projeto que o anterior, devido ao ângulo de abertura de sua área de medição ser menor que do ultrasônico. Contudo, ele foi descartado devido ao fato de ter um valor mínimo de medição de 10 cm, o que é muito grande, levando-se em consideração as dimensões do carro.

(39)

Tabela 11: Características do sensor "Sharp - GP2D12".

Sensor Infravermelho o “Sharp - GP2D12”

Alimentação 4.5V - 5.5V

Distâncias medidas 10 cm - 80cm

Faixa de detecção de obstáculos 0 - 80 cm

Saídas Tensão analógica não linear

Consumo 33 mA

Tempo médio para medição 44 ms

O terceiro sensor analisado foi o “Sharp – GP2D120”, o qual também é um sensor infravermelho. Este sensor tem um faixa de medida que vai de 4cm a 30cm e um consumo médio de 33mA (SHARP CORPORATION (b), 2006). Suas principais características estão dispostas na Tabela 12, sendo um dispositivo de baixo custo que se adequou às necessidades mínimas do projeto. Tem uma faixa de medida aceitável com relação ao carro escolhido, não sofrendo influências significativas da cor do objeto que está sendo medido, e tendo dimensões reduzidas, como pode ser visto na Figura 19. Este foi o sensor escolhido devido ao fato de obedecer aos requisitos mínimos e ter um custo acessível ao orçamento do projeto.

Tabela 12: Características do sensor "Sharp - GP2D120".

Sensor Infravermelho o “Sharp - GP2D120”

Alimentação 4.5V - 5.5V

Distâncias medidas 4 cm - 30cm

Detecta obstáculos de 0 - 40 cm

Saídas Voltagem analógica não linear

Consumo 33 mA

Tempo médio para medição 44ms

(40)

3.1.1.2 O MICROCONTROLADOR

Na fase de planejamento do projeto se cogitou a possibilidade de usar mais de um microcontrolador. A Idéia era usar um para cada um ou par dos sensores – eles fariam a conversão dos valores analógicos em valores digitais. Além destes, um outro seria usado para processar informações e decidir as ações que o carro iria executar.

Para a tarefa de codificação das saídas dos sensores, foram analisados os microcontroladores PIC10F220 e PIC10F222, sendo que eles diferem apenas na quantidade de memória. Ambos têm arquitetura RISC de 8 bit, com 33 instruções e um conversor A/D de 8 bit, com dois canais (MICROCHIP, 2007). Se essa estratégia tivesse sido adotada, só para fazer a codificação dos seis sensores, seriam necessários três microcontroladores desses, já que cada um tem dois canais para o conversor A/D.

Tabela 13: Características dos microcontroladores PIC10F220 e PIC10F222 (MICROCHIP, 2007)

Parâmetros Valor

PIC10F220 PIC10F222 Tipo de memória de programa Flash Flash Memória de programa 0.375 KB 0.75 KB

RAM 16 Bytes 23 Bytes

Temporizadores 1 x 8 bit 1 x 8 bit

ADC 2 ch, 8 bit 2 ch, 8 bit

Faixa de temperatura (C) -40 a 125 -40 a 125 Voltagem de operação (V) 2 a 5.5 2 a 5.5

Quantidade de pinos 6 6

Esse modelo não foi levado adiante e optou-se por usar apenas um microcontrolador, para funcionar como codificador e atuador, e um computador para rodar o kernel do sistema – o controlador Fuzzy. Para essa tarefa se fez necessário um microcontrolador que tivesse no mínimo seis canais de conversão analógico/digital, e permitisse comunicação USB com o PC.

Foram analisados dois dispositivos com as devidas características, o PIC18F2550 e o PIC18F4550. Ambos suportam tem velocidade de 12Mbit/s, são compatíveis com a USB 2.0, permitem até 16 hosts (IN/OUT) e podem operar em 48 MHz (MICROCHIP, 2004). As principais características desses dispositivos estão dispostas na Tabela 14.

Foi escolhido para o projeto o PIC18F4550, basicamente por ter mais pinos. Essa escolha foi feita no intuito de evitar possíveis problemas de mapeamento da placa no decorrer do projeto. Ambos os dispositivos analisados serviriam para o sistema.

(41)

Tabela 14: Características dos PIC18F4550/2550 (MICROCHIP, 2004).

Parametro Valor

PIC18F4550 PIC18F2550

Tipo de memória de Programa Flash Flash

Memória de programa 32 kB 32 kB

RAM 2,048 Bytes 2,048 Bytes

EEPROM 256 Bytes 256 Bytes

Temporizadores 1 x 8 bit, 3 x 16 bit 1 x 8 bit, 3 x 16 bit

ADC 13 ch, 10-bit 10 ch, 10-bit

USB (canais, velocidade, compatibilidade)

1, Full Speed, USB 2 1, Full Speed, USB 2.0

Faixa de temperatura (C) -40 to 85 -40 to 85

Faixa de tensão (V) 2 to 5.5 2 to 5.5

Quantidade de pinos 40 28

3.1.1.3 O CIRCUITO ACIONADOR

O circuito escolhido foi o L298, o qual tem duas pontes H completas. Ele suporta altos níveis de tensão e de corrente e é acionado por níveis lógicos compatíveis com padrões TTL. Esse Circuito Integrado (CI) pode ser usado para controlar tanto motores DC quanto motores de passo. Cada ponte H dispõe de duas entradas independentes de controle. Este circuito deve ter uma alimentação para sua lógica interna (Vss) separada da do motor (Vs) (STMICROELECTRONICS, 2000).

(42)

3.1.2 DEFINIÇÃO DA ESTRUTURA DO SISTEMA

Inicialmente pensou-se em implementar o sistema todo dentro do microcontrolador. Contudo, mudou-se de idéia após a ponderação de algumas variáveis como, por exemplo, a possibilidade do código não caber completamente dentro da memória de programa do microcontrolador, a dificuldade de depurar, a complexidade de calibrar as funções do controlador Fuzzy e a determinação se alguma regra estava entrando em contradição com outra. Foi decidido modelar o projeto de uma maneira que o controlador Fuzzy rodasse no PC e o restante do sistema ficasse localmente no carro.

A estrutura ficou definida da seguinte forma: os sensores medem as distâncias e põem valores analógicos de tensão em suas saídas; essas tensões são digitalizadas pelos conversores A/D (Analógico/Digital) do microcontrolador e codificadas em valores de distância (em centímetros); os valores codificados são enviados via comunicação USB ao PC, o qual roda o controlador Fuzzy desenvolvido em Java, que processa tais informações e devolve as informações de controle de direção e de velocidade ao microcontrolador, o qual funciona como atuador, acionando os motores.

A modelagem da arquitetura desse sistema está disposta na Figura 21.

Figura 21: Estrutura do sistema.

Sensores

Codificador

CPU

Atuadores

(43)

3.2 TESTES E MEDIÇÕES

Nessa etapa foram feitos testes nos equipamentos adquiridos. Para os sensores, foram postos obstáculos a distâncias definidas e coletados os valores de tensão obtidos em suas saídas; para os motores do carro, mediu-se as relações de tensão e corrente de acionamento padrão. Na seqüência, foi implementado um subsistema de conversão – codificação das saídas analógicas dos sensores, em valores expresso em centímetros.

3.2.1 TESTE DOS EQUIPAMENTOS

No processo de teste dos equipamentos, primeiro examinou-se a relação entre os níveis de tensão e rotação do motor de tração e, em seguida, buscou-se identificar a relação dos níveis de tensão com os ângulos de abertura das rodas dianteiras.

Para o motor de tração, a alimentação padrão medida foi de 4 V e 390 mA. A relação tensão/ângulo da direção, constatou-se que a mecânica do carro adquirido só permitia três ângulos de direção – alinhado, para direita e para esquerda. Os ângulos máximos obtidos para a inclinação das rodas eram de aproximadamente 16º graus para a tensão 4,5 V e -16º para a tensão negativa -4,5 V.

Com relação aos sensores de distância, alimentam suas entradas com uma tensão de 5v, obteve-se a relação tensão (V) por distancia(cm) na saída mostrada na Tabela 15. Tais sensores aceitaram tensões variando de 4 a 6 V, sem haver mudanças significativas na relação distância/tensão de saída.

(44)

Tabela 15: Relação da tensão por distância dos sensores. Distâncias (cm) Sensor 0 Sensor 1 Sensor 2 Sensor 3 Sensor 4 Sensor 5 Tensões de Saída (V) Tensões de Saída (V) Tensões de Saída (V) Tensões de Saída (V) Tensões de Saída (V) Tensões de Saída (V) 8 1,6 1,67 1,61 1,67 1,61 1,6 13 1,04 1,02 1,01 1,04 1,03 1,0 18 0,77 0,75 0,76 0,75 0,77 0,77 23 0,56 0,57 0,56 0,57 0,55 0,56 28 0,48 0,49 0,47 0,48 0,47 0,48 33 0,35 0,35 0,35 0,35 0,35 0,35 38 0,27 0,28 0,28 0,28 0,27 0,27 43 0,23 0,22 0,23 0,22 0,23 0,23

3.2.2 SUBSISTEMA DE CODIFICAÇÃO DE MEDIDAS

A tarefa de modelar o subsistema de codificação de medidas constituiu-se de encontrar um método matemático simplificado que convertesse os valores não lineares de tensão obtidos das saídas dos sensores, nos valores de distância correspondentes.

Inicialmente, a idéia era, para cada um dos seis sensores mostrados na Tabela 15 encontrar, usando métodos de interpolação, uma função que melhor representasse cada sensor, numa dada faixa de valores de distância. Com a coleta dos dados, tensões e distâncias de cada sensor, percebeu-se que todos os sensores tinham valores de saída bastante próximos para as mesmas distâncias aferidas, como pode ser visto na Tabela 16, assim como a variação média de um sensor para outro poderia ser desprezada, como também a variação das medidas aferidas nos testes com as mostradas no Data Sheet do fabricante (SHARP CORPORATION

(b)

, 2006). A Figura 22 mostra a comparação entre algumas das medidas coletadas nos testes, em vermelho, com a relação disposta graficamente no Data Sheet do fabricante.

(45)

Tabela 16: Valores médios e desvio padrão para medidas de todos os sensores.

Distância (cm) Valor Médio de Tensão (V) Desvio Padrão

8 1,626667 0,033862 13 1,023333 0,01633 18 0,761667 0,009832 23 0,561667 0,007528 28 0,478333 0,007528 33 0,35 6,08E-17 38 0,275 0,005477 43 0,226667 0,005164

Figura 22: Relação distância/tensão do Data Sheet com os aferidos no testes.

Tendo-se consciência de que as variações de um sensor para outro podem ser desprezadas e que, para ambos os sensores, pode-se adotar as relações dispostas no datasheet do fabricante como válidas, decidiu-se criar apenas uma função de conversão – codificação (tensão/centímetro), genérica para todos os sensores.

(46)

Com base no gráfico da Figura 22, foram coletadas as seguintes relações mostradas na Tabela 17. A partir da interpolação linear desses dados, obteve-se uma função da relação tensão/distância.

Tabela 17: Relação tensão/distância de acordo com a Figura 22.

Tensão (V) Distância (cm) 0,325 40 0,365 35 0,428 30 0,524 25 0,665 20 0,735 18 0,824 16 0,938 14 1,064 12 1,265 10 1,400 9 1,560 8 1,763 7 2,000 6 2,318 5 2,735 4 2,980 3,5 3,030 3

Optou-se por usar interpolação linear para a geração da função de relação distância/tensão por motivo de facilidade de implementação e devido ao custo computacional de sua execução ser relativamente baixo. A idéia do algoritmo que executa essa função consiste basicamente de, a partir da tensão de entrada, descobrir entre quais das tensões mostradas na Tabela 17 ela está situada, e então aplicar esta entrada à equação linear formada entre essas duas tensões predefinidas – esse algoritmo está disposto na Figura 23. Para ele, os vetores de tensão e de distâncias predefinidas têm valores equivalentes aos mostrados na

(47)

Tabela 17, e os coeficientes a e b das equações formadas entre essas medidas ficam previamente calculados para diminuir o custo computacional. O gráfico formado pela função descrita por este algoritmo pode ser visto na Figura 24.

Figura 24: Forma gráfica da função de interpolação das medidas da Tabela 17.

3.3 CONTROLE FUZZY E MUNDO VIRTUAL

Esta sessão traz a descrição do desenvolvimento do mundo virtual e do controlador Fuzzy.

Para Cada tensãoPredefinida

Se(tensãoDeEntrada < tensãoPredefinida(i+1) E

tensãoDeEntrada >= tensãoPredefinida(i)) Então 𝑎 =𝑑𝑖𝑠𝑡 â𝑛𝑐𝑖𝑎𝑃𝑟𝑒𝑑𝑒𝑓𝑖𝑛𝑖𝑑𝑎 (i+1)−𝑑𝑖𝑠𝑡 â𝑛𝑐𝑖𝑎𝑃𝑟𝑒𝑑𝑒𝑓𝑖𝑛𝑖𝑑𝑎 (i) 𝑡𝑒𝑛𝑠 ã𝑜𝑃𝑟𝑒𝑑𝑒𝑓𝑖𝑛𝑖𝑑𝑎 i+1 − 𝑡𝑒𝑛𝑠 ã𝑜𝑃𝑟𝑒𝑑𝑒𝑓𝑖𝑛𝑖𝑑𝑎 (i) ; 𝑏 = 𝑑𝑖𝑠𝑡â𝑛𝑐𝑖𝑎𝑃𝑟𝑒𝑑𝑒𝑓𝑖𝑛𝑖𝑑𝑎 𝑖 − 𝑎 ∗ 𝑡𝑒𝑛𝑠ã𝑜𝑃𝑟𝑒𝑑𝑒𝑓𝑖𝑛𝑖𝑑𝑎 𝑖 ; 𝑑𝑖𝑠𝑡â𝑐𝑖𝑎𝐷𝑒𝑆𝑎í𝑑𝑎 = 𝑡𝑒𝑛𝑠ã𝑜𝐷𝑒𝐸𝑛𝑡𝑟𝑎𝑑𝑎 ∗ 𝑎 + 𝑏; Fim do Se Fim

(48)

3.3.1 DESENVOLVIMENTO DO MUNDO VIRTUAL

O mundo virtual é o ambiente criado para simular, de forma limitada, o mundo real, no contexto da atuação do sistema. Ele foi projetado com o intuito de facilitar a depuração do controlador e acelerar o processo de ajuste das funções Fuzzy. O frame gráfico do mundo virtual pode ser observado na Figura 25.

Este ambiente simula o comportamento do carro no processo de estacionamento numa vaga paralela. O que se calcula basicamente é a posição em que o carro está com relação à vaga e a distância que cada sensor mede até o obstáculo mais próximo, assim como, de acordo com sua velocidade, qual será a sua próxima posição no sistema.

Figura 25: Frame gráfico do mundo virtual.

A comunicação com o sistema de controlador Fuzzy se dá por via de uma classe responsável pelo protocolo de comunicação do motor com o mundo externo, de forma que para o controlador a mudança entre o mundo real e o mundo simulado não é perceptível – apenas a classe responsável pelo protocolo de comunicação gerencia essa alteração. O sistema foi modelado conforme mostra a Figura 26, onde o sistema de controle só enxerga o componente responsável pelo protocolo de comunicação que, de acordo com a opção selecionada, trata de estabelecer a comunicação com o sistema implantado fisicamente no carro – “sistema real”, ou com o mundo virtual que simula esse sistema.

(49)

Figura 26: Comunicação entre componentes.

3.3.1.1 CÁLCULO DOS VÉRTICES DO CARRO

O primeiro passo, no sentido de se executar a simulação, é calcular a posição atual do carro. Este cálculo é feito conforme a modelagem cinemática mostrada na sessão 1.3.4 que descreve o deslocamento de um carro num plano 2D. Este modelo permite, e a partir do ponto mediano do eixo traseiro do carro (xi-1, yi-1), do ângulo formado entre o carro a referência θi-1,

do ângulo da direção do carro ϕ, e da velocidade do carro v, calcular o novo ponto onde se localizará o centro do eixo traseiro, (xi, yi) = (xi-1+x’, yi-1+y’) e o próximo valor do ângulo

entre o carro e a referência, θi = θi-1+θ’. Este modelo está ilustrado na Figura 27 e obedecem

as equações (10), (11), (12) e (13), referentes ao cálculo da posição do carro, e (14) e (15), referentes ao cálculo do ângulo do carro com a referência.

(50)

Figura 27: Modelagem do deslocamento do carro.

𝑥

= cos(𝜃

𝑖−1

). 𝑠𝑒𝑛𝜙. 𝑣

(10)

𝑦

= sen(𝜃

𝑖−1

). 𝑐𝑜𝑠𝜙. 𝑣

(11)

𝑥

𝑖

= 𝑥

𝑖−1

+ 𝑥

′ (12)

𝑦

𝑖

= 𝑦

𝑖−1

+ 𝑦

′ (13)

𝜃

=

1 𝐿

𝑠𝑒𝑛𝜙. 𝑣

(14)

𝜃

𝑖

= 𝜃

𝑖−1

+ 𝜃

′ (15)

O modelo do carro pertinente à simulação foi concebido contendo doze vértices conforme mostra a Figura 28, sendo que seis desses vértices são necessários para mapear a parte do carro que é diretamente relacionada ao modelo de deslocamento cinemático mostrado na sessão 311.3.4. Esses vértices receberam a denominação “Ponto Real...”. Os outros seis pontos, que são usados para mapear a parte do carro que representa o comprimento além dos eixos, e servem, além de delimitar o carro, para mapear o posicionamento de alguns sensores, receberam a denominação “Ponto Virtual...”.

O PRMT (Ponto Real Médio Traseiro) é o vértice que representa o ponto médio do eixo traseiro. Este, juntamente com o ângulo formado entre o carro e a referência – o ângulo base θ, são calculados pelo modelo cinemático de deslocamento. Toma-se o PRMT e o ângulo base θ como referência, e calcula-se, a partir deles todos os outros vértices.

Para se calcular um ponto a partir de outro foi implementada uma função que recebe como parâmetro um vértice de referência (xa, ya), a distância D até o vértice destino que se

(51)

quer calcular (xb, yb) e o ângulo formado entre a linha que cruza esses dois vértices e a linha

de referência do modelo, devolvendo como resultado o vértice destino (xb, yb). Exemplo de

parâmetros que são passados para se calcular o PRMF (Ponto Real Médio Frontal) a partir do PRMT, de acordo com o que é mostrado na Figura 28, são: o próprio PRMT (xa, ya), a

distância entre a origem e o destino L (que é a distância entre eixos), e o ângulo formado com a referência (que nesse caso é o próprio ângulo base θ).

Figura 28: Vértices que são calculados pela simulação.

O algoritmo da função que calcula um vértice a partir de outro é mostrado na Figura 29. O que ele faz basicamente é encontrar, fazendo uso das funções trigonométricas seno e cosseno, o deslocamento com relação à origem para o x e o y, levando-se em consideração à distância D e o ângulo formado com a referência α. Essa idéia está mostrada graficamente na Figura 30. (xb, yb) próximoVértice((xa,ya), distância, α) 𝑥𝑏= 𝑥𝑎+ 𝑑𝑖𝑠𝑡â𝑛𝑐𝑖𝑎 ∗ cos 𝛼 ; 𝑦𝑏= 𝑦𝑎+ (𝑑𝑖𝑠𝑡â𝑛𝑐𝑖𝑎 ∗ sen 𝛼); Retorne (xb, yb); Fim

(52)

Figura 30: Modelagem da função de próximo vértice.

A Tabela 18 mostra, para o cálculo de cada vértice, quais os parâmetros de entrada necessários. Estes parâmetros podem ser observados na Figura 29, sendo que L é a distância entre eixos, C é o comprimento dos eixos (largura do carro), S é a distancia dos eixos às extremidades do carro e θ como o ângulo formado do carro com a referência (o ângulo base).

Tabela 18: Entradas e saídas para função que calcula próximo vértice.

Vértice Calculado Parâmetros

Sigla Descrição Referência Distância Ângulo

PRMF Ponto Real Médio Frontal PRMT L θ

PRLDT Ponto Real Lateral Direito Traseiro PRMT C/2 θ+90º

PVMT Ponto Virtual médio Traseiro PRMT S θ+180º

PRLET Ponto Real Lateral Esquerdo Traseiro

PRMT C/2 θ-90º

PVLDT Ponto Virtual Lateral Direito Traseiro

PVMT C/2 θ+90º

PRLET Ponto Virtual Lateral Esquerdo Traseiro

PVMT C/2 θ-90º

PVMF Ponto Virtual Médio Frontal PRMF S θ

PRLDF Ponto Real Lateral Direito Frontal PRMF C/2 θ+90º PRLEF Ponto Real Lateral Esquerdo Frontal PRMF C/2 θ-90º PVLDF Ponto Virtual Lateral Direito Frontal PVMF C/2 θ+90º PVLEF Ponto Virtual Lateral Esquerdo

Frontal

(53)

3.3.1.2 MODELAGEM DOS SENSORES E CÁLCULO DAS DISTÂNCIAS

O primeiro passo tomado no sentido de se modelar os sensores virtualmente foi a delimitação do mundo. Foram usadas semi-retas limitadas por dois vértices, cada uma, para determinar as extremidades do mundo virtual, juntamente com a sua vaga. As semi-retas que delimitam o mundo virtual estão dispostas nas Tabelas 19 e 20 e na Figura 31.

Tabela 19: Semi-retas delimitadoras com o x fixo.

Semi-reta Vértice 1 Vértice 2 Valor fixo Valor variável

a (0, 60) ( 0, 20) X=0 60 ≥ y ≥ 20

c ( 25, 20) ( 25, 0) X=25 20 ≥ y ≥ 0

e ( 75, 0) ( 75, 20) X=75 20 ≥ y ≥ 0

g ( 150, 20) ( 150, 60) X=150 60 ≥ y ≥ 20

Tabela 20: Semi-retas delimitadoras com o y fixo.

Semi-reta Vértice 1 Vértice 2 Valor fixo Valor variável

b ( 0, 20) ( 25, 20) y=20 25 ≥ x ≥ 0

d ( 25, 0) ( 75, 0) y=0 75 ≥ x ≥ 25

f ( 75, 20) ( 150, 20) y=20 150 ≥ x ≥ 75

h ( 150, 60) ( 0, 60) y=60 150 ≥ x ≥ 0

Figura 31: Visualização 2D do mundo simulado.

Para cada sensor foi atribuído um vértice de origem compartilhado com o carro (que indica o ponto de onde o feixe do sensor é emitido) e uma equação que descreve a direção do feixe do sensor. O vértice final de cada sensor (que indica onde o feixe de luz do sensor está incidindo) é calculado a cada ciclo do sistema (a cada vez que o carro é atualizado). Toda vez que o sistema atualiza o carro, os vértices de origem e o ângulo da equação dos sensores

Referências

Documentos relacionados

(Prova + Pré-Projeto de Tese e CV Lattes + Defesa Oral do Pré-Projeto de Tese) / 3 = Nota Final 7.5 Para a concessão das bolsas previstas neste Edital, o candidato deve ter

MCD com Generalização-Especialização Exemplo: CARRO CARRO CORRIDA CARRO OFICIAL CARRO PARTICULAR C C CARRO OFICIAL FEDERAL CARRO OFICIAL ESTADUAL é feito FABRICANTE 1,N 1,1 parti

A instalação dos seccionadores unipolares de MT na rede de média tensão vai estar condicionada por um lado, às regras previamente definidas pela EDP Distribuição em documentos

Como o clima do planeta sofre mudanças sazonais significantes, um teste útil para validação de um modelo climático é a sua capacidade em simular o ciclo anual, sendo este, portanto,

Não existe cura para a DP, entretanto, intervenções podem melhorar os sintomas e diminuir a velocidade de destruição da doença, bem como proporcionar uma qualidade de

DUÀ¯É dUÀªÀ dvÀ£À¢ zsÀj¸ÉAzÀÄ DUÀ¯É dUÀªÀ dvÀ£À¢ zsÀj¸ÉAzÀÄ £ÁUÀ§°0iÀÄ £ÀqɹzÀ ||101|| £ÁUÀ§°0iÀÄ £ÀqɹzÀ ||101||

Os resultados obtidos nas comparações dos ní- veis de exigência e responsividade atribuídos a pais e mães seguiram um padrão já observado em outros estudos (Costa, Teixeira

Nesse sentido, o objetivo deste trabalho foi realizar o mapeamento de cana-de-açúcar no município de Mirante do Paranapanema-SP utilizando imagens do satélite sino-brasileiro