48
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

Simulação do controle de tráfego de automóveis em uma ...campeche.inf.furb.br/tccs/2008-II/2008-2-08-ap-edersonasavi.pdf · ... e Swing, que são as bibliotecas de interface gráfica

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

FUNDAMENTAÇÃO TEÓRICA

Trabalho de Conclusão de Curso

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

Grafos

Fundamentação Teórica

Estrutura de dados no EGMR de Perondi.

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

Fundamentação Teórica

Simulação de veículos trafegando, de Freire (2004)

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

Fundamentação Teórica

Tela inicial do Simulador de Ranghetti (2007)

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

DESENVOLVIMENTO

Trabalho de Conclusão de Curso

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

Especificação do Sistema

Desenvolvimento

•Casos de uso.

•Diagrama de modelo de classes.

Desenvolvimento

Casos de Uso

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.

Representação da Malha Rodoviária

Desenvolvimento

0;1

0;1

0;1

0;1

0;1

0;1

1;12;1

1;1

1;1

Representação da Malha Rodoviária

Desenvolvimento

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.

Diagrama de modelo de classes

Desenvolvimento

Camada View

Desenvolvimento

Camada Control

Desenvolvimento

Camada Model

Desenvolvimento

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. }

Visão em perspectiva 3D

Implementação

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);...}

OPERACIONALIDADE DA IMPLEMENTAÇÃO

Trabalho de Conclusão de Curso

Rotas para os veículos

Operacionabilidade da Implementação

Inicializar a simulação

Operacionabilidade da Implementação

Visão em perspectiva

Operacionabilidade da Implementação

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.

Fim

Trabalho de conclusão de curso