-
Notifications
You must be signed in to change notification settings - Fork 7
Potential Field Line Field
Alexsandro edited this page Oct 31, 2020
·
8 revisions
Campos Potenciais
Parametro | Função |
---|---|
target | (x, y) centro do campo potencial, pode ser uma função dinâmica, em metros |
decay | Função matemática, preferencialmente deve ter domínio e imagem entre [0, 1] |
theta | Angulo, em radianos, usado para definir o angulo da reta |
line_size | Tamanho da reta apartir do centro em m/s, alem desse tamanho o campo não tem efeito |
line_dist | Tamanho do campo potencial em m/s em direção a reta onde a função decaimento tem efeito, alem desse tamanho o robo é atraido com velocidade maxima |
inverse | Campo opcional, true para que o campo seja de repulsão, por padrão é false e o campo sera de atração |
line_dist_max | Tamanho do campo potencial em m/s em direção a reta onde o campo funciona, alem dele o robo não sofre efeito do campo |
line_size_single_side | Campo opcional, true para que a linha seja projetada para apenas um direção em relação ao ponto target. Por padrão sera projetado nas duas direções |
line_dist_single_side | Campo opcional, true para que o campo da linha seja projetada para apenas um direção em relação ao ponto target. Por padrão sera projetado nas duas direções |
multiplier | Velocidade máxima desse comportamento, em m/s |
field_limits | Aplica as dimensoes do campo, caso você deseje que a função não funcione fora do campo (por exemplo, dentro dos gols) |
self.field.add_field(
algorithims.fields.LineField(
self.match,
target = (0.75, 0.65),
theta = math.pi/2,
line_size = 0.5,
line_dist = 0.25,
line_dist_max = 0.5,
decay = lambda x: x,
multiplier = 0.5
)
)
self.field.add_field(
algorithims.fields.LineField(
self.match,
target = (0.75, 0.65),
theta = 1.2,
line_size = 0.5,
line_dist = 0.25,
line_dist_max = 0.5,
decay = lambda x: x,
multiplier = 0.5
)
)
-
self.field.add_field( algorithims.fields.LineField( self.match, target = (0.75, 0.65), theta = math.pi/2, line_size = 0.5, line_dist = 0.25, line_dist_max = 0.5, decay = lambda x: x, multiplier = 0.5, line_size_single_side = True ) )
self.field.add_field(
algorithims.fields.LineField(
self.match,
target = (0.75, 0.65),
theta = math.pi/2,
line_size = 0.5,
line_dist = 0.25,
line_dist_max = 0.5,
decay = lambda x: x,
multiplier = 0.5,
line_dist_single_side = True
)
)