simulação rodoviária em tempo real para aplicações ... · circulação de automóveis e...
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.
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.
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
Í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
Nó
1
Nó
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).
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