Neural Network Braking System
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