以下、実施形態に係る対象物3次元データ測定方法、対象物3次元データ測定装置、学習データ生成方法および学習データ生成装置について図面を参照して説明する。なお、この実施形態によりこの発明が限定されるものではない。また、図面における各要素の寸法の関係、各要素の比率などは、現実と異なる場合がある。図面の相互間においても、互いの寸法の関係や比率が異なる部分が含まれている場合がある。また、1つの実施形態や変形例に記載された内容は、原則として他の実施形態や変形例にも同様に適用される。
(物体把持システム)
図1は、物体把持システム1の一例を示す外観図である。図1に示す物体把持システム1は、図示しない画像処理装置10と、カメラ20と、ロボットアーム30とを備える。カメラ20は、例えば、ロボットアーム30と、ロボットアーム30が把持する対象物となる、バラ積みされたワーク41、42等との両方を撮影可能な位置に設けられる。カメラ20は、例えば、ロボットアーム30と、ワーク41、42の画像とを撮影し、画像処理装置10に出力する。なお、ロボットアーム30とバラ積みされたワーク41,42等とは別々のカメラで撮影してもよい。カメラ20には、図1に示されるように、例えば公知のステレオカメラ等、複数の画像を撮影できるカメラが用いられる。画像処理装置10は、カメラ20から出力された画像を用いて、ワーク41、42等の位置および姿勢を推定する。画像処理装置10は、推定されたワーク41、42等の位置および姿勢に基づいて、ロボットアーム30の動作を制御する信号を出力する。ロボットアーム30は、画像処理装置10から出力された信号に基づいて、ワーク41、42等を把持する動作を行う。なお、図1においては、複数の異なる種類のワーク41、42等が開示されているが、ワークの種類は1種類であってもよい。ここでは、ワークが1種類である場合について説明する。また、ワーク41、42等は、位置および姿勢が不規則であるように配置されている。図1に示すように、例えば、複数のワークが上面視において重なるように配置されていてもよい。また、ワーク41、42は、対象物の一例である。
図2は、物体把持システム1の構成の一例を示すブロック図である。図2に示すように、画像処理装置10は、カメラ20およびロボットアーム30と、ネットワークNWを通じて通信可能に接続されている。また、図2に示すように、画像処理装置10は、通信I/F(インターフェース)11と、入力I/F12と、ディスプレイ13と、記憶回路14と、処理回路15とを備える。
通信I/F11は、ネットワークNWを通じた外部装置とのデータ入出力の通信を制御する。例えば、通信I/F11は、ネットワークカードやネットワークアダプタ、NIC(Network Interface Controller)等によって実現され、カメラ20から出力される画像のデータを受信するとともに、ロボットアーム30に出力する信号を送信する。
入力I/F12は、処理回路15に接続され、画像処理装置10の管理者(不図示)から受け付けた入力操作を電気信号に変換して処理回路15に出力する。例えば、入力I/F12は、スイッチボタン、マウス、キーボード、タッチパネル等である。
ディスプレイ13は、処理回路15に接続され、処理回路15から出力される各種情報および各種画像データを表示する。例えば、ディスプレイ13は、液晶モニタやCRT(Cathode Ray Tube)モニタ、タッチパネル等によって実現される。
記憶回路14は、例えば、メモリ等の記憶装置により実現される。記憶回路14には、処理回路15により実行される各種のプログラムが記憶されている。また、記憶回路14には、処理回路15により各種のプログラムが実行される際に用いられる各種のデータが一時的に記憶される。記憶回路14は、機械(深層)学習モデル141を有する。さらに、機械(深層)学習モデル141はニューラルネットワーク構造141aと学習パラメータ141bを備えている。ニューラルネットワーク構造141aは、例えば、図5の畳み込みニューラルネットワークb1のような公知のネットワークを応用したもので、後述する図12に示されるネットワーク構造である。学習パラメータ141bは、例えば、畳み込みニューラルネットワークの畳み込みフィルタの重みであり、対象物の位置および姿勢を推定するために学習され、最適化されるパラメータである。ニューラルネットワーク構造141aは、推定部152に備えられていても構わない。なお、本発明における機械(深層)学習モデル141は学習済みモデルを例として説明するが、これに限定されない。なお、以下において、機械(深層)学習モデル141を、単に「学習モデル141」と表記する場合がある。
学習モデル141は、カメラ20から出力された画像から、ワークの位置および姿勢を推定する処理に用いられる。学習モデル141は、例えば、複数のワークの位置および姿勢と、当該複数のワークを撮影した画像とを教師データして学習することにより生成される。なお、ここでは、学習モデル141が、例えば、処理回路15により生成されるが、これに限られず、外部のコンピュータにより生成されてもよい。
処理回路15は、CPU(Central Processing Unit)等のプロセッサにより実現される。処理回路15は、画像処理装置10全体を制御する。処理回路15は、記憶回路14に記憶された各種のプログラムを読み取り、読み取ったプログラムを実行することで、各種の処理を実行する。例えば、処理回路15は、画像取得部151と、推定部152と、ロボット制御部153とを有することとなる。
画像取得部151は、例えば、通信I/F11を通じて、バラ積み画像を取得し、推定部152に出力する。画像取得部151は、取得部の一例である。
推定部152は、出力されたバラ積み画像を用いて、対象物の位置および姿勢を推定する。推定部152は、例えば、学習モデル141を用いて、対象物の画像に対する推定処理を行い、推定結果をロボット制御部153に出力する。なお、推定部152は、例えば、対象物が配置されるトレイ等の位置および姿勢をさらに推定してもよい。トレイの位置および姿勢を推定する構成については、後に説明する。
ロボット制御部153は、推定された対象物の位置および姿勢に基づいて、ロボットアーム30を制御する信号を生成し、通信I/F11を通じてロボットアーム30に出力する。ロボット制御部153は、例えば、現在のロボットアーム30の位置および姿勢に関する情報を取得する。そして、ロボット制御部153は、現在のロボットアーム30の位置および姿勢と、推定された対象物の位置および姿勢に応じて、ロボットアーム30が対象物を把持する際に移動する軌道を生成する。なお、ロボット制御部153は、トレイ等の位置および姿勢に基づいて、ロボットアーム30が移動する軌道を修正してもよい。
図3は、ロボットアームの制御に関する処理の一例を示す図である。図3に示すように、推定部152は、バラ積み画像から、ターゲットとなる対象物の位置および姿勢を推定する。同様に、推定部152は、バラ積み画像から、対象物が配置されたトレイ等の位置および姿勢を推定してもよい。ロボット制御部153は、推定された対象物およびトレイ等のモデルに基づいて、ロボットアーム30の手先の位置の座標および姿勢を算出し、ロボットアーム30の軌道を生成する。
なお、ロボット制御部153は、ロボットアーム30が対象物を把持した後に、把持した対象物を整列させるためのロボットアーム30の動作を制御する信号を、さらに出力してもよい。図4は、ロボットアームの制御に関する処理の別の一例を示す図である。図4に示すように、画像取得部151は、カメラ20により撮影された、ロボットアーム30により把持された対象物を撮影した画像を取得する。推定部152は、ターゲットとなる、ロボットアーム30に把持された対象物の位置および姿勢を推定し、ロボット制御部153に出力する。また、画像取得部151は、カメラ20により撮影された、把持された対象物の移動先となる、整列先のトレイ等の画像をさらに取得してもよい。その際、画像取得部151は、整列先のトレイ等に既に整列された対象物の画像(整列済み画像)をさらに取得する。推定部152は、整列先の画像、または整列済み画像から、整列先となるトレイ等の位置および姿勢、並びに既に整列済みである対象物の位置および姿勢を推定する。そして、ロボット制御部153は、推定された、ロボットアーム30に把持された対象物の位置および姿勢、整列先となるトレイ等の位置および姿勢、並びに既に整列済みである対象物の位置および姿勢に基づいて、ロボットアーム30の手先の位置の座標および姿勢を算出し、対象物を整列させる際のロボットアーム30の軌道を生成する。
次に、推定部152における推定処理について説明する。推定部152は、例えば公知のダウンサンプリング、アップサンプリング、スキップコネクションを持つ物体検出モデルを応用したモデルを用いて、対象物の特徴量を抽出する。図5は、検出モデルの一例を示す図である。図5に示す物体検出モデルにおいて、d1層は、例えばバラ積み画像P1(320×320ピクセル)を畳み込みニューラルネットワークb1を介してダウンサンプリングによって縦横40×40グリッドに区分し、各グリッドについて複数の特徴量(例えば256種類)を算出する。また、d1層より下位の層にあたるd2層は、d1層で区分されたグリッドを、d1層よりも粗く(例えば20×20グリッドに)区分して、各グリッドの特徴量を算出する。同様に、d1層およびd2層よりも下位の層にあたるd3層およびd4層は、d2層で区分されたグリッドを、それぞれより粗く区分する。d4層はアップサンプリングによって、より精細な区分で特徴量を算出し、同時にスキップコネクションs3によりd3層の特徴量と統合してu3層を生成する。スキップコネクションは、単純な加算、特徴量の連結でも良く、d3層の特徴量に対して畳み込みニューラルネットワークのような変換が加えられていても良い。同様にu3層をアップサンプリングして算出した特徴量とd2層の特徴量をスキップコネクションs2により統合してu2層を生成する。さらに同様にu1層を生成する。この結果、u1層においては、d1層と同様に、40×40グリッドに区分された各グリッドの特徴量が算出される。
図6は、特徴検出層(u1)が出力する特徴マップの一例を示す図である。図6に示す特徴マップの水平方向は、40×40のグリッドに区分されたバラ積み画像P1の水平方向の各グリッドを示し、垂直方向は、垂直方向の各グリッドを示す。また、図6に示す特徴マップの奥行方向は、各グリッドにおける特徴量の要素を示す。
図7は、対象物の位置および姿勢の推定結果の一例を示す図である。図7に示すように、推定部は、対象物の位置を示す2次元座標(Δx,Δy)、対象物の姿勢を示すクオタニオン(qx,qy,qz,qw)、およびクラス分類のスコア(C0,C1,…,Cn)を出力する。なお、ここでは、推定結果として、対象物の位置を示す座標のうち、カメラ20から対象物までの距離を示す深度の値は算出されない。深度の値を算出する構成については、後に説明する。なお、ここで言う深度とは、カメラの光軸に平行なz軸方向における、カメラのz座標から対象物のz座標までの距離をいう。なお、クラス分類のスコアはグリッドごとに出力される値であって、そのグリッドに対象物の中心点が含まれている確率である。例えば、対象物の種類がn種類だった場合に、これに“対象物の中心点が含まれていない確率”を加えてn+1個のクラス分類のスコアが出力される。例えば、対象物となるワークが1種類のみの場合は、2個のクラス分類のスコアが出力される。また、同一グリッド内に複数の対象物が存在する場合、より上に積まれている物体の確率を出力する。
図7において、点CはグリッドGxの中心を示し、座標(Δx,Δy)である点ΔCは、例えば、検出された対象物の中心点を示す。すなわち、図7に示す例において、対象物の中心は、グリッドGxの中心点Cから、x軸方向にΔx、y軸方向にΔyだけオフセットしている。
なお、図7に代えて、図8に示すように対象物の中心以外の任意の点a、b、cを設定し、グリッドGxの中心の点Cからの任意の点a、b、cの座標(Δx1,Δy1、Δz1、Δx2,Δy2、Δz2、x3,Δy3、Δz3)を出力してもよい。なお、任意の点は対象物のどの位置に設定してもよく、1点でも複数の点でも構わない。
なお、対象物の大きさに比してグリッドの区分が粗いと、複数の対象物が一つのグリッドに入ってしまい、各対象物の特徴が交じり合って誤検出するおそれがあるため、ここでは、最終的に生成された精細な(40×40グリッドの)特徴量が算出される特徴抽出層(u1)の出力である特徴マップのみ利用する。
また、ここでは、例えばステレオカメラを用いて、左右2種類の画像を撮影することにより、カメラ20から対象物までの距離を特定する。図9は、ステレオカメラにより撮影されたバラ積み画像の一例を示す図である。図9に示すように、画像取得部151は、左画像P1Lおよび右画像P1Rの2種類のバラ積み画像を取得する。また、推定部152は、左画像P1Lおよび右画像P1Rの両方に対して、学習モデル141を用いた推定処理を行う。なお、推定処理を行う際に、左画像P1Lに対して用いられる学習パラメータ141bの一部、またはすべてを、右画像P1Rに対する重み付けとして共有してもよい。なお、ステレオカメラではなく、1台のカメラを用い、カメラの位置をずらして、2か所で左右2種の画像に相当する画像を撮影してもよい。
そこで、ここでは、推定部152は、左画像P1Lの特徴量と、右画像P1Rの特徴量とを組み合わせたマッチングマップを用いることにより、対象物の誤認識を抑制する。マッチングマップは、各特徴量について、右画像P1Rと左画像P1Lとで特徴量の相関の強弱を示す。すなわち、マッチングマップを用いることにより、各画像における特徴量に着目して、左画像P1Lと右画像P1Rとのマッチングを図ることができる。
図10は、バラ積み画像とマッチングマップとの関係の一例を示す図である。図10に示すように、左画像P1Lを基準とし、右画像P1Rとの対応をとったマッチングマップMLにおいては、左画像P1Lの対象物W1Lの中心点が含まれるグリッドの特徴量と、右画像P1Rに含まれる特徴量との相関が最も大きいグリッドMLaが強調して表示される。同様に、右画像P1Rを基準とし、左画像P1Lとの対応をとったマッチングマップMRにおいても、右画像P1Rの対象物W1Rの中心点が含まれるグリッドの特徴量と、左画像P1Lに含まれる特徴量との相関が最も大きいグリッドMRaが強調して表示される。また、マッチングマップMLにおいて相関が最も大きいグリッドMLaは、左画像P1Lにおける対象物W1Lが位置するグリッドに対応し、マッチングマップMRにおいて相関が最も大きいグリッドMRaは、右画像P1Rにおける対象物W1Rが位置するグリッドに対応する。これにより、左画像P1Lにおいて対象物W1Lが位置するグリッドと、右画像P1Rにおいて対象物W1Rが位置するグリッドとが一致することを特定できる。すなわち、図9においては、一致するグリッドは、左画像P1LのグリッドG1Lと、右画像P1RのグリッドG1Rである。これにより、左画像P1Lにおける対象物W1LのX座標と、右画像P1Rにおける対象物W1RのX座標とに基づいて、対象物W1に対する視差を特定できるので、カメラ20から対象物W1までの深度zを特定することができる。
図11は、推定処理の一例を示すフローチャートである。また、図12は、推定処理の一例を示す図である。以降、図9〜図12を用いて説明する。まず、画像取得部151は、図9に示す左画像P1Lおよび右画像P1Rのように、対象物の左右の各画像を取得する(ステップS201)。次に、推定部152は、左右の各画像の水平方向の各グリッドについて、特徴量を算出する。ここで、上で述べたように、各画像を40×40のグリッドに区分し、各グリッドについて256個の特徴量を算出する場合、各画像の水平方向において、式(1)の左辺第1項および第2項(第1項の行列と第2項の行列の積)に示すような40行40列の行列が得られる。
次に、推定部152は、図12に示す処理mを実行する。まず、推定部152は、例えば、式(1)により、左画像P1Lから抽出した特定の列の特徴量に、右画像P1Rから抽出した同じ列の特徴量を転置したものの行列積を計算する。式(1)において、左辺第1項は、左画像P1Lの特定の列の水平方向における1番目のグリッドにおける各特徴量l11乃至l1nが、それぞれ行方向に並んでいる。一方、式(1)の左辺第2項においては、右画像P1R特定の列の水平方向における1番目のグリッドの各特徴量r11乃至r1nが、それぞれ列方向に並んでいる。すなわち、左辺第2項の行列は、右画像P1Rの特定の列の水平方向にグリッドの各特徴量r11乃至r1mがそれぞれ行方向に並んだ行列を転置したものである。また、式(1)の右辺は、左辺第1項の行列と、左辺第2項の行列の行列積とを計算したものである。式(1)の右辺の1列目は、右画像P1Rから抽出した1グリッド目の特徴量と左画像P1Lから抽出した特定の列の水平方向の各グリッドの特徴量の相関を表し、1行目は、左画像P1Lから抽出した1グリッド目の特徴量と右画像P1Rから抽出した特定の列の水平方向の各グリッドの特徴量の相関を表す。すなわち、式(1)の右辺は、左画像P1Lの各グリッドの特徴量と、右画像P1Rの各グリッドの特徴量との相関マップを示す。なお、式(1)において、添字「m」は各画像の水平方向のグリッドの位置を示し、添え字「n」は各グリッドにおける特徴量の番号を示す。すなわち、mは1〜40であり、nは1〜256である。
次に、推定部152は、算出された相関マップを用いて、行列(1)に示すような左画像P1Lに対する右画像P1RのマッチングマップMLを算出する。左画像P1Lに対する右画像P1RのマッチングマップMLは、例えば、相関マップの行方向に対してSoftmax関数を適用することにより算出される。これにより、水平方向の相関の値を正規化している。つまり、行方向の値をすべて合計すると1になるよう変換している。
次に、推定部152は、算出されたマッチングマップMLに、例えば、式(2)により、右画像P1Rから抽出された特徴量を畳み込む。式(2)の左辺第1項は、行列(1)を転置したものであり、左辺第2項は、式(1)の左辺第2項の行列である。なお、本発明では、相関を取るための特徴量と、マッチングマップに畳み込むための特徴量とは同じものを用いているが、抽出された特徴量から畳み込みニューラルネットワーク等によって、新たに相関を取るための特徴量と畳み込むための特徴量を別々に生成しても良い。
次に、推定部152は式(2)で得られた特徴量を左画像P1Lから抽出された特徴量に連結させて、例え畳み込みニューラルネットワークによって新たな特徴量を生成する。このように、左右の画像の特徴量を統合することにより、位置、姿勢の推定精度が向上する。なお、図12における処理mは複数回繰り返しても良い。
次に、推定部152はここで得られた特徴量から、例えば畳み込みニューラルネットワークによって位置、姿勢およびクラス分類を推定する。あわせて、推定部152は、算出された相関マップを用いて、行列(2)に示すような右画像P1Rに対する左画像P1LのマッチングマップMRを算出する(ステップS202)。右画像P1Rに対する左画像P1LのマッチングマップMRも、左画像P1Lに対する右画像P1RのマッチングマップMLと同様に、例えば、相関マップの行方向に対してSoftmax関数を適用することにより算出される。
次に、推定部152は、算出されたマッチングマップに、例えば、式(3)により、左画像P1Lの特徴量を畳み込む。式(3)の左辺第1項は、行列(2)であり、左辺第2項は、式(1)の左辺第2項の行列の転置前のものである。
次に推定部152は、あらかじめ設定しておいた閾値と、左画像P1Lから推定したターゲット(対象物)のクラス分類の推定結果が一番大きいグリッドを選択して比較する(ステップS203)。閾値をこえていなかった場合は、ターゲットが無いとして終了する。閾値をこえていた場合は、そのグリッドに対する右画像P1RとのマッチングマップMLから、一番大きい値のグリッドを選択する(ステップS204)。
次に、選択したグリッドにおいて、右画像P1Rのターゲットのクラス分類の推定結果とあらかじめ設定しておいた閾値とを比較する(ステップS208)。閾値をこえていた場合は、そのグリッドに対する左画像P1LとのマッチングマップMLから一番大きい値のグリッドを選択する(ステップS209)。閾値を超えていない場合は、左画像P1Lの推定結果から選択したグリッドのクラス分類スコアを0にしてステップS203へ戻る(ステップS207)。
次に、ステップS209にて選択したマッチングマップMLのグリッドと、ステップS204にて左画像P1Lの推定結果から選択したグリッドが等しいかを比較する(ステップS210)。グリッドが異なる場合は、ステップS204にて左画像P1Lの推定結果から選択したグリッドのクラス分類スコアを0にして、ステップS203のグリッドの選択に戻る(ステップS207)。最終的に、左画像P1Lおよび右画像P1Rで選択したグリッドの位置情報(例えば、図1における水平方向xの値)の検出結果から視差を算出する(ステップS211)。
次に、ステップS211から算出した視差をもとに、ターゲットの深度を算出する(ステップS212)。なお、複数のターゲットに対して深度を算出する場合は、ステップS211の後、左画像P1Lおよび右画像P1Rの推定結果から選択したグリッドのクラス分類スコアを0にしてからステップS203に戻り、以後、ステップS212までを繰り返せば良い。
以上述べたように、画像処理装置10は、取得部と、推定部と、を備える。取得部は、バラ積みされたワークを撮影した第1の画像および第2の画像を取得する。推定部は、第1の画像の特徴量と、第2の画像の特徴量とのマッチングマップを生成し、第1の画像と第2の画像それぞれに対してターゲットとなる各ワークの位置と姿勢とクラス分類スコアを推定し、前記アテンションマップを用いたマッチング結果と位置の推定結果に基づいて、ワーク位置を推定することにより、ステレオカメラからワークまでの深度を算出する。これにより、物体認識における誤検出を抑制できる。
(画像処理の変形例)
以上、物体把持システム1について説明したが、上記の説明内容に限定されるものではなく、その趣旨を逸脱しない限りにおいて種々の変更が可能である。例えば、対象物(ワーク)が1種類である場合について説明したが、これに限られず、画像処理装置10が、複数のワークの種類を検出するような構成であってもよい。また、画像処理装置10は、対象物を検出するだけでなく、対象物が配置されたトレイ等の位置や姿勢をさらに検出してもよい。図13は、変形例に係るトレイを含むバラ積み画像の一例を示す図である。図13に示す例において、画像処理装置10は、対象物が配置されたトレイの位置および姿勢を特定することにより、ロボットアーム30がトレイに衝突しないような軌道を設定することができる。なお、検出する対象であるトレイは、障害物の一例である。画像処理装置10は、トレイ以外のその他の障害物となるものを検出するような構成であってもよい。
また、画像処理装置10が、例えばバラ積み画像を40×40のグリッドに区分する例について説明したが、これに限られず、より細かな、あるいは、より粗いグリッドに区分して対象物を検出してもよく、また画素単位で推定処理を行ってもよい。これにより、画像処理装置10は、より精度よくカメラと対象物との距離を算出することができる。図14は、変形例に係る位置ずれ推定モデルの一例を示す図である。図14に示すように、画像処理装置10は、左画像P1Lと右画像P1Rのうち、推定位置周辺のグリッドよりもサイズが小さい部分を切り出して結合してもよい。そして、前述した推定処理と同様に推定処理を行い、処理結果に基づいて位置ずれを推定してもよい。
また、細かな、あるいは、粗いグリッド単位や画素単位で推定処理を行う場合に、前述したのと同様に、左画像P1Lと右画像P1Rとで、それぞれ個別に推定処理を行ってもよい。図15は、変形例に係る位置ずれ推定モデルの別の一例を示す図である。図15に示す例では、画像処理装置10は、左画像P1Lと右画像P1Rとに対し、それぞれ別々に推定処理を行う。この場合においても、画像処理装置10は、前述したのと同様に、それぞれの推定処理を行う際に、左画像P1Lに対する重み付けを、右画像P1Rに対する重み付けと共有してもよい。
また、以上述べた推定処理を、バラ積みされたワーク41、42の画像に対してではなく、ロボットアーム30や、ロボットアーム30に保持されたワーク41、42、または整列先に整列されたワーク41、42に対して行ってもよい。
(対象物3次元データの取得および学習)
図16は、対象物3次元データの取得(測定)および学習のためのシステムの構成の一例を示すブロック図である。図16において、処理装置110と3次元データ測定装置140とは、ネットワークNWを通じて通信可能に接続されている。また、処理装置110は、通信I/F(インターフェース)111と、入力I/F112と、ディスプレイ113と、記憶回路114と、処理回路115とを備える。
3次元データ測定装置140は、プロジェクタ120およびカメラ130と接続されている。3次元データ測定装置140は、通信I/F141と、入力I/F142と、ディスプレイ143と、記憶回路144と、処理回路145とを備える。
プロジェクタ120は、可視光よりも波長の短い光(例えば、UV(紫外線)光)による所定のパターンの照射(投影)が可能であるとともに、可視光による照明が可能となっている。可視光による照明は、カメラ130がカラーカメラである場合には白色光による照明が行われ、カメラ130がモノクロカメラである場合は赤色光、青色光および緑色光のそれぞれによる照明が行われる。プロジェクタ120とは別に、可視光の照明装置が設けられるのでもよい。カメラ130は、可視光を撮影可能なカラーカメラまたはモノクロカメラである。
処理装置110において、通信I/F111は、ネットワークNWを通じた外部装置とのデータ入出力の通信を制御する。例えば、通信I/F111は、ネットワークカードやネットワークアダプタ、NIC(Network Interface Controller)等によって実現される。
入力I/F112は、処理回路115に接続され、処理装置110の管理者(不図示)から受け付けた入力操作を電気信号に変換して処理回路115に出力する。例えば、入力I/F112は、スイッチボタン、マウス、キーボード、タッチパネル等である。
ディスプレイ113は、処理回路115に接続され、処理回路115から出力される各種情報および各種画像データを表示する。例えば、ディスプレイ113は、液晶モニタやCRT(Cathode Ray Tube)モニタ、タッチパネル等によって実現される。
記憶回路114は、例えば、メモリ等の記憶装置により実現される。記憶回路114には、処理回路115により実行される各種のプログラムが記憶されている。また、記憶回路114には、処理回路115により各種のプログラムが実行される際に用いられる各種のデータが一時的に記憶される。記憶回路114は、対象物3次元データ1141と機械(深層)学習モデル1142とを有する。対象物3次元データ1141は、各種の対象物についての、3次元形状データとテクスチャデータとを含む。ここで言うテクスチャデータとは、RGB(Red,Green,Blue)の色データや、質感を表すメタル(反射)、ラフネス(表面粗さ)、透明度などである。また、取得対象となるテクスチャデータとしては、RGBの色データのみでもよいし、色と質感に関するデータのいずれかまたは両者を含むものでもよい。
さらに、機械(深層)学習モデル1142はニューラルネットワーク構造1142aと学習パラメータ1142bを備えている。ニューラルネットワーク構造1142aは、例えば、図5の畳み込みニューラルネットワークb1のような公知のネットワークを応用したもので、図12に示されるネットワーク構造である。学習パラメータ1142bは、例えば、畳み込みニューラルネットワークの畳み込みフィルタの重みであり、対象物の位置および姿勢を推定するために学習され、最適化されるパラメータである。
機械(深層)学習モデル1142は、物体把持システム1(図1、図2)において、カメラ20(図1、図2)から出力された画像から、ワークの位置および姿勢を推定する処理に用いられる。機械(深層)学習モデル1142は、例えば、複数のワークの位置および姿勢と、当該複数のワークを撮影した画像とを教師データして学習することにより生成される。なお、ここでは、機械(深層)学習モデル1142が、例えば、処理回路115により生成されるが、これに限られず、外部のコンピュータにより生成されてもよい。
処理回路115は、CPU(Central Processing Unit)等のプロセッサにより実現される。処理回路115は、処理装置110全体を制御する。処理回路115は、記憶回路114に記憶された各種のプログラムを読み取り、読み取ったプログラムを実行することで、各種の処理を実行する。例えば、処理回路115は、学習部1151と、データ出力部1152とを有することとなる。
学習部1151は、対象物3次元データ1141(新たに3次元データ測定装置140により測定されて蓄積されたものと、過去に蓄積されたものとの両者を含む)に基づき、画像生成ソフトウェアによりバラ積みされたワークの画像を生成して機械学習の学習データを作成し、学習データに基づいて機械(深層)学習モデル1142の機械学習を行い、学習パラメータ1142bの更新を行う。
データ出力部1152は、操作者の指示または外部からの要求に応じ、記憶回路114に記憶された対象物3次元データ1141や機械(深層)学習モデル1142のデータを出力する。
3次元データ測定装置140において、通信I/F141は、ネットワークNWを通じた外部装置とのデータ入出力の通信を制御する。例えば、通信I/F141は、ネットワークカードやネットワークアダプタ、NIC等によって実現される。また、通信I/F141は、HDMI(登録商標)(High-Definition Multimedia Interface)等の規格に従ってプロジェクタ120に出力する制御信号を送信し、プロジェクタ120から状態信号を受信する。また、通信I/F141は、カメラ130に制御信号を送信し、カメラ130から出力される画像のデータを受信する。
入力I/F142は、処理回路145に接続され、3次元データ測定装置140の管理者(不図示)から受け付けた入力操作を電気信号に変換して処理回路145に出力する。例えば、入力I/F142は、スイッチボタン、マウス、キーボード、タッチパネル等である。
ディスプレイ143は、処理回路145に接続され、処理回路145から出力される各種情報および各種画像データを表示する。例えば、ディスプレイ143は、液晶モニタやCRTモニタ、タッチパネル等によって実現される。
記憶回路144は、例えば、メモリ等の記憶装置により実現される。記憶回路144には、処理回路145により実行される各種のプログラムが記憶されている。また、記憶回路144には、処理回路145により各種のプログラムが実行される際に用いられる各種のデータが一時的に記憶される。記憶回路144は、対象物3次元データ1441を有する。対象物3次元データ1441は、処理装置110の記憶回路114に記憶される対象物3次元データ1141の一部についての元データであり、通信I/F141、ネットワークNW、処理装置110の通信I/F111を介して記憶回路114に蓄積される。
3次元データ測定装置140の処理回路145は、CPU等のプロセッサにより実現される。処理回路145は、3次元データ測定装置140全体を制御する。処理回路145は、記憶回路144に記憶された各種のプログラムを読み取り、読み取ったプログラムを実行することで、各種の処理を実行する。例えば、処理回路145は、対象物3次元データ測定部1451を有することとなる。
対象物3次元データ測定部1451は、通信I/F141を通じて、プロジェクタ120およびカメラ130を制御し、カメラ130により撮影された対象物の画像から3次元形状とテクスチャとを計測し、3次元形状データとテクスチャデータとを含む対象物3次元データを取得する。対象物の3次元形状の測定は、例えば、公知の格子法等により、対象物への所定のパターンの照射および撮影により得られた画像に基づいて行われる。対象物の3次元形状の測定は、対象物の姿勢を変更しながら行われる。
図17は、対象物3次元データの取得の処理の一例を示すフローチャートであり、撮影がカラーのカメラ130により行われる場合の処理例である。処理に際しての事前の準備として、対象物に所定の塗料を塗布しておく。所定の塗料としては、可視光よりも波長の短い光(例えば、UV(紫外線)光)の照射を受けると可視光による発光を行い、可視光に対しては無色透明となる蛍光塗料である。これは、インビジブル塗料と呼ぶこともできる。なお、以下では可視光よりも波長の短い光をUV光として説明するが、それに限られない。例えば、2光子励起により可視光よりも波長の短い光を発生させることができ、それをパターン光の照射に用いることができる。
図17において、3次元データ測定装置140は、処理を開始すると、プロジェクタ120により対象物に向けてUVパターンを照射する。そして、プロジェクタ120と所定の位置関係にあるカメラ130により対象物の撮影を行い、撮影された画像に基づいて対象物の3次元形状を算出し、記憶回路に記憶する(ステップS11)。図18は、対象物Wにプロジェクタ120からUVパターンが照射された状態の例を示す図であり、プロジェクタ120からのUV光の照射により対象物Wがインビジブル塗料により所定のパターンで発光し、その状態がカメラ130により撮影される。可視光での発光はインビジブル塗料によるものであるため、対象物Wが光沢物であったり黒色物体であったりしても問題はない。
図17に戻り、対象物の3次元形状の算出(ステップS11)は、2つ目以降のUVパターンの照射が行われた後は、以前のUVパターン下で撮影された画像も考慮して行われる。これにより、3次元形状の測定の精度が高められる。また、UVパターンの照射時に撮影だけが行われ、全てのUVパターンについて撮影が完了した後に、撮影された全ての画像に基づいて対象物の3次元形状の算出が行われるようにしてもよい。また、UVパターンの照射および撮影の際にはそのUVパターン下で撮影された画像についてだけの処理が行われ、全てのUVパターンについて撮影が完了した後に、全画像を考慮した算出が行われるようにしてもよい。
次いで、3次元データ測定装置140は、所定のUVパターンについて処理が完了したか否か判断し(ステップS12)、完了していないと判断した場合(ステップS12のNo)は、別のUVパターンの照射等(ステップS11)から繰り返す。所定のUVパターンについて処理が完了したと判断した場合(ステップS12のYes)は、次の処理に移行する。
3次元データ測定装置140は、次の処理として、プロジェクタ120または外部光源により対象物に向けて白色光を照射し、カメラ130により撮影を行い、撮影された画像に基づいてテクスチャを取得して記憶回路に記憶する(ステップS13)。図19は、対象物Wに可視光が照射された状態の例を示す図であり、プロジェクタ120からの白色光の照射により対象物Wのインビジブル塗料は無色透明となり、対象物W本来のテクスチャが表れており、その状態がカメラ130により撮影される。
また、UVパターンの照射による撮影から対象物は移動していないと推定できるため、UVパターン下で撮影された画像から取得された対象物の3次元形状とテクスチャとのマッチングは容易に行うことができる。
次いで、図17に戻り、3次元データ測定装置140は、姿勢変更後の2回目以降の処理において、点群データマッチングを行い、データ更新を行う(ステップS14)。すなわち、3次元データ測定装置140は、以前の処理で取得された対象物の3次元形状のデータと今回の処理で取得された対象物の3次元形状のデータとから、同一の部分と判断できる部分に基づいてデータを連結し、対象物の3次元形状のデータを更新していく。これにより、一方の側からの撮影だけでは捉えられない対象物の3次元形状を取得することができる。
次いで、3次元データ測定装置140は、対象物の全ての外観をカバーする所定の姿勢について処理が完了したか否か判断し(ステップS15)、完了していないと判断した場合(ステップS15のNo)は、対象物の姿勢変更を行い(ステップS16)、UVパターンの照射等(ステップS11)から繰り返す。対象物の姿勢変更は操作者の手動によるものであってもよいし、駆動機構によるものであってもよい。3次元データ測定装置140は、所定の姿勢について処理が完了したと判断した場合(ステップS15のYes)は、処理を終了する。
図20は、対象物3次元データの取得の処理の別の一例を示すフローチャートであり、撮影がモノクロのカメラ130により行われる場合の処理例である。処理に際しての事前の準備は前述したものと同様である。
図20において、3次元データ測定装置140は、処理を開始すると、プロジェクタ120により対象物に向けてUVパターンを照射する。そして、プロジェクタ120と所定の位置関係にあるカメラ130により対象物の撮影を行い、撮影された画像に基づいて対象物の3次元形状を算出し、記憶回路に記憶する(ステップS21)。対象物の3次元形状の算出は、2つ目以降のUVパターンの照射が行われた後は、以前のUVパターン下で撮影された画像も考慮して行われる。なお、UVパターンの照射時に撮影だけが行われ、全てのUVパターンについて撮影が完了した後に、撮影された全ての画像に基づいて対象物の3次元形状の算出が行われるようにしてもよい。また、UVパターンの照射および撮影の際にはそのUVパターン下で撮影された画像についてだけの処理が行われ、全てのUVパターンについて撮影が完了した後に、全画像を考慮した算出が行われるようにしてもよい。
次いで、3次元データ測定装置140は、所定のUVパターンについて処理が完了したか否か判断し(ステップS22)、完了していないと判断した場合(ステップS22のNo)は、別のUVパターンの照射等(ステップS21)から繰り返す。所定のUVパターンについて処理が完了したと判断した場合(ステップS22のYes)は、次の処理に移行する。
3次元データ測定装置140は、次の処理として、プロジェクタ120または外部光源により対象物に向けて赤色光を照射し、カメラ130により撮影を行い、撮影された画像に基づいてテクスチャの赤色成分を取得して記憶回路に記憶する(ステップS23)。UVパターンの照射による撮影から対象物は移動していないと推定できるため、UVパターン下で撮影された画像から取得された対象物の3次元形状とテクスチャとのマッチングは容易に行うことができる。
次いで、3次元データ測定装置140は、プロジェクタ120または外部光源により対象物に向けて青色光を照射し、カメラ130により撮影を行い、撮影された画像に基づいてテクスチャの青色成分を取得して記憶回路に記憶する(ステップS24)。
次いで、3次元データ測定装置140は、プロジェクタ120または外部光源により対象物に向けて緑色光を照射し、カメラ130により撮影を行い、撮影された画像に基づいてテクスチャの緑色成分を取得して記憶回路に記憶する(ステップS25)。
次いで、3次元データ測定装置140は、姿勢変更後の2回目以降の処理において、点群データマッチングを行い、データ更新を行う(ステップS26)。すなわち、3次元データ測定装置140は、以前の処理で取得された対象物の3次元形状のデータと今回の処理で取得された対象物の3次元形状のデータとから、同一の部分と判断できる部分に基づいてデータを連結し、対象物の3次元形状のデータを更新していく。
次いで、3次元データ測定装置140は、対象物の全ての外観をカバーする所定の姿勢について処理が完了したか否か判断し(ステップS27)、完了していないと判断した場合(ステップS27のNo)は、対象物の姿勢変更を行い(ステップS28)、UVパターンの照射等(ステップS21)から繰り返す。対象物の姿勢変更は操作者の手動によるものであってもよいし、駆動機構によるものであってもよい。3次元データ測定装置140は、所定の姿勢について処理が完了したと判断した場合(ステップS27のYes)は、処理を終了する。
図21は、学習データの生成および学習処理の一例を示すフローチャートである。以下では、図16に示された処理装置110により学習モデルが生成および更新される場合について説明するが、これに限られず、図示しない他のコンピュータにより行われるものでもよい。
図21に示すように、処理装置110は、対象物3次元データ1141から所望の対象物の3次元データを取得する(ステップS101)。図22は、対象物の3次元データの一例を示す図である。3次元データを取得することにより、仮想空間上において、ワークの姿勢を任意に変更して配置させることができる。
次に、図21に戻り、処理装置110は、仮想空間上に、対象物を配置する際の各種条件を設定する(ステップS102)。仮想空間への対象物の配置は、例えば公知の画像生成ソフトウェア等を用いて行うことができる。配置する対象物の数や位置、姿勢などの条件は、画像生成ソフトウェアがランダムに対象物を生成するように設定することも可能だが、これに限らず、処理装置110の管理者が任意に設定してもよい。
次に、処理装置110は、設定された条件に従い、仮想空間上に対象物を配置する(ステップS103)。次に、処理装置110は、例えば、複数の対象物が配置された仮想空間をキャプチャすることにより、配置された対象物の画像、位置および姿勢を取得する(ステップS104)。ここでは、対象物の位置および姿勢は、例えば3次元座標(x,y,z)により示され、対象物の姿勢は、物体の姿勢または回転状態を表す四元数であるクオタニオン(qx,qy,qz,qw)により示される。
図23は、複数の対象物が配置された仮想空間のキャプチャ画像の一例を示す図である。図23に示すように、仮想空間上には、複数の対象物W1aおよびW1bが、それぞれランダムな位置および姿勢にて配置される。また、以下において、ランダムに配置された対象物の画像を、「バラ積み画像」と表記する場合がある。次に、処理装置110は、取得された画像と、配置された対象物の位置および姿勢を記憶回路14に保存する(ステップS105)。さらに、処理装置110は、ステップS102からステップS105をあらかじめ定められた回数繰り返す(ステップS106)。なお、ここで記憶回路114に保存される、上記ステップによって取得された画像と対象物が配置された位置および姿勢との組み合わせを「教師データ」と表記する場合がある。ステップS102からステップS105までの処理を所定の回数繰り返すことにより、学習処理を繰り返し行うために十分な数の教師データが生成される。
そして、処理装置110は、生成された教師データを用いて所定の回数学習処理を行うことにより、ニューラルネットワーク構造1142aにおいて重み付けとして用いられる学習パラメータ1142bを生成し、または更新する(ステップS107)。このように、3次元データが取得された対象物を仮想空間上に配置することにより、学習処理に用いられる、対象物の画像と、位置および姿勢の組み合わせとを含む教師データを、容易に生成することができる。
以上、本発明の実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、その趣旨を逸脱しない限りにおいて種々の変更が可能である。
以上のように、実施形態に係る対象物3次元データ測定方法は、可視光よりも波長の短い光の照射を受けると可視光による発光を行い、可視光に対しては無色透明の塗料が塗布された対象物に対し、所定のパターンによる可視光よりも波長の短い光の照射を行って、対象物を撮影し、撮影された画像から対象物の3次元形状を測定する第1の工程と、対象物に対し、可視光の照射を行って、対象物を撮影し、撮影された画像から対象物のテクスチャを測定する第2の工程とを備える。これにより、実際の対象物から3次元形状とテクスチャとを含む対象物3次元データを容易に測定することができる。
また、第1の工程では、対象物の一つの姿勢に対して所定のパターンを複数切り替えて対象物の3次元形状を測定する。これにより、3次元形状の測定の精度を高めることができる。
また、対象物の姿勢を変更し、第1の工程による対象物の3次元形状の測定と第2の工程による対象物のテクスチャの測定とを繰り返し、点群データマッチングによりデータを連結して更新する。これにより、一方の側からの撮影だけでは捉えられない対象物の3次元形状を取得することができる。
また、第2の工程では、撮影をカラーカメラで行う場合は白色光の照射と撮影とを行い、撮影をモノクロカメラで行う場合は赤色光、青色光および緑色光のそれぞれの照射と撮影とを行う。これにより、カラーカメラとモノクロカメラとに柔軟に対応することができる。
また、実施形態に係る対象物3次元データ測定装置は、可視光よりも波長の短い光の照射を受けると可視光による発光を行い、可視光に対しては無色透明の塗料が塗布された対象物に対し、所定のパターンによる可視光よりも波長の短い光の照射を行って、対象物を撮影し、撮影された画像から対象物の3次元形状を測定する第1の処理と、対象物に対し、可視光の照射を行って、対象物を撮影し、撮影された画像から対象物のテクスチャを測定する第1の処理とを処理回路が実行する。これにより、上記の対象物3次元データ測定方法を装置として実現することができる。
また、実施形態に係る学習データ生成方法は、上記の対象物3次元データ測定方法により得られた対象物3次元データに基づき、画像生成ソフトウェアによりバラ積みされたワークの画像を生成し、機械学習の学習データとする。これにより、学習データの準備に要するコストを低減させることができる。
また、実施形態に係る学習データ生成装置は、上記の対象物3次元データ測定方法により得られた対象物3次元データに基づき、画像生成ソフトウェアによりバラ積みされたワークの画像を生成し、機械学習の学習データとする処理を処理回路が実行する。これにより、上記の学習データ生成方法を装置として実現することができる。
また、上記実施の形態により本発明が限定されるものではない。上述した各構成要素を適宜組み合わせて構成したものも本発明に含まれる。また、さらなる効果や変形例は、当業者によって容易に導き出すことができる。よって、本発明のより広範な態様は、上記の実施の形態に限定されるものではなく、様々な変更が可能である。