Giter Site home page Giter Site logo

fira_thundervolt's Introduction

🔥 FIRA ThunderVolt ⚽

pytest CI

Implementação especial do ThunderVolt para o simulador FIRASim

Ambiente virtual de Python

Para rodar o projeto em um ambiente virtual com o módulo venv, primeiramente instale-o da seguinte forma:

sudo apt install python3-venv

Então para criar o abiente virtual faça:

python3 -m venv venv

Então para ativar o ambiente virtual pelo bash, faça:

source ./venv/bin/activate

Já pelo fish, faça:

source ./venv/bin/activate.fish

Por fim, caso o arquivo requirements.txt não exista ou caso seja necessário atualizá-lo, com todas as depências necessárias instaladas manualmente no ambiente virtual, gere o arquivo fazendo:

pip3 freeze -l > requirements.txt

Caso o arquivo já exista, para instalar as dependências, rode o seguinte comando:

pip3 install -r requirements.txt

Para desativar o ambiente virtual, rode no terminal:

deactivate

Rodando o pacote

Para rodar o pacote, estando na raiz do repositório, faça o seguinte:

python3 -m thundervolt

Rodando os testes

Testes de integração

Para rodar os testes de integração, rode o seguinte comando:

python3 ./integration_tests/nome_do_teste.py

Testes unitários

Para rodar os testes unitários, rode o seguinte comando:

python3 -m pytest

fira_thundervolt's People

Contributors

felipegdm avatar gabrielcosme avatar lucas-pvg avatar lucashaug avatar lucastrschneider avatar ricardohonda avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

fira_thundervolt's Issues

Controladores lineares

Essa issue só ta aqui para depois da iron cup, pq por enquanto as coisas estão funcionando.

Mas o problema é que nas ações que tem um controlador linear, nós sempre usamos a distancia até o ponto que queremos ir, e distancia nesse caso é sempre positiva. Aaaacho que isso ta fazendo com que o termo integrativo do pid sempre fique somando, pq ele nunca é negativo.
Teria que ver um jeito de mudar isso pro termo integrativo não explodir. Por enquanto, limitando o max_integrative e resetando o controlador quando a ação é concluida parece estar mitigando esse problema.

Erro do get ball zerar a direção do campo

Só registrando aqui um errinho do get ball que a gente percebeu quando tava implementando a função de update do campo na versão em C++.

allowed_direction = utils.versor(ball_to_goal) * (data.BALL_RADIUS + 2 * data.ROBOT_SIZE)

O problema é com esse allowed_direction, o problema não é nessa linha aí que coloquei, só pra ficar fácil de achar o lugar.

Mas esse allowed_direction, em momentos que a bola tava nos cantos do campo do VSSS, ele tava virando um vetor [0, 0], porque o vetor em si tinha só componente y quando a gente criava ele, o que faria sentido porque idealmente o robô deveria chegar por trás da bola e empurrar ela pro gol. Porém depois de criar o vetor a gente mexia no y dele caso o robô estivesse muito próximo dá parede pra que ele tentasse chegar de lado, mas ele só tentaria isso caso tivesse componente x no allowed_direction, o que no caso dos cantos não é verdade, fazendo com que a gente zerasse o vetor de direção do campo.

O melhor jeito é manter a magnitude do vetor e recalcular o x para o novo valor de y que a gente calcula de acordo com a distância da parede.

Erro sempre positivo no controlador linear

response_lin = -self.controller_lin.update(abs(goal_proj_line))

Só deixando isso aqui registrado, mas esse abs() ali sendo passado para o controlador faz com que a gnt praticamente não consiga usar ele direito, pq o erro é sempre positivo, então o integrativo explode, mesmo quando não deveria.

Isso estava fazendo o robô oscilar bastante em torno do ponto de equilíbrio, deixava bem instável.

Na versão em C++ esse problema foi corrigido em https://github.com/ThundeRatz/thundervolt/commit/5c57c6412b6a85a12fbb62636182e3067b0fdd4f

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.