Escolar Documentos
Profissional Documentos
Cultura Documentos
Arthur Henrique Anı́bal da Costa, Breno Mendes de Melo Uchôa Cavalcanti, Erick Vinicius Soares da Silva,
Felipe Bezerra Martins, Gabriel de Melo Evangelista, Juliana do Nascimento Damurie da Silva,
Lucas Henrique Cavalcanti Santos, Maria Luı́sa Leandro de Lima, Mateus Gonçalves Machado,
Matheus Viana Coelho Albuquerque , Tiago da Silva Barros, Pedro Henrique Magalhães Braga,
Hansenclever de Franca Bassani, Edna Natividade da Silva Barros.1
Abstract— Este Team Description Paper (TDP) apresenta a II. UNIFICAÇ ÃO DE C ÓDIGOS ROB ÔCIN
proposta desenvolvida por RoboCIn IA do Centro de In-
formática da UFPE para participar na categoria IEEE Very A unificação de códigos do RobôCIn teve inicio devido
Small Size Soccer (VSSS). Nesta equipe todas as tomadas de ao problema que começamos a ter após a criação da equipe
decisões dos robôs foram aprendidas através de algoritmos de para a categoria Small Size League (SSL), onde ambas
aprendizagem profunda por reforço que visam criar estratégias as equipes estavam trabalhando na implementação de fun-
de jogo de forma cooperativa entres os agentes. Este TDP
descreve os desenvolvimentos da equipe para aprimorar a
cionalidades semelhantes, devido a falta de comunicação e
infraestrutura de software utilizada durante as partidas e do incompatibilidade entre os códigos utilizados. Para isto foi
framework utilizado para aprendizado profundo, também é desenvolvido uma base de códigos que possa ser expandida
apresentados as especificações mecânicas e eletrônicas do robô. para ser utilizada em ambas as categorias.
Neste processo de unificação, temos a oportunidade de mi-
I. INTRODUÇ ÃO grar o nosso código de jogo para estrutura, trazendo diversos
A competição da categoria VSSS exige de cada equipe benefı́cios para a equipe VSSS IA. Apesar de nosso modulo
4 módulos principais: detecção de objetos, planejamento de estratégia funcionar de uma forma bem diferente, pode-
de ações, agente fı́sico e comunicação. Esta equipe tem mos desenvolver de forma conjunta os módulos onde temos
como objetivo a utilização de abordagens de Aprendizagem necessidades comuns, como o modulo de visão, comunicação
por Reforço (AR) [1] profundo, para o desenvolvimento da com simuladores e comunicação com os robôs, além de
inteligência artificial utilizada no planejamento de ações. também podermos utilizar a mesma interface gráfica (Fig.
Contando com o apoio da equipe principal do RobôCIn, 1) e termos um código de jogo implementado na linguagem
o desenvolvimento dos módulos não especı́ficos à AR, é C++, onde obtemos vantagens de performance em relação
desenvolvido objetivando o compartilhamento das estruturas aos códigos que utilizamos durante o desenvolvimento que
comuns entre as equipes, possibilitando o foco no desen- é realizado em Python.
volvimento dos módulos especı́ficos de AR. A unificação de códigos facilitara o intercambio de inte-
Devido a pandemia global de COVID-19, que impossibili- grantes entre equipes dentro do RobôCIn, possibilitando que
tou o acesso ao laboratório da equipe, e o formato virtual da tenhamos uma maior quantidade de integrantes capazes de
competição o foco da equipe foi no desenvolvimento de soft- tanto desenvolver a equipe e também utilizar o código para
ware. Realizamos a migração do planejamento de ações para testar e jogar durante competições. Esta implementação de
a estrutura de código unificado do RobôCIn para possibilitar um código comum é realizada também com o objetivo de
o compartilhamento de código entre diferente equipes dentro no futuro unificar as equipes de VSSS do RobôCIn, tendo
do RobôCIn e facilitando a migração de integrantes entre assim uma equipe única com abordagem hibrida.
equipes, desenvolvemos o framework rSoccer [2] de AR
para VSSS, visando incentivar a utilização desta abordagem III. FRAMEWORK RSOCCER
por outras equipes e acelerando o desenvolvimento de novos Visando melhorar nossa estratégia de treinos, criamos o
membros, e também utilizamos novas abordagens de treino rSoccer [2], um framework de AR completo baseado no
visando aumentar a performance da inteligência artificial OpenAI Gym [3]. A ideia parte dos resultados encorajadores
para situações diversas. de Bassani et al. [4] para serem de fácil adaptação para
Este TDP se divide da seguinte forma: Seção II detal- qualquer agente criado e adaptar também para ambientes da
hamos o código unificado do RobôCIn, seção III apresenta o Small Size League que pretendemos realizar algumas tarefas
framework rSoccer, seção IV explica as novas abordagens de com AR. Foram três principais desafios nesse trabalho:
estrategia utilizadas, seção V descreve as caracterı́sticas do
1) Criar um simulador VSS adaptado do simulador grSim
robô, seção VI apresenta o desenvolvimento para participar
focado para AR
da catégoria 5 vs 5 e a seção VII apresenta as conclusões do
2) Criar uma nova e completa framework de AR seguindo
nosso projeto.
o padrão criado pelo OpenAI Gym, modelando novas
1 Todos os autores estão no RobôCIn no Centro de Informática, Univer- tarefas single e multi agent
sidade Federal de Pernambuco, Brasil robocin@cin.ufpe.br 3) Criar oito ambientes benchmark para ambas categorias
a iteração fı́sica com o ambiente. O ambiente é responsável
por toda comunicação entre o agente e o simulador, por-
tanto cuida de todo pré-processamento de estado cedido
pelo simulador para ser transformado em observação para
o agente e qualquer pré-processamento necessário de ação
para o simulador. O módulo de render é responsável pela
visualização do ambiente. Veja na Fig. 3 a arquitetura geral
do rSoccer.
Neste trabalho focaremos apenas na descrição da frame- Fig. 3. Arquitetura dos módulos da Framework
work e dos ambientes criados para o VSSS.1
O módulo de simulador foi desenvolvido usando como
A. Framework base o grSim [5]. Além de corrigir erros de simulação (ex.:
A framework criada é uma ferramenta para criar ambi- bola ter mesma posição que o robô), tivemos que ajustar o
entes de futebol de robô para tarefas simples em cenários simulador para ser apropriado para treinos de Aprendizagem
single-agent quanto complexos em cenários competitivos e por Reforço. As principais alterações realizadas foram:
cooperativos multi-agent. • Remoção da interface gráfica para aumentar perfo-
O ambiente de aprendizado é necessário no desenvolvi- mance, redução de uso de memória
mento de um agente por meio de AR, o aprendizado é • Operações sı́ncronas para resultados de treinos mais
realizado a partir da interação do agente com este am- consistentes
biente (Fig. 2). Para a nossa tarefa de aprender a jogar • Suporte apara diferentes números de robôs em cada time
VSSS, foi necessário o desenvolvimento de um ambiente para incrementar as possibilidades de ambientes
de VSSS onde ele tem como entrada as ações e retorna • Separar os espaços de colisões de objetos para criar
ao agente as próximas observações e uma recompensa, e grupos de colisão
a definição dessas observações e recompensas influencia o • Adicionar restrições às velocidades dos motores para ter
comportamento aprendido, dado isto o seu desenvolvimento mais consistência com o mundo real
é constante na busca de otimizar o nosso time. • Utilizar o simulador como uma biblioteca Python para
uma comunicação mais rápida e prática com o ambiente.
Apesar de termos removido a interface gráfica do simu-
lador, é interessante termos um módulo de render para visu-
alizar como os agentes estão se comportando nos ambientes.
Desenvolvemos o módulo com uma visualização 2D de cada
ambiente utilizando o a biblioteca de interface gráfica pyglet
[6].
B. Ambientes VSSS
Fig. 2. Interação Agente-Ambiente [1]
1) Goleiro: O objetivo do goleiro é impedir que o time
adversário realize um gol, interceptando a bola caso ela
O desenvolvimento da framework se deu necessário pois esteja em direção ao gol. Assim, foi desenvolvido um agente,
nossa infraestrutura anterior [4] apresentava alguns entraves utilizando técnicas de aprendizagem por reforço, para se
no desenvolvimento, principalmente para novos membros, comportar como um goleiro.
ele era de difı́cil entendimento e pouco extensı́vel. Também O algoritmo utilizado para o treinamento do agente foi
não se tinha uma total separação entre o ambiente e o o Deep Deterministic Policy Gradient (DDPG) [7]. O algo-
agente, dificultando também a implementação de diferentes ritmo DDPG é um algoritmo off-policy utilizado em espaços
algoritmos de agente. de ações contı́nuas, na qual utiliza duas redes, da mesma
Nossa framework pode ser dividida em três módulos: forma que os métodos ator-crı́tico, sendo elas: 1. Ator - No
simulador, ambientes e render. O simulador descreve toda qual, dado um estado ele retorna uma ação. 2. Crı́tico - No
1 Código disponı́vel em https://github.com/robocin/ qual, dado um estado e uma ação avalia o quão bom ou ruim
rSoccer foi essa ação realizada nesse estado.
Para o treinamento do agente foi criado um ambiente
no framework rSoccer. Nesse ambiente, além do goleiro a
ser treinado, tem-se um atacante que irá ser um adversário
ao goleiro tentando realizar gols nele. Como observações,
o goleiro recebe como entrada as posições, orientações,
velocidades de todos os robôs em campo e a velocidade
e posição da bola, e a partir dessas observações o goleiro
realiza um ação, sendo ela a velocidade percentual das rodas
do robô, e assim, definimos recompensas para as ações
realizas pelo goleiro em um dado estado, categorizando a
recompensa nas seguintes partes:
Fig. 5. Resultado do treinamento do agente de DDPG no goleiro, é
1) Se movimentar em direção ao eixo vertical da bola mostrado a taxa de gols do atacante contra o goleiro por step de treinamento.
2) Se manter mais próximo da área do goleiro
3) Defender a bola que esteja em direção ao gol
4) Tirar a bola que esteja dentro da área do goleiro compõem a recompensa do atacante. Para o treinamento,
5) Penalidade por sair da área do goleiro como em Bassani et al [4], desenvolvemos um agente de Soft
Assim, a recompensa total que o goleiro recebe é a soma Actor-Critic (SAC). Veja na Figura 6 os resultados atingidos
dessas recompensas citadas. com os agentes desenvolvidos.
Para simulação do ambiente foi utilizado o simulador
rSim, o qual nos permite simular um ambiente VSSS de
forma bem controlada com simulações bem mais rápidas que
execuções em tempo real. Uma renderização do treinamento
pode ser vista na Figura 4. Veja na Figura 5 o resultado
atingido com o agente desenvolvido.
Caracterı́sticas Valores
Peso 150g
Dimensões 7,5cm x 7,5 cm x 5,6cm
Raio da Roda 2,5 cm
Microporcessador 2x ATmega328
Comunicação nRFL2401
Motores 2 x Micro Metal 50:1 6V
Driver do Motor TB6612FNG Dual Motor
Bateria 2 x Lipo 300mA 2S
atacante caso sua posição seja aquela que poderá fazer com
que o agente receba a maior recompensa possı́vel naquele
estado. Como mostrado em Pena et al. [9], a quantidade de
pênaltis cometidos diminui e a quantidade de gols aumenta
nas estratégias adotadas pela polı́tica final.
B. Exploitation nos pênaltis
Nosso robô, ao bater o pênalti da forma tradicional,
empurrando a bola até o gol, apresentava certas dificuldades
para marca-lo devido a diversos fatores, entre eles, a investida
do goleiro adversário. Então, decidimos adotar uma nova Fig. 8. Estrutura do robô, feito por meio de impressão 3D.
maneira para o robô lançar a bola ao invés de empurra-lá
até o gol, fazendo com que ele girasse em torno do próprio
eixo ou de um referencial. rádio também está presente no circuito eletrônico, o que
Este comportamento foi possı́vel devido ao funcionamento utilizamos é o módulo nRF24L01+. A imagem do circuito
da tomada de decisão por meio de redes neurais, onde uma pode ser visualizada na Fig. 9. O circuito utilizado em cada
sutil mudança no estado dada pela mudança do posiciona- robô foi impresso em placa de dupla. O desenho do circuito
mento, acarreta uma grande mudança no comportamento foi feito utilizando o Eagle [10], software especializado em
do robô. Este formato de pênalti foi feito empiricamente produzir placas de circuito impresso.
testando diferentes posições e analisando o comportamento
do agente. Adicionamos, também, a este comportamento, um
princı́pio de aleatoriedade, logo o robô irá fazer o pênalti
de diferentes maneiras em posições diferentes devido a essa
aleatoriedade, logo diminui a previsibilidade de como o robô
irá cobrar o pênalti.
V. ROB Ô
O robô utilizado pela equipe tem a configuração descrita
na Tabela I, onde temos a estrutura mecânica do chassis
desenvolvida com impressão 3D. O robô impresso em 3D do
RobôCIn que utilizamos foi descrito e disponibilizado publi-
camente no trabalho de Bassani et al. [4]. A Fig. 8 apresenta
a versão fı́sica do projeto mencionado anteriormente.
O robô foi implementado usando uma configuração lı́der
e subordinado com dois ATmega328 que dividem as respon-
sabilidades das operações locais, como a decodificação de
mensagens e passagem destas informações para os atuadores. Fig. 9. Circuito elétrico montado projetado através do Eagle Circuit CAD.
O controle de potência dos motores é feito através do driver
TB6612FNG. Este módulo driver ponte H duplo 1A para Na etapa de comunicação, onde ocorre a troca de men-
motor DC e motor de passo feito para arduino pode controlar sagens entre o computador e os robôs, optamos pelo módulo
até 2 motores DC (motor de corrente continua) com uma nRF24L01+. Essa escolha foi baseada em experiências an-
corrente constante de 1.2A (3.2A de pico). O módulo de teriores, onde em versões anteriores do robô ao utilizarmos
o rádio xBee Series 2 tı́nhamos problemas de comunicação
como interferência e uma latência alta, então optamos pelo
nRF24L01+ que nos ofereceu uma menor latência. Para a
realização da comunicação, foi definido um protocolo para a
mensagem broadcast enviada do computador para o robô.
Esse protocolo é dividido em seções de bits para conter
informações do ID do robô de destino, a velocidade de cada
motor, e se é preciso que o robô retorne o nı́vel de bateria.
Desta maneira, utilizamos uma topologia de rede em estrela
(Fig. 10) que permite se comunicar com até 5 robôs ao
mesmo tempo, que também é mais flexı́vel que o xBee na
implementação do protocolo de comunicação.