PF_Robot戻り値

すべてのコールバック関数では、値を戻すことが要求されます。通常、戻り値は操作が正しく完了したことを示します。 (定数PF_CALLBACK_SUCCESS)戻り値は、システムの動作方法を変更ために使用します。PF_Robot戻り値は、メインのプロセスフローを変更し、「使用シナリオ」に応じて異なる動作を提供します。異なる戻り値により、開発者はさまざまな状況でPart Feedingのプロセスフローを制御することができます。

PF_Robotコールバック関数の各戻り値について説明します。

PF_CALLBACK_SUCCESS:
PF_Robotコールバック関数が終了し、 “PF_Robot = PF_CALLBACK_SUCCESS”の場合、システムは次のアクティブパーツ (要求するパーツ)が、そのキューで使用できるかどうかを確認します。アクティブパーツが使用できる場合、システムはPF_Robot関数を再度呼び出します。PF_Robotに渡されるPartIDパラメーターは、そのアクティブパーツのパーツ番号となります。アクティブパーツを使用できる場合、要求するパーツがすでにキューにあるため、画像を新たに取得したり、フィーダーを振動させたりする必要はありません。アクティブパーツが使用できない場合、システムはPF_Startステートメントで実行されたすべてのパーツの画像を新たに取得します。ビジョンの結果が各パーツキューに読み込まれ、システムはフィーダーを振動させるかどうかを判断します。

PF_CALLBACK_RESTART:
PF_Robotコールバック関数が終了し、“PF_Robot = PF_CALLBACK_RESTART”の場合、システムは、アクティブパーツのキューで使用できるパーツの有無にかかわらず、PF_Startステートメントで実行されたすべてのパーツに対して画像を新たに取得します。ビジョンの結果がすべてのパーツキューに読み込まれ、システムはフィーダーを振動させるかどうかを判断します。PF_CALLBACK_RESTART戻り値の主な目的は、メインのPart Feedingプロセスのループの最初から、新しい画像の取得, キューの再読み込み, 再判断, 再投入を強制的に行うことにあります。この戻り値は、ピック&プレースのサイクルごとに画像を新たに取得したい場合に役立ちます。例えば、ピック&プレース中に周辺のパーツが誤って分断された場合、画像を新たに取得し、キューを更新すると便利です。

PF_CALLBACK_RESTART_ACTIVEPART:
PF_Robotコールバック関数が終了し、“PF_Robot = PF_CALLBACK_RESTART_ACTIVEPART”の場合、システムはアクティブパーツのみ (PF_Startステートメントに記載されているすべてのパーツではない)に対して画像を新たに取得します。この戻り値は、複数のロボットが同一のフィーダーを共有する場合に特に有用です。PF_CALLBACK_RESTART_ACTIVEPARTを使用すると、複数のキューでパーツが重複することを防ぐことができます。この戻り値によって強制的にアクティブパーツのみに対して画像が新たに取得され、アクティブパーツのキューのみが読み込まれます。PF_Startステートメントに記載されている他のすべてのパーツのキューは消去されます。これについて例で説明します。

フィーダーのプラットフォーム上に1種類の物理パーツがあり、2台のロボットがフィーダーからパーツをピックしていると仮定します。このアプリケーションでは、2種類のパーツがPart Feedingダイアログに追加されます。各パーツには異なるロボット番号が割りあてられます。さらに各パーツのビジョンシーケンスは異なるビジョンキャリブレーションを持ちます。(カメラは、特定のロボットにキャリブレーションされるため。) パーツの物理的な種類が1つのみであっても、2つの論理パーツの作成が必要です。(各ロボットに1つずつ。) PF_Startステートメントには両方のパーツ番号が含まれます。両方の論理パーツに対してビジョンを取得し、両方のキューが読み込まれます。どちらのビジョンシーケンスもプラットフォームの同じ物理パーツを探しているため、キューに座標の重複が発生します。ロボット#1がパーツをピックしてキューから取り除いても、そのパーツは、もう一方のロボットのキューに残ります。その結果、ロボット#2は、ロボット#1によってすでに取り除かれたパーツのピックを試みます。PF_CALLBACK_RESTART_ACTIVEPARTは、パーツが1つのキューのみに読み込まれるようにします。結果として、特別なソートや特別なキューの分布は不要になります。この使用シナリオのプログラム方法についての詳細は、以下を参照してください。
ロボット2台 - パーツ1種類