CMUcam3 Frame Grabber#

The CMUcam3 Frame Grabber is a simple utility that can be used to test your CMUcam3. Its primary purpose is to act as a terminal program similar to HyperTerminal or Minicom. It also allows you to view jpeg images returned from the camera. You need run the CMUcam2 Emulation firmware on the camera to use this program. The Frame Grabber requires that you install .NET version 2.0 or later which can be found on our software page. Unfortunately, the CMUcam3 Frame Grabber only works in Windows. The source can be found in the tools directory (called cc3_image_viewer). For Linux or Mac, please try using the CMUcam2GUI.

Om de applicatie te starten:

  • Dubbelklik op CMUcam3 Frame Grabber

  • Selecteer de juiste COM-poort in het vervolgkeuzemenu “Available COM Ports”

  • Klik op de knop “Connect”

  • Zet je CMUcam3 aan met de CMUcam2-emulatiefirmware (start opnieuw op als deze al aan staat)

  • Je zou tekst moeten zien verschijnen in het venster “Terminal Console”

  • Druk op “Grab Image” om een foto te maken

Hier is een beschrijving van de velden op het tabblad “Main” van de interface:

  • Beschikbare COM-poorten

    • Dit toont een lijst met seriële poorten die Windows herkent

  • Baudrate

    • Hiermee kun je de baudrate wijzigen als je dit programma als terminalclient wilt gebruiken

  • Time-out

    • Dit stelt de time-out in voor eventuele seriële antwoorden waarop het programma zou kunnen wachten

      • Dit hoeft meestal niet te worden gewijzigd

  • Verbinden

    • Opent een seriële verbinding

  • Verbinding verbreken

    • Sluit de seriële verbinding

  • Verzenden

    • Deze knop verzendt alle tekst die je hebt getypt in het tekstvak links van de knop

    • Het tekstvak voegt automatisch een return-teken toe, dus door simpelweg op “Send” te klikken zou je een ACK-antwoord van de CMUcam2 moeten krijgen

    • Standaard ligt de focus op het invoertekstvak, dus je kunt gewoon typen en op enter drukken om gegevens te verzenden

  • CIF / QCIF

    • Deze knoppen stellen de resolutie in van het weergegeven beeld

    • Standaard stuurt de CMUcam3 een lage-resolutiebeeld dat wordt geschaald om het volledige venster te vullen

  • Afbeelding vastleggen

    • Dit stuurt het “SJ”-commando (Send JPEG) naar de CMUcam3 en geeft het resultaat weer

  • Lus

    • Dit selectievakje zorgt ervoor dat de client automatisch elke “Refresh Interval” milliseconden op “Grab Frame” drukt

    • Als de CMUcam3 in de opgegeven tijd geen beeld kan produceren, treedt er een time-out van het programma op met een foutmelding

      • Als dit gebeurt, verhoog dan het verversingsinterval of verlaag de beeldresolutie

  • Verversingsinterval

    • Deze parameter stelt in hoe vaak het “Grab Image”-commando wordt verzonden wanneer “Loop” is aangevinkt

  • Stoppen

    • Dit stopt het vastleggen van de looped beelden

Op het tabblad “Settings” kun je enkele veelvoorkomende CMUcam3-functies instellen. Elke knop die je indrukt, verzendt simpelweg de bijbehorende CMUcam2-commando’s via de seriële poort.

Hier is een beschrijving van de velden op het tabblad “Setting” van de interface:

  • Lage resolutie / Hoge resolutie

    • Deze knoppen schakelen tussen High Resolution CIF (352x288) of Low Resolution QCIF (176x144)

    • Dit komt overeen met de seriële commando’s “HR 1” en “HR 0”

  • RGB / YCrCb

    • Dit selecteert de native pixelmodus van de camera als ofwel RGB of YCrCb

    • Dit komt overeen met de CMUcam2-commando’s “CR 18 44” of “CR 18 36”

  • Downsamplen

    • Dit stelt de op firmware gebaseerde downsampling-hoeveelheid in

    • Dit komt overeen met “DS X Y” waarbij X en Y de waarden zijn die in elk selectievak zijn ingesteld

  • Venster

    • Dit stelt de virtuele-vensterparameters voor de camera in

    • Dit komt overeen met het CMUcam2-commando “VW x0 y0 x1 y1”

  • Servobesturing

    • Hiermee kun je de servopositie van de 4 CMUcam3-servopoorten instellen

    • Hierdoor zullen alle servo’s die op de CMUcam3 zijn aangesloten bewegen

    • Dit komt overeen met het CMUcam2-commando “SV”

You can send any CMUcam2 command using the “Send” button and the text input box. For example, sending “GM” (Get Mean) returns the mean color of the image. To stop the streaming, simply click “Send” or press return. This program does not visualize most of the CMUcam2 commands. For visualization try using the CMUcam2GUI java program.

Problemen oplossen#

Waarom bevriest de camera wanneer ik eigenschappen wijzig terwijl ik afbeeldingen in een lus vastleg?

  • Helaas is de CMUcam3 Frame Grabber niet slim genoeg om echt bij te houden wat je aan het doen bent. Dus als je beelden aan het loopen bent en je de resolutie naar iets groters verandert, kan het het volgende “Grab Frame”-commando verzenden voordat het hoge-resolutiebeeld klaar was met overdragen. Nadat dit een paar keer gebeurt, raakt de Frame Grabber uit sync met de camera en loopt de seriële verbinding vast met een time-out. Als je op “Stop” drukt voordat je parameters wijzigt, en ervoor zorgt dat je het “Refresh Interval” op een grotere waarde instelt voor hoge-resolutiebeelden, krijg je doorgaans geen communicatie- of time-outfouten.

Waarom kan ik geen lus uitvoeren met afbeeldingen met hoge resolutie?

  • Dit is hetzelfde probleem als beschreven bij de vorige vraag. Als het “Refresh Interval” te klein is, zal de camera sneller beelden aanvragen dan hij ze kan produceren.