Testarea unui spoonBot#
spoonBot este un simplu robot cu tracțiune diferențială, cu o lingură conectată la un servomotor care îi permite să facă panoramare și înclinare. Consultați pagina spoonBot-Construction pentru informații despre construirea spoonBot. Programul exemplu care vine cu cea mai recentă distribuție cc3 conține cod exemplu care demonstrează cum să mișcați spoonBot, precum și cum să rulați modul demo spoonBot. Modul demo spoonBot este similar cu modul demo CMUcam2, doar că folosește spoonBot pentru a face panoramare și înclinare.
Calibrarea spoonBot#
Înainte de a utiliza spoonBot, trebuie să calibrați setările servoului. Acest lucru se face prin setarea următoarei structuri de date în partea de sus a funcției 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);
Programați firmware-ul de emulare cmucam2 pe cameră
Deschideți fie CMUcam3 Frame Grabber, fie un program de terminal
Folosind Frame Grabber-ul, mergeți la panoul „Settings” și trageți barele servo pentru a schimba valorile
Într-un terminal, tastați „sv <servo-id> <servo-value>” pentru a seta servourile, de exemplu:
:sv 0 77 ACK
Găsiți poziția de mijloc a servourilor 0 și 1 ajustându-le până când roțile se opresc
my_cal.left_mid = <valoare de la servo 0>
my_cal.righ_mid = <valoare de la servo 1>
Acum trebuie să găsiți semnul direcțiilor
Privind spoonBot din spate (cu lingura spre dvs.), încercați să reduceți numărul servoului 0, care ar trebui să fie roata din stânga
dacă servomotorul se rotește în sensul acelor de ceasornic / înapoi (spre dumneavoastră) atunci left_dir ar trebui setat la 1
dacă servomotorul se rotește în sens invers acelor de ceasornic, left_dir ar trebui setat la -1
Repetați pentru servo 1 (care ar trebui să fie roata din dreapta din punctul de vedere al spoonBot)
dacă servomotorul se rotește în sensul acelor de ceasornic / înapoi (spre dumneavoastră) atunci right_dir ar trebui setat la 1
dacă servomotorul se rotește în sens invers acelor de ceasornic, right_dir ar trebui setat la -1
De obicei, un servomotor ar trebui setat la negativ!
Acum găsiți pozițiile Min, Middle și Max ale lingurii ajustând Servo 2
Min ar trebui să fie cea mai mică valoare care împinge lingura în jos și, prin urmare, înclină spoonBot înainte
Setați spoon_down în consecință
Max este de obicei 255 și ar trebui să poziționeze spoonBot privind cât mai sus posibil
Setați spoon_up în consecință
Middle este valoarea care face servoul să fie la nivel
Setați spoon_mid în consecință
Dacă Min și Max par a fi inversate, schimbați spoon_dir la -1
Odată ce calibrarea este finalizată, recompilați proiectul și programați CMUcam3. spoonBot va parcurge mai întâi o secvență de mișcări scriptate pentru a se asigura că servourile sunt configurate corect. Apoi spoonBot va aștepta o apăsare de buton pentru a începe urmărirea unei culori. Textul este afișat prin portul serial, notificându-vă despre diferitele etape de funcționare.
Mișcarea scriptată ar trebui să fie următoarea:
Stai nemișcat
Privire în jos
Privire în sus
Înapoi la poziția de mijloc
Rotire în sensul acelor de ceasornic (privind de sus)
Rotire în sens invers acelor de ceasornic
LED-ul roșu stins în timp ce camera se pregătește
LED-ul roșu se aprinde când este gata de urmărire
Dacă acest lucru arată corect, atunci încercați să țineți un obiect viu colorat la câțiva centimetri în fața camerei și apoi apăsați butonul. Pe măsură ce îndepărtați obiectul, spoonBot ar trebui să se rotească spre el. Folosiți obiecte viu colorate care sunt cât mai uniforme în culoare posibil. Un obiect precum o cârpă roșie aprinsă ar funcționa bine, deoarece reflectă foarte puțină lumină (în afară de roșul pur). Asigurați-vă că există suficientă iluminare în cameră. Încercați să capturați un cadru pentru a vedea cum arată condițiile.
Notă: Dacă doriți să dezactivați servourile fără a le deconecta, deconectați jumperul de alimentare a servourilor.