説明

位置姿勢計測装置

【課題】 対象物体と非対象物体の像を含む距離画像データを入力として対象物体の位置姿勢を推定する処理の高速化、及びメモリ消費量の軽減を目的とする。
【解決手段】 物体を撮影した距離画像上で物体に相当する物体領域に基づいて、該物体の位置姿勢を計測する。そのために、距離画像の領域を分割した部分領域群のうち少なくとも1つの部分領域を物体領域として設定する。物体領域に物体の形状モデルを当て嵌めて、物体の位置姿勢を推定する。当て嵌めの誤差に基づいて、物体領域を更新する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、3次元形状が既知である物体の位置姿勢を計測する技術に関し、特に対象物体を撮影した距離画像に基づいて対象物体の位置姿勢を算出する方法に関する。
【背景技術】
【0002】
近年ロボット技術の発展とともに、これまで人間が行っていた工業製品の組立をロボットが代わりに行うようになりつつある。ロボットによる組立作業では、ハンドなどのエンドエフェクタによって部品を把持する。このため把持の対象となる部品とロボットとの相対的な位置姿勢を計測し、移動計画を策定して実際にアクチュエータを制御する必要がある。ロボットの位置姿勢計測には、カメラや距離センサ等で得られる、2次元画像や距離画像を用いる方法がある。オフィスや工場のシーンや工業製品の部品など、対象が直線や曲線、濃淡変化の少ない面など単調な特徴しか持たない場合には距離画像を用いる場合がある。
【0003】
具体的な位置姿勢計測として、非特許文献1,2に、距離画像へのモデルフィッティングによる物体の位置姿勢の計測や推定を行う手法が開示されている。また、非特許文献1,3に、時系列で得られる距離画像をもとに、フレーム間での物体の位置姿勢の変化を推定する手法が開示されている。
【0004】
ここでは、計測データとモデルとの対応間の距離を最小化を行う。
【0005】
しかし、対象物体の周囲や背後に存在する対象物体以外の物体のデータが混在する場合や、計測データのノイズ・位置姿勢の概略値の誤差などの要因により誤った対応対データが最適化処理に混在する場合がある。これにより、位置姿勢推定精度が低下する。
【0006】
そこで、誤りに小さな重みを設定し、誤りが処理結果に悪影響を及ぼすことを防ぐロバスト推定などが利用されている。対象物体に比べ、対象物体以外の物体はモデルとの対応間距離が大きくなる傾向があり、ロバスト推定を適用すると、最適化計算に対する非対象物体のデータからの影響が軽減する。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開平01−009307
【非特許文献】
【0008】
【非特許文献1】P.J.Besl and N.D.McKay,”A method for registration of 3−D shapes,”IEEE Transactions on Pattern Analysis and Machine Intelligence,vol.14,no.2,pp.239−256,1992.
【非特許文献2】B.Zheng,R.Ishikawa,T.Oishi,J.Takamatsu,K.Ikeuchi,”6−DOF Pose Estimation from Single Ultrasound Image Using 3D IP Models,”Proc.IEEE International Workshop on Object Tracking and Classification Beyond the Visible Spectrum (OTCBVS08),pp.1−8,2008.
【非特許文献3】D.A.Simon,M.Hebert,and T.Kanade,”Real−time 3−D pose estimation using a high−speed range sensor,”Proc.1994 IEEE International Conference on Robotics and Automation (ICRA’94),pp.2235−2241,1994.
【非特許文献4】M.M.Blane,Z.Lie,H.Civi,D.B.Cooper,”The 3L algorithm for fitting implicit polynomial curves and surfaces to data,”IEEE Transactions on Pattern Analysis and Machine Intelligence,vol.22,no.3,pp.298−313,2000.
【非特許文献5】T.Sahin,M.Unel,”Fitting Globally Stabilized Algebraic Surfaces to Range Data,”Proc.IEEE International Conference on Computer Vision,vol.2,pp.1083−1088,2005.
【非特許文献6】Z.Zhang,”A flexible new technique for camera calibration,”IEEE Transactions on Pattern Analysis and Machine Intelligence,vol.22,no.11,pp.1330−1334,2000.
【非特許文献7】X.Jiang and H.Bunke,”Range image segmentation:Adaptive grouping of edges into regions,”Proceedings of Asian Conference on Computer Vision 1998(ACCV’98),pp.299−306,1998.
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかし、前述したような位置姿勢推定方法では、処理対象とする3次元点群の数が多くなるほど、処理負荷が増大し、かつメモリ消費量が増大する。物体の位置姿勢を推定する際に、処理対象の3次元点群を対象物体のみに限定するのが理想的である。しかし、従来のロバスト推定を用いた方法では、本来は不必要な非対象物体のデータをモデル当て嵌めの処理から除外してはいない。このため、従来の方法では、処理速度の低下・メモリ消費量の増大という課題があった。
【0010】
本発明は、以上の課題を鑑みてなされたものであり、対象物体と非対象物体の像を含む距離画像データを入力として対象物体の位置姿勢を推定する処理の高速化、及びメモリ消費量の軽減を目的とする。
【課題を解決するための手段】
【0011】
上記の課題を解決するため、本願発明では、以下の方法を有する。
【0012】
物体を撮影した距離画像上で前記物体に相当する物体領域に基づいて、該物体の位置姿勢を計測する位置姿勢計測方法であって、分割手段が、前記距離画像の領域を部分領域に分割する分割工程と、設定手段が、前記分割した複数の部分領域のうち少なくとも1つの部分領域を前記物体領域として設定する設定工程と、推定手段が、前記物体領域に前記物体の形状モデルを当て嵌めて、前記物体の位置姿勢を推定する推定工程と、更新手段が、前記当て嵌めの誤差に基づいて、前記物体領域を更新する更新工程とを有することを特徴とする位置姿勢計測方法。
【発明の効果】
【0013】
位置姿勢推定処理の対象とする距離画像データを対象物体の領域に限定することにより、処理速度を向上させ、メモリ消費量を抑制することができる。
【図面の簡単な説明】
【0014】
【図1】本願の実施形態を実現するためのコンピュータの構成を表すブロック図である。
【図2】第1の実施形態の方法の処理全体の流れを示すフローチャートである。
【図3】第1の実施形態の距離画像領域分割工程の流れを示すフローチャートである。
【図4】第1の実施形態のモデル当て嵌め工程の流れを示すフローチャートである。
【図5】第1の実施形態の物体領域更新工程の流れを示すフローチャートである。
【図6】3次元シーンの例を示す図である。
【図7】第2の実施形態の方法の処理全体の流れを示すフローチャートである。
【図8】第2の実施形態の物体領域更新工程の流れを示すフローチャートである。
【発明を実施するための形態】
【0015】
本発明は、例えば、以下の実施例によって実現することができる。
【実施例】
【0016】
[第1の実施形態]
本実施形態では、山積み状態になっている同一形状の物体群から、ロボットハンドで1個ずつ物体を把持して取り上げることを想定する。そのため、物体群の上方から距離画像を撮影する。撮影した距離画像には複数の物体までの距離値が記録されているが、その中から一番上方にある物体が占める領域を検出し、物体の位置姿勢を推定する。
【0017】
本実施形態における処理の概略は以下のようになる。
【0018】
まず、距離画像を同一の面に属すると推定される部分的な領域に分割する。分割された領域のうち、距離値が最小の点を含む領域、すなわち最上部にある領域から開始して、対象物体の位置姿勢を推定する。このとき、各々の領域では、把持対象とする物体に属すると推定される領域を追加しながら物体の形状モデルを当て嵌め、対象物体の位置姿勢を推定する。追加する領域はモデルを当て嵌めたときの誤差が小さくなるように選択する。この選択方法により、選択した領域群の中に複数の物体のデータが含まれる危険性を軽減することができる。
【0019】
なお本実施形態では、部分領域という、距離画像を同一の面に属すると推定される領域に分割した各々の領域を用いる。また、物体領域という、1つ以上の部分領域から構成され、距離画像上で対象物体に属すると推定した領域を用いる。
【0020】
以下に、図を用いて本実施形態を詳細に説明する。
【0021】
図1は、本実施形態で用いるコンピュータのハードウェア構成である。図1において、CPU101は、装置全体の動作を制御する。メモリ102には、CPU101の動作に用いるプログラムやデータを格納する。バス103は、各構成モジュール間のデータ転送を行う。記憶装置104は、CPU101に読み込むプログラムやデータを格納する。入力部105は、プログラムを起動したり、プログラムの動作を指定したりするための入力装置を構成する。表示部は106はプロセスの動作結果を表示する。データ入出力部107では、装置外部とのデータを入出力する。距離画像計測装置はデータ入出力部107を介して本実施形態の装置に接続されている。
【0022】
図2は、本実施形態の位置姿勢計測方法に関わる処理全体の流れを示すフローチャートである。
【0023】
ステップS201では、処理で用いるデータの初期設定を行う。具体的には、記憶装置105から形状モデルデータをメモリ102にロードする。また、距離画像計測装置の撮像部のカメラパラメータ(主点位置、焦点距離、画像歪み係数)、及び距離画像の画素値と距離値の変換比率をデータ入出力部107に接続された不図示の距離画像計測装置から入力する。
【0024】
物体の形状モデルは陰多項式モデルであり、(1)に示す式で定義される。ここで、X=(x,y,z)が3次元空間中の点の座標、nが陰多項式の次数である。(1)の式が0になる座標(x,y,z)が、陰多項式モデルが表す物体の表面、0より大きい値になる座標が対象物体の外部、0より小さい値になる座標が対象物体の内部を表す。
【0025】
【数1】

【0026】
この陰多項式モデルは対象物体のCADモデルやレンジファインダ等で計測した3次元点群からあらかじめ生成しておく。例えば、非特許文献4に記載のように、陰多項式で表現された3次元モデルを構築する。陰多項式モデルは対象となる3次元形状のみを適切に表現するように構築することが難しい。この手法では、対象形状の表面上の点、ある距離cだけ外側の点、cだけ内側の点の3組の点群と、対応する陰多項式の値の2乗が最小となるよう陰多項式の係数を決定する。例えば、複雑な形状の陰多項式をより安定して求めるため、非特許文献5に記載のようにリッジ回帰を用いてもよい。
【0027】
また、入力するカメラパラメータを用いて、距離画像の各画素の2次元座標および画素値から、その画素に対応する3次元空間中の点の撮像部座標系における3次元座標を算出することができる。非特許文献6に記載のように、カメラパラメータは事前に校正しておいてもよい。
【0028】
ステップS202では、データ入出力部107に接続された不図示の距離画像計測装置から距離画像データを取得し、メモリ102に格納する。なお、距離画像の撮影では、例えば、光切断法やステレオ法により撮影してもよい。
【0029】
ステップS203では、距離画像を部分領域に分割する。分割結果は正の整数値が記録された2次元のマップ(以下「部分領域マップ」と呼ぶ)としてメモリ102に蓄積する。マップの大きさは距離画像の縦・横の画素数に等しい。部分領域マップに記録された整数値は、同一の部分領域に対しては同一の値であり、異なる部分領域は異なる値を持つ。すなわち、部分領域マップに記録されているのは、距離画像の各画素が属する部分領域の識別番号である。したがって、部分領域マップの値を参照することにより、参照したマップ上の位置に相当する距離画像上の画素がいずれの部分領域に属するかを一意に決定することができる。
【0030】
ステップS204では、ステップS203で抽出した部分領域群のうち、距離値が最小の画素を含む部分領域を探索し、物体領域として設定する。これにより、最も上方(距離画像撮影装置に近い側)に存在する部分領域が物体領域となる。以降、本ステップで物体領域に設定した部分領域を含む物体を位置姿勢の計測対象とする。なお、物体領域のデータは、その物体領域に属する部分領域の識別番号のリストとしてメモリ102に記録される。本ステップの処理完了後、物体領域データは1つの部分領域の識別番号を含むことになる。
【0031】
ステップS205では、物体の形状を表す陰多項式モデルを物体領域内の距離計測点群に当て嵌めることによって、計測対象物体の位置姿勢を推定する。
【0032】
ステップS206では、設定済みの物体領域に新たに部分領域を加えるか否かを判定して、判定結果が真なら物体領域を更新する。
【0033】
ステップS207では、ステップS206において物体領域データが更新されたか否か判定し、更新があればステップS205に戻って対象物体の位置姿勢を再度推定する。更新が無ければ、物体領域が確定し、かつ対象物体の位置姿勢推定も完了したとして処理全体を終了する。
【0034】
続いて、距離画像を領域分割するステップS203の詳細を説明する。本ステップは、距離画像を後述するエッジによって囲まれた閉領域ごとに分割する。分割には、非特許文献7の手法を用いてもよい。ここで検出された領域を部分領域とする。
【0035】
図3は、本ステップの処理の流れを示すフローチャートである。
【0036】
ステップS301では、エッジを抽出する。エッジとは距離値が不連続に変化する「ジャンプエッジ」、または物体表面の法線方向が不連続に変化する「クリーズエッジ」である。具体的には、まず距離画像上の直線(「スキャンライン」と呼ぶ)に相当する被写体上の曲線を複数の2次曲線セグメントに分割する。そして、曲線セグメントの各境界点に関して「エッジの強さ」(ジャンプエッジらしさを表す奥行き値の不連続度、クリーズエッジらしさを表すセグメントの法線方向の不連続度)を算出し、エッジの強さが閾値以上の点をエッジとして抽出する。なお、エッジの方向は様々であり、スキャンラインは距離画像の縦方向・横方向・斜め方向(45°、135°)の4方向を用いて、4方向でのエッジの強さが最も高い接続点をエッジとする。以上のように、距離画像上のエッジ画素の位置を表したエッジマップを作成し、メモリ102に記録する。
【0037】
ステップS302では、ステップS301で作成したエッジマップをラベリングする。その結果、距離画像は連結したエッジ画素によって区切られる閉領域群に分割される。分割結果は、距離画像と同じサイズのラベル画像としてメモリ102に記録する。なお、ラベルの値は閉領域ごとに一意に設定される。
【0038】
ステップS303では、ステップS302で検出した閉領域の中から面積T(は部分領域の面積閾値)以上の領域を選択し、選択した閉領域のラベル値のリスト(以下、このリストを「領域リスト」と呼ぶ)としてメモリ102に記録する。
【0039】
ステップS304では、領域リストに登録された閉領域の数が0か否か判定する。数が0ならば、ステップS312に進む。一方、数が0でなければ、ステップS305に進む。
【0040】
ステップS305では、領域リストに登録された閉領域群から未処理の閉領域Rを取り出す。
【0041】
ステップS306では、閉領域Rに3次元平面または3次元曲面を当て嵌める。
【0042】
ステップS307では、ステップS306にて平面または曲面を当て嵌めた際の当て嵌め誤差が予め定められたの閾値未満であるか否か判定する。閾値未満であれば、閉領域Rには複数の面が含まれないと推定されS308に進む。一方、閾値以上と判定されれば、ステップS309へ進む。なお、ここで当て嵌め誤差とは、閉領域Rの各画素に相当する3次元点と、当て嵌めた平面または曲面上の最近傍点との間の距離の2乗和を領域Rの全画素について平均をとったものである。ステップS307で当て嵌め誤差が閾値以上と判定された場合、閉領域Rに複数の面が含まれる可能性がある。これは、距離画像に含まれるノイズなどの影響により、閉領域の境界に存在するエッジが途切れているためと推定される。
【0043】
ステップS309では、途切れたエッジを接続して、複数の面を区分するため、エッジマップに膨張処理を施す。
【0044】
ステップS310では、エッジマップをラベリングする。
【0045】
ステップS311では、閉領域の候補を抽出する。ステップS310およびS311の処理内容は、それぞれステップS302およびS303と同様である。
【0046】
ステップS307では、当て嵌め誤差が閾値未満と判定された場合、閉領域Rには単一の面のみ含まれると推定されるため、ステップS308に進む。
【0047】
ステップS308では、閉領域Rを部分領域として登録する。
【0048】
ステップS312では、エッジ部の画素など閉領域として未登録の画素を周囲の閉領域に統合する。このステップでも平面あるいは曲面を当て嵌めて、当て嵌め誤差が閾値未満なら統合する。
【0049】
次に、ステップS205のモデル当て嵌め工程の詳細を説明する。本工程では、計測対象物体の位置姿勢の概略値を反復演算により繰り返し補正することにより位置姿勢を算出する。
【0050】
図4はモデル当て嵌め工程の流れを示すフローチャートである。
【0051】
ステップS401では、データ入出力部109に接続された不図示の距離画像計測装置に対する物体の位置姿勢の概略値を推定する。この処理は、特許文献1に記載のように、物体領域の距離画像データを入力として、物体認識的方法により実現してもよい。ただし、物体の位置姿勢の概略値を求める方法はこれに限るものではない。例えば、モデル当て嵌め工程を一度以上経過していれば、その工程で算出した物体の位置姿勢を表す値をメモリ102に記憶しておく。その値を次回のモデル当て嵌め工程において物体の概略位置姿勢の値として使うことが可能である。あるいは、過去の計測値から物体の運動の速度や角速度を線形フィルタやカルマンフィルタなど時系列フィルタリング処理により推定する。推定された速度や角速度によって現在の時刻における物体の位置姿勢を予測したものを用いてもよい。また、他のセンサによる物体の位置姿勢の計測が可能である場合には、該センサによる出力値を位置姿勢の概略値として用いてもよい。センサは、例えばトランスミッタが発する磁界を物体に装着するレシーバで検出することにより位置姿勢を計測する磁気式センサであってもよい。また、物体上に配置されたマーカをシーンに固定されたカメラによって撮影することにより位置姿勢を計測する光学式センサであってもよい。その他、6自由度の位置姿勢を計測するセンサであればいかなるセンサであってもよい。また、物体の置かれているおおよその位置や姿勢があらかじめわかっている場合には、その値を概略値として用いてもよい。
【0052】
ステップS402では、対象物体の位置姿勢の概略値を用いて、物体領域内の各画素に対応する3次元空間中の座標を距離画像計測装置の撮像部座標系から物体モデルの座標系に変換する。なお、以下の説明では、本ステップで座標変換の結果、座標を算出した点を「物体領域の3次元点」と呼ぶことにする。
【0053】
ステップS403では、陰多項式モデルから構築される距離場と物体領域の3次元点群の各座標に基づいて、3次元点群とモデル表面との距離の総和に対応する、(2)に示すエネルギー関数が最小化されるように位置姿勢を最適化する。
【0054】
【数2】

【0055】
ここでΩは物体領域の3次元点群であり、x ∈Ω である。また、distは陰多項式モデルから計算される距離で、モデル表面上では0、内部では負の値、外部では正の値をとり、(3)のように定義される。
【0056】
【数3】

【0057】
位置姿勢の最適化は具体的には、最急降下法に基づき(4)の式による勾配から3次元点群座標XK+1を求める(6)。ここでXは X∈RN×3で、N個の物体領域の3次元点の座標を表す。
【0058】
【数4】

【0059】
【数5】

【0060】
【数6】

【0061】
元の3次元点群座標Xと求めたXk+1から(7)に示す行列Aを作成し、A=USVのように特異値分解を行い、位置姿勢の概略値を更新する。ここで¬XはXの平均を、tは対象物体の位置、Rは姿勢を表す行列である。
【0062】
【数7】

【0063】
【数8】

【0064】
【数9】

【0065】
ステップS404では、収束判定を行い、収束していればモデル当て嵌め処理全体を終了し、そうでなければステップS402に戻る。収束判定では、(4)の式の値がほぼ0である場合や、位置姿勢に関する更新前後での誤差ベクトルの二乗和の差がほぼ0である場合に収束したと判定する。なお、上記の説明ではエネルギー最適化処理に最急降下法を用いているが、これに限るものではない。より収束の速いGauss−Newton法やLevenberg−Marquardt法によって行ってもよい。また、共役勾配法など、他の非線型最適化計算手法を用いてもよい。
【0066】
ステップS206の物体領域更新工程の詳細を説明する。図5は物体領域更新工程の流れを示すフローチャートである。
【0067】
ステップS501では、物体領域の3次元点群について(10)で定義される物体の陰多項式モデルとの平均距離を算出する。ただし、ここではNは物体領域の3次元点の数であり、Φは物体領域の3次元点群である。
【0068】
【数10】

【0069】
ただし、Nは算出の対象とする距離画像上の領域内の3次元点数で、
【0070】
【数11】

【0071】
ただし、Φは算出の対象とする距離画像上の領域内の3次元点群である。
【0072】
ステップS502では、物体領域に含まれない部分領域の中から、物体領域に追加する部分領域の候補Cを選ぶ。具体的には、物体領域及び物体領域に含まれない各部分領域のそれぞれに属する画素群に対応する3次元点群の重心位置を算出する。そして、物体領域に関する重心位置と各部分領域に関する重心位置との距離を算出し、距離が小さい順でn個の部分領域を物体領域に追加する部分領域の候補Cとして選択する。なお、nは予め定められた1以上の正の整数である。
【0073】
ステップS503では、候補Cの中から未処理の部分領域を1つ選択する。ここで選択した部分領域をaとする。
【0074】
ステップS504では、部分領域aを物体領域に追加するか否か判定するための評価値を算出する。具体的には、部分領域aに関して、(10)で表される物体を表す陰多項式モデルと部分領域との平均距離を算出する。ただし、ここではNは部分領域a内の3次元点の数、Φは部分領域a内の3次元点群である。
【0075】
ステップS505では、次に、ステップS501で求めた平均距離に所定比率(>1.0)をかけたものと、ステップS504で求めた平均距離とを比較する。後者が前者未満であれば、ステップS506に進む。一方、後者が前者以上と判定されれば、ステップS507に進む。
【0076】
ステップS506では、部分領域aを物体領域に追加する。すなわち、物体領域に含まれる部分領域群を表す識別番号のリストに、部分領域aの識別番号を加える。
【0077】
ステップS507では、追加する部分領域候補Cに含まれる部分領域すべてを処理したか否か判定し、処理済であれば物体領域更新処理を終了する。一方、未処理の部分領域があれば、ステップS503に戻る。このようにして、すべての追加候補の部分領域に関して物体領域に追加するか否かを判定する処理を繰り返して、物体領域を更新する。
【0078】
以上、本実施形態に関わる位置姿勢計測装置の処理の流れを説明した。
【0079】
図6に本手法の方法を適用して、複数の物体が撮影された距離画像から1つの物体の位置姿勢を推定する様子を示す。ただし、物体領域に追加する物体領域の候補の数nは1とする。
【0080】
図6(a)は、距離画像を撮影する対象の物体の像であり、同一形状の物体が2つ含まれている。図6(b)は、これらの物体を撮影した距離画像を部分領域に分割した様子である。異なる領域を区別して表示するため、領域ごとに塗りのパターンが異なるように表してある。なお、距離画像は背景領域616を有する。図6(c)から図6(e)は物体領域を更新する各ステップを表しており、灰色に表示した部分が物体領域に相当する。図6(c)は初期の物体領域であり、ステップS204の終了後の状態に相当する。距離画像撮影装置からみて最も手前側の測定点を含む部分領域621が物体領域として抽出されている。ステップS206にて、物体領域の更新を行うと、物体領域は図6(d)に示すようになり、初期の物体領域に部分領域632が加わっていることが分かる。同様に2度目の物体領域の更新工程を経ると、図6(e)のように部分領域643がさらに加わって、物体領域が3つの部分領域641,642,643によって構成されることになる。
【0081】
図6(e)の状態から、さらに物体領域の更新工程に進むと、部分領域644,645を物体領域に加えるか否かを判定する。しかし、部分領域644,645は部分領域641,642,643が属する物体とは異なる物体上の領域なので、ステップS504で算出するモデルとの平均距離が比較的大きな値となる。そのため、部分領域644,645は物体領域に加えないように判定される。
【0082】
以上の様な処理経過を経て、最終的には部分領域641,642,643を含む物体が距離画像から抽出され、その位置姿勢を求めることが出来る。
【0083】
本実施形態の方法によれば、位置姿勢推定処理の対象とする距離画像データを対象物体の領域に限定することにより、処理速度を向上させ、メモリ消費量を抑制することができる。
【0084】
なお、本実施形態は上記に限らず様々な変形例が存在する。
【0085】
[変形例1−1]
上記の説明ではステップS206において、物体領域内の3次元点群の重心近傍に重心を持つ部分領域を、物体領域に追加する領域の候補として選択している。しかし、追加する部分領域候補の選択方法はこれに限るものではない。例えば、ステップS204で設定する初期物体領域内の3次元点群の重心近傍に重心を持つ部分領域を選択してもよい。あるいは、3次元座標の重心ではなく、距離画像上における2次元座標の重心が近い部分領域を選択してもよい。
【0086】
[変形例1−2]
上記の説明では、物体領域に近接する度合いが高い部分領域を物体領域に追加する候補として選定している。しかし、追加候補の部分領域の選定方法はこれに限らない。例えば、面積すなわち領域に属する画素数が大きい部分領域を候補としてもよい。これは、面積の大きい領域ほど距離画像の計測ノイズなどのランダムな誤差の影響を受けにくいため、形状モデルとの距離の算出や物体領域更新後のモデル当て嵌めを高精度に行うことができるからである。
【0087】
[変形例1−3]
他の部分領域の候補選定方法としては例えば、距離画像上で対象物体が占める領域の情報を利用するものが挙げられる。具体的には、モデル当て嵌め工程にて算出した対象物体の位置姿勢に基づいて形状モデルを距離画像上に投影して、投影像が存在する領域を対象物体が占める領域とする。そして、各部分領域と対象物体が占める領域との重複率(すなわち両領域が重複する画素の数を各部分領域に属する画素の数で割った値)が高い順に、物体領域に追加する部分領域の候補として選定する。
【0088】
[変形例1−4]
さらには、追加候補の部分領域を選定する基準は1つである必然性はなく、複数の基準を組み合わせてもよい。例えば、変形例1−1から変形例1−3に説明した物体領域への近接度、面積、距離画像上の対象物体領域との重複率の3種類の評価値に重みをかけて加算した値に基づいて候補部分領域を選定する。
【0089】
[変形例2−1]
上記に説明した物体領域の更新工程(図5)では、物体領域と部分領域に関する形状モデルとの平均距離の大小を比較することによって部分領域を物体領域に追加する可否を判定している。しかし、可否の判定方法はこれに限らず、平均距離が小さい部分領域が優先的に追加されれば、他の方法を適用することができる。例えば、追加候補の部分領域群のうち、平均距離が最小の部分領域を物体領域に追加してもよい。
【0090】
[変形例2−2]
部分領域の追加可否を判定する基準は1つである必然性はなく、複数の基準を組み合わせてもよい。例えば、変形例1−1から変形例1−3に説明した物体領域への近接度、面積、距離画像上の対象物体領域との重複率、及び形状モデルとの平均距離の4種類の評価値に重みをかけて加算した値に基づいて追加可否を判定する。
【0091】
[変形例2−3]
また、部分領域は1つずつ追加する必然性はなく、複数の部分領域を同時に物体領域に追加してもよい。その場合、追加する部分領域の候補群から、評価値(例えば部分領域の3次元点群とモデルとの平均距離)が上位複数個の部分領域を物体領域に追加すべく選択する。
【0092】
[変形例3−1]
部分領域の分割方法は上記の説明に限るものでなく、任意の手法を用いることができることは言うまでもない。例えば、所定の評価基準に基づいて距離画像の部分領域を近似するパラメトリックな面の種類(種類ごとに面の数式表現が異なる)を選択する。選択した種類の面で距離画像の表す3次元形状を近似する。例えば、非特許文献8に記載のように、近似させてもよい。また、近似誤差の少ない領域を一続きの面として抽出してもよい。
【0093】
[変形例3−2]
あるいは、距離データに応じて距離画像を分割するのではなく、所定の分割方法で分割してもよい。例えば、1画素ごとに分割してもよいし、あるいは距離画像の縦横をそれぞれ10画素ごとに格子状に区切るなどしてもよい。
【0094】
[変形例4−1]
上記の説明では、初期の物体領域に含まれる部分領域として、最も距離値が小さい画素を含む部分領域を選択していた。しかし、初期物体領域を設定する方法はこれに限るものではなく、最も上方に配置されている物体上の領域である可能性のある部分領域を選択すればよい。例えば、距離値の平均が最小の部分領域を選択してもよいし、距離値が小さい順に上位m個(mは2以上の正の整数)の画素の平均距離値が最小の部分領域を選択してもよい。
【0095】
[変形例4−2]
また、初期の物体領域として距離値が小さい部分領域を優先するのは、物体を上方から撮像し、上方からロボットハンドで把持することを想定しているためである。しかし、その想定が異なれば、想定に適合した初期物体領域の設定方法を採用すればよい。例えば、特定色の物体の位置姿勢を推定するのであれば、距離画像のほかにカラー画像を撮影し、当該の特定色に最も色が合致するカラー画像上の領域に対応する距離画像上の領域を探索し、その距離画像上の領域を含む部分領域を初期物体領域とすればよい。
【0096】
[変形例4−3]
あるいは、対象物体の概略の位置姿勢が予め分かっていれば、各部分領域について3次元点群の座標と(10)で表される平均距離を算出し、平均距離が最小の部分領域を初期物体領域としてもよい。
【0097】
[変形例4−4]
変形4−3と同様に対象物体の概略の位置姿勢が予め分かっていれば、距離画像上で対象物体が占める領域の情報を利用して初期物体領域を決定することができる。具体的には、対象物体の位置姿勢の概略値に基づいて形状モデルを距離画像上に投影して、投影像が存在する領域を対象物体が占める領域とする。そして、各部分領域と対象物体が占める領域との重複率(すなわち両領域が重複する画素の数を各部分領域に属する画素の数で割った値)が最も高い部分領域を初期の物体領域として選ぶ。
【0098】
[変形例4−5]
また、初期の物体領域に含まれる部分領域の数は1つに限るものではなく、複数でもよい。例えば、距離値の平均が小さい順(変形例4−1の場合)、特定色との合致度が高い順(変形例4−2の場合)、平均距離が小さい順(変形例4−3の場合)、重複率の高い順(変形例4−4の場合)に所定の数の部分領域を物体領域として選択する。
【0099】
[変形例5]
前述の説明では(10)で定義される陰多項式モデルと3次元点群との平均距離を、部分領域を追加するか否か判定するなどの用途で評価値として用いている。しかしながら、判定基準とする評価値はこれに限るものではなく、物体のモデルと計測点群との乖離の度合いを示す値であればよい。例えば平均距離に替えて、(12)、(13)で表される評価値を用いてもよい。
【0100】
【数12】

【0101】
ただし、Nは評価値の算出対象とする距離画像上の領域内の3次元点の数で、Φは当該領域内の3次元点群である。
【0102】
【数13】

【0103】
ただし、Nは評価値の算出対象とする距離画像上の領域内の3次元点の数で、Φは当該領域内の3次元点群である。
【0104】
これらの評価値DRMS(12)、Daverage(13)は形状モデルと3次元点群との面の位置の一致度合いを表す。
【0105】
[第2の実施形態]
前述の実施形態では、ある部分領域を物体領域に追加する前に、その部分領域が対象物体に相当する領域か否かを判定し、判定結果が真ならば、その部分領域を以後一貫して物体領域の一部としていた。本実施形態では、物体領域に追加済みのある部分領域が非対象物体に相当する部分領域であるか否か判定し、判定結果が真ならば、その部分領域を物体領域から削除する構成を説明する。
【0106】
図7は、本実施形態の装置に関する処理全体の流れを示すフローチャートである。
【0107】
図7におけるステップS701からS704の処理は、それぞれステップS201からステップS204と同じ内容である。ステップS705はステップS205と同様であるが、物体の位置姿勢を算出した段階で、(10)で表される計測点と物体モデルとの平均距離を物体領域に関して算出し、メモリ102に格納する。この際、前回の物体モデル当て嵌め処理で算出してメモリ102に格納した平均距離データを上書きせずに、メモリ102内の別の記憶領域にコピーしておく。
【0108】
ステップS706では、物体領域に含まれる部分領域を更新する。本ステップの処理においては、物体領域に部分領域が追加されるか、あるいは追加済みの部分領域が物体領域から除外される。
【0109】
ステップS707では、ステップS706にて物体領域から部分領域が除外されたか否か判定する。除外されたと判定した場合は、物体の位置姿勢推定処理全体を終了する。ここで、処理を終了するのは、対象物体に相当する部分領域はすべて物体領域として選択済みであり、直近に追加した部分領域が非対象物体に相当すると想定するからである。一方、ステップS707にて部分領域が除外されていないと判定した場合は、ステップS705に戻り、物体領域の3次元点群に物体の形状モデルを当て嵌めることによって対象物体の位置姿勢を更新する。
【0110】
図12は、ステップS706における物体領域更新処理の流れを示すフローチャートである。
【0111】
ステップS801では、物体領域の3次元点群と物体モデルとの平均距離について、直近および前回の物体モデル当て嵌め工程(ステップS705)で算出した値を比較し、増加していればステップS802に進む。一方、増加していないと判定すれば、ステップS803へ進む。
【0112】
ステップS802では、直近に物体領域に追加した部分領域を物体領域から取り除く。すなわち、物体領域に含まれる部分領域群を表す識別番号のリストから、取り除く部分領域の識別番号を削除する。
【0113】
ステップS803では、物体領域に含まれない部分領域の中から選んだ部分領域を物体領域に追加する。この処理は図5のフローチャートに示す流れと同じである。
【0114】
以上に説明した処理を行うことにより、物体領域に追加すべく選択した部分領域の妥当性、すなわち当該部分領域が対象物体に相当する度合いを、物体モデルを当て嵌めたときの当て嵌め誤差で確かめることができる。その結果、第1の実施形態のように部分領域ごとの評価値で追加する部分領域を選択する構成に比べ、誤って非対象物体に相当する部分領域を物体領域として選択する危険性が軽減され、より正確に物体領域を決定することが可能である。
【0115】
なお、上記の説明では追加済みの部分領域を削除するか否かの判定基準として(10)で表される平均距離を用いた。しかし、判定基準はこれに限るものではなく、物体モデルの当て嵌め誤差に比例して増加する値であり、かつ物体領域のサイズに依存しないように規格化された値ならば任意の値を用いることができる。例えば、ステップS403(図4)の処理における位置姿勢更新後の誤差ベクトルの大きさを、物体領域に含まれる画素で平均化した値を基準値としてもよい。
【0116】
また、上記の説明では部分領域を物体領域から削除した場合に処理全体を終了しているが、さらに物体領域の更新を継続してもよい。この場合、除外した部分領域が次回の物体領域更新工程で再び物体領域に加えられて無限ループに陥らないように、除外した部分領域は物体領域として追加する候補から除外する。あるいは物体領域に追加する部分領域の候補の中で選択順位を下げる(例えば最下位に設定する)という処理を追加する。
【0117】
なお、本実施形態は上記に限らず変形例が存在する。
【0118】
[変形例1]
上記の説明では、部分領域を物体領域から除外するか否か判定する基準を平均距離の増減としている。しかし、判定基準はこれに限らず、部分領域を追加する前後でのモデル当て嵌めの精度の変化が評価できればよい。例えば、直近に物体領域に追加した部分領域に関する平均距離と、物体領域に関する平均距離とを比較し、前者が後者以上であれば直近に追加した部分領域を削除すると判定する(逆に、前者が後者未満であれば部分領域を削除しない)。
【0119】
[変形例2]
あるいは、物体領域に関する平均距離に替えて、物体領域から直近に追加した部分領域を除外した領域に関する平均距離を用いてもよい。
【0120】
[変形例3]
さらに、平均距離に替えて、第1の実施形態の変形例4で説明した評価値を用いて部分領域を除外するか否か判定してもよい。
【0121】
[第3の実施形態]
前述の実施形態では、陰多項式で表現した物体の形状モデルを物体領域の3次元点群に当て嵌めることによって、物体の位置姿勢を推定している。しかしながら、位置姿勢の推定方法はこれに限るものではなく、物体の形状モデルおよび物体領域の3次元点群の情報に基づくものであれば、任意の方法を用いることが出来る。
【0122】
本実施形態では、形状モデルとして三角形の平面パッチ群から構成されるパッチモデルとし、このモデルと物体領域の3次元点群との間で対応点の対を求める。対応点対間の距離の和が最小になるように物体の位置姿勢を最適化する構成を説明する。
【0123】
本実施形態の処理全体の流れは図2のフローチャートと同様である。ただし、ステップS201で記憶装置104から入力する形状モデルデータは、三角形パッチの各頂点の識別番号と座標、各三角形パッチの識別番号とそのパッチを構成する頂点の識別番号から構成されるものとする。
【0124】
また、位置姿勢の推定工程(ステップS403、図4)では、まず物体領域の3次元点群およびモデル上の点の組からなる最近傍点対を求める。求めた最近傍点対はメモリ102に最近傍点対のリストとして記憶される。
【0125】
具体的には、まず物体領域の3次元点群から最近傍点対の候補となるサンプル点を選択する。サンプル点は、距離画像上の物体領域内の1画素ごとに選択してもよいし、所定数の画素(例えば5画素)ごとに画像領域を間引きして選択してもよい。次に、サンプル点¬pに対応する形状モデル上の最近傍点を求める。サンプル点¬pと3頂点¬r,¬r,¬rからなる三角形パッチtとの間の最小距離dは(14)のように表される。
【0126】
【数14】

【0127】
ただし、u∈[0,1],v∈[0,1],w∈[0,1]である。形状モデルTがN個の三角形パッチt,…,tから構成されるとすると、サンプル点¬pと形状モデルT上の最近傍点との間の距離は(15)のように表される。
【0128】
【数15】

【0129】
すなわちサンプル点の最近傍点を求めるには、サンプル点と各三角形パッチとの最小距離および最近傍点の座標を表す係数の組(u,v)を算出する。すべての三角形パッチの中でサンプル点との最小距離が最小となる三角形パッチと係数の組(u,v)を探索する。以上に説明した最近傍点対の探索処理の結果は、サンプル点の3次元座標、形状モデル上の最近傍点が存在する三角形パッチの識別番号、最近傍点の座標を表す係数(u,v)、の組を全てのサンプル点に対して羅列したリストとしてメモリ102に記録される。
【0130】
次に、最近傍点対リストに登録された最近傍点対間の距離の総和が最小になるようにするモデルの位置姿勢を算出し、結果を対象物体の位置姿勢とする。距離画像計測装置の撮像部の座標系における3次元座標は、対象物体の位置姿勢sによって、対象物体の座標系における3次元座標(x,y,z)に変換することが出来る。ここで、計測対象物体の位置姿勢の自由度は6自由度である。すなわちsは6次元ベクトルであり、計測対象物体の位置を表す3つの要素と、姿勢を表す3つの要素からなる。いま、ステップS401で算出した対象物体の概略の位置姿勢により、撮像部座標系のある点が対象物体座標系の点(x,y,z)に変換されるとする。(x,y,z)は対象物体の位置姿勢により変化するものであり、(x,y,z)の近傍で1次のテイラー展開によって(16)のように近似できる。
【0131】
【数16】

【0132】
メモリ102に格納されたある最近傍点対の形状モデル側最近傍点が存在する三角形パッチ面の対象物体座標系における方程式をax+by+cz=e(a+b+c=1,a,b,c,eは定数)とする。正しいsによって変換される(x,y,z)は、平面の方程式ax+by+cz=e(a+b+c=1)を満たすと仮定する。(16)を平面の方程式に代入すると(17)が得られる。
【0133】
【数17】

【0134】
ただし、q=ax+by+cz(定数)とした。
【0135】
(17)は最近傍点対すべてについて成り立つため、(18)のようなΔsに関する線形連立方程式が成り立つ。
【0136】
【数18】

【0137】
ここで、(18)を(19)のように表す。
【0138】
【数19】

【0139】
(19)をもとに、行列Jの一般化逆行列(J・J)−1・Jを用いてΔsを求める。しかし、距離画像の計測点群に含まれるノイズなどによる外れ値が多いため、次に述べるようなロバスト推定手法を用いる。一般に、外れ値である計測点群データでは誤差e−qが大きくなる。そのため、(18)、(19)の連立方程式に対する寄与度が大きくなり、その結果得られるΔsの精度が低下してしまう。そこで、誤差e−qが大きいデータには小さな重みを与え、誤差e−qが小さいデータには大きな重みを与える。重みは例えば(20)に示すようなTukeyの関数により与える。
【0140】
【数20】

【0141】
cは定数である。なお、重みを与える関数はTukeyの関数である必要はなく、例えばHuberの関数など、誤差の大きいデータには小さな重みを与え、誤差の小さいデータには大きい重みを与える関数であればなんでもよい。
【0142】
各データに対応する重みをwとする。ここで(21)のように重み行列Wを定義する。
【0143】
【数21】

【0144】
重み行列Wは、対角成分以外はすべて0の正方行列であり、対角成分には重みwが入る。Nは最近傍点対の数である。
【0145】
この重み行列Wを用いて、(19)を(22)のように変形する。
【0146】
【数22】

【0147】
(23)のように(22)を解くことにより補正値Δsを求める。
【0148】
【数23】

【0149】
このようにして算出した補正値Δsによりモデルの位置・姿勢の概略値を補正し、結果をメモリ102に格納する。
【0150】
なお、上述した位置姿勢の最適化計算手法はGauss−Newton法に基づくものであるが、これに限らずLevenberg−Marquardt法や最急降下法などを用いてもよい。
【0151】
ステップS404では、収束判定を行い、収束していれば位置姿勢の推定処理を終了し、そうでなければステップS402に戻る。収束判定では、補正値Δsがほぼ0である場合や、誤差ベクトルEの二乗和の補正前と補正後の差がほぼ0である場合に収束したと判定する。
【0152】
物体領域の更新処理は第1の実施形態と同様であるが、部分領域を追加するか否かを判定するための評価値は(10)に表される平均距離ではなく、RMS誤差(誤差ベクトルの要素の二乗和をサンプル点数で除算した値の平方根)を用いる。物体領域に関する誤差ベクトルはステップS403で算出済みである。物体領域に追加する候補の部分領域に関する誤差ベクトルは、上述の物体領域の場合と同様に算出する。
【0153】
[その他の実施形態]
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。また、そのプログラムをコンピュータ読み取り可能な記録媒体に記録して提供してもよい。
【産業上の利用可能性】
【0154】
本発明は、ロボットと物体との間の相対的な位置姿勢を推定するのに利用することができる。

【特許請求の範囲】
【請求項1】
物体を撮影した距離画像上で前記物体に相当する物体領域に基づいて、該物体の位置姿勢を計測する位置姿勢計測方法であって、
分割手段が、前記距離画像の領域を部分領域に分割する分割工程と、
設定手段が、前記分割した複数の部分領域のうち少なくとも1つの部分領域を前記物体領域として設定する設定工程と、
推定手段が、前記物体領域に前記物体の形状モデルを当て嵌めて、前記物体の位置姿勢を推定する推定工程と、
更新手段が、前記当て嵌めの誤差に基づいて、前記物体領域を更新する更新工程と
を有することを特徴とする位置姿勢計測方法。
【請求項2】
取得手段が、前記距離画像を計測して取得する取得工程を更に有することを特徴とする請求項1に記載の位置姿勢計測方法。
【請求項3】
前記分割工程では、距離画像をエッジによって囲まれた閉領域ごとに分割することを特徴とする請求項1又は2に記載の位置姿勢計測方法。
【請求項4】
入力手段が、物体の位置姿勢の概略値を入力する入力工程を更に有し、
前記推定工程では、前記概略値を演算により繰り返し補正することを特徴とする請求項1乃至3の何れか1項に記載の位置姿勢計測方法。
【請求項5】
前記設定工程では、前記距離画像の最も上方にある部分領域を前記物体領域として設定することを特徴とする請求項1乃至4の何れか1項に記載の位置姿勢計測方法。
【請求項6】
前記設定工程では、前記分割した複数の部分領域のうち最も距離の近い部分領域を前記物体領域として設定することを特徴とする請求項1乃至5の何れか1項に記載の位置姿勢計測方法。
【請求項7】
前記更新工程では、前記当て嵌めの誤差に基づいて、前記物体領域に含まれていない部分領域を該物体領域に追加することを特徴とする請求項1乃至6の何れか1項に記載の位置姿勢計測方法。
【請求項8】
前記更新工程では、前記当て嵌めの誤差に基づいて、前記物体領域に含まれている部分領域を該物体領域から削除することを特徴とする請求項1乃至7の何れか1項に記載の位置姿勢計測方法。
【請求項9】
前記更新工程では、前記推定工程の前後における前記当て嵌めの誤差が予め定められたの閾値よりも大きい場合に、前記物体領域の直近に追加した部分領域を該物体領域から削除する
ことを特徴とする請求項8に記載の位置姿勢計測方法。
【請求項10】
前記形状モデルは陰多項式により表現されることを特徴とする請求項1乃至7の何れか1項に記載の位置姿勢計測方法。
【請求項11】
請求項1乃至10の何れか1項に記載の位置姿勢計測方法をコンピュータに実行させることを特徴とするプログラム。
【請求項12】
物体を撮影した距離画像上で前記物体に相当する物体領域に基づいて、該物体の位置姿勢を計測する位置姿勢計測装置であって、
前記距離画像の領域を部分領域に分割する分割手段と、
前記距離画像の領域を分割した複数の部分領域のうち少なくとも1つの部分領域を前記物体領域として設定する設定手段と、
前記物体領域に前記物体の形状モデルを当て嵌めて、前記物体の位置姿勢を推定する推定手段と、
前記当て嵌めの誤差に基づいて、前記物体領域を更新する更新手段と、
を備えることを特徴とする位置姿勢計測装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2011−174878(P2011−174878A)
【公開日】平成23年9月8日(2011.9.8)
【国際特許分類】
【出願番号】特願2010−40593(P2010−40593)
【出願日】平成22年2月25日(2010.2.25)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】