以下、本発明に係る3次元形状測定方法について実施の形態を挙げ、添付の図1〜図20を参照しながら説明する。
図1に示すように、本実施の形態に係る3次元形状測定方法を適用する3次元形状測定装置10は、ワークWの3次元形状を測定するシステムであって、ワークWの表面形状を測定するレーザスキャナ(3次元測定器)12をエンドエフェクタとして備えた多関節ロボット14と、レーザスキャナ12の位置を検出する位置検出装置16と、多関節ロボット14及び位置検出装置16から供給されるデータを処理するデータ処理部18とを有する。多関節ロボット14は、移動台車22上に載置されており、該移動台車22の内部には、多関節ロボット14を制御する制御部19が設けられている。
ワークWは、例えば、実車であって、3次元形状測定装置10により表面形状を計測することによって、設計形状が実現されていることを確認を行うことができる。また、インスツルメントパネルや、形状がデータ化されていないクレーモデル等をワークWとすることもできる。
多関節ロボット14は7軸の関節を備え、姿勢の冗長性を有する。すなわち、多関節ロボット14は、レーザスキャナ12の位置及び姿勢を保持したまま様々な姿勢(理論上、無限大個の姿勢)をとりうる。多関節ロボット14の先端部36には、支持部20aを介してワークWまでの距離Lm(図3参照)を測定するレーザ変位計(非接触変位計)20が設けられている。
多関節ロボット14は、矢印21で示される基本のティーチングデータに基づきワークWの面に沿ってレーザスキャナ12を移動させる。
また、多関節ロボット14が載置される移動台車22上は自走可能であり、ワークWの車軸24と平行に延在するレール26に沿って移動することができる。多関節ロボット14は移動可能であることから、ワークWの所定区域毎の測定を行った後に多関節ロボット14を移動させて次の区域の測定を行うことができる。
図2に示すように、多関節ロボット14は、ベース部30と、該ベース部30を基準にして、順に第1アーム32、第2アーム34を有し、第2アーム34の先の先端部36に前記レーザスキャナ12が設けられている。第1アーム32はベース部30に対して水平及び垂直に回動可能な軸J1、J2によって接続されている。また、第1アーム32は途中の軸J3によって捻り回転が可能である。
第2アーム34は第1アーム32と軸J4で回動可能に連結されている。第2アーム34は途中の軸J5によって捻り回転が可能である。
先端部36は第2アーム34と軸J6で回動可能に連結されており、軸J7により捻り回転が可能である。
このように多関節ロボット14は7軸の関節を有することから、前記の通り姿勢の冗長性を有し、人間の腕のように自由な動作が可能である。
多関節ロボット14の軸J1〜J7は、全てが回転動作を行う軸である必要はなく、姿勢の冗長性を有する構成であれば、伸縮動作、平行リンク動作等の動作部を有するものであってもよい。関節の構成数は8以上であってもよい。
図3に示すように、レーザスキャナ12は、3つの突起部にそれぞれ赤外線LED40を備えている。位置検出装置16(図1参照)は、1次元CCDからなる3つの検出部42により赤外線LED40が発光する赤外線を検出して3次元空間上におけるレーザスキャナ12の位置を正確に検出することができる。検出部42は、2個以上の2次元CCDでもよい。
具体的には、3つの赤外線LED40からのエネルギーを検出部42によってそれぞれ検出し、各検出部42から赤外線LED40の方向を認識する。これにより、レーザスキャナ12の空間的位置及び姿勢を求めることができる。この処理はリアルタイムで行われる。
レーザスキャナ12は、投光部50からレーザを矢印B方向に走査しながらワークWに照射して検出幅Dの区間の表面形状を測定することができる。また、レーザスキャナ12は計測可能な範囲があり、ワークWの表面から投光部50までの距離がL±εの範囲に設定されている必要があり、レーザ変位計20によってこの距離を測定している。該レーザ変位計20による測定データは、制御部19に供給されて処理され、レーザスキャナ12が適切な位置となるように多関節ロボット14の姿勢を制御する。
図4に示すように、制御部19はサーボドライバ52を介して多関節ロボット14を動作させる運動制御ボード54と、入出力インターフェース56と、コンピュータ58とを有する。コンピュータ58は、運動制御ボード54及び入出力インターフェース56と接続されており、制御部19全体の制御を行う。また、コンピュータ58は、所定のプログラム記録部からプログラムをロードして実行することにより作用し、処理の主体であるCPUと、記録部であるROM、RAM等を含む。
移動台車22は、周辺を監視する安全装置である2つのエリアセンサ61a、61bを有する。制御部19は、エリアセンサ61a、61bとのインターフェースであるエリアセンサインターフェース60に接続されており、障害物の有無を検出することができる。また、制御部19は、アンプ62を介して走行軸モータ64を動作させ、移動台車22を自走させることができる。さらに、制御部19は、基本のティーチングデータとなるブロックデータ(倣いデータ)120(図9参照)を設定するためのティーチングボックス(データ入力部)66及び操作ボックス68と接続されており、相互にデータ通信が可能である。ティーチングボックス66には、表示手段としてのモニタ画面66aが設けられている。
移動台車22には無停電電源を搭載し、該無停電電源を介して制御部19等に電源を供給するようにすると、動作信頼性が向上する。
図5に示すように、コンピュータ58は、所定面積に対して前記レーザスキャナ12を倣わせる測定動作を示すブロックデータ120(図9参照)を設定し、記録するブロックデータ設定記録部100と、複数の基本形状タイプから前記ワークWの形状に類似する1つを選択する基本形状選択部102と、選択された基本形状タイプと、ワークWの長さU(図15参照)と高さhに応じて、ブロックデータ120を示す仮想ブロックが、仮想空間上のワークWの投影面のうち、測定を行う部分を覆うようにブロックデータ120を複写設定するブロックデータ複写部104と、複写設定したブロックデータ120に基づいて多関節ロボット14と走行軸モータ64を動作させる計測実行部106とを有する。計測実行部106は、多関節ロボット14を動作させるロボット姿勢計算部106aと、走行軸モータ64を動作させる台車位置計算部106bとを有する。
また、コンピュータ58は、操作ボックス68等から供給されるスイッチ信号に基づいて、多関節ロボット14及び走行軸モータ64をマニュアル操作又は非常停止させる外部信号監視部110を有する。
ワークWの長さU(図15参照)と高さhは、ティーチングボックス66を用いて入力され、パラメータ記録部108に保持される。パラメータ記録部108に保持されたデータや、ブロックデータ設定記録部100で設定されたブロックデータ120等は、モニタ画面66aに表示させることが可能である。
なお、図5は、一部を簡略化して、コンピュータ58内部の処理部と外部機器との関係を理解しやすいように表した概略ブロック図であって、入出力インターフェース56(図4参照)等を省略して図示している。
図6に示すように、ロボット姿勢計算部106aは、レーザ変位計20の計測値である距離Lm(図3参照)を入出力インターフェース56を介して読み込む距離算出部112と、距離Lmに基づきレーザスキャナ12とワークWと距離である倣い量L0を求める倣い量算出部114とを有する。また、ロボット姿勢計算部106aは、ブロックデータ複写部104によって複写されたブロックデータ120から多関節ロボット14の基本位置(倣い制限位置)P0(図18参照)と基本姿勢を求めるロボット基本目標位置算出部116と、多関節ロボット14の基本位置P0及び基本姿勢に対して倣い量算出部114から供給される信号による軌道オフセットを行いレーザスキャナ12の目標位置Ppを求める目標位置算出部118と、求められた目標位置Ppをロボット基本目標位置算出部116で求めた基本位置P0で制限する目標位置比較修正部119とを有する。
次に、このように構成される3次元形状測定装置10を用いて、多関節ロボット14に取着されたレーザスキャナ12をワークWの表面に倣わせて移動させることにより、該ワークWの表面形状を測定する方法について図7を参照しながら説明する。図7に示す処理においては、ティーチングボックス66(図4参照)及び操作ボックス68を用いた入力処理とモニタ画面66aによる確認処理はオペレータが行い、それ以外の処理は基本的にコンピュータ58によるプログラム処理によって実行される。なお、以下の説明では車軸の方向をY方向(図15参照)、ワークWの高さ方向をZ方向(図15参照)として、Y方向とZ方向に垂直な方向(図15の紙面に垂直な方向)をX方向とする。
この処理は、先ず前処理であるステップS1において、主にブロックデータ設定記録部100(図5参照)の作用によって、ブロックデータ120(図9参照)の設定記録を行う。このステップS1の処理は、基本的に一度行えば、その後省略可能である。
次に、主にブロックデータ複写部104の作用によって、ワークWの基本形状タイプに基づきブロックデータ120を複写設定する。
具体的には、先ずステップS2において、ワークWの形状に基づいて、ブロックデータ120を縦方向であるZ方向に複写設定する。
その後、ステップS3において、ワークWの形状に基づいて、ブロックデータ120を横方向であるY方向に複写設定する。
このステップS2及びS3の処理は、ワークWの形状が類似であるものに対しては省略可能である。また、ステップS2及びS3の処理は、基本的にコンピュータ58によるプログラム処理であって、仮想空間上においてワークWをブロックデータ120で覆うように複写設定する。この場合、オペレータが処理の適否を判断しやすいように、仮想空間上におけるワークWやブロックデータ120をモニタ画面66aにグラフィック形式で表示しながら処理を行ってもよい。
次に、ステップS4において、主に計測実行部106の作用によって多関節ロボット14と走行軸モータ64を動作させてワークWの3次元形状を測定する。
次に、前記ステップS1の処理、つまりブロックデータ120の設定記録を行う処理について、図8及び図9を参照しながら説明する。
また、以下の説明では、レーザスキャナ12のツール座標を、Pa(X、Y、Z、φ、θ、ψ)又はQa(X、Y、Z、φ、θ、ψ)として表す。ここで、X、Y及びZの各パラメータは、絶対座標におけるX方向、Y方向及びZ方向の各値を示し、φ、θ及びψの各パラメータは、ロール、ピッチ及びヨーの姿勢値を示す。添え字aは、動作順序、教示順序等を示す自然数である。便宜上、Pa(X、Y、Z、φ、θ、ψ)をPa、Qa(X、Y、Z、φ、θ、ψ)をQaとしても表記する。
図9に示すように、ブロックデータ120は、レーザスキャナ12(図3参照)を一方向に所定距離動作させて設定される基本経路122と、該基本経路122を直角方向に、入力設定された回数n本分を複写した複写経路124からなるデータであり、レーザスキャナ12をワークWに倣わせる測定動作を示す。この基本経路122及び複写経路124は、前記矢印21(図1参照)に相当するものである。
図9のブロックデータ120は、n=5として、基本経路122を5回複写して複写経路124を設定した例である。基本経路122及び複写経路124の相互間隔p(図11参照)は入力設定される値であり、レーザスキャナ12の検出幅D(図3参照)と同値に設定する。回数n、相互間隔pは、ティーチングボックス66を用いて入力される。
ブロックデータ120は、基本経路122及び複写経路124のそれぞれの開始点と終了点におけるレーザスキャナ12のツール座標P1、P2、…Pe(図11参照)として表される。ここで添え字のパラメータeは、最終の順番を示す数字であり、e=2(n−1)+4として表される。例えば、n=5であるとき、e=12である。
図8のステップS101において、ブロックデータ120の基礎となるZ方向の基本経路122のデータを作成するために、多関節ロボット14をティーチングボックス66を用いて操作し、レーザスキャナ12をZ方向に適当な距離動作させて、その移動経路を記録する。
次に、ステップS102において、記録した移動経路のうち開始点と終了点におけるレーザスキャナ12の姿勢をP1(X1、Y1、Z1、φ1、θ1、ψ1)及びP2(X2、Y2、Z2、φ2、θ2、ψ2)として記録する。
次に、ステップS103において、回数n、相互間隔pをティーチングボックス66を用いて入力する。
次に、ステップS104において、カウンタiを「1」に初期化する。
次に、ステップS105において、カウンタiと回数nとを比較する。i>nであるときには、ブロックデータ120を示すツール座標であるP1、P2、…Peが全て求められたことになり、この一連の処理を終了して前記ステップS2(図7参照)へ移る。i≦nであるときには、次のステップS106へ移る。
ステップS106においては、カウンタiが奇数であるか偶数であるかを確認し、奇数であるときにはステップS107へ移り、偶数であるときにはステップS109へ移る。
ステップS107(iが奇数であるとき)においては、複写経路124のi本目の開始点であるPαを計算する。添え字αは、α=2(i−1)+3として表される。この場合、PαはP2をY方向に距離(i×p)だけ移動させたデータとして表されることから、Pα(X2、Y2+(i×p)、Z2、φ2、θ2、ψ2)として計算され、求めたPαを記録する。
次に、ステップS108において、複写経路124のi本目の終了点であるPβを計算する。添え字βは、β=α+1=2(i−1)+4として表される。この場合、PβはP1をY方向に距離(i×p)だけ移動させたデータとして表されることから、Pβ(X1、Y1+(i×p)、Z1、φ1、θ1、ψ1)として計算され、求めたPβを記録する。
一方、ステップS109(iが偶数であるとき)においては、複写経路124のi本目の開始点であるPαを計算する。この場合、PαはP1をY方向に距離(i×p)だけ移動させたデータとして表されることから、Pα(X1、Y1+(i×p)、Z1、φ1、θ1、ψ1)として計算され、求めたPαを記録する。
次に、ステップS110において、複写経路124のi本目の終了点であるPβを計算する。この場合、PβはP2をY方向に距離(i×p)だけ移動させたデータとして表されることから、Pβ(X2、Y2+(i×p)、Z2、φ2、θ2、ψ2)として計算され、求めたPβを記録する。
ステップS108又はS110の後、ステップS111において、カウンタiを「+1」更新し、ステップS105へ戻る。
このようにカウンタiを更新しながら、ブロックデータ120を示すツール座標であるP1、P2、…Peを計算することができる。計算して求められたブロックデータ120はブロックデータ設定記録部100に記録される。
ブロックデータ120は、レーザスキャナ12の検出幅Dで往復動作させる動作パターンを示す。これにより、ブロックデータ120の作成、及び、ワークWの表面形状の測定を効率的に行うことができる。
また、ブロックデータ120は1本の基本経路122を複写することにより設定可能であり、設定手順が容易である。
さらに、実際上、基本経路122を表すデータは開始点P1及び終了点P2のみでよく、この間の線である経路は必ずしも記録する必要はない。また、開始点P1及び終了点P2は、前記の通りレーザスキャナ12の位置と姿勢を示す6つのパラメータで表すことができ、多関節ロボット14の各軸J1〜J7の角度は記録する必要はない。複写経路124についても同様である。
次に、前記ステップS1(図7参照)の後に実行される前記ステップS2の処理、つまりブロックデータ120を縦方向(Z方向)に複写する処理について、図10及び図11を参照しながら説明する。
このステップS2の処理は、ワゴン(又はミニバン等)と呼ばれる車種に対してはブロックデータ120を下方向に1つ複写し、セダン(又はクーペ等)と呼ばれる車種に対してはブロックデータ120を上方向に1つ複写する。以下の説明では、便宜上、元のブロックデータ120を小ブロックA、ワゴンの場合に下方向に複写するブロックデータ120を小ブロックB1(図11、図15参照)、セダンの場合に上方向に複写するブロックデータ120を小ブロックB2(図16参照)と表記する。小ブロックA、B1及びB2は、ブロックデータ120を示す仮想ブロックとみなすことができる。
ワゴンの形状は、トランク部がないとともに車高が高く、またリヤウインド部分の傾斜が大きいという特徴がある。一方、セダンの形状は車高が低く、またリヤウインド部分の傾斜が緩いという特徴がある。このように、形状が異なる車種に応じてブロックデータ120の複写パターンを変えることにより、それぞれの形状に応じて適切な計測を行うことができるようになる。
図11に示すように、小ブロックAと小ブロックB1、及び小ブロックAと小ブロックB2は、それぞれラップ量rを重複して計測し、境界部における計測漏れを防ぐ。また、ワークWの高さhをカバーすることができるように、小ブロックB1及びB2は、それぞれ小ブロックAに対して、延長量dだけZ方向に延長するように変形して複写する。ラップ量r及び高さhは、ティーチングボックス66を用いて入力され、延長量dは、高さhに基づいて算出される。
先ず、ステップS201において、ラップ量r、高さhをティーチングボックス66を用いて入力する。高さhに基づいて延長量dを計算して記録する。
次に、ステップS202において、ワークWの基本形状タイプ、つまり車種を選択する。選択する車種は基本形状選択部102(図5参照)に記録されており、この中から選択設定するが、具体的には、ティーチングボックス66を操作することにより選択すればよい。選択する車種は、本実施の形態では、ワゴンやセダンを例示しているが、これに限らず、例えば、トラック等の車種を選択可能としてもよい。
次に、ステップS203において、ブロックデータ120のP1とP2のZ方向の距離ΔZを求める。距離ΔZは、ΔZ=Z1−Z2として求められる。Z1、Z2は、それぞれP1、P2を構成するパラメータのうちZ方向成分の値である。
次に、ステップS204において、カウンタi及びjをそれぞれ「1」に初期化する。
次に、ステップS205において、ワークWの車種に基づいて処理の分岐を行う。ワークWがワゴンである場合には、ステップS206へ移り小ブロックAを下方向へ複写して小ブロックB1を求める。ワークWがセダンである場合には、ステップS207へ移り小ブロックAを上方向へ複写して小ブロックB2を求める。
次に、ステップS206、つまりワークWがワゴンである場合の処理について図12を参照しながら説明する。
先ず、ステップS301において、カウンタjとパラメータeとを比較する。パラメータeは、前記の通り、e=2(n−1)+4である。j>eであるときには、小ブロックB1を示すツール座標であるQ1、Q2、…Qeが全て求められたことになり、この一連の処理を終了して前記ステップS3(図7参照)へ移る。j≦eであるときには、次のステップS302へ移る。
次に、ステップS302においては、カウンタiが奇数であるか偶数であるかを確認し、奇数であるときにはステップS303へ移り、偶数であるときにはステップS306へ移る。
ステップS303(iが奇数であるとき)においては、小ブロックB1を構成する(n+1)本の基本経路122及び複写経路124のうちi本目の開始点であるQjを計算する。この場合、Qjは、小ブロックAを構成する(n+1)本の基本経路122及び複写経路124のうちi本目の開始点であるPjを−Z方向に距離(ΔZ−r)だけ移動させたデータとして表されることから、Qj(Xj、Yj、Zj−(ΔZ−r)、φj、θj、ψj)として計算され、求めたQjを記録する。このようにQjを求めることにより小ブロックAと小ブロックB1は、ラップ量rだけ重複する。
次に、ステップS304において、カウンタjを「+1」更新する。
次に、ステップS305において、小ブロックB1を構成する(n+1)本の基本経路122及び複写経路124のうちi本目の終了点であるQjを計算する。この場合、Qjは、小ブロックAを構成する(n+1)本の基本経路122及び複写経路124のうちi本目の終了点であるPjを−Z方向に距離(ΔZ+d)だけ移動させたデータとして表されることから、Qj(Xj、Yj、Zj−(ΔZ+d)、φj、θj、ψj)として計算され、求めたQjを記録する。このようにQjを求めることにより、小ブロックB1は下方に延長量dだけ延長されるように変形され、ワークWの高さhをカバーするように設定される。
一方、ステップS306(iが偶数であるとき)においては、小ブロックB1を構成する(n+1)本の基本経路122及び複写経路124のうちi本目の終了点であるQjを計算する。この場合、Qjは、小ブロックAを構成する(n+1)本の基本経路122及び複写経路124のうちi本目の終了点であるPjを−Z方向に距離(ΔZ+d)だけ移動させたデータとして表されることから、Qj(Xj、Yj、Zj−(ΔZ+d)、φj、θj、ψj)として計算され、求めたQjを記録する。
次に、ステップS307において、カウンタjを「+1」更新する。
次に、ステップS308において、小ブロックB1を構成する(n+1)本の基本経路122及び複写経路124のうちi本目の開始点であるQjを計算する。この場合、Qjは、小ブロックAを構成する(n+1)本の基本経路122及び複写経路124のうちi本目の開始点であるPjを−Z方向に距離(ΔZ−r)だけ移動させたデータとして表されることから、Qj(Xj、Yj、Zj−(ΔZ−r)、φj、θj、ψj)として計算され、求めたQjを記録する。
ステップS305又はS308の後、ステップS309において、カウンタi及びjを「+1」更新し、ステップS301へ戻る。
このようにカウンタiを更新しながら、小ブロックB1を示すツール座標であるQ1、Q2、…Qeを計算することができる。計算して求められた小ブロックB1は、ブロックデータ設定記録部100に記録される。
また、小ブロックB1は小ブロックAを変形させながら複写設定することから、多種多様のワークWに対して、高い融通性がある。
次に、ステップS207、つまりワークWがセダンである場合の処理について図13を参照しながら説明する。
先ず、ステップS401において、カウンタjとパラメータeとを比較する。パラメータeは、前記の通り、e=2(n−1)+4である。j>eであるときには、小ブロックB2を示すツール座標であるQ1、Q2、…Qeが全て求められたことになり、この一連の処理を終了して前記ステップS3(図7参照)へ移る。j≦eであるときには、次のステップS402へ移る。
次に、ステップS402においては、カウンタiが奇数であるか偶数であるかを確認し、奇数であるときにはステップS403へ移り、偶数であるときにはステップS406へ移る。
ステップS403(iが奇数であるとき)においては、小ブロックB2を構成する(n+1)本の基本経路122及び複写経路124のうちi本目の開始点であるQjを計算する。この場合、Qjは、小ブロックAを構成する(n+1)本の基本経路122及び複写経路124のうちi本目の開始点であるPjを+Z方向に距離(ΔZ−r)だけ移動させたデータとして表されることから、Qj(Xj、Yj、Zj+(ΔZ−r)、φj、θj、ψj)として計算され、求めたQjを一時記録する。このようにQjを求めることにより小ブロックAと小ブロックB2は、ラップ量rだけ重複する。
なお、セダンでは、小ブロックB2が不要であるトランク部やボンネット部が広いため、Qjは書き換えを考慮した一時的な記録とする。後述するステップS405、S406及びS408においても同様に求めたQjは一時的な記録とする。
次に、ステップS404において、カウンタjを「+1」更新する。
次に、ステップS405において、小ブロックB2を構成する(n+1)本の基本経路122及び複写経路124のうちi本目の終了点であるQjを計算する。この場合、Qjは、小ブロックAを構成する(n+1)本の基本経路122及び複写経路124のうちi本目の終了点であるPjを+Z方向に距離(ΔZ+d)だけ移動させたデータとして表されることから、Qj(Xj、Yj、Zj+(ΔZ+d)、φj、θj、ψj)として計算され、求めたQjを一時記録する。
このようにQjを求めることにより、小ブロックB2は上方に延長量dだけ延長されるように変形され、ワークWの高さhをカバーするように設定される。なお、実際上、セダンは車高が低いことから延長量dをマイナス値として設定し、小ブロックB2を低く設定してもよい。
一方、ステップS406(iが偶数であるとき)においては、小ブロックB2を構成する(n+1)本の基本経路122及び複写経路124のうちi本目の終了点であるQjを計算する。この場合、Qjは、小ブロックAを構成する(n+1)本の基本経路122及び複写経路124のうちi本目の終了点であるPjを+Z方向に距離(ΔZ+d)だけ移動させたデータとして表されることから、Qj(Xj、Yj、Zj+(ΔZ+d)、φj、θj、ψj)として計算され、求めたQjを一時記録する。
次に、ステップS407において、カウンタjを「+1」更新する。
次に、ステップS408において、小ブロックB2を構成する(n+1)本の基本経路122及び複写経路124のうちi本目の開始点であるQjを計算する。この場合、Qjは、小ブロックAを構成する(n+1)本の基本経路122及び複写経路124のうちi本目の開始点であるPjを+Z方向に距離(ΔZ−r)だけ移動させたデータとして表されることから、Qj(Xj、Yj、Zj+(ΔZ−r)、φj、θj、ψj)として計算され、求めたQjを一時記録する。
ステップS405又はS408の後、ステップS409において、カウンタi及びjを「+1」更新し、ステップS401へ戻る。
このようにカウンタiを更新しながら、小ブロックB2を示すツール座標であるQ1、Q2、…Qeを計算することができる。計算して求められた小ブロックB2は、ブロックデータ設定記録部100に一時記録される。
次に、前記ステップS2(図7参照)の後に実行される前記ステップS3の処理、つまりブロックデータ120を横方向(Y方向)に複写する処理について、図14〜図16を参照しながら説明する。このステップS3の処理は、図15に示すように、ワゴンに対しては小ブロックA及び小ブロックB1からなる大ブロックCをそれぞれY方向にm回複写し、図16に示すように、セダンに対しては小ブロックAをY方向に複数回複写するとともに、キャビン部200に対しては一時記録した小ブロックB2を複写する。
隣接する小ブロックA同士(又は大ブロックC同士)の間隔である計測ピッチtは、境界部における計測漏れのないように設定される。また、ワークWの長さUをカバーすることができるように、小ブロックA又は大ブロックCをm個設定する。つまり、小ブロックA又は大ブロックCを(m−1)回複写する。
計測ピッチt及び長さUは、ティーチングボックス66を用いて入力され、個数mは、長さUに基づいて算出される。
また、ステップS4(図7参照)において、ワークWの3次元形状を計測する際に、所定の小ブロックA又は大ブロックCに基づく計測を行った後に、隣接する小ブロックA又は大ブロックCに基づく計測を行う。このとき、走行軸モータ64(図4参照)を動作させて移動台車22を移動させることから、ステップS3においてブロックデータ120を横方向(Y方向)に複写する際には、適応する移動台車22の位置データbkを同時に算出する(ステップS511参照)。
先ず、ステップS501において、計測ピッチt、長さUをティーチングボックス66を用いて入力する。長さUに基づいて個数mを計算して記録する。
次に、ステップS502において、ワークWがセダンであるときに、キャビン部200に小ブロックB2を複写する箇所を示すパラメータma及びmbを入力する。パラメータma及びmbは、個数mに対応した値であり、複写する回数がma回からmb回までの間に小ブロックB2を複写する。図16に示す例では、ma=2、mb=3である。このステップS502の処理は、ワークWがワゴンである場合には不要である。
次に、ステップS503において、ブロックデータ120のP1とPeのY方向の距離ΔYを求める。距離ΔYは、ΔY=Ye−Y1として求められる。Y1、Yeは、それぞれP1、P2を構成するパラメータのうちY方向成分の値である。
次に、ステップS504において、カウンタkを「1」に初期化する。
次に、ステップS505において、カウンタkと個数mとを比較する。k>mであるときには、ブロックデータ120をY方向に複写する処理を終了したことになり、この一連の処理を終了して前記ステップS4(図7参照)へ移る。k≦mであるときには、次のステップS506へ移る。
ステップS506においては、小ブロックAを横方向(Y方向)に複写する。具体的には、k番目の小ブロックAはPik(ik=2k・(2・(n−1)+4)+i)で表され、これらの前記ステップS1で作成した小ブロックAを示すPi(i=1〜e)に基づき、次のように添え字だけを変更させながらそのまま複写を行うことができる。
Pik(Xi、Yi、Zi、φi、θi、ψi)←Pi(Xi、Yi、Zi、φi、θi、ψi)
この場合、Pi及びPikに基づく3次元計測を行う際には、それぞれ多関節ロボット14がY方向に移動することから、多関節ロボット14から見た各座標値は全く同じでよい。従って、Y方向の座標値である「Yi」についても同値でよく、複写手順が容易である。
次に、ステップS507において、ワークWの車種に基づいて処理の分岐を行う。ワークWがワゴンである場合には、ステップS508へ移り、ワークWがセダンである場合には、ステップS509へ移る。
ステップS508においては、小ブロックB1を横方向(Y方向)に複写する。この処理は、前記ステップS506と類似の処理であり、具体的には、k番目の小ブロックB1をQikで表したとき、Qik(Xi、Yi、Zi、φi、θi、ψi)←Qi(Xi、Yi、Zi、φi、θi、ψi)という処理により複写を行う。この後ステップS511へ移る。このステップS508及び前記ステップS506の複写処理により、大ブロックCが複写されたことになる。
また、ステップS509においては、その時点におけるカウンタkの値を確認し、mb≧k≧maであるときにはステップS509へ移り、k>mb又はk<maであるときにはステップS511へ移る。つまり、キャビン部200の処理時のみステップS510を実行する。
ステップS510においては、一時記録された小ブロックB2を複写する。この処理は、前記ステップS506と類似の処理であり、具体的には、k番目の小ブロックB2をQikで表したとき、Qik(Xi、Yi、Zi、φi、θi、ψi)←Qi(Xi、Yi、Zi、φi、θi、ψi)という処理により複写を行う。この後ステップS511へ移る。
次のステップS511においては、移動台車22の位置データbkを算出する。位置データbkは、bk←b0+(k−1)・ΔY+tとして求められる。ここで、b0は最初の小ブロックAに対応する移動台車22の初期位置を示すデータである。
次に、ステップS512において、前記ステップS506、S508、S510で求めた小ブロックA、B1、B2を前記ステップS511で求めた位置データbkと対応させて記録する。
次に、ステップS513において、カウンタkを「+1」更新し、ステップS505へ戻る。
このように、カウンタkをインクリメントしながら小ブロックA、B1、B2を複写するとともに対応する位置データbkを求めて記録することにより、選択されたワークWの基本形状タイプに基づき、仮想ブロックである小ブロックA、B1、B2を複写設定し、仮想空間上のワークWの投影面のうち、測定を行う部分を覆うように設定することができる。
複写設定された小ブロックA、B1及びB2は、ワークWの投影面のうち、計測を行う部分を覆うように設定される。例えば、フロントウィンド部に関しては、別途、多関節ロボット14をワークWの正面に移動させて計測する計画である場合には、該フロントウィンド部は側面から見た小ブロックA、B1、B2で覆わないようにしてもよい。
なお、ワークWがワゴンである場合には、小ブロックA及び小ブロックB1からなる大ブロックCを複写することになるが、図15に示すように、小ブロックAのうち、ボンネット上部に位置することになる小ブロックAx1は不要となる場合があることから、オペレータがティーチングボックス66を操作することによって、小ブロックAx1を削除してもよい。また、小ブロックAのうち、フロントウィンド部に位置することになる小ブロックAx2はやや低い高さであっても構わない。従って、オペレータがティーチングボックス66を操作することによって、小ブロックAx2を構成するデータを書き換えたやや低い高さの小ブロックAx3で置き換えてもよい。さらに、小ブロックB1のうち、フロントフェンダ部に位置することになる小ブロックB1x1は、幅がやや狭くなっていても構わない。従って、オペレータがティーチングボックス66を操作することによって、小ブロックB1x1を構成する複写経路124(図9参照)を数本削除した小ブロックB1x2で置き換えてもよい。
次に、前記ステップS3(図7参照)の後に実行される前記ステップS4の処理、すなわちワークWの3次元形状を計測する処理について図17〜図20を参照しながら説明する。なお、図17に示す処理は、基本的にはロボット姿勢計算部106a(図6参照)によって行われ、微小時間毎に繰り返し実行されることによりリアルタイム処理が行われる。
先ず、図17のステップS601において、ブロックデータ120を読み込み、計測を行うための倣い経路を認識する。
次に、ステップS602において、多関節ロボット14の基本位置P0及び基本姿勢を求める。つまり、図18に示すように、レーザスキャナ12の現位置Ptから基本経路122(又は複写経路124)上の最も近い点を基本位置P0とするとともに、基本位置P0におけるレーザスキャナ12の姿勢をブロックデータ120に基づいて求める。
ステップS603において、レーザ変位計20の計測値である距離Lmを入出力インターフェース56を介して読み込む。
ステップS604において、距離Lmに基づき、その時点におけるレーザスキャナ12とワークWと距離である倣い量L0を求める。
ステップS605において、前記ステップS602で求めた基本位置P0及び基本姿勢と、前記ステップS604で求めた倣い量L0との軌道オフセット処理を行い目標位置Ppを求める。つまり、現位置Ptと基本位置P0とを結ぶ直線上において、現位置Ptにおけるレーザスキャナ12を距離L0−Lだけ軌道オフセットさせた位置を目標位置Ppとして設定する。
この際、現位置PtがL±εの範囲内に入っているときには、現位置Ptをそのまま目標位置Ppとしてもよい。
ステップS606において、目標位置Ppと基本位置P0とを比較し、目標位置Ppが基本位置P0よりもワークWに近い位置にある場合には、ステップS607へ移り、遠い位置にある場合にはステップS608へ移る。目標位置Ppと基本位置P0との位置の比較は、例えば、X座標値の大小に基づいて行えばよい。
このステップS606における比較処理は、目標位置Ppと基本位置P0とを直接的に比較する方法の他に、目標位置Ppと基本経路122(又は複写経路124)との位置関係を2次元的に調べる方法や、目標位置Ppとブロックデータ120(図9参照)で形成される面との位置関係を3次元的に調べる方法を採りうる。また、目標位置Ppの比較対象とする位置は基本位置P0以外にも、このステップS606の比較処理専用に設けられた倣い制限面130(図18参照)に基づいて設定される位置Pxを倣い制限位置としてもよい。
ステップS607においては、目標位置Ppを修正する。つまり、Pp←P0という代入処理を行うことによって目標位置Ppを基本位置P0の位置で制限して、目標位置Ppが基本位置P0を超えてワークWに接近することを制限する修正を行う。また、このステップS607では、データ処理部18に対して、目標位置Ppが修正されている状態であることを通知する。これにより、データ処理部18では供給されたデータに対して所定の補正を行うことができる。
ステップS606又はS607の後、ステップS608において、レーザスキャナ12が目標位置Ppに配置されるように多関節ロボット14の動作を制御する。
この後、レーザスキャナ12によりワークWの表面を走査することによって形状を計測し、得られたデータをデータ処理部18へ供給する。
このような3次元形状測定方法によって移動するレーザスキャナ12の動作経路を実験的に検証した結果を図19に示す。この検証における理論的な倣い目標経路132は、断面矩形である検証用ワークW1の表面から距離Lだけ離間した矩形となり、一部は検証用ワークW1の窪み部134の端部134a及び134bに接近する。本実施の形態に係る3次元形状測定方法におけるステップS606及びS607の比較処理及び修正処理を行わない場合には、レーザスキャナ12は倣い軌跡136に示すように、倣い目標経路132に対して略沿った動作を行い、端部134a及び134bに対して非常に接近し、干渉のおそれがある。一方、本実施の形態に係る3次元形状測定方法によれば、倣い軌跡138に示すように、基本経路122を超えることがなく、干渉のおそれがない。
上述したように、本実施の形態に係る3次元形状測定方法では、略Z方向に沿って設定された基本経路122をY方向に複数回複写してブロックデータ120をうることができ、該ブロックデータ120をさらに複写してワークWの側面全域を覆うように設定することができる。従って、ティーチングに要する時間が短時間で足りて作業効率の向上が図られるとともにオペレータの負担が少ない。
また、本実施の形態に係る3次元形状測定方法では、レーザスキャナ12がブロックデータ120によって規定される基本位置P0を超えてワークWに接近することを制限する処理を行う。従って、例えば、図20に示すように、レーザ変位計20による計測点がちょうどホイールハウス140におけるタイヤ142以外の窪み部に達したときであっても、レーザスキャナ12の前進量は基本位置P0で制限される。これにより、レーザスキャナ12が過度に前進してホイールハウス140の端部やタイヤ142に対して干渉することが回避される。つまり、このようなホイールハウス140に対してもブロックデータ120を汎用的にそのまま適用することができ、ホイールハウス140に対する専用のティーチングが不要である。
さらに、前進の制限基準となる基本位置P0は予め設定されているブロックデータ120に基づいて簡便に求められる。
なお、本実施の形態に係る3次元形状測定方法では、インスツルメントパネルなどの凹凸の激しい複雑な表面形状のワークを3次元形状測定装置10により計測する場合においても、レーザスキャナ12とワークとの干渉を回避することができる。
本発明に係る3次元形状測定方法は、上述の実施の形態に限らず、本発明の要旨を逸脱することなく、種々の構成乃至手順を採りうることはもちろんである。