-
Notifications
You must be signed in to change notification settings - Fork 7
Potential Field Line Field
Eduardo Makita edited this page Mar 21, 2023
·
8 revisions
Parâmetro | Função |
---|---|
target | Centro do campo potencial (x, y), pode ser uma função dinâmica, em metros. |
decay | Função matemática que determinará o decaimento da velocidade máxima até zero, deve ter domínio e imagem entre [0, 1]. |
theta | Ângulo, em radianos, usado para definir o ângulo da reta. |
line_size | Comprimento da reta a partir do centro em metros, além desse tamanho o campo não tem efeito. |
line_dist | Distância, em metros, na qual a função decaimento do campo potencial tem efeito, além desse tamanho o robô é atraído com velocidade máxima. |
inverse | Campo opcional, true para que o campo seja de repulsão, por padrão é false e o campo é de atração. |
line_dist_max | Distância, em metros, na qual o campo potencial tem efeito, além dele o robô não sofre efeito do campo. |
line_size_single_side | Campo opcional, true para que a linha seja projetada para apenas uma direção em relação ao ponto target. Por padrão é projetada nas duas direções. |
line_dist_single_side | Campo opcional, true para que o campo da linha seja projetada para apenas uma direção em relação ao ponto target. Por padrão é projetada nas duas direções. |
multiplier | Velocidade máxima desse comportamento, em m/s. |
field_limits | Aplica as dimensões do campo, caso você deseje que a função não funcione fora do campo (por exemplo, dentro dos gols). |
self.field.add_field(
LineField(
self.match,
target = (0.75, 0.65),
theta = math.pi/2,
line_size = 0.5, # 50 cm
line_dist = 0.25, # 25 cm
line_dist_max = 0.5, # 50 cm
decay = lambda x: x, # decaimento linear
multiplier = 0.5 # 50 cm/s
)
)
self.field.add_field(
LineField(
self.match,
target = (0.75, 0.65),
theta = 1.2,
line_size = 0.5, # 50 cm
line_dist = 0.25, # 25 cm
line_dist_max = 0.5, # 50 cm
decay = lambda x: x, # decaimento linear
multiplier = 0.5 # 50 cm/s
)
)
-
self.field.add_field( LineField( self.match, target = (0.75, 0.65), theta = math.pi/2, line_size = 0.5, # 50 cm line_dist = 0.25, # 25 cm line_dist_max = 0.5, # 50 cm decay = lambda x: x, # decaimento linear multiplier = 0.5, # 50 cm/s line_size_single_side = True ) )
self.field.add_field(
LineField(
self.match,
target = (0.75, 0.65),
theta = math.pi/2,
line_size = 0.5, # 50 cm
line_dist = 0.25, # 25 cm
line_dist_max = 0.5, # 50 cm
decay = lambda x: x, # decaimento linear
multiplier = 0.5, # 50 cm/s
line_dist_single_side = True
)
)