以下、本発明の一実施形態について図面を用いて説明する。図1は、本発明の座標変換関数の計算方法が適用される3次元画像生成装置の基本構成を示す概略図である。
この3次元画像生成装置は、基台10上に固定して先端部を測定対象空間内で自由に変位させるアーム支持機構20と、アーム支持機構20の先端部に取り付けた3次元形状測定装置30とを備えている。アーム支持機構20は、固定ベース21、回転ベース22、第1アーム23、第2アーム24、第3アーム25および第4アーム26からなる。
固定ベース21は、円筒状に形成され、その下端にて基台10上に垂直方向に立設固定されている。回転ベース22は、円盤状に形成され、固定ベース21の上面において同固定ベース21の軸線回りに回転可能な状態で組み付けられている。この回転ベース22は、固定ベース21内に設けられたサーボモータ21aにより固定ベース21の軸線回りに回転駆動される。第1アーム23は、その基端に設けた連結部23aにて、回転ベース22の上面に設けた連結部22aに、回転ベース22の軸線方向に直交する軸線回りに回転可能な状態で組み付けられている。この第1アーム23は、連結部22a,23aに設けたサーボモータ23bにより回転ベース22の軸線方向に直交する軸線回りに回転駆動する。
第2アーム24は、その基端に設けた連結部24aにて、第1アーム23の先端に設けた連結部23cに、第1アーム23の軸線方向に直交する軸線回りに回転可能に組み付けられている。この第2アーム24は、連結部23c,24aに設けたサーボモータ24bにより第1アーム23の軸線方向に直交する軸線回りに回転駆動する。第3アーム25は、その基端に設けた連結部25aにて、第2アーム24の先端に設けた連結部24cに、第2アーム24の軸線方向に直交する軸線回りに回転可能に組み付けられている。この第3アーム25は、連結部24c,25aに設けたサーボモータ25bにより第2アーム24の軸線方向に直交する軸線回りに回転駆動する。
第4アーム26は、その基端に設けた連結部26aにて、第3アーム25の先端に設けた連結部25cに、第3アーム25の軸線方向に直交する軸線回りに回転可能に組み付けられている。この第3アーム25は、連結部25c,26aに設けたサーボモータ26bにより第3アーム25の軸線方向に直交する軸線回りに回転駆動する。第4アーム26の先端部には、固定部材27を介して3次元形状測定装置30が、第4アーム26の軸線回りに回転可能な状態で組み付けられている。固定部材27は、3次元形状測定装置30の方形状のハウジングの底面または側面に固定されている。また、固定部材27には、サーボモータ27aが設けられており、同固定部材27を第4アーム26の軸線回りに回転駆動する。
3次元形状測定装置30は、その正面側に位置する測定対象物体の3次元形状を測定するとともに同測定した3次元形状を表す情報を出力するものであり、本実施形態においては、レーザ光を用いて3角測量法に従って物体の3次元形状を測定するものである。なお、本実施形態では、レーザ光を用いるようにしているが、3次元物体の表面形状を測定し、反射率および色などを識別することが可能であれば他の光を用いてもよい。
この3次元形状測定装置30においては、レーザ光源から物体に向けて出射されるレーザ光の進行方向にほぼ垂直な仮想平面を想定するとともに、同仮想平面上にて互いに直交するX軸方向およびY軸方向に沿って分割した多数の微小エリアを想定する。そして、3次元形状測定装置30は、前記多数の微小エリアにレーザ光を順次照射し、物体からの反射光によって前記微小エリアが規定する物体表面までの距離をZ軸方向距離として順次検出して、物体の表面を微小エリアずつに分割した各分割エリア位置を表すX,Y,Z座標に関する情報を得て、同3次元形状測定装置30に面した物体表面の形状を測定するものである。
したがって、この3次元形状測定装置30は、出射レーザ光の向きをX軸方向に変化させるX軸方向走査器と、出射レーザ光の向きをY軸方向に変化させるY軸方向走査器と、物体表面にて反射された反射レーザ光を受光して物体表面までの距離を検出する距離検出器とを備えている。X軸方向走査器およびY軸方向走査器としては、レーザ光源からの出射レーザ光の光路をX軸方向およびY軸方向に独立に変化させ得る機構であればよく、例えばレーザ光源自体をX軸方向およびY軸方向の軸線回りに電動モータによって回転させたり、出射レーザ光の光路に設けられてその方向を変更するガルバノミラーをX軸方向およびY軸方向の軸線回りに電動モータによって回転させる機構を利用できる。距離検出器としては、前記出射レーザ光の光路に追従して回転し、物体表面にて反射された反射レーザ光を集光する結像レンズおよび同集光したレーザ光を受光するCCDなどの複数の受光素子を一列に配置させたラインセンサからなり、ラインセンサによる反射レーザ光の受光位置によって物体表面までの距離を検出する機構を利用できる。
したがって、このような3次元形状測定装置30は、物体の表面を微小エリアずつに分割した各分割エリア位置を表すX,Y,Z座標に関する情報として、X軸方向走査器による出射レーザ光の基準方向に対するX軸方向への傾きθx、Y軸方向走査器による出射レーザ光の基準方向に対するY軸方向への傾きθy、および距離検出器による物体表面までの距離Lzとが、前記仮想したX軸方向およびY軸方向に沿って分割した多数の微小エリアごとに出力される。より具体的には、X軸およびY軸方向への傾きθx,θyは、電動モータの基準位置からの回転角である。また、物体表面までの距離Lzは、ラインセンサにおける反射レーザ光の受光位置である。なお、前述した3次元形状測定装置30はその一例を示すもので、レーザ光に代えてミリ波、超音波などを使用したものなど、いかなる3次元形状測定装置をも利用できる。
この3次元形状測定装置30には、コントローラ41および3次元画像処理装置42が接続されている。コントローラ41は、3次元形状測定装置30の他に、サーボモータ21a,23b,24b,25b,26b,27aおよび3次元画像処理装置42がそれぞれ接続されており、複数の操作子を含むキーボードなどからなる入力装置43からの指示に従って、3次元形状測定装置30、サーボモータ21a,23b,24b,25b,26b,27aおよび3次元画像処理装置42の作動をそれぞれ制御する。
コントローラ41には、アーム支持機構20の基本姿勢時における各アーム間の角度、同各アーム間のねじれ角、同各アーム間の距離、各アームの長さなどの各アームの幾何学的な構成を規定する基本姿勢情報が設定されている。そして、コントローラ41は、入力装置43または3次元画像処理装置42から指示されるアーム支持機構20の先端部の位置決め位置(先端部の向きも含む)に、同先端部を位置決めするための回転ベース22の回転角、第1アーム23〜第4アーム26間の各角度またはねじれ角、および第4アーム26に対する固定部27の回転角を、前記基本姿勢情報を用いてそれぞれ計算して、これらの回転角に対応する各サーボモータ21a,23b,24b,25b,26b,27aを制御するための制御値を計算する。また、コントローラ41は、入力装置43からアーム支持機構20の先端部の位置決め位置(第4アーム26の軸線の向きを含む。以下、「アーム支持機構20の先端部の向き」という)を表すアーム先端位置情報が入力された場合には、同アーム先端位置情報を3次元画像処理装置42に供給する。なお、アーム先端位置情報が表す第4アーム26の先端の位置および同先端部の向きは、固定ベース21の基台10への固定部における予め定められた点を原点とする3次元座標系である基準座標系Sによって表されている。また、この基準座標系SのX−Y座標平面は、基台10の上面と平行であり、同基準座標系SのZ軸は同基台10の上面に対して垂直方向に設定されている。
3次元画像処理装置42は、コンピュータ装置によって構成されて図3,図4および図11に示す各プログラムを実行することにより座標変換関数を計算するとともに、図12に示すプログラムを実行することによりコントローラ41から供給されるアーム先端位置情報および3次元形状測定装置30からの3次元形状を表す情報(具体的には、X軸方向への傾きθx、Y軸方向への傾きθy、物体表面までの距離Lz)を入力して、測定対象空間内に位置する物体の立体形状を任意の方向から見て表示可能な3次元形状データ群を生成する。この3次元画像処理装置42には、表示装置44が接続されている。表示装置44は、液晶ディスプレイ、プラズマディスプレイまたはCRTディスプレイなどからなり、3次元画像処理装置42によって実行される各プログラムの実行ステップおよび同各プログラムの実行より生成される3次元形状データに基づいて測定対象空間内に位置する測定対象物体の立体形状を表示する。なお、この3次元画像処理装置42が、本発明に係る3次元形状データ生成装置に相当する。
次に、このように構成した3次元画像生成装置の作動について説明する。まず、作業者は、図2(A)に示すように、基台10上における適当な位置に基準物体50を配置する。基準物体50は、真球体に形成されており、測定対象空間内において定点を定めるために用いられる。なお、この場合、基準物体50を支持する支柱などを介して基台10の上面から適当な高さの位置に基準物体50を配置するようにしてもよい。
次に、作業者は、入力装置43を操作して基準物体50の上方にアーム支持機構20の先端部(3次元形状測定装置30)を位置決めさせる。この場合、アーム支持機構20の先端部の向き(第4アーム26の軸線方向)が基準座標系SのX−Y座標平面に対して直交するようにアーム支持機構20の先端部(3次元形状測定装置30)を位置決めする。すなわち、アーム支持機構20の先端部(3次元形状測定装置30の取り付け部)に、同第4アーム26の先端部の予め決められた位置(第4アーム26の軸線上にある第4アーム26の先端の点)を原点とするとともに、同第4アームの軸線方向をZ軸とする3次元座標系であるアーム座標系A1を想定し、同アーム座標系A1のX−Y座標平面が基準座標系SのX−Y座標平面に対して平行になるようにアーム支持機構20の先端部(3次元形状測定装置30)を位置決めする。具体的には、アーム支持機構20の先端部の向きを基台10の上面に対して垂直になるように位置決めする。すなわち、本実施形態においては、本発明に係る所定の3次元座標系として基準座標系Sを用いている。
次に、作業者は、入力装置43を操作して、図3に示す座標変換関数FC1C3計算プログラムの実行を3次元画像処理装置42に指示する。座標変換関数FC1C3は、3次元形状測定装置30に関する座標系であるカメラ座標系C1によって表された3次元形状データを、同3次元形状測定装置30に関する座標系であってカメラ座標系C1とは異なる座標系であるカメラ座標系C3によって表された3次元形状データに座標変換する座標変換関数である。ここで、カメラ座標系C1は、互いに直交する3つの座標軸(X軸,Y軸,Z軸)からなり3次元形状測定装置30の特定点を原点とする3次元座標系である。このカメラ座標系C1の各座標軸の向きは、アーム座標系A1および基準座標系Sの各座標軸の向きとは一致していない。なお、カメラ座標系C3については後述する。
この指示に応答して3次元画像処理装置42は、座標変換関数FC1C3計算プログラムの実行をステップS100にて開始して、ステップS102にて、3次元形状測定装置30による基準物体50の測定を行う。3次元形状測定装置30は、コントローラ41からの指示に応答して基準物体50の測定を開始して、基準物体50の3次元形状を表す情報を3次元画像処理装置42に出力する。すなわち、基準物体50の表面を微小エリアずつに分割した各分割エリア位置を表すX−Y−Z座標に関する情報(具体的には、傾きθx,θyおよび距離Lz)を3次元画像処理装置42に出力する。そして、3次元画像処理装置42は、同ステップS102にて、3次元形状測定装置30から出力されたX−Y−Z座標に関する情報に基づいて、基準物体50の3次元形状を表す立体形状データ群からなる3次元形状データを計算する。この場合、3次元形状データは、3次元形状測定装置30に関する座標系、すなわちカメラ座標系C1によって表されている。なお、この3次元形状データ中には、基準物体50のほかに同基準物体50の周辺に存在する他の物体(例えば、基台10)の表面形状を表す3次元形状データも含まれている。
次に、3次元画像処理装置42は、ステップS104にて、前記ステップS102にて計算された3次元形状データの中から基準物体50の3次元形状を表す3次元形状データを抽出する。具体的には、図4に示す基準物体抽出サブプログラムの実行をステップS200にて開始して、ステップS202にて、基準物体の特徴の入力を待つ。作業者が入力装置43を介して基準物体50の特徴を入力すると、同入力情報は3次元画像処理装置42に供給される。この場合、基準物体の特徴とは、基準物体50が球体であることを表すデータおよび基準物体50の直径を表すデータである。なお、基準物体の特徴が既に入力されていれば、このステップS202の処理をスキップさせてもよい。
次に、3次元画像処理装置42は、ステップS204にて、前記入力された基準物体50の特徴および基準物体50の直径を表すデータを用いて、単位ブロックおよび探索ブロックのサイズ設定処理を実行する。なお、本実施形態においては、基準物体50の直径は25mmである。単位ブロックは、基準物体50の存在位置を特定するために探索ブロックを移動させる最小のブロックであり、本実施形態では立方体に形成されているが、直方体などの他の形状でもよい。また、単位ブロックのサイズは、基準物体50の一部が存在することを確認可能である程度に小さく設定される。探索ブロックは、基準物体50をその内部に包含する位置を特定するために利用されるもので、本実施形態では立方体に形成されるが、直方体などの他の形状でもよい。また、この探索ブロックのサイズは、基準物体50のすべてを包含できるとともに、なるべく小さく設定される。ただし、この基準物体50を包含できるとは、基準物体50の一部でも含む単位ブロックのすべてを含むことを意味する。
なお、本実施形態においては、基準物体50の直径が25mmであることから、単位ブロックのサイズとして立方体の1辺の長さ4mmが設定されるとともに、探索ブロックのサイズとして立方体の1辺の長さ32mmに設定される。これによれば、探索ブロックは、8×8×8個の単位ブロックを含むことになり、直径25mmのうちの24mmが6個の単位ブロックに完全に包含され、残りの1mmが1個または2個の単位ブロックに含まれることになる。図5は、単位ブロックと探索ブロックの関係を斜視図により示している。また、このステップS204において、単位ブロックおよび探索ブロックのサイズを設定するようにしたが、基準物体50の変更がなければ予め設定されている単位ブロックおよび探索ブロックのサイズをそのまま利用すればよいので、このステップS204の処理は不要である。
次に、3次元画像処理装置42は、ステップS206にて探索領域のブロック化処理を実行する。この探索領域のブロック化処理は、測定対象空間内で基準物体50の含まれる可能性のある領域を単位ブロックで分割する処理である。基本的には、基準物体50に関する3次元形状データに基づき、測定対象空間内のうち3次元形状データが存在する空間を単位ブロックで立体的に分割する。分割は、前記X,Y,Z座標の各座標軸に沿って単位ブロックを並べていく方法で行う。図6は図2(A)の測定対象空間内に置かれた基準物体50に関する3次元形状データに基づき本処理を行った結果を示す2次元の概念図である。図6中、二点鎖線は測定対象空間内の境界(測定対象領域)を示している。そして、分割後の各単位ブロックBLはX,Y,Z方向の位置i,j,kを用いた座標(i,j,k)によって表される。ただし、i,j,kの各値は整数である。なお、このステップS206の探索領域のブロック化処理においては、基準物体50の存在しない連続領域、すなわち基準物体50に関する3次元形状データの含まれない連続領域を単位ブロックによる分割領域外としたが、測定対象領域の全域に渡って単位ブロックによる分割を行うようにしてもよい。
次に、3次元画像処理装置42は、ステップS208にて、前記ステップS206の処理によって分割した各単位ブロックごとに3次元形状データが所定個数以上あるかを調べる。そして、3次元形状データが所定個数以上ある単位ブロックを抽出する。図7(A)〜(C)は、抽出された単位ブロックを3次元形状測定装置30に視点をおいてZ軸方向から見たときの概念図である。ただし、外枠は探索ブロックに対応しており、ハッチング部分が抽出された単位ブロックである。
次に、3次元画像処理装置32は、ステップS210にて、基準物体50を含む可能性のある探索ブロック位置の検出を行う。この探索ブロック位置の検出処理においては、前記ステップS206の処理により単位ブロックに分割した領域にて、前記ステップS204の処理により設定した探索ブロックを単位ブロックを単位として、X軸、Y軸およびZ軸方向に順次移動させる。そして、各移動ごとに移動後の探索ブロック内に含まれるとともに前記ステップS208の処理によって抽出された単位ブロックの個数を計算する。前記単位ブロックの数が所定の範囲内であれば、該当する探索ブロック位置であるとして同位置が検出される。図8の(A)〜(D)は、この探索ブロックの移動の状態を2次元的に示す概念図である。
この場合、基準物体50は球体であるので、3次元形状測定装置30と対向する側に位置して3次元形状データが得られる箇所と、3次元形状測定装置30と対向しない側に位置して3次元形状データが得られない箇所の割合は、ほぼ同じであるので、球体の直径が特定されれば探索ブロック内に含まれる単位ブロックの数は設定される。単位ブロックの数が、この設定された数から所定の範囲内にある場合として考えられるのは、図7に示すように、探索ブロック内に基準物体50が含まれる場合と、探索ブロック内に基台10が含まれる場合である。このため、単位ブロックの数が所定の範囲内である場合には、同単位ブロックのX−Y平面、Y−Z平面またはZ−X平面での数に基づいて基準物体50以外の物体を検出することを防ぐ。具体的には、図7(A)に示すように、探索ブロックをZ軸方向から見た場合、すなわちX−Y平面での単位ブロックの数と、探索ブロックをX軸方向(またはY軸方向)から見た場合、すなわちY−Z平面(またはZ−X平面)での単位ブロックの数とが、それぞれ所定の設定数の範囲であるか否かを判定すればよい。このようにすれば図7(B)に示すように、探索ブロック内に基台10が含まれる場合には、X−Y平面での単位ブロックの数と、Y−Z平面(またはZ−X平面)での単位ブロックの数とが、基準物体50を検出する場合に検出される単位ブロックの数と大きく異なるため、精度良く基準物体50を含む探索ブロックを検出することができる。
次に、3次元画像処理装置42は、ステップS212にて、前記ステップS210の処理によって検出した位置の探索ブロック内に含まれる3次元形状データが、基準物体50の形状に合致するか否かを判定し、合致すると判定したとき探索ブロック内の3次元形状データを抽出する3次元形状データ抽出処理を行う。具体的には、該当する探索ブロック内のすべての3次元形状データ(X,Y,Z座標値)を、球体を表す式である下記式1の左辺のX,Y,Zにそれぞれ代入し、最小2乗法を用いて未知数a,b,c,dを計算する。この場合、a,b,cは、3次元形状データにより表された球体中心のx,y,z座標値をそれぞれ表し、dは球体の半径を表す。
次に、前記該当する探索ブロック内の各3次元形状データ(X,Y,Z座標値)ごとに、同3次元形状データ(X,Y,Z座標値)と前記計算した値a,b,cとを前記式1に代入して、各3次元形状データごとに値d(球体中心からの距離)を計算する。そして、前記計算した値d(球の半径)と前記入力した基準物体50の直径から計算した基準物体50の半径との差が所定の判別値以内であり、かつ各3次元形状データの球体中心からの距離の偏差が所定の判別値以内であれば、前記探索ブロック内の3次元形状データは合致するとして、同3次元形状データのうち、球体中心からの距離が所定の範囲内にあるデータを抽出基準物体データとして記憶する。このステップS212の処理後、ステップS214にて、基準物体抽出サブプログラムの実行を終了して、再び座標変換関数FC1C3計算プログラムのステップS106に戻る。
次に、3次元画像処理装置42は、ステップS106にて、前記記憶した抽出基準物体データ(基準物体50の3次元形状を表す3次元形状データ)を上記式1の方程式のX,Y,Zに代入して、最小2乗法によりa,b,cを計算することにより基準物体50の中心座標(cxC1,cyC1,czC1)を定点として計算する。なお、この場合、前記基準物体抽出サブプログラムにおけるステップS212にて、探索ブロック内に含まれる3次元形状データが基準物体50の形状に合致すると判定されたときの3次元形状データに基づく球体中心(X,Y,Z座標値)を定点としてもよい。
次に、3次元画像処理装置42は、ステップS108にて、基台10の上面を表す基準平面Pを定義する。具体的には、前記ステップS102にて計算した3次元形状データから、前記記憶した抽出基準物体データ(基準物体50の3次元形状を表す3次元形状データ)を除いた3次元形状データ、すなわち、基台10の上面を表す3次元形状データを下記式2の左辺のX,Y,Zにそれぞれ代入し、最小2乗法を用いて未知数a,b,cを計算する。
なお、前記ステップS102にて計算した3次元形状データの中に基準物体50および基台10以外の物体の形状を表す3次元形状データが含まれている場合には、同ステップS102にて計算した3次元形状データから、前記抽出基準物体データ(基準物体50の3次元形状を表す3次元形状データ)を除いた3次元形状データ(以下、「初期の3次元形状データ」という)の一部を抽出して前記式2に代入して、その値の2乗和が最小となるa,b,cを最小2乗法を用いて計算し平面P’を仮定義する。そして、初期の3次元形状データを用いて仮定義した平面P’からの距離が所定の範囲内の3次元形状データを抽出する。この場合、抽出した3次元形状データが所定数以上であれば、初期の3次元形状データから一部抽出した3次元形状データすべてが基台10の上面を表す3次元形状データであると判定する。一方、抽出した3次元形状データが所定数未満であれば、初期の3次元形状データから一部抽出した3次元形状データは基台10の上面を表す3次元形状データ以外の3次元形状データも含まれていると判定して、再度、3次元形状データの抽出を行う。この判定処理は、初期の3次元形状データから一部抽出した3次元形状データがすべて基台10の上面を表す3次元形状データであると判定されるまで繰り返し実行される。次に、抽出した平面P’からの距離が所定の範囲内の3次元形状データを前記式2に代入して、前記と同様に最小2乗法を用いて再度平面を計算し、同計算した平面を基準平面Pとする。これにより、前記ステップS102にて計算した3次元形状データの中に基準物体50および基台10以外の物体の形状を表す3次元形状データが含まれている場合であっても精度よく基台10の上面を表す基準平面Pを定義することができる。
次に、3次元画像処理装置42は、ステップS110にて、カメラ座標系C1における座標値をカメラ座標系C2における座標値に座標変換する座標変換関数FC1C2を計算する。ここで、カメラ座標系C2は、カメラ座標系C1と原点が同一であり、X−Y座標平面がアーム座標系A1のX−Y座標平面に平行な座標系である。なお、この定義では、カメラ座標系C2は理論的には無数に存在するため、カメラ座標系C2は、カメラ座標系C1のY軸を回転させてカメラ座標系C1のX軸をアーム座標系A1のX−Y座標平面に平行にするとともに、カメラ座標系C1のX軸を回転させてカメラ座標系C1のY軸をアーム座標系A1のX−Y座標平面に平行、かつZ軸の向きが基準座標系SのZ軸の向きと同じにした座標系として定義する。
このステップS110による座標変換関数F
C1C2の計算処理に先立ち、座標変換について簡単に説明しておく。X,Y,Z座標からなる第1座標系と、同第1座標系をX軸、Y軸およびZ軸回りにそれぞれθx,θy,θzだけ回転させた第2座標系を想定する。第1座標系における1つのベクトルを(αa,βa,γa)とするとともに、第2座標における前記1つのベクトルを(αb,βb,γb)とすると、下記式3が成立する。この場合、ベクトル(αa,βa,γa)とベクトル(αb,βb,γb)は、その大きさが同じとする。
このステップS110の座標変換関数F
C1C2の計算は、前記式3中の行列値g
11,g
12,g
13,g
21,g
22,g
23,g
31,g
32,g
33を計算することを意味する。すなわち、同一方向にない3つのベクトルA,B,Cを想定し、この3つのベクトルのA,B,Cのカメラ座標系C1(前記第1座標系)における各成分A
C1,B
C1,C
C1を(α1,β1,γ1),(α2,β2,γ2),(α3,β3,γ3)とし、この3つのベクトルのA,B,Cのカメラ座標系C2(前記第2座標系)における各成分A
C2,B
C2,C
C2を(α’1,β’1,γ’1),(α’2,β’2,γ’2),(α’3,β’3,γ’3)とすれば、下記式4〜6の関係が成立する。
この前記式4〜6の連立方程式を解くことにより、行列値g
11,g
12,g
13,g
21,g
22,g
23,g
31,g
32,g
33を計算することができる。本実施形態においては、前記基準平面Pの法線ベクトルでその大きさが「1」のベクトルをベクトルAとして想定する。このベクトルAのカメラ座標系C1における各成分は下記式7に示すようになる。そして、基準座標系SのX−Y座標平面に対してアーム座標系A1のX−Y座標平面が平行になるように3次元形状測定装置30を位置決めしているため、前記基準平面Pの法線ベクトルは、アーム座標系A1におけるZ軸と平行になっており、ベクトルAのカメラ座標系C2における各成分は(0,0,1)となる。
また、カメラ座標系C2のX軸方向の単位ベクトル(1,0,0)をベクトルBとして想定する。このベクトルBのカメラ座標系C1における各成分は下記式8に示すようになる。この場合、下記式8中の「e」はカメラ座標系C1におけるベクトル(1,0,e)とベクトル(a,b,c)(基準平面Pの法線ベクトル)とが直交するため、両ベクトルの内積が「0」となることから計算される。
また、ベクトルAとベクトルBとの外積によるベクトルCを想定する。このベクトルCのカメラ座標系C1における各成分CC1は、AC1×BC1により計算される。そして、このベクトルCのカメラ座標系C2における各成分CC2も同様にAC2×BC2により計算される。この場合、AC2,BC2が(0,0,1),(1,0,0)であるため、CC2は(0,1,0)となる。これにより、3つのベクトルA,B,Cのカメラ座標系C1およびカメラ座標系C2における各成分がそれぞれ計算され、前記式4〜6の連立方程式を解くことにより座標変換関数FC1C2が計算される。この座標変換関数FC1C2は、ステップS112にて、3次元画像処理装置42内に記憶される。なお、この座標変換関数FC1C2が、本発明に係る平面共通化座標変換関数に相当する。
次に、3次元画像処理装置42は、ステップS114にて、前記ステップ110にて計算された座標変換関数FC1C2(すなわち、行列値g11,g12,g13,g21,g22,g23,g31,g32,g33)を用いて、前記ステップS106にて計算した定点、すなわちカメラ座標系C1によって表された基準物体50の中心座標(cxC1,cyC1,czC1)をカメラ座標系C2における定点座標値(cxC2,cyC2,czC2)に座標変換する。この場合、前述した式3の演算の実行によって座標変換は行われる。
次に、3次元画像処理装置42は、ステップS116にて、アーム座標系A2における座標値を基準座標系Sにおける座標値に座標変換する座標変換関数FA2Sを計算する。ここで、アーム座標系A2は、アーム座標系A1と原点が同一であり、Z軸の正負の方向(以下、単に「向き」という)のみをカメラ座標系C2のZ軸の向きに一致させた座標系である。この場合、カメラ座標系C2のZ軸の向きは基準座標系SのZ軸の向きと一致しており、同基準座標系SのZ軸の向きはアーム座標系A1のZ軸の向きとは反対である。換言すれば、アーム座標系A2は、アーム座標系A1における3つの座標軸のうちのX軸回りまたはY軸回りに同アーム座標系A1を180°回転させて同アーム座標系A1のZ軸を基準座標系SのZ軸の向きに一致させた座標系である。この座標変換関数FA2Sは、アーム座標系A2における座標値をアーム座標系A1における座標値に座標変換する座標変換関数FA2A1と、アーム座標系A1における座標値を基準座標系Sにおける座標値に座標変換する座標変換関数FA1Sとからなる。
これらのうち、座標変換関数F
A2A1は下記式9によって表される。すなわち、アーム座標系A2は、前記したようにアーム座標系A1を同アーム座標系A1におけるX軸回り(またはY軸回り)に180°回転させた座標系であるため、単位行列におけるX座標成分(またはY座標成分)およびZ座標成分の各符号を反対にした行列が座標変換関数F
A2A1となる。
次に、座標変換関数F
A1Sを計算する。前記第1座標系の原点を座標軸の回転後、更に回転した座標軸のX軸方向、Y軸方向およびZ軸方向にそれぞれa,b,cだけ移動させた第2座標系を想定し、同第1座標系における一点の座標値を(Xa,Ya,Za)とし、第2座標における前記一点の座標値を(Xb,Yb,Zb)とした場合、下記式10が成立する。下記式10中、行列値g
11,g
12,g
13,g
21,g
22,g
23,g
31,g
32,g
33は、下記式11によって表される。
前記式10において、アーム座標系A2によって表された座標値を(Xb,Yb,Zb)とし、基準座標系Sによって表された座標値(Xa,Ya,Za)をとすれば、アーム座標系A1における座標値を基準座標系Sにおける座標値に座標変換する座標変換関数FA1Sは、行列値g11,g12,g13,g21,g22,g23,g31,g32,g33およびベクトル値a,b,cとなる。したがって、3次元画像処理装置42は、アーム支持機構20における各サーボモータ21a,23b,24b,25b,26bおよび27aの各回転角およびコントローラ41に記憶した基本姿勢情報を用いて各座標軸の回転角θx,θy,θzを計算し、行列値g11,g12,g13,g21,g22,g23,g31,g32,g33およびベクトル値a,b,cを特定する。この場合、ベクトル値a,b,cは、アーム座標系A1の原点から基準座標系Sの原点に向かうベクトルのアーム座標系A1の座標軸の向きを基準座標系Sの座標軸の向きにした座標系におけるベクトル成分であり、基準座標系Sにおけるアーム座標系A1の原点の座標値の各符号を逆極性にした座標値に相当する。そして、このように計算された座標変換関数FA2A1と座標変換関数FA1Sを乗算(FA1S・FA2A1)することにより座標変換関数FA2Sが計算される。
次に、3次元画像処理装置42は、ステップS118にて、前記ステップS116にて計算された座標変換関数FA2Sを用いて、前記ステップS114にてカメラ座標系C2における座標値に座標変換された定点座標値(cxC2,cyC2,czC2)を基準座標系Sにおける定点座標値(cxS,cyS,czS)に座標変換する。この座標変換は、前述した式10に座標変換関数FA2Sを適用した演算の実行によって行われる。この場合、定点座標値(cxC2,cyC2,czC2)はカメラ座標系C2における座標値であり、座標変換関数FA2Sはアーム座標系A2における座標値を基準座標系Sにおける座標値に座標変換する座標変換関数である。これらのカメラ座標系C2とアーム座標系A2とは、両座標系における各Z軸の向きが同一、換言すれば両座標系におけるX−Y座標平面が互いに平行な関係にあるが、両座標系の各原点の位置が異なるとともに、X−Y座標平面内においてカメラ座標系C2の座標軸はアーム座標系A2の座標軸に対してZ軸回りに傾いている。
したがって、基準座標系Sに座標変換された定点座標値(cxS,cyS,czS)は、カメラ座標系C2の定点座標値(cxC2,cyC2,czC2)をアーム座標系A2の定点座標値(cxA2,cyA2,czA2)に座標変換した後、座標変換関数FA2Sによって基準座標系Sに座標変換された定点座標値(cxC2,cyC2,czC2)に比べて、カメラ座標系C2とアーム座標系A2との原点位置の差に応じた位置にずれて座標変換される。さらに、これに加えて、定点座標値(cxS,cyS)については、アーム座標系A2に対するカメラ座標系C2の傾き角に応じた角度でずれた位置に座標変換される。このステップS118にて計算された定点座標値(cxS,cyS,czS)は、ステップS120にて3次元画像処理装置42内に記憶される。
次に、3次元画像処理装置42は、ステップS122にて、基準物体50をアーム座標系A1におけるZ軸の軸線回りにおいて互いに異なる2つの位置で測定したか否かを判定する。3次元画像処理装置42は、アーム座標系A1のZ軸回り、換言すれば第4アーム26の軸線回りにおいて2つの異なる位置から基準物体50をそれぞれ測定するまで、このステップS122の判定処理において「No」と判定し続けてステップS124を介してステップS102に戻る。一方、基準物体50を前記2つの異なる位置からそれぞれ測定した場合には、3次元画像処理装置42はステップS122の判定処理において「Yes」と判定してステップS126に進む。
ステップS124において3次元画像処理装置42は、図2(B)に示すように、アーム支持機構20におけるサーボモータ27aの回転駆動を制御して、3次元形状測定装置30を第4アーム26の軸線回りに180°回転させて位置決めする。そして、前記したステップS102以降の各処理によって基準物体50を測定し基準座標系Sにおける定点座標値(cxS,cyS,czS)を記憶する。これにより、アーム支持機構20の先端部の1つの位置に対してアーム座標系A2の座標軸のZ軸回りにおける互いに異なる2つの位置、換言すれば、同Z軸回りの回転中心を中点とする直線上の2点から基準物体50を測定し、各位置ごとに基準座標系Sにおける定点座標値(cxS,cyS,czS)および座標変換関数FC1C2が記憶される。なお、基準物体50を測定するZ軸回りにおける位置の数は、互いに異なる2つ以上の位置であれば限定されない。また、このZ軸回りにおける互いに異なる2つの位置が、本発明に係る第1測定位置に相当する。
次に、3次元画像処理装置42は、ステップS126にて、基準物体50を互いに異なる2つの位置で測定したか否かを判定する。この場合、互いに異なる2つの位置とは、アーム座標系A1のZ軸の向きを維持した状態におけるアーム支持機構20の可動範囲内の互いに異なる任意の位置である。したがって、3次元画像処理装置42は、互いに異なる2つの位置から基準物体50をそれぞれ測定するまで、このステップS126の判定処理において「No」と判定し続けてステップS128を介してステップS102に戻る。一方、互いに異なる2つの位置から基準物体50をそれぞれ測定した場合には、3次元画像処理装置42はステップS126の判定処理において「Yes」と判定してステップS130に進む。
ステップS128において3次元画像処理装置42は、作業者により入力される新たな測定位置にアーム支持機構20の先端部(3次元形状測定装置30)を位置決めさせる。この場合、新たな測定位置は、以下の計算処理を簡単にするため、基準座標系Sにおけるアーム座標系A1の原点のZ座標値を固定したX−Y座標平面内における任意の位置とする。そして、3次元画像処理装置42は、ステップS128にて位置決めされた測定位置にて前記ステップS102以降の各処理によって基準物体50を前記Z軸回りにおける互いに異なる2つの位置で測定し、各位置ごとに基準座標系Sにおける定点座標値(cxS,cyS,czS)および座標変換関数FC1C2をそれぞれ計算し記憶する。これにより、アーム支持機構20の先端部の2つの位置に対してそれぞれアーム座標系A2の座標軸のZ軸回りの2つ位置から基準物体50を測定し、各位置ごとにそれぞれ2つの基準座標系Sにおける定点座標値(cxS,cyS,czS)および座標変換関数FC1C2が記憶される。すなわち、各4つの定点座標値(cxS,cyS,czS)および座標変換関数FC1C2が記憶される。なお、この場合もアーム支持機構20の先端部の2つ以上の異なる位置から基準物体50を測定してもよく、測定する位置の数は限定されない。
次に、3次元画像処理装置42は、ステップS130にて、前記ステップS112にて記憶した4つの座標変換関数FC1C2の平均値を計算して新たな座標変換関数FC1C2として記憶する。次に、3次元画像処理装置42は、ステップS132にて、カメラ座標系C2における座標値をカメラ座標系C3における座標値に座標変換する座標変換関数FC2C3を計算する。ここで、カメラ座標系C3は、カメラ座標系C2のX軸およびY軸の各向きをアーム座標系A2のX軸およびY軸の各向きにそれぞれ一致させるとともに、基準座標系Sにおける同カメラ座標系C2の原点のX座標値およびY座標値をアーム座標系A2の原点のX座標値およびY座標値に一致させた座標系である。すなわち、基準座標系Sを基準とした場合、カメラ座標系C3はアーム座標系A2に対して原点のZ座標値のみが異なる座標系であり、Z座標値を無視すれば両座標系は同一の座標系である。したがって、座標変換関数FC2C3は、カメラ座標系C2における3つの座標値のうち、X座標値およびY座標値をアーム座標系A2における座標値に座標変換する座標変換関数である。この座標変換関数FC2C3は、前記ステップS120にて記憶した4つの定点座標値(cxS,cyS,czS)を用いて計算される。
X―Y座標平面(2次元平面)においてカメラ座標系C2の座標値をアーム座標系A2の座標値に座標変換するためには、図9に示すように、カメラ座標系C2のX,Y座標軸に対するアーム座標系A2のX,Y座標軸の角度θCAと、カメラ座標系C2の原点とアーム座標系A2の原点とのカメラ座標系C2またはアーム座標系A2(本実施形態においてはアーム座標系A2)におけるX座標軸およびY座標軸上の距離が必要である。これらのうち、カメラ座標系C2の原点とアーム座標系A2の原点との各座標軸上の距離は、カメラ座標系C2の原点とアーム座標系A2の原点とを結んだ直線Lのアーム座標系A2の座標軸に対する角度θLAおよび直線Lの長さ(すなわち、カメラ座標系C2の原点とアーム座標系A2の原点との距離r)によって計算することができる。すなわち、座標変換関数FC2C3を計算するには前記角度θCA、直線Lの長さrおよび前記角度θLAを計算すればよい。
まず、角度θ
CAおよび直線Lの長さの計算について説明する。ある座標点のアーム座標系A2におけるX,Y座標値(x
A2,y
A2)と同座標点の基準座標系SにおけるX,Y座標値(x
S,y
S)との間には下記式12に示す関係が成立する。この場合、下記式12におけるθ
SAは、基準座標系Sの座標軸に対するアーム座標系A2の座標軸の角度を表しており、(a,b)は基準座標系Sの原点からアーム座標系A2の原点に向かうベクトルの基準座標系SにおけるX座標成分およびY座標成分である。
また、カメラ座標系C2における前記座標点のX,Y座標値(x
C2,y
C2)とアーム座標系A2おける同座標点のX,Y座標値(x
A2,y
A2)との間には下記式13に示す関係が成立する。
そして、アーム座標系A2のX,Y座標値(x
A2,y
A2)を基準座標系SのX,Y座標値(x
S,y
S)に座標変換するための式は、前記式12を変形すれば下記式14に示すようになる。
前記ステップS118にて、カメラ座標系C2における定点座標値(cx
C2,cy
C2,cz
C2)をアーム座標系A2における座標値に座標変換することなく、基準座標系Sにおける座標値に座標変換した処理は、前記式14中におけるアーム座標系A2のX,Y座標値(x
A2,y
A2)に前記式13の右辺であるカメラ座標系C2のX,Y座標値(x
C2,y
C2)をアーム座標系A2の座標値である(x
A2,y
A2)で表した式を代入することを意味する。この前記式14に前記式13を代入し(x
A2,y
A2)を前記式12を用いて基準座標系Sの座標値である(x
S,y
S)に変換すると下記式15に示すようになる。
前記式15中における角度θ
SAは、前記ステップS124による3次元形状測定装置30の回転変位により変化するため、同式15における第1項は全体として変数である。また、式15における第2項、第3項および第4項はいずれも定数である。したがって、前記式15は、2次元平面における円の一般式を円周上の各座標値で表した(r・COSθ+a,r・COSθ+b)と見做すことができる。すなわち、カメラ座標系C2における座標値をアーム座標系A2の座標値に座標変換することなく、基準座標系Sに座標変換した場合、そのX,Y座標値(x’
s,y’
s)は、下記式16に示すX,Y座標値(cx
S,cy
S)(前記式15における第2項〜第4項)を中心とする円の円周上の一点を表しており、この円の半径は直線Lの長さ(すなわち、カメラ座標系C2の原点とアーム座標系A2の原点との距離r)に等しい。
したがって、円周上の点の座標値を少なくとも2点計算し、計算した円周上の点の座標値から円の半径を計算すれば直線Lの長さを計算することができる。また、前記式16において未知数は、XS、YSおよびθCAであるので、2つの円の円周上の点の座標値をそれぞれ少なくとも2点計算し、計算した円周上の点の座標値から中心座標を2つ計算し、この円の中心座標を前記式16のcXS,cYSに代入すれば未知数が3つで4つの式がある連立方程式が成立するため、この連立方程式を解くことで角度θCAを計算することができる。
前記ステップS122およびステップS124にてアーム支持機構20の先端部の1つの位置でアーム座標系A2の座標軸のZ軸回りに180°の異なる位置で基準物体50を測定して各測定位置ごとに定点座標値(cx1
S,cy1
S,cz1
S),(cx2
S,cy2
S,cz2
S)を計算したのは、円の半径を計算することで直線Lの長さを計算するためである。この場合、180°の異なる位置で円周上の点の座標値を計算しているため、これらの各定点座標値(cx1
S,cy1
S,cz1
S),(cx2
S,cy2
S,cz2
S)を下記式17の右辺に代入すれば、円の半径r(すなわち、直線Lの長さ)を計算することができる。
そして、前記ステップS126およびステップS128にて、アーム支持機構20先端部の2つの位置においてそれぞれ2つの測定位置で基準物体50を測定し、各測定位置ごとに定点座標値(cx1
S,cy1
S,cz1
S),(cx2
S,cy2
S,cz2
S)を計算したのは、円の中心座標値を2つ計算し、前記式16により角度θ
CAを計算するためである。この場合、180°の異なる位置で円周上の点の座標値を計算することによって、円の中心座標(cx
S,cy
S)は、下記式18の右辺に定点座標値(cx1
S,cy1
S,cz1
S),(cx2
S,cy2
S,cz2
S)を代入すれば計算することができる。
そして、前記式18にて計算した円の中心座標(cxS,cyS)2つを前記式16のcxS,cySにそれぞれ代入すれば、未知数がXS,YS,θCAの3つで4つの式からなる連立方程式が成立するため、この連立方程式を解くことで角度θCAを計算することができる。なお、XS,YSは、基準座標系における基準物体50の定点座標(XS,YS)であるが、座標変換の計算には使用しないため計算する必要はない。
次に、角度θ
LAの計算について説明する。前記ステップS124におけるアーム支持機構20の先端部(3次元形状測定装置30)の回転角θ
Aが0°のときの角度θ
SAを角度θ
SA0とすれば、前記式15は下記式19に示すように表される。
前記式19中、未知数はθ
LAおよびθ
SA0であるので、前記ステップS124におけるアーム支持機構20の先端部の回転角θ
Aを前記式19に代入すれば、2つの未知数で2つの式からなる連立方程式が成立するため、この連立方程式を解くことにより同未知数θ
LAおよびθ
SA0を計算することができる。なお、この場合、未知数θ
LAは、基準物体50を測定する位置ごとに計算されるため、計4つの値が計算される。これら4つの値の平均値をθ
LAとする。これらにより、下記式20に示すように、X−Y座標平面においてカメラ座標系C2における座標値をカメラ座標系C3(原点のZ座標値のみが異なるアーム座標系A2)における座標値に座標変換する関係が導かれる。
前記式20中、行列値COSθ
CA,−SINθ
CA,SINθ
CA,COSθ
CAおよびベクトル値r・COSθ
LA,r・SINθ
LAが座標変換関数F
C2C3である。そして、前記式20に示される座標変換関数F
C2C3に座標変換を行わないZ座標値を加味すると下記式21に示すようになる。
次に、3次元画像処理装置42は、ステップS134にて、カメラ座標系C1における座標値をカメラ座標系C3における座標値に座標変換する座標変換関数FC1C3を計算する。具体的には、前記ステップS130にて計算した座標変換関数FC1C2と、前記ステップS132にて計算した座標変換関数FC2C3とを乗算(FC2C3・FC1C2)して座標変換関数FC1C3を計算する。計算した座標変換関数FC1C3は、ステップS136にて、3次元画像処理装置内に記憶される。そして、ステップS138にて、座標変換関数FC1C3計算プログラムの実行を終了する。なお、この座標変換関数FC1C3が、本発明に係る第1の座標変換関数である。
次に、作業者は、図10(A)に示すように、入力装置43を操作して基準物体50の上方にアーム支持機構20の先端部(3次元形状測定装置30)を再度位置決めさせる。この場合、アーム座標系A1のX−Z座標平面が基準座標系SのX−Z座標平面に対して平行となるようにアーム支持機構20の先端部(3次元形状測定装置30)を位置決めする。
次に、作業者は、入力装置43を操作して、図11に示す座標変換関数FC1A1計算プログラムの実行を3次元画像処理装置42に指示する。座標変換関数FC1A1は、カメラ座標系C1によって表された3次元形状データ(座標値)を、アーム座標系A1によって表された3次元形状データ(座標値)に座標変換する座標変換関数である。この指示に応答して3次元画像処理装置42は、座標変換関数FC1A1計算プログラムの実行をステップS300にて開始して、ステップS302にて、3次元形状測定装置30による基準物体50の測定を行う。3次元形状測定装置30は、前記ステップS102と同様に、コントローラ41からの指示に応答して基準物体50の測定を開始し基準物体50の3次元形状を表す情報を3次元画像処理装置42に出力する。3次元画像処理装置42は、3次元形状測定装置30から出力されたX−Y−Z座標に関する情報に基づいて、基準物体50の3次元形状を表す立体形状データ群からなる3次元形状データを計算する。なお、この3次元形状データ中には、基準物体50のほかに同基準物体50の周辺に存在する他の物体(例えば、基台10)の表面形状を表す3次元形状データも含まれている。
次に、3次元画像処理装置42は、ステップS304にて、前記ステップS302にて計算された3次元形状データの中から基準物体50の3次元形状を表す3次元形状データを抽出する。具体的には、前記ステップS104と同様に、図4に示す基準物体抽出サブプログラムを実行することにより行う。次に、3次元画像処理装置42は、ステップS306にて、前記ステップS106と同様にして、前記基準物体抽出サブプログラムの実行により抽出した基準物体データ(基準物体50の3次元形状を表す3次元形状データ)を前記式1に代入して最小2乗法により基準物体50の中心座標(cxC1,cyC1,czC1)を定点座標として計算する。
次に、3次元画像処理装置42は、ステップS308にて、前記座標変換関数FC1C3計算プログラムの実行により計算された座標変換関数FC1C3を用いて、前記ステップS304にて計算された定点座標値(cxC1,cyC1,czC1)をカメラ座標系C3における定点座標値(cxC3,cyC3,czC3)に座標変換する。次に、3次元画像処理装置42は、ステップS310にて、前記ステップS116と同様にして、アーム座標系A2における座標値を基準座標系Sにおける座標値に座標変換する座標変換関数FA2Sを計算する。すなわち、座標変換関数FA2A1および座標変換関数FA1Sにより座標変換関数FA2Sを計算する。
そして、3次元画像処理装置42は、ステップS312にて、前記ステップS118と同様にして、前記ステップS310にて計算された座標変換関数FA2Sを用いて、前記ステップS308にてカメラ座標系C3における座標値に座標変換された定点座標値(cxC3,cyC3,czC3)を基準座標系Sにおける定点座標値(cxS,cyS,czS)に座標変換する。この場合、定点座標値(cxC3,cyC3,czC3)はカメラ座標系C3における座標値であり、座標変換関数FA2Sはアーム座標系A2における座標値を基準座標系Sにおける座標値に座標変換する座標変換関数である。ここで、カメラ座標系C3とアーム座標系A2とは、前記したように、原点のアーム座標系A2におけるZ座標値のみが異なる関係であり、Z座標値を無視すれば両座標系は同一の座標系である。そして、アーム座標系A2のX−Z座標平面と基準座標系SのX−Z座標平面とを平行にしているため、カメラ座標系C3によって表された定点座標値(cxC3,cyC3,czC3)のうちX,Z座標値(cxC3,czC3)のみが、カメラ座標系C3の原点のZ座標値とアーム座標系A2の原点のZ座標値との差に応じた位置にずれて座標変換される。そして、座標変換された定点座標値(cxS,cyS,czS)は、ステップS314にて、3次元画像処理装置42内に記憶される。
次に、3次元画像処理装置42は、ステップS316にて、基準物体50をアーム座標系A1におけるY軸方向の軸線回りにおいて互いに異なる3つの位置で測定したか否かを判定する。3次元画像処理装置42は、アーム座標系A1のY軸方向の軸線回り、具体的には第3アーム25と第4アーム26とを連結する連結部25c,26aの軸線回りにおいて3つの異なる位置から基準物体50をそれぞれ測定するまで、このステップS316の判定処理において「No」と判定し続けてステップS318を介してステップS302に戻る。一方、基準物体50を前記3つの異なる位置からそれぞれ測定した場合には、3次元画像処理装置42はステップS316の判定処理において「Yes」と判定してステップS320に進む。
ステップS318において3次元画像処理装置42は、図10(B)において破線で示すように、アーム支持機構20におけるサーボモータ26bの回転駆動を制御して、3次元形状測定装置30を連結部25c,26aの軸線回りに所定の角度(例えば±10°)ずつ回転させてそれぞれ位置決めする。そして、前記したステップS302以降の各処理を各測定位置ごとに実行して基準座標系Sにおける定点座標値(cxS,cyS,czS)をそれぞれ記憶する。これにより、1つの測定位置に対して前記Y軸回りにおける互いに異なる3つの位置から基準物体50を測定し、各位置ごとに基準座標系Sにおける定点座標値(cxS,cyS,czS)が記憶される。なお、基準物体50をY軸回りに測定する位置の数は、互いに異なる3つ以上の位置であれば限定されない。また、このY軸回りにおける互いに異なる3つの位置が、本発明に係る第2測定位置に相当する。
次に、3次元画像処理装置42は、ステップS320にて、カメラ座標系C3における座標値をアーム座標系A2における座標値に座標変換する座標変換関数FC3A2を計算する。ここで、カメラ座標系C3とアーム座標系A2とは、前記したように原点のアーム座標系A2におけるZ座標値のみが異なる関係であり、座標変換関数FC3A2の計算は原点のアーム座標系A2におけるZ座標値の差を計算するものである。この座標変換関数FC3A2は、前記ステップS314にて記憶された3つの定点座標値(cxS,cyS,czS)を用いて計算される。すなわち、前記ステップS132にて座標変換関数C2C3を計算した場合と同様に、カメラ座標系C3における原点のZ座標値とアーム座標系A2における原点のZ座標値との間にずれがある場合、前記ステップS314にて記憶された3つの定点座標値(cxS,cyS,czS)は、X−Z座標平面において円状に分布する。
具体的に説明すると、カメラ座標系C1とアーム座標系A2との位置関係を維持した状態で、X−Z座標平面に直交する軸線回り(Y軸方向回り)に両座標系を所定の角度ずつ回転させ、基準座標系S内に固定的に設定した定点座標を前記所定の角度ごとにカメラ座標系C1で測定してカメラ座標系C3の座標値に座標変換するとともに、同測定した定点の座標値を座標変換関数F
A2Sを用いて基準座標系Sに座標変換する。この場合、基準座標系Sに座標変換された各座標値(x’
S,Z’
S)は、X−Z座標平面において円状に分布し、下記式22によって表される円の円周上に存在する点となる。下記式22は、導出ステップは省略するが前記式15に対応する円を表す式であり、同式22中θ
Kは、基準座標系SにおけるX−Z座標平面に直交する軸(Y軸方向の軸)の回転角、すなわち、連結部25c,26aの回転角である。
したがって、前記ステップS314にて記憶された3つの定点座標値(cx1
S,cy1
S,cz1
S),(cx2
S,cy2
S,cz3
S),(cx3
S,cy3
S,cz3
S)を下記式23に示す円を表す式にそれぞれ代入して未知数rを計算すれば、同計算した円の半径rが前記両座標系における原点のアーム座標系A2におけるZ座標値の差Δzとして計算することができる。
これにより、下記式24に示すように、カメラ座標系C3における座標値をアーム座標系A2における座標値に座標変換する関係が導かれる。
前記式24中、行列値Δzが座標変換関数FC3A2である。この座標変換関数FC3A2が、本発明に係る第2の座標変換関数である。なお、本実施形態においては、カメラ座標系C1とアーム座標系A2との位置関係を維持した状態で、X−Z座標平面に直交する軸線回り(Y軸方向回り)に両座標系を回転させた場合を想定したが、Y−Z座標平面に直交する軸線回り(X軸方向回り)に両座標系を回転させた場合であっても同様の結果となる。また、本実施形態においては、連結部25c,26aの軸線回りに3次元形状測定装置30を回転するようにしたが、X−Z座標平面に直交する軸線回りであれば、他の軸線回りに回転させるようにしてもよい。
次に、3次元画像処理装置42は、ステップS322にて、カメラ座標系C1における座標値をアーム座標系A1における座標値に座標変換する座標変換関数FC1A1を計算する。具体的には、前記座標変換関数FC1C3プログラムの実行によって計算された座標変換関数FC1C3に、前記ステップS320にて計算された座標変換関数FC3A2を乗算し、前記式9で表される座標変換関数FA2A1を乗算(FA2A1・FC3A2・FC1C3)して計算される。計算された座標変換関数FC1A1は、ステップS324にて、3次元画像処理装置42内に記憶される。そして、ステップS324にて、座標変換関数FC1A1計算プログラムの実行を終了する。
この座標変換関数FC1A1計算プログラムの実行後、作業者は、基台10上から基準物体50を取り除き同基台10上における適当な位置に測定対象物WKを配置する。そして、入力装置43を操作して測定対象物WKの3次元形状の表示を指示する。これに応答して、3次元画像処理装置42は、図12に示す3次元形状表示プログラムの実行をステップS400にて開始して、ステップS402にて測定対象物WKを測定するための3次元形状測定装置30の測定位置を表す位置情報の入力を待つ。この場合、入力される位置情報は、基準座標系Sにおけるアーム座標系A1の原点(X,Y,Z)および基準座標系Sにおけるアーム座標系A1の座標軸の方向である。したがって、作業者は、測定対象物WKを測定するための位置情報を入力装置43を介して3次元画像処理装置42に入力する。この入力に応答して3次元画像処理装置42は、ステップS404にて、前記ステップS402にて入力された測定位置に3次元形状測定装置30を位置決めする。
次に、3次元画像処理装置42は、ステップS406にて、3次元形状測定装置30による測定対象物WKの測定を行う。3次元形状測定装置30は、前記ステップS102およびステップS302と同様にコントローラ41からの指示に応答して測定対象物WKの測定を開始して、同測定対象物WKの3次元形状を表す情報を3次元画像処理装置42に出力する。すなわち、測定対象物WKの表面を微小エリアずつに分割した各分割エリア位置を表すX−Y−Z座標に関する情報(具体的には、傾きθx,θyおよび距離Lz)を3次元画像処理装置42に出力する。そして、3次元画像処理装置42は、同ステップS406にて、3次元形状測定装置30から出力されたX−Y−Z座標に関する情報に基づいて、測定対象物WKの3次元形状を表す立体形状データ群からなる3次元形状データを計算する。この場合、3次元形状データは、3次元形状測定装置30に関する座標系、すなわちカメラ座標系C1による座標値によって表されている。
次に、3次元画像処理装置42は、ステップS408にて、アーム座標系A1によって表された座標値を基準座標系Sによって表された座標値に座標変換する座標変換関数FA1Sを計算する。この座標変換関数FA1Sの計算は、前記ステップS116および前記ステップS310に示した座標変換関数FA2Sの計算処理における座標変換関数FA1Sの計算処理と同様な計算処理にて行われる。次に、3次元画像処理装置42は、ステップS410にて、前記カメラ座標系C1による座標値によって表された3次元形状データを基準座標系Sによる座標値によって表された3次元形状データに座標変換する。具体的には、前記座標変換関数FC1A1計算プログラムの実行によって計算された座標変換関数FC1A1を用いて、カメラ座標系C1による座標値によって表された3次元形状データをアーム座標系A1による座標値によって表された3次元形状データに座標変換した後、同3次元形状データを前記ステップS408にて計算した座標変換関数FA1Sを用いて基準座標系Sによる座標値によって表された3次元形状データに座標変換する。この場合、座標変換された基準座標系Sによる座標値によって表された3次元形状データは3次元画像処理装置42内に記憶される。
次に、3次元画像処理装置42は、ステップS412にて、測定対象物WKに対して互いに異なる3つの測定位置から測定したか否かを判定する。これは、測定対象物WKを任意の方向から見て表示可能な3次元形状データを生成するためには、互いに異なる少なくとも3つの位置から測定対象物WKを測定する必要があるためである。したがって、この判定処理においては、測定対象物WKを互いに異なる3つの測定位置から測定するまで「No」と判定し続けてステップS402に戻り、再び測定対象物WKの測定処理を実行する。一方、同判定処理において、測定対象物WKを互いに異なる3つの測定位置から測定した場合には「Yes」と判定されてステップS414に進む。なお、測定対象物WKの測定は、前記した3つの位置に限られず4つ以上の位置から測定を行うようにしてもよく、これによれば、より高精度の3次元形状の測定を行うことができる。
次に、3次元画像処理装置42は、ステップS414にて、3つの各測定位置ごとの3次元形状データを一組の3次元形状データ群に合成する。この合成においては、すべての測定位置における3次元形状データが同一座標系である基準座標系Sにおける座標値で表されるので、各測定位置によって測定されない測定対象物WKの部分(各測定位置における3次元形状測定装置30に対して裏側に位置する測定対象物WKの外表面)を表す3次元形状データが互いに補われ、一組のデータ群とされる。
次に、3次元画像処理装置42は、ステップS416にて、前記合成された3次元形状データ群を用いて測定対象物WKの3次元形状を表示装置44に表示させる。そして、3次元画像処理装置42は、ステップS418にて、3次元形状表示プログラムの実行を終了する。この測定対象物WKの3次元形状の表示においては、作業者は入力装置43を操作することにより同測定対象物WKの表示方向を指示することができ、コントローラ41および3次元画像処理装置42は表示装置44にて表示される測定対象物WKの表示方向を変更する。これにより、測定対象物WKを任意の方向から見た立体形状を表示させることができる。
また、新たな測定対象物WKを基台10上に置いて、前述のように測定対象物WKの表示を指示すれば、前記3次元形状表示プログラムの実行により、前記と同様にして3次元形状の測定が行われデータ処理が行われて新たな測定対象物WKを任意の方向から見た3次元形状を表示装置44に表示させることができる。したがって、座標変換関数FC1A1を一度計算しておけば、測定対象物WKを次々に換えて表示装置44にて3次元形状を表示させることが可能である。
上記作動説明からも理解できるように、上記実施形態によれば、作業者は、3次元形状測定装置30の測定対象空間内に基準物体50を配置し、アーム座標系A1におけるX−Y座標平面を基準座標系SにおけるX−Y座標平面に平行にした状態で、これらの両X−Y座標平面に直交する2つの軸線回り(各Z軸回り)におけるそれぞれ2つの測定位置から3次元形状測定装置30により基準物体50をそれぞれ測定している。そして、アーム座標系A1におけるX−Z座標平面を基準座標系SにおけるX−Z座標平面に平行にした状態で、同両X−Z座標平面に直交する1つの軸線回り(Y軸と平行な連結部25c,26aの軸線)における3つの測定位置から3次元形状測定装置30により基準物体50をそれぞれ測定している。この場合、3次元画像処理装置42は、X−Y座標平面およびX−Z座標平面においてそれぞれ表された各定点によって定義される各円を用いて座標変換関数FC1A1を計算する。すなわち、作業者は、3次元形状測定装置30のみを用いて基準物体50を測定して座標変換関数FC1A1を取得することができる。したがって、座標変換関数FC1A1を計算するに際して従来例にあるような触針は不要となる。これにより、アーム支持機構20の先端部に触針および3次元形状測定装置30を相互に付け替える作業が不要となるとともに、触針を維持管理する費用および工数も不要となる。この結果、座標変換関数FC1A1を作業性および経済性よく取得することができる。
さらに、本発明の実施にあたっては、上記実施形態に限定されるものではなく、本発明の目的を逸脱しない限りにおいて種々の変更が可能である。
上記実施形態においては、座標変換関数FC1C3計算プログラムにおけるステップS130にて、各測定位置ごとに計算される座標変換関数FC1C2の平均値を座標変換関数FC1C2としたが、各測定位置ごとに計算される座標変換関数FC1C2は略同一の値となるため、同座標変換関数FC1C2の計算を1回だけ行うようにしてもよい。これによっても、上記実施形態と同様の効果が期待できる。
また、上記実施形態においては、座標変換関数F
C1C3計算プログラムにおけるステップS124にて、3次元形状測定装置30を第4アーム26の軸線回りに180°回転させて2つの測定位置により基準物体50を測定するようにしたが、座標変換関数F
C2C3を計算する際、X−Y座標平面において円の半径および中心座標が計算できれば、これに限定されるものではない。すなわち、第4アーム26の軸線回りにおける3つ以上の位置から基準物体50を測定し、円周上の3つ以上の点を前記式23に代入して最小2乗法により円の半径および中心座標を計算してもよい。これによっても、上記実施形態と同様の効果が期待できる。また、2つの測定位置の第4アーム26の軸線回りの回転角度を180°に限定せず、任意の角度で測定してもよい。この場合、回転角度θが既知であれば、2つの測定位置における円周上の座標(X1,Y1),(X2,Y2)から下記式255および下記式26により円の半径rおよび中心座標(cX,cY)を計算することができる。これによっても、上記実施形態と同様の効果が期待できる。
また、上記実施形態においては、座標変換関数FC1C3計算プログラムにおけるステップS110にて座標変換関数FC1C2を計算するようにした。これは、カメラ座標系C1によって表された定点座標値(cxC1,cyC1,czC1)をアーム座標系A1におけるX−Y座標平面と平行な座標平面を有する座標系、すなわちカメラ座標系C2によって表された定点座標値(cxC2,cyC2,czC2)に座標変換するためである。したがって、カメラ座標系C1におけるX−Y座標平面をアーム座標系におけるX−Y座標平面に対して平行になるように3次元形状測定装置30をアーム支持機構20の先端部に固定、または位置決め可能に構成できれば、座標変換関数FC1C2は不要となる。すなわち、座標変換関数FC1C3計算プログラムにおけるステップS110〜ステップS114が不要となり、同座標変換関数FC1C3計算プログラムをより簡単に構成することができる。
また、上記実施形態においては、座標変換関数FC1C3計算プログラムにて座標変換関数FC1C3を計算する際、アーム座標系A1におけるX−Y座標平面を基準座標系SにおけるX−Y座標平面に平行になるように3次元形状測定装置30を位置決めした。すなわち、本発明に係る所定の3次元座標系を基準座標系Sとした。これは、基準座標系Sに対するアーム座標系A1の位置および向きが既知であるとともに、基準座標系Sにおける1つの座標平面(X−Y座標平面)が基台10の上面と平行なため、前記所定の3次元座標系を基準座標系Sとすることにより座標変換関数FC1C2および座標変換関数FA2Sの計算を簡単するためである。したがって、これらの各座標変換関数FC1C2,FA2Sの計算処理の簡潔性を考慮しなければ、基準座標系S以外の座標系を前記所定の3次元座標系としてもよい。これによっても、上記実施形態と同様の効果が期待できる。ただし、この場合、座標系の数が増えるとともに、同座標系に3次元形状データを変換するための座標変換関数を予め定義する必要がある。
また、上記実施形態においては、アーム座標系A1におけるZ軸を他の座標系のZ軸と平行にして座標変換関数FC1C3計算プログラムにて座標変換関数FC1C3を計算したが、アーム座標系A1における3つの座標軸のうちの1つの座標軸を他の座標系の座標軸と平行にできれば、その座標軸はX軸またはY軸であってもよい。この場合、ステップS124にて3次元形状測定装置30をX軸またはY軸回りに回転させる際、3次元形状測定装置30の測定対象空間内に基準物体50が位置するように注意する。また、座標変換関数FC1C3計算プログラムにより座標変換関数C1C3を計算する際には、X軸またはY軸を回転した場合の円周上の定点座標から座標変換関数FC1A1の計算を行うようにする。これによっても、上記実施形態と同様の効果が期待できる。
また、上記実施形態においては、基準物体50として球体を用いたが、3次元形状測定装置30による測定によって生成される3次元形状データにより所定の位置を定点として定義できるものであれば、基準物体50の大きさおよび形状等は特に限定されるものではない。例えば、楕円状の球体、角柱、角錐、円柱、円錐および多面体などの形状により形成された基準物体50、またはこれらの形状を含む形状に形成された基準物体50が考えられる。また、基準物体50の表面に同表面と識別可能なマークを形成し同マークを抽出して定点を計算することもできる。
また、上記実施形態においては、基準物体抽出プログラムにて基準物体50の形状および大きさ(直径)によって同基準物体を表す3次元形状データを抽出するようにした。しかし、これに代えて、基準物体50の表面の反射率を他の物体(例えば、基台10)の表面の反射率と異ならせてもよい。すなわち、各物体からの反射光の光量の違いを利用して基準物体を表す3次元形状データを抽出することもできる。これによっても、上記実施形態と同様の効果が期待できる。
WK…測定対象物、10…基台、20…アーム支持機構、21…固定ベース、22…回転ベース、23…第1アーム、24…第2アーム、25…第3アーム、26…第4アーム、30…3次元形状測定装置、41…コントローラ、42…3次元画像処理装置、43…入力装置、44…表示装置、50…基準物体