Neural Network Braking System

22
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

Transcript of Neural Network Braking System

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

MuitoRápido VH 100

Limite Superior - 110

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

Nome Símbolo Valor (m)

Limite Inferior - 0

MuitoCurta VL 15

Curta L 40

Média M 90

Longa H 165

Muito Longa VH 250

Limite Superior - 320

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')

Figura3 - Curvaobtida no Script (fuzzy)

5 10 15 20 25 30 35 40 450

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Índice das Entradas no Controlador (49)

Pre

ssão d

e F

renagem

(%

)

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.

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.

5 10 15 20 25 30 35 40 450

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Índice das Entradas no Controlador (49)

Pre

ssão d

e F

renagem

(%

)

11

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 1e-

30, 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:

5 10 15 20 25 30 35 40 450

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Índice das Entradas no Controlador (49)

Pre

ssão d

e F

renagem

(%

)

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

MuitoRápido VH 0,9

Limite Superior - 1

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')

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.

5 10 15 20 25 30 350.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Índice das Entradas no Controlador (35)

Pre

ssão d

e F

renagem

Real (%

)

14

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.

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

5 10 15 20 25 30 350.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Índice das Entradas no Controlador (35)

Pre

ssão d

e F

renagem

Real (%

)

5 10 15 20 25 30 350.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Índice das Entradas no Controlador (35)

Pre

ssão d

e F

renagem

Real (%

)

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')