Skip to content

agaf2/project-unification

 
 

Repository files navigation

project-unification 🇧🇷 🤖⚽

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;

Descrição

Arquitetura

Módulos com a marcação "done" são minimamente funcionais, enquanto os com a marcação "todo" é esperado que sejam implementados;

Vision

  • 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;

Processing

  • 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;

Acting

  • 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;

Bibliotecas Úteis

  • 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 classe Extends<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 container Robots, que trata-se da especialização de um QVector para robôs, provendo assim, métodos úteis tais como .findById(int id);


Processing Modules

MouseAndKeyboard

  • 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:

SSL (Default Keys):

GoToPoint RotatePoint RotateOnSelf
tecla T tecla U tecla I

VSS (Default Keys):

GoToPoint RotateCCW RotateCW
tecla T tecla Z tecla X

TurnedOff

  • O Módulo TurnedOff existe apenas para "desligar" um robo;

Dependências

  • 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;
  • Google Protobuf;

  • OpenGL;

  • boost:

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

Download do repositório

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

Setup

  • 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

About

Projeto para a seletiva para o robo Cin

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 90.0%
  • C 4.1%
  • CMake 3.2%
  • Python 2.7%