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.

Aby uruchomić aplikację:

  • Kliknij dwukrotnie CMUcam3 Frame Grabber

  • Wybierz właściwy port COM z menu rozwijanego „Available COM Ports”

  • Kliknij przycisk „Connect”

  • Włącz swój CMUcam3 z firmware emulacji CMUcam2 (uruchom ponownie, jeśli jest już włączony)

  • Powinieneś zobaczyć tekst pojawiający się w oknie „Terminal Console”

  • Naciśnij „Grab Image”, aby zrobić zdjęcie

Oto opis pól na zakładce „Main” interfejsu:

  • Dostępne porty COM

    • To pokazuje listę portów szeregowych, które rozpoznaje Windows

  • Szybkość transmisji (baud)

    • Pozwala to zmienić szybkość transmisji, jeśli chcesz używać tego programu jako klienta terminala

  • Timeout

    • To ustawia limit czasu dla wszelkich odpowiedzi szeregowych, na które program może czekać

      • Zwykle nie trzeba tego zmieniać

  • Connect

    • Otwiera połączenie szeregowe

  • Disconnect

    • Zamyka połączenie szeregowe

  • Send

    • Ten przycisk prześle dowolny tekst, który wpisałeś w polu tekstowym znajdującym się po lewej stronie przycisku

    • Pole tekstowe automatycznie dodaje znak powrotu (return), więc samo kliknięcie „Send” powinno dać Ci odpowiedź ACK od CMUcam2

    • Domyślnie fokus znajduje się na polu tekstowym wejścia, więc możesz po prostu pisać i nacisnąć Enter, aby wysłać dane

  • CIF / QCIF

    • Te przyciski ustawiają rozdzielczość wyświetlanego obrazu

    • Domyślnie CMUcam3 wyśle obraz w niskiej rozdzielczości przeskalowany tak, aby wypełnić całe okno

  • Grab Image

    • To wysyła polecenie „SJ” (Send JPEG) do CMUcam3 i wyświetla wynik

  • Loop

    • To pole wyboru powoduje, że klient automatycznie naciska „Grab Frame” co „Refresh Interval” milisekund

    • Jeśli CMUcam3 nie może wytworzyć obrazu w określonym czasie, program zakończy się błędem przekroczenia limitu czasu

      • Jeśli tak się stanie, zwiększ Refresh Interval lub zmniejsz rozdzielczość obrazu

  • Refresh Interval

    • Ten parametr ustawia, jak często wysyłane jest polecenie „Grab Image”, gdy zaznaczone jest „Loop”

  • Stop

    • To zatrzymuje przechwytywanie zapętlonych obrazów

Zakładka „Settings” pozwala ustawić kilka typowych funkcji CMUcam3. Każdy naciśnięty przycisk po prostu przesyła odpowiednie polecenia CMUcam2 przez port szeregowy.

Oto opis pól na zakładce „Setting” interfejsu:

  • Low Resolution / High Resolution

    • Te przyciski przełączają między wysoką rozdzielczością CIF (352x288) a niską rozdzielczością QCIF (176x144)

    • Odpowiada to poleceniom szeregowym „HR 1” i „HR 0”

  • RGB / YCrCb

    • To wybiera natywny tryb pikseli kamery na RGB lub YCrCb

    • Odpowiada to poleceniom CMUcam2 „CR 18 44” lub „CR 18 36”

  • Down Sample

    • To ustawia stopień zmniejszania próbkowania realizowanego przez firmware

    • Odpowiada to „DS X Y”, gdzie X i Y to wartości ustawione w każdym polu wyboru

  • Window

    • To ustawia parametry okna wirtualnego dla kamery

    • Odpowiada to poleceniu CMUcam2 „VW x0 y0 x1 y1”

  • Servo Controller

    • Pozwala to ustawić pozycję serw dla 4 portów serw CMUcam3

    • To spowoduje ruch wszelkich serw podłączonych do CMUcam3

    • Odpowiada to poleceniu CMUcam2 „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.

Rozwiązywanie problemów#

Dlaczego kamera zawiesza się, gdy zmieniam właściwości podczas przechwytywania obrazów w pętli?

  • Niestety CMUcam3 Frame Grabber nie jest wystarczająco inteligentny, aby naprawdę śledzić, co robisz. Więc jeśli zapętlasz obrazy i zmienisz rozdzielczość na większą, może wysłać kolejne polecenie „Grab Frame”, zanim obraz w wysokiej rozdzielczości zakończy transfer. Po kilkukrotnym wystąpieniu tego Frame Grabber traci synchronizację z kamerą, a połączenie szeregowe przekracza limit czasu. Zwykle jeśli naciśniesz „Stop” przed zmianą parametrów i upewnisz się, że ustawisz „Refresh Interval” na większą wartość dla obrazów w wysokiej rozdzielczości, nie otrzymasz błędów komunikacji ani przekroczenia limitu czasu.

Dlaczego nie mogę zapętlić obrazów w wysokiej rozdzielczości?

  • To ten sam problem, co opisany w poprzednim pytaniu. Jeśli „Refresh Interval” jest zbyt mały, kamera będzie żądać obrazów szybciej, niż jest w stanie je wytworzyć.