Sommario:

SnappyXO Precise Mover Robot: 6 passaggi
SnappyXO Precise Mover Robot: 6 passaggi

Video: SnappyXO Precise Mover Robot: 6 passaggi

Video: SnappyXO Precise Mover Robot: 6 passaggi
Video: Tricycle Drive SnappyXO Robot 2024, Dicembre
Anonim
SnappyXO robot preciso del motore
SnappyXO robot preciso del motore

Fai in modo che il tuo robot Arduino vada dritto per una distanza specificata o ruota fino a un angolo specificato utilizzando la libreria Arduino PreciseMovement.

Il robot ha bisogno di una rotella rotante o equivalente per ridurre al minimo l'attrito durante la torsione.

www.pololu.com/product/954

Puoi dire al robot di andare avanti a una distanza specificata o di ruotare fino a un angolo specificato. Il programma determina la sua posizione utilizzando la navigazione stimata. Poiché le stime della posizione si basano solo sulla velocità della ruota, lo slittamento indurrà un errore considerevole. Il progettista del robot deve fare attenzione a ridurre al minimo il rischio di scivolamento.

Questo è stato testato per funzionare con il robot SnappyXO.

Passaggio 1: posizione del tutorial modificata

Il tutorial è stato spostato nella pagina sottostante. Questo tutorial non viene più mantenuto.

sites.google.com/stonybrook.edu/premo

Passaggio 2: costruisci il robot con azionamento differenziale SnappyXO

La libreria PreciseMovement che utilizzeremo è compatibile solo con i robot con azionamento differenziale. Puoi scegliere di utilizzare altri robot a 2 ruote motrici.

Passaggio 3: collegare l'elettronica

Collega l'elettronica
Collega l'elettronica

Per l'encoder ottico SnappyXO standard:

D0 (uscita encoder) -> Pin digitale Arduino

VCC -> Arduino 5V

GND -> GND

Potenza motore e Arduino:

La fonte di alimentazione del motore dovrebbe essere adeguata ai motori che stai utilizzando. Per il kit SnappyXO, vengono utilizzate 4 batterie AA per l'alimentazione del motore e una batteria da 9 V per l'alimentazione di Arduino. Assicurati che abbiano tutti un GND comune.

Passaggio 4: installa la libreria Arduino PreciseMovement

Scarica:

github.com/jaean123/PreciseMovement-library/releases

Come installare la libreria Arduino:

wiki.seeedstudio.com/How_to_install_Arduino_Library/

Passaggio 5: codice

Codice Arduino:

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

Questi parametri richiedono una regolazione. Altri parametri etichettati come consigliati sul codice possono essere regolati per prestazioni migliori.

  • Controllare e impostare i pin del motore sotto ARDUINO PINS.
  • Impostare LUNGHEZZA e RAGGIO.

    • LENGTH è la distanza dalla ruota sinistra alla ruota destra.
    • RADIUS è il raggio della ruota.
  • Impostare PULSES_PER_REV, che è il numero di impulsi emessi dall'encoder per un giro della ruota.

    • Notare che questo è diverso dal numero di impulsi emessi dall'encoder per un giro dell'albero motore, a meno che gli encoder non siano collegati per leggere direttamente dall'albero della ruota.
    • PULSES_PER_REV = (impulsi per un giro dell'albero motore) x (rapporto di trasmissione)
  • Imposta STOP_LENGTH se vedi che il robot è in overshoot dopo il movimento in avanti.

    Il robot si fermerà una volta che la posizione stimata sarà distante STOP_LENGTH dal target. Pertanto, STOP_LENGTH, è la distanza approssimativa richiesta affinché il robot si fermi

  • Parametri PID

    KP_FW: Questa è la componente proporzionale del movimento in avanti. Aumentalo finché il robot non va dritto. Se non riesci a farlo funzionare correttamente regolando questo, è probabile che l'hardware sia in errore. (es. disallineamento delle ruote, ecc.)

    KP_TW: Questa è la componente proporzionale del PID del movimento di torsione. Inizia semplicemente da un valore basso e aumentalo fino a quando la velocità di torsione, o la velocità angolare del robot durante la torsione, è abbastanza veloce, ma non causa il superamento. Per fare osservazioni, puoi far alternare il robot da 0 a 90 e viceversa inserendo quanto segue nella funzione loop

Metti questo in loop per sintonizzare KP_FW:

mover.forward(99999);

Metti questo in loop per alternare da 0 a 90 per sintonizzare KP_TW:

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

ritardo (2000);

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

ritardo (2000);

Si noti che per modificare effettivamente la velocità angolare su TARGET_TWIST_OMEGA, è necessario regolare anche il KI_TW poiché un controller proporzionale non si assesterà mai sul target esatto. Tuttavia, non è necessario ruotare esattamente a quella velocità angolare. La velocità angolare deve essere sufficientemente lenta.

Passaggio 6: come funziona

Se sei curioso di sapere come funziona continua a leggere.

Il movimento in avanti viene mantenuto dritto utilizzando l'algoritmo di puro inseguimento su un percorso in linea retta. Maggiori informazioni su Pure Pursuit:

Il controller PID di torsione cerca di mantenere la velocità angolare di torsione su TARGET_TWIST_OMEGA. Nota che questa velocità angolare è la velocità angolare dell'intero robot, non delle ruote. Viene utilizzato un solo controller PID e l'uscita è la velocità di scrittura PWM di entrambi i motori sinistro e destro. Per calcolare l'angolo viene eseguita la stima stimata. Quando l'angolo raggiunge la soglia di errore, il robot si ferma.

Consigliato: