Projeto

Geral

Perfil

Ações

Atividade #1206

Fechada

Receber todas as informações que vem no pacote do juiz

Adicionado por Gabriel Borges da Conceição mais de 4 anos atrás. Atualizado aproximadamente 4 anos atrás.

Situação:
Fechada
Prioridade:
Normal
Início:
26/10/2019
Data prevista:
06/03/2020

Descrição

Introdução
Houve uma atualização dos parâmetros enviados como referee da SSL - a tarefa então serve para abranger também a leitura dos novos dados e adequar às alterações da nova versão.
Os pacotes transmitidos sob o protocolo UDP durante a competição são tratados pelo componente SSLUDPreceiver no nosso projeto, que extrai o conteúdo desses pacotes e as remete ao decodificador (exibido nas fotos abaixo).
O decodificador serializa os dados hexadecimais de acordo com os formatos das variáveis do projeto.

Objetivo
Corrigir alguns dos dados obtidos no componente para adequar ao novo padrão de transmissão

Obs.: Observações:

Arquivos

Referee3.png (30,2 KB) Referee3.png Gabriel Borges da Conceição, 14/02/2020 12:48 h
Referee4.png (30,7 KB) Referee4.png Gabriel Borges da Conceição, 14/02/2020 12:48 h
Referee1.png (41,1 KB) Referee1.png Gabriel Borges da Conceição, 14/02/2020 12:48 h
Referee2.png (50,5 KB) Referee2.png Gabriel Borges da Conceição, 14/02/2020 12:48 h
picture747-2.png (73,2 KB) picture747-2.png Série até o momento do protobuf de Decode SSL Wrapper Package.vi Gabriel Pinheiro Teodoro, 14/03/2020 21:58 h
picture747-3.png (47,8 KB) picture747-3.png Série até o momento do protobuf de SSL detection frame.vi Gabriel Pinheiro Teodoro, 14/03/2020 21:58 h
Screen Shot 2020-03-14 at 20.04.55.png (381 KB) Screen Shot 2020-03-14 at 20.04.55.png Gabriel Pinheiro Teodoro, 14/03/2020 23:05 h
Screen Shot 2020-03-14 at 20.02.55.png (166 KB) Screen Shot 2020-03-14 at 20.02.55.png Gabriel Pinheiro Teodoro, 14/03/2020 23:05 h
Screen Shot 2020-03-14 at 20.08.01.png (469 KB) Screen Shot 2020-03-14 at 20.08.01.png Gabriel Pinheiro Teodoro, 14/03/2020 23:10 h
Screen Shot 2020-03-14 at 20.08.21.png (83,3 KB) Screen Shot 2020-03-14 at 20.08.21.png Gabriel Pinheiro Teodoro, 14/03/2020 23:10 h
Ações #1

Atualizado por Gabriel Borges da Conceiçãomais de 4 anos

  • Título alterado de Receber todos os comandos do juiz para Receber todas as informações que vem no pacote do juiz
Ações #2

Atualizado por Gabriel Borges da Conceiçãomais de 4 anos

  • Descrição atualizado(a) (diff)
  • Data prevista ajustado para 06/03/2020
  • Atribuído para ajustado para Gabriel Pinheiro Teodoro

Você deve aprender como funciona o protobuf do google para entender a decodificação: https://robocup-ssl.github.io/ssl-refbox/protocol.html

A mensagem do juiz é especificada em: https://github.com/RoboCup-SSL/ssl-refbox/blob/master/referee.proto

Ações #3

Atualizado por Gabriel Borges da Conceiçãomais de 4 anos

Criei a branch refereeCorrection para ser realizada a tarefa: https://github.com/roboime/SSL_AI/tree/refereeCorrection

Atualizado por Gabriel Borges da Conceiçãomais de 4 anos

A parte do código responsável por essa decodificação é:
![](Referee1.png)

![](Referee2.png)

![](Referee3.png)

![](Referee4.png)

Repare que esses inteiros entrando nas VIs são a chave para cada informação: packet_timestamp, stage, etc

Ações #5

Atualizado por Nicolas Oliveiramais de 4 anos

Germano, orientar esta tarefa. Tarefa relatimente simples (pra quem sabe protobuf) e importante.
Delagar pra alguém q possa usar esse conhecimento em outras tarefas.

Ações #6

Atualizado por Gabriel Pinheiro Teodoromais de 4 anos

  • Descrição atualizado(a) (diff)
Ações #7

Atualizado por Gabriel Pinheiro Teodoromais de 4 anos

  • Descrição atualizado(a) (diff)

Gabriel Borges da Conceição escreveu:

Quickstart:
  • Tarefa associada à branch refereeCorrection
  • Algumas informações vindas do pacote do juiz não são corretamente decodificadas pelo nosso código, como cartões, por exemplo.
  • Há algumas redundâncias no processamento dos bits obtidos no element do referee
  • Dados recebidos são serializados em protobuf (está bem documentado no link: https://developers.google.com/protocol-buffers/docs/encoding)

Objetivo
Aprimorar o processamento dos bits e corrigir alguns dos dados obtidos no componente

Observações:
Ações #8

Atualizado por Gabriel Pinheiro Teodoromais de 4 anos

  • Descrição atualizado(a) (diff)
Ações #9

Atualizado por Gabriel Pinheiro Teodoromais de 4 anos

  • Descrição atualizado(a) (diff)
Ações #10

Atualizado por Gabriel Pinheiro Teodoromais de 4 anos

  • Descrição atualizado(a) (diff)
Ações #11

Atualizado por Gabriel Pinheiro Teodoromais de 4 anos

Desenvolvimento

Precisei, primeiramente, de me ambientar melhor ao projeto antes de começar a fazer mudanças efetivas e, após estudar melhor os componentes, pude sintetizar a resolução dessa tarefa da seguinte forma:

Basicamente, precisamos editar os decodificadores a partir do componente Decode SSL Wrapper Package - uma parte da informação é particionada no SSL detection frame, a outra no SSL geometry data.
Em cada um destes dois componentes, precisamos adequar os índices da protobuf ao novo padrão usando os componentes de serialização de acordo com os tipos de variáveis presentes (podem ser tipos primitivos ou até structs, conforme exemplificados na úlitima foto pelas vis com nome "proto").
Na entrada de cada componente, devemos inserir o conteúdo proveniente do element e um índice de uma das variaveis do protobof. Como saída, teremos uma partição do valor do conteúdo, que corresponde à variável correspondente no índice da protobuf, e outra partição composta pelos bits restantes, que devem continuar na entrada do próximo componente de serialização.

Ações #12

Atualizado por Gabriel Borges da Conceiçãomais de 4 anos

Agora baixe o ssl-game-controller (programa do juiz) e já comece a testar pra identificar os erros e também conferir cada alteração.

Ações #13

Atualizado por Lucas Germanomais de 4 anos

Acho que agora você tem que colocar o protobuff atual e o mais novo lado a lado e pensar o que você deve fazer. Tem muitas semelhanças e basicamente vai ser só uma reestruturação das VI's, pois a decodificação de cada tipo primitivo já foi feita, ou seja, a estrutura toda já está feita, você só precisa reorganizar.

Cola o protobuff atual do lado do protobuff novo, coloca como uma imagem aqui nessa tarefa e fala o que você vai ter que fazer/mudar/adicionar na programação. (Faz isso antes de começar a programar)

Ações #15

Atualizado por Gabriel Pinheiro Teodoromais de 4 anos

  • Descrição atualizado(a) (diff)

Atualizado por Gabriel Pinheiro Teodoromais de 4 anos

Os parâmetros de comunicação da RoboCup:

-Associado ao geometry (https://github.com/RoboCup-SSL/ssl-vision/blob/master/src/shared/proto/messages_robocup_ssl_geometry.proto):

![](Screen Shot 2020-03-14 at 20.04.55.png)

-Associado ao detection frame (https://github.com/RoboCup-SSL/ssl-vision/blob/master/src/shared/proto/messages_robocup_ssl_detection.proto):

![](Screen Shot 2020-03-14 at 20.02.55.png)

Os parâmetros de comunicação do nosso projeto:

-Associado ao SSL geometry data.vi:

![](Screen Shot 2020-03-14 at 20.08.01.png)

-Associado ao SSL detection frame.vi:
![](Screen Shot 2020-03-14 at 20.08.21.png)

Como podemos ver, os parâmetros coincidem com os valores dos parâmetros definidos pela série da competição. Vamos testar, agora, a partir do emulador da SSL (https://github.com/RoboCup-SSL/ssl-game-controller) para verificar eventuais erros de transmissão

Ações #17

Atualizado por Gabriel Pinheiro Teodoromais de 4 anos

Consegui instalar o SSL-game-controller para simular os eventos e também instalar o novo ssl-vision-client! Mas estou tendo problemas para selecionar as portas dos processos para servir as aplicações: a princípio, parece que o ssl-game-controller solicita que a porta 8082 seja destinada ao processo da ssl-vision-client para que consiga simular o jogo, mas essa porta parece estar sendo utilizada por algum outro processo no meu computador. Tentei visualizar o PID do processo executando no terminal:
`sudo lsof i:8082`
Mas não aparece o identificador.
Parece que 'é possível também selecionar a porta diretamente antes de servir a aplicação executando:
`yarn run serve -
--port 8082`
Mas, como esta porta não está disponível no momento, a aplicação está selecionando a porta 8083 para servir :(

Ações #18

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 4 anos

  • Atribuído para alterado de Gabriel Pinheiro Teodoro para Gabriel Borges da Conceição
Ações #19

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 4 anos

  • Situação alterado de Em andamento para Fechada
Ações

Exportar para Atom PDF