Skip to content

Potential Field Line Field

Eduardo Makita edited this page Mar 21, 2023 · 8 revisions

Campo Potencial de Linha

Parâmetros:

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).

Campo de Linha (LineField)

  • Comportamento na simulação

Line Field

  • Visualização do Campo Potencial

Line Field

  • Código

        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
            )
        )

Campo de Linha (Ângulo 1.2 radianos, LineField)

  • Visualização do Campo Potencial

Line Field

  • Código

        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
            )
        )

Campo de Linha single size (LineField)

  • Visualização do Campo Potencial

    Line Field

  • Código

    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
        )
    )

Campo de Linha single dist (LineField)

  • Visualização do Campo Potencial

    Line Field

Código

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
    )
)