Progetto

Generale

Profilo

Programmiamo il movimento

A questo punto procediamo programmando Arduino per il movimento dell'insetto. Abbiamo quattro tipi diversi di movimento: in avanti, indietro, arretrare verso destra e girare a sinistra. Per calibrare i vari tipi di andatura, li testiamo uno alla volta.

Prima di utilizzare il codice, verifichiamo che la velocità di movimento dei nostri motori sia compatibile con quella dei motori utilizzati nell'esempio: in questo caso, i motori dell'esempio hanno una velocità di 375ms/90° e i nostri di 285ms/90°. Poiché i nostri motori sono più veloci di quelli dell'esempio, possiamo utilizzare il codice senza modificarlo, mentre, se fossero stati più lenti, avremmo dovuto aumentare i valori delle pause fra un comando e l'altro: in questo caso, infatti, il motore riceverebbe un nuovo comando prima di aver potuto completare il precedente e questa sovrapposizione di comandi potrebbe causare malfunzionamenti.

Andatura in avanti

Per far avanzare il robot dobbiamo coordinare il movimento dei due motori in modo che si muovano contemporaneamente e in direzioni opposte. Utilizziamo il codice walkerForward.pde.
Il codice stabilisce i valori massimi delle rotazioni delle zampe e utilizza questi valori nella funzione moveForward(): la zampa anteriore destra si alza mentre alla zampa posteriore sinistra avanza, le zampe tornano in posizione centrale, la zampa anteriore sinistra si alza mentre la zampa posteriore destra avanza e di nuovo tornano in posizione centrale. Nel loop viene richiamata la funzione moveForward() che farà avanzare il robot con una piccola pausa fra un passo e l'altro.

L'Insetto Robot muove i suoi primi passi from HackLab Terni on Vimeo.

L'andatura dell'insetto ci sembra però poco soddisfacente, così modifichiamo il codice della funzione introducendo una asincronia nel movimento dei motori che permette all'insetto di muovere i passi in avanti più speditamente. Eliminiamo anche la pausa fra i passi nel loop, che porta il robot a sbilanciarsi. Il codice che abbiamo utilizzato è nel file gogogogo.ino.

Andatura all'indietro

Per far arretrare il robot dobbiamo coordinare il movimento dei due motori in modo che si muovano contemporaneamente e nella stessa direzione. Utilizziamo il codice walkerBackward.pde.
Il codice è simile al precedente, ma la funzione moveBackward() cambia la sequenza dei movimenti: la zampa anteriore destra si alza mentre alla zampa posteriore destra avanza, le zampe tornano in posizione centrale, la zampa anteriore sinistra si alza mentre la zampa posteriore sinistra avanza e di nuovo tornano in posizione centrale. Nel loop viene richiamata la funzione moveBackward() che farà arretrare il robot con una piccola pausa fra un passo e l'altro.

L'Insetto Robot indietreggia from HackLab Terni on Vimeo.

Arretrare a destra

Per far evitare gli ostacoli al robot lo facciamo arretrare verso destra e poi girare a sinistra. Utilizziamo il codice walkerTurnBackward.pde per il primo movimento.
Il codice utilizza la stessa sequenza dell'andatura all'indietro, ma nella funzione moveBackRight() sposta verso destra il movimento della zampa posteriore e la sua posizione centrale, e compensa questo spostamento facendo alzare un po' di più la zampa anteriore sinistra.

L'Insetto Robot gira a destra... from HackLab Terni on Vimeo.

Girare a sinistra

Per completare il cambio di direzione, utilizziamo il codice walkerTurnForward.pde.
Il codice della funzione moveTurnLeft() riproduce la stessa sequenza dell'andatura in avanti, ma utilizza valori diversi per posizionare i motori più a sinistra rispetto ai valori centrali e compensa la posizione della zampa anteriore sinistra per non farla sollevare troppo.

... e anche a sinistra! from HackLab Terni on Vimeo.

Anche in questo caso modifichiamo il codice della funzione, che secondo noi ha gli stessi inconvenienti di quello già visto per l'andatura in avanti, e modifichiamo anche i valori delle rotazioni dei motori (file goLeft.ino).

Riferimenti

Make: Arduino Bots and Gadgets, by Kimmo Karvinen and Tero Karvinen (O’Reilly). Copyright 2011 O’Reilly Media, 978-1-449-38971-0.

Make: Arduino Bots and Gadgets

Download