3次元計測装置及びその制御方法
【課題】コード化パターンの投影を用いた3次元位置計測を高速に行なえるようにする。
【解決手段】計測対象物体の位置姿勢を計測する3次元計測装置は、計測対象物体に投影するパターンを生成し、生成された複数種類のパターンを投影部により計測対象物体に投影して撮像部により撮影するとともに、投影したパターンと計測対象物体の形状モデルと計測対象物体の概略位置姿勢を示す情報とに基づいて、撮像により取得される撮像画像上のパターンの座標値を算出する。そして、算出された座標値を利用して、撮像画像上の撮影されたパターンと前記投影部により投影されたパターンとを対応づけし、計測対象物体に投影されたパターンと撮像部との距離を求める。また、求めた距離と当該計測対象物体の形状モデルとを用いて計測対象物体の位置姿勢を推定し、概略位置姿勢の情報を更新する。
【解決手段】計測対象物体の位置姿勢を計測する3次元計測装置は、計測対象物体に投影するパターンを生成し、生成された複数種類のパターンを投影部により計測対象物体に投影して撮像部により撮影するとともに、投影したパターンと計測対象物体の形状モデルと計測対象物体の概略位置姿勢を示す情報とに基づいて、撮像により取得される撮像画像上のパターンの座標値を算出する。そして、算出された座標値を利用して、撮像画像上の撮影されたパターンと前記投影部により投影されたパターンとを対応づけし、計測対象物体に投影されたパターンと撮像部との距離を求める。また、求めた距離と当該計測対象物体の形状モデルとを用いて計測対象物体の位置姿勢を推定し、概略位置姿勢の情報を更新する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、計測対象物体の位置姿勢を計測する3次元計測装置及びその制御方法に関する。
【背景技術】
【0002】
撮像装置による3次元計測技術には、計測対象物体へ構造化された光を投影することにより明確に対応点の決定が行えるようにする能動型ステレオ法がある。能動型ステレオ法は、物体表面のテクスチャの有無による影響が少ない方法である。能動型ステレオ法の一つであるコード化パターン光投影法では、n回の光の投影と画像の撮影により2n通りの空間コードへの分割が可能となり、高精度計測を高速に行うことができる。コード化の方法としては非特許文献1に開示されているグレーコードが用いられることが多い。
【0003】
一方、計測対象物体表面の形状モデルが既知で、撮像装置から計測対象物体表面の複数の距離が点群として求められた場合に、点群から最近傍の点との距離の差を小さくするように位置姿勢を推定する方法が非特許文献2で示されている。この方法は、ICP(Iterative Closest Point)法として距離計測と形状モデルの位置合わせの手法として広く利用されている。同様に非特許文献3は、計測点群と形状モデルの面との距離を計算するもので、計測対象物体の形状モデルと計測点群の誤差を最小にするように計測対象物体の位置姿勢を推定することができる。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】James R. Bitner, Gideon Erlich, and Edward M. Reingold. “Efficient generation of the binary-reflected Gray code and its applications.” Communications of the ACM, 19(9), pp.517-521, 1976.
【非特許文献2】P.J. Besl and N. D. Mckay. “A method for registration of 3-D shapes, ”IEEE Trans. Pattern Analysis and Machine Intelligence, 14(2),pp.239-256, 1992.
【非特許文献3】Y. Chen and G. Medioni, “Object modeling by registration of multiple range images,” Robotics and Automation,1991. Proceedings., 1991 IEEE International Conference on (1991),vol.3, pp.2724-2729, 1991.
【発明の概要】
【発明が解決しようとする課題】
【0005】
投影するパターンを投影・撮像している間に計測対象物体が動いていると、パターンの対応が取れずに3次元計測に失敗する。そのため、動く計測対象物体の3次元計測においては、距離計測のための投影・撮像の時間をできるだけ短くする必要がある。計測対象物体が動く例としては、人物の姿勢計測がある。また、投影・撮像側が動くものとしては、ロボットに搭載するビジュアルフィードバックでロボットのアームに計測装置を搭載している場合がある。一般的には、物体の動きよりも速く投影と撮像を行うことで計測物体の3次元計測が可能となる。このため、動く計測対象物体の3次元計測のためのパターンの投影・撮像をより高速に行うことが求められている。
【0006】
本発明は、上述の課題に鑑みてなされたものであり、コード化パターンの投影を用いた3次元計測を高速に行なえるようにすることを目的とする。
【課題を解決するための手段】
【0007】
上記の目的を達成するための本発明の一態様による3次元計測装置は以下の構成を備える。すなわち、
計測対象物体の形状モデルを保持する形状モデル保持手段と、
前記計測対象物体の概略位置姿勢を示す情報を保持する概略位置姿勢保持手段と、
明暗で構成された複数種類のパターンを前記計測対象物体に投影する投影手段と、
前記投影手段によりパターンが投影された前記計測対象物体を撮影する撮像手段と、
前記形状モデルと前記概略位置姿勢を示す情報とに基づいて前記撮像手段により取得される撮像画像における前記パターンの座標値を算出する投影位置演算手段と、
前記投影位置演算手段により算出された前記座標値に基づいて前記撮像画像における撮影されたパターンを探索し、撮影されたパターンと投影されたパターンとを対応づけることにより前記計測対象物体の表面と前記撮像手段との距離を求める距離演算手段と、
前記距離演算手段で求めた距離と前記形状モデル保持手段に保持されている形状モデルを用いて前記計測対象物体の位置姿勢を推定し、前記概略位置姿勢保持手段に保持されている概略位置姿勢の情報を更新する位置姿勢演算手段とを備える。
【発明の効果】
【0008】
本発明によれば、形状モデルに基づいて算出されたパターンの位置に基づいて、撮像画像上のパターンと投影されたパターンの対応付けを行うので、対応付けが高速化され、コード化パターンの投影を用いた3次元計測を高速に行なえる。
【図面の簡単な説明】
【0009】
【図1】第1実施形態に係る3次元計測装置の構成例を示すブロック図である。
【図2】第1実施形態に係る3次元計測装置の処理を示すフローチャートである。
【図3】グレーコードパターンの投影パターンの例を示す図である。
【図4】第1実施形態に係る投影位置演算部の内容を説明するための図である。
【図5】第1実施形態に係る位置姿勢演算部の処理を示すフローチャートである。
【図6】第1実施形態に係る投影パターン画像の例を示す図である。
【図7】第1実施形態に係るパターン生成部の投影制御機能を説明するフローチャートである。
【図8】第2実施形態における、3次元計測装置を産業用ロボットアームに装着した状態を示す図である。
【図9】第3実施形態に係る3次元計測装置の構成例を示すブロック図である。
【図10】第3実施形態に係る形状統合部の処理を示すフローチャートである。
【図11】第4実施形態における、位置姿勢計測方法をプログラムとして実施するための構成例を示すブロック図である。
【発明を実施するための形態】
【0010】
以下、図面を用いて本発明の各実施形態を説明する。
【0011】
[第1実施形態]
図1は、本発明の一実施形態に係る3次元計測装置のブロック図である。また、図1に係る処理の流れを図2に示す。以降、これらの図を用いて本実施形態の3次元計測装置1000の各処理部について説明する。なお、本実施形態による3次元計測装置の例では、計測対象物体の形状モデルと、計測対象物体を撮像した画像と、計測対象物体の概略位置姿勢とを入力とし、推定した位置姿勢結果を出力とする。
【0012】
S1000において、形状モデル入力部100は、計測対象物体10の3次元形状であるモデル情報を入力する。モデル情報の入力方法としては、フロッピー(登録商標)ディスク、CD−ROM、メモリカード、ハードディスク、フラッシュメモリ等の記録媒体或いは記録装置から情報を読み出せる構成を用いることが挙げられる。また、形状モデルを登録しているネットワークサーバに接続して、該当する形状モデルをダウンロードして情報を入手しても構わない。さらに、ユーザに該当するモデルの形状をキーボード、マウス等のインターフェースを利用して入力させても構わないし、候補をディスプレイに提示して選択させる方法でも構わない。形状モデル選択用の部品認識を利用しても構わない。いずれの方法においても、計測を行う対象の形状モデルが入力できさえすれば良い。
【0013】
S1020において、形状モデル保持部110は、入力された計測対象物体10の3次元形状のモデルを保持する。3次元形状モデルの表現手法としては、任意の3次元視点からの計測対象物体の表面の3次元座標が計算できるモデルであれば良く、モデルの表現フォーマットは問わない。形状モデル表面の3次元座標を計算するためのモデルとしては、例えば、
・3次元の頂点と、それらを結ぶ平面の情報で構成されたパッチモデル、
・表面の形状を記述する関数表現や、その係数を組み合わせた曲面関数の集合、
・空間上のボクセルのうち物体が占める領域の値を保持するモデルがあげられる。
【0014】
S1010において、概略位置姿勢入力部200は、計測対象物体10の概略位置姿勢のデータを入力する。ここでの概略位置姿勢とは計測空間内に設置した基準座標系に対する回転3次元計測装置自由度、並進3自由度のパラメータとする。ステップS1030では、その値を本装置が利用可能な状態に値を変換して格納する。
【0015】
計測空間における計測対象物体10の存在する範囲は、パーツフィーダーによる物理的な接触を保持して供給されるような部品などでは位置・姿勢を範囲として規定することができる。また、別の部品認識装置により事前に登録された画像との照合結果の範囲で、位置姿勢を推定することも可能である。ここでは、概略位置姿勢は3次元空間での位置姿勢を定める6自由度による表現であることが望ましい。概略位置姿勢入力部200の入力方式としては、各位置姿勢のパラメータを数値入力できれば良く、他のセンサと接続して信号入力しても良い。また、3次元計測装置1000がロボットアームの先端に装着されている場合は、ロボットアームが保持する各関節のエンコーダの値を用いて順運動学による手先の位置姿勢と装着位置とのオフセットを乗じて得られる位置姿勢を利用することも可能である。ここでは、現状の3次元計測空間における計測対象物体10の概略位置姿勢を取得できるようになっていれば構わない。
【0016】
S1030において、概略位置姿勢保持部210は、概略位置姿勢入力部200が入力した、計測空間の基準座標系における計測対象物体10の概略位置姿勢を保持する。保持する方法としては、RAM等による保持でも構わないし、不揮発性メモリや外部記憶装置・補助装置に保持しても構わない。また、概略位置姿勢の情報としては、基準座標系における位置と姿勢の6自由度であれば問題無い。既に計測物体と計測空間との拘束が規定されているならば、それを利用して基準座標系における位置と姿勢の表現に変換すれば良い。
【0017】
S1000〜S1030による事前の準備が整った状態で、ステップS1040から位置姿勢計測を開始する処理を行う。ステップS1040では、位置姿勢計測処理で用いられる変数の初期化が行われる。3次元計測装置1000は、計測対象物体10の位置姿勢を連続して計測することを目的としているため、以降の繰り返し計測時の計測対象物体が変わらない範囲では、ステップS1050から処理を始めれば良い。
【0018】
S1050において、パターン生成部300は、計測対象物体10に投影するパターンを生成する。空間コードを生成する方法としては非特許文献1に開示されているグレーコードパターンを利用することができる。また、パターン投影部310の画素ごとの輝度が制御できるのであれば正弦波パターンを投影しても良い。空間的に離散的なサンプルを行う場合は、格子状に配置された幾何学図形を用いても構わない。すなわち、パターン生成として2次元画像として構成されるパターンを、いずれかのアルゴリズムにより生成することができれば良い。本例では、パターンは2次元の画像のデータとして取り扱い、パターンの生成方法としてはグレーコードパターンを用いる。
【0019】
図3にグレーコードパターンの例を示す。一つの長方形は、投影パターン画像の領域を示す。白い部分が照明部分、黒い部分は非照明部分であり、投影パターンは明暗による縞状のパターンである。縦縞の模様を逐次照射し、横縞の模様を逐次照明することで、それぞれの画素値は白黒の独立したパターン列を持つことになる。これにより、投影パターン画像の座標値と、実際に計測対象物体表面の照明パターン列を照合することで、投影パターン画像の位置との対応をとることが可能となる。
【0020】
S1060において、パターン投影部310は、S1050でパターン生成部300が生成したパターンを照明装置により計測対象物体に投影する。パターン投影部310は、パターン生成部300により生成された投影パターン画像を照明光により計測対象物体に投影する。照明光を投影する方法としては、液晶プロジェクタを利用することができる。または、可動する微小な鏡を集積した半導体であるDMD(Digital Micro-mirror Device)と照明を利用して、投影パターン画像を投影しても構わない。或いは、レーザ光源を動的に偏光する素子を併用した投影により投影パターンを生成してもよい。
【0021】
S1070において、撮像部400は、計測空間にある計測対象物体に投影されたパターンの投影像を、撮像素子とレンズを利用して撮影する。撮像素子としては、CCDやCMOSによる光−電子変換素子を利用するのが一般的である。レンズは、歪みを事前に校正したものを用いれば良い。撮像部400により得られた撮像画像は、RAM、不揮発メモリの記録素子、もしくはハードディスク、シリコンディスクの外部記録装置などを用いて一時的に保持されても良い。
【0022】
ステップS1080において、投影位置演算部810は、形状モデル保持部110に保持された形状モデル表面のパターンが撮像部400の撮像面に射影される射影画像座標を計算により求める。ここで、投影位置演算部810は、概略位置姿勢保持部210に保持された概略位置姿勢と、S1050で生成されたパターン画像の位置との対応から、射影画像座標を求める。より具体的には、投影位置演算部810は、パターン生成部300が生成したパターン画像上の座標値と撮像部400の撮像画像上に投影される位置(射影画像座標)の関係を、
・形状モデル保持部110が保持している計測対象物体の表面のモデルと、
・概略位置姿勢保持部210が保持している作業空間での位置姿勢と、
を用いて算出する。
【0023】
図4は、パターン投影と撮像における計測対象物体との関係を模式的に示す図である。以下、図4を用いて、投影位置演算部810の処理について説明する。まず、パターン投影部310の投影照明系が理想的な点光源からパターン投影されるとして、焦点距離をf=1とした仮想的な正規化投影画像面を設定し、これをパターン投影画像面と呼ぶ。パターン生成部300は、パターン投影画像面にパターンを書き込むとパターン投影部310が実際の照明、レンズなどのデバイスにより計測対象物体にパターン照明を投影する。実際には、投影のレンズ歪みや理想的な点光源を用いられないことによる影響で、投影される像に歪みが生じる場合があるが、事前に光学補正するか、パターン画像を補正することで影響を低減することができる。
【0024】
パターン投影画像面のあるパターンの座標をm=[u,v,1]Tとする。計測空間の基準座標系に対する投影中心の座標系を投影座標系と定義し、その座標系を回転を3自由度、並進を3自由度の6自由度を用いて表現する。回転Rの表現としては、オイラー角、ロール・ピッチ・ヨー、回転軸回転角、4次元数などのいずれの表現手法を用いても構わない。ここでは、回転表現から得られる3x3の回転行列Rを用いる。並進はtx、ty、tzの3成分である3x1の行列t=[tx,ty,tz]Tを用いる。
【0025】
計測対象物体の表面に投影されるパターン光は、基準座標系でのパターン投影位置M=[X,Y,Z]Tに投影されるものとする。光源からパターン投影画像面のパターン座標mを通過する直線上にパターン投影位置Mが存在するものとすると、光線上の点Mは下記の式で表現できる。
【数1】
ここで、λは直線の方向ベクトルのスケールとなる正の値である。L=[Lx,Ly,Lz]Tは、直線の方向ベクトルの成分を簡単のためにまとめたものである。
【0026】
次に、式(1)の直線と計測対象物体の形状モデル表面との交点を求め、形状モデル表面上の投影位置Mとする。ここでは、形状モデル保持部110に保持されているN個の三角形パッチのそれぞれと、式(1)の直線が交差するかどうかが判定される。形状モデルのi番目の三角形パッチのj番目の頂点座標をPij=[pxij、pyij、pzij]Tとする。形状モデルは、概略位置姿勢保持部210が保持する形状モデルの位置姿勢である回転Rm、並進tmを使って、計測空間の基準座標系の頂点座標P’ijを次式(2)のように変換する。
【数2】
【0027】
三角形パッチの平面の向きは形状モデルにより登録されているものとする。計測空間でのi番目の三角形パッチの法線ベクトルn’iは形状モデルに保持されている三角形パッチの法線ベクトルniに回転Rmを掛けたものとなる。
【0028】
頂点P’ijと直線との交点Pciを結ぶ線分と、当該三角形パッチの法線ベクトルn’iは直交するので、内積の関係から
【数3】
となる。式(1)を代入すると次式(4)のようになる。
【数4】
さらに、式(4)をλについてまとめると式(5)となる。
【数5】
これを、式(1)に代入して交点Pciの座標として求めると
【数6】
となる。三角形パッチの内部に交点Pciが存在するかどうかのチェックとして、三角形頂点と交点Pciとの外積を計算して、それぞれが法線ベクトルn’iと同じ向きの場合に三角形の内部に点があることになる。具体的には次の3つの式が全て正の場合に、交点が三角形内部に存在する。
【数7】
【0029】
さらに、形状モデルのパッチとの交点は複数存在する場合があるため、投影座標系原点により近い三角形パッチの交点を求める必要がある。N個の三角形パッチのうち、交点を有するパッチの中からλ>0の条件で投影座標系原点との距離が最も近い交点を求め、その交点をパターン投影位置Mとすればよい。
【数8】
式(8)により得られた形状モデル表面の三角形パッチとの交点が形状モデル表面における推定投影点となる。
【0030】
次に、撮像部400が計測対象物体表面のパターンを撮像しているとする。撮像部の撮像系をカメラとして中心射影のモデルとして考える。射影画像面までの焦点距離をf’とする。さらに、計測対象物体の表面に投影されているパターン投影位置Mが撮像画像上に射影されているとする。その撮像画像上の射影パターン位置をm’=[u’,v’,1]Tとする。撮像カメラのレンズ中心を基準座標系における回転と並進の6自由度で表現とし、それぞれR’とt’の行列として表現すると中心射影の関係から次式(9)のようになる。
【数9】
なお、s’はスケール要素のスカラー値である。
【0031】
ここでは、パターン投影部310のレンズの座標系と撮像部400の座標系が固定されているとし、事前にそのローカル座標変換は校正手続きにより求まっているとする。具体的な校正手続きは、校正指標を複数撮影して複数の校正指標座標値を用いて最小自乗法により求めることができるし、他の方法で校正しても構わない。ローカル座標変換行列をRLとtLとすると、下式の関係となる。
【数10】
【0032】
式(8)により得られた形状モデル表面のパターン投影位置Mと式(10)を式(9)に代入して、撮像画像上の射影パターン位置m’を得る。
【数11】
【0033】
撮像画像上の射影パターン位置m’は、計測対象物体10の位置姿勢と概略位置姿勢保持部210の位置姿勢が一致しているときに、実際の照明装置による投影パターンを撮像したときの座標値と一致する。概略位置姿勢が計測対象物体10の位置姿勢と僅かに異なっている場合には、投影位置演算部810が算出した射影パターン位置m’の画面上の近傍領域に実投影パターンがある。そこで、投影位置演算部810は、距離演算部600に対して照合領域の範囲を指示する。距離演算部600は、指示された照合領域の範囲、すなわち算出した射影パターン位置m’の近傍領域におけるパターン探索を実行してパターンの対応づけが可能となる。
【0034】
図2に戻り、S1090において、距離演算部600は、S1070における撮影で得られた撮像画像からS1080で推定されたパターン射影画像座標の画素近傍から対応するパターンを探索する。そして、投影系と撮像系とのステレオ計測により各パターンと撮像部400との距離を計算する。すなわち、距離演算部600は、撮像部400が取得した計測対象物体に投影されたパターン(撮影されたパターン)とパターン投影部310により投影されたパターンとを対応付け、投影パターン画像の位置と撮影画像の位置との対応を求める。そして、その対応から上記距離を求める。ここで距離演算部600が対応するパターンを探索する照合領域の範囲は、上述したように投影位置演算部810の演算結果により限定されるため、処理速度が向上する。
【0035】
なお、グレーコードパターンを利用する場合は、白・黒に投影されたパターンをビットとしてみなし、そのエンコードされた符号値とパターン生成時の符号値を照合し、投影パターン画像の位置を決定できる。
【0036】
距離演算部600で利用するパターン投影部310と撮像部400とのローカル座標変換行列が事前の校正手続きにより規定されているものとする。そのため、互いに対応する投影されたパターンと撮影されたパターンの座標値を用いて、ステレオ測量により撮像座標系における距離を算出することができる。
【0037】
一方、位置姿勢演算部700は、距離演算部600で求めた距離と形状モデル保持部110に保持されている形状モデルを用いて計測対象物体10の位置姿勢を推定し、概略位置姿勢保持部210に保持されている概略位置姿勢の情報を更新する。以下、この処理を説明する。まず、実際に照明されたパターンを撮像し、検出された座標を実投影パターンの撮像画像上の位置を実射影パターン位置m’’とする。パターン位置mとローカル座標変換行列RL、tL、そして実パターン投影位置M'の関係は次式(12)のようになる。
【数12】
M’は、左辺の行列式の一般化逆行列を両辺に掛け合わせることで求めることができる。
【0038】
S1110において位置姿勢演算部700は、実射影パターン位置と算出した射影パターン位置との差が小さくなるように位置姿勢の推定演算を行う。位置姿勢の推定では、姿勢に対して非線形な計算を伴うため、基本的には繰り返し誤差最小化を適用する。求めようとする計測対象物体の位置姿勢を未知数として、形状モデルの表面の各パターン投影位置から算出した射影パターン位置と観測された実射影パターン位置との距離の二乗の和が最小になるように、未知パラメータである位置姿勢の推定値を更新する。具体的には非特許文献2に開示されるICP(Iterative Closest Point)法や、非特許文献3に開示される方法を利用して、形状モデルと計測距離から当該形状モデルの位置姿勢を求めることができる。その際に、初期値としては概略位置姿勢保持部210の値を使うことができる。
【0039】
なお、投影位置演算部810では、形状モデルの投影と射影の関係があるパターンのみ使うことができるため、他の物体や背景の領域に対する距離計測の結果を含めないことができる。そのため、位置姿勢演算部700での形状モデル以外の例外値が無いため、ロバストな位置姿勢演算を行うことができる。
【0040】
また、位置姿勢演算部700では、繰り返し演算の結果で生じる残差(実射影パターン位置と更新後の概略位置姿勢で投影位置演算部810が算出した射影パターン位置との差)から最適化計算の繰り返しを継続するか否かを判定する。この判定のための閾値としては、ユーザが設定した閾値でもよいし、作業空間における観測面積と撮像装置との距離との関係を用いて設定された閾値でもよい。さらに、3次元計測装置1000が既定値を保持していて、それを読み出して閾値としても構わない。
【0041】
いずれかの方法により設定された閾値と残差の値を比較するが、実際には演算後の残差が小さくならない場合もある。そのため、本実施形態では、繰り返し回数を保持しておき、残差の繰り返しごとのトレンドを計算し、繰り返し回数が既定回数を越えた場合もしくはトレンドが増加する傾向にある場合には、位置姿勢演算部700の最適化演算の繰り返しを停止するようにする。これにより、位置姿勢の最適化演算がうまくいったか否かを判定することができる。
【0042】
図5を用いて位置姿勢演算部700の処理について説明をする。最初にS10において、位置姿勢演算部700は、演算の繰り返し回数の値を0とし、移動平均値の値を初期化する。S100において、位置姿勢演算部700は、距離演算部600による距離計算結果を得る。S110において、位置姿勢演算部700は、計測対象物体10の位置姿勢を最適化計算し、パラメータを更新する。S120において、位置姿勢演算部700は、位置姿勢の更新した値と残差を取得する。S130において、位置姿勢演算部700は、S120で取得された残差が既定した閾値以下であるかどうかを判断する。残差が閾値以下の場合は位置姿勢の推定結果が想定する精度を有しているものとして、S140において最適化演算成功のフラグを設定して、繰り返しを停止する。S130において残差が閾値を上回る場合は、位置姿勢の推定の精度が不十分ということでS150に処理を移す。
【0043】
S150において、位置姿勢演算部700は、残差が減少しているか増加しているかのトレンドを計算するため、残差の移動平均を計算する。移動平均のフレーム数nはユーザが指定してもよいし、実験的に求めた値を設定しておけば良い。S160において、位置姿勢演算部700は、その移動平均値が前回計算した移動平均値よりも大きくなる傾向を示す場合には、最適化演算の誤差最小化計算が発散しているとして、S170の最適化が失敗したフラグを設定して繰り返しを停止する。S160において、繰り返しにより誤差が減少する場合は、再度繰り返し演算が必要としてS180に移る。S180では、位置姿勢演算部700は、全体の繰り返し回数を保持している値に1を加える。次に、S190において、位置姿勢演算部700は、繰り返し回数が既定回数を越えたかどうかを判定する。繰り返し回数が既定回数以内であれば、位置姿勢演算部700は、再度繰り返しの最適化計算を実行するべく処理をS110へ戻す。一方、既定回数を越えたと判定された場合は、S200において、位置姿勢演算部700は、繰り返し回数を越えたことを示すフラグを設定して、当該繰り返しを停止する。
【0044】
図2に戻り、S1130において、位置姿勢演算部700は推定位置姿勢結果を用いて概略位置姿勢保持部210の値を更新する。3次元計測装置1000が連続して計測対象物体10の位置姿勢を計測している場合は、位置姿勢演算部700による位置姿勢の推定結果で概略位置姿勢保持部210の値を更新することで、連続したフレーム間での計測対象物体の位置姿勢推定が可能となる。
【0045】
S1120において、パターン生成部300は、S1110における位置姿勢演算部700による位置姿勢の推定の状態をうけて、ステップS1050の投影パターン生成のパラメータを更新する。具体的には、S140,S170,S200で設定されるフラグが推定状態として用いられる。推定状態が良い場合(例えば、最適化演算成功のフラグが設定されている場合)は、投影・撮像回数を減らすように、推定状態が悪い場合(例えば、最適化の失敗を示すフラグが設定されている場合)は投影・撮像回数を増やすように投影制御を行う。すなわち、パターン生成部300における投影制御機能(S1120)では、推定状態の推定結果が良い場合はグレーコードパターンの投影画像の数を減らし、推定結果が悪い場合はグレーコードパターンの投影画像の数を増やすように制御する。
【0046】
さらに、パターン生成部300の投影制御機能は、概略位置姿勢保持部210に保持されている情報によって示される計測対象物体10の位置姿勢の変化に応じて投影するパターンの縞の間隔を変更する。すなわち、パターン生成部300は、位置姿勢の変化が大きいときは、投影するパターンの間隔を大きくするようにし、変化が小さいときはパターンの間隔を小さくするように制御する。なお、概略位置姿勢保持部210が保持する情報によって示される計測対象物体10の位置姿勢の変化とは、計測対象物体10か3次元計測装置1000のどちらか、もしくは両方が動いているときの動きを反映する。
【0047】
図6に投影するパターン画像列を示す。PP[n]は、n番目の投影する投影パターンを示す。ここでの実施形態としては、nが奇数の場合は縦縞、nが偶数の場合は横縞にしている。これら縞状のパターンは明暗により形成されている。図3における縞の間隔が小さいほうから画像列を保持する。投影される順序は[n]の順、すなわち縞の間隔が小さいほうから投影されることになる。
【0048】
図7に第1実施形態によるパターン生成部300の投影制御機能の処理を示す。以下では、パターンの総数を2nとし、縦縞と横縞のペアがn組存在するものとする。ここで、Wi、Hiは整数値とする。Wiはi番目に投影するパターンにおけるPP[n]のパターン画像のペアの数を意味する。Wiがnの場合は、グレーコードパターンの全てのパターン画像を順次投影することを意味し、通常のグレーコードパターンによるパターン光投影法になる。Hiはi番目におけるPP[n]のパターン画像列の開始するペアの順位を意味する。Hiが大きいほど、より投影するパターン縞の幅が相対的に大きいものから順次投影することとなる。すなわち、パターン投影部310は、パターン間隔を広くしたパターンを照射することになる。物体・装置が動いている時にはパターン投影位置の推定座標の精度が悪くなるが、この構成によれば、投影パターンの間隔を大きくすることにより隣接するパターンとの距離を広くすることができ、パターン識別性を向上する効果が得られる。
【0049】
以上のようなパターン生成部300による投影制御機能による処理について図7のフローチャートを用いて説明する。まず、S300において、パターン生成部300は、初期化として変数の初期化を行う。これは、投影制御機能が利用可能になるときに一度設定すれば良い。処理開始であるS310から処理終了であるS500は、パターン生成部300の一部の処理の範囲を示すもので、パターン生成部300の全体の処理の開始・終了ではない。ステップS320において、パターン生成部300は、処理の繰り返し回数を保持する変数iを1つ増加させる。
【0050】
S330において、パターン生成部300は、概略位置姿勢保持部210に保持されている情報が示す、更新前後の位置姿勢の変化量を算出する。たとえば、概略位置姿勢保持部210が6自由度のパラメータを保持している場合は、i−1回目に保持していた概略位置姿勢の値と、i回目の概略位置姿勢の値とのそれぞれの差の絶対値を計算し、それぞれの絶対値から最大の絶対値を求めて変化量とする。S340において、パターン生成部300は、S330で算出した変化量と事前に設定した閾値とを比較して、変化量が閾値より大きい場合はS370へ、小さい場合はS380へ処理を進める。S370では、パターン生成部300は、前回のHiの値(Hi−1)に1を加えて今回のHiの値とする。ステップS380では、パターン生成部300は、前回のHiの値(Hi−1)から1を引いた値を今回のHiとして設定する。これにより、物体・装置の動きが大きい場合は縞の間隔が大きいパターンを用いた投影が行われ、動きが小さい場合は縞の間隔が小さいパターンを用いた投影が行われるようになる。
【0051】
一方、S410において、パターン生成部300は位置姿勢演算部700の推定状態を取得し、S420で推定状態の判別を行う。最適化演算成功のフラグが立っている場合は、S450に移行し、最適化演算成功のフラグが立っていない(最適化演算が成功していない)場合はS460に移行する。S450において、パターン生成部300は、前回のWiの値(Wi−1)から1を引き、今回のWiの値とする。また、S460では、前回のWi(Wi−1)の値に1を加えて、今回のWiの値とする。これは、最適化演算が成功している場合には、撮影するパターンの画像セット数を減らし、失敗している場合は撮影するパターンの画像セット数を増やすように作用する。ステップS400では、PP[(2×Hi)−1]から順にPP[2×(Hi+Wi)−2]までのWi組のペアとなるパターン画像をパターン投影部310に指示する。ただし、PP[2×(Hi+Wi)−2]はPP[2n]までしかデータが用意されていないので、Hiが大きくなると、投影されるパターンはWi組よりも少なくなってしまう。そこで、投影されるパターン数を優先させたい場合は、PP[(2×Hi)−1]よりも前の順位の画像から始めてもよい。
【0052】
基本的には最適化演算が成功している場合は、符号化長を減らしても投影位置演算部810による撮像画像座標の推定精度が高いため、パターンの対応づけができる。図7で説明した一実施形態ではパターンの投影数をWiとして、その値を1ずつ増減することを行っていたが、その増減の値は1に限らず、増減幅は一定でなくても良い。
【0053】
なお、計測対象物体と撮像部400との相対運動が大きい場合は、投影位置演算部810による推定射影パターン位置と、実際の射影パターン位置との差が大きい。しかし、その値は奥行き方向の値と関係がある。そこで、奥行き方向の距離に応じてパターンの探索領域を変更すると良い。そこで概略位置姿勢のパラメータのうち、姿勢成分と並進成分のパラメータの閾値を別々に比較しても良い。
【0054】
以上のように、本実施形態によれば、パターン生成部300の投影制御機能は、位置姿勢演算部700の推定状態により適応的に投影パターンの回数や計測点を増減するため、推定状態が良い場合は投影回数を減らすことが可能となる。そのため、全体の計測時間の短縮を実現できる。すなわち、本実施形態によれば、投影されるパターンの撮像画像上における位置を形状モデルと概略位置姿勢から推定することで、空間コードのための投影・撮像回数を減らすことができ、処理の高速化が期待できる。
【0055】
ステップS1120の機能はパターン生成部300の投影制御機能により実現する。ステップS1140において、位置姿勢出力部900は、S1110で得られた位置姿勢推定結果を本装置の外部へ出力する。出力する情報としては、計測対象物体10の作業空間における基準座標系での位置姿勢である6自由度の値を出力しても構わないし、撮像部400の座標系における撮像座標系の原点の位置姿勢を含めて位置姿勢を出力しても構わない。
【0056】
なお、本発明の一実施形態である3次元計測装置1000では、独立した装置を利用しても構わない。例えば、パターン投影部310には、市販の液晶プロジェクタを利用することができる。撮像部400には、市販のカメラとレンズを利用することが可能である。3次元計測装置1000とは、それぞれの装置で利用可能な信号を出力するための機構と、実際の信号を受け取るための入出力部分があれば良い。そのようにすれば、利用者の用途や計測範囲に応じて装置を拡張して利用することができる。
【0057】
[第2実施形態]
第1実施形態で説明した3次元計測装置1000の好適な適用事例としては、産業用ロボットアームの手先部に設置して、把持する物体を計測対象物体として、その位置姿勢を計測する目的に利用することがあげられる。以下、図8を用いて3次元計測装置1000の適用例を説明する。
【0058】
産業用ロボットアーム30は、ロボットコントローラ40の制御による駆動する。本発明の一実施形態である3次元計測装置1000がアーム腕部に治具により固定されている。産業用ロボットアーム30の動作は対象物体11をアーム把持部によりピッキングする。3次元計測装置1000は、アーム把持部と対象物体11の相対位置姿勢を逐次推定し、その推定結果をロボットコントローラ40の制御パラメータとして伝えるためにケーブルにより結線している。
【0059】
3次元計測装置1000における概略位置姿勢入力部200へは、ロボットコントローラ40が制御する産業用ロボットアーム30の取り付け位置に、治具のためのオフセットを加えた値を伝えれば良い。また、形状モデル入力部100には、対象物体11のCADモデルを本装置1000が読み込めるフォーマットに変換したものを入力しておく。なお、対象物体が変わった場合には、その都度、形状モデル入力部100に該当する形状モデルを入力することで、複数種類の対象物体に対応することができる。装置が事前の保持している形状モデルを選択しても構わないし、別の部品識別装置による部品種の認識結果を使って保持している形状モデルを切り替えても構わない。
【0060】
3次元計測装置1000の概略位置姿勢を入力した対象物体11の位置姿勢が実際の作業空間での配置と異なる場合には、位置姿勢演算部700での位置姿勢推定の残差が大きくなる。すると、パターン生成部300が、投影・撮像回数を増加する。それにより、計測対象物体の距離計測と位置姿勢が可能となる。一度精度の高い位置姿勢が行えれば、概略位置姿勢保持部210に反映される。
【0061】
さらに、産業用ロボットアーム30の手先が対象物体11に近づくための動作を行うとする。実施のロボットアームは、関節角度のエンコーダ値のノイズや、ロボット自身の自重による撓みにより、エンコーダによる手先位置の作業空間内での絶対位置精度はそれほど高くない場合が多い。概略位置姿勢入力部200にはロボットの運動した手先位置が入力される。3次元計測装置1000は、計測のためのパターン投影と撮像を行い、位置姿勢推定結果を出力する。この場合は、ロボット手先位置計算の計算誤差を補正することが主になる。そのため、位置姿勢演算部700での推定状態が最適化演算成功となる。そこで、パターン生成部300は投影・撮像の回数を減らすための投影制御を行う。このようにして、最初の概略位置姿勢を推定するときには撮影回数が増加するが、精度の高い位置姿勢が得られれば、それ以降の計測のための撮影回数を減らせることとなり、連続した計測時の投影・撮像の回数が減り計測のタクトタイムが短縮される。
【0062】
[第3実施形態]
本発明では計測対象物体の形状モデルが未知の場合においても、本発明の一実施形態である装置構成を利用して、基本的には計測対象物体表面の3次元形状を取得することができる。未知の計測対象物体の形状モデルを複数の視点からの画像を使って取得する手続きを加えることで、さらに本発明の適用の範囲を広げることができる。
【0063】
図9は、第3実施形態による3次元計測装置1010の構成例を示すブロック図である。3次元計測装置1010は、第1実施形態の3次元計測装置1000の構成に計測モデル生成部120を付加したものである。計測モデル生成部120は、形状モデルが無いモデルに対して本装置を適用する際にその機能を発揮する。以下、3次元計測装置1010の動作について図10のフローチャートを用いて説明する。
【0064】
S2000において、3次元計測装置1010は、形状モデル利用モードか計測モデル取得モードかをユーザに選択させる。選択方法としては、ボタンやスイッチを用いれば良い。S2010において、3次元計測装置1010は、ユーザの入力を判別して形状モデル利用モードかどうかを判定する。Yesの場合(形状モデル利用モードの場合)は、S2020へ処理が進む。S2020では、形状モデル保持部110に既に登録されている、または形状モデル入力部100が入力した既存の形状モデルを利用した位置姿勢計測が実行される。すなわち、図1のS1000からの上述した処理により計測対象物体の位置姿勢計測を行う。一方、S2010でNoの場合(計測モデル取得モードの場合)は、S2040へ進み、計測モデル生成部120の制御下で計測モデル撮影の処理を開始する。なお、最初期においては、最初の撮影時の位置姿勢を基準とするように概略位置姿勢保持部210の内容や位置姿勢演算部700の状態をセットする。
【0065】
S2050において、計測モデル生成部120は、計測対象物体の概略位置姿勢(概略位置姿勢保持部210の内容)を取得する。例えば、計測対象物体を回転板の上に設置しているならば、その回転角度から計算される位置姿勢を取得することができる。また、本計測装置が第2実施形態で述べた産業用ロボットアームのアーム部に設置している場合は、ロボットの手先位置を取得することができる。次に、S2060において、計測モデル生成部120は、パターン生成部300に対して全ての投影パターンを投影して距離を計測するように指示する。S2070において、距離演算部600は全ての距離計測結果を計測モデル生成部120に送る。
【0066】
形状モデルは複数の視点から観察した計測対象物体表面までの距離データを統合することにより得られるので、S2080において計測モデル生成部120は、計測対象物体10を動かすか、3次元計測装置1010自体を動かす。なお、その時の移動量は既知とする。S2090において、計測モデル撮影を終了するかどうかを判断する。判断する方法としては、既定回数の撮影が終了した場合やユーザによる指示などを用いてよい。こうして、3次元計測装置1010(パターン投影部310と撮像部400)と計測対象物体とを複数の既知の位置関係に配置して行われた距離計測によって複数の距離データが得られる。
【0067】
S2100において、計測モデル生成部120は、距離演算部600より提供された複数の計測距離画像を統合する。統合する方法としては、例えば、重複する距離点群の領域の幾何学的な距離が最小になるように概略位置姿勢を用いて誤差最小化計算を行って統合することがあげられる。S2110において、計測モデル生成部120は、統合された計測点群から計測対象物体の領域をユーザに選択させる。例えば、統合された距離画像をユーザが視認できるように表示して、マウスなどで指定させればよい。実際に計測対象物体と規定しているのはユーザであるため、領域を選択してもらうことが望ましい。
【0068】
S2120において、計測モデル生成部120は、統合した距離点群からS2110で選択された領域を抽出して、形状モデルに変換して登録する。点群から形状モデルである三角形パッチを生成する方法はマーチングキューブ法などを用いれば良い。S2130では、計測モデル生成部120が生成した形状モデルを形状モデル保持部110に格納し、図1に示すS1040からの処理を行い、第1実施形態と同様の位置姿勢計測を開始する。
【0069】
上述の計測モデル生成部を有する3次元計測装置1010を用いれば、形状モデルが事前に用意できない場合においても、本装置を利用することが可能となる。
【0070】
[第4実施形態]
第1、第3実施形態で説明した各処理部はコンピュータのプログラムとしても実行できる。図11は、パーソナルコンピュータ2100に撮像部400としてのカメラ401とパターン投影部310としてのプロジェクタ311を、I/Oインターフェース2101、ビデオインターフェース2103を介して接続した例を示す。CPU2102は、上述した実施形態の機能をコンピュータに実行させるプログラムコード2105をメモリから読み出して実行することにより、当該コンピュータを3次元計測装置1000(1010)として機能させる。プログラムコード2105は、プログラムメモリ或いは不図示の外部記憶装置からRAM2104にロードされ、実行されるようにしてもよい。入力部2106は、キーボード、マウス等で構成される。
【0071】
その際、パーソナルコンピュータのバスや周辺機器を効率的に利用するための仕組みとしてオペレーティングシステムを利用しても構わない。オペレーティングシステムは、本発明の機能を実装したプログラムとは別に提供されていても問題ないし、オペレーティングシステムにおける一つのアプリケーションプログラムとして、本発明の機能を実装した処理プログラムを選択して実行しても構わない。
【0072】
[第5実施形態]
3次元計測装置1000の投影位置演算部810は、形状モデル保持部110の三角形パッチの数が増加すると処理量が増加する。しかしながら、三角形パッチの探索を効率化するために、事前に三角形パッチを投影座標系視点に対してソートしておく方法により処理を高速化できる。
【0073】
さらに、処理の高速化として3次元のコンピュータグラフィックスをレンダリングするハードウェアである不図示のグラフィックスプロセッサユニットを用いることができる。グラフィックスプロセッサユニットとしては、Zバッファからの値を読み出すことができるハードウェアを使えば良い。グラフィックスプロセッサユニットを利用して、レンダリング時のZバッファの値から、投影座標原点に近い平面までの距離を求めることができる。投影座標系原点を視点とした形状モデルを正規化投影画像平面と一致するようにレンダリングして、パターン座標に相当するZバッファを求め、その奥行き値を含めて座標を基準座標系へ変換すれば良い。また、同様に、投影画像上の射影パターン位置m’の計算を行う式(11)にも適用できる。形状表面上の投影パターンMを撮像座標系に合わせた射影面に投影する処理をグラフィックスプロセッサの射影変換機能を用いて求めれば高速に演算できる。
【技術分野】
【0001】
本発明は、計測対象物体の位置姿勢を計測する3次元計測装置及びその制御方法に関する。
【背景技術】
【0002】
撮像装置による3次元計測技術には、計測対象物体へ構造化された光を投影することにより明確に対応点の決定が行えるようにする能動型ステレオ法がある。能動型ステレオ法は、物体表面のテクスチャの有無による影響が少ない方法である。能動型ステレオ法の一つであるコード化パターン光投影法では、n回の光の投影と画像の撮影により2n通りの空間コードへの分割が可能となり、高精度計測を高速に行うことができる。コード化の方法としては非特許文献1に開示されているグレーコードが用いられることが多い。
【0003】
一方、計測対象物体表面の形状モデルが既知で、撮像装置から計測対象物体表面の複数の距離が点群として求められた場合に、点群から最近傍の点との距離の差を小さくするように位置姿勢を推定する方法が非特許文献2で示されている。この方法は、ICP(Iterative Closest Point)法として距離計測と形状モデルの位置合わせの手法として広く利用されている。同様に非特許文献3は、計測点群と形状モデルの面との距離を計算するもので、計測対象物体の形状モデルと計測点群の誤差を最小にするように計測対象物体の位置姿勢を推定することができる。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】James R. Bitner, Gideon Erlich, and Edward M. Reingold. “Efficient generation of the binary-reflected Gray code and its applications.” Communications of the ACM, 19(9), pp.517-521, 1976.
【非特許文献2】P.J. Besl and N. D. Mckay. “A method for registration of 3-D shapes, ”IEEE Trans. Pattern Analysis and Machine Intelligence, 14(2),pp.239-256, 1992.
【非特許文献3】Y. Chen and G. Medioni, “Object modeling by registration of multiple range images,” Robotics and Automation,1991. Proceedings., 1991 IEEE International Conference on (1991),vol.3, pp.2724-2729, 1991.
【発明の概要】
【発明が解決しようとする課題】
【0005】
投影するパターンを投影・撮像している間に計測対象物体が動いていると、パターンの対応が取れずに3次元計測に失敗する。そのため、動く計測対象物体の3次元計測においては、距離計測のための投影・撮像の時間をできるだけ短くする必要がある。計測対象物体が動く例としては、人物の姿勢計測がある。また、投影・撮像側が動くものとしては、ロボットに搭載するビジュアルフィードバックでロボットのアームに計測装置を搭載している場合がある。一般的には、物体の動きよりも速く投影と撮像を行うことで計測物体の3次元計測が可能となる。このため、動く計測対象物体の3次元計測のためのパターンの投影・撮像をより高速に行うことが求められている。
【0006】
本発明は、上述の課題に鑑みてなされたものであり、コード化パターンの投影を用いた3次元計測を高速に行なえるようにすることを目的とする。
【課題を解決するための手段】
【0007】
上記の目的を達成するための本発明の一態様による3次元計測装置は以下の構成を備える。すなわち、
計測対象物体の形状モデルを保持する形状モデル保持手段と、
前記計測対象物体の概略位置姿勢を示す情報を保持する概略位置姿勢保持手段と、
明暗で構成された複数種類のパターンを前記計測対象物体に投影する投影手段と、
前記投影手段によりパターンが投影された前記計測対象物体を撮影する撮像手段と、
前記形状モデルと前記概略位置姿勢を示す情報とに基づいて前記撮像手段により取得される撮像画像における前記パターンの座標値を算出する投影位置演算手段と、
前記投影位置演算手段により算出された前記座標値に基づいて前記撮像画像における撮影されたパターンを探索し、撮影されたパターンと投影されたパターンとを対応づけることにより前記計測対象物体の表面と前記撮像手段との距離を求める距離演算手段と、
前記距離演算手段で求めた距離と前記形状モデル保持手段に保持されている形状モデルを用いて前記計測対象物体の位置姿勢を推定し、前記概略位置姿勢保持手段に保持されている概略位置姿勢の情報を更新する位置姿勢演算手段とを備える。
【発明の効果】
【0008】
本発明によれば、形状モデルに基づいて算出されたパターンの位置に基づいて、撮像画像上のパターンと投影されたパターンの対応付けを行うので、対応付けが高速化され、コード化パターンの投影を用いた3次元計測を高速に行なえる。
【図面の簡単な説明】
【0009】
【図1】第1実施形態に係る3次元計測装置の構成例を示すブロック図である。
【図2】第1実施形態に係る3次元計測装置の処理を示すフローチャートである。
【図3】グレーコードパターンの投影パターンの例を示す図である。
【図4】第1実施形態に係る投影位置演算部の内容を説明するための図である。
【図5】第1実施形態に係る位置姿勢演算部の処理を示すフローチャートである。
【図6】第1実施形態に係る投影パターン画像の例を示す図である。
【図7】第1実施形態に係るパターン生成部の投影制御機能を説明するフローチャートである。
【図8】第2実施形態における、3次元計測装置を産業用ロボットアームに装着した状態を示す図である。
【図9】第3実施形態に係る3次元計測装置の構成例を示すブロック図である。
【図10】第3実施形態に係る形状統合部の処理を示すフローチャートである。
【図11】第4実施形態における、位置姿勢計測方法をプログラムとして実施するための構成例を示すブロック図である。
【発明を実施するための形態】
【0010】
以下、図面を用いて本発明の各実施形態を説明する。
【0011】
[第1実施形態]
図1は、本発明の一実施形態に係る3次元計測装置のブロック図である。また、図1に係る処理の流れを図2に示す。以降、これらの図を用いて本実施形態の3次元計測装置1000の各処理部について説明する。なお、本実施形態による3次元計測装置の例では、計測対象物体の形状モデルと、計測対象物体を撮像した画像と、計測対象物体の概略位置姿勢とを入力とし、推定した位置姿勢結果を出力とする。
【0012】
S1000において、形状モデル入力部100は、計測対象物体10の3次元形状であるモデル情報を入力する。モデル情報の入力方法としては、フロッピー(登録商標)ディスク、CD−ROM、メモリカード、ハードディスク、フラッシュメモリ等の記録媒体或いは記録装置から情報を読み出せる構成を用いることが挙げられる。また、形状モデルを登録しているネットワークサーバに接続して、該当する形状モデルをダウンロードして情報を入手しても構わない。さらに、ユーザに該当するモデルの形状をキーボード、マウス等のインターフェースを利用して入力させても構わないし、候補をディスプレイに提示して選択させる方法でも構わない。形状モデル選択用の部品認識を利用しても構わない。いずれの方法においても、計測を行う対象の形状モデルが入力できさえすれば良い。
【0013】
S1020において、形状モデル保持部110は、入力された計測対象物体10の3次元形状のモデルを保持する。3次元形状モデルの表現手法としては、任意の3次元視点からの計測対象物体の表面の3次元座標が計算できるモデルであれば良く、モデルの表現フォーマットは問わない。形状モデル表面の3次元座標を計算するためのモデルとしては、例えば、
・3次元の頂点と、それらを結ぶ平面の情報で構成されたパッチモデル、
・表面の形状を記述する関数表現や、その係数を組み合わせた曲面関数の集合、
・空間上のボクセルのうち物体が占める領域の値を保持するモデルがあげられる。
【0014】
S1010において、概略位置姿勢入力部200は、計測対象物体10の概略位置姿勢のデータを入力する。ここでの概略位置姿勢とは計測空間内に設置した基準座標系に対する回転3次元計測装置自由度、並進3自由度のパラメータとする。ステップS1030では、その値を本装置が利用可能な状態に値を変換して格納する。
【0015】
計測空間における計測対象物体10の存在する範囲は、パーツフィーダーによる物理的な接触を保持して供給されるような部品などでは位置・姿勢を範囲として規定することができる。また、別の部品認識装置により事前に登録された画像との照合結果の範囲で、位置姿勢を推定することも可能である。ここでは、概略位置姿勢は3次元空間での位置姿勢を定める6自由度による表現であることが望ましい。概略位置姿勢入力部200の入力方式としては、各位置姿勢のパラメータを数値入力できれば良く、他のセンサと接続して信号入力しても良い。また、3次元計測装置1000がロボットアームの先端に装着されている場合は、ロボットアームが保持する各関節のエンコーダの値を用いて順運動学による手先の位置姿勢と装着位置とのオフセットを乗じて得られる位置姿勢を利用することも可能である。ここでは、現状の3次元計測空間における計測対象物体10の概略位置姿勢を取得できるようになっていれば構わない。
【0016】
S1030において、概略位置姿勢保持部210は、概略位置姿勢入力部200が入力した、計測空間の基準座標系における計測対象物体10の概略位置姿勢を保持する。保持する方法としては、RAM等による保持でも構わないし、不揮発性メモリや外部記憶装置・補助装置に保持しても構わない。また、概略位置姿勢の情報としては、基準座標系における位置と姿勢の6自由度であれば問題無い。既に計測物体と計測空間との拘束が規定されているならば、それを利用して基準座標系における位置と姿勢の表現に変換すれば良い。
【0017】
S1000〜S1030による事前の準備が整った状態で、ステップS1040から位置姿勢計測を開始する処理を行う。ステップS1040では、位置姿勢計測処理で用いられる変数の初期化が行われる。3次元計測装置1000は、計測対象物体10の位置姿勢を連続して計測することを目的としているため、以降の繰り返し計測時の計測対象物体が変わらない範囲では、ステップS1050から処理を始めれば良い。
【0018】
S1050において、パターン生成部300は、計測対象物体10に投影するパターンを生成する。空間コードを生成する方法としては非特許文献1に開示されているグレーコードパターンを利用することができる。また、パターン投影部310の画素ごとの輝度が制御できるのであれば正弦波パターンを投影しても良い。空間的に離散的なサンプルを行う場合は、格子状に配置された幾何学図形を用いても構わない。すなわち、パターン生成として2次元画像として構成されるパターンを、いずれかのアルゴリズムにより生成することができれば良い。本例では、パターンは2次元の画像のデータとして取り扱い、パターンの生成方法としてはグレーコードパターンを用いる。
【0019】
図3にグレーコードパターンの例を示す。一つの長方形は、投影パターン画像の領域を示す。白い部分が照明部分、黒い部分は非照明部分であり、投影パターンは明暗による縞状のパターンである。縦縞の模様を逐次照射し、横縞の模様を逐次照明することで、それぞれの画素値は白黒の独立したパターン列を持つことになる。これにより、投影パターン画像の座標値と、実際に計測対象物体表面の照明パターン列を照合することで、投影パターン画像の位置との対応をとることが可能となる。
【0020】
S1060において、パターン投影部310は、S1050でパターン生成部300が生成したパターンを照明装置により計測対象物体に投影する。パターン投影部310は、パターン生成部300により生成された投影パターン画像を照明光により計測対象物体に投影する。照明光を投影する方法としては、液晶プロジェクタを利用することができる。または、可動する微小な鏡を集積した半導体であるDMD(Digital Micro-mirror Device)と照明を利用して、投影パターン画像を投影しても構わない。或いは、レーザ光源を動的に偏光する素子を併用した投影により投影パターンを生成してもよい。
【0021】
S1070において、撮像部400は、計測空間にある計測対象物体に投影されたパターンの投影像を、撮像素子とレンズを利用して撮影する。撮像素子としては、CCDやCMOSによる光−電子変換素子を利用するのが一般的である。レンズは、歪みを事前に校正したものを用いれば良い。撮像部400により得られた撮像画像は、RAM、不揮発メモリの記録素子、もしくはハードディスク、シリコンディスクの外部記録装置などを用いて一時的に保持されても良い。
【0022】
ステップS1080において、投影位置演算部810は、形状モデル保持部110に保持された形状モデル表面のパターンが撮像部400の撮像面に射影される射影画像座標を計算により求める。ここで、投影位置演算部810は、概略位置姿勢保持部210に保持された概略位置姿勢と、S1050で生成されたパターン画像の位置との対応から、射影画像座標を求める。より具体的には、投影位置演算部810は、パターン生成部300が生成したパターン画像上の座標値と撮像部400の撮像画像上に投影される位置(射影画像座標)の関係を、
・形状モデル保持部110が保持している計測対象物体の表面のモデルと、
・概略位置姿勢保持部210が保持している作業空間での位置姿勢と、
を用いて算出する。
【0023】
図4は、パターン投影と撮像における計測対象物体との関係を模式的に示す図である。以下、図4を用いて、投影位置演算部810の処理について説明する。まず、パターン投影部310の投影照明系が理想的な点光源からパターン投影されるとして、焦点距離をf=1とした仮想的な正規化投影画像面を設定し、これをパターン投影画像面と呼ぶ。パターン生成部300は、パターン投影画像面にパターンを書き込むとパターン投影部310が実際の照明、レンズなどのデバイスにより計測対象物体にパターン照明を投影する。実際には、投影のレンズ歪みや理想的な点光源を用いられないことによる影響で、投影される像に歪みが生じる場合があるが、事前に光学補正するか、パターン画像を補正することで影響を低減することができる。
【0024】
パターン投影画像面のあるパターンの座標をm=[u,v,1]Tとする。計測空間の基準座標系に対する投影中心の座標系を投影座標系と定義し、その座標系を回転を3自由度、並進を3自由度の6自由度を用いて表現する。回転Rの表現としては、オイラー角、ロール・ピッチ・ヨー、回転軸回転角、4次元数などのいずれの表現手法を用いても構わない。ここでは、回転表現から得られる3x3の回転行列Rを用いる。並進はtx、ty、tzの3成分である3x1の行列t=[tx,ty,tz]Tを用いる。
【0025】
計測対象物体の表面に投影されるパターン光は、基準座標系でのパターン投影位置M=[X,Y,Z]Tに投影されるものとする。光源からパターン投影画像面のパターン座標mを通過する直線上にパターン投影位置Mが存在するものとすると、光線上の点Mは下記の式で表現できる。
【数1】
ここで、λは直線の方向ベクトルのスケールとなる正の値である。L=[Lx,Ly,Lz]Tは、直線の方向ベクトルの成分を簡単のためにまとめたものである。
【0026】
次に、式(1)の直線と計測対象物体の形状モデル表面との交点を求め、形状モデル表面上の投影位置Mとする。ここでは、形状モデル保持部110に保持されているN個の三角形パッチのそれぞれと、式(1)の直線が交差するかどうかが判定される。形状モデルのi番目の三角形パッチのj番目の頂点座標をPij=[pxij、pyij、pzij]Tとする。形状モデルは、概略位置姿勢保持部210が保持する形状モデルの位置姿勢である回転Rm、並進tmを使って、計測空間の基準座標系の頂点座標P’ijを次式(2)のように変換する。
【数2】
【0027】
三角形パッチの平面の向きは形状モデルにより登録されているものとする。計測空間でのi番目の三角形パッチの法線ベクトルn’iは形状モデルに保持されている三角形パッチの法線ベクトルniに回転Rmを掛けたものとなる。
【0028】
頂点P’ijと直線との交点Pciを結ぶ線分と、当該三角形パッチの法線ベクトルn’iは直交するので、内積の関係から
【数3】
となる。式(1)を代入すると次式(4)のようになる。
【数4】
さらに、式(4)をλについてまとめると式(5)となる。
【数5】
これを、式(1)に代入して交点Pciの座標として求めると
【数6】
となる。三角形パッチの内部に交点Pciが存在するかどうかのチェックとして、三角形頂点と交点Pciとの外積を計算して、それぞれが法線ベクトルn’iと同じ向きの場合に三角形の内部に点があることになる。具体的には次の3つの式が全て正の場合に、交点が三角形内部に存在する。
【数7】
【0029】
さらに、形状モデルのパッチとの交点は複数存在する場合があるため、投影座標系原点により近い三角形パッチの交点を求める必要がある。N個の三角形パッチのうち、交点を有するパッチの中からλ>0の条件で投影座標系原点との距離が最も近い交点を求め、その交点をパターン投影位置Mとすればよい。
【数8】
式(8)により得られた形状モデル表面の三角形パッチとの交点が形状モデル表面における推定投影点となる。
【0030】
次に、撮像部400が計測対象物体表面のパターンを撮像しているとする。撮像部の撮像系をカメラとして中心射影のモデルとして考える。射影画像面までの焦点距離をf’とする。さらに、計測対象物体の表面に投影されているパターン投影位置Mが撮像画像上に射影されているとする。その撮像画像上の射影パターン位置をm’=[u’,v’,1]Tとする。撮像カメラのレンズ中心を基準座標系における回転と並進の6自由度で表現とし、それぞれR’とt’の行列として表現すると中心射影の関係から次式(9)のようになる。
【数9】
なお、s’はスケール要素のスカラー値である。
【0031】
ここでは、パターン投影部310のレンズの座標系と撮像部400の座標系が固定されているとし、事前にそのローカル座標変換は校正手続きにより求まっているとする。具体的な校正手続きは、校正指標を複数撮影して複数の校正指標座標値を用いて最小自乗法により求めることができるし、他の方法で校正しても構わない。ローカル座標変換行列をRLとtLとすると、下式の関係となる。
【数10】
【0032】
式(8)により得られた形状モデル表面のパターン投影位置Mと式(10)を式(9)に代入して、撮像画像上の射影パターン位置m’を得る。
【数11】
【0033】
撮像画像上の射影パターン位置m’は、計測対象物体10の位置姿勢と概略位置姿勢保持部210の位置姿勢が一致しているときに、実際の照明装置による投影パターンを撮像したときの座標値と一致する。概略位置姿勢が計測対象物体10の位置姿勢と僅かに異なっている場合には、投影位置演算部810が算出した射影パターン位置m’の画面上の近傍領域に実投影パターンがある。そこで、投影位置演算部810は、距離演算部600に対して照合領域の範囲を指示する。距離演算部600は、指示された照合領域の範囲、すなわち算出した射影パターン位置m’の近傍領域におけるパターン探索を実行してパターンの対応づけが可能となる。
【0034】
図2に戻り、S1090において、距離演算部600は、S1070における撮影で得られた撮像画像からS1080で推定されたパターン射影画像座標の画素近傍から対応するパターンを探索する。そして、投影系と撮像系とのステレオ計測により各パターンと撮像部400との距離を計算する。すなわち、距離演算部600は、撮像部400が取得した計測対象物体に投影されたパターン(撮影されたパターン)とパターン投影部310により投影されたパターンとを対応付け、投影パターン画像の位置と撮影画像の位置との対応を求める。そして、その対応から上記距離を求める。ここで距離演算部600が対応するパターンを探索する照合領域の範囲は、上述したように投影位置演算部810の演算結果により限定されるため、処理速度が向上する。
【0035】
なお、グレーコードパターンを利用する場合は、白・黒に投影されたパターンをビットとしてみなし、そのエンコードされた符号値とパターン生成時の符号値を照合し、投影パターン画像の位置を決定できる。
【0036】
距離演算部600で利用するパターン投影部310と撮像部400とのローカル座標変換行列が事前の校正手続きにより規定されているものとする。そのため、互いに対応する投影されたパターンと撮影されたパターンの座標値を用いて、ステレオ測量により撮像座標系における距離を算出することができる。
【0037】
一方、位置姿勢演算部700は、距離演算部600で求めた距離と形状モデル保持部110に保持されている形状モデルを用いて計測対象物体10の位置姿勢を推定し、概略位置姿勢保持部210に保持されている概略位置姿勢の情報を更新する。以下、この処理を説明する。まず、実際に照明されたパターンを撮像し、検出された座標を実投影パターンの撮像画像上の位置を実射影パターン位置m’’とする。パターン位置mとローカル座標変換行列RL、tL、そして実パターン投影位置M'の関係は次式(12)のようになる。
【数12】
M’は、左辺の行列式の一般化逆行列を両辺に掛け合わせることで求めることができる。
【0038】
S1110において位置姿勢演算部700は、実射影パターン位置と算出した射影パターン位置との差が小さくなるように位置姿勢の推定演算を行う。位置姿勢の推定では、姿勢に対して非線形な計算を伴うため、基本的には繰り返し誤差最小化を適用する。求めようとする計測対象物体の位置姿勢を未知数として、形状モデルの表面の各パターン投影位置から算出した射影パターン位置と観測された実射影パターン位置との距離の二乗の和が最小になるように、未知パラメータである位置姿勢の推定値を更新する。具体的には非特許文献2に開示されるICP(Iterative Closest Point)法や、非特許文献3に開示される方法を利用して、形状モデルと計測距離から当該形状モデルの位置姿勢を求めることができる。その際に、初期値としては概略位置姿勢保持部210の値を使うことができる。
【0039】
なお、投影位置演算部810では、形状モデルの投影と射影の関係があるパターンのみ使うことができるため、他の物体や背景の領域に対する距離計測の結果を含めないことができる。そのため、位置姿勢演算部700での形状モデル以外の例外値が無いため、ロバストな位置姿勢演算を行うことができる。
【0040】
また、位置姿勢演算部700では、繰り返し演算の結果で生じる残差(実射影パターン位置と更新後の概略位置姿勢で投影位置演算部810が算出した射影パターン位置との差)から最適化計算の繰り返しを継続するか否かを判定する。この判定のための閾値としては、ユーザが設定した閾値でもよいし、作業空間における観測面積と撮像装置との距離との関係を用いて設定された閾値でもよい。さらに、3次元計測装置1000が既定値を保持していて、それを読み出して閾値としても構わない。
【0041】
いずれかの方法により設定された閾値と残差の値を比較するが、実際には演算後の残差が小さくならない場合もある。そのため、本実施形態では、繰り返し回数を保持しておき、残差の繰り返しごとのトレンドを計算し、繰り返し回数が既定回数を越えた場合もしくはトレンドが増加する傾向にある場合には、位置姿勢演算部700の最適化演算の繰り返しを停止するようにする。これにより、位置姿勢の最適化演算がうまくいったか否かを判定することができる。
【0042】
図5を用いて位置姿勢演算部700の処理について説明をする。最初にS10において、位置姿勢演算部700は、演算の繰り返し回数の値を0とし、移動平均値の値を初期化する。S100において、位置姿勢演算部700は、距離演算部600による距離計算結果を得る。S110において、位置姿勢演算部700は、計測対象物体10の位置姿勢を最適化計算し、パラメータを更新する。S120において、位置姿勢演算部700は、位置姿勢の更新した値と残差を取得する。S130において、位置姿勢演算部700は、S120で取得された残差が既定した閾値以下であるかどうかを判断する。残差が閾値以下の場合は位置姿勢の推定結果が想定する精度を有しているものとして、S140において最適化演算成功のフラグを設定して、繰り返しを停止する。S130において残差が閾値を上回る場合は、位置姿勢の推定の精度が不十分ということでS150に処理を移す。
【0043】
S150において、位置姿勢演算部700は、残差が減少しているか増加しているかのトレンドを計算するため、残差の移動平均を計算する。移動平均のフレーム数nはユーザが指定してもよいし、実験的に求めた値を設定しておけば良い。S160において、位置姿勢演算部700は、その移動平均値が前回計算した移動平均値よりも大きくなる傾向を示す場合には、最適化演算の誤差最小化計算が発散しているとして、S170の最適化が失敗したフラグを設定して繰り返しを停止する。S160において、繰り返しにより誤差が減少する場合は、再度繰り返し演算が必要としてS180に移る。S180では、位置姿勢演算部700は、全体の繰り返し回数を保持している値に1を加える。次に、S190において、位置姿勢演算部700は、繰り返し回数が既定回数を越えたかどうかを判定する。繰り返し回数が既定回数以内であれば、位置姿勢演算部700は、再度繰り返しの最適化計算を実行するべく処理をS110へ戻す。一方、既定回数を越えたと判定された場合は、S200において、位置姿勢演算部700は、繰り返し回数を越えたことを示すフラグを設定して、当該繰り返しを停止する。
【0044】
図2に戻り、S1130において、位置姿勢演算部700は推定位置姿勢結果を用いて概略位置姿勢保持部210の値を更新する。3次元計測装置1000が連続して計測対象物体10の位置姿勢を計測している場合は、位置姿勢演算部700による位置姿勢の推定結果で概略位置姿勢保持部210の値を更新することで、連続したフレーム間での計測対象物体の位置姿勢推定が可能となる。
【0045】
S1120において、パターン生成部300は、S1110における位置姿勢演算部700による位置姿勢の推定の状態をうけて、ステップS1050の投影パターン生成のパラメータを更新する。具体的には、S140,S170,S200で設定されるフラグが推定状態として用いられる。推定状態が良い場合(例えば、最適化演算成功のフラグが設定されている場合)は、投影・撮像回数を減らすように、推定状態が悪い場合(例えば、最適化の失敗を示すフラグが設定されている場合)は投影・撮像回数を増やすように投影制御を行う。すなわち、パターン生成部300における投影制御機能(S1120)では、推定状態の推定結果が良い場合はグレーコードパターンの投影画像の数を減らし、推定結果が悪い場合はグレーコードパターンの投影画像の数を増やすように制御する。
【0046】
さらに、パターン生成部300の投影制御機能は、概略位置姿勢保持部210に保持されている情報によって示される計測対象物体10の位置姿勢の変化に応じて投影するパターンの縞の間隔を変更する。すなわち、パターン生成部300は、位置姿勢の変化が大きいときは、投影するパターンの間隔を大きくするようにし、変化が小さいときはパターンの間隔を小さくするように制御する。なお、概略位置姿勢保持部210が保持する情報によって示される計測対象物体10の位置姿勢の変化とは、計測対象物体10か3次元計測装置1000のどちらか、もしくは両方が動いているときの動きを反映する。
【0047】
図6に投影するパターン画像列を示す。PP[n]は、n番目の投影する投影パターンを示す。ここでの実施形態としては、nが奇数の場合は縦縞、nが偶数の場合は横縞にしている。これら縞状のパターンは明暗により形成されている。図3における縞の間隔が小さいほうから画像列を保持する。投影される順序は[n]の順、すなわち縞の間隔が小さいほうから投影されることになる。
【0048】
図7に第1実施形態によるパターン生成部300の投影制御機能の処理を示す。以下では、パターンの総数を2nとし、縦縞と横縞のペアがn組存在するものとする。ここで、Wi、Hiは整数値とする。Wiはi番目に投影するパターンにおけるPP[n]のパターン画像のペアの数を意味する。Wiがnの場合は、グレーコードパターンの全てのパターン画像を順次投影することを意味し、通常のグレーコードパターンによるパターン光投影法になる。Hiはi番目におけるPP[n]のパターン画像列の開始するペアの順位を意味する。Hiが大きいほど、より投影するパターン縞の幅が相対的に大きいものから順次投影することとなる。すなわち、パターン投影部310は、パターン間隔を広くしたパターンを照射することになる。物体・装置が動いている時にはパターン投影位置の推定座標の精度が悪くなるが、この構成によれば、投影パターンの間隔を大きくすることにより隣接するパターンとの距離を広くすることができ、パターン識別性を向上する効果が得られる。
【0049】
以上のようなパターン生成部300による投影制御機能による処理について図7のフローチャートを用いて説明する。まず、S300において、パターン生成部300は、初期化として変数の初期化を行う。これは、投影制御機能が利用可能になるときに一度設定すれば良い。処理開始であるS310から処理終了であるS500は、パターン生成部300の一部の処理の範囲を示すもので、パターン生成部300の全体の処理の開始・終了ではない。ステップS320において、パターン生成部300は、処理の繰り返し回数を保持する変数iを1つ増加させる。
【0050】
S330において、パターン生成部300は、概略位置姿勢保持部210に保持されている情報が示す、更新前後の位置姿勢の変化量を算出する。たとえば、概略位置姿勢保持部210が6自由度のパラメータを保持している場合は、i−1回目に保持していた概略位置姿勢の値と、i回目の概略位置姿勢の値とのそれぞれの差の絶対値を計算し、それぞれの絶対値から最大の絶対値を求めて変化量とする。S340において、パターン生成部300は、S330で算出した変化量と事前に設定した閾値とを比較して、変化量が閾値より大きい場合はS370へ、小さい場合はS380へ処理を進める。S370では、パターン生成部300は、前回のHiの値(Hi−1)に1を加えて今回のHiの値とする。ステップS380では、パターン生成部300は、前回のHiの値(Hi−1)から1を引いた値を今回のHiとして設定する。これにより、物体・装置の動きが大きい場合は縞の間隔が大きいパターンを用いた投影が行われ、動きが小さい場合は縞の間隔が小さいパターンを用いた投影が行われるようになる。
【0051】
一方、S410において、パターン生成部300は位置姿勢演算部700の推定状態を取得し、S420で推定状態の判別を行う。最適化演算成功のフラグが立っている場合は、S450に移行し、最適化演算成功のフラグが立っていない(最適化演算が成功していない)場合はS460に移行する。S450において、パターン生成部300は、前回のWiの値(Wi−1)から1を引き、今回のWiの値とする。また、S460では、前回のWi(Wi−1)の値に1を加えて、今回のWiの値とする。これは、最適化演算が成功している場合には、撮影するパターンの画像セット数を減らし、失敗している場合は撮影するパターンの画像セット数を増やすように作用する。ステップS400では、PP[(2×Hi)−1]から順にPP[2×(Hi+Wi)−2]までのWi組のペアとなるパターン画像をパターン投影部310に指示する。ただし、PP[2×(Hi+Wi)−2]はPP[2n]までしかデータが用意されていないので、Hiが大きくなると、投影されるパターンはWi組よりも少なくなってしまう。そこで、投影されるパターン数を優先させたい場合は、PP[(2×Hi)−1]よりも前の順位の画像から始めてもよい。
【0052】
基本的には最適化演算が成功している場合は、符号化長を減らしても投影位置演算部810による撮像画像座標の推定精度が高いため、パターンの対応づけができる。図7で説明した一実施形態ではパターンの投影数をWiとして、その値を1ずつ増減することを行っていたが、その増減の値は1に限らず、増減幅は一定でなくても良い。
【0053】
なお、計測対象物体と撮像部400との相対運動が大きい場合は、投影位置演算部810による推定射影パターン位置と、実際の射影パターン位置との差が大きい。しかし、その値は奥行き方向の値と関係がある。そこで、奥行き方向の距離に応じてパターンの探索領域を変更すると良い。そこで概略位置姿勢のパラメータのうち、姿勢成分と並進成分のパラメータの閾値を別々に比較しても良い。
【0054】
以上のように、本実施形態によれば、パターン生成部300の投影制御機能は、位置姿勢演算部700の推定状態により適応的に投影パターンの回数や計測点を増減するため、推定状態が良い場合は投影回数を減らすことが可能となる。そのため、全体の計測時間の短縮を実現できる。すなわち、本実施形態によれば、投影されるパターンの撮像画像上における位置を形状モデルと概略位置姿勢から推定することで、空間コードのための投影・撮像回数を減らすことができ、処理の高速化が期待できる。
【0055】
ステップS1120の機能はパターン生成部300の投影制御機能により実現する。ステップS1140において、位置姿勢出力部900は、S1110で得られた位置姿勢推定結果を本装置の外部へ出力する。出力する情報としては、計測対象物体10の作業空間における基準座標系での位置姿勢である6自由度の値を出力しても構わないし、撮像部400の座標系における撮像座標系の原点の位置姿勢を含めて位置姿勢を出力しても構わない。
【0056】
なお、本発明の一実施形態である3次元計測装置1000では、独立した装置を利用しても構わない。例えば、パターン投影部310には、市販の液晶プロジェクタを利用することができる。撮像部400には、市販のカメラとレンズを利用することが可能である。3次元計測装置1000とは、それぞれの装置で利用可能な信号を出力するための機構と、実際の信号を受け取るための入出力部分があれば良い。そのようにすれば、利用者の用途や計測範囲に応じて装置を拡張して利用することができる。
【0057】
[第2実施形態]
第1実施形態で説明した3次元計測装置1000の好適な適用事例としては、産業用ロボットアームの手先部に設置して、把持する物体を計測対象物体として、その位置姿勢を計測する目的に利用することがあげられる。以下、図8を用いて3次元計測装置1000の適用例を説明する。
【0058】
産業用ロボットアーム30は、ロボットコントローラ40の制御による駆動する。本発明の一実施形態である3次元計測装置1000がアーム腕部に治具により固定されている。産業用ロボットアーム30の動作は対象物体11をアーム把持部によりピッキングする。3次元計測装置1000は、アーム把持部と対象物体11の相対位置姿勢を逐次推定し、その推定結果をロボットコントローラ40の制御パラメータとして伝えるためにケーブルにより結線している。
【0059】
3次元計測装置1000における概略位置姿勢入力部200へは、ロボットコントローラ40が制御する産業用ロボットアーム30の取り付け位置に、治具のためのオフセットを加えた値を伝えれば良い。また、形状モデル入力部100には、対象物体11のCADモデルを本装置1000が読み込めるフォーマットに変換したものを入力しておく。なお、対象物体が変わった場合には、その都度、形状モデル入力部100に該当する形状モデルを入力することで、複数種類の対象物体に対応することができる。装置が事前の保持している形状モデルを選択しても構わないし、別の部品識別装置による部品種の認識結果を使って保持している形状モデルを切り替えても構わない。
【0060】
3次元計測装置1000の概略位置姿勢を入力した対象物体11の位置姿勢が実際の作業空間での配置と異なる場合には、位置姿勢演算部700での位置姿勢推定の残差が大きくなる。すると、パターン生成部300が、投影・撮像回数を増加する。それにより、計測対象物体の距離計測と位置姿勢が可能となる。一度精度の高い位置姿勢が行えれば、概略位置姿勢保持部210に反映される。
【0061】
さらに、産業用ロボットアーム30の手先が対象物体11に近づくための動作を行うとする。実施のロボットアームは、関節角度のエンコーダ値のノイズや、ロボット自身の自重による撓みにより、エンコーダによる手先位置の作業空間内での絶対位置精度はそれほど高くない場合が多い。概略位置姿勢入力部200にはロボットの運動した手先位置が入力される。3次元計測装置1000は、計測のためのパターン投影と撮像を行い、位置姿勢推定結果を出力する。この場合は、ロボット手先位置計算の計算誤差を補正することが主になる。そのため、位置姿勢演算部700での推定状態が最適化演算成功となる。そこで、パターン生成部300は投影・撮像の回数を減らすための投影制御を行う。このようにして、最初の概略位置姿勢を推定するときには撮影回数が増加するが、精度の高い位置姿勢が得られれば、それ以降の計測のための撮影回数を減らせることとなり、連続した計測時の投影・撮像の回数が減り計測のタクトタイムが短縮される。
【0062】
[第3実施形態]
本発明では計測対象物体の形状モデルが未知の場合においても、本発明の一実施形態である装置構成を利用して、基本的には計測対象物体表面の3次元形状を取得することができる。未知の計測対象物体の形状モデルを複数の視点からの画像を使って取得する手続きを加えることで、さらに本発明の適用の範囲を広げることができる。
【0063】
図9は、第3実施形態による3次元計測装置1010の構成例を示すブロック図である。3次元計測装置1010は、第1実施形態の3次元計測装置1000の構成に計測モデル生成部120を付加したものである。計測モデル生成部120は、形状モデルが無いモデルに対して本装置を適用する際にその機能を発揮する。以下、3次元計測装置1010の動作について図10のフローチャートを用いて説明する。
【0064】
S2000において、3次元計測装置1010は、形状モデル利用モードか計測モデル取得モードかをユーザに選択させる。選択方法としては、ボタンやスイッチを用いれば良い。S2010において、3次元計測装置1010は、ユーザの入力を判別して形状モデル利用モードかどうかを判定する。Yesの場合(形状モデル利用モードの場合)は、S2020へ処理が進む。S2020では、形状モデル保持部110に既に登録されている、または形状モデル入力部100が入力した既存の形状モデルを利用した位置姿勢計測が実行される。すなわち、図1のS1000からの上述した処理により計測対象物体の位置姿勢計測を行う。一方、S2010でNoの場合(計測モデル取得モードの場合)は、S2040へ進み、計測モデル生成部120の制御下で計測モデル撮影の処理を開始する。なお、最初期においては、最初の撮影時の位置姿勢を基準とするように概略位置姿勢保持部210の内容や位置姿勢演算部700の状態をセットする。
【0065】
S2050において、計測モデル生成部120は、計測対象物体の概略位置姿勢(概略位置姿勢保持部210の内容)を取得する。例えば、計測対象物体を回転板の上に設置しているならば、その回転角度から計算される位置姿勢を取得することができる。また、本計測装置が第2実施形態で述べた産業用ロボットアームのアーム部に設置している場合は、ロボットの手先位置を取得することができる。次に、S2060において、計測モデル生成部120は、パターン生成部300に対して全ての投影パターンを投影して距離を計測するように指示する。S2070において、距離演算部600は全ての距離計測結果を計測モデル生成部120に送る。
【0066】
形状モデルは複数の視点から観察した計測対象物体表面までの距離データを統合することにより得られるので、S2080において計測モデル生成部120は、計測対象物体10を動かすか、3次元計測装置1010自体を動かす。なお、その時の移動量は既知とする。S2090において、計測モデル撮影を終了するかどうかを判断する。判断する方法としては、既定回数の撮影が終了した場合やユーザによる指示などを用いてよい。こうして、3次元計測装置1010(パターン投影部310と撮像部400)と計測対象物体とを複数の既知の位置関係に配置して行われた距離計測によって複数の距離データが得られる。
【0067】
S2100において、計測モデル生成部120は、距離演算部600より提供された複数の計測距離画像を統合する。統合する方法としては、例えば、重複する距離点群の領域の幾何学的な距離が最小になるように概略位置姿勢を用いて誤差最小化計算を行って統合することがあげられる。S2110において、計測モデル生成部120は、統合された計測点群から計測対象物体の領域をユーザに選択させる。例えば、統合された距離画像をユーザが視認できるように表示して、マウスなどで指定させればよい。実際に計測対象物体と規定しているのはユーザであるため、領域を選択してもらうことが望ましい。
【0068】
S2120において、計測モデル生成部120は、統合した距離点群からS2110で選択された領域を抽出して、形状モデルに変換して登録する。点群から形状モデルである三角形パッチを生成する方法はマーチングキューブ法などを用いれば良い。S2130では、計測モデル生成部120が生成した形状モデルを形状モデル保持部110に格納し、図1に示すS1040からの処理を行い、第1実施形態と同様の位置姿勢計測を開始する。
【0069】
上述の計測モデル生成部を有する3次元計測装置1010を用いれば、形状モデルが事前に用意できない場合においても、本装置を利用することが可能となる。
【0070】
[第4実施形態]
第1、第3実施形態で説明した各処理部はコンピュータのプログラムとしても実行できる。図11は、パーソナルコンピュータ2100に撮像部400としてのカメラ401とパターン投影部310としてのプロジェクタ311を、I/Oインターフェース2101、ビデオインターフェース2103を介して接続した例を示す。CPU2102は、上述した実施形態の機能をコンピュータに実行させるプログラムコード2105をメモリから読み出して実行することにより、当該コンピュータを3次元計測装置1000(1010)として機能させる。プログラムコード2105は、プログラムメモリ或いは不図示の外部記憶装置からRAM2104にロードされ、実行されるようにしてもよい。入力部2106は、キーボード、マウス等で構成される。
【0071】
その際、パーソナルコンピュータのバスや周辺機器を効率的に利用するための仕組みとしてオペレーティングシステムを利用しても構わない。オペレーティングシステムは、本発明の機能を実装したプログラムとは別に提供されていても問題ないし、オペレーティングシステムにおける一つのアプリケーションプログラムとして、本発明の機能を実装した処理プログラムを選択して実行しても構わない。
【0072】
[第5実施形態]
3次元計測装置1000の投影位置演算部810は、形状モデル保持部110の三角形パッチの数が増加すると処理量が増加する。しかしながら、三角形パッチの探索を効率化するために、事前に三角形パッチを投影座標系視点に対してソートしておく方法により処理を高速化できる。
【0073】
さらに、処理の高速化として3次元のコンピュータグラフィックスをレンダリングするハードウェアである不図示のグラフィックスプロセッサユニットを用いることができる。グラフィックスプロセッサユニットとしては、Zバッファからの値を読み出すことができるハードウェアを使えば良い。グラフィックスプロセッサユニットを利用して、レンダリング時のZバッファの値から、投影座標原点に近い平面までの距離を求めることができる。投影座標系原点を視点とした形状モデルを正規化投影画像平面と一致するようにレンダリングして、パターン座標に相当するZバッファを求め、その奥行き値を含めて座標を基準座標系へ変換すれば良い。また、同様に、投影画像上の射影パターン位置m’の計算を行う式(11)にも適用できる。形状表面上の投影パターンMを撮像座標系に合わせた射影面に投影する処理をグラフィックスプロセッサの射影変換機能を用いて求めれば高速に演算できる。
【特許請求の範囲】
【請求項1】
計測対象物体の形状モデルを保持する形状モデル保持手段と、
前記計測対象物体の概略位置姿勢を示す情報を保持する概略位置姿勢保持手段と、
明暗で構成された複数種類のパターンを前記計測対象物体に投影する投影手段と、
前記投影手段によりパターンが投影された前記計測対象物体を撮影する撮像手段と、
前記形状モデルと前記概略位置姿勢を示す情報とに基づいて前記撮像手段により取得される撮像画像における前記パターンの座標値を算出する投影位置演算手段と、
前記投影位置演算手段により算出された前記座標値に基づいて前記撮像画像における撮影されたパターンを探索し、撮影されたパターンと投影されたパターンとを対応づけることにより前記計測対象物体の表面と前記撮像手段との距離を求める距離演算手段と、
前記距離演算手段で求めた距離と前記形状モデル保持手段に保持されている形状モデルを用いて前記計測対象物体の位置姿勢を推定し、前記概略位置姿勢保持手段に保持されている概略位置姿勢の情報を更新する位置姿勢演算手段とを備えることを特徴とする3次元計測装置。
【請求項2】
前記位置姿勢演算手段は、更に、前記計測対象物体について行なった位置姿勢の推定の状態を示す推定状態を生成し、
前記投影手段は、前記推定状態に基づいて投影するパターンを制御することを特徴とする請求項1に記載の3次元計測装置。
【請求項3】
前記投影手段は、前記推定状態に基づいて投影するパターンの種類を増減することを特徴とする請求項2に記載の3次元計測装置。
【請求項4】
前記パターンは縞状のパターンを有し、
前記パターン生成手段は、更に、前記位置姿勢演算手段によって算出された前記計測対象物体の位置姿勢の変化の大きさに基づいて投影するパターンの縞の間隔を変更することを特徴とする請求項1乃至請求項3のいずれか1項に記載の3次元計測装置。
【請求項5】
前記撮像手段及び前記投影手段と、前記計測対象物体との位置関係を変化させながら前記撮像手段を機能させることにより得られた複数の撮像画像を用いて前記計測対象物体の形状モデルを生成する計測モデル生成手段を更に備え、
前記形状モデル保持手段は、前記計測モデル生成手段により生成された形状モデルを保持することを特徴とする請求項1乃至4のいずれか1項に記載の3次元計測装置。
【請求項6】
計測対象物体の形状モデルを形状モデル保持手段に保持する工程と、
前記計測対象物体の概略位置姿勢を示す情報を概略位置姿勢保持手段に保持する工程と、
明暗で構成された複数種類のパターンを投影部より前記計測対象物体に投影する投影工程と、
前記投影工程でパターンが投影された前記計測対象物体を撮像部により撮影する撮影工程と、
前記形状モデルと前記概略位置姿勢を示す情報とに基づいて前記撮像工程で取得される撮像画像における前記パターンの座標値を算出する投影位置演算工程と、
前記投影位置演算工程で算出された前記座標値に基づいて前記撮像画像における撮影されたパターンを探索し、撮影されたパターンと投影されたパターンとを対応づけることにより前記計測対象物体の表面と前記撮像部との距離を求める距離演算工程と、
前記距離演算工程で求めた距離と前記形状モデル保持手段に保持されている形状モデルを用いて前記計測対象物体の位置姿勢を推定し、前記概略位置姿勢保持手段に保持されている概略位置姿勢の情報を更新する位置姿勢演算工程とを備えることを特徴とする3次元計測装置の制御方法。
【請求項7】
コンピュータを、請求項1乃至請求項6のいずれか1項に記載の3次元計測装置における各手段として機能させるためのプログラム。
【請求項1】
計測対象物体の形状モデルを保持する形状モデル保持手段と、
前記計測対象物体の概略位置姿勢を示す情報を保持する概略位置姿勢保持手段と、
明暗で構成された複数種類のパターンを前記計測対象物体に投影する投影手段と、
前記投影手段によりパターンが投影された前記計測対象物体を撮影する撮像手段と、
前記形状モデルと前記概略位置姿勢を示す情報とに基づいて前記撮像手段により取得される撮像画像における前記パターンの座標値を算出する投影位置演算手段と、
前記投影位置演算手段により算出された前記座標値に基づいて前記撮像画像における撮影されたパターンを探索し、撮影されたパターンと投影されたパターンとを対応づけることにより前記計測対象物体の表面と前記撮像手段との距離を求める距離演算手段と、
前記距離演算手段で求めた距離と前記形状モデル保持手段に保持されている形状モデルを用いて前記計測対象物体の位置姿勢を推定し、前記概略位置姿勢保持手段に保持されている概略位置姿勢の情報を更新する位置姿勢演算手段とを備えることを特徴とする3次元計測装置。
【請求項2】
前記位置姿勢演算手段は、更に、前記計測対象物体について行なった位置姿勢の推定の状態を示す推定状態を生成し、
前記投影手段は、前記推定状態に基づいて投影するパターンを制御することを特徴とする請求項1に記載の3次元計測装置。
【請求項3】
前記投影手段は、前記推定状態に基づいて投影するパターンの種類を増減することを特徴とする請求項2に記載の3次元計測装置。
【請求項4】
前記パターンは縞状のパターンを有し、
前記パターン生成手段は、更に、前記位置姿勢演算手段によって算出された前記計測対象物体の位置姿勢の変化の大きさに基づいて投影するパターンの縞の間隔を変更することを特徴とする請求項1乃至請求項3のいずれか1項に記載の3次元計測装置。
【請求項5】
前記撮像手段及び前記投影手段と、前記計測対象物体との位置関係を変化させながら前記撮像手段を機能させることにより得られた複数の撮像画像を用いて前記計測対象物体の形状モデルを生成する計測モデル生成手段を更に備え、
前記形状モデル保持手段は、前記計測モデル生成手段により生成された形状モデルを保持することを特徴とする請求項1乃至4のいずれか1項に記載の3次元計測装置。
【請求項6】
計測対象物体の形状モデルを形状モデル保持手段に保持する工程と、
前記計測対象物体の概略位置姿勢を示す情報を概略位置姿勢保持手段に保持する工程と、
明暗で構成された複数種類のパターンを投影部より前記計測対象物体に投影する投影工程と、
前記投影工程でパターンが投影された前記計測対象物体を撮像部により撮影する撮影工程と、
前記形状モデルと前記概略位置姿勢を示す情報とに基づいて前記撮像工程で取得される撮像画像における前記パターンの座標値を算出する投影位置演算工程と、
前記投影位置演算工程で算出された前記座標値に基づいて前記撮像画像における撮影されたパターンを探索し、撮影されたパターンと投影されたパターンとを対応づけることにより前記計測対象物体の表面と前記撮像部との距離を求める距離演算工程と、
前記距離演算工程で求めた距離と前記形状モデル保持手段に保持されている形状モデルを用いて前記計測対象物体の位置姿勢を推定し、前記概略位置姿勢保持手段に保持されている概略位置姿勢の情報を更新する位置姿勢演算工程とを備えることを特徴とする3次元計測装置の制御方法。
【請求項7】
コンピュータを、請求項1乃至請求項6のいずれか1項に記載の3次元計測装置における各手段として機能させるためのプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2011−141174(P2011−141174A)
【公開日】平成23年7月21日(2011.7.21)
【国際特許分類】
【出願番号】特願2010−1561(P2010−1561)
【出願日】平成22年1月6日(2010.1.6)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成23年7月21日(2011.7.21)
【国際特許分類】
【出願日】平成22年1月6日(2010.1.6)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]