コンベヤートラッキング動作 (ビジョントラッキング)

次に、ビジョンを利用したコンベヤートラッキング動作を作成してみましょう。

ビジョンで検出されたワーク (パーツ)を、ロボットが Pick & Place で、コンベヤー上からテーブルに移動させます。

手順概要

  1. 仮想コントローラーを作成して、ロボットを設定する
  2. プロジェクトを作成する
  3. ワーク (パーツ)に相当するオブジェクトを追加する
  4. テーブルに相当するオブジェクトを追加・設定する
  5. コンベヤーオブジェクトを追加・設定する
  6. コンベヤーオブジェクトの供給設定・確認を実施する
  7. 仮想カメラを追加・設定する
  8. コンベヤートラッキングの設定を追加する
  9. ビジョンキャリブレーションを実施する
  10. ビジョンシーケンスを作成する
  11. コンベヤーキャリブレーションを実施・設定する
  12. ワーク (パーツ)の検出を確認する
  13. プログラムを作成・実行する

手順詳細

  1. 準備

    1. 仮想コントローラー接続を新規に作成します。
      システム設定において、ロボット1を "GX8-C652S" (名前はrobot1)に設定します。

    2. プロジェクト "ConvTrack_Vision" を作成します。

    3. コンベヤーで搬送するワーク (パーツ)に相当するBoxオブジェクト (SBox_1)を追加し、次のように設定します。

      • 適当な色に変更します
      • 位置設定 (Position X, Y, Z) : 550, 550, 25 (作業の妨げにならない位置に移動させます)
    4. ワーク (パーツ)の配置先となるテーブル (Boxオブジェクト)を追加し、次のように設定します。

      • オブジェクト名 (Name) : Table
      • サイズ設定 (Half size X, Y, Z) : 40, 300, 50
      • 位置設定 (Position X, Y, Z) : -550, 0, 50
    5. コンベヤーオブジェクトを追加して、次のように設定します。

      • 位置設定 (Position X, Y, Z) : -400, 0, 100
      • 姿勢設定 (Rotation Z) : 90
      • サイズ設定 (Half size Height, Width) : 500, 100
    6. ワーク (パーツ)の供給設定を行います。

      • 直前の手順で追加したコンベヤーオブジェクトの "Operation" - "Supply" プロパティーをクリックします。
      • 表示された供給設定ダイアログにおいて、[供給有効]にチェックを入れます。
      • [ベースオブジェクト]に、前述の手順で追加した"SBox_1"を設定します。
      • [間隔]の[Min]と[Max]のそれぞれを"3.000"に設定します。
      • [オフセット]の[Z]を"26.000"に設定します。

    7. カメラ設定を追加します。

      1. Epson RC+ 8.0 メニュー - [セットアップ] - [システム設定]の[ビジョン]において、仮想カメラを追加します。

      2. [仮想]にチェックを入れて、モデルとして "acA640-120gm" を選択し、[適用]ボタンをクリックします。

      3. カメラオブジェクトを次のように設定し、コンベヤーオブジェクトの上空に配置します。

        • 位置設定 (Position X, Y, Z) : -400, -400, 700
        • 姿勢設定 (Rotation X) : 180

    8. コンベヤートラッキングの設定を追加し、次のように設定します。

      1. Epson RC+ 8.0 メニュー - [セットアップ] - [システム設定] の [コントローラー] - [コンベヤーエンコーダー]において、エンコーダーが追加されていることを確認します。

      2. Epson RC+ 8.0 メニュー - [ツール] - [コンベヤートラッキング]において、コンベヤートラッキングの設定を追加します。

      3. [タイプ]には[ビジョン]を選択します。

      4. コンベヤーオブジェクトを、次のように設定します。

        • "Operation"プロパティーを"LinkTracking"にします
        • "Conveyor ID"プロパティーを"1"にします

    9. ビジョンキャリブレーションを実施します。
      ここでは "ConveyorCalib" という名称でキャリブレーションを作成・実施します。
      ビジョンキャリブレーションが完了したら、利用したキャリブレーション用CADデータを、作業の妨げにならない位置へ移動します。

      カメラのキャリブレーションについては、以下のマニュアルを参照してください。

      "Epson RC+ オプション Vision Guide ソフトウェア編 - ビジョンキャリブレーション - キャリブレーション手順 - キャリブレーション手順: スタンドアローンカメラ"

    10. ビジョンシーケンスを作成し、次の手順で、ワーク (パーツ)が正しく検出されるかどうかを確認します。

      1. コンベヤー操作パネルで、コンベヤーオブジェクトを動かし、ワークとなるBoxを、1つ搬送します。

      2. カメラの視野内に収まる位置で、コンベヤーオブジェクトを停止します。

      3. このワークを認識するためのシーケンス "BoxDetection" を作成します。

      4. "BoxDetection" シーケンスを実行して、ワーク (パーツ)が正しく認識されることを確認します。

      5. "Calibration"プロパティーに、前述の手順で作成したキャリブレーション "ConveyorCalib" を設定します。

      6. ワーク (パーツ)が問題なく検出できたら、コンベヤー上のワーク (パーツ)を、一旦削除します。

        • コンベヤーオブジェクトを右クリックして、[全ての子を削除]を選択します

    11. コンベヤーキャリブレーションを実施します。
      シミュレーター上でのコンベヤーキャリブレーションについては、以下を参照してください。

      ロボットオブジェクト - "コンベヤーキャリブレーション"

      以下の手順で、簡易キャリブレーションを行います。

      1. レイアウトツリーにおいて、ロボットノードの下の "Conveyor Tracking" ノードを展開します。

      2. "Conveyor 1" を右クリックして、[シミュレーターでキャリブレーション]をクリックします。

      3. "Conveyor Origin", "Upstream Limit", "Downstream Limit" プロパティーそれぞれの、"Visible" プロパティーを "True" にします。

      4. コンベヤー原点, 上流限, 下流限の表示を確認します。

    12. 2重登録防止設定をします。
      Epson RC+ 8.0 メニュー - [ツール] - [コンベヤートラッキング]を開いて、ワークの2重登録を防止する距離を、"200mm"に設定します。

  2. プログラム作成

    ソフトウェアトリガー

    以下のプログラムを、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 VisionDetection
    
       TmReset 0
       SimSet Conveyor_1.Start
    
       For i = 1 To 10
          Wait Cnv_QueLen(1, CNV_QUELEN_PICKUPAREA) > 0
          Wait 0.5
    
          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 VisionDetection
    
       Print "Finished, ", Tmr(0), "[s]"
    Fend
    
    Function VisionDetection
       Integer numFound, i, state
       Real x, y, u
       Boolean found
    
       Off 10
       Wait 0.5
       Do
          VRun BoxDetection
          Cnv_Trigger (1)
    
          VGet BoxDetection.Geom01.NumberFound, numFound
          Print "Num Found ", numFound
    
          For i = 1 To numFound
             VGet BoxDetection.Geom01.CameraXYU(i), found, x, y, u
             Cnv_QueAdd 1, Cnv_Point(1, x, y)
          Next
    
          Wait 1
       Loop
    Fend
    

    ハードウェアトリガー

    カメラオブジェクトの仮想ハードウェアトリガーを利用したコンベヤートラッキングも可能です。
    以下の手順で、ハードウェアトリガーの設定を行います。

    1. カメラオブジェクトの"Trigger IO"プロパティーに、"10"を設定します。

    2. コンベヤーオブジェクトの"Operation" - "Trigger IO"プロパティーに、直前の手順で設定した値と同じ "10" を設定します。

    3. Vision Guideシーケンス "BoxDetection" の "RuntimeAcquire" プロパティーの値を、"Strobed" にします。

    4. 上記で作成したプログラムのファンクション "VisionDetection" を以下のように変更します。

      Function VisionDetection
          Integer numFound, i, state
          Real x, y, u
          Boolean found
      
          Off 10
          Wait 0.5
          Do
              VRun BoxDetection
              On 10
      
              Do
        	      VGet BoxDetection.AcquireState, state
              Loop Until state = 3
      
              VGet BoxDetection.Geom01.NumberFound, numFound
              Print "Num Found ", numFound
      
              For i = 1 To numFound
        	      VGet BoxDetection.Geom01.CameraXYU(i), found, x, y, u
        	      Cnv_QueAdd 1, Cnv_Point(1, x, y)
              Next
      
              Off 10
              Wait 0.5
          Loop
      Fend
      
  3. プログラム実行

    1. ツールバーの[Runウィンドウ]ボタンをクリックし、Runウィンドウを表示します。

    2. ファンクション"main"を選択して、[開始]ボタンをクリックします。