(58)【調査した分野】(Int.Cl.,DB名)
対象物体までの距離値データを計測して当該距離値データの集合である距離点群を取得する距離センサを用いて、可動部を含む対象物体の動きを各時刻の距離点群として時系列に取得し、当該取得した各時刻の距離点群を記憶手段に記憶する時系列距離点群取得ステップと、
前記各時刻の距離点群からそれぞれ複数の面を検出し、当該検出した各時刻の複数の面を各時刻の面群として前記記憶手段に記憶する面検出ステップと、
前記各時刻の面群から第1の時刻の面群及び第2の時刻の面群を抽出し、当該抽出した前記第1の時刻の面群に含まれる面と前記第2の時刻の面群に含まれる面とを比較し、当該比較結果に基づいて同一の面同士を時刻間で対応付けする面対応付けステップと、
前記対応付けされた面の中から第1の面を選定する第1の面選定ステップと、
前記対応付けされた面の中から前記第1の面と一定時間の間同時に検出された第2の面を選定する第2の面選定ステップと、
前記一定時間における前記第1の面の姿勢変化と前記第2の面の姿勢変化を比較する姿勢変化比較ステップと、
前記姿勢変化比較ステップにおける比較の結果、前記一定時間における前記第1の面の姿勢変化及び前記第2の面の姿勢変化が同一であった場合には、前記第2の面は前記第1の面と同一の前記可動部を構成する面であると判定する判定ステップと、
前記姿勢変化比較ステップにおける比較の結果、前記一定時間における前記第1の面の姿勢変化及び前記第2の面の姿勢変化が同一でなかった場合には、前記第2の面選定ステップからの処理を再び繰り返す繰り返し処理ステップと、を有する、
ことを特徴とする3次元情報取得方法。
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上述した方法は、「直方体」等の可動部の形状情報を予め入力する必要があった。このため、可動部の形状情報を事前に必要とせずに、任意の形状を有する可動部に対して適用できないという問題があった。
【0005】
本発明は、このような問題を解決するためになされたものであり、可動部の形状情報を事前に必要とせずに、任意の形状を有する可動部の3次元情報を取得可能な3次元情報取得方法及び3次元情報取得装置を提供することを目的とするものである。
【課題を解決するための手段】
【0006】
一実施の形態に係る3次元情報取得方法は、対象物体までの距離値データを計測して当該距離値データの集合である距離点群を取得する距離センサを用いて、可動部を含む対象物体の動きを各時刻の距離点群として時系列に取得し、当該取得した各時刻の距離点群を記憶手段に記憶する時系列距離点群取得ステップと、前記各時刻の距離点群からそれぞれ複数の面を検出し、当該検出した各時刻の複数の面を各時刻の面群として前記記憶手段に記憶する面検出ステップと、前記各時刻の面群から第1の時刻の面群及び第2の時刻の面群を抽出し、当該抽出した前記第1の時刻の面群に含まれる面と前記第2の時刻の面群に含まれる面とを比較し、当該比較結果に基づいて同一の面同士を時刻間で対応付けする面対応付けステップと、前記対応付けされた面の中から第1の面を選定する第1の面選定ステップと、前記対応付けされた面の中から前記第1の面と一定時間の間同時に検出された第2の面を選定する第2の面選定ステップと、前記一定時間における前記第1の面の姿勢変化と前記第2の面の姿勢変化を比較する姿勢変化比較ステップと、前記姿勢変化比較ステップにおける比較の結果、前記一定時間における前記第1の面の姿勢変化及び前記第2の面の姿勢変化が同一であった場合には、前記第2の面は前記第1の面と同一の前記可動部を構成する面であると判定する判定ステップと、前記姿勢変化比較ステップにおける比較の結果、前記一定時間における前記第1の面の姿勢変化及び前記第2の面の姿勢変化が同一でなかった場合には、前記第2の面選定ステップからの処理を再び繰り返す繰り返し処理ステップと、を有する、ことを特徴とする。
【0007】
これによって、可動部を含む物体の動きを時系列ごとに複数の面として記録し、記録した複数の面同士を時刻間で比較して対応付け、姿勢変化が互いに同一の面を同一の可動部を構成する面であると判定することによって、物体の可動部の表面や裏面を特定することができる。このため、可動部の形状情報を事前に必要とせずに、任意の形状を有する可動部の3次元情報を取得することができる。
【0008】
また、前記判定ステップにおいて同一の前記可動部を構成する面であると判定された面の集合に基づいて、当該可動部の可動軸を推定する可動軸推定ステップを更に有する、ようにしてもよい。これによって、可動部の可動軸を推定することができる。
【0009】
さらにまた、前記姿勢変化比較ステップは、前記一定時間における2つの時刻間の前記第1の面の位置及び姿勢の変化をそれぞれ示す平行移動ベクトル及び回転行列を計算し、前記2つの時刻のうちの1つの時刻の前記第2の面の位置及び姿勢に対して前記計算した平行移動ベクトル及び回転行列を作用させて前記第2の面の仮想的な位置及び姿勢を計算し、当該計算した前記第2の面の仮想的な位置及び姿勢と、前記2つの時刻のうちの他の1つの時刻の前記第2の面の位置及び姿勢とを比較する、ようにしてもよい。これにより、同時に移動していると考えられる2つの面を容易に判定することができる。
【0010】
また、前記面対応付けステップは、前記各時刻の面群から第1の時刻の面群及び第2の時刻の面群を抽出し、当該抽出した前記第1の時刻の面群に含まれる面と前記第2の時刻の面群に含まれる面とを比較し、当該比較の結果、同一の面であると判定した場合には同一の識別番号をそれら面に対して割当て、同一の面でないと判定した場合にはそれら面に対して互いに異なる識別番号を割当て、前記割当てられた識別番号ごとに前記各時刻において当該識別番号の面が検出されたか否かを示す面追跡行列を生成して前記記憶手段に記憶し、前記第1の面選定ステップは、前記面追跡行列を参照して、前記対応付けされた面の中から最も長期間にわたって検出された前記第1の面を選定し、前記第2の面選定ステップは、前記面追跡行列を参照して、前記対応付けされた面の中から前記第1の面と一定時間の間同時に検出された第2の面を選定する、ようにしてもよい。これにより、どの面がどの期間に存在していたかを容易に調べることができ、また、同期間に存在していた面を容易に探索することができる。
【0011】
さらにまた、前記面検出ステップは、領域拡張法を利用することにより、前記各時刻の距離点群からそれぞれ複数の面を検出する、ようにしてもよい。これにより、平面検出法を適用して面を検出する場合と比較して、ある程度の曲率を持った面であっても検出することができる。
【0012】
また、前記面対応付けステップは、前記各時刻の面群の各面に対して、各面の輪郭線情報に基づく特徴量ヒストグラムを前記各時刻の距離点群から計算し、当該特徴量ヒストグラムを比較することにより、前記抽出した前記第1の時刻の面群に含まれる面と前記第2の時刻の面群に含まれる面とを比較する、ようにしてもよい。これにより、特徴量ヒストグラム同士の比較により、2つの面同士の比較を行うことができる。
【0013】
他の一実施の形態に係る3次元情報取得装置は、対象物体までの距離値データを計測して当該距離値データの集合である距離点群を取得する距離センサと、記憶手段と、を備える3次元情報取得装置であって、可動部を含む対象物体の動きを各時刻の距離点群として時系列に取得し、当該取得した各時刻の距離点群を前記記憶手段に記憶する時系列距離点群取得手段と、前記各時刻の距離点群からそれぞれ複数の面を検出し、当該検出した各時刻の複数の面を各時刻の面群として前記記憶手段に記憶する面検出手段と、前記各時刻の面群から第1の時刻の面群及び第2の時刻の面群を抽出し、当該抽出した前記第1の時刻の面群に含まれる面と前記第2の時刻の面群に含まれる面とを比較し、当該比較結果に基づいて同一の面同士を時刻間で対応付けする面対応付け手段と、前記対応付けされた面の中から第1の面を選定する第1の面選定手段と、前記対応付けされた面の中から前記第1の面と一定時間の間同時に検出された第2の面を選定する第2の面選定手段と、前記一定時間における前記第1の面の姿勢変化と前記第2の面の姿勢変化を比較する姿勢変化比較手段と、前記姿勢変化比較手段による比較の結果、前記一定時間における前記第1の面の姿勢変化及び前記第2の面の姿勢変化が同一であった場合には、前記第2の面は前記第1の面と同一の前記可動部を構成する面であると判定する判定手段と、前記姿勢変化比較手段による比較の結果、前記一定時間における前記第1の面の姿勢変化及び前記第2の面の姿勢変化が同一でなかった場合には、前記第2の面選定手段からの処理を再び繰り返す繰り返し処理手段と、を有する、ものである。
【0014】
これによって、可動部を含む物体の動きを時系列ごとに複数の面として記録し、記録した複数の面同士を時刻間で比較して対応付け、姿勢変化が互いに同一の面を同一の可動部を構成する面であると判定することによって、物体の可動部の表面や裏面を特定することができる。このため、可動部の形状情報を事前に必要とせずに、任意の形状を有する可動部の3次元情報を取得することができる。
【発明の効果】
【0015】
本発明によれば、可動部の形状情報を事前に必要とせずに、任意の形状を有する可動部の3次元情報を取得可能な3次元情報取得方法及び3次元情報取得装置を提供することを目的とすることができる。
【発明を実施するための形態】
【0017】
実施の形態1.
図1に、本実施の形態に係る3次元情報取得装置100の構成例を示す。同図に示すように、本実施の形態に係る3次元情報取得装置100は、距離センサ10と、時系列計測距離データ記憶部11と、面群検出部12と、面基準座標系計算部13と、時系列面群基準座標記憶部14と、面識別番号割当部15と、同一面特定部16と、面追跡行列生成部17と、代表面選定部18と、2面同時検出時刻特定部19と、2座標間の姿勢変化計算部20と、2面間マッチング評価部21と、可動軸推定部22と、記憶部30と、を備えている。
【0018】
なお、
図1に示した各部(時系列計測距離データ記憶部11、時系列計測距離データ記憶部11、面群検出部12、面基準座標系計算部13、時系列面群基準座標記憶部14、面識別番号割当部15、同一面特定部16、面追跡行列生成部17、代表面選定部18、2面同時検出時刻特定部19、2座標間の姿勢変化計算部20、2面間マッチング評価部21、可動軸推定部22)の少なくとも一部は、独立した装置として実現してもよい。またこれら各部を、CPU(Central Processing Unit)、MPU(Micro Processing Unit)などのプロセッサを含むコンピュータシステムにインストールし、1又は複数のプログラムを実行させることで、その機能を実現するソフトウェアとして実現してもよい。
【0019】
距離センサ10は、距離センサ10の視点位置からの対象物体までの距離値データを計測し、この距離値データの集合である距離点群を取得する。距離センサ10としては、例えば、TOF(Time Of Flight)方式のカメラ、ステレオカメラ、Microsoft社製のKinect(登録商標)などを用いることができる。記憶部30は、例えば、メモリやハードディスクなどのデータ記憶手段である。
【0020】
時系列計測距離データ記憶部11は、距離センサ10により取得した距離点群である計測距離データを、当該距離点群を取得した時刻と対応付けて記憶部30に記憶する。なお、時系列計測距離データ記憶部11は、時系列距離点群取得手段の一例に対応する。
【0021】
面群検出部12は、各時刻フレームの距離点群からそれぞれ複数の面を検出し、検出した複数の面を面群として記憶部30に記憶する。なお、面群検出部12は、面検出手段の一例に対応する。
【0022】
面基準座標系計算部13は、各面に属する距離点群に基づいて、各面の基準座標及びその基準座標系を計算する。また、時系列面群基準座標記憶部14は、面基準座標系計算部13により計算した各面の基準座標及びその基準座標系を、当該各面の距離点群を取得した時刻と対応付けて記憶部30に記憶する。
【0023】
面識別番号割当部15は、面群の各面に対して一意の識別番号をそれぞれ割当てる。同一面特定部16は、ある入力面と同一の面を特定する。面追跡行列生成部17は、どの面がいつからいつまで検出されたかを記述した面追跡行列を生成して、当該面追跡行列を記憶部30に記憶する。なお、面識別番号割当部15、同一面特定部16、面追跡行列生成部17は、面対応付け手段の一例に対応する。
【0024】
代表面選定部18は、検出された全ての面の中から注目する代表面を選定する。なお、代表面選定部18は、第1の面選定手段の一例に対応する。2面同時検出時刻特定部19は、入力された2つの面が同時に検出された時刻を特定する。
【0025】
2座標間の姿勢変化計算部20は、入力された面について、2つの時刻における面の基準座標及び基準座標系に基づき、2つ時刻間での基準座標間の平行移動ベクトル及び回転行列を計算する。2面間マッチング評価部21は、入力された2つの面を比較してその一致度(マッチング)を評価する。なお、2座標間の姿勢変化計算部20及び2面間マッチング評価部21は、姿勢変化比較手段及び判定手段の一例に対応する。
【0026】
可動軸推定部22は、同一の可動部を構成する面であると判定された面の集合に基づいて、その可動部の可動軸を推定する。なお、可動軸推定部22は、可動軸推定手段の一例に対応する。
【0027】
図2及び3は、3次元情報取得装置100により実行される3次元情報取得方法の処理手順を示すフローチャートである。なお、本実施の形態では、図に示すフローチャートは、CPUが各部の機能を実現するプログラムを実行することにより実現される。
【0028】
S101:3次元情報取得装置100は、人又はロボットが物体の可動部を操作する様子を、距離センサ10により計測する。距離センサ10は、時刻ごとに各時刻フレームの距離点群を取得する。時系列計測距離データ記憶部11は、距離センサ10により取得した距離点群である計測距離データを、当該距離点群を取得した時刻と対応付けて記憶部30に記憶する。
【0029】
図4に、物体の可動部の一例としての冷蔵庫の扉を示す。
図4では、人が冷蔵庫の扉を開ける様子を示す。
図4の各図は各時刻における様子を示しており、左図は扉を開ける前の状態、中央図は扉を開ける途中の状態、右図は扉を開けた後の状態をそれぞれ示す。距離センサ10により扉が開けられる様子が計測されて、各時刻における距離点群が取得される。
【0030】
なお、
図4において、実線及び破線により囲って示す範囲は、後述する処理によって検出される面群の例を示す。丸により囲って示す数字1〜4は、後述する処理によって割当てられる面の識別番号の例を示す。また、実線により囲って示す範囲は、後述する処理によって検出される可動部の面群の例を示す。破線により囲って示す範囲は、後述する処理によって検出される可動部ではない面群の例を示す。
【0031】
3次元情報取得装置100は、記憶部30に記憶された時刻0〜Tの各時刻フレームにおける距離点群に対して、以下のS102〜S104に示す処理をそれぞれ実行する。
S102:面群検出部12は、同一の時刻フレームにおける距離点群に基づいてNt個の面を検出する。これらNt個の面からなる集合を面群と称する。また、本実施の形態では、面群検出部12は、同一の時刻フレームにおける距離点群を、Nt個のグループに対して分類する。これらNt個のグループは、Nt個の面にそれぞれ対応する。即ち、同一のグループに属する距離点群は、同一の面に属する。面群検出部12は、各時刻における距離点群がそれぞれ属する複数のグループ(即ち、各時刻において検出する複数の面に対応する。)を記憶部30に記憶する。
【0032】
図5及び6を参照して、面群検出部12による処理の具体例を説明する。なお、面群検出部12による処理はこれに限定されず、距離点群から面を検出する他の周知の処理を実行するものとしてもよい。また、距離点群を分類する他の周知の処理を実行するものとしてもよい。
【0033】
本実施の形態では、面群検出部12は、Region Growing(領域拡張法)と呼ばれる手法を利用して、距離点群からの面の検出と距離点群の分類を行う。当該手法は、ある基点を選択した後に、その基点の近傍において基点と性質が近いものは同じグループに属するとして分類してゆき、同一グループの領域を拡張していく。このような手法を採用することにより、平面検出法を適用して面要素を抽出する手法と比較して、ある程度の曲率を有する面に対しても適用できるという利点を奏する。
【0034】
面群検出部12は、同一の時刻フレームにおける距離点群について、ある1つの距離点の距離値d
1とその近傍の距離点の距離値d
2について、それぞれの距離点の法線ベクトルであるn
1及びn
2を計算する。そして、面群検出部12は、類似する法線ベクトルを互いに有し、かつ、距離値が互いに大きく変化しない距離点を同一のグループに分類する。具体的には、面群検出部12は、近傍の距離点について、距離点間の距離及び法線ベクトルの向きの類似を判定する以下の式1を満たす場合に、同一のグループに分類する。なお、D
Threshold及びC
Thresholdについては、予め適当な値が設定される。
【数1】
【0035】
図5の左図は計測対象の物体を例示し、右図は距離センサ10により取得された距離点群を例示する。
図6は、
図5の右図に示した距離点群に基づいて面群検出部12により計算された法線を示す。類似する法線ベクトルを有する距離点が同一のグループに分類されて、同一のグループに属する距離点が同一の平面に属する。
【0036】
S103:面基準座標系計算部13は、同一の時刻の時刻フレームにおいて検出されたNt個の面について、それぞれNt個の基準座標及びその基準座標系を計算する。
【0037】
面基準座標系計算部13による処理の具体例を説明する。面基準座標系計算部13は、同一時刻の同一グループの距離点群について、当該距離点群に含まれる距離点の距離値の平均値(3次元位置)を計算し、この平均値を基準座標として計算する。また、面基準座標系計算部13は、同一時刻の同一グループの距離点群について、当該距離点群に含まれる距離点の距離値(3次元位置)について主成分分析を行い3つの固有ベクトルを計算する。面基準座標系計算部13は、基準座標を原点とし、主成分分析により得た3つの固有ベクトルをX、Y、Z軸とする面基準座標系を得る。なお、面基準座標系計算部13による処理はこれに限定されず、距離点群に基づいて各面の基準座標及びその基準座標系を計算する他の周知の処理を実行するものとしてもよい。
【0038】
時系列面群基準座標記憶部14は、面基準座標系計算部13により計算した各面の基準座標及びその基準座標系を、当該各面の距離点群を取得した時刻と対応付けて記憶部30に記憶する。
【0039】
ここまでの処理により、記憶部30には、各時刻における距離点群と、各時刻における面群と、各時刻における各面の基準座標及び基準座標系と、が記憶される。本実施の形態では、記憶部30に記憶された時系列の面群S
tを、以下に示す。
s
it∈S
t={s
1t,s
2t,...,s
ntt}
ここで、s
itは、時刻tの時刻フレームに含まれるi番目の面を示す。S
tは、時刻tの時刻フレームに含まれる面群の集合を示す。n
tは、時刻tの時刻フレームにおいて検出された面の総数を示す。
【0040】
S105:面識別番号割当部15は、まず、時刻0の時刻フレームにおいて検出された面群の各面に対して、一意に識別可能な識別番号をそれぞれ割当てる。
【0041】
3次元情報取得装置100は、以下、時刻0から開始して、時刻t及び時刻t+1の時刻フレームに含まれる面群について、以下のS106〜S108に示す処理をそれぞれ順に実行する。
【0042】
S106:3次元情報取得装置100は、時刻tの面群S
tと時刻t+1の面群S
t+1を記憶部30から読み出す。
S107:同一面特定部16は、時刻tの面群S
t={s
1t,s
2t,...,s
ntt}に含まれる面と、時刻t+1の面群S
t={s
1t+1,s
2t+1,...,s
ntt+1}に含まれる面とを比較し、同一の面を特定する。同一面特定部16による比較の結果、時刻t+1の面群S
t+1において、"時刻tの面群S
tに含まれる面"と同一の面が存在する場合には、面識別番号割当部15は、時刻t+1の面群S
t+1におけるその同一の面に対して、時刻tの面群S
tにおける面の識別番号と同一の識別番号を割当てる。他方で、時刻t+1の面群S
t+1において、"時刻tの面群S
tに含まれない面"が存在する場合には、面識別番号割当部15は、時刻t+1の面群S
t+1における"時刻tの面群S
tに含まれない面"に対して、新たな識別番号を割当てる。
【0043】
同一面特定部16による処理の具体例を説明する。同一面特定部16は、各面の輪郭線情報に基づく特徴量ヒストグラムを計算し、当該特徴量ヒストグラムを比較することにより、時刻tの面群S
tに含まれる面と時刻t+1の面群S
t+1に含まれる面との間で、同一面を特定することができる。この特徴量ヒストグラムは、Shape Context(形状コンテキスト)と呼ばれる。即ち、異なる時刻間において同一面を特定できるため、異なる時刻間にわたって同一面を追跡することができる。
【0044】
同一面特定部16によるShape Contextの計算方法をより詳細に説明する。まず、同一面特定部16は、各面に属する距離点群について主成分分析を行い第1主成分と第2主成分を計算する。同一面特定部16は、第1主成分と第2主成分にそれぞれ対応する固有ベクトルが張る2次元平面を求める。同一面特定部16は、この2次元平面上に距離点群を2次元射影する。そして、同一面特定部16は、この2次元平面の輪郭部分に位置する点のみを抽出する。この処理は、距離点群における近傍探索を行ったときに、近傍の数が一定以下であった距離点のみを残すことにより実現する。
【0045】
そして、この輪郭情報に対してShape Contextと同様の方法に特徴量ヒストグラムを生成する。即ち、同一面特定部16は、面の中心から放射状に区切った平面領域において、輪郭点が存在する区切り(bin)には、距離点の数だけの投票を行い、この投票結果から、中心からの距離rと水平線に対するbinの角度θを軸とする2次元ヒストグラムを生成する。なお、このヒストグラムのr軸方向のbin数は面の大きさに依存した値になる。このようにして生成した2次元ヒストグラムを、特徴量ヒストグラムと称する。
【0046】
図7は、特徴量ヒストグラムの生成過程を説明する図である。同図(1)は3次元の面を示し、同図(2)は2次元平面上に射影した面を示し、同図(3)は特徴量ヒストグラムを示す。なお、同一面特定部16による処理はこれに限定されず、ある入力面と同一の面を特定する他の周知の処理を実行するものとしてもよい。
【0047】
S108:面追跡行列生成部17は、面追跡行列を生成して記憶部30に記憶する。面追跡行列は、識別番号ごとに各時刻において当該識別番号の面が検出されたか否かを示す行列である。
図8に、面追跡行列の例を示す。図において、各時刻において各識別番号の面が検出されなかった場合には0を、検出された場合には1を記入している。なお、面追跡行列生成部17による処理はこれに限定されず、各面が検出された時間を記述する他の周知のデータ形式の情報を計算して記憶するものとしてもよい。
【0048】
S109:代表面選定部18は、記憶部30に記憶された面追跡行列を参照して、第1の面の一例としての代表面S
refを選定する。
【0049】
代表面選定部18による処理の具体例を説明する。代表面選定部18は、面追跡行列を参照して、代表面S
refを選定する。代表面選定部18は、例えば最も長時間にわたって検出された面であり、かつ、動いている面であるという条件を満たす面を、代表面S
refとして選定する。なお、面が動いているか否かは、記憶部30に記憶された各面の基準座標を参照し、基準座標に変化があった場合には面が動いていると判定することができる。代表面選定部18は、例えば
図9に示すようにして、上記条件を満たす代表面S
refを選定する。なお、代表面選定部18による処理はこれに限定されず、他の条件を満たす面を代表面として選定するものとしてもよい。
【0050】
3次元情報取得装置100は、代表面S
ref以外の各面について、以下のS110〜S117に示す処理を繰り返して実行する。なお、この繰り返し処理を実行する場合の3次元情報取得装置100は、繰り返し処理手段の一例に対応する。
S110:3次元情報取得装置100は、第2の面の一例として、代表面S
refの識別番号と異なる識別番号を有する面S
cを選択する。なお、この選択の際の3次元情報取得装置100は、第2の面選定手段の一例に対応する。
【0051】
S111:2面同時検出時刻特定部19は、代表面S
refと面S
cとが同時に検出された時刻を特定する。なお、代表面S
refと面S
cとが同時に検出された時刻が無かった場合には、S101へと戻り、他の面を選択する。
【0052】
2面同時検出時刻特定部19による処理の具体例を説明する。2面同時検出時刻特定部19は、記憶部30に記憶された面追跡行列を参照して、代表面S
refと面S
cとが同時に検出された時刻を特定する。2面同時検出時刻特定部19は、例えば
図9に示す面追跡行列を参照して、代表面S
refと面S
cとが同時に検出された時刻2〜6を容易に特定することができる。なお、2面同時検出時刻特定部19による処理はこれに限定されず、入力された2つの面が同時に検出された時刻を特定する他の周知の処理を実行するものとしてもよい。
【0053】
S112:3次元情報取得装置100は、代表面S
refと面S
cとが同時に検出された時刻があった場合には、代表面S
refと面S
cとが同時に検出された時刻の中から、2つの時刻t,tdを選択する。2つの時刻t,tdを選択する処理としては様々な選択処理を採用することができる。例えば同時に検出された時刻の中から最も長い時間にわたって検出されたその開始時刻tと終了時刻tdを選択する。また、例えばランダムサンプリングにより2つの時刻t,tdを選択するものとしてもよい。
【0054】
S113:2座標間の姿勢変化計算部20は、時刻t,tdにおける面S
refの基準座標及び基準座標系を記憶部30からそれぞれ読み出し、読み出した面S
refの基準座標及び基準座標系に基づいて、時刻tから時刻tdへの面S
refの平行移動ベクトルT
Sctd(virtual)及び回転行列R
Sctd(virtual)を計算する。
【0055】
2座標間の姿勢変化計算部20による処理の具体例を説明する。2座標間の姿勢変化計算部20は、例えば以下の式2に基づいて、時刻tから時刻tdにかけての代表面S
refの位置及び姿勢の変化をそれぞれ示す平行移動ベクトル及び回転行列を計算する。ここで、T
Sreft、T
Sreftdは、時刻t、tdの面S
refの基準座標に対する、原点からの位置ベクトルにそれぞれ対応し、R
Sct、R
Sctdは、時刻t、tdの面S
refの基準座標系に対する、原点座標系からの回転行列にそれぞれ対応する。また、T
Sctは、時刻tの面S
cの基準座標に対する原点からの位置ベクトルに対応し、R
Sctは、時刻tの面S
refの基準座標系に対する原点座標系からの回転行列に対応する。なお、2座標間の姿勢変化計算部20による処理はこれに限定されず、2つの基準座標間の平行移動ベクトル及び回転行列を計算する他の周知の処理を実行するものとしてもよい。
【数2】
【0056】
S114:3次元情報取得装置100は、時刻tの面S
ctに対して、2座標間の姿勢変化計算部20により計算した平行移動ベクトルT
Sctd(virtual)及び回転行列R
Sctd(virtual)を作用することにより、時刻tdにおける仮想的な面S
c'tdを計算する。
【0057】
S115:2面間マッチング評価部21は、時刻t+1における実際の面S
ctdと仮想的な面S
c'tdとを比較し、その一致度を評価する。
S116:2面間マッチング評価部21は、時刻t+1における実際の面S
ctdと仮想的な面S
c'tdとが一致したか否かを判定する。なお、これら2つの面が一致しないと判定した場合には、S110へと戻り、他の面を選択する。3次元情報取得装置100は、S115及びS116に示した処理を実行することにより、代表面S
refと面S
cとが同じ運動(姿勢変化)をしているか否かを判定することができる。
【0058】
2面間マッチング評価部21による処理の具体例を説明する。入力された2つの面の一致度を評価及び判定する処理としては様々な評価及び判定処理を採用することができる。例えば、面S
ctdに属する距離点群と面S
c'tdに属する距離点群との間で誤差を計算し、その平均誤差が所定の閾値より小さい場合に、2つの面は一致するものと判定する。また、例えば2つの面の基準座標及び基準座標系の間の差が所定の閾値より小さい場合に、2つの面は一致するものと単純に判定してもよい。なお、2面間マッチング評価部21による処理はこれに限定されず、入力された2つの面の一致度を評価及び判定する他の周知の処理を実行するものとしてもよい。
【0059】
S117:3次元情報取得装置100は、時刻t+1における実際の面S
ctdと仮想的な面S
c'tdとが一致したと判定した場合には、面S
cは「代表面S
refと同じ可動部を構成する面」であると判定し、「代表面S
refと同じ可動部を構成する面」の集合に対して面S
cを追加して、記憶部30に記憶する。なお、入力された2つの面の一致度を評価及び判定する処理に関して、ステップS112に戻り他の時刻を再びサンプリングした上で、ステップS113〜S116に示した処理を繰り返し、2つの面の一致度の評価値を積算するものとしてもよい。
【0060】
S118:3次元情報取得装置100は、「代表面S
refと同じ可動部を構成する面」の集合に面が存在するか否かを判定する。なお、面が存在しないと判定した場合には、S109へと戻り、他の代表面S
refを選択する。
【0061】
以上の処理により、可動部に属する面を時系列データとして抽出することができる。即ち、物体の可動部について、可動部の形状を面の集合によりモデル化することができる。
【0062】
S119:可動軸推定部22は、「代表面S
refと同じ可動部を構成する面」の集合に面が存在すると判定された場合には、その可動部を構成する面であると判定された面の集合に基づいて、可動部の可動軸を推定する。これにより、可動軸パラメータについてもモデル化することが可能であるため、可動軸を推定することができる。
【0063】
可動軸推定部22による処理の具体例を説明する。同一の可動部を構成する面について、それら面の動き方向のベクトルに垂直な方向に可動軸は存在するものと考えられる。このため、可動軸推定部22は、同一の可動部を構成する面の動きの軌跡に基づいて、可動軸を推定することができる。
【0064】
可動軸推定部22は、例えば代表面S
refの時系列変化を利用して可動軸を推定する。可動軸推定部22は、まず、時刻stからetにおける各s
refから、面の中心座標のリストX={x
st,x
st+1,...,x
et}を得る。そして、可動軸推定部22は、リストXの差分ベクトルV={v
1,v
2,...,x
et−st−1}を計算する。そして、可動軸推定部22は、v
iに垂直で、a
i=x
st+i+0.5×v
iを通る平面を計算し、平面群を計算する。この平面群から2つの平面を取り出し、その交線を計算することを繰り返し、直線群L={l
1,l
2,...,l
et−st−1}を計算する。可動軸推定部22は、直線lを順次選択し、リストXとの距離を計算する。各点の軸からの距離がほぼ等しいのであれば、その直線は円筒の中心軸を近似したものと見なすことができ、この直線を可動軸として推定する。
【0065】
また、可動軸推定部22は、代表面S
refに加えて、同一の可動部を構成する他の面S
cに基づいて可動軸を推定するものとしてもよい。可動軸推定部22は、例えば同一の可動部を構成する代表面S
ref及び面S
cを全て読み出し、それら読み出した面の時刻間での動き方向のベクトルを計算し、当該計算した動き方向のベクトルに垂直な方向の面を計算して、当該面の交線を可動軸として計算してもよい。
【0066】
なお、可動軸推定部22による処理はこれに限定されず、同一の可動部を構成する面であると判定された面の動きの軌跡に基づいて、可動部の可動軸を推定する他の周知の処理を実行するものとしてもよい。
【0067】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、上述した実施の形態に係る3次元情報取得装置100は、距離センサ1を有するロボットに搭載して実行することもできる。