Atividade #666
FechadaRealizar comunicação entre o software estatístico e a IA
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
Atualizado por Lucas Germano há mais 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.
Atualizado por Nicolas Oliveira há mais 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 Germano há mais de 6 anos
- Arquivo picture47-2.png picture47-2.png adicionado
- Arquivo picture47-3.png picture47-3.png adicionado
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.
Atualizado por Luciano Barreira há mais de 6 anos
- Versão ajustado para RoboCup 2018
Atualizado por Nicolas Oliveira há mais de 6 anos
Já foi implementada alguma comunicação de volta do SOS para a IA? Ou pelo menos planejada?
Se sim descrever aqui.
Atualizado por Lucas Germano há aproximadamente 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.