Esse projeto tem como objetivo demonstrar o uso do framework soccer-common, desenvolvido pelo RobôCIn e utilizado nas categorias RobôCup SSL e IEEE VSS;
Módulos com a marcação "done" são minimamente funcionais, enquanto os com a marcação "todo" é esperado que sejam implementados;
-
I: Recebe, a partir de um software externo (ex: grSim, para o SSL e FIRASim para o VSS) as informações correspondentes a visão;
-
A: Realiza a leitura das informações e converte em tipos locais (Field, Ball, Robot);
-
1: Após a conversão em tipos locais, as entidades, ball, allies e enemies são agrupadas em uma classe Frame e enviadas para o módulo seguinte, a classe Field também é enviada de acordo com sua frequência de recebimento;
Nesse projeto, apenas uma demonstração funcional do recebimento de pacotes pelos simuladores é realizada, isto é, não há uma filtragem robusta das informações recebidas, nem cálculos para a obtenção de velocidade e aceleração das entidades;
- B: Nessa etapa é esperado que, a partir das informações recebidas de Frame e Field, exista uma definição de como o robô deve atuar. Nesse projeto, a atuação dos robôs foi abstraída nas classes SSLRobotCommand e VSSRobotCommand;
- 2: Após a definição do que o robô deve fazer, as classes SSLNavigation e VSSNavigation convertem os comandos abstraídos em pacotes interpretáveis pelos simuladores, para que possam realizar efetivamente o comportamento desejado. Os commandos finais para as categorias são as classes existentes no arquivo Command, e ao final do módulo, são enviados para o módulo seguinte;
- II: Como ultima etapa, para cada pacote construído em Processing, um envio para o simulador é realizado, concluindo assim, a realização do comportamento desejado;
-
Geometry: Provê funções úteis para a computação de operações vetoriais e angulares em 2D;
-
Point: A classe
Point
trata-se de um alias para a classeExtends<QPointF>
, que por sua vez, corresponde a uma extensão da classe QPointF, da qual representa um ponto geométrico real (x, y), que pode ser visto como um vetor partindo da origem (0, 0) até a dada posição (x, y);
As funções vetoriais existentes em Geometry podem ser acessadas como funções membro na classe Extends<QPointF>
;
-
Math: Provê funções matemáticas adicionais as existentes na biblioteca padrão;
-
Field: Corresponde a um campo genérico, parametrizado em função das dimensões essenciais:
(length, width, goalDepth, goalWidth, penaltyAreaDepth, penaltyAreaWidth)
, provendo pontos de referência úteis, bem como métodos que consultam o pertencimento de uma entidade para determinadas áreas do campo; -
Entities: Correspondem as classes:
Entity, Robot e Ball
e derivadas, e ao containerRobots
, que trata-se da especialização de um QVector para robôs, provendo assim, métodos úteis tais como.findById(int id)
;
- O Módulo MouseAndKeyboard existe para demonstrar algumas ações default que os robôs podem realizar. Os comandos para o SSL e o VSS podem ser visualizados abaixo:
GoToPoint | RotatePoint | RotateOnSelf |
---|---|---|
tecla T | tecla U | tecla I |
GoToPoint | RotateCCW | RotateCW |
---|---|---|
tecla T | tecla Z | tecla X |
- O Módulo TurnedOff existe apenas para "desligar" um robo;
-
Sistema Operacional: Ubuntu 20.04 LTS ou superior: Qualquer outro sistema operacional pode requerer scripts de instalação diferentes dos fornecidos ou não funcionar;
-
CMake 3.15 ou superior;
-
C++17 ou superior:
- gcc ≥ 9;
- Algumas features utilizadas existem apenas a partir do C++17;
-
Qt Framework 6.1.1 ou superior:
- Algumas dependências requerem o Qt;
-
OpenGL;
todas as dependências requeridas podem ser instaladas através do script:
scripts/setup.py
É recomendado o uso do VSCode IDE;
O VSCode pode ser instalado atráves do comando: $ snap install --classic code
Este repositório possui depedências de outros repositórios, para fazer o download, o clone, do código corretamente e conseguir instalar utilise o seguinte comando:
git clone --recurse-submodules -j4 https://github.com/robocin/project-unification.git
- Para instalar as dependências essenciais do projeto execute no terminal:
cd scripts
sudo ./setup.py --essentials
- Para configurar o VSCode:
cd scripts/ubuntu
./vscode-cpp-essentials.sh
- Ative o formatter seguindo os passos:
- Navegue pela interface nas opções: File > Preferences > settings
- Busque pelo campo "Editor: Default Formatter" em settings e selecione o clang-format como formatter.
O script setup.py requer os comandos apt update
e apt upgrade
funcionando. Caso contrário, vá na pasta scripts/ubuntu e instale manualmente cada um dos scripts desejados
Os scripts essenciais estão listado no arquivo scritps/essentials.txt