GithubHelp home page GithubHelp logo

malp's Introduction

MALP

MALP é o sistema da equipe utilizado na LARC 2022 que realiza a integração entre o ALP-Winners (sistema utilizado na LARC 2021 remota) e MainSystem (sistema utilizado na LARC 2019 presencial). O MainSystem fornece a interface gráfica para configuração dos paramêtros da visão e o ALP-Winners, a estratégia, controle e comunicação.

A visão do MainSystem se comunica com o ALP-Winners utilizando sockets. ALP-GUI é uma interface criada para auxiliar no desenvolvimento do ALP-Winners, para executar o MALP não é necessário executar ALP-GUI.

Como executar MALP

  1. Instale as dependências necessárias para os dois sistemas utilizando o pip na pasta raiz
pip install -r requirements.txt
  1. Digitar no terminal

./run.sh

Isso irá executar o sistema com a configuração padrão de porta 5001. Caso haja algum problema com essa porta, é possível executar o MALP com o comando

./run.sh 5002

Ou com qualquer outra porta que desejar.

Importante!!

  • A interface gráfica do MainSystem não é finalizada quando o bash run.sh é finalizado no terminal
  • Caso queira fazer debug usando prints, é recomendado colocar no print o nome do sistema proveniente ou executar os sistemas manualmente em terminais separados
  • Caso queira usar outros argumentos antes de executar, basta alterar o arquivo run.sh na linha 10

Comunicação MALP com robô

A comunicação do MALP com o robô é feita por meio de sinal de rádio nrf24l01.

Para isso, conectamos um módulo ESP32 + rádio nrf24l01. O firmware para a ESP32 pode ser encontrado neste repositório: Communication. As informações do MALP são enviadas por sinal serial a esse conjunto ESP32 + radio nrf24l01.

As informações enviadas pelo ESP32 + radio nrf24l01 são recebidas por um nrf24l01 presente no robô. O firmware responsável por esse rádio pode ser encontrado no repositório Firmware.

Atenção!

Erros na comunicação são comuns. Segue uma lista de problemas e possíveis soluções:

  • O robô está ligado, esperando pela comunicação com o conjunto ESP32 + nrf24l01, fazendo movimentação senoidal (apenas andando para frente e para trás). O conjunto está conectado no computador e está ligado mas nada muda. Nesse caso, basta desconectar o cabo USB da ESP32 e conectar novamente. Se o rádio da ESP32 conseguir efetivar a comunicação, o movimento senoidal é interrompido e nesse caso, a comunicação está acontecendo de fato.
  • Pode acontecer da porta serial não ser autorizada pelo computador. Para resolver esse problema, basta digitar no terminal o comando abaixo. P.S.: ttyUSB0 é a porta por onde o rádio tenta conectar com o computador.
sudo chmod a+rw /dev/ttyUSB0

Configuração da camera

No Linux, a camera pode ser configurada usando uma interface gráfica do v4l, camset, disponibilizada nesse repositório do Github. Basta seguir as instruções do repositório para conseguir usar. Lembrar de configurar o PATH caso queira usar o comando camset.

WSL: Caso extra

Caso esteja utilizando WSL, os requirements as vezes podem não instalar nativamente com pip, portanto utilize:

sudo apt-get install python-numpy
sudo apt-get install python-scipy
sudo apt-get install python-pygame
sudo apt-get install python3-serial
sudo apt-get install python3-matplotlib
sudo apt-get install libgtk-3-dev
sudo apt-get install opencv-python
sudo apt-get install python3-opencv
sudo apt-get install python3-cairo

Para rodar, por favor entre em (na ordem dada):

/ALP-Winners python3 src/main.py --port 5001 /MainSystem ./main.py --port 5001

malp's People

Contributors

adornelas avatar mariaclaudia1328 avatar ayssag avatar labm1997 avatar raulmyron avatar

Stargazers

 avatar

Watchers

Gabriel Sousa avatar Izabella Gomes avatar Anderson Barros Rodrigues avatar

malp's Issues

Erro quando tento instalar requirements.txt do MALP

No MALP, quando tento executar o seguinte comando

pip3 install -r requirements.txt

Aparece o seguinte erro

Defaulting to user installation because normal site-packages is not writeable
ERROR: Could not find a version that satisfies the requirement application-utility==1.3.2 (from versions: none)
ERROR: No matching distribution found for application-utility==1.3.2

Corrigir erro no MainSystem

Ao abrir a interface gráfica do MainSystem e nenhuma camera for identificada ou selecionada, ao acessar a página HLC, o seguinte erro aparece:

/MALP/MainSystem/controller/tools/__init__.py:72: RuntimeWarning: divide by zero encountered in scalar divide
  return ((xline-r[0])/v[0])*v[1] + r[1]
/MALP/MainSystem/controller/tools/__init__.py:72: RuntimeWarning: invalid value encountered in scalar multiply
  return ((xline-r[0])/v[0])*v[1] + r[1]
/MALP/MainSystem/controller/control/UFC.py:53: RuntimeWarning: divide by zero encountered in scalar divide
  v1 = amax / np.abs(omega)

Se voltar para a página de Visão, selecionar uma camera, o sistema executa normalmente

Mudar formato da mensagem MS-ALP

Mudar o formato da mensagem que faz a comunicação entre o MainSystem e o ALP. Atualmente é usado uma lista, é necessário trocar para uma estrutura de dados que seja legível no código.
Aviso: aumenta o tempo de processamento do sistema, mas aumenta a legibilidade e manutenabilidade do código.

Alterar comunicação MS-ALP

Mudar a biblioteca que implementa a comunicação MS-ALP (via websocket).
Aberto à possibilidade de outro método ser avaliado e escolhido.

Corrigir finalização do MALP

  • Ao finalizar o MainSystem, finalizar também o ALP
  • Antes de finalizar, o robô tem que parar de executar também
  • Quando iniciar, colocar pra procurar portas automaticamente

Corrigir nome do metodo que envia dados para robo

Descrição

No loop, o nome do metodo que envia as mensagens para o robo ainda está como radio.send, sendo que nossa comunicação no firmware agora é no wifi.

Sugestão

Talvez utilizar um nome mais generico para comunicação com o robo seja melhor, como SerialComunication (para a classe) e para o metodo de envio serial.send

Estudar inversão de campo

  • verificar como é feito no ALP e no MainSystem
  • Decidir em qual sistema será feito
  • Implementar a inversão
  • Testar

Aprimorar debug do radio

Descrição

Incluir argumento no terminal para ajudar no debug ou melhorar as mensagens que sao enviadas pelo radio

Estudar e Documentar Visão e Mundo

Identificar e documentar:

  • Como é feita a homografia
  • Como a bola é identificada
  • Como os jogadores são identificados e diferenciados
  • Como a velocidade, posição e ângulo dos componentes são obtidos

Retirar o corte de campo por dois pontos da visão

Descrição

Na última versão, o processo de corte de campo pode acontecer de duas formas: por dois pontos e por homografia. A tarefa referente a essa issue consiste em retirar o corte por dois pontos e deixar apenas o corte por homografia.

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.