以下に添付図面を参照して、計測装置、計測方法およびロボットの実施形態を詳細に説明する。
(第1の実施形態)
図1は、第1の実施形態に係る、3次元形状の計測を行う計測装置の一例の構成を示す。図1において、計測装置1は、処理・制御部10と、投影・撮像部20とを含む。処理・制御部10は、演算処理部11と、制御部12とを含む。投影・撮像部20は、第1の撮像部であるカメラ21aと、第2の撮像部であるカメラ21bと、投影部30とを含む。
投影部30は、レーザ光を射出する光源と、光源から射出されたレーザ光を所定の方向に導出する光学系とを含む。投影部30は、投影制御部12の制御に従いレーザ光を2軸の各方向に偏向させて光走査を行い、計測対象に対して2次元のパターンを投影する。なお、投影部30が含む光源は、レーザ光を射出する光源に限定されない。すなわち、平行光を射出可能な光源であれば、投影部30の光源として適用可能である。
第1撮像部であるカメラ21aは、第1の焦点距離を持つレンズ22aと、撮像素子23aとを含み、入射された光がレンズ22aを介して撮像素子23aに照射される。カメラ21aは、撮像素子23aが照射された光を変換した電気信号を画像信号に変換して出力する。カメラ21bも同様に、第1の焦点距離より長い第2の焦点距離を持つレンズ22bと、撮像素子23bとを含み、入射された光を画像信号に変換して出力する。撮像素子23aおよび23bは、CCD(Charge Coupled Device)やCMOS(Complementary Metal Oxide Semiconductor)イメージセンサといった一般的な撮像素子を用いることができる。また、カメラ21aおよび21bは、焦点距離(レンズ22aおよび22b)を除き、共通の構成とすることができる。
第2撮像部であるカメラ21bは、投影部30により投影される2次元パターンの中心である投影中心300を中心とした第1の計測領域40を撮像するように、位置および角度が固定される。これに対して、カメラ21aは、投影中心300を中心とし、投影部30から見た場合に第1の計測領域40よりも遠距離にある第2の計測領域41を撮像するように、位置および角度が固定される。換言すれば、第2の計測領域41は、投影部30から第1の計測領域40を介して2次元のパターンが投影される領域である。
カメラ21aおよび21bは、例えば制御部12の制御に従い撮像を行う。カメラ21aから出力された画像信号(第1撮像画像)、および、カメラ21bから出力された画像信号(第2撮像画像)は、それぞれ演算処理部11に供給される。演算処理部11は、供給された画像信号に基づき3次元座標の算出を行い、3次元形状を取得する。3次元座標の算出については後述する。
演算処理部11は、算出された3次元形状を示す3次元形状情報を計測装置1の外部に出力すると共に、制御部12に供給する。
制御部12は、演算処理部11から供給された信号(例えば、3次元形状情報)に応じて、投影部30が投影するパターン光(例えば、2次元パターン光)を切り替えることができる。また、制御部12は、カメラ21aとカメラ21bとを同期させて撮像制御を行う。すなわち、カメラ21aとカメラ21bとが略同時に撮像可能になるように制御する。略同時とは、例えば、カメラの1フレーム分の露光時間以内である。
このように、計測装置1は、カメラ21aおよび21bそれぞれについて、画像信号に基づき、3次元計測を実行することが可能な構成となっている。
図2は、第1の実施形態に適用可能な投影部30の一例の構成を示す。図2において、投影部30は、レーザ光33を射出する、例えばレーザダイオードによる光源31と、照射された光を偏向させて反射させる偏向素子32とを含む。光源31から出射されたレーザ光33は、例えばレンズ34およびアパーチャ35を介して固定ミラー36に照射される。レーザ光33が固定ミラー36に反射された反射光は、偏向素子32の偏向中心に照射される。
偏向素子32は、照射されたレーザ光33を2軸の方向(図中に矢印Mで示す)に偏向させて2次元の投影パターン60を形成する。この投影パターン60は、例えば対象50を含む領域に照射され投影される。
偏向素子32について、より具体的に説明する。例えば、偏向素子32は、図3に示すように、照射されたレーザ光33をライン方向(X軸方向)に偏向させ、さらに、Y軸方向に、すなわちライン順次に偏向させる。このような平行光による光走査をラスタスキャン方式とよぶ。これにより、2次元面上の一定の領域がレーザ光33により走査され、投影パターン60が形成される。このとき、例えば光源31の点灯および消灯(オン/オフ)を制御することで、所望の投影パターン60を対象に投影させることができる。
偏向素子32としては、例えばMEMS(Micro Electro Mechanical Systems)光スキャナを用いることができる。MEMS光スキャナは、表面をミラー状態とした可動板と、可動板を2軸方向に傾斜可能な梁と、梁を支持する支持部とを含む構造をMEMS技術により形成する。MEMS光スキャナは、可動板を電磁駆動や静電駆動により駆動することで、可動板に照射された光を2軸の各方向に偏向させて反射させ射出することができる。偏向素子32を、MEMS技術を用いて形成することで、投影部30を小型化することが可能となり、例えば当該計測装置1をロボットアームなどに搭載して用いる場合に、ロボットアームの可搬重量に対する制限を抑制することができる。
投影部30から射出されたレーザ光33は、レーザ光33の直進性により第1の計測領域40および第2の計測領域41それぞれにおいて十分な解像度が得られる。したがって、このようにレーザ光33を用いて走査を実施する投影部30は、カメラ21aおよび21bにおける焦点の調整が不要となる。したがって、平行光を光走査してパターン光を投影することにより、焦点の調整無しに、近傍と遠方に同時に適したパターン光を投影することができる。
図4は、第1の実施形態に係る計測装置1の機能を説明するための一例の機能ブロック図である。なお、図4において、上述した図1および図2と共通する部分には同一の符号を付して、詳細な説明を省略する。
演算処理部11は、カメラ21aおよび21bから出力された画像信号を解析する。演算処理部11は、画像信号の解析結果と、各カメラ21aおよび21bのキャリブレーション情報とを用いた演算処理により、3次元情報の復元処理を行い、これにより対象の3次元計測を実行する。演算処理部11は、復元された3次元情報を投影制御部12に供給する。
制御部12は、投影制御部120と、パターン記憶部121と、光源駆動部122と、偏向素子駆動部123と、撮像制御部124とを含む。偏向素子駆動部123は、投影制御部120の制御に従い偏向素子32を駆動する。投影制御部120は、偏向素子32の偏向中心に照射されたレーザ光33が対象をライン順次で走査するように(図3参照)、偏向素子駆動部123を制御する。撮像制御部124は、カメラ21aおよびカメラ21bの撮像タイミングや露光量を制御する。また、撮像制御部124は、カメラ21aとカメラ21bとの同期撮像が可能となるようにカメラ21aとカメラ21bとに撮像命令信号を略同時に出力する。
光源駆動部122は、投影制御部120の制御に従い光源31の点灯および消灯を制御する。パターン記憶部121は、例えば、計測装置1が含む不揮発性の記憶媒体に予め記憶される、光源31から出射され偏向素子32により偏向されたレーザ光33を対象に投影させる際の投影パターン60を形成するためのパターン情報を、投影制御部120からの指示に従い読み出して、投影制御部120に渡す。投影制御部120は、パターン記憶部121から渡されたパターン情報に基づき光源駆動部122を制御する。
投影制御部120は、演算処理部11から供給された、復元された3次元情報に基づき、パターン記憶部121に対してパターン情報の読み出しを指示する。投影制御部120は、パターン記憶部121により読み出されたパターン情報に従い光源駆動部122を制御する。また、投影制御部120は、読み出したパターン情報に応じて演算処理部11に対して演算方法を指示する。
なお、図4において、演算処理部11、投影制御部120および撮像制御部124は、CPU(Central Processing Unit)上で動作する計測プログラムにより実現することができる。これに限らず、演算処理部11、投影制御部120および撮像制御部124を、互いに協働して動作するハードウェア回路により構成してもよい。
図5は、第1の実施形態に適用可能な計測装置1における処理・制御部10の一例のハードウェア構成を示す。図5において、処理・制御部10は、CPU100と、ROM(Read Only Memory)101と、RAM(Random Access Memory)102と、ストレージ103と、制御I/F(インタフェース)104および105と、データI/F106と、通信I/F107とを含み、これら各部がバス110により互いに通信可能に接続される。
ストレージ103は、データを不揮発に記憶する記憶媒体であって、ハードディスクドライブやフラッシュメモリを適用できる。ストレージ103は、CPU100が動作するためのプログラムやデータが記憶される。また、ストレージ103は、複数のパターン情報が予め記憶される。パターン記憶部121は、投影制御部120に指定されたパターン情報を、ストレージ103から読み出す。なお、ROM101を書き換え可能なROMとし、ストレージ103の機能をROM101により実現してストレージ103を省略してもよい。
CPU100は、例えば、ROM101やストレージ103に予め記憶されたプログラムに従い、RAM102をワークメモリとして用い、この処理・制御部10の全体の動作を制御する。制御I/F104および105は、それぞれ、光源31および偏光素子32を駆動するための駆動回路に対するインタフェースである。
データI/F106は、外部の機器との間でデータの送受信を行う。通信I/F107は、通信ネットワークに対する通信を制御する。この計測装置1の外部と投影制御部120との間で、データI/F106または通信I/F107を介して通信を行うことで、外部からこの計測装置1の動作を制御することができる。なお、計測装置1の使用環境などによっては、データI/F106および通信I/F107のうち何れか一方を省略することができる。
なお、第1の実施形態に係る計測装置1で実行される計測プログラムは、ストレージ103やROM101などに予め記憶されて提供される。これに限らず、第1の実施形態に係る計測装置1で実行される計測プログラムは、インストール可能な形式または実行可能な形式のファイルでCD(Compact Disk)、フレキシブルディスク(FD)、DVD(Digital Versatile Disk)などのコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。
さらに、第1の実施形態に係る計測装置1で実行される計測プログラムを、インターネットなどのネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、第1の実施形態に係る計測装置1で実行される計測プログラムをインターネットなどのネットワーク経由で提供または配布するように構成してもよい。
第1の実施形態に係る計測装置1で実行される計測プログラムは、上述した演算処理部11および投影制御部120、撮像制御部124を含むモジュール構成となっている。実際のハードウェアとしては、CPU100が、ROM101またはストレージ103から計測プログラムを読み出して実行することにより、上述した各部がRAM102などの主記憶装置上にロードされ、演算処理部11および投影制御部120、撮像制御部124が主記憶装置上に生成されるようになっている。
(第1の実施形態に適用可能な3次元計測について)
次に、第1の実施形態に適用可能な3次元計測について説明する。対象の形状および姿勢を3次元情報として取得する3次元計測を、対象に照射された光を観測することで行うための、幾つかの方法が知られている。第1の実施形態に係る計測装置1では、3次元計測を実行する方法として、(1)位相シフト法を用いた計測、(2)光切断法を用いた計測、および、(3)ランダムドット法を用いた計測、の3方法を採用する。なお、上述した3方法については、例えば、非特許文献1、非特許文献2に記載されている公知な方法を適用することができる。
(1)の位相シフト法を用いた計測について、概略的に説明する。位相シフト法では、非特許文献1に記載されるように、図6(a)に例示される、それぞれ位相の異なる位相シフトパターンである複数の投影パターン6010、6011、6012および6013を用いた位相解析により、3次元の形状および姿勢の復元を行う。このとき、図6(b)に例示される、それぞれ異なるグレイコードパターンである複数の投影パターン6020、6021、6022および6023を用いた空間コード化法を併用し、これら空間コード化法および位相シフト法の結果に基づき位相連結を行うことで、高精度に3次元の形状および姿勢の復元を行うことができる。
このように、(1)の位相シフト法を用いた計測では、複数の投影パターン6010〜6013、6020〜6023それぞれについて撮像を行う必要がある。
(2)の光切断法を用いた計測について、概略的に説明する。光切断法は、非特許文献2に記載されるように、ライン光源により計測対象50に対して輝線を照射し、この輝線が照射された計測対象50を撮像し、輝線画像を得る。例えば図7に例示するように、偏向素子32によりレーザ光33を偏向させてライン方向に走査することで、ライン方向の輝線33bを形成することができる。この輝線画像に基づき、計測対象50の1ライン分の3次元形状が生成される。図7の投影パターン603に示すように、計測対象50に対して複数ラインについて走査を行うことで、計測対象50の全体の3次元形状を生成できる。このような光切断パターンを用いた光切断法は、計測対象50が光沢を有する場合に用いて好適である。
(3)のランダムドット法を用いた計測について、概略的に説明する。図8は、ランダムドット法で用いる投影パターン604の例を示す。投影パターン604は、輝度値が2値で表現された各ドットがランダムに配置されたランダムドットパターンである。ランダムドット法では、投影に用いる投影パターン604と、投影パターン604が計測対象に反射された反射画像より得たパターンとの対応位置を求める。例えば、投影パターン604を複数のブロックに分割し、投影パターン604と反射画像による反射画像パターンとのパターンマッチングをブロック毎に行うことで、投影パターン604における各ドットに対する反射画像パターンにおける各ドットとの対応位置を求めることができる。
ランダムドット法では、各ドットがランダムに配置された投影パターン604を用いるため、対応点を一意に求めることができる。すなわち、ランダムドット法は、1回の撮像により3次元計測を実行することが可能である。
(第1の実施形態に係る3次元計測の具体例)
次に、第1の実施形態に係る3次元計測について、より具体的に説明する。図9は、第1の実施形態に係る3次元計測処理を示す一例のフローチャートである。
なお、以下では、計測装置1は、計測対象50の3次元形状を、例えばCAD(Computer-Aided Design)データや実測値などにより予め取得しているものとする。この3次元形状は、計測対象50の3次元座標を含み、例えばストレージ103に記憶される。これに限らず、計測装置1は、計測対象50が載置される台座の3次元形状を予め取得しておき、計測した3次元形状と台座の3次元形状との差分を求めることで、計測対象の3次元形状を求めてもよい。また、計測装置1に用いられるカメラ21aおよび21bは、既知のカメラキャリブレーション、アクティブ・カメラキャリブレーションにより、キャリブレーション情報が予め取得されているものとする。
図9に示されるように、第1の実施形態に係る3次元計測処理は、処理Aと処理Bとに大別できる。処理Aは、計測対象50を認識するための処理であって、より高速な処理が望まれる。処理Bは、計測対象の3次元形状を詳細に検出し、3次元座標を算出する処理である。
処理Aについて説明する。処理Aでは、上述した(3)のランダムドット法を用いて3次元計測を行う。ステップS10で、計測装置1は、第1の計測領域40および、第2の計測領域41について計測を実行する。
より具体的には、計測装置1において、投影制御部120は、パターン記憶部121に対して、ランダムドット法による投影パターン604のパターン情報を指定し、指定されたパターン情報を読み出すように指示する。投影制御部120は、パターン記憶部121が読み出した投影パターン604のパターン情報に従い光源駆動部122および偏向素子駆動部123を制御して、図8に例示したような投影パターン604の投影を行う。また、投影制御部120は、読み出したパターン情報を演算処理部11に出力する。
投影制御部120は、投影パターン604の投影と同期して、撮像制御部124に対して、カメラ21aによる第1の計測領域40の撮像と、カメラ21bによる第2の計測領域41の撮像と、を実行させるための実行信号を出力する。撮像制御部124は、投影部制御部120から出力された実行信号を受けて、カメラ21a(第1撮像部)およびカメラ21b(第2撮像部)に略同時に撮像命令信号を出力する。カメラ21aおよびカメラ21bは、それぞれ撮像して生成した画像信号(第1撮像画像、第2撮像画像)を演算処理部11に出力する。演算処理部11は、カメラ21aおよびカメラ21bから取得した各画像信号と、投影制御部120から渡されたパターン情報とに基づきパターンマッチングを行って第1の計測領域40および第2の計測領域41における3次元座標をそれぞれ算出し、3次元形状を求める。
次のステップS11で、計測装置1において、演算処理部11は、ステップS10で求めた3次元形状に基づき、第1の計測領域40に計測対象50が存在するか否かを判定する。例えば、演算処理部11は、ストレージ103に記憶される計測対象50の3次元形状と、ステップS10で算出された3次元形状とを比較し、比較結果に基づき第1の計測領域40において計測対象50が認識されたか否かを判定する。演算処理部11は、第1の計測領域40内に計測対象50が認識されたと判定した場合(ステップS11、「有り」)、処理を、処理B内のステップS20に移行させる。一方、演算処理部11は、第1の計測領域40内に計測対象50が認識されないと判定した場合(ステップS11、「無し」)、処理をステップS12に移行させる。
ステップS12で、演算処理部11は、上述したステップS11と同様にして、ステップS10で求めた3次元形状に基づき、第2の計測領域41において計測対象50が認識されたか否かを判定する。演算処理部11は、第2の計測領域41内に計測対象50が認識されたと判定した場合(ステップS12、「有り」)、処理を、処理B内のステップS20に移行させる。
一方、演算処理部11は、第2の計測領域41内に計測対象50が認識されないと判定した場合(ステップS12、「無し」)、処理をステップS14に移行させる。この場合、第1の計測領域40および第2の計測領域41の両方において計測対象50が認識されていないことになる。計測装置1は、ステップS14で、エラー処理を行い、図9のフローチャートによる一連の処理が終了される。エラー処理は、例えば計測装置1の上位装置に対してエラーを返す処理が考えられる。
次に、処理Bについて説明する。処理Bでは、ステップS10またはステップS12で計測され認識された3次元形状に対して、さらに詳細な計測を実行する。また、処理Bでは、第1の計測領域40および第2の計測領域41のうち、上述の処理Aにおいて計測対象50が認識された計測領域を指定された計測領域として、この指定された計測領域について計測を行う。
処理Bにおいて、ステップS20で、例えば演算処理部11は、計測方法を選択する。ここでは、上述した(1)の位相シフト法を用いた計測方法(第1の計測方法とする)と、(2)の光切断法を用いた計測方法(第2の計測方法とする)と、(3)のランダムドット法を用いた計測方法(第3の計測方法とする)とから、計測方法を選択する。また、この例では、処理Bにおいては、第1〜第3の計測方法は、第1の計測方法が最も優先度が高く、第3の計測方法が最も優先度が低いものとしている。優先度は、各計測方法の精度や速度から任意に設定可能である。
演算処理部11は、ステップS20で第1の計測方法を選択すると、選択した計測方法を投影制御部120に伝え、処理をステップS21aに移行させる。ステップS21a〜ステップS23aの処理は、第1の計測方法すなわち位相シフト法を用いた計測方法により3次元計測を行う処理である。ステップS21aで、投影制御部120は、演算処理部11から伝えられた計測方法に従い、位相シフトパターンおよびグレイコードパターンによる投影を行うように制御する。また、投影制御部120は、撮像制御部124に対して、ステップS11で第1の計測領域40に計測対象50が有ると判定した場合は、カメラ21aに対して、第1計測領域40の撮像の実行命令を出力する。また、投影制御部120は、ステップS12で第2計測領域41に計測対象50が有ると判定した場合は、カメラ21bに対して、第2計測領域41の撮像の実行信号を出力する。投影部制御部120の実行信号を受けて、撮像制御部124は、カメラ21aまたはカメラ21bに対して撮像命令信号を出力する。
より具体的には、投影制御部120は、位相シフトパターンによる投影パターン6010〜6013の投影を順次実行するように、パターン記憶部121に対して読み出す各パターン情報を指定し、指定された各パターン情報を読み出すように指示する。投影制御部120は、指示に従いパターン記憶部121により読み出されたパターン情報に従い光源駆動部122および偏向素子駆動部123をそれぞれ制御する。また、投影制御部120は、各投影パターン6010〜6013の投影に同期して、指定された計測領域に対応するカメラによる撮像を実行するように、撮像制御部124に指示する。演算処理部11は、各投影パターン6010〜6013の投影に同期して撮像して得た各画像信号を、例えばRAM102に記憶する。
投影制御部120は、さらに、グレイコードパターンによる投影パターン6020〜6023の投影を順次実行するように、パターン記憶部121に対して読み出す各パターン情報を指定し、指定された各パターン情報を読み出すように指示する。投影制御部120は、指示に従いパターン記憶部121により読み出されたパターン情報に従い光源駆動部122および偏向素子駆動部123をそれぞれ制御する。また、投影制御部120は、各投影パターン6020〜6023の投影に同期して、指定された計測領域に対応するカメラによる撮像を実行するように、撮像制御部124に指示する。演算処理部11は、各投影パターン6020〜6023の投影に同期して撮像して得た各画像信号を、例えばRAM102に記憶する。
図6(a)および図6(b)の投影パターン6010〜6013、6020〜6023を用いる場合、演算処理部11は、ステップS21aにおいて撮像動作を8回、実行することになる。
次のステップS22aで、演算処理部11は、ステップS21aで撮像して得た各画像信号に基づき、解析処理を実行する。より具体的には、演算処理部11は、位相シフトパターンによる投影パターン6010〜6013を撮像して得た各画像信号に基づき位相解析を行う。また、演算処理部11は、グレイコードパターンによる投影パターン6020〜6023を撮像して得た各画像信号に基づきグレイコード解析を行う。さらに、演算処理部11は、位相解析を行った結果と、グレイコード解析を行った結果に基づき位相連結の演算を行う。
次のステップS23aで、演算処理部11は、ステップS22aによる位相連結の演算結果により取得した三角測量で用いる対応位置と、ステップS21aで投影制御部120から渡された各投影パターン6010〜6013、6020〜6023のパターン情報と、指定された計測領域に対応するカメラのキャリブレーション情報とを用いて、既知の手法により、計測対象の3次元座標を算出し、3次元形状を求める。
演算処理部11は、ステップS23aで3次元形状を求めると、処理をステップS24に移行させる。ステップS24で、演算処理部11は、ステップS23aで求めた3次元形状の可否を判定する。例えば、演算処理部11は、ステップS23aで求めた3次元形状と、計測対象について予め取得される3次元形状との差分を求め、差分が閾値未満の場合に、十分な3次元形状が得られたと判定する。演算処理部11は、十分な3次元形状が得られたと判定した場合(ステップS24、「OK」)、処理をステップS25に移行させ、算出された3次元形状を示す形状情報を、例えば計測装置1の外部に出力する。
一方、演算処理部11は、ステップS24で十分な3次元形状が得られなかったと判定した場合(ステップS24、「NG」)、処理をステップS20に戻す。このとき、演算処理部11は、直前の3次元計測で用いた計測方法の次に優先度が高い計測方法を選択する。上述の例では、直前の3次元計測では第1の計測方法(位相シフト法を用いた計測方法)が用いられているため、第1の計測方法の次に優先度が高い第2の計測方法(この例では光切断法を用いた計測方法)を選択する。
演算処理部11は、ステップS20で第2の計測方法を選択すると、選択した計測方法を投影制御部120に伝え、処理をステップS21bに移行させる。ステップS21b〜ステップS23bの処理は、第2の計測方法すなわち光切断法を用いた計測方法により3次元計測を行う処理である。ステップS21bで、投影制御部120は、演算処理部11から伝えられた計測方法に従い、光切断パターンによる投影を行うように制御すると共に、撮像制御部124に対して、指定された計測領域に対応するカメラにより当該計測領域の撮像を行うよう指示する。
より具体的には、投影制御部120は、光切断パターンによる投影パターン603の投影を実行するように、パターン記憶部121に対して読み出すパターン情報を指定し、指定されたパターン情報を読み出すように指示する。投影制御部120は、指示に従いパターン記憶部121により読み出されたパターン情報に従い光源駆動部122および偏向素子駆動部123をそれぞれ制御する。また、投影制御部120は、投影パターン603の投影に同期して、指定された計測領域に対応するカメラによる撮像を実行するように、撮像制御部124に指示する。演算処理部11は、投影パターン603の投影に同期して撮像して得た各輝線画像の画像信号を、例えばRAM102に記憶する。
次のステップS22bで、演算処理部11は、ステップS21bで取得した各輝線画像の画像信号に基づき輝度値の重心を検出する。次のステップS23bで、演算処理部11は、ステップS22bで検出した重心と、輝線画像と、投影パターン603のパターン情報と、指定された計測領域に対応するカメラのキャリブレーション情報とに基づき計測対象50の3次元座標を算出し、3次元形状を求める。
演算処理部11は、ステップS23bで3次元形状を求めると、処理をステップS24に移行させて、上述したようにして、求めた3次元形状の可否を判定する。演算処理部11は、十分な3次元形状が得られたと判定した場合(ステップS24、「OK」)、処理をステップS25に移行させ、算出された3次元形状を示す形状情報を、例えば計測装置1の外部に出力する。
一方、演算処理部11は、ステップS24で十分な3次元形状が得られなかったと判定した場合(ステップS24、「NG」)、処理をステップS20に戻し、直前の3次元計測で用いた計測方法の次に優先度が高い計測方法を選択する。この場合には、直前の3次元計測では第2の計測方法(光切断法を用いた計測方法)が用いられているため、第2の計測方法の次に優先度が高い第3の計測方法(この例ではランダムドット法を用いた計測方法)を選択する。
演算処理部11は、ステップS20で第3の計測方法を選択すると、選択した計測方法を投影制御部120に伝え、処理をステップS21cに移行させる。ステップS21c〜ステップS23cの処理は、第3の計測方法すなわちランダムドット法を用いた計測方法により3次元計測を行う処理である。ステップS21cで、投影制御部120は、演算処理部11から伝えられた計測方法に従い、ランダムドットパターンによる投影を行うように制御すると共に、撮像制御部124に対して、指定された計測領域に対応するカメラにより当該計測領域の撮像を行うよう指示する。
より具体的には、投影制御部120は、ランダムドットパターンによる投影パターン604の投影を実行するように、パターン記憶部121に対して読み出すパターン情報を指定し、指定されたパターン情報を読み出すように指示する。投影制御部120は、指示に従いパターン記憶部121により読み出されたパターン情報を演算処理部11に渡すと共に、当該パターン情報に従い光源駆動部122および偏向素子駆動部123をそれぞれ制御する。また、投影制御部120は、投影パターン604の投影に同期して指定された計測領域に対応するカメラによる撮像を実行するように、撮像制御部124に指示する。演算処理部11は、投影パターン604の投影に同期して撮像して得た画像信号を、例えばRAM102に記憶する。
次のステップS22cで、演算処理部11は、ステップS21cで取得した画像信号に基づき、投影制御部120から渡されたランダムドットパターンによるパターン情報とのパターンマッチングを行う。演算処理部11は、このパターンマッチングにより、投影制御部120から渡されたランダムドットパターンに含まれる各ドットに対する、画像信号に含まれるランダムドットパターンの各ドットの対応位置を求める。次のステップS23cで、演算処理部11は、ステップS22cで求めた対応位置と、カメラ21aのキャリブレーション情報とに基づき、計測対象の3次元座標を算出し、3次元形状を求める。
演算処理部11は、ステップS23cで3次元形状を求めると、処理をステップS24に移行させて、上述したようにして、求めた3次元形状の可否を判定する。演算処理部11は、十分な3次元形状が得られたと判定した場合(ステップS24、「OK」)、処理をステップS25に移行させ、求めた3次元形状を示す形状情報を、例えば計測装置1の外部に出力する。
一方、演算処理部11がステップS24で十分な3次元形状が得られなかったと判定した場合(ステップS24、「NG」)、第1の計測方法、第2の計測方法および第3の計測方法の何れを用いても3次元形状が算出できなかったことになる。この場合、例えば、処理をステップS14に移行させてエラー処理を行い、図9のフローチャートによる一連の処理を終了させることができる。
このように、第1の実施形態に係る計測装置1は、計測対象50の近傍と遠方をまず1回の撮像にて3次元形状の算出が可能な計測方法を用いて計測対象50を認識する(図9のフローチャートにおける処理A)。また、計測装置1は、処理Aによる計測対象50の認識後は、複数回の撮像が必要である一方で、より高精度に3次元形状を算出可能な計測方法を用いて、処理Aで計測対象が有ると判定した領域に対して計測対象の3次元計測を実行する(図9のフローチャートにおける処理B)。また、処理Bにおいては、複数の計測方法を順次実行させることもできる。なお、第1撮像画像から得た3次元情報と第2撮像画像から得た3次元情報とを繋ぐ処理を行ってもよい。また、処理Bの処理方法の選択は、処理Aで得た3次元情報に基づいて行ってもよい。例えば、処理Aから物体のサイズが小さいことは判明した場合はより精度が高い方法を、物体のサイズが大きいことが判明した場合はより高速性の高い方法を選択するようにしてもよい。
第1の実施形態に係る計測装置1によれば、近傍と遠方とを略同時に撮像が可能である。また、カメラ21aとカメラ21bの焦点距離や測定領域は自由に設定が可能であるため、測定可能な近傍と遠方の距離を自由に設定することが可能となる。
従来技術では、近傍と遠方とを同時に撮像することができなかった。これは、投影部が光走査型ではなく光投射型であったため、照射距離に合わせて焦点距離やパターン光を変える必要があり、近傍と遠方とに同時に適したパターン光を投射することができず、近傍と遠方の撮像を切り換える必要があったためである。また、撮像部が1つ(ステレオカメラ)であったため、近傍と遠方とを同時に適切に撮像することができず、さらに、近傍と遠方との適切な撮像は、焦点距離調節機能または被写界深度に依存するため、近傍と遠方との間の距離(計測可能領域幅)を広げることが難しかった。
近傍と遠方とを略同時に撮像する必要性について説明する。例えば、安価なロボットアームに計測装置を付随させた場合、ロボットアームのモータの挙動精度が低いため、ロボットアームの動きは予想が難しい。そのため、ロボットアームを動かしながら計測装置で計測して挙動の微調整を行う必要がある。しかしながら、ロボットアームを動かしながら近傍と遠方とを撮像したとき、撮像時間に差があると、その間にロボットアームが動いているため、近傍と遠方との距離を一定に保つことができない。そのため、遠方計測により遠方に存在していた物体にロボットアームを近づけながら、近傍計測に切り替えたときに、対象物までの距離に誤差が生じる。また、近傍で得た3次元情報と遠方で得た3次元情報とを繋ぐことが困難となる。
ロボットアームを撮像の度に止める場合、スムーズな挙動ができず、より挙動精度が下がってしまう。また、モータの回転数等でロボットアームの挙動を把握しようにも、モータの精度自体が低い場合には困難である。
そこで、第1の実施形態に係る計測装置1によれば、平行光を光走査する光走査型の投影部と、計測領域の異なる第1撮像部、第2撮像部の複数の撮像部とを用いて、近傍と遠方とを同期して撮像可能にする。これにより、近傍と遠方とを略同時に撮像可能となり、さらに計測可能領域幅を大きくすることが容易になる効果を奏する。
さらに、高速に3次元情報取得可能な処理Aと、より高精度に3次元情報取得可能な処理Bと、を切り替えて使用することにより、高速性と精度とを向上させることができる。
また、近傍に障害物が存在している場合は、近傍を計測して障害物を避けながら遠方にロボットアームを近づけることが可能となる。
なお、図9のフローチャートにおける処理Aにおいて、位相シフトパターンを高速に切り替えて処理を高速化させた位相シフト法を用いて計測を行うことも考えられる。この場合、位相シフトパターンの高速切替に追随するように、カメラ21aおよび21bにおいて高速撮像を行う必要がある。撮像の高速化は、露光時間の減少につながり十分なS/Nを確保することが困難となる。また、S/Nの確保のために、光源31から射出されるレーザ光33の光量を増加させることも考えられる。しかしながら、レーザ光の光量を増加させる場合、安全面を考慮する必要がある、また、カメラ21aおよび21bが大型化し高価になってしまうという課題があり、上述したランダムドット法を用いる方法に比べ、不利である。
(第2の実施形態)
次に、第2の実施形態について説明する。第2の実施形態は、第1の実施形態に係る計測装置1を、ロボットアームと組み合わせて用いる例である。
図10(a)および図10(b)は、第2の実施形態に適用可能なロボットアーム70の例を概略的に示す。図10(a)および図10(b)に示されるロボットアーム70は、対象物をピッキングするためのハンド部71を備え、第1の実施形態に係る計測装置1が搭載されている。ロボットアーム70は、それぞれ屈曲可能な複数の可動部を備え、ハンド部71の位置および向きを、制御に従い各可動部の可動範囲内で自在に移動および変更させることができる。
この例では、計測装置1は、ロボットアーム70の先端部分に搭載されている。これに限らず、計測装置1は、投影・撮像部20をロボットアーム70の先端部に搭載し、処理・制御部10を例えばロボットアーム70の外部に設置してもよい。また、計測装置1は、投影中心300がハンド部71の向く方向に一致するように設けられ、ハンド部71のピッキング対象を計測対象50として計測可能なようになっている。このとき、投影・撮像部20に含まれる投影部30、ならびに、カメラ21aおよび21bは、ハンド部71によるピッキングにより計測範囲が遮られない位置に固定すると、好ましい。
図10(a)は、カメラ21bを用いて第2の計測領域41に対する計測を行う場合の例を示す。計測装置1の投影部30から射出されるレーザ光33により、第2の計測領域41内の面に対して投影パターン60aが投影される。計測装置1は、この投影パターン60aの計測対象50からの反射光を用いて、当該計測対象50の3次元座標を算出し、3次元形状を求める。図10(b)は、カメラ21aを用いて第1の計測領域40に対する計測を行う場合の例を示す。投影部30は、第1の計測領域40内の面に投影パターン60bを投影する。第1の計測領域40は、第2の計測領域41に対して投影部30からの距離が近いため、投影パターン60bは、投影パターン60aよりも小さくなる。
このように、第2の実施形態では、計測装置1をロボットアーム70に搭載することで、計測装置1と計測対象50との距離を容易に変更できる。そのため、計測装置1は、計測領域を、第1の計測領域40と第2の計測領域とで容易に切り替えることが可能となる。
図11は、第2の実施形態に係るロボットアーム70の一例の構成を概略的に示す。ロボットアーム70は、アーム駆動部700と、複数のモータ7011、7012、…を含む。モータ7011、7012、…は、アーム駆動部700の制御に従い、ハンド部71を含むロボットアーム70の各可動部を駆動する。
アーム駆動部700は、計測装置1の計測結果に基づき、各モータ7011、7012、…を駆動する。また、アーム駆動部700は、計測装置1に対して、カメラ21aを用いた第1の計測領域40に対する計測と、カメラ21bを用いて第2の計測領域41に対する計測とを、適宜要求する。すなわち、アーム駆動部700は、計測装置1の計測結果に基づきロボットアーム70の動作を制御する動作制御部として機能する。
なお、ここでは、ロボットアーム70の各可動部を駆動するアクチュエータとしてモータ7011、7012、…を用いるように説明したが、これはこの例に限られない。ロボットアーム70の各可動部は、油圧式、空圧式など他の方式のアクチュエータを用いて駆動してもよい。
図12は、第2の実施形態に係るロボットアーム70の制御の例を示すフローチャートである。ステップS30で、ロボットアーム70は、図10(a)に示したように、第2の計測領域41内に計測対象50が位置するように、予め設定された初期化情報に従いハンド部71の位置を初期化する。
次のステップS31で、ロボットアーム70は、初期化位置において計測対象50が検出されたか否かを判定する。ロボットアーム70は、計測対象50が検出されないと判定した場合(ステップS31、「No」)、処理をステップS30に戻す。一方、ロボットアーム70は、計測対象50が検出されたと判定した場合(ステップS31、「Yes」)、処理をステップS32に移行させる。
ステップS31では、例えばロボットアーム70は、計測対象50を検出するための所定のセンサ(光センサ、接触センサなど)を用いて計測対象50の検出を行う。これに限らず、ロボットアーム70を操作するユーザによるユーザ指示に応じて、検出されたか否かを判定してもよい。さらに、ロボットアーム70は、計測装置1を用いて第2の計測領域41を計測することで、計測対象50の検出の判定を行ってもよい。
ステップS32で、計測装置1は、例えばロボットアーム70の要求に応じて、図9のフローチャートにおける処理A、すなわち、ランダムドット法を用いた3次元計測を行う。次のステップS33で、計測装置1は、ステップS32での3次元計測の結果に基づき、ハンド部71と計測対象50との距離を推定する。計測装置1は、3次元計測の結果に基づき計測対象50の凡その位置および姿勢をさらに認識してもよい。
次のステップS34で、ロボットアーム70は、ステップS33で計測装置1により推定された計測対象50までの距離に基づき、ハンド部71を、第1の計測領域40内に計測対象50が位置するように移動させる。このとき、ロボットアーム70は、計測装置1により認識された計測対象50の凡その位置をさらに用いてハンド部71を移動させてもよい。さらに、ロボットアーム70は、計測装置1に、第1の計測領域40に対して複数回の3次元計測を要求し、各3次元計測の結果に基づきハンド部71の位置を微調整してもよい。
次のステップS35で、計測装置1は、例えばロボットアーム70の要求に応じて、図9のフローチャートにおける処理Bの、ステップS21a〜ステップS23aの処理に従い、位相シフトパターンおよびグレイコードパターンにより、位相シフト法を用いた3次元計測を行う。次のステップS36で、計測装置1は、ステップS35で計測された3次元形状に基づき、計測対象50の位置および姿勢を推定する。ここでは、位相シフト法を用いて計測された3次元計測を用いるため、ステップS32およびステップS33によるランダムドット法を用いた場合よりも、計測対象50の位置および姿勢をより高精度に推定することが可能である。
なお、第2の実施形態においても、位相シフト法を用いた計測方法により十分な3次元形状が得られない場合、上述したように、計測方法の優先度に従い、第2の計測方法、第3の計測方法を順次実行することができる。
ロボットアーム70は、ステップS36で推定された計測対象50の位置および姿勢に基づきハンド部71の位置および向きなどを制御して、計測対象50をピッキングする。
これに限らず、ステップS35の3次元計測により得られる3次元形状と、計測対象50の既知の3次元形状とに基づき、計測された計測対象50に対する不良品判別、異物判別などの検査を実行することも可能である。
このように、第2の実施形態に係るロボットアーム70は、計測装置1により、1回の撮像処理で3次元計測が可能なランダムドット法を用いた計測を行い、計測対象50までの距離を推定してハンド部71を移動させる。ハンド部71の移動後、複数回の撮像処理が必要な一方でより高精度な3次元計測が可能な位相シフト法を用いた計測により、計測対象50の位置および姿勢を推定する。そのため、第2の実施形態によっても、ロボットアーム70によるピッキング動作を、高価、大型である高速撮像が可能なカメラを用いること無く、より高速および高精度に実行することが可能である。
例えば、上述の各実施形態では、第1撮像画像により得た3次元情報と第2撮像画像により得た3次元情報と、において、対象物の有無によって処理の切り替えを行っているが、第1撮像部とおよび第2撮像部が、焦点距離は異なるものの共通の計測領域を有する場合、第1撮像画像およびと第2撮像画像の両方に対象物が存在しているときは、対象物に焦点距離が近い方の3次元情報を優先する構成にしても良い。
(第2の実施形態の変形例)
次に、第2の実施形態の変形例について説明する。図13は、第2の実施形態の変形例に係るロボットアームの動作を説明するための図である。なお、図13において、上述した図10と共通する部分には同一の符号を付して、詳細な説明を省略する。また、第2の実施形態の変形例では、第1の実施形態で説明した計測装置1の構成をそのまま適用できる。
対象物体として、開口部52を有する第1の対象物体51と、開口部52に接続可能な接続部を有する第2の対象物体53と、を考える。計測装置1は、第1の対象物体51および第2の対象物体53を、近傍計測領域(第1の計測領域40に相当)を撮像する第1撮像部(例えばカメラ21a)と、遠方計測領域(第2の計測領域41に相当)を撮像する第2撮像部(例えばカメラ21b)とで同時に撮像し、高速処理が可能な処理Aで第1の対象物体51と第2の対象物体53の一致を確認する。ここでは、第1の対象物体51と第2の対象物体53と、の組み合わせが、予め決められた組み合わせである場合に、第1の対象物体51と第2の対象物体53とが一致すると判定する。
第1の対象物体51と第2の対象物体53とが一致すると判定されると、ロボットアーム70によるピッキング動作が開始される。ロボットアーム70は、計測装置1により遠方と近傍とを同時撮像して処理Aを継続しながら、対象物体53にハンド部71を近づける。ロボットアーム70は、第2の対象物体53が近傍計測領域に含まれたときに、撮像を第1撮像部のみの撮像に切り替え、処理を図9のフローチャートにおける処理Bに切り替える。その上で、ロボットアーム70は、第2の対象物体53にハンド部71を精度良く近づけて第2の対象物体53をピッキングする。
ロボットアーム70は、第2の対象物体53のピッキング後、撮像を第1撮像部および第2撮像部による撮像に切り替え、処理を図9のフローチャートにおける処理Aに切り替える。その上で、ロボットアーム70は、ハンド部71を第1の対象物体51の開口部52に近づけ、第1の対象物体51が近傍計測領域に含まれたときに、撮像を第1撮像部のみの撮像に切り替え、処理を図9のフローチャートにおける処理Bに切り替える。その上で、ロボットアーム70は、開口部52に第2の対象物体53の接続部を接続するようにハンド部71の動作を制御する。
これにより、第2の実施形態の変形例では、近傍と遠方に置かれた2つの物体を同時に素早く補足し、精度良く2つの物体を接続可能にする効果を奏する。
なお、上述の各実施形態は、本発明の好適な実施の例ではあるがこれに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変形による実施が可能である。