simulação rodoviária em tempo real para aplicações ... · circulação de automóveis e...

88
Simulação rodoviária em tempo real para aplicações interactivas Agentes motorizados e peões Luís Filipe Santos Cruz Loureiro Dissertação para obtenção do Grau de Mestre em Engenharia Electrotécnica e Computadores Júri Presidente: Professor Nuno Gomes Horta Orientador: Professor João Madeiras Pereira Co-Orientador: Professor Fernando Mira da Silva Vogal: Professor Alberto Rodrigues da Silva Novembro de 2010

Upload: truongkhue

Post on 12-Dec-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

Simulação rodoviária em tempo real para aplicações interactivas

Agentes motorizados e peões

Luís Filipe Santos Cruz Loureiro

Dissertação para obtenção do Grau de Mestre em

Engenharia Electrotécnica e Computadores

Júri

Presidente: Professor Nuno Gomes Horta

Orientador: Professor João Madeiras Pereira

Co-Orientador: Professor Fernando Mira da Silva

Vogal: Professor Alberto Rodrigues da Silva

Novembro de 2010

i

Resumo

A simulação de sistemas rodoviários é uma componente fulcral nas aplicações interactivas

para fins de entretenimento ou educacionais, como os simuladores de condução. O objectivo é

criar situações realistas e plausíveis, para que um condutor humano consiga interagir da forma

mais correcta e segura com os agentes.

Um sistema rodoviário é constituído por diversos elementos, mas em geral resume-se a

circulação de automóveis e peões, que devem respeitar as regras rodoviárias para garantir

uma circulação segura. Os sinais de prioridade, limite de velocidade e sinais luminosos ajudam

ainda a controlar o trânsito automobilístico, evitando situações de estagnação do fluxo de

trânsito.

A chave para a simulação realística dos automóveis é o modelo sub-microscópico, que toma

em consideração os aspectos físicos e mecânicos do automóvel, para o correcto controlo do

mesmo. Este modelo também permite a integração com os motores de simulação física para a

correcta simulação do movimento do automóvel.

As acções dos automóveis e peões são baseados nos comportamentos de condução

especificados pelo Craig W. Reynolds, mas adaptados a dinâmica do movimento dos agentes e

as suas propriedades físicas.

Palavras-chave: Simulação rodoviária, agentes, sub-microscópico, automóveis,

mecânica, peões.

ii

iii

Abstract

The simulation of road traffic is a crucial component in interactive applications, for entertainment

and educational purposes, such as the driving simulators. The objective is to create realistic and

plausible situations, where the human player can interact with other agents while driving his

virtual vehicle.

The road traffic population is mainly formed by motorized vehicles and pedestrians which

should respect the traffic rules, to ensure a safe driving. The traffic light, priority and speed limit

signals help to control the vehicles traffic, avoiding the traffic flow stagnation.

The key to a realistic vehicle simulation is the sub-microscopic model, where the decision

process is based on the physical and mechanical characteristics of the vehicle. This model also

allows the interaction with physics simulation engines to improve the realism of the simulation.

The actions of the vehicles and pedestrians are based on steering behaviors specified by Craig

W. Reynolds, but adapted for the dynamics and physics properties of the agents.

Keywords: Traffic Simulation, sub-microscopic, agents, vehicles, mechanics,

pedestrians.

iv

v

Simbologia

Alfabeto latino

Símbolo Grandeza Dimensão

Instante de tempo

Passo de tempo

Massa

Velocidade linear

Aceleração linear

Posição

Força

Inércia

Binário

Potência

Área frontal do automóvel

Coeficiente de forma do automóvel

Aceleração da gravidade

Distância de travagem m

Distância de reacção m

Distância de percepção m

Factor de segurança

Distância de guarda entre automóveis m

Raio do maior agente

Alfabeto grego

Símbolo Grandeza Dimensão

Velocidade angular

Aceleração angular

Rendimento %

Densidade do ar

Coeficiente de atrito de rolamento

Coeficiente de atrito estático

Tempo de reacção

vi

Índice

1 Introdução .............................................................................................................................. 1

1.1 Enquadramento ............................................................................................................. 1

1.2 Objectivos ...................................................................................................................... 4

2 Revisão bibliográfica .............................................................................................................. 5

2.1 Nota introdutória ............................................................................................................ 5

2.2 Partição de espaço ........................................................................................................ 5

2.2.1 QuadTree .................................................................................................................. 5

2.2.2 KD-Tree ..................................................................................................................... 7

2.2.3 Rede de ordenamento ............................................................................................... 9

2.2.4 Células ..................................................................................................................... 10

2.3 Latência de actualização ............................................................................................. 11

2.4 bXporter ....................................................................................................................... 11

2.5 Comportamentos de condução ................................................................................... 12

2.5.1 Condução em direcção a um ponto ........................................................................ 12

2.5.2 Condução ao longo de rectas ................................................................................. 12

2.5.3 Imobilização do veículo ........................................................................................... 13

2.5.4 Forças de repulsão .................................................................................................. 14

2.5.5 Contorno de obstáculos estáticos ........................................................................... 15

2.5.6 Previsão de colisão ................................................................................................. 16

2.5.7 Obstáculos de velocidade finitos ............................................................................. 16

2.6 Simulação de tráfego .................................................................................................. 20

2.6.1 Sub-Microscópico .................................................................................................... 20

2.6.2 Microscópico ............................................................................................................ 20

2.6.3 Macroscópico .......................................................................................................... 21

2.6.4 Mesoscópico ............................................................................................................ 21

3 Modelação ............................................................................................................................ 23

3.1 Nota introdutória .......................................................................................................... 23

3.2 Estrutura do sistema de simulação ............................................................................. 24

3.3 Modelo mecânico ........................................................................................................ 25

3.4 Modelo Sensorial ......................................................................................................... 27

3.4.1 Distância de percepção ........................................................................................... 27

3.4.2 Temporizadores ....................................................................................................... 28

3.4.3 Dimensionamento do mundo .................................................................................. 28

3.4.4 Tipos de elementos rodoviários .............................................................................. 30

3.4.5 Sensores dos peões ................................................................................................ 34

3.4.6 Sensores dos automóveis ....................................................................................... 36

3.5 Modelo Comportamental ............................................................................................. 39

3.5.1 Comportamentos dos peões ................................................................................... 39

3.5.2 Comportamentos dos automóveis ........................................................................... 40

4 Resultados ........................................................................................................................... 49

4.1 Nota introdutória .......................................................................................................... 49

4.2 Representação gráfica ................................................................................................ 49

4.3 Controlo de travagem .................................................................................................. 52

4.3.1 Metodologia de teste ............................................................................................... 52

4.3.2 Obstáculo imóvel ..................................................................................................... 52

4.3.3 Obstáculo móvel ...................................................................................................... 53

4.3.4 Obstáculo móvel e travagem brusca ....................................................................... 54

4.3.5 Imobilização brusca ................................................................................................. 55

4.4 Desempenho ............................................................................................................... 56

4.4.1 Simulação de Automóveis ....................................................................................... 57

4.4.2 Simulação de Peões ................................................................................................ 57

4.5 Previsão da colisão ..................................................................................................... 59

4.6 Controlo do acelerador ................................................................................................ 60

5 Conclusão ............................................................................................................................ 61

6 Trabalho Futuro .................................................................................................................... 62

7 Bibliografia............................................................................................................................ 63

8 Anexos ................................................................................................................................. 65

8.1 Conceitos ..................................................................................................................... 65

8.1.1 Nota introdutória ...................................................................................................... 65

8.1.2 Métodos de integração ............................................................................................ 65

8.1.3 Equações de Newton-Euler ..................................................................................... 66

8.1.4 Mecânica do Automóvel .......................................................................................... 66

8.1.5 Forças de Atrito ....................................................................................................... 67

8.1.6 Distância de travagem ............................................................................................. 67

8.2 Funcionamento do simulador ...................................................................................... 69

8.3 Execução do integrador de Euler ................................................................................ 70

8.4 Referências e parâmetros ........................................................................................... 70

Índice de figuras

Figura 1.1 - Representação tridimensional do gradiente da função de erro (á esquerda) e de um

modelo poligonal do crânio humano (á direita). ............................................................................ 1

Figura 1.2 - Modelos existentes para simulação de tráfego automobilístico. ............................... 2

Figura 1.3 - Captura de ecrã do jogo Burnout Paradise em que a simulação de agentes permite

simular os adversários e o tráfego rodoviário na cidade. ............................................................. 3

Figura 2.1 - Estrutura das partições/nós e suas ligações em QuadTree a diferentes

profundidades. ............................................................................................................................... 6

Figura 2.2 - Inserção de um nó pela KD-Tree em coordenadas cartesianas 2D. ........................ 7

Figura 2.3 - Procura do nó mais próximo ao ponto P, de acordo com o hiper-plano seria o Nó 1,

mas se consultarmos a árvore do outro lado verificamos que afinal é o Nó 2. ............................ 8

Figura 2.4 - Representação de uma distribuição de pontos centrados em µ (média) com uma

variância mais acentuada na dimensão do x, logo o plano de corte vai ser perpendicular a este.

....................................................................................................................................................... 8

Figura 2.5 - Organização dos agentes após executar o algoritmo de ordenação. ....................... 9

Figura 2.6 - Conversão dos caminhos (amarelo) em células de 8 metros (azul). ...................... 10

Figura 2.7 - Demonstração do impacto da latência de actualização no vector de aceleração

durante o movimento do agente.................................................................................................. 11

Figura 2.8 - Modelo do fluxo de dados entre o Blender e aplicação. .......................................... 11

Figura 2.9 - Demonstração dos vectores envolvidos na determinação da direcção para seguir

um ponto. ..................................................................................................................................... 12

Figura 2.10 - Demonstração dos vectores envolvidos no comportamento para seguir um

caminho. ...................................................................................................................................... 13

Figura 2.11 - Demonstração da zona redução de velocidade para a imobilização do veículo em

segurança. ................................................................................................................................... 14

Figura 2.12 - Demonstração dos vectores envolvidos para o contorno ao obstáculo. ............... 15

Figura 2.13 - Demonstração da previsão da colisão em função da posição e velocidade

instantânea dos agentes. ............................................................................................................ 16

Figura 2.14 – Representação de um VO de dois objectos em forma de disco. ......................... 17

Figura 2.15 - Determinação da velocidade livre de colisões com os VO.................................... 18

Figura 2.16 - Representação de um FVO de dois objectos em forma de disco. ........................ 19

Figura 2.17 - Classificação dos pontos resultantes da intersecção das . .............................. 20

Figura 3.1 – Diagrama da estrutura global do projecto. .............................................................. 24

Figura 3.2 - Diagrama das classes abstractas usadas nos agentes e elementos rodoviários. .. 24

Figura 3.3 - Diagrama do agente responsável pelo controlo dos automóveis. ........................... 25

Figura 3.4 - Esquema da simulação mecânica do veículo. ........................................................ 26

Figura 3.5 Componentes usadas para o cálculo da distância de percepção. ............................ 28

Figura 3.6 - Criação da QuadTree para acomodar os agentes e garantir a dimensão mínima

das folhas. ................................................................................................................................... 29

Figura 3.7 – Ligações entre as folhas da QuadTree usando o código de Morton. ..................... 29

Figura 3.8 - Captura de ecrã no ambiente de modelação do Blender com os blocos de

construção dos percursos a esquerda e um percurso a direita. ................................................. 30

Figura 3.9 - Sinais verticais utilizados na simulação................................................................... 31

Figura 3.10 - Captura de ecrã do Blender com a especificação do cruzamento, zona de

pertença a vermelho e zona de aproximação a azul. ................................................................. 32

Figura 3.11 - Disposição dos sinais luminosos sobre a área do cruzamento. ............................ 33

Figura 3.12 - Diagrama dos sensores dos peões e os respectivos períodos de latência. ......... 34

Figura 3.13 - Casos possíveis que surgem durante a condução do agente (azul) num caminho

orientado (de PA para PB). ........................................................................................................... 35

Figura 3.14 – Diagrama dos sensores para os automóveis e as latências de actualização

respectivas. ................................................................................................................................. 36

Figura 3.15 - Demonstração da modificação realizada a comportamento de evasão a colisão. 39

Figura 3.16 - UML do diagrama das classes de comportamentos do automóvel. ...................... 40

Figura 3.17 - Diagrama de travagem em função da distância ao obstáculo imobilizado. .......... 42

Figura 3.18 - Fluxograma do funcionamento do modelo quando a velocidade do automóvel

simulado é superior á do obstáculo. ........................................................................................... 43

Figura 3.19 - Fluxograma do funcionamento do modelo quando a velocidade do automóvel

simulado é inferior á do obstáculo............................................................................................... 44

Figura 3.20 – Comparação da previsão da colisão com base em formas circulares e a previsão

da colisão baseada em cápsulas. ............................................................................................... 45

Figura 3.21 - Fluxograma da execução do comportamento para controlo da prioridade para

cada automóvel identificado no cruzamento. .............................................................................. 47

Figura 3.22 - Determinação da distância ao sinal luminoso. ...................................................... 48

Figura 4.1 - Captura de ecrã do programa de simulação com um automóvel seleccionado. .... 49

Figura 4.2 - Representação das pistas visuais transmitidas pelos automóveis. ........................ 50

Figura 4.3 - Representação das linhas de detecção de agentes e elementos rodoviários. ....... 50

Figura 4.4 - Captura de ecrã do simulador numa situação de cruzamento com sinais luminosos.

..................................................................................................................................................... 51

Figura 4.5 - Simulação do movimento dos peões no sistema rodoviário. .................................. 51

Figura 4.6 - Perfil de travagem (a vermelho) com factor de segurança 4. ................................. 52

Figura 4.7 - Perfil de travagem (a vermelho) com factor de segurança a 1.5. ........................... 53

Figura 4.8 - Perfil da velocidade, acelerador e travão do automóvel que se desloca atrás do

obstáculo (outro automóvel a 80km/h). ....................................................................................... 53

Figura 4.9 - Perfil da distância durante a simulação de dois automóveis em deslocamento. .... 54

Figura 4.10 - Perfil de travagem, aceleração e velocidade do automóvel que se desloca atrás

do obstáculo (outro automóvel a 50km/h). .................................................................................. 55

Figura 4.11 - Perfil da distância durante a simulação de dois automóveis em deslocamento. .. 55

Figura 4.12 - Perfil de travagem, aceleração e velocidade do automóvel que se desloca atrás

do obstáculo que trava bruscamente aos 1.7 segundos. ........................................................... 56

Figura 4.13 - Evolução da distância entre automóveis na situação em que o obstáculo trava

bruscamente. ............................................................................................................................... 56

Figura 4.14 - Latência média da simulação de automóveis com dois períodos de reacção

distintos. ...................................................................................................................................... 57

Figura 4.15 - Latência média da simulação dos peões. ............................................................. 58

Figura 4.16 - Latência média da simulação dos peões com a QuadTree configurada para 40

km/h. ............................................................................................................................................ 58

Figura 4.17 - Exemplo de um caso em que a previsão a colisão falha na simulação de

automóveis. ................................................................................................................................. 59

Figura 4.18 - Exemplo do problema da previsão a colisão nas curvas. ..................................... 59

Figura 4.19 - Captura de ecrã de uma situação em que o automóvel simulado fica imobilizado a

uma distância muito elevada do veículo posterior. ..................................................................... 60

Figura 8.1 Curva de binário de um motor a gasóleo do projecto CleanDrive. ............................ 66

Figura 8.2 – Demonstração das forças aplicadas num corpo em deslocamento sobre uma

superfície. .................................................................................................................................... 68

Figura 8.3 - Fluxograma das etapas realizadas até a execução da simulação. ......................... 69

Figura 8.4 - Comparação da execução do integrador de Euler com e sem passos adaptativos.

..................................................................................................................................................... 70

Figura 8.5 - Distância de travagem em função da desaceleração e factor de travagem. .......... 71

1

1 Introdução

1.1 Enquadramento

Com o advento da computação gráfica foi possível sintetizar e manipular conjuntos de

quadrículas coloridas, compondo imagens que são exibidas aos observadores humanos

através de dispositivos de visualização, como ecrãs de LCD ou retroprojectores.

Recorrendo aos recursos computacionais dos microprocessadores, são realizadas operações

algébricas e vectoriais sobre conteúdo armazenado ou gerado processualmente, criando

representações que sejam reconhecíveis aos seres humanos, como um gráfico resultante do

estudo do gradiente de uma função de erro ou a representação de um modelo 3D (Figura 1.1).

Figura 1.1 - Representação tridimensional do gradiente da função de erro (á esquerda) e de um modelo

poligonal do crânio humano (á direita).

A sintetização de gráficos permitiu criar representações dos objectos do dia-a-dia e de seres

vivos no ambiente computacional, mas desprovidos das características físicas, orgânicas e

comportamentais que os caracterizam, sendo esta representação insuficiente para que se

possa interagir mesmo que de uma forma limitada entre o utilizador humano e a representação

gráfica.

Surge assim a simulação de agentes que visa preencher o aspecto comportamental, para que

o utilizador possa interagir e reconhecer comportamentos que observa nos homólogos reais

destas representações gráficas. Esta ciência envolve um estudo profundo das características

físicas, orgânicas e comportamentais dos homólogos reais, para deduzir modelos matemáticos

que possam ser implementados no ambiente computacional, permitindo conferir um

determinado grau de inteligência aos agentes simulados.

2

De um ponto de vista microscópico, cada agente é capaz de percepcionar o meio envolvente

para suportar as decisões que são descritas nos diversos comportamentos que o constituem.

Cada um destes comportamentos descreve uma determinada acção que é exibida no ambiente

virtual, sendo visível a outros agentes e ao utilizador humano.

Os comportamentos mais utilizados comummente nos agentes são os comportamentos de

grupo, em que a simulação individual de cada agente depende também dos agentes vizinhos.

Um exemplo típico de comportamento de grupo é a movimentação em bandos de pássaros,

cuja velocidade de pássaro virtual (boid) é baseada na média das velocidades dos pássaros

virtuais mais próximos (Reynolds, 1987).

No estudo do comportamento do agente é muitas vezes usado um ambiente determinístico

para facilitar a compreensão, implementação e execução do modelo comportamental. Contudo

esta decisão pode levar a alguma rigidez na actuação dos agentes, sendo necessário também

introduzir alguns padrões estocásticos ou determinar as variáveis que contribuem para a

introdução de comportamentos não-determinísticos.

Assim de um ponto de vista macroscópico a simulação de agentes representa uma importante

componente em aplicações em que é necessário um certo grau de autonomia numa

determinada população de agentes. Esta ciência tem uma aplicação diversificada na indústria

cinematográfica, simulação e vídeo jogos, conferindo um maior realismo e acrescentado maior

valor económico aos produtos. Destaca-se como exemplo os sistemas de simulação de tráfego

rodoviário e simuladores de evacuação de pessoas, que permitem determinar falhas nas infra-

estruturas que podem por em causa a segurança dos seus utentes.

O foco desta tese é o trafego automobilístico, do qual já existem alguns modelos que simulam

os veículos em função do detalhe necessário. Existe uma escala de quatro modelos que

começa no mais detalhado (sub-microscopio) até ao mais abstracto (macroscópico), todos eles

tem as suas vantagens e desvantagens dando a hipótese ao programador de implementar o

que mais se adequa as necessidades da simulação (Figura 1.2).

Figura 1.2 - Modelos existentes para simulação de tráfego automobilístico.

Sub-Microscópico Microscópico Macroscópico

Mesoscópio

3

O modelo sub-microscópico é o mais realístico e o mais complexo, dado que lida com aspectos

mecânicos do veículo motorizado, logo os comportamentos usados para controlar o movimento

do automóvel devem também actuar ao nível mecânico. São considerados apenas os

principais componentes responsáveis pelo movimento do automóvel (motor, transmissão e

embraiagem), mas não são consideradas as não linearidades destes para simplificar a

execução em tempo real da simulação.

O principal desafio é desenvolver um automóvel “aumentado”, simulando o sistema mecânico

de combustão interna de um veículo, mas controlado de forma exibir um comportamento similar

a um veículo conduzido por um condutor humano, ou seja, seja configurar o veículo com as

características mecânicas de um automóvel real e com características humanas, tais como o

tempo de reacção e o ângulo de visão.

Este modelo sub-microscópico é um território muito pouco explorado dado que envolve a

colaboração profunda de várias áreas distintas da engenharia como a mecânica e informática,

contudo o pior problema é mesmo o facto de estar pouco definido. Os aspectos da simulação

mecânica do automóvel afectam muito o funcionamento dos modelos comportamentais,

obrigado a alterações radicais dos sistemas.

Do ponto de vista macroscópico este modelo é usado em jogos de corridas (Figura 1.3) para

simular trafego rodoviário e os adversários, simuladores de condução realistas e também em

programas para engenharia de tráfego. Contudo do ponto de vista académico não existe muita

informação sobre os sistemas implementados nestas aplicações, levando a necessidade de

realizar o estudo descrito nesta tese.

Figura 1.3 - Captura de ecrã do jogo Burnout Paradise em que a simulação de agentes permite simular os

adversários e o tráfego rodoviário na cidade.

4

1.2 Objectivos

O presente trabalho incide sobre o desenvolvimento de uma plataforma para a simulação de

um sistema rodoviário, constituído por automóveis (veículos ligeiros ou pesados) e peões.

A simulação deve ser realizada tendo em conta os aspectos físicos e mecânicos de um

automóvel, para que estes sejam controlados através do acelerador, travão, mudanças e

direcção. Estes automóveis “aumentados” devem exibir um comportamento similar aos

automóveis que são conduzidos por condutores humanos, devendo ser configurados de acordo

com características e comportamentos humanos. Estes devem também conseguir transmitir

sinais luminosos de travagem e mudança de direcção de forma antecipada.

Para além dos agentes (automóveis e pões) a simulação rodoviária deve contar com elementos

que transmitam regras e obrigações, de maneira a garantir a circulação em segurança.

5

2 Revisão bibliográfica

2.1 Nota introdutória

O presente capítulo apresenta os conceitos documentados em diversas publicações que são

de interesse para o funcionamento do sistema implementado.

Um dos principais mecanismos usados na simulação é a pesquisa de agentes ou elementos

rodoviários, percorrendo diversas listas de maneira a determinar quais os elementos que estão

mais próximos e dentro do campo de visão do agente. Para evitar complexidades algorítmicas

de ( ) pode-se usar estruturas em árvore como as QuadTree ou KD-Tree para reduzir os

custos para ( ).

Apesar da QuadTree acelerar as pesquisas é ainda explorado o conceito do tempo de reacção,

para reduzir o número de pesquisas realizadas, aumentando o desempenho do sistema de

simulação.

De maneira a criar a infra-estrutura rodoviária onde os agentes são simulados, foi utilizado o

Blender para desenhar e especificar a posição dos percursos e restantes elementos

rodoviários. Isto é conseguido através de elementos gráficos já existentes no programa, como

curvas bezier e modelos poligonais, que são posteriormente interpretados como elementos

rodoviários. Para importar o conteúdo produzido para o sistema de simulação é utilizado o SDK

bXporter que fornece métodos e classes simples para o processamento dos dados.

Os agentes são controlados com base em comportamentos que usam a informação do meio

envolvente para a suas decisões. A base de funcionamento destes comportamentos parte do

trabalho descrito em Steering Behaviors (Reynolds, 1999), como a condução ao longo de uma

recta ou a evasão a colisão.

A simulação de tráfego automobilístico não é um tema novo, sendo amplamente utilizado hoje

em dia em diversas aplicações. Existem um conjunto de modelos base que visam a simulação

do tráfego em função do detalhe necessário.

2.2 Partição de espaço

2.2.1 QuadTree

A QuadTree é uma estrutura em árvore usada para armazenar um conjunto finito de elementos

num espaço de dimensões arbitrárias (Finkel & Bentely, 1971) . A QuadTree é similar à

estrutura de uma árvore binária, acrescentando duas ligações a outros nós da árvore

(perfazendo um total de quatro ramificações) e delimitando uma região do espaço distinta por

cada nó (Figura 2.1).

6

Os nós mais profundos da árvore são terminados em folhas de capacidade limitada onde se

colocam os elementos inseridos na árvore. Se um elemento não satisfazer as dimensões da

folha no nó mais profundo, é criado uma folha nos nós hierarquicamente superiores que

satisfaçam os requisitos espaciais.

Usualmente a QuadTree é usada com base num sistema de coordenadas cartesianas 2D para

permitir a localização rápida de elementos distribuídos num determinado espaço. É tipicamente

utilizada na organização de elementos num terreno com maior variância no plano bidimensional

XY do que no espaço tridimensional.

Cada nó da árvore representa uma secção do mundo virtual que não é partilhada por mais

nenhum nó à mesma profundidade, o mesmo não é valido para os nós a baixo na hierarquia,

cujas secções de espaço estão contidas no espaço do nó superior. Cada secção é delimitada

por duas coordenadas cartesianas que definem um rectângulo.

Figura 2.1 - Estrutura das partições/nós e suas ligações em QuadTree a diferentes profundidades.

Dada a semelhança com as árvores binárias a procura da folha mais próxima a um dado ponto

é ( ), sendo depois necessário recorrer uma pesquisa ( ) para detectar o elemento

mais próximo a um dado ponto, sendo N o número total de elementos inseridos na árvore e M

o número de elementos presentes numa folha.

Se a distribuição de elementos no espaço não for homogénea, a complexidade de pesquisa

pode-se revelar prejudicial para a simulação.

7

2.2.2 KD-Tree

A KD-Tree é uma estrutura em árvore usada para armazenar um conjunto finito de elementos

num espaço de k dimensões (Moore, 1991). Cada elemento é identificado por uma chave que

referência um ponto no espaço.

Na sua génese a KD-Tree é similar a uma árvore binária, em que cada nó para além de

estabelecer a ligação para outros dois nós da árvore, guarda uma referência para o elemento

inserido e a identificação da dimensão de corte, que servirá posteriormente para criar o hiper-

plano de separação do espaço.

A construção da árvore apoia-se nos hiper-planos que permitem subdividir automaticamente o

espaço do nó em dois, assim cada uma das ligações vai permitir guardar duas árvores distintas

com todos os elementos a esquerda e direita do hiper-plano de corte. Cada hiper-plano é

definido como sendo sempre perpendicular a dimensão de corte.

A escolha da dimensão de corte para criar o hiper-plano é dada de acordo com a profundidade

a que o nó se encontra, sendo incrementada a medida que a profundidade aumenta e voltando

a primeira dimensão quando já utilizou todas as dimensões anteriores.

Assim usando como exemplo um conjunto de pontos em coordenadas cartesianas 2D e

partindo de um nó como o plano de corte perpendicular ao eixo das abcissas, a decisão de

enviar um outro nó pela esquerda ou direita vai apenas basear-se no valor da abcissa ser

maior ou menor que a abcissa do nó em que está actualmente (Figura 2.2).

(1,1)

X

(2,2)

Y

(0,2)

Y

(2,1)

Figura 2.2 - Inserção de um nó pela KD-Tree em coordenadas cartesianas 2D.

Uma vez que o elemento chegue a uma das ligações do nó que aponte para uma referência

nula, é criado um novo nó para guardar o respectivo elemento.

Dada a semelhança com uma árvore binária, a KD-Tree partilha também alguns aspectos

comuns em termos de complexidade algorítmica.

8

Em geral se a árvore estiver bem balanceada o custo de procura do nó mais próximo é

( ) caso contrário poderá ser próximo de ( ), por isso é necessário garantir que a

inserção dos elementos na árvore é realizada de forma ordenada, minimizando a latência no

acesso a informação armazenada.

O mecanismo de pesquisa do elemento mais próximo, realiza-se percorrendo-se

recursivamente os nós de acordo com os hiper-planos de separação até chegar ao nó mais

próximo, no processo de retorno das chamadas recursivas, vai se verificando também as

árvores que não foram escolhidas anteriormente, permitindo assim não descartar nós só

porque não estão do lado do hiper-plano esperado (Figura 2.3). De maneira a não percorrer

toda a árvore no processo de pesquisa inverso, a verificação só é realizada se o espaço da

árvore do lado oposto do hiper-plano estiver a uma distância inferior a obtida entre o ponto e o

nó mais próximo já localizado.

Hiper-plano de separaçãoNó

0

1

2

P

Figura 2.3 - Procura do nó mais próximo ao ponto P, de acordo com o hiper-plano seria o Nó 1, mas se

consultarmos a árvore do outro lado verificamos que afinal é o Nó 2.

A latência da pesquisa dos nós mais próximos pode ser fortemente afectada se for usada uma

má distribuição de nós que force uma pesquisa por toda a árvore. Para evitar este problema é

necessário calcular quais os nós que subdividem mais equilibradamente o espaço (Figura 2.4),

sendo necessário escolher a dimensão de corte com maior variância e os pontos mais

próximos ao plano de corte respectivo através da ordenação de todos os elementos a inserir

pelo nó.

m

x

y

Figura 2.4 - Representação de uma distribuição de pontos centrados em µ (média) com uma variância

mais acentuada na dimensão do x, logo o plano de corte vai ser perpendicular a este.

Assim para armazenar um grupo de elementos que possuam características dinâmicas de

movimentação no espaço, é necessário reordenar a árvore em todas as interacções da

9

simulação. Para os casos em que os elementos são estáticos (como os sinais rodoviários), só é

necessário ordenar uma só vez a árvore.

2.2.3 Rede de ordenamento

Uma rede de ordenamento (sorting network) é uma rede de comparadores para ordenação de

uma sequência de dados. Estas redes permitem implementar algoritmos de ordenação que

exploraram ambientes com suporte para computação paralela (Blelloch, Leiserson, Maggs,

Plaxton, Smith, & Zagha, 1998).

Destaca-se o algoritmo de Bitonic Merge Sort que é bastante popular no suporte a simulação

com agentes (partículas, pássaros e peões) permitindo ordenar grandes conjuntos de

elementos em função de uma chave que é obtida a partir da posição no espaço do agente.

O conceito de funcionamento é baseado na criação de uma grelha com diversos baldes em

que são colocados os elementos, cada um dos baldes é identificado por uma chave única. A

chave é calculada a partir da posição de cada agente por uma função de hash, que converte a

posição no espaço cartesiano (3D ou 2D) em um número inteiro.

A função de hash tem como objectivo reduzir a quantidade de informação descrita pela posição

no espaço do elemento, de maneira a associar um conjunto de elementos aos baldes

apropriados.

Os algoritmos de ordenação entram no algoritmo ordenando todos os elementos em função da

sua chave. É adicionalmente processado dois vectores do tamanho do número de baldes

usados, que permitem identificar o início e fim dos elementos armazenados em cada balde, no

vector de elementos ordenados (Figura 2.5).

Assim durante a simulação dos agentes, estes só têm de consultar os baldes adjacentes a sua

posição e realizar uma pesquisa ( ), para determinar os elementos mais próximos, seja N o

número de agentes nesse balde em questão.

Vector ordenado de agentes

Vectores de inicio e fim dos agentes

por balde

1

3

2

4

Balde 1

Balde 2

Balde 3

0

Inicio Fim

3

4 4

5 7

Vazio VazioBalde 4

0

Balde 3Balde

2Balde 1

1 2 3 4 5 6 7

Tabela de baldes com os

agentes no espaço 2D

Figura 2.5 - Organização dos agentes após executar o algoritmo de ordenação.

10

2.2.4 Células

As células são uma representação dos caminhos por onde os agentes circulam, sendo estas

de tamanho constante e com capacidade para conter os agentes e atributos de fluxo do tráfego

que nelas circulam. Este modo de armazenamento de agentes é usado no modelo de

simulação rodoviária macroscópico (Sewall, Wilkie, Merrell, & Lin, 2010).

Estas estruturas são criadas a partir dos caminhos originais que os agentes usam para se guiar

pelo mundo virtual, sendo a sua representação em alguns casos mais grosseira que os

caminhos originais (Figura 2.6), não sendo muito recomendáveis para servirem de guias ao

controlo da direcção agentes.

O tamanho constante de cada célula tem o objectivo de fazer com que os atributos de fluxo de

tráfego tenham a mesma importância em todas as células, para que a deslocação dos agentes

entre células seja mais realista.

O tamanho da célula é definido como sendo o maior comprimento de todos os agentes que

circulam nela, para que cada agente esteja somente associado a uma célula e não a várias,

assim os cálculos do fluxo de trânsito na célula são apenas relativos aos veículos que se

encontram dentro da mesma.

Uma das vantagens adicionais desta estrutura em relação a outras é permitir a identificação do

veículo que se encontra a frente, mesmo que não se encontre geometricamente nessa posição,

permitindo determinar correctamente a distância a um veículo que se encontre para além de

uma curva.

Figura 2.6 - Conversão dos caminhos (amarelo) em células de 8 metros (azul).

11

2.3 Latência de actualização

Devido aos processos mentais, características orgânicas e outros estados (emocional,

influência de drogas ou álcool) o tempo de reacção e decisão humano não é instantâneo nem

constante, mas do ponto de vista da simulação, a latência pode ser aproveitada para poupar

recursos computacionais.

A demonstração da utilização deste conceito surge no PSCrowd (Reynolds, 2006) em que

actualização da simulação dos comportamentos é realizada a um ritmo mais lento que a

actualização física ou visual, permitindo escalar o número de agentes simulados sem que seja

penalizada o realismo da simulação (Figura 2.7).

1 segundo

Latência de actualização

de 4 em 4 segundos

Actualização de segundo

em segundo

Figura 2.7 - Demonstração do impacto da latência de actualização no vector de aceleração durante o

movimento do agente.

2.4 bXporter

O bXporter (Figura 2.8) é um esquema open source especializado na migração do conteúdo

digital produzido no Blender, maximizando a produtividade e diminuindo o tempo de integração

do conteúdo criado.

bXporter

Processor

(C++)

Binary File

&

XML File

bXporter Script(Python)

Your

Code

Figura 2.8 - Modelo do fluxo de dados entre o Blender e aplicação.

Este projecto disponibiliza um conjunto de ferramentas, classes e algoritmos dedicados a

preparação do conteúdo para aplicações gráficas 3d tempo real, optimizando o conteúdo para

usar o menor número de operações algébricas e ter o acesso as funcionalidades optimizadas

12

dos GPU. São suportados modelos poligonais, estruturas articuladas, lâmpadas, materiais,

texturas e curvas e dados de animação destas estruturas. Também é fornecido a capacidade

de criar atributos novos para as estruturas, de maneira a criar conteúdo especializado para a

aplicação em desenvolvimento.

O bXporter é um componente fulcral no programa de simulação de maneira a aceder as

estruturas rodoviárias desenhadas no ambiente de modelação do Blender para preparar a

simulação (Anexo 8.2).

2.5 Comportamentos de condução

2.5.1 Condução em direcção a um ponto

Este comportamento permite orientar o veículo para um determinado ponto (Reynolds, 1999)

(Figura 2.9), é implementado de acordo com o seguinte pseudo-código:

float3 dir = normalize(point.position-vehicle.position)

float dval = Dot(dir,vehicle.direction)

if(dval<0) : dval = 0

float steering = 1-dval

if(cross(direction_vec,vehicle.direction).z > 0):

steering = - steering

O vector obtido permite determinar qual a direcção da força a aplicar no corpo para que este se

desloque em direcção ao ponto.

vehicle.direction

vehicle.position

point.position

direction

Figura 2.9 - Demonstração dos vectores envolvidos na determinação da direcção para seguir um ponto.

2.5.2 Condução ao longo de rectas

Este comportamento permite seguir uma linha definida por dois pontos no espaço cartesiano

2D (Figura 2.10). A técnica consiste em determinar o ponto na linha mais próximo ao ponto

para o qual o veículo está a “olhar” (dado que quanto mais perto esse ponto estiver do centro

do veículo, mais instável é a condução), se a distância entre os dois pontos for superior a um

determinado threshold, deve-se corrigir a sua direcção, usando o comportamento para conduzir

em direcção ao ponto mais próximo no caminho.

13

A sua implementação é descrita pelo seguinte pseudo-código:

float3 p1 = vehicle.position + vehicle.direction * distance

float3 p2 = NearestPoint(path, p1)

if(length(p1-p2) > threshold):

FollowPointBehaviour(vehicle, p2)

p0

Initial

directionVehicle

Threshold

p2

p1

Path

Desired

direction

Figura 2.10 - Demonstração dos vectores envolvidos no comportamento para seguir um caminho.

A operação para determinar o ponto mais próximo a uma linha é descrita pelo seguinte

conjunto de operações algébricas:

Seja P1 e P2 os pontos que definem o início e o fim de uma linha no espaço 2 e P3

um ponto no espaço 2;

Assumindo que existe um entre 0 e 1 para ( ) que define todos

os pontos na linha;

Existe um ponto contido na linha para tal que ( ) ( )

Então ( ( ) ) ( ) e sabendo propriedade distributiva do

produto interno ( ) , obtém-se a equação (1) .

( ) ( )

| | (1)

2.5.3 Imobilização do veículo

Um dos desafios para o controlo do movimento do veículo é a imobilização realística quando se

aproxima de um determinado obstáculo (Reynolds, 1999). Este comportamento consiste na

escolha entre a acção de aceleração e travagem em relação a distância ao obstáculo.

Se o veículo tiver uma velocidade demasiado elevada á necessária para imobilizar o veículo

com segurança, então trava proporcionalmente á distância, caso contrário acelera

proporcionalmente a distância.

14

Slow- down distance

Rb

Blue vehicle (obstacle)

Red vehicle

Figura 2.11 - Demonstração da zona redução de velocidade para a imobilização do veículo em

segurança.

Este comportamento pode ser descrito pelo seguinte pseudo código:

float dist = length(Red-Blue)-Rb

float ramped_speed = max_speed * (dist/slow_down_dist)

float engine_force = 0.0f

if(ramped_speed<red_speed):

brake_force= BRAKE_FORCE * dist/slow_down_dist; // Brake

else:

engine_force= ENGINE_FORCE * dist/slow_down_dist; //Throttle

Este comportamento só ocorre se o veículo estiver dentro da zona de redução de velocidade,

que no caso dos veículos motorizados será dado pela distância de paragem.

2.5.4 Forças de repulsão

A evasão a colisão pode ser implementada de um ponto de vista simplista, através de um

modelo de forças repulsivas extraído a partir das posições estáticas dos agentes vizinhos

(Reynolds, 1987).

∑ [ ] (

.| | /)

(2)

O modelo de forças repulsivas (2) usa como base o inverso do comportamento para conduzir

em direcção a um ponto, assim em vez do agente (Pi) ir dirigido para o vizinho (Pj) vai orientar-

se na direcção oposta. Por cada agente na vizinhança o vector de repulsão é pesado segundo:

O inverso da raiz da distância,

O ângulo realizado entre a direcção do agente e o vector de repulsão ( );

Um escalar (I) para ajustar a influência da distância entre agentes;

Adicionalmente é usado um escalar para o ajuste global da influência da vizinhança no cálculo

do vector resultante de repulsão (S).

15

Este modelo apesar de simplista consegue evitar grande parte dos eventos de colisão entre

agentes, contudo não evita por completo as colisões dado que não considera as velocidades

individuais dos agentes. Nas implementações para a simulação de boids (Reynolds, 1987) usa-

se a velocidade dos agentes vizinhos para ajudar a prever a colisão, dado que se a velocidade

do agente a ser actualizado for similar aos vizinhos é pouco provável que colida, mesmo assim

esta adição não é suficiente para evitar eficazmente a colisão.

Em termos de complexidade computacional, este modelo é bastante leve e fácil de

implementar.

2.5.5 Contorno de obstáculos estáticos

Este modelo permite contornar objectos 2D em forma de disco (Figura 2.12) sem que seja

necessário alterar substancialmente a direcção de deslocamento do agente, podendo ser

implementado de acordo com o seguinte pseudo-código:

float3 p1 = vehicle.position + vehicle.direction*distance;

line path = Line(vehicle.position, p1);

float3 near = NearestPoint(obstacle.position, path);

float total_len = vehicle.radius+obstacle.radius;

if(length(near-obstacle.position)<total_len):

float3 dir = normalize(near-obstacle.position);

float3 evade_pos = dir*total_len + obstacle.position;

FollowPointBehaviour(vehicle, evade_pos);

Assim se o agente estiver na eminência de colidir com o obstáculo, ou seja o “raio” da sua

trajectória passar por dentro do obstáculo (contando também com o raio do agente), é aplicado

o comportamento para seguir um ponto que evite a colisão.

near

obstacle.positionvehicle.position

p1

Obstacle

Evasiondirection

evade_pos

path

obstacle.radius

Vehicle

vehicle.radius

Figura 2.12 - Demonstração dos vectores envolvidos para o contorno ao obstáculo.

16

2.5.6 Previsão de colisão

Este método permite prever a colisão num instante próximo (Figura 2.13), de acordo com a

posição e velocidade instantânea dos agentes envolvidos (Reynolds, 1999).

B

A

Instante de tempo em que

os agentes estão mais

próximos

Figura 2.13 - Demonstração da previsão da colisão em função da posição e velocidade instantânea dos

agentes.

A execução do algoritmo consiste em determinar primeiro o instante de tempo em que os

agentes passam mais próximos (3) e posteriormente o cálculo da distância entre agentes

nesse instante de tempo (4).

( ) ( )

| | (3)

|( ) ( )| (4)

2.5.7 Obstáculos de velocidade finitos

Os obstáculos de velocidade finitos (Finite Velocity Obstacles) (Guy, Chhugani, Kim, Lin,

Manocha, & Dubey, 2009) são uma extensão ao trabalho original desenvolvido para robótica

dos VO (Velocity Obstaces) (Fiorini & Shillert, 1998), permitindo calcular velocidade de evasão

á colisão entre agentes com baixo custo computacional e menor oscilação.

Os VO são obstáculos definidos segundo cones (Figura 2.14) que representam todas as

velocidades possíveis de gerar colisão com o agente vizinho num determinado instante de

tempo.

17

pA

pB

A

B

B Å -A

vB

vB

vA-v

B

vA

VO (vB)A

B

pABLeft pABRight

Figura 2.14 – Representação de um VO de dois objectos em forma de disco.

A dedução do VO começa na soma de Minkowski para dois objectos A e B, em que –A denota

o objecto A reflectido no seu referencial :

* | + * | +

A utilização da soma de Minkowski permite determinar o espaço (limites de contacto)

com o qual o objecto A pode colidir com o B, assim existe colisão se . Contudo

este formalismo deduzido a partir das posições estáticas não é suficiente para antever a

colisão, sendo necessário recorrer as velocidades dos objectos.

Seja ( ) um raio a começar no ponto digido na direcção de

( ) * | +

Se um raio que comece no centro de A dirigido na velocidade relativa dos objectos A e B

( ) intersectar a soma de Minkowsi do centrado em B (Figura 2.14), a velocidade

do objecto A está dentro do VO de B, sendo definido pela seguinte expressão:

( ) * | ( ) +

Se ( ) então A e B vão colidir em algum instante de tempo no futuro próximo.

Adicionalmente os VO definem as seguintes propriedades:

Simetria: ( ) então

( )

Translação: ( ) ⇔

( );

Para a determinação da velocidade livre de colisões é necessário encontrar o ponto mais

próximo ao agente resultante da sobreposição de vários VO (Figura 2.15). No caso de não

existir mais de dois agentes vizinhos para calcular a sobreposição dos VO, escolhe-se a

velocidade mais próxima ao agente que esteja na fronteira do VO calculado com o único

vizinho.

18

Velocidade Inicial

Velocidade livre de colisão

Velocity Obstacle

Figura 2.15 - Determinação da velocidade livre de colisões com os VO.

Para implementar o teste de pertença ao espaço do VO é necessário recorrer-se a dois planos

que sirvam de barreiras para o cone, cada plano é implementado pela seguinte função de

distância de um ponto ao ao longo da normal :

( ) *( ) +

Assim conclui-se a seguinte expressão para a delimitação do VO:

( ) . .

/ / . .

/ /

Apesar de esta abordagem resolver o problema das colisões entre agentes é bastante

oscilatória devido a um conjunto de situações:

Se a velocidade do agente Aj está dentro do VO do agente Ai, o contrário

também é valido, logo ambos vão calcular velocidades livres de colisão, contudo

esta formulação admite que o obstáculo move-se passivamente não alterando o

seu deslocamento (Berg, Lin, & Manocha, 2008).

Dado um evento de cálculo das velocidades de evasão, as velocidades antigas

têm uma probabilidade elevada de serem reutilizadas, dado que são agora

válidas dentro dos novos VO. Se as velocidades antigas forem novamente

escolhidas porque permitem levar os agentes directamente aos seus objectivos,

surge o problema de alternância consecutiva entre as velocidades (Berg, Lin, &

Manocha, 2008).

Os FVO introduzem algumas alterações e restrições aos VO de maneira a aumentar a

estabilidade do movimento dos agentes (Figura 2.16).

19

pA

pB

A

B

B Å -A

(vA+vB)/2

vB

vA

pABLeft pABRight

FVOR

FVOL

FVOT

FVO (vB)B

A

Figura 2.16 - Representação de um FVO de dois objectos em forma de disco.

Os FVO definem que o cone do VO deve ser deslocado de para

, assim o cone contém

todas as velocidades do agente A que são a media da sua velocidade actual e a velocidade

dentro VO do agente B, permitindo reduzir as oscilações das velocidades de fuga calculadas

(Berg, Lin, & Manocha, 2008), sendo agora o FVO descrito pelas seguintes condições para os

limites laterais do cone:

( ) (

)

( ) (

)

De maneira a garantir apenas a evasão a colisão no período de tempo (período de um

passo da simulação), é definido uma nova restrição ao cone do VO:

( ) ( (| | ( ))

)

É definido que a união de todos os FVO gerado a partir da vizinhança gera uma

(Potentially Colliding Region), em que os segmentos que delimitam o espaço de cada FVO são

conhecidos como (Boundary Elements), podendo-se dizer que:

Se está dentro da , então a velocidade de evasão estará na .

Dado a intersecção de vários FVO é necessário garantir que se escolhe apenas pontos que

não pertençam ao interior da , para que a velocidade escolhida seja completamente livre

de colisões (Figura 2.17).

20

Ponto interior a PCR

Ponto exterior a PCR

PCR

Figura 2.17 - Classificação dos pontos resultantes da intersecção das .

Do ponto de vista computacional este algoritmo requer mais operações aritméticas e uma

maior complexidade algorítmica, contudo consegue calcular a velocidade de evasão

completamente livre de colisões. Em algumas ocasiões pode não conseguir calcular a

velocidade mesmo que ela exista, se tal acontecer é necessário imobilizar o agente e esperar

que o algoritmo encontre uma velocidade livre de acordo com movimentação da vizinhança.

2.6 Simulação de tráfego

2.6.1 Sub-Microscópico

Este modelo considera que o tráfego automobilístico pode ser simulado através de automóveis

discretos (Figura 1.2), em que cada um é simulado atendendo aos aspectos mecânicos e a um

conjunto de regras rodoviárias (Krajzewicz, Hertkorn, Wagner, & Rössel, 2002).

O automóvel é um agente autónomo, realizando um controlo da componente mecânica do

veículo ao nível dos pedais, mudanças e direcção com base nos aspectos mecânicos de

propulsão e a noção do impacto das forças de atrito no deslocamento do mesmo.

A principal vantagem é o nível de realismo obtido na simulação, contudo este modelo é o mais

complexo de simular.

2.6.2 Microscópico

Este modelo é similar ao modelo sub-microscópico excepto na componente de simulação

mecânica do automóvel (Figura 1.2), que não existe, ou seja, o agente já não precisa de actuar

sobre os pedais ou mudanças do automóvel. O modelo de dinâmica do automóvel passa a ser

descrito pela equação (5), em que ( ) é a velocidade recomendável para o automóvel,

( ) é a velocidade do automóvel posterior, ( ) distância entre automóveis, tempo de

reacção, função de desaceleração e a velocidade média dos dois veículos (Krajzewicz,

Hertkorn, Wagner, & Rössel, 2002).

21

( ) ( ) ( ) ( )

( )

(5)

É um modelo computacionalmente mais simples que o modelo sub-microscópico, contudo é

menos realista em termos de movimento dos automóveis. Este modelo é bastante popular nos

simuladores de tráfego para engenharia de tráfego como o SUMO (Krajzewicz, Hertkorn,

Wagner, & Rössel, 2002).

2.6.3 Macroscópico

O modelo macroscópico tem como objectivo simular as variáveis de tráfego que têm um

significado macroscópico (Figura 1.2) como a densidade dos veículos ( ) e a velocidade

média ( ), que são função do tempo e espaço (Sewall, Wilkie, Merrell, & Lin, 2010). Dado

que o número de veículos num segmento de estrada só se altera com as entradas e saídas

destes, é dada a equação (6) de continuidade que sustentam e .

( ) (6)

Este modelo é computacionalmente mais leve para simular um grande conjunto de veículos,

contudo é penalizado no realismo dado que não lida com cruzamentos e outras situações em

que é necessário dar a prioridade a outros automóveis.

2.6.4 Mesoscópico

Este modelo permite misturar a simulação macroscópica com a microscópica (Figura 1.2), para

resolver as situações de cedência de prioridade em cruzamentos ou outras estruturas

rodoviárias (Krajzewicz, Hertkorn, Wagner, & Rössel, 2002).

22

23

3 Modelação

3.1 Nota introdutória

Este capítulo apresenta o modo como foi implementado os principais aspectos da simulação

física, sensorial e comportamental dos agentes. É também apresentado a estrutura global do

projecto para resumir o modo de implementação e o funcionamento.

Cada agente está associado a um corpo rígido que é simulado no motor de física. A simulação

não contempla as colisões dos corpos rígidos e é realizada de forma idêntica para os peões e

automóveis, por isso a forma do corpo só é utilizada na parte comportamental dos agentes

para a prevenção da colisão. Os automóveis para além do corpo rígido possuem uma parte

mecânica que é simulada no motor de física, também são os únicos agentes que estão sujeitos

as forças de atrito aerodinâmico e de rolamento.

A componente sensorial é responsável pela especificação das características dos sensores e

de como o mundo virtual é criado, para garantir que os agentes conseguem identificar em

segurança qualquer estrutura rodoviária ou outros agentes que pertençam a simulação

rodoviária.

A componente comportamental é responsável pela decisão de controlo do corpo rígido do

agente, usando a informação proveniente dos sensores e das propriedades físicas, para

executar uma condução segura.

24

3.2 Estrutura do sistema de simulação

A estrutura adoptada na implementação do sistema de simulação consiste num “mundo” em

que podem ser inseridos agentes e elementos rodoviários (percursos, sinais e cruzamentos)

(Figura 3.1). O mundo é uma QuadTree dimensionada de acordo com espaço ocupado pelos

agentes, em que são disponibilizados métodos de pesquisa na árvore para identificar conjuntos

de agentes em função do tipo, posição, orientação e distância.

World

Element_CollectionWorld_NodesCollection

0..* 0..*

PathNodes Element

World_Node

1

World_Cell

0..*

0..*0..*

0..*0..*

0..4

bX::Scene

Figura 3.1 – Diagrama da estrutura global do projecto.

Os agentes (automóveis e peões) são elementos cujas funcionalidades e capacidades são

ampliadas através de classes abstractas (Figura 3.2). Estas permitem o acesso a um corpo

rígido na simulação física (Agent_Dynamics) e pesquisa de agentes (Agent_Perception).

Vehicle

Element

Agent_Dynamics Agent_Perception

Pedestrian

Element

Agent_Dynamics Agent_Perception

Element

CrossRoad RoadSignal RoundAbout CrossWalk

Figura 3.2 - Diagrama das classes abstractas usadas nos agentes e elementos rodoviários.

25

Os agentes são constituídos também por um conjunto de sensores e comportamentos (Figura

3.3), para cada um destes existem limites de operação bem definidos, de maneira a mitigar de

situações de conflito nos comportamentos executados.

Vehicle

Vehicle_Behaviour

Vehicle_Sensor

Vehicle_State

0..*

0..*

1

Element

Agent_Dynamics Agent_Perception

Vehicle_Parameters1

Figura 3.3 - Diagrama do agente responsável pelo controlo dos automóveis.

3.3 Modelo mecânico

A simulação do corpo rígido é realizada num pequeno motor de física que utiliza as equações

de Newton-Euler (Anexo 8.1.3) para actualizar o movimento do agente. Para simplificar a

simulação ignora-se a componente angular, dado que o estudo do modelo de atrito do pneu do

automóvel está fora do âmbito da tese. Assim a orientação do agente é actualizada a partir de

um vector normalizado.

A simulação do corpo rígido do automóvel também toma em conta as forças de atrito

aerodinâmico e de rolamento.

A simulação mecânica (Figura 3.4) é responsável por traduzir a actuação nos pedais e

mudanças em força para deslocar o corpo rígido do automóvel.

26

Curva de

binário do

motor

Conversor

Linear para

Angular

Relação da

engrenagem

RPM das rodas

RPM da caixa de velocidades

Velocidade do veiculo

Raio das

rodas

Conversor

Angular para

Linear

Raio das

rodas

Relação da

engrenagem

Binário do motor

Acelerador

Corpo Rigido

Força aplicada

Figura 3.4 - Esquema da simulação mecânica do veículo.

O funcionamento deste sistema consiste em determinar qual a força aplicada no corpo rígido

do automóvel a partir da sua velocidade, pressão no acelerador, estado da embraiagem e

mudança engrenada.

Seguindo o esquema da simulação mecânica da Figura 3.4, a determinação do binário do

motor faz-se consultando a curva de binário com as rotações a saída da caixa de velocidades

(admitindo que os pratos da embraiagem estão juntos). Admite-se que os diferenciais têm uma

relação de conversão 1:1, para que as rotações que entrem na caixa de velocidades sejam a

conversão directa da velocidade do carro, em rotações por minuto nas rodas.

Na situação de arranque, o funcionamento da embraiagem é diferente dado que a velocidade

de rotação das rodas é zero, logo se os pratos da embraiagem tivessem juntos as rotações do

motor seriam zero, então neste caso, opta-se por calcular o binário do motor a partir de um

valor de rotações que seja proporcional ao acelerador. Quando a velocidade de rotação a saída

da caixa de velocidades alcançar a velocidade proporcional ao acelerador, já é possível

abandonar a situação de arranque.

Finalmente após aplicar a relação de conversão no binário do motor pela caixa de velocidades,

converte-se em força para aplicar-se no corpo rígido do automóvel.

27

3.4 Modelo Sensorial

3.4.1 Distância de percepção

A distância de percepção é uma medida crucial na detecção de outros agentes, para que o

agente consiga reagir antecipadamente as situações rodoviárias.

Para calcular a distância de percepção é necessário tomar em conta os seguintes pontos:

Tempo de reacção;

Raio do maior agente a detectar;

Tempo necessário para imobilizar o agente;

Factor de segurança;

Distância mínima entre agentes.

O tempo de reacção mapeia as limitações dos processos mentais que decorrem no cérebro,

existindo sempre um período de latência para reagir a uma nova situação rodoviária. Este valor

vária com a idade do condutor, experiencia, estado emocional e influência de drogas ou álcool,

podendo variar entre 0.3s a 1.7s (Anexo 8.4) (Robert Bosch GmbH, 2002). A partir do tempo de

reacção obtém-se a distância de reacção (7), que corresponde ao espaço decorrido durante o

tempo de reacção ( ) á velocidade actual do automóvel ( ).

(7)

O raio do maior agente ou elemento rodoviário é utilizado para garantir a correcta detecção

destes, dado que a pesquisa calcula a distância ao elemento a partir do seu centro.

O tempo necessário para o imobilizar o agente é obtido a partir do estudo físico das

propriedades de imobilização do corpo rígido (Anexo 8.1.6). No caso de um peão o tempo de

imobilização é praticamente nulo devido a baixa velocidade a que se desloca, contudo num

automóvel já é necessário ter em conta a velocidade e as forças de atrito.

O factor de segurança ( ) é um valor utilizado no agente que controla os automóveis,

permitindo definir diferentes estilos de travagem. Quanto maior for, maior é a distância de

percepção, dando mais tempo ao agente para travar suavemente, contudo não pode valer

menos que 1.0, para garantir que o automóvel guarda sempre uma distância mínima se travar

a fundo.

Considerando o factor de segurança, factor de atrito dos pneus ( ), distância mínima entre

veículos ( ), obtém-se a equação (8) cuja representação gráfica das diferentes

componentes é demonstrada na Figura 3.5.

( ) ( ) (8)

28

Esta formulação permite determinar com segurança os agentes que circulem no mesmo

sentido ou que estejam imobilizados.

drmax dgapdtravagem

dtravagem * fsegurançadreacção

vA

Figura 3.5 Componentes usadas para o cálculo da distância de percepção.

3.4.2 Temporizadores

Como já foi referido no ponto anterior, os processos mentais, características orgânicas e outros

elementos podem influenciar o tempo reacção e decisão humano, mas do ponto de vista da

simulação, esta latência pode ser aproveitada para poupar recursos computacionais.

Como a equação de cálculo da distância de percepção já conta com a distância de reacção, o

agente autónomo não precisa de actualizar a sua vizinhança em todos os passos da

simulação.

Cada agente tem diversos temporizadores para cada um dos sensores, que de acordo com

uma determinada latência realizam uma pesquisa periodicamente. Todos os temporizadores

estão desfasados entre eles e entre agentes, de acordo com um valor aleatório para diminuir a

possibilidade de existirem demasiadas pesquisas simultâneas, tornando alguns passos da

simulação significativamente mais lentos que outros.

Para além da função de temporização, alguns sensores podem ser somente actualizados se

dependerem do evento de actualização de outro sensor, assim se surgir uma situação

rodoviária nova que seja detecta por um sensor, no mesmo passo de simulação os sensores

que dependem deste serão também actualizados.

3.4.3 Dimensionamento do mundo

A estrutura principal de armazenamento do mundo simulado é uma QuadTree, que contém

todos os agentes e caminhos do sistema rodoviário. Esta é configurada de maneira a que a sua

dimensão e profundidade garantam que é possível ao agente identificar o meio envolvente e

consiga tomar as acções necessárias em segurança.

O primeiro aspecto para a configuração do mundo é perceber qual a dimensão mínima das

folhas terminais onde são guardados os agentes. Cada uma das folhas tem de ter as

29

dimensões iguais ou superiores a distância de percepção do agente mais veloz simulado, se o

sistema rodoviário simulado é uma auto-estrada, as folhas tem ser dimensionadas de acordo

com a velocidade de 120km/h.

Dimensão do

espaço ocupado

pelos agentes

Espaço ocupado

pela QuadTree

Figura 3.6 - Criação da QuadTree para acomodar os agentes e garantir a dimensão mínima das folhas.

Posteriormente as dimensões mínimas do mundo são calculadas a partir do número de folhas

múltiplo de 4 necessário para conter todos os agentes e elementos inicializados (Figura 3.6).

Assim consegue-se também determinar a profundidade da árvore (9).

( ) (9)

As folhas da árvore estão interligadas para que quando um agente se encontre no limite da sua

folha, consiga detectar os outros agentes e elementos que estão na folha mais próxima. As

ligações foram feitas com base no esquema de Morton que identifica facilmente as folhas

circundantes com base no índice da folha.

1(0,0)

2(0,1)

5(0,2)

3(1,0)

4(1,1)

7(1,2)

9(2,0)

10(2,1)

13(2,2)

6(0,3)

8(1,3)

14(2,3)

11(3,0)

12(3,1)

15(3,2)

16(3,3)

Figura 3.7 – Ligações entre as folhas da QuadTree usando o código de Morton.

30

3.4.4 Tipos de elementos rodoviários

3.4.4.1 Caminhos rodoviários

Os caminhos rodoviários definem os percursos de circulação dos agentes, existindo um tipo de

caminho distinto para cada tipo de agente.

A geração dos caminhos parte das curvas de bezier que provêm do Blender por intermédio do

bXporter, em que são gerados pontos por interpolação destas. Estes pontos são interligados

tendo em conta a direcção da curva, para que no fim se obtenha um percurso unidireccional

em cada via do troço de estrada.

A metodologia de colocação dos pontos consiste em criar sempre um no fim e inicio da curva,

colocando apenas pontos intermédios quando o comprimento da curva ultrapassa um certo

limite. A ligação entre cada ponto permite definir um troço que o agente pode seguir usando o

comportamento para conduzir ao longo de rectas.

Os pontos têm ligações bidireccionais para que no caso dos peões estes possam circular em

sentidos opostos pelo mesmo caminho e no caso dos veículos, para que estes consigam

prever que pisca têm que fazer quando mudarem de direcção, comparando a direcção que vão

tomar com a direcção de onde vieram.

Cada ponto pode conter diversas ligações para outros nós para que os agentes possam

escolher percursos distintos.

No ambiente de modelação do Blender, usa-se blocos de “construção” dos caminhos que

consistem porções dos troços rodoviários (Figura 3.8), sendo posteriormente convertidos e

unidos durante o processo de criação dos percursos no programa de simulação (Anexo 8.2).

Figura 3.8 - Captura de ecrã no ambiente de modelação do Blender com os blocos de construção dos

percursos a esquerda e um percurso a direita.

31

Para separar os percursos para peões dos percursos para automóveis, é usado uma

nomenclatura específica para o nome das curvas no ambiente de modelação do Blender,

facilitando a distinção durante o processo de preparação da simulação.

3.4.4.2 Sinais rodoviários verticais

Os sinais rodoviários verticais utilizados na simulação transmitem aos automóveis obrigações

que afectam a sua prioridade nos cruzamentos e a velocidade limite. Cabe aos sensores

captarem estes sinais durante a condução e interpretar o seu significado, para transmitir aos

comportamentos.

STOP

Via com Prioridade Cedência de PassagemParagem e cedência de

passagem

20 50 90

Limite de velocidade a

20km/h

Limite de velocidade a

50km/h

Limite de velocidade a

90km/h

Figura 3.9 - Sinais verticais utilizados na simulação.

A sua posição, orientação e tipo é definido no ambiente de modelação do Blender. O tipo é

especificado recorrendo a uma nomenclatura específica no nome do modelo, para que os

sinais sejam distinguidos no processo de preparação da simulação.

3.4.4.3 Cruzamentos

Os cruzamentos são estruturas rodoviárias que permitem a convergência de vários troços e em

que os automóveis devem obedecer a regras rodoviárias, sem que ocorram acidentes ou

bloqueios.

Os cruzamentos são definidos no ambiente de modelação no Blender com o auxílio de um

objecto, este possui uma nomenclatura específica para facilitar a sua identificação na

preparação da simulação.

É importante definir o tamanho do cruzamento para distinguir duas zonas que garantem a

correcta simulação dos veículos, zona de aproximação e a zona de pertença (Figura 3.10).

A zona de aproximação consiste numa área em que os automóveis devem prestar somente

atenção aos outros automóveis que se encontram na vizinhança, mas não podem ser

considerados como “estando já dentro do cruzamento”, e não avançam para dentro da região

de pertença enquanto não tiverem prioridade. Esta zona permite dar espaço de manobra aos

32

veículos que se encontrem próximos do cruzamento para respeitarem as regras de prioridade e

pararem caso seja necessário, em vez de se aproximarem excessivamente do cruzamento e

obstruírem o percurso de outros automóveis com prioridade.

Na zona de pertença é mantido o teste de prioridade, mas se o veículo já se encontrar dentro

desta zona e tiver prioridade para avançar, este já pode ser considerado como “estando dentro

do cruzamento”, assim qualquer outro veículo que possa colidir com este não avança mesmo

que tenha prioridade sobre este.

Uma vez que o veículo passe ao estado de “pertencer ao cruzamento” este percorre

normalmente o seu percurso escolhido.

Figura 3.10 - Captura de ecrã do Blender com a especificação do cruzamento, zona de pertença a

vermelho e zona de aproximação a azul.

A dimensão da zona de pertença é especificada a partir do tamanho do núcleo do cruzamento,

onde existem o cruzamento dos percursos, mas é algo que o modelador especifica no

ambiente do Blender.

Os cruzamentos também servem como estrutura base para a introdução de sinais luminosos,

porque contêm um temporizador que serve de base para o funcionamento de todos os sinais

luminosos associados a este.

3.4.4.4 Sinais luminosos

Os sinais luminosos são elementos responsáveis pelo controlo do tráfego, usando um

temporizador para alternar as cores dos sinais e dar prioridade a cada fila de trânsito para

circular no cruzamento.

33

Os sinais têm de estar associados a um cruzamento, para tal é necessário que no ambiente de

modelação do Blender se coloque os sinais sobre a área do cruzamento (Figura 3.11), para

que depois na preparação da simulação se realize a associação.

Figura 3.11 - Disposição dos sinais luminosos sobre a área do cruzamento.

A temporização de cada sinal é dada a partir de uma equação matemática (10) (operando

apenas com números inteiros) que toma em conta o número de sinais luminosos existentes no

cruzamento e o valor do temporizador no cruzamento. A equação (10) é formada pelo valor do

temporizador ( ), número de sinais luminosos associados ao cruzamento ( ), período de

alternância entre sinal ( ) e número sequencial de identificação do sinal no cruzamento

( ).

( ) ( .

/ ( )) (10)

A ideia é obter um valor cíclico em que se possa definir vários domínios para controlar as luzes

do sinal, através de um temporizador que é incrementado uma unidade em todos os passos da

simulação.

Posteriormente é verificado a que domínio o resultado pretende, só se o valor for superior a

zero, caso contrário o sinal está vermelho (para que outro sinal do cruzamento esteja amarelo

ou verde). Se o valor for menor que

o sinal está verde, se for superior a

e

inferior a

está amarelo, finalmente se for superior a

está vermelho.

34

3.4.5 Sensores dos peões

3.4.5.1 Estrutura

A componente sensorial dos peões é implementada (Figura 3.12) através de dois sensores que

percepcionam o caminho e os peões vizinhos.

Pedestrian_Sensor_Pedestrians

Pedestrian_Sensor_Path

<<abstract>>

Pedestrian_Sensor

+ Update(Pedestrian *vh, World *)

Latência : 500 ms

Latência : Tempo

Real

Figura 3.12 - Diagrama dos sensores dos peões e os respectivos períodos de latência.

3.4.5.2 Detecção do caminho

Este sensor permite calcular um vector de correcção da direcção, para manter o peão a circular

sobre as passadeiras ou passeios. A base para o funcionamento deste sensor é o

comportamento de condução ao longo de rectas (Reynolds, 1999), contudo existe alguns

aspectos que são necessários adicionar devido a alguns casos excepcionais (Figura 3.13) que

ocorrem devido a interacção entre agentes e a maneira como são inicializados no mundo.

A actualização do sensor é realizada em todos os passos para garantir que o peão mantém-se

alinhado sobre o percurso.

Este modelo admite uma certa liberdade para a circulação do peão, podendo afastar-se até 2

metros em relação ao centro do percurso. A escolha de caminhos é realizada aleatoriamente e

os peões também podem circular nos dois sentidos sobre o mesmo caminho.

3.4.5.2.1 Casos Excepcionais

Durante o desenvolvimento deste sensor foi possível identificar um conjunto de situações

críticas que afectam o funcionamento do comportamento para conduzir ao longo de rectas,

devendo-se na maior parte aos problemas com o vector de orientação do agente e a sua

posição em relação a recta do percurso.

35

percursoPA PB

A

percursoPA PB

B

percursoPA PB

C

percursoPA PB

D

percursoPA PB

E

Figura 3.13 - Casos possíveis que surgem durante a condução do agente (azul) num caminho orientado

(de PA para PB).

No caso demonstrado com o agente A corresponde a situação de funcionamento normal do

algoritmo para conduzir ao longo de rectas.

Com o agente B surge o problema quando a orientação é perpendicular ao caminho, então é

calculado um novo vector de reorientação que aponte para um ponto no percurso, que é a

media da projecção da posição do agente no percurso e o fim deste.

O agente C demonstra o evento de passagem para o próximo troço do percurso, isto só ocorre

se o agente estiver próximo o suficiente do percurso, se não é reorientado para ir de encontro

ao término do percurso.

O agente D demonstra o caso em que a sua posição é anterior ao inicio do percurso, então ele

é redireccionado para o ponto de inicio deste.

Na situação com o agente E a sua orientação é oposta ao sentido do percurso, por isso é

reorientado segundo a normal do percurso.

3.4.5.3 Detecção de outros peões

Este sensor é responsável pela detecção dos agentes do mesmo tipo que estejam dentro da

distância de percepção do agente. O período de actualização deste sensor é de 500ms, com

um ângulo de visão de 180º, com a capacidade de identificar até 6 peões.

36

3.4.6 Sensores dos automóveis

3.4.6.1 Estrutura

Os sensores do automóvel (Figura 3.14) são responsáveis pela percepção dos elementos

rodoviários e dos outros veículos em torno deste. Cada um dos sensores tem funcionalidades,

propriedades e latências distintas em função do que se pretende detectar.

Vehicle_Sensor_TrafficRules

<<abstract>>

Vehicle_Sensor

+ Update(Vehicle *, World *)

Vehicle_Sensor_CrossRoad

Vehicle_Sensor_Road_Signal

Vehicle_Sensor_Perception

Vehicle_Sensor_Vehicles

Vehicle_Sensor_LightSignal

Vehicle_Sensor_Path

Vehicle_Sensor_NextPath

Latência : Dependente

Latência : 500ms

Latência : 500ms

Latência : Tempo Real

Latência : 500ms

Latência : 500ms

Latência : Tempo Real

Latência : Dependente

Figura 3.14 – Diagrama dos sensores para os automóveis e as latências de actualização respectivas.

Os sensores podem depender de outros sensores para não repetir pesquisas, podendo até só

ser actualizados quando as dependências o são também.

3.4.6.2 Ajuste da distância de percepção

Este sensor tem o objectivo de evitar situações de “esquecimento” na detecção de alguns

elementos rodoviários. Um exemplo típico desta situação é quando o automóvel se aproxima

de um cruzamento, reduzindo de velocidade devido a uma fila de automóveis, então a distância

de percepção reduz-se, ignorando o cruzamento anteriormente detectado.

Para evitar esta situação, dado que afecta o funcionamento de outros sensores como o de

selecção do próximo percurso, este sensor realiza uma realimentação positiva com a distância

aos elementos rodoviários detectados por cada sensor.

O mecanismo de funcionamento consiste em verificar a que distância é que os elementos

foram detectados em cada sensor, realizando posteriormente uma selecção do máximo valor

entre essas distâncias e a distância de percepção (obtida em função da velocidade do

automóvel).

37

Este valor é utilizado no próximo passo da simulação nos sensores que dependem dele, assim

mesmo que o veículo reduza de velocidade, não ignora o agente anteriormente detectado.

Contudo como a realimentação positiva pode se tornar instável, é recomendado adicionar

apenas os sensores que sejam sensíveis ao do problema do esquecimento, nomeadamente o

sensor do cruzamento. Assim quando detectar um cruzamento, a distância de percepção não

vai ser inferior á distância entre o automóvel e o cruzamento mesmo que reduza de velocidade.

3.4.6.3 Detecção de outros automóveis

Este sensor é responsável pela detecção dos agentes do mesmo tipo que estejam dentro da

distância de percepção do agente. O período de actualização deste sensor é de 500ms, com

um ângulo de visão de 180º, com a capacidade de identificar até 6 automóveis.

Em função da complexidade das situações rodoviárias pode ser necessário aumentar o

máximo da vizinhança detectável, para garantir que os agentes tomam as acções correctas.

Este sensor tem uma dependência opcional com o sensor de ajuste da distância de percepção,

que o informa a que distância deve procurar agentes, caso contrário, calcula a distância de

percepção a partir da velocidade do automóvel.

3.4.6.4 Detecção de sinais luminosos

Este sensor é responsável pela detecção dos elementos do tipo sinal rodoviário luminoso que

estejam dentro da distância de percepção do agente. O período de actualização deste sensor é

de 500ms, com um ângulo de visão de 180º, escolhendo apenas os sinais luminosos que têm a

face voltada para o automóvel e só identifica um sinal de cada vez.

3.4.6.5 Detecção de sinais rodoviários

Este sensor é responsável pela detecção dos elementos do tipo sinal rodoviário vertical que

estejam dentro da distância de percepção do agente. Estes sinais informam o condutor da

velocidade máxima do troço e a sua prioridade.

O período de actualização deste sensor é de 500ms, com um ângulo de visão de 180º,

escolhendo apenas os sinais que têm a face voltada para o automóvel e só identifica um sinal

de cada vez.

3.4.6.6 Detecção de cruzamento

Este sensor é responsável pela detecção dos elementos do tipo cruzamento que estejam

dentro da distância de percepção do agente. Estes sinais informam o condutor que deve ter em

atenção as regras de prioridade de acordo com os outros automóveis que se apresentem no

mesmo cruzamento.

38

O período de actualização deste sensor é de 500ms, com um ângulo de visão de 180º e só

identifica um cruzamento de cada vez.

Este sensor tem uma particularidade na comunicação ao sensor de ajuste da distância de

percepção, para que quando o automóvel esteja próximo do cruzamento consiga identificar de

forma eficaz os agentes que se aproximam do mesmo cruzamento, assim este sensor avisa

que a distância de percepção ao cruzamento é duas vezes superior a dimensão deste.

3.4.6.7 Detecção do percurso

Este sensor permite calcular um vector de correcção da direcção, para manter o automóvel a

circular sobre a via em que se encontra actualmente.

Existe uma dependência opcional ao sensor para selecção do próximo percurso, que indica

qual o percurso a escolher quando o automóvel chega a um nó com diversos percursos

possíveis. Caso não seja usada esta dependência, o automóvel escolhe o primeiro caminho

que encontrar.

A actualização do sensor é realizada em todos os passos para garantir que o automóvel

mantém-se alinhado sobre a estrada.

Este sensor é similar ao desenvolvido para os peões, a única diferença é que está configurado

para ser mais restrito relativamente ao afastamento ao centro da via e não permite a circulação

em sentido contrário.

3.4.6.8 Selecção do próximo percurso

Este sensor realiza as funções de escolha do caminho quando é detectado um cruzamento,

percorrendo o percurso actual até chegar a uma bifurcação dentro do cruzamento, realizando

posteriormente uma escolha aleatória de entre os percursos disponíveis. Outra funcionalidade

deste sensor é informar qual a direcção escolhida para controlar as luzes de mudança de

direcção.

Este depende obrigatoriamente do sensor de percurso e do sensor de cruzamentos. A sua

actualização é realizada somente quando o sensor de cruzamento é actualizado também.

3.4.6.9 Obrigações rodoviárias

Este sensor permite guardar as obrigações rodoviárias detectadas através de sinais rodoviários

pelos quais o automóvel passou anteriormente. Posteriormente estas obrigações vão ser úteis

para decidir quem tem prioridade nos cruzamentos ou para moderar a velocidade dos veículos.

O sensor só é actualizado quando é detectado um cruzamento ou um sinal rodoviário.

39

Caso o veiculo saia de um cruzamento em que a sua prioridade tenha sido afectada por um

sinal de cedência de prioridade ou via com prioridade, este parâmetro é limpo para que tenha o

grau de prioridade básico.

3.5 Modelo Comportamental

3.5.1 Comportamentos dos peões

Os peões são constituídos por 2 comportamentos distintos, controlo da direcção e evasão a

colisão. O controlo de direcção usa o vector de correcção que provem do sensor de detecção

do caminho para orientar o peão. A evasão a colisão permite calcular um novo vector de

orientação para evitar a colisão e reduz a velocidade caso esta seja eminente. O seu

funcionamento é baseado nos comportamentos de forças de repulsão, contorno de obstáculos

e previsão da colisão.

Como o modelo de forças de repulsão não consegue desviar eficazmente, porque muitas das

vezes o resultado da soma dos vectores de repulsão é zero, realiza-se uma filtragem dos

vectores seleccionando apenas as situações em que a colisão é inevitável usando o

comportamento de previsão da colisão. Adicionalmente usa-se o comportamento de contorno

de obstáculos para ajudar e redireccionar o peão a contornar o obstáculo (outro peão) quando

este surge a sua frente, esta operação só é realizada ao obstáculo cuja colisão esteja mais

próxima temporalmente.

O comportamento de contorno dos obstáculos foi modificado, para que os vectores de fuga

fossem calculados de maneira a que os peões pudessem desviar-se em direcções não

coincidentes (Figura 3.15). A técnica consiste em calcular a direcção de fuga com base num

vector que seja perpendicular a velocidade do agente (usando o produto externo com um

vector constante como (x=0,y=0, z=1)).

Situação inicial

Após resolução da

colisão

Evasão ao obstáculo

(Reynolds ,1999)Evasão ao obstáculo

modificado

Figura 3.15 - Demonstração da modificação realizada a comportamento de evasão a colisão.

Se não existir peões na vizinhança com que possa colidir, é permitido ao peão aumentar a sua

velocidade até ao seu limite.

40

3.5.2 Comportamentos dos automóveis

3.5.2.1 Estrutura

Os comportamentos permitem “filtrar” as acções do agente que controlam o automóvel, para

que respeite as regras rodoviárias e realize uma condução segura. Assim são chamados vários

métodos de classes diferentes (Figura 3.16) que implementam comportamentos específicos e

que vão alterando os actuadores do automóvel antes de realizar a simulação mecânica.

Vehicle_Behaviour_Steering

Vehicle_Behaviour_Collision_Avoidance

Vehicle_Behaviour_Turn_Signals

Vehicle_Behaviour_Priority_Controller

<<abstract>>

Vehicle_Behaviour

+ Update(Vehicle *vh, Vehicle_State *state, float dt)

Vehicle_Behaviour_LighSignal_Priority

Vehicle_Behaviour_GearBox_Controller

Vehicle_Behaviour_Throttle_Controller

Figura 3.16 - UML do diagrama das classes de comportamentos do automóvel.

Os comportamentos devem ser executados pela ordem como são apresentados nos seguintes

pontos, para que não existam conflitos na execução.

3.5.2.2 Controlo da direcção

Este comportamento permite controlar a direcção do automóvel através do vector de correcção

da orientação que é obtido do sensor de detecção do percurso.

3.5.2.3 Controlo da velocidade

O comportamento de controlo da velocidade permite actuar o acelerador do automóvel de

acordo com a diferença de velocidade ao automóvel posterior e o limite de velocidade ao qual o

automóvel está obrigado.

O valor do acelerador está compreendido entre 0 e 1, sendo o seu estado actualizado pela

integração da equação (11), que contém a velocidade desejada ( ), a velocidade actual do

automóvel ( ) e um factor que controla a agressividade da aceleração ( ).

( )

( ) (11)

41

A velocidade desejada é o valor mínimo escolhido de entre a velocidade do automóvel

posterior (se este for detectado), limite de velocidade imposto por regras rodoviárias e o próprio

limite de velocidade do automóvel. O valor do acelerador também é limitado por um perfil de

aceleração que é distinto para cada mudança engrenada, de maneira a evitar acelerações

excessivas nas primeiras mudanças.

3.5.2.4 Controlo de travagem

Este modelo comportamental permite controlar o travão e acelerador de um automóvel em

função do obstáculo (outro automóvel) que se encontre a sua frente. Este é utilizado em outros

comportamentos em que é necessário controlar os pedais do automóvel em função da situação

rodoviária, tal como imobilizar o automóvel antes de um sinal luminoso que esteja vermelho.

Este comportamento permite o controlo do travão quando o obstáculo está em movimento,

enquanto o comportamento de imobilização do veículo (Reynolds, 1999) permite actuar os

travões com o obstáculo parado e não considera as forças de atrito envolvidas.

O controlo é realizado tendo em conta as velocidades de deslocamento dos agentes, distância

de guarda entre automóveis e os atritos aerodinâmico e de rolamento. Em função destes

parâmetros é possível realizar 3 operações do controlo do automóvel: continuar a acelerar,

largar o acelerador e travar.

O funcionamento do algoritmo está associado a previsão da necessidade de travar ou

simplesmente deixar de acelerar, deixando que as forças de atrito reduzam a velocidade do

veículo, mas de maneira a manter uma distância de segurança caso o automóvel da frente

tenha de travar bruscamente.

A base deste algoritmo começa em definir os conceitos de distância de segurança e distância

de segurança crítica (Figura 3.17).

( ) (12)

( ) (13)

A distância de segurança crítica (12) representa a distância percorrida que desde que o carro

trava a fundo até ficar imobilizado a distância de guarda do obstáculo ( ( )). A distância

de segurança (13) consiste na multiplicação da distância de segurança crítica por um factor

que permite ao automóvel travar com menor intensidade.

42

automóvel obstáculo

dgapdsegurança critica

dsegurança

0%

100%

Travão [%]

Figura 3.17 - Diagrama de travagem em função da distância ao obstáculo imobilizado.

A partir das equações consegue-se determinar equação (14) da percentagem de travão a

aplicar em função da distância ao obstáculo posterior.

, - ( )

(14)

Contudo a equação (12) é apenas apropriada para a situação em que o obstáculo não se

desloca, sendo necessário considerar a velocidade do obstáculo e o caso em que as

velocidades dos agentes são iguais, o que resulta numa distância de segurança crítica nula.

Para evitar essa situação acrescenta-se um teste de valor máximo com a distância de

percorrida pelo automóvel durante o tempo de reacção (15), permitindo dar algum espaço de

manobra ao automóvel para travar em segurança.

{ ( ) ( ) } (15)

Em função da velocidade relativa ao obstáculo posterior pode-se considerar duas situações

distintas em que é preciso operar os pedais do automóvel de forma diferente.

Na situação em que o obstáculo tem uma velocidade inferior á do automóvel, é verificado se o

veículo quando dentro da distância de segurança consegue usar o atrito de rolamento e

aerodinâmico para igualar a velocidade ao obstáculo posterior, caso não seja possível actua os

travões conforme demonstrado na Figura 3.17. O fluxograma da Figura 3.18 demonstra o

controlo dos pedais nesta situação.

43

distância < dsegurança

distância <

dsegurançacritica

Fim

Não

Sim

Travar a fundoTravar

proporcionalmenteLivre para acelerar

Teste de atrito

Não

Impossível

Possivel

Sim

Inicio

Largar o

acelerador

Figura 3.18 - Fluxograma do funcionamento do modelo quando a velocidade do automóvel simulado é

superior á do obstáculo.

O teste de atrito é realizado calculando o tempo que demora a igualar a velocidades usando as

forças de atrito através da resolução da equação (16). O problema é que esta equação não

pode ser resolvida analiticamente, sendo necessário recorrer ao método de Euler em várias

iterações. Para a simulação considerou-se que o terreno é plano, por isso a influência da força

da gravidade não é necessária.

∫ .

/

(16)

Para acelerar a integração utilizou-se métodos de adaptação do passo de tempo para reduzir o

número de iterações (Anexo 8.3), contudo o número de iterações necessárias pode ainda ser

superior a 30 (admitindo que o espaço das velocidades permitidas pelos agentes é no máximo

de 120km/h).

Se o tempo obtido na resolução da equação (16) for inferior ao tempo de colisão (17) então

liberta-se o acelerador, caso contrário realiza-se a travagem de acordo com a equação (14).

(17)

Se a distância entre agentes for inferior a distância de segurança crítica, então o automóvel

trava a fundo (travar a 100%).

Caso a velocidade do obstáculo seja superior ao automóvel, é necessário garantir a distância

entre agentes é superior a distância de segurança, para tal opta-se por usar os travões

44

proporcionalmente até que a distância seja superior (Figura 3.19). Não é realizado o teste com

o atrito aerodinâmico e de rolamento para que o automóvel se coloque o mais rapidamente a

distância de segurança.

distância < dsegurança

Sim

Fim

Não

Travar proporcionalmenteLivre para acelerar

Inicio

Figura 3.19 - Fluxograma do funcionamento do modelo quando a velocidade do automóvel simulado é

inferior á do obstáculo.

3.5.2.5 Prevenção da colisão

Este comportamento tem o objectivo de evitar a colisão entre automóveis. O seu

funcionamento consiste em estimar o instante mais provável de colisão no futuro e actuar os

travões com o comportamento de travagem de maneira a evitar a colisão.

A estimação do ponto de colisão começa por prever qual o instante de tempo em que os

agentes estão mais próximos um do outro, se existir esse instante (t>0), determina-se a

distância entre agentes nesse instante futuro. Se a distância entre agentes for menor que a

distância de guarda então actua-se os travões.

Contudo surge um problema ao utilizar o comportamento de previsão da colisão (Reynolds,

1999) porque não considera os automóveis com formas rectangulares, impossibilitado a

utilização de automóveis com comprimento substancialmente superior a largura, levando a

detectar colisão quando ela não existe porque os veículos deslocam-se paralelos uns aos

outros.

De maneira a melhorar a previsão da colisão foi implementado o teste da distância entre

agentes considerando que estes são em forma de cápsula (Figura 3.19), que é uma

representação mais realística mas computacionalmente leve.

45

Representação RealPrevisão da colisão

(Reynolds,1999)

Previsão da colisão

baseado em capsulas

Detecta colisão Não detecta colisão

Detecta colisão Detecta colisão

Figura 3.20 – Comparação da previsão da colisão com base em formas circulares e a previsão da colisão

baseada em cápsulas.

A detecção da distância mínima entre cápsulas consiste em projectar pontos que representam

a frente e a traseira do automóvel numa linha que define o obstáculo, a distância é escolhida a

partir dos pontos resultantes que tiverem mais próximos do automóvel.

3.5.2.6 Sinais de mudança de direcção

Este comportamento permite ao agente que controla o automóvel expor a sua intenção de

mudança de direcção antecipadamente. Para o funcionamento deste comportamento existe

uma dependência ao sensor de detecção de próximo percurso, que indica qual a direcção do

percurso escolhido em relação a direcção do troço imediatamente anterior, de maneira a

perceber qual o sinal de mudança de direcção ligar.

46

3.5.2.7 Controlador de prioridade

O controlador de prioridade permite a cada agente autónomo decidir se pode avançar no

cruzamento, em relação a outros automóveis que se encontrem na proximidade do mesmo. O

controlador de prioridade depende dos seguintes sensores:

Detecção de cruzamento (obrigatório);

Detecção de veículos (obrigatório);

Obrigações rodoviárias (obrigatório);

Detecção de sinais luminosos (opcional);

Detecção do próximo percurso (obrigatório);

A regra da prioridade aplicada é da direita, todos os veículos a direita do automóvel tem

prioridade, desde que não existam sinais rodoviários que forcem as prioridades.

O funcionamento consiste em percorrer todos os outros automóveis que o agente detectou,

verificando se existe alguma situação que impeça o agente de entrar no cruzamento (Figura

3.21), se percorrer todos os agentes e não encontrar nenhuma “objecção” então o agente

avança com o automóvel.

Outro aspecto do funcionamento deste comportamento é impedir a circulação quando já existe

outro automóvel dentro do cruzamento e que ocorra o perigo de colisão, mesmo que esse

tenha vindo de uma situação rodoviária com menor prioridade que o automóvel em questão.

Existe uma pequena máquina de estados em cada automóvel neste comportamento, que

mapeia o estado do agente em relação ao cruzamento, se não houver nenhuma razão para o

agente parar o automóvel (tem prioridade sobre os outros automóveis) e a distância ao

cruzamento for metade do raio do cruzamento, a variável passa a indicar que este entrou no

cruzamento, para avisar a todos os outros automóveis para não entrarem no cruzamento se

houver perigo de colisão.

47

Automóvel pertence ao

mesmo cruzamento ?

Inicio

Automovel tem outro

automovel a sua frente ?

Sim

Não

Sim

Não

Automovel segue pelo

mesmo caminho ?Sim

Não

Automovel está a espera

num sinal luminoso ?Sim

Não

Os trajectos dos

automóvel colidem ?

Não

Sim

Automóvel já está dentro

do cruzamento ? Sim

Esperar

A minha prioridade é

inferior

Não

Sim

Automovel está a minha

direita ?

Não

Sim

Processar Próximo

Automovel

Figura 3.21 - Fluxograma da execução do comportamento para controlo da prioridade para cada

automóvel identificado no cruzamento.

Existe um caso excepcional na cedência de prioridade que acontece quando o automóvel

muda de direcção a esquerda e existe um automóvel a sua frente, neste caso é necessário dar

prioridade ao outro automóvel só se não existir nenhum veiculo a direita com prioridade.

3.5.2.8 Controlador para respeito aos sinais luminosos

Este comportamento permite ao agente que controla o automóvel imobilizar o veículo antes de

um sinal luminoso que esteja vermelho. Este comportamento depende ainda obrigatoriamente

do sensor dos sinais luminosos.

A determinação da distância até ao sinal para o controlo do travão realiza-se projectando a

frente do carro numa linha que é perpendicular a orientação do semáforo (Figura 3.22). Após

identificar a distância e a cor do sinal activo aplica-se o comportamento de controlo da

travagem.

48

distância

Vector de

orientação do

sinal

Linha

perpendicular

ao sinal

automóvel

Figura 3.22 - Determinação da distância ao sinal luminoso.

3.5.2.9 Controlador da caixa de velocidades

Este comportamento permite engrenar as mudanças automaticamente em função das rotações

do motor. A regra de engrenagem consiste em subir a mudança se as rotações forem

superiores a 2000 e os pratos da embraiagem estiver completamente unidos e descender a

mudança, se as rotações forem inferiores a 1500.

49

4 Resultados

4.1 Nota introdutória

Neste capítulo pretende-se demonstrar os resultados obtidos a partir do programa de

simulação de tráfego rodoviário desenvolvido. Os seguintes pontos abordam a representação

gráfica da simulação, o funcionamento do controlo de travagem, latência e desempenho da

simulação, problemas relativos a detecção da colisão e o controlo do acelerador.

4.2 Representação gráfica

O programa corre a simulação comportamental e física num processo separado para ser

independente do processo principal de desenho com o DirectX 9. A latência máxima permitida

para a simulação dos agentes é de 16ms, que é o período médio de desenho entre frames na

janela gráfica.

Figura 4.1 - Captura de ecrã do programa de simulação com um automóvel seleccionado.

É apresentado na janela gráfica os elementos rodoviários (sinais luminosos, sinais rodoviários)

e os agentes a circularem sobre os percursos rodoviários (Figura 4.1). O modelo gráfico do

percurso rodoviário é criado a partir de blocos de modelos poligonais no Blender, similares aos

blocos de curvas usadas para especificar os percursos dos agentes.

O HUD (heads-up display) contém a informação sobre a actividade da simulação, latência da

simulação de tráfego e a latência do desenho gráfico. Ao carregar-se sobre um automóvel com

o botão esquerdo do rato obtém-se também as informações relativas ao seu estado, como as

50

rotações do motor, velocidade, mudanças, embraiagem, acelerador, travão e a percentagem de

recursos utilizados pelo agente (em relação a latência total da simulação).

Para o desenho dos automóveis (Figura 4.2) são usados um conjunto de pistas visuais para

perceber o que estão a fazer sem recorrer ao desenho no HUD da informação. Estes mudam

para a cor vermelha caso os travões estejam a ser utilizados, caso contrário a cor do

automóvel é verde. A percentagem de acelerador ou travão é representado sobre a forma de

um quadrado que parte do centro do automóvel e aumenta de tamanho em função da acção

realizada.

Percentagem de

acelerador

Seta de orientação do

automóvel

(Frente do carro)Percentagem de

travão

Mudança de

direcção a

esquerda

Mudança de

direcção a

direita

Figura 4.2 - Representação das pistas visuais transmitidas pelos automóveis.

É desenhado a azul o “radar” do automóvel que mostra a dimensão da área que está a ser

utilizar para percepcionar o mundo (em função da distância de percepção actual), este radar

pisca intermitentemente para indicar que existe actividade nos sensores, se não for detectado

nenhum agente ou elemento rodoviário o radar mantém-se apagado. Sobre este surgem linhas

que indicam os agentes e elementos detectados (Figura 4.3).

Detecção de agentes

vizinhos

Detecção do automóvel

imediatamente a frente

Detecção do sinal

rodoviário

STOP

Detecção do sinal

luminoso

Figura 4.3 - Representação das linhas de detecção de agentes e elementos rodoviários.

Os sinais luminosos são representados com as luzes de acordo com estado do sinal (Figura

4.4).

51

Figura 4.4 - Captura de ecrã do simulador numa situação de cruzamento com sinais luminosos.

Os peões são representados através de pontos amarelos com uma linha vermelha que indica a

sua orientação, estes deslocam-se sobre os percursos respectivos representados a roxo

(Figura 4.5).

Figura 4.5 - Simulação do movimento dos peões no sistema rodoviário.

52

Verifica-se também que devido aos peões não possuírem os comportamentos e sensores para

evitarem os automóveis, eles são atropelados frequentemente como se verifica na Figura 4.5.

4.3 Controlo de travagem

4.3.1 Metodologia de teste

Para mostrar o funcionamento do comportamento de travagem criou-se um pequeno programa

de teste para gravar as acções dos automóveis. A simulação é composta por dois automóveis,

um simulado com o comportamento de travagem e outro que serve de obstáculo, podendo

estar imobilizado ou em movimento.

As situações testadas envolvem o teste dos travões com o obstáculo imóvel, móvel, travagem

brusca do automóvel simulado e travagem brusca do obstáculo.

4.3.2 Obstáculo imóvel

O primeiro teste pretende mostrar a influência do factor de segurança na travagem com um

obstáculo imobilizado a 300 metros, comparando-se os perfis de travagem com o factor de

segurança de 4 (Figura 4.6) e de 1.5 (Figura 4.7).

Figura 4.6 - Perfil de travagem (a vermelho) com factor de segurança 4.

0

20

40

60

80

100

120

0

5

10

15

20

25

30

35

0,2

1,2

2,3

3,3

4,4

5,5

6,5

7,6

8,6

9,7

10

,7

11

,8

12

,8

13

,9

15

,0

16

,0

17

,1

18

,1

Trav

ão (

%)

Ve

loci

dad

e (

s)

Tempo (s)

53

Figura 4.7 - Perfil de travagem (a vermelho) com factor de segurança a 1.5.

Observa-se que quanto maior é factor de segurança maior é o tempo de travagem mas menor

é aceleração aplicada no automóvel, o que permite simular o comportamento de um condutor

de autocarros que deve conduzir com maior cautela, devido aos ocupantes não usarem cintos.

As equações definidas anteriormente para o controlo da travagem apresentam ocasionalmente

alguma instabilidade nas decisões como é observado na Figura 4.6.

4.3.3 Obstáculo móvel

O segundo teste pretende demonstrar o controlo do travão e acelerador com o obstáculo (outro

automóvel) á velocidade constante de 80 km/h, enquanto o automóvel simulado se aproxima a

120km/h com uma distância inicial de 200 metros, usando um factor de segurança de 1.5 e

distância de guarda de 2 metros.

Figura 4.8 - Perfil da velocidade, acelerador e travão do automóvel que se desloca atrás do obstáculo

(outro automóvel a 80km/h).

0

20

40

60

80

100

120

0

5

10

15

20

25

30

35

0,2

1,1

1,9

2,8

3,7

4,6

5,5

6,3

7,2

8,1

9,0

9,9

10

,7

11

,6

12

,5

13

,4

Trav

ão (

%)

Ve

loci

dad

e (

s)

Tempo (s)

0

5

10

15

20

25

30

35

40

45

50

0

5

10

15

20

25

30

35

40

0,2

2,3

4,4

6,5

8,6

10

,7

12

,8

15

,0

17

,1

19

,2

21

,3

23

,4

25

,5

27

,6

29

,7

Tempo [s]

Travão [%]

Velocidade (m/s)

Acelerador [%]

54

Figura 4.9 - Perfil da distância durante a simulação de dois automóveis em deslocamento.

Observa-se que o automóvel começa com um perfil de travagem inicial (4.8 segundos aos 11.6

segundos), mas que quando as velocidades dos dois se aproximam (11.6 aos 13.9 segundos)

adopta outro perfil de travagem, isto é devido a condição demonstrada na equação de cálculo

da distância de segurança crítica(15).

Após os veículos igualarem a velocidade, a distância entre eles é próxima de 16 metros que é

igual a distância de segurança. Verifica-se também que o comportamento de travagem começa

a alternar entre os comportamentos de acelerar e desacelerar (para usar o atrito de

deslocamento para reduzir a velocidade).

4.3.4 Obstáculo móvel e travagem brusca

O terceiro teste visa mostrar o funcionamento do comportamento de travagem do automóvel

quando entra na zona de segurança crítica, sendo a velocidade do obstáculo posterior é

superior a sua (Figura 3.19). O automóvel em simulação segue a 120km/h e encontra-se a 25

metros do automóvel posterior que segue a 50km/h, o factor de segurança é de 1.5 e distância

de guarda de 2 metros.

0

50

100

150

200

250

0,2

2,5

4,8

7,0

9,3

11

,6

13

,9

16

,2

18

,5

20

,8

23

,1

25

,3

27

,6

29

,9

Distância entreautomoveis [m]

55

Figura 4.10 - Perfil de travagem, aceleração e velocidade do automóvel que se desloca atrás do obstáculo

(outro automóvel a 50km/h).

Figura 4.11 - Perfil da distância durante a simulação de dois automóveis em deslocamento.

Observa-se que o automóvel vem de uma situação de desaceleração brusca e que acaba

dentro da zona de distância de segurança crítica com uma velocidade inferior ao automóvel

posterior, no momento em que as velocidades se igualam entra em funcionamento a parte do

algoritmo descrito na Figura 3.19. Este evento é observado na Figura 4.10 quando o valor do

travão cai progressivamente, isto é para garantir que automóvel coloca-se a distância de

segurança crítica no menor espaço de tempo mas sem travar bruscamente.

4.3.5 Imobilização brusca

O último teste pretende mostrar o comportamento do automóvel face a uma travagem brusca

do obstáculo (Figura 4.12). A simulação começa com os automóveis a velocidade de 80km/h e

a 40 metros de distância, o obstáculo começa a travar a fundo aos 1.7 segundos. O automóvel

simulado tem um factor de segurança de 3.0 e distância de guarda de 2 metros.

0

20

40

60

80

100

120

0

5

10

15

20

25

30

35

0,2 0,9 1,6 2,3 3,0 3,7 4,4 5,1 5,8 6,5 7,2

Velocidade [m/s]

Travão [%]

Acelerador [%]

0

2

4

6

8

10

12

14

16

18

20

0,2 0,9 1,6 2,3 3,0 3,7 4,4 5,1 5,8 6,5 7,2

Tempo [s]

Distância entreautomoveis [m]

56

Figura 4.12 - Perfil de travagem, aceleração e velocidade do automóvel que se desloca atrás do obstáculo

que trava bruscamente aos 1.7 segundos.

Figura 4.13 - Evolução da distância entre automóveis na situação em que o obstáculo trava bruscamente.

Observa-se que graças ao factor de segurança é possível manter uma distância de segurança

para obter um perfil de desaceleração que não envolva travar a fundo mesmo que o automóvel

da frente trave bruscamente.

4.4 Desempenho

Os testes de desempenho foram realizados para determinar a latência média necessária para

simular um determinado número de agentes. Foram também utilizados diferentes níveis de

maneira a distribuir uniformemente os agentes.

Os testes consistem na simulação isoladamente de cada tipo de agente, não existe simulação

conjunta porque como os peões e os automóveis não conseguem interagir, logo a latência da

simulação é igual a somar os testes anteriores.

0

10

20

30

40

50

60

70

80

0

5

10

15

20

25

0,2 0,9 1,6 2,3 3,0 3,7 4,4 5,1 5,8 6,5 7,2 7,9

Acelerador [%]

Velocidade [m/s]

Travão [%]

0

5

10

15

20

25

30

35

40

0,2 0,9 1,6 2,3 3,0 3,7 4,4 5,1 5,8 6,5 7,2 7,9

Tempo [s]

Distância entreautomoveis [m]

57

4.4.1 Simulação de Automóveis

Verifica-se que a latência da simulação dos automóveis num ambiente citadino progride

linearmente com número de automóveis usados. Os automóveis foram configurados com dois

tempos de reacção (latência dos sensores) diferentes (Figura 4.14), factor de segurança de 4 e

a distância de guarda de 2 metros.

Figura 4.14 - Latência média da simulação de automóveis com dois períodos de reacção distintos.

Verifica-se que o aumento do tempo de reacção contribui para diminuição da latência de

simulação. Contudo não é recomendado aumentar muito o tempo de reacção, porque devido

as alterações de direcção dos automóveis nos percursos, corre-se o risco dos agentes ou

elementos rodoviários não serem detectados a tempo, comprometendo a circulação segura.

4.4.2 Simulação de Peões

Realizou-se o mesmo tipo de simulação aos peões, definindo um conjunto de testes para dois

tempos de reacção (latência dos sensores) de 500 ms e 130 ms, observando-se uma diferença

notável entre as duas (Figura 4.15).

0

2

4

6

8

10

12

14

16

18

20

40 80 160 360 600 1100

Latê

nci

a d

a si

mu

laçã

o (

ms)

Número de automóveis

500ms

130ms

58

Figura 4.15 - Latência média da simulação dos peões.

Também é observável que os valores da latência obtidos na simulação dos automóveis são

similares aos peões, o que quer dizer que existe algo que é comum a ambos os agentes e

penaliza de forma similar a simulação. Verifica-se que a QuadTree está configurada para criar

as folhas de acordo com a velocidade máxima dos automóveis que é 120km/h, no caso dos

peões não é necessário tal tamanho para as folhas e ao reduzir a velocidade máxima para

40km/h, obtém-se um ganho significativo na simulação (Figura 4.16).

Figura 4.16 - Latência média da simulação dos peões com a QuadTree configurada para 40 km/h.

Se reduzir-se excessivamente o tamanho das folhas da árvore, aumenta o tempo necessário

para realizar as trocas de agentes entre folhas. As folhas devem ter um tamanho ideal para a

detecção segura dos agentes e o suficientemente grande para não gastar muito tempo nas

trocas de agentes.

0

2

4

6

8

10

12

14

16

40 80 160 360 600 1100

Latê

nci

a d

a si

mu

laçã

o (

ms)

Número de peões

500ms

130ms

0

0,5

1

1,5

2

2,5

3

3,5

4

40 80 160 360 600 1100

Latê

nci

a d

a si

mu

laçã

o (

ms)

Número de peões

500ms

130ms

59

4.5 Previsão da colisão

O mecanismo descrito por Craig W. Reynolds para a previsão da colisão é bastante útil para

identificar os potenciais pares de colisão, contudo no caso dos automóveis que circulam

restritos a um percurso rodoviário, pode criar alguns problemas na detecção incorrecta da

colisão.

A especificação diz que dados os vectores de posição e velocidade instantâneos, é possível

saber se existe colisão no futuro, só se os agentes não alterarem significativamente o seu

percurso. Como os automóveis deslocam-se sobre percursos com curvas, a sua trajectória

altera-se ao longo do tempo por isso este modelo deixa de funcionar correctamente (Figura

4.17).

B

A

Percursos rodoviários

Previsão de colisão

correcta

B

A

Percursos rodoviários

Previsão de colisão

incorrecta

Colisão Colisão

Figura 4.17 - Exemplo de um caso em que a previsão a colisão falha na simulação de automóveis.

Este problema afecta a simulação dos automóveis principalmente nas curvas e cruzamentos.

Nas curvas não é emitido a tempo a indicação previsão da colisão, o que faz com que os

automóveis não travem a tempo (Figura 4.18). Nos cruzamentos existem normalmente muitas

previsões falsas de colisões que levam a que os automóveis desloquem-se muito lentamente

(Figura 4.17).

B

A

Percurso rodoviário

Automóvel Imobilizado

Situação rodoviária

B

A

Espaço vectorial da

previsão a colisão

Não detecta colisão !

Figura 4.18 - Exemplo do problema da previsão a colisão nas curvas.

60

4.6 Controlo do acelerador

A equação de actualização do acelerador (11), considera que o automóvel deve acelerar

apenas quando a velocidade do veículo posterior for superior a sua. Contudo como esta

equação não considera a distância entre automóveis, surgem situações em que o automóvel

fica parado no meio da estrada a uma distância do veículo posterior muito superior a distância

de guarda (Figura 4.19).

Figura 4.19 - Captura de ecrã de uma situação em que o automóvel simulado fica imobilizado a uma

distância muito elevada do veículo posterior.

A equação (5) da dinâmica do movimento usada na simulação microscópica mostra que a

velocidade do carro depende da distância entre automóveis, quanto maior a distância, maior a

necessidade de aumentar a velocidade do automóvel (quando a velocidade do veiculo posterior

é nula).

61

5 Conclusão

Podemos concluir que para o desenvolvimento da simulação de um sistema rodoviário

realístico, é necessário um trabalho multidisciplinar para lidar com os diferentes atributos físicos

e comportamentos dos agentes. A maior dificuldade surge em mapear os processos mentais

humanos que são usados na condução dos automóveis.

Os comportamentos de condução descritos por Craig W. Reynolds são ainda muito úteis e

definem uma base crucial para a simulação com agentes, contudo é necessário especializar e

adaptar certos comportamentos para que sejam úteis às situações que surgem durante a

simulação.

O comportamento da previsão á colisão contribui muito para o controlo das acções dos

agentes, contudo como não considera a alteração da direcção do agente no instante de colisão

estimado, impossibilitando a circulação com segurança dos automóveis simulados. Os

condutores humanos usam processos mentais que permitem prever a sua posição e de outros

automóveis num instante próximo, mas tomam em conta a forma dos percursos, permitindo

antecipar correctamente o evento da colisão.

O controlador do travão foi uma das partes mais importantes e complexas do projecto não só

para o controlo do automóvel, mas para desenvolver um conjunto de expressões que serviram

para configurar a maneira como os agentes devem percepcionar o ambiente. Sem estas

expressões era impossível garantir que os agentes conseguissem percepcionar e controlar os

automóveis em segurança.

A estrutura adoptada na criação de diferentes comportamentos e sensores em classes cujas

funcionalidades fossem bem delineadas e delimitadas, permitiu escalar mais facilmente as

capacidades computacionais dos agentes. Esta estrutura permite até desligar ou ligar

comportamentos em função das necessidades de simulação, sem alteração significativa do

código.

A introdução de um condutor humano neste sistema é realizada mais facilmente em

comparação com os modelos micro e macroscópicos, contudo é necessário garantir que as

acções do condutor humano são traduzidas para alguns sensores e comportamentos, para que

os agentes que circulam autonomamente na simulação, também consigam interagir

correctamente com o jogador humano.

O modelo de simulação sub-microscópico é um campo muito pouco explorado que requer a

interacção das áreas das ciências computacionais, mecânicas, biológicas e psicológicas para

perceber as características de como o homem interage com o automóvel e o ambiente em seu

redor. Enquanto não forem conjugados toda estas ciências será impossível arranjar um modelo

correcto para o controlo de automóveis tanto no mundo virtual como no mundo real.

62

6 Trabalho Futuro

Para melhorar o funcionamento da detecção de agentes, prevenção á colisão e escalar a

simulação com o modelo de macroscópico, bastaria integrar a estrutura de células no

simulador, dado que estas permitem guardar referências para agentes e informações sobre o

fluxo de trânsito, assim as operações de pesquisa podem ser muito mais específicas e rápidas.

Melhorar o modelo de controlo do travão para evitar as oscilações no controlo dos pedais do

carro (Figura 4.6 e Figura 4.8), através de filtros passa baixo e reformulando o controlo da

escolha entre a decisão de acelerar e largar o acelerador.

Para evitar as situações em que o automóvel fica imobilizado a uma distância elevada em

relação ao automóvel posterior, seria importante adaptar o modelo matemático da dinâmica da

simulação microscópica no controlo do acelerador, de maneira a que os veículos se aproximem

mais nas situações de engarrafamento.

O código desenvolvido permite a execução em paralelo com o programa gráfico mas num só

processo, para garantir a execução correcta em múltiplos processos seria importante introduzir

alguns Mutex nos comportamentos que acedem aos dados de outros agentes. Apesar de os

acessos serem apenas de leitura ocorrem situações em que algumas referências podem deixar

de ser válidas durante a execução do comportamento.

A integração rodoviária dos peões com os automóveis pode ser realizada criando novos

comportamentos e sensores para estes agentes, de maneira a permitir que os peões circulem

nas passadeiras em segurança. A simulação do movimento dos peões pode ser melhorada

com a introdução dos obstáculos de velocidade finitos, para ajudar a resolver mais eficazmente

a evasão a colisão nas multidões.

A integração com bXporter para a criação de percursos rodoviários pode ser melhorada de

maneira a criar situações rodoviárias mais realísticas. Na versão anterior do bXporter usada no

CleanDrive era possível configurar atributos dos troços, cruzamentos e sinais luminosos no GUI

(Graphical User Interface) do Blender através dos scripts do bXporter.

Por fim para melhorar os modelos desenvolvidos e para torná-los mais realísticos seria

importante realizar capturas durante condução de automóveis em diversas situações

rodoviárias, usando o OBD (On-Board Diagnostics) para capturar o estado do automóvel,

sensores para capturar a actuação nos pedais, mudanças e direcção do automóvel, sensores

para capturar a aceleração e velocidade exacta do automóvel, câmaras de vídeo para capturar

a movimentação e alteração do campo visual do condutor (para perceber para onde o condutor

está a olhar), câmaras para capturar o ambiente rodoviário e finalmente sensores para captura

da inclinação do automóvel, altitude e posição global (GPS).

63

7 Bibliografia

Berg, J., Lin, M., & Manocha, D. (2008). Reciprocal Velocity Obstacles for Real-Time Multi-

Agent Navigation. Robotics and Automation, 2008, ICRA 2008. IEEE International

Conference on (pp. 1928-1935). IEEE.

Blelloch, G. E., Leiserson, C. E., Maggs, B., Plaxton, C., Smith, S., & Zagha, M. (1998). An

Experimental Analysis of Parallel Sorting Algoritms. Theory of Computing Systems,

Volume 31, Número 2.

Carpentier, M. P. (1993). Analise Numérica Teoria. In M. P. Carpentier, Analise Numérica

Teoria (pp. 201-202). Lisboa: Departamento de Matemática.

Erleben, K., Sporring, J., Henrikesen, K., & Dohlmann, H. (2005). Physics-Based Animation.

Hingham, Massachusetts: Charles River Media, INC.

Finkel, R., & Bentely, J. (1971). Quad trees a data structure for retrieval on composite keys.

Acta Informatica, Volume 4, Número 1.

Fiorini, P., & Shillert, Z. (1998). Motion Planning in Dynamic Environments using Velocity

Obstacles. International Journal of Robotics Research, 760-772.

Guy, S., Chhugani, J., Kim, C., Lin, M., Manocha, D., & Dubey, P. (2009). ClearPath : highly

parallel collision avoidance for multi-agent simulation. Proceedings of the 2009 ACM

SIGGRAPH/Eurographics Symposium on Computer Animation, 177-187.

Krajzewicz, D., Hertkorn, G., Wagner, P., & Rössel, C. (2002). SUMO (Simulation of Urban

MObility) - An open-source traffic simulation. Proceedings of the 4th Middle East

Symposium on Simulation and Modelling, 183-187.

M.J. Lighthill, G. W. (1955). On kinematic waves. II. A theory of traffic flow on long crowded

roads. Proceedings of Royal Society of London A229, (pp. 317-345).

Moore, A. W. (1991). An introduction Tutorial on Kd-Trees. Obtido em 18 de 10 de 2010, de

citeseerx: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.28.6468

Reynolds, C. W. (1987). Flock, Herds, and Schools : A Distributed Behavioral Model . ACM

SIGGRAPH '87 Conference Proceedings, (pp. 25-34). California.

Reynolds, C. W. (1999). Steering Behaviours for autonomous characters. Game Developers

Conference. San Jose, California.

Reynolds, C. W. (2006). Big fast crowds on PS3. SandBox '06: Proceedings of the 2006 ACM

SIGGRAPH symposium on Videogames (pp. 113-121). ACM.

64

Robert Bosch GmbH. (2002). Bosh Electronic Automotive Handbook 1.Edition . Robert Bosch

GmbH.

Serrarens, A., Dassen, M., & Steinbuch, M. (2004). Simulation and control of an automotive dry

clutch. American Control Conference, 2004. Proceedings of the 2004, 5, 4078-4083.

Sewall, J., Wilkie, D., Merrell, P., & Lin, M. C. (2010). Continuum Traffic Simulation. Computer

Graphics Forum, Volume 29, Issue 2, 439-448.

Verlet, L. (1967). Computer "experiments" on classical fluids. I. Thermodynamical properties of

Lennard-Jones molecules. Physical Review 159, 98-103.

65

8 Anexos

8.1 Conceitos

8.1.1 Nota introdutória

Os seguintes pontos demonstram algumas das bases matemáticas, físicas e mecânicas que

são necessárias ao desenvolvimento da simulação dos agentes, nomeadamente os

automóveis e peões.

Os pontos abordados incluem os métodos de integração numérica das equações diferenciais,

equações de Newton-Euler para a simulação física, os componentes mecânicos mais

relevantes para a simulação dos automóveis e as forças de atrito envolvidas.

8.1.2 Métodos de integração

Os métodos para resolução numérica de equações diferenciais ordinárias, permitem resolver

os casos em que não é possível a dedução da equação por via analítica ou utilizando métodos

de integração directos. Através da utilização de recursos computacionais é possível integrar

estas equações com algum erro associado ao processo, que pode variar em função da ordem

do integrador.

Dos métodos existentes para a resolução numérica destacam-se o Verlet (Verlet, 1967) e Euler

(Carpentier, 1993), que são computacionalmente leves e fáceis de implementar, sendo

bastante utilizados nos motores de simulação de física.

O método de Euler (18) é um integrador de primeira ordem, sendo o mais simples de

implementar, contudo é instável e pouco preciso.

(18)

O método de Verlet (19) é um integrador de segunda ordem, que é estável e permite simular

elementos físicos oscilantes como molas. A sua implementação é praticamente idêntica ao

método de Euler com a adição do termo de aceleração que confere a estabilidade e maior

precisão.

(19)

66

8.1.3 Equações de Newton-Euler

Para a simulação do movimento dos corpos rígidos utiliza-se as equações de Newton-Euler

(Erleben, Sporring, Henrikesen, & Dohlmann, 2005, p. 89) que descrevem a aceleração linear

(20) e angular (21).

(20)

( ) (21)

Através dos métodos numéricos de integração descritos anteriormente é possível integrar as

equações (20) e (21), para obter as velocidades numa primeira integração e a posição e

orientação, numa segunda integração.

8.1.4 Mecânica do Automóvel

8.1.4.1 Motor de combustão interna

O motor de combustão interna é simulado através de uma curva de binário que em função da

velocidade rotação do motor, disponibiliza um determinado binário que pode ser convertido em

força para o deslocamento do corpo rígido.

Na Figura 8.1 é representado uma curva típica de um motor a gasóleo usado num veículo

ligeiro do simulador de condução CleanDrive.

Figura 8.1 Curva de binário de um motor a gasóleo do projecto CleanDrive.

8.1.4.2 Embraiagem

Este elemento permite a engrenagem das mudanças sem que ocorra danos na caixa de

velocidades ou que o motor vá a baixo na situação de arranque. O funcionamento consiste em

dois pratos, um ligado ao veio principal do motor e outro a caixa de velocidades, que são

unidos ou separados em função da actuação do pedal da embraiagem. Contudo durante o

arranque do automóvel, só após algum tempo é que a diferença de velocidade entre os dois

0

50

100

150

200

70

10

0

13

0

16

0

19

0

22

0

25

0

28

0

31

0

34

0

37

0

40

0

43

0

46

0

48

0

Bin

ário

(N

.m)

RPM (x10)

67

pratos anula-se, devido a um factor de fricção que permite uma transição gradual do binário do

motor para o resto da transmissão.

Para a simulação é apenas necessário utilizar a embraiagem desde de que o veículo arranca

até que a velocidade entre os dois pratos se iguale. O modelo matemático da embraiagem

pode ser descrito pela equação (22) (Serrarens, Dassen, & Steinbuch, 2004), demonstrando a

relação de potência transmitida entre os dois pratos e a influência do rendimento da

embraiagem.

⇔ ⇔

(22)

8.1.4.3 Caixa de velocidades

A caixa de velocidades consiste em relações de conversão do binário e rotações para cada

mudança engrenada, estas permitem aproveitar de maneira mais eficiente o binário

disponibilizado pelo motor em função da velocidade a que o veiculo se desloca.

8.1.5 Forças de Atrito

Durante o deslocamento do automóvel existem forças que são aplicadas sobre o corpo deste e

que estão relacionadas com atrito do aerodinâmico, atrito de rolamento e a força da gravidade

(Robert Bosch GmbH, 2002). O estudo destas forças vai permitir definir de que maneira o

agente autónomo decide entre a acção de travar, libertar o acelerador e acelerar.

O atrito aerodinâmico (23) é relativo a deslocação do automóvel por um gás que é o ar, sendo

um valor proporcional ao quadrado da velocidade do automóvel.

(23)

O atrito de rolamento (24) é relativo a deformação do pneu do automóvel sobre a superfície da

estrada, sendo dependente da aceleração da gravidade e do factor de rolamento na superfície.

(24)

A força da gravidade (25) é dada pela inclinação do veiculo ( ).

( ) (25)

8.1.6 Distância de travagem

A distância de travagem de um automóvel consiste no espaço decorrido desde que o condutor

decide carregar no travão a “fundo” até que o automóvel fique completamente imobilizado.

Para determinar a distância usa-se uma representação simplificada de um corpo que se

desloca a uma determinada velocidade, sendo sujeito a uma força de atrito cinético resultante

do contacto com o chão.

68

Fg

Rn

Fa

Figura 8.2 – Demonstração das forças aplicadas num corpo em deslocamento sobre uma superfície.

O atrito cinético é directamente proporcional à reacção da força gravítica multiplicada por um

coeficiente de atrito (26).

,

,

| | | |,

(26)

Recorrendo a dedução do integral da força entre dois pontos que resulta no trabalho realizado

(Erleben, Sporring, Henrikesen, & Dohlmann, 2005, pp. 670-671), consegue-se resolver o

problema de maneira a determinar a distância de paragem (27).

( )

, ∫ ( )

,

∫ ( )

,

,

( )

(27)

Para simplificar os cálculos assume-se que , - , para que o produto interno possa

ser feito com um vector de deslocamento no eixo das abcissas, obtendo-se assim a

distância de travagem. Como o veículo ao chegar ao ponto está parado, então para ,

obtém-se a equação da distância de travagem (28).

( )

,

(28)

69

8.2 Funcionamento do simulador

O funcionamento global do programa de simulação rodoviário é descrito pelo fluxograma da

Figura 8.3. O programa começa por carregar o ficheiro de cena exportado a partir do Blender

com o bXporter, que vai servir de base para criar os caminhos e definir os elementos

rodoviários, posteriormente é criado a QuadTree e os agentes de acordo com os parâmetros

descritos no ficheiro de configuração da simulação.

Os agentes são criados sobre os percursos associados ao seu tipo, no caso dos peões é

introduzido alguma aleatoriedade na sua posição e orientação para tornar a simulação mais

realística. Os automóveis são criados sobre percursos que sejam maiores que o seu tamanho e

são orientados em função da direcção do percurso.

Carregar o ficheiro de cena com o

bXporter

Processar os percursos rodoviários

dos peões e veiculos

Criar os elementos rodoviários

Criar a QuadTree

Carregar os parâmetros da simulação

Criar os agentes

Correr a simulação num processo

separado.

Figura 8.3 - Fluxograma das etapas realizadas até a execução da simulação.

70

8.3 Execução do integrador de Euler

O integrador de Euler com passos adaptativos consegue acelerar a integração da equação (17)

dos atritos aplicados no automóvel, como é observado na Figura 8.3, em que o plano horizontal

representa as velocidades dos dois automóveis (cada divisão são 4km/h) e o eixo vertical

representa o tempo (4 segundos por divisão).

Integrador de Euler

Simples

Passo de 0.1

Integrador de Euler

com passos

adaptativos

µup=1.2, µdown=0.8

Erro Absoluto

Número máximo de

iterações : 36Número máximo de

iterações : 1000

Figura 8.4 - Comparação da execução do integrador de Euler com e sem passos adaptativos.

O erro máximo no calculo do tempo para a situação em que ambos os automóveis tem 120

km/h é de 20 segundos, é possível reduzir o erro aproximando mais o e o de 1 sendo

penalizado no número de iterações.

8.4 Referências e parâmetros

Existem alguns parâmetros e referências que são importantes mostrar e que permitem

corroborar o funcionamento dos travões e a especificação do tempo de reacção.

Para o cálculo da distância de travagem é necessário saber o coeficiente de atrito do pneu,

este depende da velocidade do veículo, condição da estrada e do próprio pneu. De acordo com

a informação descrita em (Robert Bosch GmbH, 2002) o atrito pode ser descrito pela Tabela 1.

Para efeitos da simulação o factor de atrito usado é 0.9.

71

Tabela 1 – Coeficientes de atrito do pneu do automóvel.

Velocidade do veículo

km/h

Condição do pneu.

Condição da estrada

Seca Molhada

(0.2mm de profundidade)

Molhada (1mm de

profundidade)

Poças de água (2mm)

Gelo

50 Novo 0.85 0.65 0.55 0.5 0.1

Velho 1 0.6 0.4 0.25

90 Novo 0.8 0.6 0.3 0.05

Velho 0.95 0.2 0.1 0.05

130 Novo 0.75 0.55 0.2 0

Velho 0.9 0.2 0.1 0

A distância de travagem depende também da desaceleração que é aplicada no automóvel, o

valor da desaceleração é proporcional a percentagem do travão pressionado (Figura 8.5)

(Robert Bosch GmbH, 2002), permitindo corroborar a equação da distância de travagem (28).

Figura 8.5 - Distância de travagem em função da desaceleração e factor de travagem.

Outro aspecto que afecta a simulação dos agentes é o tempo de reacção, este é descrito pela

Tabela 2 e varia em função de factores pessoais e factores “estranhos” (Robert Bosch GmbH,

2002). O tempo de reacção usado na simulação é 500ms e é usado como período de latência

nos sensores dos agentes.

72

Tabela 2 - Efeito de factores pessoais e estranhos no tempo de reacção.

Redução até 0.3s Aumento até 1.7s

Factores pessoais

Treinado, resposta reflexiva Inexperiente, resposta não

coordenada

Condutor hábil Condutor pouco hábil

Jovem Idoso

Antecipação Distracção

Estado físico e mental Problemas de saúde e Fatiga

Pânico e Álcool

Factores Estranhos

Estado do Tráfego Caminho familiar, fácil de

compreender, Caminho desconhecido, difícil

de compreender

Tipo de objecto percepcionado

Explicito, Conspícuo Equívoco, Inconspícuo

Localização do objecto percepcionado

Dentro do campo de vista No limiar do campo de vista

Disposição dos elementos de controlo

Distribuição lógica dos controlos mecânicos

Má lógica de distribuição dos controlos mecânicos