Projeto

Geral

Perfil

Ações
  1. Goalie

Funcionamento do goleiro:

seja d a distância do inimigo mais próximo da bola a ela:

se d>500mm: Usar DefBallTrajSkill
se 500mm<= d< 400mm: Usar DefBallEnemySkill
se d <=400mm: Usar DefBallOrientSkill.

Onde:
-> DefBallTrajSkill: Pega-se a reta da trajetória da bola usando-se a posição da bola e vy/vx para coeficiente angular para definir a reta. Faz-se a interseção dessa reta com a reta paralela à linha de fundo mas a 150mm à frente. O goleiro se posiciona no ponto de interseção caso esse ponto seja no gol (entre as balizas)

-> DefBallEnemySkill: Faz o mesmo que dito acima, porém a reta da direção do chute é calculada usando posição da bola e a posição do centro do robô inimigo.

-> DefBallOrientSkill: Faz o mesmo que os acima, mas a reta da direção do chute é calculada usando posição da bola e orientação do inimigo como coeficiente angular.

Em qualquer das situações, se a reta apontar para fora do gol, deve-se proceder da seguinte maneira:
seja alfa o ângulo que a reta (bola--centro do gol) faz com o eixo x.

se módulo de alfa > 45°(pi/4 rad): posição do goleiro é x = -fieldlenght/2 + 100mm e y = +-goalwidth/2(o sinal é o mesmo sinal do y da bola). Isso é feito para fechar as quinas.

se módulo de alfa < 45°(pi/4 rad): posição do goleiro é no meio do gol (x = -fieldlenght/2 + 100mm e y = 0)

Atualizado por Gabriel Borges da Conceiçãoquase 5 anos · 2 revisões