3次元形状測定装置及び3次元形状測定方法
【課題】 ステージを回転軸周りに回転させながら3次元形状測定を行う場合に、3次元カメラの位置を異ならせても効率の悪化を防ぐ。
【解決手段】 コントローラ30は、第1のカメラ位置に配置した3次元カメラ20の測定により取得したステージ10の定点の座標又はベクトルの成分を記憶しておく。コントローラ30は、第1のカメラ位置と異なる第2のカメラ位置に配置した3次元カメラ20の測定により取得したステージ10の定点の座標又はベクトルの成分と、前記記憶しておいたステージ10の定点の座標又はベクトルの成分とを用いて、第2のカメラ位置で3次元カメラ20により測定した3次元形状を表す3次元データを、第1のカメラ位置で3次元カメラ20により測定した3次元形状を表す3次元データに座標変換するためのカメラ座標変換係数を取得する。
【解決手段】 コントローラ30は、第1のカメラ位置に配置した3次元カメラ20の測定により取得したステージ10の定点の座標又はベクトルの成分を記憶しておく。コントローラ30は、第1のカメラ位置と異なる第2のカメラ位置に配置した3次元カメラ20の測定により取得したステージ10の定点の座標又はベクトルの成分と、前記記憶しておいたステージ10の定点の座標又はベクトルの成分とを用いて、第2のカメラ位置で3次元カメラ20により測定した3次元形状を表す3次元データを、第1のカメラ位置で3次元カメラ20により測定した3次元形状を表す3次元データに座標変換するためのカメラ座標変換係数を取得する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、測定対象物を回転するステージに載置し、ステージを回転させながら3次元形状を測定することで測定対象物の全方向における3次元形状を取得可能な3次元形状測定装置及び3次元形状測定方法に関する。
【背景技術】
【0002】
測定対象物に3次元カメラから光を照射して3次元形状を測定する方法には様々な方法があるが、測定可能な箇所は測定対象物に光が照射される箇所のみである。測定対象物の全方向における3次元形状を測定するためには、3次元カメラ又は測定対象物を移動させて測定対象物を様々な方向から測定する必要があり、その方法にも様々な方法がある。その方法の一つとして、例えば下記特許文献1に示されているように、回転するステージに測定対象物を載置し、ステージを回転させながら3次元形状を測定する方法がある。
【0003】
この方法においては、ステージから見ると、3次元カメラが回転していることになるため、予め設定したステージの回転角度ごとに座標系が異なっており、各回転角度ごとの3次元データを、設定した回転角度における座標系(基準座標系)の3次元データに変換するための座標変換係数を各回転角度ごとに取得して記憶しておき、各回転角度で取得した3次元データをこの座標変換係数で変換して全ての3次元データを1つの座標系におけるデータとしている。そして、下記特許文献1に示される方法では、定点を有する基準物体をステージに載置して各回転角度ごとに基準物体の3次元形状を測定し、3つ以上の定点座標を取得することで前記座標変換係数を計算している。この特許文献1に示された方法は、回転軸がステージの平面の法線方向の1つしかなく、上部や下部が複雑な構造をしている測定対象物については全方向における3次元形状が測定できないことがある。
【0004】
これに対し、下記特許文献2に示された3次元形状測定では、第1回転ステージ上に同第1回転ステージとは回転軸の異なる第2回転ステージを載置し、第2回転ステージ上に測定対象物を載置して、第1及び第2回転ステージを回転させながら、すなわち異なる2つの回転軸周りに測定対象物を回転させて、測定対象物の3次元形状を測定している。これにより、複雑な構造の測定対象物でも全方向における3次元形状を測定可能としている。この特許文献2に示された方法においても、3次元データの座標変換は必要であり、座標変換係数は各回転軸の各回転角度ごとに取得する必要がある。この特許文献2に示された方法では、各回転軸の基準座標系における位置を検出することで、各回転軸の各回転角度ごとの座標変換係数を取得している。また、この方法においても、特許文献1に示されているように、定点を有する基準物体を各回転軸の各回転角度ごとに3次元形状を測定し、3つ以上の定点座標を取得することで各回転軸の各回転角度ごとの座標変換係数を計算することもできる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2002−328014号公報
【特許文献2】特表2000−509505号公報
【発明の概要】
【0006】
ステージの各回転角度ごとの座標変換係数は、ステージに対する3次元カメラの位置が変化しなければ一定であるので、一度算出すればよい。しかし、頻繁にステージに対する3次元カメラの位置を変化させるような場合は、その都度ステージの各回転角度ごとの座標変換係数を取得する必要があり、測定の効率が悪くなる。そして、特許文献2に示されているように、ステージに2つの回転軸が設けられている場合は、測定の効率がさらに悪くなる。
【0007】
本発明は、上記問題に対処するためになされたもので、その目的は、ステージ上に測定対象物を載置してステージを回転させながら測定対象物の3次元形状を測定するとともに、3次元カメラの位置をステージに対して変化させても、効率よく測定対象物の3次元形状を測定できるようにした3次元形状測定装置を提供することにある。なお、下記本発明の各構成要件の記載においては、本発明の理解を容易にするために、実施形態の対応箇所の符号を括弧内に記載しているが、本発明の各構成要件は、実施形態の符号によって示された対応箇所の構成に限定解釈されるべきものではない。
【0008】
上記目的を達成するために、本発明の特徴は、回転軸周りに回転可能であって座標変換係数を計算するための定点又はベクトルを定義可能なステージ(10)と、ステージ上に載置した物体の3次元形状を測定する3次元カメラ(20)と、3次元カメラで測定した3次元形状を表す3次元データを処理する処理装置(30,40)とからなり、処理装置に、第1のカメラ位置に配置した3次元カメラの測定により取得したステージの定点又はベクトルを用いて、ステージを基準位置から回転させた状態で3次元カメラにより測定した3次元形状を表す3次元データを、ステージが基準位置にある状態で3次元カメラにより測定した3次元形状を表す基準座標系の3次元データに変換するための回転座標変換係数を複数の回転角度ごとに取得して記憶しておく回転座標変換係数取得手段(図4A及び図4Bの座標変換係数設定プログラム)と、ステージを基準位置から回転させた状態で3次元カメラにより測定した測定対象物の3次元形状を表す3次元データを、回転座標変換係数を用いて、基準座標系の3次元データに変換する回転座標変換手段(図8のステップS402〜S412,S418〜S422)とを設けて、ステージを回転させることによって異なる視点から測定した測定対象物の3次元データを、基準座標系の3次元データに合成する3次元形状測定装置において、処理装置に、さらに、第1のカメラ位置に配置した3次元カメラの測定により取得したステージの定点の座標又はベクトルの成分を記憶しておく定点・ベクトル記憶手段(図4AのステップS106)と、第1のカメラ位置と異なる第2のカメラ位置に配置した3次元カメラの測定により取得したステージの定点の座標又はベクトルの成分と、定点・ベクトル記憶手段によって記憶されているステージの定点の座標又はベクトルの成分とを用いて、第2のカメラ位置で3次元カメラにより測定した3次元形状を表す3次元データを、第1のカメラ位置で3次元カメラにより測定した3次元形状を表す3次元データに座標変換するためのカメラ座標変換係数を取得するカメラ座標変換係数取得手段(図7のステップS310〜S314)と、第2のカメラ位置で3次元カメラにより測定した測定対象物の3次元形状を表す3次元データを、カメラ座標変換係数を用いて、第1のカメラ位置で3次元カメラにより測定した測定対象物の3次元形状を表す3次元データに変換するカメラ座標変換手段(図8のステップS416)とを設けたことにある。
【0009】
この場合、定点・ベクトル記憶手段は、回転座標変換係数取得手段による回転座標変換係数の取得に連動してステージの定点の座標又はベクトルの成分を記憶するとよい。
【0010】
上記のように構成した本発明においては、カメラ座標変換手段が、第2のカメラ位置で3次元カメラにより測定した測定対象物の3次元形状を表す3次元データを、カメラ座標変換係数取得手段により取得されたカメラ座標変換係数を用いて、第1のカメラ位置で3次元カメラにより測定した測定対象物の3次元形状を表す3次元データに変換する。そして、このカメラ座標変換手段によって変換された3次元データを、回転座標変換係数を用いた回転座標変換手段により基準座標系の3次元データに変換すれば、第2のカメラ位置でステージを回転させながら測定して測定対象物の3次元データを基準座標系の3次元データに変換できる。したがって、ステージに対する3次元カメラの位置を変化させても、ステージに定義した定点の座標又はベクトルの成分を取得するための測定を1回行うのみで、回転角度ごとの座標変換係数を得た場合と同様に3次元形状測定が可能であり、測定の効率が良好に保たれる。
【0011】
また、本発明の他の特徴は、ステージは、2つ以上の回転軸周りに回転可能であり、回転座標変換係数は、2つ以上の回転軸ごとに取得されて記憶されていることにある。これによれば、ステージが2つ以上の回転軸周りに回転可能である場合でも、ステージに定義した定点の座標又はベクトルの成分を取得するための測定を1回行えばよいので、各回転軸ごとに各回転角度ごとの座標変換係数を取得する必要がなくなる分、さらに効率的である。
【0012】
また、本発明の他の特徴は、ステージに定義される定点又はベクトルは、ステージに対して一定の位置に定点又は一定の方向にベクトルを定義可能な物体をステージに装着することで得られることにある。これによれば、例えばステージに装着孔又はネジ孔などを作成し、ステージに定義した定点の座標又はベクトルの成分を取得するための測定を行うときだけ、ステージに定点又はベクトルを定義可能な物体を取り付ければよいので、ステージに測定対象物を載置する際に邪魔にならない。
【0013】
また、本発明の他の特徴は、ステージに定義される定点又はベクトルは、ステージの形状における頂点又は平面の法線ベクトルであることにある。これによれば、ステージに定義される定点座標又はベクトルの成分を取得する際、ステージをそのまま測定すればよいので、さらに効率がよい。
【0014】
また、本発明の他の特徴は、ステージに定義される定点又はベクトルは、ステージに描かれた模様から定まる点又は直線部分であることにある。これによっても、ステージに定義される定点座標又はベクトルの成分を取得する際、ステージをそのまま測定すればよいので効率がよい。
【0015】
さらに、本発明の実施にあたっては、本発明は、3次元形状測定装置の発明に限定されることなく、3次元形状測定方法の発明としても実施し得るものである。
【図面の簡単な説明】
【0016】
【図1】本発明が適用された3次元形状測定システムの全体概略図である。
【図2】ステージに真球をセットするときの様子をステージの断面方向から見た図である。
【図3】各回転軸の各回転角度ごとの座標変換係数を取得するときの様子を示す図である。
【図4A】コントローラにより実行される座標変換係数設定プログラムの前半部分を示すフローチャートである。
【図4B】コントローラにより実行される座標変換係数設定プログラムの後半部分を示すフローチャートである。
【図5】図4Aの基準定点座標取得ルーチンの詳細を示すフローチャートである。
【図6】図4A、図4B及び図7の座標変換係数取得ルーチンの詳細を示すフローチャートである。
【図7】コントローラにより実行される対象物測定プログラムを示すフローチャートである。
【図8】データ処理装置により実行される画像データ生成プログラムを示すフローチャートである。
【図9】ステージに対する3次元カメラの位置を変えたときの座標系の関係を示す図である。
【図10】ステージに定点やベクトルを定義するときの方法を示す図である。
【図11】各回転軸の位置を検出するときの様子を示す図である。
【発明を実施するための形態】
【0017】
a.ハード構成
以下、本発明の一実施形態について図面を用いて説明する。図1は、本発明の一実施形態に係る3次元形状測定システムの全体概略図である。3次元形状測定システムは、ステージ10に載置された測定対象物OBの3次元形状を測定する3次元カメラ20を有する。
【0018】
ステージ10は、円盤状に形成されて、測定対象物OBを載置するための平らな上面を有する。ステージ10の上面の外周近傍の3箇所には、真球をセットするための3つ穴10a,10b,10cが設けられている。測定対象物OBを測定するときは、これらの穴10a,10b,10cには何もセットされないが、後述する座標変換係数を取得するための測定の際には、これらの穴10a,10b,10cには径の異なる真球11a,11b,11cがセットされる。真球11a,11b,11cには円柱状の棒が取り付けられており、円柱状の棒を穴10a,10b,10cに差し込むことにより、真球11a,11b,11cがステージ10の上面上にセットされる。図2は、この棒付きの真球11a(11b,11c)を穴10a(10b,10c)に差し込む様子を断面方向から見た図である。穴10a,10b,10cの径はそれぞれ少量ずつ異なっており、また真球11a,11b,11cに付けられた棒の径も穴10a,10b,10cに合うようにそれぞれ少量ずつ異なっている。したがって、ステージ10の定まった位置に定まった径の真球11a,11b,11cがセットされるようになっている。なお、穴10a,10b,10c及び真球11a,11b,11cに設けた棒にはネジが切られていて、真球11a,11b,11cに設けた棒が穴10a,10b,10cにねじ込まれてセットされるようにしてもよい。
【0019】
ステージ10は、プレート12,13,14,15からなるステージ支持装置により支持され、このステージ支持装置にはモータ16,17,18が組み付けられている。プレート12はプレート13を回転軸A周りに回転可能に支持しており、モータ16は、その回転により、プレート13,14,15及びステージ10を一体的に回転軸A周りに基準位置(回転角度0度)から所定範囲だけ正負に回転させる。プレート14はプレート15を回転軸B周りに回転可能に支持しており、モータ17は、その回転により、プレート15及びステージ10を一体的に回転軸B周りに基準位置(回転角度0度)から所定範囲だけ正負に回転させる。プレート15はモータ18を固定支持しており、モータ18は、その回転により、ステージ10を回転軸C周りに基準位置(回転角度0)から正負に自由な角度だけ回転させる。モータ16,17,18内には回転角センサが内蔵されており、回転角センサはステージ10の各回転軸A,B,C周りの回転角を出力する。なお、回転軸A,B,Cは互いに直交している。
【0020】
3次元カメラ20は、移動可能な支持装置21に、変位可能かつ回転可能に組み付けられて固定されている。そして、3次元カメラ20は、測定対象物OB及び真球11a,11b,11cの3次元表面形状を測定して、測定結果を表す3次元データを出力する。この3次元カメラ20としては、測定対象物OB及び真球11a,11b,11cの3次元表面形状を測定するとともに同測定した3次元表面形状を表す3次元データを出力するものであれば、いかなる3次元カメラをも利用できる。本実施形態においては、レーザ光を用いて3角測量法に従って物体の3次元表面形状を測定するものを簡単に紹介しておく。
【0021】
この3次元カメラ20においては、レーザ光源から物体に向けて出射されるレーザ光の進行方向にほぼ垂直な仮想平面を想定するとともに、同仮想平面上にて互いに直交するX軸方向およびY軸方向に沿って分割した多数の微小エリアを想定する。そして、3次元カメラ20は、前記多数の微小エリアにレーザ光を順次照射し、物体からの散乱光によって前記微小エリアが規定する物体表面までの距離をZ軸方向距離として順次検出して、物体の表面を微小エリアずつに分割した各分割エリア位置を表すX,Y,Z座標に関する情報を得て、3次元カメラ20に面した物体表面の形状を測定するものである。
【0022】
したがって、この3次元カメラは、出射レーザ光の向きをX軸方向に変化させるX軸方向走査器と、出射レーザ光の向きをY軸方向に変化させるY軸方向走査器と、物体表面にて反射された反射レーザ光を受光して物体表面までの距離を検出する距離検出器とを備えている。X軸方向走査器およびY軸方向走査器としては、レーザ光源からの出射レーザ光の光路をX軸方向およびY軸方向に独立に変化させ得る機構であればよく、例えばレーザ光源自体をX軸方向およびY軸方向の軸線回りに電動モータによって回転させたり、出射レーザ光の光路に設けられてその方向を変更するガルバノミラーをX軸方向およびY軸方向の軸線回りに電動モータによって回転させる機構を利用できる。距離検出器としては、前記出射レーザ光の光路に追従して回転し、物体表面にて反射(散乱)された反射レーザ光(散乱光)を集光する結像レンズおよび同集光したレーザ光を受光するCCDなどの複数の受光素子を一列に配置させたラインセンサからなり、ラインセンサによる反射レーザ光の受光位置によって物体表面までの距離を検出する機構を利用できる。
【0023】
したがって、このような3次元カメラ20は、物体の表面を微小エリアずつに分割した各分割エリア位置を表すX,Y,Z座標に関する情報として、X軸方向走査器による出射レーザ光の基準方向に対するX軸方向への傾きθx、Y軸方向走査器による出射レーザ光の基準方向に対するY軸方向への傾きθy、および距離検出器による物体表面までの距離Lzとを、前記仮想したX軸方向およびY軸方向に沿って分割した多数の微小エリアごとに検出する。より具体的には、X軸およびY軸方向への傾きθx,θyは、電動モータの基準位置からの回転角である。また、物体表面までの距離Lzは、ラインセンサにおける反射レーザ光の受光位置である。そして、これら傾きθx,θy及び距離Lzは、X,Y,Z座標値に変換されて出力される。なお、X,Y,Z座標値への変換は、3次元カメラ20からの出力を受けるコントローラ30及びデータ処理装置40で行われるようにしたり、3次元カメラ20とコントローラ30及びデータ処理装置40との間に変換器を設けて行われるようにしてもよい。
【0024】
この3次元カメラ20には、コントローラ30およびデータ処理装置40が接続されている。コントローラ30は、CPU、ROM、RAM、及びハードディスクなどの大容量の不揮発性メモリを有するコンピュータ装置によって構成され、キーボードからなる入力装置31からの指示に従って、3次元カメラ20、モータ16,17,18及びデータ処理装置40の作動を制御する。具体的には、コントローラ30は、作業者による入力装置からの入力又は内蔵するプログラムの実行により、3次元カメラ20に測定を指令し、ステージ10を回転するモータ16,17,18を指定した角度だけ回転させる。また、モータ16,17,18からは内蔵の回転角センサからステージ10の各回転軸A,B,C周りの回転角が入力されているとともに、データ処理装置40に回転角度データを出力する。さらに、コントローラ30は、プログラム処理により、座標変換係数を計算する。
【0025】
データ処理装置40も、CPU、ROM、RAM、及びハードディスクなどの大容量の不揮発性メモリを有するコンピュータ装置によって構成され、コントローラ30からの指令により、3次元カメラ20からの3次元データの座標変換を含む処理を実行して3次元画像データを作成し、この3次元画像データを用いて表示装置41に3次元画像を表示する。また、データ処理装置40は、座標変換係数、定点座標などの測定対象物OBの3次元形状の計算に必要なデータをRAM,不揮発性メモリなどに記憶する。
【0026】
b.座標変換係数の設定
このように構成された3次元形状測定システムにおいて、作業者は、初回のみ各回転軸A,B,C周りにおける回転角度ごとの座標変換係数を取得し、取得した座標変換係数をデータ処理装置40に供給するための作業を行う。
【0027】
まず、作業者は、図3に示すように、ステージ10の外周近傍の3つの穴10a,10b,10cに、棒付き真球11a,11b,11cを組み付ける。これらの真球11a,11b,11cの半径はそれぞれ異なる。真球11a,11b,11cの半径を異ならせる理由は、3次元カメラ20による3次元形状測定によって取得された3次元データから、指定した真球11a,11b,11cの3次元データを抽出するのを容易にするためである。また、作業者は、3次元カメラ20を支持装置21に支持させて、3次元カメラ20に真球11a,11b,11cの3次元形状を測定させる。
【0028】
次に、作業者は、入力装置31を操作して、コントローラ30に図4A及び図4Bの座標変換係数設定プログラムを実行させる。この座標変換係数設定プログラムの実行は図4AのステップS100にて開始され、コントローラ30は、ステップS102にて、ステージ10の回転軸A,B,C周りの回転角度が基準回転角度(すなわち0度)になるように、モータ16,17,18を回転制御する。以下、この状態をステージ10の基準位置といい、このステージ10が基準位置にある状態で図1及び図3に示す位置にある3次元カメラ20で取得した3次元データを基準座標系による3次元データという。次に、コントローラ30は、ステップS104にて検出対象物体の特徴の入力処理を実行する。この入力処理においては、表示装置31に検出対象物体の特徴を入力するように表示して、作業者に検出対象物体の特徴の入力を促す。本実施形態の場合には、真球11a,11b,11cが球であること、及び真球11a,11b,11cの半径の入力を促す。作業者が入力装置31を操作して前記特徴を入力すると、コントローラ30はこの特徴を一時記憶して、ステップS106の基準定点座標取得ルーチンを実行する。この基準定点座標取得ルーチンは、基準位置にあるステージ10上に設定した3つの定点の座標を取得する処理であり、本実施形態では前記ステージ10に組み付けた真球11a,11b,11cの中心点のX,Y,Z座標値を取得する処理である。なお、これらのX,Y,Z座標値は、基準座標系による座標値である。
【0029】
この基準定点座標取得ルーチンの詳細は図5に示されており、コントローラ30は、この基準定点座標取得ルーチンの実行をステップS200にて開始する。この基準定点座標取得ルーチンの実行開始後、コントローラ30は、ステップS202にて、3次元カメラ20にステージ10上の真球11a,11b,11cを含む3次元形状の測定を指示し、その後に、3次元カメラ20から測定結果である3次元データを入力して一時的に記憶する。次に、コントローラ30は、ステップS204にて、前記入力した全ての3次元データの中から、真球11a,11b,11cごとに、各真球11a、11b、11cの表面の3次元形状を表す3次元データをそれぞれ抽出する。この種の3次元データの抽出技術は従来から知られた技術(例えば、特開2004−333371号公報、特開2005−249402号公報参照)であるが、簡単に説明しておく。
【0030】
<3次元データの抽出>
前記入力された検出対象物体の特徴(球体及び半径)を表すデータを用いて、単位ブロックおよび探索ブロックのサイズ設定処理を実行する。単位ブロックは、検出対象物体の存在位置を特定するために探索ブロックを移動させる最小のブロックであり、例えば立方体に形成されている。また、この単位ブロックのサイズは、検出対象物体の一部が存在することを確認可能である程度に小さく設定される。探索ブロックは、検出対象物体をその内部に包含する位置を特定するために利用されるもので、本実施形態では立方体に形成されている。この探索ブロックのサイズは、検出対象物体の全てを包含できるとともに、なるべく小さく設定される。ただし、この検出対象物体を包含できるとは、検出対象物体の一部でも含む単位ブロックの全てを含むことを意味する。
【0031】
次に、探索領域のブロック化処理を実行する。この探索領域のブロック化処理は、測定対象領域内で検出対象物体の含まれる可能性のある領域を単位ブロックで分割する処理である。基本的には、測定対象空間内のうち3次元データが存在する空間を単位ブロックで立体的に分割する。分割は、X,Y,Z座標の各座標軸に沿って単位ブロックを並べていく方法で行う。そして、前記分割した各単位ブロックごとに3次元データが所定個数以上あるかを調べて、3次元データが所定個数以上ある単位ブロックを抽出する。次に、検出対象物体を含む可能性のある探索ブロック位置の検出処理を行う。この探索ブロック位置の検出においては、前記単位ブロックに分割した領域にて、前記設定した探索ブロックを単位ブロックを単位として、X軸、Y軸およびZ軸方向に順次移動させる。そして、各移動ごとに、移動後の探索ブロック内に含まれるとともに前記抽出された単位ブロックの個数を計算する。前記単位ブロックの数が所定の範囲内であれば、該当する探索ブロック位置であるとして、同位置が検出される。なお、検出対象物体は球体であるので、3次元カメラ20と対向する側に位置して3次元データが得られる箇所と、3次元カメラ20と対向しない側に位置して3次元データが得られない箇所の割合は、ほぼ同じであるので、球体の半径が特定されれば、探索ブロック内に含まれる単位ブロックの数は設定される。これにより、検出対象物体より半径の小さな球体を、単位ブロックの数が所定範囲外であるとして、除外することができる。
【0032】
次に、前記検出した位置の探索ブロック内に含まれる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(球の半径)と前記特徴として入力した半径との差が所定の判別値以内であり、かつ各3次元データの球体中心からの距離の偏差が所定の判別値以内であれば、前記探索ブロック内の3次元データは合致するとして、同3次元データを抽出する。一方、前記差または偏差が所定の判別値以内でなければ、前記探索ブロック内の3次元データは合致しないとして、同3次元データを抽出しない。これにより、真球11a,11b,11cごとに、真球11a,11b,11cに関する3次元データがそれぞれ抽出される。
【0033】
(数1)
(x−a) 2+(y−b) 2+(z−c)2−d2=0
【0034】
ここで、ふたたび、図5の基準定点座標取得ルーチンの説明に戻る。前記ステップS204の処理後、コントローラ30は、ステップS206にて、真球11a,11b,11cごとに真球11a,11b,11cの中心座標、すなわちステージ10上に設けた3つの定点のX,Y,Z座標値を計算する。具体的には、真球11a,11b,11cごとに、前記ステップS204の処理によって抽出した各真球11a,11b,11cに関する3次元データ(X,Y,Z座標値)を前記球体を表す式である下記数1のx,y,zにそれぞれ代入するとともに、値dとして前記ステップS104で入力した半径を採用して、最小2乗法を用いて未知数a,b,cをそれぞれ計算する。そして、前記真球11a,11b,11cごとに計算した未知数a,b,cが、それぞれ真球11a,11b,11cの中心座標すなわち3つ定点のX,Y,Z座標値(Xa0,Ya0,Za0),(Xb0,Yb0,Zb0),(Xc0,Yc0,Zc0)である。
【0035】
前記ステップS206の処理後、コントローラ30は、ステップS208にて、ハードディスクなどの不揮発性メモリに、前記3つ定点のX,Y,Z座標値(Xa0,Ya0,Za0),(Xb0,Yb0,Zb0),(Xc0,Yc0,Zc0)を、ステージ10が基準位置にあるときの3つの定点の座標すなわち基準定点座標(基準座標系における定点の座標)として記憶しておく。そして、コントローラ30は、ステップS210にて基準定点座標取得ルーチンの実行を終了して、図4AのステップS108に戻る。
【0036】
コントローラ30は、ステップS108にて、変数nを「0」に初期設定して、ステップS110〜S116からなる循環処理を実行する。変数nは、ステージ10の回転角度を、前記循環処理ごとに所定角度Q(例えば、1度)ずつ順次変化させるための変数である。ステップS110〜S116からなる循環処理においては、コントローラ30は、ステップS110にて変数nに「1」を加算し、ステップS112にてステージ10の回転軸A周りの回転角度n・Qが予め決められた上限角度Amaxよりも大きいかを判定する。回転角度n・Qが上限角度Amaxよりも大きくなければ、コントローラ30は、ステップS112にて「No」と判定して、ステップS114にて、モータ16を制御して、ステージ10を回転軸A周りの正方向に回転させて、ステージ10の回転軸A周りの回転角度をn・Q度に設定する。そして、コントローラ30は、ステップS116にて座標変換係数取得ルーチンを実行する。
【0037】
この座標変換係数取得ルーチンは図6に詳細に示されており、コントローラ30は、ステップS250にて座標変換係数取得ルーチンの実行を開始する。この座標変換係数取得ルーチンの実行開始後、コントローラ30は、上述した図5のステップS202〜206と同様なステップS252〜S256の処理を実行して、真球11a,11b,11cの中心座標すなわち3つ定点のX,Y,Z座標値(Xa1,Ya1,Za1),(Xb1,Yb1,Zb1),(Xc1,Yc1,Zc1)を計算する。ただし、この場合、ステージ10は回転軸A周りに基準位置からn・Q度だけ回転した位置にあり、この計算された3つ定点のX,Y,Z座標値(Xa1,Ya1,Za1),(Xb1,Yb1,Zb1),(Xc1,Yc1,Zc1)は、前記ステージ10が基準位置にある状態で3次元カメラ20によって測定した3次元データを用いて計算した3つの定点のX,Y,Z座標値(Xa0,Ya0,Za0),(Xb0,Yb0,Zb0),(Xc0,Yc0,Zc0)とは異なる。
【0038】
前記ステップS252〜S256の処理後、コントローラ30は、ステップS258にて、ステージ10を回転軸A周りに基準位置からn・Q度だけ回転した状態で3次元カメラ20によって測定した3次元データの座標値を、ステージ10が基準位置にある状態で3次元カメラ20によって測定した3次元データの座標値(基準座標系の座標値)に変換するための座標変換係数を計算する。この座標変換係数の計算は、前記計算したステージ10を回転軸A周りに基準位置からn・Q度だけ回転させた状態における3つの定点のX,Y,Z座標値(Xa1,Ya1,Za1),(Xb1,Yb1,Zb1),(Xc1,Yc1,Zc1)を、ステージ10が基準位置にある状態における3つの定点のX,Y,Z座標値(Xa0,Ya0,Za0),(Xb0,Yb0,Zb0),(Xc0,Yc0,Zc0)に変換させるための座標変換係数を計算することを意味するもので、両X,Y,Z座標値(Xa1,Ya1,Za1),(Xb1,Yb1,Zb1),(Xc1,Yc1,Zc1),(Xa0,Ya0,Za0),(Xb0,Yb0,Zb0),(Xc0,Yc0,Zc0)を用いて行われる。また、この種の座標変換係数の計算は従来から知られている技術(例えば、特開2005−352630号公報、特開2005−249402号公報参照)であるが、簡単に説明しておく。
【0039】
<座標変換係数の計算>
まず、ステージ10を回転軸A周りに基準位置からn・Q度だけ回転させた状態において得た3次元データは第1座標系の3次元データであり、基準座標系を第2座標系であると仮定する。したがって、第1座標系の座標軸をX軸、Y軸およびZ軸回りにそれぞれ所望の角度だけ回転させるとともに、同第1座標系の原点をX軸方向、Y軸方向およびZ軸方向にそれぞれa,b,cだけ移動させれば、第2座標系の座標軸と同じになるはずである。そこで、第1座標系における一点の座標値を(x’,y’,z’)とし、第2座標系における同一点の座標値を(x,y,z)とすると、下記数2が成立するとともに、同数2中の行列Mは下記数3によって表される。そして、前記座標変換係数の計算は、前記数2および数3中の行列値g11,g12,g13,g21,g22,g23,g31,g32,g33および行列値a,b,cを計算することを意味する。
【0040】
【数2】
【0041】
【数3】
【0042】
ここで、第1座標系における3つの定点のX,Y,Z座標値(Xa1,Ya1,Za1),(Xb1,Yb1,Zb1),(Xc1,Yc1,Zc1)及び第2座標系の3つの定点のX,Y,Z座標値(Xa0,Ya0,Za0),(Xb0,Yb0,Zb0),(Xc0,Yc0,Zc0)を前記数2に代入すれば、下記数4〜6の関係が成立する。
【0043】
【数4】
【0044】
【数5】
【0045】
【数6】
【0046】
前記数4を変形すると、下記数7の連立方程式が成立する。
【0047】
【数7】
【0048】
また、前記3つの定点を含む平面の法線ベクトルの第1座標系における成分を(α’,β’,γ’)とし、第2座標系における同平面の法線ベクトルを(α,β,γ)とすると、2つの法線ベクトルの大きさが同じであれば一般的には次の数8が成立する。なお、同数8中の行列Mは、前記数3によって表される。
【0049】
【数8】
【0050】
第2座標系および第1座標系におけるすべての定点を含む平面の法線ベクトルを、真球11bの中心(第2定点)から真球11aの中心(第1定点)に向かうベクトルと、真球11cの中心(定点)から真球11bの中心(第2定点)に向かうベクトルとの外積により成立するベクトルとすると、第2座標系における法線ベクトル及び第1座標系における法線ベクトルは下記数9によって表される。
【0051】
【数9】
【0052】
前記数9を前記数8に当てはめると、下記数10が成立する。
【0053】
【数10】
【0054】
前記数10の1番目の式を前記数7に加えれば、下記数11の連立方程式となる。
【0055】
【数11】
【0056】
この数11の連立方程式を解くことにより、行列値g11,g12,g13を計算することができる。また、前記数5および数6に関しても、前記数7の連立方程式のように変形し、数10の2番目の式または3番目の式を加えれば、数11の連立方程式と同様の連立方程式ができるので、これを解くことで、行列値g21,g22,g23および行列値g31,g32,g33を計算できる。そして、これらの計算した行列値を前記数4〜6に代入すれば、行列値a,b,cを計算できる。これにより、第1座標系すなわちステージ10が回転軸A周りに基準位置からn・Q度だけ回転した状態の3次元データの座標系の座標値(x’,y’,z’)を、第2座標系すなわち基準座標系における座標値(x,y,z)に変換するための座標変換係数が計算される。
【0057】
ここで、ふたたび、図6の座標変換係数取得ルーチンの説明に戻る。前記ステップS258による座標変換係数である行列値g11,g12,g13,g21,g22,g23,g31,g32,g33及び行列値a,b,cの計算後、コントローラ30は、ステップS260にて、前記計算した座標変換係数を、回転軸A周りの回転角度がn・Q度であることと共に、ハードディスクなどの不揮発性メモリに記憶する。そして、コントローラ30は、ステップS262にて座標変換係数取得ルーチンの実行を終了して、図4AのステップS110に戻る。
【0058】
コントローラ30は、ステップS110にて変数nに「1」を加算し、ステージ10の回転軸A周りの回転角度n・Qが予め決められた上限角度Amaxよりも大きくならない限り、ステップS112にて「No」と判定して前述したステップS114,S116の処理を実行する。これにより、ステージ10を回転軸A周りの正方向にQ度ずつ回転させながら、前述した座標変換係数を計算して不揮発性メモリに記憶していく。その結果、不揮発性メモリには、ステージ10を基準位置からほぼ上限角度Amaxまで回転軸A周りにQ度ずつ正方向に回転させた状態における座標変換係数がステージ10の回転角度n・Q度にそれぞれ対応させて記憶される。本実施形態では、Q度を1度に設定したので、1度ごとの座標変換係数が不揮発性メモリに記憶されることになる。なお、このQ度を1度以外の値に設定すれば、1度以外の予め決めたQ度ごとの座標変換係数が不揮発性メモリに記憶される。この点に関しては、後述する他の座標変換係数についても同様である。そして、回転軸A周りのステージ10の回転角度n・Qが上限角度Amaxより大きくなると、コントローラ30は、ステップS112にて「Yes」と判定して、ステップS118に進む。
【0059】
コントローラ30は、ステップS118にて、変数nを「0」に初期設定して、ステップS120〜S126からなる循環処理を実行する。このステップS120〜S126からなる循環処理は、ステップS122,S124の処理が前述したステップS112,S114の処理と若干異なる以外、前述したステップS110〜S116からなる処理と同じである。ステップS122においては、ステージ10の回転軸A周りの回転角度−n・Qが予め決められた下限角度−Amaxよりも小さいかが判定される。ステップS124においては、モータ16が制御されて、ステージ10が回転軸A周りの負方向に回転されて、ステージ10の回転軸A周りの回転角度が−n・Q度に設定される。その結果、このステップS120〜S126の循環処理により、ステージ10の回転軸A周りの回転角度が基準位置(0度)からほぼ下限角度−Amaxまでにわたって、Q度ごとに、3次元カメラ20による3次元データを基準座標系の3次元データに変換するための座標変換係数が計算されて、ステージ10の回転軸A周りの回転角度−n・Qに対応させて不揮発性メモリに記憶される。そして、回転軸A周りのステージ10の回転角度−n・Qが下限角度−Amaxより小さくなると、コントローラ30は、ステップS122にて「Yes」と判定して、ステップS128に進む。
【0060】
コントローラ30は、ステップS128にて、ステージ10の回転軸A周りの回転角度が基準回転角度(すなわち0度)になるように、モータ16を回転制御する。この場合、ステージ10の回転軸B及び回転軸C周りの回転角度は前述したステップS102の処理によって基準回転角度(すなわち0度)に既に設定されているので、ステージ10は基準位置に戻されることになる。次に、コントローラ30は、ステップS130にて変数nを「0」に初期設定して、ステップS132〜S148からなる処理を実行する。このステップS132〜S148からなる処理は、ステップS134,S136,S144,S146の処理が前述したステップS112,S114,S122,S124の処理と若干異なる以外、前述したステップS110〜S126からなる処理と同じである。
【0061】
ステップS134においては、ステージ10の回転軸B周りの回転角度n・Qが予め決められた上限角度Bmaxよりも大きいかが判定される。ステップS136においては、モータ17が制御されて、ステージ10が回転軸B周りの正方向に回転されて、ステージ10の回転軸B周りの回転角度がn・Q度に設定される。ステップS144においては、ステージ10の回転軸B周りの回転角度−n・Qが予め決められた下限角度−Bmaxよりも小さいかが判定される。ステップS146においては、モータ16が制御されて、ステージ10が回転軸B周りの負方向に回転されて、ステージ10の回転軸B周りの回転角度が−n・Q度に設定される。その結果、このステップS132〜S148の処理により、ステージ10の回転軸B周りの回転角度がほぼ下限角度−Bmaxからほぼ上限角度Bmaxまでにわたって、Q度ごとに、3次元カメラ20による3次元データを基準座標系の3次元データに変換するための座標変換係数が計算されて、ステージ10の回転軸B周りの回転角度n・Q,−n・Qに対応させて不揮発性メモリに記憶される。そして、回転軸B周りのステージ10の回転角度−n・Qが下限角度−Bmaxより小さくなると、コントローラ30は、ステップS144にて「Yes」と判定して、図4BのステップS150に進む。
【0062】
コントローラ30は、ステップS150にて、ステージ10の回転軸B周りの回転角度が基準回転角度(すなわち0度)になるように、モータ17を回転制御する。この場合、ステージ10の回転軸A及び回転軸C周りの回転角度は前述したステップS128,S102の処理によって基準回転角度(すなわち0度)に既に設定されているので、ステージ10は基準位置に戻されることになる。次に、コントローラ30は、ステップS150にて変数nを「0」に初期設定して、ステップS154〜S160からなる循環処理を実行する。このステップS154〜S160からなる循環処理は、ステップS156,S158の処理が前述したステップS112,S114(又はステップS134,S136)の処理と若干異なる以外、前述したステップS110〜S116(又はステップS132〜S138)からなる循環処理と同じである。
【0063】
ステップS156においては、ステージ10の回転軸C周りの回転角度n・Qが予め決められた所定角度360度よりも大きいかが判定される。ステップS158においては、モータ18が制御されて、ステージ10が回転軸C周りの正方向に回転されて、ステージ10の回転軸C周りの回転角度がn・Q度に設定される。その結果、このステップS154〜S160からなる循環処理により、ステージ10の回転軸C周りの回転角度が基準角度(0度)からほぼ360度までにわたって、Q度ごとに、3次元カメラ20による3次元データを基準座標系の3次元データに変換するための座標変換係数が計算されて、ステージ10の回転軸C周りの回転角度n・Qに対応させて不揮発性メモリに記憶される。そして、回転軸C周りのステージ10の回転角度n・Qが所定角度360度より大きくなると、コントローラ30は、ステップS156にて「Yes」と判定して、ステップS162に進む。ステップS162においては、前記ステップS116,S126,S138,S148,S160の座標変換係数取得ルーチンの処理により記憶した回転軸A,B,Cに関する各座標変換係数(行列値g11,g12,g13,g21,g22,g23,g31,g32,g33及び行列値a,b,c)をデータ処理装置40に出力する。前記ステップS162の処理後、コントローラ30はステップS164にて座標変換係数設定プログラムの実行を終了する。
【0064】
前記データ処理装置40に出力された回転軸A,B,Cに関する各座標変換係数は、図示しないプログラム処理により、データ処理装置40のハードディスクなどの不揮発性メモリに記憶される。ここで、データ処理装置40に記憶された回転軸A,B,Cに関する座標変換係数について整理しておく。回転軸Aに関する座標変換係数は、ステージ10を回転軸A周りに下限角度−Amaxから上限角度Amaxまで微小な所定角度Q(例えば、1度)ずつ回転させてステージ10上の物体を3次元カメラ20で測定したとき、各回転位置ごとの3次元カメラ20による測定結果である3次元データを、ステージ10の回転軸A周りの回転角度が基準角度(例えば、0度)にある状態(ステージ10が基準位置にある状態)で3次元カメラ20によって測定したステージ10上の物体の3次元データに変換するための行列値g11,g12,g13,g21,g22,g23,g31,g32,g33からなる行列M及び行列値a,b,cである。ここで、回転軸B、C周りの回転に関する座標変換係数と区別するために、以降、この回転軸A周りの回転に関する座標変換係数に関し、前記行列Mを行列MAとするとともに、前記行列値a,b,cを行列値aA,bA,cAとする。
【0065】
また、回転軸Bに関する座標変換係数は、ステージ10を回転軸B周りに下限角度−Bmaxから上限角度Bmaxまで微小な所定角度Q(例えば、1度)ずつ回転させてステージ10上の物体を3次元カメラ20で測定したとき、各回転位置ごとの3次元カメラ20による測定結果である3次元データを、ステージ10の回転軸B周りの回転角度が基準角度(例えば、0度)にある状態(ステージ10が基準位置にある状態)で3次元カメラ20によって測定したステージ10上の物体の3次元データに変換するための行列値g11,g12,g13,g21,g22,g23,g31,g32,g33からなる行列M及び行列値a,b,cである。ここで、回転軸A、C周りの回転に関する座標変換係数と区別するために、以降、この回転軸B周りの回転に関する座標変換係数に関し、前記行列Mを行列MBとするとともに、前記行列値a,b,cを行列値aB,bB,cBとする。
【0066】
また、回転軸Cに関する座標変換係数は、ステージ10を回転軸C周りに0度から360度まで微小な所定角度Q(例えば、1度)ずつ回転させてステージ10上の物体を3次元カメラ20で測定したとき、各回転位置ごとの3次元カメラ20による測定結果である3次元データを、ステージ10の回転軸C周りの回転角度が基準角度(例えば、0度)にある状態(ステージ10が基準位置にある状態)で3次元カメラ20によって測定したステージ10上の物体の3次元データに変換するための行列値g11,g12,g13,g21,g22,g23,g31,g32,g33からなる行列M及び行列値a,b,cである。ここで、回転軸A、B周りの回転に関する座標変換係数と区別するために、以降、この回転軸C周りの回転に関する座標変換係数に関し、前記行列Mを行列MCとするとともに、前記行列値a,b,cを行列値aC,bC,cCとする。
【0067】
c.測定対象物の測定
次に、測定対象物OBを3次元カメラ20で測定する動作について説明する。この場合、作業者は入力装置31を操作して測定対象物OBを測定することをコントローラ30に入力する。コントローラ30は、図7のステップS300にて対象物測定プログラムの実行を開始する。この測定対象物OBを測定することはデータ処理装置40に供給され、データ処理装置40は、ステップS400にて画像データ生成プログラムの実行を開始する。まず、図1に示すように、測定対象物OBをステージ10上に載置固定する。はじめに、3次元カメラ20を前述した座標変換係数設定プログラムの実行時の位置に固定して、3次元カメラ20を用いて測定対象物OBの3次元形状を測定する場合について説明する。
【0068】
作業者は、入力装置31を操作して、ステージ10の回転軸A,B,C周りの回転位置を指示すると、コントローラ30は、図示しないプログラムの実行により、モータ16,17,18を駆動制御して、作業者によって指示された回転位置までステージ10を回転軸A,B,C周りに回転させる。そして、作業者は、入力装置31を操作して、コントローラ30に測定対象物OBの測定開始を指示する。前記測定開始の指示により、コントローラ30は、図7のステップS302にて「Yes」と判定し、ステップS304にて測定開始の指示があったことをデータ処理装置40に知らせる。次に、コントローラ30は、ステップS306にて、モータ16,17,18に内蔵されている回転角センサから、ステージ10の各回転軸A,B,C周りの回転角度をそれぞれ入力して、データ処理装置40に出力する。次に、コントローラ30は、ステップS308にて、3次元カメラ20に測定開始を指示して、後述するステップS310以降の処理を実行する。この測定開始の指示により、3次元カメラ20は、ステージ10上の測定対象物OBの3次元形状の測定を開始し、測定した3次元形状を表す3次元データを順次出力する。
【0069】
一方、データ処理装置40は、前記コントローラ30によるステップS304の対象物測定開始の指示の入力に応答して、図8のステップS402にて「Yes」と判定し、ステップS404にてコントローラ30からのステージ10の回転軸A,B,C周りの回転角度の入力を待つ。そして、前記ステップS306の処理によりコントローラ30から回転角度が入力されると、コントローラ30は、ステップS406にて、前記コントローラ30から出力された回転角度を入力してRAM又は不揮発性メモリに記憶する。次に、データ処理装置40は、ステップS408にて、3次元カメラ20からの3次元データの入力開始を待つ。そして、前記3次元カメラ20から3次元データが供給され始めると、データ処理装置40は、ステップS410にて3次元カメラ20から順次出力される測定対象物OBに関する3次元データを順次入力してRAM又は不揮発性メモリに記憶する。このステップS410の処理は、3次元カメラ20からの3次元データの入力が終了するまで実行され続ける。3次元カメラ20からの3次元データの入力が終了すると、データ処理装置40は、ステップS412にて「Yes」と判定して、ステップS414以降に進む。この段階では、3次元カメラ20によって取得された全ての3次元データがRAM又は不揮発性メモリに記憶されている。
【0070】
ステップS414においては、カメラ移動フラグCMFが“1”であるか否かが判定される。このカメラ移動フラグCMFは、“0”により、回転軸A,B,C周りの回転に関する座標変換係数の取得時と同じ位置に3次元カメラ20を固定したまま測定対象物OBの3次元データを取得する状態を表し、“1”により前記位置から3次元カメラ20を移動して測定対象物OBの3次元データを取得する状態を表しており、初期においては“0”に設定されている。今、3次元カメラ20はステージ10の回転軸A,B,C周りの回転に対する座標変換係数を取得した状態に固定されているので、カメラ移動フラグは“0”であり、コントローラ30は、ステップS414にて「No」と判定してステップS418以降の処理を行う。
【0071】
ステップS418においては、データ処理装置40は、前記ステップS410の処理によって3次元カメラ20から入力して記憶しておいた3次元データを、ステージ10の回転軸A周りの回転角度が基準角度(例えば、0度)にある状態(ステージ10が基準位置にある状態)で3次元カメラ20によって取得したステージ10上の物体の3次元データに変換する。この場合、ステージ10を回転軸A周りに下限角度−Amaxから上限角度Amaxまで回転させて取得して不揮発性メモリに記憶しておいた、微小な所定角度Qごとの座標変換係数(行列MAの行列値g及び行列値aA,bA,cA)の中から、前記コントローラ30から入力して一時的に記憶した回転軸A周りの回転角度に対応した座標変換係数(行列MAの行列値g及び行列値aA,bA,cA)を選択する。なお、前記行列値g及び以降の説明における行列値gは、前述した行列値g11,g12,g13,g21,g22,g23,g31,g32,g33を簡単に記述したものである。そして、前記3次元カメラ20から入力されて一時的に記憶した3次元データを、前記選択した座標変換係数(行列MAの行列値g及び行列値aA,bA,cA)を用いて下記数12の演算の実行により座標変換する。なお、下記数12中の座標値(X,Y,Z)は3次元カメラ20によって実際に取得された3次元データであり、座標値(XA,YA,ZA)は、ステージ10の回転軸A周りの回転角度が基準角度にある状態で3次元カメラ20によって測定したステージ10上の物体の3次元データである。
【0072】
【数12】
【0073】
この場合、ステージ10の回転機構が、座標変換係数を取得した際の回転角度Qの間隔で回転角度が変化する機構であれば、前記記憶した座標変換係数をそのまま使用すればよい。しかし、ステージ10の回転角度が連続して変化する機構であれば、補間演算により変換された座標値を計算する。この補間においては、前記入力した回転角度を挟む(n−1)・Q度及びn・Q度に対応した2組の座標変換係数を読み出して、2組の座標変換係数を用いて2組の座標値(XA1,YA1,ZA1),(XA2,YA2,ZA2)を計算した後に、前記入力した回転角度の(n−1)・Q度及びn・Q度に対する差に応じた補間演算により最終の座標値(XA,YA,ZA)を算出するとよい。また、前記(n−1)・Q度及びn・Q度に対応した2組の座標変換係数を、前記入力した回転角度の(n−1)・Q度及びn・Q度に対する差に応じて補間演算して一つの座標変換係数を計算し、この補間演算によって計算した座標変換係数を用いた前記数12の演算の実行により最終の座標値(XA,YA,ZA)を算出してもよい。なお、前記入力した回転角度が基準回転角度であれば、すなわちステージ10を基準位置から回転軸A周りに回転していない場合には、前記ステップS418の座標変換処理を行わない。
【0074】
前記ステップS418の処理後、データ処理装置40は、ステップS420にて、前記座標変換された3次元データを、ステージ10の回転軸B周りの回転角度が基準角度(例えば、0度)にある状態(ステージ10が基準位置にある状態)で3次元カメラ20によって取得したステージ10上の物体の3次元データに変換する。この場合、ステージ10を回転軸B周りに下限角度−Bmaxから上限角度Bmaxまで回転させて取得して不揮発性メモリに記憶しておいた、微小な所定角度Qごとの座標変換係数(行列MBの行列値g及び行列値aB,bB,cB)の中から、前記コントローラ30から入力して一時的に記憶した回転軸B周りの回転角度に対応した座標変換係数(行列MBの行列値g及び行列値aB,bB,cB)を選択する。そして、前記ステップS410の処理によって座標変換した座標値(XA,YA,ZA)を、前記選択した座標変換係数(行列MBの行列値g及び行列値aB,bB,cB)を用いて下記数13の演算の実行により座標変換する。なお、下記数13中の座標値(XB,YB,ZB)は、ステージ10の回転軸B周りの回転角度が基準角度にある状態で3次元カメラ20によって測定したステージ10上の物体の3次元データである。
【0075】
【数13】
【0076】
この場合も、前記コントローラ30から入力した回転軸B周りの回転角度が連続していてn・Q度ごとの角度の間の角度がある場合には、前記ステップS418の場合と同様に、補間演算により変換された座標値を計算する。また、前記入力した回転角度が基準回転角度であれば、すなわちステージ10を基準位置から回転軸B周りに回転していない場合には、前記ステップS420の座標変換処理を行わない。
【0077】
前記ステップS420の処理後、データ処理装置40は、ステップS422にて、前記座標変換された3次元データを、ステージ10の回転軸C周りの回転角度が基準角度(例えば、0度)にある状態(ステージ10が基準位置にある状態)で3次元カメラ20によって取得したステージ10上の物体の3次元データに変換する。この場合、ステージ10を回転軸C周りに0度から360度まで回転させて取得して不揮発性メモリに記憶しておいた、微小な所定角度Qごとの座標変換係数(行列MCの行列値g及び行列値aC,bC,cC)の中から、前記コントローラ30から入力して一時的に記憶した回転軸C周りの回転角度に対応した座標変換係数(行列MCの行列値g及び行列値aC,bC,cC)を選択する。そして、前記ステップS420の処理によって座標変換した座標値(XB,YB,ZB)を、前記選択した座標変換係数(行列MC及び行列値aC,bC,cC)を用いて下記数14の演算の実行により座標変換する。なお、下記数14中の座標値(XC,YC,ZC)は、ステージ10の回転軸C周りの回転角度が基準角度にある状態で3次元カメラ20によって測定したステージ10上の物体の3次元データである。
【0078】
【数14】
【0079】
この場合も、前記コントローラ30から入力した回転軸C周りの回転角度が連続していてn・Q度ごとの角度の間の角度がある場合には、前記ステップS418,S420の場合と同様に、補間演算により変換された座標値を計算する。また、前記入力した回転角度が基準回転角度であれば、すなわちステージ10を基準位置から回転軸C周りに回転していない場合には、前記ステップS422の座標変換処理を行わない。
【0080】
このようなステップS418、S420,S422の処理により、回転軸A周り、回転軸B周り及び回転軸C周りの順に座標変換を行う理由は、図1に示すように、ステージ10の回転軸Aは残り2つの回転軸B,Cによらず固定されており、回転軸Bは回転軸A周りの回転角度が固定されれば固定され、回転軸Cは残り2つの回転軸A,B周りの回転角度が固定されれば固定されるためである。前記ステップS422の処理後、データ処理装置40は、ステップS424にて、前記ステップS418、S420,S422の処理によって座標変換した1組の3次元データを不揮発性メモリに記憶する。これにより、不揮発性メモリには、ステージ10を回転軸A,B,C周りに所望の角度だけ回転して3次元カメラ20によって取得した3次元データ、すなわち所望の座標系の3次元データを、ステージ10の基準位置に対応した基準座標系の3次元データに変換した1組の3次元データが記憶されることになる。
【0081】
前記ステップS424の処理後、データ処理装置40は、ステップS426にてカメラ座標の座標変換係数をコントローラ30から入力したかを判定する。前記カメラ座標の座標変換係数の入力に関しては詳しく後述するとして、この段階では、前記カメラ座標の座標変換係数の入力はないものとする。したがって、データ処理装置40は、ステップS426にて「No」と判定して、ステップS432に進む。ステップS432においては、データ処理装置は3次元画像データの生成の指示があったかを判定する。前記3次元画像データの生成の指示がなければ、データ処理装置40は、ステップS432にて「No」と判定して、ステップS402に戻る。そして、新たな測定対象物OBの測定指示があるまで、データ処理装置40はステップS402にて「No」判定して、ステップS426に進む。したがって、新たな測定対象物OBの測定指示、カメラ座標の座標変換係数の入力、及び3次元画像データの生成の指示がなければ、データ処理装置40は、ステップS402,S426,S432にてそれぞれ「No」と判定して、ステップS402,S426,S432からなる循環処理を実行し続ける。
【0082】
一方、このような状態で、作業者が、入力装置31をふたたび操作して、ステージ10の回転軸A,B,C周りの回転位置を新たに指示すると、コントローラ30は、前述のように、モータ16,17,18を駆動制御して、作業者によって指示された回転位置までステージ10を回転軸A,B,C周りに回転させる。その後、作業者は、入力装置31を操作することにより、ステージ10上の測定対象物OBの3次元データの取得を指示すると、コントローラ30は、ステップS302にて「Yes」と判定して、前述したステップS304〜S308の処理を実行する。一方、データ処理装置40は、前記コントローラ30のステップS304の処理による対象物の測定指示に応答して、ステップS402にて「Yes」と判定して、前述したステップS404〜S424からなる処理を実行する。これにより、不揮発性メモリには、ステージ10を回転軸A,B,C周りに前記とは異なる所望の角度だけ回転して3次元カメラ20によって取得した3次元データを、ステージ10の基準位置に対応した座標系の3次元データに変換した新たな1組の3次元データが記憶される。そして、作業者は、必要に応じて、ステージ10を回転軸A,B,C周りに必要な回数だけ回転させて、測定対象物OBを3次元カメラ20に測定させることにより、前記回数に対応した組数の3次元データを不揮発性メモリに記憶させることができる。
【0083】
一方、3次元カメラ20を移動させる場合、例えば図9に破線で示す位置にあったカメラ20を実線で示す位置に移動する場合には、カメラ20の移動の前又は後に、前述のように真球11a,11b,11cをステージ10上にセットする。なお、このカメラ20の移動とは、カメラ20を支持装置21に固定したまま支持装置21のみを移動させる場合、支持装置21を固定した状態でカメラ20のみを回転又は変位させる場合、及び支持装置21を移動するとともにカメラ20も回転又は変位させる場合を含む。また、この場合、3次元カメラ20の移動後の測定対象物OBの測定の際に、測定対象物OBのステージ10に対する位置を3次元カメラ20の移動前の測定対象物OBのステージ10に対する位置に合わせる必要があるために、測定対象物OBをステージ10上から除去しなくても、真球11a,11b,11cの測定が可能であれば、測定対象物OBをステージ10上に残しておくことが好ましい。測定対象物OBをステージ10上から除去する場合には、測定対象物OBのステージ10に対する設置位置を再現できるように印などをステージ10上に付しておくとよい。前記3次元カメラ20の移動及び真球11a,11b,11cのセット後、作業者は、入力装置31を操作してカメラ20を移動したことをコントローラ30に入力する。
【0084】
このカメラ20の移動の入力に応答して、コントローラ30は、図7の対象物測定プログラムのステップS310で「Yes」と判定して、前記図4AのステップS102と同様なステップS312の処理により、モータ16,17,18の回転を制御して、ステージ10の回転軸A,B,C周りの回転角度が基準回転角度(すなわち0度)になるように、すなわちステージ10を基準位置に設定する。前記ステップS312の処理後、コントローラ30は、ステップS314にて前述した図6の座標変換係数取得ルーチンを実行する。この座標変換係数取得ルーチンのステップS252〜S256の処理により、新たにセットした真球11a,11b,11cの中心座標すなわち3つ定点のX,Y,Z座標値(Xa1,Ya1,Za1),(Xb1,Yb1,Zb1),(Xc1,Yc1,Zc1)を計算する。そして、ステップS258の処理により、新たな3つ定点のX,Y,Z座標値(Xa1,Ya1,Za1),(Xb1,Yb1,Zb1),(Xc1,Yc1,Zc1)と、前記図4AのステップS106(図5のステップS208)の処理によってRAM又は不揮発性メモリに記憶されていて、ステージ10が基準位置にある状態における3つの定点のX,Y,Z座標値(Xa0,Ya0,Za0),(Xb0,Yb0,Zb0),(Xc0,Yc0,Zc0)とを用いて、座標変換係数が計算される。
【0085】
この場合、移動後の3次元カメラ20によって測定した3次元データの座標値を、回転軸A,B,C周りの回転角度に関する座標変換係数を取得した位置に配置した3次元カメラ20によって測定した3次元データの座標値(基準座標系の座標値)に変換するための座標変換係数が計算される。すなわち、図9に示すように、3次元カメラ20を破線で示す位置(図1及び図3と同一位置)に配置した基準座標系を座標系Sとし、3次元カメラ20を実線で示す位置に配置した座標系を座標系Mとすると、座標系Mの3次元データを座標系Sの3次元データに変換するための座標変換係数が計算される。ここで、前述した回転軸A,B、C周りの回転角度に関する座標変換係数と区別するために、以降、この3次元カメラ20の移動に関する座標変換係数については、前記行列Mを行列MSとするとともに、前記行列値a,b,cを行列値aS,bS,cSとする。そして、前記ステップS258の処理後、ステップS260にて、計算された行列MSの行列値g及び行列値aS,bS,cSは不揮発性メモリに記憶され、ステップS262にて座標変換係数取得ルーチンの実行が終了される。
【0086】
ふたたび図7の対象物測定プログラムの説明に戻ると、前記ステップS314の処理後、コントローラ30は、ステップS316にて、前記計算して不揮発性メモリに記憶した行列MSの行列値g及び行列値aS,bS,cSからなるカメラ座標系の座標変換係数をデータ処理装置40に出力する。
【0087】
このカメラ座標系の座標変換係数の出力に応答して、データ処理装置40は、ステップS426にて「Yes」すなわちカメラ座標の座標変換係数の入力ありと判定して、ステップS428,S430の処理を実行する。ステップS428においては、コントローラ30から出力された行列MSの行列値g及び行列値aS,bS,cSからなるカメラ座標系の座標変換係数を不揮発性メモリに記憶する。ステップS430においては、カメラ移動フラグCMFを“1”に設定する。
【0088】
この状態で、作業者は、ステージ10上の真球11a,11b,11cを取り外す。そして、前記真球11a,11b,11cのステージ10への取り付け時に、測定対象物OBをステージ10から取り外した場合には、測定対象物OBを、3次元カメラ20の移動前の測定対象物OBと同じステージ10上の位置に設置する。そして、作業者は、入力装置31を操作することにより、ステージ10上の測定対象物OBの3次元データの取得を指示すると、コントローラ30は、ステップS302にて「Yes」と判定して、前述したステップS304〜S308の処理を実行する。なお、前記測定対象物OBの3次元データの取得の指示の前に、入力装置31の操作により、前述のように、ステージ10の回転軸A,B,C周りの回転位置を変更してもよい。一方、データ処理装置40は、前記コントローラ30のステップS304の処理による測定対象物OBの測定指示に応答して、ステップS402にて「Yes」と判定して、前述したステップS404〜S412の処理により、ステージ10を回転軸A,B,C周りの回転角度及び3次元カメラ20によって新たに取得した3次元データを不揮発性メモリに記憶する。
【0089】
前記ステップS412に処理後、コントローラ30は、ステップS414にてカメラ移動フラグCMFが“1”であるか否かを判定する。この場合、前述したステップS430の処理によってカメラ移動フラグCMFは“1”に設定されているので、コントローラ30は、ステップS414にて「Yes」と判定して、前記新たに取得した3次元データを座標変換する。この座標変換においては、前記新たに取得した3次元データが、前記不揮発性メモリに記憶した行列MSの行列値g及び行列値aS,bS,cSを用いて、下記数15の演算の実行により座標変換される。なお、下記数15中の座標値(XM,YM,ZM)は、3次元カメラ20が図9の実線位置にある座標系Mの3次元データである。また、下記数15中の座標値(XS,YS,ZS)は、3次元カメラ20が図9の破線位置にある座標系Sの3次元データである。
【0090】
【数15】
【0091】
前記ステップS416の処理後、コントローラ30は、前述したステップS418〜S422の処理により、座標系Mの3次元データを座標系Sに変換した3次元データが、座標系Sにおけるステージ10の基準位置に対応した基準座標系の1組の3次元データに変換される。そして、ステップS424の処理により、この1組の変換された3次元データが不揮発性メモリに記憶される。
【0092】
また、このような状態で、作業者が、入力装置31をふたたび操作して、ステージ10の回転軸A,B,C周りの回転位置を新たに指示すると、コントローラ30は、前述のように、モータ16,17,18を駆動制御して、作業者によって指示された回転位置までステージ10を回転軸A,B,C周りに回転させる。その後、作業者は、入力装置31を操作することにより、ステージ10上の測定対象物OBの3次元データの取得を指示すると、コントローラ30は、ステップS302にて「Yes」と判定して、前述したステップS304〜S308の処理を実行する。一方、データ処理装置40は、前記コントローラ30のステップS304の処理による測定対象物OBの測定指示に応答して、ステップS402にて「Yes」と判定して、前述したステップS404〜S424からなる処理を実行する。これにより、不揮発性メモリには、3次元カメラ20の移動後におけるステージ10を回転軸A,B,C周りに前記とは異なる所望の角度だけ回転して3次元カメラ20によって取得した3次元データを、基準座標系の3次元データに変換した新たな1組の3次元データが記憶される。そして、作業者は、この場合も、必要に応じて、ステージ10を回転軸A,B,C周りに必要な回数だけ回転させて、測定対象物OBを3次元カメラ20に測定させることにより、前記回数に対応した組数の3次元データを不揮発性メモリに記憶させることができる。
【0093】
さらに、3次元カメラ20を移動させて、測定対象物OBを3次元測定する必要がある場合には、前述のように、真球11a,11b,11cをステージ10上にセットして、図7のステップS310〜S316及び図8のステップS426〜S430の処理により、3次元カメラ20の移動に伴うカメラ座標系の座標変換係数を取得する。そして、図7のステップS302〜S308及び図8のステップS402〜S424の処理により、測定対象物OBを3次元カメラ20で測定して、測定により得た3次元データを基準座標系における3次元データに座標変換して、基準座標系に座標変換された3次元データが不揮発性メモリに新たに記憶される。この場合も、ステージ10を回転軸A,B,C周りに回転させて、基準座標系の3次元データを得る。このような処理の結果、3次元カメラ20の複数の位置ごとに、ステージ10を回転軸A,B,C周りに回転させながら取得した測定対象物OBに関する複数組の3次元データが不揮発性メモリに記憶されることになる。そして、不揮発性メモリに記憶されている複数組の3次元データは、全て基準座標系におけるデータに変換されている。
【0094】
このように、3次元カメラ20の複数の位置ごとに、ステージ10を回転軸A,B,C周りに回転させながら測定対象物OBの3次元データを取得した後、作業者は、入力装置31を操作して測定対象物OBの3次元画像を確認するために測定終了を指示する。この測定終了の指示に応答して、コントローラ30は、図7の対象物測定プログラムのステップS318にて「Yes」と判定して、ステップS320にてデータ処理装置40に3次元画像データの生成を指示して、ステップS322にて対象物測定プログラムの実行を終了する。
【0095】
この3次元画像データの生成指示に応答して、データ処理装置40は、ステップS432にて「Yes」と判定して、ステップS434〜438の処理を実行する。ステップS434においては、前記不揮発性メモリに記憶されている複数組の測定対象物OBの3次元データを合成する。この合成においては、基準座標系の複数組の3次元データが1組の3次元データに集合させられる。ステップS436においては、合成した3次元データに基づいて測定対象物OBの3次元形状を表す3次元画像データが生成され、生成された3次元画像データが不揮発性メモリに記憶される。ステップS438においては、前記不揮発性メモリに記憶されている3次元画像データが表示装置41に供給される。表示装置41は、この供給された3次元画像データを用いて、測定対象物OBの3次元画像を表示する。
【0096】
上記のように動作する実施形態においては、図7のステップS310〜S314の処理により、図4AのステップS106の処理により記憶されたステージ10の定点の座標を用いて、座標系Mの3次元カメラ20による3次元データを、座標系S(基準座標系)の3次元カメラ20による3次元データに座標変換するための座標変換係数が取得される。そして、図8のステップS416の処理により、座標系Mの3次元カメラ20による3次元データは、前記座標変換係数を用いて、座標系Sの3次元カメラ20による3次元データに変換される。そして、この座標系Sに変換された3次元データは、図8のステップS418〜S422の処理により、ステージ10の基準位置に対応した基準座標系の3次元データに変換される。したがって、ステージ10に対する3次元カメラ20の位置を変化させても、ステージ10に定義した定点の座標を取得するための測定を1回行うのみで回転角度ごとの座標変換係数を得ることができ、測定の効率が良好に保たれる。
【0097】
また、ステージ10に定義される定点は、ステージ10に対して一定の位置に定点を定義可能な真球11a,11b,11cをステージ10の穴10a,10b,10cに装着することで得られる。したがって、ステージ10に定義した定点の座標を取得するための測定を行うときだけ、ステージ10に真球11a,11b,11cを取り付ければよいので、ステージ10に測定対象物OBを載置するのに邪魔にならない。
【0098】
以上、本発明の一実施形態について説明したが、本発明の実施にあたっては、上記実施形態に限定されるものではなく、本発明の目的を逸脱しない限りにおいて種々の変形も可能である。
【0099】
上記実施形態では、図4AのステップS116,S126,S138,S148、図4BのステップS160及び図7のステップS314の処理により、ステージ10の回転に関する座標変換係数及び3次元カメラ20の移動に関する座標変換係数の取得において、3つの定点(すなわち、3つの真球11a,11b,11cの中心座標)を用いて座標変換係数(行列MAの行列値g及び行列値aA,bA,cA、行列MBの行列値g及び行列値aB,bB,cB、行列MCの行列値g及び行列値aC,bC,cC、並びに行列MSの行列値g及び行列値aS,bS,cS)を計算するようにした。しかし、これに代え、2つ以上の定点と1つ以上のベクトルとを定義し、又は1つ以上の定点と2つ以上のベクトルとを定義して、座標変換係数を計算してもよい。第1座標系の座標値を第2座標系の座標に変換するための座標変換係数を計算するためには、定点に関しては、第1座標系の定点座標値が座標値(x’,y’,z’)であり、第2座標系の定点座標値が座標値(x,y,z)であれば、これらの座標値を前記数2,3と同様な数16に代入する。また、ベクトルに関しては、第1座標系のベクトルの成分が(α’,β’,γ’)であり、第2座標系のベクトルの成分が(α,β,γ)であれば、これらのベクトル成分を前記数8と同様な数17に代入する。
【0100】
【数16】
【0101】
【数17】
【0102】
なお、第1座標系のベクトルと第2座標系のベクトルの大きさが同じ場合には、前記数17の演算の適用のままでよいが、第1座標系のベクトルと第2座標系のベクトルの大きさが異なる場合には、下記数18の演算の実行により係数Kを計算する。そして、この計算した係数Kを第2座標系のベクトルにかけて前記数17に代入する。このような数16及び数17への代入により、2つ以上の定点と1つ以上のベクトルとを定義した場合には、3つの行列値gからなる数16に関する2つ以上の連立方程式と数17に関する1つ以上の連立方程式が用意されることになる。また、1つ以上の定点と2つ以上のベクトルとを定義した場合には、3つの行列値gからなる数16に関する1つ以上の連立方程式と数17に関する2つ以上の連立方程式が用意されることになる。いずれの場合も、3つの行列値gからなる3つ以上の連立方程式が用意され、この連立方程式を解くことにより座標変換係数(g11,g12,g13,g21,g22,g23,g31,g32,g33,a,b,c)が計算される。
【0103】
【数18】
【0104】
次に、2つ以上の定点と1つ以上のベクトルとの定義、及び1つ以上の定点と2つ以上のベクトルとの定義に関する具体的方法について説明する。2つ以上の定点と1つ以上のベクトルとを定義する場合には、例えば、図10(A)に示すように、ステージ10上にセットした2つの真球11a,11bの中心座標を2つの定点として定義するとともに、ステージ10の上面の法線ベクトルを1つのベクトルとして定義すればよい。
【0105】
また、1つ以上の定点と2つ以上のベクトルを定義する場合には、例えば、図10(B)に示すように、ステージ10上にセットした1つの真球11aの中心座標を1つの定点として定義するとともに、ステージ10上に作成した直線状の模様10eの方向によって規定されるベクトルと、ステージ10の上面の法線ベクトルとを2つのベクトルとして定義すればよい。また、図10(C)に示すように、ステージ10上に作成した直線状の交差する2つの模様10f,10gの方向によって2つのベクトルを定義するとともに、2つの直線状の模様10f,10gの交点によって定点を定義するようにしてもよい。また、図10(D)に示すように、ステージ10の上面の法線ベクトルと、ステージに作成した直線状の模様10hの方向とによって2つベクトルを定義するとともに、模様10hと模様10iとの交点で定点を定義するようにしてもよい。また、図10(E)及び図10(F)に示すように、ステージ10を、上面に加えて少なくとも1つの平らな側面及び頂点(角部)を有するように構成し、前記上面の法線ベクトルと側面の法線ベクトルとを2つのベクトルとして定義するとともに、頂点を定点として定義するようにしてもよい。
【0106】
前述した直線状の模様10e〜10iを利用する場合、模様10e〜10iの反射率とステージ10上面の他の部位の反射率とを異ならせておいて、3次元カメラ20による3次元形状の測定の際に反射光量も同時に測定するようにすれば、模様10e〜10iに関する3次元データの抽出を行うことができる。また、ステージ10の上面と側面の法線ベクトルを利用する場合には、ステージ10の上面と側面とで反射率を異ならせておいて、3次元カメラ20による3次元形状の測定の際に反射光量も同時に測定するようにすれば、ステージ10の上面と側面に関する3次元データをそれぞれ別々に抽出することができる。そして、これらの測定によって得られた3次元データから定点座標及び法線ベクトルの成分を計算する方法は、従来から知られている技術(例えば、特開2005−249402号公報、特開2005−352630号公報、特開2008−164493号公報参照)を利用できる。このように、ステージ10の形状における頂点、上面及び側面の法線ベクトル、ステージ10に描かれた模様から定まる点又は直線部分を利用することにより、ステージ10に定義される定点又はベクトルの成分を取得する際、ステージ10をそのまま測定すればよいので、効率がよい。
【0107】
また、上記図4AのステップS116,S126,S138,S148、図4BのステップS160及び図7のステップS314の処理による座標変換係数の取得において、図4Aの基準定点座標取得ルーチンの処理より、ステージ10が基準位置にある状態の定点の座標を記憶しておいて、この記憶しておいた定点の座標を利用している。したがって、前記変形例のように、座標変換に定点及びベクトルを利用する場合には、図4Aの基準定点座標取得ルーチンにて、定点の座標を記憶しておくのに代えて、前記座標変換係数の取得において利用される、ステージ10が基準位置にある状態の定点の座標及びベクトルの成分を取得してRAM又は不揮発性メモリに記憶しておくようにする。
【0108】
定点やベクトルを定義する方法は、図10に示す例以外にも種々な形態が考えられる。例えば、物体を用いて定点を定義するときは、3次元データから定点座標を計算するデータ処理が最も容易であるために、真球を使用することが好ましい。しかし、定点を定義できればよいので、円柱、円錐、角錐、直方体などの形状の物体を用いてもよいし、模様であれば、円、多角形といった模様でもよい。
【0109】
また、上記実施形態では、各回転軸における各回転角度ごとに3次元形状測定を行い、定点座標を取得して各回転角度ごとに座標変換係数を取得した。しかし、これに代えて、図11に示すように、1つの定点を定義して3つ回転軸A,B,C周りに、ステージ10をそれぞれ回転させながら3つ以上の回転角度でそれぞれ定点座標を取得し、これらの定点座標で定まる平面と定点座標で定まる円の中心座標とから回転軸A,B,Cの位置をそれぞれ計算し、理論的に、この回転軸A,B,Cの位置から各回転角度ごとの座標変換係数を回転角度の関数として取得してもよい。この場合も、定点の定義のためには、種々の形状の物体や模様を用いることができるが、図11に示すように、ステージ10にセットした真球11aを用いるとよい。
【0110】
各回転軸A,B,Cにおける各回転角度ごとの座標変換係数は、ステージ10の基準位置における基準座標系(カメラ座標系)の座標軸をそれぞれの座標軸周りに回転させて、回転軸に座標軸の1つが垂直に交差するとともに座標軸の1つが回転軸に平行となる座標軸を想定し、この座標軸が回転軸周りに回転することを想定すれば、回転軸周りの回転角度の関数として計算することができる。具体的には、各回転軸A,B,Cごとに以下の順に計算を行い、座標変換係数を求めればよい。
【0111】
(1)回転軸に垂直で基準座標系(カメラ座標系)の原点Oを含む平面Hを計算する。
(2)各座標軸と平面Hとのなす角度を計算し、平面Hとのなす角度が最も小さい座標軸aに垂直で原点Oを含む平面Iと平面Hから形成される直線のベクトルJを計算し、このベクトルJと座標軸a以外の2つの座標軸とがなす角度をそれぞれ計算し、小さい方の角度分、座標軸aを回転させて他の1つの座標軸である座標軸bを平面H内にする座標変換係数M1を計算する。座標変換係数M1及び後述する座標変換係数M2,M3は、上記数3に示すように、3×3の行列である。
(3)座標軸bを、平面Hと座標軸aがなす角度分、回転させて座標軸aを平面H内にする座標変換係数M2を計算する。
【0112】
(4)平面Hと回転軸の交点Kを計算し、原点Oから交点Kに向かうベクトルとベクトルJのなす角度を計算し、この角度分、座標軸a,b以外の座標軸cを回転させ、座標軸aの方向を原点Oから交点K方向にする座標変換係数M3を計算する。
(5)前記(4)でできた座標軸を回転軸周りに回転角度θだけ回転させるときの座標変換係数M(θ),T(θ)を計算する。この場合は、原点移動があるので座標変換係数は3×3の行列であるM(θ)と、3×1の行列(ベクトル成分)であるT(θ)である。座標変換係数M(θ),T(θ)とも、回転角度θの関数として計算することができる。
(6)前記(5)で回転させた座標軸を前記(2)、(3)、(4)で行った回転とは逆の回転を行う座標変換係数M3-1,M2-1,M1-1を計算する。
【0113】
(7)前記(2)〜(6)の順に回転を行うときの座標変換係数Mt(θ)=M1-1・M2-1・M3-1・M(θ)・M3・M2・M1と座標変換係数Tt(θ)=M1-1・M2-1・M3-1・T(θ)を計算する。
(8)前記(7)で求めた座標変換係数Mt(θ),Tt(θ)はステージ10の基準位置における基準座標系(カメラ座標系)の座標軸を回転軸周りに回転角度θだけ回転させたときの座標変換係数である。回転角度θだけ回転させた後の座標軸をステージ10の基準位置における基準座標系(カメラ座標系)の座標軸にするための座標変換係数は、座標変換係数Mt(θ)の逆行列であるMt(θ)-1と−Mt(θ)-1・Tt(θ)である。
【0114】
なお、この種の技術も従来から知られた技術(特表2000−509505号公報、特開2008−32449号公報参照)である。
【0115】
また、上記実施形態ではステージ10は回転軸Aが固定されており、回転軸Bは回転軸Aの回転角度が固定されると固定され、回転軸Cは回転軸A,Bが固定されると固定されるようになっているが、座標変換を固定された回転軸による座標変換から行えば、前記回転軸A,B,Cの関係は任意でよい。また、上記実施形態では回転軸は3つであったが、座標変換を固定された回転軸による座標変換から行っていけば、回転軸は2つであってもよいし、4つ以上であってもよい。
【0116】
また、上記実施形態では、座標系Mの3次元データを座標系S(基準座標系)の3次元データに座標変換する座標変換係数を得るときに、ステージ10の回転軸A,B,Cの回転角度を基準角度(0度)にして真球11a,11b,11cの3次元形状を測定して定点座標を取得したが、回転軸A,B,Cが任意の回転角度であっても座標変換係数を得ることは可能である。この場合、図4A及び図4Bの座標変換係数設定プログラムの実行によって不揮発性メモリに記憶されていてステージ10の回転軸A,B,C周りの回転角度における座標変換係数を用いて、座標系S(基準座標系)による定点座標を逆の座標変換により現在の回転角度による座標系による定点座標に変換し、この定点座標と3次元形状測定して取得した定点座標とを用いて座標系Mの3次元データを座標系S(基準座標系)の3次元データに座標変換する座標変換係数を取得すればよい。
【0117】
さらに、上記実施形態では、3次元カメラ20はレーザ光を照射して測定を行うものであったが、測定対象物OBの3次元形状を測定できるものであればどのような方式のものであってもよい。例えば、格子模様を投影して測定する方式のもの、超音波を使用して測定する方式のもの、プローブを接触させて測定する方式のものでもよい。
【符号の説明】
【0118】
10…ステージ、11a,11b,11c…真球、16,17,18…モータ、20…3次元カメラ、30…コントローラ、31…入力装置、40…データ処理装置、41…表示装置、OB…測定対象物
【技術分野】
【0001】
本発明は、測定対象物を回転するステージに載置し、ステージを回転させながら3次元形状を測定することで測定対象物の全方向における3次元形状を取得可能な3次元形状測定装置及び3次元形状測定方法に関する。
【背景技術】
【0002】
測定対象物に3次元カメラから光を照射して3次元形状を測定する方法には様々な方法があるが、測定可能な箇所は測定対象物に光が照射される箇所のみである。測定対象物の全方向における3次元形状を測定するためには、3次元カメラ又は測定対象物を移動させて測定対象物を様々な方向から測定する必要があり、その方法にも様々な方法がある。その方法の一つとして、例えば下記特許文献1に示されているように、回転するステージに測定対象物を載置し、ステージを回転させながら3次元形状を測定する方法がある。
【0003】
この方法においては、ステージから見ると、3次元カメラが回転していることになるため、予め設定したステージの回転角度ごとに座標系が異なっており、各回転角度ごとの3次元データを、設定した回転角度における座標系(基準座標系)の3次元データに変換するための座標変換係数を各回転角度ごとに取得して記憶しておき、各回転角度で取得した3次元データをこの座標変換係数で変換して全ての3次元データを1つの座標系におけるデータとしている。そして、下記特許文献1に示される方法では、定点を有する基準物体をステージに載置して各回転角度ごとに基準物体の3次元形状を測定し、3つ以上の定点座標を取得することで前記座標変換係数を計算している。この特許文献1に示された方法は、回転軸がステージの平面の法線方向の1つしかなく、上部や下部が複雑な構造をしている測定対象物については全方向における3次元形状が測定できないことがある。
【0004】
これに対し、下記特許文献2に示された3次元形状測定では、第1回転ステージ上に同第1回転ステージとは回転軸の異なる第2回転ステージを載置し、第2回転ステージ上に測定対象物を載置して、第1及び第2回転ステージを回転させながら、すなわち異なる2つの回転軸周りに測定対象物を回転させて、測定対象物の3次元形状を測定している。これにより、複雑な構造の測定対象物でも全方向における3次元形状を測定可能としている。この特許文献2に示された方法においても、3次元データの座標変換は必要であり、座標変換係数は各回転軸の各回転角度ごとに取得する必要がある。この特許文献2に示された方法では、各回転軸の基準座標系における位置を検出することで、各回転軸の各回転角度ごとの座標変換係数を取得している。また、この方法においても、特許文献1に示されているように、定点を有する基準物体を各回転軸の各回転角度ごとに3次元形状を測定し、3つ以上の定点座標を取得することで各回転軸の各回転角度ごとの座標変換係数を計算することもできる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2002−328014号公報
【特許文献2】特表2000−509505号公報
【発明の概要】
【0006】
ステージの各回転角度ごとの座標変換係数は、ステージに対する3次元カメラの位置が変化しなければ一定であるので、一度算出すればよい。しかし、頻繁にステージに対する3次元カメラの位置を変化させるような場合は、その都度ステージの各回転角度ごとの座標変換係数を取得する必要があり、測定の効率が悪くなる。そして、特許文献2に示されているように、ステージに2つの回転軸が設けられている場合は、測定の効率がさらに悪くなる。
【0007】
本発明は、上記問題に対処するためになされたもので、その目的は、ステージ上に測定対象物を載置してステージを回転させながら測定対象物の3次元形状を測定するとともに、3次元カメラの位置をステージに対して変化させても、効率よく測定対象物の3次元形状を測定できるようにした3次元形状測定装置を提供することにある。なお、下記本発明の各構成要件の記載においては、本発明の理解を容易にするために、実施形態の対応箇所の符号を括弧内に記載しているが、本発明の各構成要件は、実施形態の符号によって示された対応箇所の構成に限定解釈されるべきものではない。
【0008】
上記目的を達成するために、本発明の特徴は、回転軸周りに回転可能であって座標変換係数を計算するための定点又はベクトルを定義可能なステージ(10)と、ステージ上に載置した物体の3次元形状を測定する3次元カメラ(20)と、3次元カメラで測定した3次元形状を表す3次元データを処理する処理装置(30,40)とからなり、処理装置に、第1のカメラ位置に配置した3次元カメラの測定により取得したステージの定点又はベクトルを用いて、ステージを基準位置から回転させた状態で3次元カメラにより測定した3次元形状を表す3次元データを、ステージが基準位置にある状態で3次元カメラにより測定した3次元形状を表す基準座標系の3次元データに変換するための回転座標変換係数を複数の回転角度ごとに取得して記憶しておく回転座標変換係数取得手段(図4A及び図4Bの座標変換係数設定プログラム)と、ステージを基準位置から回転させた状態で3次元カメラにより測定した測定対象物の3次元形状を表す3次元データを、回転座標変換係数を用いて、基準座標系の3次元データに変換する回転座標変換手段(図8のステップS402〜S412,S418〜S422)とを設けて、ステージを回転させることによって異なる視点から測定した測定対象物の3次元データを、基準座標系の3次元データに合成する3次元形状測定装置において、処理装置に、さらに、第1のカメラ位置に配置した3次元カメラの測定により取得したステージの定点の座標又はベクトルの成分を記憶しておく定点・ベクトル記憶手段(図4AのステップS106)と、第1のカメラ位置と異なる第2のカメラ位置に配置した3次元カメラの測定により取得したステージの定点の座標又はベクトルの成分と、定点・ベクトル記憶手段によって記憶されているステージの定点の座標又はベクトルの成分とを用いて、第2のカメラ位置で3次元カメラにより測定した3次元形状を表す3次元データを、第1のカメラ位置で3次元カメラにより測定した3次元形状を表す3次元データに座標変換するためのカメラ座標変換係数を取得するカメラ座標変換係数取得手段(図7のステップS310〜S314)と、第2のカメラ位置で3次元カメラにより測定した測定対象物の3次元形状を表す3次元データを、カメラ座標変換係数を用いて、第1のカメラ位置で3次元カメラにより測定した測定対象物の3次元形状を表す3次元データに変換するカメラ座標変換手段(図8のステップS416)とを設けたことにある。
【0009】
この場合、定点・ベクトル記憶手段は、回転座標変換係数取得手段による回転座標変換係数の取得に連動してステージの定点の座標又はベクトルの成分を記憶するとよい。
【0010】
上記のように構成した本発明においては、カメラ座標変換手段が、第2のカメラ位置で3次元カメラにより測定した測定対象物の3次元形状を表す3次元データを、カメラ座標変換係数取得手段により取得されたカメラ座標変換係数を用いて、第1のカメラ位置で3次元カメラにより測定した測定対象物の3次元形状を表す3次元データに変換する。そして、このカメラ座標変換手段によって変換された3次元データを、回転座標変換係数を用いた回転座標変換手段により基準座標系の3次元データに変換すれば、第2のカメラ位置でステージを回転させながら測定して測定対象物の3次元データを基準座標系の3次元データに変換できる。したがって、ステージに対する3次元カメラの位置を変化させても、ステージに定義した定点の座標又はベクトルの成分を取得するための測定を1回行うのみで、回転角度ごとの座標変換係数を得た場合と同様に3次元形状測定が可能であり、測定の効率が良好に保たれる。
【0011】
また、本発明の他の特徴は、ステージは、2つ以上の回転軸周りに回転可能であり、回転座標変換係数は、2つ以上の回転軸ごとに取得されて記憶されていることにある。これによれば、ステージが2つ以上の回転軸周りに回転可能である場合でも、ステージに定義した定点の座標又はベクトルの成分を取得するための測定を1回行えばよいので、各回転軸ごとに各回転角度ごとの座標変換係数を取得する必要がなくなる分、さらに効率的である。
【0012】
また、本発明の他の特徴は、ステージに定義される定点又はベクトルは、ステージに対して一定の位置に定点又は一定の方向にベクトルを定義可能な物体をステージに装着することで得られることにある。これによれば、例えばステージに装着孔又はネジ孔などを作成し、ステージに定義した定点の座標又はベクトルの成分を取得するための測定を行うときだけ、ステージに定点又はベクトルを定義可能な物体を取り付ければよいので、ステージに測定対象物を載置する際に邪魔にならない。
【0013】
また、本発明の他の特徴は、ステージに定義される定点又はベクトルは、ステージの形状における頂点又は平面の法線ベクトルであることにある。これによれば、ステージに定義される定点座標又はベクトルの成分を取得する際、ステージをそのまま測定すればよいので、さらに効率がよい。
【0014】
また、本発明の他の特徴は、ステージに定義される定点又はベクトルは、ステージに描かれた模様から定まる点又は直線部分であることにある。これによっても、ステージに定義される定点座標又はベクトルの成分を取得する際、ステージをそのまま測定すればよいので効率がよい。
【0015】
さらに、本発明の実施にあたっては、本発明は、3次元形状測定装置の発明に限定されることなく、3次元形状測定方法の発明としても実施し得るものである。
【図面の簡単な説明】
【0016】
【図1】本発明が適用された3次元形状測定システムの全体概略図である。
【図2】ステージに真球をセットするときの様子をステージの断面方向から見た図である。
【図3】各回転軸の各回転角度ごとの座標変換係数を取得するときの様子を示す図である。
【図4A】コントローラにより実行される座標変換係数設定プログラムの前半部分を示すフローチャートである。
【図4B】コントローラにより実行される座標変換係数設定プログラムの後半部分を示すフローチャートである。
【図5】図4Aの基準定点座標取得ルーチンの詳細を示すフローチャートである。
【図6】図4A、図4B及び図7の座標変換係数取得ルーチンの詳細を示すフローチャートである。
【図7】コントローラにより実行される対象物測定プログラムを示すフローチャートである。
【図8】データ処理装置により実行される画像データ生成プログラムを示すフローチャートである。
【図9】ステージに対する3次元カメラの位置を変えたときの座標系の関係を示す図である。
【図10】ステージに定点やベクトルを定義するときの方法を示す図である。
【図11】各回転軸の位置を検出するときの様子を示す図である。
【発明を実施するための形態】
【0017】
a.ハード構成
以下、本発明の一実施形態について図面を用いて説明する。図1は、本発明の一実施形態に係る3次元形状測定システムの全体概略図である。3次元形状測定システムは、ステージ10に載置された測定対象物OBの3次元形状を測定する3次元カメラ20を有する。
【0018】
ステージ10は、円盤状に形成されて、測定対象物OBを載置するための平らな上面を有する。ステージ10の上面の外周近傍の3箇所には、真球をセットするための3つ穴10a,10b,10cが設けられている。測定対象物OBを測定するときは、これらの穴10a,10b,10cには何もセットされないが、後述する座標変換係数を取得するための測定の際には、これらの穴10a,10b,10cには径の異なる真球11a,11b,11cがセットされる。真球11a,11b,11cには円柱状の棒が取り付けられており、円柱状の棒を穴10a,10b,10cに差し込むことにより、真球11a,11b,11cがステージ10の上面上にセットされる。図2は、この棒付きの真球11a(11b,11c)を穴10a(10b,10c)に差し込む様子を断面方向から見た図である。穴10a,10b,10cの径はそれぞれ少量ずつ異なっており、また真球11a,11b,11cに付けられた棒の径も穴10a,10b,10cに合うようにそれぞれ少量ずつ異なっている。したがって、ステージ10の定まった位置に定まった径の真球11a,11b,11cがセットされるようになっている。なお、穴10a,10b,10c及び真球11a,11b,11cに設けた棒にはネジが切られていて、真球11a,11b,11cに設けた棒が穴10a,10b,10cにねじ込まれてセットされるようにしてもよい。
【0019】
ステージ10は、プレート12,13,14,15からなるステージ支持装置により支持され、このステージ支持装置にはモータ16,17,18が組み付けられている。プレート12はプレート13を回転軸A周りに回転可能に支持しており、モータ16は、その回転により、プレート13,14,15及びステージ10を一体的に回転軸A周りに基準位置(回転角度0度)から所定範囲だけ正負に回転させる。プレート14はプレート15を回転軸B周りに回転可能に支持しており、モータ17は、その回転により、プレート15及びステージ10を一体的に回転軸B周りに基準位置(回転角度0度)から所定範囲だけ正負に回転させる。プレート15はモータ18を固定支持しており、モータ18は、その回転により、ステージ10を回転軸C周りに基準位置(回転角度0)から正負に自由な角度だけ回転させる。モータ16,17,18内には回転角センサが内蔵されており、回転角センサはステージ10の各回転軸A,B,C周りの回転角を出力する。なお、回転軸A,B,Cは互いに直交している。
【0020】
3次元カメラ20は、移動可能な支持装置21に、変位可能かつ回転可能に組み付けられて固定されている。そして、3次元カメラ20は、測定対象物OB及び真球11a,11b,11cの3次元表面形状を測定して、測定結果を表す3次元データを出力する。この3次元カメラ20としては、測定対象物OB及び真球11a,11b,11cの3次元表面形状を測定するとともに同測定した3次元表面形状を表す3次元データを出力するものであれば、いかなる3次元カメラをも利用できる。本実施形態においては、レーザ光を用いて3角測量法に従って物体の3次元表面形状を測定するものを簡単に紹介しておく。
【0021】
この3次元カメラ20においては、レーザ光源から物体に向けて出射されるレーザ光の進行方向にほぼ垂直な仮想平面を想定するとともに、同仮想平面上にて互いに直交するX軸方向およびY軸方向に沿って分割した多数の微小エリアを想定する。そして、3次元カメラ20は、前記多数の微小エリアにレーザ光を順次照射し、物体からの散乱光によって前記微小エリアが規定する物体表面までの距離をZ軸方向距離として順次検出して、物体の表面を微小エリアずつに分割した各分割エリア位置を表すX,Y,Z座標に関する情報を得て、3次元カメラ20に面した物体表面の形状を測定するものである。
【0022】
したがって、この3次元カメラは、出射レーザ光の向きをX軸方向に変化させるX軸方向走査器と、出射レーザ光の向きをY軸方向に変化させるY軸方向走査器と、物体表面にて反射された反射レーザ光を受光して物体表面までの距離を検出する距離検出器とを備えている。X軸方向走査器およびY軸方向走査器としては、レーザ光源からの出射レーザ光の光路をX軸方向およびY軸方向に独立に変化させ得る機構であればよく、例えばレーザ光源自体をX軸方向およびY軸方向の軸線回りに電動モータによって回転させたり、出射レーザ光の光路に設けられてその方向を変更するガルバノミラーをX軸方向およびY軸方向の軸線回りに電動モータによって回転させる機構を利用できる。距離検出器としては、前記出射レーザ光の光路に追従して回転し、物体表面にて反射(散乱)された反射レーザ光(散乱光)を集光する結像レンズおよび同集光したレーザ光を受光するCCDなどの複数の受光素子を一列に配置させたラインセンサからなり、ラインセンサによる反射レーザ光の受光位置によって物体表面までの距離を検出する機構を利用できる。
【0023】
したがって、このような3次元カメラ20は、物体の表面を微小エリアずつに分割した各分割エリア位置を表すX,Y,Z座標に関する情報として、X軸方向走査器による出射レーザ光の基準方向に対するX軸方向への傾きθx、Y軸方向走査器による出射レーザ光の基準方向に対するY軸方向への傾きθy、および距離検出器による物体表面までの距離Lzとを、前記仮想したX軸方向およびY軸方向に沿って分割した多数の微小エリアごとに検出する。より具体的には、X軸およびY軸方向への傾きθx,θyは、電動モータの基準位置からの回転角である。また、物体表面までの距離Lzは、ラインセンサにおける反射レーザ光の受光位置である。そして、これら傾きθx,θy及び距離Lzは、X,Y,Z座標値に変換されて出力される。なお、X,Y,Z座標値への変換は、3次元カメラ20からの出力を受けるコントローラ30及びデータ処理装置40で行われるようにしたり、3次元カメラ20とコントローラ30及びデータ処理装置40との間に変換器を設けて行われるようにしてもよい。
【0024】
この3次元カメラ20には、コントローラ30およびデータ処理装置40が接続されている。コントローラ30は、CPU、ROM、RAM、及びハードディスクなどの大容量の不揮発性メモリを有するコンピュータ装置によって構成され、キーボードからなる入力装置31からの指示に従って、3次元カメラ20、モータ16,17,18及びデータ処理装置40の作動を制御する。具体的には、コントローラ30は、作業者による入力装置からの入力又は内蔵するプログラムの実行により、3次元カメラ20に測定を指令し、ステージ10を回転するモータ16,17,18を指定した角度だけ回転させる。また、モータ16,17,18からは内蔵の回転角センサからステージ10の各回転軸A,B,C周りの回転角が入力されているとともに、データ処理装置40に回転角度データを出力する。さらに、コントローラ30は、プログラム処理により、座標変換係数を計算する。
【0025】
データ処理装置40も、CPU、ROM、RAM、及びハードディスクなどの大容量の不揮発性メモリを有するコンピュータ装置によって構成され、コントローラ30からの指令により、3次元カメラ20からの3次元データの座標変換を含む処理を実行して3次元画像データを作成し、この3次元画像データを用いて表示装置41に3次元画像を表示する。また、データ処理装置40は、座標変換係数、定点座標などの測定対象物OBの3次元形状の計算に必要なデータをRAM,不揮発性メモリなどに記憶する。
【0026】
b.座標変換係数の設定
このように構成された3次元形状測定システムにおいて、作業者は、初回のみ各回転軸A,B,C周りにおける回転角度ごとの座標変換係数を取得し、取得した座標変換係数をデータ処理装置40に供給するための作業を行う。
【0027】
まず、作業者は、図3に示すように、ステージ10の外周近傍の3つの穴10a,10b,10cに、棒付き真球11a,11b,11cを組み付ける。これらの真球11a,11b,11cの半径はそれぞれ異なる。真球11a,11b,11cの半径を異ならせる理由は、3次元カメラ20による3次元形状測定によって取得された3次元データから、指定した真球11a,11b,11cの3次元データを抽出するのを容易にするためである。また、作業者は、3次元カメラ20を支持装置21に支持させて、3次元カメラ20に真球11a,11b,11cの3次元形状を測定させる。
【0028】
次に、作業者は、入力装置31を操作して、コントローラ30に図4A及び図4Bの座標変換係数設定プログラムを実行させる。この座標変換係数設定プログラムの実行は図4AのステップS100にて開始され、コントローラ30は、ステップS102にて、ステージ10の回転軸A,B,C周りの回転角度が基準回転角度(すなわち0度)になるように、モータ16,17,18を回転制御する。以下、この状態をステージ10の基準位置といい、このステージ10が基準位置にある状態で図1及び図3に示す位置にある3次元カメラ20で取得した3次元データを基準座標系による3次元データという。次に、コントローラ30は、ステップS104にて検出対象物体の特徴の入力処理を実行する。この入力処理においては、表示装置31に検出対象物体の特徴を入力するように表示して、作業者に検出対象物体の特徴の入力を促す。本実施形態の場合には、真球11a,11b,11cが球であること、及び真球11a,11b,11cの半径の入力を促す。作業者が入力装置31を操作して前記特徴を入力すると、コントローラ30はこの特徴を一時記憶して、ステップS106の基準定点座標取得ルーチンを実行する。この基準定点座標取得ルーチンは、基準位置にあるステージ10上に設定した3つの定点の座標を取得する処理であり、本実施形態では前記ステージ10に組み付けた真球11a,11b,11cの中心点のX,Y,Z座標値を取得する処理である。なお、これらのX,Y,Z座標値は、基準座標系による座標値である。
【0029】
この基準定点座標取得ルーチンの詳細は図5に示されており、コントローラ30は、この基準定点座標取得ルーチンの実行をステップS200にて開始する。この基準定点座標取得ルーチンの実行開始後、コントローラ30は、ステップS202にて、3次元カメラ20にステージ10上の真球11a,11b,11cを含む3次元形状の測定を指示し、その後に、3次元カメラ20から測定結果である3次元データを入力して一時的に記憶する。次に、コントローラ30は、ステップS204にて、前記入力した全ての3次元データの中から、真球11a,11b,11cごとに、各真球11a、11b、11cの表面の3次元形状を表す3次元データをそれぞれ抽出する。この種の3次元データの抽出技術は従来から知られた技術(例えば、特開2004−333371号公報、特開2005−249402号公報参照)であるが、簡単に説明しておく。
【0030】
<3次元データの抽出>
前記入力された検出対象物体の特徴(球体及び半径)を表すデータを用いて、単位ブロックおよび探索ブロックのサイズ設定処理を実行する。単位ブロックは、検出対象物体の存在位置を特定するために探索ブロックを移動させる最小のブロックであり、例えば立方体に形成されている。また、この単位ブロックのサイズは、検出対象物体の一部が存在することを確認可能である程度に小さく設定される。探索ブロックは、検出対象物体をその内部に包含する位置を特定するために利用されるもので、本実施形態では立方体に形成されている。この探索ブロックのサイズは、検出対象物体の全てを包含できるとともに、なるべく小さく設定される。ただし、この検出対象物体を包含できるとは、検出対象物体の一部でも含む単位ブロックの全てを含むことを意味する。
【0031】
次に、探索領域のブロック化処理を実行する。この探索領域のブロック化処理は、測定対象領域内で検出対象物体の含まれる可能性のある領域を単位ブロックで分割する処理である。基本的には、測定対象空間内のうち3次元データが存在する空間を単位ブロックで立体的に分割する。分割は、X,Y,Z座標の各座標軸に沿って単位ブロックを並べていく方法で行う。そして、前記分割した各単位ブロックごとに3次元データが所定個数以上あるかを調べて、3次元データが所定個数以上ある単位ブロックを抽出する。次に、検出対象物体を含む可能性のある探索ブロック位置の検出処理を行う。この探索ブロック位置の検出においては、前記単位ブロックに分割した領域にて、前記設定した探索ブロックを単位ブロックを単位として、X軸、Y軸およびZ軸方向に順次移動させる。そして、各移動ごとに、移動後の探索ブロック内に含まれるとともに前記抽出された単位ブロックの個数を計算する。前記単位ブロックの数が所定の範囲内であれば、該当する探索ブロック位置であるとして、同位置が検出される。なお、検出対象物体は球体であるので、3次元カメラ20と対向する側に位置して3次元データが得られる箇所と、3次元カメラ20と対向しない側に位置して3次元データが得られない箇所の割合は、ほぼ同じであるので、球体の半径が特定されれば、探索ブロック内に含まれる単位ブロックの数は設定される。これにより、検出対象物体より半径の小さな球体を、単位ブロックの数が所定範囲外であるとして、除外することができる。
【0032】
次に、前記検出した位置の探索ブロック内に含まれる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(球の半径)と前記特徴として入力した半径との差が所定の判別値以内であり、かつ各3次元データの球体中心からの距離の偏差が所定の判別値以内であれば、前記探索ブロック内の3次元データは合致するとして、同3次元データを抽出する。一方、前記差または偏差が所定の判別値以内でなければ、前記探索ブロック内の3次元データは合致しないとして、同3次元データを抽出しない。これにより、真球11a,11b,11cごとに、真球11a,11b,11cに関する3次元データがそれぞれ抽出される。
【0033】
(数1)
(x−a) 2+(y−b) 2+(z−c)2−d2=0
【0034】
ここで、ふたたび、図5の基準定点座標取得ルーチンの説明に戻る。前記ステップS204の処理後、コントローラ30は、ステップS206にて、真球11a,11b,11cごとに真球11a,11b,11cの中心座標、すなわちステージ10上に設けた3つの定点のX,Y,Z座標値を計算する。具体的には、真球11a,11b,11cごとに、前記ステップS204の処理によって抽出した各真球11a,11b,11cに関する3次元データ(X,Y,Z座標値)を前記球体を表す式である下記数1のx,y,zにそれぞれ代入するとともに、値dとして前記ステップS104で入力した半径を採用して、最小2乗法を用いて未知数a,b,cをそれぞれ計算する。そして、前記真球11a,11b,11cごとに計算した未知数a,b,cが、それぞれ真球11a,11b,11cの中心座標すなわち3つ定点のX,Y,Z座標値(Xa0,Ya0,Za0),(Xb0,Yb0,Zb0),(Xc0,Yc0,Zc0)である。
【0035】
前記ステップS206の処理後、コントローラ30は、ステップS208にて、ハードディスクなどの不揮発性メモリに、前記3つ定点のX,Y,Z座標値(Xa0,Ya0,Za0),(Xb0,Yb0,Zb0),(Xc0,Yc0,Zc0)を、ステージ10が基準位置にあるときの3つの定点の座標すなわち基準定点座標(基準座標系における定点の座標)として記憶しておく。そして、コントローラ30は、ステップS210にて基準定点座標取得ルーチンの実行を終了して、図4AのステップS108に戻る。
【0036】
コントローラ30は、ステップS108にて、変数nを「0」に初期設定して、ステップS110〜S116からなる循環処理を実行する。変数nは、ステージ10の回転角度を、前記循環処理ごとに所定角度Q(例えば、1度)ずつ順次変化させるための変数である。ステップS110〜S116からなる循環処理においては、コントローラ30は、ステップS110にて変数nに「1」を加算し、ステップS112にてステージ10の回転軸A周りの回転角度n・Qが予め決められた上限角度Amaxよりも大きいかを判定する。回転角度n・Qが上限角度Amaxよりも大きくなければ、コントローラ30は、ステップS112にて「No」と判定して、ステップS114にて、モータ16を制御して、ステージ10を回転軸A周りの正方向に回転させて、ステージ10の回転軸A周りの回転角度をn・Q度に設定する。そして、コントローラ30は、ステップS116にて座標変換係数取得ルーチンを実行する。
【0037】
この座標変換係数取得ルーチンは図6に詳細に示されており、コントローラ30は、ステップS250にて座標変換係数取得ルーチンの実行を開始する。この座標変換係数取得ルーチンの実行開始後、コントローラ30は、上述した図5のステップS202〜206と同様なステップS252〜S256の処理を実行して、真球11a,11b,11cの中心座標すなわち3つ定点のX,Y,Z座標値(Xa1,Ya1,Za1),(Xb1,Yb1,Zb1),(Xc1,Yc1,Zc1)を計算する。ただし、この場合、ステージ10は回転軸A周りに基準位置からn・Q度だけ回転した位置にあり、この計算された3つ定点のX,Y,Z座標値(Xa1,Ya1,Za1),(Xb1,Yb1,Zb1),(Xc1,Yc1,Zc1)は、前記ステージ10が基準位置にある状態で3次元カメラ20によって測定した3次元データを用いて計算した3つの定点のX,Y,Z座標値(Xa0,Ya0,Za0),(Xb0,Yb0,Zb0),(Xc0,Yc0,Zc0)とは異なる。
【0038】
前記ステップS252〜S256の処理後、コントローラ30は、ステップS258にて、ステージ10を回転軸A周りに基準位置からn・Q度だけ回転した状態で3次元カメラ20によって測定した3次元データの座標値を、ステージ10が基準位置にある状態で3次元カメラ20によって測定した3次元データの座標値(基準座標系の座標値)に変換するための座標変換係数を計算する。この座標変換係数の計算は、前記計算したステージ10を回転軸A周りに基準位置からn・Q度だけ回転させた状態における3つの定点のX,Y,Z座標値(Xa1,Ya1,Za1),(Xb1,Yb1,Zb1),(Xc1,Yc1,Zc1)を、ステージ10が基準位置にある状態における3つの定点のX,Y,Z座標値(Xa0,Ya0,Za0),(Xb0,Yb0,Zb0),(Xc0,Yc0,Zc0)に変換させるための座標変換係数を計算することを意味するもので、両X,Y,Z座標値(Xa1,Ya1,Za1),(Xb1,Yb1,Zb1),(Xc1,Yc1,Zc1),(Xa0,Ya0,Za0),(Xb0,Yb0,Zb0),(Xc0,Yc0,Zc0)を用いて行われる。また、この種の座標変換係数の計算は従来から知られている技術(例えば、特開2005−352630号公報、特開2005−249402号公報参照)であるが、簡単に説明しておく。
【0039】
<座標変換係数の計算>
まず、ステージ10を回転軸A周りに基準位置からn・Q度だけ回転させた状態において得た3次元データは第1座標系の3次元データであり、基準座標系を第2座標系であると仮定する。したがって、第1座標系の座標軸をX軸、Y軸およびZ軸回りにそれぞれ所望の角度だけ回転させるとともに、同第1座標系の原点をX軸方向、Y軸方向およびZ軸方向にそれぞれa,b,cだけ移動させれば、第2座標系の座標軸と同じになるはずである。そこで、第1座標系における一点の座標値を(x’,y’,z’)とし、第2座標系における同一点の座標値を(x,y,z)とすると、下記数2が成立するとともに、同数2中の行列Mは下記数3によって表される。そして、前記座標変換係数の計算は、前記数2および数3中の行列値g11,g12,g13,g21,g22,g23,g31,g32,g33および行列値a,b,cを計算することを意味する。
【0040】
【数2】
【0041】
【数3】
【0042】
ここで、第1座標系における3つの定点のX,Y,Z座標値(Xa1,Ya1,Za1),(Xb1,Yb1,Zb1),(Xc1,Yc1,Zc1)及び第2座標系の3つの定点のX,Y,Z座標値(Xa0,Ya0,Za0),(Xb0,Yb0,Zb0),(Xc0,Yc0,Zc0)を前記数2に代入すれば、下記数4〜6の関係が成立する。
【0043】
【数4】
【0044】
【数5】
【0045】
【数6】
【0046】
前記数4を変形すると、下記数7の連立方程式が成立する。
【0047】
【数7】
【0048】
また、前記3つの定点を含む平面の法線ベクトルの第1座標系における成分を(α’,β’,γ’)とし、第2座標系における同平面の法線ベクトルを(α,β,γ)とすると、2つの法線ベクトルの大きさが同じであれば一般的には次の数8が成立する。なお、同数8中の行列Mは、前記数3によって表される。
【0049】
【数8】
【0050】
第2座標系および第1座標系におけるすべての定点を含む平面の法線ベクトルを、真球11bの中心(第2定点)から真球11aの中心(第1定点)に向かうベクトルと、真球11cの中心(定点)から真球11bの中心(第2定点)に向かうベクトルとの外積により成立するベクトルとすると、第2座標系における法線ベクトル及び第1座標系における法線ベクトルは下記数9によって表される。
【0051】
【数9】
【0052】
前記数9を前記数8に当てはめると、下記数10が成立する。
【0053】
【数10】
【0054】
前記数10の1番目の式を前記数7に加えれば、下記数11の連立方程式となる。
【0055】
【数11】
【0056】
この数11の連立方程式を解くことにより、行列値g11,g12,g13を計算することができる。また、前記数5および数6に関しても、前記数7の連立方程式のように変形し、数10の2番目の式または3番目の式を加えれば、数11の連立方程式と同様の連立方程式ができるので、これを解くことで、行列値g21,g22,g23および行列値g31,g32,g33を計算できる。そして、これらの計算した行列値を前記数4〜6に代入すれば、行列値a,b,cを計算できる。これにより、第1座標系すなわちステージ10が回転軸A周りに基準位置からn・Q度だけ回転した状態の3次元データの座標系の座標値(x’,y’,z’)を、第2座標系すなわち基準座標系における座標値(x,y,z)に変換するための座標変換係数が計算される。
【0057】
ここで、ふたたび、図6の座標変換係数取得ルーチンの説明に戻る。前記ステップS258による座標変換係数である行列値g11,g12,g13,g21,g22,g23,g31,g32,g33及び行列値a,b,cの計算後、コントローラ30は、ステップS260にて、前記計算した座標変換係数を、回転軸A周りの回転角度がn・Q度であることと共に、ハードディスクなどの不揮発性メモリに記憶する。そして、コントローラ30は、ステップS262にて座標変換係数取得ルーチンの実行を終了して、図4AのステップS110に戻る。
【0058】
コントローラ30は、ステップS110にて変数nに「1」を加算し、ステージ10の回転軸A周りの回転角度n・Qが予め決められた上限角度Amaxよりも大きくならない限り、ステップS112にて「No」と判定して前述したステップS114,S116の処理を実行する。これにより、ステージ10を回転軸A周りの正方向にQ度ずつ回転させながら、前述した座標変換係数を計算して不揮発性メモリに記憶していく。その結果、不揮発性メモリには、ステージ10を基準位置からほぼ上限角度Amaxまで回転軸A周りにQ度ずつ正方向に回転させた状態における座標変換係数がステージ10の回転角度n・Q度にそれぞれ対応させて記憶される。本実施形態では、Q度を1度に設定したので、1度ごとの座標変換係数が不揮発性メモリに記憶されることになる。なお、このQ度を1度以外の値に設定すれば、1度以外の予め決めたQ度ごとの座標変換係数が不揮発性メモリに記憶される。この点に関しては、後述する他の座標変換係数についても同様である。そして、回転軸A周りのステージ10の回転角度n・Qが上限角度Amaxより大きくなると、コントローラ30は、ステップS112にて「Yes」と判定して、ステップS118に進む。
【0059】
コントローラ30は、ステップS118にて、変数nを「0」に初期設定して、ステップS120〜S126からなる循環処理を実行する。このステップS120〜S126からなる循環処理は、ステップS122,S124の処理が前述したステップS112,S114の処理と若干異なる以外、前述したステップS110〜S116からなる処理と同じである。ステップS122においては、ステージ10の回転軸A周りの回転角度−n・Qが予め決められた下限角度−Amaxよりも小さいかが判定される。ステップS124においては、モータ16が制御されて、ステージ10が回転軸A周りの負方向に回転されて、ステージ10の回転軸A周りの回転角度が−n・Q度に設定される。その結果、このステップS120〜S126の循環処理により、ステージ10の回転軸A周りの回転角度が基準位置(0度)からほぼ下限角度−Amaxまでにわたって、Q度ごとに、3次元カメラ20による3次元データを基準座標系の3次元データに変換するための座標変換係数が計算されて、ステージ10の回転軸A周りの回転角度−n・Qに対応させて不揮発性メモリに記憶される。そして、回転軸A周りのステージ10の回転角度−n・Qが下限角度−Amaxより小さくなると、コントローラ30は、ステップS122にて「Yes」と判定して、ステップS128に進む。
【0060】
コントローラ30は、ステップS128にて、ステージ10の回転軸A周りの回転角度が基準回転角度(すなわち0度)になるように、モータ16を回転制御する。この場合、ステージ10の回転軸B及び回転軸C周りの回転角度は前述したステップS102の処理によって基準回転角度(すなわち0度)に既に設定されているので、ステージ10は基準位置に戻されることになる。次に、コントローラ30は、ステップS130にて変数nを「0」に初期設定して、ステップS132〜S148からなる処理を実行する。このステップS132〜S148からなる処理は、ステップS134,S136,S144,S146の処理が前述したステップS112,S114,S122,S124の処理と若干異なる以外、前述したステップS110〜S126からなる処理と同じである。
【0061】
ステップS134においては、ステージ10の回転軸B周りの回転角度n・Qが予め決められた上限角度Bmaxよりも大きいかが判定される。ステップS136においては、モータ17が制御されて、ステージ10が回転軸B周りの正方向に回転されて、ステージ10の回転軸B周りの回転角度がn・Q度に設定される。ステップS144においては、ステージ10の回転軸B周りの回転角度−n・Qが予め決められた下限角度−Bmaxよりも小さいかが判定される。ステップS146においては、モータ16が制御されて、ステージ10が回転軸B周りの負方向に回転されて、ステージ10の回転軸B周りの回転角度が−n・Q度に設定される。その結果、このステップS132〜S148の処理により、ステージ10の回転軸B周りの回転角度がほぼ下限角度−Bmaxからほぼ上限角度Bmaxまでにわたって、Q度ごとに、3次元カメラ20による3次元データを基準座標系の3次元データに変換するための座標変換係数が計算されて、ステージ10の回転軸B周りの回転角度n・Q,−n・Qに対応させて不揮発性メモリに記憶される。そして、回転軸B周りのステージ10の回転角度−n・Qが下限角度−Bmaxより小さくなると、コントローラ30は、ステップS144にて「Yes」と判定して、図4BのステップS150に進む。
【0062】
コントローラ30は、ステップS150にて、ステージ10の回転軸B周りの回転角度が基準回転角度(すなわち0度)になるように、モータ17を回転制御する。この場合、ステージ10の回転軸A及び回転軸C周りの回転角度は前述したステップS128,S102の処理によって基準回転角度(すなわち0度)に既に設定されているので、ステージ10は基準位置に戻されることになる。次に、コントローラ30は、ステップS150にて変数nを「0」に初期設定して、ステップS154〜S160からなる循環処理を実行する。このステップS154〜S160からなる循環処理は、ステップS156,S158の処理が前述したステップS112,S114(又はステップS134,S136)の処理と若干異なる以外、前述したステップS110〜S116(又はステップS132〜S138)からなる循環処理と同じである。
【0063】
ステップS156においては、ステージ10の回転軸C周りの回転角度n・Qが予め決められた所定角度360度よりも大きいかが判定される。ステップS158においては、モータ18が制御されて、ステージ10が回転軸C周りの正方向に回転されて、ステージ10の回転軸C周りの回転角度がn・Q度に設定される。その結果、このステップS154〜S160からなる循環処理により、ステージ10の回転軸C周りの回転角度が基準角度(0度)からほぼ360度までにわたって、Q度ごとに、3次元カメラ20による3次元データを基準座標系の3次元データに変換するための座標変換係数が計算されて、ステージ10の回転軸C周りの回転角度n・Qに対応させて不揮発性メモリに記憶される。そして、回転軸C周りのステージ10の回転角度n・Qが所定角度360度より大きくなると、コントローラ30は、ステップS156にて「Yes」と判定して、ステップS162に進む。ステップS162においては、前記ステップS116,S126,S138,S148,S160の座標変換係数取得ルーチンの処理により記憶した回転軸A,B,Cに関する各座標変換係数(行列値g11,g12,g13,g21,g22,g23,g31,g32,g33及び行列値a,b,c)をデータ処理装置40に出力する。前記ステップS162の処理後、コントローラ30はステップS164にて座標変換係数設定プログラムの実行を終了する。
【0064】
前記データ処理装置40に出力された回転軸A,B,Cに関する各座標変換係数は、図示しないプログラム処理により、データ処理装置40のハードディスクなどの不揮発性メモリに記憶される。ここで、データ処理装置40に記憶された回転軸A,B,Cに関する座標変換係数について整理しておく。回転軸Aに関する座標変換係数は、ステージ10を回転軸A周りに下限角度−Amaxから上限角度Amaxまで微小な所定角度Q(例えば、1度)ずつ回転させてステージ10上の物体を3次元カメラ20で測定したとき、各回転位置ごとの3次元カメラ20による測定結果である3次元データを、ステージ10の回転軸A周りの回転角度が基準角度(例えば、0度)にある状態(ステージ10が基準位置にある状態)で3次元カメラ20によって測定したステージ10上の物体の3次元データに変換するための行列値g11,g12,g13,g21,g22,g23,g31,g32,g33からなる行列M及び行列値a,b,cである。ここで、回転軸B、C周りの回転に関する座標変換係数と区別するために、以降、この回転軸A周りの回転に関する座標変換係数に関し、前記行列Mを行列MAとするとともに、前記行列値a,b,cを行列値aA,bA,cAとする。
【0065】
また、回転軸Bに関する座標変換係数は、ステージ10を回転軸B周りに下限角度−Bmaxから上限角度Bmaxまで微小な所定角度Q(例えば、1度)ずつ回転させてステージ10上の物体を3次元カメラ20で測定したとき、各回転位置ごとの3次元カメラ20による測定結果である3次元データを、ステージ10の回転軸B周りの回転角度が基準角度(例えば、0度)にある状態(ステージ10が基準位置にある状態)で3次元カメラ20によって測定したステージ10上の物体の3次元データに変換するための行列値g11,g12,g13,g21,g22,g23,g31,g32,g33からなる行列M及び行列値a,b,cである。ここで、回転軸A、C周りの回転に関する座標変換係数と区別するために、以降、この回転軸B周りの回転に関する座標変換係数に関し、前記行列Mを行列MBとするとともに、前記行列値a,b,cを行列値aB,bB,cBとする。
【0066】
また、回転軸Cに関する座標変換係数は、ステージ10を回転軸C周りに0度から360度まで微小な所定角度Q(例えば、1度)ずつ回転させてステージ10上の物体を3次元カメラ20で測定したとき、各回転位置ごとの3次元カメラ20による測定結果である3次元データを、ステージ10の回転軸C周りの回転角度が基準角度(例えば、0度)にある状態(ステージ10が基準位置にある状態)で3次元カメラ20によって測定したステージ10上の物体の3次元データに変換するための行列値g11,g12,g13,g21,g22,g23,g31,g32,g33からなる行列M及び行列値a,b,cである。ここで、回転軸A、B周りの回転に関する座標変換係数と区別するために、以降、この回転軸C周りの回転に関する座標変換係数に関し、前記行列Mを行列MCとするとともに、前記行列値a,b,cを行列値aC,bC,cCとする。
【0067】
c.測定対象物の測定
次に、測定対象物OBを3次元カメラ20で測定する動作について説明する。この場合、作業者は入力装置31を操作して測定対象物OBを測定することをコントローラ30に入力する。コントローラ30は、図7のステップS300にて対象物測定プログラムの実行を開始する。この測定対象物OBを測定することはデータ処理装置40に供給され、データ処理装置40は、ステップS400にて画像データ生成プログラムの実行を開始する。まず、図1に示すように、測定対象物OBをステージ10上に載置固定する。はじめに、3次元カメラ20を前述した座標変換係数設定プログラムの実行時の位置に固定して、3次元カメラ20を用いて測定対象物OBの3次元形状を測定する場合について説明する。
【0068】
作業者は、入力装置31を操作して、ステージ10の回転軸A,B,C周りの回転位置を指示すると、コントローラ30は、図示しないプログラムの実行により、モータ16,17,18を駆動制御して、作業者によって指示された回転位置までステージ10を回転軸A,B,C周りに回転させる。そして、作業者は、入力装置31を操作して、コントローラ30に測定対象物OBの測定開始を指示する。前記測定開始の指示により、コントローラ30は、図7のステップS302にて「Yes」と判定し、ステップS304にて測定開始の指示があったことをデータ処理装置40に知らせる。次に、コントローラ30は、ステップS306にて、モータ16,17,18に内蔵されている回転角センサから、ステージ10の各回転軸A,B,C周りの回転角度をそれぞれ入力して、データ処理装置40に出力する。次に、コントローラ30は、ステップS308にて、3次元カメラ20に測定開始を指示して、後述するステップS310以降の処理を実行する。この測定開始の指示により、3次元カメラ20は、ステージ10上の測定対象物OBの3次元形状の測定を開始し、測定した3次元形状を表す3次元データを順次出力する。
【0069】
一方、データ処理装置40は、前記コントローラ30によるステップS304の対象物測定開始の指示の入力に応答して、図8のステップS402にて「Yes」と判定し、ステップS404にてコントローラ30からのステージ10の回転軸A,B,C周りの回転角度の入力を待つ。そして、前記ステップS306の処理によりコントローラ30から回転角度が入力されると、コントローラ30は、ステップS406にて、前記コントローラ30から出力された回転角度を入力してRAM又は不揮発性メモリに記憶する。次に、データ処理装置40は、ステップS408にて、3次元カメラ20からの3次元データの入力開始を待つ。そして、前記3次元カメラ20から3次元データが供給され始めると、データ処理装置40は、ステップS410にて3次元カメラ20から順次出力される測定対象物OBに関する3次元データを順次入力してRAM又は不揮発性メモリに記憶する。このステップS410の処理は、3次元カメラ20からの3次元データの入力が終了するまで実行され続ける。3次元カメラ20からの3次元データの入力が終了すると、データ処理装置40は、ステップS412にて「Yes」と判定して、ステップS414以降に進む。この段階では、3次元カメラ20によって取得された全ての3次元データがRAM又は不揮発性メモリに記憶されている。
【0070】
ステップS414においては、カメラ移動フラグCMFが“1”であるか否かが判定される。このカメラ移動フラグCMFは、“0”により、回転軸A,B,C周りの回転に関する座標変換係数の取得時と同じ位置に3次元カメラ20を固定したまま測定対象物OBの3次元データを取得する状態を表し、“1”により前記位置から3次元カメラ20を移動して測定対象物OBの3次元データを取得する状態を表しており、初期においては“0”に設定されている。今、3次元カメラ20はステージ10の回転軸A,B,C周りの回転に対する座標変換係数を取得した状態に固定されているので、カメラ移動フラグは“0”であり、コントローラ30は、ステップS414にて「No」と判定してステップS418以降の処理を行う。
【0071】
ステップS418においては、データ処理装置40は、前記ステップS410の処理によって3次元カメラ20から入力して記憶しておいた3次元データを、ステージ10の回転軸A周りの回転角度が基準角度(例えば、0度)にある状態(ステージ10が基準位置にある状態)で3次元カメラ20によって取得したステージ10上の物体の3次元データに変換する。この場合、ステージ10を回転軸A周りに下限角度−Amaxから上限角度Amaxまで回転させて取得して不揮発性メモリに記憶しておいた、微小な所定角度Qごとの座標変換係数(行列MAの行列値g及び行列値aA,bA,cA)の中から、前記コントローラ30から入力して一時的に記憶した回転軸A周りの回転角度に対応した座標変換係数(行列MAの行列値g及び行列値aA,bA,cA)を選択する。なお、前記行列値g及び以降の説明における行列値gは、前述した行列値g11,g12,g13,g21,g22,g23,g31,g32,g33を簡単に記述したものである。そして、前記3次元カメラ20から入力されて一時的に記憶した3次元データを、前記選択した座標変換係数(行列MAの行列値g及び行列値aA,bA,cA)を用いて下記数12の演算の実行により座標変換する。なお、下記数12中の座標値(X,Y,Z)は3次元カメラ20によって実際に取得された3次元データであり、座標値(XA,YA,ZA)は、ステージ10の回転軸A周りの回転角度が基準角度にある状態で3次元カメラ20によって測定したステージ10上の物体の3次元データである。
【0072】
【数12】
【0073】
この場合、ステージ10の回転機構が、座標変換係数を取得した際の回転角度Qの間隔で回転角度が変化する機構であれば、前記記憶した座標変換係数をそのまま使用すればよい。しかし、ステージ10の回転角度が連続して変化する機構であれば、補間演算により変換された座標値を計算する。この補間においては、前記入力した回転角度を挟む(n−1)・Q度及びn・Q度に対応した2組の座標変換係数を読み出して、2組の座標変換係数を用いて2組の座標値(XA1,YA1,ZA1),(XA2,YA2,ZA2)を計算した後に、前記入力した回転角度の(n−1)・Q度及びn・Q度に対する差に応じた補間演算により最終の座標値(XA,YA,ZA)を算出するとよい。また、前記(n−1)・Q度及びn・Q度に対応した2組の座標変換係数を、前記入力した回転角度の(n−1)・Q度及びn・Q度に対する差に応じて補間演算して一つの座標変換係数を計算し、この補間演算によって計算した座標変換係数を用いた前記数12の演算の実行により最終の座標値(XA,YA,ZA)を算出してもよい。なお、前記入力した回転角度が基準回転角度であれば、すなわちステージ10を基準位置から回転軸A周りに回転していない場合には、前記ステップS418の座標変換処理を行わない。
【0074】
前記ステップS418の処理後、データ処理装置40は、ステップS420にて、前記座標変換された3次元データを、ステージ10の回転軸B周りの回転角度が基準角度(例えば、0度)にある状態(ステージ10が基準位置にある状態)で3次元カメラ20によって取得したステージ10上の物体の3次元データに変換する。この場合、ステージ10を回転軸B周りに下限角度−Bmaxから上限角度Bmaxまで回転させて取得して不揮発性メモリに記憶しておいた、微小な所定角度Qごとの座標変換係数(行列MBの行列値g及び行列値aB,bB,cB)の中から、前記コントローラ30から入力して一時的に記憶した回転軸B周りの回転角度に対応した座標変換係数(行列MBの行列値g及び行列値aB,bB,cB)を選択する。そして、前記ステップS410の処理によって座標変換した座標値(XA,YA,ZA)を、前記選択した座標変換係数(行列MBの行列値g及び行列値aB,bB,cB)を用いて下記数13の演算の実行により座標変換する。なお、下記数13中の座標値(XB,YB,ZB)は、ステージ10の回転軸B周りの回転角度が基準角度にある状態で3次元カメラ20によって測定したステージ10上の物体の3次元データである。
【0075】
【数13】
【0076】
この場合も、前記コントローラ30から入力した回転軸B周りの回転角度が連続していてn・Q度ごとの角度の間の角度がある場合には、前記ステップS418の場合と同様に、補間演算により変換された座標値を計算する。また、前記入力した回転角度が基準回転角度であれば、すなわちステージ10を基準位置から回転軸B周りに回転していない場合には、前記ステップS420の座標変換処理を行わない。
【0077】
前記ステップS420の処理後、データ処理装置40は、ステップS422にて、前記座標変換された3次元データを、ステージ10の回転軸C周りの回転角度が基準角度(例えば、0度)にある状態(ステージ10が基準位置にある状態)で3次元カメラ20によって取得したステージ10上の物体の3次元データに変換する。この場合、ステージ10を回転軸C周りに0度から360度まで回転させて取得して不揮発性メモリに記憶しておいた、微小な所定角度Qごとの座標変換係数(行列MCの行列値g及び行列値aC,bC,cC)の中から、前記コントローラ30から入力して一時的に記憶した回転軸C周りの回転角度に対応した座標変換係数(行列MCの行列値g及び行列値aC,bC,cC)を選択する。そして、前記ステップS420の処理によって座標変換した座標値(XB,YB,ZB)を、前記選択した座標変換係数(行列MC及び行列値aC,bC,cC)を用いて下記数14の演算の実行により座標変換する。なお、下記数14中の座標値(XC,YC,ZC)は、ステージ10の回転軸C周りの回転角度が基準角度にある状態で3次元カメラ20によって測定したステージ10上の物体の3次元データである。
【0078】
【数14】
【0079】
この場合も、前記コントローラ30から入力した回転軸C周りの回転角度が連続していてn・Q度ごとの角度の間の角度がある場合には、前記ステップS418,S420の場合と同様に、補間演算により変換された座標値を計算する。また、前記入力した回転角度が基準回転角度であれば、すなわちステージ10を基準位置から回転軸C周りに回転していない場合には、前記ステップS422の座標変換処理を行わない。
【0080】
このようなステップS418、S420,S422の処理により、回転軸A周り、回転軸B周り及び回転軸C周りの順に座標変換を行う理由は、図1に示すように、ステージ10の回転軸Aは残り2つの回転軸B,Cによらず固定されており、回転軸Bは回転軸A周りの回転角度が固定されれば固定され、回転軸Cは残り2つの回転軸A,B周りの回転角度が固定されれば固定されるためである。前記ステップS422の処理後、データ処理装置40は、ステップS424にて、前記ステップS418、S420,S422の処理によって座標変換した1組の3次元データを不揮発性メモリに記憶する。これにより、不揮発性メモリには、ステージ10を回転軸A,B,C周りに所望の角度だけ回転して3次元カメラ20によって取得した3次元データ、すなわち所望の座標系の3次元データを、ステージ10の基準位置に対応した基準座標系の3次元データに変換した1組の3次元データが記憶されることになる。
【0081】
前記ステップS424の処理後、データ処理装置40は、ステップS426にてカメラ座標の座標変換係数をコントローラ30から入力したかを判定する。前記カメラ座標の座標変換係数の入力に関しては詳しく後述するとして、この段階では、前記カメラ座標の座標変換係数の入力はないものとする。したがって、データ処理装置40は、ステップS426にて「No」と判定して、ステップS432に進む。ステップS432においては、データ処理装置は3次元画像データの生成の指示があったかを判定する。前記3次元画像データの生成の指示がなければ、データ処理装置40は、ステップS432にて「No」と判定して、ステップS402に戻る。そして、新たな測定対象物OBの測定指示があるまで、データ処理装置40はステップS402にて「No」判定して、ステップS426に進む。したがって、新たな測定対象物OBの測定指示、カメラ座標の座標変換係数の入力、及び3次元画像データの生成の指示がなければ、データ処理装置40は、ステップS402,S426,S432にてそれぞれ「No」と判定して、ステップS402,S426,S432からなる循環処理を実行し続ける。
【0082】
一方、このような状態で、作業者が、入力装置31をふたたび操作して、ステージ10の回転軸A,B,C周りの回転位置を新たに指示すると、コントローラ30は、前述のように、モータ16,17,18を駆動制御して、作業者によって指示された回転位置までステージ10を回転軸A,B,C周りに回転させる。その後、作業者は、入力装置31を操作することにより、ステージ10上の測定対象物OBの3次元データの取得を指示すると、コントローラ30は、ステップS302にて「Yes」と判定して、前述したステップS304〜S308の処理を実行する。一方、データ処理装置40は、前記コントローラ30のステップS304の処理による対象物の測定指示に応答して、ステップS402にて「Yes」と判定して、前述したステップS404〜S424からなる処理を実行する。これにより、不揮発性メモリには、ステージ10を回転軸A,B,C周りに前記とは異なる所望の角度だけ回転して3次元カメラ20によって取得した3次元データを、ステージ10の基準位置に対応した座標系の3次元データに変換した新たな1組の3次元データが記憶される。そして、作業者は、必要に応じて、ステージ10を回転軸A,B,C周りに必要な回数だけ回転させて、測定対象物OBを3次元カメラ20に測定させることにより、前記回数に対応した組数の3次元データを不揮発性メモリに記憶させることができる。
【0083】
一方、3次元カメラ20を移動させる場合、例えば図9に破線で示す位置にあったカメラ20を実線で示す位置に移動する場合には、カメラ20の移動の前又は後に、前述のように真球11a,11b,11cをステージ10上にセットする。なお、このカメラ20の移動とは、カメラ20を支持装置21に固定したまま支持装置21のみを移動させる場合、支持装置21を固定した状態でカメラ20のみを回転又は変位させる場合、及び支持装置21を移動するとともにカメラ20も回転又は変位させる場合を含む。また、この場合、3次元カメラ20の移動後の測定対象物OBの測定の際に、測定対象物OBのステージ10に対する位置を3次元カメラ20の移動前の測定対象物OBのステージ10に対する位置に合わせる必要があるために、測定対象物OBをステージ10上から除去しなくても、真球11a,11b,11cの測定が可能であれば、測定対象物OBをステージ10上に残しておくことが好ましい。測定対象物OBをステージ10上から除去する場合には、測定対象物OBのステージ10に対する設置位置を再現できるように印などをステージ10上に付しておくとよい。前記3次元カメラ20の移動及び真球11a,11b,11cのセット後、作業者は、入力装置31を操作してカメラ20を移動したことをコントローラ30に入力する。
【0084】
このカメラ20の移動の入力に応答して、コントローラ30は、図7の対象物測定プログラムのステップS310で「Yes」と判定して、前記図4AのステップS102と同様なステップS312の処理により、モータ16,17,18の回転を制御して、ステージ10の回転軸A,B,C周りの回転角度が基準回転角度(すなわち0度)になるように、すなわちステージ10を基準位置に設定する。前記ステップS312の処理後、コントローラ30は、ステップS314にて前述した図6の座標変換係数取得ルーチンを実行する。この座標変換係数取得ルーチンのステップS252〜S256の処理により、新たにセットした真球11a,11b,11cの中心座標すなわち3つ定点のX,Y,Z座標値(Xa1,Ya1,Za1),(Xb1,Yb1,Zb1),(Xc1,Yc1,Zc1)を計算する。そして、ステップS258の処理により、新たな3つ定点のX,Y,Z座標値(Xa1,Ya1,Za1),(Xb1,Yb1,Zb1),(Xc1,Yc1,Zc1)と、前記図4AのステップS106(図5のステップS208)の処理によってRAM又は不揮発性メモリに記憶されていて、ステージ10が基準位置にある状態における3つの定点のX,Y,Z座標値(Xa0,Ya0,Za0),(Xb0,Yb0,Zb0),(Xc0,Yc0,Zc0)とを用いて、座標変換係数が計算される。
【0085】
この場合、移動後の3次元カメラ20によって測定した3次元データの座標値を、回転軸A,B,C周りの回転角度に関する座標変換係数を取得した位置に配置した3次元カメラ20によって測定した3次元データの座標値(基準座標系の座標値)に変換するための座標変換係数が計算される。すなわち、図9に示すように、3次元カメラ20を破線で示す位置(図1及び図3と同一位置)に配置した基準座標系を座標系Sとし、3次元カメラ20を実線で示す位置に配置した座標系を座標系Mとすると、座標系Mの3次元データを座標系Sの3次元データに変換するための座標変換係数が計算される。ここで、前述した回転軸A,B、C周りの回転角度に関する座標変換係数と区別するために、以降、この3次元カメラ20の移動に関する座標変換係数については、前記行列Mを行列MSとするとともに、前記行列値a,b,cを行列値aS,bS,cSとする。そして、前記ステップS258の処理後、ステップS260にて、計算された行列MSの行列値g及び行列値aS,bS,cSは不揮発性メモリに記憶され、ステップS262にて座標変換係数取得ルーチンの実行が終了される。
【0086】
ふたたび図7の対象物測定プログラムの説明に戻ると、前記ステップS314の処理後、コントローラ30は、ステップS316にて、前記計算して不揮発性メモリに記憶した行列MSの行列値g及び行列値aS,bS,cSからなるカメラ座標系の座標変換係数をデータ処理装置40に出力する。
【0087】
このカメラ座標系の座標変換係数の出力に応答して、データ処理装置40は、ステップS426にて「Yes」すなわちカメラ座標の座標変換係数の入力ありと判定して、ステップS428,S430の処理を実行する。ステップS428においては、コントローラ30から出力された行列MSの行列値g及び行列値aS,bS,cSからなるカメラ座標系の座標変換係数を不揮発性メモリに記憶する。ステップS430においては、カメラ移動フラグCMFを“1”に設定する。
【0088】
この状態で、作業者は、ステージ10上の真球11a,11b,11cを取り外す。そして、前記真球11a,11b,11cのステージ10への取り付け時に、測定対象物OBをステージ10から取り外した場合には、測定対象物OBを、3次元カメラ20の移動前の測定対象物OBと同じステージ10上の位置に設置する。そして、作業者は、入力装置31を操作することにより、ステージ10上の測定対象物OBの3次元データの取得を指示すると、コントローラ30は、ステップS302にて「Yes」と判定して、前述したステップS304〜S308の処理を実行する。なお、前記測定対象物OBの3次元データの取得の指示の前に、入力装置31の操作により、前述のように、ステージ10の回転軸A,B,C周りの回転位置を変更してもよい。一方、データ処理装置40は、前記コントローラ30のステップS304の処理による測定対象物OBの測定指示に応答して、ステップS402にて「Yes」と判定して、前述したステップS404〜S412の処理により、ステージ10を回転軸A,B,C周りの回転角度及び3次元カメラ20によって新たに取得した3次元データを不揮発性メモリに記憶する。
【0089】
前記ステップS412に処理後、コントローラ30は、ステップS414にてカメラ移動フラグCMFが“1”であるか否かを判定する。この場合、前述したステップS430の処理によってカメラ移動フラグCMFは“1”に設定されているので、コントローラ30は、ステップS414にて「Yes」と判定して、前記新たに取得した3次元データを座標変換する。この座標変換においては、前記新たに取得した3次元データが、前記不揮発性メモリに記憶した行列MSの行列値g及び行列値aS,bS,cSを用いて、下記数15の演算の実行により座標変換される。なお、下記数15中の座標値(XM,YM,ZM)は、3次元カメラ20が図9の実線位置にある座標系Mの3次元データである。また、下記数15中の座標値(XS,YS,ZS)は、3次元カメラ20が図9の破線位置にある座標系Sの3次元データである。
【0090】
【数15】
【0091】
前記ステップS416の処理後、コントローラ30は、前述したステップS418〜S422の処理により、座標系Mの3次元データを座標系Sに変換した3次元データが、座標系Sにおけるステージ10の基準位置に対応した基準座標系の1組の3次元データに変換される。そして、ステップS424の処理により、この1組の変換された3次元データが不揮発性メモリに記憶される。
【0092】
また、このような状態で、作業者が、入力装置31をふたたび操作して、ステージ10の回転軸A,B,C周りの回転位置を新たに指示すると、コントローラ30は、前述のように、モータ16,17,18を駆動制御して、作業者によって指示された回転位置までステージ10を回転軸A,B,C周りに回転させる。その後、作業者は、入力装置31を操作することにより、ステージ10上の測定対象物OBの3次元データの取得を指示すると、コントローラ30は、ステップS302にて「Yes」と判定して、前述したステップS304〜S308の処理を実行する。一方、データ処理装置40は、前記コントローラ30のステップS304の処理による測定対象物OBの測定指示に応答して、ステップS402にて「Yes」と判定して、前述したステップS404〜S424からなる処理を実行する。これにより、不揮発性メモリには、3次元カメラ20の移動後におけるステージ10を回転軸A,B,C周りに前記とは異なる所望の角度だけ回転して3次元カメラ20によって取得した3次元データを、基準座標系の3次元データに変換した新たな1組の3次元データが記憶される。そして、作業者は、この場合も、必要に応じて、ステージ10を回転軸A,B,C周りに必要な回数だけ回転させて、測定対象物OBを3次元カメラ20に測定させることにより、前記回数に対応した組数の3次元データを不揮発性メモリに記憶させることができる。
【0093】
さらに、3次元カメラ20を移動させて、測定対象物OBを3次元測定する必要がある場合には、前述のように、真球11a,11b,11cをステージ10上にセットして、図7のステップS310〜S316及び図8のステップS426〜S430の処理により、3次元カメラ20の移動に伴うカメラ座標系の座標変換係数を取得する。そして、図7のステップS302〜S308及び図8のステップS402〜S424の処理により、測定対象物OBを3次元カメラ20で測定して、測定により得た3次元データを基準座標系における3次元データに座標変換して、基準座標系に座標変換された3次元データが不揮発性メモリに新たに記憶される。この場合も、ステージ10を回転軸A,B,C周りに回転させて、基準座標系の3次元データを得る。このような処理の結果、3次元カメラ20の複数の位置ごとに、ステージ10を回転軸A,B,C周りに回転させながら取得した測定対象物OBに関する複数組の3次元データが不揮発性メモリに記憶されることになる。そして、不揮発性メモリに記憶されている複数組の3次元データは、全て基準座標系におけるデータに変換されている。
【0094】
このように、3次元カメラ20の複数の位置ごとに、ステージ10を回転軸A,B,C周りに回転させながら測定対象物OBの3次元データを取得した後、作業者は、入力装置31を操作して測定対象物OBの3次元画像を確認するために測定終了を指示する。この測定終了の指示に応答して、コントローラ30は、図7の対象物測定プログラムのステップS318にて「Yes」と判定して、ステップS320にてデータ処理装置40に3次元画像データの生成を指示して、ステップS322にて対象物測定プログラムの実行を終了する。
【0095】
この3次元画像データの生成指示に応答して、データ処理装置40は、ステップS432にて「Yes」と判定して、ステップS434〜438の処理を実行する。ステップS434においては、前記不揮発性メモリに記憶されている複数組の測定対象物OBの3次元データを合成する。この合成においては、基準座標系の複数組の3次元データが1組の3次元データに集合させられる。ステップS436においては、合成した3次元データに基づいて測定対象物OBの3次元形状を表す3次元画像データが生成され、生成された3次元画像データが不揮発性メモリに記憶される。ステップS438においては、前記不揮発性メモリに記憶されている3次元画像データが表示装置41に供給される。表示装置41は、この供給された3次元画像データを用いて、測定対象物OBの3次元画像を表示する。
【0096】
上記のように動作する実施形態においては、図7のステップS310〜S314の処理により、図4AのステップS106の処理により記憶されたステージ10の定点の座標を用いて、座標系Mの3次元カメラ20による3次元データを、座標系S(基準座標系)の3次元カメラ20による3次元データに座標変換するための座標変換係数が取得される。そして、図8のステップS416の処理により、座標系Mの3次元カメラ20による3次元データは、前記座標変換係数を用いて、座標系Sの3次元カメラ20による3次元データに変換される。そして、この座標系Sに変換された3次元データは、図8のステップS418〜S422の処理により、ステージ10の基準位置に対応した基準座標系の3次元データに変換される。したがって、ステージ10に対する3次元カメラ20の位置を変化させても、ステージ10に定義した定点の座標を取得するための測定を1回行うのみで回転角度ごとの座標変換係数を得ることができ、測定の効率が良好に保たれる。
【0097】
また、ステージ10に定義される定点は、ステージ10に対して一定の位置に定点を定義可能な真球11a,11b,11cをステージ10の穴10a,10b,10cに装着することで得られる。したがって、ステージ10に定義した定点の座標を取得するための測定を行うときだけ、ステージ10に真球11a,11b,11cを取り付ければよいので、ステージ10に測定対象物OBを載置するのに邪魔にならない。
【0098】
以上、本発明の一実施形態について説明したが、本発明の実施にあたっては、上記実施形態に限定されるものではなく、本発明の目的を逸脱しない限りにおいて種々の変形も可能である。
【0099】
上記実施形態では、図4AのステップS116,S126,S138,S148、図4BのステップS160及び図7のステップS314の処理により、ステージ10の回転に関する座標変換係数及び3次元カメラ20の移動に関する座標変換係数の取得において、3つの定点(すなわち、3つの真球11a,11b,11cの中心座標)を用いて座標変換係数(行列MAの行列値g及び行列値aA,bA,cA、行列MBの行列値g及び行列値aB,bB,cB、行列MCの行列値g及び行列値aC,bC,cC、並びに行列MSの行列値g及び行列値aS,bS,cS)を計算するようにした。しかし、これに代え、2つ以上の定点と1つ以上のベクトルとを定義し、又は1つ以上の定点と2つ以上のベクトルとを定義して、座標変換係数を計算してもよい。第1座標系の座標値を第2座標系の座標に変換するための座標変換係数を計算するためには、定点に関しては、第1座標系の定点座標値が座標値(x’,y’,z’)であり、第2座標系の定点座標値が座標値(x,y,z)であれば、これらの座標値を前記数2,3と同様な数16に代入する。また、ベクトルに関しては、第1座標系のベクトルの成分が(α’,β’,γ’)であり、第2座標系のベクトルの成分が(α,β,γ)であれば、これらのベクトル成分を前記数8と同様な数17に代入する。
【0100】
【数16】
【0101】
【数17】
【0102】
なお、第1座標系のベクトルと第2座標系のベクトルの大きさが同じ場合には、前記数17の演算の適用のままでよいが、第1座標系のベクトルと第2座標系のベクトルの大きさが異なる場合には、下記数18の演算の実行により係数Kを計算する。そして、この計算した係数Kを第2座標系のベクトルにかけて前記数17に代入する。このような数16及び数17への代入により、2つ以上の定点と1つ以上のベクトルとを定義した場合には、3つの行列値gからなる数16に関する2つ以上の連立方程式と数17に関する1つ以上の連立方程式が用意されることになる。また、1つ以上の定点と2つ以上のベクトルとを定義した場合には、3つの行列値gからなる数16に関する1つ以上の連立方程式と数17に関する2つ以上の連立方程式が用意されることになる。いずれの場合も、3つの行列値gからなる3つ以上の連立方程式が用意され、この連立方程式を解くことにより座標変換係数(g11,g12,g13,g21,g22,g23,g31,g32,g33,a,b,c)が計算される。
【0103】
【数18】
【0104】
次に、2つ以上の定点と1つ以上のベクトルとの定義、及び1つ以上の定点と2つ以上のベクトルとの定義に関する具体的方法について説明する。2つ以上の定点と1つ以上のベクトルとを定義する場合には、例えば、図10(A)に示すように、ステージ10上にセットした2つの真球11a,11bの中心座標を2つの定点として定義するとともに、ステージ10の上面の法線ベクトルを1つのベクトルとして定義すればよい。
【0105】
また、1つ以上の定点と2つ以上のベクトルを定義する場合には、例えば、図10(B)に示すように、ステージ10上にセットした1つの真球11aの中心座標を1つの定点として定義するとともに、ステージ10上に作成した直線状の模様10eの方向によって規定されるベクトルと、ステージ10の上面の法線ベクトルとを2つのベクトルとして定義すればよい。また、図10(C)に示すように、ステージ10上に作成した直線状の交差する2つの模様10f,10gの方向によって2つのベクトルを定義するとともに、2つの直線状の模様10f,10gの交点によって定点を定義するようにしてもよい。また、図10(D)に示すように、ステージ10の上面の法線ベクトルと、ステージに作成した直線状の模様10hの方向とによって2つベクトルを定義するとともに、模様10hと模様10iとの交点で定点を定義するようにしてもよい。また、図10(E)及び図10(F)に示すように、ステージ10を、上面に加えて少なくとも1つの平らな側面及び頂点(角部)を有するように構成し、前記上面の法線ベクトルと側面の法線ベクトルとを2つのベクトルとして定義するとともに、頂点を定点として定義するようにしてもよい。
【0106】
前述した直線状の模様10e〜10iを利用する場合、模様10e〜10iの反射率とステージ10上面の他の部位の反射率とを異ならせておいて、3次元カメラ20による3次元形状の測定の際に反射光量も同時に測定するようにすれば、模様10e〜10iに関する3次元データの抽出を行うことができる。また、ステージ10の上面と側面の法線ベクトルを利用する場合には、ステージ10の上面と側面とで反射率を異ならせておいて、3次元カメラ20による3次元形状の測定の際に反射光量も同時に測定するようにすれば、ステージ10の上面と側面に関する3次元データをそれぞれ別々に抽出することができる。そして、これらの測定によって得られた3次元データから定点座標及び法線ベクトルの成分を計算する方法は、従来から知られている技術(例えば、特開2005−249402号公報、特開2005−352630号公報、特開2008−164493号公報参照)を利用できる。このように、ステージ10の形状における頂点、上面及び側面の法線ベクトル、ステージ10に描かれた模様から定まる点又は直線部分を利用することにより、ステージ10に定義される定点又はベクトルの成分を取得する際、ステージ10をそのまま測定すればよいので、効率がよい。
【0107】
また、上記図4AのステップS116,S126,S138,S148、図4BのステップS160及び図7のステップS314の処理による座標変換係数の取得において、図4Aの基準定点座標取得ルーチンの処理より、ステージ10が基準位置にある状態の定点の座標を記憶しておいて、この記憶しておいた定点の座標を利用している。したがって、前記変形例のように、座標変換に定点及びベクトルを利用する場合には、図4Aの基準定点座標取得ルーチンにて、定点の座標を記憶しておくのに代えて、前記座標変換係数の取得において利用される、ステージ10が基準位置にある状態の定点の座標及びベクトルの成分を取得してRAM又は不揮発性メモリに記憶しておくようにする。
【0108】
定点やベクトルを定義する方法は、図10に示す例以外にも種々な形態が考えられる。例えば、物体を用いて定点を定義するときは、3次元データから定点座標を計算するデータ処理が最も容易であるために、真球を使用することが好ましい。しかし、定点を定義できればよいので、円柱、円錐、角錐、直方体などの形状の物体を用いてもよいし、模様であれば、円、多角形といった模様でもよい。
【0109】
また、上記実施形態では、各回転軸における各回転角度ごとに3次元形状測定を行い、定点座標を取得して各回転角度ごとに座標変換係数を取得した。しかし、これに代えて、図11に示すように、1つの定点を定義して3つ回転軸A,B,C周りに、ステージ10をそれぞれ回転させながら3つ以上の回転角度でそれぞれ定点座標を取得し、これらの定点座標で定まる平面と定点座標で定まる円の中心座標とから回転軸A,B,Cの位置をそれぞれ計算し、理論的に、この回転軸A,B,Cの位置から各回転角度ごとの座標変換係数を回転角度の関数として取得してもよい。この場合も、定点の定義のためには、種々の形状の物体や模様を用いることができるが、図11に示すように、ステージ10にセットした真球11aを用いるとよい。
【0110】
各回転軸A,B,Cにおける各回転角度ごとの座標変換係数は、ステージ10の基準位置における基準座標系(カメラ座標系)の座標軸をそれぞれの座標軸周りに回転させて、回転軸に座標軸の1つが垂直に交差するとともに座標軸の1つが回転軸に平行となる座標軸を想定し、この座標軸が回転軸周りに回転することを想定すれば、回転軸周りの回転角度の関数として計算することができる。具体的には、各回転軸A,B,Cごとに以下の順に計算を行い、座標変換係数を求めればよい。
【0111】
(1)回転軸に垂直で基準座標系(カメラ座標系)の原点Oを含む平面Hを計算する。
(2)各座標軸と平面Hとのなす角度を計算し、平面Hとのなす角度が最も小さい座標軸aに垂直で原点Oを含む平面Iと平面Hから形成される直線のベクトルJを計算し、このベクトルJと座標軸a以外の2つの座標軸とがなす角度をそれぞれ計算し、小さい方の角度分、座標軸aを回転させて他の1つの座標軸である座標軸bを平面H内にする座標変換係数M1を計算する。座標変換係数M1及び後述する座標変換係数M2,M3は、上記数3に示すように、3×3の行列である。
(3)座標軸bを、平面Hと座標軸aがなす角度分、回転させて座標軸aを平面H内にする座標変換係数M2を計算する。
【0112】
(4)平面Hと回転軸の交点Kを計算し、原点Oから交点Kに向かうベクトルとベクトルJのなす角度を計算し、この角度分、座標軸a,b以外の座標軸cを回転させ、座標軸aの方向を原点Oから交点K方向にする座標変換係数M3を計算する。
(5)前記(4)でできた座標軸を回転軸周りに回転角度θだけ回転させるときの座標変換係数M(θ),T(θ)を計算する。この場合は、原点移動があるので座標変換係数は3×3の行列であるM(θ)と、3×1の行列(ベクトル成分)であるT(θ)である。座標変換係数M(θ),T(θ)とも、回転角度θの関数として計算することができる。
(6)前記(5)で回転させた座標軸を前記(2)、(3)、(4)で行った回転とは逆の回転を行う座標変換係数M3-1,M2-1,M1-1を計算する。
【0113】
(7)前記(2)〜(6)の順に回転を行うときの座標変換係数Mt(θ)=M1-1・M2-1・M3-1・M(θ)・M3・M2・M1と座標変換係数Tt(θ)=M1-1・M2-1・M3-1・T(θ)を計算する。
(8)前記(7)で求めた座標変換係数Mt(θ),Tt(θ)はステージ10の基準位置における基準座標系(カメラ座標系)の座標軸を回転軸周りに回転角度θだけ回転させたときの座標変換係数である。回転角度θだけ回転させた後の座標軸をステージ10の基準位置における基準座標系(カメラ座標系)の座標軸にするための座標変換係数は、座標変換係数Mt(θ)の逆行列であるMt(θ)-1と−Mt(θ)-1・Tt(θ)である。
【0114】
なお、この種の技術も従来から知られた技術(特表2000−509505号公報、特開2008−32449号公報参照)である。
【0115】
また、上記実施形態ではステージ10は回転軸Aが固定されており、回転軸Bは回転軸Aの回転角度が固定されると固定され、回転軸Cは回転軸A,Bが固定されると固定されるようになっているが、座標変換を固定された回転軸による座標変換から行えば、前記回転軸A,B,Cの関係は任意でよい。また、上記実施形態では回転軸は3つであったが、座標変換を固定された回転軸による座標変換から行っていけば、回転軸は2つであってもよいし、4つ以上であってもよい。
【0116】
また、上記実施形態では、座標系Mの3次元データを座標系S(基準座標系)の3次元データに座標変換する座標変換係数を得るときに、ステージ10の回転軸A,B,Cの回転角度を基準角度(0度)にして真球11a,11b,11cの3次元形状を測定して定点座標を取得したが、回転軸A,B,Cが任意の回転角度であっても座標変換係数を得ることは可能である。この場合、図4A及び図4Bの座標変換係数設定プログラムの実行によって不揮発性メモリに記憶されていてステージ10の回転軸A,B,C周りの回転角度における座標変換係数を用いて、座標系S(基準座標系)による定点座標を逆の座標変換により現在の回転角度による座標系による定点座標に変換し、この定点座標と3次元形状測定して取得した定点座標とを用いて座標系Mの3次元データを座標系S(基準座標系)の3次元データに座標変換する座標変換係数を取得すればよい。
【0117】
さらに、上記実施形態では、3次元カメラ20はレーザ光を照射して測定を行うものであったが、測定対象物OBの3次元形状を測定できるものであればどのような方式のものであってもよい。例えば、格子模様を投影して測定する方式のもの、超音波を使用して測定する方式のもの、プローブを接触させて測定する方式のものでもよい。
【符号の説明】
【0118】
10…ステージ、11a,11b,11c…真球、16,17,18…モータ、20…3次元カメラ、30…コントローラ、31…入力装置、40…データ処理装置、41…表示装置、OB…測定対象物
【特許請求の範囲】
【請求項1】
回転軸周りに回転可能であって座標変換係数を計算するための定点又はベクトルを定義可能なステージと、
前記ステージ上に載置した物体の3次元形状を測定する3次元カメラと、
前記3次元カメラで測定した3次元形状を表す3次元データを処理する処理装置とからなり、
前記処理装置に、
第1のカメラ位置に配置した前記3次元カメラの測定により取得した前記ステージの定点又はベクトルを用いて、前記ステージを基準位置から回転させた状態で前記3次元カメラにより測定した3次元形状を表す3次元データを、前記ステージが基準位置にある状態で前記3次元カメラにより測定した3次元形状を表す基準座標系の3次元データに変換するための回転座標変換係数を複数の回転角度ごとに取得して記憶しておく回転座標変換係数取得手段と、
前記ステージを基準位置から回転させた状態で前記3次元カメラにより測定した測定対象物の3次元形状を表す3次元データを、前記回転座標変換係数を用いて、前記基準座標系の3次元データに変換する回転座標変換手段とを設けて、
前記ステージを回転させることによって異なる視点から測定した測定対象物の3次元データを、前記基準座標系の3次元データに合成する3次元形状測定装置において、
前記処理装置に、さらに
前記第1のカメラ位置に配置した前記3次元カメラの測定により取得した前記ステージの定点の座標又はベクトルの成分を記憶しておく定点・ベクトル記憶手段と、
前記第1のカメラ位置と異なる第2のカメラ位置に配置した前記3次元カメラの測定により取得した前記ステージの定点の座標又はベクトルの成分と、前記定点・ベクトル記憶手段によって記憶されているステージの定点の座標又はベクトルの成分とを用いて、前記第2のカメラ位置で前記3次元カメラにより測定した3次元形状を表す3次元データを、前記第1のカメラ位置で前記3次元カメラにより測定した3次元形状を表す3次元データに座標変換するためのカメラ座標変換係数を取得するカメラ座標変換係数取得手段と、
前記第2のカメラ位置で前記3次元カメラにより測定した測定対象物の3次元形状を表す3次元データを、前記カメラ座標変換係数を用いて、前記第1のカメラ位置で前記3次元カメラにより測定した測定対象物の3次元形状を表す3次元データに変換するカメラ座標変換手段とを設けたことを特徴とする3次元形状測定装置。
【請求項2】
前記定点・ベクトル記憶手段は、前記回転座標変換係数取得手段による回転座標変換係数の取得に連動して前記ステージの定点の座標又はベクトルの成分を記憶することを特徴とする請求項1に記載の3次元形状測定装置。
【請求項3】
前記ステージは、2つ以上の回転軸周りに回転可能であり、
前記回転座標変換係数は、前記2つ以上の回転軸ごとに取得されて記憶されていることを特徴とする請求項1又は2に記載の3次元形状測定装置。
【請求項4】
前記ステージに定義される定点又はベクトルは、前記ステージに対して一定の位置に定点又は一定の方向にベクトルを定義可能な物体を前記ステージに装着することで得られることを特徴とする請求項1乃至3のうちのいずれか一つに記載の3次元形状測定装置。
【請求項5】
前記ステージに定義される定点又はベクトルは、前記ステージの形状における頂点又は平面の法線ベクトルであることを特徴とする請求項1乃至3のうちのいずれか一つに記載の3次元形状測定装置。
【請求項6】
前記ステージに定義される定点又はベクトルは、前記ステージに描かれた模様から定まる点又は直線部分であることを特徴とする請求項1乃至3のうちのいずれか一つに記載の3次元形状測定装置。
【請求項7】
回転軸周りに回転可能であって座標変換係数を計算するための定点又はベクトルを定義可能なステージと、前記ステージ上に載置した物体の3次元形状を測定する3次元カメラとからなる3次元形状測定装置に適用され、
第1のカメラ位置に配置した前記3次元カメラの測定により取得した前記ステージの定点又はベクトルを用いて、前記ステージを基準位置から回転させた状態で前記3次元カメラにより測定した3次元形状を表す3次元データを、前記ステージが基準位置にある状態で前記3次元カメラにより測定した3次元形状を表す基準座標系の3次元データに変換するための回転座標変換係数を複数の回転角度ごとに取得して記憶しておき、
前記ステージを基準位置から回転させた状態で前記3次元カメラにより測定した測定対象物の3次元形状を表す3次元データを、前記回転座標変換係数を用いて、前記基準座標系の3次元データに変換して、前記ステージを回転させることによって異なる視点から測定した測定対象物の3次元データを、前記基準座標系の3次元データに合成する3次元形状測定方法において、
前記第1のカメラ位置に配置した前記3次元カメラの測定により取得した前記ステージの定点の座標又はベクトルの成分を記憶しておき、
前記第1のカメラ位置と異なる第2のカメラ位置に配置した前記3次元カメラの測定により取得した前記ステージの定点の座標又はベクトルの成分と、前記記憶しておいたステージの定点の座標又はベクトルの成分とを用いて、前記第2のカメラ位置で前記3次元カメラにより測定した3次元形状を表す3次元データを、前記第1のカメラ位置で前記3次元カメラにより測定した3次元形状を表す3次元データに座標変換するためのカメラ座標変換係数を取得し、
前記第2のカメラ位置で前記3次元カメラにより測定した測定対象物の3次元形状を表す3次元データを、前記カメラ座標変換係数を用いて、前記第1のカメラ位置で前記3次元カメラにより測定した測定対象物の3次元形状を表す3次元データに変換するようにしたことを特徴とする3次元形状測定方法。
【請求項8】
前記ステージの定点の座標又はベクトルの成分の記憶は、前記回転座標変換係数の取得に連動して行われることを特徴とする請求項7に記載の3次元形状測定装置。
【請求項9】
前記ステージは、2つ以上の回転軸周りに回転可能であり、
前記回転座標変換係数は、前記2つ以上の回転軸ごとに取得して記憶しておくことを特徴とする請求項7又は8に記載の3次元形状測定方法。
【請求項10】
前記ステージに定義される定点又はベクトルは、前記ステージに対して一定の位置に定点又は一定の方向にベクトルを定義可能な物体を前記ステージに装着することで得られることを特徴とする請求項7乃至9のうちのいずれか一つに記載の3次元形状測定方法。
【請求項11】
前記ステージに定義される定点又はベクトルは、前記ステージの形状における頂点又は平面の法線ベクトルであることを特徴とする請求項7乃至9のうちのいずれか一つに記載の3次元形状測定方法。
【請求項12】
前記ステージに定義される定点又はベクトルは、前記ステージに描かれた模様から定まる点又は直線部分であることを特徴とする請求項7乃至9のうちのいずれか一つに記載の3次元形状測定方法。
【請求項1】
回転軸周りに回転可能であって座標変換係数を計算するための定点又はベクトルを定義可能なステージと、
前記ステージ上に載置した物体の3次元形状を測定する3次元カメラと、
前記3次元カメラで測定した3次元形状を表す3次元データを処理する処理装置とからなり、
前記処理装置に、
第1のカメラ位置に配置した前記3次元カメラの測定により取得した前記ステージの定点又はベクトルを用いて、前記ステージを基準位置から回転させた状態で前記3次元カメラにより測定した3次元形状を表す3次元データを、前記ステージが基準位置にある状態で前記3次元カメラにより測定した3次元形状を表す基準座標系の3次元データに変換するための回転座標変換係数を複数の回転角度ごとに取得して記憶しておく回転座標変換係数取得手段と、
前記ステージを基準位置から回転させた状態で前記3次元カメラにより測定した測定対象物の3次元形状を表す3次元データを、前記回転座標変換係数を用いて、前記基準座標系の3次元データに変換する回転座標変換手段とを設けて、
前記ステージを回転させることによって異なる視点から測定した測定対象物の3次元データを、前記基準座標系の3次元データに合成する3次元形状測定装置において、
前記処理装置に、さらに
前記第1のカメラ位置に配置した前記3次元カメラの測定により取得した前記ステージの定点の座標又はベクトルの成分を記憶しておく定点・ベクトル記憶手段と、
前記第1のカメラ位置と異なる第2のカメラ位置に配置した前記3次元カメラの測定により取得した前記ステージの定点の座標又はベクトルの成分と、前記定点・ベクトル記憶手段によって記憶されているステージの定点の座標又はベクトルの成分とを用いて、前記第2のカメラ位置で前記3次元カメラにより測定した3次元形状を表す3次元データを、前記第1のカメラ位置で前記3次元カメラにより測定した3次元形状を表す3次元データに座標変換するためのカメラ座標変換係数を取得するカメラ座標変換係数取得手段と、
前記第2のカメラ位置で前記3次元カメラにより測定した測定対象物の3次元形状を表す3次元データを、前記カメラ座標変換係数を用いて、前記第1のカメラ位置で前記3次元カメラにより測定した測定対象物の3次元形状を表す3次元データに変換するカメラ座標変換手段とを設けたことを特徴とする3次元形状測定装置。
【請求項2】
前記定点・ベクトル記憶手段は、前記回転座標変換係数取得手段による回転座標変換係数の取得に連動して前記ステージの定点の座標又はベクトルの成分を記憶することを特徴とする請求項1に記載の3次元形状測定装置。
【請求項3】
前記ステージは、2つ以上の回転軸周りに回転可能であり、
前記回転座標変換係数は、前記2つ以上の回転軸ごとに取得されて記憶されていることを特徴とする請求項1又は2に記載の3次元形状測定装置。
【請求項4】
前記ステージに定義される定点又はベクトルは、前記ステージに対して一定の位置に定点又は一定の方向にベクトルを定義可能な物体を前記ステージに装着することで得られることを特徴とする請求項1乃至3のうちのいずれか一つに記載の3次元形状測定装置。
【請求項5】
前記ステージに定義される定点又はベクトルは、前記ステージの形状における頂点又は平面の法線ベクトルであることを特徴とする請求項1乃至3のうちのいずれか一つに記載の3次元形状測定装置。
【請求項6】
前記ステージに定義される定点又はベクトルは、前記ステージに描かれた模様から定まる点又は直線部分であることを特徴とする請求項1乃至3のうちのいずれか一つに記載の3次元形状測定装置。
【請求項7】
回転軸周りに回転可能であって座標変換係数を計算するための定点又はベクトルを定義可能なステージと、前記ステージ上に載置した物体の3次元形状を測定する3次元カメラとからなる3次元形状測定装置に適用され、
第1のカメラ位置に配置した前記3次元カメラの測定により取得した前記ステージの定点又はベクトルを用いて、前記ステージを基準位置から回転させた状態で前記3次元カメラにより測定した3次元形状を表す3次元データを、前記ステージが基準位置にある状態で前記3次元カメラにより測定した3次元形状を表す基準座標系の3次元データに変換するための回転座標変換係数を複数の回転角度ごとに取得して記憶しておき、
前記ステージを基準位置から回転させた状態で前記3次元カメラにより測定した測定対象物の3次元形状を表す3次元データを、前記回転座標変換係数を用いて、前記基準座標系の3次元データに変換して、前記ステージを回転させることによって異なる視点から測定した測定対象物の3次元データを、前記基準座標系の3次元データに合成する3次元形状測定方法において、
前記第1のカメラ位置に配置した前記3次元カメラの測定により取得した前記ステージの定点の座標又はベクトルの成分を記憶しておき、
前記第1のカメラ位置と異なる第2のカメラ位置に配置した前記3次元カメラの測定により取得した前記ステージの定点の座標又はベクトルの成分と、前記記憶しておいたステージの定点の座標又はベクトルの成分とを用いて、前記第2のカメラ位置で前記3次元カメラにより測定した3次元形状を表す3次元データを、前記第1のカメラ位置で前記3次元カメラにより測定した3次元形状を表す3次元データに座標変換するためのカメラ座標変換係数を取得し、
前記第2のカメラ位置で前記3次元カメラにより測定した測定対象物の3次元形状を表す3次元データを、前記カメラ座標変換係数を用いて、前記第1のカメラ位置で前記3次元カメラにより測定した測定対象物の3次元形状を表す3次元データに変換するようにしたことを特徴とする3次元形状測定方法。
【請求項8】
前記ステージの定点の座標又はベクトルの成分の記憶は、前記回転座標変換係数の取得に連動して行われることを特徴とする請求項7に記載の3次元形状測定装置。
【請求項9】
前記ステージは、2つ以上の回転軸周りに回転可能であり、
前記回転座標変換係数は、前記2つ以上の回転軸ごとに取得して記憶しておくことを特徴とする請求項7又は8に記載の3次元形状測定方法。
【請求項10】
前記ステージに定義される定点又はベクトルは、前記ステージに対して一定の位置に定点又は一定の方向にベクトルを定義可能な物体を前記ステージに装着することで得られることを特徴とする請求項7乃至9のうちのいずれか一つに記載の3次元形状測定方法。
【請求項11】
前記ステージに定義される定点又はベクトルは、前記ステージの形状における頂点又は平面の法線ベクトルであることを特徴とする請求項7乃至9のうちのいずれか一つに記載の3次元形状測定方法。
【請求項12】
前記ステージに定義される定点又はベクトルは、前記ステージに描かれた模様から定まる点又は直線部分であることを特徴とする請求項7乃至9のうちのいずれか一つに記載の3次元形状測定方法。
【図1】
【図2】
【図3】
【図4A】
【図4B】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4A】
【図4B】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2011−242139(P2011−242139A)
【公開日】平成23年12月1日(2011.12.1)
【国際特許分類】
【出願番号】特願2010−111699(P2010−111699)
【出願日】平成22年5月14日(2010.5.14)
【出願人】(000112004)パルステック工業株式会社 (179)
【Fターム(参考)】
【公開日】平成23年12月1日(2011.12.1)
【国際特許分類】
【出願日】平成22年5月14日(2010.5.14)
【出願人】(000112004)パルステック工業株式会社 (179)
【Fターム(参考)】
[ Back to top ]