データフロープログラミングの概要
重要: Aurora Vision Studio では、ユーザーが低レベルのプログラミングの経験を必要としません。 それにもかかわらず、これはプロのエンジニア向けの高度に専門化されたツールであり、本格的なビジュアルプログラミング言語です。
データ、フィルタ (ツール) 、接続、マクロフィルタの4つの中心的な概念を理解する必要があり、一般的なプログラム構造は4つの セクションで定義されます。
データ
Aurora Vision Studio はデータ処理環境であるため、データはその中心概念の 1 つです。
データに関して理解する必要がある最も重要な事実は、タイプ(例: Point2D)と値((例: 座標(15.7, 4.1))の区別です。
型はプロトコルを定義し、プログラムの構築をガイドしますが、値はプログラムの実行中に表示され、処理される情報を表します。
一般的なデータ タイプの例は次のとおりです: Integer、Rectangle2D 、Image。
Aurora Vision Studioは配列、つまり一緒に処理できるデータ項目の可変サイズのコレクションもサポートしています。各データ型には、対応する配列型があります。
たとえば、4 が Integer 型の値であるのと同様に、コレクション{1, 5, 4} は、IntegerArray型の値です。
ネストされた配列(配列の配列)も可能です。
フィルタ (ツール)
フィルターは、データ フロー プログラミングにおける基本的なデータ処理要素です。典型的なマシンビジョンアプリケーションでは、最初に画像取得フィルターがあり、その後に領域、輪郭、幾何学的プリミティブに関する情報を抽出し、合格/不合格表示などの最終結果を生成する一連のフィルターが続きます。
通常、フィルターには複数の入力と1つ以上の出力があります。 各ポートには特定のタイプ(Image、Point2Dなど)があり、互換性のあるタイプを持つポート間の接続のみを作成できます。接続されていない入力の値は、[プロパティ] ウィンドウで設定できます。このウィンドウには、幾何学的データを簡単に定義するためのグラフィカルエディターも用意されています。 フィルターが呼び出される (実行される) と、その出力データはデータプレビューパネルに表示させ、分析する事ができます。
接続
接続はフィルター間でデータを送信しますが、ループや条件などの低レベルのプログラミング構造に典型的な複雑さの多くをカプセル化する際にも重要な役割を果たします。
データの基本フロー、自動変換、配列 (ffor-each) 処理、および条件付き処理といったさまざまなタイプの接続がサポートされています。 接続タイプは明示的に定義しません。接続タイプは、意図したとおりに自動的に推測されます。 たとえば、領域の配列が1つの領域のみを受け入れる入力に接続されている場合、配列接続が作成され、個々の領域がループで処理されます。
マクロフィルタ
マクロフィルタは、より大きな実際のプロジェクトを構築するための手段を提供します。 これらは、独自の入力と出力を持つ再利用可能なサブプログラムです。マクロフィルタが作成されると、プロジェクトエクスプローラーウィンドウに表示され、それ以降は通常のフィルターとまったく同じドラッグアンドドロップ方法で使用できます。
ほとんどのマクロフィルタ(これをステップと呼びます)は、プログラムをクリーンで整理された状態に保つために役立ついくつかのフィルターを置き換えただけです。 ただし、ネストされたデータ処理ループ(タスク)を作成したり、明確に定義されたいくつかの条件付きパス(バリアントステップ)の1つにプログラムの実行を指示したりできるものもあります。 これらの構造は、あらゆる複雑なデータフロープログラムを作成するための洗練された方法を提供します。
データと型は、C++で知られているものと非常に似ています。std::vectorによく似た汎用コレクション型である– array –もあります。 フィルターとマクロフィルターは関数と同等のものです。 ただし、単一の戻り値の代わりに、複数の出力パラメータを持つことがよくあります。接続はローカル変数に対応しており、名前を付ける必要はありません。 一方、Aurora Vision Studioのループと条件は C++ とは少し異なります。前者は配列接続またはタスクマクロフィルタで実行され、後者には条件付き接続とバリアントステップマクロフィルターがあります。「C/C++ プログラマー向けクイック スタート ガイド」も参照してください。
セクション
アプリケーションの明瞭さを向上させ、ユーザーがデータフローを管理しやすくするために、Aurora Vision Studio 5.0 からは「セクション」と呼ばれる新機能が導入されました。 プログラム エディターに表示されるこれらの特別な領域は、アプリケーション コードを 4 つの連続するステージに分割する役割を果たします。 フィルターを適切なセクションに配置すると、アプリケーションが読みやすくなり、単純なアプリケーションでマクロフィルタを使用する必要性が減ります。
現在、INITIALIZE、ACQUIRE、PROCESS、FINALIZEの4つのセクションが利用可能です。
INITIALIZE | このセクションは、ループが開始される前に1回だけ実行する必要があるフィルターで構成されている必要があります。 このセクションのフィルターはループ中に繰り返されません。 このようなフィルターは通常、接続の開始 (例: GigEVision_StartAcquisition, TcpIp_Accept)、またはアプリケーション実行のための定数パラメーターの値の設定を担当します。 |
---|---|
ACQUIRE | このセクションは、次のセクションで処理または分析されるデータのストリームを生成するEnumerateImagesやGigEVision_GrabImageなどのループ生成カテゴリのフィルターを含めることを目的としています。このセクションのフィルターは反復ごとに実行されます。 |
PROCESS | これはデータの分析、処理、計算を担当するフィルターが含まれるメインセクションです。 ほとんどのアプリケーションではPROCESS セクションが最大のセクションになります。これは、その主な目的がアプリケーションのすべての主要なタスクを実行することであるためです。このセクションのフィルターは反復ごとに実行されます。 |
FINALIZE | このセクションに配置されたフィルターは、ループ後に1回だけ実行されます。 ほとんどの場合、このセクションはすべての接続を閉じ、検査結果を保存または表示するために使用されます (GigEVision_StopAcquisition, TcpIp_Close, SaveTextなど)。 このセクションは、タスク マクロフィルターが例外なく終了した場合にのみ実行されます。エラーが発生した場合は、たとえエラーハンドラーによって処理されたとしても実行されません。 |
デフォルトでは、セクションはステップおよびバリアントステップマクロフィルタ内に表示されません。 ただし、これらのマクロフィルターのビューは、INITIALIZEセクションとPROCESSセクションを使用して拡張できます。ワーカータスクと タスクマクロフィルターでは、デフォルト ビューは ACQUIRE セクションと PROCESS セクションで構成され、4つのセクションすべてに拡張できます。
プログラム エディターのセクションのデフォルトの表示を変更するには、プログラムエディターの上部バーにあるマクロフィルター名の左側にあるボタンをクリックします。