Kal
Tracking con Arduino e Roborealm
Tutorials -
Venerdì 24 Settembre 2010 09:44
Scritto da Kal

cog track

Ho visto che in un altro tutorial si è accennato al discorso, ma non è stato concluso quindi dopo un paio di giorni di sperimentazione mi sono permesso di creare questo piccolo tutorial su come muovere un servo di arduino con il tracking di un oggetto e più in generale attraverso il software Roborealm.

Per riprodurre questo piccolo esperimento avrete bisogno di:

  • Arduino
  • Roborealm (basta anche il trial)
  • 1x servo
  • 1x pc
  • 1x webcam
  • 1x oggetto colorato (io ho usato un evidenziatore verde)

Una volta installato e aperto roborealm siamo pronti per iniziare la sua configurazione, andate sulla scheda Index che trovate in altro a sinistra e inserite i seguenti moduli:

  • gaussian blur: mettete windows size a 12. Questo sfoca l'immagine permettendo di eliminare il rumore delle webcam economiche.
  • RGB Filter: mettete la spunta sul colore che volete tracciare, nel mio caso il verde. Ora vedrete solo questo colore.
  • Center of Gravity: Scegliete dal menù a tendina 'Show COG as a crosshair' e 'Show Bounding Box Around 80%'. In questo modo verrà tracciato il centro dell'immagine verde rilevata.
  • VBScript Program: questo serve a prendere il valore della x che va da 0 a 319 e rimapparlo nei valori utili per il servo (che troveremo più avanti). Per il momento basta copiarlo e cliccare su Reload and Run.

cogX = GetVariable("COG_X")
cogX = cogX*5.43+560
SetVariable "COG_Xmode", cogX

  • Display Variables: Scegliete 'COG_Xmode' e posizionatelo su una parte dello schermo usando le freccie. In questo modo potremo leggere il valore che viene inviato al servo.
  • Sparkfun_Arduino: Questo è il modulo più importante, ci permetterà di comunicare con il nostro Arduino via USB, più precisamente via seriale. Se avete dimestichezza con il protocollo potete benissimo farlo da soli, ma in caso sappiate che è già tutto pronto.

Nella riga del Pin 9 scegliete la Variable COG_Xmode e inserite i valori minimi e massimi del vostro servo.

ATTENZIONE: per il mio microservo sono 560/2300, quindi non i classici 0/179, mi sfugge da cosa vengono fuori quei valori ma basta semplicemente andare a tentativi per vedere a quali valori il vostro servo comincia a sforzare.

Per il momento lasciamo da parte roborealm e prepariamo il nostro arduino.

Dovete montare un servo, nel caso di piccoli servi basta mettere il filo rosso a 5v, quello nero a Ground, e quello bianco al Pin 9. (ovviamente potete usare altri pin, basta cambiare la riga su roborealm).

Ora bisogna caricare su arduino lo sketch che ci permetterà la comunicazione, e fortunatamente lo possiamo trovare direttamente sul sito di roborealm, cioè qui, caricatelo e prima di chiudere l'IDE di arduino annotatevi da Tools/Serial Port la porta COM che utilizzate, nel mio caso COM 10.

ATTENZIONE: dovete chiudere l'ide di arduino mentre usate roborealm e viceversa perchè usano la stessa porta com e interferiscono tra loro.

Ora è quasi tutto pronto, abbiamo roborealm aperto e arduino che esegue lo sketch mentre è collegato al pc con la presa USB.

Tornate sul modulo Sparkfun_Arduino, impostate la COM port in base a quanto annotato, e la Baud Rate a 115200 e spuntate Remember as default.

Cliccate su start nel modulo se non lo avete già fatto, chiudetelo e cliccate su run se non è già cliccato; ora provate a muovere l'oggetto da tracciare davanti la webcam, vedrete come si muove in base al movimento orizzontale.

Ecco l'esempio in video.

Avete appreso le basi del tracking e del crossprocessing tra roborealm e arduino, ora potete migliorare il vostro lavoro ad esempio facendo in modo che il servo segui l'oggetto invece di evitarlo (il mio scopo era di evitare gli ostacoli), oppure collegare due servi e fare il Pan e Tilt, ad esempio con la webcam.

Se il vostro obiettivo era invece seguire una linea o qualcosa di simile non c'è problema, basta cambiare i moduli e come farlo lo potete trovare direttamente nella zona tutorial di Roborealm.

Se questo articolo vi è sembrato interessante e ne volete altri votatemi qui sotto grazie :)

 

Gioblu Robotics © 2010 - 2012 · Sitemap · privacy

gioscarab@gmail.com

Gioblu BOTServer è online dal 10 Aprile 2010 - 319.232 Visite - 1.027.175 Pagine visualizzate - 182.309 Visitatori unici - 536 utenti attivi