以下、本発明に係る実施の形態を図1乃至図9に沿って説明する。まず、三次元位置計測装置1を備えたロボット装置100の構成について図1乃至図5に沿って説明する。
ロボット装置100は、架台9の上面に設置された多関節ロボットアーム2を有しており、多関節ロボットアーム2の先端部には、ロボットハンド3が取り付けられて備えられている。また、ロボット装置100は、ロボットハンド3により把持自在(着脱自在)で、かつワーク(対象物)7に対する作業が可能なツール4を備えている。具体的には、ツール4は、ワーク(部品)7を把持して他の部品に組付け作業するピンセット8を有している。さらに、ツール4には、当該ツール4の一部であるピンセット8が撮像範囲内となるように、ステレオカメラ5が固定されている。
一方、ロボット装置100には、上記架台9の上面にあって、ロボットハンド3により把持を解除してツール4を置くための置き台6が備えられている。さらに、架台9の上面にあって、ロボットアーム2と対角の端部には、積層回転灯10が配設されて備えられている。積層回転灯10は、例えば上から赤色、黄色、緑色の回転灯が積層されて備えられている。
また、ロボット装置100には、ロボットアーム2、ロボットハンド3、ツール4のピンセット8、ステレオカメラ5、積層回転灯10などを制御する主制御装置(制御部)20が備えられている。主制御装置20はコンピュータであり、主制御装置内の各部はハードウェアや回路で構成されてもよいし、ソフトウェアで処理されてもよい。
具体的には、図3に示すように、主制御装置20は、ステレオカメラ5と共に三次元位置計測装置1を構成しており、画像処理部21、演算部22、記憶部23、制御部24、表示部25を有している。制御部24は、ステレオカメラ5に対して計測指令を送信するタイミングや、ロボットアーム2、ロボットハンド3、ピンセット8の駆動を制御する。画像処理部21は、ステレオカメラ5から伝送された画像データについて画像処理を行う。演算部22は、画像処理部21から送られてきた処理結果の演算や、詳しくは後述するキャリブレーションずれの判定処理の演算などを行う。記憶部23は、詳しくは後述するマーカ18、19の三次元計測位置の初期値等のデータを記憶する。また、記憶部(記憶媒体)23は、詳しくは後述するキャリブレーションずれ判定を行うための各種プログラム(判定プログラムを含む)が記録されている。そして、表示部25は、詳しくは後述するキャリブレーションずれの判定結果を表示する。
ついで、ツール4及びステレオカメラ5の構造について図4に沿って説明する。図4に示すように、ツール4には、固定プレート11が設けられている。その固定プレート11には、ステー16の一端部がねじ12によって固定されており、そのステー16の他端部には、ねじ17によりステレオカメラ5が固定されている。なお、本実施の形態では、図4に示すように、ステレオカメラ5の基線方向をx軸とし、基線方向と直交する画像の上下方向をy軸とし、x軸及びy軸に直交する方向をz軸とする。つまりz軸の方向は、ステレオカメラ5の奥行き方向成分である。
また、ツール4には、上述したようにワーク7を把持自在なピンセット8が配設されている。そのピンセット8は、ステレオカメラ5側に配置された平板8aと、ステレオカメラ5から視て平板8aの裏側に配置された平板8bとを有している。平板8a及び平板8bは、上記制御部24により不図示のモータ等で駆動制御されることで板厚方向に開閉自在に駆動され、ワーク7を把持可能となっている。
上記ピンセット8の平板8aのステレオカメラ5側の表面は、表面処理により白色に近い色に処理されていると共に、例えば黒色で丸型(黒丸)のマーカ18,19が描かれている。なお、表面が黒色、マーカが白色でもよい。マーカ18,19は、図4に示すように、ステレオカメラ5からの奥行き方向(z軸の方向)の距離が異なるように配置されている。また、マーカ18,19は、ステレオカメラ5の左カメラ30及び右カメラ40(図5参照)の撮像範囲内に配置されている(図8参照)。
なお、マーカ18,19の形状は、黒丸に限定される必要はない。また、マーカ18、19は、ステレオカメラ5から視てy軸の方向に一直線上に並んだ位置に限定されるものではなく、ステレオカメラ5からの奥行き方向(z軸の方向)の距離が異なっていればよい。特にステレオカメラ5とマーカ18,19との相対位置関係が既知となるのであれば、マーカ18,19は、置き台6上や架台9に配置してもよい。
さらに、マーカの数は2つに限定されるものではなく、2つ以上あってもよい。マーカ数が増加するほど、計測点が増えるため、キャリブレーションずれの判定精度は向上するが、本実施の形態では、説明を簡易化するため、マーカ数が2つの場合について説明する。
また、本実施の形態では、後述するキャリブレーションずれの判定を実行する場合は、基本的にピンセット8の平板8a及び平板8bを閉じた状態で行うようにする。しかしながら、閉じた状態に拘らず、マーカ18、19の位置が既知の位置となるのであれば、平板8aの位置はどの位置であってもキャリブレーションずれの判定を実行し得る。さらに、本実施の形態では、平板8a及び平板8bが両方とも開閉駆動するものを説明している。しかしながら、平板8aが固定で、平板8bだけが開閉駆動される構造であれば、ステレオカメラ5とマーカ18、19との相対位置関係が常に既知の位置となるので、ピンセット8の駆動中であってもキャリブレーションずれの判定を実行可能となる。
次に、ステレオカメラ5の内部構造について図5に沿って説明する。図5(a)に示すように、ステレオカメラ5は左カメラ(第1カメラ)30、右カメラ(第2カメラ)40と、これら2つのカメラ30、40を保持する支持体50から構成されている。カメラ30、40にあるイメージセンサ基板31、41には、CMOS素子を撮像素子とするイメージセンサ32、42が実装されている。イメージセンサ基板31、41は、支持体50に、ねじ51、52とねじ53、54とによりそれぞれ固定されている。
また、図5(b)に示すように、カメラ30、40の内部構造はそれぞれ同様の構造である。上述したイメージセンサ基板31、41は、レンズマウント35、45にねじ33、34と43、44により固定されている。また、レンズ39、49はレンズマウント35、45にねじ36、37とねじ46、47により固定されている。
ここで、本ロボット装置100を用いた生産工程の概略について説明する。まず、ツール4の先端にある電動のピンセット8を用いてワーク7を把持し、これを不図示の本体部品に組み付ける。組み付けが完了したら、ツール4を置き台6に置き、ロボットアーム2、ロボットハンド3は、別の部品を本体部品に組み付ける。本体部品の組み付けが全て完了したら、新たに供給された組み付け前の本体部品の組み付けを開始するため、再度ツール4を把持し、ワーク7の組み付け工程に入る。これらの工程を繰り返し実施する。
続いて、上記の生産工程の詳細について説明する。図1に示すように、ロボット装置100の使用時には、架台9上に設置されたロボットアーム2の先端にロボットハンド3が取り付けられている。図2に示すように、ロボット装置100の使用開始時(使用開始前)には、ツール4は置き台6に置かれている。ロボット装置100は、ツール4をロボットハンド3を用いて把持するために、主制御装置20内の制御部24からロボットアーム2に対して、シリアル通信路を介して、移動指令を送りロボットアーム2を置き台6付近の所定位置まで移動させる。移動が完了したら、制御部24からロボットハンド3に対して把持指令を送信し、ツール4を把持する。
次に、ツール4の先端にあるピンセット8を用いて架台9上に配置されたワーク7を把持するため、ロボットアーム2に対して制御部24からシリアル通信路を介して移動指令を送信し、ワーク7付近にピンセット8の先端が来るようにツール4を移動させる。このとき、ワーク7の位置姿勢は不定であるため、ワーク7の把持を行う前に、ワーク7をツール4に組み付けられたステレオカメラ5を用いて撮影し、ワーク7の位置姿勢を画像処理により三次元位置計測する。画像処理は、主制御装置20内の画像処理部21において、ステレオカメラ5から伝送される画像データに基づいて行われる。
画像処理部21で行われた処理結果は演算部22に送信され、演算部22はこの処理結果と後述のキャリブレーション結果を用いて、ロボットアーム2の移動量を演算する。この演算した移動量のデータを制御部24に送信し、制御部24からロボットアーム2に対してこの移動量分だけ移動するように指令を送信することにより、ロボットアーム2はワーク7を把持するのに適した位置に移動する。移動が完了したら、制御部24からツール4に対してピンセット8を閉じるように指令を送信することにより、ピンセット8がワーク7を把持する。制御部24は把持したワーク7を本体部品に組み付けるために、所定の位置にロボットアーム2を移動させ、移動した後にピンセット8を開くように指令を送信する。
以上のように、ワーク7の組み付けが完了されたら、ツール4を置き台6に置くために、制御部24はロボットアーム2に対して置き台6付近の所定位置まで移動するように指令を送信する。移動が完了したら、制御部24はロボットハンド3に対して開くように指令を送信することにより、ツール4は置き台6に置かれる。このとき、ツール4及びステレオカメラ5に衝撃が加わる可能性があり、キャリブレーションずれが発生する一因となる可能性がある。
ツール4を置き台6に置いたら、ロボットアーム2、ロボットハンド3は別の部品を不図示の本体部品に組み付ける工程を実施する。別の部品の組み付け工程が完了したら、新たにワーク7及び本体部品が供給される。新たに供給された本体部品にワーク7を組み付けるために、制御部24はロボットハンド3を用いてツール4を把持する工程に戻る。本ロボット装置100を用いた生産工程はこれらの処理を繰り返し実施する。
なお、本ロボット装置100には上から赤色、黄色、緑色の積層回転灯10が架台9上に取り付けられている。正常時は緑色の回転灯が点灯し、詳しくは後述する診断の結果、キャリブレーションずれが発生した場合には赤色または黄色の回転灯が点灯する。詳しくは後述するように、点灯している色により復帰方法が異なる。この積層回転灯10は主制御装置20から制御可能である。
続いて、本ロボット装置100の三次元位置計測装置1におけるキャリブレーションについて説明する。キャリブレーションは、例えば上述した生産工程を実施する前に実行することが好ましいが、必ずしも生産工程を実施する毎に行う必要はない。
キャリブレーションには大きく分けて、
A:ステレオカメラ5の内部のキャリブレーション
B:ステレオカメラ5の外部のキャリブレーション
の2つがある。上記Aのキャリブレーションを以下「内部キャリブレーション」といい、上記Bのキャリブレーションを以下「外部キャリブレーション」という。
内部キャリブレーションとは、ステレオカメラ5を構成するカメラ30,40の各々の焦点距離、画像中心、レンズ歪み等の、撮影特性に関するパラメータと、それらカメラ30,40間の相対位置姿勢を規定するパラメータに関するキャリブレーションである。
この内部キャリブレーションの方法の一例について説明する。まず、ステレオカメラ5を用いて形状の分かっている対象を撮影する。ステレオカメラ5内のカメラ30,40の撮影画像を画像処理することにより、対象の形状を、画像座標を用いて計測する。また、既知である対象の形状と画像座標上の対象の形状との相関性は、上述した撮影特性に関する各パラメータを用いて表すことが可能である。この相関性から各パラメータを求めることが内部キャリブレーションである。
ただし、画像処理により対象の形状を計測する場合、量子化誤差が存在するため、読み取り誤差が発生するのは避けることができない。そのため、対象の位置姿勢を変えながら複数枚撮影し、各撮影画像において、対象の形状と画像座標上の対象の形状の相関性を求め、これらの結果を最小2乗法等を用いて近似することにより、この読み取り誤差の影響を小さくする必要がある。このように、内部キャリブレーションを実施する場合には、対象の位置姿勢を変化させながら撮影する必要があるため、ステレオカメラ5をロボット装置100から取外し、専用装置を用いてキャリブレーションを実施する必要がある。
次に、外部キャリブレーションBとは、ステレオカメラ5とツール4(ピンセット8)との外部装置間の位置姿勢(設置位置)に関するキャリブレーションであり、つまりは、ハンドアイキャリブレーションである。外部キャリブレーションは、内部キャリブレーションの結果を用いて実施するため、内部キャリブレーションの結果が変化した場合、外部キャリブレーションも再度実施する必要がある。
この外部キャリブレーション方法の一例について説明する。まず、ステレオカメラ5の視野内に形状の分かっている対象を配置し、ロボットアーム2の位置姿勢を変えながら、この対象を様々な方向から複数枚撮影する。このとき、ロボットアーム2の移動量から、この対象とステレオカメラ5との位置の変化量を求めることができる。これと、ステレオカメラ5のカメラ30,40の撮影画像を画像処理することにより求まる、画像座標上の対象の形状との相関性から、ステレオカメラ5とツール4との位置関係を算出することができる。
ただし、当然ながら、この手法でも、読み取り誤差が生じるため、最小2乗法等の近似方法を用いてこの誤差を小さくする必要がある。このように、外部キャリブレーションは、ステレオカメラ5をツール4から取り外すことなく、本ロボット装置100を含む生産設備を用いて実施することができる。これら内部キャリブレーションや外部キャリブレーションのキャリブレーション結果は主制御装置20の記憶部23に保存される。
以上説明した内部キャリブレーションや外部キャリブレーションのキャリブレーション結果のどちらか一方でも、キャリブレーションを実施した時からずれることをキャリブレーションずれと呼ぶ。例えば長期間使用すると、部材の経年変化や、振動、衝撃によるカメラやレンズの固定ねじの緩み等が発生する。すると、ステレオカメラ5の内部のカメラ30,40の位置関係のずれ(ステレオカメラ内部のキャリブレーションずれ)やステレオカメラ5のツール4に対する設置位置のずれ(ステレオカメラ外部のキャリブレーションずれ)が発生する。このようなキャリブレーションずれの発生は、基本的には避けられないものである。
ついで、キャリブレーションずれの判定制御について主に図6及び図7のフローチャートに沿って説明する。まず、ステップS1における測定結果の初期値保存の処理について説明する。本処理は、ステレオカメラ5を用いてマーカ18、19の位置計測を実施し、その結果を初期値として主制御装置20内の記憶部23に保存する処理である。なおこの際は、システム(三次元位置計測装置1)が正常であることを表示するために、積層回転灯10の緑色の回転灯を点灯する。
このステップS1における測定結果の初期値保存の処理は、基本的に、ステレオカメラ5をツール4に組み付けた後に、1度だけ実施する処理である。ただし、例えばステレオカメラ5を交換し、内部キャリブレーションや外部キャリブレーションを再度実施した場合などには、再び本処理を実施する必要がある。本処理で保存した初期値は、図6に示す制御において、キャリブレーションずれが発生していないか判定するために使用される。
本ステップS1の詳細な処理を図7に示し、これを説明する。ステップS1−1においては、主制御装置20内の制御部24からステレオカメラ5に対して、撮影指令を送信し、主制御装置20内の画像処理部21にステレオカメラ5内の各カメラ30、40で撮影した画像を取り込む。各カメラ30、40で撮影した画像は、例えば図8に示すように、右カメラ40の画像60Rと、左カメラ30の画像60Lとが取得される。2つの画像60R,60Lは、それぞれ2つのマーカ18,19がその視野に納まるように撮影される。
ステップS1−2では、レンズ歪み補正処理を実行する。即ち、画像処理部21において、ステップS1−1で取り込んだカメラ30,40の画像60R,60Lに対してレンズ歪みを補正処理する。例えば最初に行ったキャリブレーション結果として、レンズ39,49の歪みパラメータが求まっているため、これらのパラメータを用いて歪み補正を実施する。
ステップS1−3では、ステレオ平行化処理を実行する。本処理の目的は、図9に示すように、カメラ30,40で同じ特徴点を抽出した場合、エピポーラ線拘束によりこの特徴点が同一の高さとなるように、撮影画像を画像処理することである。これにより、エピポーラ線からのずれ量を簡単に算出することができるため、これ以降の処理の簡易化が図れる。
同一の高さになるようにするためには、カメラ30,40の撮影方向が同じであり、カメラ40の撮像面がカメラ30の撮像面を水平軸方向に移動したようなカメラ配置となっているステレオカメラで撮影した画像のように、撮影画像を処理する必要である。ステレオカメラ5内部のキャリブレーション結果として、カメラ30,40の相対位置関係を表すパラメータが求まっているので、このステレオ平行化処理では、これらのパラメータを用いて、画像処理部21において、撮影画像を回転、並進させる。これにより、図8に示す2つの画像60R、60Lが、ステレオ平行化処理されて、図9に示すステレオ平行化後の左カメラ撮影画像50Lと、ステレオ平行化後の右カメラ撮影画像50Rとになる。
ステップS1−4では、黒丸中心位置計測処理を実行する。即ち、本実施の形態ではマーカ18,19の形状は黒丸としているため、黒丸の中心位置を計測する。まず、画像処理部21において、ステレオカメラ5内部のカメラ30、40それぞれの撮影画像データの輝度レベルに着目して、マーカが識別できるような適当な閾値を設けて2値化処理を実施する。そして、各撮影画像の閾値以下の領域のエッジについて楕円近似を行い、その楕円中心の画像座標(つまり中心位置)を求める。この時、カメラ30,40の撮影画像から求まった各楕円中心の画像座標を(ul,vl)(ur,vr)とする。この結果を画像処理部21から演算部22に送信する。ただし、中心位置の計測方法は上記処理に限定されるものではない。
ステップS1−5では、ステレオ計測処理を実行する。即ち、ステップS1−4で求めた楕円中心(ul,vl)、(ur,vr)から求まる視差ul−ur、キャリブレーション結果として求まっているカメラ30,40の相対位置関係、各カメラ30,40の焦点距離等を、パラメータとする。そして、演算部22は、これらパラメータを用いて、三角測量の原理に基づきステレオ計測を実施し、マーカ18,19の位置の3次元座標を求める。
ステップS1−6では、規定回数以上計測したか否かを判別する。この規定回数はあらかじめ主制御装置20内の記憶部23に設定しておく。ここで、複数回計測する理由について説明する。ステップS1−1からS1−5のステレオ計測には一定のばらつきが避けられず、1度だけ実施し初期値を決めると信頼性に欠けるので、複数回計測を行って平均値を求める必要がある。また、後述するステップS4,S7,S9で使用する各値(所定量、所定値、許容値)は、計測精度よりも十分大きな値にする必要性があるため、計測結果の標準偏差も同時に求める必要がある。本実施の形態では測定回数をn回と定義し、nは10以上とすることが好ましい。測定回数がn回以下と判別された場合にはステップS1−1に戻り、規定回数に達したらステップS1−7に移る。
ステップS1−7では、ステップS1−5のステレオ計測処理により求まった、i回目のマーカ18の測定結果を(x1−0(i),y1−0(i),z1−0(i))、マーカ19の測定結果を(x2−0(i),y2−0(i),z2−0(i))とする。これらn回の測定結果の相加平均値(x1−0,y1−0,z1−0)、(x2−0,y2−0,z2−0)をステレオ計測結果の初期値(真値)とする。
また、このステップS1−7では、後述するステップS4で使用するずれ量に関する所定量を決定するためにステレオ計測結果のばらつき、即ち標準偏差を求める。ここでΔLを、i回目のマーカ位置の計測結果と、n回の計測結果の相加平均値とのずれ量として定義する。本実施の形態では、マーカ18の位置計測結果を用いるため、マーカ18の測定結果のΔL1−0(i)は、下記数式(1)のように演算する。ただし、マーカ19を先に計測してもよい。
そして、このΔL1−0(i)のn回の相加平均値をΔL1−0とすると、この計測の標準偏差σΔL1は以下の数式(2)を用いて表せる。
また、ここでは、後述するステップS7で使用する所定値を決定するために、Δzの標準偏差も求める。Δzとはマーカ18とマーカ19との奥行き方向成分(奥行き方向の距離)の位置計測結果の差分である。Δzのn回の測定結果の相加平均値Δz0は、Δz0=z2−0−z1−0と求めることができる。i回目の測定結果Δz0(i)をΔz0(i)=z2−0(i)−z1−0(i)とすると、標準偏差σΔzは以下の数式(3)を用いて算出することができる。
次に、ステップS1−8では、エピポーラずれ結果の平均値と標準偏差を算出する。即ち、ステップS1−4で求めた黒丸中心の画像座標(ul,vl)、(ur,vr)に着目すると、ステップS1−3のステレオ平行化処理により生ずるエピポーラ線拘束条件によってキャリブレーションずれが発生していなければ理論的にはvl=vrとなる。しかしながら、実際にはキャリブレーション直後でも、vlとvrは近い値とはなるが、一致した値にはならない。なぜならば、キャリブレーション結果は最適化計算によって求めるため、各パラメータには必ず誤差が存在するからである。
本実施の形態では、エピポーラ線からのずれΔEを、ΔE=vl−vrと定義する。このエピポーラ線からのずれをn回計測した結果の相加平均値をΔE0、i回目の測定結果をΔE0(i)とする。このとき、エピポーラ線からのずれΔEの計測結果の標準偏差をσΔEとすると、σΔEは以下の数式(4)を用いて算出することができる。
以上の各処理が終了すると、ステップS1−7,S1−8で求めた計測結果(x1−0,y1−0,z1−0)、(x2−0,y2−0,z2−0)、Δz0、ΔE0、σΔL1、σΔzとσΔEを初期値(真値)として記憶部23に保存する(S1−9)。以上により図7に示すステップS1の初期値保存の処理が終了する。
続いて、図6のステップS2に進むと、まず、主制御装置20がステレオカメラ5の診断を行うのに適切な状態にあるか判断する。診断を行える状態であると判断すれば、マーカ18の位置を計測するステップS3に進み、診断を行える状態でないと判断した場合には、診断を行える状態になるまでステップS2を繰り返す(S2のNO)。
ここで、上記の診断を行える状態とはなにかについて説明する。例えば、ピンセット8が開閉動作中に診断を実施した場合は、マーカが動いているため、誤診断をしてしまう。従って、診断可能な状態か否かの判断は、ピンセット8が閉じているか否かの判断を行う処理である。主制御装置20内の制御部24は、ロボットアーム2、ロボットハンド3、ツール4も制御しているため、これらがどのような状態にあるか把握することが可能である。そこで、ツール4のピンセット8の状態を監視することにより、診断可能であるか否かを判断する。なお、診断可能な状態か否かの判断は、ワーク7の位置の計測時に同時に診断を行ってもよい。この場合、ワーク7がマーカを隠してしまう形状ではないことという制約があるが、計測と同時に診断できるため、システム全体としての信頼性を高めることができる。
上記のように診断可能であると判断すると(S2のYES)、ステップS3に進み、ステレオカメラ5の診断の一環としてマーカ18の位置を撮像(撮像工程)して計測する。この処理内容は、上述した図7のステップS1−1からS1−5と同様であるので説明を省略する。
そして、ステップS4では、マーカ18の位置(位置計測値)に関するずれ量が所定量以下(所定量よりも大きい)か否かを判定し、キャリブレーションずれが発生したか否かを判定する。詳細には演算部22で、ステップS3により演算したマーカ18の位置計測結果(位置計測値)(x1−j,y1−j,z1−j)と、ステップS1により記憶部23に保存したマーカ18の位置計測の初期結果(x1−0,y1−0,z1−0)とを比較する。そして、演算したマーカ18の位置が初期値として保存した初期結果から所定量よりも大きくずれているか判断する。なお、本実施の形態では、ステップS3,S4においてマーカ18の計測結果を用いたフローについて説明しているが、マーカ19の計測結果を用いてもよい。
なお、ずれ量ΔL1−jの定義式は以下の数式(5)とする。
ここで、ずれ量ΔL1のキャリブレーションずれ判定の閾値としての所定量ΔLt1の設定方法の一例について説明する。この所定量ΔLt1はS1−7で求めた計測誤差σΔL1よりも大きくする必要があるが、大きくしすぎると、キャリブレーションずれ判定の信頼性が低下してしまう。本実施の形態では所定量ΔLt1は標準偏差σΔL1の5倍の値とする。ただし、この許容値は5倍に限定されることはなく、照明条件の安定性等の測定環境により異なるので、少なくとも2倍以上とすることが望ましい。
ステップS4で、マーカ18のずれ量が所定量以下であると判定された場合は(S4のYES)、つまりステレオカメラ5に関してキャリブレーションずれが発生していないと判断され、ステップS12〜S14の正常時の使用方法に移行する。
まず、ステップS12では、ロボットアーム2やロボットハンド3等が、部品位置(ワーク7の位置)を計測する状態になるまで待機する(S12のNO)。主制御装置20が部品位置を計測する状態になったと判断した場合には(S12のYES)、ステップS13に進み、部品の位置姿勢を計測する処理を実施する。なお、部品位置を計測する状態か否かの判断は、ステレオカメラ5がワーク7を計測する際に、ステレオカメラ5が所定の位置にいるか否かを判断する処理である。本実施の形態では、ロボットアーム2、ロボットハンド3、ピンセット8の位置姿勢から、主制御装置20内の制御部24が判断する。
次にステップS13では、ステレオカメラ5を用いてワーク7を撮影し、その撮影画像に対して任意の画像処理を施すことによって、ワーク(部品)7の位置姿勢を判断する。このワーク7の三次元位置及び姿勢の計測手法は、既知の手法であるので、その説明を省略する。
そして、ステップS14では、ステップS13のワーク7の位置計測が規定回数実行されたか否かを判断する。即ち、ロボットハンド3がツール4を把持してからツール4を置き台6に置くまでに、複数のワーク7の位置計測を計測する場合など、複数回の位置計測を実施する場合がある。規定回数に達するまでは(S14のNO)、上記ステップS12,S13を繰り返す。そして、規定回数に達した場合には(S14のYES)、例えばすべてのワーク7の計測が完了したとして、ステップS2に戻る。なお、この規定回数は、あらかじめ主制御装置20内の記憶部23に保存されている。
一方、上記ステップS4において、マーカ18の位置が所定量よりも大きくずれていと判定した場合には(S4のNO)、つまりキャリブレーションずれが発生したと判定する。キャリブレーションずれが発生した場合は、まずステップS5において、ずれ発生要因個所を判別するためにマーカ19を撮像(撮像工程)して位置計測処理を実行する。なお、本実施の形態ではステップS5でマーカ19の位置計測を行うが、ステップS3,S4でマーカ19の位置計測結果を用いた場合は、ステップS5でマーカ18の位置計測を行うことになる。また、位置計測方法に関しては、ステップS3と同様であり、ステップS1−1からS1−5と同じであるので、その説明を省略する。
次にステップS6では、演算部22において、マーカ18とマーカ19との位置計測結果のz成分の差分Δzjを算出する(算出工程)。z成分は図4に示すように、ステレオカメラ5の奥行き方向成分である。即ち、ステップS3で求めたマーカ18の位置計測結果(x1−j,y1−j,z1−j)と、ステップS5で計測したマーカ19の位置計測結果(x2−j,y2−j,z2−j)を用いて、Δzj=z2−j−z1−jを算出する。
ステップS7は、キャリブレーションずれの発生要因箇所を特定するための処理の一環である。このステップS7では、上記算出したマーカ18とマーカ19とのz成分の差分Δzj(即ち奥行き方向の距離)が、ステップS1で保存した初期値の距離に対して所定値以下のずれであるか否かを判定する(判定工程)。
ここで、マーカ18、19間の距離の計測結果Δzjが、主制御装置20内の記憶部23にあらかじめ保存しておいた計測距離の初期結果Δz0から所定値よりも大きくずれていたとする(S7のNO)。この場合には、ステレオカメラ5内部の各カメラ30,40の相対位置関係が基線方向に(つまり基線長が)ずれたと判断し、ステップS11に進み、システムの復帰方法2である、内部キャリブレーションを行った後、外部キャリブレーションを行う。
上記ステップS7で用いる所定値Δztは、ステップS1−7で求めた計測誤差σΔzよりも大きくする必要があるが、大きくしすぎると、診断の信頼性が低下してしまう。そこで、本実施の形態では所定値Δztは標準偏差σΔzの5倍の値とする。ただし、この許容値は5倍に限定されることはなく、照明条件の安定性等の測定環境により異なるので、少なくとも2倍以上とすることが望ましい。
ここで、本ステップS7の処理によってなぜ、カメラ30,40の相対位置が基線方向にずれたのかを判別可能であるかについて説明する。説明の簡単化のため、平行ステレオカメラを例にとって説明する。平行ステレオ時、奥行き方向z成分の測定結果は以下の数式(6)を用いて算出することができる。この時、b:基線長(基準長)、f:焦点距離、d:視差である。
カメラ30,40の相対位置の基線方向のずれがΔbだけ発生し、その時のマーカ18計測時の視差がd1、マーカ19計測時の視差をd2とすると、本来計測されるべき、マーカ18とマーカ19間のz成分の差分は以下の数式(7)となる。
しかしながら、実際の計測時は、ステレオカメラ5のキャリブレーション結果である基線長bはキャリブレーションずれが発生する前の値を使用するため、計測結果は以下の数式(8)のようになる。
このように、真値(本実施の形態ではステップS1で求めた初期値を用いる)と計測結果の間に誤差が発生する。カメラ30,40の相対位置に基線方向のずれが生じていない場合、つまりはΔb=0の場合、真値と計測結果にはこのような誤差は生じない。また、単一のマーカ18のz成分の計測結果だけで判断しようとした場合、ステレオカメラ5の位置が変化した場合にもz成分の計測結果は変化するので、基線方向のずれが発生していないのに発生したと誤診断してしまうことになる。以上のように、マーカ18、19間の距離を算出することにより、カメラ30,40の相対位置が基線方向にずれたか診断可能である。
一方、ステップS7で算出したマーカ18,19間の距離が所定値以下であった場合は(S7のYES)、つまりカメラ30,40が基線方向にずれていないので、ステップS8に進み、各カメラ30,40の相対位置関係が垂直方向にずれていないか判断する。
ステップS8では、マーカ18のエピポーラ線からのずれを計測する。このステップS8は、マーカ18のエピポーラ線からのずれの計測方法であるが、これはステップS1−8で説明した方法と同様であるので省略する。なお、本実施の形態では、マーカ18のエピポーラ線からのずれを計測するが、マーカ19のエピポーラ線からのずれを計測してもよいし、マーカ18,19両方のエピポーラ線からのずれを計測してもよい。マーカ18,19両方のエピポーラ線からのずれを計測する場合、計測点が増加するので診断の信頼性は向上する。また、ここで求まったエピポーラ線からのずれ量をΔEjと定義する。
続いてステップS9では、演算部22において、カメラ30,40の相対位置が垂直方向にずれたことにより、キャリブレーションずれが発生したのか判別を行う。このステップS9の処理は、ステップS8で求まったエピポーラ線からのずれ量ΔEjが許容値以下であるか判別する処理である。この許容値ΔEtはステップS1で求めた計測誤差σΔEよりも大きくする必要があるが、大きくしすぎると、診断の信頼性が低下してしまう。そこで、本実施の形態では許容値ΔEtは標準偏差σΔEの5倍の値とする。ただし、この許容値は5倍に限定されることはなく、照明条件の安定性等の測定環境により異なるので、少なくとも2倍以上とすることが望ましい。
ステップS9において、マーカ18のエピポーラ線からのずれ量が、主制御装置20内の記憶部23に保存してあるエピポーラ線からのずれ量の初期値ΔE0から許容値よりも大きくずれていたとする(S9のNO)。この場合には、各カメラ30,40の相対位置関係が垂直方向にずれたと判断し、ステップS11に進み、システムの復帰方法2である、内部キャリブレーションを行った後、外部キャリブレーションを行う。
一方、ステップS9において、マーカ18のエピポーラ線からのずれ量が初期値ΔE0から許容値以下である場合には(S9のYES)、つまりステレオカメラ5内部にずれは発生していないと判断する。しかしながら、上記ステップS4においてキャリブレーションずれの発生が判定されているので、ステレオカメラ5とツール4等との外部装置間の位置姿勢にずれが発生したと判断する。この場合には、内部キャリブレーションが不要であるので、ステップS10に進み、システムの復帰方法1である、外部キャリブレーションだけを行う。
ついで、ステップS10(復帰方法1)について説明する。本ステップS10にたどり着くということは、ステレオカメラ5内部にずれは発生していないが、ツール4等の外部装置とステレオカメラ5との間の位置関係にずれが発生したことによって、キャリブレーションずれが発生したということである。よって本復帰処理は、ステレオカメラ5自身の内部キャリブレーションは実施しないが、ステレオカメラ5とツール4(ピンセット8)等の外部装置との間の外部キャリブレーションを実施する。
詳細には、復帰方法1としては、主制御装置20内の表示部25にキャリブレーションずれが発生したことと、復帰するためにステレオカメラ5と外部装置との間の外部キャリブレーションの実施を促すことを表示し、積層回転灯10の赤色の回転灯を点灯する。また、外部キャリブレーションずれが発生している環境であるので、主制御装置20はロボットアーム2,ロボットハンド3,ツール4に対して、駆動を停止するよう指令を送信し、生産動作を停止する。
次に、ねじ12,17等が緩んでいる可能性があるため(図4参照)、これらのねじを締めつけなおす。その後、ステレオカメラ5と外部装置との間の外部キャリブレーションを実施する。外部キャリブレーションが完了したら、ステップS1に戻ることによりシステム復帰可能となる。
続いて、ステップS11(復帰方法2)について説明する。本ステップS11にたどり着くということは、ステレオカメラ5内部にずれが発生しているために、内部キャリブレーションずれが発生しているということである。よって、ステレオカメラ5本体を再度内部キャリブレーションする必要がある。また、ステレオカメラ5内部のキャリブレーション結果であるパラメータが変化することにより、ステレオカメラ5とツール4(ピンセット8)等の外部装置との間の外部キャリブレーションも再度実施する必要がある。本復帰方法2は、この外部キャリブレーションと内部キャリブレーションとの2つのキャリブレーションを実施する処理である。
詳細には、復帰方法2としては、主制御装置20内の表示部25にキャリブレーションずれが発生したことと、復帰するためにステレオカメラ5の内部キャリブレーションの実施を促すことを表示し、積層回転灯10の黄色の回転灯を点灯する。また、内部キャリブレーションずれが発生している環境であるので、主制御装置20はロボットアーム2,ロボットハンド3,ツール4に対して、駆動を停止するよう指令を送信し、生産動作を停止する。
次に、ステレオカメラ5自身を再度内部キャリブレーションするために、ねじ12を取り外し(図4参照)、ステレオカメラ5をツール4から取り外す。そして、ステレオカメラ5内部の各ねじ(図5参照)が緩んでいる可能性があるため、これらのねじを締めつけなおしてから、専用装置を用いてステレオカメラ5の内部キャリブレーションを実施する。その後、ステレオカメラ5をツール4に組み付けてから、ステレオカメラ5とツール4(ピンセット8)等の外部装置との間の外部キャリブレーションを実施する。このように内部キャリブレーションの実施の後、外部キャリブレーションを実施し、これらキャリブレーションが完了したら、ステップS1に戻ることによりシステム復帰可能となる。
以上説明したように本三次元位置計測装置1によると、奥行き方向の距離の真値が既知であるマーカ18,19の間の距離を算出する(S3,S5,S6)。そして、算出した距離が真値と所定値以上ずれた場合に(S7のNO)、カメラ30,40との基線長が変化したステレオカメラ内部のキャリブレーションずれと判定できる。即ち、画像上のマーカ18,19がエピポーラ線から所定量以内にあっても、ステレオカメラ外部の設置位置ずれによるキャリブレーションずれと誤判定してしまうことを防止できる。従って、キャリブレーションずれの発生箇所を正確に判定することが可能となる。
また、本三次元位置計測装置1は、マーカ18,19のうちの少なくとも1つのマーカの画像が、エピポーラ線から許容値よりも大きくずれたとする(S9のNO)。この場合は、ステレオカメラ5の内部におけるカメラ30,40との相対位置がずれたステレオカメラ内部のキャリブレーションずれと判定する。これにより、カメラ30,40との基線長が変化したステレオカメラ内部のキャリブレーションずれだけでなく、ステレオカメラ内部のキャリブレーションずれの発生を確実に判定することが可能となる。
さらに、本三次元位置計測装置1は、マーカ18,19の少なくとも一方のマーカに関する値のずれ量が所定量よりも大きい場合にキャリブレーションずれの発生を判定する(S4のNO)。そして、ステレオカメラ5内部のキャリブレーションずれと判定されなかった場合に(S7のYES、S9のYES)、ステレオカメラ5の設置位置がずれたステレオカメラ5外部のキャリブレーションずれと判定する。これにより、ステレオカメラ5内部のキャリブレーションずれだけでなく、ステレオカメラ外部のキャリブレーションずれの発生を確実に判定することが可能となる。
なお、本実施の形態では、キャリブレーションずれが発生したか否かを判定し(S4)、その後、それがステレオカメラ5内部のキャリブレーションずれか否かを判定する(S7,S9)。これにより、ステレオカメラ5内部のキャリブレーションか、ステレオカメラ5外部のキャリブレーションかを判定している。しかしながら、ステレオカメラ5内部のキャリブレーションずれが発生したか否かを判定した後(S7,S9)、キャリブレーションずれが発生したか否かを判定し、ステレオカメラ5外部のキャリブレーションの発生を判定してもよい。つまりステップS4を、ステップS9の後になるように処理の順序を入れ替えてもよい。
また、本実施の形態では、ステレオカメラ5内部のキャリブレーションずれが発生した場合に、復帰方法2を行うだけのものを説明した。しかしながら、ステレオカメラ5内部でカメラ30,40との基線長が変化したキャリブレーションずれであるか否かを判定できるので、内部キャリブレーションの処理(復帰)箇所を特定して、内部キャリブレーションを実施するようにしてもよい。その場合は、ステップS7のNOの場合と、ステップS9のNOの場合とで、復帰方法を分けることになる。
また、本実施の形態では、キャリブレーションずれの判定を行う各種プログラムが記憶部23に記憶されているものとして説明したが、これに限らず、他の記録媒体(例えば光学ディスク、フラッシュメモリ、ハードディスク)であってもよい。
また、本実施の形態では、第1カメラと第2カメラとの2つのカメラ30,40を備えたものを説明したが、3つ以上のカメラを備えていてもよい。さらに、2つのマーカ18,19を撮像するものについて説明したが、マーカも3つ以上あってもよく、それらマーカのうちの少なくとも2つについて奥行き方向の距離が異なればよい。また、2つ以上のマーカは、撮像範囲内となるようにツール4(ピンセット8)に配置されていることが好ましいが、例えば撮像する対称が違うものであれば、これに限るものではない。つまり本発明は、ステレオカメラを有して対象物を三次元計測するものであれば、種々のものに応用が可能である。
また、本実施の形態では、マーカ18,19の位置や距離をキャリブレーションしたステレオカメラ5で複数回撮像して演算することで初期値を演算し、それをマーカ間の距離の真値とした。しかしながら、例えばマーカ18,19の距離を直接的(物理的)に測り、その値を真値として記憶部23に記憶させておいてもよい。