-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #2 from LBBassani/Atual
Atualização do projeto
- Loading branch information
Showing
1,652 changed files
with
533,307 additions
and
904 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
# Prerequisites | ||
*.d | ||
|
||
# Compiled Object files | ||
*.slo | ||
*.lo | ||
*.o | ||
*.obj | ||
|
||
# Precompiled Headers | ||
*.gch | ||
*.pch | ||
|
||
# Compiled Dynamic libraries | ||
*.so | ||
*.dylib | ||
*.dll | ||
|
||
# Fortran module files | ||
*.mod | ||
*.smod | ||
|
||
# Compiled Static libraries | ||
*.lai | ||
*.la | ||
*.a | ||
*.lib | ||
|
||
# Executables | ||
*.exe | ||
*.out | ||
*.app | ||
|
||
# Compilados do simulador | ||
build | ||
|
||
# Log do simulador | ||
log.txt | ||
|
||
# Compilado do instalador | ||
vss-simulator/Instalador | ||
|
||
# Configurações pessoais vscode | ||
.vscode | ||
|
||
# Binário do simulador | ||
Simulador | ||
|
||
#arquivos de teste | ||
*.teste.cpp | ||
*.teste.py | ||
|
||
# Byte-compiled / optimized / DLL files | ||
__pycache__/ | ||
*.pyc | ||
*.teste.pyc |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
# VSSS ERUS | ||
|
||
Projeto de VSSS (Very Small Sized Soccer) da ERUS, desenvolvido em Python | ||
|
||
# Instalação de dependências | ||
## Com Simulador | ||
|
||
Para compilar o projeto e utilizar o simulador, é necessário instalar a seguinte lista de pacotes: | ||
|
||
`g++ cmake libxmu-dev libxi-dev protobuf-compiler libprotobuf-dev pkg-config libzmq5 libzmq3-dev libboost-all-dev libbullet-dev freeglut3 freeglut3-dev` | ||
|
||
Caso o pacote `pkg-config` esteja indisponível, instale o `pkgconf`. | ||
|
||
Utilize o gerenciador de pacotes da sua distribuição, como `apt` ou `pacman`, para instalar os pacotes listados. | ||
|
||
Também é necessário instalar o vssscorepy, o vss-sdk, pyzmq, OpenCV, numpy e google. | ||
|
||
``` | ||
$ sudo -H pip install git+https://github.com/VSS-SDK/VSS-CorePy --upgrade | ||
``` | ||
|
||
Adicionalmente, é necessário compilar os subprojetos do simulador, o que pode ser feito por meio do script `vss-simulator/instalador.sh`. **Certifique-se de que todas as dependências de pacotes foram instaladas antes de rodar os scripts, ou você TERÁ erros de compilação**! | ||
|
||
``` | ||
$ sudo ./vss-simulator/instalador.sh | ||
``` | ||
## Sem Simulador | ||
Em breve | ||
|
||
# Executando | ||
|
||
## Com Simulador | ||
Há um arquivo de auxílio para rodar o simulador. Para compilá-lo, entre no diretório vss-simulator e rode o comando make.<br> | ||
Depois de compilado o programa pode ser rodado pelo comando: | ||
``` | ||
$ ./Simulador | ||
``` | ||
A simulação cria um arquivo de log com as saídas dos programas de simulação para serem analisados. | ||
|
||
## Com Sistemas de Visão e Hardware reais | ||
Em breve. | ||
|
||
# Padrões de código | ||
|
||
## Primeiro comentário do arquivo | ||
|
||
""" Nome do módulo : | ||
Ano de criação : | ||
Descrição do módulo : | ||
Versão : | ||
Pré-requisitos : (arquivos e bibliotecas necessárias para compilar) | ||
Membros : | ||
""" | ||
|
||
|
||
## Comentário de protótipo de funções | ||
|
||
""" Nome da função : | ||
Intenção da função : | ||
Pré-requisitos : | ||
Efeitos colaterais : | ||
Parâmetros : | ||
Retorno : | ||
""" | ||
|
||
|
||
**IMPORTANTE**: Comentários adicionais devem ser feitos na implementação (corpo das funções) detalhando a implementação do código. | ||
|
||
# Dados da Equipe: | ||
O VSSS-ERUS é uma equipe dedicada a implementação do desafio Very Small Size Soccer para competições. É um projeto da ERUS - Equipe de Robótica da UFES, e diversos documentos sobre o projeto podem ser encontrados no site da equipe. | ||
- Site da ERUS : http://erus.ufes.br/ | ||
- E-mail da ERUS : [email protected] | ||
- E-mail do VSSS-ERUS : [email protected] | ||
|
||
## Membros Atuais | ||
- Gabriel Pietroluongo | ||
- [email protected] | ||
- Gabriel Valdino | ||
- [email protected] | ||
- Mayke Wallace | ||
- [email protected] | ||
- Lara de Luca | ||
- [email protected] | ||
- Lorena Bassani | ||
- [email protected] | ||
|
||
## Membros Antigos | ||
- Ricardo Ramos | ||
- [email protected] | ||
- Victor de Oliveira | ||
- [email protected] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
""" Nome do módulo : Agente | ||
Ano de criação : 2019/10 | ||
Descrição do módulo : Agente representa uma entidade em campo | ||
Versão : 2.0 | ||
Pré-requisitos : sklearn | ||
geometria | ||
Membros : Lorena Bassani | ||
""" | ||
from sklearn.linear_model import LinearRegression | ||
from .Geometria import Ponto | ||
from .Campo import Campo | ||
import math as m | ||
|
||
class Agente(object): | ||
|
||
def __init__(self, ponto = Ponto()): | ||
self.__ponto = ponto | ||
self.__theta = 0 | ||
self.__posicoesAntigas = list() | ||
|
||
@property | ||
def ponto(self): | ||
return self.__ponto | ||
|
||
@ponto.setter | ||
def ponto(self, value): | ||
self.__changePosition() | ||
self.__ponto = value | ||
c = Campo() | ||
c.occupy(c.transform2Grid((value.x, value.y)), self) | ||
|
||
@property | ||
def posicao(self): | ||
return self.ponto.posicao | ||
|
||
@posicao.setter | ||
def posicao(self, value): | ||
self.__changePosition() | ||
self.ponto.posicao = value | ||
c = Campo() | ||
c.occupy(c.transform2Grid(value), self) | ||
|
||
@property | ||
def x(self): | ||
return self.ponto.x | ||
|
||
@property | ||
def y(self): | ||
return self.ponto.y | ||
|
||
@property | ||
def theta(self): | ||
return self.__theta | ||
|
||
@theta.setter | ||
def theta(self, value): | ||
self.__theta = value | ||
|
||
@property | ||
def posicoesAntigas(self): | ||
return self.__posicoesAntigas.copy() | ||
|
||
def __changePosition(self): | ||
if len(self.__posicoesAntigas) >= 5: | ||
self.__posicoesAntigas.pop(0) | ||
self.__posicoesAntigas.append(Ponto(self.ponto.x, self.ponto.y)) | ||
c = Campo() | ||
c.release(c.transform2Grid(self.posicao)) | ||
|
||
def predicaoAdaptativa(self): | ||
pass |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
""" Nome do módulo : Aliado | ||
Ano de criação : 2019/10 | ||
Descrição do módulo : Módulo que descreve um jogador aliado em campo | ||
Jogadores Aliados podem ser controlados | ||
Versão : 2.0 | ||
Pré-requisitos : Jogador | ||
Ponto | ||
ComportamentoJogadores | ||
Factory | ||
IComportamento | ||
Membros : Lorena Bassani | ||
""" | ||
from .Jogador import Jogador | ||
from .Geometria import Ponto | ||
from .ComportamentosJogadores.Factory import Factory | ||
from .ComportamentosJogadores.IComportamento import IComportamento | ||
|
||
class Aliado(Jogador): | ||
|
||
def __init__(self, idJ, ponto = Ponto(), comportamento = None): | ||
Jogador.__init__(self, idJ = idJ, ponto = ponto) | ||
self.comportamento = comportamento | ||
|
||
""" Nome da função : comportamento (getter) | ||
Intenção da função : Retornar qual o comportamento atual do Jogador | ||
Pré-requisitos : Nenhum | ||
Efeitos colaterais : Nenhum | ||
Parâmetros : Nenhum | ||
Retorno : COMPORTAMENTOS : Constante da Enumeração COMPORTAMENTOS | ||
""" | ||
@property | ||
def comportamento(self): | ||
return self.__comportamentoId | ||
|
||
""" Nome da função : comportamento (setter) | ||
Intenção da função : Modificar o comportamento atual do Jogador | ||
Pré-requisitos : Nenhum | ||
Efeitos colaterais : Modifica o comportamento atual do Joagdor | ||
Parâmetros : COMPORTAMENTOS : Constante da Enumeração COMPORTAMENTOS | ||
Retorno : Nenhum | ||
""" | ||
@comportamento.setter | ||
def comportamento(self, comportamento): | ||
self.__comportamentoId = comportamento | ||
self.__comportamento = Factory.create(comportamento) | ||
|
||
""" Nome da função : isInimigo | ||
Intenção da função : Dizer se o Jogador é Inimigo | ||
Pré-requisitos : Ser uma subclasse de Joagador | ||
Efeitos colaterais : Nenhum | ||
Parâmetros : Nenhum | ||
Retorno : Boolean : Sempre False | ||
""" | ||
def isInimigo(self): | ||
return False | ||
|
||
def definirObjetivo(self, mundo): | ||
return self.__comportamento.definirObjetivo(self, mundo) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
""" Nome do módulo : Ball | ||
Ano de criação : 2019/10 | ||
Descrição do módulo : Módulo que define bola em campo | ||
Versão : 2.0 | ||
Pré-requisitos : Agente | ||
Ponto | ||
Membros : Lorena Bassani | ||
""" | ||
from .Agente import Agente | ||
from .Geometria import Ponto | ||
from .Patterns.Singleton import Singleton | ||
|
||
class Ball(Agente, Singleton): | ||
|
||
def __init__(self, *args, **keyargs): | ||
pass | ||
|
||
def inicializa(self, ponto = Ponto()): | ||
Agente.__init__(self, ponto) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
""" Nome do módulo : Campo | ||
Ano de criação : 2019/10 | ||
Descrição do módulo : Modelar o campo do jogo | ||
Versão : 1.0 | ||
Pré-requisitos : WeightedGridGraph | ||
Pattern.Singleton | ||
Membros : Lorena B Bassani | ||
""" | ||
from .Patterns.Singleton import Singleton | ||
from .PathPlanning.Graph import WeightedGridGraph | ||
|
||
|
||
class Campo(WeightedGridGraph, Singleton): | ||
|
||
def __init__(self, *args, **keyargs): | ||
pass | ||
|
||
def inicializa(self, celulasX, celulasY, dimX = 150, dimY = 130): | ||
if not hasattr(self, "grade"): | ||
WeightedGridGraph.__init__(self, celulasX, celulasY) | ||
self.__h = (dimX/(celulasX - 1), dimY/(celulasY - 1)) | ||
|
||
@property | ||
def tamanhoCelula(self): | ||
return self.__h | ||
|
||
def transform2Cart(self, cel): | ||
# TODO : Ver Se as grades possuem as mesmas características de crescimento de coordenadas | ||
i, j = WeightedGridGraph.transform2Cart(self, cel) | ||
return (i*self.__h[0], j*self.__h[1]) | ||
|
||
def transform2Grid(self, cel): | ||
# TODO : Redefinir trasnformação | ||
x, y = cel | ||
return WeightedGridGraph.transform2Grid(self, (x//self.__h[0], y//self.__h[1])) | ||
|
||
def cost(self, start, goal): | ||
# TODO : Redefinir custo para variar com a proximidade a um obstáculo | ||
return WeightedGridGraph.cost(self, start, goal) |
43 changes: 43 additions & 0 deletions
43
new_scripts/ComportamentosJogadores/ComportamentoAtacante.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
""" Nome do módulo : ComportamentoAtacante | ||
Ano de criação : 2019/10 | ||
Descrição do módulo : Comportamento de Atacante para Jogadores | ||
Versão : 1.0 | ||
Pré-requisitos : IComportamento | ||
Geometria | ||
Mundo, Arena, Lado | ||
Jogador | ||
Ball | ||
math | ||
Membros : Lorena Bassani | ||
""" | ||
from .IComportamento import IComportamento | ||
from ..Geometria import Ponto | ||
from ..Mundo import Mundo, Arena, Lado | ||
from ..Jogador import Jogador | ||
from ..Ball import Ball | ||
import math as m | ||
|
||
class ComportamentoAtacante(IComportamento): | ||
def __init__(self): | ||
IComportamento.__init__(self) | ||
|
||
def definirObjetivo(self, jogador : Jogador, mundo : Mundo): | ||
ball = mundo.ball | ||
if ball.ponto.distancia(jogador.ponto) > 30: | ||
x, y = ball.posicao | ||
# Se posicionar antes da bola | ||
if mundo.lado == Lado.DIREITO: | ||
x += 3.35 | ||
else: | ||
x -= 3.35 | ||
# Se a bola estiver acima do meio de campo, se posicionar acima dela | ||
if y < Arena.marcacoes["Meio"].y: | ||
y -= 3.35 | ||
else: | ||
y += 3.35 | ||
return Ponto(x, y) | ||
elif ball.ponto.distancia(jogador.ponto) > 5: | ||
return ball.ponto | ||
else: | ||
resp = Arena.golEsquerdo["Meio"] if mundo.lado == Lado.ESQUERDO else Arena.golDireito["Meio"] | ||
return resp |
Oops, something went wrong.