以下、本発明の制御装置、ロボット、およびロボットシステムを添付図面に示す好適な実施形態に基づいて詳細に説明する。
<ロボットビジョンシステム(ロボットシステム)の構成>
図1は、本発明の第1実施形態に係るロボットビジョンシステムのネットワーク図である。図2は、図1に示すロボットビジョンシステムが有するロボットの一例を示す斜視図である。図3は、図1に示すロボットビジョンシステムが有するロボットの一例を示す斜視図である。図4は、図2又は図3に示すロボットのシステム構成図である。図5は、図1に示すロボットシステムが有するコンピューターのシステム構成図である。図6は、図1に示すロボットシステムが有するロボット制御装置のシステム構成図である。図7は、図1に示すロボットシステムが有する画像処理装置のシステム構成図である。
なお、以下では、説明の便宜上、図2および図3中の上側を「上」、下側を「下」と言う。また、図2および図3中の基台210側を「基端」、その反対側(エンドエフェクターとしてのハンド270側)を「先端」と言う。また、図2又は図3中の上下方向を「鉛直方向」とし、左右方向を「水平方向」とする。本明細書において、「水平」とは、完全に水平な場合のみならず、水平に対して±5°以内で傾斜している場合も含む。同様に、本明細書において、「鉛直」とは、完全に鉛直な場合のみならず、鉛直に対して±5°以内で傾斜している場合も含む。また、本明細書において、「平行」とは、2つの線(軸を含む)又は面が、互いに完全な平行である場合のみならず、±5°以内で傾斜している場合も含む。また、本明細書において、「直交」とは、2つの線(軸を含む)又は面が、互いに完全な直交である場合のみならず、±5°以内で傾斜している場合も含む。
図1に示すロボットビジョンシステム(ロボットシステム)100は、例えば、電子部品および電子機器等のワークの保持、搬送、組立て、および検査等の作業で用いられる装置である。ロボットビジョンシステム100は、制御システム(制御装置)10と、少なくとも1つのロボット2と、撮像機能を有する複数の撮像部3と、表示装置(表示部)41と、入力装置(入力部)42と、を有する。制御システム10は、コンピューター(メイン制御装置、第1制御装置)11と、ロボット制御装置(第2制御装置)12と、画像処理装置(第3制御装置)13と、を有する。ロボットビジョンシステム100が複数のロボット2を有する場合、同型(同種)のロボット2(例えば、ロボット2a又はロボット2bのいずれか)を複数有してもよく、また、異なる型(異種)のロボット2(例えば、ロボット2aとロボット2b)を複数有してもよい。
コンピューター11とロボット制御装置12と画像処理装置13とは、互いに、有線又は無線通信で接続(以下、単に「接続」ともいう)されている。また、コンピューター11には、表示装置41および入力装置42のそれぞれが有線又は無線通信で接続されている。また、ロボット制御装置12には、ロボット2が有線又は無線通信で接続されている。また、画像処理装置13には、複数の撮像部3のそれぞれが有線又は無線通信で接続されている。なお、撮像部3、表示装置41、および入力装置42は、それぞれ、画像処理装置13に接続されていてもよい。
このロボットビジョンシステム100は、例えば、制御システム10の制御の下、撮像部3がワーク等を撮像し、ロボット2が撮像部3で撮像した撮像画像(画像データ)を基にしてワーク等に対して作業を行う。また、ロボットビジョンシステム100は、ロボット2が適切な作業を行うことができるよう、制御システム10の制御の下、例えば、撮像部3でワークを認識するために画像処理シーケンスの作成等を行ったり、撮像座標系とロボット座標系(先端座標系又はベース座標系)とを対応付けるキャリブレーションを行う。
以下、ロボットビジョンシステム100を構成する各部について説明する。
〈ロボット〉
図1に示すように、ロボット2は、ロボット制御装置12に接続されている。ロボット制御装置12に接続可能なロボット2の種類は、特に限定されない。例えば、図2に示すような垂直多関節ロボットとしてのロボット2a(ロボット2)や、図3に示すような水平多関節ロボットとしてのロボット2b(ロボット2)であってもよい。ここで、「水平多関節ロボット」とは、水平方向にアーム(スプラインシャフト203を除く)が動作するロボットのことを言う。また、「垂直多関節ロボット」とは、軸数(アーム数)が3つ以上であり、かつ、3つの軸のうちの2つの軸が互いに交差(直交)しているロボットのことを言う。
以下、ロボット2a,2bについて簡単に説明する。
(ロボット2a)
図2に示すように、ロボット2a(ロボット2)は、例えば作業台90上に設置されている。ロボット2aは、いわゆる6軸垂直多関節ロボット(自由度6)である。ロボット2aは、作業台90に取り付けられている基台210と、基台210に接続されたロボットアーム20と、ロボットアーム20の先端に取り付けられた力検出部290と、力検出部290の先端に取り付けられたハンド270(エンドエフェクター)と、を有する。
ロボット2aが有するロボットアーム20は、第1アーム(アーム)21と、第2アーム(アーム)22と、第3アーム(アーム)23と、第4アーム(アーム)24と、第5アーム(アーム)25と、第6アーム(アーム)26と、を有する。これらアーム21~26は、基端側から先端側に向かってこの順に連結されている。また、力検出部290は、例えばハンド270に加わる力(モーメントを含む)を検出する力覚センサー(例えば、6軸力覚センサー)等で構成されている。また、ハンド270は、ワークを把持可能な2つの指を有し、アーム26の回動に伴って回動する。このハンド270は、設計上、ハンド270の中心軸がアーム26(先端アーム)の回動軸O6と一致するように取り付けられている。ここで、ハンド270の先端中心をツールセンターポイントPという。本実施形態では、ツールセンターポイントPは、ハンド270が有する2つの指の間の領域の中心である。また、ロボットアーム20の先端中心を「先端軸座標」とする。
また、図4に示すように、ロボット2aは、一方のアームを他方のアーム(又は基台210)に対して回動(駆動)させる駆動部280を有する。駆動部280は、駆動力を発生させるモーター(図示せず)とモーターの駆動力を減速する減速機(図示せず)とを有する。駆動部280が有するモーターとしては、例えば、ACサーボモーター、DCサーボモーター等のサーボモーターを用いることができる。減速機としては、例えば、遊星ギア型の減速機、波動歯車装置等を用いることができる。また、各駆動部280には、モーター又は減速機の回転軸の回転角度を検出する位置センサー(角度センサー)281が設けられている。本実施形態では、ロボット2aは、6つのアーム21~26と同じ数である6つの駆動部280および位置センサー281を有している。また、各駆動部280は、モータードライバー283に電気的に接続されており、モータードライバー283を介してロボット制御装置12により制御される。
このような構成のロボット2aでは、図2に示すように、基台210を基準としたベース座標系として、水平方向に対してそれぞれ平行なxr軸とyr軸と、水平方向に対して直交し、かつ、鉛直上向きを正方向とするzr軸とによって定まる3次元の直交座標系を設定している。本実施形態では、ベース座標系は、基台210の下端面の中心点を原点としている。xr軸に対する並進成分を「成分xr」とし、yr軸に対する並進成分を「成分yr」とし、zr軸に対する並進成分を「成分zr」とし、zr軸周りの回転成分を「成分ur」とし、yr軸周りの回転成分を「成分vr」とし、xr軸周りの回転成分を「成分wr」とする。成分xr、成分yr、成分zrの長さ(大きさ)の単位は「mm」であり、成分ur、成分vr、成分wrの角度(大きさ)の単位は「°」である。
また、ロボット2aでは、ハンド270の先端部を基準とした先端座標系が設定されている。先端座標系は、互いに直交するxa軸、ya軸、za軸とによって定まる3次元の直交座標系である。本実施形態では、先端座標系は、ロボット2aの先端軸座標を原点としている。また、ベース座標系と先端座標系との校正(キャリブレーション)は済んでおり、ベース座標系を基準とした先端座標系の座標を算出することができる状態である。また、xa軸に対する並進成分を「成分xa」とし、ya軸に対する並進成分を「成分ya」とし、za軸に対する並進成分を「成分za」とし、za軸周りの回転成分を「成分ua」とし、ya軸周りの回転成分を「成分va」とし、xa軸周りの回転成分を「成分wa」とする。成分xa、成分ya、成分zaの長さ(大きさ)の単位は「mm」であり、成分ua、成分va、成分waの角度(大きさ)の単位は「°」である。
ここで、本明細書では、ベース座標系および先端座標系をそれぞれロボット座標系とも言う。すなわち、本明細書では、ロボット2のいずれかの箇所を基準として設定した座標を「ロボットの座標系(ロボット座標系)」という。
(ロボット2b)
図3に示すように、ロボット2b(ロボット2)も、ロボット2aと同様に、例えば作業台90上に設置されている。ロボット2bも、ロボット2aと同様に、作業台90に取り付けられている基台210と、基台210に接続されたロボットアーム20と、ロボットアーム20の先端に取り付けられた力検出部290と、力検出部290の先端に取り付けられ、ワークを把持可能なハンド(エンドエフェクター)270と、を有する。なお、ロボット2bについては、ロボット2aと同様の構成についてはその説明を省略し、ロボット2aとの相違点を中心に説明する。
ロボット2bが有するロボットアーム20は、第1アーム(アーム)201と、アーム201の先端部に設けられた第2アーム(アーム)202と、第2アーム202の先端部に設けられたスプラインシャフト(アーム)203と、を有する。また、ハンド270は、設計上、ハンド270の中心軸がスプラインシャフト203の軸J3と一致するように取り付けられている。ハンド270は、スプラインシャフト203の回動に伴って回動する。
ロボット2bも、ロボット2aと同様に、3つのアームと同じ数である3つの駆動部280および位置センサー281を有している(図3および図4参照)。なお、スプラインシャフト203は、図示はしないが、駆動部280の動力を伝達する動力伝達機構としてのスプラインナットおよびボールネジナットに接続されている。そのため、スプラインシャフト203は、その軸J3まわりに回動可能であり、かつ、上下方向に移動(昇降)可能となっている。
また、ロボット2bも、ロボット2aと同様に、ベース座標系(xr軸、yr軸、zr軸とによって定まる3次元の直交座標系)と、先端座標系(xa軸、ya軸、za軸とによって定まる3次元の直交座標系)と、が設定されている。
以上、ロボット2(ロボット2a,2b)の構成について簡単に説明した。なお、制御システム10によって制御されるロボット2としては、図2および図3に示す構成に限定されない。例えば、アームの数は、上述した数に限定されず任意である。また、ワークに対して作業をするエンドエフェクターとしては、ハンド270に限定されずいかなる構成であってもよい。
〈撮像部〉
図1に示すように、複数の撮像部3は、それぞれ、画像処理装置13に接続されている。本実施形態では、図2および図3に示すように、ロボットビジョンシステム100は、ロボット2の周辺に配置された固定カメラ32(撮像部3)と、ロボット2が有するロボットアーム20に固定されたモバイルカメラ31(撮像部3)と、を有している。なお、図2および図3では、モバイルカメラ31は、ロボットアーム20の先端部に取り付けられている。具体的には、モバイルカメラ31は、図2に示すロボット2aであれば第6アーム26に取り付けられており、図3に示すロボット2bであれば、スプラインシャフト203の先端部に取り付けられている。
以下、固定カメラ32およびモバイルカメラ31について簡単に説明する。
(固定カメラ32)
図2および図3に示す固定カメラ32は、作業台90に固定されており、ロボット2のハンド270の可動範囲内に設けられている。固定カメラ32は、撮像機能を有し、鉛直方向上方を撮像できるように設置されている。
固定カメラ32は、図示はしないが、例えば、複数の画素を有するCCD(Charge Coupled Device)イメージセンサーで構成された撮像素子と、レンズ(光学系)とを有する。この固定カメラ32は、撮像対象で反射した光をレンズによって撮像素子の受光面(センサー面)で結像させて、光を電気信号に変換し、その電気信号を制御システム10(本実施形態では画像処理装置13)に出力する。ここで、受光面とは、撮像素子の表面であって、光が結像する面である。また、固定カメラ32は、設計上、その光軸A32(レンズの光軸)が作業台90の平面(上面)の鉛直方向に沿うように設けられている。
固定カメラ32では、画像座標系(固定カメラ32から出力される撮像画像の座標系)として、図示しないが、撮像画像の面内方向に対してそれぞれ平行なxc軸とyc軸とによって定まる2次元の直交座標系が設定されている。また、xc軸に対する並進成分を「成分xc」とし、yc軸に対する並進成分を「成分yc」とし、xc-yc平面の法線周りの回転成分を「成分uc」とする。成分xcおよび成分ycの長さ(大きさ)の単位は「ピクセル」であり、成分ucの角度(大きさ)の単位は「°」である。なお、固定カメラ32の画像座標系は、固定カメラ32のカメラ視野に写る3次元直交座標を、レンズの光学特性(焦点距離、歪みなど)と撮像素子の画素数および大きさとを加味して非線形変換した2次元の直交座標系である。
(モバイルカメラ31)
図2および図3に示すモバイルカメラ31は、上述したように、ロボットアーム20に固定されている。モバイルカメラ31は、撮像機能を有し、本実施形態ではロボットアーム20の先端側を撮像できるように設置されている。
モバイルカメラ31は、図示はしないが、例えば、複数の画素を有するCCDイメージセンサーで構成された撮像素子と、レンズ(光学系)とを有する。このモバイルカメラ31は、撮像対象で反射した光をレンズによって撮像素子の受光面(センサー面)で結像させて、光を電気信号に変換し、その電気信号を制御システム10(本実施形態では画像処理装置13)に出力する。ここで、受光面とは、撮像素子の表面であって、光が結像する面である。また、モバイルカメラ31は、設計上、その光軸(レンズの光軸)A31がロボットアーム20の先端軸(ロボット2aの場合は、第6アーム26の回動軸O6、ロボット2bの場合は、スプラインシャフト203の軸J3)と同じ方向に沿うように設けられている。
モバイルカメラ31では、モバイルカメラ31の画像座標系(モバイルカメラ31から出力される撮像画像の座標系)として、図示しないが、撮像画像の面内方向に対してそれぞれ平行なxb軸とyb軸とによって定まる2次元の直交座標系が設定されている。また、xb軸に対する並進成分を「成分xb」とし、yb軸に対する並進成分を「成分yb」とし、xb-yb平面の法線周りの回転成分を「成分ub」とする。成分xbおよび成分ybの長さ(大きさ)の単位は「ピクセル」であり、成分ubの角度(大きさ)の単位は「°」である。なお、モバイルカメラ31の画像座標系は、モバイルカメラ31のカメラ視野に写る3次元直交座標を、レンズの光学特性(焦点距離、歪みなど)と撮像素子の画素数および大きさとを加味して非線形変換した2次元の直交座標系である。
以上、撮像部3の構成について簡単に説明した。なお、制御システム10によって制御される撮像部3は、図示のものに限定されない。また、制御システム10によって制御される撮像部3の取付箇所(設置箇所)は、図示の箇所に限定されない。例えば、モバイルカメラ31の取付箇所は、図2に示すロボット2aの第5アーム25や、図3に示すロボット2bの第2アーム202等であってもよい。また、固定カメラ32は、図示はしないが、ロボット2の上方に位置する天井等に設置されていてもよく、また、ロボット2と周辺に設置された壁・柱等に横方向に設置されてもよい。また、撮像部3の撮像方向は、上述した方向に限定されず、任意である。また、撮像部3の数は、図2および図3では、それぞれ2つであるが、撮像部3の数は特に限定されず、1つであってもよいし、3つ以上であってもよい。
〈表示装置41〉
図1に示す表示装置(表示部)41は、例えば液晶ディスプレイ等で構成されたモニター(図示せず)を備えており、例えば撮像部3で撮像した撮像画像や各種画面(例えば操作ウィンドウや処理結果に関する画面)等を表示する機能を有する。したがって、ユーザーは、撮像画像やロボット2の作業等を把握することができる。
〈入力装置42〉
入力装置(入力部)42は、例えばマウスやキーボード等で構成されている。したがって、ユーザーは、入力装置42を操作することで、制御システム10に対して各種処理等の指示を行うことができる。
なお、本実施形態では、表示装置41および入力装置42の代わりに、表示装置41および入力装置42を兼ね備えた表示入力装置(図示せず)を設けてもよい。表示入力装置としては、例えばタッチパネル(静電式タッチパネルや感圧式タッチパネル)等を用いることができる。また、入力装置42は、音(音声を含む)を認識する構成であってもよい。
〈制御システム(制御装置)〉
上述したように、制御システム10は、コンピューター11とロボット制御装置12と画像処理装置13とを有する(図1参照)。この制御システム10は、ロボット2、複数の撮像部3、および表示装置41の駆動を制御する。なお、制御システム10は、図2および図3には図示しないが、例えば、作業台90の外部に設置されている。
以下、制御システム10、コンピューター11とロボット制御装置12について順次説明する。
(コンピューター)
コンピューター11は、例えば、プログラム(OS:Operating System)がインストールされたコンピューター(例えば、PC(Personal Computer)やPLC(Programmable Logic Controller)等)で構成されている。このコンピューター11は、例えば、プロセッサーとしてのCPU(Central Processing Unit)およびGPU(Graphics Processing Unit)と、RAM(Random Access Memory)と、プログラムが記憶されたROM(Read Only Memory)とを有する。
以下、コンピューター11が備える各機能(機能部)について説明する。
図5に示すように、コンピューター11は、制御部111と、メインメモリー112と、記憶部113と、表示制御部114と、入力制御部(受付部)115と、通信部116と、を有し、これらの間で相互にデータのやり取り(通信)ができるよう構成されている。ここで、本明細書において、制御部111および表示制御部114は、処理部110を構成している。
制御部111の機能は、例えば、CPUおよびGPUによりメインメモリー112や記憶部113に記憶された各種プログラムを実行することにより実現することができる。この制御部111は、例えば、制御プログラム作成部1111と、制御プログラムビルド部1112と、キャリブレーション作成部1113と、キャリブレーション実行部1114と、画像処理シーケンス作成部1115と、を有する。なお、制御部111が有する機能部(要素)は、これらに限定されない。これらの機能部のいずれかを省略したり、他の機能部を追加してもよい。
制御プログラム作成部1111は、ロボット2を駆動する制御プログラム(ロボット2が各種作業を行う作業プログラムを含む)を作成する。すなわち、制御プログラム作成部1111は、ロボット2を駆動する制御プログラム(ロボット2が各種作業を行う作業プログラムを含む)を作成可能である。また、例えば、制御プログラム作成部1111(コンピューター11)は、制御プログラムの中に、所定の引数を持つ各種コマンドを指定することができる。制御プログラムビルド部1112は、制御プログラムをビルドし、ロボット制御装置12で解釈可能な言語(データ列)に変換する。なお、作業プログラムは、ロボット言語で作られている。また、制御プログラムの作成には、制御プログラムを新たに作成する場合と、既存の制御プログラムを書き換えたり、追加する場合と、が含まれる。
キャリブレーション作成部1113は、キャリブレーションに関するキャリブレーションプログラムを作成する。すなわち、キャリブレーション作成部1113は、キャリブレーションに関する設定内容を作成する機能を有する。キャリブレーション実行部1114は、キャリブレーションプログラムを実行する。詳述すると、キャリブレーション実行部1114は、キャリブレーションプログラムに基づく指示をロボット制御装置12および画像処理装置13に転送し、ロボット2および撮像部3にキャリブレーションにかかる動作を行わせる。ここで、本明細書において、キャリブレーション作成部1113およびキャリブレーション実行部1114は、キャリブレーション制御部1110を構成している。なお、キャリブレーションプログラムの作成には、キャリブレーションプログラムを新たに作成する場合と、既存のキャリブレーションプログラムを書き換えたり、追加する場合と、が含まれる。
画像処理シーケンス作成部1115は、撮像部3による画像処理シーケンスに関する画像処理プログラムを作成する。すなわち、画像処理シーケンス作成部1115は、画像処理シーケンスに関する設定内容を作成する機能を有する。なお、画像処理プログラムの作成には、画像処理プログラムを新たに作成する場合と、既存の画像処理プログラムを書き換えたり、追加する場合と、が含まれる。
その他、制御部111は、入力制御部115で受けたユーザーの指示に応じて各種演算、判断、コンピューター11が有する各機能部への指示、ロボット制御装置12への指示、および、画像処理装置13への指示等を行う。
メインメモリー112は、制御部111の作業領域である。メインメモリー112の機能は、例えばRAMにより実現することができる。
記憶部113は、各種データ(プログラムを含む)を記録する機能を有する。記憶部113の機能は、ROM等やいわゆる外部記憶装置(図示せず)によって実現することができる。記憶部113は、例えば、ロボット2を駆動する制御プログラム、キャリブレーションに関するキャリブレーションプログラム、撮像部3による画像処理シーケンスに関する画像処理プログラム等を含むソフトウェア(例えばアプリケーションソフト)が記憶されている。言い換えると、コンピューター11には、上述のソフトウェアがインストールされている。また、このソフトウェアには、ツール設定に関するプログラム、ローカル設定(ローカル座標系の設定)に関するプログラム、各種コマンドにより各種ロボット2を駆動させて各種処理(例えば、ツール設定、ローカル設定、キャリブレーション作成・実行(キャリブレーション)および画像処理シーケンス作成・実行(画像処理シーケンスの作成)等)を実行させるプログラムと、および、力検出部290からの出力に基づく力制御における各種パラメーターを設定するプログラムを含む。また、上述のソフトウェアは、例えばCD-ROM等の記録媒体(図示せず)に格納されていて、この記録媒体から提供されたものであってもよいし、ネットワークを介して提供されたものであってもよい。
表示制御部114は、表示装置41に接続されており、表示装置41のモニターに撮像画像や各種画面(例えば、操作ウィンドウや処理結果に関する画面)を表示させる機能を有する。すなわち、表示制御部114は、表示装置41の駆動を制御する。この表示制御部114の機能は、例えばGPUによって実現することができる。例えば、表示制御部114は、画像処理シーケンスに関する複数のガイド画面をユーザーとの対話形式(対話式)で順次表示装置41に表示させる。また、表示制御部114は、キャリブレーションに関する複数のキャリブレーション作成画面、ツール設定に関する複数のツール設定画面、および、ローカル座標系の設定に関する複数のローカル設定画面のそれぞれをユーザーとの対話形式で順次表示装置41に表示させる。
入力制御部115は、入力装置42に接続されており、入力装置42からの入力を受け付ける機能を有する。この入力制御部115の機能は、例えばインターフェイス回路によって実現することができる。なお、例えばタッチパネルを用いる場合には、入力制御部115は、ユーザーの指のタッチパネルへの接触等を検知する入力検知部としての機能を有する。
通信部116は、ロボット制御装置12および画像処理装置13等の外部とのデータのやり取りを行う機能を有する。通信部116の機能は、例えば、インターフェイス回路等によって実現することができる。
(ロボット制御装置)
ロボット制御装置12は、例えば、コンピューター11からの指示に基づいてロボット2の駆動を制御する。ロボット制御装置12は、プログラム(OS等)がインストールされたコンピューターである。このロボット制御装置12は、例えば、プロセッサーとしてのCPUと、RAMと、プログラムが記憶されたROMと、を有する。
以下、ロボット制御装置12が備える各機能(機能部)について説明する。
図6に示すように、ロボット制御装置12は、制御部(ロボット制御部)121と、メインメモリー122と、記憶部123と、通信部126と、を有し、これらの間で相互にデータのやり取りができるよう構成されている。
制御部121の機能は、例えば、CPUによりメインメモリー122や記憶部123に記憶された各種プログラムを実行することにより実現することができる。この制御部121は、例えば、制御プログラム実行部1211とロボット制御部1212とを有する。なお、制御部121が有する機能部(要素)は、これらに限定されない。これらの機能部のいずれかを省略したり、他の機能部を追加してもよい。
制御プログラム実行部1211は、コンピューター11からの指示に基づき、ロボット2を駆動する制御プログラムを実行する。例えば、制御プログラム実行部1211は、各種コマンドによりロボット2に各種処理(例えば、ツール設定、ローカル設定、キャリブレーション処理(キャリブレーション)および画像処理シーケンス実行指示等)を実行する。ロボット制御部1212は、各駆動部280の駆動を制御し、ロボットアーム20を駆動させたり停止させたりする。例えば、制御部121は、位置センサー281や力検出部290から出力された情報を基にして、ハンド270を目標位置に移動させるために各駆動部280が有するモーター(図示せず)の目標値を導出する。その他、制御部121は、各種演算および判断等の処理を行う機能や、ロボット制御装置12が有する指示を行う機能等を有する。
メインメモリー122は、制御部121の作業領域である。メインメモリー122の機能は、例えばRAMにより実現することができる。記憶部123は、各種データ(プログラムを含む)を記録する機能を有する。記憶部123は、例えば、制御プログラム等を記録する。記憶部123の機能は、ROM等やいわゆる外部記憶装置(図示せず)によって実現することができる。通信部126は、ロボット2、コンピューター11、および画像処理装置13等の外部とのデータのやり取りを行う機能を有する。通信部126の機能は、例えば、インターフェイス回路等によって実現することができる。
(画像処理装置)
画像処理装置13は、例えば、コンピューター11からの指示に基づいて撮像部3の駆動を制御したり、撮像部3で撮像した撮像画像の処理(画像処理)を行う。画像処理装置13は、例えば、プログラム(OS等)がインストールされたコンピューターである。この画像処理装置13は、例えば、プロセッサーとしてのCPUおよびGPUと、RAMと、プログラムが記憶されたROMと、を有する。
以下、画像処理装置13が備える各機能(機能部)について説明する。
図7に示すように、画像処理装置13は、制御部(撮像部制御部)131と、メインメモリー132と、記憶部133と、通信部136と、を有し、これらの間で相互にデータのやり取りができるよう構成されている。
制御部131の機能は、例えば、CPUおよびGPUによりメインメモリー132や記憶部133に記憶された各種プログラムを実行することにより実現することができる。この制御部131は、例えば、画像処理シーケンス実行部1311と、画像処理部1312と、撮像部制御部1313と、を有する。なお、制御部131が有する機能部(要素)は、これらに限定されない。これらの機能部のいずれかを省略したり、他の機能部を追加してもよい。
画像処理シーケンス実行部1311は、コンピューター11からの指示(命令)に基づき画像処理シーケンスを実行する機能を有する。画像処理部1312は、例えば、撮像画像から各種情報を取り出す等の画像処理を行う機能を有する。具体的には、画像処理部1312は、例えば、撮像部3等からの撮像画像(画像データ)を基にして各種演算や各種判断等の処理を行う。例えば、画像処理部1312は、撮像画像を基にして画像座標系における撮像対象の座標(成分xb、yb、ub又は成分xc、yc、uc)を演算する。また、例えば、画像処理部1312は、画像座標系での座標(画像座標)をロボット2の先端座標系での座標(先端座標)又はロボット2のベース座標系での座標(ベース座標)に変換したりする。その変換に用いる補正パラメーターは、例えば、コンピューター11又はロボット制御装置12が求める。なお、画像処理装置13が、変換に用いる補正パラメーターを求めてもよい。また、撮像部制御部1313は、例えば、撮像部3の駆動を制御したり、撮像部3から撮像画像(画像データ)を取得する機能を有する。
その他、制御部131は、コンピューター11からの指示を受けて各種演算および判断等の処理を行う機能や、画像処理装置13が有する各機能部への指示を行う機能等を有する。
メインメモリー132は、制御部131の作業領域である。メインメモリー132の機能は、例えばRAMにより実現することができる。
記憶部133は、各種データ(プログラムを含む)を記録する機能を有する。記憶部133は、例えば、画像処理シーケンスに関するプログラム等を記録する。記憶部133の機能は、ROM等やいわゆる外部記憶装置(図示せず)によって実現することができる。
通信部136は、撮像部3、ロボット制御装置12、およびコンピューター11等の外部とのデータのやり取りを行う機能を有する。通信部136の機能は、例えば、インターフェイス回路等によって実現することができる。
以上、制御システム10の構成および機能について説明した。なお、上述したコンピューター11とロボット制御装置12と画像処理装置13とがそれぞれ有する各機能は、コンピューター11とロボット制御装置12と画像処理装置13のいずれが有していてもよい。また、コンピューター11とロボット制御装置12と画像処理装置13とが一体であってもよい。例えば、画像処理装置13が有する画像処理シーケンス実行部1311、画像処理部1312、撮像部制御部1313は、コンピューター11の制御部111が有していてもよい。また、コンピューター11が有する表示制御部114および入力制御部115は、画像処理装置13が有していてもよい。また、制御システム10は画像処理装置13を備えていなくてもよく、その場合には、画像処理装置13が有する各機能はコンピューター11が備えることができる。また、コンピューター11が有するキャリブレーション実行部1114は、ロボット制御装置12の制御部121が有していてもよい。
以上、ロボットビジョンシステム100の基本的な構成について簡単に説明した。
次に、作業プログラム作成およびティーチングの一例を説明する。なお、以下では、主に、ロボット2として図2に示すロボット2aを用いた場合を例に説明する。
<作業プログラムの作成>
図8および図9は、それぞれ、図1に示す制御システムによる作業プログラムの作成の流れを示すフロー図である。図10は、図8のステップS111を説明するための図である。図11は、図8のステップS113を説明するための図である。図12は、図8のステップS116を説明するための図である。図13は、図8のステップS118を説明するための図である。図14は、図9のステップS126を説明するための図である。図15は、図9のステップS128およびステップS129を説明するための図である。
以下では、例えば、図2に示すロボット2aが、作業台90上に設置された給材台91上のワーク(図2では図示せず)を把持して、固定カメラ32上でワークの検査(例えば、外観検査)を行って、検査結果を基にワークを合格用除材台94又は不合格用除材台95に載置する作業の作業プログラムを生成する。また、この作業プログラムを作成するにあたり必要な各種処理を行う。各種処理として、例えば、モバイルカメラ31の画像座標系とロボット2aのロボット座標系(先端座標系又はベース座標系)とのキャリブレーションと、固定カメラ32の画像座標系とロボット2aのロボット座標系(先端座標系又はベース座標系)とのキャリブレーションとを行う。また、例えば、ロボット2aに対する各箇所のティーチングを行う。また、例えば、ロボット2aのツールセンターポイントPと先端軸座標におけるオフセット(ツールセンターポイントPと先端軸座標との一方に対する他方のオフセット)を求めるツール設定を行う。また、ロボット座標系とは異なるローカル座標系の設定(ローカル設定)を行う。また、画像処理シーケンス作成、実行および結果の反映等の画像処理シーケンスの作成(画像処理シーケンス)を行う。
ここで、ユーザーは、作業プログラムの作成を実行する前に、図2に示すように、作業台90上に設置された給材台91にキャリブレーションプレート(校正用部材)92を載置しておく。また、表示制御部114は、メインウィンドウ(指示画面)50を表示装置41に表示させておく(図17又は図18参照)。なお、メインウィンドウ50については後で詳述する。
以後、ユーザーは、表示装置41に表示される各種画面(ウィンドウ)に対して入力装置42のマウスでクリックする操作や、表示装置41に表示される指示画面に対して入力装置42のキーボードで文字や数字等を入力する操作により、制御システム10に対する指示を行う。すなわち、以下の作業プログラムの作成における制御システム10による制御(処理)は、ユーザーによる入力装置42を用いた指示に基づいて行う。以下、このユーザーによる入力装置42を用いた指示(すなわち入力装置42による入力)を「操作指示」という。この操作指示は、入力装置42により、指示画面に表示された内容から所望の内容を選択する選択操作や、入力装置42により、指示画面に文字や数字等を入力する入力指示等を含む操作指示を含む。
以下、図8および図9に示すフロー図に基づいて作業プログラム作成について説明する。
まず、コンピューター11は、ロボット制御装置12に対してキャリブレーションプレート92上にモバイルカメラ31を位置させる移動指示を出す(図8:ステップS111)。この移動指示を受け、ロボット制御装置12は、ロボットアーム20を駆動させ、キャリブレーションプレート92上にモバイルカメラ31を位置させる(図10参照)。本実施形態では、モバイルカメラ31の光軸A31がキャリブレーションプレート92におおよそ直交するように、モバイルカメラ31をキャリブレーションプレート92に正対させる。また、モバイルカメラ31のキャリブレーションプレート92に付されたマーカー(図示せず)に対して焦点が合うようにモバイルカメラ31を位置させる。
次に、コンピューター11は、ローカル座標系の設定すなわちローカル設定を行う(図8:ステップS112)。ローカル座標系とは、ロボット座標系(ベース座標系又は先端座標系)とは異なる座標系であり、ロボット座標系で定義された原点、xd軸、yd軸、zd軸とによって定まる3次元の直交座標系である。本実施形態では、作業台90に平行な平面として、モバイルカメラ31を用いてキャリブレーションプレート92の上面に平行な面へ、ローカル座標系のxd軸およびyd軸を含むローカル平面(仮想的な面)を設定する。これにより、例えば、給材台91の上面が水平面に対して傾斜している場合であっても、ロボット2aは給材台91の上面で的確な作業を行うことができる。なお、図3に示すロボット2bを用いる場合には、ローカル座標系の設定は省略してよい。また、上述のローカル設定とは、上述のローカル座標系を設定することであり、ローカル設定における各種設定(表示処理を含む)、ローカル設定の処理の実行、および、ローカル設定結果を反映することによりローカル座標系を設定することを含む意味である。
ローカル設定の具体的な設定方法は、特に限定されないが、例えば、キャリブレーションプレート92に付された少なくとも3つのマーカー(図示せず)を1つずつ撮像した撮像画像と、撮像したときのツールセンターポイントPの先端座標とを基に求める方法が挙げられる。
また、ローカル設定は、後述する指示画面を用いた表示処理により行われる。なお、ローカル設定における表示処理については後で説明する。
また、ローカル座標系の設定が終了したら、ユーザーは、キャリブレーションプレート92を給材台91から取り去り、給材台91上にワーク93を載置しておく(図11参照)。
次に、コンピューター11は、ロボット制御装置12に対してワーク93を撮像できる位置にモバイルカメラ31を位置させる移動指示を出す(図8:ステップS113)。この移動指示を受け、ロボット制御装置12は、ロボットアーム20を駆動させ、ワーク93を撮像できる位置にモバイルカメラ31を位置させる(図11参照)。この移動は、モバイルカメラ31をその光軸A31(ロボット2aの先端軸)がローカル平面と直交する姿勢に移動後、モバイルカメラ31の姿勢を変更せずに、モバイルカメラ31をローカル平面内に移動させることで行う。また、ワーク93の上面に対して焦点が合うように、ローカル平面に直交する方向へも移動させる。
次に、コンピューター11は、ステップS113におけるロボット2aの先端軸座標(成分xr、yr、zr、ur、vr、wr)を第1ポイントとして設定し、記憶部113に記憶する(図8:ステップS114)。
次に、コンピューター11は、ロボット制御装置12および画像処理装置13に指示(命令)を出し、ワーク93の上面中心に付されたマーカー(図示せず)に関する第1画像処理シーケンスの作成を行う(図8:ステップS115)。
ここで、画像処理シーケンスとは、撮像部3から画像を撮影し、撮像画像を処理して、撮像画像に写る所定のパーツについて検出、検査等を含む方法や手順をまとめたものである。また、画像処理シーケンスの作成とは、画像処理シーケンスの各種設定、パーツのティーチング、画像処理シーケンスの実行および反映を含む意味である。また、第1画像処理シーケンスとは、パーツとしてワーク93の上面中心に付されたマーカーに関する画像処理シーケンスのことを示す。
また、第1画像処理シーケンスの作成等は、後述する指示画面を用いた表示処理により行われる。なお、第1画像処理シーケンスにおける表示処理については後で説明する。
次に、コンピューター11は、ロボット制御装置12に対してワーク93を把持する把持指示を出す(図8:ステップS116)。この把持指示を受けて、ロボット制御部1212は、ロボット2aに対して、ロボットアーム20を駆動させ、ハンド270によりワーク93を把持させる(図12参照)。次に、コンピューター11は、ステップS116におけるロボット2aの先端軸座標(成分xr、yr、zr、ur、vr、wr)を第2ポイントとして設定し、記憶部113に記憶する(図8:ステップS117)。ここで、ツールセンターポイントPの位置(成分za)は、ワーク93を把持した位置を用いる。
次に、コンピューター11は、ロボット制御装置12に対して固定カメラ32上にワーク93を位置させる移動指示を出す(図8:ステップS118)。この移動指示を受け、ロボット制御装置12は、ロボットアーム20を駆動させ、固定カメラ32の視野内でワーク93に焦点が合う位置へワーク93を位置させる(図13参照)。次に、コンピューター11は、ステップS118におけるロボット2aの先端軸座標(成分xr、yr、zr、ur、vr、wr)を第3ポイントとして設定し、記憶部113に記憶する(図8:ステップS119)。
次に、コンピューター11は、ロボット制御装置12および画像処理装置13に指示を出しワーク93の下面中心に付されたマーカー(図示せず)の第2画像処理シーケンス(第2ビジョンシーケンス)の作成を行う(図8:ステップS120)。ここで、第2画像処理シーケンスとは、パーツとしてワーク93の下面中心に付されたマーカーに関する画像処理シーケンスのことを示す。
なお、ワーク93の上面中心と下面中心との完全に同じ位置にそれぞれマーカーを設けるのは難しいため、例えば、ワーク93に設けられた貫通孔等、ワーク93の上下から同じターゲットを認識する。
また、第2画像処理シーケンスの作成等は、後述する指示画面を用いた表示処理により行われる。なお、第2画像処理シーケンスにおける表示処理については後で説明する。
次に、コンピューター11は、ロボット制御装置12および画像処理装置13に指示を出しツール設定を行う(図8:ステップS121)。ここで、ツール設定とは、ロボットの先端軸等の軸座標と、ツールの所定の部位の座標のオフセット(位置姿勢の関係)を求めることであり、ツール設定における各種設定(表示処理を含む)、ツール設定の処理の実行、および、ツール設定結果を反映することを含む意味である。これにより、ツールの所定の部位のロボット座標が分かる。また、ツールとは、ロボット2aに設けられた物であれば、いかなる物であってもよく、例えば撮像部3やワーク93が挙げられる。ステップS121では、ツールをワーク93とし、ロボット2aの先端軸座標とワーク93の中心とのオフセットを求める。これにより、様々なロボット姿勢におけるワーク93の中心のロボット座標が計算できるため、別のワーク93の把持、および把持したワーク93の移動や検査等を的確に行うことができる。
オフセットを求める方法としては、特に限定されないが、例えば、ロボット2aの先端軸座標およびワーク93の中心のうちのいずれか一方の位置を固定した状態で他方の位置を移動(例えば、回動)させ、その移動前後(例えば、回動前後)におけるツールセンターポイントPおよびワーク93の中心の先端座標と移動量(例えば、回動角度)とを基に求める方法が挙げられる。
また、ツール設定は、後述する指示画面を用いた表示処理により行われる。なお、ツール設定における表示処理については後で説明する。
次に、コンピューター11は、ロボット制御装置12および画像処理装置13に指示を出し、ワーク93の下面中心に付されたマーカーを用いて、固定カメラ32の画像座標系とローカル座標(ロボット座標系)とを対応付けるキャリブレーションを行う(図8:ステップS122)。ここで、キャリブレーションとは、画像座標系とロボット座標系とを対応付けることであり、キャリブレーションにおける各種設定(表示処理を含む)すなわちキャリブレーション作成、カメラポイントのティーチング、キャリブレーションの実行、および、キャリブレーション結果を反映することにより画像座標系とロボット座標系とを対応付けることを含む意味である。ここではロボット座標系のうち、作業台90に平行に設定されたローカル座標と画像座標系を対応付ける。
キャリブレーションの具体的な方法は、特に限定されないが、例えば、1つのマーカー等のターゲット(撮像対象)を撮像画像内にある少なくとも3つ以上のカメラポイントに位置させ、その各カメラポイントでの撮像画像に基づく画像座標と、撮像したときのマーカー等のターゲットのロボット座標とを基に求めた画像座標とロボット座標との変換行列を用いる方法が挙げられる。各カメラポイントにおけるマーカー等のロボット座標は、ロボットの先端軸等の軸座標の位置姿勢と、前述のツール設定(オフセット)を用いて算出できる。これにより、画像座標系とロボット座標系とを対応付けることができ、画像座標をロボット座標に変換することができる。そのため、撮像画像に写る撮像対象のロボット座標を求めることができる。なお、ステップS122では、カメラポイントを9つ設定している。
また、固定カメラ32のキャリブレーションは、後述する指示画面を用いた表示処理により行われる。なお、キャリブレーションにおける表示処理については後で説明する。
次に、コンピューター11は、ロボット制御装置12および画像処理装置13に指示を出し、ワーク93の下面に付された2つのA点(図示せず)およびB点(図示せず)を検出するための第3画像処理シーケンス(第3ビジョンシーケンス)の作成等を行う(図8:ステップS123)。ここで、第3画像処理シーケンスとは、ワーク93の下面に付されたA点(パーツ)およびB点(パーツ)の検出に関する画像処理シーケンスのことを示す。また、ステップS123では、第3画像処理シーケンスと固定カメラ32のキャリブレーション結果とを関連付けて、作成された画像処理シーケンスを用いた画像処理を実行して検査を行っている。ここでは、検査として、A点とB点との間の距離を計測し、所定閾値内であれば合格と判断し、所定閾値外であれば不合格と判断する検査を行う。ここで、画像座標とロボット座標を用いるキャリブレーション(キャリブレーション結果)を関連付けることで、A点とB点との間の距離を画像上の長さの単位(ピクセル)ではなく、ロボット座標の単位(mm等)で判断できる。
また、第3画像処理シーケンスの作成は、後述する指示画面を用いた表示処理により行われる。なお、第3画像処理シーケンスにおける表示処理については後で説明する。
次に、コンピューター11は、ロボット制御装置12に対してステップS117で設定した第2ポイントへの移動指示を出し、給材台91上にワーク93を載置する載置指示を出す(図9:ステップS124)。この移動指示を受け、ロボット制御装置12は、ロボット2aに対して、ロボットアーム20を駆動させて第2ポイントにロボット2aの先端軸座標(成分xr、yr、zr、ur、vr、wr)を位置させ、ハンド270によってワーク93を給材台91上に載置させる(図14参照)。次に、コンピューター11は、ステップS121におけるツール設定を基に、ワーク93の中心の位置(成分xr、yr、zr、ur、vr、wr)を第4ポイントとして設定し、記憶部113に記憶する(図9:ステップS125)。
次に、コンピューター11は、ロボット制御装置12に対して、給材台91においてワーク93を離脱させた後、ステップS114で求めた第1ポイントに移動させ、給材台91上に載置されたワーク93を撮像できる位置にモバイルカメラ31を位置させる移動指示を出す(図9:ステップS126)。このような移動指示を受け、ロボット制御装置12は、ロボット2aに対して、ハンド270によってワーク93を給材台91上で離脱させた後、第1ポイントにツールセンターポイントPを位置させ、ワーク93を撮像できる位置にモバイルカメラ31を位置させる。
次に、コンピューター11は、ロボット制御装置12および画像処理装置13に指示を出し、ワーク93の上面中心に付されたマーカーおよび第4ポイントとして(第4ポイントに)保存されたロボット座標を用いて、モバイルカメラ31の画像座標系とロボット座標系とのキャリブレーションを行う(図9:ステップS127)。
ステップS127におけるキャリブレーションでは、1つのターゲット(撮像対象)としてワーク93の上面中心に付されたマーカーを用い、撮像画像内の9つのカメラポイントでこのマーカーを撮像するように、ワーク93に対してモバイルカメラ31を移動させる。そして、9つのカメラポイントでの撮像画像に基づく画像座標と、第4ポイントとして(第4ポイントに)保存されたワーク93の上面に付されたマーカーのロボット座標とを用いて画像座標と先端座標との変換行列を求める。これにより、モバイルカメラ31の画像座標をロボット座標に変換することができる。
また、ステップS127におけるキャリブレーションでは、ロボット2aに対してワーク93を的確に把持させるために、第1画像処理シーケンスとモバイルカメラ31のキャリブレーション結果との関連付けを行う。
また、モバイルカメラ31のキャリブレーションは、後述する指示画面を用いた表示処理により行われる。なお、キャリブレーションにおける表示処理については後で説明する。
次に、コンピューター11は、ロボット制御装置12に対して合格用除材台94上にツールセンターポイントPを位置させる移動指示を出し、ワーク93を載置し、ロボット2aの先端軸座標(成分xr、yr、zr、ur、vr、wr)を第5ポイントとして設定し、記憶部113に記憶する(図9:ステップS128)。この移動指示を受け、ロボット制御部1212は、ロボット2aに対してロボットアーム20を駆動させて合格用除材台94上にロボット2aの先端軸を位置させた後、ワーク93を合格用除材台94上に載置させる(図15参照)。
次に、コンピューター11は、ロボット制御装置12に対して不合格用除材台95上にロボット2aの先端軸を位置させる移動指示を出し、ワーク93を載置し、ロボット2aの先端軸座標(成分xr、yr、zr、ur、vr、wr)を第6ポイントとして設定し、記憶部113に記憶する(図9:ステップS129)。この移動指示を受け、ロボット制御部1212は、ロボット2aに対してロボットアーム20を駆動させて不合格用除材台95上にロボット2aの先端軸を位置させた後、ワーク93を不合格用除材台95上に載置させる(図2、図15参照)。
次に、コンピューター11(制御プログラム作成部1111)は、ステップS111~S129を基に、ロボット2aの作業プログラムを作成する(図9:ステップS130)。次に、コンピューター11(制御プログラムビルド部1112)は、ステップS113で作成した作業プログラムをビルドして、ロボット制御装置12で解釈可能な言語(データ列)に変換(コンパイル)する(図9:ステップS131)。次に、コンピューター11は、コンパイルした作業プログラムをロボット制御装置12、画像処理装置13に転送して、ロボット制御装置12および画像処理装置13に対して作業プログラムの実行指示を出す(図9:ステップS132)。
以上により、作業プログラムの作成が終了する。
ここで、従来では、通常の作業座標のティーチングを行う際には、ワーク93をハンド270に把持させた後、ユーザーがハンド270をジョグ送りして、作業対象の組み込み位置等へワーク93を挿入・設置して、その作業座標をティーチングするが、このようなティーチング作業には以下(1)、(2)のような課題があった。
(1)作業位置へ高い精度でワーク93を挿入・設置する必要がある場合に、ユーザーが手作業でその場所へワーク93をジョグ送りして、高い精度でワークを挿入・設置するのに長い時間を要していた。
(2)多数の作業位置をティーチングする場合、従来の手法では、全てのティーチング点(教示点)に対して、最初から最後までユーザーが手作業でワーク93をジョグ送りして挿入・設置するため自動化が難しかった。
上記の課題を解決するために、ステップS116からステップS125の処理のうち、ステップS122、ステップS123を除く処理は、それぞれ、作業を行う作業位置(作業座標)のティーチングにおいても利用できる。このようなティーチング作業においては、ユーザーが手作業で精度良く設置したワーク93をハンド270で後から把持して引き抜く事で、精密な位置合わせに時間を要するハンド270のジョグ送りを省略でき、ティーチング時間を大幅に短縮できる。また、多数の作業座標をティーチングする場合でも、予め各作業位置へワーク93を設置し、各ワーク93を把持する座標をティーチングする事で、その後の作業座標の取得処理を簡単に自動化できる。
また、繰り返しティーチングを行う場合には、ステップS116からステップS125の処理のうち、ステップS119、ステップS120は、初回のみ実行(実施)して、その後のティーチングでは初回の値を利用できる。さらに、ステップS124、ステップS125は必ず必要な処理ではなく、第4ポイントの座標を第2ポイントで設定した座標とツール設定で取得したツールオフセットから計算してもよい。
次に、ステップS132の実行指示に基づき、ロボット制御装置12および画像処理装置13による作業プログラムの実行について説明する。
<作業プログラムの実行>
図16は、図8および図9に示すフロー図に基づいて作成した作業プログラムの実行の流れを示すフロー図である。
まず、作業プログラムを実行するあたり、ワーク93を給材台91上に載置しておく。
図16に示すように、ロボット制御装置12は、作業プログラムの実行指示を受信し(ステップS211)、ロボットアーム20を駆動させ、第1ポイントにロボット2aの先端軸を移動させる(ステップS212)。
次に、ロボット制御装置12は、画像処理装置13に対して第1画像処理シーケンスの実行指示を出す(ステップS213)。画像処理装置13は、その実行指示を受信し、モバイルカメラ31でワーク93を検出するための第1画像処理シーケンスを実行する(ステップS214)。ステップS214では、画像処理装置13は、第1画像処理シーケンスを実行して、モバイルカメラ31でワーク93を撮像した撮像画像(画像データ)を基に画像処理を行い、ワーク93の中心位置を検出する。また、画像処理装置13は、モバイルカメラ31のキャリブレーションを利用して、撮像画像に写るワーク93の中心位置をローカル座標(成分xd、yd、ud)に変換する。
次に、画像処理装置13は、ロボット制御装置12に対して第1画像処理シーケンス結果(画像検出点のロボット座標等)を送信する(ステップS215)。ロボット制御装置12は、第1画像処理シーケンス結果を受信したら(ステップS216)、その結果を基に、ローカル座標系に基づくワーク93の中心の位置(成分xd、yd、zd、ud)を第7ポイントとして設定し、記憶部113に記録する(ステップS217)。ここで、ワーク93の位置(成分zd)は、第2ポイントの位置(成分zd)を用いる。
次に、ロボット制御装置12は、ロボットアーム20を駆動させ、ツール設定を基にしてツールセンターポイントPを第7ポイントに移動してハンド270によりワーク93を把持させる(ステップS218)。次に、ロボット制御装置12は、ロボットアーム20を駆動させ、第3ポイントにロボット2aの先端軸を移動させる(ステップS219)。次に、ロボット制御装置12は、画像処理装置13に対して第3画像処理シーケンスの実行指示を出す(ステップS220)。画像処理装置13は、その実行指示を受信し、固定カメラ32でワーク93を検出するための第3画像処理シーケンスを実行する(ステップS221)。ステップS221では、画像処理装置13は、第3画像処理シーケンスを実行して、固定カメラ32でワーク93を撮像した撮像画像(画像データ)を基に画像処理を行い、ワーク93の点A、点Bを検出する。また、画像処理装置13は、固定カメラ32のキャリブレーション結果を利用して、撮像画像に写るワーク93の点Aおよび点Bの位置をロボット座標(ベース座標)に変換する。次に、画像処理装置13は、ロボット制御装置12に対して第3画像処理シーケンス結果(点Aおよび点Bの各ロボット座標等)を送信する(ステップS222)。ロボット制御装置12は、第3画像処理シーケンス結果を受信したら(ステップS223)、その結果を基に、ローカル座標系に基づくワーク93の点Aと点Bとの間の距離を計測する検査を行う(ステップS224)。
次に、ロボット制御装置12は、点Aと点Bとの間の距離が所定閾値内であれば合格とし、所定閾値外であれば不合格とする合否判定を行う(ステップS225)。合格である場合、ロボット制御装置12は、ステップS226aに移行して、ロボットアーム20を駆動させ、第5ポイントにロボット2aの先端軸を移動させる。一方、不合格である場合、ロボット制御装置12は、ステップS226bに移行して、ロボットアーム20を駆動させ、第6ポイントにロボット2aの先端軸を移動させる。
次に、ロボット制御装置12は、カウントアップし(ステップS227)、ワーク93が所定数に達したか否かを判断する(ステップS228)。所定数に達していたら、ロボット制御装置12は、ステップS229に移行し、作業が終了したことをコンピューター11に送信し(ステップS229)、作業を終了する。一方、所定数に達していない場合には、ステップS211に戻り、所定数に達するまで、ステップS211~S228を繰り返す。
以上のようにして、作業が終了する。また、コンピューター11は、作業した結果(例えば、ワーク93の把持の成否、把持位置のばらつきや画像シーケンス実行成否等)を基にして、上述した作業プログラムを作成し直す。例えば、コンピューター11は、ワーク93の把持が頻繁に失敗すると判断したら、作業プログラムを作成し直して(書き換えて)、再度作業を行う。このようにして、ワーク93の把持が安定するまで、作業プログラムの作成(更新)およびその作業プログラムに基づいた作業を行うことで、ロボット2aによる作業精度を高めることができる。また、コンピューター11は、作業プログラムの全てではなく、作業プログラムの一部のみを作成し直してもよい。例えば、ワーク93の把持の精度が所定閾値内ではない場合には、モバイルカメラ31のキャリブレーション(図9:ステップS127)のみを再度作成し直すことも可能である。このように、作業プログラムの一部のみを作成し直すことで、作業プログラムの再設定(作成)を効率良く行うことができる。
このような作業を行うための作業プログラムの作成およびそれに必要な各種処理の設定は、上述したように、各種指示画面を用いたユーザーによる操作指示(入力装置42による入力)に基づいて制御システム10により実行される。以下、各種指示画面、ユーザーによる指示画面の操作(入力装置42による入力)およびコンピューター11(表示制御部114)による表示処理等について説明する。なお、以下では、各種指示画面を用いたユーザーによる操作指示(入力装置42による入力)に基づいた制御システム10による各種設定等を「表示処理」という。
<メインウィンドウおよび表示処理>
図17は、図1に示す表示装置に表示させるメインウィンドウおよびロボット操作用のサブウィンドウを示す図である。図18は、図1に示す表示装置に表示させるメインウィンドウおよび画像処理用のサブウィンドウを示す図である。
図17に示すように、メインウィンドウ50は、少なくともツールバー502を有する。ツールバー502は、ツール設定用アイコン701と、ローカル設定用アイコン702と、キャリブレーション作成用アイコン703と、画像処理用のサブウィンドウ61を表示させるために用いられるアイコン601と、コマンド入力アイコン801と、を有する。これらアイコンの表示(図等)は特に限定されないが、ユーザーが用途を認識し易い表示であることが好ましい。各アイコンの用途については後で説明する。
また、表示制御部114は、メインウィンドウ50と同時に、図17に示すロボット操作用のサブウィンドウ51や、図18に示す画像処理用のサブウィンドウ61を表示装置41に表示させることができる。その他、図示はしないが、表示制御部114は、メインウィンドウ50と同時に、コマンド入力用のサブウィンドウや、力制御における各種パラメーターを設定するサブウィンドウを表示装置41に表示させることができる。表示制御部114は、ユーザーの操作指示により、これらサブウィンドウ(サブウィンドウ51,61を含む)のうち所望のサブウィンドウを最前面に表示させる。なお、これらサブウィンドウを並べて表示してもよい。
図17に示すロボット操作用のサブウィンドウ51は、ジョグ動作グループ(領域)521と、ティーチグループ522と、を有するパネル52を備える。また、サブウィンドウ51は、図示はしないが、パネル52以外に、ロボット2の各種パラメーター(例えば移動速度等)を設定するパネル等の複数のパネルを備える。また、サブウィンドウ51は、所望のパネルを最前面に表示させるために用いられる複数のタブ53を有する。
ジョグ動作グループ521は、ユーザーによるロボット2の所定の部位をジョグ動作させる操作指示を受ける複数のボタン5212を有する。このようにジョグ動作グループ521が視覚的に解り易いボタン5212を有するため、ユーザーは、ロボット2のジョグ送りを簡単に指示することができる。このジョグ動作グループ521は、上述した作業プログラムの作成におけるステップS111,S113,S116,S118,S124,S126,S128,S129で用いられる。具体的には、例えば、ステップS111において、入力制御部115がユーザーからの複数のボタン5212に対する操作指示を受けると、制御部111は、ロボット制御装置12に対してキャリブレーションプレート92上にモバイルカメラ31を位置させる移動命令を出す(図8:ステップS111)。
また、ティーチグループ522は、ユーザーによるティーチングポイントの設定のために用いられる。このティーチグループ522は、上述した作業プログラムの作成におけるステップS114,S117,S119,S125,S128,S129で用いられる。具体的には、例えば、ステップS114において、入力制御部115がユーザーのティーチボタンに対する操作指示を行うと、制御部111は、第1ポイントを設定し、記憶部113に第1ポイントを記録させる(図8:ステップS114)。
図18に示す画像処理用のサブウィンドウ61は、ツールバー615と、画像イメージ表示部612と、実行グループ613と、フローチャート表示部62と、を有する。この画像処理用のサブウィンドウ61は、メインウィンドウ50にあるアイコン601をユーザーが操作指示することにより表示される。
ツールバー615は、画像処理シーケンスの作成用の画面群を表示させるために用いられるアイコン671を有する。画像イメージ表示部612は、撮像部3で撮像した撮像画像、画像処理結果を表示する。実行グループ613は、ユーザーによる画像処理シーケンスを実行させる操作指示を受ける各種ボタンを有する。フローチャート表示部62は、画像処理シーケンス(フローチャート660c)(図39および図42参照)の画像処理手順や、キャリブレーションのティーチング手順等を表示する。
また、サブウィンドウ61は、ジョグ動作グループ521と同様の構成であるジョグパネル54と、ロボット2の各種パラメーター(例えば移動速度等)を設定するパネル(図示せず)と、を有する。サブウィンドウ61は、ロボット2の各種パラメーターを設定するパネルとジョグパネル54とのいずれかを最前面に表示させるために用いられる2つのタブ56を有する。なお、これらパネルを並べて表示してもよい。
このように、サブウィンドウ61がジョグパネル54を有することで、ユーザーは、画像処理用のサブウィンドウ61でロボット操作を行うことができる。また、同様に、サブウィンドウ61がロボット2の各種パラメーターを設定するパネルを有することで、ユーザーは、画像処理用のサブウィンドウ61でロボット2の各種パラメーターを設定することができる。
また、図18には図示しないが、サブウィンドウ61は、キャリブレーション設定(作成したキャリブレーションの名称および各種設定内容)と画像処理シーケンス設定(作成した画像処理シーケンスの名称および各種設定内容)と表示、作成するプロパティー設定ウィンドウ60とを有する(図39参照)。このプロパティー設定ウィンドウ60は、ジョグパネル54が表示される領域に表示される(図18参照)。このプロパティー設定ウィンドウ60については後で詳述する。
以上説明したように、表示制御部114は、制御部111の制御の下、1つのメインウィンドウ50と同時に複数種のサブウィンドウ(サブウィンドウ51,61を含む)を重ねて又は並べて表示させることができるため、ユーザーは複数種の作業を効率良く行うことができる。特に、上述したように、本実施形態では、ロボット操作用のサブウィンドウ51と、画像処理用のサブウィンドウ61と、コマンド入力用のサブウィンドウや、力制御に関するサブウィンドウと、を表示装置41に表示させることができるため、利便性が特に高い。
また、上述したように、表示制御部114は、画像処理用のサブウィンドウ61にロボット2の各種パラメーターの設定を行うためのパネル(図示せず)や、ロボット2のジョグ動作を行うためのジョグパネル54を重ねて又は並べて表示させることができる。そのため、ユーザーは画像処理シーケンスの実行時におけるロボット2の操作を的確にかつ効率よく行うことができる。
また、カメラポイントのティーチング(カメラの視野内にマーカーが含まれるようにロボットの位置をティーチングすることである)の後に、例えば、図39および図42に記載の画像処理シーケンス(フローチャート660c)を実行することで、正確にマーカーを検出可能になる。なお、上記画像処理シーケンスでは、下記手順でマーカーの検出を行っていることを示している。先頭のフロー664が選択された画像処理シーケンス(シーケンス名)を示している。
先ず、図中のステップ1のフロー664aの「Geomeric」は、図形のパターンを見つける。次に、ステップ2のフロー664bの「Frame」は、Frameの原点をGeomericで見つけた図形のパターンの中心に持ってくる。次に、ステップ3のフロー664cの「ArcFinder」は、「Frame」より高精度に図形のパターンの中心を出している。
次に、上述した作業プログラムにおけるローカル設定およびそのローカル設定における表示処理について説明する。
<ローカル設定および表示処理>
図19は、図8に示すローカル座標系の設定の流れを示すフロー図である。図20、図21、および図23は、それぞれ、図1に示す表示装置に表示されるローカル設定画面である。図22は、図1に示す表示装置に表示されるティーチング用の画面である。
以下、図19に示すフロー図を参照しつつ、上述した作業プログラムの作成におけるローカル座標系の設定(ステップS112)について説明する。ローカル座標系の設定(ローカル設定)は、[1A]ローカル設定における各種設定(ステップS31)と、[2A]ローカル設定の処理の実行(ステップS32(図示せず))と、[3A]ローカル設定結果の反映(ステップS33)と、を有する。ここで、上述したように、ローカル設定とは、ローカル設定における各種設定(表示処理を含む)、ローカル設定の処理の実行、および、ローカル設定結果を反映することによりローカル座標系を設定することを含む意味である。
[1A]ローカル設定における各種設定(ステップS31)
まず、制御システム10は、入力装置42による入力に基づいて、ローカル設定における各種設定を実行する。
具体的には、まず、ユーザーが図17に示すメインウィンドウ50のローカル設定用アイコン702に対する操作指示を行う(クリックする)と、入力制御部115は、その操作指示(ローカル設定開始の指示)を受ける(図19:ステップS311)。これにより、制御部111は、複数(本実施形態では5つ)のローカル設定画面(指示画面)72をユーザーとの対話形式で表示させるローカル設定用の画面群の表示処理を開始し、表示制御部114に対して、図20に示す1個目のローカル設定画面72a(ローカル設定画面72)の出力指示を出す(図19:ステップS312)。この出力指示を受け、表示制御部114が1個目のローカル設定画面72aを表示装置41に表示させる。
(1個目のローカル設定画面)
図20に示すように、1個目のローカル設定画面72aは、ローカル設定モード(ローカルキャリブレーションタイプ)の選択のための画面である。ローカル設定モードとは、ローカル座標系の設定の方法のことを示す。すなわち、ローカル設定モードとは、どのような手段で、又はどのような種類の(例えば、手作業でローカル設定又は固定カメラ32に平行なローカル設定など)ローカル設定を行うかを示す。本実施形態では、ローカル設定画面72aは、複数のラジオボタン721を有し、図20に示す3つのローカル設定モードのうちのいずれか1つの選択を受けることができるよう構成されている。このように、ローカル設定画面72aが複数のモードから1つの選択を案内する構成であることで、ユーザーは、2種以上のモードを選択することを防ぐことができる。なお、ローカル設定モードの種類は、図20に示す3つのモードに限定されず、他のモードがさらに加わっていても良いし、図20に示す3つのモードのいずれかが省略されていてもよい。
また、ローカル設定画面72aは、「キャンセル」と表示されたボタン7201、「戻る」と表示されたボタン7202、「次へ」と表示されたボタン7203と、「ティーチ」と表示されたボタン(ティーチボタン)7204と、「完了」と表示されたボタン7205とを有する。ボタン7201は、ローカル設定ウィザードのキャンセルために用いられる。ボタン7202は、順次表示されるローカル設定画面72において1つ前のローカル設定画面72に戻るために用いられる。ボタン7203は、順次表示されるローカル設定画面72において次のローカル設定画面72に進むために用いられる。なお、ローカル設定画面72aは順次表示されるローカル設定画面72のうちの1個目であるため、ボタン7202はグレーアウトになっている。また、ボタン7204,7205もグレーアウトになっている。
このようなローカル設定画面72aに対して、ユーザーが所望のモードを選択する操作指示を行い(所望の1つのラジオボタン721をクリック又はタッチし)、「次へ」と表示されたボタン7203に対する操作指示を行うと、入力制御部115は、ローカル設定モードの選択を受ける(図19:ステップS313)。これにより、制御部111は、選択されたローカル設定モードを記憶部113に記憶させ、表示制御部114に対して2個目のローカル設定画面(図示せず)の出力指示を出す(図19:ステップS314)。この出力指示を受け、表示制御部114が2個目のローカル設定画面(図示せず)を表示装置41に表示させる。
(2個目のローカル設定画面)
2個目のローカル設定画面は、図示はしないが、ローカル設定結果を保存する保存番号(ローカル番号)を選択(設定)するための画面である。なお、2個目のローカル設定画面は、ローカル設定モードの選択の表示に代えて保存番号の選択が表示されていること以外、1個目のローカル設定画面72aとほぼ同様の表示形態である。
2個目のローカル設定画面における保存番号を選択する表示は、例えば、リストボックス等を用いることができる。このような2個目のローカル設定画面が、保存番号の選択を受け付ける構成であることで、ユーザーによる入力誤りを防ぐことができる。なお、選択するものは、保存番号に代えて、保存名であってもよい。なお、図示はしないが、2個目のローカル設定画面も、1個目のローカル設定画面72aが備えるボタン7201~7205と同様のボタンを有している。
このような2個目のローカル設定画面に対してユーザーが所望の保存番号を選択する操作指示を行った後、「次へ」と表示されたボタン(ボタン7203に対応するボタン)に対する操作指示を行うと、入力制御部115は、ローカル設定の結果の保存番号の選択を受ける(図19:ステップS315)。これにより、制御部111は、選択された保存番号を記憶部113に記憶させ、表示制御部114に対して、図21に示す3個目のローカル設定画面72b(ローカル設定画面72)の出力指示を出す(図19:ステップS316)。この出力指示を受けると、表示制御部114が3個目のローカル設定画面72bを表示装置41に表示させる。
(3個目のローカル設定画面)
図21に示すように、3個目のローカル設定画面72bは、各種ビジョンコンポーネントの内容を選択するための画面である。ローカル設定におけるビジョンコンポーネントとは、ローカル座標系の設定で用いる撮像部3の種類、設置位置(カメラツール)、画像処理方法など画像処理に関わる要素を示す。本実施形態では、ローカル設定画面72bは、図21に示すように、撮像部3、撮像部3の設置箇所、画像処理シーケンス、カメラツール、および、キャリブレーションプレートの5つのビジョンコンポーネントの各内容を選択するよう構成されている。具体的には、ローカル設定画面72bは、ビジョンコンポーネントに関する複数の内容(情報)から1つの内容を選択するためのドロップダウンリスト722やラジオボタン723を複数有している。なお、ドロップダウンリスト722のリストの図示は省略する(他の図面についても同様である)。ローカル設定におけるビジョンコンポーネントは、上述した5つのビジョンコンポーネントに限定されず、他のビジョンコンポーネントがさらに加わっていても良いし、上述したビジョンコンポーネントのいずれかが省略されていてもよい。
また、ローカル設定画面72bは、ローカル基準点をティーチングするか否かを選択するチェックボックス729を有している。この選択を受けると、制御部111は、ローカル座標系を含むローカル平面を、指定したティーチングした点を通る位置に設定する。これにより、設定したローカル座標をロボット2aで利用する際の利便性が向上する。
ここで、3個目のローカル設定画面72bの表示内容は、1個目のローカル設定画面72aの撮像部3の種類(選択)に応じて変わる。具体的には、ドロップダウンリスト722の表示内容が、1個目のローカル設定画面72aの撮像部3の種類(選択)に応じて変わる。例えば、上述した作業プログラムの生成におけるステップS112では、モバイルカメラ31を用いてローカル設定を行う。したがって、入力制御部115がユーザーによる1個目のローカル設定画面72aの図中の上から2個目のラジオボタン721の選択を受けると、表示制御部114は、モバイルカメラ31に関連する表示内容のドロップダウンリスト722を有するローカル設定画面72bを表示装置41に表示させる。また、例えば、入力制御部115が1個目のローカル設定画面72aの図中の上から3個目のラジオボタン721の選択を受けると、表示制御部114は、固定カメラ32に関連する表示内容のドロップダウンリスト722を有するローカル設定画面72bを表示装置41に表示させる。
このように、後に表示されるローカル設定画面72bには、先に表示されたローカル設定画面72aにおける選択に応じた限定的な内容が表示されるため、ユーザーによる選択ミスを低減することができる。
このような3個目のローカル設定画面72bに対して、ユーザーが各ビジョンコンポーネントの内容を選択する操作指示を行い、「次へ」と表示されたボタン7203を操作指示すると、入力制御部115は、各ビジョンコンポーネントの内容の選択を受ける(図19:ステップS317)。これにより、制御部111は、選択されたビジョンコンポーネントを記憶部113に記憶させ、表示制御部114に対して4個目のローカル設定画面(図示せず)の出力指示を出す(図19:ステップS318)。この出力指示を受け、表示制御部114が4個目のローカル設定画面(図示せず)を表示装置41に表示させる。
(4個目のローカル設定画面)
4個目のローカル設定画面は、図示はしないが、ローカル設定を開始するカメラポイント(開始位置)と、ローカル基準点の設定するための画面である。ローカル基準点は、3個目のローカル設定画面においてローカル基準点をティーチングする選択がなされた場合にのみ設定する。なお、4個目のローカル設定画面は、選択内容(設定内容)が異なる以外、1個目のローカル設定画面72aとほぼ同様の表示形態である。また、4個目のローカル設定画面も、1個目のローカル設定画面72aが備えるボタン7201~7205と同様のボタンを有している。
このような4個目のローカル設定画面に対して、ユーザーがティーチボタン(グレーアウトが解除されたボタン7204に対応するボタン)を操作指示すると、入力制御部115は、その操作指示を受ける(図19:ステップS319)。これにより、制御部111は、表示制御部114に対してティーチング用の画面720の出力指示を出す(図19:ステップS320)。この出力指示を受け、表示制御部114がティーチング用の画面720を表示装置41にポップアップ表示させる。
〔ティーチング用の画面〕
図22に示すように、ティーチング用の画面720は、ローカル設定を開始するカメラポイントおよび、設定するローカル平面の高さを決定するローカル基準点の位置をティーチングするために用いられる画面である。この画面720は、少なくとも、ジョグ&ティーチパネル726と、ティーチボタン7206とを有する。ジョグ&ティーチパネル726はロボット2aの所定の部位をジョグ動作させる操作指示を受ける複数のボタン7241を有するジョググループ724と、撮像部3の撮像画像を表示する画像イメージ表示部725とを有する。
このような画面720を用いて、ユーザーは、例えば、画像イメージ表示部725の中心(撮像画像の中心)にキャリブレーションプレートが位置するように複数のボタン7241を用いてロボット2aの所定の部位を移動させる指示(操作指示)を行う。入力制御部115がこのユーザーの操作指示を受けると、制御部111は、その操作指示に基づいて、ロボット制御装置12に対してハンド270を移動させる移動指示を出す。また移動指示とともに、画像処理装置13に撮像部3の画像を撮像させる撮像指示を出して画像イメージ表示部725に表示する事で、ユーザーは撮像対象が適切に写る位置へ撮像部を移動してローカル設定を開始するカメラポイントをティーチングする(図19:ステップS321)。次いで、3個目のローカル設定画面においてローカル基準点をティーチングするように選択した場合は、設定されるローカル平面が通るべき点へ、ロボット2aのハンド270等を移動した後、ユーザーがティーチボタン7206に対して操作指示を行うと、入力制御部115は、このユーザーによるティーチボタン7206の操作指示を受ける。これにより、制御部111は、ローカル設定されるローカル平面が通るローカル基準点(基準点)を設定する(図19:ステップS322)。また、制御部111は、記憶部113にカメラポイント、ローカル基準点を記憶させる。その後、制御部111は、表示制御部114に対してティーチング用の画面720を消去させる指示を出し、表示制御部114は、表示装置41からティーチング用の画面720を消去させる。
次に、ユーザーが上述した4個目のローカル設定画面(図示せず)の「次へ」と表示されたボタン(ボタン7203に対応)に対する操作指示を行うと、入力制御部115は、このユーザーによる操作指示を受ける(図19:ステップS323)。次いで、制御部111は、表示制御部114に対して5個目のローカル設定画面72cの出力指示を出す(図19:ステップS324)。これにより、表示制御部114が5個目のローカル設定画面72cを表示装置41に表示させる。
(5個目のローカル設定画面)
図23に示すように、5個目のローカル設定画面72cは、ローカル設定を自動で実行するための各種パラメーターの内容を選択するための画面である。本実施形態では、ローカル設定画面72cは、図23に示すように、ターゲットの許容量、最大移動距離、最大の姿勢変化量(角度)およびLJMモードの4つのパラメーターの各内容を選択するよう構成されている。具体的には、ローカル設定画面72cは、パラメーターに関する内容を入力するためのテキストボックス727やパラメーターに関する複数の内容(情報)から1つの内容を選択するためのドロップダウンリスト728を有している。なお、パラメーターは、上述した4つのパラメーターに限定されず、他のパラメーターがさらに加わっていても良いし、上述したパラメーターのいずれかが省略されていてもよい。
また、ローカル設定画面72cは、1個目のローカル設定画面72aと同様にボタン7201~7205を有しており、ボタン7203~7205はグレーアウトになっている。この5個目のローカル設定画面72cは、ローカル設定用の画面群のうちの最後のローカル設定画面であるので、ボタン7203は、グレーアウトになっている。
また、ローカル設定画面72cは、「実行」と表示されたボタン7208を有する。
このようなローカル設定画面72cに対して、ユーザーが各種パラメーターの内容を選択する操作指示を行い、「実行」と表示されたボタン7208に対する操作指示を行うと、入力制御部115は、各パラメーターの内容の選択と、ユーザーからのローカル設定の実行指示を受ける(図19:ステップS325)。これにより、制御部111は、選択されたパラメーターの内容を記憶部113に記憶させ、ロボット制御装置12および画像処理装置13に対してローカル設定を行う実行指示を出す(図19:ステップS326)。以上のようにして、ローカル設定の表示処理によるローカル設定の各種設定が完了する。
[2A]ローカル設定の処理の実行(ステップS32)
次に、制御システム10は、ローカル設定の処理を実行する。
具体的には、ロボット制御装置12および画像処理装置13は、ステップS326の制御部111からの実行指示に基づいてローカル設定の処理を実行する。
まず、ロボット制御装置12は、実行指示を受信すると、ロボット2aの状態(例えば駆動部280のモーターがONされているか等)をロボット2aから取得する。次いで、ロボット制御装置12は、キャリブレーションプレートがモバイルカメラ31の視野に入るように、ローカル設定の開始位置としてティーチィングされたカメラポイントへモバイルカメラ31が移動するように、ロボット2aに対して移動指示を出す。この際、ロボット2aは、ロボット制御装置12に対して都度ロボットアーム20の移動に関する情報(位置センサーの値)等を返却する。次に、ロボット制御装置12は、画像処理装置13に対して画像処理シーケンスの実行指示を出す。画像処理装置13は、その実行指示を受信し、モバイルカメラ31(撮像部3)でキャリブレーションプレートを検出するための画像処理シーケンスを実行する。この画像処理シーケンスは、上述したローカル設定画面72bにより受け付けた画像処理シーケンスを実行する。画像処理装置13は、画像処理シーケンスを実行して、モバイルカメラ31でキャリブレーションプレートを撮像した撮像画像(画像データ)を基に画像処理を行い、モバイルカメラ31に対するキャリブレーションプレートの相対的な位置姿勢を検出する。次に、画像処理が終了したら、画像処理装置13は、ロボット制御装置12に画像処理シーケンスの実行結果(キャリブレーションプレートの位置姿勢)を送信する。次いで、ロボット制御装置12は、取得したキャリブレーションプレートの位置姿勢や撮像したときのモバイルカメラ31のロボット座標(ベース座標)を基に、ローカル座標系を計算する。そして、ロボット制御装置12は、コンピューター11に対してローカル座標系の設定結果(ローカル設定結果)を送信する。なお、上述したように、ローカル設定の実行内容等について、具体的な方法は特に限定されない。記憶部113には、各種設定ごとに処理(プログラム)が記憶されており、制御部111は、選択された設定に応じた処理(プログラム)を実行する。
[3A]ローカル設定結果の反映(ステップS33)
次に、制御システム10は、ローカル設定結果を反映する。
具体的には、まず、コンピューター11の通信部116は、ローカル設定結果を受信すると(図19:ステップS327)、制御部111は、表示制御部114に対してローカル設定結果を表示する画面の出力指示を出す(図19:ステップS328)。これにより、表示制御部114は、ローカル設定結果が表示された画面(図示せず)を表示装置41に表示させる。この画面は、図示はしないが、ユーザーがローカル設定結果を反映させるか否かを選択できるよう構成されている。
入力制御部115がユーザーによるローカル設定結果を反映させるという選択を受け付けると(図19:ステップS329)、制御部111は、ロボット制御装置12に対してローカル設定結果を設定する指示を出す(図19:ステップS330)。この指示を受け、ロボット制御装置12は、ローカル設定を設定し、記憶する。これにより、ローカル設定が反映される。
一方、ユーザーが、ローカル設定の結果を反映しないことを選択すると、図19には図示しないが、制御部111は、例えば、[1A]ローカル設定における各種設定(ステップS31)と、[2A]ローカル設定の処理の実行(ステップS32)とを再度行う。なお、少なくとも、[2A]ローカル設定の処理の実行(ステップS32)を再度行えばよい。このようにして、必要に応じて、[2A]ローカル設定の処理の実行(ステップS32)等を繰り返し行うことで、ローカル設定結果の精度を高めることができる。
以上説明したローカル設定では、上述したように、[1A]ローカル設定における各種設定において、表示制御部114は、複数(本実施形態では5つ)のローカル設定画面72をユーザーとの対話形式で表示させるローカル設定用の画面群を出力する。そして、ユーザーは、複数のローカル設定画面72を用いて制御システム10に対して各種設定の指示を行う。これにより、ユーザーは、所定の順序に沿って、対話形式で設定内容(情報)を選択することができるため、複雑な操作が無く簡単かつ手軽にローカル設定における各種設定を完了することができる。そのため、従来のように各種設定をプログラミングする手間を省くことができる。また、ローカル設定において必要な設定内容が表示されることで、初心者であってもローカル設定に必要な設定内容の設定不足が生じることを低減でき、ローカル設定の実行において例えばエラー等が生じることを低減できる。
なお、上述したように、ローカル設定用の画面群は、5つのローカル設定画面72を有していたが、ローカル設定画面72の数はこれに限定されない。他のローカル設定画面がさらに加わっていてもよいし、5つのローカル設定画面72のうちのいずれかが省略されていてもよい。また、5つのローカル設定画面72が表示される順序は、上述した順序に限定されず、任意である。ただし、後に表示されるローカル設定画面72の表示内容が、先に表示されたローカル設定画面72の選択内容に応じて変わることが好ましい。すなわち、後に表示されるローカル設定画面72の表示内容は、先に表示されたローカル設定画面72の選択内容に応じた限定的な内容であることが好ましい。したがって、上述したローカル設定画面72aの後に、ローカル設定画面72bが表示されるよう設定されていることが好ましい。また、上述した5つのローカル設定画面72が、上述のように説明した通りの順番で表示されることで、ユーザーは、設定内容を特に把握し易いため、ユーザーにとっての利便性を高めることができる。
次に、上述した作業プログラムにおけるツール設定およびそのツール設定における表示処理について説明する。
<ツール設定および表示処理>
図24は、図8に示すツール設定の流れを示すフロー図である。図25、図26、および図27は、それぞれ、図1に示す表示装置に表示されるツール設定画面である。
以下、図24に示すフロー図を参照しつつ、上述した作業プログラムの作成におけるツール設定(ステップS121)について説明する。ツール設定は、[1B]ツール設定における各種設定(ステップS41)と、[2B]ツール設定の処理の実行(ステップS42(図示せず))と、[3B]ツール設定結果の反映(ステップS43)と、を有する。ここで、ツール設定とは、ツール設定における各種設定(表示処理を含む)、ツール設定の処理の実行、および、ツール設定結果を反映することを含む意味である。
[1B]ツール設定における各種設定(ステップS41)
まず、制御システム10は、ユーザーによる操作指示に基づいてツール設定における各種設定を実行する。
具体的には、まず、ユーザーが図17に示すメインウィンドウ50のツール設定用アイコン701に対する操作指示を行うと、入力制御部115は、その操作指示(ツール設定開始時の指示)を受ける(図24:ステップS411)。これにより、制御部111は、複数(本実施形態では5つ)のツール設定画面71(指示画面)をユーザーとの対話形式で表示させるツール設定用の画面群の表示処理を開始し、表示制御部114に対して、図25に示す1個目のツール設定画面71a(ツール設定画面71)の出力指示を出す(図24:ステップS412)。これにより、表示制御部114が1個目のツール設定画面71aを表示装置41に表示させる。
(1個目のツール設定画面)
図25に示すように、1個目のツール設定画面71aは、ツール設定モード(キャリブレーションツールタイプ)を選択するための画面である。ツール設定モードとは、ツール設定の種類、方法のことを示す。すなわち、ツール設定モードとは、どのようなツールのオフセットを設定するか、どのような手段でツール設定を行うかを示す。本実施形態では、ツール設定画面71aは、複数のラジオボタン711を有し、図25に示す4つのツール設定モードのうちのいずれか1つを受けることができるよう構成されている。このように、ツール設定画面71aが複数のモードから1つの選択を案内する構成であることで、ユーザーは、2種以上のモードを選択することを防ぐことができる。なお、ツール設定モードの種類は、図25に示す4つのモードに限定されず、他のモードがさらに加わっていても良いし、図25に示す4つのモードのいずれかが省略されていてもよい。
また、ツール設定画面71aは、上述したローカル設定画面72aと同様に、「キャンセル」と表示されたボタン7101、「戻る」と表示されたボタン7102、「次へ」と表示されたボタン7103と、「ティーチ」と表示されたボタン7104と、「完了」と表示されたボタン7105とを有する。
このようなツール設定画面71aに対して、ユーザーが所望のモードを選択する操作指示を行い、ボタン7103に対する操作指示を行うと、入力制御部115は、ツール設定モードの選択を受ける(図24:ステップS413)。これにより、制御部111は、選択されたツール設定モードを記憶部113に記憶させ、表示制御部114に対して2個目のツール設定画面(図示せず)の出力指示を出す(図24:ステップS414)。この出力指示を受け、表示制御部114が2個目のローカル設定画面(図示せず)を表示装置41に表示させる。
(2個目のツール設定画面)
2個目のツール設定画面は、図示はしないが、ツール設定結果を保存する保存番号(ツール番号)を選択(設定)するための画面である。なお、2個目のツール設定画面は、選択内容(設定内容)が異なる以外、1個目のツール設定画面71aとほぼ同様の表示形態である。
2個目のツール設定画面における保存番号を選択する表示は、例えば、リストボックス等を用いることができる。このような2個目のツール設定画面が、保存番号の選択を受け付ける構成であることで、ユーザーによる入力誤りを防ぐことができる。なお、選択するものは、保存番号に代えて、保存名であってもよい。なお、図示はしないが、2個目のツール設定画面も、1個目のツール設定画面71aが備えるボタン7101~7105と同様のボタンを有している。
このような2個目のツール設定画面に対してユーザーが所望の保存番号を選択する操作指示を行った後、「次へ」と表示されたボタン(ボタン7103に対応するボタン)の操作指示を行うと、入力制御部115は、ツール設定の結果の保存番号の選択を受ける(図24:ステップS415)。これにより、制御部111は、選択された保存番号を記憶部113に記憶させ、表示制御部114に対して、図26に示す3個目のツール設定画面71b(ツール設定画面71)の出力指示を出す(図24:ステップS416)。この出力指示を受けると、表示制御部114が3個目のツール設定画面71bを表示装置41に表示させる。
(3個目のツール設定画面)
図26に示すように、3個目のツール設定画面71bは、各種ビジョンコンポーネントの内容を選択するための画面である。ツール設定におけるビジョンコンポーネントとは、ツール設定においてツールを検出するために用いる撮像部3の種類、画像処理の対象、方法等の要素を示す。本実施形態では、ツール設定画面71bは、図26に示すように、ツールを検出するために用いる撮像部3、および、ツールを検出するために用いる画像処理シーケンスの2つのビジョンコンポーネントの各内容を選択するよう構成されている。具体的には、ツール設定画面71bは、ビジョンコンポーネントに関する複数の内容(情報)から1つの内容を選択するためのドロップダウンリスト712を複数有している。なお、ツール設定におけるビジョンコンポーネントは、上述した2つのビジョンコンポーネントに限定されず、他のビジョンコンポーネントがさらに加わっていても良いし、上述したビジョンコンポーネントのいずれかが省略されていてもよい。
ここで、3個目のツール設定画面71bの表示内容は、1個目のツール設定画面71aの撮像部3の種類(選択)に応じて変わる。具体的には、ドロップダウンリスト712の表示内容が、1個目のツール設定画面71aの撮像部3の種類(選択)に応じて変わる。例えば、上述した作業プログラムの生成におけるステップS121では、キャリブレーションしていない固定カメラ32を用いてツール設定を行う。したがって、入力制御部115が1個目のツール設定画面71aの図中の上から3個目のラジオボタン711の選択を受けると、表示制御部114は、固定カメラ32に関連する表示内容のドロップダウンリスト712を有するツール設定画面71bを表示装置41に表示させる。
このように、後に表示されるツール設定画面71bには、先に表示されたツール設定画面71aにおける選択に応じた限定的な内容が表示させるため、ユーザーによる選択ミスを低減することができる。
このような3個目のツール設定画面71bに対して、ユーザーが各ビジョンコンポーネントの内容を選択する操作指示を行い、「次へ」と表示されたボタン7103を操作指示すると、入力制御部115は、各ビジョンコンポーネントの内容の選択を受ける(図24:ステップS417)。これにより、制御部111は、選択されたビジョンコンポーネントを記憶部113に記憶させ、表示制御部114に対して4個目のツール設定画面(図示せず)の出力指示を出す(図24:ステップS418)。この出力指示を受け、表示制御部114が4個目のローカル設定画面(図示せず)を表示装置41に表示させる。
(4個目のツール設定画面)
4個目のツール設定画面は、図示はしないが、ツール設定を開始するカメラポイントのティーチングを受ける画面である。なお、4個目のツール設定画面は、選択内容(設定内容)が異なる以外、1個目のツール設定画面71aとほぼ同様の表示形態である。また、4個目のツール設定画面も、1個目のツール設定画面71aが備えるボタン7101~7105と同様のボタンを有している。
このような4個目のツール設定画面(図示せず)に対して、ユーザーがティーチボタン(グレーアウトが解除されたボタン7104に対応するボタン)を操作指示すると、入力制御部115は、その操作指示を受ける(図24:ステップS419)。これにより、制御部111は、表示制御部114に対してティーチング用の画面(図示せず)の出力指示を出す(図24:ステップS420)。この出力指示を受け、表示制御部114がティーチング用の画面を表示装置41にポップアップ表示させる。なお、このティーチング用の画面は、上述したローカル設定におけるティーチング用の画面720と同様の表示態様である(図24参照)。
このティーチング用の画面を用いて、ユーザーは、撮像画像の中心付近に例えばツールとしてのハンド270が把持しているワーク93に付されたマーカー(ターゲット)を位置させる指示(操作指示)を行う。入力制御部115がこのユーザーの指示を受けると、制御部111は、その指示に基づいて、ロボット制御装置12に対してハンド270を移動させる移動指示を出し、画像処理装置13に撮像部3でマーカーを撮像させる撮像指示を出す(図24:ステップS421)。次いで、マーカーが撮像画像の中心付近に位置した後、入力制御部115が、このユーザーによるティーチボタン(ティーチボタン7104に対応するボタン)の操作指示を受ける。これにより、制御部111は、マーカーが撮像画像の中心に位置しているときのロボット2aの先端軸座標をツール設定開始時のカメラポイントとして設定する(図24:ステップS422)。また、制御部111は、記憶部113にカメラポイントを記憶させる。その後、制御部111は、表示制御部114に対してティーチング用の画面を消去させる指示を出し、表示制御部114は、表示装置41からティーチング用の画面を消去させる。
次に、ユーザーが上述した4個目のツール設定画面(図示せず)の「次へ」と表示されたボタン(ボタン7103に対応)に対する操作指示を行うと、入力制御部115は、このユーザーによる選択を受ける(図24:ステップS423)。次いで、制御部111は、表示制御部114に対して5個目のツール設定画面71cの出力指示を出す(図24:ステップS424)。これにより、表示制御部114が5個目のツール設定画面71cを表示装置41に表示させる。
(5個目のツール設定画面)
図27に示すように、5個目のツール設定画面71cは、ツール設定を自動で実行するための各種パラメーターの内容を選択するための画面である。本実施形態では、ツール設定画面71cは、図27に示すように、初期回転、最終回転、ターゲットの許容量、最大移動距離、およびLJMモードの5つのパラメーターの各内容を選択するよう構成されている。具体的には、ツール設定画面71cは、パラメーターに関する内容を入力するためのテキストボックス713やパラメーターに関する複数の内容(情報)から1つの内容を選択するためのドロップダウンリスト714を有している。なお、パラメーターは、上述した5つのパラメーターに限定されず、他のパラメーターがさらに加わっていても良いし、上述したパラメーターのいずれかが省略されていてもよい。
また、ツール設定画面71cは、1個目のツール設定画面71aと同様に、ボタン7101~7105を有している。また、ツール設定画面71cは、「実行」と表示されたボタン7106を有する。
このようなツール設定画面71cに対して、ユーザーが各種パラメーターの内容を選択する操作指示を行い、「実行」と表示されたボタン7106を操作指示すると、入力制御部115は、各パラメーターの内容の選択と、ユーザーからのツール設定の実行指示を受ける(図24:ステップS425)。これにより、制御部111は、選択されたパラメーターの内容を記憶部113に記憶させ、ロボット制御装置12および画像処理装置13に対してツール設定を行う実行指示を出す(図24:ステップS426)。以上のようにして、ツール設定の表示処理によるツール設定の各種設定が完了する。
[2B]ツール設定の処理の実行(ステップS42)
次に、制御システム10は、ツール設定の処理を実行する。
具体的には、ロボット制御装置12および画像処理装置13は、ステップS425の制御部111からの実行指示に基づいてツール設定の処理を実行する。
まず、ロボット制御装置12は、実行指示を受信すると、ロボット2aの状態をロボット2aから取得する。次いで、ロボット制御装置12は、ツール設定を行うよう、ワーク93に付されたマーカーを固定カメラ32で撮像できるように、ロボット2aに対して移動指示を出す。ここでは、例えば撮像画像の中心にマーカーが位置するように移動指示を出す。この際、ロボット2aは、ロボット制御装置12に対して都度ロボットアーム20の移動に関する情報(位置センサーの値)等を返却する。次に、ロボット制御装置12は、画像処理装置13に対して画像処理シーケンスの実行指示を出す。画像処理装置13は、その実行指示を受信し、固定カメラ32でマーカーを検出し、画像処理シーケンスを実行する。ここでは、上述したツール設定画面71bにより受け付けた画像処理シーケンスを実行する。画像処理装置13は、画像処理シーケンスを実行して、固定カメラ32でマーカーを撮像した撮像画像(画像データ)を基に画像処理を行う。次に、ロボット制御装置12は、例えば撮像画像の中心を回動中心として軸座標を回動させるようロボット2aに対して移動指示を出す。次いで、画像処理装置13は、その実行指示を受信し、固定カメラ32でマーカーを検出し、画像処理シーケンスを実行する。なお、ロボット制御装置12は、上述の処理の他に、例えば、マーカーを軸座標に対して回動させる操作してもよく、また、軸座標をさらに回動させてもよい。次に、画像処理装置13は、ロボット制御装置12に画像処理シーケンスの実行結果(マーカーの検出結果)を送信する。次いで、ロボット制御装置12は、取得したマーカーの検出結果や、撮像したときのロボット座標等を基に、オフセットを計算する。そして、ロボット制御装置12は、コンピューター11に対してツール設定の結果を送信する。なお、上述したように、ツール設定の実行内容等について、具体的な方法は特に限定されない。記憶部113には、各種設定ごとに処理(プログラム)が記憶されており、制御部111は、選択された設定に応じた処理(プログラム)を実行する。
[3B]ツール設定結果の反映(ステップS43)
次に、制御システム10は、ツール設定結果を反映および設定を実行する。
具体的には、まず、コンピューター11の通信部116は、ツール設定の結果を受信すると(図24:ステップS427)、制御部111は、表示制御部114に対してツール設定の結果を表示する画面の出力指示を出す(図24:ステップS428)。これにより、表示制御部114は、ツール設定の結果が表示された画面を表示装置41に表示させる。この画面は、図示はしないが、ユーザーがツール設定の結果を反映させるか否かを選択できるよう構成されている。
入力制御部115がユーザーによるツール設定の結果を反映させる選択を受け付けると(図24:ステップS429)、制御部111は、ロボット制御装置12に対してツール設定の結果を反映して記憶する指示を出す(図24:ステップS430)。この指示を受け、ロボット制御装置12は、ツール設定を反映させて記憶する。
一方、ユーザーが、ツール設定の結果を反映しないことを選択すると、図24には図示しないが、制御部111は、例えば、[1B]ツール設定における各種設定(ステップS41)と、[2B]ツール設定の処理の実行(ステップS42)とを再度行う。なお、少なくとも、[2B]ツール設定の処理の実行(ステップS42)を再度行えばよい。このようにして、必要に応じて、[2B]ツール設定の処理の実行(ステップS42)等を繰り返し行うことで、ツール設定結果の精度を高めることができる。
以上説明したツール設定では、上述したように、[1B]ツール設定における各種設定において、表示制御部114は、複数(本実施形態では5つ)のツール設定画面71をユーザーとの対話形式で表示させるツール設定用の画面群を表示させる。そして、ユーザーは、複数のツール設定画面71を用いて制御システム10に対して各種設定の指示を行う。これにより、ユーザーは、所定の順序に沿って、対話形式で設定内容(情報)を選択することができるため、複雑な操作がなく簡単かつ手軽にツール設定における各種設定を完了することができる。そのため、従来のように各種設定をプログラミングする手間を省くことができる。また、ツール設定において必要な設定内容が表示されることで、初心者であってもツール設定に必要な設定内容の設定不足が生じることを低減でき、ツール設定の実行において例えばエラー等が生じることを低減できる。
なお、上述したように、ツール設定用の画面群は、5つのツール設定画面71を有していたが、ツール設定画面71の数はこれに限定されない。他のツール設定画面がさらに加わっていてもよいし、5つのツール設定画面71のうちのいずれかが省略されていてもよい。また、5つのツール設定画面71が表示される順序は、上述した順序に限定されず、任意である。ただし、後に表示されるツール設定画面71の表示内容が、先に表示されたツール設定画面71の選択内容に応じて変わることが好ましい。すなわち、後に表示されるツール設定画面71の表示内容は、先に表示されたツール設定画面71の選択内容に応じた限定的な内容であることが好ましい。したがって、上述したツール設定画面71aの後に、ツール設定画面71bが表示されるよう設定されていることが好ましい。また、上述した5つのツール設定画面71が、説明した通りの順番で表示されることで、ユーザーは、設定内容を特に把握し易いため、ユーザーにとっての利便性を高めることができる。
次に、上述した作業プログラムにおけるキャリブレーションおよびそのキャリブレーションにおける表示処理について説明する。
<キャリブレーション作成および表示処理>
図28および図29は、それぞれ、図8および図9に示すキャリブレーションの流れを示すフロー図である。図30~図37は、それぞれ、図1に示す表示装置に表示されるキャリブレーション作成画面(キャリブレーションガイド画面)である。図38は、図1に示す表示装置に表示されるティーチング用の画面である。図39は、図18に示すサブウィンドウにプロパティー設定ウィンドウが表示された状態を示す図である。図40および図41は、図18に示すサブウィンドウにティーチングのフローが表示された状態を示す図である。図42は、図18に示すサブウィンドウにおいてキャリブレーション実行ボタンが表示された状態を示す図である。図43は、図29に示すステップS545において表示装置に表示される画面である。
以下、図28および図29に示すフロー図を参照しつつ、上述した作業プログラムの作成におけるキャリブレーション(ステップS122,S127)について説明する。キャリブレーションは、主に、[1C]キャリブレーションにおける各種設定(ステップS51)と、[2C]カメラポイントのティーチング(ステップS52)と、[3C]キャリブレーションの実行(ステップS53(図示せず))と、[4C]キャリブレーション結果の反映(ステップS54)と、を有する。ここで、上述したように、キャリブレーションとは、キャリブレーションにおける各種設定(表示処理を含む)すなわちキャリブレーション作成、カメラポイントや基準点のティーチング、キャリブレーションの実行、および、キャリブレーション結果を反映することにより撮像部3の座標系(画像座標系)とロボット座標系とを対応付けることを含む意味である。
[1C]キャリブレーションにおける各種設定(ステップS51)
まず、制御システム10は、ユーザーによる操作指示に基づいてキャリブレーションにおける各種設定、すなわちキャリブレーションの作成を実行する。
具体的には、まず、ユーザーが図17に示すメインウィンドウ50のキャリブレーション作成用アイコン703に対する操作指示を行うと、入力制御部115は、その操作指示(キャリブレーションの作成開始の指示)を受ける(図28:ステップS511)。これにより、制御部111は、複数(本実施形態では、10個)のキャリブレーション作成画面(指示画面)73をユーザーとの対話形式で表示させるキャリブレーション作成用の画面群の表示処理を開始し、表示制御部114に対して、図30に示す1個目のキャリブレーション作成画面73a(キャリブレーション作成画面73)の出力指示を出す(図28:ステップS512)。これにより、表示制御部114が1個目のキャリブレーション作成画面73aを表示装置41に表示させる。
(1個目のキャリブレーション作成画面)
図30に示すように、1個目のキャリブレーション作成画面73aは、これから設定するキャリブレーション名の設定、および、キャリブレーションの対象とする撮像部3の種類を選択するための画面である。本実施形態では、キャリブレーション作成画面73aは、キャリブレーション名を選択するためのドロップダウンリスト7311と、撮像部3を選択するためのドロップダウンリスト7312と、コピー元のキャリブレーションを選択するためのドロップダウンリスト7313と、を有している。
既に設定されたキャリブレーションが保存されている場合には、ドロップダウンリスト7313を用いることで、コピー元のキャリブレーションの設定をコピーすることができる。これにより、キャリブレーション作成画面73a以後に表示される複数のキャリブレーション作成画面73には、コピー元のキャリブレーションの設定内容が表示される。したがって、ユーザーは、既に設定されたキャリブレーションの各種内容を少しだけ修正して新しいキャリブレーションを作成したい場合に、コピー元のキャリブレーションを指定することで、修正を簡単に行うことができる。
また、キャリブレーション作成画面73aは、上述したローカル設定画面72aと同様に、「キャンセル」と表示されたボタン7301、「戻る」と表示されたボタン7302、「次へ」と表示されたボタン7303と、「完了」と表示されたボタン7304とを有する。
このようなキャリブレーション作成画面73aに対して、ユーザーがキャリブレーション名の入力等を行う操作指示を行い、ボタン7303に対する操作指示を行うと、入力制御部115は、キャリブレーション名の入力等を受ける(図28:ステップS513)。これにより、制御部111は、キャリブレーション名等を記憶部113に記憶させ、表示制御部114に対して、図31又は図32に示す2個目のキャリブレーション作成画面の出力指示を出す(図28:ステップS514)。この出力指示を受け、表示制御部114が2個目のキャリブレーション作成画面73b(キャリブレーション作成画面73)を表示装置41に表示させる。
(2個目のキャリブレーション作成画面)
図31又は図32に示すように、2個目のキャリブレーション作成画面73bは、スタンドアローンカメラ又はロボットカメラを選択するための画面であり、スタンドアローンカメラおよびロボットカメラのいずれか一方の選択を受ける2つのラジオボタン7321を有する。「スタンドアローンカメラの選択」は、実空間における座標系と撮像部3の座標系(画像座標系)とを対応付けるキャリブレーションを行うことである。「ロボットカメラの選択」は、撮像部3の座標系(画像座標系)とロボット2の座標系とを対応付けるキャリブレーションを実行することである。
また、キャリブレーション作成画面73bは、複数のロボット2の種類から1つのロボット2を選択するためのドロップダウンリスト7322と、撮像部3の取付箇所の選択を受けるグループ(領域)7323とを有する。ここで、本明細書において、撮像部3の取付箇所とは、撮像部3が設置されている設置箇所と、撮像部3の撮像方向(向き)とを含む。
本実施形態では、ドロップダウンリスト7322の表示内容は、垂直多関節ロボットとしてのロボット2aおよび水平多関節ロボットとしてのロボット2bである。キャリブレーション作成画面73bは、これらロボット2a,2bのいずれかを選択できるよう構成されている。また、本実施形態では、グループ7323は、4つのラジオボタン7324を有し、図31又は図32に示す4つの撮像部3の取付箇所のうちのいずれか1つを受け付けることができるよう構成されている。これにより、ユーザーは、2種以上の取付箇所を選択することを防ぐことができる。なお、このロボット2の種類の選択および撮像部3の取付箇所の選択は、ロボットカメラを選択した場合に用いられる。
ここで、2個目のキャリブレーション作成画面73bの表示内容が、ロボット2の選択内容(種類)に応じて変わる。具体的には、2個目のキャリブレーション作成画面73bのグループ7323の取付箇所が、ロボット2の選択内容に応じて変わる(図31および図32参照)。例えば、入力制御部115が垂直多関節ロボットとしてのロボット2aの選択を受けると、表示制御部114は、ロボット2aに関連する取付箇所を有するグループ7323を表示装置41に表示させる(図31参照)。また、例えば、入力制御部115が水平多関節ロボットとしてのロボット2bの選択を受けると、表示制御部114は、ロボット2bに関連する取付箇所を有するグループ7323を表示装置41に表示させる(図32参照)。
例えば、上述した作業プログラムの生成におけるステップS122では、垂直多関節ロボットとしてのロボット2aのロボット座標系と固定カメラ32の画像座標系とのキャリブレーションを行う。したがって、入力制御部115がロボット2aの選択を受けると、表示制御部114は、キャリブレーション作成画面73bにおいて、図31に示すようなロボット2aに関連する取付箇所を有するグループ7323を表示装置41に表示させる。
このように、グループ7323の表示内容すなわち撮像部3の設置箇所等の情報が、ロボット2の種類によって限定的に表示されることで、ユーザーによる選択ミスを低減することができる。
このような2個目のキャリブレーション作成画面73bに対して、上述したようにユーザーが所望のロボット2および撮像部3の取付箇所を選択する操作指示を行い、「次へ」と表示されたボタン7303に対する操作指示を行うと、入力制御部115は、ロボット2および撮像部3の設置箇所の選択を受ける(図28:ステップS515)。これにより、制御部111は、選択された撮像部3の設置箇所を記憶部113に記憶させ、表示制御部114に対して、図33に示す3個目のキャリブレーション作成画面73cの出力指示を出す(図28:ステップS516)。この出力指示を受け、表示制御部114が3個目のキャリブレーション作成画面73cを表示装置41に表示させる。
ここで、以下では、ステップS122におけるキャリブレーションの設定を中心に説明する。すなわち、固定カメラ32に関するキャリブレーションについて中心に説明する。したがって、以下では、上述した図31のキャリブレーション作成画面73bにおいて、ユーザーによって、ロボット2aが選択され、上向きの固定カメラ(固定上向き:Fixed upward)32が選択されたものとして説明する。また、以下に説明する3~10個目のキャリブレーション作成画面73には、キャリブレーション作成画面73a,73bの選択内容に応じた内容が表示される。したがって、3~10個目のキャリブレーション作成画面73には、上向きの固定カメラ32に対応した内容が表示される。
(3個目のキャリブレーション作成画面)
図33に示すように、3個目のキャリブレーション作成画面73cは、ターゲットシーケンスの内容を選択するための画面である。ターゲットシーケンスとは、キャリブレーションの実行時に撮像部3によって撮像するマーカー等のターゲットに関する画像処理シーケンスのことを示す。本実施形態では、キャリブレーション作成画面73cは、複数のターゲットシーケンスの種類から1つのターゲットシーケンスを選択するためのドロップダウンリスト733を有している。
ドロップダウンリスト733の表示内容は、1個目のキャリブレーション作成画面73aの撮像部3の種類(選択)に応じて変わる。例えば、入力制御部115が1個目のキャリブレーション作成画面73aにおいて固定カメラ32の選択を受けると、表示制御部114は、固定カメラ32に関連する表示内容のドロップダウンリスト733を有するキャリブレーション作成画面73cを表示装置41に表示させる。なお、1個目のキャリブレーション作成画面73aにおいてモバイルカメラ31を選択した場合、ドロップダウンリスト733には、モバイルカメラ31に関連する内容が表示される。このように、後に表示されるキャリブレーション作成画面73cのドロップダウンリスト733の表示内容が、先に表示されたキャリブレーション作成画面73aにおける選択に対応した限定的な内容であることで、ユーザーによる選択ミスを低減することができる。
このようなキャリブレーション作成画面73cに対して、ユーザーがターゲットシーケンスを選択する操作指示を行い、「次へ」と表示されたボタン7303を操作指示すると、入力制御部115は、ターゲットシーケンスの選択を受ける(図28:ステップS517)。これにより、制御部111は、選択されたターゲットシーケンスを記憶部113に記憶させる。また、このとき、制御部111は、選択されたターゲットシーケンスと現在設定しているキャリブレーションとを関連付けて記憶部113に記憶させる。また、制御部111は、表示制御部114に対して、図34に示す4個目のキャリブレーション作成画面73d(キャリブレーション作成画面73)の出力指示を出す(図28:ステップS518)。この出力指示を受け、表示制御部114が4個目のキャリブレーション作成画面73dを表示装置41に表示させる。
(4個目のキャリブレーション作成画面)
図34に示すように、4個目のキャリブレーション作成画面73dは、キャリブレーションで画像座標と対応付けるローカル座標系(ロボットローカル)を選択するための画面である。本実施形態では、キャリブレーション作成画面73dは、ローカル設定の保存番号を選択するためのドロップダウンリスト7342と、ローカルウィザードボタン7341とを有する。
ドロップダウンリスト7342には、既に設定されているローカル設定の保存番号と、これから設定して保存するローカル設定の保存番号(未設定であるローカル設定の保存番号)とが表示される。また、ローカルウィザードボタン7341は、上述した複数のローカル設定画面72を有するローカル設定用の画面群を起動させるために用いられる。
このようなキャリブレーション作成画面73dに対して、例えば、ユーザーが、ローカルウィザードボタン7341に対する操作指示を行わずに、ドロップダウンリスト7342から設定済みであるローカル設定の保存番号を選択する操作指示を行い、「次へ」と表示されたボタン7303に対する操作指示を行うと、入力制御部115は、ローカル設定の保存番号の選択を受ける(図28:ステップS519)。これにより、制御部111は、ローカル設定を行わないと判断し(図28:ステップS520)、選択されたローカル座標系を記憶部113に記憶させ、表示制御部114に対して図35に示す5個目のキャリブレーション作成画面73e(キャリブレーション作成画面73)の出力指示を出す(図28:ステップS522)。この出力指示を受け、表示制御部114が5個目のキャリブレーション作成画面73eを表示装置41に表示させる。
一方、キャリブレーション作成画面73dに対して、ユーザーがドロップダウンリスト7342から未設定であるローカル設定の保存番号を選択し、ローカルウィザードボタン7341に対する操作指示を行うと、入力制御部115は、このユーザーによる操作指示を受ける(図28:ステップS519)。これにより、制御部111は、ローカル設定を行うと判断したら(図28:ステップS520)、上述したローカル設定に移行し、複数のローカル設定画面72を有するローカル設定用の画面群を起動させる(図28:ステップS521)。次いで、上述したローカル設定が終了した後、入力制御部115がユーザーによるキャリブレーション作成画面73dの「次へ」と表示されたボタン7303に対する操作指示を受けると、制御部111は、設定したローカル設定を記憶部113に記憶させ、表示制御部114に対して図35に示す5個目のキャリブレーション作成画面73eの出力指示を出す(図28:ステップS522)。
(5個目のキャリブレーション作成画面)
図35に示すように、5個目のキャリブレーション作成画面73eは、キャリブレーションの実行時に用いる基準点の取得タイプの設定(選択)を受ける画面である。上向きカメラ(固定カメラ32)のキャリブレーションの場合は、基準点の取得タイプとしてエンドエフェクターのみが選択できる。すなわち上向きキャリブレーションでは、エンドエフェクターに付されたマーカー等のターゲットのローカル座標(ロボット座標)と、そのターゲットが検出された画像座標を対応付ける。キャリブレーション作成画面73eは、エンドエフェクターに付されたターゲットのロボット2aの先端軸座標におけるオフセットを保持するツール設定(ロボットツール)の設定を受ける画面である。
キャリブレーション作成画面73eは、エンドエフェクターの選択を受けるラジオボタン7353と、ツール設定の保存番号を選択するためのドロップダウンリスト7352と、ツールウィザードボタン7351と、2つの基準点を用いることを受けるチェックボックス7354と、を有する。
ラジオボタン7353は、固定カメラ32に関するキャリブレーションを行う場合に表示される。また、ドロップダウンリスト7352には、既に設定されているツール設定の保存番号と、これから設定して保存するツール設定の保存番号(未設定であるツール設定の保存番号)とが表示される。本実施形態では、エンドエフェクターとしてのハンド270に設けられたターゲットに限らず、例えばハンド270が把持しているワークに付されたターゲットを基準点として設定することができる。ドロップダウンリスト7352では、ターゲットとする基準点のロボット2aの先端軸座標におけるオフセットを保持するツール設定の保存番号を選択する。また、ツールウィザードボタン7351は、前述のターゲットとする基準点のツール設定がまだ未設定の場合に、上述した複数のツール設定画面71を有するツール設定用の画面群を起動してツール設定するために用いられる。
このようなキャリブレーション作成画面73eに対して、例えば、ユーザーが、ツールウィザードボタン7351に対する操作指示を行わずに、ドロップダウンリスト7352から設定済みである基準点の取得タイプ(エンドエフェクターとツール設定の保存番号)を選択する操作指示を行い、「次へ」と表示されたボタン7303に対する操作指示を行うと、入力制御部115は、基準点の取得タイプ(エンドエフェクターとツール設定の保存番号)の選択を受ける(図28:ステップS523)。これにより、制御部111は、ツール設定を行わないと判断し(図28:ステップS524)、選択されたツール設定を記憶部113に記憶させ、表示制御部114に対して、図36に示す6個目のキャリブレーション作成画面73f(キャリブレーション作成画面73)の出力指示を出す(図28:ステップS526)。この出力指示を受け、表示制御部114が6個目のキャリブレーション作成画面73fを表示装置41に表示させる。
一方、キャリブレーション作成画面73eに対して、ユーザーがドロップダウンリスト7352から未設定であるツール設定の保存番号を選択し、ツールウィザードボタン7351に対する操作指示を行うと、入力制御部115は、このユーザーによる操作指示を受ける(図28:ステップS523)。これにより、制御部111は、ツール設定を行うと判断したら(図28:ステップS524)、上述したツール設定に移行し、複数のツール設定画面71を有するツール設定用の画面群を起動させる(図28:ステップS525)。次いで、上述したツール設定が終了した後、入力制御部115がユーザーによるキャリブレーション作成画面73eの「次へ」と表示されたボタン7303に対する操作指示を受けると、制御部111は、設定したツール設定を記憶部113に記憶させ、表示制御部114に対して図36に示す6個目のキャリブレーション作成画面73fの出力指示を出す(図28:ステップS526)。
(6個目のキャリブレーション作成画面)
図36に示すように、6個目のキャリブレーション作成画面73fは、カメラポイントの自動生成を行うか否かを選択するための画面であり、チェックボックス7361を有する。カメラポイントとは、撮像画像内にあるポイントであり、キャリブレーションの実行の際にターゲット(基準点)又は撮像部3を位置させるポイントである。このカメラポイントの数は特に限定されないが、3つ以上であることが好ましく、本実施形態では、9つ設定する。
このようなキャリブレーション作成画面73fに対して、ユーザーがチェックボックス7361にチェックを入れ、「次へ」と表示されたボタン7303の操作指示を行うと、入力制御部115は、カメラポイントの自動生成を行うという選択を受ける(図28:ステップS527)。一方、ユーザーがチェックボックス7361にチェックを入れずに、「次へ」と表示されたボタン7303の操作指示を行うと、入力制御部115は、カメラポイントの自動生成を行わないという選択を受ける(図28:ステップS527)。そして、制御部111は、カメラポイントの自動生成の有無を記憶部113に記憶させ、表示制御部114に対して7個目のキャリブレーション作成画面(図示せず)の出力指示を出す(図28:ステップS528)。この出力指示を受け、表示制御部114が7個目のキャリブレーション作成画面を表示装置41に表示させる。
(7個目のキャリブレーション作成画面)
7個目のキャリブレーション作成画面は、図示はしないが、撮像部3のレンズの歪み補正を行うか否かの選択、および、歪み補正を行う場合の画像処理シーケンスを設定するための画面である。なお、この7個目のキャリブレーション作成画面は、選択内容(設定内容)が異なる以外、1個目のキャリブレーション作成画面73aとほぼ同様の構成である。
このような7個目のキャリブレーション作成画面(図示せず)に対して、ユーザーがレンズの歪み補正の有無を選択し、歪み補正する場合には画像処理シーケンスを選択し、「次へ」と表示されたボタン7303に対する操作指示を行うと、入力制御部115は、レンズの歪み補正の有無を受ける(図28:ステップS529)。制御部111は、レンズの歪み補正の有無を記憶部113に記憶させ、表示制御部114に対して8個目のキャリブレーション作成画面(図示せず)の出力指示を出す(図28:ステップS530)。この出力指示を受け、表示制御部114が8個目のキャリブレーション作成画面を表示装置41に表示させる。
(8個目のキャリブレーション作成画面)
8個目のキャリブレーション作成画面は、図示はしないが、キャリブレーションを実行する際の照明を設定するための画面である。8個目のキャリブレーション作成画面では、例えば、照明がオンするまでの待機時間や照明をオンする出力ビット等を設定することができる。なお、この8個目のキャリブレーション作成画面は、選択内容(設定内容)が異なる以外、1個目のキャリブレーション作成画面73aとほぼ同様の構成である。
このような8個目のキャリブレーション作成画面(図示せず)に対して、照明を設定し、「次へ」と表示されたボタン7303の操作指示を行うと、入力制御部115は、照明の設定を受ける(図28:ステップS531)。制御部111は、照明の設定を記憶部113に記憶させ、表示制御部114に対して、図37に示す9個目のキャリブレーション作成画面73g(キャリブレーション作成画面73)の出力指示を出す(図29:ステップS532)。この出力指示を受け、表示制御部114が9個目のキャリブレーション作成画面を表示装置41に表示させる。
(9個目のキャリブレーション作成画面)
図37に示すように、9個目のキャリブレーション作成画面73gは、キャリブレーション中のロボット動作に関する各種パラメーターの内容を選択するための画面である。本実施形態では、キャリブレーション作成画面73gは、図37に示すように、ロボットスピード(ロボット2の所定の部位の移動速度)、ロボット加速度(ロボット2の所定の部位の移動加速度)、および、モーションディレイ(ロボット2の所定の部位が停止した後何秒後に撮像するか)の3つのパラメーターの各内容を選択するよう構成されている。具体的には、キャリブレーション作成画面73gは、パラメーターに関する内容(情報)を入力するためのテキストボックス7371を複数有している。なお、パラメーターは、上述した3つのパラメーターに限定されず、他のパラメーターがさらに加わっていても良いし、上述したパラメーターのいずれかが省略されていてもよい。
また、キャリブレーション作成画面73gは、アプローチポイントの使用の有無を選択するチェックボックス7372と、ティーチボタン7373とを有する。アプローチポイントとは、キャリブレーションの実行時にけるカメラポイントの移動の基点となる箇所である。アプローチポイントを使用することで、キャリブレーション実行時において、ロボット2の所定の部位を、常にアプローチポイントからカメラポイントへと移動させることとなる。そのため、ロボット2のカメラポイントでの位置の安定性を高めることができ、その結果、キャリブレーション結果の精度をより高めることができる。
このようなキャリブレーション作成画面73gに対して、例えば、ユーザーがチェックボックス7372にチェックを入れ、ティーチボタン7373に対する操作指示をすると、入力制御部115は、このユーザーによる操作指示を受ける。これにより、制御部111は、アプローチポイントの設定を行うと判断し(図29:ステップS533)、表示制御部114に対してアプローチポイントを設定するための画面730の出力指示を出す(図29:ステップS534)。これにより、表示制御部114が画面730を表示装置41にポップアップ表示させる。
図38に示すように、画面730は、アプローチポイントの文字列(ロボット座標)を入力するための画面である。また、画面730は、OKボタン7305と、キャンセルボタン7306と、ジョグ動作の操作指示を受ける画面(図示せず)を表示させるために用いられるボタン(ジョグ&ティーチボタン)7307と、を有する。入力制御部115が、ボタン7307の選択を受けると、表示制御部114は、制御部111の制御の下、図示はしないが、ジョグ動作の操作指示を受ける画面(図22に示す画面720に対応する画面)を表示装置41に表示させる。これにより、ユーザーは、文字列を入力する代わりに、ジョグ動作の操作指示を行うことによりアプローチポイントを設定することができる。
このような画面730およびジョグ動作の操作指示を受ける画面(図示せず)を用いて、ユーザーがアプローチポイントの設定を行い、画面730のOKボタン7305に対する操作指示を行うと、入力制御部は、アプローチポイントの設定を受け付ける(図29:ステップS535)。これにより、制御部111は、アプローチポイントを記憶部113に記憶させ、表示制御部114に対して画面730を消去させる指示を出し、表示制御部114は、表示装置41から画面730を消去させる。
次いで、ユーザーが図37に示すキャリブレーション作成画面73gの「次へ」と表示されたボタン7303に対する操作指示を行うと、入力制御部115は、その操作指示を受ける。これにより、制御部111は、表示制御部114に対して10個目のキャリブレーション作成画面(図示せず)の出力指示を出す(図29:ステップS536)。この出力指示を受け、表示制御部114が10個目のキャリブレーション作成画面を表示装置41に表示させる。
なお、ユーザーが、キャリブレーション作成画面73gに対して、チェックボックス7372にチェックを入れずに、「次へ」と表示されたボタン7303に対する操作指示を行うと、入力制御部115は、このユーザーによる操作指示を受ける。これにより、制御部111は、アプローチポイントの設定を行なわないと判断し(図29:ステップS533)、表示制御部114に対して10個目のキャリブレーション作成画面(図示せず)の出力指示を出す(図29:ステップS536)。
(10個目のキャリブレーション作成画面)
10個目のキャリブレーション作成画面は、図示はしないが、1~9個目のキャリブレーション作成画面で設定した内容が列記されている画面である。なお、この10個目のキャリブレーション作成画面は、選択内容(設定内容)が異なる以外、1個目のキャリブレーション作成画面73aとほぼ同様の構成である。このような10個目のキャリブレーション作成画面を視認することにより、ユーザーは、一目でキャリブレーションの設定内容を確認することができる。
また、10個目のキャリブレーション作成画面は、1個目のキャリブレーション作成画面73aと同様に、ボタン7301~7304に対応するボタンを有している。したがって、入力制御部115が「戻る」と表示されたボタンに対する操作指示を受け付けると、制御部111は、再度設定をやり直す。また、入力制御部115が「キャンセル」と表示されたボタンに対する操作指示を受けると、制御部111は、設定したキャリブレーションを破棄する。また、入力制御部115が「完了」と表示されたボタンに対する操作指示を受けると、制御部111は、1~10個のキャリブレーション作成画面を用いた表示処理により設定したキャリブレーションを記憶部113に記憶させる。
なお、入力制御部115が「キャンセル」と表示されたボタン又は「完了」と表示されたボタンに対する操作指示を受けると、制御部111は、キャリブレーション作成用の画面群の表示処理を終了し、表示制御部114に対してキャリブレーション作成画面73を表示装置41から消去させる指示を出す。これにより、表示制御部114は、キャリブレーション作成画面73を表示装置41から消去させる。
以上により、キャリブレーションの表示処理によるキャリブレーションの各種設定(キャリブレーションの作成)が完了する。
[2C]カメラポイントのティーチング(ステップS52)
次に、制御システム10は、複数のカメラポイントのティーチングを実行する。
上述したように、入力制御部115がユーザーによる「完了」と表示されたボタンに対する操作指示を受けると(図29:ステップS537)、制御部111は、表示制御部114に対して、キャリブレーション作成画面73を表示装置41から消去させる指示を出すとともに、プロパティー設定ウィンドウ60を有するサブウィンドウ61の出力指示を出す(図29:ステップS538)。これにより、表示制御部114に、図39に示すプロパティー設定ウィンドウ60を有するサブウィンドウ61を表示装置41に表示させる。
(サブウィンドウ)
キャリブレーションの各種設定が完了すると、サブウィンドウ61には、プロパティー設定ウィンドウ60と、ティーチボタン6151と、画像イメージ表示部612とが表示される。なお、図39に示す画像イメージ表示部612には、ワーク93の一例が写っている(図40~図42についても同様である)。
プロパティー設定ウィンドウ60は、閲覧部63と、リスト(プロパティーリスト)57と、を有する。
閲覧部63は、作成したキャリブレーション設定(キャリブレーション名)と後述する表示処理により作成した画像処理シーケンス(画像処理シーケンス名)とを一緒に表示する領域である。本実施形態では、閲覧部63の表示形態は、キャリブレーション設定および画像処理シーケンス設定をそれぞれ階層的に表示するツリー表示である。これにより、ユーザーは、複数のキャリブレーション設定と、複数の画像処理シーケンスとを一目で把握し易くなる。そのため、所望のキャリブレーション設定や画像処理シーケンスを選択し易い。なお、閲覧部63の表示形態は、これに限定されず、例えば、キャリブレーション設定および画像処理シーケンス設定をそれぞれ並列的に列挙したリスト表示等であってもよい。
また、リスト57は、閲覧部63で選択されたキャリブレーション設定や画像処理シーケンスの各種設定内容を表示する領域である。このプロパティーリストは、ユーザーによる操作指示(入力)を受け付けるよう構成されている。そのため、ユーザーは、このプロパティーリストを用いて、キャリブレーション設定の詳細な設定内容を設定(変更)することができる。
このようなサブウィンドウ61に対して、ユーザーがティーチボタン6151に対する操作指示を行うと、入力制御部115は、その操作指示(ティーチングの実行指示)を受ける(図29:ステップS539)。これにより、制御部111は、ロボット制御装置12および画像処理装置13に対して1つ又は複数のカメラポイント、基準点のティーチングを行う実行指示を出す(図29:ステップS540)。また、制御部111は、表示制御部114に対してティーチグループ616の出力指示を出す。これにより、表示制御部114は、図40又は図41に示すティーチグループ616を有するサブウィンドウ61を表示装置41に表示させる。
例えば、コンピューター11は、上述のステップS527においてカメラポイントの自動生成を行うという選択を受けた場合には、ロボット制御装置12および画像処理装置13に対して1つのカメラポイントをティーチングする実行指示を出す。また、この場合、制御部111は、表示制御部114に対してフローチャート660a(フローチャート660)およびジョグパネル54を表示させる出力指示を出す(図40参照)。これにより、サブウィンドウ61のフローチャート表示部62には、1つのカメラポイントを設定するフローチャート660aが表示される(図40参照)。次いで、図40に示すサブウィンドウ61に対して、ユーザーがティーチグループ616が有する各種ボタンおよびジョグパネル54が有する各種ボタン等に対する操作指示を行うと、コンピューター11は、そのユーザーによる操作指示を受ける。そして、ロボット制御装置12および画像処理装置13は、撮像部3およびロボット2を駆動させ、例えば、図40に示す画像イメージ表示部612の中心(カメラポイント)に、ハンド270で把持したワークに付されたターゲット(図中の矢印A)を位置させる。
一方、コンピューター11は、上述のステップS527においてカメラポイントの自動生成を行わないという選択を受けた場合には、ロボット制御装置12および画像処理装置13に対して所定の全てのカメラポイント(本実施形態では9つのカメラポイント)をティーチングする実行指示を出す。また、この場合、制御部111は、表示制御部114に対してフローチャート660b(フローチャート660)およびジョグパネル54を表示させる出力指示を出す(図41参照)。これにより、サブウィンドウ61のフローチャート表示部62には、9つのカメラポイントを設定するフローチャート660bが表示される(図41参照)。次いで、図41に示すサブウィンドウ61に対して、ユーザーがティーチグループ616が有する各種ボタンおよびジョグパネル54が有する各種ボタン等に対する操作指示を行うと、コンピューター11は、そのユーザーによる操作指示を受ける。そして、ロボット制御装置12および画像処理装置13は、撮像部3およびロボット2を駆動させ、図41に示す画像イメージ表示部612内の所定の9つの箇所(カメラポイント)に、ハンド270で把持したワークに付されたターゲットを位置させる。
ここで、フローチャート660a,660bは、それぞれ、ティーチングの処理の流れを示すものであり、先頭のフロー661が選択されたキャリブレーション設定(キャリブレーション名)を示している。また、図中の上から2番目以降のフロー662が、選択されたキャリブレーション設定に含まれるティーチングステップを示している。
また、例えば、図41に示すように、ティーチング済であるフロー662a(フロー662)の表示態様と、未だティーチングが済んでいないフロー662b(フロー662)の表示態様とが異なる。本実施形態では、フロー662aとフロー662bとで背景色を変更している。これにより、ユーザーは、ティーチング済である基準点と、未だティーチングが済んでいない基準点とを一目で判別することができる。
フローチャート660a又はフローチャート660bが有する全てのフロー662のティーチングが完了し、すなわち全ての基準点のティーチングが完了したら、制御部111は、表示制御部114に対して図42に示すキャリブレーション実行ボタン6152の表示の出力命令を出す(図29:ステップS541)。これにより、表示制御部114によって、サブウィンドウ61にキャリブレーション実行ボタン6152を表示させる(図42参照)。
次いで、ユーザーがキャリブレーション実行ボタン6152に対する操作指示を行うと、入力制御部115は、その操作指示(キャリブレーションの実行指示)を受ける(図29:ステップS542)。これにより、制御部111は、ロボット制御装置12および画像処理装置13に対してキャリブレーションの実行指示を出す(図29:ステップS543)。
以上のようにして、カメラポイントのティーチングが完了する。
[3C]キャリブレーションの実行(ステップS53)
次に、制御システム10は、キャリブレーションを実行する。
具体的には、ロボット制御装置12および画像処理装置13は、ステップS543における制御部111からの実行指示に基づいてキャリブレーションを実行する。
まず、ロボット制御装置12は、実行指示を受信すると、ロボット2aの状態をロボット2aから取得する。次いで、ロボット制御装置12は、1個目のカメラポイントにターゲットが位置するようにロボット2aに対して移動指示を出す。この際、ロボット2aは、ロボット制御装置12に対して都度ロボットアーム20の移動に関する情報(位置センサーの値)等を返却する。次に、ロボット制御装置12は、画像処理装置13に対して画像処理シーケンスの実行指示を出す。画像処理装置13は、その実行指示を受信し、固定カメラ32(撮像部3)でターゲット(例えば、マーカー)を検出し、画像処理シーケンスを実行する。画像処理装置13は、画像処理シーケンスを実行して、固定カメラ32でターゲットを撮像した撮像画像(画像データ)を基に画像処理を行う。次に、画像処理が終了したら、画像処理装置13は、ロボット制御装置12に画像処理シーケンスの実行結果(ターゲットの検出結果)を送信する。これにより、ロボット制御装置12は、1個目のカメラポイントにおける画像処理シーケンスの実行結果を取得する。次に、ロボット制御装置12は、残りの2個目から9個目までのカメラポイントに関して、上述した1個目のカメラポイントの画像処理シーケンスの実行結果の取得に至る一連の処理と同様の処理を行う。次に、ロボット制御装置12は、1個目から9個目までの基準点の画像処理シーケンスの実行結果と、1個目から9個目までのカメラポイントにおけるターゲットのローカル座標(ロボット座標)と、に基づき、固定カメラ32(撮像部3)の画像座標系とロボット2a(ロボット2)のローカル座標(ロボット座標)とを対応付けたキャリブレーション結果を算出する。そして、ロボット制御装置12は、算出したキャリブレーション結果をコンピューター11に送信する。なお、上述したように、キャリブレーションの実行内容等について、具体的な方法は特に限定されない。記憶部113には、各種設定ごとに処理(プログラム)が記憶されており、制御部111は、選択された設定に応じた処理(プログラム)を実行する。
以上のようにして、キャリブレーションの実行が完了する。
[4C]キャリブレーション結果の反映(ステップS54)
次に、制御システム10は、キャリブレーション結果の反映および設定を実行する。
具体的には、まず、コンピューター11の通信部116は、キャリブレーション結果を受信すると(図29:ステップS544)、制御部111は、表示制御部114に対してキャリブレーション結果を表示する画面68(図43参照)の出力指示を出す(図29:ステップS545)。これにより、表示制御部114が画面68を表示装置41に表示させる。
図43に示すように画面68は、前回のキャリブレーション結果を表示する領域681と、今回のキャリブレーション結果を表示する領域682と、OKボタン683と、キャンセルボタン684と、を有する。OKボタン683およびキャンセルボタン684を有することで、ユーザーは、キャリブレーション結果を反映させたい場合には、OKボタン683を選択し、反映させたくない場合には、キャンセルボタン684を選択することができる。このように、画面68は、ユーザーがキャリブレーション結果を反映させるか否かを選択できるよう構成されている。また、領域681,682を有することで、ユーザーは、前回のキャリブレーション結果の内容と比較しながら、今回のキャリブレーション結果を反映させるか否かを選択することができる。
このような画面68に対して、入力制御部115がユーザーによるキャリブレーション結果を反映させる選択、すなわちOKボタン683に対する操作指示を受け付けると(図29:ステップS546)、制御部111は、ロボット制御装置12に対してキャリブレーション結果を反映して記憶する指示を出す(図29:ステップS547)。この指示を受け、コンピューター11は、キャリブレーション結果を反映させて記憶する。なお、ロボット制御装置12がキャリブレーション結果を反映させて記憶するようにしてもよい。
一方、ユーザーが、キャリブレーション結果を反映しないことを選択すると、図29には図示しないが、制御部111は、例えば、[1C]キャリブレーションにおける各種設定(ステップS51)と、[2C]カメラポイントのティーチング(ステップS52)と、[3C]キャリブレーションの実行(ステップS53)と、を再度行う。なお、少なくとも、[3C]キャリブレーションの実行(ステップS53)を再度行えばよい。このようにして、必要に応じて、[3C]キャリブレーションの実行(ステップS53)等を繰り返し行うことで、キャリブレーション結果の精度を高めることができる。また、上述したように、ユーザーは、画面68を用いて前回のキャリブレーション結果と今回のキャリブレーション結果を比較することができるため、簡単に反映させるか否かの判断を行うことができる。
以上、説明したように、[1C]キャリブレーションにおける各種設定において、表示制御部114は、キャリブレーションを行うための情報の入力を案内する「キャリブレーション用ガイド画面」としてのキャリブレーション作成画面73を「表示部」としての表示装置41に表示させる。これにより、ユーザーは、キャリブレーション作成画面73に表示された内容に従って、情報(設定内容)を選択することで、複雑な操作が無く簡単かつ手軽にキャリブレーションの設定を完了することができる。そのため、初心者であっても、容易にキャリブレーションの設定を行うことができる。
また、本実施形態の制御システム10は、前述したように、入力を受け付ける「受付部」としての入力装置42を有する。そして、表示制御部114は、入力装置42で受け付けた入力に基づいて、複数の「キャリブレーション用ガイド画面」としてのキャリブレーション作成画面73を順次「表示部」としての表示装置41に表示させる。本実施形態では、表示制御部114は、複数(本実施形態では10個)のローカル設定画面72をユーザーとの対話形式で表示させるローカル設定用の画面群を表示させる。これにより、ユーザーは、順次表示されるキャリブレーション作成画面(ウィザード画面)73に従って、対話形式(ウィザード形式)で情報(設定内容)を選択していくことができる。このように、ユーザーは、所定の順序に沿って、対話形式で設定内容を選択することができるため、複雑な操作がなく簡単かつ手軽にキャリブレーションの設定を完了することができる。そのため、入力ミスや入力不足等が生じることを低減することができる。また、従来のように各種設定をプログラミングする手間を省くことができる。また、キャリブレーション作成において必要な設定内容のみが限定的に表示されることで、初心者であってもキャリブレーション作成に必要な設定内容の設定不足が生じることを低減できる。そのため、キャリブレーションの実行において例えばエラー等が生じることを低減できる。
なお、上述したように、キャリブレーション作成用の画面群は、10個のキャリブレーション作成画面73を有していたが、キャリブレーション作成画面73の数はこれに限定されない。他のキャリブレーション作成画面がさらに加わっていてもよいし、10個のキャリブレーション作成画面73のうちのいずれかが省略されていてもよい。また、10個のキャリブレーション作成画面73が表示される順序は、上述した順序に限定されず、任意である。ただし、後に表示されるキャリブレーション作成画面73の表示内容が、先に表示されたキャリブレーション作成画面73の選択内容に応じて変わることが好ましい。すなわち、後に表示されるキャリブレーション作成画面73の表示内容は、先に表示されたキャリブレーション作成画面73の選択内容に応じた限定的な内容であることが好ましい。特に、上述した10個のキャリブレーション作成画面73が、説明した通りの順番で表示されることで、ユーザーは、設定内容を特に把握し易いため、ユーザーにとっての利便性を高めることができる。
ここで、上述したように、制御システム10は、「入力部」としての入力装置42の入力に基づいて、ロボット2、撮像部3および「表示部」としての表示装置41の駆動を制御可能な「制御装置」である。また、制御システム10は、上述したように、制御対象であるロボット2を入力するための「入力画面」としてのキャリブレーション作成画面73bを表示装置41に表示させ、入力されたロボット2(例えばロボット2a)に対応する撮像部3の取付位置(設置位置)の入力を案内する「撮像部入力部」としてのグループ(領域)7323を表示装置41に表示させる表示制御部114と、入力された撮像部3の取付位置に基づいて、ロボット2の座標系(ロボット座標系)と撮像部3の座標系(画像座標系)とを対応付けるキャリブレーションを行う「キャリブレーション制御部」としてのキャリブレーション作成部1113およびキャリブレーション実行部1114と、を備える。すなわち、上述したキャリブレーションの各処理(ステップS51~S54)は、制御部111のキャリブレーション作成部1113およびキャリブレーション実行部1114が主に行う。
このような制御システム10によれば、表示装置41に、入力(選択)されたロボット2に対応する撮像部3の取付位置が表示される。すなわち、入力されたロボット2aに対応していない撮像部3の取付位置は非表示となる。例えば、上述したように、キャリブレーション作成画面73bのグループ7323には、ドロップダウンリスト7322を用いて選択されたロボット2に対応する撮像部3の取付位置のみが表示され、対応していない撮像部3の取付位置は非表示となる。これにより、ユーザーは、入力したロボット2に対応する撮像部3の取付位置の選択を簡単に行うことができる。その結果、キャリブレーションを行うための各種設定を簡単にかつ適切に行うことができる。
ここで、「入力」は、「選択」を含む。また、ロボット2の入力では、例えば、キーボード等でユーザーがロボット2を入力してもよく、また、ロボット2を選択してもよい。
特に、上述したように、表示制御部114は、「入力画面」としてのキャリブレーション作成画面73bに、垂直多関節ロボットおよび水平多関節ロボットを表示させることが可能であり、「撮像部入力部」としてのグループ(領域)7323の表示形態は、「垂直多関節ロボット」の一例としてのロボット2aが入力された場合と、「水平多関節ロボット」の一例としてのロボット2bが入力された場合とで異なる。これにより、ロボット2aに対応する撮像部3の取付位置の選択およびロボット2bに対応する撮像部3の取付位置の選択のそれぞれを簡単に行うことができる。また、制御システム10(制御システム10にインストールされたアプリケーションソフト)によれば、ロボット2aおよびロボット2bのそれぞれに対応した制御システム(アプリケーションソフト)を用意することなく、1つの制御システム(1つのアプリケーションソフト)10で、複数種のロボット2に関するキャリブレーションを行うことができ、利便性に優れている。
また、上述したように、表示制御部114は、「キャリブレーション用ガイド画面」としてのキャリブレーション作成画面73dの中に、ロボット2の座標系(ロボット座標系)とは異なるローカル座標系を設定するための情報の入力を案内する「ローカル設定用ガイド画面」としてのローカル設定画面72を呼び出すための「ローカル設定呼出部」としてのローカルウィザードボタン7341を表示させる。これにより、ユーザーは、ローカルウィザードボタン7341を介してローカル設定画面72を呼び出す操作指示を行うことで(クリック又はタッチすることで)、ローカル設定画面72を簡単に呼び出すことができる。そのため、例えば、ローカル設定を行うためにキャリブレーション作成画面73による設定を一度キャンセルし、ローカル設定を行った後に、再度キャリブレーションの設定を始めから行い直すという手間を省くことができる。それゆえ、ユーザーの手間を大幅に省くことができる。
特に、本実施形態では、表示制御部114は、入力制御部115で受け付けたローカルウィザードボタン7341に対する操作指示に基づいて、複数のローカル設定画面72を順次表示装置41に表示させる。これにより、ユーザーは、順次表示されるローカル設定画面72に従って、対話形式で情報(設定内容)を選択していくことで、複雑な操作が無く簡単かつ手軽にローカル設定を行うことができる。
また、上述したように、表示制御部114は、「キャリブレーション用ガイド画面」としてのキャリブレーション作成画面73eの中に、ロボット2に取り付けられたツール(例えば、ワーク93)のオフセットを求めるための情報(オフセットを求めるためのツール設定のための情報)の入力を案内する「ツール設定用ガイド画面」としてのツール設定画面71を呼び出すための「ツール設定呼出部」としてのツールウィザードボタン7351を表示させる。これにより、ユーザーは、ツールウィザードボタン7351を介してツール設定画面71を呼び出す指示を行うことで、ツール設定画面71を簡単に呼び出すことができる。そのため、例えば、ツール設定を行うためにキャリブレーション作成画面73による設定を一度キャンセルし、ツール設定を行った後に、再度キャリブレーションの設定を始めから行い直すという手間を省くことができる。それゆえ、ユーザーの手間を大幅に省くことができる。
特に、本実施形態では、表示制御部114は、入力制御部115で受け付けたツールウィザードボタン7351に対する操作指示に基づいて、複数のツール設定画面71を順次表示装置41に表示させる。これにより、ユーザーは、順次表示されるツール設定画面71に従って、対話形式で情報(設定内容)を選択していくことで、複雑な操作が無く簡単かつ手軽にツール設定を行うことができる。
また、上述したように、表示制御部114は、「キャリブレーション用ガイド画面」としてのキャリブレーション作成画面73fの中に、キャリブレーションで用いる「キャリブレーションポイント」としてのカメラポイントの自動生成を行うか否かを選択するための「キャリブレーションポイント選択部」としてのチェックボックス7361を表示させる。これにより、ユーザーは、チェックボックス7361を介して簡単に、かつ、ユーザーの目的に応じて、カメラポイントの自動生成を行うか否かを選択することができる。例えば、カメラポイントの自動生成を行うことで、ユーザーは、複数のカメラポイントの設定を行う手間を軽減することができる。一方、例えば、ロボットアーム20が駆動範囲が限定されている場合には、カメラポイントの自動生成を行わないことも有効である。カメラポイントの自動生成を行わないことで、ユーザーは、ロボットアーム20が周辺機器と干渉しない領域で各カメラポイントの設定を行うことができる。このように、キャリブレーション作成画面73fがチェックボックス7361を有することで、ユーザーの目的に応じた設定を簡単に行うことができる。
また、上述したように、表示制御部114は、「キャリブレーション用ガイド画面」としてのキャリブレーション作成画面73gの中に、ロボット2の所定部位(例えば、ツールセンターポイントP)の「キャリブレーションポイント」としてのカメラポイントへの移動の基点となるアプローチポイントの自動生成を行うか否かを選択するための「アプローチポイント選択部」としてのチェックボックス7372を表示させる。これにより、ユーザーは、チェックボックス7372を介した操作指示を行うことで、簡単に、かつ、ユーザーの目的に応じて、アプローチポイントの自動生成を行うか否かを選択することができる。例えば、アプローチポイントの自動生成を行うことで、ロボット2は、常にアプローチポイントからカメラポイントへと移動するため、ロボット2のカメラポイントでの位置の安定性を高めることができる。その結果、キャリブレーション結果の精度をより高めることができる。一方、アプローチポイントの自動生成を行わない場合は、キャリブレーションの実行をより迅速に行うことができる。このように、キャリブレーション作成画面73gがチェックボックス7372を有することで、ユーザーの目的に応じた設定を簡単に行うことができる。
特に、上述したように、処理部110は、「表示部」としての表示装置41の駆動を制御する表示制御部114を有し、表示制御部114は、キャリブレーションに関する設定内容の入力を案内する「キャリブレーション用ガイド画面」としてのキャリブレーション作成画面73cに、画像処理シーケンス作成部1115により作成された単数もしくは複数の画像処理シーケンスを呼び出す(表示させる)。本実施形態では、表示制御部114は、キャリブレーション作成画面73cのドロップダウンリスト733に、作成された(既存の)複数の画像処理シーケンスを表示させる。これにより、ユーザーは、ドロップダウンリスト733を介して複数の画像処理シーケンスから所望の画像処理シーケンスを選択することができる。すなわち、キャリブレーション作成画面73を用いたキャリブレーションの設定の中で、ユーザーが作成した既存の画像処理シーケンスを表示することができる。そのため、例えば、複数のキャリブレーションの設定をしたい場合、各キャリブレーションの設定において画像処理シーケンスの作成を行う手間を省くことができるので、キャリブレーションの設定の度に毎回画像処理シーケンスを作成することを省くことができる。その結果、キャリブレーションの設定が簡便になり、ユーザーの使い勝手を大きく向上させることができる。
また、上述したように、本実施形態では、図39に示すプロパティー設定ウィンドウ60のリスト57においても、所望の画像処理シーケンスを選択(変更)することができる。そのため、複数のキャリブレーション作成画面73を用いたキャリブレーション作成を行った後でも、ユーザーは、キャリブレーションにおける画像処理シーケンスを変更することができる。
このように、制御システム10は、ロボット2および撮像部3の駆動を制御可能な「制御装置」であって、撮像部3で撮像した撮像画像(画像データ)の画像処理を含む画像処理シーケンスに関する設定内容を作成する画像処理シーケンス作成部1115と、ロボット2の座標系(ロボット座標系)と撮像部3の座標系(画像座標系)とを対応付けるキャリブレーションに関する設定内容を作成するキャリブレーション作成部1113と、を有する処理部110を備え、処理部110は、キャリブレーション作成部1113によるキャリブレーションに関する設定内容の作成(キャリブレーション作成)において(に際し)、画像処理シーケンス作成部1115により作成された画像処理シーケンスを呼び出すことが可能である。このような制御システム10によれば、複数のキャリブレーションを行いたい場合、各キャリブレーションの設定において既存の(作成された)画像処理シーケンスを呼び出すことができるので、キャリブレーションの設定の度に画像処理シーケンスを作成する手間を省くことができる。そのため、キャリブレーションの設定にかかる時間および労力を低減することができる。また、後述するコマンドを用いた処理においても、作成された画像処理シーケンスを呼び出すことができる。なお、本明細書において、「画像処理シーケンスを呼び出す」とは、表示部に表示させることと、制御プログラム中で画像処理シーケンスを実行可能にすることとを含む。
また、処理部110は、「表示部」としての表示装置41の駆動を制御する表示制御部114を有し、表示制御部114は、キャリブレーションに関する設定内容の作成がなされているキャリブレーション設定と画像処理シーケンスに関する設定内容の作成がなされている画像処理シーケンス設定とを同一の「画面」としてのプロパティー設定ウィンドウ60で表示装置41に表示させる(図39および図42の閲覧部63参照)。これにより、ユーザーは、既存のキャリブレーション設定と、既存の画像処理シーケンス設定とを一目で把握することができる。
特に、表示制御部114は、キャリブレーション設定および画像処理シーケンス設定をツリー表示させる(図39および図42の閲覧部63参照)。これにより、ユーザーは、既存のキャリブレーション設定の種類や数と、既存の画像処理シーケンス設定の種類や数とを一目で把握することができる。
さらに、表示制御部114は、互いに関連のあるキャリブレーション設定と画像処理シーケンス設定とを表示させる(図39および図42の閲覧部63参照)。これにより、ユーザーは、関連付けられたキャリブレーション設定および画像処理シーケンス設定を把握し易い。そのため、必要に応じて、キャリブレーション設定および画像処理シーケンス設定の少なくとも一方の修正等を行い易い。
次に、画像処理シーケンス(ビジョン処理シーケンス)の作成について説明する。
<画像処理シーケンスの作成>
図44は、図8に示す画像処理シーケンスの作成における表示処理の流れを示すフロー図である。図45は、図1に示す表示装置に表示されるサブウィンドウを示す図である。図46~図50は、それぞれ、図1に示す表示装置に表示されるリストを示す図である。図51~図53は、それぞれ、図1に示す表示装置に表示されるサブウィンドウにおけるガイド画面である。図54および図55は、それぞれ、図1に示す表示装置に表示されるサブウィンドウであって、図45とは異なる表示を示す図である。
なお、以下では、説明の便宜上、図45~図55中の上側を「上」、下側を「下」と言う。
画像処理シーケンスの作成においては、画像処理シーケンスの項目の入力と、画像処理シーケンスへの画像処理オブジェクトの追加と、画像処理シーケンスの実行と、画像処理シーケンスの実行結果(検出結果)の反映とが順次実行される。画像処理シーケンスの項目の入力と、画像処理シーケンスへの画像処理オブジェクトの追加とを行うことで、画像処理シーケンスの各種設定を行い、マーカー等のターゲットを検出するための画像検出(画像処理)が実現される。以下、画像処理シーケンスの作成について説明する。
(画像処理シーケンスの項目の入力)
画像処理シーケンスの作成に当たり、画像処理シーケンスの項目を入力する。
ユーザーは、図17に示すメインウィンドウ50において、アイコン601に対する操作指示を行う。そして、コンピューター11の入力制御部(受付部)115がユーザーによるアイコン601に対する操作指示(画像処理シーケンス作成指示)を受けると(ステップS611)、画像処理シーケンス作成部1115は、サブウィンドウ61の出力命令(指示)を行い(ステップS612)、表示制御部114は、図17に示すメインウィンドウ50において、ロボット操作用のサブウィンドウ51に換えて、図45に示すサブウィンドウ61を表示装置(表示部)41に表示させる。
図45に示すように、サブウィンドウ61には、閲覧部63と、フローチャート表示部62と、2つのタブ56,56と、リスト57と、画像イメージ表示部612と、画像処理シーケンスの作成用の画面群を表示させるために用いられるアイコン671と、ウィザード選択用のアイコン672と、ツールバー615とが表示される。ツールバー615は、「検出」、「カウント」、「検査」、「画像」、「読み取り」、および「全ツール」を示すアイコンで構成されている。
次に、ユーザーは、表示装置41に表示されている図45に示すサブウィンドウ61において、アイコン671に対する操作指示を行う。そして、入力制御部115がユーザーによるアイコン671に対する操作指示を受けると、表示制御部114は、ダイアログボックス663を表示装置41に表示させる。
次に、ユーザーは、サブウィンドウ61において、ダイアログボックス663を用いて、例えば、「シーケンス名」、「シーケンスで使用するカメラ」、「コピー元のシーケンス」等の各項目のうちの必要な項目を入力する(操作指示を行う)。「コピー元のシーケンス」については、既存の画像処理シーケンスをコピーする場合に入力(指定)する。
コンピューター11の入力制御部115がユーザーによる操作指示を受けると、画像処理シーケンス作成部1115は、画像処理シーケンスの作成を開始する。
この段階で、画像処理シーケンスは、途中まで作成されたこととなる。また、コピー元の画像処理シーケンスが指定されると、コピー元の画像処理シーケンスの設定がコピーされる。そのため、サブウィンドウ61、ガイド画面65等には、コピー元の画像処理シーケンスの設定内容が表示される。したがって、ユーザーは、既に設定された画像処理シーケンスの各種内容を少し変更した画像処理シーケンスを作成したい場合に、コピー元の画像処理シーケンスを指定することで、簡単に作成することができる。
ここで、フローチャート表示部62には、フローチャートが表示される。このフローチャートの先頭(最上部)の表示部621には、現在選択されているシーケンスが表示される。また、フローチャートの2番目の表示部622(図54参照)およびそれ以降の表示部(図示せず)には、現在選択されている画像処理シーケンスに含まれる画像処理オブジェクトが表示される。
また、閲覧部63には、画像処理シーケンスに関する設定内容の作成がなされている画像処理シーケンス設定と、キャリブレーションに関する設定内容の作成がなされているキャリブレーション設定とが、それぞれ、ツリー表示される。これにより、ユーザーは、キャリブレーション設定の種類や数と、画像処理シーケンス設定の種類や数とを一目で把握することができる。
また、閲覧部63には、互いに関連のある画像処理シーケンス設定とキャリブレーション設定とが表示される。また、本実施形態では、画像処理シーケンス設定は、閲覧部63の上側に表示され、キャリブレーション設定は、画像処理シーケンス設定の下側に表示される。
また、画像処理シーケンス設定のツリーには、作成(設定)がなされているすべてのシーケンスが表示され、キャリブレーション設定のツリーには、作成(設定)がなされているすべてのキャリブレーションが表示される。
また、入力制御部115がユーザーによる、画像処理シーケンス(画像処理シーケンスの作成)についてのフローチャートの「シーケンス」又はツリーの「シーケンス」に対する操作指示を受けると、表示制御部114は、リスト(シーケンスウィンドウ)57を表示装置41に表示させる。リスト57には、例えば、画像処理シーケンスについてのプロパティー、画像処理シーケンスの実行結果等が表示される。また、リスト57を使用して、画像処理シーケンスについてのプロパティーの設定等を行うことが可能である。
また、入力制御部115がユーザーによる、画像処理シーケンスについてのフローチャートの「オブジェクト」又はツリーの「オブジェクト」に対する操作指示を受けると、表示制御部114は、リスト(オブジェクトウィンドウ)57を表示装置41に表示させる。リスト57には、例えば、画像処理オブジェクトについてのプロパティー、画像処理オブジェクト又は画像処理シーケンスを実行したときの画像処理オブジェクトの実行結果等が表示される。また、リスト57を使用して、画像処理オブジェクトについてのプロパティーの設定等を行うことが可能である。
また、入力制御部115がユーザーによる、キャリブレーションについてのツリーに対する操作指示を受けると、表示制御部114は、リスト(キャリブレーションウィンドウ)57を表示装置41に表示させる。リスト57には、例えば、キャリブレーションの設定、キャリブレーションの実行結果等が表示される。なお、リスト57を使用してキャリブレーションのプロパティーの設定等を行うことが可能になるようにしてもよい。
(画像処理シーケンスへの画像処理オブジェクトの追加)
画像処理シーケンスにおける画像処理を指定するために、画像処理シーケンスに所定の画像処理オブジェクトを追加する。
この場合、画像処理オブジェクトを追加する方法として2つの方法、すなわち、ツールバー615を用いる方法(第1の方法)と、情報の入力を案内するガイド画面を用いる方法(第2の方法)、すなわち、画像処理選択ウィザード(ステップウィザード)を用いる方法とがある。
まず、第1の方法について説明する。
第1の方法は、ツールバー615を用いて画像処理オブジェクトを追加する方法である。
第1の方法を用いる場合は、ユーザーは、表示装置41に表示されている図45に示すサブウィンドウにおいて、アイコン672に対する操作指示を行わない。そして、入力制御部115がユーザーによるアイコン672に対する操作指示を受けない場合、すなわち、後述するユーザーによるツールバー615の複数のツールバーアイテムのうちから所定のツールバーアイテムを選択する指示を受けた場合は、画像処理シーケンス作成部1115は、第1の方法を実行する。すなわち、画像処理シーケンス作成部1115は、画像処理選択ウィザードを使用するか否かを判断し(ステップS613)、画像処理選択ウィザードを使用しないと判断した場合は、第1の方法を実行する。
第1の方法では、まず、ユーザーは、画像処理(画像検出)の種類(操作のタイプ)を示す画像処理ガイドのメニュー(ツールバー615の複数のツールバーアイテム)から所定の画像処理の種類を選択し、次に、その選択した画像処理の種類における複数の画像処理オブジェクトから所定の画像処理オブジェクト(画像処理に関する機能)を選択する。
具体的には、まず、ユーザーは、サブウィンドウ61におけるツールバー615の複数のツールバーアイテムのうちから所定のツールバーアイテムを選択する操作を行う。そして、入力制御部115がユーザーによる所定のツールバーアイテムに対する操作指示(画像処理の種類の選択)を受けると(ステップS621)、画像処理シーケンス作成部1115は、選択された種類に応じたリスト6540の出力命令を行う(ステップS622)。表示制御部114は、その出力命令を受け、図46、図47、図48、図49、および図50に示す対応するリスト6540を表示装置41に表示させる。このリスト6540に挙げられている各項目(文字列6542で示す)が画像処理オブジェクトの具体例である。
「検出」が選択された場合は、図46に示すリスト6540が表示装置41に表示される。また、「カウント」が選択された場合は、図47に示すリスト6540が表示装置41に表示される。また、「画像」が選択された場合は、図48に示すリスト6540が表示装置41に表示される。また、「読み取り」が選択された場合は、図49に示すリスト6540が表示装置41に表示される。また、「全ツール」が選択された場合は、図50に示すリスト6540が表示装置41に表示される。
各リスト6540には、それぞれ、アイコン6541と文字列6542とを対応付けてなるアイテムが表示される。一例を挙げると、「検出」が選択された場合、リスト6540には、例えば、「Geometric」の文字列6542と、所定の図形からなるアイコン6541とが対応付けられて表示される。
ユーザーは、各リスト6540のうちの必要なリスト6540を用いて、所定のアイコン6541と文字列6542とを対応付けてなるアイテムを選択(指定)することで、そのアイテムに対応する画像処理オブジェクトを追加する操作を行う。そして、入力制御部115がユーザーによる操作指示(画像処理オブジェクトの選択)を受けると(ステップS623)、画像処理シーケンス作成部1115は、現在の画像処理シーケンスに指定された画像処理オブジェクトを追加する。以上で、画像処理シーケンスの設定が完了する。なお、画像処理オブジェクトを追加する工程において、例えば、マーカー(マーク)680のモデル登録(ティーチング)等が行われる(図54及び図55参照)。
次に、第2の方法について説明する。
第2の方法は、画像処理選択ウィザード(ステップウィザード)を用いて画像処理オブジェクトを追加する方法である。画像処理(画像検出)の種類としては、例えば、検出、カウント、検査、読み取り、画像処理(画像)、全ツール等が挙げられる。
第2の方法を用いる場合は、ユーザーは、サブウィンドウ61において、アイコン672に対する操作指示を行う。そして、入力制御部115がユーザーによるアイコン672に対する操作指示を受けると、画像処理シーケンス作成部1115は、第2の方法を実行する。すなわち、画像処理シーケンス作成部1115は、画像処理選択ウィザードを使用するか否かを判断し(ステップS613)、画像処理選択ウィザードを使用すると判断した場合は、第2の方法を実行する。
第2の方法では、まず、画像処理シーケンス作成部1115は、1個目のガイド画面の出力命令を行い(ステップS614)、表示制御部114は、図51に示すガイド画面65(ウィンドウ)を表示装置41の画像イメージ表示部612に表示させる。ガイド画面65には、ボックス651が表示される。このボックス651には、画像処理の種類(操作のタイプ)が表示され、ボックス651で、画像処理の種類を選択することが可能である。画像処理の種類は、第1の方法と同様である。
また、ガイド画面65の下部には、「キャンセル」と表示されたボタン(アイコン)6501、「戻る(B)」と表示されたボタン(アイコン)6502、「次へ(N)>」と表示されたボタン(アイコン)6503、「完了(F)」と表示されたボタン6504(アイコン)が表示される。本実施形態では、ボタン6501,6502,6503,6504のうち、ボタン6501,6503に対して、操作指示(選択)が可能になっている。
ユーザーは、複数の画像処理の種類のうちから所定の画像処理の種類を選択するが、以下では、代表的に、「検出」を選択した場合について説明する。
入力制御部115がユーザーによる『「検出」、「パーツの座標値を設定します。」』のアイテム6511を選択する操作指示(画像処理の種類の選択)を受けると(ステップS615)、表示制御部114は、ボックス651のうち、その選択されたアイテム6511の部分の色を他の部分の色と異なる色に変更する。
次に、入力制御部115がユーザーによる「次へ(N)>」と表示されたボタン6503に対する操作指示を受けると、画像処理シーケンス作成部1115は、2個目のガイド画面の出力命令を行い(ステップS616)、表示制御部114は、図52に示すガイド画面65を表示装置41の画像イメージ表示部612に表示させる。ガイド画面65には、ボックス652が表示される。このボックス652には、パーツ検出ツールのタイプ(画像処理オブジェクト)が表示され、ボックス652で、パーツ検出ツールのタイプを選択することが可能である。パーツ検出ツールのタイプは、第1の方法における「検出」のリスト6540の項目と同様である。すなわち、各リスト6540の画像処理オブジェクトは、それぞれ、第2の方法と同様である。
また、本実施形態では、ボタン6501,6502,6503,6504のうち、ボタン6501,6502,6503に対して、操作指示(選択)が可能になっている。
ユーザーは、複数のパーツ検出ツールのタイプのうちから所定のパーツ検出ツールのタイプを選択するが、以下では、代表的に、「Geometric」を選択した場合について説明する。
入力制御部115がユーザーによる『「Geometric」、「エッジベースの幾何学的モデルを用いて、パーツを検出します。」』のアイテム6521を選択する操作指示(画像処理オブジェクトの選択)を受けると(ステップS617)、表示制御部114は、ボックス652のうち、その選択されたアイテム6521の部分の色を他の部分の色と異なる色に変更する。
次に、入力制御部115がユーザーによる「次へ(N)>」と表示されたボタン6503に対する操作指示を受けると、画像処理シーケンス作成部1115は、3個目のガイド画面の出力命令を行い(ステップS618)、表示制御部114は、図53に示すガイド画面65を表示装置41の画像イメージ表示部612に表示させる。ガイド画面65には、入力ダイアログが設けられたウィンドウ653が表示される。このウィンドウ653では、新しいステップを設定することが可能である。
このようにして、表示制御部114は、入力制御部115で受け付けた入力に基づいて、3つのガイド画面65をユーザーとの対話形式で順次表示装置41に表示させる。これにより、ユーザーは、順次表示されるガイド画面65に従って、対話形式で情報(項目)を選択していくことで、複雑な操作がなく、簡単、手軽、かつ迅速に画像処理オブジェクトを追加する作業を行うことができる。
また、本実施形態では、ボタン6501,6502,6503,6504のうち、ボタン6501,6502,6504に対して、操作指示(選択)が可能になっている。
ユーザーは、「新しいステップの名前を入力」の入力ダイアログに、所定の名前を記載し、挿入場所を指定する操作を行う。
次に、入力制御部115がユーザーによる「完了(F)」と表示されたボタン6504に対する操作指示(画像処理オブジェクトの追加完了指示)を受けると(ステップS619)、画像処理シーケンス作成部1115は、現在の画像処理シーケンスに指定された画像処理オブジェクトを追加する。
画像処理シーケンスへの画像処理オブジェクトの追加が完了すると、画像処理シーケンス作成部1115は、追加された画像処理オブジェクトの表示の出力命令を行い(ステップS620)、表示制御部114は、閲覧部63に表示されている画像処理シーケンスのツリー、フローチャート表示部62に表示されているフローチャートに、それぞれ、追加された画像処理オブジェクトを表示させる。
ここで、前述したように、画像処理シーケンスは、少なくとも1つの画像処理オブジェクトを有している。表示制御部114は、画像処理オブジェクトを表示させることが可能であり、ティーチングがなされていない場合の画像処理オブジェクトの表示形態とティーチングがなされている場合の画像処理オブジェクトの表示形態とは異なっている。
これにより、ユーザーは、一目で、画像処理オブジェクトがティーチングされたか否かを把握することができる。以下、具体的に説明する。
画像処理シーケンス作成部1115は、追加された画像処理オブジェクトについてティーチング(教示)が行われているか否かを判断し(ステップS624)、ティーチングが行われていない(未ティーチング)と判断した場合は、未ティーチングの表示の出力命令を行う(ステップS625)。そして、表示制御部114は、追加された未ティーチングの画像処理オブジェクトに対して未ティーチングの表示を行う。すなわち、フローチャートの未ティーチングの部分の表示態様をティーチング済んでいる部分と異なるようにする。本実施形態では、フローチャートの未ティーチングの部分に「!」のアイコン6221を表示させる。これにより、ユーザーは、未ティーチングの画像処理オブジェクトを一目で判別することができる。
なお、「!」のアイコン6221の表示に換えて、又は、「!」のアイコン6221の表示とともに、フローチャートの未ティーチングの部分の色、例えば、背景色をティーチングが済んでいる部分と異ならせるようにしてもよい。
ユーザーは、追加された画像処理オブジェクトが未ティーチングの場合、すなわち、ティーチングが必要な場合は、追加された画像処理オブジェクトについて、「ティーチ」と表示されたボタン(アイコン)614に対する操作指示を行って、所定のティーチングを行う。
入力制御部115がユーザーによるボタン614に対する操作指示を受け、追加された未ティーチングの画像処理オブジェクトについて、指示されたティーチングが完了すると、画像処理シーケンス作成部1115は、完了したティーチングの内容を追加する。これにより、追加された画像処理オブジェクトが実行可能になる。以上で、画像処理シーケンスの設定が完了する。
なお、ティーチングの一例としては、「Geometricサーチ」の場合、マーカー680のモデル登録等が挙げられる。
画像処理シーケンス作成部1115は、ステップS624において、ティーチングが行われている(ティーチング済み)と判断した場合は、ティーチング済みの表示の出力命令を行う(ステップS626)。そして、表示制御部114は、追加された未ティーチングの画像処理オブジェクトに対してティーチング済みの表示を行う。本実施形態では、フローチャートに表示されている「!」のアイコン6221を消去する(図55参照)。これにより、ユーザーは、未ティーチングであった画像処理オブジェクトのティーチングが済んだことを一目で判別することができる。
(画像処理シーケンスの実行)
画像処理シーケンス(画像処理シーケンスの作成)は、撮像部3で撮像された画像に基づいて検査する工程を含んでいる。
これにより、画像処理シーケンスにより、撮像部3で撮像された対象物を検査することができる。以下、具体的に説明する。
まず、入力制御部115がユーザーによる「画像処理シーケンスの実行」の操作指示(画像処理シーケンスの実行命令)を受けると(ステップS627)、まず、画像処理シーケンス作成部1115は、画像処理シーケンスの設定内容を画像処理装置13に送信する。この場合、ロボット制御装置12が中継してもよく、また、中継しなくてもよい。
次に、画像処理装置13は、画像処理シーケンスの設定内容を受信する。そして、画像処理シーケンス実行部1311は、画像処理シーケンスの設定内容を反映する。
次に、画像処理シーケンス作成部1115は、画像処理シーケンスを実行させる画像処理シーケンス実行命令を画像処理装置13に送信する。この場合、ロボット制御装置12が中継してもよく、また、中継しなくてもよい。
次に、画像処理装置13は、画像処理シーケンス実行命令を受信する。そして、画像処理シーケンス実行部1311は、画像処理シーケンスを実行する。
この場合、まず、撮像部制御部1313の制御により、撮像部3を駆動する。撮像部3は、例えば、マーカー等の所定の対象物を撮像し、撮像画像の画像データを画像処理装置13に送信する。次に、画像処理装置13は、画像データを受信する。そして、画像処理部1312は、画像データに基づいて所定の画像処理を行う。
具体例としては、例えば、対象物の一例として、図54に示すマーカー(幾何学的モデル:図形)680を撮像し、そのマーカー680の画像認識等の種々の画像処理を行う。また、マーカー680を用いた検査の一部又は全部を行う。すなわち、画像処理シーケンスの作成には、対象物の一例であるマーカー680を用いた検査を行う工程(検査工程)が含まれている。
本実施形態では、第1画像処理シーケンスの作成の場合は、モバイルカメラ31によりワーク93の上面中心に付されたマーカー680を撮像し、所定の処理を行う。前記処理としては、例えば、検出精度の確認等が挙げられる。
また、第2画像処理シーケンスの作成の場合は、固定カメラ32によりワーク93の下面中心に付されたマーカー680を撮像し、所定の処理を行う。
また、第3画像処理シーケンスの作成の場合は、固定カメラ32によりワーク93の下面に付された2つのマーク(図示せず)、例えば、マーカー680を2つ、所定間隔で配置してなるもの(対象物)を撮像し、所定の処理を行う。前記処理としては、例えば、第3画像処理シーケンスと固定カメラ32のキャリブレーション結果との関連付け、検査等が挙げられる。
また、検査の具体例としては、A点とB点との間の距離が所定閾値内であるか否かの検査等が挙げられる。この場合、2つのマーカー680は、前記A点とB点との間の距離が所定閾値内であるか否かの検査におけるA点およびB点に相当する。この検査では、固定カメラ32のキャリブレーションの結果と撮像画像とに基づいて、A点とB点との間の距離を計測し、計測されたA点とB点との間の距離が所定閾値内であるか否かを判断する。そして、計測されたA点とB点との間の距離が所定閾値内であれば、「合格」と判定し、所定閾値内でなければ(所定閾値外であれば)、不合格と判定する。
(画像処理シーケンスの実行結果(検出結果)の反映)
通信部116は、画像処理装置13から送信される画像処理シーケンスの実行結果(検出結果)を受信し(ステップS628)、コンピューター11は、その画像処理シーケンスの実行結果を反映する。
具体的には、まず、画像処理シーケンス作成部1115は、画像処理シーケンスの実行結果を送信させる画像処理シーケンス実行結果送信命令を画像処理装置13に送信する。この場合、ロボット制御装置12が中継してもよく、また、中継しなくてもよい。
次に、画像処理装置13は、画像処理シーケンスの実行結果をコンピューター11に送信する。この場合、ロボット制御装置12が中継してもよく、また、中継しなくてもよい。
次に、コンピューター11は、通信部116により、画像処理シーケンスの実行結果を受信する。そして、画像処理シーケンス作成部1115は、画像処理シーケンスの実行結果を反映する。
すなわち、画像処理シーケンス作成部1115は、画像処理シーケンスの実行結果に関する表示等の出力命令を行い(ステップS629)、表示制御部114は、画像処理シーケンスの実行結果を表示装置41に表示させる(表示に反映される)。また、画像処理シーケンスの実行結果は、プロパティー等にも反映される。画像処理シーケンスの実行結果としては、例えば、マーカーが検出された画像座標等が挙げられる。
なお、画像処理シーケンスの作成では、モバイルカメラ31、固定カメラ32等の歪み補正を設定するウィンドウや、撮像の際の照明条件を設定するウィンドウを設けてもよい。
次に、コマンドを用いたツール設定、ローカル設定、キャリブレーション、および画像処理シーケンスの作成等の処理について説明する。
まず、概要について、特許請求の範囲に対応させて簡単に説明し、その後で詳細に説明する。
処理部110は、ロボット2を駆動する制御プログラムを作成可能な制御プログラム作成部1111を有している。制御プログラム作成部1111は、制御プログラムの中に、作成された画像処理シーケンスを呼び出す命令(本実施形態では、コマンドの引数)を挿入することが可能である。
これにより、例えば、ロボット2に所定の動作をさせて、所定の作業を行わせる制御プログラムの中で、既存の(作成された)画像処理シーケンスを呼び出すことができる。そのため、制御プログラムを作成する度に画像処理シーケンスを作成する手間を省くことができる。
また、制御システム(制御装置)10のロボット制御装置12は、ロボット2を駆動する制御プログラムを実行可能な制御プログラム実行部1211を備えている。制御プログラム実行部1211は、ロボット2の座標系とは異なるローカル座標系を設定可能なコマンドにより、ローカル座標系の設定を実行する。
これにより、ローカル座標系の設定をより迅速に行うことができる。また、キャリブレーションを定期的に繰り返し実行したり、キャリブレーションを実行した後、その実行結果を基にして、ローカル座標系の設定等を含むキャリブレーションの各種設定を修正することを複数回繰り返す場合には、コマンドを用いることが特に有効である。実行結果を基にした修正を容易かつ迅速に行うことができるためである。
また、制御プログラム実行部1211は、ロボット2に取り付けられたツールのオフセットを求めるツール設定可能なコマンドの一例である「コマンドVDefTool」により、当該ツール設定を実行する。
これにより、ツール設定をより迅速に行うことができる。また、キャリブレーションを定期的に繰り返し実行したり、キャリブレーションを実行した後、その実行結果を基にして、ツール設定等を含むキャリブレーションの各種設定を修正することを複数回繰り返す場合には、コマンドを用いることが特に有効である。実行結果を基にした修正を容易かつ迅速に行うことができるためである。以下、具体的に説明する。
<コマンドを用いた処理>
制御システム10は、上述した各種操作画面を用いた表示処理の代わりに、コマンドを用いた処理を行うことができる。
コマンドは、目的の処理を実行するための動作命令を含む。例えば、コマンドとしては、画像処理シーケンスの実行結果を用いてツール設定を行う(オフセットを算出する)ためのツール設定用の処理コマンド、画像処理シーケンスの実行結果を用いてローカル設定を行うためのローカル設定用の処理コマンド、画像処理シーケンスの実行結果を用いてキャリブレーションを行うためのキャリブレーション用の処理コマンド、画像処理シーケンスの実行結果を用いて撮像部3の撮像画像内の例えばターゲットが所定の位置へ移動するようにロボットアーム20を駆動させるためのコマンド等が挙げられる。
また、コマンドは、例えば、パラメーターを指定する引数を有している。
なお、以下では、代表的に、ツール設定を例に挙げて説明するが、ローカル設定、キャリブレーション、および画像処理シーケンスの作成についても同様に行うことができる。
(プログラム作成、入力)
ユーザーは、コマンドを用いてプログラムを作成し、入力装置42を用いてコンピューター11に入力する(作成しつつ、入力する)。コンピューター11の入力制御部(受付部)115は、入力装置42から入力されるプログラムを受付け、記憶部113に記憶する。なお、プログラムの作成には、プログラムを新たに作成する場合と、既存のプログラムを書き換えたり、追加する場合と、が含まれる。
プログラムの一例は、下記の通りである。また、そのプロラムは、前述したツール設定と同様の設定を行えるものである。
Function Main
Reset
Motor On
VDefTool 1, VISION_DEFTOOL_FIXEDNOCAL, TestVisSeq, 180, 5
Fend
前記プログラムの「VDefTool 1, VISION_DEFTOOL_FIXEDNOCAL, TestVisSeq, 180, 5」がコマンドである(各引数は、一例である)。
コマンドのうち、「VDefTool」は、コマンド名である。
また、コマンドVDefToolにおける引数(引数名)としては、例えば、前述したツール設定における1個目のツール設定画面71a、2個目のツール設定画面(図示せず)、3個目のツール設定画面71b、4個目のツール設定画面(図示せず)、5個目のツール設定画面71cにおいて設定可能なパラメーターと同様のパラメーター等が挙げられる。具体例としては、例えば、「toolNumber」、「toolDefType」、「sequence」、「[finalAngle]」、「[initialAngle]」、「[targetTolerance]」等が挙げられる。
「toolNumber」は、ツール設定結果を保存する保存番号(ツール番号)である。具体例としては、1~15である。
また、「toolDefType」は、ツールタイプである。具体例は、下記の通りである。
VISION_DEFTOOL_FIXEDNOCAL:キャリブレーションを行っていない固定カメラを使って、ツール設定を行う。
VISION_DEFTOOL_J4CAM:第4アームに設けられたモバイルカメラの画像中心を算出する。
VISION_DEFTOOL_J6CAM:第6アームに設けられたモバイルカメラの画像中心を算出する。
また、「sequence」は、ツール(対象)を検出するために用いる画像処理シーケンスである。
また、「[finalAngle]」は、ツール/カメラツールを回転する角度(最終回転角度)である。
また、「[initialAngle]」は、仮ツール設定時のツール/カメラツールを回転する角度(初期回転角度)である。
また、「[targetTolerance]」は、画像処理シーケンスの実行結果(検出結果)が対象位置と一致したとみなすピクセル距離(ターゲットの許容量)である。
(プロジェクトをビルド、送信)
作成したプログラム(プロジェクト)をビルドして、ロボット制御装置12で解釈可能な言語(データ列)に変換(コンパイル)する。
この場合、まず、入力制御部115がユーザーによる「ビルド」の操作指示を受けると、コンピューター11の制御プログラムビルド部1112は、プログラムをビルドして、ロボット制御装置12で解釈可能な言語にコンパイルする。
次に、コンピューター11は、コンパイルしたプログラムをロボット制御装置12に送信する。ロボット制御装置12は、コンピューター11から送信されたプログラムを受信し、記憶部123に記憶する。
また、コンピューター11は、画像処理検出設定等の必要な各情報を画像処理装置13に送信する。この場合、ロボット制御装置12が中継してもよく、また、中継しなくてもよい。画像処理装置13は、コンピューター11から送信された画像処理検出設定を受信し、記憶部133に記憶する。
(ツール設定の処理の実行(プログラムの実行))
ユーザーは、ロボットビジョンシステム100にツール設定の処理を行わせる場合は、表示装置41に表示されている所定のアイコン(図示せず)に対する操作指示を行う。
入力制御部115がユーザーによる「プログラムのメイン関数の選択、実行開始」の操作指示(ツール設定の処理の実行命令)を受けると、まず、コンピューター11は、プログラムの実行処理の命令をロボット制御装置12に送信する。
次に、画像処理装置13は、プログラムの実行処理の命令(指示)を受信する。そして、画像処理装置13の制御プログラム実行部1211は、プログラムのメイン関数の実行処理を開始する。そして、制御プログラム実行部1211は、コマンドVDefToolの実行処理を発見すると、コマンドVDefToolの引数とともに、コマンドVDefToolの実行処理の命令(ツール設定の処理の実行命令)をコンピューター11に送信する。
次に、コンピューター11は、コマンドVDefToolの実行処理の命令を受信し、コマンドVDefToolの実行処理、すなわち、ツール設定の処理を実行する(開始する)。なお、ツール設定の処理の実行については、前述した[2B]と同様であるので、その説明は省略する。また、ツール設定結果の反映については、前述した[3B]と同様であるので、その説明は省略する。
このようなコマンドを用いることにより、ツール設定等の各処理を容易かつ迅速に実行することができる。
前述したツール設定画面を用いるツール設定では、ツール設定の処理を実行する場合、毎回、5個のツール設定画面を順次、表示装置41に表示させて、ツール設定における各種設定を行い、その後、ツール設定の処理が実行可能となるので、毎回、準備に時間および労力を要する。これに対し、コマンドを用いることにより、1度、コマンドの引数を設定してしまえば、次回からは、その設定が不要であり、このため、容易かつ迅速にツール設定の処理を実行することができる。
また、例えば、ツール設定の処理を実行した後、キャリブレーションを実行する場合、コマンドを用いることにより、ツール設定の処理とキャリブレーションとを連続して自動的に実行することができ、利便性が高い。
また、ツール設定における各種設定を変更する場合、コマンドの対応する引数の部分を変更する簡単な作業を行うことで、各種設定を変更することができる。
以上では、ツール設定を例に挙げて説明したが、ローカル設定、キャリブレーション、および画像処理シーケンスの作成等についても、それぞれ、同様に、コマンドにより実行することができる。
例えば、ローカル設定では、ロボット2の座標系とは異なるローカル座標系を設定可能なコマンドを作成する。そして、制御プログラム実行部1211は、そのコマンドにより、ローカル座標系の設定を実行する。なお、ローカル座標系の設定(ローカル設定の処理の実行)については、前述した[2A]と同様であるので、その説明は省略する。また、ローカル設定結果の反映については、前述した[3A]と同様であるので、それぞれ、その説明は省略する。
以上説明したロボットビジョンシステム100は、「制御装置」としての制御システム10と、制御システム10によって制御されているロボット2および撮像部3と、を備える。このようなロボットビジョンシステム100によれば、上述した制御システム10を備えていることで、撮像部3からの撮像画像(画像データ)に基づいて、ロボット2がキャリブレーションにかかる動作を的確に行うことができる。そのため、キャリブレーションの精度を高めることができる。その結果、ロボット2の作業の精度を高めることができる。
また、ロボット2は、「制御装置」としての制御システム10によって制御されている。そのため、制御システム10の制御の下、ロボット2は、キャリブレーションにかかる動作を的確に行うことができる。
以上、本発明の制御装置、ロボット、およびロボットシステムを図示の実施形態に基づいて説明したが、本発明は、これに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物が付加されていてもよい。