(57)【要約】【課題】ロボットと、校正器及び視覚センサのうちロボットに支持されたいずれか一方の部材とが障害物に干渉しない教示点を、ユーザが試行錯誤で探索する必要がなくなるようにすること。【解決手段】ＣＡＤデータを用いて、教示点にロボットを仮想的に動作させる演算を行い、ロボット又は校正器が障害物に干渉するか否かを判断する（Ｓ４）。ステップＳ４において、教示点にロボットを仮想的に動作させた際にロボット又は校正器が障害物に干渉すると判断したときには（Ｓ４：Ｙｅｓ）、ロボット及び校正器が障害物に干渉しないロボットの位置姿勢を探索する（Ｓ８）。次に、ステップＳ８において、ロボット及び校正器が障害物に干渉しないロボットの位置姿勢を探し当てた場合には（Ｓ８：Ｙｅｓ）、探し当てたロボットの位置姿勢に基づき、教示点を再設定する（Ｓ９）。【選択図】図４
2015062991.tif 000002
【特許請求の範囲】
【請求項１】
ロボットが校正器及び視覚センサのうちいずれか一方の部材を支持し、制御部により前記ロボットを教示点で教示された位置姿勢に動作させて、前記視覚センサに前記校正器を撮像させ、撮像画像の処理結果に基づいて、前記ロボットを基準とした座標系と前記視覚センサを基準とした座標系との校正を行う座標系校正方法において、
前記制御部が、前記教示点を設定する設定工程と、
前記制御部が、少なくとも前記ロボット、前記一方の部材、及び前記ロボットの動作の障害となり得る障害物に関する立体形状データを取得する取得工程と、
前記制御部が、前記立体形状データを用いて、前記教示点に前記ロボットを仮想的に動作させる演算を行い、前記ロボット又は前記一方の部材が前記障害物に干渉するか否かを判断する干渉判断工程と、
前記制御部が、前記干渉判断工程において、前記教示点に前記ロボットを仮想的に動作させた際に前記ロボット又は前記一方の部材が前記障害物に干渉すると判断したときには、前記ロボット及び前記一方の部材が前記障害物に干渉しない前記ロボットの位置姿勢を探索する探索工程と、
前記制御部が、前記探索工程において、前記ロボット及び前記一方の部材が前記障害物に干渉しない前記ロボットの位置姿勢を探し当てた場合には、探し当てた前記ロボットの位置姿勢に基づき、前記教示点を再設定する再設定工程と、を備えたことを特徴とする座標系校正方法。
【請求項２】
前記設定工程では、前記制御部が、前記教示点として、少なくとも、前記視覚センサの設計上の光軸を法線とする第１平面上に前記校正器の表面が位置し、かつ前記校正器の位置姿勢が互いに異なるよう前記ロボットを動作させる第１教示点及び第２教示点と、前記第１平面に対して交差する第２平面上に前記校正器の表面が位置するように前記ロボットを動作させる第３教示点と、を設定し、
前記干渉判断工程では、前記制御部が、前記立体形状データを用いて、前記第１教示点及び前記第２教示点に前記ロボットを仮想的に動作させる演算を行い、前記ロボット又は前記一方の部材が前記障害物に干渉するか否かを判断し、
前記探索工程では、前記制御部が、前記干渉判断工程において、前記第１教示点及び前記第２教示点のうち少なくとも一方の教示点に前記ロボットを仮想的に動作させた際に前記ロボット又は前記一方の部材が前記障害物に干渉すると判断したときには、前記第１教示点に前記ロボットを動作させた際の前記校正器と、前記第２教示点に前記ロボットを動作させた際の前記校正器との間の相対的な位置姿勢を維持しながら、前記ロボット及び前記一方の部材が前記障害物に干渉しない前記ロボットの位置姿勢を探索し、
前記再設定工程では、前記制御部が、前記探索工程において、前記ロボット及び前記一方の部材が前記障害物に干渉しない前記ロボットの位置姿勢を探し当てた場合には、探し当てた前記ロボットの位置姿勢に基づき、前記第１教示点及び前記第２教示点を再設定することを特徴とする請求項１に記載の座標系校正方法。
【請求項３】
前記探索工程では、前記制御部が、前記立体形状データに基づき、前記設計上の光軸と平行な第１軸まわりに前記校正器を前記視覚センサに対して仮想的に相対的に回転させた際に前記ロボット及び前記一方の部材が前記障害物に干渉しない第１回転角度を探索し、
前記再設定工程では、前記制御部が、前記第１回転角度を探し当てた場合には前記校正器が前記視覚センサに対して前記第１軸まわりに前記第１回転角度で相対的に回転するように前記第１教示点及び前記第２教示点を再設定する、
ことを特徴とする請求項２に記載の座標系校正方法。
【請求項４】
前記探索工程では、前記制御部が、前記第１回転角度がない場合には、前記第１軸に交差する第２軸まわりに前記校正器を前記視覚センサに対して仮想的に相対的に回転させた際に前記ロボット及び前記一方の部材が前記障害物に干渉しない第２回転角度を探索し、
前記再設定工程では、前記制御部が、前記第２回転角度を探し当てた場合には前記校正器が前記視覚センサに対して前記第２軸まわりに前記第２回転角度で相対的に回転するように前記第１教示点及び前記第２教示点を再設定する、
ことを特徴とする請求項３に記載の座標系校正方法。
【請求項５】
前記干渉判断工程では、前記制御部が、前記立体形状データを用いて、前記第３教示点に前記ロボットを仮想的に動作させる演算を行い、前記ロボット又は前記一方の部材が前記障害物に干渉するか否かを判断し、
前記探索工程では、前記制御部が、前記干渉判断工程において、前記第３教示点に前記ロボットを動作させた際に前記ロボット又は前記一方の部材が前記障害物に干渉すると判断したときには、前記ロボット及び前記一方の部材が前記障害物に干渉しない前記ロボットの位置姿勢を探索し、
前記再設定工程では、前記制御部が、前記探索工程により、前記ロボット及び前記一方の部材が前記障害物に干渉しない前記ロボットの位置姿勢を探し当てた場合には、探し当てた前記ロボットの位置姿勢に基づき、前記第３教示点を再設定することを特徴とする請求項２乃至４のいずれか１項に記載の座標系校正方法。
【請求項６】
前記探索工程では、前記制御部が、前記ロボットが可動範囲内となる条件の下で、前記ロボット及び前記一方の部材が前記障害物に干渉しない前記ロボットの位置姿勢を探索することを特徴とする請求項１乃至５のいずれか１項に記載の座標系校正方法。
【請求項７】
校正器を撮像する視覚センサと、
前記校正器及び前記視覚センサのうちいずれか一方の部材を支持するロボットと、
前記ロボットを教示点で教示された位置姿勢に動作させて、前記視覚センサに前記校正器を撮像させ、撮像画像の処理結果に基づいて前記ロボットを基準とした座標系と前記視覚センサを基準とした座標系との校正を行う制御部と、を備え、
前記制御部は、
前記教示点を設定する設定処理と、
少なくとも前記ロボット、前記一方の部材、及び前記ロボットの動作の障害となり得る障害物に関する立体形状データを取得する取得処理と、
前記立体形状データを用いて、前記教示点に前記ロボットを仮想的に動作させる演算を行い、前記ロボット又は前記一方の部材が前記障害物に干渉するか否かを判断する干渉判断処理と、
前記干渉判断処理において、前記教示点に前記ロボットを仮想的に動作させた際に前記ロボット又は前記一方の部材が前記障害物に干渉すると判断したときには、前記ロボット及び前記一方の部材が前記障害物に干渉しない前記ロボットの位置姿勢を探索する探索処理と、
前記探索処理において、前記ロボット及び前記一方の部材が前記障害物に干渉しない前記ロボットの位置姿勢を探し当てた場合には、探し当てた前記ロボットの位置姿勢に基づき、前記教示点を再設定する再設定処理と、を実行することを特徴とするロボットシステム。
【請求項８】
コンピュータに、請求項１乃至６のいずれか１項に記載の座標系校正方法の各工程を実行させるためのプログラム。
【請求項９】
請求項８に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットを基準とした座標系と視覚センサを基準とした座標系との校正を行う座標系校正方法、ロボットシステム、プログラム及び記録媒体に関する。
【背景技術】
【０００２】
近年、工場の生産ラインにおいて、作業の自動化・省人化を図るために、ロボットによる自動組立が多くなってきた。そこでは、ロボットと視覚センサとを組合せたロボットシステムが利用されている。特に最近では、作業対象物となるワークを、視覚センサを用いて３次元計測する必要性が高くなっている。
【０００３】
ロボットは、ロボットアームと、ロボットアームの先端に取り付けられたロボットハンドとを有している。視覚センサは、ロボットまたはロボットの周囲にある枠体に固定されている。
【０００４】
視覚センサを用いてワークの位置姿勢を計測し、それに基づいてロボットの動作を補正する場合、視覚センサを用いて計測した、ビジョン座標系におけるワークの位置姿勢データを、ロボットが動作する座標系のデータに変換する必要がある。ここで、ロボットの座標系には、ロボットアームを基準とするロボット座標系と、ロボットハンドを基準とするツール座標系とがある。ゆえに、ビジョン座標系と、ロボット座標系又はツール座標系との間の関係を予め求めておかなければならない。これら座標系間の校正を、一般的にはハンドアイキャリブレーションと呼ぶ。
【０００５】
ハンドアイキャリブレーションを行う方法として、正確な設計データが明らかな特別な校正器を用いる方法がある（特許文献１参照）。校正器は、視覚センサを用いて計測可能なマーカと、マーカが固定される校正治具とを有して構成される。ここでいうマーカは、視覚センサにとって計測精度が高いワークのことである。マーカは校正治具に対して、どこに固定されているかは正確な設計データがあり、明らかなものを用いる。また、校正治具がロボットに対して、どこに固定されているかも正確な設計データがあり、明らかなものを用いる。校正器の位置姿勢を、視覚センサを用いて計測することによって、座標系間の関係が明らかとなり、ビジョン座標系とロボット座標系（又はツール座標系）との相対位置姿勢を求めることができる。
【０００６】
この特許文献１の方法では、正確な設計データが明らかな特別な校正治具を必要としており、コストアップとなるため、正確な設計データが明らかな特別な校正治具を用いない方法も提案されている（特許文献２参照）。
【０００７】
特許文献２の方法では、視覚センサを用いて計測可能なマーカは必要であるが、マーカが校正治具のどこに固定されているかは明らかでなくて良い。代わりに、校正点近傍でロボットを動作させることでマーカと視覚センサとの相対位置姿勢を３点以上取得し、各点でマーカを、視覚センサを用いて計測する。各点で得られたロボット座標系とツール座標系（ハンド座標系）との相対位置姿勢と、ビジョン座標系とマーカ座標系との相対位置姿勢から連立方程式を立てる。それを最適化計算で解くことによって、ビジョン座標系とロボット座標系との相対位置姿勢を求めることができる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特許第２７００９６５号公報
【特許文献２】特許第３６４４９９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献１，２においては、教示点が予め教示されているのが前提であり、ロボット、或いはロボットに支持された校正器又は視覚センサが、障害物と干渉することを考慮していない。実際にはロボットの周辺には固定治具類等の障害物があり、ロボットの動作により、障害物との干渉が発生するおそれがある。そのため、ユーザは、障害物との干渉が生じない、校正に用いることができる教示点を試行錯誤で探索する必要があり、その探索作業が煩雑であったので、教示点を決定することが困難であった。
【００１０】
そこで、本発明は、ロボットと、校正器及び視覚センサのうちロボットに支持されたいずれか一方の部材とが障害物に干渉しない教示点を、ユーザが試行錯誤で探索する必要がなくなるようにすることを目的とする。
【課題を解決するための手段】
【００１１】
本発明は、ロボットが校正器及び視覚センサのうちいずれか一方の部材を支持し、制御部により前記ロボットを教示点で教示された位置姿勢に動作させて、前記視覚センサに前記校正器を撮像させ、撮像画像の処理結果に基づいて、前記ロボットを基準とした座標系と前記視覚センサを基準とした座標系との校正を行う座標系校正方法において、前記制御部が、前記教示点を設定する設定工程と、前記制御部が、少なくとも前記ロボット、前記一方の部材、及び前記ロボットの動作の障害となり得る障害物に関する立体形状データを取得する取得工程と、前記制御部が、前記立体形状データを用いて、前記教示点に前記ロボットを仮想的に動作させる演算を行い、前記ロボット又は前記一方の部材が前記障害物に干渉するか否かを判断する干渉判断工程と、前記制御部が、前記干渉判断工程において、前記教示点に前記ロボットを仮想的に動作させた際に前記ロボット又は前記一方の部材が前記障害物に干渉すると判断したときには、前記ロボット及び前記一方の部材が前記障害物に干渉しない前記ロボットの位置姿勢を探索する探索工程と、前記制御部が、前記探索工程において、前記ロボット及び前記一方の部材が前記障害物に干渉しない前記ロボットの位置姿勢を探し当てた場合には、探し当てた前記ロボットの位置姿勢に基づき、前記教示点を再設定する再設定工程と、を備えたことを特徴とする。
【発明の効果】
【００１２】
本発明によれば、ロボットと、校正器及び視覚センサのうちロボットに支持されたいずれか一方の部材とが障害物に干渉しない教示点を、自動で探索することで、ユーザが試行錯誤で探索する必要がなくなり、ユーザの負担が軽減する。
【図面の簡単な説明】
【００１３】
【図１】第１実施形態に係るロボットシステムの概略構成を示す説明図である。
【図２】第１実施形態に係るロボットシステムの構成を示すブロック図である。
【図３】マーカの表面を示す模式図である。
【図４】第１実施形態に係る座標系校正方法のフローチャートである。
【図５】第１実施形態で用いるカメラと校正器との相対位置姿勢および教示点を例示した模式図である。
【図６】ロボットが障害物と干渉する場合の教示点の再設定方法を例示した模式図である。
【図７】第２実施形態に係るロボットシステムの概略構成を示す説明図である。
【図８】第２実施形態に係る座標系校正方法のフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本発明を実施するための形態を、図面を参照しながら詳細に説明する。
【００１５】
［第１実施形態］
図１は、本発明の第１実施形態に係るロボットシステムの概略構成を示す説明図である。ロボットシステム１０は、ロボット３００、制御装置４００、視覚センサとしてのカメラ５００、架台２０、及び枠体３０を備えている。制御装置４００は、ロボット制御装置１００と、画像処理装置２００とで構成されている。
【００１６】
ロボット３００は、多関節（例えば６関節）のロボットアーム３０１と、ロボットアーム３０１の先端に取り付けられたエンドエフェクタとしてのロボットハンド３０２とを有している。ロボットアーム３０１の基端は、架台２０上に固定されている。
【００１７】
ロボットハンド３０２は、ワーク等の物体を把持することが可能に構成されており、例えば複数のフィンガーを有し、複数のフィンガーの開閉動作により、物体の把持と把持解放とが可能となっている。
【００１８】
枠体３０は、例えば直方体状の骨組み構造であり、例えば架台２０上に固定されている。図１では、枠体３０の天部を図示している。
【００１９】
カメラ５００は、枠体３０の天部に固定された固定カメラである。カメラ５００は、光軸が鉛直下方向を向くように固定されている。カメラ５００は、例えばＣＭＯＳイメージセンサやＣＣＤイメージセンサ等の固体撮像素子を有するデジタルカメラである。視覚センサとしてのカメラ５００は、第１実施形態では単眼カメラを用いているが、視覚センサが、複眼カメラ、レーザレンジファインダ、あるいは、それらの組合せでも良い。
【００２０】
カメラ５００と画像処理装置２００とは例えばケーブル等で接続されており、画像処理装置２００は、ケーブルを介してカメラ５００から画像信号を取得することができる。なお、カメラ５００と画像処理装置２００とを無線接続して、画像処理装置２００が無線によりカメラ５００から画像信号を取得するように構成してもよい。
【００２１】
ロボット３００とロボット制御装置１００とは例えばケーブル等で接続されており、ロボット制御装置１００によりロボット３００の動作が制御される。また、画像処理装置２００とロボット制御装置１００とは例えばケーブル等で接続されており、ロボット制御装置１００は、画像処理装置２００から処理結果を受信可能に構成されている。
【００２２】
画像処理装置２００は、カメラ５００から取得した画像信号を、濃淡グレイスケールによる明暗信号に変換した上でフレームメモリに格納する。また、フレームメモリに格納された画像を処理し、対象物の識別、位置姿勢を計測する。さらに、処理した対象物の識別結果、および位置姿勢の情報をロボット制御装置１００に送信する。
【００２３】
なお、画像処理装置２００には、照明（不図示）が接続されていても良い。そのとき、画像処理装置２００は照明の制御も行う。
【００２４】
ここで、ロボット３００には、ロボット３００の動作に用いられる座標系が定義されている。具体的に説明すると、ロボットアーム３０１を基準とするロボット座標系Ｃ１と、ロボットハンド３０２を基準とするツール座標系Ｃ３とが定義されている。また、カメラ５００には、カメラ５００により撮像された撮像画像に写り込んだワークの位置姿勢を計測する際に用いられる、カメラ５００を基準とするビジョン座標系Ｃ２が定義されている。
【００２５】
ワークをロボット３００のロボットハンド３０２に把持させる場合やワークに加工を施す場合には、ワークをカメラ５００により撮像して、ビジョン座標系Ｃ２でワークの位置姿勢を計測し、計測結果に基づいて、ロボット３００の動作を補正する。したがって、製造工程を開始するに先立って、ロボット座標系Ｃ１とビジョン座標系Ｃ２との間の校正データ（相対位置姿勢のデータ）を求める必要がある。
【００２６】
そこで、第１実施形態では、カメラ５００がロボット３００以外の枠体３０に固定されているので、校正に用いる校正器４０をロボット３００に支持させている。
【００２７】
つまり、ロボット３００は、校正器４０及びカメラ５００のうちいずれか一方の部材として、校正器４０を支持している。そして、ロボット制御装置１００は、カメラ５００と校正器４０との相対位置姿勢に基づいて、ロボット座標系Ｃ１とビジョン座標系Ｃ２との間の校正データを求める。
【００２８】
校正器４０は、平板状に形成されたマーカ４１と、マーカ４１が固定された校正治具４２とを有している。校正治具４２は、ロボットハンド３０２により把持可能に構成されており、校正治具４２がロボットハンド３０２に把持されることにより、校正器４０がロボット３００に支持されることとなる。図１に示すように、校正器４０を基準とした座標系をマーカ座標系Ｃ４とする。なお、校正器４０は、ロボットハンド３０２又はロボットアーム３０１に固定してもよい。ここで、校正治具４２に対して、マーカ４１がどこに固定されているかは既知でなくともよい。また、校正器４０が、マーカ４１と、マーカ４１が固定される校正治具４２とからなる場合について説明したが、校正治具に直接マーカのパターンが形成されていてもよい。
【００２９】
図２は、ロボットシステム１０の構成を示すブロック図である。ここで、図１では図示を省略しているが、ロボットシステム１０は、表示装置としてのモニタ６００と、入力装置としてのキーボード７００とを備えている。
【００３０】
ロボット制御装置１００は、コンピュータで構成されており、制御部（演算部）としてのＣＰＵ（Central  Processing  Unit）１０１を備えている。また、ロボット制御装置１００は、記憶部として、ＲＯＭ（Read  Only  Memory）１０２、ＲＡＭ（Random  Access  Memory）１０３、ＨＤＤ（Hard  Disk  Drive）１０４を備えている。また、ロボット制御装置１００は、記録ディスクドライブ１０５及び各種のインタフェース１０７〜１１０を備えている。
【００３１】
ＣＰＵ１０１には、ＲＯＭ１０２、ＲＡＭ１０３、ＨＤＤ１０４、記録ディスクドライブ１０５及び各種のインタフェース１０７〜１１０が、バス１０６を介して接続されている。ＲＯＭ１０２には、ＢＩＯＳ等の基本プログラムが格納されている。
【００３２】
ＲＡＭ１０３には、ロボット動作や画像処理装置２００への指令送信、画像処理装置２００からの画像処理結果の受信等を制御するプログラム、関連設定値が一時的に格納される。さらに、ＲＡＭ１０３は、ＣＰＵ１０１による演算実行時の一時記憶用のメモリや必要に応じて設定されるレジスタ領域としても使用される。
【００３３】
ＨＤＤ１０４は、ＣＰＵ１０１の演算処理結果や外部から取得した各種データ等を記憶すると共に、ＣＰＵ１０１に、システム全体１０を制御するプログラムや、座標系校正方法の各工程を実行させるためのプログラム１２０を記録するものである。ＣＰＵ１０１は、ＨＤＤ１０４に記録（格納）されたプログラム１２０に基づいて各種演算処理（座標系校正方法の各工程）を実行する。
【００３４】
ＨＤＤ１０４には、ロボット３００、カメラ５００、校正器４０、及び固定治具などのロボット周辺に配置され、ロボット３００の動作の障害となり得る障害物６０（図１）を含むシステム全体の３次元形状データ（ＣＡＤデータ）が格納されている。
【００３５】
記録ディスクドライブ１０５は、記録ディスク８００に記録された各種データやプログラム等を読み出すことができる。
【００３６】
インタフェース１０７には、画像処理装置２００が接続されており、ＣＰＵ１０１は、画像処理装置２００から受信した位置姿勢の情報等を取得することができる。また、ＣＰＵ１０１は、インタフェース１０７及び画像処理装置２００を介してカメラ５００に撮像タイミングを示すトリガ信号を出力する。
【００３７】
インタフェース１０８には、ロボット３００（具体的には、ロボット３００の各軸を制御するサーボ回路）が接続されており、ＣＰＵ１０１は、教示された教示点に基づきロボット３００の動作を制御することができる。インタフェース１０９には、モニタ６００が接続されており、ＣＰＵ１０１は、モニタ６００に画像を表示させることができる。インタフェース１１０には、入力装置であるキーボード７００が接続されており、ＣＰＵ１０１は、キーボード７００からの入力を受けることにより、各種の設定を行う。なお、ロボット制御装置１００には、不図示の、書き換え可能な不揮発性メモリや外付けＨＤＤ等の外部記憶装置や、オフラインプログラミング装置、教示を行う教示装置等が接続されていてもよい。
【００３８】
図３は、マーカ４１の表面を示す模式図である。マーカ４１の表面には、複数のドット４３がパターンとして付され、ドット４３間の位置は予め画像処理装置２００に設定値として格納されている。それにより、画像処理装置２００は校正器４０の位置姿勢を計測することができる。
【００３９】
また、マーカ４１に付された三角形のマーク４４により校正器４０の姿勢を一意に求めることができる。なお、校正器４０のマーカ４１は、カメラ５００により撮像された撮像画像に写り込んでいるときに、画像処理装置２００にて校正器４０の位置姿勢が計測できればよく、平板状でなく立体的なものであってもよい。
【００４０】
校正する際のロボット３００の動作は、ロボット制御装置１００のメモリに格納されたプログラム１２０によって制御される。ロボット３００を動作させることにより、校正器４０をロボット３００の動作範囲内の任意の位置姿勢で位置決めすることができる。
【００４１】
以下、ロボットシステム１０において、ハンドアイキャリブレーションを行う方法について述べる。第１実施形態では、ロボット３００に校正器が支持され、カメラ５００が固定されているので、ロボット座標系Ｃ１とビジョン座標系Ｃ２とを校正する必要がある。
【００４２】
前提条件として、校正治具４２に対して、マーカ４１がどこに固定されているかは既知で無い場合を考える。その場合、一般的に、カメラ５００と校正器４０との相対位置姿勢において、少なくとも３点以上の異なる相対位置姿勢を取らせる。それぞれの点でロボット座標系Ｃ１とツール座標系Ｃ３との相対位置姿勢と、ビジョン座標系Ｃ２とマーカ座標系Ｃ４との相対位置姿勢を得る必要がある。それにより、校正すべきロボット座標系Ｃ１とビジョン座標系Ｃ２と相対位置姿勢を求めることができる。
【００４３】
図４は、第１実施形態に係る座標系校正方法のフローチャートである。ＣＰＵ１０１は、ＨＤＤ１０４に格納されたプログラム１２０を読み出して実行することにより、図４に示すアルゴリズムにより、校正で用いる教示点を自動設定する。教示点は、６つのパラメータ、即ち３次元の教示位置を示す３つのパラメータと、３次元の教示姿勢を示す３つのパラメータとからなる。そして、ＣＰＵ１０１は、ロボット３００（例えばロボット３００の先端、つまりロボットハンド３０２）を複数の教示点で教示された位置姿勢に動作させて、カメラ５００に校正器４０を撮像させる。次いで、ＣＰＵ１０１は、画像処理装置２００における撮像画像の処理結果に基づいて、ロボット座標系Ｃ１とビジョン座標系Ｃ２との校正を行う。
【００４４】
以下、図４のフローチャートに沿って詳細に説明する。まずＣＰＵ１０１は、校正する領域の最大範囲に分布する校正のための複数の教示点を生成する（Ｓ１）。即ち、ステップＳ１では、ＣＰＵ１０１は、複数の教示点として、少なくとも３つの教示点を設定する（設定工程、設定処理）。このステップＳ１では、ＣＰＵ１０１は、外部の教示装置（不図示）から教示点を取得して、設定（つまり後の制御で使用可能にメモリ等に格納）してもよいし、予め決められたプログラムにより自動生成して設定してもよい。ここでは、校正で用いる教示点は３点とする。その３点の教示点の設定方法を述べる。
【００４５】
図５は、第１実施形態で用いるカメラ５００と校正器４０との相対位置姿勢および教示点を例示した模式図である。図５（ａ）には、各教示点にロボット３００を動作させた際の校正器４０（マーカ４１）の中心と校正範囲を示し、図５（ｂ）には、カメラ５００と校正器４０との相対位置姿勢を示す。ここで、図５に示す平面Ａは、カメラ５００の画角の範囲の内側に設定されたカメラ５００の光軸を法線とする平面であり、この平面はロボット座標系Ｃ１とビジョン座標系Ｃ２との校正領域を示している。校正領域Ａの範囲は、後述する校正器４０上のマーカ４１が計測できる範囲であり、校正器４０の中心がロボット３００の動作によって取り得る範囲を示している。
【００４６】
図５（ｂ）に示すように、１点目の教示点（第１教示点）Ｐ１は、カメラ５００の設計上の光軸（カメラ光軸）Ｌ０を法線とする平面Ｍ１上（第１平面上）に校正器４０の表面が位置するようにロボット３００を動作させる教示点とする。ここで、カメラ５００の設計上の光軸Ｌ０としたのは、校正前であるため、ＣＰＵ１０１において、カメラ５００の実際の光軸が未知であるためである。
【００４７】
校正器４０の表面とは、第１実施形態ではマーカ４１においてドット４３等のパターンが形成された表面である。なお、校正治具４２の表面に直接ドット等のパターンが形成されている場合は、校正器４０の表面とは、校正治具４２の表面である。即ち、校正器４０の表面とは、ドット等の特徴点が形成された面のことである。
【００４８】
２点目の教示点（第２教示点）Ｐ２は、教示点Ｐ１に対して、校正器４０がカメラ光軸Ｌ０と平行な軸Ｌ１まわりに、ユーザが予め指定した相対角度αを取り、かつ平面Ｍ１の面方向（ｘｙ方向）に並進させるようロボット３００を動作させる教示点である。つまり、教示点Ｐ１と教示点Ｐ２とは、校正器４０の表面が平面Ｍ１上に位置し、かつ校正器４０の位置姿勢が互いに異なるようロボット３００を動作させる教示点である。なお、上述の軸Ｌ１は、カメラ光軸Ｌ０と平行か軸の傾きが±２ｄｅｇの範囲であれば良い。また、上述の軸Ｌ１は、前述の相対角度αを取ったとき、校正器４０の中心Ｏ２がカメラ５００の画角の範囲内に入るように設定される。
【００４９】
相対角度αは、９０ｄｅｇが最も適しているが、０ｄｅｇ＜α＜１８０ｄｅｇの範囲でユーザが選択可能となっているのが好ましい。ここで、相対角度αの指定は、例えばユーザがキーボード７００を用いて行ってもよいし、予めプログラム１２０に設定されていてもよい。
【００５０】
３点目の教示点（第３教示点）Ｐ３は、カメラ光軸Ｌ０以外の２軸、即ちビジョン座標系におけるｘｙ軸まわりにユーザが予め指定した角度を取り、かつ、校正器４０が教示点Ｐ１，Ｐ２とも異なる位置姿勢を取るように設定された教示点である。具体的に説明すると、教示点Ｐ３は、平面Ｍ１に対して交差する平面Ｍ２上（第２平面上）に校正器４０の表面が位置するようにロボット３００を動作させる教示点である。つまり、校正器４０の表面が平面Ｍ１上にないように教示点Ｐ３を取る。
【００５１】
ここでユーザが指定する角度は５〜１０ｄｅｇ程度でよい。また、この角度は、予めプログラム１２０に設定しておいてもよい。
【００５２】
なお、３つの教示点Ｐ１，Ｐ２，Ｐ３は、それぞれの校正器４０の中心Ｏ１，Ｏ２，Ｏ３がカメラ光軸Ｌ０を法線とする平面Ｍ１上でそれぞれ異なる位置姿勢になるように配置し、かつ校正する範囲最大になるように配置することが望ましい。第１実施形態では、図５（ａ）に示すように、校正領域Ａの隅に２点、校正領域Ａの対角線上の中点に１点を配置している。
【００５３】
次に、ＣＰＵ１０１は、ＨＤＤ１０４に格納されたＣＡＤデータ（立体形状データ）を、ＨＤＤ１０４から読み出す（Ｓ２）。つまり、ＣＰＵ１０１は、ＨＤＤ１０４からＣＡＤデータを取得する（取得工程、取得処理）。ＣＡＤデータには、ロボット３００、カメラ５００、校正器４０、固定治具などの障害物６０の形状データが含まれる。このＣＡＤデータは、予めＨＤＤ１０４に格納させていたが、外部機器から取得するようにしてもよい。
【００５４】
そして、ＣＰＵ１０１は、ステップＳ１で設定した教示点がロボット３００（具体的にはロボットアーム３０１の各関節）の可動範囲内にあるか否かを判断する（Ｓ３）。判断する際には、ＣＰＵ１０１が読み出したＣＡＤデータを用いる。
【００５５】
ＣＰＵ１０１は、ステップＳ３の判断の結果、設定した各教示点がロボット３００の可動範囲内にあると判断した場合（Ｓ３：Ｙｅｓ）、ステップＳ４の干渉判断処理（干渉判断工程）を実行する。
【００５６】
ＣＰＵ１０１は、ステップＳ４では、取得したＣＡＤデータを用いて、各教示点Ｐ１、Ｐ２，Ｐ３にロボット３００を仮想的に動作させる演算を行い、ロボット３００又は校正器４０が障害物６０に干渉するか否かを判断する。
【００５７】
ＣＰＵ１０１は、ステップＳ４における判断の結果、設定した各教示点Ｐ１〜Ｐ３に基づくロボット３００の動作によりロボット３００及び校正器４０が障害物６０に干渉しないと判断した場合（Ｓ４：Ｎｏ）、ステップＳ５の処理を実行する。
【００５８】
ＣＰＵ１０１は、ステップＳ５では、実際に校正で用いる教示点Ｐ１〜Ｐ３を決定する。決定した教示点Ｐ１〜Ｐ３はロボット動作プログラムとして、ロボット制御装置１００の記憶部（例えばＨＤＤ１０４）に格納される。
【００５９】
次に、ＣＰＵ１０１は、ステップＳ５で決定した教示点Ｐ１〜Ｐ３を用いてハンドアイキャリブレーションを実行する（Ｓ６）。ステップＳ６の処理について具体的に説明すると、まず、ＣＰＵ１０１は、ステップＳ５で決定した教示点Ｐ１〜Ｐ３に基づいてロボット３００を動作させ、各教示点Ｐ１〜Ｐ３に動作させた位置姿勢において、カメラ５００に校正器４０を撮像させる。画像処理装置２００は、撮像画像を取り込み、撮像画像に写り込んだ校正器４０の画像から、校正器４０の位置姿勢を計測し、その計測結果（撮像画像の処理結果）をロボット制御装置１００に送信する。
【００６０】
ここで、ロボット座標系Ｃ１とツール座標系Ｃ３との相対位置姿勢は、教示点Ｐ１〜Ｐ３の位置姿勢と同義なので、ロボット制御装置１００から得られる。また、ビジョン座標系Ｃ２とマーカ座標系Ｃ４と相対位置姿勢は、校正器４０を計測することにより得られるので、画像処理装置２００から取得される。
【００６１】
相対位置姿勢を並進成分とオイラー角で表すと、（Ｘ，Ｙ，Ｚ，Ｒｘ，Ｒｙ，Ｒｚ）となる。それを同次変換行列Ｈの形で次式のように定義する。
【００６２】
【数１】
2015062991.tif 000003
【００６３】
ただし、Ｒｏｔｘ，Ｒｏｔｙ，Ｒｏｔｚは、それぞれｘ，ｙ，ｚ軸まわりの回転を表す３×３の回転行列である。
【００６４】
ロボット座標系Ｃ１とビジョン座標系Ｃ２との相対位置姿勢を同次変換行列Ｈｒｖ，ツール座標系Ｃ３とマーカ座標系Ｃ４との相対位置姿勢を同次変換行列Ｈｔｐとする。また、３点それぞれの教示点Ｐ１〜Ｐ３におけるロボット座標系Ｃ１とツール座標系Ｃ３との相対位置姿勢を同次変換行列Ｈｒｔ１，Ｈｒｔ２，Ｈｒｔ３とする。また、ビジョン座標系Ｃ２とマーカ座標系Ｃ４との相対位置姿勢を同次変換行列Ｈｖｐ１，Ｈｖｐ２，Ｈｖｐ３とすると、次式で示す連立方程式が得られる。
【００６５】
【数２】
2015062991.tif 000004
【００６６】
式（２）をＨｒｖとＨｔｐについて最適化計算を解くことによって、ハンドアイキャリブレーションすべきロボット座標系Ｃ１とビジョン座標系Ｃ２との相対位置姿勢Ｈｒｖを求めることができる。最適化計算においては、それに限らないが、最小二乗法などで解けることが知られている。
【００６７】
ＣＰＵ１０１は、求めたロボット座標系Ｃ１とビジョン座標系Ｃ２との相対位置姿勢Ｈｒｖを、ロボット制御装置１００の記憶装置としてのＨＤＤ１０４等に出力して設定値として格納（更新）させる（Ｓ７）。これにより、校正処理は終了する。
【００６８】
一方、ＣＰＵ１０１は、ステップＳ３において、設定した教示点Ｐ１〜Ｐ３がロボット３００（ロボットアーム３０１の各関節）の可動範囲内にないと判断した場合（Ｓ３：Ｎｏ）、ステップＳ８の探索処理（探索工程）を実行する。また、ＣＰＵ１０１は、ステップＳ４において、教示点Ｐ１及び／又は教示点Ｐ２にロボット３００を仮想的に動作させた際にロボット３００又は校正器４０が障害物６０に干渉すると判断したときには、ステップＳ８の処理を実行する。更にまた、ＣＰＵ１０１は、ステップＳ４において、教示点Ｐ３にロボット３００を仮想的に動作させた際にロボット３００又は校正器４０が障害物６０に干渉すると判断したときも、ステップＳ８の処理を実行する。つまり、ＣＰＵ１０１は、ステップＳ４において、Ｙｅｓと判断した場合には、ステップＳ８の処理を実行する。
【００６９】
ＣＰＵ１０１は、ステップＳ８では、ロボット３００の可動範囲内に無い、或いは障害物６０と干渉する教示点が、設計上のカメラ５００の光軸Ｌ０と平行な第１軸まわりに回転可能か否かを判定する。
【００７０】
判定する際には、ロボット制御装置１００に予め設定された、設計上のカメラ５００の光軸Ｌ０と平行な第１軸まわりの回転範囲を用いる。回転範囲は−１８０ｄｅｇ〜１８０ｄｅｇの範囲程度で所定の刻み幅（角度）で探索する。所定の刻み幅は、例えば５ｄｅｇ、或いは１０ｄｅｇ程度である。また、教示点が既に取っているカメラ５００の光軸と平行な軸まわりの回転角度は、この回転範囲からは除外される。
【００７１】
ここで、ステップＳ３，Ｓ４にて判定された教示点が、教示点Ｐ１及び／又は教示点Ｐ２の場合は、以下のように探索する。即ちＣＰＵ１０１は、ＣＡＤデータに基づき、教示点Ｐ１，Ｐ２に基づいて動作するロボット３００に位置決めされる校正器４０を、カメラ５００に対して第１軸まわりに仮想的に相対回転させる演算を行う。その際、ＣＰＵ１０１は、教示点Ｐ１にロボット３００を動作させた際の校正器４０と、教示点Ｐ２にロボット３００を動作させた際の校正器４０との間の相対的な位置姿勢を維持しながら校正器４０を回転させる演算を行う。つまり、ＣＰＵ１０１は、ＣＡＤデータにおいて、校正器４０をカメラ５００に対して相対的に所定の刻み幅（角度）で回転させて、ロボット３００及び校正器４０が障害物６０に干渉しない第１回転角度を探索する。
【００７２】
ステップＳ３，Ｓ４にて判定された教示点が教示点Ｐ３の場合は、以下のように探索する。即ちＣＰＵ１０１は、ＣＡＤデータに基づき、教示点Ｐ３に基づいて動作するロボット３００に位置決めされる校正器４０を、カメラ５００に対して第１軸まわりに仮想的に相対回転させる。その際に、ＣＰＵ１０１は、校正器４０をカメラ５００に対して相対的に所定の刻み幅（角度）で回転させて、ロボット３００及び校正器４０が障害物６０に干渉しない第１回転角度を探索する。
【００７３】
なお、第１実施形態では、カメラ５００が固定されているので、校正器４０を回転させることとなる。このように、校正器４０とカメラ５００とを相対的に回転させて探索しているので、相対的に平行移動させる場合よりも、狭い範囲で探索することが可能である。
【００７４】
ＣＰＵ１０１は、ステップＳ８における探索の結果、教示点がカメラ光軸Ｌ０と平行な第１軸まわりに回転可能である場合（Ｓ８：Ｙｅｓ）、即ち第１回転角度を探し当てた場合、ステップＳ９の再設定処理（再設定工程）を実行する。
【００７５】
ＣＰＵ１０１は、ステップＳ９では、ステップＳ８で判定した教示点をカメラ光軸Ｌ０と平行な第１軸まわりに回転し、再設定する。即ちＣＰＵ１０１は、第１回転角度を探し当てた場合には、校正器４０がカメラ５００に対して第１軸まわりに第１回転角度で相対的に回転するように教示点Ｐ１，Ｐ２又は教示点Ｐ３を再設定する。
【００７６】
図６は、ロボット３００が障害物６０と干渉する場合の教示点の再設定方法を例示した模式図である。回転する量は、ステップＳ８で探索した回転範囲内の第１回転角度に従う。ただし、回転する教示点が教示点Ｐ１，Ｐ２の場合、図６に示すように、校正器４０の（教示点Ｐ１，Ｐ２）の相対角度αを維持するように回転させる。
【００７７】
なお、カメラ光軸を法線とする同一平面に対して傾きを持つ教示点Ｐ３の場合、カメラ光軸を法線とする同一平面上にある２つの教示点Ｐ１，Ｐ２の相対角度は特に考慮せず、カメラ光軸と平行な第１軸まわりに回転し、再設定する。回転する量は、同様にステップＳ８で用いた回転範囲に従う。教示点の再設定が完了すると、ステップＳ３に戻る。
【００７８】
一方、ＣＰＵ１０１は、ステップＳ８において、設定した教示点がカメラ光軸と平行な軸まわりに回転可能でないと判定された場合（Ｓ８：Ｎｏ）、ステップＳ１０の探索処理（探索工程）を実行する。
【００７９】
ＣＰＵ１０１は、ステップＳ１０では、ステップＳ８でカメラ光軸と平行な第１軸まわりに回転可能でないと判定した教示点がカメラ光軸を法線とする同一平面上にないように移動可能か否かを判断する。即ち、ＣＰＵ１０１は、ステップＳ８の探索で第１回転角度がない場合には、第１軸に交差する第２軸まわりに校正器４０をカメラ５００に対して仮想的に相対的に回転させる。その際、第２軸として、ロボット制御装置１００に予め設定されたカメラ光軸以外の２軸とし、２軸まわりの回転範囲を用いる。回転範囲は−４５ｄｅｇ〜４５ｄｅｇの範囲程度で決まった所定の刻み幅（角度）で探索する。所定の刻み幅（角度）は、例えば、５ｄｅｇ，あるいは１０ｄｅｇ程度である。また、教示点が既に取っているカメラ光軸以外の２軸まわりの回転角度は、この回転範囲からは除外される。以上の動作で、ロボット３００及び校正器４０が障害物６０に干渉しない第２回転角度を探索する。このステップＳ１０においても、ステップＳ８と同様に、教示点Ｐ１，Ｐ２の場合は、相対角度αを維持しながら探索する。
【００８０】
ＣＰＵ１０１は、ステップＳ１０の判定の結果、教示点がカメラ光軸を法線とする同一平面上にないように移動可能である場合（Ｓ１０：Ｙｅｓ）、ステップＳ１１の再設定処理（再設定工程）を実行する。
【００８１】
ＣＰＵ１０１は、ステップＳ１１では、ステップＳ１０で判定した教示点についてカメラ光軸を法線とする同一平面上にないように移動し、再設定する。即ち、ＣＰＵ１０１は、第２回転角度を探し当てた場合には、校正器４０がカメラ５００に対して第２軸まわりに第２回転角度で相対的に回転するように教示点Ｐ１，Ｐ２を再設定する。回転する量は、ステップＳ１０で用いた回転範囲に従う。教示点の再設定が完了すると、ステップＳ３に進む。
【００８２】
以上、ステップＳ８，Ｓ１０にてＣＰＵ１０１は、教示点Ｐ１の校正器４０と、教示点Ｐ２の校正器４０との間の相対的な位置姿勢を維持しながら、ロボット３００及び校正器４０が障害物６０に干渉しないロボット３００の位置姿勢を探索する。そして、ステップＳ８，Ｓ１０においてロボット３００及び校正器４０が障害物６０に干渉しないロボット３００の位置姿勢を探し当てた場合には、ステップＳ９，Ｓ１１を実行する。即ちＣＰＵ１０１は、ステップＳ８，Ｓ１０にて探し当てたロボット３００の位置姿勢に基づき、教示点Ｐ１，Ｐ２を再設定する。これらステップＳ８，Ｓ１０においては、ステップＳ３の判定により、ロボット３００の位置姿勢（つまり、ロボットアーム３０１の各関節）が可動範囲内となる条件の下で探索が行われる。
【００８３】
一方、ＣＰＵ１０１は、ステップＳ１０において、カメラ光軸を法線とする同一平面上にないように移動可能でないと判定された場合（Ｓ１０：Ｎｏ）、所定の校正精度を満足する教示点の探索範囲がないことを、モニタ６００に表示させる（Ｓ１２）。これにより、教示点の探索範囲がないことが、ユーザに通知される。その後、処理を終了する。
【００８４】
以上のステップＳ３〜Ｓ５，Ｓ８〜Ｓ１１の処理は、ＣＰＵ１０１が、ＣＡＤデータを用いて行う演算（シミュレーション）であり、実際のロボット３００を動作させずに行っているものである。一方、ステップＳ６は、実際にロボット３００を教示点Ｐ１〜Ｐ３に基づいて動作させて、校正を行っている。即ち、ステップＳ３〜Ｓ５，Ｓ８〜Ｓ１１の処理は、校正する際に用いる教示点Ｐ１〜Ｐ３を求める演算処理である。
【００８５】
以上より、カメラ５００と校正器４０を用いたハンドアイキャリブレーションにおいて、正確な設計データが明らかな特別な治具を必要とせず、かつ、より狭い位置での高精度な校正が可能となる。さらに、校正用教示点について障害物６０と干渉しない点を自動で探索可能となる。そして、ロボット３００及び校正器４０が障害物６０に干渉しない教示点を、自動で探索することで、ユーザが試行錯誤で探索する必要がなくなり、ユーザの負担が軽減する。
【００８６】
特に、校正器４０のマーカ４１（即ち、ドット４３等の特徴点）の位置がＣＰＵ１０１において未知の場合には、３つの教示点Ｐ１〜Ｐ３が必要であり、教示点Ｐ１と教示点Ｐ２との相対的な位置姿勢を維持しながら探索する必要がある。第１実施形態では、この探索作業が自動で行われるため、ユーザが試行錯誤で探索する煩雑な必要がなくなり、ユーザの負担が効果的に軽減する。
【００８７】
［第２実施形態］
次に、本発明の第２実施形態に係るロボットシステムについて説明する。図７は、本発明の第２実施形態に係るロボットシステムの概略構成を示す説明図である。なお、第２実施形態において、上記第１実施形態と同様の構成については、同一符号を付して説明を省略する。
【００８８】
上記第１実施形態では、校正器がロボットに支持される場合について説明したが、第２実施形態では、視覚センサがロボットに支持される場合について説明する。即ち、上記第１実施形態では、視覚センサを固定し、視覚センサに対して校正器を回転させたが、第２実施形態では、校正器を固定し、校正器に対して視覚センサを回転させている。したがって、第１，第２実施形態では、視覚センサと校正器との間で相対回転させている点では同じである。
【００８９】
また、上記第１実施形態では、ロボットの座標系としてロボットアームのロボット座標系と、視覚センサのビジョン座標系との間で校正を行った。第２実施形態では、ロボットの座標系としてロボットハンドのツール座標系と、視覚センサのビジョン座標系との間で校正を行う。
【００９０】
ロボットシステム１０Ａは、上記第１実施形態のカメラ５００の代わりに、視覚センサとしてのカメラ５００Ａを備えている。カメラ５００Ａは、ロボット３００（具体的には、ロボットアーム３０１の先端）に支持され、ロボット３００を動作させることにより、ロボット３００の動作範囲内の任意の位置姿勢で位置決めすることができる。カメラ５００Ａは、画像処理装置２００に接続されている。また、校正器４０は、ロボット３００でなく架台２０、即ちロボット座標系Ｃ１と固定位置にあるように設置される。
【００９１】
画像処理装置２００は、カメラ５００Ａを介して取り込んだ画像信号を、濃淡グレイスケールによる明暗信号に変換した上でフレームメモリに格納する。また、フレームメモリに格納された画像を処理し、対象物の識別、位置姿勢を計測し、処理した対象物の識別結果、および位置姿勢をロボット制御装置１００に送信する。この機能は、上記第１実施形態と同様である。
【００９２】
カメラ５００Ａは、校正器４０等の対象物を撮像し、画像処理装置２００に画像信号を送信する。カメラ５００Ａは、単眼カメラを用いているが、３次元の位置姿勢を計測できる視覚センサであれば良く、複眼カメラ、レーザレンジファインダ、あるいは、それらの組合せでも良い。
【００９３】
以下、ロボットシステム１０Ａにおいて、ハンドアイキャリブレーションを行う方法について述べる。
【００９４】
図８は、第２実施形態に係る座標系校正方法のフローチャートである。制御部としてのＣＰＵ１０１（図２）は、ＨＤＤ１０４に格納されたプログラム１２０を読み出して実行することにより、図８に示すアルゴリズムにより、校正で用いる教示点を自動設定する。ＣＰＵ１０１は、ロボット３００（例えばロボット３００の先端、つまりロボットハンド３０２）を複数の教示点で教示された位置姿勢に動作させて、カメラ５００Ａに校正器４０を撮像させる。次いで、ＣＰＵ１０１は、画像処理装置２００における撮像画像の処理結果に基づいて、ツール座標系Ｃ３とビジョン座標系Ｃ２との校正を行う。以下、上記第１実施形態との差異について述べる。
【００９５】
まず、ＣＰＵ１０１は、校正で用いる３つの教示点を生成し、設定する（Ｓ１’）。上記第１実施形態では、ロボット３００の動作により、校正器４０の位置姿勢を変更させていたのに対し、第２実施形態では、カメラ５００Ａの位置姿勢を変更させる。そのとき、カメラ５００Ａと校正器４０の相対位置姿勢は、図５に示すような位置関係になるように教示点Ｐ１〜Ｐ３を設定する。設定の方法は上記第１実施形態と同様である。
【００９６】
ステップＳ８では、ＣＰＵ１０１は、ＣＡＤデータに基づき、設計上の光軸Ｌ０と平行な第１軸まわりに校正器４０をカメラ５００Ａに対して仮想的に相対的に回転させる。第２実施形態では、校正器４０が固定されているので、カメラ５００Ａを仮想的に回転させている。そして、ＣＰＵ１０１は、カメラ５００Ａを、所定の刻み幅（角度）で回転させて、ロボット３００及びカメラ５００Ａが障害物６０に干渉しない第１回転角度を探索する。
【００９７】
そして、第１回転角度を探し当てた場合、ステップＳ９では、ＣＰＵ１０１は、校正器４０がカメラ５００Ａに対して第１軸まわりに第１回転角度で相対的に回転するように教示点Ｐ１，Ｐ２又は教示点Ｐ３を再設定する。つまり、ＣＰＵ１０１は、カメラ５００Ａが第１軸まわりに第１回転角度で回転するように教示点Ｐ１，Ｐ２又は教示点Ｐ３を再設定する。ステップＳ１０，Ｓ１１についても同様である。
【００９８】
次に、ＣＰＵ１０１は、ステップＳ６’において、ステップＳ５で決定した３つの教示点Ｐ１〜Ｐ３にロボット３００を動作させる。そして、ＣＰＵ１０１は、それぞれの教示点Ｐ１〜Ｐ３においてロボット座標系Ｃ１とツール座標系Ｃ３の相対位置姿勢と、ビジョン座標系Ｃ２とマーカ座標系Ｃ４の相対位置姿勢を得る。
【００９９】
ここで、ツール座標系Ｃ３とビジョン座標系Ｃ２との相対位置姿勢を同次変換行列Ｈｔｖ，ロボット座標系Ｃ１とマーカ座標系Ｃ４との相対位置姿勢を同次変換行列Ｈｒｐとする。また、３点それぞれの教示点における、ロボット座標系Ｃ１とツール座標系Ｃ３と相対位置姿勢を同次変換行列Ｈｒｔ１，Ｈｒｔ２，Ｈｒｔ３とする。また、ビジョン座標系Ｃ２とマーカ座標系Ｃ４との相対位置姿勢を同次変換行列Ｈｖｐ１，Ｈｖｐ２，Ｈｖｐ３とすると、次式で示す連立方程式が得られる。
【０１００】
【数３】
2015062991.tif 000005
【０１０１】
式（３）をＨｔｖとＨｒｐについて最適化計算を解くことによって、ハンドアイキャリブレーションすべきツール座標系Ｃ３とビジョン座標系Ｃ２との相対位置姿勢Ｈｔｖを求めることができる。そして、ＣＰＵ１０１は、求めたツール座標系Ｃ３とビジョン座標系Ｃ２の相対位置姿勢Ｈｔｖをロボット制御装置１００に設定値として更新する（Ｓ７’）。これにより、処理は終了する。なお、ステップＳ２〜Ｓ５、Ｓ８〜Ｓ１２は、上記第１実施形態と略同様の処理を実行する。
【０１０２】
以上より、カメラ５００と校正器４０を用いたハンドアイキャリブレーションにおいて、正確な設計データが明らかな特別な治具を必要とせず、かつ、より狭い位置での高精度な校正が可能となる。さらに、校正用教示点について障害物６０と干渉しない点を自動で探索可能となる。そして、ロボット３００及び校正器４０が障害物６０に干渉しない教示点を、自動で探索することで、ユーザが試行錯誤で探索する必要がなくなり、ユーザの負担が軽減する。
【０１０３】
特に、校正器４０のマーカ４１（即ち、ドット４３等の特徴点）の位置がＣＰＵ１０１において未知の場合には、３つの教示点Ｐ１〜Ｐ３が必要であり、教示点Ｐ１と教示点Ｐ２との相対的な位置姿勢を維持しながら探索する必要がある。第２実施形態では、この探索作業が自動で行われるため、ユーザが試行錯誤で探索する煩雑な必要がなくなり、ユーザの負担が効果的に軽減する。
【０１０４】
なお、本発明は、以上説明した実施形態に限定されるものではなく、多くの変形が本発明の技術的思想内で当分野において通常の知識を有する者により可能である。
【０１０５】
第１、第２実施形態では、校正で用いる教示点が、３つの教示点のみの場合について説明したが、これら３つの教示点以外に更に別の教示点が含まれていてもよい。即ち、上記条件を満たす３点を含んでいれば、３点に限定されるものでなく、３点以上設定してもよい。そのとき、それらの点で式（２）又は式（３）の関係を立て、その式を最小二乗法などの最適化計算を解くことで、ハンドアイキャリブレーションすべきロボット座標系又はツール座標系と、ビジョン座標系との相対位置姿勢を求めることができる。
【０１０６】
また、ステップＳ８において、校正領域Ａが長方形である場合、干渉しない教示点として校正領域Ａの他の頂点が選択できる場合は、ステップＳ９において、教示点を再設定することも手段として取り得る。
【０１０７】
さらに、ステップＳ１２において、ユーザの判断で校正精度を犠牲にすることで、教示点を校正領域Ａの内側に再設定することも手段として取り得る。
【０１０８】
また、ステップＳ８，Ｓ１０において、ＣＡＤデータに基づき校正器４０（又はカメラ５００Ａ）を回転操作して教示点を探索したが、回転に限らず、並進させてもよい。その際、教示点Ｐ１，Ｐ２を再設定する場合には、カメラ５００，５００Ａから見た校正器４０の相対角度αを維持しながら並進させればよい。
【０１０９】
また、上記第１、第２実施形態では、校正器のマークの位置が未知の場合について説明したが、制御部であるＣＰＵにおいて、校正器のマークの位置が既知の場合についても本発明は適用可能である。その際、校正に用いる教示点は１つであってもよい。
【０１１０】
上記実施形態の各処理動作は具体的には制御部としてのＣＰＵ１０１により実行されるものである。従って上述した機能を実現するプログラムを記録した記録媒体を制御装置に供給し、制御装置のコンピュータ（ＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムを読み出し実行することによって達成されるようにしてもよい。この場合、記録媒体から読み出されたプログラム自体が上述した実施形態の機能を実現することになり、プログラム自体及びそのプログラムを記録した記録媒体は本発明を構成することになる。
【０１１１】
また、上記実施形態では、コンピュータ読み取り可能な記録媒体がＨＤＤ１０４であり、ＨＤＤ１０４にプログラム１２０が格納される場合について説明したが、これに限定するものではない。プログラムは、コンピュータ読み取り可能な記録媒体であれば、いかなる記録媒体に記録されていてもよい。例えば、プログラムを供給するための記録媒体としては、図２に示すＲＯＭ１０２、記録ディスク８００、不図示の外部記憶装置等を用いてもよい。具体例を挙げて説明すると、記録媒体として、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、書き換え可能な不揮発性のメモリ（例えばＵＳＢメモリ）、ＲＯＭ等を用いることができる。
【０１１２】
また、上記実施形態におけるプログラムを、ネットワークを介してダウンロードしてコンピュータにより実行するようにしてもよい。
【０１１３】
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施形態の機能が実現されるだけに限定するものではない。そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【０１１４】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれてもよい。そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって上記実施形態の機能が実現される場合も含まれる。
【０１１５】
また、上記実施形態では、コンピュータがＨＤＤ等の記録媒体に記録されたプログラムを実行することにより、処理を行う場合について説明したが、これに限定するものではない。プログラムに基づいて動作する演算部の一部又は全部の機能をＡＳＩＣやＦＰＧＡ等の専用ＬＳＩで構成してもよい。なお、ＡＳＩＣはApplication  Specific  Integrated  Circuit、ＦＰＧＡはField-Programmable  Gate  Arrayの頭字語である。
【符号の説明】
【０１１６】
１０…ロボットシステム、４０…校正器、６０…障害物、１０１…ＣＰＵ（制御部）、１２０…プログラム、３００…ロボット、５００…カメラ（視覚センサ）
【図１】
2015062991.tif 000006
【図２】
2015062991.tif 000007
【図３】
2015062991.tif 000008
【図４】
2015062991.tif 000009
【図５】
2015062991.tif 000010
【図６】
2015062991.tif 000011
【図７】
2015062991.tif 000012
【図８】
2015062991.tif 000013