制御フローを使用
以下では、Mech-Visionのステップの制御フローと、制御フローの使用方法について説明します。
Mech-Visionでは、ステップの一般的な実行フローは データフロー に従って上から下に行われます。ステップの使用中には、ステップに制御フローを設定して、ステップやフローのトリガーに使用することができます。ステップが制御フローに接続されている場合、その制御フローがトリガーされると、そのステップが実行されます。制御フローがトリガーされない場合、そのステップは実行されません。
下図は、2つのビジョン処理フロー内の制御フローを示しています。赤い矢印が制御フローです。制御フローがトリガーされない場合、D → E → F フローが実行されます。制御フローがトリガーされると、D → E → F フローが実行されると同時に、A → B → C フローも実行されます。
Mech-Visionプロジェクト編集エリアでは、ステップが選択された状態で、両側のポイントが制御フローの接続ポイントです。左側の接続ポイントは入力制御フローに接続し、他のステップがこのステップの実行をトリガーできるようにします。右側の接続ポイントは出力制御フローに接続し、このステップが他のステップの実行をトリガーできるようにします。
使用中に、必要に応じて入力制御フローと出力制御フローを接続することができます。すべての接続が必要ではありません。 |
以下では、制御フローの一般的な3つの使用方法について説明します。
ブール値による制御フローをトリガー
ビジョンプロジェクトの設定時に、通常は「分岐」をプロジェクトに追加し、異なる「分岐」が異なるビジョン処理フローに対応し、異なるルールに基づいて異なる「分岐」をトリガーします。これは、異なる状況で異なるビジョン処理フローを実行するために使用されます。
トリガー動作は通常、ブール値によるトリガー制御 ステップによって行われます。このステップは、ブール値を出力するステップ(しきい値によって数値を二項分類 など)と併用します。
下図は、点群の信頼度が指定された要件を満たす場合に点群変換が行われるビジョン処理フローを示しています。このフローの各ステップの詳細な説明は以下の通りです。
-
「点群をクラスタリングして要件を満たす点群を出力」ステップは、点群の信頼度を出力します。
-
「しきい値によって数値を二項分類」ステップは、前のステップの点群の信頼度が設定されたしきい値を超えるかどうかを判断します。信頼度がしきい値を超える場合、ブール値の結果はFalseになります。そうでない場合はTrueになります。
-
「ブール値によるトリガー制御」ステップは、前のステップのブール値の結果を取得し、その結果に基づいて「点群変換」ステップをトリガーし、その後のステップを実行します。
出力がある/ない場合に制御フローをトリガー
ビジョンプロジェクトを実行する際に、ステップに出力がない場合があります。プロジェクトに複数のビジョン処理フローがある場合、関連する設定を行うことで、別の「分岐」をトリガーすることができます。同様に、ステップに出力がある場合にも、別の「分岐」をトリガーすることができます。
プロジェクトの設定中、まず制御フローをトリガーするためのステップの 実行フラグ にて、出力がある場合に制御フローをトリガー または出力がない場合に制御フローをトリガー にチェックを入れる必要があります。
出力がある場合に制御フローをトリガー を例として説明します。下図は、「3D位置姿勢高精度推定(簡易版)」ステップに出力がある場合、「点のフィルタリング」ステップの実行がトリガーされ、その後のステップが実行されることを示しています。
制御フローによる不要なステップを「コメントアウト」
実際のプロジェクトでは、ハードウェアの更新やその他の関連要因により、特定のステップが不要になることがあります。しかし、将来の可能性を考慮したり、過去の操作を記録したりするために、これらのステップを残しておきたいというニーズがあります。このような場合、制御フローを使用してこれらの不要なステップを「コメントアウト」することができ、プロジェクトの柔軟性と追跡可能性を確保することができます。
下図のように、「点群ダウンサンプリング」ステップをスキップし、「点のフィルタリング」およびその後のステップを直接実行したい場合は、左側に「点のフィルタリング」ステップを追加し、「点群ダウンサンプリング」ステップに出力制御フローを接続します。これにより、右側のビジョン処理フローが「コメントアウト」され、プロジェクトを実行すると、左側のビジョン処理フローのみが実行されます。
不要なステップを「コメントアウト」する際には、制御フローをトリガーするためのステップの 実行フラグ にて、出力がある場合に制御フローをトリガー または出力がない場合に制御フローをトリガー にチェックを入れる必要はありません。 |