• Nenhum resultado encontrado

Ambiente de simulação 3D para um veículo de condução autónoma

N/A
N/A
Protected

Academic year: 2021

Share "Ambiente de simulação 3D para um veículo de condução autónoma"

Copied!
94
0
0

Texto

(1)

Universidade de Aveiro Departamento deElectr´onica, Telecomunica¸c˜oes e Inform´atica, 2011

Ricardo Jorge

Silva Machado

Ambiente de simula¸

ao 3D para um ve´ıculo de

(2)
(3)

Universidade de Aveiro Departamento deElectr´onica, Telecomunica¸c˜oes e Inform´atica, 2011

Ricardo Jorge

Silva Machado

Ambiente de simula¸

ao 3D para um ve´ıculo de

condu¸

ao aut´

onoma

Disserta¸c˜ao apresentada `a Universidade de Aveiro para cumprimento dos requisitos necess´arios `a obten¸c˜ao do grau de Mestre em Engenharia de Computadores e Telem´atica, realizada sob a orienta¸c˜ao cient´ıfica do Prof. Dr. Artur Jos´e Carneiro Pereira e do Prof. Dr. Manuel Bernardo Salvador Cunha, Professores do Departamento de Electr´onica, Telecomunica¸c˜oes e Inform´atica (DETI) da Universidade de Aveiro

(4)
(5)

o j´uri / the jury

presidente / president Tom´as Ant´onio Mendes Oliveira e Silva

Professor Associado da Universidade de Aveiro

vogais / examiners committee Artur Jos´e Carneiro Pereira

Professor Auxiliar da Universidade de Aveiro (orientador)

Manuel Bernardo Salvador Cunha

Professor Auxiliar da Universidade de Aveiro (co-orientador)

Lu´ıs Paulo Gon¸calves dos Reis

(6)
(7)

agradecimentos / acknowledgements

´

E com muito gosto que aproveito esta oportunidade para agradecer aos meus pais pela confian¸ca que me depositaram ao longo dos anos.

Aos meus amigos, sempre prontos a ajudar, e aos professores Artur Pereira e Bernardo Cunha pela orienta¸c˜ao e apoio que me deram no decorrer do desenvolvimento desta disserta¸c˜ao.

(8)
(9)

Palavras-chave Rob´otica, Condu¸c˜ao Aut´onoma, Festival Nacional de Rob´otica, Simula¸c˜ao, 3D, Modela¸c˜ao

Resumo O software que controla um ve´ıculo de condu¸c˜ao aut´onoma ´e composto por um conjunto de algoritmos, cada um encarregue por um aspecto da condu¸c˜ao, e que juntos permitem que o ve´ıculo se movimente autonoma-mente num dado ambiente. Contudo, basta um erro para que tudo possa deixar de funcionar correctamente, e se crie uma situa¸c˜ao perigosa. A real-iza¸c˜ao de testes exaustivos ao software de controlo ´e assim essencial. Estes, contudo, exigem um ambiente de teste controlado, nem sempre dispon´ıvel, e podem estar limitados pelas caracter´ısticas do ve´ıculo ou por quest˜oes de seguran¸ca, entre outras. Para atenuar as dificuldades que resultam do uso de um ve´ıculo real para executar esses testes pretendeu-se, com este tra-balho, desenvolver um ambiente de simula¸c˜ao que permita simular o ve´ıculo e o ambiente que o rodeia. Este ambiente de simula¸c˜ao tenta emular o hard-ware utilizado no ve´ıculo real, o que implica emular os actuadores e sensores e a comunica¸c˜ao entre o hardware e o software. Esta abordagem, por sua vez, proporciona uma separa¸c˜ao clara entre a simula¸c˜ao e o software que est´a a ser testado, uma vez que este n˜ao sabe se est´a a interagir com o ve´ıculo real ou com o simulado. O segundo objectivo desta disserta¸c˜ao foi o de estudar a viabilidade de utiliza¸c˜ao de outros motores de f´ısica e lingua-gens de programa¸c˜ao para al´em dos que s˜ao normalmente utilizados nestes tipos de projectos.

O Departamento de Electr´onica, Telecomunica¸c˜oes e Inform´atica da Univer-sidade de Aveiro possui um grupo de trabalho focado no desenvolvimento de ve´ıculos e software para participa¸c˜ao nas provas de condu¸c˜ao aut´onoma do Festival Nacional da Rob´otica. O simulador foi desenvolvido para este grupo, de modo a facilitar a execu¸c˜ao de testes aos algoritmos usados no ve´ıculo para condu¸c˜ao aut´onoma, o que fez com que a modela¸c˜ao do am-biente de simula¸c˜ao se tenha baseado na pista usada nestas provas, e que os sensores e actuadores modelados sejam os usados no ve´ıculo real. Apesar do simulador n˜ao ter sido conclu´ıdo a tempo para ser usado nos testes do software de controlo de alto n´ıvel do ve´ıculo usado na edi¸c˜ao de 2011 do Festival Nacional da Rob´otica, foi usado posteriormente para analisar a causa de problemas l´a detectados. Tamb´em foi realizado algum trabalho na ´area de condu¸c˜ao aut´onoma para a camada de alto n´ıvel do ve´ıculo, que contribuiu para a obten¸c˜ao do terceiro lugar no Festival.

(10)
(11)

Keywords Robotics, Autonomous Driving, Portuguese Robotics Open, Simulation, 3D, Modeling

Abstract The software that controls an autonomous driving vehicle consists of a set of algorithms, each responsible for one aspect of driving, and together al-low the vehicle to move autonomously in a given environment. However, just one error is enough to make everything stop working properly, creating a dangerous situation. That is why the exhaustive testing of the control software is so essential. These tests, however, require a controlled environ-ment, not always available, and may be limited by the characteristics of the vehicle or for security reasons, among others. To alleviate the difficulties arising from the use of a real vehicle to run these tests it was intended, with this work, to develop a simulation environment that allows simulating the vehicle and the environment that surrounds it. This simulation tries to em-ulate the hardware used on the actual vehicle, which implies the emulation of the actuators and sensors and the communication between hardware and software. This approach, in turn, provides a clear separation between the simulation and software that is being tested, since it does not know if it is interacting with the real vehicle or with the simulated. The second objective of this dissertation was to study the viability of using other physics engines and programming languages other than those normally used in these types of projects.

The Department of Electronics, Telecommunications and Informatics at the University of Aveiro has a workgroup focused on developing software for ve-hicles and participating in the autonomous driving competition of the Por-tuguese Robotics Open. The simulator was developed for this workgroup in order to facilitate the testing of the algorithms used in the autonomous driving vehicle, which in turn made the modeling of the simulation environ-ment to be based on the track used in the competition, and the sensors and actuators to be modeled based on those used in the real vehicle.

Although the simulator was not completed in time to be used for testing for the 2011 edition of the Portuguese Robotics Open, it was used after to analyze the cause of the problems that existed in the high-level control. Also, some work was done in the high-level control of the vehicle, which helped achieve the third place.

(12)
(13)

Conte´

udo

Conte´udo i

Lista de Figuras iii

Lista de Tabelas v

1 Introdu¸c˜ao 1

1.1 Motiva¸c˜ao . . . 1

1.2 Objectivos . . . 2

1.3 Estrutura . . . 2

2 Condu¸c˜ao Aut´onoma 5 2.1 Festival Nacional de Rob´otica (FNR) . . . 6

2.1.1 Condu¸c˜ao Aut´onoma no FNR . . . 6

2.2 Projecto ROTA . . . 8

2.2.1 Arquitectura geral da plataforma ROTA . . . 9

2.2.2 Software de controlo de alto n´ıvel . . . 12

2.3 Modela¸c˜ao e simula¸c˜ao em condu¸c˜ao aut´onoma . . . 14

2.4 jMonkey . . . 16 2.4.1 Motor gr´afico . . . 16 2.4.2 Motor de F´ısica . . . 16 2.5 Sum´ario . . . 17 3 Simulador 19 3.1 Introdu¸c˜ao . . . 19 3.2 Modela¸c˜ao do ambiente . . . 20 3.2.1 Modela¸c˜ao da Pista . . . 20

3.2.2 Modela¸c˜ao dos elementos . . . 28

3.2.3 Luz e Sombra . . . 34 3.3 Modela¸c˜ao do ve´ıculo . . . 38 3.3.1 Comunica¸c˜ao . . . 38 3.3.2 Arquitectura geral . . . 40 3.3.3 Controlo . . . 42 3.3.4 Vis˜ao . . . 43

3.4 Interac¸c˜ao com a simula¸c˜ao . . . 45

3.4.1 Interface Gr´afica . . . 47

(14)

4 Resultados 51

4.1 Participa¸c˜ao no FNR 2011 . . . 51

4.1.1 Detec¸c˜ao de linhas da estrada . . . 51

4.1.2 Template matching eficiente . . . 52

4.1.3 Detec¸c˜ao de obst´aculos . . . 52

4.1.4 Conclus˜oes . . . 53 4.2 Tempos de execu¸c˜ao . . . 53 4.2.1 Cria¸c˜ao da pista . . . 54 4.2.2 Ciclo de execu¸c˜ao . . . 55 4.2.3 Comunica¸c˜ao TCP . . . 58 4.3 Precis˜ao do simulador . . . 59 4.4 Adaptabilidade do simulador . . . 64 5 Conclus˜oes 67 5.1 Conclus˜oes . . . 67 5.2 Trabalho Futuro . . . 68 Bibliografia 73

(15)

Lista de Figuras

2.1 Pista usada na prova de Condu¸c˜ao Aut´onoma . . . 6

2.2 Sinais indicados pelos sem´aforos . . . 7

2.3 Sinais de transito usados nas provas . . . 8

2.4 Plataformas usadas no Projecto ROTA. . . 9

2.5 Arquitectura geral da plataforma ROTA . . . 10

2.6 Subsistema de controlo de baixo n´ıvel da plataforma ROTA . . . 11

2.7 Arquitectura do software da plataforma ROTA . . . 12

2.8 Calculo da suspens˜ao no Bullet . . . 17

3.1 Representa¸c˜ao f´ısica e visual do carro . . . 20

3.2 Representa¸c˜ao da pista do FNR no simulador. . . 21

3.3 Pista do FNR dividida por sec¸c˜oes. . . 21

3.4 Programa de edi¸c˜ao da pista. . . 23

3.5 Ru´ıdo base . . . 25

3.6 Ru´ıdo aleat´orio . . . 25

3.7 C´alculo da ilumina¸c˜ao difusa . . . 26

3.8 Normal Mapping . . . 27

3.9 Convers˜ao de uma textura para um mapa de NormalMapping . . . 27

3.10 Fases de constru¸c˜ao da textura da pista . . . 28

3.11 Representa¸c˜ao do obst´aculo no simulador. . . 29

3.12 Representa¸c˜ao do parque de estacionamento no simulador. . . 30

3.13 Representa¸c˜ao da ´area de manuten¸c˜ao no simulador. . . 31

3.14 Representa¸c˜ao do t´unel no simulador. . . 32

3.15 Representa¸c˜ao do painel semaf´orico no simulador. . . 33

3.16 Representa¸c˜ao do sinal de transito no simulador . . . 34

3.17 Exemplo do diferentes tipos de luz existentes . . . 35

3.18 Conceito de Shadow Map . . . 36

3.19 Conceito de Shadow Volume . . . 37

3.20 Altera¸c˜oes necess´arias `a arquitectura actual do ROTA . . . 38

3.21 Camadas de abstrac¸c˜ao na interac¸c˜ao com o ve´ıculo simulado. . . 40

3.22 Modelo adoptado para mover e rodar objectos no simulador . . . 46

3.23 Interface gr´afica do simulador. . . 47

3.24 Janela de visualiza¸c˜ao 3D da interface gr´afica. . . 49

4.1 Impacto do n´umero de cˆamaras na performance . . . 56

(16)

4.3 An´alise pormenorizada do tempo gasto na 3a fase . . . 57

4.4 ROTA a percorrer o 1o Cen´ario . . . 60

4.5 ROTA a percorrer o 2o Cen´ario . . . 61

4.6 ROTA a percorrer o 3o Cen´ario . . . 61

4.7 ROTA a percorrer o 4o Cen´ario . . . 62

4.8 ROTA a percorrer o 5o Cen´ario . . . 63

4.9 Pista criada para o teste de adaptabilidade. . . 64

4.10 ROTA a percorrer a nova pista. . . 64

4.11 Ve´ıculo criado para o teste de adaptabilidade . . . 65

4.12 Novo ve´ıculo a percorrer a pista . . . 66

(17)

Lista de Tabelas

4.1 Requisitos m´ınimos do simulador . . . 54 4.2 Caracter´ısticas do port´atil de testes usado . . . 54

(18)
(19)

Cap´ıtulo 1

Introdu¸

ao

1.1

Motiva¸

ao

A fase de testes ´e uma das mais importantes fases no ciclo de desenvolvimento de qual-quer software. Alguns m´etodos de desenvolvimento de software encorajam a defini¸c˜ao de teste antes de escrever qualquer c´odigo, uma vez que permite definir exactamente qual ´e o comportamento de uma dado m´etodo, quais as entradas v´alidas e a sa´ıda esperada, sendo assim mais f´acil escrever c´odigo que obedece `as especifica¸c˜oes dadas. Os testes, quando de-vidamente estruturados e realizados, permitem demonstrar que o software est´a a funcionar como seria de esperar e isso d´a confian¸ca ao programador. Contudo, os testes nem sempre s˜ao f´aceis de executar, e nem sempre permitem recolher dados conclusivos ou obter uma conclus˜ao definitiva.

Isto manifesta-se em diversas situa¸c˜oes, em particular no desenvolvimento de software para um robot que se movimenta autonomamente. Devido a v´arios factores, como a fragilidade do robot, a dificuldade em moviment´a-lo ou o espa¸co necess´ario para realizar os testes, pode n˜ao ser poss´ıvel realizar todos os tipos de testes que se gostaria, e os que s˜ao poss´ıveis de realizar podem ser demorados e requerer a aten¸c˜ao total da pessoa encarregue por os realizar. Uma forma de ultrapassar estas dificuldades consiste em recorrer ao uso de um ambiente de simula¸c˜ao que permita simular o robot em quest˜ao e o ambiente onde este se movimenta. Essa abordagem apresenta uma s´erie de vantagens, tais como:

• Controlo sobre o tempo e espa¸co: uma vez que estamos num ambiente simulado temos controlo absoluto sobre o espa¸co, podendo alterar a posi¸c˜ao do robot sem esfor¸co, re-coloc´a-lo exactamente na mesma posi¸c˜ao para refazer testes, acelerar o tempo de modo a executar testes mais depressa, ou at´e mesmo reduzir o tempo de modo a analisar, passo a passo, a evolu¸c˜ao do comportamento do robot em cada momento. Isto liberta-nos do trabalho ´arduo de estar repetidamente a colocar o robot nas posi¸c˜oes certas para fazer os testes e esperar que o robot acabe a execu¸c˜ao para ir observar os ficheiros de log. • Redu¸c˜ao de custos: normalmente os robots utilizados em investiga¸c˜ao s˜ao prot´otipos,

´

unicos no mundo e bastante caros, estando a possibilidade de constru¸c˜ao de mais do que um normalmente fora de quest˜ao, e qualquer dano causado pode inutilizar o robot durante alguns dias, at´e ser arranjado. Na simula¸c˜ao podemos ter o n´umeros que quisermos de robots, com os sensores e actuadores simulados o mais sofisticadamente poss´ıvel, e sem ter medo de destruir o robot durante o processo de teste. A utiliza¸c˜ao de

(20)

um simulador tamb´em possibilita que os testes possam decorrer em qualquer s´ıtio, n˜ao sendo necess´ario que uma pessoa tenha acesso f´ısico ao robot para testar o seu software, e permitindo que v´arias pessoas testem em simultˆaneo, cada uma com o seu simulador. O IEETA participa desde 2001 na prova de condu¸c˜ao aut´onoma do Festival Nacional de Rob´otica, tendo j´a desenvolvido diversos ve´ıculos para participa¸c˜ao. O teste do software de controlo de alto n´ıvel ´e sempre uma tarefa ´ardua e muitas vezes imposs´ıvel de realizar em laborat´orio. A pista onde as provas se realizam tem dimens˜oes que impossibilitam o teste no laborat´orio com a pista real, sendo necess´ario esperar pelo evento para se fazerem os testes globais. A existˆencia de uma ambiente de simula¸c˜ao onde se pudessem recriar condi¸c˜oes semelhantes `as da competi¸c˜ao ´e uma mais-valia desejada.

1.2

Objectivos

Os objectivos principais desta disserta¸c˜ao desdobravam-se a dois n´ıveis. Por um lado, pretendia-se construir um ambiente de simula¸c˜ao que torne o processo de execu¸c˜ao de testes o mais simples e eficaz poss´ıvel. Por outro, participar na prova de condu¸c˜ao aut´onoma da edi¸c˜ao de 2011 do Festival Nacional de Rob´otica. O simulador em quest˜ao deveria permitir testar todos os componentes de software do robot, com o m´ınimo de altera¸c˜oes poss´ıveis e desejavelmente nenhumas. Deveria emular todo do hardware utilizado, criando um interface que permita a utiliza¸c˜ao do software de controlo tal como ´e usado no robot real. O simulador deveria ser flex´ıvel e configur´avel de modo a permitir facilmente usar pistas diferentes e mesmo ve´ıculos diferentes.

O desenvolvimento do ambiente de simula¸c˜ao deveria ter em considera¸c˜ao os seguintes aspectos:

• Pretende-se utilizar o simulador para testar algoritmos de vis˜ao. Portanto o simulador dever´a ser capaz de produzir imagens de elevado realismo de modo a emular a imagem produzida pelas cˆamaras reais.

• Num trabalho anterior sobre simula¸c˜ao [1], utilizou-se o ODE como motor de f´ısica. Neste simulador pretende-se utilizar o motor de f´ısica Bullet de modo a explorar a sua viabilidade em rela¸c˜ao ao mais popular ODE.

• Fornecer uma interac¸c˜ao com o ambiente de simula¸c˜ao simples e intuitiva.

A um segundo n´ıvel, o elemento que abra¸casse este projecto faria parte integrante da equipa do IEETA que iria participar na prova de condu¸c˜ao aut´onoma da edi¸c˜ao de 2011 do Festival Nacional de Rob´otica. Nesse sentido, teria que se envolver na prepara¸c˜ao da partic-ipa¸c˜ao. Visto que o Festival decorreria a meio da disserta¸c˜ao, isso significaria uma interrup¸c˜ao no trabalho com o ambiente de simula¸c˜ao para um envolvimento com o desenvolvimento do software de controlo aut´onomo do ve´ıculo. No entanto, esta experiˆencia com o robot real traria uma mais profunda consciˆencia da importˆancia do ambiente de simula¸c˜ao.

1.3

Estrutura

(21)

Cap´ıtulo 2 - Condu¸c˜ao Aut´onoma - Neste capitulo ser´a apresentada uma vis˜ao geral sobre a condu¸c˜ao aut´onoma e sobre o ve´ıculo desenvolvido para participar na prova de condu¸c˜ao aut´onoma do Festival Nacional de Rob´otica, sobre a qual esta disserta¸c˜ao se ir´a focar. Ser´a tamb´em discutida as necessidades de simula¸c˜ao para o ambiente em quest˜ao, e a solu¸c˜ao encontrada tendo em considera¸c˜ao os requisitos impostos.

Capitulo 3 - Simulador - Neste cap´ıtulo ser´a descrito em pormenor todo o desenvolvi-mento do ambiente de simula¸c˜ao, incluindo a simula¸c˜ao do ve´ıculo, do ambiente onde este se encontra, e a interac¸c˜ao do utilizador com a simula¸c˜ao.

Cap´ıtulo 4 - Resultados - Neste cap´ıtulo ser˜ao discutidos os resultados obtidos, os testes implementados para obter a precis˜ao do simulador em rela¸c˜ao `a realidade, o tempo de execu¸c˜ao de v´arios aspectos da simula¸c˜ao, e a adaptabilidade do simulador a novos tipos de ve´ıculos e cen´arios. Ser´a ainda apresentado o trabalho desenvolvido para o ve´ıculo aut´onomo, e como este trabalho influenciou v´arios aspectos no desenvolvimento do simulador.

Cap´ıtulo 5 - Conclus˜oes - Finalmente neste cap´ıtulo ser˜ao discutidos os resultados obtidos e ser˜ao apresentadas sugest˜oes de trabalho futuro.

(22)
(23)

Cap´ıtulo 2

Condu¸

ao Aut´

onoma

A maioria dos acidentes na estrada s˜ao causados por erro humano [2], seja por excesso de velocidade, desrespeito pelos sinais de trˆansito, ´alcool ou outras drogas, cansa¸co, sono, distrac¸c˜oes, ou muitas outras raz˜oes. A verdade ´e que `a medida que o n´umero de ve´ıculos a circular na estrada aumenta, tamb´em o n´umero de acidentes aumenta, e tudo isto seria evit´avel se existisse algo que conduzisse por n´os quando fosse necess´ario, algu´em que n˜ao se cansasse, n˜ao se distra´ısse, que consiguisse tomar decis˜oes em frac¸c˜oes de segundo, algu´em como um computador. Este ´e o objectivo da condu¸c˜ao aut´onoma: criar um ve´ıculo que conduza sozinho, em qualquer tipo de terreno, rural ou urbano, e que consiga ultrapassar qualquer desafio, garantindo a seguran¸ca dos passageiros, e acima de tudo que consiga ir de A para B autonomamente.

Este futuro est´a pr´oximo. O primeiro ve´ıculo aut´onomo foi criado em 1977, no Laborat´orio de Engenharia Mecˆanica Tsukuba no Jap˜ao, e era capaz de seguir linhas brancas, como aquela que existem na estrada, a uma velocidade m´axima de 30 km/h. Actualmente j´a se comercializam ve´ıculos que estacionam sozinhos, controlam a distˆancia ao ve´ıculo da frente, etc. O interesse despertado por esta ´area junto dos investigadores, os quais tˆem tido cada vez mais sucesso no desenvolvimento de um ve´ıculo que consiga um dia conduzir em qualquer ambiente, faz com que seja apenas uma quest˜ao de tempo at´e que os primeiros carros que consigam conduzir autonomamente estejam dispon´ıveis comercialmente.

S˜ao v´arios os projectos e eventos internacionais que tˆem sido lan¸cados no sentido de promover a investiga¸c˜ao na ´area da condu¸c˜ao aut´onoma. Em 1980 a DARPA (Defense Ad-vanced Research Projects Agency) criou o ALV (Autonomous Land Vehicle) que foi o primeiro ve´ıculo a conseguir conduzir autonomamente numa estrada com uma velocidade de 30km/h, usando para isso radares laser, vis˜ao processada por computador e um mecanismo de controlo rob´otico [3]. Mais recentemente esta agˆencia promoveu o DARPA Grand Challenge, uma competi¸c˜ao que decorreu em 2004 e 2005 com o objectivo de promover o desenvolvimento na ´

area da condu¸c˜ao aut´onoma. Em 1987 o EUREKA Prometheus Project foi o maior projecto de investiga¸c˜ao e desenvolvimento para o objectivo de obter um carro que conduza sozinho, tendo sido suportado por fundos europeus [4]. Desde 1987 a 1994 este projecto desenvolveu v´arios prot´otipos de ve´ıculos de condu¸c˜ao aut´onoma, de entre os quais o ViTA (Vision Tech-nology Application) e o VaMP se destacam.

Em Portugal, o Festival Nacional de Rob´otica tem, desde a sua origem, promovido a investiga¸c˜ao nessa ´area, atrav´es de uma competi¸c˜ao em condu¸c˜ao aut´onoma. A Universidade de Aveiro, institui¸c˜ao co-promotora da cria¸c˜ao do Festival, tem participado activamente nessa

(24)

competi¸c˜ao com equipas oriundas de v´arios dos seus departamentos. Uma dessas equipas pertence ao IEETA, no ˆambito do qual esta disserta¸c˜ao foi desenvolvida.

No resto deste cap´ıtulo ir-se-´a apresentar uma descri¸c˜ao do Festival Nacional de Rob´otica (FNR), com particular destaque da prova de condu¸c˜ao aut´onoma. A seguir descrever-se-´a o projecto ROTA, projecto em desenvolvimento no IEETA focado na condu¸c˜ao aut´onoma e que tem participado no Festival. Finalmente, falar-se-´a um pouco sobre modela¸c˜ao e simula¸c˜ao em condu¸c˜ao aut´onoma, descrevendo-se o jMonkey, ferramenta usada para construir uma ambiente de simula¸c˜ao dos ve´ıculos do projecto ROTA.

2.1

Festival Nacional de Rob´

otica (FNR)

O Festival Nacional de Rob´otica (FNR) ´e actualmente uma iniciativa da Sociedade Por-tuguesa de Rob´otica, originalmente criada por alguns docentes das Universidades de Aveiro, Minho e Instituto Superior T´ecnico. Tem como objectivo promover o encontro entre entidades e pessoas que em Portugal se dedicam `a rob´otica e promover o desenvolvimento na ´area da rob´otica atrav´es de competi¸c˜oes rob´oticas e de um encontro cient´ıfico.

De entre as v´arias competi¸c˜oes existentes no FNR destaca-se aqui a prova de condu¸c˜ao aut´onoma, pela importˆancia que tem para o trabalho desenvolvido no ˆambito desta dis-serta¸c˜ao.

2.1.1 Condu¸c˜ao Aut´onoma no FNR

Figura 2.1: Pista usada na prova de Condu¸c˜ao Aut´onoma, com 14x9 metros de dimens˜ao real.

(25)

a b c

d e

Figura 2.2: Sinais indicados pelos sem´aforos (a) parar na passadeira; (b) seguir para a es-querda; (c) seguir em frente; (d) ir para o parque de estacionamento; e (e) fim da prova.

A prova de Condu¸c˜ao Aut´onoma ”representa um desafio t´ecnico no qual um robˆo m´ovel e aut´onomo deve percorrer um percurso ao longo de uma pista fechada, que apresenta semel-han¸cas marcantes com a condu¸c˜ao de um ve´ıculo autom´ovel numa estrada convencional. A pista utilizada tenta reproduzir, em certa medida, um cen´ario real, embora a competi¸c˜ao decorra num ambiente estruturado. A pista, em formato de 8, simula uma estrada com duas vias `a qual foram adicionados uma passadeira com um par de pain´eis semaf´oricos (um em cada sentido), um t´unel, uma zona de obras, um obst´aculo e uma ´area de estacionamento com dois lugares em que um deles est´a ocupado. A posi¸c˜ao do obst´aculo na pista, a localiza¸c˜ao exacta da ´area de estacionamento e a posi¸c˜ao livre nessa ´area s˜ao dados desconhecidos para o robˆo no in´ıcio da sua prova”[5]. A figura 2.1 ilustra a forma da pista da prova e os seus v´arios elementos.

A prova ´e composta por 3 fases (mangas), cada uma com um n´ıvel de dificuldade acrescido [6]. Em todas as fases os robˆos partem da passadeira ap´os o reconhecimento do sinal ”seguir em frente”exibido no painel semaf´orico e percorrem autonomamente a pista executando duas voltas completas. A primeira fase apenas exige que o robot reconhe¸ca correctamente o sinal exibido no painel semaf´orico e que execute as duas voltas sem sair da pista, no menor tempo poss´ıvel.

A segunda fase j´a exige que o robot seja capaz de identificar um de 5 sinais diferentes (Figura 2.2) exibidos pelo painel semaf´orico e que reaja em conformidade. Alem dos sinais, o robot tamb´em deve ser capaz de identificar e de se desviar de v´arios obst´aculos que ocupam uma das faixas de rodagem e cuja posi¸c˜ao na pista ´e desconhecida at´e ao in´ıcio da prova.

Finalmente, na terceira fase s˜ao adicionados mais dois desafios aos j´a existentes: um t´unel que cobre uma parte do caminho e uma zona de obras. O t´unel tem como objectivo alterar as condi¸c˜oes de luz, alterando a forma como o robot navega. A zona de obras ´e um desvio do percurso inicial que ´e desconhecido a priori. O novo percurso ´e marcado atrav´es de cones coloridos, unidos atrav´es de uma fita de pl´astico. Nesta zona, o robot deve deixar a faixa inicial, seguir pelo novo caminho sem tocar em qualquer dos elementos que o delimita e reentrar na pista onde a zona de obras termina.

No final da segunda e terceira fases o robot ter´a que, autonomamente, localizar e estacionar no parque de estacionamento ap´os o fim da prova. Este parque cont´em dois lugares para estacionar, sendo que um deles est´a obstru´ıdo por um obst´aculo, o que obriga ao robot a

(26)

Figura 2.3: Sinais de transito usados nas provas. Cada sinal ´e identificado por um n´umero (1 ou 2) e um grupo (perigo, obrigat´orio ou informativo).

identificar qual o lugar que est´a livre e a estacionar l´a.

Nas trˆes fases existem sinais de trˆansito situados nas margens da pista, cuja posi¸c˜ao exacta ´e desconhecida, e onde a correcta detec¸c˜ao destes sinais pelo carro proporciona b´onus. Existem ao todo seis sinais de trˆansito (Figura 2.3), dois de perigo (triangulares), dois obrigat´orios (circulares) e dois informativos (quadrados).

2.2

Projecto ROTA

Desde 2001, o primeiro ano em que decorreu o FNR, que o DETI/IEETA participa na prova de condu¸c˜ao aut´onoma do FNR, tendo obtido 3 primeiros lugares, 1 segundo e 3 ter-ceiros. Foram v´arias as plataformas rob´oticas usadas na participa¸c˜ao. Dessas plataformas destacam-se aqui as duas mais recentes, o ROTA a o Zinguer (ver figura 2.4), actualmente usadas no Projecto ROTA para desenvolvimento, apresenta¸c˜oes e participa¸c˜ao em provas. O ROTA nasceu em 2006, ano em que a pista usada na competi¸c˜ao sofreu altera¸c˜oes profundas, passando a ter duas faixas de rodagem. Em 2008, foi desenvolvida uma vers˜ao melhorada, o RatoZinguer, posteriormente abreviado para zinguer. S˜ao estas plataformas que est˜ao asso-ciadas ao trabalho aqui apresentado.

(27)

(a) ROTA (2006) (b) RatoZinguer (2008)

Figura 2.4: Plataformas usadas no Projecto ROTA.

Ambas as plataformas s˜ao do tipo ”triciclo”, com uma roda motriz e duas rodas direc-cionais, e ambas tˆem uma arquitectura semelhante. A cria¸c˜ao do RatoZinguer deveu-se `a existˆencia de v´arias lacunas detectadas na arquitectura do ROTA. O ROTA utilizava uma solu¸c˜ao baseada em SBC (Single Board Computer ) para a camada de alto n´ıvel, que difi-cultava o processo de teste e debugging do software, devido `a falta de monitor e teclado. A vers˜ao RatoZinguer foi constru´ıda de modo a incluir espa¸co para um port´atil, que n˜ao s´o facilita o processo de upgrading do hardware caso seja necess´ario — basta substituir o port´atil — como resolve o problema de visualiza¸c˜ao e interac¸c˜ao com o software, gra¸cas ao monitor/teclado/rato embutido no port´atil. O ROTA tamb´em possu´ıa uma grave falha de constru¸c˜ao: a distˆancia do seu chassis em rela¸c˜ao ao ch˜ao era t˜ao reduzida que, em algumas provas, onde o ch˜ao tinha relevos e imperfei¸c˜oes, o ve´ıculo colidia com os relevos e mudava de traject´oria ou parava completamente.

2.2.1 Arquitectura geral da plataforma ROTA

A arquitectura geral da plataforma ROTA pode ser dividida em 4 subsistemas principais, nomeadamente controlo de alto n´ıvel, sistema de vis˜ao, controlo de baixo n´ıvel e camada mecˆanica (ver figura 2.5).

(28)

(a) (b)

Figura 2.5: Arquitectura geral da plataforma ROTA: (a) Diagrama de blocos; (b) localiza¸c˜ao no ve´ıculo[7].

Subsistema mecˆanico

A estrutura mecˆanica da plataforma ROTA ´e constitu´ıda por uma base onde est˜ao im-plantados um sistema de locomo¸c˜ao do tipo Ackermann, dois sensores de obst´aculos, dois sensores de ch˜ao, dois f´arois e duas baterias.

O sistema de locomo¸c˜ao ´e em forma de triciclo, com uma roda motriz `a tr´as, comandada por um motor, e duas rodas direccionais `a frente, comandadas por um ´unico servo-motor. A rota¸c˜ao do motor e a posi¸c˜ao do servo-motor s˜ao controlados pelo subsistema de controlo de baixo n´ıvel.

Os sensores de obst´aculos est˜ao posicionados na frente de modo a detectar a existˆencia de obst´aculos no seu caminho. A detec¸c˜ao ´e feita com base num feixe de luz infra-vermelho que ´e reflectivo no obst´aculo, sendo esta reflex˜ao colhida por uma lente no sensor que permite calcular a distˆancia do sensor ao obst´aculo.

O sensor de ch˜ao consiste num par emissor/receptor de infra-vermelhos colocados na frente do robot que detectam superf´ıcies reflectoras de infra-vermelhos. S˜ao usados para detec¸c˜ao de sa´ıdas da pista ou passagem pela passadeira. Estes sensores aproveitam o facto do ch˜ao da pista ser preto e absorver infravermelho, enquanto que as linhas delimitadoras s˜ao brancas e reflectem infravermelhos.

Subsistema de controlo de baixo n´ıvel

O controlo de baixo n´ıvel serve como middleware entre a camada de alto n´ıvel e a camada mecˆanica, proporcionando a quem est´a a desenvolver o software de controlo de alto n´ıvel uma interface simples para a interac¸c˜ao com o robot. A comunica¸c˜ao entre as duas camadas ´e feita atrav´es da troca de tramas de informa¸c˜ao enviadas por uma porta s´erie. No sentido descendente seguem as mensagens de actua¸c˜ao, dirigidas ao motor e servo-motor do sistema de locomo¸c˜ao, e as de controlo dos far´ois. No sentido ascendente seguem as mensagens de conte´udo sensorial, nomeadamente dados de odometria, estado dos sensores de obst´aculos, estado dos sensores de ch˜ao e carga das baterias.

Cada trama ´e codificada numa sequˆencia ASCII, respeitando o formato $XXXXYY· · · YY&ZZ#

(29)

sendo

$ o s´ımbolo de in´ıcio de trama;

XXXX uma palavra de 16 bits, codificada em 4 d´ıgitos hexadecimais ASCII, que iden-tifica o tipo da mensagem;

YY· · · YY o campo informativo da mensagem, com um n´umero vari´avel de pares YY, cada um representando um byte de informa¸c˜ao codificado em hexadecimal ASCII; & o s´ımbolo de fim de informa¸c˜ao;

ZZ o checksum da mensagem, codificado em hexadecimal ASCII; e # o s´ımbolo de fim da trama.

O subsistema de baixo n´ıvel est´a estruturado em n´os de processamento baseados em micro controladores e interligados numa rede CAN (Controller Area Network). O diagrama geral pode ser visto na figura 2.6. Estes n´os s˜ao respons´aveis pelo controlo da camada mecˆanica, nomeadamente controlo do motor da roda de trac¸c˜ao, controlo do servo-motor da direc¸c˜ao, recolha de dados odom´etricos, actua¸c˜ao dos diferentes far´ois do carro e monitoriza¸c˜ao das baterias. Um n´o especial funciona como gateway entre a rede CAN e o subsistema de con-trolo de alto n´ıvel. Este n´o ´e respons´avel pelo processamento das tramas do protocolo de comunica¸c˜ao.

Figura 2.6: Subsistema de controlo de baixo n´ıvel da plataforma ROTA [8] Subsistema de vis˜ao

Existem duas cˆamaras Firewire (IEEE 1394) montadas no topo do robot, respons´aveis por recolher informa¸c˜ao visual do mundo e que formam o sistema de vis˜ao. Uma das cˆamaras ´e usada para ver a faixa de rodagem e os objectos que l´a se encontram. Est´a montada no centro do carro com alguma eleva¸c˜ao e apontada para a estrada de modo a captar a maior quantidade de informa¸c˜ao poss´ıvel. A segunda cˆamara ´e usada para ver o painel sinal´ectico que funciona como sem´aforo [9]. Est´a montada segundo um ˆangulo espec´ıfico de modo a que quando o robot est´a parado na passadeira, o painel sinal´etico que est´a suspenso seja perfeitamente vis´ıvel.

Ambas as cˆamaras s˜ao configuradas para uma capta¸c˜ao a 30 frames por segundos e com uma resolu¸c˜ao de 320 por 240 pix´eis, utilizando o formato YUV444.

(30)

Figura 2.7: Arquitectura do software da plataforma ROTA

Subsistema de controlo de alto n´ıvel

Um sistema computacional montado no topo robˆo, ao qual se ligam o subsistema de vis˜ao e o subsistema de controlo de baixo n´ıvel, ´e respons´avel pelo controlo de alto n´ıvel do robˆo. Na vers˜ao mais recente da plataforma rob´otica, o ve´ıculo zinguer, este sistema ´e um port´atil a correr linux.

Esta camada ´e respons´avel por recolher informa¸c˜ao das cˆamaras e do subsistema de con-trolo de baixo n´ıvel, processar essa informa¸c˜ao, tomar uma decis˜ao com base nela, e enviar comandos para o sistema de trac¸c˜ao e de direc¸c˜ao do ve´ıculo de modo a controlar o seu movimento.

2.2.2 Software de controlo de alto n´ıvel

A arquitectura do software usada baseia-se num modelo composto por trˆes entidades: Percep¸c˜ao, Modelo do mundo e Decis˜ao e Ac¸c˜ao (Figura 2.7). A Percep¸c˜ao ´e respons´avel por recolher e pr´e-processar a informa¸c˜ao vinda dos sensores. Esta entidade recebe a informa¸c˜ao em bruto e processa-a de forma a retirar os dados relevantes para as pr´oximas entidades. O Modelo do mundo, usando a informa¸c˜ao recebida da percep¸c˜ao, tenta manter uma caracter-iza¸c˜ao actual do mundo onde o robot se insere adequada `a tomada de decis˜oes e actua¸c˜oes. Finalmente o bloco de Decis˜ao e Ac¸c˜ao, com base na descri¸c˜ao actual do mundo, escolhe e executa a melhor ac¸c˜ao consoante a situa¸c˜ao, enviando comandos para a camada de controlo de baixo n´ıvel.

(31)

Modelo do Mundo

O mundo do robot ´e constitu´ıdo por uma pista e pelo robot inserido nessa pista. A pista ´e definida como uma malha interligada de tro¸cos (sec¸c˜oes de pista), cada um com uma geometria bem definida. Trata-se de uma abordagem topol´ogico-geom´etrica [10]. A estrutura base da pista ´e assumida como sendo conhecida e ´e fornecida ao software atrav´es de um ficheiro de configura¸c˜ao [11].

Para al´em do robot que nela se movimenta, e cuja localiza¸c˜ao ´e preciso conhecer, v´arios outros elementos podem povoar a pista. Um ou mais obst´aculos — parelip´ıpedos de cor verde — podem ser colocados sobre as faixas de rodagem, dificultando a movimenta¸c˜ao do robot. Cones indicadores de zona de obras podem ser colocados na pista, definindo uma zona de rodagem fora da definida pelos riscos brancos delimitadores. Um sem´aforo, colocado sobre a passadeira, afixa um sinal que condiciona a forma como o ve´ıculo se deve deslocar.

Usando como mat´eria-prima a informa¸c˜ao vinda da Percep¸c˜ao, o bloco de Modelo do mundo tem de manter actualizada, tanto quanto poss´ıvel, a caracteriza¸c˜ao do mundo, ofer-ecendo ao m´odulo de Ac¸c˜ao uma vis˜ao coerente e simples do mundo. Esta fun¸c˜ao ´e obtida atrav´es do uso de integradores. Actualmente existem 3 tipos de integradores:

• O Integrador de Sinais tem como objectivo identificar adequadamente o sinal de trˆansito apresentado pelo sem´aforo. Com base na localiza¸c˜ao do ve´ıculo na pista define a regi˜ao de imagem que deve ser analisada pelo perceptor de sinais. Por outro lado, evita a ocorrˆencia de falsas identifica¸coes, considerando que a detec¸c˜ao de um sinal apenas ocorre quando este foi detectado n vezes consecutivas.

• O Integrador de Obst´aculos ´e respons´avel por localizar os obst´aculos na pista. Fil-trando as detec¸c˜oes de obst´aculos feitas pelo m´odulo de percep¸c˜ao, tenta estimar o mais fielmente poss´ıvel as suas localiza¸c˜oes na pista. mas neste caso para a detec¸c˜ao de obst´aculos.

• O Integrador de Localiza¸c˜ao O estado do ve´ıculo contempla, entre outros atributos, a sua localiza¸c˜ao na pista e num tro¸co. O papel deste integrador ´e determinar estas localiza¸c˜oes. Para isso usa os dados vindos da percep¸c˜ao relativos `a odometria e `a localiza¸c˜ao dos riscos delimitadores da faixa de rodagem e o conhecimento existente relativo `a configura¸c˜ao da pista.

Toda a informa¸c˜ao ´e armazenada numa mem´oria partilhada (RTDB) acess´ıvel a todas as entidades, onde cada entidade pode ler e escrever sem haver problemas de concorrˆencia no acesso `a informa¸c˜ao.

Percep¸c˜ao

Como referido atr´as, o bloco de percep¸c˜ao ´e respons´avel pela recolha e pr´e-processamento dos dados produzidos pelos sensores. Pode-se considerar este blocos dividido nos seguintes perceptores:

• O Perceptor da Pista usa a frame de imagem da cˆamara de estrada para localizar pon-tos pertencentes aos riscos delimitadores das faixas de rodagem. Estes ponpon-tos, fornecidos em coordenadas do mundo, s˜ao usados pelo Integrador de Localiza¸c˜ao para localizar o ve´ıculo na pista. S˜ao usadas t´ecnicas de segmenta¸c˜ao e an´alise de imagem de modo a

(32)

localizar na imagem as linhas da estrada e. com essa informa¸c˜ao, obter a distˆancia real do carro em rela¸c˜ao a estas.

• O Perceptor de Sinais usa a imagem da cˆamara de sinal para, usando Template Matching[12], identificar qual o sinal mostrado no painel sinal´etico.

• Atrav´es do subsistema de controlo de baixo n´ıvel s˜ao recebidos os dados sensoriais relativos `a odometria, aos sensores de obst´aculos e aos sensores de ch˜ao. O Baixo N´ıvel ´e respons´avel por tratar as mensagens que transportam esses dados.

Decis˜ao e Ac¸c˜ao

Com base na caracteriza¸c˜ao do mundo (posi¸c˜ao do ve´ıculo na pista, sinal afixado no painel semaf´orico e obst´aculos existentes na pista) o bloco de Decis˜ao e Actua¸c˜ao decide qual a melhor estrat´egia para ultrapassar os desafios existentes e completar a pista. Esta decis˜ao ´e efectuada com base num modelo de trˆes camadas.

• Ao mais alto n´ıvel, o Decisor tem como principal objectivo escolher o papel a desem-penhar pelo robot. Esse papel est´a relacionado com a pista onde o robot se est´a a movimentar.

• O Papel ´e basicamente uma m´aquina de estados, onde cada estado representa um determinado comportamento que o robot deve executar para completar a pista. A mudan¸ca de estados ocorre em determinadas etapas da pista de modo a responder a cada desafio existente, como por exemplo, o estado “passar pelo t´unel”, que implica ligar os far´ois para se poder ver a estrada, “esperar pelo sinal”, que implica ficar parado na passadeira at´e que o sinal mude para verde, entre v´arios outros.

• Ao mais baixo n´ıvel est˜ao os comportamentos b´asicos de movimenta¸c˜ao do ve´ıculo (ca-mada Comportamento). Existem actualmente trˆes comportamentos implementados: um que p´ara o robot, outro que conduz mantendo uma determinada distˆancia constante `

a linha central da estrada, e finalmente o ´ultimo que segue um caminho definido por pontos de passagem colocados no mundo [13].

Da execu¸c˜ao do comportamento resultam ordens de actua¸c˜ao sobre a direc¸c˜ao e trac¸c˜ao do ve´ıculo.

2.3

Modela¸

ao e simula¸

ao em condu¸

ao aut´

onoma

A simula¸c˜ao n˜ao ´e uma ´area nova, tendo sido utilizada ao longo dos tempos, maioritari-amente em cen´arios de guerra e conflito. Actualmente ´e usada em v´arias ´areas distintas que v˜ao desde a medicina at´e `as ciˆencias sociais [14]. Simula¸c˜ao ´e um conceito que engloba 4 conceitos fundamentais, modela¸c˜ao, simula¸c˜ao, visualiza¸c˜ao e an´alise, e ´e usada para obter conhecimento, validar modelos e experiˆencias, treinar humanos, fornecer suporte `a an´alise estat´ıstica, controlar processos em tempo real, prever potenciais resultados, testar e avaliar novos sistemas, e suporte a analises “what-if”.

Praticamente qualquer ´area pode usufruir das vantagens que a utiliza¸c˜ao de uma simula¸c˜ao oferece. Destacam-se a seguir algumas dessas vantagens:

(33)

• habilidade de escolher correctamente cada altera¸c˜ao ao sistema, testando todos os as-pectos de uma proposta de mudan¸ca sem comprometer recursos adicionais;

• comprimir e expandir tempo para permitir ao utilizador acelerar ou retardar compor-tamentos ou fen´omenos de modo a facilitar avalia¸c˜ao em profundidade;

• explorar possibilidades no contexto de pol´ıticas, procedimentos operacionais e m´etodos, sem perturbar o sistema real;

• diagnosticar problemas percebendo a interac¸c˜ao entre vari´aveis que fazem parte do sistema;

• desenvolver uma compreens˜ao do sistema observando como este opera em vez de prever como iria operar;

• investir de forma inteligente porque um estudo baseado num simulador tem um custo menor em rela¸c˜ao ao custo de mudar ou alterar o sistema actual.

Modelo ´e a representa¸c˜ao ou aproxima¸c˜ao de um evento ou objecto, real ou fict´ıcio. Sim-ula¸c˜ao ´e a imita¸c˜ao de uma opera¸c˜ao de um processo ou sistema ao longo do tempo, ou seja, a execu¸c˜ao do modelo num intervalo de tempo.

Ao construir-se uma vers˜ao virtual do mundo real, ´e essencial que se encontre uma maneira de o descrever utilizando um modelo matem´atico ou simb´olico que possa ser codificado em software. Com o objectivo de encontrar este modelo ´e necess´ario um processo de aquisi¸c˜ao de dados e an´alise do modelo em quest˜ao. O processo de aquisi¸c˜ao de dados para a constru¸c˜ao de um modelo requer muitas vezes que este seja feito por quem est´a a implementar o simulador, porque ´e importante que se perceba em primeira m˜ao a raz˜ao pala qual uma simula¸c˜ao ´e necess´aria e o que se pretende simular.

A vis˜ao humana ´e uma das melhores ferramentas de an´alise de dados existentes, e como tal o processo de cria¸c˜ao de uma representa¸c˜ao visual a partir dos dados da simula¸c˜ao ´e uma aspecto importante em qualquer simula¸c˜ao, uma vez que possibilita ao utilizador da simula¸c˜ao fazer uma an´alise r´apida e eficaz.

A interac¸c˜ao com o ambiente de simula¸c˜ao, como para qualquer software que seja utilizado por um humano, ´e um aspecto fundamental, uma boa interface e usabilidade permite ao utilizador tirar o maior partido da simula¸c˜ao e das ferramentas dispon´ıveis.

O ambiente de simula¸c˜ao dever´a reproduzir de forma realista a camada mecˆanica e sistema de vis˜ao do ve´ıculo de condu¸c˜ao aut´onoma. Isto significa que para simular a camada mecˆanica ter´a de se simular todos os actuadores e sensores, o que inclui o pr´oprio movimento do robot, que dever´a ser realista. Para simular o sistema de vis˜ao dever´a ser sintetizada o v´ıdeo produzido pelas cˆamara. Al´em da modela¸c˜ao do ve´ıculo tamb´em ´e necess´ario modelar o espa¸co onde este se movimenta. Neste caso o espa¸co corresponde `as provas de condu¸c˜ao aut´onoma do FNR, e a modela¸c˜ao ir´a incidir sobre os v´arios elementos que comp˜oem cada prova, tais como obst´aculos, zona de obras e t´unel, que dever˜ao obedecer `as leis da f´ısica, por forma a detectar colis˜oes, e reagir em conformidade.

Dos objectivos consta a inten¸c˜ao de explorar o Bullet enquanto motor de simula¸c˜ao de f´ısica. Consta tamb´em a necessidade de sintetizar as imagens capturadas pelas duas cˆamaras que equipam o ve´ıculo. Isto significa que o motor gr´afico usado dever´a produzir gr´aficos de alta qualidade por forma a reproduzir a qualidade do mundo real.

(34)

Dos motores de jogo open-source existentes que associam um motor gr´afico com o Bullet (por exemplo o Crystal Space [15] e Game Blender [16]), o jMonkey destaca-se pelo seu desenvolvimento de ra´ız para suportar f´ısica, e em especial o suporte nativo para ve´ıculos, e as v´arias t´ecnica avan¸cadas de rendering dispon´ıveis que permitem alcan¸car o realismo necess´ario.

2.4

jMonkey

O trabalho a realizar no ˆambito da cria¸c˜ao do ambiente de simula¸c˜ao foca-se principal-mente na ´area de modela¸c˜ao, visualiza¸c˜ao e interac¸c˜ao, uma vez que a simula¸c˜ao em si j´a existe. O Bullet oferece uma arquitectura de simula¸c˜ao de ve´ıculos em que apenas ´e necess´ario especificar o n´umero e posi¸c˜ao das rodas para ter um ve´ıculo virtual pronto a usar. A visual-iza¸c˜ao e interac¸c˜ao foi um aspecto importante neste caso porque como se trata da simula¸c˜ao de um ve´ıculo aut´onomo, a visualiza¸c˜ao do seu comportamento enquanto se movimenta ´e informa¸c˜ao suficiente para que se fa¸ca an´alise e se retire uma conclus˜ao.

2.4.1 Motor gr´afico

jMonkeyEngine ´e um motor de jogo 3D, open source, escrito 100% em Java, que aglomera v´arias bibliotecas as quais fornecem gr´aficos 3D e 2D, ´audio, f´ısica, entre outros[17]. Criado em 2003, vai actualmente na sua 3a vers˜ao, integra de raiz com o motor de f´ısica jBullet, a vers˜ao do Bullet para Java, e o motor gr´afico Lightweight Java Game Library1 (LWJGL), que permite o acesso em Java `a biblioteca gr´afica OpenGL2 (Open Graphics Library). O sistema gr´afico foi constru´ıdo com base numa arquitectura de shaders, de forma a garantir a compatibilidade com a corrente e pr´oxima gera¸c˜ao de standards gr´aficos 3D, tendo j´a suporte a v´arias t´ecnicas avan¸cadas para produ¸c˜ao de imagens com elevado realismo (Shadow Map, Parallax Map, HDR, Ambient Oclusion, Depth of Field ).

O jMonkey funciona em qualquer sistema que consiga correr Java e que suporte o OpenGL 2.0. Actualmente possui um desenvolvimento activo e uma grande comunidade que apoia o projecto, tendo sido usado para criar projectos comerciais, como por exemplo o Urban Galax Online3, e projectos de investiga¸c˜ao, como por exemplo CARS – Configurable Automotive Research Simulator4.

2.4.2 Motor de F´ısica

A f´ısica no jMonkey ´e calculada com a ajuda da vers˜ao para Java do motor de f´ısica Bullet, o jBullet5. Al´em do c´alculo de colis˜oes e simula¸c˜ao das leis do movimento que seria de esperar de qualquer motor de f´ısica, este motor j´a oferece um modelo de simula¸c˜ao de ve´ıculos, que se baseia num modelo simplificado usado em v´arios jogos de condu¸c˜ao comerciais.

Ao inv´es de utilizar juntas avan¸cadas e restri¸c˜oes ao movimento de modo a simular a suspens˜ao e as rodas e movimentar o carro de acordo com a sua direc¸c˜ao, neste modelo o carro ´e representado por um ´unico corpo r´ıgido, o chassis, que flutua em cima de quatro (dependendo

1 http://lwjgl.org/ 2 http://www.opengl.org/ 3http://www.urbangalaxyonline.com/ 4 http://cars.pcuie.uni-due.de/ 5http://jbullet.advel.cz/

(35)

a

c

b

Figura 2.8: Calculo da suspens˜ao. a: ponto de origem do raio. b: ponto de colis˜ao com o ch˜ao. c: centro da roda, dado pela diferen¸ca entre o ponto de colis˜ao e o raio da roda.

do n´umero de rodas) raios imagin´arios [18]. Estes raios s˜ao lan¸cados verticalmente em direc¸c˜ao ao ch˜ao a partir da localiza¸c˜ao de cada uma das rodas, mais especificamente da posi¸c˜ao onde a suspens˜ao encaixa no chassis e o ponto de intersec¸c˜ao entre o raio e o ch˜ao ser´a usado para calcular a suspens˜ao. A compress˜ao da suspens˜ao, vis´ıvel na Figura 2.8, ´e dada pela diferen¸ca entre o comprimento original da suspens˜ao e o comprimento actual, ou seja, distˆancia de a) a c) e daqui resulta a for¸ca que ser´a aplicada ao chassis do carro, que o impede de colidir com o ch˜ao. Caso a distˆancia do raio seja maior que a soma de distˆancia da suspens˜ao e o raio da roda, indica que a roda do carro n˜ao est´a em contacto com o ch˜ao e portanto n˜ao existe fric¸c˜ao.

Al´em da suspens˜ao s˜ao aplicadas mais duas for¸cas ao chassis, uma for¸ca lateral e uma for¸ca longitudinal, relacionadas directamente com as rodas em si e que fazem o carro movimentar-se. Estas for¸cas s˜ao calculadas para cada roda que est´a em contacto com o ch˜ao, tendo em conta a fric¸c˜ao, o torque e direc¸c˜ao da roda, sendo posteriormente aplicadas ao chassis.

(36)
(37)

Cap´ıtulo 3

Simulador

3.1

Introdu¸

ao

Existem dois mundos no jMonkey, o mundo visual e o mundo f´ısico. O mundo visual ´e o que ´e capturado pelas cˆamaras, o que cont´em todos os objectos vis´ıveis, e no jMonkey, tal como muitos outros motores gr´aficos, a visualiza¸c˜ao deste mundo (rendering) ´e realizado com base num ciclo infinito que ´e composto por trˆes fases:

1a fase – actualiza¸c˜ao do mundo, todos os objectos s˜ao preparados e posicionados correcta-mente.

2a fase – rendering da cena, o sistema gr´afico desenha a imagem vista por cada uma das cˆamara activas.

3a fase – p´os-processamento, onde as imagens criadas anteriormente s˜ao retiradas e algum processamento sobre elas pode ser efectuado.

Este ciclo pode ser executado sem interrup¸c˜oes, ou seja, executado `a velocidade m´axima que o sistema suporta, ou com pausas de modo a obter um n´umero de imagem por segundo (fps) constante.

O mundo f´ısico funciona de forma diferente. O seu ciclo de actualiza¸c˜ao ´e constante (60 fps) e independente do ciclo visual. O mundo f´ısico imp˜oe certas regras; aqui todos os objectos possuem massa e est˜ao sujeitos `a for¸ca gravitacional, cada objecto colide com todos os outros, e dois objectos n˜ao podem ocupar o mesmo espa¸co f´ısico. Este mundo ´e governado pelas leis da f´ısica.

Existe a possibilidade de criar uma liga¸c˜ao entre um objecto f´ısico e um objecto vis´ıvel, o que na pr´atica significa dar propriedades f´ısicas a um objecto vis´ıvel, ou vice-versa, dar uma representa¸c˜ao visual a um objecto f´ısico. O objecto f´ısico e o vis´ıvel n˜ao tˆem de ser iguais, pelo contrario, at´e ´e prefer´ıvel que sejam diferentes, isto porque objectos simples como caixas, esferas, cilindros e c´apsulas possuem f´ormulas simples e eficientes para calcular as colis˜oes entre si, enquanto que objectos mais complexos, cˆoncavos e compostos por v´arios triˆangulos obrigam a f´ormulas mais complexas e que demoram mais tempo a calcular. Por esta raz˜ao ´e que sempre que poss´ıvel os objectos vis´ıveis s˜ao representados no mundo f´ısico por aproxima¸c˜oes usando objectos simples. Por exemplo, a representa¸c˜ao do robot no mundo f´ısico e visual s˜ao bastante diferentes, como j´a foi referido, e tal pode ser observado na Figura 3.1. O chassis do robot que re´une v´ario componentes, de entre os quais as cˆamaras e respectivos

(38)

Figura 3.1: Representa¸c˜ao f´ısica e visual do ve´ıculo. A esquerda o carro ´` e representado fisicamente por um caixa que corresponde ao chassis e trˆes raios imagin´arios que sustentam o chassis e que correspondem `as rodas; `a direita a representa¸c˜ao visual dos mesmos elementos.

suportes, n˜ao se assemelham a uma caixa. Contudo o objectivo neste simulador ´e detectar as colis˜oes do robot com obst´aculos, e estas colis˜oes acontecem sempre na parte frontal ou lateral, nunca na parte superior, portanto, dado a silhueta do robot ´e seguro utilizar um caixa como aproxima¸c˜ao sem que exista grande perda de fidelidade.

Como o mundo visual imp˜oe que os objectos s´o sejam alterados na primeira fase e a f´ısica funciona de forma independente, a sincroniza¸c˜ao dos objectos vis´ıveis que tˆem uma correspondˆencia no mundo f´ısico s´o acontece durante a primeira fase. Basicamente o ciclo de actualiza¸c˜ao do mundo visual ”governa/dita”a execu¸c˜ao de todo o simulador, e de modo a inserir todo o conceito de sensores/actuadores neste ciclo estabeleceu-se que durante a primeira fase as ordens para os actuadores s˜ao processadas e executadas, e durante a terceira fase a informa¸c˜ao dos sensores ´e recolhida e enviada para o software.

3.2

Modela¸

ao do ambiente

O ambiente no qual o ve´ıculo se movimenta no simulador tenta recriar com o m´aximo de fidelidade a realidade do FNR. Cada um dos elementos que comp˜oem cada prova foi criado de acordo com o regulamento do concurso.

3.2.1 Modela¸c˜ao da Pista

(39)

Figura 3.2: Representa¸c˜ao da pista do FNR no simulador.

A imagem que ´e aplicada ao plano tem o nome de textura e normalmente num motor grafico 3D as texturas s˜ao carregadas a partir de ficheiros de imagem (jpg,bmp,raw) e aplicadas ao objectos 3D durante o rendering da cena. No nosso caso o simulador tem de ser flex´ıvel o suficiente para permitir o uso de diferentes pistas de diferentes tamanhos, e por consequˆencias, diferentes texturas.

Na arquitectura usada pelo robot, uma pista ´e descrita com base em 3 elementos b´asicos: Recta, Curva e Passadeira. Em conjunto, estes elementos permitem descrever a maioria das configura¸c˜oes poss´ıveis de uma pista, em especial a pista do FNR. Como se pode ver na Figura 3.3 existem ao todo 7 sec¸c˜oes diferentes nessa pista, havendo sobreposi¸c˜ao entre elas.

Figura 3.3: Pista do FNR dividida por sec¸c˜oes.

A descri¸c˜ao da pista ´e feita a partir de um ficheiro de configura¸c˜ao em formato texto, onde para cada sec¸c˜ao ´e enumerado cada um dos seus atributos, e os valores que estes tomam, como se pode ver no exemplo 3.1.

(40)

1 Type = S t r i n g; // t i p o de s e c ¸c ˜a o : ”CROSSWALK” , ”STRAIGHT” , ”CURVE”

2 Name = S t r i n g; //nome p e l o q u a l v a i s e r i d e n t i f i c a d a , ex : ” Recta 1 ” , ” Curva

Esquerda ” 3 C o o r d i n a t e s : // c o o r d e n a d a s da p o s i ¸c ˜a o 4 { 5 X = i n t; // p o s i ¸c ˜a o X em m i l i m e t r o s do i n ´ı c i o da s e c ¸c ˜a o 6 Y = i n t; // p o s i ¸c ˜a o Y em m i l i m e t r o s do i n ´ı c i o da s e c ¸c ˜a o 7 t h e t a = f l o a t; // r o t a ¸c ˜a o h o r i z o n t a l em r a d i a n o s 8 } ; 9 D i m e n s i o n s : // dimens ˜o e s 10 {

11 Width = f l o a t; // comprimento do a r c o em r a d i a n o s p a r a o c a s o da ”CURVE

” , comprimento em m i l i m e t r o s p a r a o s o u t r o s c a s o s 12 Length = i n t; // l a r g u r a em m i l i m e t r o s 13 } ; 14 Radius = i n t; // r a i o da curva , ( o s e u s i n a l i n d i c a a d i r e c ¸c ˜a o ) , s ´o s e a p l i c a a s e c ¸c ˜o e s do t i p o ”CURVE” 15 16 17 L e f t L i n e = ( // l i s t a de d e f i n i ¸c ˜o e s que formam a l i n h a e s q u e r d a 18 { 19 t y p e = S t r i n g // t i p o de l i n h a , p r e v i a m e n t e d e f i n i d o n a s L i n e s ( ) 20 s t a r t = f l o a t; // i n ´ı c i o da l i n h a em r e l a ¸c ˜a o `a s e c ¸c ˜ao , em p e r c e n t a g e m ( 0 . 0 − 1 . 0 ) 21 end = f l o a t; // f i n a l da l i n h a em r e l a ¸c ˜a o `a s e c ¸c ˜ao , em p e r c e n t a g e m ( 0 . 0 − 1 . 0 ) 22 p h a s e = f l o a t; // o f f s e t p a r a come ¸c a r o padr ˜a o ( P a t t e r n ) , s ´o ´e u t i l i z a d o em l i n h a s do t i p o ”DASHED” 23 } 24 ) ; 25 26 C e n t e r L i n e = ( // l i s t a de d e f i n i ¸c ˜o e s que formam a l i n h a c e n t r a l 27 { 28 t y p e = S t r i n g // t i p o de l i n h a , p r e v i a m e n t e d e f i n i d o n a s L i n e s ( ) 29 s t a r t = f l o a t; // i n ´ı c i o da l i n h a em r e l a ¸c ˜a o `a s e c ¸c ˜ao , em p e r c e n t a g e m ( 0 . 0 − 1 . 0 ) 30 end = f l o a t; // f i n a l da l i n h a em r e l a ¸c ˜a o `a s e c ¸c ˜ao , em p e r c e n t a g e m ( 0 . 0 − 1 . 0 ) 31 p h a s e = f l o a t; // o f f s e t p a r a come ¸c a r o padr ˜a o ( P a t t e r n ) , s ´o ´e u t i l i z a d o em l i n h a s do t i p o ”DASHED” 32 } 33 ) ; 34 35 R i g h t L i n e = ( // l i s t a de d e f i n i ¸c ˜o e s que formam a l i n h a d i r e i t a 36 { 37 t y p e = S t r i n g // t i p o de l i n h a , p r e v i a m e n t e d e f i n i d o n a s L i n e s ( ) 38 s t a r t = f l o a t; // i n ´ı c i o da l i n h a em r e l a ¸c ˜a o `a s e c ¸c ˜ao , em p e r c e n t a g e m ( 0 . 0 − 1 . 0 ) 39 end = f l o a t; // f i n a l da l i n h a em r e l a ¸c ˜a o `a s e c ¸c ˜ao , em p e r c e n t a g e m ( 0 . 0 − 1 . 0 ) 40 p h a s e = f l o a t; // o f f s e t p a r a come ¸c a r o padr ˜a o ( P a t t e r n ) , s ´o ´e u t i l i z a d o em l i n h a s do t i p o ”DASHED” 41 } 42 ) ;

(41)

1 Type = S t r i n g; // t i p o de l i n h a : ”DASHED” , ” SOLID”

2 Name = S t r i n g; //nome p e l o q u a l v a i s e r i d e n t i f i c a d o ex : ” l i n h a

c o n t i n u a ” , ” l i n h a t r a c e j a d a ”

3 Width = i n t; // l a r g u r a da l i n h a em m i l i m e t r o s

4 P a t t e r n = {i n t ,i n t , . . . } // padr ˜a o a l t e r n a d o que d e f i n e a l i n h a do t i p o ”

DASHED” , ex : { 8 0 0 , 1 0 0 } c r i a uma l i n h a c o n t i n u a com 800mm s e g u i d a de 100mm v a z i o , r e p e t i n d o i n f i n i t a m e n t e

Listing 3.2: Linguagem de descri¸c˜ao das linhas da pista.

Este ficheiro era originalmente usado pelo robot, permitindo-lhe conhecer as caracter´ısticas da pista que estava a percorrer, mas como a informa¸c˜ao l´a existente ´e suficiente para criar a textura da pista para o simulador decidiu-se reutilizar este ficheiro para desenhar a pista, como alternativa `a cria¸c˜ao de um ficheiro adicional com uma nova linguagem de descri¸c˜ao.

Para criar a pista de uma maneira eficiente foi desenvolvida uma aplica¸c˜ao gr´afica em Java que permitisse abrir, visualizar, criar e guardar ficheiros deste tipo. Esta aplica¸c˜ao faz uso da biblioteca gr´afica 2D do java para desenhar a pista, utilizando arcos e rectˆangulos e v´arias transforma¸c˜oes 2D (escala, transla¸c˜ao e rota¸c˜ao) de forma a atingir o objectivo de desenhar cada uma das sec¸c˜oes. A aplica¸c˜ao permite interagir com cada sec¸c˜ao de forma directa, dando a possibilidade de arrastar ou alterar qualquer um dos seus atributos e mostrar o resultado em tempo real.

Figura 3.4: Programa de edi¸c˜ao da pista.

A figura 3.4 mostra este programa de edi¸c˜ao como uma interface dividida em duas regi˜oes. No centro ´e representada a visualiza¸c˜ao 2D da pista centrada na origem e no painel direito s˜ao apresentadas todas as propriedades da sec¸c˜ao actualmente seleccionada. Para facilitar a constru¸c˜ao da pista cada sec¸c˜ao possui uma circunferˆencia que indica o ponto de origem e outra que indica o ponto final, isto para a possibilidade de “snap” de sec¸c˜oes, que consiste em

(42)

fundir o final de uma sec¸c˜ao com a origem de outra que esteja relativamente perto, facilitando o processo de posicionamento das sec¸c˜oes sem a existˆencia de lacunas entre estas. A utiliza¸c˜ao de uma cor aleat´oria para cada sec¸c˜ao tem como finalidade facilitar a distin¸c˜ao entre sec¸c˜oes. Para al´em de permitir construir a pista, o 2o objectivo desta aplica¸ao ´e fornecer ao sim-ulador uma forma de criar a textura da pista a partir do ficheiro de texto. Desta forma n˜ao ´e necess´ario estar a criar ficheiros de imagem adicionais, uma vez que a imagem ´e automati-camente criada em mem´oria quando se lan¸ca o simulador, e posteriormente copiada para o motor 3D para este desenhar a cena 3D.

As regras do FNR especificam que “O ch˜ao da pista ´e preto e absorve infravermelho. As linhas laterais s˜ao brancas e reflectem infravermelhos”, contudo isto n˜ao ´e totalmente verdade, uma vez que ´e usada uma alcatifa preta como pista, que possui um padr˜ao derivado do tecido, o qual se vai degradando ao longo do concurso por causa dos participantes. Isto significa que, de modo a ter um maior realismo, a textura criada a partir do ficheiro de texto ter´a que emular o ru´ıdo que a pista real apresenta, ru´ıdo este de dois tipos diferentes; um uniforme que afecta toda a pista derivado do tecido da alcatifa, e um aleat´orio provocado pelas pegadas dos participantes e o desgaste causado pelos robots.

Como o ru´ıdo apresenta um padr˜ao bem definido, n˜ao pode ser facilmente emulado por f´ormulas matem´aticas de ru´ıdo, como por exemplo ru´ıdo Gaussiano. ´E necess´ario utilizar representa¸c˜oes em formato de imagem e combin´a-las para chegar ao resultado final. Existem v´arias t´ecnicas eficientes para misturar diferentes texturas com cores e padr˜oes diferentes que conseguem manter o detalhe e criar uma textura ´unica atrav´es do uso de zonas de interesse em cada textura e interpola¸c˜ao usando uma distribui¸c˜ao de Poisson[19]. Contudo neste caso estamos a trabalhar com um problema concreto, que consiste em misturar uma textura a tons de cinzento de modo a criar ru´ıdo, em que a textura base ´e preta e o ru´ıdo ´e branco. Com isto em mente a solu¸c˜ao encontrada para resolver este problema assenta em duas fases distintas que produzem duas texturas que s˜ao posteriormente interpoladas com a textura base.

Ru´ıdo base

Esta fase consiste na adi¸c˜ao de ru´ıdo uniforme `a pista de forma a simular o padr˜ao do tecido usado. Para tal s˜ao usadas duas amostras de tamanhos diferentes que s˜ao replicadas de modo a cobrirem toda a pista. O processo de replica¸c˜ao de apenas uma textura cria um padr˜ao que se repete e que ´e evidente. Para combater este efeito s˜ao utilizadas duas amostras de diferentes tamanhos, onde a interpola¸c˜ao das duas amostras replicadas reduz a probabilidade de ocorrˆencia de padr˜oes, criando uma textura ´unica.

O resultado final da interpola¸c˜ao das duas amostras ser´a aplicado `as zonas pretas da textura base, criando assim uma textura mais realista.

(43)

a) b)

Figura 3.5: Ru´ıdo base. a: amostras utilizadas b: resultado do processo de replica¸c˜ao e interpola¸c˜ao.

Ru´ıdo aleat´orio

Ao longo dos dias do FNR a pista est´a constantemente em uso, os participantes tentam aproveitar ao m´aximo o tempo que tˆem antes das provas para fazer testes e afinar os robots, e isto provoca um desgaste na alcatifa que vai piorando ao longo do tempo. Este desgaste ´e derivado das pegadas deixadas pelos participantes e p´ublico que vai assistir, e das rodas dos robots que percorrem a pista. Por forma a simular este desgaste basta espalhar pela textura amostras de imagens que representam este tipo de desgaste, com posi¸c˜ao e rota¸c˜ao aleat´oria.

a) b)

Figura 3.6: Ru´ıdo aleat´orio. a: amostras que se assemelham ao desgaste causado pelos participantes e robots b: resultado do processo de coloca¸c˜ao aleat´orio.

Ap´os estas duas fases combinam-se as 3 imagens, a textura base, o ru´ıdo uniforme e o ru´ıdo aleat´orio, utilizando uma media aritm´etica e obt´em-se uma textura de elevado detalhe e realismo pronta a ser utilizada. Contudo existe ainda mais um problema. No simulador a pista ´e simulada por um plano liso, no mundo real a pista ´e uma alcatifa com relevos e depress˜oes, logo, para atingir o realismo requerido ´e necess´ario encontrar uma forma de deformar o plano 3D para que este tamb´em apresente relevos e que esses relevos sejam coerentes com a textura. Isto deixa-nos com dois caminhos poss´ıveis, ou se altera a geometria da pista de modo a coincidir com a textura, ou se utiliza ilus˜oes de visualiza¸c˜ao para simular os relevos, mantendo a geometria como est´a. A primeira op¸c˜ao n˜ao ´e vi´avel, uma vez que o detalhe que a geometria teria de ter seria t˜ao elevado que o impacto na performance seria insuport´avel. Consequentemente utilizou-se a op¸c˜ao de ilus˜ao para simular os relevos. O jMonkey oferece

(44)

duas t´ecnicas distintas para adicionar detalhe (relevos) a objectos 3D, Parallax Mapping e Normal Mapping. Ambos tˆem um impacto m´ınimo na performance e baseiam-se na utiliza¸c˜ao de mapas (imagens 2D) que armazenam a deforma¸c˜ao a aplicar ao objecto 3D em causa e utilizam truques de ilumina¸c˜ao para dar a sensa¸c˜ao de profundidade. O Parallax Mapping ´e uma t´ecnica normalmente usada para representar deforma¸c˜oes profundas como ´e o caso das pedras numa muralha ou numa cal¸cada, enquanto o Normal Mapping ´e mais eficaz na representa¸c˜ao de pequenos detalhes, sendo portanto a t´ecnica escolhida para aplicar `a pista. A ilumina¸c˜ao de um dado ponto num objecto 3D depende da orienta¸c˜ao da superf´ıcie em rela¸c˜ao `a direc¸c˜ao da fonte luminosa. Uma superf´ıcie que ´e perpendicular `a direc¸c˜ao da luz ´e mais iluminada que uma superf´ıcie com igual ´area mas obl´ıqua. Portanto a ilumina¸c˜ao de uma superf´ıcie ´e dada pelo ˆangulo entre os raios luminosos e a orienta¸c˜ao da superf´ıcie, conhecida como normal. A normal ´e um vector que indica a orienta¸c˜ao de uma dada superf´ıcie, e por defini¸c˜ao, ´e perpendicular a essa superf´ıcie [20].

Figura 3.7: C´alculo da ilumina¸c˜ao difusa. A ilumina¸c˜ao de uma superf´ıcie ´e dado pelo ˆ

angulo entre a direc¸c˜ao da fonte de luz L e a normal `a superf´ıcie N.

O Normal Mapping baseia-se na altera¸c˜ao do vector normal de forma a alterar a ilumina¸c˜ao da superf´ıcie, criando zonas mais escuras e outras mais claras, imitando a ilumina¸c˜ao dos relevos. As coordenadas dos vectores normais s˜ao armazenadas numa imagem 2D, onde o valor de cada pixel RGB no intervalo [0 - 255] corresponde `as coordenadas XYZ no intervalo [-1.0 – 1.0] do vector unit´ario que representa a normal.

Esta ´e uma t´ecnica usada muitas vezes na produ¸c˜ao de jogos 3D, onde s˜ao criados objectos de elevada qualidade, com um elevado n´umero de superf´ıcies. Em seguida ´e criado um mapa a partir desse objecto para guardar o detalhe em vectores normais. O objecto ´e de seguida optimizado de modo a remover a maior parte das superf´ıcies, e no final ´e utilizado o mapa criado anteriormente neste objecto de reduzida qualidade, restaurando o detalhe e obtendo um resultado final semelhante ao original, mas com uma frac¸c˜ao do processamento necess´ario para o desenhar no ecr˜a [21].

(45)

a) b) c)

Figura 3.8: Exemplo do uso de Normal Mapping. Usando o mapa b) na esfera a) obt´em-se o efeito em c). De referir que apesar dos relevos vis´ıveis, a esfera mant´em a mesma forma. Os relevos s˜ao apenas ilus˜oes de ilumina¸c˜ao, como se pode verificar pelo contorno da esfera que continua inalterado.

A cria¸c˜ao do mapa RGB para Normal Mapping ´e baseada na textura da pista com ru´ıdo, assumindo que o relevo da pista ´e dado pela intensidade de cada pixel, onde o preto significa nenhuma altera¸c˜ao, e o branco a altura m´axima. ´E usado um operador de Sobel em x e em y de modo a calcular a direc¸c˜ao do gradiente da textura e criar o vector que dar´a origem `

a componente RGB do mapa. A magnitude x representa a componente R, a magnitude y representa G e B ´e um parˆametro que regula a intensidade geral do relevo.

a) b) c) d)

Figura 3.9: Convers˜ao de uma textura em tons de cinzento para um mapa de NormalMapping. a: textura com ru´ıdo. b: resultado do operador de Sobel em X, onde os contornos verticais s˜ao identificados. c: resultado do operador de Sobel em Y, onde os contornos horizontais s˜ao identificados. d: resultado da convers˜ao de b) e c) para um mapa normal, convertendo b) para vermelho e c) para verde, mantendo o azul constante.

No final de todo este processo obt´em-se uma textura que representa a pista com ru´ıdo realista, e um mapa de relevo que altera a forma como a luz interage com a pista dando a ilus˜ao da existˆencia de relevos e depress˜oes.

(46)

a) b) c)

Figura 3.10: Fases de constru¸c˜ao da textura da pista. a: 1a fase, a textura ´e constru´ıda com base no ficheiro de configura¸c˜ao. b: 2a fase, ´e adicionado ru´ıdo `a textura. c: 3a fase, adicionado relevos atrav´es de Normal Mapping.

3.2.2 Modela¸c˜ao dos elementos

Ap´os ter a pista criada na cena ´e necess´ario povo´a-la com os restantes elementos que comp˜oem cada uma das provas do FNR. Tal como ´e o caso da pista, estes elementos tamb´em tˆem um ficheiro de texto que indicam os seus atributos e posi¸c˜ao, tendo como principal diferen¸ca em rela¸c˜ao ao ficheiro de configura¸c˜ao da pista o facto de este ficheiro estar associado a uma pista, uma vez que a posi¸c˜ao dos elementos s´o faz sentido para uma determinada pista. Isto significa que uma pista pode ter zero ou mais ficheiros de configura¸c˜ao dos elementos que a povoam, que ´e o que acontece na realidade. Por exemplo, a prova do FNR tem 3 mangas, sendo que em cada uma a pista ´e igual, mas os elementos s˜ao diferentes. A linguagem de configura¸c˜ao dos elementos ´e a mesma que da pista para manter a compatibilidade com o software do robot e possibilitar a utiliza¸c˜ao no futuro deste ficheiro para oferecer mais informa¸c˜ao ao robot sobre o ambiente que est´a a percorrer.

Obst´aculo

O obst´aculo ´e simulado por uma caixa r´ıgida, com 1 kg de massa e com uma textura verde de modo a assemelhar-se com os obst´aculos usados normalmente na competi¸c˜ao.

(47)

Figura 3.11: Representa¸c˜ao do obst´aculo no simulador. 1 Name = S t r i n g; //nome do o b s t ´a c u l o 2 P o s i t i o n : // p o s i ¸c ˜a o g l o b a l na p i s t a 3 { 4 X = i n t; // p o s i ¸c ˜a o X em m i l i m e t r o s 5 Y = i n t; // p o s i ¸c ˜a o Y em m i l i m e t r o s 6 Z = i n t; // p o s i ¸c ˜a o Z em m i l i m e t r o s 7 } ; 8 R o t a t i o n : // r o t a ¸c ˜a o 9 { 10 Yaw = f l o a t; // r o t a ¸c ˜a o CCW em r a d i a n o s em t o r n o do e i x o X 11 R o l l = f l o a t; // r o t a ¸c ˜a o CCW em r a d i a n o s em t o r n o do e i x o Y 12 P i t c h = f l o a t; // r o t a ¸c ˜a o CCW em r a d i a n o s em t o r n o do e i x o Z 13 } ; 14 H a l f E x t e n d s : // dimens ˜a o 15 { 16 X = i n t; // e x t e n s ˜a o X em r e l a ¸c ˜a o ao c e n t r o , em m i l i m e t r o s 17 Y = i n t; // e x t e n s ˜a o Y em r e l a ¸c ˜a o ao c e n t r o , em m i l i m e t r o s 18 Z = i n t; // e x t e n s ˜a o Z em r e l a ¸c ˜a o ao c e n t r o , em m i l i m e t r o s 19 } ;

Listing 3.3: Linguagem de descri¸c˜ao do obst´aculo. ´

E importante referir que a coloca¸c˜ao de obst´aculos deve ter em aten¸c˜ao poss´ıveis colis˜oes, os obst´aculos n˜ao devem intersectar outros objectos f´ısicos, como por exemplo o ch˜ao, tendo como consequˆencia a poss´ıvel instabilidade da simula¸c˜ao. Estes devem ser colocados ligeira-mente acima do ch˜ao e, assim que a simula¸c˜ao inicia, a f´ısica toma controlo e o obst´aculo cai no ch˜ao.

Parque de estacionamento

O parque de estacionamento ´e um plano que flutua mil´ımetros acima da pista, dando a sensa¸c˜ao de que faz parte da pista e ao mesmo tempo possibilitando a f´acil mudan¸ca de

(48)

posi¸c˜ao entre testes, tal como acontece no FNR onde o parque ´e apenas um peda¸co de alcatifa do mesmo tipo que a da pista, que ´e alterada de posi¸c˜ao em cada prova.

Figura 3.12: Representa¸c˜ao do parque de estacionamento no simulador.

... 1 Name = S t r i n g; //nome do p a r q u e 2 C o o r d i n a t e s : // c o o r d e n a d a s da p o s i ¸c ˜a o g l o b a l na p i s t a 3 { 4 X = i n t; // p o s i ¸c ˜a o X em m i l i m e t r o s 5 Y = i n t; // p o s i ¸c ˜a o Y em m i l i m e t r o s 6 t h e t a = f l o a t; // r o t a ¸c ˜a o h o r i z o n t a l em r a d i a n o s 7 } ;

Listing 3.4: Linguagem de descri¸c˜ao do parque de estacionamento.

O parque de estacionamento ´e sempre posicionado `a mesma altura Z.

´

Area de manuten¸c˜ao

A ´area de manuten¸c˜ao ´e formada por duas linhas de cones, sendo que cada dois cones consecutivos est˜ao ligados por uma fita. Os cones s˜ao representados por um modelo f´ısico que tenta imitar ao m´aximo a realidade, possuem 0,3 kg de massa e a fita que os liga n˜ao tem correspondˆencia f´ısica, sendo apenas algo visual.

Imagem

Figura 2.1: Pista usada na prova de Condu¸ c˜ ao Aut´ onoma, com 14x9 metros de dimens˜ ao real.
Figura 2.3: Sinais de transito usados nas provas. Cada sinal ´ e identificado por um n´ umero (1 ou 2) e um grupo (perigo, obrigat´ orio ou informativo).
Figura 2.4: Plataformas usadas no Projecto ROTA.
Figura 2.5: Arquitectura geral da plataforma ROTA: (a) Diagrama de blocos; (b) localiza¸ c˜ ao no ve´ıculo[7].
+7

Referências

Documentos relacionados

Os principais objectivos definidos foram a observação e realização dos procedimentos nas diferentes vertentes de atividade do cirurgião, aplicação correta da terminologia cirúrgica,

psicológicos, sociais e ambientais. Assim podemos observar que é de extrema importância a QV e a PS andarem juntas, pois não adianta ter uma meta de promoção de saúde se

Os resultados são apresentados de acordo com as categorias que compõem cada um dos questionários utilizados para o estudo. Constatou-se que dos oito estudantes, seis

Embora acreditemos não ser esse o critério mais adequado para a seleção dos professores de Sociologia (ou de qualquer outra disciplina), cabe ressaltar que o Conselho

Dessa forma, a partir da perspectiva teórica do sociólogo francês Pierre Bourdieu, o presente trabalho busca compreender como a lógica produtivista introduzida no campo

29 Table 3 – Ability of the Berg Balance Scale (BBS), Balance Evaluation Systems Test (BESTest), Mini-BESTest and Brief-BESTest 586. to identify fall

A direção dos Serviços Farmacêuticos Hospitalares (SFH) fica sempre a cargo de um farmacêutico. São várias as funções desempenhadas pelo FH no decorrer da sua atividade

Pinturas, depilatórios, unguentos mamilares, colorantes para o cabelo e até pomadas à base de vidro em pó (que, aparentemente, permitiam simular a virgindade) (Braunstein, 1990),