-
Notifications
You must be signed in to change notification settings - Fork 7
conceitos coach playbook
O Playbook é uma estrutura alternativa para se criar coachs, ele funciona como uma máquina de estados onde cada transição (chamada de trigger
) pode ser ativado por alguma flag vísivel no NeonFC e cada estado (chamado de Play
) é um conjunto de strategy
a serem atribuídas aos robôs.
Um exemplo dessa implementação pode ser vista no código usado para a IRONCup 2021:
import algorithms
import strategy
from entities import plays
import math
import time
from commons.math import angular_speed, speed, rotate_via_numpy, unit_vector
class Coach(object):
def __init__(self, match):
self.match = match
self.playbook = plays.Playbook(self)
one_to_one_play = plays.OneOneOnePlay(self)
unstuck_play = plays.UnstuckPlay(self)
stuck_trigger = plays.StuckRobotsTrigger(stuck_strategies=['attacker', 'midfielder'])
wait_for_trigger = plays.WaitForTrigger(5)
one_to_one_play.add_transition(stuck_trigger, unstuck_play)
unstuck_play.add_transition(wait_for_trigger, one_to_one_play)
self.playbook.add_play(one_to_one_play)
self.playbook.add_play(unstuck_play)
self.playbook.set_play(one_to_one_play)
def decide (self):
self.playbook.update()
Nesse coach, temos duas "jogadas": one to one
e unstuck
. E entre elas existem duas transições: stuck_trigger
e wait_for_trigger
.
No comando self.playbook.set_play(one_to_one_play)
definimos que a jogada inicial será one to one
. Dessa forma, o sistema irá rodar o que está descrito nesse objeto até que alguma transição seja satisfeita. Nesse exemplo, a transição stuck_trigger
verifica se um conjunto de robôs com as estratégias passadas no construtor estão em estado de stuck
. Caso estiverem, o Playbook troca para a jogada unstuck
.
Atualmente, apenas esses dois triggers estão implementados, porém as implementações atuais servem de prova de conceito para um momento futuro, onde possamos criar transições para estratégias de bola parada.
Para entender como cada um desses objetos está implementado, olhe os módulos desse diretório.