GigE Visionカメラのパラメータ変更
はじめに
以下のガイドでは、プログラムによってカメラを選択して接続し、そのパラメータを変更する方法について説明します。取得パラメータの変更には、取得の再起動が伴う場合があります。ソフトウェアによって取得をトリガするためのインターフェースを実装することで、このプログラムはカメラコマンドを実行する方法も示しています。すべての機能は、HMIを通してユーザーが利用できます。
カメラとのインタラクション方法
Aurora Vision Studioでは、ユーザーはさまざまなフィルターを使ってGigEカメラと対話できます。これらのフィルターを使えば、カメラの一部のパラメータを変更したり、取得データにアクセスしたりできます。
フィルターGigEVision_SetParameterとGigEVision_GetParameterを使用すると、パラメータの値を読み書きできます。共通の入力にはカメラアドレスとパラメータ名が含まれます。最後の共通入力 - inVerifyは、プログラムが書き込みまたは読み取り前にパラメータの有効性を確認するかどうかを判断するために使用されます。
GigEVision_SetParameterには、ユーザーが書き込む値を指定する入力が1つ追加されています。GigEVision_GetParameterには、パラメータの値を出力するものがあります。
両方のフィルターには、アクセスするパラメータの型 - Real、Integer、Bool、Enumおよび文字列 - によってさまざまなバリエーションがあります。
特定のパラメータに対して可能な値を確認するには、ユーザーはinParameterNameをクリックするだけで、現在接続されているカメラで使用可能なパラメータのウィンドウが表示されます。
プログラムの概要
設計されたプログラムでは、ユーザーが接続されているデバイスのリストからカメラを選択できます。カメラを選択すると、取得が開始されます。プログラムはカメラの画像のプレビューを表示します。ユーザーはゲイン、光源補正、取得モードなどの選択したカメラパラメータを変更できます。カメラがトリガ取得モードに設定されている場合、ユーザーはソフトウェアトリガを解放できます。プログラムを実行中は、現在の取得に関する情報が表示されます。
プレビューの下には2つのコントロールグループがあります。左側のコントロールでは、取得の再起動が必要なパラメータを変更できます。そのため、新しいパラメータで取得を再起動するためのボタンもあります。
もう一方のグループには、取得中に変更できるパラメータのコントロールがあります。「トリガ」というラベルのボタンは、ソフトウェアトリガを使って取得を開始するために使用されます。連続モードの場合は無効になります。
プログラムのMainLoopフィルターは3つの部分に分けられます。最初の部分はカメラの接続で、ここではConnectCameraタスクマクロフィルターによって行われます。
2番目と3番目の部分は、UseCameraタスクマクロフィルターによって行われます。最初にプログラムは設定されたパラメータで取得を開始します。その後、プログラムは画像を継続的に取得しながら、一部のカメラパラメータを変更できます。
NotフィルターとLoopフィルターは、MainLoopが継続するかどうかを制御します。Notフィルターは「プログラムを終了する」HMIボタンに接続されています。ボタンが押されると、ループは継続されません。プログラムはMainに戻り、取得を停止します(カメラが接続されていた場合)。これでプログラムが終了します。
カメラの接続
プログラムの最初の部分では、ユーザーがカメラを接続できるようになっています。フィルターの遅延は、1秒あたりの反復回数を制限するために使用されます。フォーミュラのinAddress入力は、カメラアドレスというラベルのHMIコントロールに接続されています。
3点ボタンをクリックするとウィンドウが開き、ユーザーがカメラを選択できます。選択したカメラのアドレスがフォーミュラブロックに送信されます。
アニメーション付きの待機インジケーターは、カメラが選択されていない場合(つまりアドレスがNil)のみ表示されます。インジケーターの状態は、フォーミュラのoutNilAddress出力によって制御されます。
ユーザーがカメラを選択し、そのアドレスがNil以外になると、このマクロフィルターのループを抜けてカメラアドレスが出力されます。
パラメータの設定
カメラが接続された後、次は取得を開始することです。ただし、一部の取得パラメータは画像を取得していない間にのみ設定できます。そのようなパラメータにはビニング、パケットサイズ、ピクセルフォーマットが含まれます。これらはSetAcquisitionParametersステップマクロフィルターで設定されます。
NotOrフィルターは、HMIコントロールに関連する2つの論理値の和を否定します。1つ目はカメラアドレスピッカーのoutAddressChangedで、2つ目は「プログラムを終了する」ボタンが押されたかどうかです。両方がfalseの場合、NotOrの値はtrueになり、ループを継続できるようになります。少なくとも1つがtrueの場合、プログラムはUseCameraループを抜けてMainLoopに戻ります。
まず、パラメータが設定できるように、進行中の取得があればすべて停止します。その後、取得モードを「連続」に設定します。これにより、カメラがプログラムのプレビューに表示される画像を取得できるようになります。フォーミュラは、inModeパラメータが「シングルフレーム」以外の場合、outTriggerModeを「オフ」に設定します。
次の手順SetAcquisitionParametersでは、カメラのビニング(水平方向と垂直方向の両軸)およびパケットサイズを設定します。使用されるHMIコントロールの可能な値は、カメラの値の範囲内に制限されるべきです。たとえば、ここではパケットサイズは220から16404の範囲で、増分は4になります。
最後に、プログラムはユーザーが選択したピクセルフォーマットで取得を開始します。
画像の取得
画像の取得は、AcquireImagesフィルター内のループで行われます。まずOrフィルターが3つのHMIコントロールの状態を合計します:「プログラムを終了する」ボタン、カメラアドレスピッカーのoutAddressChanged、「パラメータを設定する」ボタン。いずれかがtrueの場合、プログラムはループを抜けてUseCameraに戻ります。
その後、もう一つのSetAcquisitionModeインスタンスがあります。今度はinModeパラメータが適切なコントロールに接続されており、ユーザーは連続取得とトリガ取得を切り替えられます。
SetGainでは、ユーザーはゲイン調整のさまざまなモードを切り替えたり、手動で値を設定したりできます。最初にプログラムは、コントロールの値に基づいてゲインを手動で調整するかどうかを設定します。手動調整する場合、次のフィルターの状態も設定し、HMIのゲイン値コントロールを有効化(または無効化)します。
AdjustGainはバリアントマクロフィルターです。ゲインを手動で調整する場合は、指定した値にパラメータを設定します。ゲインが自動制御されている場合は、代わりに値を読み取ります。これにより、ユーザーは自動調整されたゲイン値をリアルタイムで確認できます。
次に光源が設定されます。これにより、ユーザーは現在の照明条件に最も適したプリセットを選択でき、その結果、色をより自然に見せることができます。
TriggerAcquisitionは別のバリアントマクロフィルターです。inTimeoutパラメータは、プログラムがカメラから画像を待つ時間を設定します。連続取得のバリアントはほとんど空で、inTimeoutをoutTimeoutに渡すだけです。
取得がトリガされる場合、プログラムは最初に「トリガ」ボタンの状態を確認します。ボタンが押されていた場合、プログラムはトリガコマンドを実行し、inTimeoutをoutTimeoutに渡します。ボタンが押されていない場合は、コマンドは実行されず、タイムアウトは最小値の100に設定されます。低いタイムアウトにより、ユーザーが取得をトリガしない場合にプログラムがより応答性の高くなります。
その後、GrabImageマクロフィルターで、プログラムはカメラから画像を取得して表示します。inPixelFormatは前の部分でプログラムが取得を開始したときに設定されているので、ここでこのパラメータの値を変更する必要はありません。
LastNotNilフィルターは、ユーザーがトリガ取得モードの場合にプレビューに画像を残します。これがないと、カメラからの画像はすべてAcquireImagesの1回の反復でしか表示されません。
AcquireImagesの最後のマクロフィルターでは、現在の取得に関するデータを収集し、HMIに表示します。
注意事項
- このプログラムは、すべてのカメラで動作するとは限りません。利用可能なパラメータとその値次第です。
- プログラム内でさらにパラメータを変更することが可能です。
- 一部のパラメータの動作を理解するには、カメラのドキュメントを参照することをお勧めします。
- このサンプルで使用しているフィルターの機能が不明な場合は、それらのドキュメントを確認してください。