Upload
buidien
View
213
Download
0
Embed Size (px)
Citation preview
Trabalho de Conclusão de Curso
Simulação do controle de tráfego de
automóveis em uma malha rodoviária
urbana: Versão 3.0
Ederson André SaviOrientador: José Roque Voltolini da Silva
Roteiro
•Introdução
Objetivos do trabalho
•Fundamentação teórica
1ª versão de Freire (2004)
2ª versão de Ranghetti (2007)
•Desenvolvimento
•Implementação
•Conclusão
•Extensões
Introdução
•Simuladores, uma nova perspectiva no estudo dotrânsito.
•Buscam a melhor solução para a mobilidade deveículos.
•Também visam diminuir o quadro de poluiçãosonora, atmosférica e a fadiga dos usuários.
•Duas versões já desenvolvidas por Freire (2004) eRanghetti (2007) na Furb.
•Este trabalho propõem-se como uma extensão aosimulador de Freire (2004) e Ranghetti (2007).
Introdução
• Compatibilidade com o editor de malhas viárias dePerondi.
• Padrão de arquitetura Model View Controller (MVC).
Objetivos do trabalho
•Reformular a estrutura de dados.
•Disponibilizar a visualização em perspectiva.
•Permitir velocidades diferente por carro.
•Permitir definição de rotas para determinados carros.
Estender o trabalho desenvolvido por Freire (2004 – Versão 1) e Ranghetti (2007 –Versão 2)
Simuladores de trânsito de veículos
Fundamentação Teórica
•Trânsito é “a utilização das vias por pessoas, veículos e animais, isolados ou em grupos, conduzidos ou não, para fins de circulação, parada, estacionamento e operação de carga ou descarga.” (DENATRAN, 2004).
•São ferramentas de análise do tráfego de bastante utilidade para a área civil.
Grafos
Fundamentação Teórica
• Grafos é um conjunto de arestas e vértices que podem ser interligados de várias maneiras.
• Mesma estrutura de grafos usada pelo Editor Gráfico de Malhas Viárias (EGMR) de Perondi(2007).
Computação gráfica e a API JoGL
Fundamentação Teórica
•A computação gráfica é a área da ciência da computação que estuda a geração, manipulação e interpretação de imagens por meio de computadores.
•JoGL é descrita como uma biblioteca que faz a ligação entre a linguagem Java e a OpenGL.
Computação gráfica e a API JoGL
•Com a JoGL é possível integrar a Abstract Window Toolkit (AWT) e Swing, que são as bibliotecas de interface gráfica para os usuários do ambiente Java, com a OpenGL.
•Atualmente a JoGL provê acesso à versão OpenGL 2.0.
Fundamentação Teórica
Protótipo de simulação do controle de tráfego de automóveis em uma malha
rodoviária urbana de Freire (2004)
•Simulador de trânsito de veículos em uma malha rodoviária.
•A malha rodoviária é carregada a partir de um arquivo texto.
•Visualização gráfica em duas dimensões.
•O trajeto do veículo é de forma aleatória.
Fundamentação Teórica
Protótipo de simulação do controle de tráfego de automóveis em uma malha rodoviária urbana Ranghetti (2007)
•Disponibilizar um veículo guiado pelo usuário.
•Acrescentar a terceira dimensão, porém somente ortogonal.
•Verificar o aumento de consumo de memória durante a execução.
•Reformular a função de disponibilidade de trechos para os veículos.
Fundamentação Teórica
Protótipo de Editor Gráfico de Malha Rodoviária (EGMR) de Perondi (2007)
• Reescrever o código existente para a linguagem Java.• Incluir funcionalidades para o desenho de viadutos.• Adicionar ferramenta para o desenho de curvas.• Converter o atual formato do arquivo da malha para XML.• Imagem de satélite ou aerofotogrametria como fundo.• Oferecer a possibilidade de visualização da malha em 3D.
Fundamentação Teórica
Protótipo de Editor Gráfico de Malha Rodoviária (EGMR) de Perondi (2007)
<list><modelo.Trecho>
<i__cdTrecho>1</i__cdTrecho><i__cdRua>0</i__cdRua><inicio>
<selecionado>-1</selecionado><x>-39.63390951354041</x><y>-146.2994869189296</y><z>0.0</z>
</inicio><final__>
<selecionado>-1</selecionado><x>-39.59390951443448</x><y>135.97246431288752</y><z>0.0</z>
</final__>....
Fundamentação Teórica
Protótipo de Editor Gráfico de Malha Rodoviária (EGMR) de Perondi (2007)
... <f__Largura>9.0</f__Largura>
<mEsq>0</mEsq><mDir>0</mDir><nivel>0</nivel><quebra>0</quebra><vl__Quebra>0</vl__Quebra><cruza>false</cruza><selecionado>false</selecionado><semaforos/>
</modelo.Trecho>
Fundamentação Teórica
Requisitos do Sistema Proposto
Desenvolvimento
• O sistema deverá permitir a visualização do ambiente de simulação em perspectiva (Requisito Funcional - RF).
• O sistema deverá manter as funcionalidades do simulador apresentadas em versões anteriores (RF).
• O sistema deverá permitir velocidades diferentes para cada carro (RF).
Requisitos do Sistema
Desenvolvimento
• O sistema deverá permitir a definição de rotas para determinados carros (RF);
• O sistema deverá manter a estrutura de malhas rodoviárias utilizando grafos (Requisito Não Funcional - RNF);
• O sistema deverá ser implementado na linguagem Java e utilizar a biblioteca JoGL (RNF).
Representação da Malha Rodoviária
Desenvolvimento
• Quebra• Valor de quebra
• Utilizadas para impedir que veículos façam contornos indevidos em cruzamento de vias.
• Utilizado armazenamento da rota do veículo para impedir que ele entre em loop.
Posição automóvel na via
Desenvolvimento
• Os veículos somente param na via quando ossemáforo a frente já esta ocupado.• O cronometro do veículo para nesta situação.
Detectando colisões e alocando semáforo
Desenvolvimento
•Detectar semáforo do veículo queesta a frente.
Modelo Model-View-Controller (MVC)
Desenvolvimento
• A camada view representa a interface com o
usuário.
• A camada control realiza a ligação com a camada model, que vai implementar as ações do usuário e o tratamento dos eventos.
• A camada model representa as informações sobre o qual a aplicação opera, que neste projeto são relacionados com as rodovias e carros.
Implementação
Desenvolvimento
•O protótipo foi implementado no ambiente Eclipse Ganymede, usando a biblioteca gráfica JoGL em Java.
Rotinas implementadas:
•Visão em perspectiva 3D.
•Colisão.
•Deslocamento do veículo.
Visão em perspectiva 3D
Implementação
1. /**2. * Método usado para especificar o volume de visualização.3. */4. public void especificaParametrosVisualizacao() {5. // Especifica sistema de coordenadas de projeção6. gl.glMatrixMode(GL.GL_PROJECTION);7. // Inicializa sistema de coordenadas de projeção8. gl.glLoadIdentity();9.10. // Especifica a projeção perspectiva(angulo,aspecto,zMin,zMax)11. glu.gluPerspective(zoom, fAspect, 0.5, 1000);12.13. posicionaObservador();14. }
15. private float[] obsEye = new float[3];//perspectiva – camera16. private float[] imgCnt = new float[3];//perspectiva - camera
Visão em perspectiva 3D
Implementação
17. /**18. * Método usado para especificar a posição do observador virtual.19. */20. public void posicionaObservador() {21. // Especifica sistema de coordenadas do modelo22. gl.glMatrixMode(GL.GL_MODELVIEW);23. // Inicializa sistema de coordenadas do modelo24. gl.glLoadIdentity();25. // Especifica posição do observador e do alvo26. // eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ27. // eyeX, eyeY, eyeZ = define a posicao da camera28. // centerX, centerY, centerZ = define o centro da imagem, para 29.onde esta olhando30. // upX, upY, upZ = define qual eixo esta virado pra cima31. glu.gluLookAt(obsEye[0], obsEye[1], obsEye[2], imgCnt[0], 32.imgCnt[1], imgCnt[2], 0.0, 1.0, 0.0);33. }
Colisão
Implementação
• Cria uma silhueta em volta do veículo para a detecção de semáforos.
•Utiliza a classe java.awt.Rectangle.
•Método contains(x,y).
Deslocamento do veículo
Implementação
public boolean calcular() throws InterruptedException {//pega tempo de existencia do carro na viatimeNow = cronus.tempo();
//distancia em metrosposicaoNaPista = velocidade * (timeNow/1000D);
//calculado o quanto o carro se deslocou, ira calcular o seu ponto no plano
Ponto pAux = this.reta.posicaoNaReta(posicaoNaPista);...}
Resultados e Discussão
Não foi implementado o calculo de distância entre dois pontos da via devido a falta de tempo e complexidade da rotina.
Tabela comparativa entre as versões
Protótipo de Freire
(2004)
Protótipo de Ranghetti
(2007)
Protótipo versão 3
Opção de carro guiado X X
Visualização em 3D - ortogonal X X
Visualização em 3D - perspectiva X
Definir velocidade para os veículos X X X
Veículos com diferentes velocidade X
Definir quantidade de veículos X X X
Iniciar, parar, pausar simulação X X X
Calcular comprimento da rua X X
Representação de viadutos X X
Determinar rotas X
Conclusão
O presente trabalho é uma extensão do simulador de tráfego de automóveis em uma malha rodoviária desenvolvido por Freire (2004) e estendido por Ranghetti (2007).
As extensões desenvolvidas foram a visualização em perspectiva 3D, variação da velocidade para determinados grupos de carros e a definição de rotas para uma quantidade de carros.
O simulador adequou-se a carregar a malha rodoviária criada pelo EGMR de Perondi (2007), inclusive todas as suas características.
Não foi idealizado nenhum tipo de controle para alterar a velocidade de qualquer veículo na malha durante a simulação
Extensões
Para continuação deste trabalho são sugeridas as seguintes extensões:
• Adequar a velocidade do veículo que esta atrás para a velocidade do veículo que esta a frente.
• Permitir a distribuição do processamento para vários computadores.
• Rotina para fazer estatísticas sobre o tráfego na malha.
• Melhorar a qualidade gráfica, fazendo uso de texturas e criando um terreno.