(57)【要約】 【課題】カメラ座標とロボット座標との間のキャリブレーション作業を容易かつ迅速に行うことができ、かつ、作業ミスを減少させることができるロボットシステムおよびキャリブレーション方法を提供する。【解決手段】本実施形態によるロボットシステムは、テーブル上の複数のマーカの第１画像データを取得する撮像部と、第１画像データに基づいて、複数のマーカの第１カメラ座標値を取得する撮像制御部と、アームの先端部に設けられるキャリブレーション治具を複数のマーカの上方に位置させたときに、複数のマーカの第１ロボット座標値を取得するロボット制御部と、撮像制御部およびロボット制御部から第１カメラ座標値および第１ロボット座標値を取得し該第１カメラ座標値および該第１ロボット座標値に基づいてカメラ座標系の座標値をロボット座標系の座標値に変換する変換式を導出する演算部により導出された該変換式を記憶する記憶部と、を備える。【選択図】図４
2019098409.tif 000002
【特許請求の範囲】
【請求項１】
アームを有するロボットと、
ワークを載置可能なテーブル上の複数のマーカの第１画像データを取得する撮像部と、
前記撮像部を制御し、前記第１画像データに基づいて、前記撮像部により撮像される画像内の座標系であるカメラ座標系における前記複数のマーカの第１カメラ座標値を取得する撮像制御部と、
前記ロボットを制御し、前記アームの先端部に設けられるキャリブレーション治具を前記複数のマーカの上方に位置させたときに、前記ロボットを基準とする座標系であるロボット座標系における前記複数のマーカの第１ロボット座標値を取得するロボット制御部と、
前記撮像制御部および前記ロボット制御部から前記第１カメラ座標値および前記第１ロボット座標値を取得し該第１カメラ座標値および該第１ロボット座標値に基づいて前記カメラ座標系の座標値を前記ロボット座標系の座標値に変換する変換式を導出する演算部により導出された該変換式を記憶する記憶部と、を備えるロボットシステム。
【請求項２】
前記撮像部は、前記ワークの第２画像データを取得し、
前記撮像制御部は、前記第２画像データに基づいて前記ワークの第２カメラ座標値を取得し、
前記ロボット制御部は、前記変換式により前記第２カメラ座標値を前記ワークのワーク変換座標値に変換する、請求項１に記載のロボットシステム。
【請求項３】
前記ロボット制御部は、前記キャリブレーション治具を前記複数のマーカに接触させたときに、２次元平面である前記ロボット座標系に垂直な方向における前記複数のマーカの高さを示す鉛直ロボット座標値を取得し、
前記ロボット制御部は、前記第１ロボット座標値および前記鉛直ロボット座標値に基づいて前記テーブルの平面方程式を演算する、請求項２に記載のロボットシステム。
【請求項４】
前記ロボット制御部は、前記平面方程式および前記ワーク変換座標値に基づいて、前記撮像部の光軸の垂直面に対する前記テーブルの傾きによる座標値のずれを補正した前記ワークのワーク補正座標値を演算する、請求項３に記載のロボットシステム。
【請求項５】
前記平面方程式をａｘ＋ｂｙ＋ｃｚ＋ｄ＝０とし、前記撮像部の座標値を（ｘｖ，ｙｖ，ｚｖ）とし、前記ワーク変換座標値を（ｘｓｆ，ｙｓｆ）とし、前記撮像部の焦点距離をＺＬとし、ｚｖ＋ＺＬをｚｓｆとし、前記ワーク補正座標値（ｘｓｃ，ｙｓｃ，ｚｓｃ）は次の式によって演算される
【数１】
2019098409.tif 000007
請求項４に記載のロボットシステム。
【請求項６】
前記撮像部は、前記テーブルの第３画像データを取得し、
前記撮像制御部は、前記第３画像データに基づいて、前記テーブル上において前記撮像部の光軸から最遠部の第３カメラ座標値を取得し、
前記ロボット制御部は、前記変換式により前記第３カメラ座標値を前記最遠部の最遠部変換座標値に変換し、
前記ロボット制御部は、前記平面方程式および前記最遠部変換座標値に基づいて、前記撮像部の光軸の垂直面に対する前記テーブルの傾きによる座標値のずれを補正した前記最遠部の最遠部補正座標値を演算し、
前記ロボット制御部は、前記最遠部変換座標値と前記最遠部補正座標値との差と、前記ロボットの位置決め精度と、を比較し、
前記差が前記位置決め精度を超える場合、前記ロボット制御部は、前記平面方程式および前記ワーク変換座標値に基づいて、前記撮像部の光軸の垂直面に対する前記テーブルの傾きによる座標値のずれを補正した前記ワークのワーク補正座標値を演算し、前記ワーク補正座標値を前記ワークの座標値とし、
前記差が前記位置決め精度の範囲内である場合、前記ロボット制御部は、前記ワーク変換座標値を前記ワークの座標値とする、請求項３に記載のロボットシステム。
【請求項７】
前記平面方程式をａｘ＋ｂｙ＋ｃｚ＋ｄ＝０とし、前記撮像部の座標値を（ｘｖ，ｙｖ，ｚｖ）とし、前記ワーク変換座標値を（ｘｓｆ，ｙｓｆ）とし、前記撮像部の焦点距離をＺＬとし、ｚｖ＋ＺＬをｚｓｆとし、前記ワーク補正座標値（ｘｓｃ，ｙｓｃ，ｚｓｃ）は次の式によって演算され、
【数２】
2019098409.tif 000008
前記最遠部変換座標値を（ｘａｆ，ｙａｆ）とし、ｚｖ＋ＺＬをｚａｆとし、前記最遠部補正座標値（ｘａｃ，ｙａｃ，ｚａｃ）は次の式によって演算される
【数３】
2019098409.tif 000009
請求項６に記載のロボットシステム。
【請求項８】
前記複数のマーカは、３行３列に配置される、請求項１から請求項７のいずれか一項に記載のロボットシステム。
【請求項９】
アームを有するロボットと、ワークを載置可能なテーブルを撮像する撮像部と、前記撮像部を制御する撮像制御部と、前記ロボットを制御するロボット制御部と、前記撮像部により撮像される画像内の座標系であるカメラ座標系の座標値を、前記ロボットを基準とする座標系であるロボット座標系の座標値に変換する変換式を記憶する記憶部とを備えるロボットシステムにおけるキャリブレーション方法であって、
前記アームの先端部に設けられるキャリブレーション治具を前記テーブル上の複数のマーカの上方に位置させたときに、前記ロボット座標系における前記複数のマーカの第１ロボット座標値を前記ロボット制御部で取得し、
前記複数のマーカの第１画像データを前記撮像部で取得し、
前記第１画像データに基づいて、前記カメラ座標系における前記複数のマーカの第１カメラ座標値を前記撮像制御部で取得し、
前記撮像制御部および前記ロボット制御部から前記第１カメラ座標値および前記第１ロボット座標値を取得し該第１カメラ座標値および該第１ロボット座標値に基づいて前記変換式を導出する演算部により導出された該変換式を前記記憶部で記憶することを具備するキャリブレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明による実施形態は、ロボットシステムおよびキャリブレーション方法に関する。
【背景技術】
【０００２】
産業用ロボットと２次元ビジョンシステムとを組み合わせたロボットシステムが使用されている。例えば、まず、２次元ビジョンシステムに含まれるカメラがワークを撮像することにより、２次元ビジョンシステムがワークの座標値を取得する。その後、取得したワークの座標値をもとにロボットアームが動いて作業をする場合がある。このとき、カメラから見た座標（カメラ座標）とロボットから見た座標（ロボット座標）とは座標の基準が異なる。従って、カメラ座標とロボット座標との間で、同一のワークの座標値が異なってしまう。そこで、カメラ座標をロボット座標に変換する必要がある。この変換の演算に使用する行列式を導入する作業は、キャリブレーション作業と呼ばれる。
【０００３】
しかし、このキャリブレーション作業は、作業工数が多く、手間がかかるため、長時間を要していた。また、作業手順が複雑であり、ユーザが手作業でデータの記録等を行うため、作業ミスも多かった。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−１８０７２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
カメラ座標とロボット座標との間のキャリブレーション作業を容易かつ迅速に行うことができ、かつ、作業ミスを減少させることができるロボットシステムおよびキャリブレーション方法を提供する。
【課題を解決するための手段】
【０００６】
本実施形態によるロボットシステムは、アームを有するロボットと、ワークを載置可能なテーブル上の複数のマーカの第１画像データを取得する撮像部と、撮像部を制御し、第１画像データに基づいて、撮像部により撮像される画像内の座標系であるカメラ座標系における複数のマーカの第１カメラ座標値を取得する撮像制御部と、ロボットを制御し、アームの先端部に設けられるキャリブレーション治具を複数のマーカの上方に位置させたときに、ロボットを基準とする座標系であるロボット座標系における複数のマーカの第１ロボット座標値を取得するロボット制御部と、撮像制御部およびロボット制御部から第１カメラ座標値および第１ロボット座標値を取得し該第１カメラ座標値および該第１ロボット座標値に基づいてカメラ座標系の座標値をロボット座標系の座標値に変換する変換式を導出する演算部により導出された該変換式を記憶する記憶部と、を備える。
【図面の簡単な説明】
【０００７】
【図１】第１実施形態によるロボットシステムの構成の一例を示す図。
【図２】スカラロボットにおけるツール座標系の座標取得を示す図。
【図３】テーブルの上方から見た、テーブルおよび複数のマーカの図。
【図４】ロボット座標値およびカメラ座標値の取得から変換式の保存までのデータの流れの一例を示すブロック図。
【図５】第１実施形態によるロボットシステムの動作の一例を示すフロー図
【図６】第２実施形態によるロボットシステムの構成の一例を示す図。
【図７】垂直多関節ロボットにおけるツール座標系の座標取得を示す図。
【図８】第３実施形態によるテーブルの傾きを示す模式図。
【図９】第３実施形態によるロボットシステムの動作の一例を示すフロー図。
【図１０】変形例によるロボットシステムの動作の一例を示すフロー図
【発明を実施するための形態】
【０００８】
以下、図面を参照して本発明に係る実施形態を説明する。本実施形態は、本発明を限定するものではない。本願明細書と各図において、既出の図に関して前述したものと同様の要素には同一の符号を付して詳細な説明は適宜省略する。
【０００９】
（第１実施形態）
図１は、第１実施形態によるロボットシステム１００の構成の一例を示す図である。ロボットシステム１００は、スカラロボット１と、ロボットコントローラ２と、操作部３と、撮像部５と、ビジョンコントローラ６と、表示部７と、端末８と、演算部９と、ＬＡＮ（Local Area Network）用ハブ１０とを備える。
【００１０】
ロボットとしてのスカラロボット１は、アームを有し、通常動作では、アームを動作させて、例えば、テーブル４に載置されるワークを把持または加工する。このとき、スカラロボット１は、撮像部５で撮像される画像データに基づいてアーム等の位置を決める。撮像部５により撮像される画像内の位置を示すカメラ座標系とスカラロボット１のアームの位置を示すロボット座標系とがずれている場合、スカラロボット１は、ワークを正確に把持したり、加工することができない。従って、通常動作の前にキャリブレーションが行われる。キャリブレーションとは、カメラ座標系の座標値をロボット座標系の座標値に変換する変換式を導出することである。カメラ座標系とは、撮像部５により撮像される画像内の位置を示すために用いられる座標系である。ここでは、ロボット座標系とは、スカラロボット１のアームの先端部を基準とする座標系である。従って、ロボット座標系は、アームの先端部の位置を示すために用いられる。尚、スカラロボット１は、スカラロボットに限られず、同様な機能を有するロボットであればよい。
【００１１】
テーブル４は、ワークまたはキャリブレーションに用いられる複数のマーカ１８を載置可能である。通常動作では、ワークがテーブル４上にある。ここでは、キャリブレーションが行われるため、複数のマーカ１８がテーブル４上にある。
【００１２】
キャリブレーションでは、スカラロボット１のアームの先端部に、キャリブレーション治具１１が設けられる。キャリブレーション治具１１は、スカラロボット１のＺ軸１ａと平行になるように取り付けられる。キャリブレーション治具１１の先端は、先鋭であることが好ましい。これにより、キャリブレーションの精度を向上させることができるからである。
【００１３】
ロボット制御部としてのロボットコントローラ２は、スカラロボット１に接続される。ロボットコントローラ２は、スカラロボット１を制御する。また、図４を用いて後で説明するように、ロボットコントローラ２は、スカラロボット１から取得しているエンコーダ情報に基づいてロボット座標値を取得する。エンコーダ情報とは、スカラロボット１の各軸を動かすモータに取り付けられるエンコーダからのモータの角度情報である。ロボットコントローラ２は、この角度情報をスカラロボット１の位置情報に変換している。ロボット座標値は、この位置情報に含まれる。ロボットコントローラ２は、キャリブレーション治具１１を複数のマーカ１８の上方に位置させたときに、ロボット座標系における複数のマーカ１８の第１ロボット座標値を取得する。ロボット座標値は、ロボット座標系の内、２次元平面（ＸＹ平面）のＸ，Ｙ座標値である。
【００１４】
操作部３は、ロボットコントローラ２に接続される。操作部３は、ユーザによって手動でスカラロボット１を操作することを可能とする。
【００１５】
撮像部５は、テーブル４の上方に設けられ、テーブル４を撮像する。撮像部５は、複数のマーカ１８を撮像することにより、複数のマーカ１８の第１画像データを取得する。撮像部５は、例えば、２次元カメラである。撮像部５は、取得した第１画像データをビジョンコントローラ６へ送信する。
【００１６】
撮像制御部としてのビジョンコントローラ６は、撮像部５に接続されている。ビジョンコントローラ６は、撮像部５を制御する。また、ビジョンコントローラ６は、第１画像データに基づいて、カメラ座標系における複数のマーカ１８の第１カメラ座標値を取得する。カメラ座標値は、２次元平面（ＸＹ平面）のＸ，Ｙ座標値である。
【００１７】
表示部７は、ビジョンコントローラ６に接続されている。表示部７は、撮像部５で撮像された画像データを表示する。また、表示部７は、ビジョンコントローラ６の設定を行うために使用される。
【００１８】
端末８は、ロボットコントローラ２およびビジョンコントローラ６に対して外部に設けられる。端末８はキャリブレーションに用いられるため、通常動作においては、端末８はロボットシステム１００から外されてもよい。端末８は、演算部９を有する。端末８は、例えば、パーソナルコンピュータである。
【００１９】
演算部９は、例えば、１つまたは複数のＣＰＵ(Central Processor Unit)および／またはロジックＬＳＩ（Large Scale Integration）等で構成してよい。演算部９は、キャリブレーションプログラムを実行することにより、座標取得命令をロボットコントローラ２およびビジョンコントローラ６へ送る。ロボットコントローラ２およびビジョンコントローラ６は、座標取得命令を受けて、それぞれ第１カメラ座標値および第１ロボット座標値を取得する。そして、演算部９は、ビジョンコントローラ６およびロボットコントローラ２から第１カメラ座標値および第１ロボット座標値を取得する。さらに、演算部９は、キャリブレーションでは、第１カメラ座標値および第１ロボット座標値に基づいて、カメラ座標系の座標値をロボット座標系の座標値に変換する変換式を導出する。演算部９は、キャリブレーションにより得られた変換式をロボットコントローラ２へ送る。変換式は、通常動作においてカメラ座標系の座標値をロボット座標系の座標値に変換するために用いられる。キャリブレーションプログラムは、例えば、東芝機械株式会社製のロボットプログラム作成支援ツール「ＴＳＡｓｓｉｓｔ（登録商標）」等である。また、演算部９は、後述するキャリブレーション治具１１のオフセットを取得し、ツール座標系を設定する。
【００２０】
ＬＡＮ用ハブ１０は、ロボットコントローラ２、ビジョンコントローラ６および端末８と接続される。これにより、後述する図４に示すように、カメラ座標値およびロボット座標値のデータを送受信することができる。ＬＡＮ用ハブ１０は、例えば、イーサネット（登録商標）等に用いられるハブでよい。尚、他の方法によりカメラ座標値およびロボット座標値のデータの送受信が可能である場合、ロボットシステム１００はＬＡＮ用ハブ１０を備えていなくてもよい。
【００２１】
図２は、スカラロボット１におけるツール座標系の座標取得を示す図である。ツール座標系とは、アームの先端部に設けられるツールの先端を基準とし、ツールの先端の位置を示す座標系である。ツールは、キャリブレーションにおいてはキャリブレーション治具１１である。ツール座標系の座標値は、アームの先端部を基準とするロボット座標値に対して、キャリブレーション治具１１の寸法に対応するオフセットがある。このオフセットを取得してツール座標系を設定することにより、ツール座標系の座標値からロボット座標値を取得することができる。そこで、キャリブレーション前に、キャリブレーション治具１１を取り付けた状態でオフセットを取得し、ツール座標系を設定する必要がある。設定されたツール座標系は、キャリブレーション作業がすべて完了するまで有効となる。尚、ＣＡＤデータ等によりキャリブレーション治具１１の寸法がわかる場合には、ツール座標系の設定にオフセットの取得を省略することができる場合もある。
【００２２】
オフセットを取得することは、アームの先端部からキャリブレーション治具１１の先端までのＸＹ平面の距離ｒおよびキャリブレーション治具１１の先端が位置決めされた基準点の座標値（Ｘ０，Ｙ０）を求めることである。アームの１つの姿勢によって、未知数ｒ，Ｘ０，Ｙ０の関係式を求めることができる。従って、３つの姿勢によって、３つの未知数ｒ，Ｘ０，Ｙ０を求めることができる。さらに、求めたｒ，Ｘ０，Ｙ０の確認のため、もう１つの姿勢が必要となる。従って、アームの４つの姿勢からオフセットを取得することができる。
【００２３】
図３は、テーブル４の上方から見た、テーブル４および複数のマーカ１８の図である。複数のマーカ１８は、図３に示すように、撮像部５の撮像範囲１７内に配置される。尚、マーカ１８の大きさや形は、撮像部５が検出可能であればよい。
【００２４】
複数のマーカ１８は、図３に示すように、３行３列に配置される。これにより、撮像部５のレンズの歪みにより生じる、魚眼レンズのような画像の歪みを補正することができる。尚、複数のマーカ１８は、３行３列の９個に限られない。例えば、複数のマーカ１８は、直線上にない３点等、２次元平面を形成するように設けられていてもよい。また、複数のマーカ１８は、等間隔に配置されることが好ましい。これにより、キャリブレーションの精度を向上させることができる。また、複数のマーカ１８は、撮像範囲１７内の広範囲に設けられることが好ましい。これにより、広範囲においてキャリブレーションすることができる。また、マーカ１８の高さは、ワークの高さと略同一である必要がある。
【００２５】
図４は、ロボット座標値およびカメラ座標値の取得から変換式の保存までのデータの流れの一例を示すブロック図である。スカラロボット１は、エンコーダ２１を備える。ロボットコントローラ２は、位置情報取得部１３と、データ中継部１９と、記憶部２０とを備える。演算部９は、ロボット座標取得部１４と、カメラ座標取得部１５と、変換式演算部１６とを備える。
【００２６】
まず、第１カメラ座標値を取得する場合のデータの流れについて説明する。カメラ座標取得部１５は、ユーザの命令により、カメラ座標取得命令をデータ中継部１９へ送信する。データ中継部１９は、カメラ座標取得命令を、ロボットフォーマットからビジョンフォーマットへ変換して、ビジョンコントローラ６へ送信する。ビジョンコントローラ６は、カメラ座標取得命令を受けると、撮像部５にマーカ１８を撮像させ、撮像部５から第１画像データを受信する。ビジョンコントローラ６は、第１画像データに基づいて、第１カメラ座標値を取得する。ビジョンコントローラ６は、第１カメラ座標値をデータ中継部１９へ送信する。データ中継部１９は、第１カメラ座標値を、ビジョンフォーマットからロボットフォーマットへ変換して、カメラ座標取得部１５へ送信する。カメラ座標取得部１５は、第１カメラ座標値を保存する。カメラ座標取得部１５は、上記の手順を、マーカ１８の９点分実行する。すなわち、カメラ座標取得部１５は、１点分ずつ第１カメラ座標値を取得する。カメラ座標取得部１５は、９点分の第１カメラ座標値を変換式演算部１６へ送信する。尚、上記のフォーマットの変換は、ロボットコントローラ２とビジョンコントローラ６との間でデータ形式が異なる場合に必要となる。従って、データ形式が同じである場合、フォーマットを変換しなくてもよい。
【００２７】
次に、第１ロボット座標値を取得する場合のデータの流れについて説明する。キャリブレーション治具１１は、マーカ１８の上方に位置される。ロボット座標取得部１４は、ユーザの命令により、ロボット座標取得命令を位置情報取得部１３へ送信する。位置情報取得部１３は、エンコーダ２１が断続的に送信するエンコーダ情報を受信している。位置情報取得部１３は、エンコーダ情報をスカラロボット１の位置情報に変換している。位置情報取得部１３は、ロボット座標取得命令を受けると、変換した位置情報内のＸ，Ｙ座標値を第１ロボット座標値としてロボット座標取得部１４へ送信する。ロボット座標取得部１４は、第１ロボット座標値を保存する。ロボット座標取得部１４は、上記の手順を、マーカ１８の９点分実行する。すなわち、マーカ１８毎にキャリブレーション治具１１の位置付けおよび第１ロボット座標値の取得が実行される。ロボット座標取得部１４は、９点分の第１ロボット座標値を変換式演算部１６へ送信する。
【００２８】
次に、変換式演算部１６は、９点分の第１カメラ座標値および９点分の第１ロボット座標値に基づいて、変換式を導出する。変換式演算部１６は、変換式を記憶部２０へ送信する。記憶部２０は、受け取った変換式を記憶する。
【００２９】
図５は、第１実施形態によるロボットシステム１００の動作の一例を示すフロー図である。尚、図４に示すデータの流れは、図５におけるステップＳ６０〜Ｓ１００に対応する。
【００３０】
まず、ユーザは、複数のマーカ１８をテーブル４上の撮像範囲１７内に配置する（Ｓ１０）。次に、ビジョンコントローラ６は、マーカ１８を登録する（Ｓ２０）。例えば、ビジョンコントローラ６は、マーカ１８の画像認識情報を登録する。次に、ユーザは、キャリブレーション治具１１をスカラロボット１の先端部に取り付ける（Ｓ３０）。次に、演算部９は、キャリブレーション治具１１のオフセットを取得し（Ｓ４０）、ツール座標系を設定する。
【００３１】
キャリブレーション治具１１のオフセットの取得方法について説明する。ユーザは、マーカ１８の角の上など任意の位置に基準点を決める。ユーザは、キャリブレーション治具１１の先端が基準点の上方に位置するようにスカラロボット１を操作する。そして、ユーザは、アームの姿勢を変えるようにスカラロボット１を操作する。ユーザは、この操作を繰り返し、異なる４つの姿勢においてキャリブレーション治具１１の先端の位置を基準点の上方に一致させるようにスカラロボット１を操作する。演算部９は、アームの４つの姿勢それぞれの位置情報からオフセットを取得する。
【００３２】
次に、ユーザは、操作部３を用いて、キャリブレーション治具１１をマーカ１８の上方に位置合わせする（Ｓ５０）。次に、演算部９は、ユーザの命令により、第１ロボット座標値を取得する（Ｓ６０）。次に、ユーザは、撮像部５がマーカ１８を撮像できるようにスカラロボット１を操作する。演算部９は、ユーザの命令により、第１カメラ座標値を取得する（Ｓ７０）。全てのマーカ１８において第１カメラ座標値および第１ロボット座標値を取得していない場合（Ｓ８０のＮＯ）、次のマーカ１８においてステップＳ５０〜Ｓ７０を実行する。全てのマーカ１８において第１カメラ座標値および第１ロボット座標値を取得した場合（Ｓ８０のＹＥＳ）、演算部９は、変換式を導出する（Ｓ９０）。次に、演算部９は、変換式をロボットコントローラ２へ送信し、記憶部２０は変換式を保存する（Ｓ１００）。
【００３３】
尚、第１カメラ座標値の取得（Ｓ７０）の後に第１ロボット座標値の取得（Ｓ５０，Ｓ６０）をしてもよい。また、ステップＳ５０〜Ｓ８０のように、マーカ１８毎に第１カメラ座標値および第１ロボット座標値を取得することに限られない。例えば、図４に示すロボット座標取得部１４が９点分の第１ロボット座標値を取得および保存し、その後、カメラ座標取得部１５が９点分の第１カメラ座標値を取得および保存してもよい。
【００３４】
以上のように、第１実施形態によるロボットシステム１００は、複数のマーカの第１画像データを取得する撮像部５と、第１画像データに基づいて、複数のマーカ１８の第１カメラ座標値を取得するビジョンコントローラ６と、キャリブレーション治具１１を複数のマーカ１８の上方に位置させたときに、複数のマーカ１８の第１ロボット座標値を取得するロボットコントローラ２と、ビジョンコントローラ６およびロボットコントローラ２から第１カメラ座標値および第１ロボット座標値を取得し該第１カメラ座標値および該第１ロボット座標値に基づいてカメラ座標系の座標値をロボット座標系の座標値に変換する変換式を導出する演算部９により導出された該変換式を記憶する記憶部と、を備える。
【００３５】
これにより、演算部９は、ビジョンコントローラ６およびロボットコントローラ２から第１カメラ座標値および第１ロボット座標値を自動で取得して変換式を導出する。従って、ユーザが手作業で第１カメラ座標値および第１ロボット座標値をメモして、演算した変換式をロボットコントローラに入力する場合に比べて、キャリブレーション作業を容易かつ迅速に行うことができ、かつ、作業ミスを減少させることができる。
【００３６】
尚、上述の演算部９は、ビジョンコントローラ６およびロボットコントローラ２の外部に設けられるが、ビジョンコントローラ６またはロボットコントローラ２が演算部９の機能を有してもよい。すなわち、ビジョンコントローラ６またはロボットコントローラ２が第１カメラ座標値および第１ロボット座標値を自動で取得して変換式を導出してもよい。
【００３７】
（第２実施形態）
図６は、第２実施形態によるロボットシステム１００の構成の一例を示す図である。第２実施形態は、スカラロボット１が垂直多関節ロボット１２である点で第１実施形態とは異なる。
【００３８】
キャリブレーション治具１１は、垂直多関節ロボット１２の第６軸１２ａと平行となるように取り付けられる。スカラロボット１と同様の計算でオフセットを取得するため、Ａ，Ｂ，Ｃ軸のオイラー角は０度に設定される。
【００３９】
第２実施形態によるロボットシステム１００のその他の構成は、第１実施形態によるロボットシステム１００の対応する構成と同様であるため、その詳細な説明を省略する。
【００４０】
図７は、垂直多関節ロボット１２におけるツール座標系の座標取得を示す図である。スカラロボット１では、アームの角度によってＸＹ平面の座標値が変化する。Ｚ軸方向の座標値は、アームの角度ではなく、スカラロボット１のＺ軸１ａを上下に動かすことにより変化する。従って、ＸＹ平面の距離ｒおよびＸＹ平面の基準点の座標値を求めることによりオフセットを取得することができる。一方、垂直多関節ロボット１２では、アームの角度によってＸＹＺ空間の座標値が変化する。従って、ＸＹＺ空間の距離ｒおよびＸＹＺ空間の基準点の座標値（Ｘ０，Ｙ０，Ｚ０）を求める必要がある。すなわち、スカラロボット１に比べて未知数が１つ多い。従って、第２実施形態による演算部９は、アームの５つの姿勢の位置情報からオフセットを取得する点で、第１実施形態と異なる。
【００４１】
第２実施形態によるロボットシステム１００は、第１実施形態によるロボットシステム１００と同様の効果を得ることができる。
【００４２】
（第３実施形態）
キャリブレーションの完了後、複数のマーカ１８はテーブル４上から取り除かれ、ワークがテーブル４上に載置される。テーブル４が傾いている場合、カメラ座標値からロボット座標値に変換したワークの座標値と実際のワークの座標値との間にずれが生じることがある。
【００４３】
図８は、第３実施形態によるテーブル４の傾きを示す模式図である。図８は、Ｙ軸方向から見た図である。テーブル４は、撮像部５の光軸２２に垂直な面Ｐから角度θo傾いている。面Ｐは、撮像部５からＺ軸方向に撮像部５の焦点距離ＺＬ離れた位置にある。ワークは、テーブル４上の点Ｓにあるとする。撮像部５は、ワークを撮像し、ワークの第２画像データを取得する。ビジョンコントローラ６は、第２画像データに基づいて、ワークの第２カメラ座標値を取得する。ビジョンコントローラ６は、撮像部５の点Ｏと点Ｓとを結ぶ直線と面Ｐとの交点である点Ｓｆを第２カメラ座標値として取得する。ロボットコントローラ２は、変換式により第２カメラ座標値をワークのワーク変換座標値に変換する。このワーク変換座標値も点Ｓｆである。したがって、図８に示すように、テーブル４が傾くことにより、ワークの実際の位置である点Ｓとワーク変換座標値である点Ｓｆとの間に座標値のずれが生じる。この場合、スカラロボット１はワークを把持することができない可能性がある。
【００４４】
第１実施形態および第２実施形態では、テーブル４の傾きによる座標値のずれを考慮していない。これに対し、第３実施形態では、以下のように、テーブル４の傾きによる座標値のずれを補正した補正座標値を演算する。
【００４５】
キャリブレーションにおいて、複数のマーカ１８の上部またはキャリブレーション治具１１の先端に、圧力センサが設けられる。圧力センサは、キャリブレーション治具１１を鉛直方向に変位させたときに、キャリブレーション治具１１がマーカ１８に接触したことを検知する。圧力センサは、ロボットコントローラ２に接続され、キャリブレーション治具１１がマーカ１８に接触したことをロボットコントローラ２に送ってもよい。尚、圧力センサに限られず、キャリブレーション治具１１がマーカ１８に接触したことを検知することができるセンサであればよい。
【００４６】
ロボットコントローラ２は、キャリブレーション治具１１を複数のマーカ１８に接触させたことを圧力センサが検知したときに、鉛直ロボット座標値を取得する。鉛直ロボット座標値は、２次元平面（ＸＹ平面）であるロボット座標系に垂直なＺ軸方向における複数のマーカ１８の高さを示す。尚、鉛直ロボット座標値は、キャリブレーションには使用されない。
【００４７】
通常動作において、ロボットコントローラ２は、９点分のマーカ１８における第１ロボット座標値および鉛直ロボット座標値に基づいて、テーブル４の３次元の平面方程式を演算する。
【００４８】
一方、ロボットコントローラ２は、点Ｏと点Ｓｆとを結ぶ直線Ｏ−Ｓｆを演算する。ロボットコントローラ２は、テーブル４の平面方程式および直線Ｏ−Ｓｆの交点をワークのワーク補正座標値として演算する。すなわち、ロボットコントローラ２は、テーブル４の平面方程式およびワーク変換座標値に基づいて、ワーク補正座標値を演算する。このように演算されたワーク補正座標値が点Ｓの座標値である。
【００４９】
第３実施形態によるロボットシステム１００のその他の構成は、第１実施形態によるロボットシステム１００の対応する構成と同様であるため、その詳細な説明を省略する。
【００５０】
次に、ワーク補正座標値の演算について説明する。
【００５１】
テーブル４の平面方程式をａｘ＋ｂｙ＋ｃｚ＋ｄ＝０とし、点Ｏの座標値を（ｘｖ，ｙｖ，ｚｖ）とし、点Ｓｆの座標値を（ｘｓｆ，ｙｓｆ，ｚｓｆ）とし、点Ｓの座標値を（ｘｓｃ，ｙｓｃ，ｚｓｃ）とする。点Ｏの座標値（ｘｖ，ｙｖ，ｚｖ）は、撮像部５を取り付ける際に測定される。点ＳｆのＸ，Ｙ成分（ｘｓｆ，ｙｓｆ）はワーク変換座標値である。点ＳｆのＺ成分ｚｓｆは、図８に示すように、ｚｖ＋ＺＬである。焦点距離ＺＬも、撮像部５を取り付ける際に測定される。
【００５２】
直線Ｏ−Ｓｆの方向ベクトルは、式１で表される。
【数１】
2019098409.tif 000003
【００５３】
従って、直線Ｏ−Ｓｆの方程式は、式２で表される。
【数２】
2019098409.tif 000004
【００５４】
式２を式３とすると、式３は、式４，５，６で表わされる。
【数３】
2019098409.tif 000005
【００５５】
式４，５，６を上記の平面方程式に代入すると、式７で表されるように、ｔが得られる。
【数４】
2019098409.tif 000006
【００５６】
このｔを式４，５，６に代入することにより、ワーク補正座標値である点Ｓの座標値（ｘｓｃ，ｙｓｃ，ｚｓｃ）を演算することができる。
【００５７】
図９は、第３実施形態によるロボットシステム１００の動作の一例を示すフロー図である。
【００５８】
図９におけるステップＳ１０〜Ｓ６０は、第１実施形態における図５に示すステップＳ１０〜Ｓ６０と同様である。第１ロボット座標値を取得した後（Ｓ６０）、ユーザは、キャリブレーション治具１１をＺ方向に移動させる。これにより、ロボットコントローラ２は、鉛直ロボット座標値を取得する（Ｓ６５）。また、図９におけるステップＳ７０〜Ｓ１００は、第１実施形態における図５に示すステップＳ７０〜Ｓ１００と同様である。
【００５９】
次に、ロボットコントローラ２は、第１ロボット座標値および鉛直ロボット座標値に基づいて、テーブル４の平面方程式を演算する（Ｓ１１０）。次に、撮像部５は、ワークを撮像し、第２画像データを取得する。ビジョンコントローラ６は、第２画像データに基づいて、第２カメラ座標値を取得する（Ｓ１２０）。次に、ロボットコントローラ２は、第２カメラ座標値をビジョンコントローラ６から受け取る。ロボットコントローラ２は、変換式により第２カメラ座標値をワーク変換座標値に変換する（Ｓ１３０）。ロボットコントローラ２は、テーブル４の平面方程式およびワーク変換座標値に基づいて、テーブル４の傾きによる座標値のずれを補正したワーク補正座標値を演算する（Ｓ１４０）。
【００６０】
尚、点Ｓと点Ｓｆとの間のＺ軸方向のずれに対しては、例えば、吸着によりワークを把持するツールが設けられる場合、ツールにスプリング機構を設けることにより、Ｚ軸方向のずれを吸収することができる。また、例えば、ロボットティーチングにおいて、Ｘ，Ｙ成分に対応するＺ成分をプログラムすることもできる。
【００６１】
以上のように、第３実施形態によるロボットシステム１００によれば、ロボットコントローラ２は、キャリブレーション治具１１を複数のマーカ１８に接触させたときに、２次元平面であるロボット座標系に垂直な方向における複数のマーカ１８の高さを示す鉛直ロボット座標値を取得する。ロボットコントローラ２は、第１ロボット座標値および鉛直ロボット座標値に基づいてテーブル４の平面方程式を演算する。ロボットコントローラ２は、平面方程式およびワーク変換座標値に基づいて、撮像部５の光軸２２に垂直な面Ｐに対するテーブル４の傾きによる座標値のずれを補正したワークのワーク補正座標値を演算する。
【００６２】
これにより、ロボットコントローラ２は、テーブル４の傾きによる座標値のずれを補正したワーク補正座標値に位置決めをすることができる。従って、テーブル４が面Ｐから傾いている場合であっても、スカラロボット１はワークを把持することができる。
【００６３】
尚、第３実施形態は、第１実施形態および第２実施形態に適用することができる。
【００６４】
（変形例）
第３実施形態の変形例は、ワーク補正座標値を演算する前にワーク補正座標値を演算するか否かを判断する点で、第３実施形態とは異なる。
【００６５】
図８において、面Ｐにおける点Ａｆから点Ｃｆまでが撮像部５の撮像範囲１７であるとする。尚、撮像範囲１７の角度であるθａとθｃとは同じ角度である。テーブル４の点Ａから点Ｃまでの範囲外は、画像データには入らない。従って、ユーザが画像データを見た場合に、点Ａｆ（点Ａ）および点Ｃｆ（点Ｃ）は、テーブル４上において、撮像部５の光軸２２から最遠部である。
【００６６】
また、光軸２２がテーブル４と交わる点は、点Ｑである。点Ｑ、点Ｓおよび点Ｃを比較すると、光軸２２から離れるほど、テーブル４の傾きによる座標値のずれが大きくなる。変形例によるロボットコントローラ２は、座標値のずれが最大になる最遠部（点Ａ、点Ｃ）において、座標値のずれとスカラロボット１の位置決め精度とを比較する。ロボットコントローラ２は、この比較の結果から、ワーク補正座標値を演算するか否かを判定する。
【００６７】
位置決め精度とは、ある座標値に位置決めをした場合において、実際に位置決め制御されたスカラロボット１の座標値のばらつき幅である。位置決め精度は、例えば、予め記憶部２０に格納されている。例えば、位置決め精度が±０．１ｍｍであるとする。テーブル４の傾きによる座標値のずれの最大値が±０．１ｍｍの範囲を超える場合、テーブル４の傾きによる座標値のずれは無視することができないほど大きい。この場合、ロボットコントローラ２は、ワーク補正座標値を演算する。一方、テーブル４の傾きによる座標値のずれの最大値が±０．１ｍｍの範囲に収まるほど小さい場合、テーブル４の傾きによる座標値のずれは無視することができるほど小さい。この場合、ロボットコントローラ２は、ワーク補正座標値を演算しない。
【００６８】
尚、最遠部は、図３における撮像範囲１７の端部からユーザにより選択される。例えば、光軸２２の位置が撮像範囲１７の中央であるとして、ユーザは、撮像範囲１７の端部における上下左右を最遠部として選択する。また、複数の最遠部を用いて判定することも可能である。
【００６９】
以下では、ユーザは図８における点Ａｆを最遠部として選択したとする。
【００７０】
撮像部５は、テーブル４を撮像することにより、テーブル４の第３画像データを取得する。
【００７１】
ロボットコントローラ２は、第３画像データに基づいて、テーブル４上において光軸２２から最遠部（点Ａｆ）の第３カメラ座標値を取得する。ロボットコントローラ２は、変換式により第３カメラ座標値を最遠部（点Ａｆ）の最遠部変換座標値に変換する。
【００７２】
ロボットコントローラ２は、点Ｏと点Ａｆとを結ぶ直線Ｏ−Ａｆを演算する。ロボットコントローラ２は、テーブル４の平面方程式および直線Ｏ−Ａｆの交点を最遠部の最遠部補正座標値として演算する。すなわち、ロボットコントローラ２は、テーブル４の平面方程式および最遠部変換座標値に基づいて、最遠部補正座標値を演算する。このように演算された最遠部補正座標値が点Ａの座標値である。
【００７３】
尚、最遠部補正座標値である点Ａの座標値（ｘａｃ，ｙａｃ，ｚａｃ）は、式４，５，６，７におけるワーク変換座標値（ｘｓｆ，ｙｓｆ）に代えて最遠部変換座標値（ｘａｆ，ｙａｆ）用いることにより演算することができる。
【００７４】
ロボットコントローラ２は、最遠部変換座標値と最遠部補正座標値との差と、スカラロボット１の位置決め精度とを比較する。
【００７５】
最遠部変換座標値と最遠部補正座標値との差が位置決め精度の範囲を超える場合、ロボットコントローラ２は、第３実施形態と同様に、ワーク補正座標値を演算する。この場合、ロボットコントローラ２は、ワーク補正座標値をワークの座標値とする。
【００７６】
一方、最遠部変換座標値と最遠部補正座標値との差が位置決め精度の範囲内である場合、ロボットコントローラ２は、ワーク補正座標値を演算しない。この場合、ロボットコントローラ２は、ワーク変換座標値をワークの座標値とする。
【００７７】
変形例によるロボットシステム１００のその他の構成は、第３実施形態によるロボットシステム１００の対応する構成と同様であるため、その詳細な説明を省略する。
【００７８】
図１０は、変形例によるロボットシステム１００の動作の一例を示すフロー図である。
【００７９】
図１０におけるステップＳ１０〜Ｓ６０，Ｓ６５，Ｓ７０〜Ｓ１３０は、第３実施形態における図９に示すステップＳ１０〜Ｓ６０，Ｓ６５，Ｓ７０〜Ｓ１３０と同様である。
【００８０】
次に、撮像部５は、テーブル４を撮像し、第３画像データを取得する。ビジョンコントローラ６は、第３画像データに基づいて第３カメラ座標値を取得する（Ｓ１３２）。次に、ロボットコントローラ２は、第３カメラ座標値をビジョンコントローラ６から受け取る。ロボットコントローラ２は、変換式により第３カメラ座標値を最遠部変換座標値に変換する（Ｓ１３４）。次に、ロボットコントローラ２は、テーブル４の平面方程式および最遠部変換座標値に基づいて、テーブル４の傾きによる座標値のずれを補正した最遠部補正座標値を演算する（Ｓ１３６）。次に、ロボットコントローラ２は、最遠部変換座標値と最遠部補正座標値との差と、スカラロボット１の位置決め精度と、を比較する（Ｓ１３８）。最遠部変換座標値と最遠部補正座標値との差が位置決め精度を超える場合（Ｓ１３８のＹＥＳ）、ロボットコントローラ２は、ワーク補正座標値を演算する（Ｓ１４０）。尚、図１０におけるステップＳ１４０は、第３実施形態における図９に示すステップＳ１４０と同様である。ロボットコントローラ２は、ワーク補正座標値をワークの座標値とする。最遠部変換座標値と最遠部補正座標値との差が位置決め精度の範囲内である場合（Ｓ１３８のＮＯ）、ロボットコントローラ２は、ワーク補正座標値を演算せず、第１置換座標値をワークの座標値とする。
【００８１】
以上のように、変形例によるロボットシステム１００によれば、ロボットコントローラ２は、平面方程式および最遠部変換座標値に基づいて、テーブル４の傾きによる座標値のずれを補正した最遠部の最遠部補正座標値を演算する。ロボットコントローラ２は、第２置換座標値と最遠部補正座標値との差と、スカラロボット１の位置決め精度と、を比較する。第２置換座標値と最遠部補正座標値との差が位置決め精度を超える場合、ロボットコントローラ２は、ワークのワーク補正座標値を演算し、ワーク補正座標値をワークの座標値とする。第２置換座標値と最遠部補正座標値との差が位置決め精度の範囲内である場合、ロボットコントローラ２は、ワーク変換座標値をワークの座標値とする。
【００８２】
これにより、ロボットコントローラ２は、補正が不要な場合には補正をしないようにすることができる。
【００８３】
第３実施形態では、ロボットコントローラ２は、判定をせず、ワーク毎にワーク補正座標値を演算する。ワーク補正座標値の演算には処理時間がかかるため、テーブル４の傾きが小さく補正が不要な場合、無駄にサイクルタイムが長くなってしまう。
【００８４】
これに対し、変形例では、ロボットコントローラ２は、ワーク補正座標値の演算前にテーブル４の傾きが小さく補正が不要であると判断した場合、ワーク補正座標値を演算しない。これにより、第３実施形態よりも、補正が不要な場合のサイクルタイムを短くすることができる。
【００８５】
本実施形態によるキャリブレーション方法の少なくとも一部は、ハードウェアで構成してもよいし、ソフトウェアで構成してもよい。ソフトウェアで構成する場合には、その方法の少なくとも一部の機能を実現するプログラムをフレキシブルディスクやＣＤ−ＲＯＭ等の記録媒体に収納し、コンピュータに読み込ませて実行させてもよい。記録媒体は、磁気ディスクや光ディスク等の着脱可能なものに限定されず、ハードディスク装置やメモリなどの固定型の記録媒体でもよい。また、データ処理方法の少なくとも一部の機能を実現するプログラムを、インターネット等の通信回線（無線通信も含む）を介して頒布してもよい。さらに、同プログラムを暗号化したり、変調をかけたり、圧縮した状態で、インターネット等の有線回線や無線回線を介して、あるいは記録媒体に収納して頒布してもよい。
【００８６】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【００８７】
１  スカラロボット、２  ロボットコントローラ、３  操作部、４  テーブル、５  撮像部、６  ビジョンコントローラ、７  表示部、８  端末、９  演算部、１１  キャリブレーション治具、１８  マーカ、２０  記憶部、２２  光軸、Ｐ  面、ＺＬ  焦点距離
【図１】
2019098409.tif 000010
【図２】
2019098409.tif 000011
【図３】
2019098409.tif 000012
【図４】
2019098409.tif 000013
【図５】
2019098409.tif 000014
【図６】
2019098409.tif 000015
【図７】
2019098409.tif 000016
【図８】
2019098409.tif 000017
【図９】
2019098409.tif 000018
【図１０】
2019098409.tif 000019