Neural Network Braking System

July 17, 2017 | Autor: Almir Braggio | Categoria: Artificial Intelligence, Neural Networks, Matlab, Artificial Neural Networks
Share Embed


Descrição do Produto

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ COORDENAÇÃO DE ENGENHARIA ELETRÔNICA ENGENHARIA ELETRÔNICA

ALMIR AUGUSTO BRAGGIO DJONES ALDIVO BONI

CONTROLE DE FRENAGEM DEAUTOMÓVEIS COM UTILIZAÇÃO DE REDES NEURAIS

RELATÓRIO DE ATIVIDADE DE PESQUISA

TOLEDO 2013

ALMIR AUGUSTO BRAGGIO DJONES ALDIVO BONI

CONTROLE DE FRENAGEM DE AUTOMÓVEIS COM UTILIZAÇÃO DE REDES NEURAIS

Relatório de atividade de pesquisa apresentada como requisito parcial para conclusão da disciplina de Inteligência Artificial Aplicada a Controle, do Curso de Engenharia Eletrônica,da Universidade TecnológicaFederal do Paraná. Prof. Jaqueline Vargas

TOLEDO 2013

LISTA DE ILUSTRAÇÕES

Figura 1 - Disposição dos controladores no sistema ................................................... 6 Figura 2 - Primeiro controlador .................................................................................... 8 Figura 3 - Curva obtida no Script (fuzzy) ..................................................................... 9 Figura 4 - Rede neural (feed-forward backprop) ....................................................... 10 Figura 5 - Curva fuzzy (vermelho) e simulação da rede neural (azul) ....................... 10 Figura 6 - Curva fuzzy (vermelho) e simulações da rede neural (azul e verde) ........ 11 Figura 7 - Segundo controlador ................................................................................ 12 Figura 8 - Curva obtida no Script (fuzzy) ................................................................... 13 Figura 9 - Curva fuzzy (vermelho) e simulação da rede neural (azul) ....................... 14 Figura 10 - Curva fuzzy (vermelho) e simulações da rede neural (azul e verde) ...... 14

LISTA DE TABELAS

Tabela 1 - Variável de entrada "Velocidade" e valores considerados ......................... 8 Tabela 2 - Variável de entrada "Distância" e valores considerados ............................ 8 Tabela 3 - Variável de entrada "Pressão" e valores considerados ............................ 12 Tabela 4 - Variável de entrada "Atrito" e valores considerados................................. 12

SUMÁRIO

1 INTRODUÇÃO .................................................................................................. 5 2 DESENVOLVIMENTO ....................................................................................... 6 2.1 PRIMEIRO CONTROLADOR ........................................................................ 8 2.2 SEGUNDO CONTROLADOR ........................................................................ 11 3 CONCLUSÃO .................................................................................................... 16 REFERÊNCIAS .................................................................................................... 17 APÊNDICE A - Arquivo Script do Primeiro Controlador ................................. 18 APÊNDICE B - Arquivo Script do Segundo Controlador ................................ 20

5

1 INTRODUÇÃO

Este trabalho apresenta um estudo de implementação de controle deum sistema de frenagem de automóveis, através da utilização de redes neurais. Propõem-se o uso desse controle para possível incorporação ao sistema de um automóvel de forma a cancelar o tempo de reação do motorista em uma situação de parada eminente, como um obstáculo, por exemplo. O sistema proposto consiste de duas redes neurais, onde a primeira leva em conta as variáveis distância de separação do veículo com um obstáculo e sua velocidade relativa, e a segunda considera as condições da estrada, atrito estático, no caso. A saída destas malhas é a pressão em porcentagem que deve ser aplicada ao pedal de freio para que o veículo pare em segurança, antes de uma possível colisão.Os dados para treinamento das redes foram obtidos através de simulações em trabalhos passados, do mesmo sistema, mas com controle fuzzy.

6

2 DESENVOLVIMENTO

O objetivo deste trabalho é aplicar a técnica de redes neurais em um sistema de controle de frenagem de um veículo. O problema proposto é de que um veículo em movimento tenha um obstáculo à frente, ou qualquer outra situação que necessite de parada total do veículo, e que seja conhecida a situação da rodovia (atrito estático). O controlador deve aplicar a pressão correta no sistema de freio para evitar uma colisão frontal do veículo com o obstáculo, proporcionando uma parada suave. A malha neural em uso teve seu treinamento adaptado com o uso de dados simulados de um controlador fuzzy para o mesmo problema. No caso, fora levantado os resultados do sistema fuzzy e aplicado a técnica ‘back-propagation’, para o treinamento da rede neural e, em seguida, plotado as curvas para comparação da eficácia do sistema de aprendizado. No caso, os conjuntos de entrada são determinados pela velocidade do veículo (0 a 110km/h), pela distância (até 320m) e pela condição da rodovia (gelo ou asfalto seco, por exemplo). O conjunto de saída será a pressão a ser aplicada no sistema de freio. O sistema fuzzy, trabalho passado, fora construído com dois controladores conectados em cascata, conformeFigura1. Da mesma maneira, dividiu-se o sistema neural em duas malhas, com as mesmas entradas e saídas.

Figura1- Disposição dos controladores no sistema

No primeiro controlador, a saída (pressão de freio) é obtida através da análise entre as entradas “velocidade” e “distância”, em uma superfície ideal (como o concreto seco, por exemplo). A saída, então, é a pressão a ser aplicada sob

7

condições ideais. O segundo controlador associa a saída do primeiro como uma entrada e considera também o “atrito” (condições da pista). De modo geral, o sistema funciona da seguinte maneira: por exemplo, se oveículo está muito próximo de um obstáculo em uma velocidade relativa alta, o sistema deve aplicar uma grande quantidade de freio para evitar uma colisão. Do mesmo modo, se o veículo está muito longe de um obstáculo ou qualquer condição de parada, uma suave pressão de freio resultará em uma quantidade de desaceleração suficiente para uma parada em segurança. A partir da situação descrita, devem-se detalhar alguns objetivos e suposições: a) Os freios devem ser aplicados apenas o necessário para a parada (parada suave); b) O veículo deve parar por completo antes de qualquer colisão; c) O veículo está em linha reta com o obstáculo em uma superfície plana e nivelada; d) O sistema de freio é ABS, garantindo o não travamento das rodas, limitando o sistema a considerar apenas atrito estático; e) A aplicação de pressão de freio é linearmente proporcional com a desaceleração do veículo; f) As variáveis de entrada do controlador estão disponíveis; g) A velocidade máxima do veículo é de 110 km/h. Assim, pode-seaplicar as técnicas de redes neurais para o sistema.

8

2.1 PRIMEIRO CONTROLADOR

O primeiro controlador, esquematizado na próxima figura, consiste de duas entradas e uma saída.

Figura2-Primeirocontrolador

A partir dos conjuntos do controlador fuzzy, pode-se definir as entradas da rede neural de forma a gerar um target coerente para seu treinamento. Os valores de entrada estão nas tabelas seguintes:

Tabela1 - Variável de entrada "Velocidade" e valoresconsiderados Nome

Símbolo

Valor (km/h)

Limite Inferior

-

0

MuitoDevagar

VL

10

Devagar

L

35

Médio

M

55

Rápido

H

75

VH

100

-

110

MuitoRápido Limite Superior

Tabela2 - Variável de entrada "Distância" e valoresconsiderados Nome

Símbolo

Valor (m)

-

0

VL

15

Curta

L

40

Média

M

90

Longa

H

165

VH

250

-

320

Limite Inferior MuitoCurta

Muito Longa Limite Superior

Desenvolvendo um script em Matlab®, considerando a existência dos sistemas fuzzy, é possível obter uma combinação destes valores de entrada de

9

modo a criar uma matriz de entrada para a rede neural com seus respectivos valores target (objetivo). Assim, gera-se uma matriz de entrada com 49 colunas (7 valores de velocidade e 7 valores de distância considerados) e duas linhas (velocidade e distância) e obtêm-se um objetivo (pressão de frenagem) por meio do controlador fuzzy de tamanho 49. O script e a curva de iterações:

% fuzzy_to_neural_1.m % entradas: velocidade = [0 10 35 55 75 100 110]; distancia = [0 15 40 90 165 250 320]; % obtenção de uma matriz combinada: data1 = [sort(repmat(velocidade(:),length(distancia),1)),repmat(distancia(:),length (velocidade),1)]'; % instanciação do controlador fuzzy1: fuzzy_controller_1 = readfis('Fuzzy_Controller_1.fis'); % vetor target: target1 = zeros(1,length(data1)); for m=1:length(data1) target1(m) = evalfis(data1(:,m),fuzzy_controller_1); end plot(target1,'r')

1 0.9

Pressão de Frenagem (%)

0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0

5

10

15 20 25 30 35 Índice das Entradas no Controlador (49)

Figura3 - Curvaobtida no Script (fuzzy)

40

45

10

Assim, pode-se aplicar o treinamento da rede neural. Utiliza-se a ferramenta ‘nntool’, e importa-se os conjuntos de entrada e target. Na sequência cria-se uma rede ‘feedforwardbackprop’ com as duas entradas, dois neurônios na primeira camada, um neurônio de saída e uma saída, como na Figura4. A malha, com os parâmetros padrão de treinamento no Matlab®, teve execução com 12 iterações.

Figura4 - Rede neural (feed-forward backprop)

Após, executa-se a simulação, e obtém-se aFigura5, como comparação aos valores do sistema de controle fuzzy da Figura3. 1 0.9

Pressão de Frenagem (%)

0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0

5

10

15 20 25 30 35 Índice das Entradas no Controlador (49)

40

45

Figura5 - Curvafuzzy (vermelho) e simulação da rede neural (azul)

Como proposta de diminuição do erro, altera-se o parâmetro do treinamento min_grad para 1e-30 (anterior igual a 1e-7), treina-se o sistema (8 iterações) e simula-se. As curvas estão naFigura6.

11

1 0.9

Pressão de Frenagem (%)

0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0

5

10

15 20 25 30 35 Índice das Entradas no Controlador (49)

40

45

Figura6 - Curva fuzzy (vermelho) e simulações da rede neural (azul e verde)

A ferramenta utilizada faz uso do gradiente dos dados entre as interações como um dos critérios de parada. Diminuindo esse gradiente de 1e-7 para 1e-30, ou seja, tornando o critério mais exigente, garantimos que a rede forneça uma resposta mais próxima aos valores de treinamento (desde que a rede convirja), como podemos ver pela diferença entre as curvas verde e azul, com gradientes 1e-7 e 1e30, respectivamente. A curva vermelha mostra os dados de treinamento, obtidos do controlador fuzzy. Convém lembrar que, até o momento, não se considerou as condições da pista.

2.2 SEGUNDO CONTROLADOR

Da mesma maneira que fora feito no controlador 1, é necessário criar conjuntos das entradas e target. Neste caso, uma das entradas do controlador 2 é saída do controlador 1, a representação do sistema:

12

Figura7- Segundocontrolador

Os valores de entrada estão nas tabelas seguintes:

Tabela3 - Variável de entrada "Pressão" e valoresconsiderados Nome

Símbolo

Valor (%)

Limite Inferior

-

0

MuitoDevagar

VL

0,1

Devagar

L

0,3

Médio

M

0,5

Rápido

H

0,7

VH

0,9

-

1

MuitoRápido Limite Superior

Tabela4 - Variável de entrada "Atrito" e valoresconsiderados Nome

Valor

Gelo

0,15

Neve

0,30

AsfaltoÚmido

0,55

AsfaltoSeco

0,7

ConcretoSeco

0,8

Através de umscript em Matlab®, utilizando o sistema fuzzy do segundo controlador, é possível obter uma combinação destes valores de entrada de modo a criar uma matriz de entrada para a rede neural com seus respectivos valores target (objetivo). Portanto, gera-se uma matriz de entrada com 35 colunas (7 valores de pressão de frenagem e 5 valores de atrito considerados) e duas linhas (pressão de frenagemideal e atrito estático), obtendo-se um objetivo (pressão de frenagem real) por meio do controlador fuzzy. O script e a curva de iterações:

% fuzzy_to_neural_2.m

13

% entradas: atrito = [0.15 0.3 0.55 0.7 0.8]; pressao = [0 0.1 0.3 0.5 0.7 0.9 1]; % obtenção de uma matriz combinada: data2 = [sort(repmat(atrito(:),length(pressao),1)),repmat(pressao(:),length(atrito) ,1)]'; % instanciação do controlador fuzzy2: fuzzy_controller_2 = readfis('Fuzzy_Controller_2.fis'); % vetor target: target2 = zeros(1,length(data2)); for m=1:length(data2) target2(m )= evalfis(data2(:,m),fuzzy_controller_2); end plot(target2,'r')

1

Pressão de Frenagem Real (%)

0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1

5

10 15 20 25 Índice das Entradas no Controlador (35)

30

35

Figura8 - Curvaobtida no Script (fuzzy)

Assim, pode-se aplicar o treinamento da rede neural com o ‘nntool’. Da mesma maneira que o primeiro controlador cria-se uma rede ‘feedforwardbackprop’ com as duas entradas, dois neurônios na primeira camada, um neurônio de saída e uma saída. A malha, com os parâmetros padrão de treinamento no Matlab®, teve execução com 10 iterações. Após, executa-se a simulação, e obtém-se a Figura9, como comparação aos valores do sistema de controle fuzzy da Figura8.

14

1

Pressão de Frenagem Real (%)

0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1

5

10 15 20 25 Índice das Entradas no Controlador (35)

30

35

Figura9 - Curvafuzzy (vermelho) e simulação da rede neural (azul)

Como proposta de diminuição do erro, altera-se o parâmetro do treinamento min_grad para 1e-30 (anterior igual a 1e-7), treina-se o sistema (59 iterações) e simula-se. As curvas estão na Figura10. 1

Pressão de Frenagem Real (%)

0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1

5

10 15 20 25 Índice das Entradas no Controlador (35)

30

35

Figura10 - Curva fuzzy (vermelho) e simulações da rede neural (azul e verde)

15

Novamente, devido a escolha de um gradiente mais exigente, obtemos uma rede neural com menos erro em relação aos valores de treinamento. As curvas azul e verde mostram as características das respostas das redes com gradientes 1e-7 e 1e-30, respectivamente, e a curva vermelha mostra os dados de treinamento, obtidos do controlador fuzzy. Este controlador, serve para modificar as regras do primeiro sistema.

16

3 CONCLUSÃO

O número de amostras utilizado para o treinamento da rede neural precisa ser compatível com sua necessidade de precisão. Enquanto mais dados (amostras) são fornecidas ao treinamento da rede, esta se comporta de forma mais parecida com o sistema que gerou esses dados. A aplicação utilizada utiliza o gradiente entre as iterações como critério de parada ao invés do erro entre os dados do treinamento e a saída. Escolhendo um erro fixo ao invés de utilizar o gradiente não é a melhor opção, pois o erro mede a distância entre o ideal (ou desejado) e o simulado enquanto o gradiente mede a variação entre as iterações, ou seja, é uma forma de medir a aproximação do ponto limite de convergência. Aumentar a exigência com respeito ao erro da rede pode causar um elevado custo computacional, tomando um tempo de treinamento inviável, dependendo da aplicação. Há casos em que é muito caro realizar uma grande quantidade de amostras ou é inviável reduzir o erro a partir de certo ponto. É necessário levar em conta tanto o custo-benefício dessas escolhas quanto suas implicações na implementação, pois em aplicações práticas não adianta exigir erro zero em simulações se a precisão dos os atuadores ou componentes não lhe fornecem o mesmo. Conclui-se que redes neurais podem ser utilizadas como substitutos para os controladores fuzzy nos aspectos considerados neste trabalho, sendo possível obter a partir deles respostas bastante próximas ao desejado.

17

REFERÊNCIAS

Almir A. Braggio, Antonio M. N. Júnior, Controle Fuzzy para um Sistema de Frenagem em um Automóvel, UTFPR, 2013.

Arthur Schuler da Igreja, Tutorial Toolbox FuzzyMatlab, 2012.

Piero P. Bonissone, Kareem S. Aggour, Fuzzy Automated Braking System for CollisionPrevention, GE Corporate Research&Development, Schenectady, NY 12308, USA.

18

APÊNDICE A - Arquivo Script do Primeiro Controlador

19

% fuzzy_to_neural_1.m % entradas: velocidade = [0 10 35 55 75 100 110]; distancia = [0 15 40 90 165 250 320]; % obtenção de uma matriz combinada: data1 = [sort(repmat(velocidade(:),length(distancia),1)),repmat(distancia(:),length (velocidade),1)]'; % instanciação do controlador fuzzy1: fuzzy_controller_1 = readfis('Fuzzy_Controller_1.fis'); % vetor target: target1 = zeros(1,length(data1)); for m=1:length(data1) target1(m) = evalfis(data1(:,m),fuzzy_controller_1); end figure(1); % resultado do controle fuzzy (vermelho) plot(target1,'r') holdon % primeiro treinamento com min_grad = 1e-07 (12 iterações) (azul) plot([0.53022 0.44568 0.29514 0.099242 0.034666 0.025656 0.024524 0.55561 0.47314 0.32073 0.10967 0.037095 0.027063 0.025874 0.66142 0.5897 0.43794 0.16759 0.053369 0.037572 0.036261 0.80485 0.75658 0.63542 0.31279 0.10461 0.072518 0.071274 0.92896 0.91012 0.85524 0.61192 0.2715 0.19192 0.18907 0.97964 0.97488 0.96012 0.86986 0.58399 0.44537 0.42897 0.98498 0.98175 0.97171 0.90718 0.66278 0.51811 0.49634],'b') % segundo treinamento com min_grad = 1e-30 (8 iterações) (verde) plot([0.50912 0.41873 0.27195 0.10133 0.043555 0.034141 0.032756 0.5464 0.45949 0.30839 0.11431 0.045384 0.03442 0.03283 0.62994 0.55759 0.41059 0.15983 0.05215 0.035828 0.033624 0.71891 0.66526 0.54094 0.2483 0.074386 0.047835 0.045832 0.93883 0.9277 0.89554 0.73419 0.37572 0.25678 0.25412 0.98614 0.98421 0.97854 0.94245 0.731 0.51829 0.47124 0.98734 0.98579 0.98129 0.9527 0.76267 0.53489 0.48006],'g')

20

APÊNDICE B - Arquivo Script do Segundo Controlador

21

% fuzzy_to_neural_2.m % entradas: atrito = [0.15 0.3 0.55 0.7 0.8]; pressao = [0 0.1 0.3 0.5 0.7 0.9 1]; % obtenção de uma matriz combinada: data2 = [sort(repmat(atrito(:),length(pressao),1)),repmat(pressao(:),length(atrito) ,1)]'; % instanciação do controlador fuzzy2: fuzzy_controller_2 = readfis('Fuzzy_Controller_2.fis'); % vetor target: target2 = zeros(1,length(data2)); for m=1:length(data2) target2(m )= evalfis(data2(:,m),fuzzy_controller_2); end figure(2); % resultado do controle fuzzy (vermelho) plot(target2,'r') holdon % primeiro treinamento com min_grad = 1e-07 (10 iterações) (azul) plot([0.78294 0.72904 0.60677 0.48396 0.38444 0.31655 0.29293 0.8546 0.81319 0.71059 0.58766 0.46735 0.37249 0.33708 0.93032 0.90531 0.84279 0.75488 0.64008 0.51582 0.45873 0.95778 0.93889 0.8933 0.82997 0.73887 0.62157 0.55894 0.97093 0.95543 0.91772 0.86753 0.79388 0.69053 0.63004],'b') % segundo treinamento com min_grad = 1e-30 (59 iterações) (verde) plot([0.78703 0.75664 0.6018 0.36189 0.24377 0.21612 0.21269 0.88182 0.8577 0.72127 0.4558 0.29335 0.25087 0.24704 0.9661 0.95591 0.88968 0.70303 0.51821 0.46367 0.47287 0.98483 0.97996 0.94742 0.84808 0.73522 0.71282 0.73301 0.99068 0.9879 0.96944 0.91444 0.85477 0.85192 0.86854],'g')

Lihat lebih banyak...

Comentários

Copyright © 2017 DADOSPDF Inc.