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é Savi Orientador: 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 do trânsito. Buscam a melhor solução para a mobilidade de veículos. Também visam diminuir o quadro de poluição sonora, atmosférica e a fadiga dos usuários. Duas versões já desenvolvidas por Freire (2004) e Ranghetti (2007) na Furb. Este trabalho propõem-se como uma extensão ao simulador de Freire (2004) e Ranghetti (2007).
Introdução Compatibilidade com o editor de malhas viárias de Perondi. Padrão de arquitetura Model View Controller (MVC).
Objetivos do trabalho Estender o trabalho desenvolvido por Freire (2004 Versão 1) e Ranghetti (2007 Versão 2) Reformular a estrutura de dados. Disponibilizar a visualização em perspectiva. Permitir velocidades diferente por carro. Permitir definição de rotas para determinados carros.
Trabalho de Conclusão de Curso FUNDAMENTAÇÃO TEÓRICA
Fundamentação Teórica Simuladores de trânsito de veículos 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.
Fundamentação Teórica Grafos 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).
Fundamentação Teórica Grafos Estrutura de dados no EGMR de Perondi.
Fundamentação Teórica Computação gráfica e a API JoGL 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.
Fundamentação Teórica 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 Simulação de veículos trafegando, de Freire (2004)
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 Tela inicial do Simulador de Ranghetti (2007)
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>
Trabalho de Conclusão de Curso DESENVOLVIMENTO
Desenvolvimento Requisitos do Sistema Proposto 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).
Desenvolvimento Requisitos do Sistema 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).
Desenvolvimento Especificação do Sistema Casos de uso. Diagrama de modelo de classes.
Desenvolvimento Casos de Uso
Desenvolvimento Representação da Malha Rodoviária 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.
Desenvolvimento Representação da Malha Rodoviária 0;1 0;1 0;1 1;1 2;1 1;1 0;1 0;1 1;1 0;1
Desenvolvimento Representação da Malha Rodoviária
Desenvolvimento Posição automóvel na via Os veículos somente param na via quando os semáforo a frente já esta ocupado. O cronometro do veículo para nesta situação.
Desenvolvimento Detectando colisões e alocando semáforo Detectar semáforo do veículo que esta a frente.
Desenvolvimento Modelo Model-View-Controller (MVC) 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.
Desenvolvimento Diagrama de modelo de classes
Desenvolvimento Camada View
Desenvolvimento Camada Control
Desenvolvimento Camada Model
Desenvolvimento Implementação 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.
Implementação Visão em perspectiva 3D 1. /** 2. * Método usado para especificar o volume de visualização. 3. */ 4. public void especificaparametrosvisualizacao() { 5. // Especifica sistema de coordenadas de projeção 6. gl.glmatrixmode(gl.gl_projection); 7. // Inicializa sistema de coordenadas de projeção 8. 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 camera 16. private float[] imgcnt = new float[3];//perspectiva - camera
Implementação Visão em perspectiva 3D 17. /** 18. * Método usado para especificar a posição do observador virtual. 19. */ 20. public void posicionaobservador() { 21. // Especifica sistema de coordenadas do modelo 22. gl.glmatrixmode(gl.gl_modelview); 23. // Inicializa sistema de coordenadas do modelo 24. gl.glloadidentity(); 25. // Especifica posição do observador e do alvo 26. // eyex, eyey, eyez, centerx, centery, centerz, upx, upy, upz 27. // eyex, eyey, eyez = define a posicao da camera 28. // centerx, centery, centerz = define o centro da imagem, para 29.onde esta olhando 30. // upx, upy, upz = define qual eixo esta virado pra cima 31. glu.glulookat(obseye[0], obseye[1], obseye[2], imgcnt[0], 32.imgCnt[1], imgcnt[2], 0.0, 1.0, 0.0); 33. }
Implementação Visão em perspectiva 3D
Implementação Colisã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).
Implementação Deslocamento do veículo public boolean calcular() throws InterruptedException { //pega tempo de existencia do carro na via timenow = cronus.tempo(); //distancia em metros posicaonapista = velocidade * (timenow/1000d); //calculado o quanto o carro se deslocou, ira calcular o seu ponto no plano Ponto paux = this.reta.posicaonareta(posicaonapista);... }
Trabalho de Conclusão de Curso OPERACIONALIDADE DA IMPLEMENTAÇÃO
Operacionabilidade da Implementação Rotas para os veículos
Operacionabilidade da Implementação Inicializar a simulação
Operacionabilidade da Implementação Visão em perspectiva
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.
Trabalho de conclusão de curso Fim