(57)【特許請求の範囲】
【請求項１】
キャリブレーションデータを使用してロボットの動作を制御するロボット制御部と、
ビジョンセンサが取得した画像データから基準マーカのカメラ座標を取得する画像処理部と、
前記キャリブレーションデータに対応する前記基準マーカのカメラ座標と前記基準マーカの現在のカメラ座標との差に基づいて誤差を求める誤差算出部と、
前記誤差の絶対値が閾値より大きくなった場合に、新たなキャリブレーションデータを算出するキャリブレーションデータ算出部と、
前記新たなキャリブレーションデータを登録するキャリブレーションデータ記憶部と、
を備え、
前記ロボットの動作を間に挟んで前記キャリブレーションデータ算出部に前記新たなキャリブレーションデータを複数回算出させて、前記キャリブレーションデータ記憶部に複数の前記新たなキャリブレーションデータを登録させる
ことを特徴とするロボット制御装置。
【請求項２】
前記キャリブレーションデータ記憶部に登録されているキャリブレーションデータと類似しない前記新たなキャリブレーションデータを前記キャリブレーションデータ記憶部に登録させる
ことを特徴とする請求項１に記載のロボット制御装置。
【請求項３】
前記誤差の絶対値が閾値より大きくなった場合に、前記キャリブレーションデータ記憶部に登録された複数のキャリブレーションデータの中から前記誤差の絶対値が最小になるキャリブレーションデータを選択するキャリブレーションデータ選択部をさらに備え、
前記ロボット制御部は、前記キャリブレーションデータ選択部が選択したキャリブレーションデータを使用する
ことを特徴とする請求項１または２に記載のロボット制御装置。
【請求項４】
前記ビジョンセンサは前記ロボットに備えられている
ことを特徴とする請求項１から３のいずれか１つに記載のロボット制御装置。
【請求項５】
前記ビジョンセンサは動かないように固定されている
ことを特徴とする請求項１から３のいずれか１つに記載のロボット制御装置。
【請求項６】
キャリブレーションデータを使用してロボットを動作させる動作ステップと、
ビジョンセンサが取得した画像データから基準マーカのカメラ座標を取得するステップと、
前記キャリブレーションデータに対応する前記基準マーカのカメラ座標と前記基準マーカの現在のカメラ座標との差に基づいて誤差を求める誤差算出ステップと、
前記誤差の絶対値が閾値より大きくなった場合に、新たなキャリブレーションデータを算出するステップと、
前記新たなキャリブレーションデータを登録する登録ステップと、
を備え、
前記動作ステップを間に挟んで前記算出するステップに前記新たなキャリブレーションデータを複数回算出させることにより、前記登録ステップが複数の前記新たなキャリブレーションデータを登録する
ことを特徴とするキャリブレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、ロボットを制御するロボット制御装置およびロボット制御装置におけるキャリブレーション方法に関する。
【背景技術】
【０００２】  ロボットの絶対位置の精度向上を目的とした機構誤差の補正方法として、以下の特許文献１のような方法が提案されている。特許文献１においては、ロボットの作業領域を区分し、その小領域毎にロボットの機構誤差を計算し、その誤差が小さくなる誤差解析式を決定し、その解析式を使用して機構誤差を補正している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平０７−２０００１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】  特許文献１の従来技術においては、領域を分割した小領域毎に誤差を小さくする誤差解析式を決定していることから、作業空間における機構誤差の低減は保障される。しかし、ロボットを長期稼働させた際の熱ドリフトといった経時的な変化における機構誤差の低減は保障されていないため、ロボットを長期稼働させた場合において、ロボットの絶対位置の精度が低下するという問題があった。【０００５】  本発明は、上記に鑑みてなされたものであって、ロボットに経時的な機構誤差が生じる環境下において、ロボットの動作の位置精度の向上を図ることが可能なロボット制御装置を得ることを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、本発明は、キャリブレーションデータを使用してロボットの動作を制御するロボット制御部と、ビジョンセンサが取得した画像データから基準マーカのカメラ座標を取得する画像処理部と、キャリブレーションデータに対応する基準マーカのカメラ座標と基準マーカの現在のカメラ座標との差に基づいて誤差を求める誤差算出部と、誤差の絶対値が閾値より大きくなった場合に、新たなキャリブレーションデータを算出するキャリブレーションデータ算出部と、新たなキャリブレーションデータを登録するキャリブレーションデータ記憶部と、を備える。本発明は、ロボットの動作を間に挟んでキャリブレーションデータ算出部に新たなキャリブレーションデータを複数回算出させて、キャリブレーションデータ記憶部に複数の新たなキャリブレーションデータを登録させることを特徴とする。
【発明の効果】
【０００７】  本発明によれば、ロボットに経時的な機構誤差が生じる環境下において、ロボットの動作の位置精度の向上を図ることが可能なロボット制御装置を得ることができるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施の形態１にかかるロボット制御システムの構成例を示す図
【図２】実施の形態１にかかるロボット、ビジョンセンサおよび基準マーカの様子を示す斜視図
【図３】実施の形態１にかかるロボット制御装置の機能をコンピュータで実現する場合のハードウェア構成を示す図
【図４】実施の形態１にかかるキャリブレーションデータの事前登録を説明するフローチャート
【図５】実施の形態１におけるカメラ座標における誤差とロボット座標における誤差との関係を説明する図
【図６】実施の形態１にかかるロボット、ビジョンセンサおよび基準マーカの別の構成の様子を示す斜視図
【図７】実施の形態１にかかる固定方式における基準マーカの撮像画面を示す図
【図８】実施の形態１にかかる固定方式における基準マーカの撮像画面を示す別の図
【図９】本発明の実施の形態２にかかるロボット制御装置の構成を示す図
【図１０】実施の形態２にかかるキャリブレーションデータを使用したロボット制御システムの実運用時のフローチャート
【図１１】実施の形態２における誤差の時間変化を説明する図
【発明を実施するための形態】
【０００９】  以下に、本発明の実施の形態にかかるロボット制御装置およびキャリブレーション方法を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１０】実施の形態１．  図１は、本発明の実施の形態１にかかるロボット制御システム１００の構成例を示す図である。図２は、実施の形態１にかかるロボット１、ビジョンセンサ３および基準マーカ５の様子を示す斜視図である。図１および図２は、ビジョンセンサ３がロボット１の手先に取り付けられているハンドアイ方式の例が示されている。
【００１１】  図１に示すように、ロボット制御システム１００は、ロボット１と、ロボット１を制御するロボット制御装置２と、ロボット１の手先に取り付けられたビジョンセンサ３と、作業台４と、作業台４の上のロボット１の動作範囲内に設置された基準マーカ５と、を備える。ビジョンセンサ３の具体例はカメラである。
【００１２】  ロボット制御装置２は、キャリブレーションデータを使用してロボット１に指令を出してロボット１の動作を制御するロボット制御部２０と、ビジョンセンサ３が取得した画像データを処理する画像処理部２１と、ロボット１の制御位置誤差を算出する誤差算出部２２と、算出された誤差を判定する誤差判定部２３と、を備える。キャリブレーションデータは、ロボット１の座標系であるロボット座標系とビジョンセンサ３の座標系であるカメラ座標系との間の変換、すなわち校正を行うためのパラメータである。
【００１３】  ロボット制御装置２は、さらに、キャリブレーションデータを算出するキャリブレーションデータ算出部２４と、算出されたキャリブレーションデータと登録されているキャリブレーションデータとの類似度を判定するキャリブレーションデータ類似判定部２５と、キャリブレーションデータを登録するキャリブレーションデータ記憶部２６と、ロボット制御部２０が使用するキャリブレーションデータを更新するキャリブレーションデータ更新部２７と、キャリブレーションデータの算出を繰り返すか否かを判定する終了条件判定部２８と、を備える。
【００１４】  ロボット制御装置２は、キャリブレーションデータを自動的に求める自動キャリブレーション機能を有している。自動キャリブレーションとは、ビジョンセンサ３が取り付けられたロボット１の手先を前後左右といった方向に動かし、複数の視点から基準マーカ５を撮像して認識し、基準マーカ５のカメラ座標と、ロボット１のロボット座標との対応関係を取得することで、キャリブレーションデータを算出することである。ここで、基準マーカ５のカメラ座標は、ビジョンセンサ３の撮像画面内におけるカメラ座標系での基準マーカ５の座標である。カメラ座標系は、ここでは２次元の例で説明するが、２次元に限定されず３次元であってもかまわない。ロボット１のロボット座標とは、ロボット１が接地された空間における、ビジョンセンサ３が取り付けられたロボット１の手先の３次元座標である。
【００１５】  ロボット制御装置２の自動キャリブレーションにおいては、まず、ロボット制御部２０の指令に基づいてビジョンセンサ３が取り付けられたロボット１の手先が前後左右といった方向に動かされ、基準マーカ５をビジョンセンサ３が複数の視点から撮像して画像データが取得される。画像処理部２１は取得した複数の視点での画像データから基準マーカ５を認識して、基準マーカ５のそれぞれのカメラ座標を得る。複数の視点から基準マーカ５をビジョンセンサ３が撮像した時のロボット１のロボット座標系におけるそれぞれのロボット座標はロボット制御部２０が把握しているので、カメラ座標とロボット座標との組み合わせを視点の数だけ取得することができる。１つの視点におけるカメラ座標とロボット座標との対応関係により、キャリブレーションデータの各パラメータを未知数とする方程式が１つ得られる。したがって、３つ以上の視点におけるカメラ座標とロボット座標との組み合わせを取得することにより、方程式が３つ以上得られる。そして、キャリブレーションデータ算出部２４は、得られた３つ以上の方程式を連立させて解くことによりキャリブレーションデータを算出することが可能となる。このようにしてキャリブレーションデータを算出することが自動キャリブレーションである。
【００１６】  図３は、実施の形態１にかかるロボット制御装置２の機能をコンピュータで実現する場合のハードウェア構成を示す図である。ロボット制御装置２の機能をコンピュータで実現する場合、ロボット制御装置２の機能は、図３に示すようにＣＰＵ（Central  Processing  Unit）２０１、メモリ２０２、記憶装置２０３、表示装置２０４および入力装置２０５により実現される。ロボット制御装置２のキャリブレーションデータ記憶部２６の機能は、記憶装置２０３により実現されるが、ロボット制御装置２のそれ以外の機能は、ロボット１の動作プログラムといったソフトウェアにより実現される。ソフトウェアは、プログラムとして記述されて記憶装置２０３に格納される。ＣＰＵ２０１は、記憶装置２０３に記憶された動作プログラムをメモリ２０２に読み出してロボット１の動作を制御する。また、このようにして、ＣＰＵ２０１は、実施の形態１にかかるロボット制御装置２における以下に説明するキャリブレーション方法を実現する。すなわち、動作プログラムは、実施の形態１にかかるキャリブレーション方法をコンピュータに実行させるものである。したがって、ロボット制御装置２は、実施の形態１にかかるキャリブレーション方法を実施するステップを結果的に実行することになる動作プログラムを格納するための記憶装置２０３を備えていることになる。メモリ２０２は、ＲＡＭ（Random  Access  Memory）といった揮発性の記憶領域が該当する。記憶装置２０３は、ＲＯＭ（Read  Only  Memory）、フラッシュメモリー、ＥＰＲＯＭ（Erasable  Programmable  Read  Only  Memory）、ＥＥＰＲＯＭ（登録商標）（Electrically  Erasable  Programmable  Read  Only  Memory）といった不揮発性または揮発性の半導体メモリ、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ（Digital  Versatile  Disk）が該当する。表示装置２０４の具体例は、モニタ、ディスプレイである。入力装置２０５の具体例は、キーボード、マウス、タッチパネルである。
【００１７】  図４は、実施の形態１にかかるキャリブレーションデータの事前登録を説明するフローチャートである。キャリブレーションデータの事前登録とは、ロボット１の実運用の前にキャリブレーションデータを生成してキャリブレーションデータ記憶部２６に登録することである。以下では、登録されているキャリブレーションデータが存在しない最初の状態からはじめて、複数のキャリブレーションデータを登録する手順を説明する。
【００１８】  まず、ロボット制御部２０は、基準マーカ５を撮像する位置へロボット１の手先を移動させる（ステップＳ００１）。この移動は、基準マーカ５をビジョンセンサ３が撮像できる位置までロボット１を移動すればよい。この移動による移動後のロボット１のロボット座標を基準ロボット座標としてロボット制御装置２が記憶し、以後の基準マーカ５の撮像時には、ロボット制御部２０はロボット１のロボット座標が基準ロボット座標となるように制御する。
【００１９】  次に、ビジョンセンサ３が基準マーカ５を撮像して画像データを作成し、画像処理部２１が画像データを処理して基準マーカ５のカメラ座標ｖｘを取得する（ステップＳ００２）。
【００２０】  ステップＳ００２の後は、ステップＳ０１６に進み自動キャリブレーションを実行する。先に説明したように自動キャリブレーションを実行してキャリブレーションデータ算出部２４がキャリブレーションデータを算出する。このキャリブレーションデータを最初の予備キャリブレーションデータＧ１とする。ここで、キャリブレーションデータ算出部２４が算出したキャリブレーションデータを予備キャリブレーションデータと呼ぶのは、この後説明するように、算出されたキャリブレーションデータがキャリブレーションデータ記憶部２６に登録されないことがあるからである。
【００２１】  次に、ステップＳ０１６で算出された予備キャリブレーションデータがキャリブレーションデータ記憶部２６に既に登録されているキャリブレーションデータに類似するか否かをキャリブレーションデータ類似判定部２５が判定する（ステップＳ０１７）。算出された予備キャリブレーションデータがキャリブレーションデータ記憶部２６に既に登録されているキャリブレーションデータに類似するとキャリブレーションデータ類似判定部２５が判定した場合（ステップＳ０１７：Ｙｅｓ）、算出された予備キャリブレーションデータは破棄され、ステップＳ０２０に進む。算出された予備キャリブレーションデータがキャリブレーションデータ記憶部２６に既に登録されているキャリブレーションデータに類似しないとキャリブレーションデータ類似判定部２５が判定した場合（ステップＳ０１７：Ｎｏ）、ステップＳ０１８に進む。
【００２２】  ステップＳ０１６で算出された予備キャリブレーションデータが最初の予備キャリブレーションデータＧ１である場合は、キャリブレーションデータ記憶部２６に既に登録されているキャリブレーションデータが存在しない。この場合も、ステップＳ０１７において、予備キャリブレーションデータＧ１は、キャリブレーションデータ記憶部２６に既に登録されているキャリブレーションデータに類似しないとキャリブレーションデータ類似判定部２５が判定し（ステップＳ０１７：Ｎｏ）、ステップＳ０１８に進む。なお、キャリブレーションデータ類似判定部２５による類似の判定方法については後で詳述する。
【００２３】  ロボット制御装置２は、既に登録されているキャリブレーションデータと類似していないとキャリブレーションデータ類似判定部２５によって判定された予備キャリブレーションデータをキャリブレーションデータ記憶部２６に登録する（ステップＳ０１８）。したがって、ステップＳ０１６で求められた予備キャリブレーションデータＧ１は、キャリブレーションデータＨ１としてキャリブレーションデータ記憶部２６に登録される。キャリブレーションデータＨ１は、キャリブレーションデータ記憶部２６に最初に、即ち、一番目に登録されたキャリブレーションデータである。このとき、ステップＳ００２で取得されたカメラ座標ｖｘは、キャリブレーションデータＨ１に対応する基準マーカ５のカメラ座標ｍ１としてキャリブレーションデータＨ１と共にキャリブレーションデータ記憶部２６に登録される。
【００２４】  そして、ステップＳ０１９においては、キャリブレーションデータ更新部２７が、ロボット制御部２０が使用するキャリブレーションデータを、ステップＳ０１８でキャリブレーションデータ記憶部２６に登録したキャリブレーションデータＨ１に更新する。ステップＳ０１９においては、キャリブレーションデータ更新部２７が、ロボット制御部２０が使用するキャリブレーションデータに設定されているキャリブレーションデータを、新たに登録されたキャリブレーションデータ、すなわちキャリブレーションデータ記憶部２６に最後に登録されたキャリブレーションデータに更新する。キャリブレーションデータ記憶部２６に最初のキャリブレーションデータＨ１が登録されて最初にステップＳ０１９に進んだときは、ロボット制御部２０が使用するキャリブレーションデータが設定されていないので、キャリブレーションデータＨ１がロボット制御部２０に設定される。
【００２５】  ステップＳ０２０では、終了条件が満たされるか否かを終了条件判定部２８が判定する。終了条件は、この後説明するステップＳ０１１におけるロボット１の動作時間が複数回加算された合計が実運用で想定される時間を超えた場合、予め定めた数のキャリブレーションデータのキャリブレーションデータ記憶部２６への登録が完了した場合、といった条件であり、複数の条件のいずれかを満たせば終了とすることを終了条件としてもよい。ステップＳ０１１におけるロボット１の動作時間が加算された合計が実運用で想定される時間を超えた場合を終了条件とするのは、実運用に沿った環境におけるキャリブレーションデータの取得が完了したと想定されるためである。また、予め定めた数のキャリブレーションデータのキャリブレーションデータ記憶部２６への登録が完了した場合を終了条件とするのは、登録されたキャリブレーションデータの多様性が必要なだけ確保できたと考えられるためである。したがって、終了条件が満たされたと終了条件判定部２８が判定すれば（ステップＳ０２０：Ｙｅｓ）、処理は終了である。
【００２６】  ただし、ステップＳ００１から最初にステップＳ０２０に進んだ場合は、ステップＳ０１１も経ていないし、キャリブレーションデータ記憶部２６に一つしかキャリブレーションデータが登録されていないので、終了条件判定部２８は終了条件が満たされていないと判定し（ステップＳ０２０：Ｎｏ）、ステップＳ０１１に進む。
【００２７】  ステップＳ０１１では、ロボット制御部２０はロボット１に実運用と同じ動作を行わせる。ステップＳ０１１におけるロボット１の動作は、連続動作試験といった事前動作確認においてロボット１に実行させる動作であり、図４のキャリブレーションデータの事前登録は、連続動作試験といった事前動作確認作業に追加して実行することが可能である。
【００２８】  ステップＳ０１１における予め定められたロボット１の動作が終了すると、ロボット制御部２０は、基準マーカ５を撮像する位置へロボット１の手先を移動させる（ステップＳ０１２）。このとき、ロボット制御部２０は、ロボット１のロボット座標がステップＳ００１で記憶された基準ロボット座標となるように制御する。
【００２９】  次に、ビジョンセンサ３が基準マーカ５を撮像して画像データを作成し、画像処理部２１が画像データを処理して基準マーカ５のカメラ座標ｖｘを取得する（ステップＳ０１３）。このとき取得されたカメラ座標ｖｘがステップＳ００２または前回のステップＳ０１３で取得されたカメラ座標ｖｘと異なる場合は、その原因は、ロボット１を稼働させた際の熱ドリフトといった経時的な変化による機構誤差である。
【００３０】  そして、誤差算出部２２がロボット１の制御位置誤差ｄを算出する（ステップＳ０１４）。具体的には、以下の数式（１）に基づいて算出する。  ｄ＝Ｈｉ（ｖｘ−ｍｉ）    ｉ＝１，．．，ｎ      （１）ここで、ｖｘ，ｍｉ，ｄはベクトルであり、Ｈｉは行列である。
【００３１】  数式（１）におけるＨｉは、ロボット制御部２０が現在使用しているキャリブレーションデータであり、ｍｉはキャリブレーションデータＨｉに対応する基準マーカ５のカメラ座標である。したがって、（ｖｘ−ｍｉ）は、ロボット１が基準ロボット座標となるように制御された状態で撮像された基準マーカ５の現在のカメラ座標ｖｘが、使用されているキャリブレーションデータＨｉに対応する基準マーカ５のカメラ座標ｍｉからどれだけずれたかを示すカメラ座標における誤差ベクトルである。そして、キャリブレーションデータＨｉに（ｖｘ−ｍｉ）を乗ずることによりロボット座標における誤差ベクトルである制御位置誤差ｄが得られる。
【００３２】  図５は、実施の形態１におけるカメラ座標における誤差とロボット座標における誤差との関係を説明する図である。図５のカメラ座標においてカメラ座標ｖｘに基準マーカ５の現在の認識位置が示されている。そして、ロボット制御部２０に現在設定されて使用されているキャリブレーションデータＨｉに対応する基準マーカ５のカメラ座標ｍｉも図５のカメラ座標に示されている。カメラ座標ｖｘがカメラ座標ｍｉからずれているのは、上述したようにロボット１を稼働させた際の熱ドリフトといった経時的変化における機構誤差が原因である。そして、数式（１）の右辺の括弧を外したときの第一項であるＨｉｖｘは、ロボット座標における今回のカメラ座標ｖｘに対応する計測点となる。数式（１）の右辺の括弧を外したときの第二項であるＨｉｍｉは基準マーカ５の設置位置に基づいて決定されるロボット座標における固定座標であり、これが基準ロボット座標になっている。Ｈｉｍｉが固定座標であることは、基準マーカ５のカメラ座標ｍｉが動くことによりキャリブレーションデータＨｉを変更する必要があることを示している。そして、ＨｉｖｘのＨｉｍｉからのずれがロボット座標における誤差ベクトルである制御位置誤差ｄになっている。
【００３３】  なお、最初にステップＳ０１４に入ったときは、ロボット制御部２０が現在使用しているキャリブレーションデータはＨ１であり、キャリブレーションデータＨ１に対応する基準マーカ５のカメラ座標はｍ１であるので、数式（１）は、ｄ＝Ｈ１（ｖｘ−ｍ１）となる。
【００３４】  ステップＳ０１４でロボット１の制御位置誤差ｄを求めた後、誤差判定部２３は、誤差ｄの絶対値が予め定めた閾値より大きいか否かを判定する（ステップＳ０１５）。誤差ｄの絶対値が閾値以下であると誤差判定部２３が判定した場合（ステップＳ０１５：Ｎｏ）、ステップＳ０２０に進む。
【００３５】  誤差ｄの絶対値が予め定めた閾値より大きいと誤差判定部２３が判定した場合（ステップＳ０１５：Ｙｅｓ）、ステップＳ０１６に進み自動キャリブレーションを実行する。ステップＳ０１６において、キャリブレーションデータ算出部２４が算出した新たなキャリブレーションデータを予備キャリブレーションデータＧ２とする。
【００３６】  次に、ステップＳ０１７において、ステップＳ０１６で求められた予備キャリブレーションデータＧ２がキャリブレーションデータ記憶部２６に既に登録されているキャリブレーションデータに類似するか否かをキャリブレーションデータ類似判定部２５が判定する（ステップＳ０１７）。キャリブレーションデータ記憶部２６に現在登録されているのはキャリブレーションデータＨ１だけである。したがって、予備キャリブレーションデータＧ２がキャリブレーションデータＨ１に類似するとキャリブレーションデータ類似判定部２５が判定した場合（ステップＳ０１７：Ｙｅｓ）、予備キャリブレーションデータＧ２は破棄され、ステップＳ０２０に進む。予備キャリブレーションデータＧ２がキャリブレーションデータＨ１に類似しないとキャリブレーションデータ類似判定部２５が判定した場合（ステップＳ０１７：Ｎｏ）、ステップＳ０１８に進み、予備キャリブレーションデータＧ２は、キャリブレーションデータＨ２としてキャリブレーションデータ記憶部２６に登録される。
【００３７】  ステップＳ０１７において、予備キャリブレーションデータＧ２が登録されているキャリブレーションデータＨ１と類似するか否かをキャリブレーションデータ類似判定部２５が判定する判定方法の一例を以下に説明する。まず、行列である予備キャリブレーションデータＧ２の要素を順に並べてノルムが１のベクトルにして、これをｇ２とする。次に、同じく行列であるキャリブレーションデータＨ１の要素をｇ２を作成したときと同じ順に並べてノルムが１のベクトルにして、これをｈ１とする。そして、ｇ２とｈ１との内積を計算し、定められた値と比較する。ｇ２とｈ１との内積が定められた値以上の場合は、キャリブレーションデータ類似判定部２５は、予備キャリブレーションデータＧ２がキャリブレーションデータＨ１に類似していると判定する（ステップＳ０１７：Ｙｅｓ）。一方、ｇ２とｈ１との内積が定められた値未満の場合は、キャリブレーションデータ類似判定部２５は、予備キャリブレーションデータＧ２がキャリブレーションデータＨ１に類似していないと判定する（ステップＳ０１７：Ｎｏ）。
【００３８】  ステップＳ０１８で、予備キャリブレーションデータＧ２がキャリブレーションデータＨ２として、キャリブレーションデータ記憶部２６に登録された後は、ステップＳ０１９に進む。
【００３９】  ステップＳ０１９においては、キャリブレーションデータ更新部２７が、ロボット制御部２０が使用するキャリブレーションデータに設定されているキャリブレーションデータＨ１を、キャリブレーションデータ記憶部２６に新たに登録されたキャリブレーションデータＨ２に更新する。その後、ステップＳ０２０に進む。
【００４０】  以上のようにして、図４に示されたフローチャートが実行されて、ステップＳ０１８が繰り返し実行されることにより、キャリブレーションデータ記憶部２６には、ロボット１の実動作環境における経時的変化を考慮した条件下での多様性を有したｎ個のキャリブレーションデータであるキャリブレーションデータＨ１，Ｈ２，．．，Ｈｎが事前登録されることになる。また、キャリブレーションデータＨ１，Ｈ２，．．，Ｈｎそれぞれに対応する基準マーカ５のカメラ座標ｍ１，ｍ２，．．，ｍｎもキャリブレーションデータ記憶部２６に登録される。
【００４１】  以上説明したように、実施の形態１にかかるロボット制御装置２によれば、ロボット１を長期稼働させた際の熱ドリフトといった経時的な機構誤差が生じる環境下において、当該機構誤差を考慮した複数のキャリブレーションデータをキャリブレーションデータ記憶部２６に登録することができる。これら複数のキャリブレーションデータをロボット制御部２０が使用することにより、ロボット１に経時的な変形が加わる場合においても、機構誤差を補正してロボット１の動作の位置精度の向上を図ることが可能となる。
【００４２】  ロボット制御部２０は、登録された複数のキャリブレーションデータをキャリブレーションデータ記憶部２６に登録された順番に使用してもよい。また、ロボット制御部２０は、登録された複数のキャリブレーションデータをキャリブレーションデータ記憶部２６に登録された時間間隔に従って使用してもよい。さらに、ロボット制御部２０は、登録された複数のキャリブレーションデータを実施の形態２においてこの後説明する方法に従って使用してもよい。いずれの方法によっても、ロボット１に経時的な変形が加わる場合において、機構誤差を補正してロボット１の動作の位置精度の向上を図ることが期待できる。
【００４３】  なお、図４に示されたフローチャートは、ロボット１にステップＳ０１１の処理を実行させる動作プログラムに、図４のステップＳ０１１以外の処理を実行する内容を追加することによって実現することが可能である。
【００４４】  図１および図２では、ビジョンセンサ３がロボット１の手先に取り付けられているハンドアイ方式の例を示したが、ビジョンセンサ３の設置方式はこれに限定されない。図６は、実施の形態１にかかるロボット１、ビジョンセンサ３および基準マーカ５の別の構成の様子を示す斜視図である。図７は、実施の形態１にかかる固定方式における基準マーカ５の撮像画面を示す図である。図８は、実施の形態１にかかる固定方式における基準マーカ５の撮像画面を示す別の図である。
【００４５】  図６に示すように、ロボット１が設置されている空間にビジョンセンサ３が動かないように固定されていて、基準マーカ５がロボット１の手先に取り付けられている固定方式を採用してもよい。なお、図６では記載を省いたロボット制御装置２にビジョンセンサ３は接続されている。
【００４６】  この場合、図４のステップＳ００２およびキャリブレーションデータを登録することになる場合のステップＳ０１３において、基準マーカ５のカメラ座標ｖｘすなわちカメラ座標ｍｉを取得する様子が図７に示される。そして、図７のようにしてカメラ座標ｍｉが取得された後、ステップＳ０１１が何度か繰り返されて、ロボット１が熱ドリフトといった経時的変化を経た後に、基準マーカ５のカメラ座標ｖｘを取得する様子が図８に示される。図８に示されるように、カメラ座標ｍｉから経時的変化によりカメラ座標ｖｘが動いている。
【００４７】  このように、固定方式を採用した場合にも、ハンドアイ方式を採用した場合と全く同様に図４のフローチャートを実行することができ、キャリブレーションデータＨ１，Ｈ２，．．，Ｈｎをキャリブレーションデータ記憶部２６に事前登録することが可能である。なお、ビジョンセンサ３の構成方法は、図４のフローチャートを実行することができるのであれば、ハンドアイ方式および固定方式以外の構成方法を採用してもかまわない。
【００４８】実施の形態２．  図９は、本発明の実施の形態２にかかるロボット制御装置６の構成を示す図である。ロボット制御装置６は、図１のロボット制御装置２にキャリブレーションデータ選択部３０が追加されている。ロボット制御装置６のキャリブレーションデータ選択部３０以外の要素の機能は、同じ符号を付されたロボット制御装置２の要素の機能と同じである。実施の形態２にかかるロボット制御システムの構成は、図１のロボット制御装置２をロボット制御装置６に置き換えた構成である。また、ビジョンセンサ３は、図１および図２のハンドアイ方式、図６の固定方式またはそれ以外のやり方で構成されていてもかまわない。
【００４９】  図１０は、実施の形態２にかかるキャリブレーションデータを使用したロボット制御システムの実運用時のフローチャートである。図１０のフローチャートを開始する前に、実施の形態１で説明したように、キャリブレーションデータ記憶部２６にキャリブレーションデータＨ１，Ｈ２，．．，Ｈｎが事前登録されているとする。そして、使用するキャリブレーションデータとして、キャリブレーションデータＨ１，Ｈ２，．．，Ｈｎの中から選択された１つのキャリブレーションデータＨｋがロボット制御部２０に設定されている。ロボット制御部２０に最初に設定するキャリブレーションデータＨｋは、ロボット１の実運用を開始する際に、熱ドリフトといった経時的変化が起きていない状況であると考えられる場合は、キャリブレーションデータＨ１を選んでもよいが、キャリブレーションデータＨ１，Ｈ２，．．，Ｈｎの中から選択されるのであればいずれのキャリブレーションデータであってもかまわない。
【００５０】  まず、ロボット制御部２０は定められた作業を実行するようにロボット１を動作させる（ステップＳ０２１）。なお、図４のステップＳ０１１では、ステップＳ０２１の動作を行っている。
【００５１】  次に、ロボット制御部２０は、基準マーカ５を撮像する位置へロボット１の手先を移動させる（ステップＳ０２２）。このとき、ロボット制御部２０は、ロボット１が図４のステップＳ００１で記憶された基準ロボット座標となるように制御する。
【００５２】  次に、ビジョンセンサ３が基準マーカ５を撮像して画像データを作成し、画像処理部２１が画像データを処理して基準マーカ５のカメラ座標ｖｘを取得する（ステップＳ０２３）。
【００５３】  そして、誤差算出部２２がロボット１の制御位置誤差ｄを算出する（ステップＳ０２４）。制御位置誤差ｄは、実施の形態１でステップＳ０１４を説明したときに用いた数式（１）により算出する。したがって、最初にステップＳ０２４を実行して求められるｄ＝Ｈｋ（ｖｘ−ｍｋ）となる。
【００５４】  ステップＳ０２４でロボット１の制御位置誤差ｄを求めた後、誤差判定部２３は、誤差ｄの絶対値が予め定めた閾値より大きいか否かを判定する（ステップＳ０２５）。誤差ｄの絶対値が閾値以下であると誤差判定部２３が判定した場合（ステップＳ０２５：Ｎｏ）、ステップＳ０２８に進む。
【００５５】  誤差ｄの絶対値が予め定めた閾値より大きいと誤差判定部２３が判定した場合（ステップＳ０２５：Ｙｅｓ）、ステップＳ０２６に進み、キャリブレーションデータ選択部３０が、キャリブレーションデータ記憶部２６から誤差ｄの絶対値が最小になるキャリブレーションデータを選択する。具体的には、キャリブレーションデータ記憶部２６に登録されているキャリブレーションデータＨ１，Ｈ２，．．，Ｈｎについて数式（１）により誤差ｄを求めて、誤差ｄの絶対値が最小になるキャリブレーションデータをキャリブレーションデータ選択部３０が選択する。
【００５６】  そして、キャリブレーションデータ更新部２７が、ロボット制御部２０が使用するキャリブレーションデータに設定されているキャリブレーションデータを、ステップＳ０２６で選択されたキャリブレーションデータに更新する（ステップＳ０２７）。したがって、最初にステップＳ０２６を実行する場合は、ロボット制御部２０が使用するキャリブレーションデータに設定されているキャリブレーションデータＨｋがステップＳ０２６で選択されたキャリブレーションデータＨｌに更新される。
【００５７】  その後、ステップＳ０２８では、終了条件が満たされるか否かを終了条件判定部２８が判定する。終了条件は、ロボット１の実運用における終了条件である。したがって、終了条件が満たされたと終了条件判定部２８が判定すれば（ステップＳ０２８：Ｙｅｓ）、処理は終了である。終了条件が満たされていないと終了条件判定部２８が判定すれば（ステップＳ０２８：Ｎｏ）、ステップＳ０２１に戻ってロボット１を動作させる。
【００５８】  図１１は、実施の形態２における誤差ｄの時間変化を説明する図である。図１１において、誤差ｄは、ロボット１の経時的な変化による機械誤差によって時間を経るにつれて増大するが、ステップＳ０２７でロボット制御部２０が使用するキャリブレーションデータを更新する度に閾値を超えないように減少している様子が示されている。
【００５９】  以上説明したように、実施の形態２にかかるロボット制御装置６によれば、ロボット１の動作中に経時的な機構誤差に応じたキャリブレーションデータを取得する時間が不要となり、経時的な機構誤差を適切に補正しつつ、ロボット１を効率的に動作させることが可能となる。
【００６０】  以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。
【符号の説明】
【００６１】  １  ロボット、２，６  ロボット制御装置、３  ビジョンセンサ、４  作業台、５  基準マーカ、２０  ロボット制御部、２１  画像処理部、２２  誤差算出部、２３  誤差判定部、２４  キャリブレーションデータ算出部、２５  キャリブレーションデータ類似判定部、２６  キャリブレーションデータ記憶部、２７  キャリブレーションデータ更新部、２８  終了条件判定部、３０  キャリブレーションデータ選択部、１００  ロボット制御システム、２０１  ＣＰＵ、２０２  メモリ、２０３  記憶装置、２０４  表示装置、２０５  入力装置。
【要約】  ロボット制御装置（２）は、キャリブレーションデータを使用してロボット（１）の動作を制御するロボット制御部（２０）と、ビジョンセンサ（３）が取得した画像データから基準マーカ（５）のカメラ座標を取得する画像処理部（２１）と、キャリブレーションデータに対応する基準マーカのカメラ座標と基準マーカの現在のカメラ座標との差に基づいて誤差を求める誤差算出部（２２）と、誤差の絶対値が閾値より大きくなった場合に、新たなキャリブレーションデータを算出するキャリブレーションデータ算出部（２４）と、新たなキャリブレーションデータを登録するキャリブレーションデータ記憶部（２６）と、を備え、ロボットの動作を間に挟んでキャリブレーションデータ算出部に新たなキャリブレーションデータを複数回算出させて、キャリブレーションデータ記憶部に複数のキャリブレーションデータを登録させる。【図１】
0006301045.tif 000002
【図２】
0006301045.tif 000003
【図３】
0006301045.tif 000004
【図４】
0006301045.tif 000005
【図５】
0006301045.tif 000006
【図６】
0006301045.tif 000007
【図７】
0006301045.tif 000008
【図８】
0006301045.tif 000009
【図９】
0006301045.tif 000010
【図１０】
0006301045.tif 000011
【図１１】
0006301045.tif 000012