Projeto

Geral

Perfil

Ações

Atividade #666

Fechada

Realizar comunicação entre o software estatístico e a IA

Adicionado por Nicolas Oliveira mais de 6 anos atrás. Atualizado aproximadamente 6 anos atrás.

Situação:
Fechada
Prioridade:
Normal
Atribuído para:
Início:
16/04/2018
Data prevista:
21/04/2018

Descrição

Acho que a melhor ideia é utilizarmos protocolo protobuf na comunicação entre os módulos através de UDP. A tarefa #623 contém alguns links interessantes sobre protobuf.

Deve-se definir como será a mensagem, quais dados receberemos da IA e o que enviaremos a ela.
Definir a mensagem até a próxima semana.


Arquivos

picture47-2.png (46,8 KB) picture47-2.png Lucas Germano, 24/04/2018 14:48 h
picture47-3.png (38,2 KB) picture47-3.png Lucas Germano, 24/04/2018 14:48 h
Ações #1

Atualizado por Lucas Germanomais de 6 anos

Ontem eu e o Nicolas conseguimos realizar a comunicação entre o SOS, que agora está em um novo repositório, com a IA. O protocolo utilizado foi o protobuff e foi tomado como base as VI's de comunicação já existentes no projeto. Nesse primeiro protótipo de comunicação, foram definidas duas mensagens:

message events_flags{
repeated flag AI_flag = 1;
}

message flag{
required uint32 id = 1;
required bool event_flag = 2;
*}*

Para comunicar os dados efetivamente faltou um decoder para booleanos, que não existe nas VI's feitas atualmente. Até que o decoder de booleanos esteja pronto, será utilizado um inteiro no seu lugar (representando 0 ou 1). A missão agora é aprender a fazer este decoder. Um material pra entender como funciona o encoding/decoding está no próprio site do google e pode ser encontrado [aqui](https://developers.google.com/protocol-buffers/docs/encoding).
Futuramente também será enviado para o SOS uma mensagem com os dados dos robôs, como posição e velocidade.

Ações #2

Atualizado por Nicolas Oliveiramais de 6 anos

Uma ideia q o luciano me deu hoje e eu achei muito boa é a de ao invés de enviarmos booleanos enviarmos um inteiro. Mas cada bit desse inteiro seria uma flag, começando pelo menos significativo. E os que n forem flags mandamos zero. Assim, mandando apenas um inteiro, já temos 32 flags. O pacote fica muito mais simples e leve.

Atualizado por Lucas Germanomais de 6 anos

As mensagens principais foram redefinidas da seguinte forma:

message AI_State{
required uint32 flags = 1;
repeated robot our_robots = 2;
}
message Enemy_State_And_Ball{
required ball ball = 1
repeated robot enemy_robots = 2;
}

Foram criadas duas mensagens, pois como as mensagens são muito grandes, estava dando erro quando se colocava tudo em uma única porta. As outras sub-mensagens são:

message robot{
required uint32 id = 1;
required uint32 function = 2;
required robot_cinematics cinematics = 3;
optional robot_destination destination = 4;
optional robot_commands commands = 5;
}
message cinematics{
required double x = 1;
required double y = 2;
required double orientation = 3;
required double est_vx = 4;
required double est_vy = 5;
}
message destination{
required double dest_x = 1;
required double dest_y = 2;
required double dest_orientation = 3;
required double dest_x_kick = 4;
required double dest_y_kick = 5;
}
message commands{
required double v_tangent = 1;
required double v_normal = 2;
required double v_ang = 3;
required double kick_x = 4;
required double kick_z = 5;
required uint32 dribble = 6;
}
message ball{
required double x = 1;
required double y = 2;
required double vel_x = 3;
required double vel_y = 4;
}

O nome do arquivo que deve ser aberto no novo repositório SSL-SOS é o "SOS main.vi". Ele contém uma parte que deve ser colocada as duas novas portas:

![](picture47-2.png)

No SSL Vision Log Player, na aba TX info as mesmas portas devem ser utilizadas e o Server Adress deve também ser colocado, que é o IP do computador que estará rodando o SOS.

![](picture47-3.png)

Com isso, todas as informações sobre os eventos (toque, chute, etc..), bola, robôs amigos e robôs inimigos já estão sendo passadas para a SOS. Fora alguns outros detalhes, que serão consertados e implementados, a comunicação já está pronta, ou seja, é fundamental pensar como os dados estatísticos serão usados na inteligência e implementar também essas mudanças.

Ações #4

Atualizado por Luciano Barreiramais de 6 anos

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

Atualizado por Nicolas Oliveiramais de 6 anos

Já foi implementada alguma comunicação de volta do SOS para a IA? Ou pelo menos planejada?
Se sim descrever aqui.

Ações #6

Atualizado por Lucas Germanoaproximadamente 6 anos

  • Situação alterado de Em andamento para Fechada

A comunicação da SOS de volta para a IA já foi implementada, porém ainda temos que planejar melhor como será esse uso, atualmente manda-se um inteiro. Após a LARC pretendemos usar intensificadamente o módulo estatístico.

Ações

Exportar para Atom PDF