使用例

1. 基本的な使用例

コントローラーのR-I/Oコネクターに任意のトリガー信号を接続し、動作中のロボットの位置情報をトリガー発生時にラッチし、ラッチした位置情報を表示するサンプルプログラムです。

Function Main
  Motor On
  Power High

  Speed 50; Accel 50, 50
  SpeedS 500; AccelS 5000

  Go P0                             'スタート位置
  SetLatch SETLATCH_PORT_CU_0, SETLATCH_TRIGGERMODE_LEADINGEDGE, 4
  LatchEnable On                    'ラッチ有効
  Move P1                           '動作開始、動作中にトリガー入力

  Wait LatchState = True            'ラッチ完了確認
  P3 = LatchPos(WithoutToolArm, 1)  'ラッチ位置1取得
  P4 = LatchPos(WithoutToolArm, 2)  'ラッチ位置2取得
  P5 = LatchPos(WithoutToolArm, 3)  'ラッチ位置3取得
  P6 = LatchPos(WithoutToolArm, 4)  'ラッチ位置4取得
  LatchEnable Off                   'ラッチ無効

  Print P3                          'ラッチ位置1表示
  Print P4                          'ラッチ位置2表示
  Print P5                          'ラッチ位置3表示
  Print P6                          'ラッチ位置4表示
Fend

パラメーターを省略する場合の例:

Function Main
  Motor On
  Power High

  Speed 50; Accel 50, 50
  SpeedS 500; AccelS 5000

  Go P0                             'スタート位置
  SetLatch SETLATCH_PORT_CU_0, SETLATCH_TRIGGERMODE_LEADINGEDGE
  LatchEnable On                    'ラッチ有効
  Move P1                           '動作開始、動作中にトリガー入力

  Wait LatchState = True            'ラッチ完了確認
  P3 = LatchPos                     'ラッチ位置取得
  LatchEnable Off                   'ラッチ無効

  Print P3                          'ラッチ位置表示
Fend

2. ビジョンシステムと組み合わせた使用例

ロボットがハンドでワークを適当に把持し、そのワークを外部上向き固定カメラの上空で停止させずに通過しながら撮像し、正しく位置決め補正して組み込むというアプリケーションの例です。

このシステムは、ロボットがワークを把持して上向き固定カメラ上空の撮像位置を通過するときにトリガー信号を出力する透過型センサーを備えます。そして、センサーの出力をR-I/O、およびカメラの外部同調用のトリガー入力の両方に接続し、ロボット位置情報のラッチとカメラの撮像を同期させます。このときに得られたカメラ画像から求められるロボット位置情報と、リアルタイムI/O機能により取得したカメラ撮像時のロボット位置情報の差分からワークのずれを算出し、位置決め補正を行います。

このとき、ロボットビジョンシステムは、あらかじめ上向き固定カメラとしてキャリブレーションされている必要があります。また、パーツ配置位置を事前に登録しておくことで、RobotPlacePosリザルトにより、正確なパーツ配置のためのロボット位置情報を取得することができます。パーツ配置位置の登録は、CalRobotPlacePosプロパティーウィザードで設定できます。

カメラのトリガー信号の接続、およびビジョンキャリブレーションなどについては、以下のマニュアルを参照してください。

"Vision Guide 8.0"

以下は、サンプルプログラムです。

Function Main
  Robot 1
  Motor On
  Power High

  Speed 100
  Accel 100, 100

  Jump InitPos                                   '初期位置へ移動
  Wait 1.0

  SetLatch 24, SETLATCH_TRIGGERMODE_LEADINGEDGE  'ラッチ条件の設定

  MemOff 0
  Xqt PictureOnFly_Camera                        '撮像タスク起動

  Jump StartPos C0                               '給材位置へ移動
  Wait 0.5

  LatchEnable On                                 'ラッチ待ち開始

  MemOn 0                                        '撮像有効

  Jump FrontPos C0 CP                            'カメラ上空手前へ移動
  Go PassingPos CP                               'カメラ上空を通過

  Go TargetPos :Z(-70) CP                        '組み込み位置上空へ移動

  Wait MemSw(1) = On                             '画像処理完了待ち
  Wait LatchState = True                         '位置ラッチ完了待ち
  LatchEnable Off                                '位置ラッチ無効
  Jump ExactTargetPos C0 LimZ (-70)              '組み込み位置へ移動
  Wait 0.5

  Jump InitPos                                   '初期位置へ移動
  Wait 0.5

  Motor Off

Fend

ワーク撮像からワーク配置位置の取得までを実行するファンクション

Function PictureOnFly_Camera

  'Vision Result変数
  Integer AcqStat         'ストロボ撮像完了フラグ
  Boolean Found           'ワーク検出状態

  Wait MemSw(0) = On      '撮像開始フラグ待ち
  MemOff 1                '撮像完了フラグクリア
  MemOff 0                '撮像開始フラグクリア
  AcqStat = 0             'ストロボ撮像フラグクリア

  VRun PictureOnFly_i


  Do Until AcqStat = 3    'ストロボ待ち
    VGet PictureOnFly_i.AcquireState, AcqStat
  Loop

  'ワーク検出をチェック
  VGet PictureOnFly_i.Geom01.Found, Found

  If Found = False Then
    Print "Work NotFound"
    Pause
  EndIf

  Wait LatchState = True  'トリガー待ち

  '撮像位置 (トリガー位置)をビジョンに設定
  VSet PictureOnFly_i.RobotPos, LatchPos (WithoutToolArm)

  'ロボット配置位置取得
  VGet PictureOnFly_i.Geom01.RobotPlacePos, Found, ExactTargetPos

  MemOn   1               'カメラ撮像フラグ変更
Fend