Skip to content

SPL Network

Este documento visa a descrever o funcionamento da rede do SPL, da comunicação com Game Controller e futuramente entre robôs.

Game Controller

Atualmente, toda a comunicação do SPL ocorre por IPv4, mas a maior parte também é compatível com IPv6.

Todo o tutorial de instalação e utilização do GameController está no repositório. Este documento explica o funcionamento e as especificações da comunicação.

A função deste programa é agir como árbitro da partida, registrando eventos, gols, penalidades, etc. Ele também é responsável por enviar mensagens de controle para os robôs, como início e fim de jogo, mudanças de estados (mais detalhes em Estados do Robô), além de receber mensagens de status dos jogadores. O Game Controller comunica com os jogadores por três canais:

  • Manda messagens de controle na frequência de 2Hz (transmissão UDP pela porta 3838, num formato especificado pela struct RoboCupGameControlData no código fonte do GC). Essas mensagens de controle nem sempre representam o estado atual do jogo, especialmente depois de um gol, ou a transição para o estado playing. Depois destes eventos o estado anterior é mantido por até 15 segundos, ou até outro evento que não poderia ocorrer neste estado "falso".
  • Recebe mensagens de status dos jogadores no intervalo de frequência de 0.5Hz até 2Hz (UDP Unicast na porta 3939, formato especificado pela struct RoboCupGameControlReturnData).
  • Recebe mensagens de time dos robôs (UDP Broadcast porta 10000 + número do time, até 128 bytes de payload com formato arbitrário).

Comunicação Geral

Esse tópico é baseado no livro de regras do SPL 2024. Membros devem se manter informados para possíveis mudanças.

Como citado anteriormente, a comunicação entre os robôs é feita por IPv4 e IPv6. A estrutura do IP segue o padrão 10.<interface>.<time>.<número> com a interface sendo 0 para WiFi e 1 para Ethernet. O número do time é 47, e o número do robô varia de acordo com o jogador. Então, por exemplo, o robô 13 da Rinobot comunicando via WiFi teria o IP 10.0.47.13. O número do robô é configurado na geração da imagem do Robô, no arquivo meta-hulks/recipes-hulks/network-config/network-config/id_map.json.

Há um limite de 1200 pacotes UDP que podem ser transmitidos durante o jogo. Esse limite é aumentado em 60 para cada minuto de acréscimo do jogo. Há penalidades para o time que exceder o limite.

Comunicação entre Robôs

TODO