ステップのデータフロー

現在ご覧いただいているのは最新版の内容です(V2.2.0)。異なるバージョンを参照する場合は、画面右上のボタンから切り替えが可能です。

■ ご利用中のバージョンが分からない場合や、サポートが必要な場合はお気軽にサポート窓口までご連絡ください。

以下では、Mech-Visionプロジェクトにおけるデータフロー、およびデータ型、データ次元、フレームループ、よくある問題のトラブルシューティング方法について説明します。

概要

Mech-Visionでは、各ステップをアルゴリズム処理ユニットとして扱います。各ステップは入力を受け取り、計算を実行し、結果を出力します。複数のステップをポートで接続すると、データは接続方向に沿って順次伝送され、完全なデータフローを形成します。

ポートを接続する際には、主に データ型データ次元 の2つの要素に注意してください。

データフローは処理データを伝送するために使用されます。一方、制御フローはステップを実行するかどうかを決定するために使用されます。制御フローについては、ステップの制御フロー をご参照ください。

データ型

データ型は、ポート上で伝送されるデータ形式を表します。例えば、画像、点群、位置姿勢、数値などがあります。

データフローを作成する際、入力ポートと出力ポートのデータ型には互換性が必要です。互換性がない場合、接続を作成できません。接続操作については、ステップ間のつなぎを作成・削除 をご参照ください。

プロジェクトをデバッグする際は、ステップを実行して可視化出力結果を表示 することで、前のステップの出力データ型と後のステップの期待データ型が一致しているか確認できます。

データ次元

データ次元は、データ構造の階層レベルを表します。

  • ポート宣言次元

    ポートが受信または出力を期待するデータ次元を表します。通常、データ型の後に [] を使用して次元階層を示します。

    例:

  • Pose:0 次元データ

  • Pose []:1 次元データ

  • Pose [][]:2 次元データ

  • 実際の入力/出力データ次元

    ステップ実行時に、ポート上で実際に伝送されるデータ次元を表します。実際の次元は、ポート宣言次元より大きい場合、小さい場合、または等しい場合があります。

フレームループ

実際の入力データ次元がポート宣言次元より大きい場合、ステップは入力データを階層ごとにループ処理します。これをフレームループと呼びます。

ステップに複数の入力ポートが存在する場合、各ポートのループ階層を実行時に揃える必要があります。揃わない場合、ステップが期待どおりに動作しない可能性があります。

ループ深度

ループ深度は、ステップがポートデータを処理する際に必要なループ階層数を表します。以下のように理解できます。

ループ深度 = 実際の入力データ次元 - ポート宣言次元

複数入力ポートのループ深度が一致しない場合、通常は次元調整または入力再利用を有効化して揃える必要があります。

次元増加/次元削減

ポート間でループ深度が一致しない場合、データ接続上で次元増加または次元削減を行い、データ構造を調整して入力を揃えやすくできます。

  • スライスによる次元増加:データを 1 次元上げます。

  • マージによる次元削減:データを 1 次元下げます。

利用可否は、現在のデータがリスト構造であるか、およびステップ自体の処理能力に依存します。次元増加または次元削減で解決できない場合は、入力の再利用 を併用してください。

入力の再利用

あるポートのデータが次元増加・次元削減に適さない、または実施できない場合、入力の再利用 を有効化できます。入力再利用を有効にすると、ステップのループ実行時に、次元の低い入力データや数量の少ない入力データを繰り返し使用し、ステップの実行継続を支援します。

このパラメータは、ステップパラメータの 実行フラグ グループにあります。詳細については、共通パラメータ をご参照ください。

自動次元増加

実際の入力データ次元がポート宣言次元より小さい場合、システムは自動的に次元増加を試み、ステップの基本要求を満たすようにします。

自動次元増加は、実行時にシステムが自動的に行う処理であり、手動のスライス次元増加とは、トリガー方式および処理ロジックが異なります。

トップレベル次元

一部ステップの入力ポートには固定の宣言次元がなく、前の入力データの次元をそのまま継承して現在のポート処理基準とします。このような入力方式は、トップレベル次元として理解できます。

プロジェクトデバッグ時に、あるポートの次元挙動が期待と一致しない場合は、まず前の出力構造と、そのポートがこのタイプの入力方式かどうかを確認してください。

トラブルシューティング

データのループ深度が一致しない

現象:

ステップまたはプロジェクト実行時に、複数入力ポートのループ階層が一致しないというエラーが表示されます。

解決策:

  • 各入力ポートの実際のデータ構造を確認し、前の出力が期待どおりか確認してください。

  • データ接続で スライスによる次元増加 または マージによる次元削減 を行い、ポートのループ深度を一致させてください。

  • 必要に応じて、ステップの 入力の再利用 を有効にしてください。

ポートデータの数が一致しない

現象:

ステップまたはプロジェクト実行時に、複数入力ポートのデータ数が一致しないというエラーが表示されます。

解決策:

  • 前のステップの出力データ数および構成方法を確認してください。

  • データ数が少ないポートでは、入力の再利用 を有効にしてください。

  • 必要に応じて、次元調整後に入力再利用を併用してください。

スライス操作による次元増加ができない

現象:

データ接続でスライスによる次元増加を有効化しても、ステップまたはプロジェクト実行時に次元増加できないというエラーが表示されます。

考えられる原因:

  • 現在の入力データがスライス可能なリスト構造ではありません。

  • 次元増加後のデータ構造が、現在のステップの処理範囲を超えています。

解決策:

  • スライスによる次元増加を無効化し、前の出力構造を確認してください。

  • 入力の再利用 を使用する、または前のステップの出力構成方法を調整してください。

マージ操作による次元削減ができない

現象:

データ接続でマージによる次元削減を有効化しても、ステップまたはプロジェクト実行時に次元削減できないというエラーが表示されます。

考えられる原因:

  • 現在の入力がすでに 0 次元データであり、これ以上次元削減できません。

  • 現在の入力データがマージ可能なリスト構造ではありません。

解決策:

  • マージによる次元削減を無効化し、前の出力構造を確認してください。

  • 入力の再利用 を使用する、または前のステップの出力構成方法を調整してください。

この情報は役に立ちましたか?

ご意見・ご要望がございましたら、以下よりお寄せください:

Mech-Mindは、お客様のプライバシーを重視しています

このサイトでは最高の体験を提供するために Cookie を使用しています。サイトの閲覧を続ける場合、Cookie の使用に同意したことになります。「拒否する」を選択すると、このサイトを訪れた際に追跡や記憶が行われないように単独の Cookie が使用されます。