• Nenhum resultado encontrado

2.4 jMonkey

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.

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

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.

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

...

1 Name = S t r i n g; //Nome da zona de c o n s t r u ¸c ˜a o

2 L e f t L i n e = ( // l i s t a o r d e n a d a d a s p o s i ¸c ˜o e s g l o b a i s d o s c o n e s que formam a l i n h a e s q u e r d a 3 {i n t ,i n t} // p o s i ¸c ˜a o X,Y em m i l i m e t r o s 4 ) ; 5 R i g h t L i n e = ( // l i s t a o r d e n a d a d a s p o s i ¸c ˜o e s g l o b a i s d o s c o n e s que formam a l i n h a d i r e i t a 6 {i n t ,i n t} // p o s i ¸c ˜a o X,Y em m i l i m e t r o s 7 ) ;

Listing 3.5: Linguagem de descri¸c˜ao da ´area de manuten¸c˜ao.

A descri¸c˜ao da ´area de manuten¸c˜ao ´e baseada em duas listas que contˆem pares de valores inteiros. Cada lista representa uma linha, e cada par X,Y nessa lista corresponde a um cone. Ap´os a cria¸c˜ao dos cones pelo simulador ´e criada uma fita que liga cada dois cones consecutivos.

T´unel

O t´unel foi modelado de acordo com as especifica¸c˜oes das regras do FNR, sendo espec´ıfico para esta pista. Possui massa infinita, o que significa que ´e um objecto im´ovel, e, como ´e um objecto cˆoncavo, a sua representa¸c˜ao f´ısica ´e a mesma que a real.

Figura 3.14: Representa¸c˜ao do t´unel no simulador. ... 1 Name = S t r i n g; //nome do t ´u n e l 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.6: Linguagem de descri¸c˜ao do t´unel.

Painel semaf´orico

O painel semaf´orico foi criado num programa de modela¸c˜ao 3D utilizando as dimens˜oes especificadas pelas regras do FNR, e posteriormente importado para o simulador. O sinal que cada painel mostra ´e um dos 5 sinais poss´ıveis, o qual pode ser escolhido na interface gr´afica do simulador.

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

Os sinais mostrados neste painel s˜ao carregados a partir de 5 ficheiros de imagem, e automaticamente ajustados pelo motor gr´afico de modo a coincidirem com a propor¸c˜ao dos monitores, sendo facilmente alterados para outros casos, se tal se mostrar necess´ario.

1 Name = S t r i n g; //nome do p a i n e l s i n a l ´e t i c o 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.7: Linguagem de descri¸c˜ao do painel sinal´etico.

Sinais de trˆansito

Um sinal de trˆansito corresponde a um poste com um painel no topo que cont´em uma de 6 imagens poss´ıveis, que ´e escolhida quando o painel ´e criado. Este painel ´e rectangular com as medidas m´aximas especificadas pelo regulamento, sendo usada transparˆencia para criar os sinais triangulares e circulares. Tal facto levou `a utiliza¸c˜ao do formato PNG para guardar as imagens no disco, porque este formato permite guardar a informa¸c˜ao de transparˆencia em conjunto com a imagem.

Figura 3.16: Representa¸c˜ao de um dos seis sinais de transito existentes no simulador.

1 Name = S t r i n g; //nome do s i n a l de t r a n s i t o

2 Type = S t r i n g; // t i p o de s i n a l : ”WARNING 1” ; ”WARNING 2” ; ”MANDATORY 1” ; ”

MANDATORY 2” ; ”INFORMATION 1 ” ; ”INFORMATION 2”

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 g l o b a l na p i s t a 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 6 Y = i n t; // p o s i ¸c ˜a o Y em m i l i m e t r o s 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 } ;

Listing 3.8: Linguagem de descri¸c˜ao dos sinais de transito.

Cada sinal ´e identificado pelo seu tipo e ´ındice, tal como ´e indicado nas regras (ver Figura 2.3), que indicar´a qual a imagem que ´e carregada e que ir´a aparecer no painel.

Documentos relacionados