Índice:

Robô do movimentador preciso SnappyXO: 6 etapas
Robô do movimentador preciso SnappyXO: 6 etapas

Vídeo: Robô do movimentador preciso SnappyXO: 6 etapas

Vídeo: Robô do movimentador preciso SnappyXO: 6 etapas
Vídeo: A Ciência do Marketing Viral: A Fórmula "Secreta" das 6 E.T.A.P.A.S 2024, Novembro
Anonim
SnappyXO Precise Mover Robot
SnappyXO Precise Mover Robot

Faça seu robô Arduino ir direto por uma distância especificada ou torcer para um ângulo especificado usando a biblioteca PreciseMovement Arduino.

O robô precisa de um lançador de bola rolante ou equivalente para minimizar o atrito durante a torção.

www.pololu.com/product/954

Você pode dizer ao robô para avançar para uma distância especificada ou torcer para um ângulo especificado. O programa determina sua posição usando o cálculo morto. Uma vez que as estimativas de posição dependem apenas da velocidade da roda, o deslizamento induzirá a erros consideráveis. O projetista do robô deve ter cuidado para minimizar o risco de escorregamento.

Isso foi testado para funcionar com o robô SnappyXO.

Etapa 1: Alteração do local do tutorial

O tutorial foi movido para a página abaixo. Este tutorial não é mais mantido.

sites.google.com/stonybrook.edu/premo

Etapa 2: construir o robô de unidade diferencial SnappyXO

A biblioteca PreciseMovement que usaremos é compatível apenas com robôs de acionamento diferencial. Você pode optar por usar outros robôs com tração nas duas rodas.

Etapa 3: conectar os eletrônicos

Conecte a Eletrônica
Conecte a Eletrônica

Para o codificador óptico SnappyXO padrão:

D0 (saída do codificador) -> Arduino Digital Pin

VCC -> Arduino 5V

GND -> GND

Motor e Arduino Power:

A fonte de alimentação do motor deve ser adequada para os motores que você usa. Para o kit SnappyXO, baterias 4AA são usadas para alimentação do motor e bateria de 9 V para alimentação do Arduino. Certifique-se de que todos eles tenham um GND comum.

Etapa 4: instalar a biblioteca PreciseMovement Arduino

Download:

github.com/jaean123/PreciseMovement-library/releases

Como instalar a Biblioteca Arduino:

wiki.seeedstudio.com/How_to_install_Arduino_Library/

Etapa 5: Código

Código Arduino:

create.arduino.cc/editor/whileloop/7a35299d-4e73-409d-9f39-2c517b3000d5/preview

Esses parâmetros requerem ajuste. Outros parâmetros rotulados como recomendados no código podem ser ajustados para melhor desempenho.

  • Verifique e defina os pinos do motor em PINOS ARDUINO.
  • Defina LENGTH e RADIUS.

    • LENGTH é a distância da roda esquerda à roda direita.
    • RADIUS é o raio da roda.
  • Defina PULSES_PER_REV, que é o número de pulsos que o codificador gera para uma rotação da roda.

    • Observe que isso é diferente do número de pulsos que o codificador gera para uma revolução do eixo do motor, a menos que os codificadores estejam conectados para ler diretamente do eixo da roda.
    • PULSES_PER_REV = (pulsos por uma revolução do eixo do motor) x (relação de engrenagem)
  • Defina STOP_LENGTH se você ver que o robô está ultrapassando o limite após o movimento para frente.

    O robô irá parar assim que a posição estimada estiver STOP_LENGTH de distância do alvo. Assim, STOP_LENGTH, é a distância aproximada necessária para o robô parar

  • Parâmetros PID

    KP_FW: Este é o componente proporcional do movimento para frente. Aumente isso até que o robô vá direto. Se você não conseguir fazer o ajuste correto, então provavelmente o hardware está com defeito. (por exemplo, desalinhamento da roda, etc)

    KP_TW: Este é o componente proporcional do movimento de torção PID. Simplesmente comece a partir de um valor baixo e aumente até que a velocidade de torção, ou a velocidade angular do robô durante a torção, seja rápida o suficiente, mas não cause overshoot. Para fazer observações, você pode fazer com que o robô alterne de 0 a 90 e vice-versa, inserindo o seguinte na função de loop

Coloque isso em loop para sintonizar KP_FW:

mover.forward (99999);

Coloque isso em loop para alternar de 0 a 90 para sintonizar KP_TW:

mover.twist (90); // Twist 90 CW

atraso (2000);

mover.twist (-90) // Twist 90 CCW

atraso (2000);

Observe que, para realmente torcer a velocidade angular em TARGET_TWIST_OMEGA, o KI_TW também precisa ser ajustado, pois um controlador proporcional nunca se estabelecerá no alvo exato. No entanto, não é necessário girar exatamente nessa velocidade angular. A velocidade angular só precisa ser lenta o suficiente.

Etapa 6: como funciona

Se você está curioso para saber como funciona, continue lendo.

O movimento para a frente é mantido em linha reta usando o algoritmo de perseguição puro em um caminho em linha reta. Mais sobre a perseguição pura:

O controlador PID de torção tenta manter a velocidade angular de torção em TARGET_TWIST_OMEGA. Observe que essa velocidade angular é a velocidade angular de todo o robô, não das rodas. Apenas um controlador PID é usado e a saída é a velocidade de gravação PWM dos motores esquerdo e direito. O cálculo morto é feito para calcular o ângulo. Assim que o ângulo atinge o limite de erro, o robô para.

Recomendado: