Simulação no Webots: Criando PROTOs

Neste ano, nossa equipe se deparou um um grande desafio: organizar um torneio de robótica 100% online. Para permitir os desafios virtuais, nós pesquisamos muito e vimos diversas opções, até nos depararmos com o simulador Webots. O Webots é um simulador open source e multiplataforma desenvolvido pela Cyberbotics. Ele simula, de forma muito precisa, o desenvolvimento de sistemas robóticos, permitindo a criação de simulações personalizadas de acordo com as necessidades do projeto.

Figura 01 – Robô do Very Small Size Soccer simulado no Webots, 2020.
Fonte : Lorena Bassani

Depois de explorar e aprender mais sobre o simulador, nossa equipe reparou que ele não apenas seria uma boa forma de executar a categoria do Desafio Erusbot OPEN do VII TRUFES, mas também para o desenvolvimento remoto dos nossos próprios projetos competitivos. Apesar do tanto de bons simuladores disponíveis para Very Small Size Soccer, uma simulação personalizável e com tanto controle por parte da nossa equipe nos motivou a tentar adaptar o sample soccer.wbt para ser uma simulação controlável remotamente por protocolo TCP/IP.

Figura 02 – Simulação de Very Small Size Soccer sendo desenvolvida pela ERUS, 2020.
Fonte: Lorena Bassani

Para abrir os posts sobre o nosso passo a passo para conseguir o resultado preliminar de simulação de Very Small Size Soccer ou para desenvolver um robô da categoria OPEN, começaremos com a criação de PROTOs.

O que são PROTOs

Os PROTOs são como “receitas” de objetos de simulação. Todos os objetos personalizados, como robôs prontos, que o simulador traz são PROTOs. Um projeto pode ter seus próprios PROTOs, e isso facilita em alguns aspectos, uma vez que:

  • Um PROTO é de fácil instanciação em qualquer arquivo world do projeto. Ele será mostrado no wizard de novo Node do mundo, sem necessidade de copiar e colar a definição dele ou de importar via sistema de arquivos.
  • Você pode decidir quais Nodes serão personalizáveis e quais serão permanentes para cada PROTO. Isso permite não só garantir a integridade do modelo, como manter o foco apenas nos atributos que serão de interesse durante a simulação. Por exemplo, no robô de VSSS você pode deixar o formato do robô permanente, mas deixar a massa dele personalizável, e apenas a massa aparecerá no Node do robô instanciado.
  • Um PROTO é facilmente distribuível, e todos os seus colegas de projeto podem trabalhar em cima de robôs iguais de forma fácil, sem precisar que todos o modelem.

Como criar um PROTO rapidamente

A forma mais simples de criar um PROTO a partir de um objeto pronto do simulador é exportar esse objeto (clicando com o botão direito do mouse sobre ele e escolhendo a opção exportar). Ao exportar, o simulador criará um objeto .wbo com toda a definição do objeto. A partir disso, já é possível importar ele em outros arquivos world de simulação, mas ainda não é possível instanciar da forma como queremos. Para isso, o arquivo deve estar na pasta de PROTOs que o simulador criou na inicialização do projeto. Modifique a extensão do arquivo de .wbo para .proto e modifique o conteúdo da seguinte forma:

  • Digite no inicio do arquivo: “PROTO[ ]”
  • Abra chave ‘{‘ antes da definição do robô (conteúdo original do arquivo) e feche ‘}’ após (final do arquivo)

Com isso já é possível instanciar o PROTO, mas não modificar atributos dele. Para modificar algo, você precisa colocar o campo modificável dentro da definição “PROTO [ ]” (dentro dos colchetes), um em cada linha, no formato “field <field type> <field name> <default value>”. Para usá-lo no robô, encontre o local onde o valor será usado e substitua o valor atual por “IS <field name>”. Você pode ver um exemplo disso na nossa adaptação do robô de Very Small Size Soccer no github:

Dark Mode

v4s-webots (this link opens in a new window) by LBBassani (this link opens in a new window)

Projeto Very Small Size Soccer Simulation (V4S) pelo Webots, utilizando comunicação tcp/ip.

Você pode ver mais detalhes sobre a definição de PROTOs, além de quais tipos de field podem ser usados, na página PROTO Definition da documentação do Webots, e ver mais tutoriais sobre o Webots no nosso site e redes sociais!!!

Veja mais sobre a ERUS

12 de outubro de 2020
by Lorena Bassani in Destaque, TRUFES  0
11 de outubro de 2020
by Lorena Bassani in Destaque, TRUFES  0
11 de outubro de 2020
by Lorena Bassani in Destaque, TRUFES  0
Compartilhar