39.ビジョン命令

39.1.概要

ビジョン命令は、iRVision専用のプログラム命令です。プログラムの編集中にF1[命令]を押し、プログラム命令の一覧を表示します。一覧のビジョンという選択肢の中にビジョン命令があります。

ビジョンを選択後、ビジョン命令が表示されるので、その中から使用したい命令を選びます。 ビジョン命令には以下のような命令があります。

  • 検出実行命令

  • 補正データ取得命令

  • 基準位置設定命令

  • カメラキャリブ命令

  • 補正データ代入命令

  • 種類番号代入命令

39.2.検出実行命令

ビジョンプログラムを起動します。指定したビジョンプログラムが複数のカメラビューで構成されている場合は、すべてのカメラビューが実行されます。

ビジョン ケンシュツ (ビジョンプログラム名)

ビジョンプログラムが複数のカメラビューを持っており、そのうちのひとつだけを実行したい場合は、カメラビュー[]命令を付加します。

ビジョン ケンシュツ (ビジョンプログラム名) カメラビュー[a]

ビジョン検出命令は、ビジョンプログラムが画像取り込みを完了すると次の行へ進み、画像処理はバックグラウンドで実行されます。これにより、ロボットを動作させるなどの作業とビジョンの画像処理の実行を同時並行的に行うことができます。

39.3.補正データ取得命令

ビジョンプログラムから検出結果を取得し、指定されたビジョンレジスタに格納します。検出実行命令の後で使用します。補正データ取得命令を実行した時点で、まだ画像処理が完了していなかった場合は、画像処理が完了するまで待機します。

ビジョン ホセイデータシュトク (ビジョンプログラム名) ビジョンレジ[a] ジャンプ ラベル[b]

補正データ取得命令は検出したワーク1個分の結果をビジョンレジスタに格納します。ビジョンプログラムが複数個のワークを検出した場合には、補正データ取得命令を繰返し実行します。

未検出だった場合や、繰り返し補正データ取得命令を実行して、これ以上補正データがなくなった場合は、指定されたラベルへジャンプします。

iRVisionが搭載されていない制御装置から、他の制御装置のiRVisionが計算した補正データを取得することができます。たとえば、大きなワークに対して複数のロボットで作業を行う場合に利用できます。他の制御装置のiRVisionから補正データを取得するには、次の例のようにビジョンプログラム名の前に制御装置名をつけます。

ビジョン ホセイデータシュトク CONTROLLER1.VISPRO1 ビジョンレジ[1]

他の制御装置から補正データを取得するにはROSインターフェースパケットオーバーイーサネット(RIPE)機能がセットアップされている必要があります。RIPE機能については「R-30iB/R-30iB Mate制御装置 iRVision 取扱説明書(リファレンス編)」の「3.6制御装置間の通信」、および「R-30iA/R-30iA Mate/R-30iB/R-30iB Mate制御装置 イーサネット機能 取扱説明書」の「12 ROSインターフェースパケットオーバーイーサネット(RIPE)」を参照して下さい。

39.4.判定結果取得命令

良否検査ビジョンプログラムが判定した結果を取得し、指定されたレジスタに格納します。

ビジョン ハンテイケッカシュトク (ビジョンプログラム名) レジ[a]

レジスタには以下の値が格納されます。

  • 0: 判定結果はNGでした。

  • 1: 判定結果はOKでした。

  • 2: 判定できませんでした。

39.5.検出数取得命令

ビジョンプログラムから検出個数を取得し、指定されたレジスタに格納します。検出実行命令の後で使用します。検出個数取得命令を実行した時点で、まだ画像処理が完了していなかった場合は、画像処理が完了するまで待機します。

ビジョン ケンシュツスウシュトク (ビジョンプログラム名) レジ[a]

ビジョンプログラムが複数のカメラビューを持っている場合は、カメラビュー[]命令を付加します。

ビジョン ケンシュツスウシュトク (ビジョンプログラム名) レジ[a] カメラビュー[b]

39.6.基準位置設定命令

ビジョンプログラムに基準位置を設定します。検出実行命令の後で使用します。ビジョンプログラムの教示画面にある[基準位置設定]ボタンと同じ効果が得られます。

ビジョン キジュンイチセッテイ (ビジョンプログラム名)

基準位置設定命令を実行したときに、そのビジョンプログラムの編集画面が開いたままになっていると、ビジョンプログラムへの書き込みができないため、「CVIS-103このビジョンデータは編集中です」アラームになります。教示画面を閉じてから再度行って下さい。

ビジョンプログラムが複数のワークを見つけた場合は、最もスコアが高いワークの位置が基準位置として設定されます。間違った位置を基準位置として設定しないよう、カメラ視野内にワークを1個だけ置いて実行することをお勧めします。

39.7.ビジョン変数設定命令

ビジョン変数に値を設定します。ビジョン検出命令の直前で使用します。ビジョン変数を使うと、ビジョンプログラムに教示されているパラメータを一部書き換えてプログラム実行を行うことができます。ビジョン変数については「R-30iB/R-30iB Mate制御装置 iRVision 取扱説明書(リファレンス編)」の「8.1 ビジョン変数」を参照して下さい。

ビジョン ヘンスウセッテイ (ビジョン変数名) a

aの部分には設定する値を指定します。レジスタ間接指定を使用することも可能です。

ビジョン ヘンスウセッテイ (ビジョン変数名) レジ[n]

直接指定で設定できる値の範囲は-1638.3〜1638.3です。それより大きい、または小さい値を設定したい場合は、レジスタを使った間接指定を利用します。

ビジョン変数設定命令で設定した値は一時的なもので、ビジョンプログラムの教示内容そのものを書き換えてしまうわけではありません。ビジョン変数設定命令で設定した値は、ビジョン変数設定命令の直後に実行されたビジョン検出命令でのみ有効となります。一度ビジョン検出命令が実行されると、ビジョン変数設定命令で設定された値は全て(検出を実行したビジョンプログラムとは別のビジョンプログラムに関連付けられたビジョン変数についても)クリアされます。

39.8.カメラキャリブ命令

カメラのキャリブレーションを実行します。

ビジョン カメラキャリブ (カメラキャリブ名) (リクエストコード)

リクエストコードに指定する値は、カメラキャリブレーションのタイプによって異なります。下表を参照して下さい。

キャリブレーションの種類 リクエストコード
ドットパターンキャリブレーション 検出するキャリブレーション面の番号を指定します。第1面を検出するには1を、第2面を検出するには2を指定します。
ロボグリッドキャリブレーション 検出するキャリブレーション点毎に異なる番号を指定します。ロボグリッドキャリブレーションの場合、本命令を使ったロボットプログラムは自動生成されます。詳細は「R-30iB/R-30iB Mate制御装置 iRVision 取扱説明書(リファレンス編)」の「10.1 ロボグリッドキャリブレーション」を参照して下さい。
立体センサキャリブレーション 検出するキャリブレーション面の番号を指定します。第1面を検出するには1を、第2面を検出するには2を指定します。
ビジュアルトラッキングキャリブレーション この命令に対応していません。

39.9.種類番号代入命令

検出したワークの種類番号をビジョンレジスタからレジスタにコピーします。

レジ[a]=ビジョンレジ[b].シュルイバンゴウ

39.10.計測値代入命令

検出したワークの計測値をビジョンレジスタからレジスタにコピーします。

レジ[a]=ビジョンレジ[b].ケイソクチ[c]

39.11.検出位置代入命令

検出したワークの位置データをビジョンレジスタから位置レジスタにコピーします。

イチレジ[a]=ビジョンレジ[b].ケンシュツイチ[c]

cにはカメラビューの番号を指定します。

39.12.補正データ代入命令

検出したワークの補正データをビジョンレジスタから位置レジスタにコピーします。

イチレジ[a]=ビジョンレジ[b].ホセイデータ

39.13.エンコーダ値代入命令

ビジュアルトラッキングで使用する命令です。検出したワークのエンコーダ値をビジョンレジスタからレジスタにコピーします。

レジ[a]=ビジョンレジ[b].エンコーダ

39.14.読取結果取得命令

バーコードリーダビジョンプログラムが読み取ったバーコードの文字列を取得し、指定された文字レジスタに格納します。また、読み取った文字列の長さを指定されたレジスタに格納します。検出実行命令の後で使用します。

ビジョン ヨミトリケッカシュトク (ビジョンプログラム名) モジレジ[a] レジ[b] ジャンプ ラベル[c] 

未検出だった場合は、指定されたラベルへジャンプします。

バーコードの文字列が半角254文字以上の場合、指定した文字レジスタには先頭から半角254文字目までの文字列を格納します。

39.15.サンプルプログラム(ビジョン検出)

ビジョン検出を行うサンプルプログラムです。

2行目: ビジョンプログラム'VP1'の検出を実行します。
3行目: 検出結果をビジョンレジ[1]に取出します。未検出の場合には、ラベル[999]にジャンプし
       ます。
5行目: ロボットをアプローチ位置に移動します。
6行目: ロボットを把持位置に移動します。
7行目: グリッパを閉じてワークを把持します。
8行目: ロボットをアプローチ位置に移動します。

   1:  ラベル[1] ;
   2:  ビジョン ケンシュツ 'VP1' ;
   3:  ビジョン ホセイデータシュトク 'VP1' ビジョンレジ[1], ジャンプ ラベル[999] ;
   4:   ;
   5:チョクセン イチ[1] 500mm/sec ナメラカ75 ビジョンホセイ,ビジョンレジ[1] ;
   6:チョクセン イチ[2] 100mm/sec イチギメ ビジョンホセイ,ビジョンレジ[1] ;
   7:  ヨビダシ PICK ;
   8:チョクセン イチ[1] 300mm/sec ナメラカ75 ビジョンホセイ,ビジョンレジ[1] ;
   9:  シュウリョウ ;
  10:   ;
  11:  ラベル[999:NO PART] ;
  12:  ユーザアラーム[1] ;
[End]

39.16.サンプルプログラム(カメラ再キャリブレーション)

カメラの再キャリブレーションを行うサンプルプログラムです。2面キャリブを行っています。

3-5行目: ドットパターン治具をもつロボットをキャリブ面1の位置に移動してドットパターンを
         検出します。
6-8行目: ドットパターン治具をもつロボットをキャリブ面2の位置に移動してドットパターンを
         検出します。

   1:  ユーザザヒョウバンゴウ=1 ;
   2:  ツールザヒョウバンゴウ=1 ;
   3:チョクセン イチ[1:キャリブ面1] 2000mm/sec イチギメ    ;
   4:  タイキ    .25(sec) ;
   5:  ビジョン カメラキャリブ 'CALIB1' リクエストコード=1 ;
   6:チョクセン イチ[2:キャリブ面2] 2000mm/sec イチギメ    ;
   7:  タイキ    .25(sec) ;
   8:  ビジョン カメラキャリブ 'CALIB1' リクエストコード=2 ;

39.17.サンプルプログラム(バーコードリーダ)

バーコードを読み取るサンプルプログラムです。文字レジ[1]に読み取った文字列が、レジ[1]に文字列の長さが格納されます。

   1:  ビジョン ケンシュツ 'BARCODE'    ;
   2:  ビジョン ヨミトリケッカシュトク 'BARCODE' モジレジ[1] レジ[1] ジャンプ ラベル[999] ;

39.18.サンプルプログラム(良否検査)

良否検査を行うサンプルプログラムです。レジ[1]に検査の結果が格納されます。

   1:  ビジョン ケンシュツ 'INSPECTPART'    ;
   2:  ビジョン ハンテイケッカシュトク 'INSPECTPART' レジ[1] ;

39.19.サンプルプログラム(マルチビュービジョン検出)

ハンドカメラ1台でロボットを動かしながらマルチビューのビジョン検出を行うサンプルプログラムです。

  4-7行目: ロボットを1点目の計測位置に移動し検出を行います。未検出の場合にはエラー処理
           にジャンプしています。
 9-12行目: ロボットを2点目の計測位置に移動し検出を行います。未検出の場合にはエラー処理
           にジャンプしています。
14-17行目: レジ[4]が1だったら基準位置設定を行います。
19-20行目: 補正データを取得して、補正動作を行います。

   1:  ユーザザヒョウバンゴウ=1 ;
   2:  ツールザヒョウバンゴウ=1 ;
   3:   ;
   4:チョクセン イチ[1] 2000mm/sec イチギメ    ;
   5:  ビジョン ケンシュツ 'FINDPART' カメラビュー[1] ;
   6:  ビジョン ケンシュツスウシュトク 'FINDPART' レジ[11]    ;
   7:  モシ レジ[11:N found]<>1,ジャンプ ラベル[996] ;
   8:   ;
   9:チョクセン イチ[2] 2000mm/sec イチギメ    ;
  10:  ビジョン ケンシュツ 'FINDPART' カメラビュー[2] ;
  11:  ビジョン ケンシュツスウシュトク 'FINDPART' レジ[11]    ;
  12:  モシ レジ[11:N found]<>1,ジャンプ ラベル[997] ;
  13:   ;
  14:  モシ レジ[4]<>1,ジャンプ ラベル[20] ;
  15:  ビジョン キジュンイチセッテイ 'FINDPART' ;
  16:  レジ[4]=0    ;
  17:  ラベル[20] ;
  18:   ;
  19:  ビジョン ホセイデータシュトク 'FINDPART' ビジョンレジ[1] ジャンプ ラベル[998] ;
  20:チョクセン イチ[3] 2000mm/sec イチギメ ビジョンホセイ,ビジョンレジ[1]    ;