コンベヤートラッキング動作 (センサートラッキング)
次に、センサーを利用したコンベヤートラッキング動作を作成してみましょう。
センサーで検出されたオブジェクト上を流れるワーク (パーツ)を、ロボットが Pick & Place で、テーブルに移動させます。
手順概要
- 仮想コントローラーを作成して、ロボットを設定する
- プロジェクトを作成する
- ワーク (パーツ)に相当するオブジェクトを追加する
- テーブルに相当するオブジェクトを追加・設定する
- コンベヤーオブジェクトを追加・設定する
- コンベヤーオブジェクトの供給設定・確認を実施する
- 検出領域オブジェクトを追加・設定する
ここまでは、以下で述べた手順と同じになります。
以降は、トラッキング動作のための手順です。
- コンベヤートラッキングの設定を追加する
- コンベヤーキャリブレーションを実施・設定する
- プログラムを作成・実行する
手順詳細
準備
手順概要の手順5 までは、以下で述べた手順と同じとなるため、割愛します。
異なる点について説明します。
センサーに相当する検出領域オブジェクト "DetectionArea_1" を追加して、次のように設定します。
- 位置設定 (Position X, Y, Z) : 400, -300, 125
- 姿勢設定 (Rotation Z) : 90
コンベヤートラッキングの設定をします。次のように設定します。
Epson RC+ 8.0 メニュー - [セットアップ] - [システム設定] の [コントローラー] - [コンベヤーエンコーダー]において、エンコーダーが追加されていることを確認します。
Epson RC+ 8.0 メニュー - [ツール] - [コンベヤートラッキング]において、コンベヤートラッキングの設定を追加します。
[タイプ]には[センサー]を選択します。
コンベヤーオブジェクトを、次のように設定します。
- "Operation"プロパティーを"LinkTracking"にします
- "Conveyor ID"プロパティーを"1"にします
コンベヤーキャリブレーションを実施します。
シミュレーター上でのコンベヤーキャリブレーションについては、以下を参照してください。ロボットオブジェクト - "コンベヤーキャリブレーション"
以下の手順で簡易キャリブレーションを行います。
レイアウトツリーにおいて、ロボットノードの下の "Conveyor Tracking" ノードを展開します。
"Conveyor 1" を右クリックして、[シミュレーターでキャリブレーション]をクリックします。
"Conveyor Origin", "Upstream Limit", "Downstream Limit" プロパティーそれぞれの、"Visible" プロパティーを "True" にします。
コンベヤー原点, 上流限, 下流限の表示を確認します。
2重登録防止設定をします。
Epson RC+ 8.0 メニュー - [ツール] - [コンベヤートラッキング]を開いて、ワークの2重登録を防止する距離を、"200mm"に設定します。トリガー設定を行います。
検出領域オブジェクトにおいて、以下を設定します。
- センサー設定 (Sensor - IO Type) : Output
- センサー設定 (Sensor - IO Number) : 10
- センサー設定 (Sendor – Duration) : 0.30
コンベヤーオブジェクトにおいて、以下を設定します。
- トリガーIO設定 (Operation - Trigger IO) : 10
検出領域オブジェクトのIO Numberに設定した値と同じ "10" を設定します。
- トリガーIO設定 (Operation - Trigger IO) : 10
プログラム作成
以下のプログラムを、Main.prg として作成します。
Function main SimSet Conveyor_1.ClearSupply Motor On Power High Speed 100 Accel 100, 100 Cnv_Mode 1, 1 Cnv_Accel 1, 2000 Cnv_QueRemove 1, All Integer i String name$ Xqt SensorDetection TmReset 0 SimSet Conveyor_1.Start For i = 1 To 10 Wait Cnv_QueLen(1, CNV_QUELEN_PICKUPAREA) > 0 Jump Cnv_QueGet(1, 0) +Z(51) SimGet robot1.NearestObjToTool(0), name$ SimSet robot1.Pick, name$ Jump Here :X(550) :Y(i * 60 - 320) SimSet robot1.Place, name$, Table Cnv_QueRemove 1, 0 Next SimSet Conveyor_1.Stop Quit SensorDetection Print "Finished, ", Tmr(0), "[s]" Fend Function SensorDetection Double LPulse Cnv_QueRemove 1, All LPulse = Cnv_LPulse(1) Do If LPulse <> Cnv_LPulse(1) Then Cnv_QueAdd 1, Cnv_Point(1, -20, 0) LPulse = Cnv_LPulse(1) EndIf Loop Fendプログラム実行
ツールバーの[Runウィンドウ]ボタンをクリックし、Runウィンドウを表示します。
Runウィンドウにおいて、ファンクション "main" を選択して、[開始]ボタンをクリックします。
コンベヤー単体の動作と異なり、コンベヤーが停止することなく、ワーク (パーツ)が、ロボットによって Pick & Place される様子を確認してください。