Testiranje spoonBota#

spoonBot je jednostavan robot s diferencijalnim pogonom sa žlicom spojenom na servo motor koji mu omogućuje pomicanje i nagib. Pogledajte stranicu spoonBot-Construction za informacije o izradi spoonBota. Primjer programa koji dolazi s najnovijom cc3 distribucijom sadrži primjer koda koji demonstrira kako pomicati spoonBot kao i pokretati spoonBot Demo način. spoonBot Demo način sličan je CMUcam2 demo načinu samo što koristi spoonBot za pomicanje i nagib.

Kalibriranje spoonBota#

Prije korištenja spoonBota morate kalibrirati postavke servo motora. To se radi postavljanjem sljedeće podatkovne strukture na vrhu 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);
  • Flashajte firmver za emulaciju cmucam2 na kameru

  • Otvorite ili CMUcam3 Frame Grabber ili terminalski program

    • Koristeći Frame Grabber, idite na ploču „Settings” i povucite trake servo motora za promjenu vrijednosti

    • U terminalu upišite „sv <servo-id> <servo-value>” za postavljanje servo motora, na primjer:

      :sv 0 77
      ACK
      
  • Pronađite srednji položaj servo motora 0 i 1 podešavajući ih dok se kotači ne zaustave

    • my_cal.left_mid = <vrijednost sa servo motora 0>

    • my_cal.righ_mid = <vrijednost sa servo motora 1>

  • Sada morate pronaći predznak smjerova

    • Gledajući spoonBota straga (žlica prema vama), pokušajte smanjiti broj servo motora 0 koji bi trebao biti lijevi kotač

      • ako se servo motor okreće u smjeru kazaljke na satu / unatrag (prema vama) tada left_dir treba postaviti na 1

      • ako se servo motor okreće suprotno od kazaljke na satu, left_dir treba postaviti na -1

    • Ponovite za servo 1 (koji bi trebao biti desni kotač iz perspektive spoonBota)

      • ako se servo motor okreće u smjeru kazaljke na satu / unatrag (prema vama) tada right_dir treba postaviti na 1

      • ako se servo motor okreće suprotno od kazaljke na satu, right_dir treba postaviti na -1

    • Obično bi jedan servo motor trebao biti postavljen na negativno!

  • Sada pronađite minimalni, srednji i maksimalni položaj žlice podešavanjem servo motora 2

    • Min bi trebao biti najmanja vrijednost koja gura žlicu prema dolje i time naginje spoonBota prema naprijed

      • Postavite spoon_down u skladu s tim

    • Max je obično 255 i trebao bi pozicionirati spoonBota da gleda što je više moguće prema gore

      • Postavite spoon_up u skladu s tim

    • Middle je vrijednost koja postavlja servo motor u ravninu

      • Postavite spoon_mid u skladu s tim

    • Ako se čini da su Min i Max obrnuti, promijenite spoon_dir na -1

Nakon što je kalibracija gotova, ponovno kompajlirajte projekt i FLASH-ajte CMUcam3. spoonBot će prvo proći kroz niz skriptiranih pokreta kako bi se uvjerio da su servo motori ispravno postavljeni. Zatim će spoonBot čekati pritisak gumba za početak praćenja boje. Tekst se prikazuje preko serijskog priključka obavještavajući vas o raznim fazama rada.

Skriptirani pokret trebao bi biti sljedeći:

  • Mirovanje

  • Gledaj dolje

  • Gledaj gore

  • Natrag u srednji položaj

  • Rotacija u smjeru kazaljke na satu (gledano odozgo)

  • Rotacija suprotno od kazaljke na satu

  • Crvena LED je isključena dok se kamera priprema

  • Crvena LED se uključuje kada je spremna za praćenje

Ako ovo izgleda ispravno, pokušajte držati jarko obojeni objekt nekoliko centimetara ispred kamere i zatim pritisnite tipku. Kako povlačite objekt, spoonBot bi se trebao okrenuti prema njemu. Koristite jarko obojene objekte koji su što ujednačeniji u boji. Objekt poput jarko crvene tkanine dobro bi funkcionirao jer reflektira vrlo malo svjetla (osim čiste crvene). Provjerite ima li dovoljno osvjetljenja u prostoriji. Pokušajte dohvatiti sličicu kako biste vidjeli kako izgledaju uvjeti.

Napomena: Ako želite onemogućiti servo motore bez njihova iskopčavanja, odspojite servo-power-jumper.