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.