Tabla de contenido:

Robot de movimiento preciso SnappyXO: 6 pasos
Robot de movimiento preciso SnappyXO: 6 pasos

Video: Robot de movimiento preciso SnappyXO: 6 pasos

Video: Robot de movimiento preciso SnappyXO: 6 pasos
Video: Lapiz Conciente - #6 (No Es Como Tu Quiera) (Video Oficial) #Lapiz90Temas 2024, Noviembre
Anonim
Robot de movimiento preciso SnappyXO
Robot de movimiento preciso SnappyXO

Haga que su robot Arduino vaya recto una distancia específica o gire a un ángulo específico utilizando la biblioteca Arduino PreciseMovement.

El robot necesita un lanzador de bolas rodantes o equivalente para minimizar la fricción al girar.

www.pololu.com/product/954

Puede decirle al robot que avance a una distancia específica o que gire a un ángulo específico. El programa determina su posición utilizando la navegación a estima. Dado que las estimaciones de posición se basan únicamente en la velocidad de la rueda, el deslizamiento inducirá un error considerable. El diseñador del robot debe tener cuidado de minimizar el riesgo de deslizamiento.

Esto ha sido probado para funcionar con el robot SnappyXO.

Paso 1: Cambio de ubicación del tutorial

El tutorial se ha trasladado a la página siguiente. Este tutorial ya no se mantiene.

sites.google.com/stonybrook.edu/premo

Paso 2: construya el robot de accionamiento diferencial SnappyXO

La biblioteca PreciseMovement que usaremos solo es compatible con robots de accionamiento diferencial. Puede optar por utilizar otros robots con tracción en 2 ruedas.

Paso 3: conecte la electrónica

Conecte la electrónica
Conecte la electrónica

Para el codificador óptico SnappyXO estándar:

D0 (salida del codificador) -> Pin digital Arduino

VCC -> Arduino 5V

GND -> GND

Motor y Arduino Power:

La fuente de alimentación del motor debe ser adecuada para los motores que utiliza. Para el kit SnappyXO, se utilizan baterías 4AA para la potencia del motor y batería de 9V para la potencia de Arduino. Asegúrese de que todos tengan un GND común.

Paso 4: Instale la biblioteca Arduino de PreciseMovement

Descargar:

github.com/jaean123/PreciseMovement-library/releases

Cómo instalar la biblioteca Arduino:

wiki.seeedstudio.com/How_to_install_Arduino_Library/

Paso 5: Código

Código Arduino:

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

Estos parámetros requieren ajuste. Otros parámetros etiquetados como recomendados en el código se pueden ajustar para un mejor rendimiento.

  • Verifique y coloque los pines del motor debajo de ARDUINO PINS.
  • Establezca LONGITUD y RADIO.

    • LONGITUD es la distancia desde la rueda izquierda a la rueda derecha.
    • RADIUS es el radio de la rueda.
  • Configure PULSES_PER_REV, que es el número de pulsos que emite el codificador para una revolución de rueda.

    • Tenga en cuenta que esto es diferente del número de pulsos que emite el codificador para una revolución del eje del motor, a menos que los codificadores estén conectados para leer directamente desde el eje de la rueda.
    • PULSES_PER_REV = (pulsos por una revolución del eje del motor) x (relación de transmisión)
  • Configure STOP_LENGTH si ve que el robot se está sobrepasando después del movimiento hacia adelante.

    El robot se detendrá una vez que la posición estimada esté a STOP_LENGTH lejos del objetivo. Por lo tanto, STOP_LENGTH, es la distancia aproximada requerida para que el robot se detenga

  • Parámetros PID

    KP_FW: Este es el componente proporcional del movimiento hacia adelante. Aumente esto hasta que el robot se endereza. Si no puede hacer que funcione correctamente sintonizando esto, es probable que el hardware sea el culpable. (por ejemplo, desalineación de la rueda, etc.)

    KP_TW: Este es el componente proporcional del PID de movimiento de torsión. Simplemente comience desde un valor bajo y aumente esto hasta que la velocidad de giro, o la velocidad angular del robot mientras gira, sea lo suficientemente rápida, pero no provoque un sobreimpulso. Para realizar observaciones, puede hacer que el robot alterne de 0 a 90 y viceversa insertando lo siguiente en la función de bucle

Coloque esto en bucle para sintonizar KP_FW:

mover.forward (99999);

Coloque esto en bucle para alternar de 0 a 90 para sintonizar KP_TW:

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

retraso (2000);

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

retraso (2000);

Tenga en cuenta que para girar realmente la velocidad angular en TARGET_TWIST_OMEGA, el KI_TW también debe ajustarse, ya que un controlador proporcional nunca se ajustará al objetivo exacto. Sin embargo, no es necesario girar exactamente a esa velocidad angular. La velocidad angular solo necesita ser lo suficientemente lenta.

Paso 6: cómo funciona

Si tiene curiosidad sobre cómo funciona, siga leyendo.

El movimiento hacia adelante se mantiene recto utilizando el algoritmo de búsqueda pura en una ruta en línea recta. Más sobre Pure Pursuit:

El controlador PID de torsión intenta mantener la velocidad angular de torsión en TARGET_TWIST_OMEGA. Tenga en cuenta que esta velocidad angular es la velocidad angular de todo el robot, no las ruedas. Solo se usa un controlador PID y la salida es la velocidad de escritura PWM de los motores izquierdo y derecho. La navegación a estima se realiza para calcular el ángulo. Una vez que el ángulo alcanza el umbral de error, el robot se detiene.

Recomendado: