Een spoonBot testen#

spoonBot is een eenvoudige differentiële-aandrijvingsrobot met een lepel die op een servo is aangesloten, waardoor hij kan pannen en tilten. Zie de spoonBot-Constructie-pagina voor informatie over het bouwen van spoonBot. Het voorbeeldprogramma dat bij de nieuwste cc3-distributie wordt geleverd, bevat voorbeeldcode die laat zien hoe je spoonBot beweegt en hoe je de spoonBot-demomodus uitvoert. De spoonBot-demomodus lijkt op de CMUcam2-demomodus, alleen gebruikt hij spoonBot om te pannen en te tilten.

spoonBot kalibreren#

Voordat je spoonBot gebruikt, moet je je servo-instellingen kalibreren. Dit doe je door de volgende datastructuur bovenaan main in te stellen:

// 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);
  • Flash de cmucam2-emulatiefirmware op de camera

  • Open ofwel de CMUcam3 Frame Grabber of een terminalprogramma

    • Ga met de Frame Grabber naar het paneel “Settings” en versleep de servobalken om waarden te wijzigen

    • Typ in een terminal “sv <servo-id> <servo-value>” om de servo’s in te stellen, bijvoorbeeld:

      :sv 0 77
      ACK
      
  • Vind de middenpositie van Servo 0 en 1 door ze aan te passen totdat de wielen stoppen

    • my_cal.left_mid = <waarde van servo 0>

    • my_cal.righ_mid = <waarde van servo 1>

  • Nu moet je het teken van de richtingen vinden

    • Kijkend naar spoonBot vanaf de achterkant (lepel naar je toe), probeer het servo 0-getal te verlagen, wat het linkerwiel zou moeten zijn

      • als de servo met de klok mee / achteruit (naar je toe) draait, moet left_dir op 1 worden ingesteld

      • als de servo tegen de klok in draait, moet left_dir op -1 worden ingesteld

    • Herhaal voor servo 1 (wat het rechterwiel zou moeten zijn vanuit spoonBots gezichtspunt)

      • als de servo met de klok mee / achteruit (naar je toe) draait, moet right_dir op 1 worden ingesteld

      • als de servo tegen de klok in draait, moet right_dir op -1 worden ingesteld

    • Meestal moet één servo op negatief worden ingesteld!

  • Vind nu de Min-, Middle- en Max-lepelposities door Servo 2 aan te passen

    • Min zou de kleinste waarde moeten zijn die de lepel omlaag duwt en dus spoonBot naar voren kantelt

      • Stel spoon_down dienovereenkomstig in

    • Max is meestal 255 en zou spoonBot zo ver mogelijk omhoog moeten laten kijken

      • Stel spoon_up dienovereenkomstig in

    • Middle is de waarde die de servo waterpas maakt

      • Stel spoon_mid dienovereenkomstig in

    • Als Min en Max omgekeerd lijken te zijn, wijzig spoon_dir in -1

Zodra de kalibratie is voltooid, compileer je het project opnieuw en FLASH je de CMUcam3. spoonBot zal eerst een reeks scripted bewegingen doorlopen om ervoor te zorgen dat de servo’s correct zijn ingesteld. Vervolgens wacht spoonBot op een druk op de knop om te beginnen met het volgen van een kleur. Er wordt tekst weergegeven via de seriële poort om je op de hoogte te stellen van de verschillende bedrijfsfasen.

De scripted beweging zou als volgt moeten zijn:

  • Stil zitten

  • Omlaag kijken

  • Omhoog kijken

  • Terug naar middenpositie

  • Met de klok mee draaien (van bovenaf gezien)

  • Tegen de klok in draaien

  • Rode led uit terwijl de camera zich klaarmaakt

  • Rode led gaat aan wanneer klaar om te volgen

Als dit er correct uitziet, probeer dan een felgekleurd object een paar centimeter voor de camera te houden en druk vervolgens op de knop. Terwijl je het object wegtrekt, zou spoonBot ernaartoe moeten draaien. Gebruik felgekleurde objecten die zo uniform mogelijk van kleur zijn. Een object zoals een felrode doek zou goed werken, omdat het zeer weinig licht reflecteert (anders dan het pure rood). Zorg dat er voldoende verlichting in de kamer is. Probeer een frame vast te leggen om te zien hoe de omstandigheden eruitzien.

Let op: Als je de servo’s wilt uitschakelen zonder ze los te koppelen, ontkoppel dan de servo-power-jumper.