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.

アプリケーションを起動するには:

  • CMUcam3 Frame Grabberをダブルクリックします

  • "Available COM Ports" ドロップダウンメニューから正しいCOMポートを選択します

  • "Connect" ボタンをクリックします

  • CMUcam2エミュレーションファームウェアを実行しているCMUcam3の電源を入れます(すでにオンの場合は再起動します)

  • 「Terminal Console」ウィンドウにテキストが表示されるはずです

  • "Grab Image" を押して写真を撮ります

インターフェースの "Main" タブのフィールドの説明です:

  • 利用可能なCOMポート

    • これは、Windows が認識しているシリアルポートのリストを表示します

  • ボーレート

    • これにより、このプログラムをターミナルクライアントとして使用したい場合にボーレートを変更できます

  • タイムアウト

    • これは、プログラムが待機する可能性のあるシリアル応答のタイムアウトを設定します

      • 通常、これは変更する必要はありません

  • 接続

    • シリアル接続を開きます

  • 切断

    • シリアル接続を閉じます

  • 送信

    • このボタンは、ボタンの左側にあるテキストボックスに入力したテキストを送信します

    • テキストボックスは自動的に改行文字を追加するので、「Send」をクリックするだけで CMUcam2 から ACK 応答が返ってくるはずです

    • デフォルトではフォーカスが入力テキストボックスにあるため、入力してリターンを押すだけでデータを送信できます

  • CIF / QCIF

    • これらのボタンは、表示される画像の解像度を設定します

    • デフォルトでは、CMUcam3はウィンドウ全体を埋めるようにスケーリングされた低解像度画像を送信します

  • 画像を取得

    • これは CMUcam3 に「SJ」(Send JPEG)コマンドを送信し、結果を表示します

  • ループ

    • このチェックボックスは、クライアントが「Refresh Interval」ミリ秒ごとに自動的に「Grab Frame」を押すようにします

    • CMUcam3が指定された時間内に画像を生成できない場合、プログラムはエラーでタイムアウトします

      • これが発生した場合は、Refresh Intervalを増やすか、画像解像度を下げます

  • 更新間隔

    • このパラメータは、「Loop」がチェックされているときに「Grab Image」コマンドが送信される頻度を設定します

  • 停止

    • これは、ループされた画像の取得を停止します

「Settings」タブでは、いくつかの一般的な CMUcam3 の機能を設定できます。押す各ボタンは、単に対応する CMUcam2 コマンドをシリアルポート経由で送信しているだけです。

インターフェースの "Setting" タブのフィールドの説明です:

  • 低解像度 / 高解像度

    • これらのボタンは、高解像度 CIF(352x288)と低解像度 QCIF(176x144)を切り替えます

    • これは「HR 1」および「HR 0」シリアルコマンドに対応します

  • RGB / YCrCb

    • これは、カメラのネイティブピクセルモードを RGB または YCrCb のいずれかに選択します

    • これは CMUcam2 の「CR 18 44」または「CR 18 36」コマンドに対応します

  • ダウンサンプル

    • これは、ファームウェアベースのダウンサンプリング量を設定します

    • これは「DS X Y」に対応します。X と Y は各選択ボックスで設定された値です

  • ウィンドウ

    • これは、カメラの仮想ウィンドウパラメータを設定します

    • これは CMUcam2 の「VW x0 y0 x1 y1」コマンドに対応します

  • サーボコントローラ

    • これにより、4つの CMUcam3 サーボポートのサーボ位置を設定できます

    • これにより、CMUcam3 に接続されているサーボが動きます

    • これは 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.

トラブルシューティング#

ループで画像を取得中にプロパティを変更すると、なぜカメラがフリーズするのですか?

  • 残念ながら、CMUcam3 Frame Grabber は、あなたが何をしているかを実際に把握できるほど賢くはありません。そのため、画像をループしていて解像度をより大きなものに変更すると、高解像度画像の転送が完了する前に次の「Grab Frame」コマンドを送信してしまう場合があります。これが数回起こると、Frame Grabber はカメラと同期がずれ、シリアルがタイムアウトします。通常、パラメータを変更する前に「Stop」を押し、高解像度画像では「Refresh Interval」を必ず大きな値に設定すれば、通信エラーやタイムアウトエラーは発生しません。

なぜ高解像度画像でループできないのですか?

  • これは前の質問で説明したのと同じ問題です。「Refresh Interval」が小さすぎると、カメラは画像を生成できるよりも速く要求してしまいます。