【文献】
定野真和、外6名,サンプル点間の特徴を用いたHough変換に基づくSurface Matching法,SSII2011 第17回 画像センシングシンポジウム講演論文集,日本,画像センシング技術研究会,2011年 6月 8日,第IS2-15-1頁−第IS2-15-5頁
【文献】
木村 彰男、外1名,高速一般化ハフ変換−相似変換不変な任意図形検出法−,電子情報通信学会論文誌,日本,社団法人電子情報通信学会,1998年 4月25日,第4号,第726頁−第734頁
(58)【調査した分野】(Int.Cl.,DB名)
物体のモデルの外部空間に、前記物体の位置および姿勢の推定材料となる複数の外部基準点を設定し、前記モデルの内部空間に、前記推定材料の可否判定材料となる内部基準点を設定する工程と、
前記モデルの表面に位置する点群から順次選択する始点および終点の対を含む局所表面の特徴量と、前記始点に対する前記外部基準点および前記内部基準点の位置の組とを対応付けたテーブルを記憶する工程と、
実空間に存在する物体の表面に位置するサンプル点群から始点および終点の対を順次選択し、該始点および終点の対を含む局所表面における前記物体の特徴量を算出する工程と、
前記テーブルから前記物体の特徴量と一致する特徴量が対応付けられた前記位置の組を取得して実空間における位置の組へ変換し、該位置の組に含まれる前記内部基準点の位置が前記物体の外部にある場合に、該位置の組に含まれる前記外部基準点の位置を前記推定材料から除外して前記物体の位置および姿勢を推定する工程と
を含むことを特徴とする物体検出方法。
前記変換後の位置の組に含まれる前記内部基準点の位置が物体の内部にある場合に、該位置の組に含まれる複数の前記外部基準点の位置と一致する実空間内の投票点へそれぞれ投票する工程と、
一つの前記位置の組に含まれる複数の前記外部基準点の位置に基づいて投票が行われた投票点の組の中で、投票数が最小の投票点の得票数が所定の閾値に達した場合に、該投票点の組をリストアップする工程と、
リストアップした前記投票点の組毎に総得票数を集計し、前記総得票数が多い組の順に該組に含まれる前記投票点の実空間における位置に基づいて、前記物体の位置および姿勢を推定する工程と
をさらに含むことを特徴とする請求項1に記載の物体検出方法。
物体のモデルの外部空間に、前記物体の位置および姿勢の推定材料となる複数の外部基準点を設定し、前記モデルの内部空間に、前記推定材料の可否判定材料となる内部基準点を設定する設定部と、
前記モデルの表面に位置する点群から順次選択する始点および終点の対を含む局所表面の特徴量と、前記始点に対する前記外部基準点および前記内部基準点の位置の組とを対応付けたテーブルを記憶する記憶部と、
実空間に存在する物体の表面に位置するサンプル点群から始点および終点の対を順次選択し、該始点および終点の対を含む局所表面における前記物体の特徴量を算出する演算部と、
前記テーブルから前記物体の特徴量と一致する特徴量が対応付けられた前記位置の組を取得して実空間における位置の組へ変換し、該位置の組に含まれる前記内部基準点の位置が前記物体の外部にある場合に、該位置の組に含まれる前記外部基準点の位置を前記推定材料から除外して前記物体の位置および姿勢を推定する推定部と
を備えることを特徴とする物体検出装置。
【発明を実施するための形態】
【0009】
以下、添付図面を参照して、本願の開示する物体検出方法および物体検出装置の実施形態を詳細に説明する。なお、以下に示す実施形態によりこの発明が限定されるものではない。また、以下では、位置および姿勢の検出対象となる物体の形状が円筒形状の場合を例に挙げて説明するが、検出対象の物体の形状は円筒形状に限定されるものではない。
【0010】
図1Aおよび
図1Bは、実施形態に係る物体検出方法を示す説明図である。
図1Aに示すように、実施形態に係る物体検出方法では、検出対象の物体と同一形状で、実空間における位置および姿勢が既知のモデルMの表面形状を示す情報を取得する。
【0011】
具体的には、モデルMの表面に位置する点群の各点に関する情報を取得する。各点に関する情報には、各点の実空間における3次元の位置情報(位置ベクトル)、各点におけるモデルMの表面に対する法線ベクトルの情報が含まれる。
【0012】
続いて、モデルMの外部空間に、物体の位置および姿勢の推定材料となる複数の外部基準点O
1、O
2、O
3を設定し、モデルMの内部空間に、物体の位置および姿勢の推定材料の可否判定材料となる内部基準点O
4を設定する。なお、設定する基準点の個数はこれに限定されるものではない。
【0013】
そして、モデルMの表面に位置する点群から順次選択する始点P
iおよび終点P
jの対を含むモデルMの局所表面の特徴量を算出する。ここでの特徴量は、例えば、始点P
iおよび終点P
j間の距離、始点P
iおよび終点P
jの法線の内積、始点P
iの法線と始点P
iおよび終点P
jを結ぶベクトルとの内積などである。
【0014】
続いて、算出した特徴量と、始点P
iに対する外部基準点O
1、O
2、O
3および内部基準点O
4の位置ベクトル(始点P
iから外部基準点O
1、O
2、O
3、内部基準点O
4へ向かう矢印参照)の組とを対応付けたテーブルを作成して記憶する。なお、これまでの工程は、実空間に存在する物体の位置および姿勢を検出する以前に、予めオフラインにて行っておく。
【0015】
その後、
図1Bに示すように、実空間に存在する物体Wの表面の表面形状を示す情報を取得する。ここでは、図示を省略したが、物体Wの表面の表面形状を示す情報には、物体Wの表面に位置するサンプル点群の実空間における3次元の位置情報(位置ベクトル)が含まれる。
【0016】
続いて、サンプル点群から始点P
(i)および終点P
(j)の対を順次選択し、始点P
(i)および終点P
(j)の対を含む局所表面における物体Wの特徴量を算出し、先に記憶したテーブルから物体Wの特徴量と一致する特徴量が対応付けられた複数の位置ベクトルの組を取得する。
【0017】
ここで取得される位置ベクトルの始点P
iのモデルMにおける位置が、サンプル群から選択した始点P
(i)の物体Wにおける位置と一致していれば、位置ベクトルの組を実空間の位置ベクトルへ変換することで、物体Wの正しい基準点位置を取得することができる。したがって、かかる変換した3点の位置ベクトルに基づいて、物体Wの正しい位置および姿勢を推定して検出することができる。
【0018】
ただし、テーブルから取得される位置ベクトルの始点P
iのモデルMにおける位置は、サンプル群から選択した始点P
(i)の物体Wにおける位置と一致しない場合がある。例えば、物体Wの位置や姿勢によっては、物体Wにおける始点P
(i)の位置と、モデルMにおける始点P
iの位置とが異なる場合にも、物体Wにおける局所表面の特徴量とモデルMにおける局所表面の特徴量とが一致することがある。
【0019】
かかる場合、テーブルから取得した位置ベクトルの組を実空間の位置ベクトルへ変換しても、物体Wの正しい基準点位置を取得することができず、物体Wの正しい位置および姿勢を検出することができない。
【0020】
このため、実施形態に係る物体検出方法では、ハフ変換を利用して、テーブルから取得した複数の位置ベクトルの組を実空間における位置ベクトルの組へ変換し、変換後の位置ベクトルが示す3次元位置をハフ空間となる実空間の投票点へ投票する。そして、3点ずつ投票される投票点の組のなかで、得票数の多い投票点の組に含まれる位置ベクトルを物体Wの正しい基準点の位置と判定し、かかる位置に基づいて物体Wの位置および姿勢を判定する。
【0021】
しかしながら、テーブルから取得した全ての位置ベクトルの組を投票の対象とした場合、物体Wの位置および姿勢を検出する処理量が嵩むという問題が生じる。また、前述したように、テーブルから取得した複数の位置ベクトルの組の中には、物体Wの位置および姿勢の推定材料として不適切な位置ベクトルも含まれている。
【0022】
さらに、物体Wの位置や姿勢等によっては、位置および姿勢の推定材料として不適切な位置ベクトルの投票点が、適切な位置ベクトルの投票点よりも多くの票を獲得することもあり、物体Wの位置および姿勢の検出精度が低下する恐れがある。
【0023】
そこで、実施形態に係る物体検出方法では、投票を行う前に、位置および姿勢の推定材料として不適切な位置ベクトルの組を投票の対象から除外することで、物体の位置および姿勢の検出に要する処理量を低減しつつ、検出精度を向上させる。
【0024】
具体的には、テーブルから取得した位置ベクトルの組を実空間の位置ベクトルへ変換した場合に、
図1Bに示すように、モデルMに設定された外部基準点O
1、O
2、O
3が実空間で3点A、B、Cに、内部基準点O
4が物体W外部の点Dに位置していたとする。
【0025】
このように、本来であれば物体Wの内部に存在するはずの内部基準点O
4が物体W外部の点Dに存在した場合、かかる点Dと同じ組に含まれる実空間における3点A、B、Cを投票対象、つまり、物体Wの位置および姿勢の推定材料から排除する。
【0026】
したがって、実施形態に係る物体検出方法によれば、投票を行う前に、位置および姿勢の推定材料として不適切な位置ベクトルの組を投票の対象から除外することができるので、物体Wの位置および姿勢の検出に要する処理量を低減しつつ、検出精度を向上させる。
【0027】
なお、モデルMに設定された内部基準点O
4に対応する実空間の点Dが適切に物体Wの内部に存在していた場合、外部基準点O
1、O
2、O
3に対応する実空間の3点A、B、Cの位置を投票し、投票結果に基づいて物体Wの位置および姿勢を検出する。なお、かかる物体検出方法の詳細については、実施形態に係る物体検出装置の動作と合わせて後述する。
【0028】
次に、
図2を参照して、実施形態に係る物体検出装置を備えたロボットシステムについて説明する。
図2は、実施形態に係るロボットシステム1を示す説明図である。
図2に示すように、ロボットシステム1は、ロボット2と、センサ3と、物体検出装置4と、ロボット制御装置5とを備える。
【0029】
ロボット2は、床面などに設置される胴部21と、胴部21から延伸する右アーム22および左アーム23とを備える。右アーム22および左アーム23は、いずれも7軸の自由度を有するロボットアームである。また、右アーム22の先端には、内部に円筒状の物体Wがバラ積みされた箱体6を把持するハンド24が設けられ、左アーム23の先端には、箱体6の内部から物体Wをピックアップするハンド25が設けられる。
【0030】
センサ3は、箱体6の内部にバラ積みされた物体Wの3次元形状を検出するものであり、例えば、三次元スキャナである。かかるセンサ3は、支持体31によって支持されて箱体6の鉛直上方に配置される。
【0031】
センサ3は、レーザ光によって物体Wを走査し、物体Wから反射される反射光に基づいて物体Wの3次元形状を検出する。そして、センサ3は、物体Wの3次元形状を示す情報(以下、「シーンデータ」と記載する)を物体検出装置4へ出力する。シーンデータには、前述した物体Wの表面に位置するサンプル点群の実空間における3次元の位置情報(位置ベクトル)が含まれる。
【0032】
物体検出装置4は、センサ3から入力されるシーンデータと前述したテーブルとに基づいて、箱体6の内部にバラ積みされた物体Wの位置および姿勢を検出し、ロボット2の把持対象となる物体Wの位置および姿勢をロボット制御装置5へ出力する。なお、物体検出装置4の構成の一例については、
図3を参照して後述する。
【0033】
ロボット制御装置5は、物体検出装置4から入力される把持対象の物体Wの位置および姿勢に基づいてロボット2の制御信号を生成し、制御信号をロボット2へ出力することによってロボット2に物体Wのピックアップ動作を行わせる。
【0034】
次に、
図3を参照して、物体検出装置4の構成の一例について説明する。
図3は、実施形態に係る物体検出装置4の構成の一例を示す説明図である。
図3に示すように、物体検出装置4は、処理部7と記憶部8とを備える。記憶部8は、前述のテーブル81を記憶する。なお、テーブル81の一例については、
図7を参照して後述する。
【0035】
処理部7は、モデルデータ取得部71と、シーンデータ取得部72と、基準点設定部73と、エッジ検出部74と、サーフレット選択部75と、演算部76と、位置・姿勢推定部77と、把持対象情報生成部78とを備える。
【0036】
物体検出装置4では、モデルデータ取得部71と、基準点設定部73と、エッジ検出部74と、サーフレット選択部75と、演算部76とによって、前述したテーブル81を作成して記憶部8へ記憶させる。
【0037】
ここで、
図4A〜
図7を合わせて参照しながら、物体検出装置4によるテーブル81の作成手順およびテーブル81の一例について説明する。
図4A〜
図6は、実施形態に係るテーブル81の作成手順を示す説明図であり、
図7は、実施形態に係るテーブル81の一例を示す説明図である。
【0038】
モデルデータ取得部71は、ロボット2の把持対象となる物体Wとサイズおよび形状が等しい
図4Aに示すモデルMのCADデータを所定の情報処理装置(図示略)から読み込む。そして、モデルデータ取得部71は、CADデータからモデルMの表面形状を示すモデルデータを抽出して取得する。
【0039】
具体的には、モデルデータ取得部71は、
図4Bに示すように、モデルM表面に位置する点群の各点の実空間における3次元の位置情報(位置ベクトル)、各点におけるモデルMの表面に対する法線ベクトルの情報等をモデルデータとして取得する。そして、モデルデータ取得部71は、取得したモデルデータを基準点設定部73へ出力する。
【0040】
基準点設定部73は、
図4Bに示すように、モデルデータに対してモデルMの外部空間に、3点の外部基準点O
1、O
2、O
3を設定するとともに、モデルMの内部空間に、内部基準点O
4を設定する。なお、外部基準点O
1、O
2、O
3および内部基準点O
4を区別しない場合、これらを基準点Oと総称する。かかる基準点設定部73は、基準点Oを設定したモデルデータをエッジ検出部74へ出力する。
【0041】
エッジ検出部74は、
図5Aに示すように、基準点設定部73から入力されるモデルデータに基づいて、モデルMのエッジEdを検出する。さらに、エッジ検出部74は、モデルMのエッジEdを形成する点群に対してエッジEd上の点であることを示す情報(以下、「ラベルE」と記載する)を付加する。また、エッジ検出部74は、モデルMのエッジEd以外の部分を形成する点群に対して面上の点であることを示す情報(以下、「ラベルF」と記載する)を付加する。そして、エッジ検出部74は、ラベルEとラベルFとを付加したモデルデータをサーフレット選択部75へ出力する。
【0042】
サーフレット選択部75は、エッジ検出部74から入力されるモデルデータから、モデルMの表面に位置する2点の対を始点P
iおよび終点P
jの対として順次選択し、選択した点に関する情報(以下、「サーフレット」と記載する)を取得する。
【0043】
例えば、サーフレット選択部75は、
図5Bに示すように、円筒形状のモデルMの周面に位置する始点P
iを選択する場合、始点P
iの実空間における位置ベクトルp
i、ラベルF、法線ベクトルn
iの組を始点P
iのサーフレットΔ(p
i)として取得する。
【0044】
また、サーフレット選択部75は、モデルMのエッジEd(
図5A参照)に位置する終点P
jを選択する場合、終点P
jの実空間における位置ベクトルp
j、ラベルE、終点P
jの勾配ベクトルg
jを終点P
jのサーフレットΔ(p
j)として取得する。
【0045】
ここでの勾配ベクトルg
jは、終点P
jにおけるモデルMの周面と端面とのなす角度である。なお、面上の点を終点として選択する場合、サーフレット選択部75は、終点のサーフレットとして、終点の位置ベクトル、ラベルF、終点の法線ベクトルの組を取得する。
【0046】
サーフレット選択部75は、選択する始点P
iおよび終点P
jを変更しながら、複数のサーフレットΔ(p
i)とサーフレットΔ(p
j)との対(以下、「サーフレットペア」と記載する)を取得し、演算部76へ出力する。
【0047】
かかるサーフレットペアは、演算部76が始点P
iおよび終点P
jの対を含むモデルMの局所表面の特徴量を演算する処理などで使用される情報である。このため、サーフレット選択部75は、モデルMの表面に位置する全ての点を始点P
iおよび終点P
jとして選択してサーフレットペアを取得する構成でもよく、終点P
jとしてラベルEが付加された点、または、ラベルFが付加された点を選択する構成でもよい。
【0048】
モデルMの表面に位置する全ての点を始点P
iおよび終点P
jとして選択する構成によれば、モデルMにおける局所表面の特徴量をより多くテーブル81に蓄積させることができるため、物体Wの検出精度を向上させることができる。
【0049】
また、終点P
jとしてラベルEが付加された点を限定して選択する構成は、モデルに占める平面部分の領域が比較的広い場合に有効である。具体的には、平面部分の占める領域が広いモデルでは、平面部分のいずれの点を始点P
iおよび終点P
jとして選択しても、算出される局所表面の特徴量に大差がなく、エッジEd部分を終点P
jとして選択した方が、よりモデルの特徴を表す特徴量を得ることができる。しかも、ラベルFが付加された面上の点を終点P
jの選択肢から除外することができるので、特徴量を算出する処理量を低減することができる。
【0050】
したがって、終点P
jとしてラベルEが付加された点を限定して選択する構成によれば、平面部分の占める領域が広いモデルについて、処理量を低減しつつ、物体の位置および姿勢の検出精度を向上させることができる。
【0051】
一方、終点P
jとしてラベルFが付加された点を限定して選択する構成は、モデルに占める曲面部分の領域が比較的広い場合に有効である。具体的には、曲面部分の占める領域が広いモデルでは、モデルの面状における局所平面のそれぞれにモデルの特徴がある。
【0052】
したがって、終点P
jとしてラベルFが付加された点を限定して選択する構成によれば、モデルの面状における局所平面のそれぞれについて特徴量を取得することで、曲面部分の占める領域が広い物体の位置および姿勢の検出精度を向上させることができる。
【0053】
演算部76は、サーフレット選択部75から入力されるサーフレットペアを使用して、始点P
iおよび終点P
jの対を含むモデルMの局所表面の特徴量を算出する。例えば、演算部76は、始点P
iおよび終点P
j間の距離、始点P
iおよび終点P
jの法線ベクトルn
iの内積、始点P
iの法線ベクトルn
iと始点P
iおよび終点P
jを結ぶベクトルf
i,jとの内積を特徴量として算出する。
【0054】
さらに、演算部76は、始点P
iを原点とする局所座標系を算出し、局所座標系における基準点Oの位置ベクトル(
図5Bに示す一点鎖線矢印参照)を算出する。基準点Oの位置ベクトルの算出には、始点P
iの位置ベクトルp
i、終点P
jの位置ベクトルp
j、位置ベクトルp
iと位置ベクトルp
jとの差分ベクトルf
i,jが用いられる。
【0055】
具体的には、実空間における各基準点Oの位置ベクトルは、下記の式(1)によって表すことができる。
【0057】
この実空間における各基準点Oの位置ベクトルを〈p
i、n
i、f
i,j〉により定まる局所座標系を用いて表す。局所座標系は、以下のように定める。
【0059】
上記式(2)、式(3)、式(4)によって算出される直交基底を用いて、各基準点Oの局所座標系における位置ベクトルは、下記の式(5)によって算出する。
【0061】
こうして、
図6に示すように、始点P
iを原点とした局所座標系における外部基準点O
1、O
2、O
3、および、内部基準点O
4の各位置ベクトル(
図6に示す一点鎖線矢印参照)を算出する。
【0062】
続いて、演算部76は、
図7に示すように、先に算出した始点P
iおよび終点P
jの対を含む局所表面の特徴量(H1、H2など)と、始点P
iを原点とした局所座標系における基準点Oの位置ベクトル(ここでは、外部基準点O
1、O
2、O
3、内部基準点O
4の4つ位置ベクトル)の組とを対応付けたテーブル81を作成する。
【0063】
ここで、モデルMには、特徴量が一致する複数の局所表面が存在する。このため、テーブル81では、一つの特徴量(H1、H2など)に対して、それぞれ局所座標系における複数の基準点Oの組が対応付けられる。つまり、テーブル81は、各特徴量(H1、H2など)をキーとするハッシュテーブルのデータ構造となる。演算部76は、こうして形成したテーブル81を記憶部8へ記憶させる。
【0064】
また、物体検出装置4では、シーンデータ取得部72と、エッジ検出部74と、サーフレット選択部75と、演算部76と、位置・姿勢推定部77と、把持対象情報生成部78とによって、物体Wの位置および姿勢を推定して検出する。
【0065】
ここで、
図8A〜
図10を合わせて参照しながら、物体検出装置4が物体Wの位置および姿勢を検出する手順の一例について説明する。
図8A〜
図10は、実施形態に係る物体Wの位置および姿勢を検出する手順を示す説明図である。
【0066】
シーンデータ取得部72は、センサ3から、
図8Aに示すバラ積みされた物体Wの3次元形状を示すシーンデータを取得する。具体的には、シーンデータ取得部72は、
図8Bに示すように、物体W表面に位置するサンプル点群の各点の実空間における3次元の位置情報(位置ベクトル)、各点における物体Wの表面に対する法線ベクトルn
(i)の情報等をシーンデータとして取得する。そして、シーンデータ取得部72は、取得したシーンデータをエッジ検出部74へ出力する。
【0067】
エッジ検出部74は、シーンデータ取得部72から入力されるシーンデータに基づいて、物体Wのエッジを検出する。さらに、エッジ検出部74は、物体Wのエッジを形成するサンプル点群に対してエッジ上の点であることを示すラベルEを付加し、ラベルEを付加した各サンプル点の勾配ベクトルg
(j)を算出する。
【0068】
また、エッジ検出部74は、物体Wのエッジ以外の部分を形成するサンプル点群に対して面上の点であることを示すラベルFを付加する。そして、エッジ検出部74は、ラベルEとラベルFとを付加したモデルデータをサーフレット選択部75へ出力する。なお、エッジ検出部74は、エッジ上のサンプル点の勾配ベクトルg
(j)についてもサーフレット選択部75へ出力する。
【0069】
サーフレット選択部75は、エッジ検出部74から入力されるシーンデータから、物体Wの表面に位置する2点の対を始点P
(i)および終点P
(j)の対として順次選択し、選択したサンプル点に関するサーフレットを取得する。
【0070】
例えば、サーフレット選択部75は、円筒形状の物体Wの周面に位置する始点P
(i)を選択する場合、始点P
(i)の実空間における位置ベクトルp
(i)、ラベルF、法線ベクトルn
(i)の組を始点P
(i)のサーフレットΔ(p
i)として取得する。
【0071】
また、サーフレット選択部75は、物体Wのエッジに位置する終点P
(j)を選択する場合、終点P
(j)の実空間における位置ベクトルp
(j)、ラベルE、終点P
(j)の勾配ベクトルg
(j)を終点P
(j)のサーフレットΔ(p
j)として取得する。
【0072】
ここでの勾配ベクトルg
(j)は、終点P
(j)における物体Wの周面と端面とのなす角度である。なお、面上の点を終点として選択する場合、サーフレット選択部75は、終点のサーフレットとして、終点の位置ベクトル、ラベルF、終点の法線ベクトルの組を取得する。
【0073】
サーフレット選択部75は、選択する始点P
(i)および終点P
(j)を変更しながら、複数のサーフレットΔ(p
i)とサーフレットΔ(p
j)との対であるサーフレットペアを取得し、演算部76へ出力する。
【0074】
かかるサーフレットペアは、演算部76が始点P
(i)および終点P
(j)の対を含む物体Wの局所表面の特徴量を演算する処理などで使用される情報である。したがって、モデルMのサーフレットペアを取得する場合と同様に、サーフレット選択部75によって、全ての点を始点P
(i)および終点P
(j)として選択してサーフレットペアを取得することで、物体Wの検出精度を向上させることができる。
【0075】
また、ラベルEが付加された終点P
jをサーフレット選択部75によって限定して選択させることにより、平面部分の占める領域が広い物体について、処理量を低減しつつ、物体の位置および姿勢の検出精度を向上させることができる。一方、ラベルFが付加された終点P
jをサーフレット選択部75によって限定して選択させることにより、曲面部分の占める領域が広い物体について、位置および姿勢の検出精度を向上させることができる。
【0076】
演算部76は、サーフレット選択部75から入力されるサーフレットペアを使用して、始点P
(i)および終点P
(j)の対を含む物体Wの局所表面の特徴量を算出する。例えば、演算部76は、始点P
(i)および終点P
(j)間の距離、始点P
(i)および終点P
(j)の法線ベクトルn
(i)の内積、始点P
(i)の法線ベクトルn
(i)と始点P
(i)および終点P
(j)を結ぶベクトルf
(i,j)との内積を特徴量として算出する。そして、演算部76は、特徴量の算出に使用したサーフレットペアと、算出した物体Wの局所表面の特徴量とを位置・姿勢推定部77へ出力する。
【0077】
位置・姿勢推定部77は、演算部76から入力される物体Wの局所表面の特徴量と一致する特徴量が対応付けられた基準点Oの位置ベクトルの組をテーブル81から複数取得する。さらに、位置・姿勢推定部77は、始点P
(i)を原点とする局所座標系を算出する。そして、位置・姿勢推定部77は、テーブル81から取得した位置ベクトルの組を、下記式(6)によって、始点P
(i)を原点とする局所座標系における位置ベクトルの組へ変換する。
【0079】
続いて、位置・姿勢推定部77は、始点P
(i)を原点とする局所座標系における変換後の位置ベクトルの組を、下記式(7)によって、実空間における位置ベクトルの組へと変換する。
【0081】
これにより、
図8Bに一点鎖線で示すように、外部基準点O
5、O
6、O
7、および、内部基準点O
8の実空間における位置ベクトルが算出される。ここで、位置・姿勢推定部77は、
図9に示すように、黒丸で示す物体W表面のサンプル点と、白丸で示す内部基準点O
8との位置関係に基づいて、外部基準点O
5、O
6、O
7の可否を判定する。なお、
図9に示すX軸およびY軸は、水平面と平行な平面上に位置する直交ベクトルであり、Z軸は、XY平面に対して直交し、鉛直下方を正方向にとった軸である。
【0082】
そして、位置・姿勢推定部77は、
図9に示すように、内部基準点O
8が物体Wの内部にある場合、内部基準点O
8の位置ベクトルと同組に含まれる外部基準点O
5、O
6、O
7の位置ベクトルを、物体Wの位置および姿勢の推定材料として適切な基準点と判定する。
【0083】
一方、内部基準点O
9のように、物体Wの外部にある場合、位置・姿勢推定部77は、内部基準点O
9の位置ベクトルと同組に含まれる外部基準点を、物体Wの位置および姿勢の推定材料として不適切な基準点と判定し、推定材料から除外する。
【0084】
具体的には、位置・姿勢推定部77は、内部基準点O
8の実空間における座標値を(x
k、y
k、z
k)とし、下記式(8)によって、内部基準点O
8が物体Wの内部にあるか否かを検証し、外部基準点O
5、O
6、O
7の可否を判定する。
【0086】
ただし、上記式(8)におけるscanZ(x,y)は、実空間におけるx座標値およびy座標値が、内部基準点O
8のx座標値およびy座標値と一致するサンプル点のz座標値である。
【0087】
このように、位置・姿勢推定部77は、物体Wの位置および姿勢の推定材料として不適切な基準点Oを、物体Wの位置および姿勢の推定材料から除外する。これにより、位置・姿勢推定部77は、後に行われる外部基準点O
5、O
6、O
7の投票処理量を低減しつつ、物体Wの位置および姿勢の推定精度を向上させることができる。
【0088】
なお、本実施形態では、モデルMの内部空間に内部基準点O
4を設定したが、モデルMの内部空間以外であれば、例えば、モデルMの表面に内部基準点O
4を設定してもよい。ただし、かかる場合、内部基準点O
4に対応する内部基準点O
10が物体Wの表面にあるか否かを、外部基準点O
5、O
6、O
7の可否判定基準とすると、可否判定基準が高くなり過ぎて、適切な基準点Oを不適切と誤判定するおそれがある。
【0089】
そこで、位置・姿勢推定部77では、上記式(8)に所定の閾値thを設け、外部基準点O
5、O
6、O
7の可否判定基準に一定の幅を持たせることにより、適切な基準点を不適切とする誤判定の発生を抑制する。
【0090】
続いて、位置・姿勢推定部77は、物体Wの位置および姿勢の判定材料として適切と判定した外部基準点O
5、O
6、O
7の実空間における位置と一致する実空間内の投票点へそれぞれ投票する処理を行う。
【0091】
例えば、位置・姿勢推定部77は、
図10の上図に示す始点P
(i)を原点とする局所座標系における外部基準点O
5、O
6、O
7の位置を、
図10の下図に示す実空間で対応する3点A
1、B
1、C
1へそれぞれ投票する。位置・姿勢推定部77は、推定材料として適切と判定した全ての外部基準点について、順次実空間への投票を行う。
【0092】
これにより、例えば、
図10に示す3点A
1、B
1、C
1の投票点の組は、徐々に得票数が増加する。また、実空間では、3点A
1、B
1、C
1以外の投票点にも、3点の外部基準点の組毎に、それぞれ実空間内の他の3投票点の組へ順次投票が行われる。位置・姿勢推定部77は、かかる各3投票点の組毎に、各投票点の得票数を監視する。
【0093】
ここで、例えば、3点の外部基準点の組に含まれる各外部基準点の各x、y、x座標値、つまり9個の座標値で1点が決定する9次元空間内の投票点へ投票を行った場合、得票数が最多の投票点に基づいて、最も確からしい外部基準点を検出することができる。しかし、かかる場合、投票空間が膨大となり、投票に要する計算量も膨大となる。
【0094】
このため、位置・姿勢推定部77は、3点の外部基準点の組に含まれる各外部基準点の位置を3次元の実空間における独立した3投票点の組へそれぞれ投票する。これにより、投票に要する計算量を大幅に低減することができる。ただし、位置・姿勢推定部77では、本来一つの3投票点の組へ投票されるべき3票のうち、いずれかが別の投票点の組へ投票される所謂干渉現象が発生する。
【0095】
そこで、位置・姿勢推定部77は、3投票点の組に含まれる各投票点のうち、投票数が最小の投票点の得票数が所定の閾値Vthに達した場合に、その3投票点の組をリストアップする。そして、位置・姿勢推定部77は、リストアップした3投票点の組毎に総得票数を集計し、得票数が多い組の順に、その組に含まれる投票点の実空間における位置に基づいて、物体Wの位置および姿勢を推定する。
【0096】
例えば、位置・姿勢推定部77は、
図10に示す3点A
1、B
1、C
1の組の中で、点A
1の得票数が最も少ないと、点A
1の得票数が閾値Vthに達した場合に、3点A
1、B
1、C
1の組をリストアップする。これにより、例えば、干渉によって、2点B
1、C
1の得票数が増大しても、点A
1の得票数が閾値Vthに達しない限り、適切か否かが未定の3点A
1、B
1、C
1の組を早まって適切な得票点の組と判定することを抑制することができる。
【0097】
続いて、位置・姿勢推定部77は、推定した複数の物体Wの位置および姿勢を示す情報を把持対象情報生成部78へ出力する。把持対象情報生成部78は、位置・姿勢推定部77から入力される情報に基づいて、ロボット2の把持候補となる物体Wの有無を判定し、把持候補がある場合、把持候補の位置および姿勢を示す情報を、ない場合、その旨を示す情報をロボット制御装置5へ出力する。
【0098】
次に、
図11〜
図13を参照し、物体検出装置4の処理部7が実行する処理について説明する。
図11は、実施形態に係るテーブル81の作成処理を示すフローチャートである。
図12は、実施形態に係る物体Wの位置および姿勢の検出処理を示すフローチャートである。
図13は、実施形態に係る把持候補に関する情報の作成処理を示すフローチャートである。
【0099】
物体検出装置4の処理部7は、物体Wの位置および姿勢を検出する以前に、予め
図11に示す処理を実行することによってテーブル81を作成する。具体的には、処理部7は、
図11に示すように、まず、モデルデータを取得し(ステップS101)、モデルデータからモデルMのエッジEdを抽出する(ステップS102)。
【0100】
続いて、処理部7は、モデルMの表面から選択する始点P
iのモデルM表面における位置に対応する変数iへ1を設定する(ステップS103)。その後、処理部7は、モデルMの表面から選択する終点P
jのモデルM表面における位置に対応する変数jへ1を設定する(ステップS104)。
【0101】
続いて、処理部7は、変数iの値と変数jの値とが等しくないか否かを判定する(ステップS105)。つまり、処理部7は、モデルMの表面から選択する始点P
iと終点P
jとが同一点か否かを判定する。なお、ここでは、変数iの値および変数jの値は、ともに1である。このため、処理部7は、始点P
iと終点P
jとが同一点であると判定し(ステップS105,No)、処理をステップS109へ移す。
【0102】
ステップS109において、処理部7は、処理を変数jのループの先頭、つまり、ステップS104へ移す。ステップS104において、処理部7は、変数jの値へ1を加算し、処理をステップS105へ移す。以後、処理部7は、処理がステップS109まで進む度に、ステップS104で変数jの値へ1を加算し、変数jの値がM
jに達した後に、処理がステップS109まで進むと、処理をステップS110へ移す。つまり、処理部7は、モデルMの表面からM
j個の終点P
jを選択する。
【0103】
また、処理部7は、ステップS105において、変数iの値と変数jの値とが等しくないと判定した場合(ステップS105,Yes)、処理をステップS106へ移す。ステップS106において、処理部7は、始点P
iの位置ベクトルp
iと、始点P
iの法線ベクトルn
iと、終点P
jの位置ベクトルp
jとから、始点P
iを原点とする局所座標系を算出する。
【0104】
続いて、処理部7は、算出した局所座標系における各基準点Oの位置ベクトルを算出する(ステップS107)。ここで、処理部7は、始点P
iおよび終点P
jを含むモデルMの局所表面の特徴量であるサーフレットペア〈Δ(p
j)、Δ(p
i)〉の特徴量についても算出する。
【0105】
続いて、処理部7は、サーフレットペア〈Δ(p
j)、Δ(p
i)〉の特徴量をキーとしたテーブル81に算出した基準点Oの位置ベクトルを格納し(ステップS108)、処理をステップS109へ移す。そして、処理部7は、一つの始点P
iと、M
j個の終点P
jとについて、ステップS104〜ステップS109の処理を繰り返し、その後、処理をステップS110へ移す。
【0106】
ステップS110において、処理部7は、処理を変数iのループの先頭、つまり、ステップS103へ移す。ステップS103において、処理部7は、変数iの値へ1を加算し、処理をステップS104へ移す。以後、処理部7は、処理がステップS110まで進む度に、ステップS103で変数iの値へ1を加算し、変数iの値がM
iに達した後に、処理がステップS110まで進むと、処理をステップS111へ移す。
【0107】
つまり、処理部7は、モデルMの表面からM
i個の始点P
iを選択し、M
i個の各始点P
iと、M
j個の終点P
jとについて、ステップS103〜ステップS110の処理を繰り返した後、処理をステップS111へ移す。最後に、処理部7は、作成したテーブル81を記憶部8に保存して、処理を終了する。
【0108】
なお、テーブル81は、物体検出装置4以外の装置によって作成されてもよい。かかる場合、物体検出装置4は、他の装置から作成されたテーブル81を取得して、記憶部8に保存する。
【0109】
また、処理部7は、
図12に示す処理を実行することによって、物体Wの位置および姿勢を検出するサーフェスマッチングを行う。具体的には、処理部7は、
図12に示すように、まず、センサ3からバラ積みされた物体Wのシーンデータを取得し(ステップS201)、シーンデータから物体Wのエッジを抽出する(ステップS202)。
【0110】
続いて、処理部7は、シーンデータから各サンプル点の法線ベクトルを算出する。ここで、処理部7は、エッジを形成するサンプル点については、勾配ベクトルも算出する(ステップS203)。続いて、処理部7は、物体Wの表面から選択する始点P
(i)の物体W表面における位置に対応する変数iへ1を設定し、(ステップS204)、シーンデータから始点P
(i)のサーフレットΔ(p
i)を取得する(ステップS205)。
【0111】
その後、処理部7は、物体Wの表面から選択する終点P
(j)の物体W表面における位置に対応する変数jへ1を設定し(ステップS206)、シーンデータから終点P
(j)のサーフレットΔ(p
j)を取得する(ステップS207)。
【0112】
続いて、処理部7は、取得したサーフレットペア〈Δ(p
j)、Δ(p
i)〉が制約条件を満たすか否かを判定する(ステップS208)。ここで、処理部7は、例えば、始点P
(i)および終点P
(j)がいずれも面上の点である場合、始点P
(i)の法線ベクトルn
(i)と終点P
(j)の法線ベクトルn
(j)とのなす角度が所定の閾値T
fより大きい場合に、制約条件を満たすと判定する。一方、始点P
(i)の法線ベクトルn
(i)と終点P
(j)の法線ベクトルn
(j)とのなす角度が所定の閾値T
f以下の場合、処理部7は、制約条件を満たさないと判定する。
【0113】
また、処理部7は、例えば、始点P
(i)が面上の点であり、終点P
(j)がエッジ上の点である場合、始点P
(i)の法線ベクトルn
(i)と終点P
(j)の勾配ベクトルg
(j)とのなす角度が所定の閾値T
eより大きい場合に、制約条件を満たすと判定する。一方、始点P
(i)の法線ベクトルn
(i)と終点P
(j)の勾配ベクトルg
(j)とのなす角度が所定の閾値T
e以下の場合、処理部7は、制約条件を満たさないと判定する。
【0114】
かかる、制約条件を設けることにより、処理部7は、際立った特徴が表れ難い始点P
(i)およびP
(j)のペアについて、無駄にサーフレットペア〈Δ(p
j)、Δ(p
i)〉を取得することを防止することができるので、処理量を低減することができる。
【0115】
そして、処理部7は、取得したサーフレットペア〈Δ(p
j)、Δ(p
i)〉が制約条件を満たすと判定した場合(ステップ208,Yes)、処理をステップS209へ移す。一方、制約条件を満たさないと判定した場合(ステップS208,No)、処理部7は、処理をステップS218へ移す。
【0116】
ステップS209において、処理部7は、テーブル81から、ステップS205およびステップS207で取得したサーフレットペア〈Δ(p
j)、Δ(p
i)〉と特徴量が一致する全サーフレットペア(Nv個)の基準点Oの位置ベクトルの組を取得する。
【0117】
続いて、処理部7は、ステップS205およびステップS207で取得したサーフレットペア〈Δ(p
j)、Δ(p
i)〉の局所座標系を算出する(ステップS210)。つまり、処理部7は、サーフレットペア〈Δ(p
j)、Δ(p
i)〉に基づいて、始点P
(i)を原点とする局所座標系を算出する。
【0118】
その後、処理部7は、ステップS209で取得した位置ベクトルの組の取得順番を示す変数rに1を設定する(ステップS211)。続いて、処理部7は、ステップS210で算出した局所座標系と、r番目の基準点Oの位置ベクトルの組とに基づいて、各基準点Oの実空間における位置ベクトルの組を算出する(ステップS212)。
【0119】
ここで、処理部7は、内部基準点O
8が物体Wの内部にあるか否かを判定する(ステップS213)。そして、処理部7は、内部基準点O
8が物体Wの内部にあると判定した場合(ステップS213,Yes)、処理をステップS214へ移す。一方、内部基準点O
8が物体Wの外部にあると判定した場合(ステップS213,No)、処理をステップS217へ移す。
【0120】
ステップS214において、処理部7は、ステップS213で物体Wの内部にあると判定された内部基準点O
8と同じ組に含まれる外部基準点O
5、O
6、O
7の位置ベクトルと一致する実空間内の投票点へ投票を行う。そして、処理部7は、ステップS214で投票した3点の投票点の組の中で、投票数が最小の投票点の得票数が閾値Vthに達したか否かの判定を行う(ステップS215)。
【0121】
ここで、処理部7は、閾値Vthに達したと判定した場合(ステップS215,Yes)、処理をステップS216へ移し、ステップS214で投票した3点の投票点の組をリストアップして(ステップS216)、処理をステップS217へ移す。一方、閾値Vthに達していないと判定した場合(ステップ215,No)、処理をステップS217へ移す。
【0122】
ステップS217において、処理部7は、処理を変数rのループの先頭、つまり、ステップS211へ移す。ステップS211において、処理部7は、変数rの値へ1を加算する。以後、処理部7は、処理がステップS217まで進む度に、ステップS211で変数rの値へ1を加算し、変数rの値がNvに達した後に、処理がステップS217まで進むと、処理をステップS218へ移す。つまり、処理部7は、ステップS209で取得した基準点Oの位置ベクトルの全組について、ステップS212〜ステップS216の処理を行う。
【0123】
ステップS218において、処理部7は、処理を変数jのループの先頭、つまり、ステップS206へ移す。ステップS206において、処理部7は、変数jの値へ1を加算する。以後、処理部7は、処理がステップS218まで進む度に、ステップS206で変数jの値へ1を加算し、変数jの値がNhに達した後に、処理がステップS218まで進むと、処理をステップS219へ移す。
【0124】
ステップS219において、処理部7は、処理を変数iのループの先頭、つまり、ステップS204へ移す。ステップS204において、処理部7は、変数iの値へ1を加算する。以後、処理部7は、処理がステップS219まで進む度に、ステップS204で変数iの値へ1を加算し、変数iの値がNtに達した後に、処理がステップS219まで進むと、処理をステップS220へ移す。
【0125】
ステップS220において、処理部7は、リストアップした投票点の組毎に総得票数を集計し、総得票数が高い順に投票点の組をソートする。続いて、処理部7は、総得票数の高い上位G個の投票点の組から物体Wの位置および姿勢を算出し、(ステップS221)、処理を終了する。
【0126】
また、処理部7は、
図13に示す処理を実行することによって、ロボット2の把持候補となる物体Wに関する情報を生成し、ロボット制御装置5へ出力する。具体的には、処理部7は、
図13に示すように、まず、シーンデータを計測する(ステップS301)。
【0127】
続いて、
図12に示す処理(サーフェスマッチング)によって算出したG個の把持候補を検出する(ステップS302)。そして、処理部7は、把持候補に対する後述の詳細マッチングを行う順番を示す変数tに1を設定し(ステップS303)、処理をステップS304へ移す。ステップS304において、処理部7は、変数tの値がG未満であるか否かを判定する(ステップS304)。
【0128】
ここで、処理部7は、変数tの値がG未満であると判定した場合(ステップS304,Yes)、処理をステップS305へ移す。一方、変数tの値がGに達したと判定した場合(ステップS304,No)、把持候補なしフラグをロボット制御装置5へ設定し(ステップS310)、処理を終了する。
【0129】
ステップS305において、処理部7は、t番目の把持候補に対して詳細マッチングを行う。例えば、処理部7は、詳細マッチングとして、ICP(Iterative Closest Point)アルゴリズムによる詳細なパターンマッチングを行う。そして、処理部7は、詳細マッチングに成功したか否かを判定する(ステップS306)。
【0130】
ステップS306において、処理部7は、詳細マッチングに成功したと判定した場合(ステップS306,Yes)、処理をステップS307へ移す。一方、詳細マッチングに失敗したと判定した場合(ステップS306,No)、処理をステップS311へ移す。
【0131】
ステップS307において、処理部7は、把持候補に対してロボット2がピッキング動作を行う際にハンド25が干渉するかどうかのハンド干渉チェックを行う。そして、処理部7は、干渉がないか否かを判定し(ステップS308)、干渉がないと判定した場合(ステップS308,Yes)、処理をステップS309へ移す。
【0132】
一方、干渉があると判定した場合(ステップS308,No)、処理をステップS311へ移す。ステップS311において、処理部7は、変数tの値へ1を加算し、処理をステップS304へ移す。また、ステップS309において、処理部7は、ステップS308で干渉なしと判定した把持候補の位置および姿勢(ピッキング位置および姿勢)をロボット制御装置5へ設定して、処理を終了する。
【0133】
上述したように、実施形態に係る物体検出方法では、物体のモデルの外部空間に、物体の位置および姿勢の推定材料となる複数の外部基準点を設定し、モデルの内部空間に、推定材料の可否判定材料となる内部基準点を設定する。そして、モデルの表面に位置する点群から順次選択する始点および終点の対を含む局所表面の特徴量と、始点に対する外部基準点および内部基準点の位置の組とを対応付けたテーブルを記憶する。
【0134】
さらに、実施形態に係る物体検出方法では、実空間に存在する物体の表面に位置するサンプル点群から始点および終点の対を順次選択し、始点および終点の対を含む局所表面における物体の特徴量を算出する。
【0135】
そして、テーブルから物体の特徴量と一致する特徴量が対応付けられた位置の組を取得して実空間における位置の組へ変換し、位置の組に含まれる内部基準点の位置が物体の外部にある場合に、位置の組に含まれる外部基準点の位置を推定材料から除外して物体の位置および姿勢を推定する。かかる物体検出方法によれば、物体の位置および姿勢の検出に要する処理量を低減しつつ、検出精度を向上させることができる。
【0136】
また、実施形態に係る物体検出方法では、変換後の位置の組に含まれる内部基準点の位置が物体の内部にある場合に、位置の組に含まれる複数の外部基準点の位置と一致する実空間内の投票点へそれぞれ投票する。そして、一つの位置の組に含まれる複数の外部基準点の位置に基づいて投票が行われた投票点の組の中で、投票数が最小の投票点の得票数が所定の閾値に達した場合に、投票点の組をリストアップする。
【0137】
その後、リストアップした投票点の組毎に総得票数を集計し、総得票数が多い組の順に組に含まれる投票点の実空間における位置に基づいて、物体の位置および姿勢を推定する。これにより、本来投票されるべきでない投票点へ投票される所謂干渉が発生しても、物体の位置および姿勢に関する推定精度が低下することを抑制することができる。
【0138】
また、実施形態に係る物体検出方法では、物体およびモデルのエッジを検出し、モデルの表面に位置する点群および物体の表面に位置するサンプル点群をエッジ上の点と、面上の点とに分類する。
【0139】
そして、物体の形状に応じて、始点として選択する点と終点として選択する点とをエッジ上の点および面上の点から選択する。これにより、実施形態に係る物体検出方法では、物体の形状に応じた、より特徴的な局所表面の特徴量に基づいて、物体の位置および姿勢を推定することができるので汎用性を向上させることができる。
【0140】
また、実施形態に係る物体検出方法では、サンプル点から選択する始点として、面上の点を選択し、サンプル点から選択する終点として、エッジ上の点を選択することにより、物体に占める平面部分の面積が比較的大きな物体の検出精度を向上させることができる。
【0141】
また、実施形態に係る物体検出方法では、サンプル点から選択する始点および終点として、始点における法線ベクトルと、終点における法線ベクトルまたは勾配ベクトルとのなす角度が所定の閾値より大きい2点を選択する。これにより、物体の比較的特徴的でない部分の局所表面については、位置および姿勢の推定材料から除外することができるので、位置および姿勢の検出に要する処理量を低減することができる。
【0142】
さらなる効果や変形例は、当業者によって容易に導き出すことができる。このため、本発明のより広範な態様は、以上のように表しかつ記述した特定の詳細および代表的な実施形態に限定されるものではない。したがって、添付の特許請求の範囲およびその均等物によって定義される総括的な発明の概念の精神または範囲から逸脱することなく、様々な変更が可能である。