Atividade #1206
FechadaReceber todas as informações que vem no pacote do juiz
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
- 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 nos link: https://developers.google.com/protocol-buffers/docs/encoding e https://github.com/RoboCup-SSL/ssl-vision/wiki/communication)
- Versão do LabView 2019
- Implementado em OSX
- Se for preciso criar uma protobuf message manualmente, podemos estudar melhor pelo link: https://github.com/smithed/experiments/tree/master/Protocol%20Buffers
Arquivos
Atualizado por Gabriel Borges da Conceição há aproximadamente 5 anos
- Título alterado de Receber todos os comandos do juiz para Receber todas as informações que vem no pacote do juiz
Atualizado por Gabriel Borges da Conceição há quase 5 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
Atualizado por Gabriel Borges da Conceição há quase 5 anos
Criei a branch refereeCorrection para ser realizada a tarefa: https://github.com/roboime/SSL_AI/tree/refereeCorrection
Atualizado por Gabriel Borges da Conceição há quase 5 anos
- Arquivo Referee4.png Referee4.png adicionado
- Arquivo Referee3.png Referee3.png adicionado
- Arquivo Referee2.png Referee2.png adicionado
- Arquivo Referee1.png Referee1.png adicionado
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
Atualizado por Nicolas Oliveira há mais 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.
Atualizado por Gabriel Pinheiro Teodoro há mais de 4 anos
- Descrição atualizado(a) (diff)
Atualizado por Gabriel Pinheiro Teodoro há mais 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
Observações:
Aprimorar o processamento dos bits e corrigir alguns dos dados obtidos no componente
- Versão do LabView 2019
- Implementado em OSX
- Se for preciso criar uma protobuf message manualmente, podemos estudar melhor pelo link: https://github.com/smithed/experiments/tree/master/Protocol%20Buffers
Atualizado por Gabriel Pinheiro Teodoro há mais de 4 anos
- Descrição atualizado(a) (diff)
Atualizado por Gabriel Pinheiro Teodoro há mais de 4 anos
- Descrição atualizado(a) (diff)
Atualizado por Gabriel Pinheiro Teodoro há mais de 4 anos
- Descrição atualizado(a) (diff)
Atualizado por Gabriel Pinheiro Teodoro há mais 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.
Atualizado por Gabriel Borges da Conceição há mais 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.
Atualizado por Lucas Germano há mais 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)
Atualizado por Gabriel Pinheiro Teodoro há mais de 4 anos
- Arquivo picture747-2.png picture747-2.png adicionado
- Arquivo picture747-3.png picture747-3.png adicionado
Atualizado por Gabriel Pinheiro Teodoro há mais de 4 anos
- Descrição atualizado(a) (diff)
Atualizado por Gabriel Pinheiro Teodoro há mais de 4 anos
- Arquivo Screen Shot 2020-03-14 at 20.04.55.png Screen Shot 2020-03-14 at 20.04.55.png adicionado
- Arquivo Screen Shot 2020-03-14 at 20.02.55.png Screen Shot 2020-03-14 at 20.02.55.png adicionado
- Arquivo Screen Shot 2020-03-14 at 20.08.01.png Screen Shot 2020-03-14 at 20.08.01.png adicionado
- Arquivo Screen Shot 2020-03-14 at 20.08.21.png Screen Shot 2020-03-14 at 20.08.21.png adicionado
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
Atualizado por Gabriel Pinheiro Teodoro há mais 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` --port 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 -
Mas, como esta porta não está disponível no momento, a aplicação está selecionando a porta 8083 para servir :(
Atualizado por Gabriel Borges da Conceição há mais de 4 anos
- Atribuído para alterado de Gabriel Pinheiro Teodoro para Gabriel Borges da Conceição
Atualizado por Gabriel Borges da Conceição há mais de 4 anos
- Situação alterado de Em andamento para Fechada