(58)【調査した分野】(Int.Cl.,DB名)
ロボットにターゲットマークを設置すると共に、前記ターゲットマークが移動するように前記ロボットを制御して、カメラの視野内の複数個所で前記ターゲットマークを検出することで、前記ロボットのロボット座標系と前記カメラの画像座標系の対応付けを行うキャリブレーション装置であって、
前記画像座標系における画像範囲を設定する画像範囲設定部と、
キャリブレーション実行前に、前記ロボットを制御して前記ターゲットマークを移動させて前記ターゲットマークを検出することで、前記画像範囲に相当する前記ロボットの動作範囲であるキャリブレーション範囲を計測するキャリブレーション範囲計測部と、
を備え、
キャリブレーション実行時には、前記キャリブレーション範囲内で前記ターゲットマークを移動させるように前記ロボットを制御することを特徴とする、キャリブレーション装置。
ロボットにターゲットマークを設置すると共に、前記ターゲットマークが移動するように前記ロボットを制御して、カメラの視野内の複数個所で前記ターゲットマークを検出することで、前記ロボットのロボット座標系と前記カメラの画像座標系の対応付けを行うキャリブレーション装置によるキャリブレーション方法であって、
前記画像座標系における画像範囲を設定する画像範囲設定ステップと、
キャリブレーション実行前に、前記ロボットを制御して前記ターゲットマークを移動させて前記ターゲットマークを検出することで、前記画像範囲に相当する前記ロボットの動作範囲であるキャリブレーション範囲を計測するキャリブレーション範囲計測ステップと、
を備え、
キャリブレーション実行時には、前記キャリブレーション範囲内で前記ターゲットマークを移動させるように前記ロボットを制御することを特徴とする、キャリブレーション方法。
ロボットにターゲットマークを設置すると共に、前記ターゲットマークが移動するように前記ロボットを制御して、カメラの視野内の複数個所で前記ターゲットマークを検出することで、前記ロボットのロボット座標系と前記カメラの画像座標系の対応付けを行うキャリブレーション装置を制御するコンピュータに、
前記画像座標系における画像範囲を設定する画像範囲設定ステップと、
キャリブレーション実行前に、前記ロボットを制御して前記ターゲットマークを移動させて前記ターゲットマークを検出することで、前記画像範囲に相当する前記ロボットの動作範囲であるキャリブレーション範囲を計測するキャリブレーション範囲計測ステップと、
を実行させ、
キャリブレーション実行時には、前記キャリブレーション範囲内で前記ターゲットマークを移動させるように前記ロボットを制御することを特徴とするプログラム。
ロボットにターゲットマークを設置すると共に、前記ターゲットマークが移動するように前記ロボットを制御して、少なくとも第1のカメラ及び第2のカメラを備えるステレオカメラの視野内の複数個所で前記ターゲットマークを検出することで、前記ロボットのロボット座標系と、前記第1のカメラの画像座標系における位置情報及び前記第2のカメラの画像座標系における位置情報と対応付けを行うキャリブレーション装置であって、
前記第1のカメラの画像座標系における第1の画像範囲を設定する第1画像範囲設定部と、
前記第2のカメラの画像座標系における第2の画像範囲を設定する第2画像範囲設定部と、
前記第1のカメラ及び前記第2のカメラのキャリブレーション実行前に、
前記ロボットを制御して前記ターゲットマークを移動させて前記ターゲットマークを前記第1のカメラで検出することで、前記第1の画像範囲に相当する前記ロボットの第1の動作範囲である第1のキャリブレーション範囲を計測する第1キャリブレーション範囲計測部と、
前記ロボットを制御して前記ターゲットマークを移動させて前記ターゲットマークを前記第2のカメラで検出することで、前記第2の画像範囲に相当する前記ロボットの第2の動作範囲である第2のキャリブレーション範囲を計測する第2キャリブレーション範囲計測部と、を備え、
前記第1のカメラ及び前記第2のカメラのキャリブレーション実行時には、前記第1のキャリブレーション範囲と前記第2のキャリブレーション範囲の少なくとも一方の範囲内、又は前記第1のキャリブレーション範囲と前記第2のキャリブレーション範囲の両方に含まれる範囲内で前記ターゲットマークを移動させるように前記ロボットを制御することを特徴とする、キャリブレーション装置。
ロボットにターゲットマークを設置すると共に、前記ターゲットマークが移動するように前記ロボットを制御して、少なくとも第1のカメラ及び第2のカメラを備えるステレオカメラの視野内の複数個所で前記ターゲットマークを検出することで、前記ロボットのロボット座標系と、前記第1のカメラの画像座標系における位置情報及び前記第2のカメラの画像座標系における位置情報と対応付けを行うキャリブレーション装置によるキャリブレーション方法であって、
前記第1のカメラの画像座標系における第1の画像範囲を設定する第1画像範囲設定ステップと、
前記第2のカメラの画像座標系における第2の画像範囲を設定する第2画像範囲設定ステップと、
前記第1のカメラ及び前記第2のカメラのキャリブレーション実行前に、
前記ロボットを制御して前記ターゲットマークを移動させて前記ターゲットマークを前記第1のカメラで検出することで、前記第1の画像範囲に相当する前記ロボットの第1の動作範囲である第1のキャリブレーション範囲を計測する第1キャリブレーション範囲計測ステップと、
前記ロボットを制御して前記ターゲットマークを移動させて前記ターゲットマークを前記第2のカメラで検出することで、前記第2の画像範囲に相当する前記ロボットの第2の動作範囲である第2のキャリブレーション範囲を計測する第2キャリブレーション範囲計測ステップと、を備え、
前記第1のカメラ及び前記第2のカメラのキャリブレーション実行時には、前記第1のキャリブレーション範囲と前記第2のキャリブレーション範囲の少なくとも一方の範囲内、又は前記第1のキャリブレーション範囲と前記第2のキャリブレーション範囲の両方に含まれる範囲内で前記ターゲットマークを移動させるように前記ロボットを制御することを特徴とする、キャリブレーション方法。
ロボットにターゲットマークを設置すると共に、前記ターゲットマークが移動するように前記ロボットを制御して、少なくとも第1のカメラ及び第2のカメラを備えるステレオカメラの視野内の複数個所で前記ターゲットマークを検出することで、前記ロボットのロボット座標系と、前記第1のカメラの画像座標系における位置情報及び前記第2のカメラの画像座標系における位置情報と対応付けを行うキャリブレーション装置を制御するコンピュータに、
前記第1のカメラの画像座標系における第1の画像範囲を設定する第1画像範囲設定ステップと、
前記第2のカメラの画像座標系における第2の画像範囲を設定する第2画像範囲設定ステップと、
前記第1のカメラ及び前記第2のカメラのキャリブレーション実行前に、
前記ロボットを制御して前記ターゲットマークを移動させて前記ターゲットマークを前記第1のカメラで検出することで、前記第1の画像範囲に相当する前記ロボットの第1の動作範囲である第1のキャリブレーション範囲を計測する第1キャリブレーション範囲計測ステップと、
前記ロボットを制御して前記ターゲットマークを移動させて前記ターゲットマークを前記第2のカメラで検出することで、前記第2の画像範囲に相当する前記ロボットの第2の動作範囲である第2のキャリブレーション範囲を計測する第2キャリブレーション範囲計測ステップと、を実行させ、
前記第1のカメラ及び前記第2のカメラのキャリブレーション実行時には、前記第1のキャリブレーション範囲と前記第2のキャリブレーション範囲の少なくとも一方の範囲内、又は前記第1のキャリブレーション範囲と前記第2のキャリブレーション範囲の両方に含まれる範囲内で前記ターゲットマークを移動させるように前記ロボットを制御することを特徴とするプログラム。
【発明を実施するための形態】
【0022】
[第1実施形態]
以下、本発明の実施形態の一例(第1実施形態)について説明する。
図1は、視覚センサのキャリブレーションに関し、単一のカメラ2を使用したキャリブレーションを実施するためのロボットシステム1000の全体の構成図である。
図1に示すように、ロボットシステム1000は、単一のカメラ2により撮像される画像データを画像処理して3次元計測を行う視覚センサ制御装置1と、先端部にターゲットマーク5が取り付けられたアーム41を有するロボット4と、ロボット4を制御するロボット制御装置3と、を備える。カメラ2は、架台(図示せず)に固定される。本実施形態では、キャリブレーション装置として、視覚センサ制御装置1を例示する。
【0023】
図2は、ターゲットマーク5の一例を示す図である。ターゲットマーク5は、この例に限定されない。ターゲットマーク5は任意の形状のものを使用できる。ただし、モデルパターンとして使用するターゲットマーク5の特徴が2次元平面上にあるようにすることが望ましい。ターゲットマーク5として、例えば、紙やシールに印刷したものをロボット4のアーム41の先端に貼り付けるようにしてもよい。
【0024】
ロボット制御装置3はロボット座標系におけるアーム41の先端の座標位置を現在位置として認識する。したがって、ロボット座標系におけるアーム41の先端の座標位置と、ターゲットマーク5のロボット4の手先座標系における既知の3次元での位置及び姿勢と、に基づいてロボット制御装置3は、アーム41を駆動制御した時のターゲットマーク5のロボット座標系における座標位置を常に認識することができる。
ロボット制御装置3は、全体を統括制御するためのCPU(図示せず)を備え、外部機器インタフェース(図示せず)を介して、視覚センサ制御装置1が接続され、視覚センサ制御装置1に画像処理のトリガ信号を送信したり、視覚センサ制御装置1における画像処理(例えば、ターゲットマーク5の検出処理等)によって得られた画像処理結果等を受信する。
【0025】
ロボット制御装置3は、キャリブレーション実行時に、予め設定されたキャリブレーションする範囲(「キャリブレーション範囲」)内でアーム41の先端に取り付けられたターゲットマーク5を移動させるようにアーム41を駆動制御する。キャリブレーション範囲の具体的な計測処理については、後述する。
【0026】
ロボット制御装置3は、ロボット4のアーム41の先端に取り付けられたターゲットマーク5のロボット座標系における座標位置を計測する。すなわち、ターゲットマーク5の移動先のロボット座標系での座標位置を計測することができる。
【0027】
[視覚センサ制御装置1について]
キャリブレーション装置としての視覚センサ制御装置1には、カメラ2が接続されており、カメラ2によりターゲットマーク5を撮像し、カメラ2のキャリブレーションを行う。
【0028】
図3は、視覚センサ制御装置1の機能構成を示す機能ブロック図である。
視覚センサ制御装置1は、全体を統括制御するためのCPU(中央演算処理装置)10を備えている。CPU10にはバス11を介して、複数のフレームメモリ12、ROM(読み出し専用メモリ)13、RAM(ランダムアクセスメモリ)14、不揮発性RAM15が接続されている。また、バス11には、カメラインタフェース16を介してカメラ2が接続されると共に、モニタインタフェース17を介してモニタ19が接続されている。さらに、CPU10には、バス11を介して外部機器インタフェース18が接続されている。
外部機器インタフェース18にはロボット制御装置3が接続され、ロボット制御装置3からターゲットマーク5の座標位置を受信したり、視覚センサ制御装置1における画像処理(例えば、ターゲットマーク5の検出処理等)によって得られた画像処理結果等を送信する。
【0029】
ROM13には、視覚センサ制御装置1で行われる様々な処理のためのプログラムが格納される。また、一般にRAMへのアクセスはROMへのアクセスよりも高速であることから、CPU10は、ROM13に格納されたプログラムを予めRAM14上に展開しておき、RAM14からプログラムを読み込んで実行してもよい。また、RAM14には、プログラムの実行時に必要な一時待避データが格納される。
不揮発性RAM15は、磁気記憶装置、フラッシュメモリ、MRAM、FRAM(登録商標)、EEPROM、又はバッテリでバックアップされるSRAM若しくはDRAM等であり、視覚センサ制御装置1の電源がオフされても記憶状態が保持される不揮発性メモリとして構成される。不揮発性RAM15には、プログラム実行時に必要な設定などが記憶される。
フレームメモリ12には画像データが格納される。
【0030】
[モデルパターンについて]
不揮発性RAM15は、基準情報記憶部151と、検出結果記憶部152と、を備える。基準情報記憶部151は、対象物(ターゲットマーク5)を表す基準情報(「モデルパターン」又は「テンプレート」ともいう)を記憶する。基準情報としては、例えば対象物(ターゲットマーク5)のエッジ点からなる集合(「エッジ点群」ともいう)を採用してもよい。エッジ点とは、画像上での輝度変化が大きな点である。
例えば、対象物(ターゲットマーク5)に公知のSobelフィルタをかけてエッジ画像へ変換し、エッジ画像中から予め定められた閾値以上の強度を有する画素(エッジ点)を抽出し、エッジ点群とすることができる。このように、検出すべき対象物(ターゲットマーク5)を含む画像から抽出したエッジ点群をモデルパターンとして基準情報記憶部221に記憶しておく。
なお、モデルパターンはエッジ点に限定されない。例えば、公知のSIFTのような特徴点を使用してもよい。また、対象物(ターゲットマーク5)の輪郭線に合うように線分、矩形、円などの幾何図形を配置することでモデルパターンを生成してもよい。その場合、輪郭線を構成する幾何図形上に適当な間隔で特徴点を設ければよい。または、モデルパターンは、ターゲットマーク5を撮像した画像からモデルパターン指定領域の箇所を切り抜いたテンプレート画像でもよい。
このように生成されたモデルパターンを基準情報記憶部221に予め記憶することを、「モデルパターンを教示する」ともいう。
モデルパターンの教示については後述する。
【0031】
検出結果記憶部152は、ターゲットマーク5を設定されたキャリブレーション範囲を移動させた場合、それぞれの移動先において、教示されたモデルパターンを使用してカメラ2により撮像される画像データからターゲットマーク5を検出した結果を記憶する。
【0032】
カメラ2は、CPU10からの指令に従って、対象物を撮像して画像を取得し、取得した画像に関する信号を出力する。カメラインタフェース16は、CPU10からの指令に従ってカメラ2に対して露光のタイミングを制御するための同期信号を発生する機能や、カメラ2から受信した信号を増幅する機能を有している。このようなカメラ2やカメラインタフェース16は市販される一般的なものであり、特に限定されるものではない。
【0033】
カメラ2から取り込まれた画像に関する信号は、カメラインタフェース16においてA/D変換され、バス11を介してディジタル画像データとしてフレームメモリ12に一時的に格納される。視覚センサ制御装置1では、フレームメモリ12、ROM13、RAM14及び不揮発性RAM15に格納されているデータを用いてCPU10が画像処理を行い、画像処理の結果データが再度フレームメモリ12に格納される。CPU10は、指令により、フレームメモリ12に格納されているデータをモニタインタフェース17に転送してモニタ19上に表示させ、オペレータなどがデータの内容を確認することを可能にさせるようにしてもよい。
【0034】
外部機器インタフェース18は様々な外部機器に接続される。例えば、外部機器インタフェース18にはロボット制御装置3が接続され、ロボット制御装置3から画像処理のトリガ信号を受けたり、画像処理によって得られた位置情報データ等をロボット制御装置3に供給する。また、外部機器インタフェース18には、オペレータのための入力装置33としてキーボードやマウスなどを接続してもよい。
【0035】
次に、CPU10の有する機能を各処理部の観点から説明する。なお、各処理ステップ(方法)の観点に基づく説明は、「部」を「ステップ」に置き換えることで説明できるため、省略する。
図4は、視覚センサ制御装置1におけるCPU10の機能構成を示すブロック図である。CPU10は、モデルパターン生成部101と、第1パラメータ設定部102と、第1検出部103と、第1画像範囲設定部105と、第1キャリブレーション範囲計測部106と、撮像制御部107と、キャリブレーション部108と、を備える。
これらの機能部又は機能ステップは、ROM13に格納されたシステムプログラムをCPU10が実行することにより実現される。
【0036】
[モデルパターン生成部101]
モデルパターン生成部101は、例えばカメラ2により、モデルパターンを生成する。、
図5にモデルパターン生成部101のモデルパターンを生成するフローチャートを示す。
図5を参照しながら、モデルパターン生成部101の機能を説明する。
【0037】
ステップS1において、モデルパターン生成部101は、カメラ2の視野内に配置されたターゲットマーク5をカメラ2により撮像する制御を行う。なお、このときのカメラ2とターゲットマーク5の位置関係は、ターゲットマーク5を検出するときと同じになるようにして行うことが望ましい。
【0038】
ステップS2において、モデルパターン生成部101は、ターゲットマーク5を撮像した画像において、ターゲットマーク5が写った領域を矩形、円形等によりモデルパターン指定領域として設定するとともに、モデルパターン指定領域内にモデルパターン座標系(画像座標系)を定義する。なお、
図6にモデルパターン指定領域、モデルパターン座標系(画像座標系)及びモデルパターンの一例を示す。
モデルパターン生成部101は、オペレータにより指示された領域をモデルパターン指定領域として設定してもよい。また、モデルパターン生成部101が、画像における輝度勾配の大きい個所をターゲットマーク5の像の輪郭として算出して、当該ターゲットマーク5の像の輪郭を内部に含むように、モデルパターン指定領域を設定してもよい。
【0039】
ステップS3において、モデルパターン生成部101は、モデルパターン指定領域内でエッジ点を特徴点として抽出し、エッジ点の位置、輝度勾配の方向、輝度勾配の大きさなどの物理量を求め、モデルパターン指定領域内に定義されたモデルパターン座標系で表現される値に変換する。
また、モデルパターン生成部101は、オペレータにより指示された点をターゲットマーク5の3次元位置を計測する点Pとして設定し、基準情報記憶部151に記憶する。ターゲットマーク5の3次元位置を計測する点Pが予め指定されることにより、ロボット4の手先座標系における3次元での位置及び姿勢が予め求められる。なお、モデルパターン生成部101は、ターゲットマーク5の3次元位置を計測する点Pを明示的に指定されない場合には、例えば、モデルパターンの中心点をターゲットマーク5の3次元位置を計測する点として設定してもよい。
図7にターゲットマーク5の3次元位置を計測する点Pの一例を示す。
図7には、ターゲットマーク5の中心点をターゲットマーク5の3次元位置を計測する点Pとして設定されている。
なお、前述したように、モデルパターンはエッジ点に限定されない。例えば、公知のSIFTのような特徴点を使用してもよい。また、対象物(ターゲットマーク5)の輪郭線に合うように線分、矩形、円などの幾何図形を配置することでモデルパターンを生成してもよい。その場合、輪郭線を構成する幾何図形上に適当な間隔で特徴点を設ければよい。または、モデルパターンは、ターゲットマーク5を撮像した画像からモデルパターン指定領域の箇所を切り抜いたテンプレート画像でもよい。
【0040】
ステップS4において、モデルパターン生成部101は、生成したモデルパターンを基準情報記憶部151に記憶する。
以上のように、モデルパターンは、カメラ2により撮像される画像を使って生成される。
【0041】
次に、基準情報記憶部151に記憶されたモデルパターンを使用して、カメラ2により撮像される画像データからターゲットマーク5を検出するためのパラメータについて説明する。
【0042】
カメラ2とターゲットマーク5の移動先の位置との距離、光軸との角度等が異なるため、カメラ2によるターゲットマーク5の撮像される画像は、キャリブレーション範囲内におけるターゲットマーク5の移動先によって、モデルパターン生成部101により生成されたモデルパターンとはその大きさが異なったり、回転やひずみの生じたアピアランスの相違するものになる可能性がある。このため、モデルパターンと完全に一致するものを検出しようとした場合、カメラ2により撮像される画像データから対象物(ターゲットマーク5)を検出することができないという状況が発生しうる。
【0043】
[第1パラメータ設定部102]
このような状況においても、カメラ2により撮像される画像データから、キャリブレーション範囲内におけるターゲットマーク5の移動先に関わらず、モデルパターンを検出することができるように、第1パラメータ設定部102は、カメラ2により撮像される画像データからターゲットマーク5を検出するためのパラメータを設定する。
より具体的には、第1パラメータ設定部102により設定されるパラメータは、検出アルゴリズムに依存するものであり、例えば、モデルに対するサイズ、回転、歪み、検出する位置の範囲、角度の範囲等の所定の範囲を有するように構成したり、単一の数値やオンオフ値で構成したりすることができる。なお、パラメータは、ここで例示したものに限らない。
そうすることで、ターゲットマーク5の移動先に関わらず、モデルパターンを検出することができるように、後述の第1検出部103は、撮像データから、単一の数値やオンオフ値又は所定の範囲内のパラメータの値でモデルパターンと一致するものを検出できるように構成される。そうすることで、後述の第1検出部103は、適切なパラメータの値を適用することにより、撮像データからモデルパターンを検出することができる。
なお、パラメータは、カメラ2により撮像される画像データに適用されるパラメータとしてもよい。この場合、第1検出部103は、カメラ2により撮像される画像データにパラメータを適用した画像データから、ターゲットマーク5のモデルパターンを検出するように構成される。例えば、画像データにガウシアンフィルタを掛けて平滑化した画像データからモデルパターンを検出できる。
また、パラメータは、ターゲットマーク5のモデルパターンに適用されるパラメータとしてもよい。この場合、第1検出部103は、カメラ2により撮像される画像データから、パラメータを適用したモデルパターンによりターゲットマーク5を検出するように構成される。
【0044】
第1パラメータ設定部102が設定するパラメータのひとつとして、例えば、射影変換、アフィン変換、相似変換等の変換行列をモデルパターンに適用してもよい。
例えば、パラメータの値を単一の数値で構成した場合には、単一の変換行列を選択し、パラメータの値を所定の範囲を有するように構成した場合には、所定の範囲の変換行列を選択可能とするようにすることができる。具体的には、所定の範囲を有するようにパラメータを構成したときには、例えば、射影変換行列の場合、1つの射影変換行列に基づいて、当該射影変換行列のそれぞれの要素との偏差が所定の閾値以下になるような射影変換行列をパラメータの範囲に含むように構成してもよく、回転の場合には、1つの回転角度に基づいて、回転角度の範囲を設定してもよい。また、相似変換についても同様に、1つの相似比に基づいて、相似比の範囲を設定してもよい。
例えば、カメラ2の光軸とキャリブレーション時にターゲットマーク5の移動する平面との角度により(特に当該平面を光軸に対して直角ではなく斜めに傾けた場合)、カメラ2に対してパラメータにより、サイズの範囲を0.9から1.1に設定することができる。
こうすることで、例えば、ターゲットマーク5の移動先が異なることによるターゲットマーク5のアピアランスの相違にロバストな検出を可能とすることができる。
なお、露光時間についても、例えば、カメラ2とターゲットマーク5の置かれる平面との角度、照明との関係等により、パラメータの値を設定することが望ましい。
【0045】
[第1検出部103]
第1検出部103は、カメラ2により撮像される画像データからターゲットマーク5を検出し、検出されたターゲットマーク5のカメラ2の画像座標系における座標位置を計測する。
具体的には、第1検出部103は、単一の数値、オンオフ値又はパラメータの所定の範囲からパラメータを選択する。なお、パラメータを所定の範囲から選択する際には、例えば、パラメータ範囲の値のなかで中心となる値を最初に選択してもよい。その後、例えば、中心の値から、プラスマイナスの方にそれぞれ、ずらしながら、次のパラメータを選択するようにしてもよい。
【0046】
第1検出部103は、前述したようにパラメータがカメラ2による撮像される画像データに適用されるパラメータの場合、単一の数値、オンオフ値又はパラメータの所定の範囲からパラメータを選択した後に、カメラ2により撮像される画像データからターゲットマークを検出することができるように、当該パラメータにより、画像データを変換する。そうすることで、第1検出部103は、公知の検出手法により、変換後の画像データからターゲットマークを検出することができる。
【0047】
具体的には、第1検出部103は、第1パラメータを適用した画像データから、教示されたモデルパターンの特徴点を抽出したのと同じ方法で特徴点を抽出し、パラメータで変換した特徴点とモデルパターンを構成する特徴点との間で公知のマッチングを行うことで、ターゲットマーク5を検出する。
【0048】
また、逆に、第1検出部103は、ターゲットマーク5のモデルパターンを当該パラメータにより変換するようにしてもよい。この場合、第1検出部103は、前述した公知の検出手法により、撮像データから変換後のモデルパターンと一致するターゲットマーク5を検出することができる。
具体的には、第1検出部103は、カメラ2によって撮像される画像データから、教示されたモデルパターンの特徴点を抽出したのと同じ方法で特徴点を抽出し、特徴点と第1パラメータを適用したモデルパターンの特徴点との間で公知のマッチングを行うことで、ターゲットマーク5を検出する。
第1検出部103は、検出されたターゲットマーク5のカメラ2の画像座標系における座標位置を計測する。
【0049】
[第1画像範囲設定部105]
前述したように、本実施形態ではターゲットマーク5を予め指定された平面上で移動させるものとする。この平面は、平行する複数の平面から構成されるものでもよいし、複数の部分平面を連結したものでもよい。第1画像範囲設定部105は、ロボット4の動作範囲(キャリブレーション範囲)を求めるために、当該キャリブレーション範囲に相当するカメラ2の画像座標系における画像範囲を設定する。
より具体的には、第1画像範囲設定部105は、オペレータからの指示に基づいて、カメラ2で撮像された画像上でカメラ2の画像座標系に基づいて画像範囲を設定する。このような場合、第1画像範囲設定部105は、画像範囲を、例えば矩形で指定することができる。
第1画像範囲設定部105は、画像全体を画像範囲として設定してもよい。
また、ターゲットマーク5が移動する空間上に障害物等が存在する場合には、第1画像範囲設定部105は、オペレータからの指示に基づいて、カメラ2の視野内に存在する障害物を避けるように画像範囲を制限することもできる。この場合、第1画像範囲設定部105は、複数の線分により構成される閉じた図形により画像範囲を指定してもよい。
【0050】
[第1キャリブレーション範囲計測部106]
第1キャリブレーション範囲計測部106は、キャリブレーション実行前に、ターゲットマーク5が移動するようにロボット4を制御して、第1検出部103によりターゲットマーク5を検出することで、第1画像範囲設定部105により設定された画像範囲に相当するロボット4の動作範囲であるキャリブレーション範囲(例えば、キャリブレーション範囲の境界を示すロボット座標系における座標位置)を計測する。
より具体的には、第1キャリブレーション範囲計測部106は、ターゲットマーク5が第1画像範囲設定部105によりカメラ2の画像座標系で指定されたキャリブレーション範囲内で検出できるか否かを、ターゲットマーク5の移動と検出を何度も繰り返すことにより、当該画像範囲に相当するロボット4(すなわちターゲットマーク5)の動作範囲であるキャリブレーション範囲(例えば、キャリブレーション範囲の境界を示すロボット座標系における座標位置)を計測する。
【0051】
図8A及び
図8Bにキャリブレーション範囲の境界を示すロボット座標系における座標位置を計測する第1キャリブレーション範囲計測部106のフローチャートを示す。
図8A及び
図8Bを参照しながら、第1キャリブレーション範囲計測部106の機能を説明する。なお、キャリブレーション時にターゲットマーク5を移動させる平面は、予め指定されている3次元座標系のXY平面として定義されているものとする。なお、平面は3次元座標系のXY平面に限定されない。
【0052】
ステップS11において、第1キャリブレーション範囲計測部106は、カメラ2の視野内にある平面上の初期位置に配置されたターゲットマーク5のロボット座標系における3次元座標位置及びカメラ2の画像座標系における座標位置をそれぞれ、ロボット制御装置3及び第1検出部103を介して取得する。なお、ターゲットマーク5は、例えばオペレータによるジョグ操作により初期位置に移動させてもよい。又はロボット制御装置3が記憶している初期位置に移動してもよい。
【0053】
ステップS12において、第1キャリブレーション範囲計測部106は、ロボット制御装置3を介してロボット4(すなわちターゲットマーク5)を平面上、初期位置からX軸方向に予め設定されたX方向に単位量移動させ、ターゲットマーク5のロボット座標系における3次元座標位置及びターゲットマーク5のカメラ2の画像座標系における座標位置をそれぞれロボット制御装置3及び第1検出部103を介して取得する。
【0054】
ステップS13において、第1キャリブレーション範囲計測部106は、ロボット制御装置3を介してロボット4(すなわちターゲットマーク5)を平面上、初期位置からY軸方向に予め設定されたY方向単位量移動させ、ターゲットマーク5のロボット座標系における3次元座標位置及びターゲットマーク5のカメラ2の画像座標系における座標位置をそれぞれロボット制御装置3及び第1検出部103を介して取得する。
【0055】
ステップS14において、第1キャリブレーション範囲計測部106は、平面上のX軸方向のX方向単位量に対応する、ロボット座標系における3次元ベクトルVX(大きさと方向)及びカメラ2の画像座標系におけるターゲットマーク5の移動量を表す2次元ベクトルvx(大きさと方向)と、平面上のY軸方向のY方向単位量に対応する、ロボット座標系における3次元ベクトルVY(大きさと方向)及びカメラ2の画像座標系におけるターゲットマーク5の移動量を表す2次元ベクトルvy(大きさと方向)を算出する。
こうすることで、カメラ2の画像座標系における移動量とロボット座標系における移動量とのおおよその対応関係を取得することができる。例えば、以下の式(1)に基づいて算出される変換行列Rで画像座標系における位置をロボット座標系におけるおおよその位置に変換することができる。
【数1】
なお、ステップS13においてY軸方向に予め設定されたY方向単位量移動させる場合のベクトル開始位置は初期位置に限定されない。ステップS12において初期位置からX方向単位量移動させた後の位置をベクトル開始位置としてもよい。
【0056】
ステップS15において、第1キャリブレーション範囲計測部106は、ステップS14で算出した対応関係に基づいて、カメラ2の画像座標系における初期位置からカメラ2の画像座標系の境界位置(例えば、隅)までの移動量の大きさと方向(v)に対応する、ロボット座標系における当該平面上における初期位置からの移動量の大きさと方向(V)を算出して設定する。この際、移動量の大きさと方向(V)に1未満の係数をかけることで、ターゲットマーク5がカメラ2の画像座標系の範囲内で検出される可能性が高いように設定することが望ましい。なお、カメラ2の画像座標系における画像範囲の座標値(例えば4隅を含む境界位置)は予め算出されているものとする。
【0057】
ステップS16において、第1キャリブレーション範囲計測部106は、ターゲットマーク5を移動させる。
具体的には、第1キャリブレーション範囲計測部106は、ロボット制御装置3を介して当該平面上における初期位置から、設定された移動量の大きさと方向(V)に基づいて、ロボット4(すなわちターゲットマーク5)を移動させる。
【0058】
ステップS17において、第1キャリブレーション範囲計測部106は、第1検出部103を介してターゲットマーク5を検出できるかどうか、判定する。ターゲットマークを検出できた場合(Yes)、ステップS18に移る。ターゲットマークを検出できなかった場合(No)、ステップS19に移る。
【0059】
ステップS18において、第1キャリブレーション範囲計測部106は、第1検出部103を介してターゲットマーク5のカメラ2の画像座標系における座標位置がカメラ2の画像座標系の境界位置(例えば、隅)までの距離が近いか否か(すなわち距離が所定の閾値以下か否か)を判定する。近いと判定した場合(Yes)、ステップS20に移る。近くないと判定した場合、ステップS22に移る。
【0060】
ステップS19において、第1キャリブレーション範囲計測部106は、移動量の大きさと方向を再設定する。
具体的には、初期位置からの移動においてターゲットマーク5が検出できなかったと判定された場合には、第1キャリブレーション範囲計測部106は、設定済みの移動量の大きさと方向(V)に1未満の係数をかけることで、移動量の大きさと方向(V)を再設定する。この時に使用する係数は、初期位置からの移動の際に使用した係数より小さい値にする必要がある。その後、ステップS16に移る。
【0061】
ステップS20において、第1キャリブレーション範囲計測部106は、ターゲットマーク5のロボット座標系における現在位置及びカメラ2の画像座標系における現在位置を記憶する。
【0062】
ステップS21において、すべての境界位置に対応する計測が終わったか否かを判定する。すべての境界位置に対応する計測が終わった場合(Yes)、エンドに移る。次の境界位置がある場合(Noの場合)ステップS15に移る。
【0063】
ステップS22において、第1キャリブレーション範囲計測部106は、現在位置から境界位置までの移動量の大きさと方向(v´)に対応する、ロボット座標系における当該平面上における現在位置からの移動量の大きさと方向(V´)を設定する。
【0064】
ステップS23において、第1キャリブレーション範囲計測部106は、現在位置から設定された移動量の大きさと方向(V´)に基づいて、ロボット4(すなわちターゲットマーク5)を移動させる。
【0065】
ステップS24において、第1キャリブレーション範囲計測部106は、第1検出部103を介してターゲットマーク5を検出できるかどうか、判定する。ターゲットマーク5を検出できた場合(Yes)、ステップS18に移る。ターゲットマーク5を検出できなかった場合(No)、ステップS25に移る。
【0066】
ステップS25において、第1キャリブレーション範囲計測部106は、設定済みの移動量の大きさと方向(V´)に1未満の係数をかけることで、移動前の位置からの移動量の大きさと方向(V´)を再設定する。この時に使用する係数は、移動前の位置からの移動の際に使用した係数より小さい値にする必要がある。その後ステップS23に移る。
以上のように、第1キャリブレーション範囲計測部106は、ターゲットマーク5を検出するキャリブレーション範囲の境界を示すロボット座標系における座標位置を計測することができる。なお、前述したフローチャートは、一例であって、これに限定されない。
キャリブレーション実行時には、キャリブレーション装置としての視覚センサ制御装置1は、当該キャリブレーション範囲内でターゲットマーク5を移動させるようにロボット4を制御する。この際、アーム41が、設定されたキャリブレーション範囲を万遍なく移動することが望ましい。視覚センサ制御装置1は、例えば、
図9A又は
図9Bに示す軌道をターゲットマーク5が移動するように制御してもよい。
【0067】
[撮像制御部107]
撮像制御部107は、キャリブレーション実行時に、ロボット4によりキャリブレーション範囲内を移動させられるロボット4のアーム41の先端に取り付けられたターゲットマーク5を、複数の移動先の位置でカメラ2により撮像する。ここで、複数の移動先の個数としては、キャリブレーションができるだけの最小個数より大きな個数(例えば、20以上)とすることが望ましい。そうすることで、キャリブレーションの精度を高めることが可能となる。
【0068】
[キャリブレーション部108]
キャリブレーション部108は、キャリブレーション実行時に、ロボット制御装置3により移動させられた、ロボット4のアーム41の先端に取り付けられたターゲットマーク5の複数の移動先における、カメラ2により撮像される画像データ中のターゲットマーク5のカメラ2の画像座標系における座標位置と、カメラ2により撮像される時のターゲットマーク5のロボット座標系における座標位置と、を検出結果記憶部152に記憶する。
その後、キャリブレーション部108は、検出結果記憶部152に記憶された、ターゲットマーク5のカメラ2のカメラの画像座標系における座標位置と、カメラ2により撮像される時のターゲットマーク5のロボット座標系における座標位置と、に基づいてカメラ2のキャリブレーションを行う。
【0069】
図10は、本実施形態に係る視覚センサ制御装置1(CPU10)によるカメラ2のキャリブレーション処理を示すフローチャートである。
【0070】
ステップS31において、モデルパターンの生成及びパラメータの設定をする。
【0071】
ステップS32において、CPU10(第1画像範囲設定部105)は、オペレータの指定により、(キャリブレーション範囲に相当する)カメラ2に対する画像範囲を画像座標系で設定する。オペレータは、カメラ2で撮像した画像上で、(キャリブレーション範囲に相当する)画像範囲を指定することができる。
【0072】
ステップS33において、第1キャリブレーション範囲計測部106は、キャリブレーション範囲の境界を示すロボット座標系における座標位置を計測する。
具体的には、前述したように、第1キャリブレーション範囲計測部106は、ターゲットマーク5が画像範囲内で検出できるか否かを、ターゲットマーク5の移動と検出を何度も繰り返すことにより、キャリブレーション範囲(例えば、ロボットの動作範囲の境界を示すロボット座標系における座標位置)を計測する。(なお、ステップS33内における処理は、前述した第1キャリブレーション範囲計測部106の処理フローに基づく。)
【0073】
ステップS34において、CPU10(キャリブレーション部108)は、計測回数をカウントするための計測カウンタに1を設定する。
【0074】
ステップS35において、CPU10(キャリブレーション部108)は、ロボット制御装置3により計測されたターゲットマーク5のロボット座標系における3次元座標位置を取得する。
【0075】
ステップS36において、CPU10(第1検出部103)は、カメラ2により撮像される画像データから、ターゲットマーク5を検出し、検出されたターゲットマーク5のカメラ2の画像座標系における座標位置を計測する。
【0076】
ステップS37において、CPU10(キャリブレーション部108)は、現在位置におけるターゲットマーク5のロボット座標系における3次元座標位置、カメラ2の画像座標系における座標位置を関係付けて記憶する。
【0077】
ステップS38において、CPU10(キャリブレーション部108)は、計測回数をカウントするための計測カウンタに1を加算する。
【0078】
ステップS39において、計測カウンタが所定の値を超えるか否かを判定する。計測カウンタが所定の値を超える場合(Yes)、ステップ41に移る。計測カウンタが所定の値を超えない場合(No)、ステップ40に移る。
【0079】
ステップS40において、ロボット制御装置3は、ロボット4のアーム41の先端に取り付けられたターゲットマーク5を、キャリブレーション範囲内のカメラ2から計測できる場所に移動する。その後、ステップS34に移る。
【0080】
ステップS41において、CPU10(キャリブレーション部108)は、ステップ37において記憶された、ターゲットマーク5のロボット座標系における3次元座標位置及びカメラ2の画像座標系における座標位置との関係に基づいて、カメラ2のキャリブレーションを実行する。
【0081】
なお、本処理フローは一例であり、これに限定されない。
【0082】
以上のように、第1実施形態における視覚センサ制御装置1は、カメラ2の画像座標系における画像範囲を設定する第1画像範囲設定部105と、キャリブレーション実行前に、ロボット4を制御してターゲットマーク5を移動させてターゲットマーク5を検出することで、当該画像範囲に相当するロボットの動作範囲であるキャリブレーション範囲を計測する第1キャリブレーション範囲計測部106と、を備える。
これにより、キャリブレーション前に予め単一の視覚センサの視野の範囲に基づいて、ターゲットマーク5の移動範囲となるロボットの動作範囲(キャリブレーション範囲)を計測することで、キャリブレーションの自由度を高めることができる。また、ターゲットマーク5の移動する範囲をカメラの視野いっぱいに広くとることができ、キャリブレーションがより正確になる。また、ターゲットマーク5が移動する平面上に障害物等が存在する場合には、オペレータからの指示に基づいて、カメラ2の視野内に存在する障害物を避けるように画像範囲を指定することにより、キャリブレーション範囲を効率的に設定することができる。
【0083】
なお、キャリブレーション範囲は平面上に設定することができ、ターゲットマーク5をキャリブレーション時に移動させる平面としては、カメラ2の光軸に対して垂直になる平面、又は
図11Aに示すように、カメラ2の光軸に対して斜めになる平面となるように構成することができる。また、
図11Bに示すように、キャリブレーション範囲を少なくとも2つの平面上のそれぞれに設定することができる。
そうすることで、キャリブレーション範囲を広げることができ、キャリブレーションの自由度がさらに増し、キャリブレーションがより正確になる。
【0084】
第1実施形態におけるキャリブレーション方法、及び第1実施形態におけるプログラムについても、第1実施形態における視覚センサ制御装置1と同様の効果を奏する。
【0085】
以上、本発明の第1実施形態について説明したが、本発明は前述した第1実施形態に限るものではない。また、第1実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、第1実施形態に記載されたものに限定されるものではない。
【0086】
[変形例1]
第1実施形態においては、モデルパターン生成部101は、カメラ2によりモデルパターンを生成して記憶するように構成したが、カメラ2によりモデルパターンを生成することに替えて、既存の形状(例えば、○形状)をターゲットマーク5とするように構成してもよい。
[変形例2]
第1実施形態ではターゲットマーク5を予め指定された平面上で移動させるものとし、この平面上におけるキャリブレーション範囲を計測したが、キャリブレーション範囲は任意の3次元空間で定義してもよい。こうすることで、キャリブレーションの自由度がさらに増すことが期待される。
例えば、予め指定される平面を平行する複数の平面から構成されるものとして、また複数の部分平面を連結したものとしてもよい。
例えば、
図11Bに示すように、少なくとも2つの平面を含むように構成してもよい。複数の平面を含む場合には、第1キャリブレーション範囲計測部106は、それぞれの平面において、キャリブレーション範囲の境界を示すロボット座標系における座標位置を計測する。
また、例えば、3次元座標系で2つの平面を定義しておいて、各平面とカメラ2により撮像される画像の隅への視線の交わる点で定義される6面体内の空間をキャリブレーション範囲とするように構成してもよい。この場合には、第1キャリブレーション範囲計測部106は、当該6面体内において、キャリブレーション範囲の境界を示すロボット座標系における座標位置を計測する。
【0087】
[第2実施形態]
次に、第2の実施形態について説明する。第2実施形態は、キャリブレーション装置としての視覚センサ制御装置1Aが、少なくとも第1のカメラ21及び第2のカメラ22を備えるステレオカメラ2Aの画像範囲内に、移動させたターゲットマーク5が撮像される、ロボット4の動作範囲であるキャリブレーション範囲を設定する。
なお、第2実施形態の説明において、第1実施形態と共通する構成や機能については説明を省略し、第2実施形態に特有の点について説明する。
【0088】
図12は、ステレオカメラのキャリブレーションに関し、第1のカメラ21及び第2のカメラ22を備えるステレオカメラ2Aを使用したキャリブレーションを実施するためのロボットシステム1000の全体の構成図である。ステレオカメラを構成するカメラは2台に限らず、2台以上であればよい。また、ステレオカメラを構成するそれぞれのカメラは単一のカメラとしても使用できることは言うまでもない。ステレオカメラ2Aは、架台(図示せず)に固定される。第1のカメラ21及び第2のカメラ22は、
図13Aに示すように平行に配置してもよい。また、
図13Bに示すように、第1のカメラ21及び第2のカメラ22をそれぞれ傾けて配置してもよい。
第1のカメラ21及び第2のカメラ22をそれぞれ傾けて配置することで、第1のカメラ21及び第2のカメラ22を平行に配置する場合に比較して、第1のカメラ21による撮像領域と第2のカメラ22による撮像領域との重なり領域を大きくとることが可能となる。すなわち、ステレオカメラ2Aによる3次元計測の可能な領域を、第1のカメラ21及び第2のカメラ22を平行に配置する場合に比較して、大きくとることができる。
なお、第1のカメラ21及び第2のカメラ22の視野範囲、レンズ等を同じ構成にすることが望ましい。そうすることで、ターゲットマーク5の見え方が同じようになることが期待できる。
【0089】
[視覚センサ制御装置1Aについて]
視覚センサ制御装置1Aには、ステレオカメラ2Aが接続されており、第1のカメラ21及び第2のカメラ22によりターゲットマーク5をそれぞれ撮像し、第1のカメラ21及び第2のカメラ22のキャリブレーションをそれぞれ行う。
【0090】
キャリブレーション装置としての視覚センサ制御装置1Aの機能構成は、バス11にカメラインタフェース16を介してステレオカメラ2A(第1のカメラ21及び第2のカメラ22)が接続される点を除き、第1実施形態の視覚センサ制御装置1の機能構成(
図3)と同じである。視覚センサ制御装置1Aの機能構成は、前述の
図3を参照する。
【0091】
図14は、視覚センサ制御装置1AにおけるCPU10の機能構成を示すブロック図である。
図14に示すように、視覚センサ制御装置1AにおけるCPU10は、モデルパターン生成部101と、第1パラメータ設定部102と、第1検出部103と、第1画像範囲設定部105と、第1キャリブレーション範囲計測部106と、第2パラメータ設定部1022と、第2検出部1032と、第2画像範囲設定部1052と、第2キャリブレーション範囲計測部1062と、撮像制御部107と、キャリブレーション部108と、を備える。
【0092】
モデルパターン生成部101は、第1のカメラ21の視野内に配置されたターゲットマーク5を第1のカメラ21により撮像することにより、モデルパターンを生成する。第2のカメラ22に対するモデルパターンとしては、第1のカメラ21により撮像される画像を使って生成されたモデルパターンを流用する。なお、第2のカメラ22の視野内に配置されたターゲットマーク5を第2のカメラ22により撮像することにより、第2のカメラ22のためのモデルパターンを個別に生成してもよい。
【0093】
第1パラメータ設定部102は、第1のカメラ21により撮像される画像データからターゲットマーク5のモデルパターンを検出するための第1パラメータを設定する。
なお、第1パラメータ設定部102の機能は、第1実施形態における第1パラメータ設定部102と同等である。
【0094】
[第2パラメータ設定部1022]
次に、第1のカメラ21により生成されたターゲットマーク5のモデルパターンを使用して、第2のカメラ22により撮像される画像データから当該モデルパターンを検出するための第2パラメータを設定する第2パラメータ設定部1022について説明する。
第2パラメータ設定部1022は、第2のカメラ22により撮像される画像データからターゲットマーク5のモデルパターンを検出するための第2パラメータを第1パラメータに基づいて設定する。
より具体的には、第2パラメータ設定部104は、第2パラメータの値を初期設定する際に第1パラメータをそのまま使用する。
または、第2パラメータの値を初期設定する際に、例えば、第2パラメータを所定の範囲とする場合には、第2パラメータ設定部104は、第1パラメータの範囲と同一の範囲を設定したり、第2パラメータの範囲が、第1パラメータ設定部102により設定される第1パラメータの所定の範囲を含む広い範囲として設定することができる。このような場合には、後述する第2検出部105により、ある第2パラメータの値を適用することで、第2のカメラ22により撮像される画像データからターゲットマーク5のモデルパターンを検出することができた場合、第2パラメータ設定部104は、当該第2パラメータを中心として、第1パラメータの所定の範囲における中心値からの偏差に基づいて、第2パラメータの値の範囲を設定し直すことができる。
例えば、第1パラメータにおけるサイズの範囲を0.9から1.1に設定していた場合、中心値は1.0であって、第1パラメータの所定の範囲における中心値からの偏差は0.1となる。
他方、第2のカメラ22の対象物(ターゲットマーク5)について、第2のカメラ22において第2パラメータにおけるサイズを0.95とすることで対象物(ターゲットマーク5)を検出することができた場合、第2パラメータの中心値を0.95とし、第1パラメータの偏差を第2パラメータに指定する。すなわち、第2パラメータの値の範囲は、中心値を0.95とする範囲[0.85〜1.05]に設定する。
このように、第2パラメータの値の範囲を初期設定時の範囲を見直すことが可能となり、第2のカメラ22の撮像データからのモデルパターンの検出をより効率的に実施することが可能となる。なお、第2パラメータは、ここで例示したものに限らない。
【0095】
[第1検出部103]
第1検出部103は、第1のカメラ21により撮像される画像データからターゲットマーク5のモデルパターンを検出し、検出されたターゲットマーク5の第1のカメラ21の画像座標系における座標位置を計測する。なお、第1検出部103の機能は、第1実施形態における第1検出部103の機能と同等である。
【0096】
[第2検出部1032]
第2検出部1032は、第2のカメラ22により撮像される画像データからターゲットマーク5のモデルパターンを検出し、検出されたターゲットマーク5の第2のカメラ22の画像座標系における座標位置を計測する。
なお、第2検出部1032の検出処理については、第1実施形態で説明した第1検出部103において、カメラ2、第1パラメータ設定部102及びパラメータをそれぞれ、第2のカメラ22、第2パラメータ設定部1022、及び第2パラメータに読み替えることで説明できる。
【0097】
[第1画像範囲設定部105]
第1画像範囲設定部105は、オペレータからの指示に基づいて、第1のカメラ21で撮像された画像上で第1のカメラ21の画像座標系に基づいて第1の画像範囲を設定する。第1の画像範囲は画像全体であってもよい。
第1画像範囲設定部105は、第1の画像範囲を、例えば矩形で指定することができる。
また、アーム41の先端部分に取り付けられたターゲットマーク5が移動する平面上に障害物等が存在する場合には、第1画像範囲設定部105は、オペレータからの指示に基づいて、第1のカメラ21の視野内に存在する障害物を避けるように第1の画像範囲を制限することもできる。この場合、第1画像範囲設定部105は、複数の線分により構成される閉じた図形により第1の画像範囲を指定してもよい。なお、第1画像範囲設定部105の機能は、第1実施形態における第1画像範囲設定部105の機能と同等である。
【0098】
[第2画像範囲設定部1052]
第2画像範囲設定部1052は、第1画像範囲設定部105と同様に、第2のカメラ22で撮像された画像上で第2のカメラ22の画像座標系に基づいて第2の画像範囲を設定する。
なお、第2画像範囲設定部1052の処理については、第1実施形態で説明した第1画像範囲設定部105において、カメラ2を第2のカメラ22に読み替えることで説明できる。
【0099】
[第1キャリブレーション範囲計測部106]
第1キャリブレーション範囲計測部106は、キャリブレーション実行前に、ターゲットマーク5が移動するようにロボット4を制御して、第1検出部103によりターゲットマーク5を検出することで、第1画像範囲設定部105により設定された第1の画像範囲に相当するロボット4の動作範囲である第1のキャリブレーション範囲を計測する。
より具体的には、第1キャリブレーション範囲計測部106は、ターゲットマーク5が第1のカメラにより第1の画像範囲内で検出できるか否かを、ターゲットマーク5の移動と検出を何度も行うことにより、当該第1の画像範囲に相当するロボット4の動作範囲である第1のキャリブレーション範囲を計測する。なお、第1キャリブレーション範囲計測部106の機能は、第1実施形態における第1キャリブレーション範囲計測部106の機能と同等である。
【0100】
[第2キャリブレーション範囲計測部1062]
同様に、第2キャリブレーション範囲計測部1062は、ターゲットマーク5が第2のカメラにより第2の画像範囲内で検出できるか否かを、ターゲットマーク5の移動と検出を何度も行うことにより、当該第2の画像範囲に相当するロボット4の動作範囲である第2のキャリブレーション範囲を計測する。なお、第2キャリブレーション範囲計測部1062の処理については、第1実施形態で説明した第1キャリブレーション範囲計測部106において、カメラ2、第1パラメータ設定部102、パラメータ、画像範囲をそれぞれ、第2のカメラ22、第2パラメータ設定部1022、第2パラメータ、及び第2の画像範囲に読み替えることで説明できる。
本実施形態も第1実施形態と同様にターゲットマーク5を予め指定された平面上で移動させるものとする。第1のキャリブレーション範囲と第2のキャリブレーション範囲は同一の平面上に設定されることになる。
なお、第1のキャリブレーション範囲及び第2のキャリブレーション範囲を計測するための第1キャリブレーション範囲計測部106及び第2キャリブレーション範囲計測部1062の計測処理に係るフローチャートについては、第1実施形態(
図8A、
図8B)で説明したキャリブレーション範囲計測部106に係るフローチャートにおいて、カメラ2、第1パラメータ設定部102、パラメータ、画像範囲をそれぞれ、第1のカメラ21、第1パラメータ設定部102、第1パラメータ、第1の画像範囲、及び第2のカメラ22、第2パラメータ設定部1022、第2パラメータ、第2の画像範囲に読み替えるものとする。
第1のカメラ21及び第2のカメラ22のキャリブレーション実行時には、キャリブレーション装置としての視覚センサ制御装置1Aは、第1のキャリブレーション範囲と第2のキャリブレーション範囲の少なくとも一方の範囲内、又は第1のキャリブレーション範囲と前記第2のキャリブレーション範囲の両方に含まれる範囲内でターゲットマーク5を移動させるようにロボット4を制御する。つまり、第1のキャリブレーション範囲と第2のキャリブレーション範囲の両方に含まれる範囲のみを移動させてもよいし、第1のキャリブレーション範囲と第2のキャリブレーション範囲のどちらかに含まれる範囲のみを移動させてもよいし、第1のキャリブレーション範囲と第2のキャリブレーション範囲を併せた範囲を移動させてもよい。
【0101】
[撮像制御部107]
撮像制御部107は、キャリブレーション実行時に、ロボット4に第1のキャリブレーション範囲と第2のキャリブレーション範囲の少なくとも一方の範囲内、又は第1のキャリブレーション範囲と前記第2のキャリブレーション範囲の両方に含まれる範囲内を移動させられるロボット4のアーム41の先端に取り付けられたターゲットマーク5を、複数の移動先の位置で第1のカメラ21及び第2のカメラ22により撮像する。ここで、複数の移動先の個数としては、第1のカメラ21及び第2のカメラ22のそれぞれのキャリブレーションができるだけの最小個数より大きな個数(例えば、20以上)とすることが望ましい。そうすることで、キャリブレーションの精度を高めることが可能となる。
【0102】
[キャリブレーション部108]
キャリブレーション部108は、キャリブレーション実行時に、第1のキャリブレーション範囲と第2のキャリブレーション範囲の少なくとも一方の範囲内、又は第1のキャリブレーション範囲と前記第2のキャリブレーション範囲の両方に含まれる範囲内でのターゲットマーク5の複数の移動先における第1のカメラ21の画像座標系における座標位置と、第2のカメラ22の画像座標系における座標位置と、第1のカメラ21及び第2のカメラ22により撮像される時のターゲットマーク5のロボット座標系における座標位置と、を検出結果記憶部152に記憶する。
その後、キャリブレーション部108は、検出結果記憶部152に記憶された、ターゲットマーク5の第1のカメラ21の画像座標系における座標位置と、ターゲットマーク5の第2のカメラ22の画像座標系における座標位置と、第1のカメラ21及び第2のカメラ22により撮像される時のターゲットマーク5のロボット座標系における座標位置に基づいて、第1のカメラ21及び第2のカメラ22のキャリブレーションを行う。第1のカメラ21と第2のカメラ22は個別にキャリブレーションするようにしてもよい。
【0103】
図15は、本実施形態に係る視覚センサ制御装置1A(CPU10)による第1のカメラ21及び第2のカメラ22のキャリブレーション処理を示すフローチャートの一例である。なお、このフローチャートは、第1のキャリブレーション範囲と第2のキャリブレーション範囲を併せた範囲を移動させる場合の処理を示す。
【0104】
ステップS51において、モデルパターンの生成及び第1パラメータ及び第2パラメータの設定をする。
【0105】
ステップS52において、CPU10(第1画像範囲設定部105及び第2画像範囲設定部1052)はオペレータの指定により、それぞれ第1のカメラ21で撮像した画像上で第1の画像範囲を第1のカメラ21の画像座標系で設定し、第2のカメラ22で撮像した画像上で第2の画像範囲を第2のカメラ22の画像座標系で設定する。
【0106】
ステップS53において、CPU10(第1キャリブレーション範囲計測部106及び第2キャリブレーション範囲計測部1062)は、それぞれ第1のカメラ21の第1の画像範囲に相当する第1のキャリブレーション範囲の境界を示すロボット座標系における座標位置と、第2のカメラ21の第2の画像範囲に相当する第2のキャリブレーション範囲の境界を示すロボット座標系における座標位置と、を計測する。これにより、第1のキャリブレーション範囲及び第2のキャリブレーション範囲が設定され、第1のカメラ21及び第2のカメラ22のキャリブレーション処理を開始することができる。
【0107】
[キャリブレーション処理]
ステップS54において、CPU10(キャリブレーション部108)は、計測回数をカウントするための計測カウンタに1を設定する。
【0108】
ステップS55において、CPU10(キャリブレーション部108)は、ロボット制御装置3により計測されたターゲットマーク5のロボット座標系における3次元座標位置を取得する。
【0109】
ステップS56において、CPU10(第1検出部103及び第2検出部1032)は、それぞれ第1のカメラ21及び第2のカメラ22により撮像される画像データから、ターゲットマーク5をそれぞれ検出し、検出されたターゲットマーク5の、第1のカメラ21及び第2のカメラ22のそれぞれの画像座標系における座標位置を計測する。なお、第1のカメラ21と第2のカメラ22のいずれか一方からしかターゲットマークが検出されないこともあるが、その場合には検出できたカメラの画像座標系における座標位置のみを記憶する。
【0110】
ステップS57において、CPU10(キャリブレーション部108)は、現在位置におけるターゲットマーク5のロボット座標系における3次元座標位置、第1のカメラ21の画像座標系における座標位置及び第2のカメラ22の画像座標系における座標位置を関係付けて記憶する。
【0111】
ステップS58において、CPU10(キャリブレーション部108)は、計測回数をカウントするための計測カウンタに1を加算する。
【0112】
ステップS59において、計測カウンタが所定の値を超えない場合(No)、ステップS60に移る。計測カウンタが所定の値を超える場合(Yes)、ステップ61に移る。
【0113】
ステップS60において、ロボット制御装置3は、ロボット4のアーム41の先端に取り付けられたターゲットマーク5を、予め設定された第1のキャリブレーション範囲又は第2のキャリブレーション範囲内の第1のカメラ21と第2のカメラ22の少なくとも一方から計測できる場所に移動する。その後、ステップS55に移る。
【0114】
ステップS61において、CPU10(キャリブレーション部108)は、ステップ57において記憶された、ターゲットマーク5のロボット座標系における3次元座標位置、第1のカメラ21の画像座標系における座標位置及び第2のカメラ22の画像座標系における座標位置の関係に基づいて、第1のカメラ21及び第2のカメラ22のキャリブレーションを実行する。
なお、本処理フローは一例であり、これに限定されない。
例えば、第1のキャリブレーション範囲と第2のキャリブレーション範囲の両方に含まれる範囲のみを移動させる場合、ステップ56及びステップ60を次のように読み替える。
ステップS56においては、第1のカメラ21と第2のカメラ22の両方からターゲットマークが検出される場合にのみ、第1のカメラ21の画像座標系における座標位置及び第2のカメラ22の画像座標系における座標位置をそれぞれ記憶してもよい。
ステップS60においては、ロボット制御装置3は、ロボット4のアーム41の先端に取り付けられたターゲットマーク5を、予め設定された第1のキャリブレーション範囲内及び第2のキャリブレーション範囲内の第1のカメラ21と第2のカメラ22の両方から計測できる場所に移動する。
【0115】
第2実施形態における視覚センサ制御装置1Aは、第1のカメラ21の画像座標系における第1の画像範囲を設定する第1画像範囲設定部105と、キャリブレーション実行前に、ロボット4を制御してターゲットマーク5を移動させてターゲットマーク5を検出することで、第1の画像範囲に相当するロボット4の動作範囲である第1のキャリブレーション範囲を計測するキャリブレーション範囲計測部106と、第2のカメラ22の画像座標系における第2の画像範囲を設定する第2画像範囲設定部1052と、キャリブレーション実行前に、ロボット4を制御してターゲットマーク5を移動させてターゲットマーク5を検出することで、第2の画像範囲に相当するロボット4の動作範囲である第2のキャリブレーション範囲を計測するキャリブレーション範囲計測部1062と、を備える。
これにより、キャリブレーション前に予め複数のカメラ(視覚センサ)の視野の範囲に基づいて、ターゲットマーク5の移動範囲となるロボットの動作範囲(第1のキャリブレーション範囲及び第2のキャリブレーション範囲)を計測することで、キャリブレーションの自由度を高めることができる。また、ターゲットマーク5の移動する範囲をそれぞれのカメラのどちらに対しても最大限広くとることができ、キャリブレーションがより正確になる。また、ターゲットマーク5が移動する空間上に障害物等が存在する場合には、オペレータからの指示に基づいて、当該障害物を避けるように第1の画像範囲及び第2の画像範囲を指定することにより、ロボット4の動作範囲(第1のキャリブレーション範囲及び第2のキャリブレーション範囲)を効率的に設定することができる。
【0116】
また、第1のキャリブレーション範囲及び第2のキャリブレーション範囲はそれぞれ平面上に設定されるように構成することができる。
第2実施形態におけるキャリブレーション方法、及び第2実施形態におけるプログラムについても、第2実施形態における視覚センサ制御装置1Aと同様の効果を奏する。
【0117】
以上、本発明の第2実施形態について説明したが、本発明は前述した第2実施形態に限るものではない。また、第2実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、第2実施形態に記載されたものに限定されるものではない。
[変形例1]
第2実施形態においては、ステレオカメラ2Aを2台のカメラを有するものとしたが、ステレオカメラ2Aが3台以上のカメラを備えるように構成してもよい。
[変形例2]
第2実施形態においては、モデルパターン生成部101は、第1のカメラ2によりモデルパターンを生成して記憶するように構成したが、第2のカメラ22によりモデルパターンを生成して記憶するように構成してもよい。
また、第2実施形態においては、モデルパターン生成部101によりモデルパターンを生成して記憶するように構成したが、第1のカメラ21又は第2のカメラ22によりモデルパターンを生成することに替えて、既存の形状(例えば、○形状)をターゲットマーク5とするように構成してもよい。
[変形例3]
第2実施形態ではターゲットマーク5を予め指定された平面上で移動させるものとし、この平面上における第1のキャリブレーション範囲及び第2のキャリブレーション範囲を計測したが、第1のキャリブレーション範囲及び第2のキャリブレーション範囲は任意の3次元空間で定義してもよい。
例えば、予め指定される平面を平行する複数の平面から構成されるものとして、また複数の部分平面を連結したものとしてもよい。
【0118】
また、本実施形態においては、キャリブレーション装置として、視覚センサ制御装置1又は1Aを適用したが、これに限定されない。視覚センサ制御装置1又は1Aとロボット制御装置3とを一体とする制御装置として、キャリブレーション装置としてもよい。また、キャリブレーション装置として、情報処理装置(コンピュータ)全般を指すことができる。キャリブレーション装置には、例えば、サーバ、PC、各種制御装置などを適用してもよい。
【0119】
視覚センサ制御装置1又は1Aによるキャリブレーション方法は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、コンピュータ(視覚センサ制御装置1)にインストールされる。また、これらのプログラムは、リムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。