Projeto

Geral

Perfil

Ações

Objetivo #623

Fechada

Criar software para análise estatística dos jogos

Adicionado por Lucas Germano quase 7 anos atrás. Atualizado quase 6 anos atrás.

Situação:
Fechada
Prioridade:
Normal
Versão:

Descrição

A idéia será criar um programa no LabView que analise os dados do jogo, em tempo real ou não, e mostre informações relevantes na tela, como: posse de bola, velocidade média e máxima dos robôs, quanto cada robô percorreu ao longo do jogo, média de gols ao longo das partidas, partes do campo que mais possuem a presença dos robôs, etc. Esse software é semelhante a aqueles mostrados nas partidas de futebol. Os prazos determinados foram os seguintes:

01/04: Primeiro protótipo
13/05: Comunicar o módulo estatístico com o módulo das estratégias/jogo
27/05: Utilizar o módulo estatístico na IA


Arquivos

histograma.PNG (13,1 KB) histograma.PNG Nicolas Oliveira, 16/03/2018 16:10 h
mapadecalor.jpg (11,4 KB) mapadecalor.jpg Nicolas Oliveira, 16/03/2018 16:10 h
exemplo.PNG (21,9 KB) exemplo.PNG Luciano Barreira, 16/03/2018 18:50 h
example-gradient.vi (27,2 KB) example-gradient.vi Luciano Barreira, 16/03/2018 18:51 h
exemplo1.PNG (27,9 KB) exemplo1.PNG Luciano Barreira, 16/03/2018 20:27 h
PercentageToRGB.vi (16,8 KB) PercentageToRGB.vi Luciano Barreira, 16/03/2018 20:28 h
example-gradient.vi (26,7 KB) example-gradient.vi Luciano Barreira, 16/03/2018 20:28 h
exemplo2.PNG (23,2 KB) exemplo2.PNG Luciano Barreira, 17/03/2018 13:21 h
usage.PNG (2,84 KB) usage.PNG Luciano Barreira, 17/03/2018 13:25 h
PercentageToRGB.vi (22,2 KB) PercentageToRGB.vi Luciano Barreira, 17/03/2018 13:25 h
picture133-1.png (122 KB) picture133-1.png Lucas Germano, 17/03/2018 16:47 h
Análise Estatística.vi (45,7 KB) Análise Estatística.vi Ricardo Silveira Mendes, 17/03/2018 22:46 h
Exemplo de teste.png (77,6 KB) Exemplo de teste.png Ricardo Silveira Mendes, 18/03/2018 00:58 h
heatmap.png (30,9 KB) heatmap.png Luciano Barreira, 22/03/2018 17:31 h
field2.png (7,53 KB) field2.png Luciano Barreira, 22/03/2018 17:32 h
PercentageToRGB.vi (34,3 KB) PercentageToRGB.vi Luciano Barreira, 22/03/2018 17:36 h
example-gradient.vi (21,5 KB) example-gradient.vi Luciano Barreira, 22/03/2018 17:36 h
Analise Estatística 2.0.vi (54,8 KB) Analise Estatística 2.0.vi Ricardo Silveira Mendes, 23/03/2018 01:26 h
picture764-1.png (61,8 KB) picture764-1.png Ricardo Silveira Mendes, 23/03/2018 01:31 h

Subtarefas 2 (0 aberta2 fechadas)

Atividade #636: Criar VI para desenhar um heatmap no campoFechadaLucas Germano23/03/201817/04/2018Ações
Atividade #695: Criar histograma de erro do chuteFechadaLucas Germano26/04/2018Ações
Ações #1

Atualizado por Lucas Germanoquase 7 anos

Primeiramente pensei em levantar algumas funções que o módulo estatístico deve ter, então preciso de sugestões, coisas que seriam interessantes ver na tela durante um jogo ou informações guardadas para serem analisadas durante vários jogos. Vou dar aqui alguns exemplos:

  • Porcentagem de posse de bola
  • Velocidade média e máxima dos robôs
  • Quanto cada robô percorreu ao longo do jogo
  • Média de gols ao longo das partidas
  • Partes do campo que mais possuem a presença dos robôs

Quanto mais detalhes sobre as funções sugeridas, melhor.

Ações #2

Atualizado por Lucas Germanoquase 7 anos

Outros parâmetros:

  • Qtd de chutes ao gol
  • Precisão ao chutar
  • Qtd de passes certos e errados
  • Qtd de interceptações contra e a favor
  • Qtd de defesas feitas pelo goleiro
  • Qtd de bloqueios feitos por zagueiros
Ações #3

Atualizado por Luciano Barreiraquase 7 anos

Discorrendo um pouco da ideia que tenho de como podemos começar a arquitetar e discutir nossas soluções:

- Primeiro protótipo: sugiro começar com uma modelagem conceitual do fluxo de dados do projeto, que nem colocamos no nosso TDP, e que tecnologias podem ser usadas. Acredito que o LabView tenha o que precisamos, mas é bom conferir isso, até pra ter uma ideia geral de como podemos arquitetar todo o sistema.

- Quanto à comunicação, já adiantando algumas ideias que podem ser oportunas na hora de implementar a comunicação: acredito que na parte de TX e RX (trasmitir e receber), podemos fazer de maneira idêntica ao Fênix (finado SSL-View), recebendo pacotes via UDP e enviando também via UDP (como fazemos com o simulador grSim). O maior desafio acredito ser elaborar um bom protocolo para a transferência de dados. Recomendo uma leitura superficial de como funciona o [Google's Protobuf](https://developers.google.com/protocol-buffers/). Não existe uma espécie de "tradutor" de textos do tipo .proto, que descrevem o formato dos pacotes, em estruturas para [serialização](https://en.wikipedia.org/wiki/Serialization) do protobuf para LabView, mas podemos fazer isso manualmente com codificadores e decodificadores idênticos aos do próprio protobuf, que é o que fazemos. Ou seja, é importante pensarmos em uma primeira versão boa o suficiente para evitar refazer o mesmo trabalho várias vezes. Poderíamos não utilizar o protobuf e definir nosso próprio protocolo, mas isso não só impossibilita extendermos outros módulos à parte de maneira simples como é um esforço desnecessário, pois estaríamos fazendo o mesmo papel que o protobuf. Sugiro também que usemos multicasting, por simplicidade. Desta forma poupa reconfigurações toda vez que for usar o software em conjunto com o Fênix. Enfim, são ideias que quando começarmos a trabalhar nisso podemos voltar, revisar e avaliar. Boa parte das respostas a esses problemas vão surgir enquanto forem percebidas as demandas do sistema.

- Utilizar na IA: depois integrado com a Fênix, é partir pro abraço. Substituir nossos timers e soluções ingênuas pelo processamento estatístico do nosso "Técnico". Analisar os resultados de nossas partidas além do clássico 10x0 na intel antiga, apontando nossos principais defeitos para então analisarmos como solucioná-los.

Atualizado por Nicolas Oliveiraquase 7 anos

Para mostrar a distribuição de probabilidade de encontrar um determinado robô em campo o ideal seria tentar mostrar um mapa de calor (histograma 2D) como o da imagem abaixo:

![](mapadecalor.jpg)

Não sei a viabilidade de se desenhar algo tipo em labview com as VIs nativas, vale uma pesquisa.

E para os dados abaixo o ideal seria utilizar um histograma:

  • Erro na posição de chute. (VI já implementada)
  • Velocidade dos robôs
  • Chance de um robô com um determinado ID estar com a bola
  • Chance de um determinado ID receber um passe
  • Erro entre a posição do goleiro e a posição desejada pra defesa

![](histograma.PNG)

Atualizado por Luciano Barreiraquase 7 anos

Nicolas Oliveira escreveu:

Para mostrar a distribuição de probabilidade de encontrar um determinado robô em campo o ideal seria tentar mostrar um mapa de calor (histograma 2D) como o da imagem abaixo:

![](mapadecalor.jpg)

Não sei a viabilidade de se desenhar algo tipo em labview com as VIs nativas, vale uma pesquisa.

E para os dados abaixo o ideal seria utilizar um histograma:

  • Erro na posição de chute. (VI já implementada)
  • Velocidade dos robôs
  • Chance de um robô com um determinado ID estar com a bola
  • Chance de um determinado ID receber um passe
  • Erro entre a posição do goleiro e a posição desejada pra defesa

![](histograma.PNG)

Dá pra desenhar sim. Consegui aqui:
![exemplo](exemplo.png)
Segue a VI demo.

Atualizado por Luciano Barreiraquase 7 anos

O mais perto que eu cheguei disso foi um algoritmo pra determinar uma cor de temperatura:
http://www.tannerhelland.com/4435/convert-temperature-rgb-algorithm-code/
Usando ele, fica assim:
![](exemplo1.png)

Ações #7

Atualizado por Luiz Renault Leite Rodriguesquase 7 anos

Excelente trabalho, senhores. Apenas complementando, apesar do mapeamento de cores de temperatura sem bem amigável do ponto de vista visual, para um algoritmo de planejamento de trajetória não seria tanto. Neste caso um gráfico grayscale inteiro, de 8 bits, seria extremamente eficiente. Há também a possibilidade de utilizar um grayscale float.

Atualizado por Luciano Barreiraquase 7 anos

Luiz Renault Leite Rodrigues escreveu:

Excelente trabalho, senhores. Apenas complementando, apesar do mapeamento de cores de temperatura sem bem amigável do ponto de vista visual, para um algoritmo de planejamento de trajetória não seria tanto. Neste caso um gráfico grayscale inteiro, de 8 bits, seria extremamente eficiente. Há também a possibilidade de utilizar um grayscale float.

Infelizmente não achei nada nativo do LabView que faça já esse tratamento, usando um u8 no pixmap. Vi que tem o pacote de visão do labview que ajuda nisso, mas dá pra fazer igualando todos os RGB.
Fiz o update da VI pra colocar opção grayscale. Pode ser que para algumas estatísticas um jeito fique melhor de visualizar que outro
Eis o resultado:
![](exemplo2.png)
Pra alternar, basta alterar o Enum de entrada da VI:
![](usage.png)

Ações #9

Atualizado por Lucas Germanoquase 7 anos

Por algum motivo aqui não deu certo, ficou bugado desse jeito com greyscale ou usando temperature:
![](picture133-1.png)

Baixei as VI's do Luciano e usei eles sem mudar nada. Também não consigui entender direito a lógica usada para obeter a combinação da imagem original com o gradiente..

Ações #10

Atualizado por Ricardo Silveira Mendesquase 7 anos

Segue um programa de análise estatística por meio de um histograma da posição do robô no campo. O histograma funciona da seguinte maneira, o usuário indica quantas divisões o campo deve ter no eixo x e no eixo y. A origem do sistema de coordenadas é o canto inferior esquerdo do campo. Dividindo assim o campo como uma matriz. A cada k posições do eixo x do histograma (sendo k a quantidade de divisões que foi escolhida para o eixo x do campo) começa a plotar-se a estatística da próxima linha do campo, indo assim sucessivamente cobrindo todas as posições do campo.

Ações #11

Atualizado por Luiz Renault Leite Rodriguesquase 7 anos

Postar sempre imagens dos resultados.

Ações #12

Atualizado por Ricardo Silveira Mendesquase 7 anos

A imagem é de um teste feito para algumas posições escolhidas em um arquivo teste. Ainda falta atualizar para fazer a leitura correta dos dados dos logs das partidas

Ações #13

Atualizado por Lucas Germanoquase 7 anos

Ricardo, você está usando LabVIEW 2017 né? Não está dando pra abrir a VI aqui, tanto no lab quanto a maioria dos computadores do pessoal é 2016.. Tenta baixar ele, qualquer dúvida me fala.

Ações #14

Atualizado por Luiz Renault Leite Rodriguesquase 7 anos

Sugiro atualizarem para o 2017.

Atualizado por Luciano Barreiraquase 7 anos

Lucas Germano escreveu:

Por algum motivo aqui não deu certo, ficou bugado desse jeito com greyscale ou usando temperature:
![](picture133-1.png)

Baixei as VI's do Luciano e usei eles sem mudar nada. Também não consigui entender direito a lógica usada para obeter a combinação da imagem original com o gradiente..

Germano, acho que com essa nova VI seu problema é resolvido. Tenta usar essa imagem que eu mandar agora como parâmetro, eu peguei da [wiki](https://raw.githubusercontent.com/RoboCup-SSL/ssl-rules/master/img/double-size-field.png) da SSL. Deixei o demo genérico também pro tamanho de imagem. Coloquei um modo novo de cor também, seguindo [esta](https://www.patrick-wied.at/blog/real-time-heatmap-explained) ideia aqui. O resultado foi esse:
![](heatmap.png)
usando essa foto aqui do campo:
![](field2.png)

Infelizmente as funções de manipulação de imagens nativas do LV não têm opção de alpha, só se usar o [Vision Development Module](https://forums.ni.com/t5/Example-Programs/Create-Partial-Transparent-Image-Overlay-Without-VDM/ta-p/3517061). Mas do jeito que tá já da visualizar bem os dados estatísticos. Seguem as VIs atualizadas

Atualizado por Ricardo Silveira Mendesquase 7 anos

O programa que segue lê os pontos estáticos de um log em Excel, calcula a estatística de presença dos robôs baseado nas suas coordenadas x e y e plota as estatísticas em um gráfico 3d em que o campo está nos eixos X e Y e a altura Z representa a estatística de presença dos robôs em uma determinada região (um retângulo de 180mm de lado no eixo X e 200mm de lado no eixo Y). O próximo passo será fazer uma leitura dinâmica de dados que permita recalcular essas estatísticas em tempo real ao fazer novas leituras de posições.

Ações #17

Atualizado por Nicolas Oliveiraquase 7 anos

O log utilizado é o gerado a partir de uma partida real, ou é aquele que vc fez para teste?

Sugiro criar atividades paralelas a esse objetivo para melhorar organização da tarefa.

Ações #18

Atualizado por Lucas Germanoquase 7 anos

Nicolas Oliveira escreveu:

O log utilizado é o gerado a partir de uma partida real, ou é aquele que vc fez para teste?

Sugiro criar atividades paralelas a esse objetivo para melhorar organização da tarefa.

Vou criar a minha atividade de colorir o campo de acordo com as probabilidades. Ricardo criará a sua de calcular a probabilidade com base em logs e com base em tempo real.

Ações #19

Atualizado por Carla Cosenzamais de 6 anos

Sugestões de informações dadas durante as reuniões:
- Ficar calculando a velocidade da bola quando o robô chuta
- Saber se a bola está chegando no outro robô no passe, para aumentar ou diminuir a força

Ações #20

Atualizado por Luciano Barreiramais de 6 anos

  • Versão ajustado para RoboCup 2018
Ações #21

Atualizado por Nicolas Oliveiramais de 6 anos

Gerar uma wiki sobre o módulo estatístico e incluir nela a implementação, como são feitos e pra quem servem os cálculos atuais e incluir um tópico sobre a comunicação.

Ações #22

Atualizado por Lucas Germanomais de 6 anos

Outras possiveis ideias que surgiram na tarefa #702:

Luciano Barreira escreveu:

Estava pensando se o software estatístico não consegue nos otimizar ainda mais essa questão :

- podemos revezar o esforço dos robôs de acordo com o quanto ele se movimentou durante a partida estando naquela posição de center-back, alternando a posição entre stops ou, se pensarmos em uma boa heurística, durante a própria partida.
- detectando deflecções bem sucedidas, podemos priorizar robôs que estão indo bem naquela posição para manter-se lá, já que não temos a garantia que os robôs são isométricos.
- a velocidade máxima e o tempo de resposta dos robôs, podendo ser medidos em tempo real pelo software estatístico, pode nos ajudar a priorizar posições mais dinâmicas.

Ações #23

Atualizado por Lucas Germanoquase 6 anos

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

Exportar para Atom PDF