(第1実施形態)
以下、本発明の第1実施形態について図面を用いて説明する。図1は、本発明の位置決め誤差補正装置を備えた多関節ロボットの基本構成を示す概略図である。
この多関節ロボットは、基台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アームの軸線方向の回転角を、前記基本姿勢情報を用いてそれぞれ計算して、これらの回転角に対応する各サーボモータ21a,23b,24b,25b,26b,27aを制御するための制御値を計算する。また、コントローラ41は、入力装置43からアーム支持機構20の先端部の位置決め位置(先端部の向きも含む)を表すアーム先端位置情報が入力された場合には、同アーム先端位置情報を3次元画像処理測定装置42に供給する。なお、アーム先端位置情報が表す第4アーム26の先端の位置および同先端部の向きは、固定ベース21の基台10への固定部における予め定められた点を原点とする3次元座標系である基準座標系によって表されている。
3次元画像処理装置42は、コンピュータ装置によって構成されて図7,8,9,11,17,20に示す各プログラムを実行することにより、コントローラ41から供給されるアーム先端位置情報および3次元形状測定装置30からの3次元形状を表す情報、具体的には、X軸方向への傾きθx、Y軸方向への傾きθy、物体表面までの距離Lzを入力して、第4アーム26の先端部の位置決め誤差を計算し、さらに、同位置決め誤差を補正するとともに、測定対象空間内に位置する物体の立体形状を任意の方向から見て表示可能な3次元画像データを生成する。この3次元画像処理装置42には、表示装置44が接続されている。表示装置44は、液晶ディスプレイ、プラズマディスプレイまたはCRTディスプレイなどからなり、3次元画像処理装置42によって実行される各プログラムの実行過程および同各プログラムの実行より生成される3次元画像データに基づいて測定対象空間内に位置する物体の立体形状を表示する。
次に、このように構成した多関節ロボットの作動について説明する。作業者は、コントローラ41によって指示される第4アーム26の先端位置と、実際の第4アーム26の先端位置との差を検出するための位置決め誤差補正用の校正治具50を用意する。校正治具50は、図2(A)に示すように、校正用物体としての複数の球体51が校正用物体支持ベース52に支持されて構成されている。各球体51は樹脂や発泡スチロールなど比較的質量の小さい材料により構成されており、3つの球体51で1つの球体セット53を構成する。この球体セット53は全部で16セットあり、校正用物体支持ベース52内に均等に配置されて支持されている。なお、球体51の各直径は、所定の直径(本実施形態においては25mm)を目安に成形されているが、その寸法公差の範囲は広く各球体51ごとに異なる直径に形成されている。
校正用物体支持ベース52は、正方形状に形成された枠体52aの内側を十字状に形成された支持桟52bによって正方形状の4つの領域に分割されて形成されている。4つに分割された各領域内には、枠体52aの各縦横方向にそれぞれ2本ずつのワイヤー52c,52dが張られており、これらのワイヤー52cとワイヤー52dとの各交点付近に前記3つの球体51によって構成される球体セット53がそれぞれ配置されている。具体的には、ワイヤー52cとワイヤー52dとの交点の両側にワイヤー52dをそれぞれ貫通させた2つの球体51を配置するとともに、同交点の図示上側でワイヤー52cを貫通させた1つの球体51を配置させて枠体52a内に支持されている。
なお、各球体セット53における3つの球体51は、それぞれ略等間隔で配置されている。なお、この校正用物体支持ベース52内における球体セット53の配置される範囲は、アーム支持機構20の可動範囲内であって、3次元形状測定装置30によって測定される測定対象であるワークWKの大きさに応じて設定される。すなわち、ワークWKを測定するために3次元形状測定装置30を可動させる必要のある範囲内をカバーするように球体セット53が配置される。したがって、校正用物体支持ベース52の大きさも球体セット53が配置される範囲で設定される。この場合、校正用物体支持ベース52の大きさを3次元形状測定装置30の可動範囲に対応した大きさに形成してもよいし、同校正用物体支持ベース52の大きさを同可動範囲より小さく形成し、校正用治具50を同可動範囲内で移動させて同範囲をカバーするようにしてもよい。
校正用物体支持ベース52は、支柱54を介して底板55に固定されている。支柱54は、図2(B)に示すように、互いに異なる4つの外径で形成された円筒体54a,54b,54c,54dを同軸上に配置して一体的に構成され、外径の小さい円筒体がより外径の大きい円筒体内に収納可能な状態で組み付けられている。すなわち支柱54は、軸線方向に伸縮自在に形成されている。この支柱54の上面、具体的には、円筒体54aの上面が校正用物体支持ベース52の支持桟52bにおけるクロス部分の下面に角度変更が可能な連結部を介して固着されるとともに、支柱54の下面、具体的には、円筒体54dの下面が底板55の上面中央部に固着され、支柱54は校正用物体支持ベース52を支柱54の軸線方向に変位可能に支持する。すなわち、校正用物体支持ベース52を上下方向に変位させるとともに、校正用物体支持ベース52を適切な傾き角度に設定することができ、球体セット53が配置される範囲を上下方向に移動するとともに、球体セット53が配置される平面の角度を変更することができる。
なお、校正用物体支持ベース52の上下方向の位置は、支柱54に取り付けられたセンサまたはスケールにより検出可能になっている。底板55は、正方形状の板材により構成され、上面中央部に固着される支柱54を支持する。この底板55の下面における4つの隅部には、キャスター56がそれぞれ設けられており、校正治具50を任意の位置に移動させることができる。なお、図2(A)は、支柱54を縮めた状態での校正治具50を示しており、図2(B)は、支柱54を伸ばした状態での校正治具50を示している。
作業者は、上記のように構成された校正治具50における校正用物体情報を取得する作業を行う。校正用物体情報は、各球体セット53ごとの各球体51の球体中心(中心座標)、球半径、各球体51の中心間距離および3つの球体51の中心点である定点で構成されている。具体的には、作業者は、図3に示す3次元測定機60を用いて各球体51を測定する。3次元測定機60は、測定対象空間内に位置する物体の座標位置や物体の大きさなどを3次元的に計測することができる測定機であり、測定部61、コントローラ62、座標計算処理装置63、入力装置64および表示装置65から構成されている。測定部61は、ベース66上に載置された被測定対象物の表面に、アーム67およびコラム68により図示X軸方向、Y軸方向およびZ軸方向の各3軸方向に摺動可能に支持されているプローブ69を接触させて、その接触点における各座標値を表す測定座標情報を座標計算処理装置63に出力する。
この測定部61には、コントローラ62および座標計算処理装置63が接続されている。コントローラ62は、キーボードからなる入力装置64からの指示に従って、測定部61の作動を制御する。また、コントローラ62は、入力装置64からの指示に従って座標計算処理装置63の作動を制御するとともに、同入力装置64にて入力されたデータを座標計算処理装置63に供給する。座標計算処理装置63は、コンピュータ装置によって構成され、所定のプログラムを実行することにより前記測定部61から出力された測定座標情報と前記コントローラ62から供給されるデータとを用いて各種の計測値の計算を行い、その結果を表示装置65に出力する。表示装置65は、液晶ディスプレイなどから構成されており、前記座標計算処理装置63による計算処理過程および計算結果をそれぞれ表示する。
このように構成された3次元測定機60のベース66上の測定対象空間内に、作業者は校正治具50を図3に示すように支柱54を縮めた状態にしてセットした後、入力装置64を操作して校正用物体情報の取得を指示する。この校正用物体情報の取得の指示は、コントローラ62を介して座標計算処理装置63に伝達され、座標計算処理装置63は図4に示す校正用物体情報取得プログラムの実行をステップS100にて開始して、ステップS102にて作業者による測定対象の特徴の入力を待つ。作業者が入力装置64を操作して測定対象である球体51の特徴を入力すると、同入力情報はコントローラ62を介して座標計算処理装置63に供給される。ここで測定対象の特徴とは、本実施例においては、測定対象である各球体51が球体であることを表すデータである。なお、以前に入力された測定対象の特徴が変更されない場合には、このステップS102の処理をスキップさせてもよい。このステップS102の処理後、座標計算処理装置63は、ステップS104にて測定部61による各球体セット53ごとの測定座標情報の入力を待つ。
一方、作業者は、測定部61のプローブ69を操作して測定対象となるいずれか一つの球体セット53における各球体51の表面をそれぞれ4箇所接触させる。この場合、作業者は、各球体セット53ごとに各球体セット53を区別するための番号(1〜N)を入力して各球体セット53の測定を行う。これにより、測定部61は各球体51ごとに4箇所の接触点に対応する4組の測定座標情報(各点は、座標値x,y,zで表される)を座標計算処理装置63に出力する。なお、この測定座標情報は、それぞれ3次元測定機60に関する座標系である測定機座標系であって、本実施形態においては、ベース66上に予め決められる点を原点とするX,Y,Z座標の3次元座標における座標値である。座標計算処理装置63は、ステップS106にて、各球体51ごとの4組の測定座標情報を用いて、測定対象となっている各球体51の球体中心座標CmA,CmB,CmCおよび球半径RmA,RmB,RmCを計算する(「m」は測定機座標系を表す)。具体的には、球体の表面は下記数1によって表されることから、前記4組の測定座標情報をそれぞれ下記数1のX,Y,Zにそれぞれ代入して連立方程式を解くことにより計算する。なお、下記数1において、a,b,cは球体の中心座標を表す未知数であり、dは球体の半径を表す未知数である。
すなわち、このステップS106の処理においては、1つの球体51に対して測定された4組の測定座標情報を各測定座標情報ごとに前記数1の左辺に代入して、4つの連立方程式を作成し、この連立方程式を解くことでa,b,c,dを計算する。これにより、球体51の中心位置を表す座標値(X,Y,Z)がa,b,cとして計算されるとともに球体51の半径がdとして計算される。これら球体51の球体中心座標Cmおよび球半径Rmを計算する処理を3つの球体51に対して実行した後、ステップS108に進む。なお、本実施形態においては、一つの球体51に対してプローブ69を4箇所接触させて測定座標情報を取得するようにしたが、同プローブ69を5箇所以上接触させて補正を含む高精度の球体中心座標Cmおよび球半径Rmの計算を行うようにしてもよい。また、一つの球体51に対して複数回、測定座標情報の取得を行うとともに球体中心座標Cmおよび球半径Rmの計算を行い、各回ごとに計算された球体中心座標Cmおよび球半径Rmをそれぞれ平均した値を球体中心座標Cmおよび球半径Rmとしてもよい。これにより、さらに高精度な球体51の球体中心座標Cmおよび球半径Rmを計算することができる。
次に、座標計算処理装置63は、ステップS108にて、各球体51間の距離LmAB,LmBC,LmCAを計算する。この各球体51間の距離LmAB,LmBC,LmCAは、前記ステップS106にて計算した各球体51の互いの球体中心座標CmA,CmB,CmCの間の直線距離である。次に、座標計算処理装置63は、ステップS110にて、定点座標Tmを計算する。定点座標Tmは、球体セット53における3つの球体51が配置された中心位置を表す座標値である。この定点座標Tmは、下記数2のXA,XB,XC,YA,YB,YC,ZA,ZB,ZCに各球体51の各球体中心座標CmA,CmB,CmCの各座標値(CXmA,CYmA,CZmA)(CXmB,CYmB,CZmB)(CXmC,CYmC,CZmC)をそれぞれ代入して計算する。
次に、座標計算処理装置63は、ステップS112にて、すべての球体セット53について測定を行ったか否かを判定する。この判定において、すべての球体セット53について測定を行っていない場合には「No」と判定されてステップS104に戻り、未だ測定を行っていない球体セット53について測定処理を続行する。一方、すべての球体セット53について測定を行った場合には「Yes」と判定されてステップS114に進む。ステップS114において座標計算処理装置63は、作業者に対して球体セット53の高さ方向の位置を変更して再度各球体セット53の測定処理を行うか否かを問い合わせる。これは、基台10上に配置されるワークWKを測定するためにアーム支持機構20を可動させる高さ方向の範囲に対応する高さ方向の範囲内で略均等に球体セット53の校正用物体情報を取得するためである。したがって、作業者は、異なる高さ方向の位置で再度球体53の測定処理が必要な場合には、入力装置64を操作して測定処理を続行する旨の情報を座標計算処理装置63に入力する。この指示に応答して、座標計算処理装置63は、同ステップS114にて「Yes」と判定して、ステップS104に戻り球体セット53を測定する各処理を再度実行する。この場合、作業者は、校正治具50の支柱54を伸縮させて校正用物体支持ベース52の高さを必要な高さに変更する。
一方、アーム支持機構20を可動させる高さ方向の範囲に対応する高さ方向の範囲内で略均等に球体セット53の校正用物体情報が取得された場合には、作業者は、入力装置64を操作して測定処理を終了する旨の情報を座標計算処理装置63に入力する。この指示に応答して、座標計算処理装置63は、同ステップS114にて「No」と判定して、ステップS116に進み、同ステップS116にて、この校正用物体情報取得プログラムの実行を終了する。これにより、座標計算処理装置63には、図5に示すように、球体セット53(1〜N)ごとに各球体51の球体中心座標Cmおよび球半径Rm、各球体51の中心間距離Lmおよび球体セット53の定点座標Tmがそれぞれ記憶される。なお、これらの校正用物体情報のうち、球体中心座標Cmが本発明に係る直線定義パラメータであり、球半径Rmおよび各球体51間の距離Lmが本発明に係る識別パラメータであり、球体セット53の定点座標Tmが本発明に係る定点である。そして、作業者は、3次元測定機60のベース66上から校正治具50を取り除いて校正用物体情報の取得作業を終了する。なお、校正用物体情報が既知であれば、この校正用物体情報取得プログラムの実行による校正用物体情報の取得処理は不要である。
次に、作業者は、前記校正用物体情報取得プログラムの実行により計算された校正用物体情報を多関節ロボットにおける3次元画像処理装置42に入力する。具体的には、3次元測定機60の座標計算処理装置63と3次元画像処理装置42とを信号ケーブルなどで接続し、座標計算処理装置63から3次元画像処理装置42に校正用物体情報を入力する。なお、校正用物体情報を3次元画像処理装置42に入力する方法としては、前記信号ケーブルを用いるほかに、入力装置43を介して作業者による入力作業により入力する方法や、座標計算処理装置63に記憶されている校正用物体情報を他の記録媒体(例えば、FD、携帯性フラッシュメモリ装置など)を介して3次元画像処理装置42に入力する方法がある。
次に、作業者は、3次元形状測定装置30に関する座標系であるカメラ座標系によって表された3次元画像データを、アーム支持機構20に関する座標系であるアーム座標系によって表された3次元画像データに変換するための座標変換関数CAを計算する。ここで、カメラ座標系は、3次元形状測定装置30に関する座標系であり、互いに直交する3つの座標軸(X軸,Y軸,Z軸)からなり3次元形状測定装置30の特定点を原点とする3次元座標系である。また、アーム座標系は、3次元形状測定装置30の取り付け部に関する座標系であり、カメラ座標系に対応する3つの座標軸(X軸,Y軸,Z軸)からなり、3次元形状測定装置30をアーム支持機構20に取り付けるための取り付け部である第4アーム26の先端部の予め決められた位置を原点とする3次元座標系である。この第4アーム26の先端部の予め決められた位置とは、詳しくは第4アーム26の軸線上にある第4アーム26の先端の点である。
まず、作業者は、図6に示すように、第4アーム26の先端部に、3次元形状測定装置30に代えて、プローブ70の基部71を取り付ける。プローブ70は、針状に形成された触針72の一端が連結部73を介して基部71に取り付けられて構成されている。連結部73は、触針72の先端部を基部71に対して直交する2軸回りに変位自在(図示矢印方向)に支持する。このプローブ70は、3次元画像処理装置42と電気的に接続されており、触針72の先端部が何らかの物体に接触した場合には、同接触を表す信号と連結部73の2軸方向の各回転角を表す信号を3次元画像処理装置42に出力する。このプローブ70においては、基部71の所定位置に対する連結部73の回転中心位置および同連結部73の回転中心位置に対する触針72の先端部の位置は作業者により認識されており、3次元画像処理装置42のメモリ装置に予め記憶されている。
次に、作業者は、基台10上における予め設定された位置に座標変換関数取得用の基準球80を配置する。基準球80は真球体に形成され、測定対象空間内の定点を定めるための基準物体として機能する。この基準球80は、台形状に形成された台部81上に円柱状の支持部82を介して固定され、基台10の上面から適当な高さに配置される。なお、本実施形態においては、基準球80を台部81および支持部82を介して基台10上に配置したが、基準球80を直接基台10上に配置するようにしてもよい。
次に、作業者は、入力装置43を操作して、図7に示す基準球測定プログラムの実行を3次元画像処理装置42に指示する。この指示に応答して3次元画像処理装置42は、基準球測定プログラムの実行をステップS200にて開始して、ステップS202にて、プローブ70による基準球80の測定を行う。基準球80の測定は、プローブ70の触針72の先端部を基準球80に接触させることにより行うが、3次元画像処理装置42は、まず、触針72の先端部を基準球80に接触させるためにアーム支持機構20の先端部が取るべき位置の範囲を表示装置44に表示させる。このアーム支持機構20の先端部が取るべき位置の範囲は3次元画像処理装置42のメモリ装置に予め記憶されている。作業者は、表示装置44に表示されるアーム支持機構20の先端部が取るべき位置の範囲を確認しながら入力装置43を操作して、同範囲内にアーム支持機構20の先端部を移動させる。この場合、作業者は、アーム支持機構20の先端部の移動によってプローブ70の触針72の先端部が基準球80に接触しないように、同触針72の先端部の向きを基準球80とは反対方向に向けた後、入力装置43を操作してアーム先端位置情報をコントローラ41に入力する。
次に、作業者は、触針72を手で操作して基準球80の表面に同触針72の先端部を接触させる。この場合、プローブ70から3次元画像処理装置42に対して、触針72の先端部の接触を表す信号および連結部73の2軸方向の回転角を表す信号が出力される。3次元画像処理装置42は、触針72の先端部の接触を表す信号に応答して、入力した連結部73の2軸方向の各回転角、前記入力したアーム先端位置情報、基部71の所定位置に対する連結部73の回転中心までの長さおよび同連結部73の回転中心位置に対する触針72の先端部までの長さを用いて、触針72の先端部の基準球80の接触点を表す座標であって基台10に関する座標系である基準座標系の座標値を計算する。基準座標系は、前記したようにカメラ座標系に対応する3つの座標軸(X軸,Y軸,Z軸)からなり、固定ベース21の基台10への固定部における予め定められた点を原点とする3次元座標系である。作業者は、アーム支持機構20の先端部の位置を4回変更して、各位置ごとにプローブ70の触針72を基準球80に接触させて、各接触点の座標の基準座標系における座標値の計算を各接触点ごとに行って、4つの接触点にそれぞれ対応した4組の座標データを3次元画像処理装置42に記憶させる。
3次元画像処理装置42は、ステップS204の処理後、ステップS206にて、基準球80の中心位置を表す座標であって基準座標系の座標(以下、中心座標(x”,y”,z”)という)を、前記計算した4組の座標データを用いて計算する。この計算においては、球体の表面を表す上記数1の方程式のX,Y,Zに、前記4組の座標データを代入し、a,b,cの各値を計算することにより、基準球80の中心座標(x”,y”,z”)を計算する。次に、3次元画像処理装置42は、ステップS208にて、前記計算した中心座標(x”,y”,z”)を基準球80の定点を表す座標として記憶した後、ステップS210にて、この基準球測定プログラムの実行を終了する。なお、本実施形態では、基準球80に対してプローブ70を4箇所接触させるようにしたが、5箇所以上の接触を行って、補正を含む高精度の中心座標の計算を行うようにしてもよい。また、基準球80の半径dが既知である場合には、接触点を3点にしても、基準球80の中心座標を求めることができる。
次に、作業者は、図1に示すように、第4アーム26の先端部からプローブ70を取り外すとともに、同先端部に3次元形状測定装置30を第4アーム26の軸線回りに回転可能に組み付ける。そして、入力装置43を操作して、図8に示す座標変換関数計算プログラムの実行を3次元画像処理装置42に指示する。この指示に応答して3次元画像処理装置42は、座標変換関数計算プログラムの実行をステップS300にて開始して、ステップ302にて、3次元形状測定装置30による基準球80の測定を行う。具体的には、作業者は入力装置43を操作して3次元形状測定装置30を基準球80を測定できる位置に移動させて基準球80の測定を行う。この基準球80の測定は、それぞれ異なる3つの測定位置からそれぞれ行われ、各測定位置ごとにアーム先端位置情報および基準球80の3次元形状を表す情報が3次元画像処理装置42にそれぞれ記憶される。
この場合、アーム先端位置情報は、前記したように、作業者によって入力装置43を介して3次元画像処理装置42に入力された情報であり、基準座標系によるアーム座標系の原点を表す座標(xd1,yd1,zd1),(xd2,yd2,zd2),(xd3,yd3,zd3)と、基準座標系の座標軸の方向をアーム座標系の座標軸の方向にする際の基準座標系のX軸、Y軸およびZ軸回りの回転角(α1,β1,γ1),(α2,β2,γ2),(α3,β3,γ3)である。また、基準球80の3次元形状を表す情報とは、基準球80の表面を微小エリアずつに分割した各分割エリア位置を表すX−Y−Z座標に関する情報(具体的には、傾きθx,θyおよび距離Lz)である。そして、3次元画像処理装置42は、同ステップS302にて、前記記憶した基準球80の3次元形状を表す情報に基づいて、各測定位置ごとにおける基準球80の3次元形状を表す立体形状データ群からなる3次元画像データをそれぞれ計算する。この場合、3次元画像データは、3次元形状測定装置30に関する座標系、すなわちカメラ座標系によって表されている。なお、前記3次元画像データ中に基準球80以外の物体(例えば、基台10など)に関する不要な3次元画像データが含まれている場合には、3次元画像処理装置42は、3次元形状測定装置30からX−Y−Z座標に関する情報とともに、ラインセンサの受光光量のデータまたは同受光光量の出射光量に対する比のデータを入力し、同ステップS302にて、この受光光量または受光光量の出射光量に対する比のデータにより同不要な3次元画像データを除去する処理を併せて実行する。
次に、3次元画像処理装置42は、ステップS304にて、前記計算した各測定位置ごとの3次元画像データを、上記数1の方程式のX,Y,Zに代入して、最小2乗法によりa,b,cを計算することにより基準球80の各測定位置ごとの中心座標(x1,y1,z1),(x2,y2,z2),(x3,y3,z3)を求める。なお、各測定位置ごとの基準球80の3次元画像データの区別は、入力装置43から入力された前記アーム先端位置情報を用いる。
次に、3次元画像処理装置42は、ステップS306にて、アーム座標系における基準球80の中心座標を計算する。具体的には、3次元画像処理装置42は、前記図7に示す基準球測定プログラムの実行によってメモリ装置に記憶した基準球80の基準座標系における中心座標(x”,y”,z”)と、前記ステップS302にて入力されたアーム先端位置情報、具体的には、基準座標系によるアーム座標系の原点を表す座標(xd1,yd1,zd1),(xd2,yd2,zd2),(xd3,yd3,zd3)および基準座標系の座標軸の方向をアーム座標系の座標軸の方向にする際の基準座標系のX軸、Y軸およびZ軸回りの回転角(α1,β1,γ1),(α2,β2,γ2),(α3,β3,γ3)を下記数3及び数4にそれぞれ代入して、基準球80の中心座標であってアーム座標系での中心座標(x’1,y’1,z’1),(x’2,y’2,z’2),(x’3,y’3,z’3)を計算する。
上記数3および数4は、X−Y−Z座標からなる第1座標系における一点の座標(x,y,z)を、同第1座標系の原点をX軸方向、Y軸方向およびZ軸方向にそれぞれa,b,cだけ移動させるとともに、同第1座標系をX軸、Y軸およびZ軸回りにそれぞれxθ,yθ,zθだけ回転させた第2座標系における同一点の座標(x’,y’,z’)との関係を示している。そして、このステップS306の計算においては、上記数3中の座標値x,y,zが、基準球80の中心座標であって基準座標系による中心座標(x”,y”,z”)の各X,Y,Z座標値にそれぞれ対応する。また、上記数3中の座標値x’,y’,z’が、基準球80の中心座標であってアーム座標系による中心座標(x’,y’,z’)の各X,Y,Z座標値に対応する。なお、上記数3中の値a,b,cは、前記ステップS302において作業者が、入力装置43から入力した情報である基準座標系によるアーム座標系の原点座標(xd1,yd1,zd1),(xd2,yd2,zd2),(xd3,yd3,zd3)に相当し、かつ上記数4中のα,β,γは同ステップS302において作業者が入力装置43から入力した情報である基準座標系の座標軸の方向をアーム座標系の座標軸の方向にする際の基準座標系のX軸、Y軸およびZ軸回りの回転角(α1,β1,γ1),(α2,β2,γ2),(α3,β3,γ3)に相当する。
次に、3次元画像処理装置42は、ステップS308にて、ステップS304の処理によって計算したカメラ座標系の基準球80の各測定位置ごとの中心座標(x1,y1,z1),(x2,y2,z2),(x3,y3,z3)と、ステップS308の処理によって計算したアーム座標系の基準球80の中心座標(x’1,y’1,z’1),(x’2,y’2,z’2),(x’3,y’3,z’3)とを用いて、カメラ座標系からアーム座標系への座標変換関数CAを計算する。
この座標変換関数CAの計算の前に、この種の座標変換について簡単に説明しておく。まず、X−Y−Z座標からなる第1座標系と、同第1座標系をX軸、Y軸およびZ軸回りにそれぞれxθ,yθ,zθだけ回転させるとともに、同第1座標系の原点をX軸方向、Y軸方向およびZ軸方向にそれぞれa,b,cだけ移動させた第2座標系を想定する。この場合も、第1座標系における一点の座標を(x,y,z)とし、第2座標系における同一点の座標を(x’,y’,z’)すると、下記数5が成立するとともに、同数5中の行列Mは下記数6によって表される。
このステップS308の座標変換関数CAの計算は、上記数5および数6中の行列値g11,g12,g13,g21,g22,g23,g31,g32,g33および行列値a,b,cを計算することを意味する。この場合、本実施形態のカメラ座標系が第1座標系に対応するとともに、アーム座標系が第2座標系に対応する。したがって、各測定位置ごとのカメラ座標系の基準球80の各中心座標(x1,y1,z1),(x2,y2,z2),(x3,y3,z3)と、アーム座標系の基準球80の中心座標(x’1,y’1,z’1),(x’2,y’2,z’2),(x’3,y’3,z’3)とを上記数5に適用すると、下記数7〜9の関係が成立する。
上記数7を変形すると、下記数10の連立方程式が成立する。
ここで、定点座標(x1,y1,z1),(x2,y2,z2),(x3,y3,z3)を含む平面の法線ベクトルを(α,β,γ)とし、定点座標(x’1,y’1,z’1),(x’2,y’2,z’2),(x’3,y’3,z’3)を含む平面の法線ベクトルを(α’,β’,γ’)とすると、2つの法線ベクトルの大きさと向きが同じであれば下記数11が成立する。同数11中の行列Mは、上記数6によって表される。
定点座標(x1,y1,z1),(x2,y2,z2),(x3,y3,z3)を含む平面の法線ベクトルを(x2,y2,z2)から(x1,y1,z1)に向かうベクトルと、(x3,y3,z3)から(x2,y2,z2)に向かうベクトルの外積により成立するベクトルとすると、前記法線ベクトル(α,β,γ)は下記数12によって表される。
同様に、前記ベクトル(α’,β’,γ’)は下記数13によって表される。
上記数12および上記数13を上記数11に代入すると、下記数14が成立する。
上記数14の1番目の式を上記数10に加えれば、下記数15の連立方程式となる。
この上記数15の連立方程式を解くことにより、行列値g11,g12,g13を計算することができる。また、上記数8および数9に関しても、上記数10の連立方程式のように変形し、上記数14の2番目の式および3番目の式をそれぞれ加えた連立方程式を解くことにより行列値g21,g22,g23および行列値g31,g32,g33を計算できる。そして、これらの計算した行列値を上記数7〜9に代入すれば、行列値a,b,cを計算できる。これにより、カメラ座標系における座標値(x,y,z)を、アーム座標系における座標値(x’,y’,z’)に変換するための座標変換関数CAが計算される。
次に、ステップS310にて、前記計算した座標変換関数CAの行列値g11,g12,g13,g21,g22,g23,g31,g32,g33,a,b,cを3次元画像処理装置42のメモリ装置内に記憶した後、ステップS312にて、この座標変換関数計算プログラムの実行を終了する。そして、作業者は、基台10上から基準球80を取り除いて座標変換関数CAの取得作業を終了する。
次に、作業者は、コントローラ41によって指示される第4アーム26の先端位置と、実際の第4アーム26の先端位置との差を補正するための補正データ群を取得する作業を行う。具体的には、作業者は、基台10上の適当な位置に校正治具50を載置するとともに支柱54を上下方向に伸縮させて、校正用物体支持ベース52の高さを前記校正用物体情報取得プログラムのS104で設定した高さのいずれかの高さに設定する。そして、作業者は、入力装置43を操作して、図9に示す補正データ群取得プログラムの実行を3次元画像処理装置42に指示する。この指示に応答して、3次元画像処理装置42は、補正データ群取得プログラムの実行をステップS400にて開始して、ステップS402にて、基準位置の設定を行う。
この基準位置の設定において作業者は、図10に示すように、校正治具50におけるN組の球体セット53のうち任意の球体セット53を基準球体セットとして選択し、入力装置43を操作して同基準球体セットに対向する位置に3次元形状測定装置30を位置決めさせるとともに、同位置を基準位置として設定する。これにより、3次元画像処理装置42は、第4アーム26の先端部の予め決められた位置を表す座標、すなわちアーム座標系の原点を基準座標系によって表した座標を基準位置として記憶するとともに、同アーム座標系の各座標軸の基準座標系の座標軸に対する向きを表す回転角を基準回転角として記憶する。また、作業者は、入力装置43を操作して、3次元画像処理装置42に記憶した各球体セット53ごとの校正用物体情報のうち、基準球体セットとして選択した球体セットに関する校正用物体情報の番号(1〜N)を基準球体セット情報として指定する。
次に、3次元画像処理装置42は、ステップS404にて、基準球体セットを3次元測定する。3次元画像処理装置42は、作業者による測定開始の指示に応答して3次元形状測定装置30の作動を制御して、同3次元形状測定装置30に対向する基準球体セットの測定を開始する。3次元形状測定装置30は、測定対象空間内に位置する基準球体セットの3次元形状を表す情報を3次元画像処理装置42に出力する。すなわち、基準球体セットの表面を微小エリアずつに分割した各分割エリア位置を表すX−Y−Z座標に関する情報(具体的には、傾きθx,θyおよび距離Lz)を3次元画像処理装置42に出力する。そして、3次元画像処理装置42は、同ステップS404にて、前記ステップS302と同様にして、3次元形状測定装置30から出力されたX−Y−Z座標に関する情報に基づいて、基準球体セットの3次元形状を表す立体形状データ群からなる3次元画像データを計算する。この場合、3次元画像データは、3次元形状測定装置30に関する座標系、すなわちカメラ座標系によって表されている。なお、この3次元画像データには、基準球体セットのほかにワイヤー53c,53dや他の球体セット53など、基準球体セットの周辺に存在する他の物体の表面形状を表す3次元画像データも含まれている。
次に、3次元画像処理装置42は、ステップS406にて、前記ステップS404にて計算された3次元画像データの中から校正用物体、すなわち球体51の3次元形状を表す3次元画像データを抽出する。具体的には、図11に示す校正用物体抽出サブプログラムの実行をステップS500にて開始して、ステップS502にて、校正用物体の特徴の入力を待つ。作業者が入力装置43を介して校正用物体の特徴を入力すると、同入力情報は3次元画像処理装置42に供給される。この場合、校正用物体の特徴とは、校正用物体である球体51が球体であることを表すデータである。なお、校正用物体が球であることが既に入力されていれば、このステップS502の処理をスキップさせてもよい。
次に、3次元画像処理装置42は、ステップS504にて、前記入力された校正用物体の特徴およびステップS402にて入力した球体セット53に関する番号に対応する校正用物体情報の中の球体の半径を用いて、単位ブロックおよび探索ブロックのサイズ設定処理を実行する。なお、本実施形態においては、球体の半径は12.5mm程度の大きさ、すなわち、直径25mm程度の大きさになっている。単位ブロックは、校正用物体である球体51の存在位置を特定するために探索ブロックを移動させる最小のブロックであり、本実施形態では立方体に形成されているが、直方体などの他の形状でもよい。また、単位ブロックのサイズは、球体51の一部が存在することを確認可能である程度に小さく設定される。探索ブロックは、球体51をその内部に包含する位置を特定するために利用されるもので、本実施形態では立方体に形成されるが、直方体などの他の形状でもよい。また、この探索ブロックのサイズは、球体51のすべてを包含できるとともに、なるべく小さく設定される。ただし、この球体51を包含できるとは、球体51の一部でも含む単位ブロックのすべてを含むことを意味する。
なお、本実施形態においては、球体51の直径が25mm程度の大きさであることから、単位ブロックのサイズとして立方体の1辺の長さ4mmが設定されるとともに、探索ブロックのサイズとして立方体の1辺の長さ32mmが設定される。これによれば、探索ブロックは、8×8×8個の単位ブロックを含むことになり、直径25mmのうちの24mmが6個の単位ブロックに完全に包含され、残りの1mmが1個または2個の単位ブロックに含まれることになる。図12は、単位ブロックと探索ブロックの関係を斜視図により示している。また、このステップS504において、単位ブロックおよび探索ブロックのサイズを設定するようにしたが、球体51の変更がなければ予め設定されている単位ブロックおよび探索ブロックのサイズをそのまま利用すればよいので、このステップS504の処理は不要である。
次に、3次元画像処理装置32は、ステップS506にて探索領域のブロック化処理を実行する。この探索領域のブロック化処理は、測定対象空間内で球体51の含まれる可能性のある領域を単位ブロックで分割する処理である。基本的には、球体51に関する3次元画像データに基づき、測定対象空間内のうち3次元画像データが存在する空間を単位ブロックで立体的に分割する。分割は、前記X,Y,Z座標の各座標軸に沿って単位ブロックを並べていく方法で行う。図13は図10の測定対象空間内に置かれた基準球体セットに関する3次元画像データに基づき本処理を行った結果を示す2次元の概念図である。なお、図13は理解しやすくするため、単位ブロックの大きさを実際の大きさより大きく示している。図13中、二点鎖線は測定対象空間内の境界(測定対象領域)を示している。そして、分割後の各単位ブロックBLはX,Y,Z方向の位置i,j,kを用いた座標(i,j,k)によって表される。ただし、i,j,kの各値は整数である。なお、このステップS506の探索領域のブロック化処理においては、球体51の存在しない連続領域、すなわち球体51に関する3次元画像データの含まれない連続領域を単位ブロックによる分割領域外としたが、測定対象領域の全域に渡って単位ブロックによる分割を行うようにしてもよい。
次に、3次元画像処理装置42は、ステップS508にて、前記ステップS506の処理によって分割した各単位ブロックごとに3次元画像データが所定個数以上あるかを調べる。そして、3次元画像データが所定個数以上ある単位ブロックを抽出する。図14(A)〜(D)は、抽出された単位ブロックを3次元形状測定装置30に視点をおいてZ軸方向から見たときの概念図である。ただし、外枠は探索ブロックに対応しており、ハッチング部分が抽出された単位ブロックである。
次に、3次元画像処理装置32は、ステップS510にて、球体51を含む可能性のある探索ブロック位置の検出を行う。この探索ブロック位置の検出処理においては、前記ステップS506の処理により単位ブロックに分割した領域にて、前記ステップS504の処理により設定した探索ブロックを単位ブロックを単位として、X軸、Y軸およびZ軸方向に順次移動させる。そして、各移動ごとに移動後の探索ブロック内に含まれるとともに前記ステップS508の処理によって抽出された単位ブロックの個数を計算する。前記単位ブロックの数が所定の範囲内であれば、該当する探索ブロック位置であるとして同位置が検出される。図15の(A)〜(D)は、この探索ブロックの移動の状態を2次元的に示す概念図である。
この場合、球体51は球体であるので、3次元形状測定装置30と対向する側に位置して3次元画像データが得られる箇所と、3次元形状測定装置30と対向しない側に位置して3次元画像データが得られない箇所の割合は、ほぼ同じであるので、球体の直径が特定されれば探索ブロック内に含まれる単位ブロックの数は設定される。その結果、図14(A)に示す球体が球体51であれば、図14(B)に示すような球体51より直径の小さな球体を、単位ブロックの数が所定範囲外であるとして除外することができる。
ただし、図14(C)に示すような球体51より直径の大きな球体は、探索ブロックの位置によって抽出された単位ブロックの数が所定の範囲内になることがあるため、該当する探索ブロックの位置として検出される。また、図11(D)に示すように球体51以外の物体である枠体52aが探索ブロック内に含まれる場合、単位ブロックの数が所定の範囲内であるとして検出される場合もある。このため、3次元画像データを所定数以上含む単位ブロックの数に代えまたは加えて、同単位ブロックの分布に基づいて該当探索ブロック位置の抽出処理を行えば球体51以外の物体を除外することができる。
具体的には、図14に示すように探索ブロックを3次元形状測定装置30から見て(すなわち、Z軸方向からみて)、Z軸方向のいずれかの面で単位ブロックが抽出された箇所を、X,Y軸の平面内で抽出された単位ブロックとして、X,Y軸の平面の単位ブロック各列で抽出された数が設定数の範囲内であることを条件に探索ブロック位置を検出すればよい。このようにすれば、図14(A)が球体51を示すとすれば、図14(B)(C)に示すような球体51とは異なる直径の球体や図14(D)に示すような球体51以外の枠体52aなどのような物体は、X,Y軸の平面の単位ブロック各列で抽出された数が設定数の範囲外であるとして除外することができる。さらに、前記処理において検出された物体を、X,Y軸の平面の単位ブロックにおける各列のX,Z平面またはY,Z平面で抽出した単位ブロックが、円状に分布していることを条件にして追加の検出を行えば、円柱または円錐で直径が等しく、中心軸がZ軸方向に向いているため検出されたものを除外することができる。
次に、3次元画像処理装置42は、ステップS512にて、前記ステップS510の処理によって検出した位置の探索ブロック内に含まれる3次元画像データが、球体51の形状に合致するか否かを判定し、合致すると判定したとき探索ブロック内の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(球の半径)と前記入力した球体51の直径を「2」で除した値、すなわち球体51の半径との差が所定の判別値以内であり、かつ各3次元画像データの球体中心からの距離の偏差が所定の判別値以内であれば、前記探索ブロック内の3次元画像データは合致するとして、同3次元画像データに基づく前記球体中心(X,Y,Z座標値)および球の半径dを抽出球体データとして記憶する。一方、前記差または偏差が所定の判別値以内でなければ、前記探索ブロック内の3次元画像データは合致しないとして、抽出球体データの記憶はしない。このステップS512の処理後、ステップS514にて、校正用物体抽出サブプログラムの実行を終了して、再び補正データ群取得プログラムのステップS408に戻る。
次に、3次元画像処理装置42は、ステップS408にて、前記記憶した抽出球体データの中から基準球体セットを構成する3つの球体51に関する抽出球体データを抽出する。この基準球体セットを抽出する処理は、次のサブステップ1〜3の処理からなる。
サブステップ1:3次元画像処理装置42に記憶した基準球体セット情報における基準球体セットを構成する3つの球体51の各半径RmA,RmB,RmCと所定の判別値内で一致する球の半径dを有する抽出球体データをそれぞれ抽出する。この場合、前記したように、各球体51の直径は略25mmに設定されているが、正確には各球体52の直径は異なる。このため、基準球体セット情報における3つの各球体51の半径RmA,RmB,RmCと所定の判別値内で一致する球の半径dを有する抽出球体データを抽出すれば、基準球体セットを構成する3つの球体51にそれぞれ対応する抽出球体データを抽出することができる。
サブステップ2:サブステップ1にて抽出した抽出球体データにおける各球体中心(X,Y,Z座標値)を用いて、各抽出球体データが表す球体51の中心間距離Lをそれぞれ計算し、同計算した中心間距離Lが所定の範囲内にある2つの球体51の組み合わせを抽出する。ここで所定の範囲内とは、球体セット53を構成する3つの球体51の各中心間距離と略一致する距離の範囲である。これにより、他の球体セット53の間での球体51の組み合わせを除くことができる。そして、抽出した2つの球体51の組み合わせの中から、基準球体セット情報における各球体51の3つの各中心間距離LmAB,LmBC,LmCAと所定の判別値内で一致する中心間距離Lc1,Lc2,Lc3(「c」はカメラ座標系を表す)を有する2つの球体51の組み合わせをさらに抽出する。これにより基準球体セットを構成する3つの球体51をそれぞれ表す3つの抽出球体データが抽出される。
サブステップ3:前記抽出した3つの各抽出球体データが基準球体セットにおける3つの球体51のうちのどれに相当するかを特定し、同特定した3つの抽出球体データを基準球体データとして記憶する。各抽出球体データの特定は、同抽出球体データにおける3つの球の各半径dおよび同各抽出球体データが表す球体51の中心間距離Lc1,Lc2,Lc3を用いて特定する。なお、抽出球体データにおける3つの球の球体中心座標CcA,CcB,CcCが、本発明に係る基準校正用物体直線定義パラメータに相当する。
次に、3次元画像処理装置42は、ステップS410にて、3次元形状測定装置30に関する座標系であるカメラ座標系によって表された座標値を、同カメラ座標系の各座標軸の向きを3次元測定機60に関する座標系である測定機座標系の各座標軸の向きに一致させ原点座標をアーム座標系の原点座標にした座標系であるCM座標系の座標値に座標変換するための座標変換関数GdCMを計算する。具体的には、前記ステップS408にて抽出した基準球体セットを構成する3つの各球体51をそれぞれ表す前記基準球体データにおける各球体51の球体中心座標CcA,CcB,CcCの各座標値を(CXcA,CYcA,CZcA)(CXcB,CYcB,CZcB)(CXcC,CYcC,CZcC)とし、この球体中心座標CcA,CcB,CcCにそれぞれ対応する3次元画像処理装置42に記憶された基準球体セット情報における各球体51の各球体中心座標CmA,CmB,CmCの各座標値を(CXmA,CYmA,CZmA)(CXmB,CYmB,CZmB)(CXmC,CYmC,CZmC)とすれば、球体中心CmAから球体中心CmBに向かうベクトルVCmAB、球体中心CmAから球体中心CmCに向かうベクトルVCmAC、球体中心CcAから球体中心CcBに向かうベクトルVCcAB、球体中心CcAから球体中心CcCに向かうベクトルVCcACは、それぞれ下記数16に示す式によって表される。
上記数16におけるベクトルVCmABとベクトルVCmACとの外積によるベクトルVCmおよびベクトルVCcABとベクトルVCcACとの外積によるベクトルVCcは各座標系において下記数17に示す式によって表される。
また、カメラ座標系におけるベクトル(αC,βC,γC)を測定機座標系におけるベクトル(αM,βM,γM)に変換する式は、下記数18に示す式によって表される。なお、下記数18においてMは座標変換関数である。
上記数18に示した式における(αC,βC,γC)に上記数16および数17に示した式における各ベクトルVCcAB,VCcAC,VCcの座標成分を代入し、上記数18に示した式における(αM,βM,γM)に上記数16および数17に示した式における各ベクトルVCmAB,VCmAC,VCmの座標成分を代入すると、下記数19に示すように3つの連立方程式が成立する。
上記数19に示した3つの連立方程式を解くことにより座標変換関数Mの各値g11〜g33を計算することができる。この座標変換関数Mが、カメラ座標系によって表された座標値をCM座標系による座標値に座標変換するための座標変換関数GdCMにおける座標軸の回転部分MdCMである。そして、原点座標の移動部分は、前記座標変換関数計算プログラムの実行により計算した座標変換関数CAの原点座標の移動部分(上記数5におけるa,b,c)と同じである。ただし、この場合の座標変換は、原点座標の移動を行った後、座標軸の回転を行うため、座標変換関数GdCMは上記数3により表される式である。
次に、3次元画像処理装置42は、ステップS412にて、CM座標系における基準定点座標TdCMを計算する。基準定点座標TdCMは、基準球体セットを構成する3つの球体51の配置上の中心位置を表す基準定点座標TdをCM座標系によって表した座標値である。この基準定点座標Tdをカメラ座標系によって表した基準定点座標TdCは、下記数20に示すように、3つの球体51の各球体中心座標CcA,CcB,CcCの各座標値(CXcA,CYcA,CZcA)(CXcB,CYcB,CZcB)(CXcC,CYcC,CZcC)を各座標値ごとに平均して計算することができる。
そして、上記数20に示す式によって計算された定点座標TdCを前記ステップS410にて計算された座標変換関数GdCMにより座標変換することによりCM座標系における基準定点座標TdCMを計算することができる。次に、3次元画像処理装置42は、ステップS414にて、基準球体セットを構成する3つの球体51の各球体中心座標の座標値を多関節ロボットに関する座標系である基準座標系による座標値に座標変換する。具体的には、基準球体データにおける3つの球体51の各球体中心座標CcA,CcB,CcCの座標値を前記座標変換関数計算プログラムの実行により計算した座標変換関数CAにより座標変換してアーム座標系によって表された各球体中心座標CaA,CaB,CaC(「a」はアーム座標系を表す)の座標値に座標変換する。そして、3次元画像処理装置42は、アーム座標系によって表された各球体中心座標CaA,CaB,CaCの座標値を基準座標系における座標値に変換する。この場合、基準座標系におけるアーム座標系の原点の座標および基準座標系の座標軸に対するアーム座標系の各座標軸の向きを表す回転角は、前記ステップS402で記憶されているため、3次元画像処理装置42は、この原点の座標を前記数3のa,b,cに、回転角を前記数4のα,β,γに代入し、アーム座標系によって表された球体中心の座標を前記数3のx’,y’,z’に代入して前記数3のx,y,zを計算することで基準座標系における各球体中心座標CdA,CdB,CdC(「d」は基準座標系を表す)を計算することができる。
次に、3次元画像処理装置42は、ステップS416にて、多関節ロボットに関する座標系である基準座標系によって表された座標値を、同基準座標系の各座標軸の向きを3次元測定機60に関する座標系である測定機座標系の各座標軸の向きに一致させた座標系であるDM座標系の座標値に座標変換するための座標変換関数GDMを計算する。具体的には、前記ステップS414にて計算された基準座標系における基準球体セットを構成する3つの球体51の各球体中心座標CdA,CdB,CdCの各座標値(CXdA,CYdA,CZdA)(CXdB,CYdB,CZdB)(CXdC,CYdC,CZdC)を上記数16〜数19における各球体51の球体中心座標CcA,CcB,CcCの各座標値(CXcA,CYcA,CZcA)(CXcB,CYcB,CZcB)(CXcC,CYcC,CZcC)とし、この球体中心座標CdA,CdB,CdCにそれぞれ対応する3次元画像処理装置42に記憶された基準球体セット情報における各球体51の各球体中心座標CmA,CmB,CmCの各座標値を(CXmA,CYmA,CZmA)(CXmB,CYmB,CZmB)(CXmC,CYmC,CZmC)とすれば、前記ステップS410における座標変換関数GdCMの座標軸の回転部分の計算と同様に、上記数16〜数19を用いて座標変換関数GDMを計算することができる。
次に、3次元画像処理装置42は、ステップS418にて、DM座標系における基準定点の座標Tddmを計算する。具体的には、前記ステップS414にて基準座標系に座標変換した各球体中心座標CdA,CdB,CdCの各座標値(CXdA,CYdA,CZdA)(CXdB,CYdB,CZdB)(CXdC,CYdC,CZcC)を上記数20と同様の下記数21に示す式に代入して基準座標系における基準定点の座標Tddを計算する。
そして、上記数21に示す式によって計算された基準定点の座標Tddに前記ステップS416にて計算された座標変換関数GDMを乗算することによりDM座標系における基準定点の座標Tddmを計算することができる。なお、この場合、基準座標系における基準定点の座標Tddは後述する処理において用いるため、DM座標系における基準定点の座標Tddmとともに記憶される。
次に、3次元画像処理装置42は、ステップS420にて、次の測定対象となる球体セットの指定を待つ。作業者は、入力装置43を操作して、次の測定対象となる球体セット53を表す球体セットの番号i(i=1〜N)(図5参照)を入力する。この場合、次の測定対象として指定される球体セット53は、基準球体セット以外の球体セットであり、基準球体セットに対する位置関係を測定するための被測定対象球体セットである。そして、3次元画像処理装置42は、ステップS422にて、前記ステップS420にて指定された被測定対象球体セットに対向する位置に3次元形状測定装置30を移動させる。この場合、3次元形状測定装置30を移動させる位置(すなわち、アーム支持機構20の先端部を移動させる位置)の基準座標系における座標値は、次のサブステップ1〜サブステップ3の処理によって計算される。
サブステップ1:DM座標系における被測定対象球体セットの定点座標Tndm(n=1)を計算する。具体的には、下記数22に示すように、3次元画像処理装置42に記憶されている校正用物体情報のうち、前記被測定対象球体セットに対応する定点座標Tmの座標値(TXm,TYm,TZm)と、同校正用物体情報の中から指定された基準球体セット情報における定点座標Tdmの各座標値(TdXm,TdYm,TdZm)との差を、前記ステップS418にて計算したDM座標系における基準定点の座標Tddmの各座標値(TdXdm,TdYdm,TdZdm)に加算して計算する。なお、この場合、3次元画像処理装置42に記憶されている定点座標Tmおよび定点座標Tdmは測定機座標系によって表され、定点座標T1dmはDM座標系によって表されているが、測定機座標系とDM座標系とは座標軸の向きが一致しているため、これらの座標値を加減算して計算することができる。
サブステップ2:DM座標系によって表された前記定点座標T1dmを基準座標系によって表された定点座標T1dに座標変換する。具体的には、定点座標T1dmに前記ステップS416にて計算した座標変換関数GDMの逆関数(逆行列)である座標変換関数GMDを乗算して変換する。ここで、座標変換関数GDMは、基準座標系によって表された座標値を同基準座標系における各座標軸の向きを測定機座標系における各座標軸の向きに一致させたDM座標系の座標値に座標変換するための変換関数であり、この座標変換関数GDMの逆関数である座標変換関数GMDは、DM座標系によって表された座標値を元の基準座標系による座標値に座標変換するための変換関数である。
サブステップ3:3次元形状測定装置30を移動させる基準座標系における座標値(X1d,Y1d,Z1d)を計算する。具体的には、下記数23に示すように、前記サブステップ2にて座標変換した基準座標系における次の測定対象である球体セット53の定点座標T1dの各座標値(T1Xd,T1Yd,T1Zd)と、前記ステップS418にて記憶した基準座標系における基準定点座標Tddの各座標値(TdXd,TdYd,TdZd)との差を、前記ステップS402にて3次元画像処理装置42に記憶したアーム座標系の原点の基準座標系における座標値、すなわち、基準球体セットを測定した際におけるアーム座標系の原点の基準座標系での位置(基準位置)座標BPdの各座標値(BPXd,BPYd,BPZd)に加算して計算する。なお、この場合、定点座標T1d、基準定点座標Tddおよび基準位置座標BPdはいずれも基準座標系によって表されているため座標値の加減算により計算することができる。
次に、3次元画像処理装置42は、ステップS424にて、被測定対象球体セットの3次元測定を行う。この被測定対象球体セットの3次元測定は前記ステップS404と同様である。すなわち、3次元画像処理装置42は、作業者による測定開始の指示に応答して3次元形状測定装置30の作動を制御して、同3次元形状測定装置30に対向する球体セット53(被測定対象球体セット)の測定を開始する。3次元形状測定装置30は、測定対象空間内に位置する球体セット53の3次元形状を表す情報を3次元画像処理装置42に出力する。そして、前記ステップS302と同様にして、3次元形状測定装置30から出力されたX−Y−Z座標に関する情報に基づいて、球体セット53の3次元形状を表す立体形状データ群からなる3次元画像データを計算する。なお、この3次元画像データはカメラ座標系によって表されている。また、3次元画像データには、被測定対象球体セットのほかにワイヤー53c,53dや他の球体セット53など、測定対象である球体セット53の周辺に存在する他の物体の表面形状を表す3次元画像データも含まれている。
次に、3次元画像処理装置42は、ステップS426にて、前記ステップS424にて計算された3次元画像データの中から球体51の3次元形状を表す3次元画像データを抽出する。この球体51を表す3次元画像データの抽出処理は、前記ステップ406の処理と同様に図11に示す校正用物体抽出サブプログラムを実行することにより行われるため説明を省略する。なお、校正用物体抽出サブプログラムにおけるステップS502およびS504においては、前記ステップS406にて実行された校正用物体の特徴、単位ブロックサイズおよび探索ブロックサイズを用いればよいため、同ステップS502およびステップS504の各ステップをスキップさせる。このステップS426の処理により、測定対象である球体セット53を構成する3つの球体51を含む球体51の3次元形状を表す3次元画像データが抽出球体データとして抽出される。
次に、3次元画像処理装置42は、ステップS428にて、前記抽出した抽出球体データの中から被測定対象球体セットを構成する3つの球体51に関する抽出球体データを抽出する。この被測定対象球体セットを抽出する処理は、前記ステップS408と同様に、次のサブステップ1〜3の処理からなる。
サブステップ1:3次元画像処理装置42に記憶した校正用物体情報のうち、前記ステップ420にて入力した球体セット53、すなわち被測定対象球体セットを構成する3つの球体51の各半径RmA,RmB,RmCと所定の判別値内で一致する球の半径dを有する抽出球体データをそれぞれ抽出する。
サブステップ2:サブステップ1にて抽出した抽出球体データにおける球体中心(X,Y,Z座標値)を用いて、各抽出球体データが表す球体51の中心間距離Lをそれぞれ計算し、同計算した中心間距離Lが所定の範囲内にある2つの球体51の組み合わせを抽出する。ここで所定の範囲とは、球体セット53を構成する3つの球体51の各中心間距離と略一致する距離の範囲である。これにより、他の球体セット53の間での球体51の組み合わせを除くことができる。そして、抽出した2つの球体51の組み合わせの中から、被測定対象球体セットにおける各球体51間の3つの各中心間距離LmAB,LmBC,LmCAと所定の判別値内で一致するする中心間距離Lc1,Lc2,Lc3を有する2つの球体51の組み合わせをさらに抽出する。これにより被測定対象球体セットを構成する3つの球体51をそれぞれ表す3つの抽出球体データが抽出される。
サブステップ3:前記抽出した3つの各抽出球体データが被測定対象球体セットにおける3つの球体51のうちのどれに相当するかを特定し、同特定した3つの抽出球体データを被測定対象球体データとして記憶する。各抽出球体データの特定は、同抽出球体データにおける3つの球の各半径dおよび同各抽出球体データが表す球体51の中心間距離Lc1,Lc2,Lc3を用いて特定する。なお、この抽出球体データにおける3つの球の球体中心座標CcA,CcB,CcCが、本発明に係る被測定対象校正用物体直線定義パラメータに相当する。
次に、3次元画像処理装置42は、ステップS430にて、座標変換関数GsCMを計算する。座標変換関数GsCMは、3次元形状測定装置30に関する座標系であるカメラ座標系によって表された座標値を同カメラ座標系の各座標軸の向きを3次元測定機60に関する座標系である測定機座標系の各座標軸の向きに一致させ原点座標をアーム座標系の原点座標にした座標系であるCM座標系の座標値に座標変換するための座標変換関数であり、前記ステップS410における座標変換関数GdCMと同様の座標変換関数である。この場合、前記ステップS428にて抽出された被測定対象球体データにおける各球体51の球体中心座標CcA,CcB,CcCの各座標値を(CXcA,CYcA,CZcA)(CXcB,CYcB,CZcB)(CXcC,CYcC,CZcC)とし、この球体中心座標CcA,CcB,CcCにそれぞれ対応する3次元画像処理装置42に記憶された校正用物体情報における各球体51の各球体中心座標CmA,CmB,CmCの各座標値を(CXmA,CYmA,CZmA)(CXmB,CYmB,CZmB)(CXmC,CYmC,CZmC)とすれば、前記ステップS410と同様にして座標変換関数GsCMの座標軸の回転部分MsCMを計算することができる。そして、前記ステップS410と同様原点座標の移動部分は座標変換関数CAの原点座標の移動部分であり、座標変換関数GdCMは上記数3により表される式である。
次に、3次元画像処理装置42は、ステップS432にて、被測定対象球体セットの定点座標T1をCM座標系で表した被測定対象定点座標T1cmを計算する。被測定対象球体セットを構成する3つの球体51の各球体中心座標CcA,CcB,CcCの各座標値を(CXcA,CYcA,CZcA)(CXcB,CYcB,CZcB)(CXcC,CYcC,CZcC)とすれば、カメラ座標系における定点座標T1cは前記ステップS412と同様にして上記数20に示した式により計算することができる。そして、上記数20に示す式によって計算された定点座標T1cを前記ステップS430にて計算した座標変換関数GsCMにより座標変換することによりCM座標系における被測定対象定点座標T1CMを計算することができる。
次に、3次元画像処理装置42は、ステップS434にて、位置決め誤差ECcmを計算する。位置決め誤差ECcmは、コントローラ41によって指示される3次元形状測定装置30の移動先の位置と、実際に3次元形状測定装置30が位置決めされた位置との差であり、コントローラ41によって指示される第4アーム26の先端部の移動先の座標と、実際に第4アーム26の先端部が位置決めされた位置の座標との差である。この位置決め誤差ECcmは、下記数24に示すように、CM座標系における被測定対象球体セットの被測定対象定点座標T1cmの座標値(T1Xcm,T1Ycm,T1Zcm)から同CM座標系における基準球体セットの基準定点座標Tdcmの座標値(TdXcm,TdYcm,TdZcm)を減算して計算する。
この場合、CM座標系は座標軸の向きが測定機座標系の座標軸の向きと一致し原点座標をアーム座標系の原点座標にした座標系であり、3次元形状測定装置30の移動に伴って移動する座標系である。したがって、コントローラ41によって指示される3次元形状測定装置30の移動先の位置と、実際に3次元形状測定装置30が位置決めされた位置との間に差がなければ、すなわち、3次元形状測定装置30が正確に位置決めされれば、前記ステップS422にて、コントローラ41によって指示される3次元形状測定装置30の移動先の位置は、基準球体セットにおける基準定点から被測定対象球体セットにおける定点に向かうベクトル分だけ基準位置から移動した位置であるので、位置決め誤差ECcmは「0」である。
一方、3次元形状測定装置30が正確に位置決めされない場合には、コントローラ41によって指示される3次元形状測定装置30の移動先の位置と、実際に3次元形状測定装置30が位置決めされた位置との間に差が生じ、同差が位置決め誤差ECcmとなる。この場合、カメラ座標系における基準定点座標Tdcと被測定対象定点座標T1cとを直接比較せず、CM座標系における基準定点座標TdCMと被測定対象定点座標T1CMとを比較するのは、3次元形状測定装置30の位置決め誤差が3次元形状測定装置30の向きに関するずれに起因するか否かを区別するためである。次に、3次元画像処理装置42は、上記数24に示す式によって計算された位置決め誤差ECcmに前記ステップS416にて計算した座標変換関数GDMの逆関数である座標変換関数GMDを乗算して同位置決め誤差ECcmを基準座標系によって表された位置決め誤差ECdに座標変換する。
次に、3次元画像処理装置42は、ステップS436にて、座標補正データRDを記憶する。座標補正データRDは、前記位置決め誤差ECdを補正するための補正値である。具体的には、基準座標系によって表された前記位置決め誤差ECdの符号を反対符号にした値を座標補正データRDとして記憶する。次に、3次元画像処理装置42は、ステップS438にて、回転ずれEDを計算する。回転ずれEDは、コントローラ41によって指示される3次元形状測定装置30の移動先での向きと、実際に3次元形状測定装置30が位置決めされたときの3次元形状測定装置30の向きとのずれであり、換言すれば、コントローラ41によって指示される第4アーム26の先端部の移動先でのアーム座標系の座標軸の向きと、実際に第4アーム26の先端部が位置決めされたときのアーム座標系の座標軸の向きとのずれである。具体的には、前記ステップS430にて計算した座標変換関数GsCMの座標軸の回転部分MsCMの逆関数である回転部分MsMCと前記ステップS410にて計算した座標変換関数GdCMの座標軸の回転部分MdCMとの乗算値を回転ずれEDとして計算する。
前記ステップS430にて計算した座標変換関数GsCMの座標軸の回転部分MsCMは、3次元形状測定装置30を被測定対象球体セットに面するように位置決めした際における3次元形状測定装置30に関する座標系であるカメラ座標系によって表された座標値を同カメラ座標系の各座標軸の向きを3次元測定機60に関する座標系である測定機座標系の各座標軸の向きに一致させたCM座標系に座標変換するための座標変換関数の回転部分であり、同座標変換関数GsCMの座標軸の回転部分MsCMの逆関数である回転部分MsMCはCM座標系の座標値をカメラ座標系の座標値に座標変換するための座標変換関数GsMCの回転部分である。また、前記ステップS410にて計算した座標変換関数GdCMの座標軸の回転部分MdCMは、3次元形状測定装置30を基準球体セットに面するように位置決めした際におけるカメラ座標系の座標値をCM座標系の座標値に座標変換するための座標変換関数の回転部分である。
そして、回転ずれEDは、理想とする測定対象位置でのカメラ座標系によるベクトル値を実際の測定対象位置でのカメラ座標系によるベクトル値にするための座標変換関数と看做せばよいので、理想とする測定対象位置でのカメラ座標系によるベクトル値に座標変換関数GdCMの回転部分MdCMを乗算して測定機座標系のベクトル値にし、さらに座標変換関数GsMCの回転部分MsMCを乗算して実際の測定対象位置でのカメラ座標系によるベクトル値にすると考えれば、回転ずれEDは2つの座標変換関数の回転部分を乗算した値(MsMC・MdCM)で表すことができる。この場合、座標変換関数GsCMと座標変換関数GdCMとは、3次元形状測定装置30の位置決めの前後においてカメラ座標系の座標軸の向きに変化がなければ同一の関数となる。すなわち、座標変換関数GdCMの回転部分MdCMに座標変換関数GsCMの回転部分MsCMの逆関数である回転部分MsMCを乗算した値(MsMC・MdCM)はカメラ座標系の座標軸の向きに変化がなければ「1」となり、回転ずれEDはないことになる。
そして、この回転ずれEDは、カメラ座標系における回転ずれEDであるので、補正関数を求めるにはアーム座標系における回転ずれEDを計算する必要がある。アーム座標系における回転ずれEDは、アーム座標系によるベクトル値をカメラ座標系によるベクトル値にした場合、先の回転ずれEDの値になると看做せばよいため、カメラ座標系における回転ずれEDの左側に座標変換関数CAの座標軸の回転部分MCAを乗算し、右側に同回転部分MCAの逆関数MACを乗算すればよい。したがって、アーム座標系における回転ずれEDは、MCA・MsMC・MdCM・MACとなる。
次に、3次元画像処理装置42は、ステップS440にて、回転ずれ補正関数RGを記憶する。回転ずれ補正関数RGは、前記回転ずれEDを補正するための関数である。具体的には、前記回転ずれEDの逆関数((MCA・MsMC・MdCM・MAC)−1)を計算して回転ずれ補正関数RGとして前記座標補正データRDとともに記憶する。なお、この回転ずれ補正関数RGが、本発明に係る回転ずれ補正データに相当する。
次に、3次元画像処理装置42は、ステップS442にて、基準球体セットを選定した際の校正用物体支持ベース52の高さにおける基準球体セットとして指定した球体セット53以外のすべての球体セット53および基準球体セットを選定した際の校正用物体支持ベース52の高さ以外の高さにおけるすべての球体セット53について被測定対象球体セットとして3次元測定および補正データの計算を行ったか否かを判定する。この判定処理において、3次元画像処理装置42は、被測定対象球体セットについて3次元測定および補正データの計算が実行されるまで、「No」と判定し続けてステップS420以降の各処理を繰り返し実行する。この場合、作業者は、校正用物体支持ベース52の高さを、前記校正用物体情報取得プログラムのS104で設定した高さのうち、被測定対象球体セットについて3次元測定および補正データの計算が実行されていない高さに設定する。
一方、すべての校正用物体支持ベース52の高さにおけるすべての被測定対象球体セットについて3次元測定および補正データの計算が実行された場合には、同判定において「Yes」と判定されてステップS444にて、この補正データ群取得プログラムの実行を終了する。これにより、図16に示すように、基準球体セットとして指定された球体セット53を除く(N−1)個の被測定対象球体セットの測定位置ごとに座標補正データRDおよび回転ずれ補正関数RGからなる補正データ群が3次元画像処理装置42のメモリ装置に記憶される。
この補正データ群取得プログラムの実行後、作業者は、校正治具50を基台10上から取り除いて、同基台10上に測定対象物であるワークWKを配置する。そして、入力装置43を操作してワークWKの3次元形状の表示を指示する。これに応答して、3次元画像処理装置42は、図17に示す3次元形状表示プログラムの実行をステップS600にて開始して、ステップS602にてワークWKを測定するための3次元形状測定装置30の測定位置を表す位置情報の入力を待つ。この場合、入力される位置情報は、基準座標系における3つの座標軸の各座標値(X,Y,Z)および同各座標軸の方向をアーム座標系の座標軸の方向にするための同各座標軸回りの回転角度(Xθ,Yθ,Zθ)である。したがって、作業者は、ワークWKを測定するためのこれらの位置情報を入力装置43を操作して3次元画像処理装置42に入力する。3次元画像処理装置42は、入力された位置情報における座標値を測定位置WSP、回転角度を回転角WSRとしてそれぞれ認識する。
次に、3次元画像処理装置42は、ステップS604にて、前記入力された位置情報を補正して3次元形状測定装置30を位置決めする位置(座標値)および位置決め後における3次元形状測定装置30の向き(回転角)を計算する。この位置情報の補正は、前記補正データ群取得プログラムにより取得した補正データ群を用いて行う。まず、3次元画像処理装置42は、位置情報における座標値を補正して3次元形状測定装置30を位置決めする位置を計算する。まず、3次元画像処理装置42は、校正治具50の被測定対象球体セットごとに計算された補正データ群の中から、前記ステップS602にて入力した測定位置近傍の4つの補正データを抽出する。具体的には、図18に示すように、前記ステップS602にて入力した測定位置WSPを取り囲む前記補正データ群における8つの被測定対象球体セットの測定位置KSP1〜KSP8を抽出する。そして、抽出した8つ測定位置KSP1〜KSP8のうち、最も測定位置WSPに近い測定位置KSP1〜KSP8である測定位置KSP1に対応する補正データおよび同測定位置KSP1に隣接する3つの測定位置KSP2,KSP3,KSP5にそれぞれ対応する3つの補正データを抽出する。
次に、3次元画像処理装置42は、前記抽出した4つの補正データにおける各座標補正データRDを用いて、前記ステップS602にて入力した測定位置WSPに対応する補正データRD’を計算する。具体的には、下記数25に示すように、測定位置WSPの座標値(XWSP,YWSP,ZWSP)、測定位置KSP1,KSP2,KSP3,KSP5の各座標値(XKSP1,YKSP1,ZKSP1)(XKSP2,YKSP2,ZKSP2)(XKSP3,YKSP3,ZKSP3)(XKSP5,YKSP5,ZKSP5)および同測定位置KSP1,KSP2,KSP3,KSP5にそれぞれ対応する各補正データRDの各座標値(XRD1d,YRD1d,ZRD1d)(XRD2d,YRD2d,ZRD2d)(XRD3d,YRD3d,ZRD3d)(XRD5d,YRD5d,ZRD5d)を用いて、各座標軸ごとに補間法により計算する。この下記数25により計算された各座標軸ごとの補正データRD’の座標値(XRD’d,YRD’d,ZRD’d)を視覚的に表すと図18に示すようになる。
そして、3次元画像処理装置42は、前記計算した補正データRD’を前記ステップS602にて入力した測定位置WSPにおける各座標値に加算して3次元形状測定装置30を位置決めする位置を計算する。次に、3次元画像処理装置42は、位置情報における各座標軸の回転角を補正して、3次元形状測定装置30の向きを計算する。3次元画像処理装置42は、前記抽出した測定位置KSP1に対応する補正データのうち回転ずれ補正関数RGを測定位置WSPにおける回転角WSRを前記数4に代入して得られる3×3の行列式に乗算し、同乗算した結果得られた3×3の行列式から回転角WSR’を算出して3次元形状測定装置30の向きを計算する。この場合、アーム座標系における各座標軸の回転ずれEDは、前記位置決め誤差ECdに比べて極めて小さいずれであるので、測定位置KSP1に対応する回転ずれ補正関数RGによって位置情報における各座標軸の回転角を補正できる。なお、この位置情報における各座標軸の回転角の補正をより高精度に行うには、前記位置情報における座標値の補正と同様に補間法を用いて各座標軸の回転角の補正を行うようにすればよい。
次に、3次元画像処理装置42は、ステップS606にて、前記ステップS604にて補正された測定位置に同ステップS604にて補正された向きで3次元形状測定装置30を移動させる。これにより、3次元形状測定装置30は、前記ステップS602にて指定された測定位置WSPに指定された回転角WSRで位置決めされる。そして、3次元画像処理装置42は、ステップS608にて、ワークWKの3次元形状を表す測定情報の入力を待つ。3次元形状測定装置30は、コントローラ41によって制御されてワークWKの3次元形状の測定を開始し、同ワークWKの3次元形状を表す情報を3次元画像処理装置42に出力する。すなわち、3次元画像処理装置42は、ワークWKの表面を微小エリアずつに分割した各分割エリア位置を表すX−Y−Z座標に関する情報(具体的には、傾きθx,θyおよび距離Lz)をそれぞれ入力する。そして、3次元画像処理装置42は、入力した3次元形状測定装置30からのX−Y−Z座標に関する情報に基づいて、各測定位置ごとにおけるワークWKの3次元形状を表す立体形状データ群からなる3次元画像データをそれぞれ計算する。この場合、3次元画像データは、3次元形状測定装置30に関する座標系、すなわちカメラ座標系によって表されている。
次に、3次元画像処理装置42は、ステップS610にて、ワークWKに対して互いに異なる3つの測定位置から測定したか否かを判定する。これは、ワークWKを任意の方向から見て表示可能な3次元画像データを生成するためには、互いに異なる少なくとも3つの位置からワークWKを測定する必要があるためである。したがって、この判定処理においては、ワークWKを互いに異なる3つの測定位置から測定するまで「No」と判定し続けてステップS602に戻り、再びワークWKの測定処理を実行する。一方、同判定処理において、ワークWKを互いに異なる3つの測定位置から測定した場合には「Yes」と判定されてステップS612に進む。なお、ワークWKの測定は、前記した3つの位置に限られず4つ以上の位置から測定を行うようにしてもよく、これによれば、より高精度の3次元形状の測定を行うことができる。
次に、3次元画像処理装置42は、ステップS612にて、3つの各測定位置ごとの3次元画像データを一組の3次元形状データ群に合成する。この場合、各測定位置ごとの3次元画像データは、所定の座標変換関数によりカメラ座標系による3次元画像データから基準座標系による3次元画像データに変換された後、一組の3次元形状データに合成される。この合成においては、すべての測定位置における3次元画像データが同一座標系である基準座標系による座標値で表されるので、各測定位置によって測定されないワークWKの部分(各測定位置における3次元形状測定装置30に対して裏側に位置するワークWKの外表面)を表す3次元画像データが互いに補われ、一組のデータ群が生成される。
次に、3次元画像処理装置42は、ステップS614にて、前記合成された3次元形状データ群を用いてワークWKの3次元形状を表示装置44に表示させる。そして、3次元画像処理装置42は、ステップS616にて、3次元形状表示プログラムの実行を終了する。このワークWKの3次元形状の表示においては、作業者は入力装置43を操作することによりワークWKの表示方向を指示することができ、コントローラ41および3次元画像処理装置42は表示装置44にて表示されるワークWKの表示方向を変更する。これにより、ワークWKを任意の方向から見た立体形状を表示させることができる。
また、新たなワークWKを基台10上に置いて、前述のようにワークWKの表示を指示すれば、前記3次元形状表示プログラムの実行により、前記と同様にして新たなワークWKを任意の方向から見た3次元形状を表示装置44に表示させることができる。したがって、補正データ群を一度取得しておけば、ワークWKを次々に換えて表示装置44にて3次元形状を表示させることが可能である。
上記作動説明からも理解できるように、上記実施形態によれば、16セットの球体セット53を備えた校正治具50において、校正用物体支持ベース52の1つの高さにおける1つの球体セット53を基準球体セットとするとともに、他の球体セット、具体的には、校正用物体支持ベース52の同じ高さにおける他の球体セット53および校正用物体支持ベース52の他の高さにおけるすべての球体セット53を被測定対象球体セットとしてそれぞれ3次元形状測定装置30によって3次元形状測定を行っている。この場合、3次元形状測定装置30は、基準球体セットに対して校正用物体情報における各定点座標Tmの位置関係に応じて各被測定対象球体セットに位置決めされる。したがって、3次元形状測定装置30における位置決め誤差がなければ、3次元形状測定装置30によって測定される基準球体セットの基準定点座標Tdcmの位置と各被測定対象球体セットの被測定対象定点座標TNcmの位置との間には差はない。一方、同基準球体セットの基準定点座標Tdcmの位置と各被測定対象球体セットの被測定対象定点座標TNcmの位置との間に差が生じている場合には、基準球体セットを測定した位置から各被測定対象球体セットに3次元形状測定装置30を位置決めした際に、3つの座標軸上の位置ずれおよび/または各座標軸上の回転ずれが生じていることになり、同差を位置決め座標誤差ECdおよび/または回転ずれEDとして検出することができる。すなわち、校正治具50における球体セット53は、3次元形状測定装置30により球体51の3次元形状測定装置により同各校正用物体の3次元形状が正確に測定され、その測定データに基づいて各定点の座標が正確に算出されるとともに、記憶手段に各校正用物体の位置関係が記憶されるため、各球体51および各球体セット53を高精度に製作および配置する必要がないとともに、校正治具50の配置位置もアーム支持機構20の可動範囲内であれば厳密に位置決めする必要もない。このため、多関節ロボットにおける位置決め誤差を補正するためのコストを抑えることができるとともに、校正治具50を配置する作業を簡易にすることができる。この結果、多関節ロボットにおける位置決め誤差補正の精度を良好に維持しつつ、前記位置決め誤差を作業効率良く検出することができる。
また、基準球体セットに対する各被測定対象球体セットの位置に応じて座標補正データRDおよび回転ずれ補正関数RGが計算される。そして、3次元形状測定装置30を移動させる際、同移動先の位置に応じた座標補正データRDおよび回転ずれ補正関数RGを用いて3次元形状測定装置30を位置決めする。この場合、座標補正データRDは、3次元形状測定装置30の移動先の位置に応じて補間法により計算される。この結果、3次元形状測定装置30の位置決めされる位置に応じた補正量によって補正することができ、より高精度に3次元形状測定装置30を位置決めすることができる。
(第2実施形態)
本発明の第2実施形態について説明する。上記第1実施形態においては、校正治具50を構成する校正用物体として3つの球体51からなる球体セット53を用いたが、3次元における各次元ごとに少なくとも1つの直線が定義できれば、すなわち座標変換関数Gdcmおよび座標変換関数Gscmを定義できれば、例えば、球体51における球形状に変えて立方体または直方体に形成された校正用物体を用いて校正治具50を構成することもできる。図19に示す校正治具50’においては、校正用物体として前記球体51に代えて直方体51’を用いている。直方体51’は、校正用物体支持ベース52におけるワイヤー52cとワイヤー52dとの各交点部分、具体的には16個の交点部分にそれぞれ1つずつ固定されている。この場合、各直方体51’は、3次元形状測定装置30によって直方体51’を構成する6つの面のうち、互いに隣り合ういずれか3つの面が測定できる向きで固定されている。すなわち、直方体51’の1つの頂点が3次元形状測定装置30に対向するように固定されている。校正治具50’におけるその他の部分の構成は、前記校正治具50と同様である。この校正治具50’を用いて多関節ロボットにおける位置決め誤差を補正する処理過程は、上記第1実施形態における校正治具50を用いて位置決め誤差を補正する処理過程と略同一である。しがって、上記第1実施形態と異なる処理過程のみについて説明する。
まず、校正用物体情報取得プログラムの実行について説明する。上記のように構成された校正治具50’における前記校正用物体情報は、16個の直方体51’ごとおよび校正用物体支持ベース52の各高さごとに各直方体51’における互いに隣り合う3つの面における同各面の法線ベクトル、同各面間の角度、同各面における共通の辺の長さおよび同各面の交点である定点で構成されている。まず、作業者は、前記と同様にして校正治具50’を支柱54を縮めた状態にして3次元測定機60のベース66上の測定対象空間内にセットした後、入力装置64を操作して校正用物体情報の取得を座標計算処理装置63に指示する。この指示に応答して、座標計算処理装置63は図4に示す校正用物体情報取得プログラムと同様のプログラムである図20に示す校正用物体情報取得プログラムの実行をステップS700にて開始して、ステップS702にて作業者による測定対象の特徴の入力を待つ。このステップS702の処理において作業者は、測定対象が直方体であることを表す情報を入力する。
次に、座標計算処理装置63は、ステップS704にて、測定部61による各直方体51’ごとの測定座標情報の入力を待つ。このステップS704の処理において作業者は、図21に示すように、測定部61のプローブ69を操作して、1つの直方体51’における互いに隣り合う3つの面A,B,Cごとに各面の表面にそれぞれ3箇所ずつ接触させる。これにより、測定部61は3つの測定面A,B,Cごとに3箇所の接触点に対応する3組の測定座標情報(各点は、座標値x,y,zで表される)を座標計算処理装置63に出力する。
次に、座標計算処理装置63は、ステップS706にて、3つの測定面A,B,Cごとに測定された各3組の測定座標情報を用いて、同各測定面A,B,Cにおける法線ベクトルをそれぞれ計算する。具体的には、各測定面A,B,Cごとに3組の測定座標情報を下記数26に示す平面の式の左辺に代入し、3つの連立方程式からa,b,cを計算することで、3つの各測定面の平面の式をそれぞれ求める。これらの平面の式におけるa,b,cをベクトル成分にしたベクトルが、それぞれ3つの測定面A,B,Cにおける各法線ベクトルである。そして、同各法線ベクトルのベクトル成分a,b,cを下記数27に代入して大きさが「1」の法線ベクトルVmA,VmB,VmCのベクトル成分αm,βm,γmを計算する。
次に、座標計算処理装置63は、ステップS708にて、各測定面A,B,C間の各角度を計算する。この各測定面A,B,C間の各角度は、互いに隣り合う測定面A,B,Cにおける各法線ベクトル間の角度として計算する。具体的には、前記法線ベクトルVmA,VmB,VmCの各成分(αmA,βmA,γmA),(αmB,βmB,γmB),(αmC,βmC,γmC)のうち、2つの法線ベクトルの各成分を下記数28に示す内積の式の右辺にそれぞれ代入して、角度θを計算する。これにより、3つの測定面A,B,Cの各測定面間の角度θAB,θBC,θCAが計算される。
次に、座標計算処理装置63は、ステップS710にて、直方体51’の定点座標Tmを計算する。定点座標Tmは、3つの測定面A,B,Cの交点として計算される。具体的には、前記ステップS706における3つの各測定面の平面の式の連立方程式を解くことにより計算される。次に、座標計算処理装置63は、ステップS712にて、3つの測定面A,B,Cにおけるそれぞれ共通の辺の長さLmAB,LmBC,LmCAを計算する。この場合、作業者は、測定部61のプローブ69を操作して、直方体51’の定点座標Tmに隣り合う3つの頂点TmAB,TmBC,TmCAに接触させる。これにより、測定部61は3つの頂点TmAB,TmBC,TmCAの各接触点に対応する3組の測定座標情報(各点は、座標値x,y,zで表される)を座標計算処理装置63に出力する。そして、座標計算処理装置63は、定点座標Tmの座標値と各頂点TmAB,TmBC,TmCAの測定座標情報とを用いて、定点座標Tmと各頂点TmAB,TmBC,TmCAとの距離をそれぞれ計算する。
次に、座標計算処理装置63は、ステップS714にて、すべての直方体51’について測定を行ったか否かを判定する。この判定において、すべての直方体51’について測定を行っていない場合には「No」と判定されてステップS704に戻り、未だ測定を行っていない直方体51’について測定処理を続行する。一方、すべての直方体51’について測定を行った場合には「Yes」と判定されてステップS716に進む。ステップS716において座標計算処理装置63は、前記ステップS114と同様に、作業者に対して球体セット53の高さ方向の位置を変更して再度各球体セット53の測定処理を行うか否かを問い合わせる。この場合、作業者は、異なる高さ方向の位置で再度球体53の測定処理が必要な場合には、入力装置64を操作して測定処理を続行する旨の情報を座標計算処理装置63に入力する。この指示に応答して、座標計算処理装置63は、同ステップS716にて「Yes」と判定して、ステップS704に戻り球体セット53を測定する各処理を再度実行する。この場合、作業者は、校正治具50の支柱54を伸縮させて校正用物体支持ベース52の高さを必要な高さに変更する。
一方、アーム支持機構20を可動させる高さ方向の範囲に対応する高さ方向の範囲内で略均等に球体セット53の校正用物体情報が取得された場合には、作業者は、入力装置64を操作して測定処理を終了する旨の情報を座標計算処理装置63に入力する。この指示に応答して、座標計算処理装置63は、同ステップS716にて「No」と判定して、ステップS718に進み、同ステップS718にて、この校正用物体情報取得プログラムの実行を終了する。これにより、座標計算処理装置63には、図22に示すように、直方体51’(1〜N)ごとに各直方体51’における3つの測定面A,B,Cの法線ベクトルVmA,VmB,VmC、同各測定面間の角度θmAB,θmBC,θmCA、同各面における共通の辺の長さLmAB,LmBC,LmCAおよび同各面の交点である定点座標Tmがそれぞれ記憶される。なお、これらの校正用物体情報のうち、法線ベクトルVmA,VmB,VmCが本発明に係る直線定義パラメータであり、各測定面間の角度θmAB,θmBC,θmCAおよび同各面における共通の辺の長さLmAB,LmBC,LmCAが本発明に係る識別パラメータであり、同各面の交点である定点座標Tmが本発明に係る定点である。また、校正用物体情報が既知であれば、この校正用物体情報取得プログラムの実行による校正用物体情報の取得処理は不要である。
次に、補正データ取得プログラムの実行について説明する。図9に示す補正データ取得プログラムにおけるステップS402において作業者は、校正治具50’におけるN個の直方体51’のうち任意の直方体51’を基準直方体として選択し、同基準直方体に対向する位置に3次元形状測定装置30を位置決めする。この場合、3次元形状測定装置30には各直方体51’の頂点が対向、すなわち同頂点を構成する直方体51’の3つの面が面している。また、同ステップS402にて作業者は、3次元画像処理装置42に記憶した校正用物体情報のうち、基準直方体として選択した直方体51’に関する校正用物体情報の番号(1〜N)を基準直方体情報として指定する。そして、3次元画像処理装置42は、ステップS404にて、基準直方体を3次元測定する。この場合、基準直方体の3次元形状を表す3次元画像データは、3次元形状測定装置30に面する3つの面、すなわち3つの測定面A,B,Cを表すデータである。
ステップS406において3次元画像処理装置42は、前記ステップS404にて計算された3次元画像データの中から直方体51’に関する3次元画像データを抽出する。この直方体51’に関する3次元画像データの抽出処理は、図11に示す校正用物体抽出サブプログラムにより実行される。3次元画像処理装置42は、ステップS502にて、校正用物体の特徴として、形状が特定の多面体(直方体)であることを表すデータを入力する。次に、ステップS510における探索ブロックの位置の抽出処理においては、探索ブロックの中央部の平面内に抽出した単位ブロックの数が所定数以上直線状に連続して存在し、探索ブロックの周辺の各面において、抽出された単位ブロックの数が所定数以下であることを条件に、探索ブロックの位置を抽出するようにする。
次に、ステップS512における校正用物体に関する3次元画像データの抽出処理を以下に示す処理に変更する。この場合、校正用物体、すなわち直方体51’の1つの平面に関する3次元画像データの抽出のために、3次元形状測定装置30に最も近い点を表す3次元画像データとその付近の点を表す3次元画像データ(X,Y,Z座標値)を、平面の式である上記数26の左辺のx,y,zにそれぞれ代入し、最小2乗法を用いて未知数a,b,cを計算する。次に、この計算した未知数a,b,cを用いた上記数26によって表された平面と、前記代入した各3次元画像データにより表された点との距離をそれぞれ計算する。そして、前記計算した全ての各距離が所定の判別値以内であれば、これらの全ての3次元画像データを含む平面を定義する。一方、前記計算した各距離が所定の判別値以内でなければ、前記平面の計算に利用した3次元画像データとは異なる位置にある点およびその近傍の点をそれぞれ表す複数の3次元画像データを用いて、前記と同様な平面の定義に関する処理を行う。これらの処理を平面が定義されるまで繰り返し行う。なお、前記計算した全ての各距離が所定の判別値以内でなくても、判別値以内でない距離に関する3次元画像データが極めて少数であれば、これらの少数の3次元画像データを除いた残りの3次元画像データにより平面を定義するようにしてもよい。
そして、平面が定義されれば、該当する探索ブロック内の他の3次元画像データによって表された点と上記数26によって表された平面までの距離を計算して、この距離が所定の判別値以内の点に関する3次元画像データを前記平面内にあるものとして取得する。そして、取得した3次元画像データを再度平面の式である上記数26の左辺のx,y,zに代入し、最小2乗法を用いて未知数a,b,cを計算し、探索ブロック内の3次元画像データによって表された点において計算した未知数a,b,cを用いた平面からの距離が所定の判別値以内の点に関する3次元画像データを取得する。次に、取得した3次元画像データの中から、平面の周辺に対応する3次元画像データを取得して、同取得した3次元画像データを用いて平面の1辺の長さを計算する。そして、この計算した1辺の長さと、前記ステップS502の処理時に校正用物体の特徴として入力した辺の長さとの差を計算して、この計算した差が所定の判別値以内であれば、前記探索ブロック内の3次元画像データは合致する可能性があると判定して、後述する他の平面の定義を行う。一方、前記差が所定の判別値以内でなければ、前記探索ブロック内の3次元画像データは合致しないとして、同3次元画像データを破棄する。この場合、該当探索ブロック内には、校正用物体の3次元形状を表す3次元画像データが存在しないことになる。
前記のようにして可能性があると判定した場合には、該当する探索ブロック内の取得されていない3次元画像データに関しても、他の2つの平面に関する3次元画像データの取得のために、前記のような平面に関する3次元画像データの取得処理を実行する。この他の平面に関しては、前記定義した平面の周辺付近に存在する点を表す3次元画像データで前記定義した平面に含まれない3次元画像データを抽出して前記平面の定義と同じ方法で平面を定義し、同定義した平面に属する点を表す3次元画像データを取得する。そして、取得した3次元画像データの中から、前記と同様に、平面の周辺に対応する3次元画像データを取得して、同取得した3次元画像データを用いて平面の1辺の長さを計算する。そして、この計算した1辺の長さと前記ステップS502の処理時に入力した辺の長さとの差を計算して、この計算した差が所定の判別値以内であれば、前記探索ブロック内の3次元画像データは合致する可能性があると判定して、取得した3つの平面におけるそれぞれ2つの平面の角度を計算する。具体的には平面の式のa,b,cで定まる2つの法線ベクトル(a1,b1,c1)および(a2,b2,c2)を上記数27により大きさ「1」の法線ベクトル(α1,β1,γ1)および(α2,β2,γ2)にし、上記数28の右辺に代入して角度θを計算する。そして、2つの平面の角度3つと校正用物体の特徴によって定まる角度(直方体であるので90度)との差が判別値以内であれば、前記探索ブロック内の3次元画像データは合致すると判定する。これにより、直方体51’を表す3次元画像データが抽出される。
次に、3次元画像処理装置42は、ステップS408にて、前記抽出した直方体51’を表す3次元画像データの中から、基準直方体を表す3次元画像データを抽出する。この基準直方体を表す3次元画像データを抽出する処理は、次のサブステップ1〜3の処理からなる。
サブステップ1:直方体を表す3次元画像データの抽出において定義した3つの測定面A,B、Cにそれぞれに対応する3つの平面の式の連立方程式を解き、測定面A,B,Cの交点を定点座標Tcとして計算する。次に、直方体51’に関する3次元画像データのうち、2つの測定面に共通の3次元画像データを抽出する。すなわち、この2つの測定面に共通の3次元画像データとは、同2つの測定面によって形成される1つの辺を表す3次元画像データである。具体的には、前記3つの平面の式のうち2つの平面の式からなる連立方程式を3組成立させ、同3つの各連立方程式を満足する3次元画像データをそれぞれ抽出する。これら3組の連立方程式は、3つの測定面A,B,Cのうちのいずれか2つの測定面により形成される3つの辺に対応する。したがって、前記3組の各連立方程式を満足する3次元画像データは、前記3つの辺を表す3次元画像データである。そして、これら3つの辺に対応する3組の各3次元画像データのうち、前記計算した定点座標Tcと最も遠い位置にある3次元画像データと同定点座標Tcとの距離を計算する。これにより、3つの辺の長さLcAB,LcBC,LcCAが計算される。これらサブステップ1の各処理を抽出したすべての直方体51’に対して実行する。
サブステップ2:前記ステップS408にて抽出した直方体51’を表す3次元画像データの中から、基準直方体を表す3次元画像データを抽出する。具体的には、直方体51’ごとに計算した前記3つの辺の長さLcAB,LcBC,LcCAと3次元画像処理装置42に記憶した基準直方体情報における3つの辺の長さLcAB,LcBC,LcCAとの各差が所定の判別値内にある直方体51’に関する3次元画像データを抽出する。この場合、2つ以上の直方体51’に関する3次元画像データが抽出された場合には、抽出された2つ以上の各直方体51’を表す3次元画像データの抽出において計算したそれぞれ3つの角度θcAB,θcBC,θcCAと3次元画像処理装置42に記憶した基準直方体情報における3つの角度θmAB,θmBC,θmCAとの各差が所定の判別値内にある直方体51’に関する3次元画像データをさらに抽出する。そして、前記サブステップ2にて計算された定点座標Tcのうち、基準直方体を表す定点座標Tcは基準定点座標Tdcとして記憶される。
サブステップ3:基準直方体として抽出された直方体51’における3つの測定面A,B,Cの各法線ベクトルVa,Vb,Vcが基準直方体情報における法線ベクトルVmA,VmB,VmCのうちのどれに相当するかを特定し、同特定した各法線ベクトルVa,Vb,Vcを法線ベクトルVcA,VcB,VcCとして記憶する。各法線ベクトルVa,Vb,Vcの特定は、直方体51’ごとに計算した前記3つの辺の長さLcAB,LcBC,LcCAと基準直方体情報における3つの辺の長さLcAB,LcBC,LcCAとを用いて行う。これら3つの辺の長さにて各法線ベクトルVa,Vb,Vcの特定ができない場合には、さらに、前記サブステップ2における測定面A,B,Cの各角度を用いて特定する。なお、特定された法線ベクトルVcA,VcB,VcCは、直方体を表す3次元画像データの抽出の際計算された大きさが「1」の法線ベクトルとして記憶される。
次に、3次元画像処理装置42は、ステップS410にて、座標変換関数GCMを計算する。この座標変換関数GCMの計算においては、前記数16におけるベクトルVCmAB,VCmAB,VCmをそれぞれ法線ベクトルVmA,VmB,VmCとし、同数16におけるVCcAB,VCcAB,VCcをそれぞれ法線ベクトルVcA,VcB,VcCとして座標変換関数GCMの座標軸の回転部分MCMを計算する。そして、原点座標の移動部分は座標変換関数CAの原点座標の移動部分であり、座標変換関数GCMは上記数3により表される式である。この座標変換関数GCMは、前記と同様に座標変換関数GdCMとする。そして、ステップS412にて、前記サブステップ2にて記憶された基準定点座標Tdcに前記座標変換関数GdCMを乗算して、CM座標系によって表された基準定点座標Tddを計算する。
次に、3次元画像処理装置42は、ステップS414にて、前記サブステップ3にて特定された基準直方体における3つの測定面A,B,Cの各法線ベクトルVCA,VCB,VCCを多関節ロボットに関する座標系である基準座標系における各法線ベクトルVdA,VdB,VdCに座標変換する。具体的には、法線ベクトルVCA,VCB,VCCに前記座標変換関数計算プログラムの実行により計算した座標変換関数CAの座標軸の回転部分MCAを乗算してアーム座標系における法線ベクトルVaA,VaB,VaCに座標変換する。そして、3次元画像処理装置42は、入力装置43から入力され、記憶されている基準座標系におけるアーム先端座標系の原点の座標および基準座標系の座標軸に対するアーム座標系の各座標軸の向きを表す回転角を用いた前記数3および前記数4による座標変換関数の座標軸の回転部分Mにより法線ベクトルVaA,VaB,VaCを基準座標系における法線ベクトルVdA,VdB,VdCに座標変換する。
次に、3次元画像処理装置42は、ステップS416にて、座標変換関数GDMを計算する。この座標変換関数GDMの計算においては、前記数16におけるベクトルVCmAB,VCmAB,VCmをそれぞれ法線ベクトルVmA,VmB,VmCとし、同数16におけるVCcAB,VCcAB,VCcをそれぞれ法線ベクトルVdA,VdB,VdCとして座標変換関数GDMを計算する。次に、3次元画像処理装置42は、ステップS418にて、DM座標系における基準定点座標TdDMを計算する。具体的には、前記サブステップ3にて記憶された基準定点座標Tdcに前記座標変換関数CAを乗算してアーム座標系における基準定点座標Tdaに座標変換するとともに、同基準定点座標Tdaを入力装置43から入力され記憶されている基準座標系におけるアーム座標系の原点の座標および基準座標系の座標軸に対するアーム座標系の各座標軸の向きを表す回転角を用いた上記数3および上記数4による座標変換関数により基準座標系における基準定点座標Tddに座標変換する。そして、基準定点座標Tddに前記ステップ416にて計算した座標変換関数GDMを乗算してDM座標系における基準定点座標TdDMを計算する。
このステップS418の処理以降、3次元画像処理装置42は、基準直方体である直方体51’以外の直方体51’、具体的には、基準直方体を選定した際の校正用物体支持ベース52の高さにおける基準直方体として指定した直方体51’以外のすべての直方体53’および基準直方体を選定した際の校正用物体支持ベース52の高さ以外の高さにおけるすべての直方体53’に対して前記ステップS420〜ステップS444の各処理と同様の処理を実行することによって、座標補正データRDおよび回転ずれ補正関数RGからなる補正データ群を計算する。そして、前記と同様にして3次元形状測定装置30の位置決め位置を補正しながらワークWKの3次元形状の測定および表示処理を実行する。
さらに、本発明の実施にあたっては、上記第1および第2実施形態に限定されるものではなく、本発明の目的を逸脱しない限りにおいて種々の変形が可能である。以下、変形例について説明する。
上記各実施形態においては、図9に示す補正データ群取得プログラムにおけるステップS438において、3次元形状測定装置30を同3次元形状測定装置30の向きを変化させない状態で次の測定対象である球体セット53(または、次の測定対象である直方体51’)に移動させた場合における回転ずれEDを計算する処理過程を示した。これは、各球体セット53(または、各直方体51’)が、校正治具支持ベース52における略同一平面内に配置されているため3次元形状測定装置30を次の測定対象である球体セット53(または、次の測定対象である直方体51’)に移動させる場合、同3次元形状測定装置30の向きを変化させずに座標値のみを変化させて3次元形状測定装置30を位置決めしているためである。したがって、球体セット53(または、直方体51’)が同一面内に配置されていない場合には、3次元形状測定装置30の向きを変化させて、具体的には、球体セット53(または、直方体51’)に対向するように次の測定対象である球体セット53(または、次の測定対象である直方体51’)に位置決めしなければならない。この場合、前記ステップ438においては、3次元形状測定装置30の向きを変化させた変化量を加味して回転ずれEDを計算する。
前記ステップS402にて記憶した基準回転角の成分gd、すなわち、基準球体セットに3次元形状測定装置30を位置決めした際のアーム座標系の各座標軸の基準座標系の座標軸に対する回転角の成分gdをgd11,gd12,gd13,gd21,gd22,gd23,gd31,gd32,gd33とし、3次元形状測定装置30を次の測定対象である球体セット53(または、次の測定対象である直方体51’)に位置決めさせるためのアーム支持機構20の回転角の回転成分gsをgs11,gs12,gs13,gs21,gs22,gs23,gs31,gs32,gs33とすれば、基準回転角の成分gdを回転角の成分gsに変換する変換係数gdsは下記数29によって表される。
そして、回転ずれEDは、理想とする測定対象位置でのアーム座標系によるベクトル値を実際の測定対象位置でのアーム座標系によるベクトル値にするための座標変換関数と看做せばよいので、理想とする測定対象位置でのアーム座標系によるベクトル値に座標変換関数gdsの逆関数であるgds−1を乗算して基準位置での座標系によるベクトル値にする。そして、このベクトル値に座標変換関数GdCMの座標軸の回転部分MdCMと座標変換関数CAの座標軸の回転部分MCAの逆関数MAC(MCA −1)との乗算値MdCM・MACを乗算し測定機座標系のベクトル値にし、さらに座標変換関数GsMCの座標軸の回転部分MsMCと座標変換関数CAの座標軸の回転部分MCAとの乗算値MCA・MsMCを乗算して測定対象位置でのアーム座標系によるベクトル値にすると考えれば、回転ずれEDは3つの座標変換関数を乗算した(MCA・MsMC・MdCM・MAC・gds−1)となる。また、前記ステップS440における回転ずれ補正関数RGは、回転ずれEDの逆関数((MCA・MsMC・MdCM・MAC・gds−1)−1)となる。
また、上記第1実施形態においては、3つの球体51によって1つの球体セット53を構成したが、3次元における各次元ごとに少なくとも1つの直線が定義できれば、すなわち座標変換関数Gdcmおよび座標変換関数Gscmを定義でき、各球体51によって1つの定点を特定することができれば球体セット53を構成する球体51の数は限定されない。また、各球体51をそれぞれ識別するために、各球体51の半径Rmをそれぞれ異ならせて構成したが、各球体51をそれぞれ識別することができればこれに限定されるものではない。例えば、各球体51の表面の反射率をそれぞれ異ならせて構成してもよい。また、球体51として球を含む球以外の形状の物体を球体51として用い、これらの各球体51の形状によって識別するようにしてもよい。
また、上記第1実施形態においては、各球体セット53における各球体51の半径Rmおよび同各球体間の距離Lmを用いて各球体セットを識別し、第2実施形態においては、各辺の長さLmおよび各測定面間の角度θmによって各直方体51’を識別するように構成したが、各校正用物体をそれぞれ識別することができればこれに限定されるものではない。例えば、校正用物体の各表面の反射率、各校正物体の形状などをそれぞれ異ならせることによって識別するようにしてもよい。
また、上記第1実施形態においては3つの球体51を校正用物体とし、上記第2実施形態においては1つの直方体51’を校正用物体としてが、3次元における各次元ごとに少なくとも1つの直線が定義でき、校正用物体に1つの定点を特定できれば、校正用物体はこれに限定されるものではない。例えば、直方体以外の多面体、底面と水平な断面が楕円の円柱、底面と水平な断面が楕円の円錐または長軸と垂直な断面が楕円の楕円状球体などでもよい。さらに、表面に3つ以上のマークを有する物体、3つ以上の微小な反射率の異なる部分がある物体または3つ以上の頂点が存在する図形が描かれた物体などでもよい。
また、上記第1実施形態および第2実施形態においては、16個の球体セット53および直方体51’を用いて校正用物体を構成したが、これに限定されるものではない。これら校正用物体の数、配置は3次元形状測定装置30を可動させる範囲および3次元形状測定装置30の位置決め精度に応じて適宜設定されるものである。なお、上記第1実施形態および第2実施形態においては、校正用物体支持ベース52の高さを変化させて校正用物体を測定して校正用物体情報を取得したが、補正を厳密に行う必要がない場合には、校正用物体支持ベース52の横方向を、基準座標系のX軸方向と平行に設置し、校正用物体支持ベース52の高さは固定して校正用物体支持ベース52を45度程度の角度として校正用物体情報の取得を行う。そして、補正データ群を取得する作業を行った後、縦の列が同じ列である各校正用物体の定点を高さ方向と水平方向に投影させた定点を想定し、この定点での補正量を高さ方向であるZ軸方向は同じ高さ方向の位置である想定の元になった定点のZ座標値での補正量とし、X軸およびY軸方向は同じ平面位置である想定の元になった定点のX座標値、Y座標値での補正量であるとして、補正量を設定してもよい。図23は、校正用物体支持ベース52を横方向から見た図であり、図中「○」は実際に補正量を求めた定点を示し、「●」は「○」で示した定点から想定した定点を示している。また、校正用物体の配置されている範囲を変えずに、配置されている数を増加させてもよい。これによれば、座標補正データRDおよび回転ずれ補正関数RGが取得される間隔が狭くなり、より高精度な位置決め補正が行える。
また、上記各実施形態においては、多関節ロボットにおけるアーム支持機構20の先端部に3次元形状測定装置30を取り付け、ワークWKの3次元形状を測定するように構成したが、これに限定されるものではない。すなわち、本発明は、多関節ロボットにおけるアーム支持機構20の先端部を正確に位置決めするものであり、3次元形状測定装置30が同先端部近傍に取り付けられていれば同先端部に取り付けられる対象は問わない。例えば、同アーム支持機構20の先端部に物体を挟持するハンドを取り付け、同ハンドに挟持された物体を所定の位置に位置決めさせるように構成してもよいし、同先端部に溶接用の加工部を取り付け、加工材における所定の位置に溶接加工を施すように構成してもよい。これによっても、上記実施形態と同様の効果を期待できる。
また、上記各実施形態においては、多自由度ロボットとして多関節ロボットに本発明を適用して説明したが、複数の自由度を持ち、先端部に3次元形状測定装置30を取り付け可能な支持機構を有する多自由度ロボットであれば、これに限定されるものではない。
WK…ワーク、10…基台、20…アーム支持機構、21…固定ベース、22…回転ベース、23…第1アーム、24…第2アーム、25…第3アーム、26…第4アーム、30…3次元形状測定装置、41…コントローラ、42…3次元画像処理装置、43…入力装置、44…表示装置、50…校正治具、51…球体、51’…直方体、52…校正用物体支持ベース、52c,52d…ワイヤー、53…球体セット、54…支柱、60…3次元測定機、61…測定部、62…コントローラ、63…座標計算処理装置、69…プローブ、70…プローブ。