Projeto Very Small Size Soccer Simulation (V4S) pelo Webots, utilizando comunicação tcp/ip.
Base de uma simulação de um time de Very Small Size Soccer feita no webots. Os robôs receberão os comandos através de protocolo tcp/ip e o simulador irá rodar a partida.
A ideia é poder simular de forma realista e personalizável o time de Very Small Size Soccer da ERUS, mas pode ser modificada para simular outros robôs de Very Small Size Soccer.
De acordo com o manual de referência do Webots:
"A PROTO node is defined in a PROTO file. A PROTO file ends with a .proto extension. It lists the fields of the PROTO and defines how these fields impact the underlying object which is defined using base nodes and/or PROTO nodes."
Neste projeto estão definidos quatro PROTOs. Neles, temos alguns campos que podem ser modificados:
- fieldName : String
O nome do objeto v4s_soccer_field - fieldTexture : [url]
url da textura do campo
- supervisorRange : float
- supervisorBaudRate : int
- robotController : String
- translation : float[3]
Posição do objeto na simulação - rotation : rotation
Rotação do objeto na simulação - radius : float
Raio da bola - mass : float
Massa do objeto
- translation : float[3]
Posição do objeto na simulação - rotation : rotation
Rotação do objeto na simulação - bodyMass : float
Massa do corpo do robô - wheelsMass : float
Massa de cada roda - robotController : String
Controlador (código) do robô - robotName : String
Nome do robô - robotAppearance : Appearance
Aparência do robô - wheelsAppearance : Appearance
Aparência de cada roda - synchronization : Boolean
Os controles disponíveis neste projeto permitem controlar os robôs de very small size soccer de forma remota através de protocolo tcp/ip. Os robôs abrem cada um uma porta de acordo com seu time e id:
Time/id | 1 | 2 | 3 |
---|---|---|---|
Blue | 40001 | 40002 | 40003 |
Yellow | 30001 | 30002 | 30003 |
E utilizam JSON-RPC, um protocolo de chamada de procedimento remoto codificado em JSON, para responder aos comandos. Para fazer um robô mover-se, basta enviar para o endereço dele um objeto JSON:
{
'method' : 'move',
'params' : [vel-dir, vel-esq],
'jsonrpc' : '2.0',
'id' : id
}
Para controlar e obter informações da simulação, um controle é aberto na porta 4002. Os serviços disponíveis são:
- stop_sim : parar a simulação
- start_sim : iniciar a simulação
- reset_sim : reiniciar a simulação
- reset_objects : reposicionar os objetos na posição inicial
- get_state : obter estado de jogo (responde um dict python)
E para conseguir as imagens da câmera, o método utilizado é get_frame, onde você pode utilizar com o parâmetro "array" para conseguir a imagem como um array tridimensional de inteiros com os valores RGB de cada pixel da imagem. As imagens são 240px x 200px. Um exemplo da chamada é:
{
'method' : 'get_frame',
'params' : ['array'],
'jsonrpc' : '2.0',
'id' : id
}
O VSSS-ERUS é uma equipe dedicada a implementação do desafio Very Small Size Soccer para competições. É um projeto da ERUS - Equipe de Robótica da UFES, e diversos documentos sobre o projeto podem ser encontrados no site da equipe.
- Site da ERUS : http://erus.ufes.br/
- E-mail da ERUS : [email protected]
- E-mail do VSSS-ERUS : [email protected]