クイックスタート: Vision Guide 8.0の チュートリアル
チュートリアルの概要
本章の目的は、Vision Guide 8.0の簡単な使用例をいくつか紹介することによって、基本的な用途について説明し、使いやすさを理解していただくことです。ここでは、ほとんどの場合、操作手順だけを説明し、システム動作の詳細については説明していません。これは、このチュートリアルで説明する使用例に、なるべく早く慣れていただくためです。詳細は、他の章で後述しますので参照してください。
このチュートリアルでは、いくつかのオブジェクトの図面を用意しています。図面のコピーを作成し、カメラの下へセットし、それを使って説明します。
このチュートリアルでは、ビジョンを使ってパーツを認識し、ロボットをそのパーツへ動作させるための簡単なアプリケーションの作成方法を説明します。水平多関節型ロボットの第2アームにカメラが搭載されていることを前提として、説明を行います。
本章は、次の項目について説明します。
- 本チュートリアルを使用するにあたって必要となる事項
- カメラレンズの構成
- Epson RC+ 8.0 新規プロジェクトの作成方法
- 新規ビジョンシーケンスの作成方法
- Blobオブジェクトを使ってパーツを認知する方法
- ビジョンシーケンスと連動するSPEL+言語プログラムの作成方法
- カメラでロボットをキャリブレーションする方法
- ビジョンを使用して、ロボットにパーツへの動作を指示する方法
- 複数の類似パーツを検出して、そのパーツへの動作を指示する方法
次の「本チュートリアルを使用するにあたって必要となる事項」には、本チュートリアルで使われるターゲットを印刷して添付しています。このターゲットは、本チュートリアル全体で使います。
ターゲットが印刷されているページに続いて、「Epson RC+ 8.0の起動と新規プロジェクトの作成方法」という項目があります。この項目以降が、実際の操作方法の説明になります。
本チュートリアルを使用するにあたって必要となる事項
本チュートリアルでは、Vision Guide 8.0でエプソンロボットを操作する方法について説明します。また、Epson RC+ 8.0とエプソンロボットを、十分に使用していただいていることを前提としています。Epson RC+ 8.0 の使い方に不安がある場合は、このチュートリアルを始める前に、少し時間をかけて見直しておくとよいでしょう。このチュートリアルを進めるには、以下の準備が必要です。
- PCにEpson RC+ 8.0がインストールされていなければなりません。
- カメラを装着し、正しく動作するようにしてください。
- エプソンロボットが、作業面に届くように設置してください。
- スカラロボットの場合、カメラはロボットの第2アームに装着してください。6軸ロボットの場合、カメラは第6関節のフランジに装着してください。オプションのカメラ取付治具を使うと、簡単に装着できます。カメラは、下向きに装着してください。
キーポイント
PC、カメラ、コントローラーにイーサーネットケーブルを装着するときは、PCの主電源、コントローラーの電源、およびカメラの電源がOFFになっていることを確認してください。電源がONの状態で接続すると、カメラが損傷する可能性があります。
- ターゲットパーツの図をコピーして、カメラの下に置いてください。(ターゲットパーツの図は、この説明項目の次のページにあります。)
- カメラレンズには、約40mm×30mmの視野を持つレンズを選択してください。ここでのテストは、作業面からのWD(ワークディスタンス)約210mm, 16mmレンズを選択し、可動カメラ(CV1とNET 1044BUカメラ)を使用します。多少、フォーカス合わせの作業をする必要がありますが、これについても本チュートリアルで説明します。
- 本チュートリアルでは、実際のパーツのピックアップは行わず、ロボットをターゲットシート上に描かれたパーツのポジションに動作させる作業を行います。そのため、ロボットの第3軸(J3軸)シャフトには、グリッパーかロッドを取りつける必要があります。本チュートリアルでは、第3軸(J3軸)シャフトにロッドが装着されていることを前提として説明します。ロッドは、シャフトの中心に来るように垂直下向きに取りつけると良好に動作します。ロッドは、キャリブレーションや、ターゲットパーツへの動作に使われます。
チュートリアル用の単一ターゲット (ワッシャーの図面)
チュートリアル用の複数ターゲット(複数ワッシャーの図面)
Epson RC+ 8.0の起動と新規プロジェクトの作成
- コントローラーの電源をオンします。
- Windowsデスクトップ上の[Epson RC+ 8.0]アイコンをダブルクリックして、Epson RC+ 8.0を起動します。
- Epson RC+ 8.0メニュー-[プロジェクト]を選択します。
- [プロジェクト]メニューの[新規プロジェクトメニューエントリー]をクリックします。[新規プロジェクト]ダイアログが表示されます。
- 新規プロジェクト名を入力してください。できれば、名称の最後に“tut”とつけるようにしてください。このように、本チュートリアルを使ってテスト作業をするときには、自分で作成したプロジェクトに独自の名称をつけることができます。ここでは、新規プロジェクトに“vgtut”という名称をつけることにします。名称のフィールドに名称を入力したら、[OK]ボタンをクリックしてください。以上で、“xxxxtut”という名称の新規プロジェクトの作成が完了しました。
新規ビジョンシーケンスの作成
- Epson RC+ 8.0新規プロジェクトの作成が完了すると、それまで灰色に表示されていたツールバーの多くが色つきで表示されます。 [ビジョン]ボタンを探してクリックしてください。これで、Vision Guideウィンドウが開きます。
- Vision Guideウィンドウで操作を始める前に、まずビジョンシーケンスを作成しなければなりません。 [新規シーケンス]ボタンをクリックします。(このツールバーボタンは、Vision Guideウィンドウのツールバーにあります。Epson RC+ 8.0のツールバーにはありませんので注意してください。) ボタンをクリックすると、[新規シーケンス]ダイアログが表示されます。
- 新規ビジョンシーケンスに、“blobtut”という名称を入力して、[OK]ボタンをクリックしてください。“blobtut”という名称は、後ほどEpson RC+ 8.0 コードで使います。スペルをまちがえないように入力してください。引用符(“ ”)はつけないでください。以上で、“blobtut”という名称の新規ビジョンシーケンスの作成が完了しました。これから行う作業はすべて、このビジョンシーケンスに関するものです。
チュートリアルでのカメラレンズの構成
前述の説明で、チュートリアルでのターゲット視野は、約40mm×30mm、また作業面からのWD (ワークディスタンス)は、約210mmとしていました。16mmレンズと1mmのエクステンションチューブでフォーカスの合うWDは、167mm~240mmであることが分かっています。このことから、このチュートリアルでは16mmレンズと1mmのエクステンションチューブを使用します。
まだカメラにレンズを取りつけて焦点合わせをしていなければ、「インストールのしかた」の章を参照し、焦点合わせまでを行ってください。レンズの選択方法と焦点の合わせ方がよくわからない場合も、次の作業に進む前に、もう一度お読みください。
Vision Guide 8.0からイメージを見て焦点をチェックします。Vision Guideウィンドウはすでに開いているので、ターゲットシート上のターゲットの特性が正しく見えるかどうかを確認します。手順は、次に説明するとおりです。
可動カメラをターゲットシートの上方に動かし、レンズのフォーカスを調整する
- 先に作成したターゲットシートのコピーで、中央に1個のワッシャーが印刷されている方を用意してください。このシートを作業面に置きます。ロボットの真正面など、カメラが簡単にこのシート上方に移動できる位置に置いてください。
- ロボットを動作させて、カメラがワッシャーの図の上方に位置するようにしてください。(モーターパワーをオンしなくても、手動でアームを動かすことができます。)
- Vision Guideウィンドウの画像イメージ表示部にターゲットのワッシャーが見えるはずです。カメラレンズのフォーカスを調整して、ターゲットにフォーカスを合わせてください。ターゲットが見えない場合、あるいは、ターゲットにフォーカスを合わせることができない場合は、「インストールのしかた」-「焦点距離のチェックと調整」を参照してください。この項目では、カメラレンズの選択方法を詳細に説明しています。
今、カメラはターゲットの真上にあり、Vision Guideウィンドウの画像イメージ表示部に、ターゲットが明瞭に見えるはずです。このとき、Vision Guideウィンドウは、下図のように表示されます。ターゲット(ワッシャー)は、Vision Guideウィンドウの画像イメージ表示部中央に表示されています。
画像イメージ表示部中央にターゲットが表示されているVision Guideウィンドウ
Blobオブジェクトを使ってパーツを検出する方法
ターゲットのワッシャーが、Vision Guideウィンドウの画像イメージ表示部中央に表示されているとき、Blobオブジェクトを作成して、ワッシャーを検出することができます。Blobオブジェクトの作成と設定、ワッシャーを検出する手順は、次に説明するとおりです。
Step 1: Blob オブジェクトの作成
- Vision Guideツールバー [全ツール] - [Blob(2値検査)]ボタンをクリックしてください。 [Blob (2値検査)]ボタンをクリックしたら、マウスの左側ボタンを押し続けないでください。
- 画像イメージ表示部中央のワッシャーのイメージに向かって、マウスを動かしてください。Vision Guideツールバーから離れると、マウスポインターはBlobオブジェクトアイコンに変わります。
- 画像イメージ表示部中央へ、マウスを動かし続けてください。そして、マウスを左クリックして離してください。以上の操作で、Blobオブジェクトは画像イメージ表示部に移動します。
画面には、下図のように表示されます。
新規Blobオブジェクト“Blob01”を表示するVision Guideウィンドウ
Step 2: Blobオブジェクトの位置とサイズ
ここで、Blobオブジェクトのサーチウィンドウの位置とサイズを決定する必要があります。
“Blob01” Blobオブジェクトのサーチウィンドウは、下図のワッシャーの左側に見えるボックスです。ワッシャーの全体を視野に入れて近くで検索できるように、サーチウィンドウのサイズを大きくしてみましょう。
- マウスポインターをBlobオブジェクトの名称ラベルに移動して、マウスの左側ボタンを押してください。マウスの左側ボタンを押し続けながら、Blobオブジェクトを画像イメージ表示部の左上コーナーにドラッグし、サーチウィンドウの左上コーナーが画像イメージ表示部の左上コーナーに重なるようにしてください。
- マウスポインターをBlob01サーチウィンドウの右下サイズハンドルに移動して、マウスの左側ボタンを押してください。マウスの左側ボタンを押し続けながら、右下サイズハンドルを画像イメージ表示部の右下コーナーにドラッグしてください。Blobオブジェクトのサーチウィンドウが画像イメージ表示部全体の上に重なります。以上の操作によって、カメラの視野内にあるどのようなブローブでも検出することができます。
下の画面は、画像イメージ表示部の全体に重なるように、位置とサイズを変更した“Blob01” Blobオブジェクトのサーチウィンドウを示します。
大きなサーチウィンドウをもつ"Blob01"Blobオブジェクト
Step 3: プロパティーの設定とBlobオブジェクトの実行
ステップ2の操作を終了すると、サーチウィンドウは、サーチウィンドウ内にワッシャーを見るのに充分な大きさになっています。これで、Blobオブジェクトがワッシャーを検出できるかどうかの確認テストができます。
[Vision Guide]ウィンドウの右上にあるツリーの中のBlob01オブジェクトを確認してください。Blob01オブジェクトのプロパティーとリザルトを表示します。
プロパティーリストからNameプロパティーを見つけてください。Nameプロパティーのフィールドでダブルクリックすると、現在のプロパティー名が強調表示されます。ここで、名称 (下図の囲んだ部分)をwasherとして入力してください。これで、Blobオブジェクトのラベル名が “washer”に変更されました。名称ドロップダウンリスト中のジョグタブの一番上と、サーチウィンドウのラベル名を見ると、両方の場所で名称が変更されているのがわかります。
Blob01オブジェクトのプロパティープロパティーリストを見ながら、Polarityプロパティーをチェックすることもできます。新規ブローブを作成すると、Polarityプロパティーのデフォルトは“Dark on Light”になっていますが、これは明るい背景で暗いブローブを検出するという意味です。このプロパティーは“"Light on Dark”に変更することができますが、ここでは明るい背景で暗いブローブ(ワッシャー)を検出したいので、Polarityプロパティーは変更せずにこのままにしておいてください。
以上で、Blobオブジェクト“washer”を実行する準備ができました。
オブジェクトを実行するには、実行画面の左下にある[実行]ボタンをクリックしてください。この操作によって、Blobオブジェクト“washer”が実行され、このチュートリアルの場合では、Blobオブジェクトはワッシャーのように見えるブローブを検出します。
Blobオブジェクトの実行後にサーチウィンドウの色の変化によって、ブローブが検出できたことがわかります。Blobオブジェクトがブローブを検出すると、サーチウィンドウの色は緑色に変化し、検出できなかった場合は、赤色に変化します。
ブローブが検出できたかどうかは、リザルトリストで確認することもできますが、これについては後述します。ワッシャーの描かれたターゲットシートをわずかに動かし、実行画面の[実行]ボタンを、もう一度クリックしてみてください。
自分が設定したサーチウィンドウ内にワッシャーがあることを確認してください。画像イメージ表示部内に、ブローブの新規ポジションが検出され、緑色に強調表示されるのが見えます。
ワッシャーがサーチウィンドウの枠外に出るように紙を動かすと、Blobオブジェクトはワッシャーを検出することができません。これは、オブジェクトが検出できなかったときには、サーチウィンドウの色が赤色に変化することからも確認することができます。
Step 4: リザルトのチェックのしかた
“washer”という名称のBlobオブジェクトを実行すると、このオブジェクトに返ったリザルトを確認することができます。リザルトは、プロパティーリストの下にあるリザルトリストに表示されます。
- リザルトリストから、Foundという名称のリザルトを探してください。この時点でブローブが検出できているので、Foundリザルトは、“True”になっています。ブローブが検出できなかった場合、Foundリザルトには、“False”が表示されます。
- また、リザルトリストの一番上で、Areaリザルトを確認することができます。これは、ブローブが検出できた領域を示します。
- 垂直スクロールバーを使って、リザルトリストを一番下まで移動してください。Blobリザルトリストの一番下では、Timeリザルトを確認することができます。このリザルトは、ブローブの検出にかかった時間を表します。
リザルトリストを一番下までスクロールして表示しているTimeリザルト
注意
ビジョンシーケンスの実行結果は、外らん光や外部機器ノイズにより影響を受けることがあります。外らん光や外部機器ノイズにより、影響を受けると、取り込み画像が想定外の結果となり、検出位置結果がサーチエリア(検出エリア)内の不特定位置になる可能性があります。サーチエリアは、極力小さく、また誤検出に配慮した画像処理シーケンスの作成を行ってください。
Step 5: ビジョンシーケンスを保存する方法
この時点で、これまでの作業を保存します。どのようなアプリケーションを使用する場合でも、作業の途中で頻繁に保存をするように心がけてください。Epson RC+ 8.0のプロジェクトマネージャー機能を使うと、このプロジェクトに関係するデータすべてを一度に保存することができます。この手順は、次に示すとおり非常に簡単です。
Epson RC+ 8.0ツールバー - [ファイルの保存]ボタンをクリックしてください。
以上で、新規Blobオブジェクトの作成、サーチウィンドウの位置とサイズの設定ができ、またブローブを検出するために、Blobオブジェクトを実行することができました。
次の手順に進んでみましょう。SPEL+言語からビジョンシーケンスを実行する簡単なプログラムを作成し、プログラムで使うリザルトを取り出す方法について説明します。
ビジョンシーケンスを使用するSPEL+プログラムの作成
Vision Guide 8.0の最も強力な機能の1つは、ポイント クリック環境から作成されたビジョンシーケンスが、SPEL+言語から使用可能であるということです。つまり、ビジョンシーケンスはセイコーエプソンのビジョンアプリケーションの核心であって、SPEL+での全面的な書き直しを必要とされるようなプロトタイプのツールではありません。ビジョンシーケンスとSPEL+言語は統合されて、両者の特性を生かした最高の操作環境を提供します。
この項では、ブローブが検出できたかどうかの確認、ブローブの領域のチェック、これらの情報を含むメッセージのプリントアウトをするためのクイックプログラムを書いてみます。ポイント クリック操作による開発環境の使いやすさ、そして言語のパワーと柔軟性をご理解いただけるはずです。
ファイル名MAIN.PRGのプログラムのオープン
Epson RC+ 8.0の環境に慣れている方は、プログラムファイルの開き方をすでにご存じだと思います。しかし、ここでは、ファイルの開き方がわからない方のために基本的な手順を説明します。
Epson RC+ 8.0ツールバー - [ファイルを開く]ボタンをクリックしてください。すると、下図のようなダイアログボックスが表示されます。
Epson RC+ 8.0[ファイルを開く]ダイアログまだ他のファイルは作成していないので、上記の[ファイルを開く]ダイアログ中では、main.prgプログラムファイルが反転表示されているはずです。そのままダイアログの左下にある[開く]ボタンをクリックし、main.prgプログラムファイルを開いてください。
ビジョンシーケンスを使用するSPEL+プログラムの作成
下に示すのは、ビジョンシーケンス “blubut” を実行し、Blobオブジェクト “washer”に関連するプロパティーのいくつかをチェックするためのサンプルプログラムです。
例えば、ブローブが検出できたかどうかをチェックすることにします。検出できた場合は、「The washer was found!」というメッセージとともに、ブローブの領域が表示されます。検出できなかった場合は、「The washer was not found!」というメッセージが表示されます。
タイトルバーにMAIN.PRGと表示されている編集ウィンドウを見てください。カーソルが、編集ウィンドウの1番目の行の1番初め(プログラム作成を開始するときの位置)に位置しているはずです。この編集ウィンドウで、次に示すプログラムを入力してください。このとき、大文字と小文字を区別して入力する必要はありません。エディターは、すべてのキーワードを自動的に変換します。
Function main
Real area
Boolean found
VRun blobtut
VGet blobtut.washer.Found, found
If found = TRUE Then
VGet blobtut.washer.Area, area
Print "The washer was found!"
Print "The washer area is: ", area, "Pixels"
Else
Print "The washer was not found!"
EndIf
Fend
mainファンクションの実行
Epson RC+ 8.0のRunウィンドウの使い方は、すでにご存じだと思います。Runウィンドウを使って、上述のセクションで作成したサンプルプログラムを実行します。実行の手順は、次に示すとおりです。
Epson RC+ 8.0ツールバー - [Runウィンドウ]ボタンをクリックしてください。この操作によって、Runウィンドウが表示されます。下図を参照してください。Runウィンドウは、2つの部分に分割されています。Runウィンドウの左半分は画像イメージ表示部で、右半分はテキストの領域になっています。
キーポイント
Runウィンドウがテキスト表示領域(b)しか表示せず、画像イメージ表示部(a)が表示されない場合は、Runウィンドウの[ビジョン画像の表示]チェックボックスをクリックしてください。
画像イメージ表示部とテキスト表示領域を示すRunウィンドウ
Runウィンドウの左下コーナーにある[開始]ボタンをクリックしてください。この操作によって、“main”ファンクションが実行されます。
“main”ファンクションを実行すると、手順(4)の図に示すような実行例を見ることができます。ブローブが検出されると、ブローブはRunウィンドウの左側の画像イメージ表示部に緑色で強調表示されます。Runウィンドウの右側には、ブローブが検出されたことを示すテキストと、ブローブの領域が表示されます。
Runウィンドウの左上コーナーにあるRunウィンドウコントロールメニューボックスをダブルクリックしてください。この操作によって、Runウィンドウが閉じます。
"main"実行後のRunウィンドウの表示例
可動カメラでロボットをキャリブレーションするには
ここでは、水平多関節型ロボットの第2関節に搭載されている可動カメラでロボットをキャリブレーションする方法について説明します。
ビジョンシステムは、キャリブレーションを行うことにより、ロボット座標系とカメラ座標系を自動計算し、座標変換することができるようになります。キャリブレーションが完了すると、ビジョンシステムを使って、ロボットがピックアップする移動先のパーツを検出することができます。
可動カメラでロボットのキャリブレーションを開始する前に、モーターの励磁やツール値の設定などのロボット側の準備が必要です。
Step 1: モーターの励磁
- Epson RC+ 8.0ツールバー - [ロボットマネージャー]ボタンをクリックしてください。すると、下図のような画面が現われます。
- 画面上部の、[MOTOR Off]ボタンをクリックしてください。
- メッセージボックスには、「モーターパワーをオンします。よろしいですか?」と表示されます。[はい]ボタンをクリックしてください。ロボットの各軸モーターが励磁されます。
Step 2: ツール設定タブを使ったツール値の設定
ビジョンシステムを使ったガイダンスベースのアプリケーションにロボットを使用するには、アーム端のツール(グリッパーやロッドなど)の正確な位置計測が必要になります。第3軸(J3軸)中央からオフセットされたツールと、第3軸(J3軸)中央に添って装着されているツールがあります。しかし、どれほど注意深くツールを装着しても、第3軸(J3軸)の中央からのオフセットは生じます。したがって、このずれを調整するために、SPEL+言語のツール機能を使う必要があります。
ロボットガイダンスにVision Guideを使用するには、ツール機能を充分に理解しておく必要があります。ツール設定ウィザードを使用して、キャリブレーションロッド(グリッパー)のツールを作成します。
- [ツール設定]タブを選択します。
- [ツール設定ウィザード]ボタンをクリックします。
- ツール設定ウィザードの基準点\1は、ロッド、またはクリッパーが正確にワッシャー(紙に描かれたワッシャー)の中央に位置するようにロボットをジョグし、ティーチします。ロボット、またはグリッパーを紙に近づけてジョグする必要がありますが、紙にくっつけてはいけません。(紙とロボットの距離は5~10 mm)これはロッド、またはグリッパーが正確にワッシャーの中央に位置するようにするためです。
- ツール設定ウィザードの基準点\2は、U軸を約180°ジョグした後、ロボット、またはグリッパーをワッシャーの中央に位置するようにロボットをジョグしティーチします。
- [完了]ボタンをクリックして新しいツール定義を適用し、ツール設定ウィザードを閉じます。ツール1のパラメーターを定義しました。
ツール1の新しいツール定義は、下図のように表示されます。
ツール設定タブ(ツール定義用)
Step 3: 新規に定義されたツールのテスト
[ジョグ&ティーチ]タブを選択します。ロボットはジョグしていないので、ロッドはまだ、ターゲットポジション(ワッシャー中央の真上)に位置しているはずです。
- 問題が生じた場合に備えて、ロッドを作業面から上に離しておきます。+Zのジョグボタンを押して、第3軸(J3軸)を10~15 mmほど上げてください。
- ジョグ&ティーチウィンドウの[Tool]をクリックし、下矢印をクリックしてください。
- “1”をクリックして、ツール1を選択してください。(これは、手順(4)でティーチしたツールです。)
- +U、または-Uのジョグボタンを押してみて、U axis第4軸(J4軸)が回転してもロッドの先端がずれないことを確認してください。(これは、第3軸(J3軸)の中心からずれているツールによく見られます。第3軸(J3軸)からまっすぐ下にあるロッドをお使いの場合は、これを見るのは難しいかもしれません。)
- 第4軸(J4軸)が動いているときには、ターゲットポジションからロッドがいくらか動くのが見えますが、ジョグのステップ実行が完了すると、ロッドの先端はターゲットポジションへ戻ります。
- ツールが適切に動作しないように見える場合は、ステップ2の最初に戻って、もう一度やり直してください。
- [ロボットマネージャー]を閉じてください。ツールの定義とテストはこれで終了です。
Step 4: カメラキャリブレーションプロセスの開始
以上で、可動カメラでロボットをキャリブレーションする準備ができました。
- Epson RC+ 8.0ツールバー - [ビジョン]ボタンをクリックして、ビジョンウィンドウを画面中央に開いてください。
- Vision Guideツールバー - [新規キャリブレーション]ボタンをクリックしてください。[新規キャリブレーション]ダイアログが表示されます。
- 新規キャリブレーション名を入力してください。ここでは、 “downcal”という名称を入力して、[OK]ボタンをクリックしてください。
- キャリブレーションウィンドウのプロパティーリストで、CameraOrientationプロパティーを “Mobile J2” に変更してください。
- RobotToolプロパティーを “1”に変更してください。これによりキャリブレーションの基準点のティーチングに使うツール1を選択します。
- TargetSequenceプロパティーを “blobtut”に設定してください。キャリブレーションでのパーツ検出には、このblobtutシーケンスを使うことになります。
Step 5: キャリブレーションポイントのティーチング
- 画像表示の下の方にある[ポイントティーチング]ボタンをクリックしてください。
- 下図に示すように、[Vision Guide]ウィンドウはポイントティーチングモードに切り替わります。[Vision Guide]ウィンドウの上に、下図に示すような「左上カメラ位置へジョグ」というメッセージが表示されます。これは、[Vision Guide]ウィンドウの画像イメージ表示部の左上コーナーにワッシャーが表示されるようロボット(とカメラ)をジョグする、ということです。下図に、ロボットをジョグする位置の目安を示します。これがキャリブレーションに必要な9つのカメラ位置の第1カメラ位置です。
キャリブレーションのためのカメラ位置ティーチング - 第1カメラ位置を教示します。: 左上の位置にワッシャーが見えるようにロボットをジョグします。
- カメラが位置決めできたら、[Vision Guide]ウィンドウの[ティーチ]ボタンをクリックしてください。
- 第2カメラ位置を教示します。:中央上の位置にワッシャーが見えるようにロボットをジョグします。この位置は第1カメラの右側にあたります。
- カメラが位置決めできたら、[Vision Guide]ウィンドウの[ティーチ]ボタンをクリックしてください。
- 第3カメラ位置を教示します。: 右上の位置にワッシャーが見えるようにロボットをジョグします。この位置は第2カメラの右側にあたります。
- カメラが位置決めできたら、[Vision Guide]ウィンドウの[ティーチ]ボタンをクリックしてください。
- 第4カメラ位置を教示します。:中央右の位置にワッシャーが見えるようにロボットをジョグします。この位置は、第3カメラ位置の下にあたります。以後、カメラ位置をジグザクの順番で教示します。
- カメラが位置決めできたら、[Vision Guide]ウィンドウの[ティーチ]ボタンをクリックしてください。
- 第5~第9カメラ位置を教示します。: 続けて、第5~9カメラ位置のそれぞれについて、[Vision Guide]ウィンドウの下で指定された位置にロボットをジョグし、キャリブレーションポイントを教示してください。[Vision Guide]ウィンドウに表示されるカメラ位置は次のとおりです。
5 - 中央
6 - 左中央
7 - 左下
8 - 中央下
9 - 右下 - 次に、「固定基準位置へジョグ」というメッセージが、画面上に表示されます。これは、ロッドがターゲットの中央にくるように、ロボットをジョグすることを意味しています。ここではロッドをターゲットに合わせているので、ビデオディスプレイは無視してください。ジョグボタンを使って、ロッドが正確にワッシャーの中央にくるようにジョグしてください。この位置決めはとても重要なので、適切な位置合わせを行うためにワッシャーの近くでロボットをジョグしてください。
- ロッドが正確にワッシャーの中央にきたら、[Vision Guide]ウィンドウの下にある[ティーチ]ボタンをクリックしてください。
- ロッドの位置は非常に低くなっているので、キャリブレーション中に他のオブジェクトに干渉する可能性があります。+Z方向にジョグして、作業面から十分に高い位置に離しておいてください。このZ高さは、これから教示する9つのキャリブレーションポイントに使用されます。
- 最後のカメラ位置の教示が終了すると、「すべてのキャリブレーションポイントが教示されました。」と画面上に表示されます。[完了]ボタンをクリックして、次のステップに進んでください。
以上で、キャリブレーションに必要なポイントティーチングは完了しました。
Step 6: カメラキャリブレーションの最終ステップ
カメラキャリブレーションを完了するのに必要な最終ステップを次に示します。
- [キャリブレーション]パネルの[キャリブレーション実行]ボタンをクリックしてください。
- メッセージボックスには、「注意:ロボットはキャリブレーション中、SPEED10、ACCEL10で動作します。よろしいですか?」と表示されます。[はい]ボタンをクリックして、キャリブレーションを続けてください。
ロボットは、キャリブレーション中、9つの各々のカメラ位置を2回移動します。ロボットの動作中にキャリブレーションを中断したい場合は、 [キャリブレーション実行中]ダイアログの下にある[中断]ボタンをクリックしてください。 - キャリブレーションサイクルが完了すると、[キャリブレーション完了]ダイアログが表示され、キャリブレーションの結果のデータを表示します。データを確認して、[OK]ボタンをクリックしてください。
- キャリブレーションの結果のデータは、キャリブレーションウィンドウのリザルトリストに表示されています。
Step 7: "Downcal"キャリブレーションのBlobtutシーケンスへの割り当て
“downcal”キャリブレーションはすでに作成されているので、次に、このキャリブレーションをビジョンシーケンス(blobtut)に割りあてる必要があります。この割りあてによって、blobtutシーケンスでは、ロボット座標系またはカメラ座標系の値で結果を計算することができるようになります。
- [Vision Guide]ウィンドウで、シーケンスツリーからビジョンシーケンス“blobtut”をクリックし、シーケンスウィンドウを前面に表示させてください。
- Calibrationプロパティーを“downcal”に設定してください。設定方法は、まず、Calibrationプロパティーの値フィールドをクリックし、次に下向き矢印をクリックし、最後に “downcal”という名称のキャリブレーションをクリックします。このキャリブレーションは、前述のステップで作成したものです。
- シーケンス、キャリブレーションツリーの右側に表示されている[Jog]ボタンをクリックし、ジョグタブを表示させてください。
- ジョグボタンを使って、カメラをワッシャーの上に位置決めし、ワッシャーが画像イメージ表示部内に見えるようにしてください。
- シーケンスツリーから“washer”オブジェクトをクリックし、オブジェクトウィンドウを前面に表示させてください。
- “washer”オブジェクトを実行します。[オブジェクトの実行]ボタンをクリックしてください。パーツが検出されたら、リザルトリストを見てください。このとき、CameraX, CameraY, RobotX, RobotY, RobotUのリザルトの表示は、“nocal”リザルトになっていません。その代わりに、ロボット座標系またはカメラ座標系での座標位置データが表示されています。
ビジョンガイダンスで使用するポイントの教示
ワッシャーのピックアップ位置のZ高さ、カメラがワッシャーの画像をとる位置、このチュートリアルで作業を開始するための安全な位置を定義するいくつかのポイントを教示する必要があります。
Step 1: 「カメラショット」位置の定義
ロボットをパーツに向かって動作させ、ワッシャーが画面上の画像イメージ表示部に見えるようにしてください。ワッシャーが画像イメージ表示部の中央に見え、サーチウィンドウの端に近づきすぎない位置にするのがよいでしょう。washerオブジェクトを実行したばかりなので、カメラはワッシャーを的確にとらえる位置にあるはずです。
- Epson RC+ 8.0メニューバー - [ツール] - [ロボットマネージャー] - [ジョグ&ティーチ]タブを選択します。
- カメラショット位置をツール1を使って教示するために、Tool:というラベルのドロップダウンリストをチェックして、ツールが1に設定されているかどうか確認してください。ツールが “1”に設定されていない場合は、ドロップダウンリストの矢印をクリックして、ツールを “1”に設定してください。
- ポイント#フィールドのカレントポイントが “P0”であることを確認してください。ポイントが “P0”になっていない時は、ポイントフィールドで “P0”を選択してください。
- ジョグ&ティーチウィンドウの[ティーチング]ボタンをクリックしてください。ラベル名をつけるか、メッセージが表示されます。“camshot”と入力します。この操作によって、“camshot”位置が教示されます。
Step 2: ワッシャーから離れた安全位置の定義
プログラムのスタート時に移動する安全位置として、ワッシャーから離れたところにポイント位置を教示する必要があります。
- ポイントフィールドで “P1”を選択してください。
- ロボットのZ軸を上方にジョグし、X軸とY軸でロボットを安全位置に位置決めするようにジョグしてください。ここが、プログラムの開始位置となります。ロボットは、ワッシャーに移動する前に、必ずこの位置に移動します。
- [ジョグ&ティーチ]パネルの[ティーチング]ボタンをクリックしてください。ラベルに“safept”を入力します。この操作によって、“safept”位置が教示されます。
Step 3: 「ワッシャー」ピックアップ位置として適切なZ高さの設定
ワッシャーの図面へロボットを動作する場合は不要ですが、本物のワッシャーをピックアップするアプリケーションを行う場合は、ワッシャーのピックアップ位置としてのZ高さを的確に設定する必要があります。ここでは、第3軸(J3軸)にグリッパーを装着してあることを前提に説明します。
注意
ロボット動作時のZ高さの決定には、十分注意してください。Z高さをまちがえると、ロボットのツール(グリッパー)や、周辺機器に重大な損傷を与える可能性があります。
- Epson RC+ 8.0メニューバー - [ツール] - [ロボットマネージャー] - [ジョグ&ティーチ]タブを選択します。
- まず、ジョグボタンを使って、グリッパーをワッシャーの上に位置決めし、Z高さをワッシャーから5~10 mmの高さに位置決めしてください。グリッパーをワッシャーにぶつけないように慎重に行ってください。
- グリッパーを少しずつ下げ、ワッシャーをつかめる位置にきたら、そのときのZ座標の値を控えておいてください。このZ座標値をプログラム中で使用し、グリッパーをこの高さに移動させるようにします。
- ポイントフィールドで “P2”を選択してください。
- ジョグ&ティーチウィンドウの[ティーチング]ボタンをクリックしてください。ラベル名に“washpos”を入力します。この操作によって、“washpos”の初期位置が教示されます。(しかし、Visionシステムは、新しいXY位置を計算し、それからこのポイントに移動するために使われます。また、現在のZ座標位置に基づいたプログラムに、固定のZ高さを設定します。)
ビジョンとロボットを使ってパーツへの移動をする方法
最後の手順として残っているのは、ビジョンシステムとロボットが一緒に動作してワッシャーの位置を検出し、その位置まで移動するように、プログラムを修正することです。
Step 1: SPEL+プログラムに必要な修正
Epson RC+ 8.0ツールバー - [ファイルを開く]ボタンをクリックします。
MAIN.PRGプログラム以外に作成済みのプログラムはないので、MAIN.PRGプログラムファイルが反転表示されているはずです。ダイアログの左下にある[開く]ボタンをクリックして、MAIN.PRGプログラムファイルを開いてください。次に示すように、本チュートリアルで以前に実行したプログラムが表示されます。
Function main Real area Boolean found VRun blobtut VGet blobtut.washer.found, found If found = TRUE Then VGet blobtut.washer.area, area Print "The washer was found!" Print "The washer area is:", area, "Pixels" Else Print "The washer was not found!" EndIf Fend
次のページに示すように、プログラムを修正します。
キーポイント
SPEL+言語では、コメント表示をアポストロフィ( ' )で示します。アポストロフィに続いて示される文字は、すべてコメントであって、プログラムの実行には必要とされない部分です。つまり、アポストロフィで始まる文章は、省略することができます。
Function main '*********************************************** ' 以下に重要なステートメントがあります: * ' 「ビジョンガイダンスで使用するポイントの教示」の手順3で記録 * ' したZ座標値を使用してください。 * ' 下記の“xx”に、記録したZ座標値(負数)を代入してください。 * '*********************************************** #define ZHeight -xx Real area, x, y, u Boolean found Integer answer String msg$, answer$ Power Low '低速でロボットを動かし、加速する Tool 1 '位置決めにツール1を使用する Jump safept '安全開始位置までロボットを移動する Do 'オペレーターが停止するまでループし続ける Jump camshot 'ロボットを動かし、撮像する VRun blobtut 'ビジョンシーケンス(blobtut)を起動する VGet blobtut.washer.RobotXYU, found, x, y, u If found = True Then VGet blobtut.washer.area, area Print "The washer was found!" Print "The washer area is: ", area, "Pixels" washpos = XY(x, y, ZHeight, u) 'Set pos to move to Jump washpos msg$ = "The washer was found!" Else msg$ = "The washer was not found!" EndIf msg$ = msg$ + CRLF + "Run another cycle(Y/N)?" Print msg$ Input answer$ If Ucase$(answer$) <> "Y" Then Exit Do EndIf Loop Fend
Step 2: ワッシャーの検出とワッシャー位置への動作を行うプログラムの実行
- Epson RC+ 8.0ツールバー - [Runウィンドウ]ボタンをクリックしてください。プログラムがコンパイルされて、Runウィンドウが表示されます。
- Runウィンドウの[Start]ボタンをクリックしてください。
- プログラムは、ワッシャーを検出し、ロボットをその位置へ動作させます。ワッシャーが検出できたら、ワッシャーをわずかに動かしてください。もう一回サイクルを実行しますか、というダイアログが表示されますので、[はい]ボタンをクリックしてください。
ワッシャーが検出できない場合は、もう一度実行しますか、というダイアログが表示されます。
どちらのダイアログでも、[いいえ]ボタンをクリックするとプログラムの実行を終了することができます。