Test di uno spoonBot#
spoonBot è un semplice robot a trazione differenziale con un cucchiaio collegato a un servo che gli permette di eseguire pan e tilt. Vedi la pagina spoonBot-Construction per informazioni sulla costruzione dello spoonBot. Il programma di esempio fornito con l’ultima distribuzione cc3 contiene codice di esempio che dimostra come muovere lo spoonBot oltre a eseguire la modalità Demo dello spoonBot. La modalità Demo dello spoonBot è simile alla modalità demo della CMUcam2, solo che usa lo spoonBot per eseguire pan e tilt.
Calibrazione di spoonBot#
Prima di utilizzare spoonBot, devi calibrare le impostazioni dei tuoi servo. Questo si fa impostando la seguente struttura dati all’inizio di main:
// SpoonBot Calibration Points
// Assume Left = Servo 0
// Assume Right = Servo 1
// Assume Spoon = Servo 2
my_cal.left_mid = 71;
my_cal.right_mid = 77;
my_cal.spoon_down = 100;
my_cal.spoon_mid = 202;
my_cal.spoon_up = 255;
my_cal.left_dir = 1;
my_cal.right_dir = -1;
my_cal.spoon_dir = 1;
// Set the calibration points
spoonBot_calibrate (my_cal);
Programma il firmware di emulazione cmucam2 sulla fotocamera
Apri il CMUcam3 Frame Grabber oppure un programma di terminale
Usando il Frame Grabber, vai al pannello «Settings» e trascina le barre dei servo per modificare i valori
In un terminale, digita «sv <servo-id> <servo-value>» per impostare i servo, ad esempio:
:sv 0 77 ACK
Trova la posizione centrale dei Servo 0 e 1 regolandoli finché le ruote non si fermano
my_cal.left_mid = <valore dal servo 0>
my_cal.righ_mid = <valore dal servo 1>
Ora devi trovare il segno delle direzioni
Guardando spoonBot da dietro (con il cucchiaio verso di te) prova ad abbassare il numero del servo 0 che dovrebbe essere la ruota sinistra
se il servo gira in senso orario / all’indietro (verso di te) allora left_dir dovrebbe essere impostato su 1
se il servo gira in senso antiorario, left_dir dovrebbe essere impostato su -1
Ripeti per il servo 1 (che dovrebbe essere la ruota destra dal punto di vista di spoonBot)
se il servo gira in senso orario / all’indietro (verso di te) allora right_dir dovrebbe essere impostato su 1
se il servo gira in senso antiorario, right_dir dovrebbe essere impostato su -1
Di solito, un servo dovrebbe essere impostato su negativo!
Ora trova le posizioni Min, Middle e Max del cucchiaio regolando il Servo 2
Min dovrebbe essere il valore più piccolo che spinge il cucchiaio verso il basso e quindi inclina spoonBot in avanti
Imposta spoon_down di conseguenza
Il valore massimo è di solito 255 e dovrebbe posizionare spoonBot a guardare il più in alto possibile
Imposta spoon_up di conseguenza
Il valore centrale è il valore che rende il servo a livello
Imposta spoon_mid di conseguenza
Se Min e Max sembrano invertiti, cambia spoon_dir in -1
Una volta completata la calibrazione, ricompila il progetto e programma (FLASH) la CMUcam3. spoonBot eseguirà prima una sequenza di movimenti prestabiliti per assicurarsi che i servo siano configurati correttamente. Poi spoonBot attenderà la pressione di un pulsante per iniziare a tracciare un colore. Del testo viene visualizzato tramite la porta seriale per notificarti le varie fasi di funzionamento.
Il movimento prestabilito dovrebbe essere il seguente:
Stai fermo
Guarda in basso
Guarda in alto
Ritorno alla posizione centrale
Ruota in senso orario (visto dall’alto)
Ruota in senso antiorario
Il LED rosso è spento mentre la fotocamera si prepara
Il LED rosso si accende quando è pronto a tracciare
Se questo sembra corretto, prova a tenere un oggetto dai colori vivaci a pochi centimetri davanti alla fotocamera e poi premi il pulsante. Mentre allontani l’oggetto, spoonBot dovrebbe ruotare verso di esso. Usa oggetti dai colori vivaci che siano il più uniformi possibile nel colore. Un oggetto come un panno rosso brillante funzionerebbe bene poiché riflette pochissima luce (oltre al rosso puro). Assicurati che ci sia abbastanza illuminazione nella stanza. Prova ad acquisire un fotogramma per vedere come sono le condizioni.
Nota: se desideri disabilitare i servo senza scollegarli, disconnetti il servo-power-jumper.