(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-06
(45)【発行日】2024-09-17
(54)【発明の名称】画像処理装置、部品把持システム、画像処理方法および部品把持方法
(51)【国際特許分類】
B25J 13/08 20060101AFI20240909BHJP
G06T 7/00 20170101ALI20240909BHJP
B25J 19/04 20060101ALI20240909BHJP
【FI】
B25J13/08 A
G06T7/00 350B
B25J19/04
(21)【出願番号】P 2023548005
(86)(22)【出願日】2021-09-15
(86)【国際出願番号】 JP2021033962
(87)【国際公開番号】W WO2023042306
(87)【国際公開日】2023-03-23
【審査請求日】2023-11-29
(73)【特許権者】
【識別番号】000010076
【氏名又は名称】ヤマハ発動機株式会社
(74)【代理人】
【識別番号】100105935
【氏名又は名称】振角 正一
(74)【代理人】
【識別番号】100136836
【氏名又は名称】大西 一正
(72)【発明者】
【氏名】山本 惇史
【審査官】神山 貴行
(56)【参考文献】
【文献】特開2017-030135(JP,A)
【文献】特開2017-185577(JP,A)
【文献】特表2020-532440(JP,A)
【文献】米国特許出願公開第2015/0235351(US,A1)
【文献】特開2020-015141(JP,A)
【文献】特開2017-185578(JP,A)
【文献】○松村 遼(大阪大), 原田 研介(大阪大/産総研), 堂前 幸康(産総研),バラ積みされた対象物のピッキングに対する物理シミュレータを用いた学習,ロボティクスメカトロニクス講演会2017講演会論文集 2017 JSME Conference on Robotics and Mechatronics ,一般社団法人 日本機械学会 The Japan Society of Mechanical Engineers
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00-21/02
G06T 7/00
(57)【特許請求の範囲】
【請求項1】
容器に収納された複数の部品を示す収納部品画像に含まれる前記複数の部品のうちの一の部品に対して設定された対象範囲の画像を切り出した第1パッチ画像が入力されると、前記第1パッチ画像に含まれる前記一の部品に対して前記対象範囲の位置を補正するための補正量を出力する位置合わせ部と、
前記補正量だけ前記対象範囲を補正した範囲の画像を前記収納部品画像から切り出した、前記一の部品を含む第2パッチ画像を生成する補正画像生成部と、
前記第2パッチ画像に含まれる一の部品を把持する際の位置に位置するロボットハンドにより前記第2パッチ画像に含まれる前記一の部品の把持を試行した場合の把持成功確率を算出する把持分類部と
を備え、
前記位置合わせ部は、前記対象範囲における前記部品の適正位置を示す位置判定マスクと、前記第1パッチ画像に含まれる前記部品との位置の差を教師データとして、前記第1パッチ画像と前記補正量との関係を学習す
る画像処理装置。
【請求項2】
前記位置合わせ部は、前記第1パッチ画像に含まれる前記部品の形状に基づき前記位置判定マスクを生成する請求項
1に記載の画像処理装置。
【請求項3】
前記位置合わせ部は、前記第1パッチ画像に含まれる前記部品と前記位置判定マスクとの位置の平均二乗誤差を損失関数として誤差逆伝搬させて、前記第1パッチ画像と前記補正量との関係を規定するパラメーターを更新する学習を実行する請求項
1または2に記載の画像処理装置。
【請求項4】
前記位置合わせ部は、前記第1パッチ画像を変更しつつ前記学習を繰り返す請求項
3に記載の画像処理装置。
【請求項5】
前記位置合わせ部は、前記学習を繰り返した回数が所定回数に到達すると前記学習を終了する請求項
4に記載の画像処理装置。
【請求項6】
前記位置合わせ部は、前記損失関数の収束状況に応じて前記学習を終了する請求項
4に記載の画像処理装置。
【請求項7】
前記把持分類部は、畳み込みニューラルネットワークを用いて前記第2パッチ画像から前記把持成功確率を算出する請求項1ないし
6のいずれか一項に記載の画像処理装置。
【請求項8】
容器に収納された複数の部品を示す収納部品画像に含まれる前記複数の部品のうちの一の部品に対して設定された対象範囲の画像を切り出した第1パッチ画像が入力されると、前記第1パッチ画像に含まれる前記一の部品に対して前記対象範囲の位置を補正するための補正量を出力する位置合わせ部と、
前記補正量だけ前記対象範囲を補正した範囲の画像を前記収納部品画像から切り出した、前記一の部品を含む第2パッチ画像を生成する補正画像生成部と、
前記第2パッチ画像に含まれる一の部品を把持する際の位置に位置するロボットハンドにより前記第2パッチ画像に含まれる前記一の部品の把持を試行した場合の把持成功確率を算出する把持分類部と
を備え、
前記把持分類部は、畳み込みニューラルネットワークを用いて前記第2パッチ画像から前記把持成功確率を算出し、
前記把持分類部は、前記畳み込みニューラルネットワークから出力される特徴量マップに対してアテンションマスクを加えることで前記特徴量マップに重み付けを行い、
前記アテンションマスクは、前記ロボットハンドが前記部品を把持する把持方向に延びて前記第2パッチ画像の中心を通る領域と、前記把持方向に直交して前記第2パッチ画像の中心を通る領域とに注目することを示
す画像処理装置。
【請求項9】
容器に収納された複数の部品を示す収納部品画像に含まれる前記複数の部品のうちの一の部品に対して設定された対象範囲の画像を切り出した第1パッチ画像が入力されると、前記第1パッチ画像に含まれる前記一の部品に対して前記対象範囲の位置を補正するための補正量を出力する位置合わせ部と、
前記補正量だけ前記対象範囲を補正した範囲の画像を前記収納部品画像から切り出した、前記一の部品を含む第2パッチ画像を生成する補正画像生成部と、
前記第2パッチ画像に含まれる一の部品を把持する際の位置に位置するロボットハンドにより前記第2パッチ画像に含まれる前記一の部品の把持を試行した場合の把持成功確率を算出する把持分類部と
を備え、
前記複数の部品を示す輝度画像と、前記複数の部品を示す深度画像とを取得する画像取得部と、
前記画像取得部が取得した前記輝度画像と前記深度画像とを合成することで前記収納部品画像を生成する画像合成部と、
前記収納部品画像から前記第1パッチ画像を生成して前記位置合わせ部に入力するパッチ画像生成部と
をさらに備え
、
前記画像合成部は、前記深度画像の深度で前記輝度画像の輝度を重み付けした深度重み付けグレースケール画像を前記収納部品画像として生成する画像処理装置。
【請求項10】
請求項1ないし
9のいずれか一項に記載の画像処理装置と、
ロボットハンドと
を備え、
前記画像処理装置は、算出した前記把持成功確率に基づき決定した位置で前記ロボットハンドに部品を把持させる部品把持システム。
【請求項11】
容器に収納された複数の部品を示す収納部品画像に含まれる前記複数の部品のうちの一の部品に対して設定された対象範囲の画像を切り出した第1パッチ画像が
位置合わせ部に入力されると、前記
位置合わせ部が、前記第1パッチ画像に含まれる前記一の部品に対して前記対象範囲の位置を補正するための補正量を出力する工程と、
前記補正量だけ前記対象範囲を補正した範囲の画像を前記収納部品画像から切り出した、前記一の部品を含む第2パッチ画像を生成する工程と、
前記第2パッチ画像に含まれる一の部品を把持する際の位置に位置するロボットハンドにより前記第2パッチ画像に含まれる前記一の部品の把持を試行した場合の把持成功確率を算出する工程と
を備え
、
前記位置合わせ部は、前記対象範囲における前記部品の適正位置を示す位置判定マスクと、前記第1パッチ画像に含まれる前記部品との位置の差を教師データとして、前記第1パッチ画像と前記補正量との関係を学習する画像処理方法。
【請求項12】
容器に収納された複数の部品を示す収納部品画像に含まれる前記複数の部品のうちの一の部品に対して設定された対象範囲の画像を切り出した第1パッチ画像が入力されると、前記第1パッチ画像に含まれる前記一の部品に対して前記対象範囲の位置を補正するための補正量を出力する工程と、
前記補正量だけ前記対象範囲を補正した範囲の画像を前記収納部品画像から切り出した、前記一の部品を含む第2パッチ画像を生成する工程と、
前記第2パッチ画像に含まれる一の部品を把持する際の位置に位置するロボットハンドにより前記第2パッチ画像に含まれる前記一の部品の把持を試行した場合の把持成功確率を
、把持分類部が算出する工程と
を備え
、
前記把持分類部は、畳み込みニューラルネットワークを用いて前記第2パッチ画像から前記把持成功確率を算出し、
前記把持分類部は、前記畳み込みニューラルネットワークから出力される特徴量マップに対してアテンションマスクを加えることで前記特徴量マップに重み付けを行い、
前記アテンションマスクは、前記ロボットハンドが前記部品を把持する把持方向に延びて前記第2パッチ画像の中心を通る領域と、前記把持方向に直交して前記第2パッチ画像の中心を通る領域とに注目することを示す画像処理方法。
【請求項13】
容器に収納された複数の部品を示す収納部品画像に含まれる前記複数の部品のうちの一の部品に対して設定された対象範囲の画像を切り出した第1パッチ画像が
位置合わせ部に入力されると、
前記位置合わせ部が、前記第1パッチ画像に含まれる前記一の部品に対して前記対象範囲の位置を補正するための補正量を出力する工程と、
前記補正量だけ前記対象範囲を補正した範囲の画像を前記収納部品画像から切り出した、前記一の部品を含む第2パッチ画像を生成する工程と、
前記第2パッチ画像に含まれる一の部品を把持する際の位置に位置するロボットハンドにより前記第2パッチ画像に含まれる前記一の部品の把持を試行した場合の把持成功確率を算出する工程と
を備え
、
画像取得部が前記複数の部品を示す輝度画像と、前記複数の部品を示す深度画像とを取得し、
画像合成部が前記画像取得部が取得した前記輝度画像と前記深度画像とを合成することで前記収納部品画像を生成し、
パッチ画像生成部が前記収納部品画像から前記第1パッチ画像を生成して前記位置合わせ部に入力し、
前記画像合成部は、前記深度画像の深度で前記輝度画像の輝度を重み付けした深度重み付けグレースケール画像を前記収納部品画像として生成する画像処理方法。
【請求項14】
容器に収納された複数の部品を示す収納部品画像に含まれる前記複数の部品のうちの一の部品に対して設定された対象範囲の画像を切り出した第1パッチ画像が
位置合わせ部に入力されると、前記
位置合わせ部が、前記第1パッチ画像に含まれる前記一の部品に対して前記対象範囲の位置を補正するための補正量を出力する工程と、
前記補正量だけ前記対象範囲を補正した範囲の画像を前記収納部品画像から切り出した、前記一の部品を含む第2パッチ画像を生成する工程と、
前記第2パッチ画像に含まれる一の部品を把持する際の位置に位置するロボットハンドにより前記第2パッチ画像に含まれる前記一の部品の把持を試行した場合の把持成功確率を算出する工程と、
前記把持成功確率に基づき決定した位置で前記ロボットハンドに部品を把持させる工程と
を備え
、
前記位置合わせ部は、前記対象範囲における前記部品の適正位置を示す位置判定マスクと、前記第1パッチ画像に含まれる前記部品との位置の差を教師データとして、前記第1パッチ画像と前記補正量との関係を学習する部品把持方法。
【請求項15】
容器に収納された複数の部品を示す収納部品画像に含まれる前記複数の部品のうちの一の部品に対して設定された対象範囲の画像を切り出した第1パッチ画像が入力されると、前記第1パッチ画像に含まれる前記一の部品に対して前記対象範囲の位置を補正するための補正量を出力する工程と、
前記補正量だけ前記対象範囲を補正した範囲の画像を前記収納部品画像から切り出した、前記一の部品を含む第2パッチ画像を生成する工程と、
前記第2パッチ画像に含まれる一の部品を把持する際の位置に位置するロボットハンドにより前記第2パッチ画像に含まれる前記一の部品の把持を試行した場合の把持成功確率を
、把持分類部が算出する工程と、
前記把持成功確率に基づき決定した位置で前記ロボットハンドに部品を把持させる工程と
を備え
、
前記把持分類部は、畳み込みニューラルネットワークを用いて前記第2パッチ画像から前記把持成功確率を算出し、
前記把持分類部は、前記畳み込みニューラルネットワークから出力される特徴量マップに対してアテンションマスクを加えることで前記特徴量マップに重み付けを行い、
前記アテンションマスクは、前記ロボットハンドが前記部品を把持する把持方向に延びて前記第2パッチ画像の中心を通る領域と、前記把持方向に直交して前記第2パッチ画像の中心を通る領域とに注目することを示す部品把持方法。
【請求項16】
容器に収納された複数の部品を示す収納部品画像に含まれる前記複数の部品のうちの一の部品に対して設定された対象範囲の画像を切り出した第1パッチ画像が
、位置合わせ部に入力されると、
前記位置合わせ部が、前記第1パッチ画像に含まれる前記一の部品に対して前記対象範囲の位置を補正するための補正量を出力する工程と、
前記補正量だけ前記対象範囲を補正した範囲の画像を前記収納部品画像から切り出した、前記一の部品を含む第2パッチ画像を生成する工程と、
前記第2パッチ画像に含まれる一の部品を把持する際の位置に位置するロボットハンドにより前記第2パッチ画像に含まれる前記一の部品の把持を試行した場合の把持成功確率を算出する工程と、
前記把持成功確率に基づき決定した位置で前記ロボットハンドに部品を把持させる工程と
を備え
、
画像取得部が前記複数の部品を示す輝度画像と、前記複数の部品を示す深度画像とを取得し、
画像合成部が前記画像取得部が取得した前記輝度画像と前記深度画像とを合成することで前記収納部品画像を生成し、
パッチ画像生成部が前記収納部品画像から前記第1パッチ画像を生成して前記位置合わせ部に入力し、
前記画像合成部は、前記深度画像の深度で前記輝度画像の輝度を重み付けした深度重み付けグレースケール画像を前記収納部品画像として生成する部品把持方法。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、容器に収納された複数の部品をロボットハンドによって把持する技術に関し、特にビンピッキングに対して好適に適用できる。
【背景技術】
【0002】
非特許文献1には、ビンピッキングにおいて、ロボットハンドによって部品を把持した場合の把持成功確率を算出する技術が開示されている。具体的には、ビン内に堆積する複数の部品を撮像したビン画像から、対象部品を含む所定サイズのパッチ画像が切り出される。そして、このパッチ画像の位置(切り出し位置)に位置するロボットハンドによって、パッチ画像に含まれる対象部品の把持を試行した場合の把持成功確率が算出される。かかる把持成功確率は、異なる対象部品のそれぞれについて算出される。
【0003】
さらに、部品を把持するロボットの位置成分としては、X方向あるいはY方向といった並進方向のみならず、回転方向も存在する。そこで、ロボットの回転位置の違いを反映させるために、ビン画像を回転させる演算を行うことで、互いに異なる角度に対応した複数のビン画像が生成され、複数のビン画像のそれぞれについて、パッチ画像の切り出しと、把持成功確率の算出とが実行される。
【先行技術文献】
【非特許文献】
【0004】
【文献】Improving DataEfficiency of Self-supervised Learning for Robotic Grasping (2019)
【発明の概要】
【発明が解決しようとする課題】
【0005】
上記の方法によれば、ロボットハンドの回転角度の数と対象部品の数とを乗じた枚数のパッチ画像が取得されて、各パッチ画像について把持成功確率が算出される。そのため、演算負荷が過大になるという問題があった。
【0006】
この発明は上記課題に鑑みなされたものであり、ロボットハンドによって部品の把持を試行した場合の把持成功確率の算出に要する演算負荷を低減可能とする技術の提供を目的とする。
【課題を解決するための手段】
【0007】
本発明に係る画像処理装置は、容器に収納された複数の部品を示す収納部品画像に含まれる複数の部品のうちの一の部品に対して設定された対象範囲の画像を切り出した第1パッチ画像が入力されると、第1パッチ画像に含まれる一の部品に対して対象範囲の位置を補正するための補正量を出力する位置合わせ部と、補正量だけ対象範囲を補正した範囲の画像を収納部品画像から切り出した、一の部品を含む第2パッチ画像を生成する補正画像生成部と、第2パッチ画像が設定された範囲に位置するロボットハンドにより第2パッチ画像に含まれる一の部品の把持を試行した場合の把持成功確率を算出する把持分類部とを備える。
【0008】
本発明に係る画像処理方法は、容器に収納された複数の部品を示す収納部品画像に含まれる複数の部品のうちの一の部品に対して設定された対象範囲の画像を切り出した第1パッチ画像が入力されると、第1パッチ画像に含まれる一の部品に対して対象範囲の位置を補正するための補正量を出力する工程と、補正量だけ対象範囲を補正した範囲の画像を収納部品画像から切り出した、一の部品を含む第2パッチ画像を生成する工程と、第2パッチ画像が設定された範囲に位置するロボットハンドにより第2パッチ画像に含まれる一の部品の把持を試行した場合の把持成功確率を算出する工程とを備える。
【0009】
このように構成された画像処理装置および方法では、一の部品に対して設定された対象範囲の画像を切り出した第1パッチ画像が入力されると、第1パッチ画像に含まれる一の部品に対して対象範囲の位置を補正するための補正量が出力される。そして、この補正量だけ対象範囲を補正した範囲の画像を収納部品画像から切り出した、一の部品を含む第2パッチ画像が生成されて、この第2パッチ画像について把持成功確率が算出される。したがって、高い成功確率で一の部品を把持できる位置に部品を含む第2パッチ画像を、第1パッチ画像から求めた補正量に基づき得ることができる。そのため、ロボットハンドが互いに異なる複数の位置(特に回転位置)で一の部品を把持する場合に対応する複数のパッチ画像のそれぞれについて把持成功確率を算出する必要が無い。こうして、ロボットハンドによって部品の把持を試行した場合の把持成功確率の算出に要する演算負荷を低減することが可能となっている。
【0010】
また、位置合わせ部は、対象範囲における部品の適正位置を示す位置判定マスクと、第1パッチ画像に含まれる部品との位置の差を教師データとして、第1パッチ画像と補正量との関係を学習するように、画像処理装置を構成してもよい。かかる構成では、第1パッチ画像が示す部品の適正位置からのずれを位置判定マスクによって簡便に評価しつつ学習を行うことができる。
【0011】
また、位置合わせ部は、第1パッチ画像に含まれる部品の形状に基づき位置判定マスクを生成するように、画像処理装置を構成してもよい。かかる構成では、部品の形状に即した適切な位置判定マスクを用いて学習を行うことができる。
【0012】
また、位置合わせ部は、第1パッチ画像に含まれる部品と位置判定マスクとの位置の平均二乗誤差を損失関数として誤差逆伝搬させて、第1パッチ画像と補正量との関係を規定するパラメーターを更新する学習を実行するように、画像処理装置を構成してもよい。かかる構成では、第1パッチ画像が示す部品の適正位置からのずれを平均二乗誤差によって的確に評価しつつ学習を行うことができる。
【0013】
また、位置合わせ部は、第1パッチ画像を変更しつつ学習を繰り返すように、画像処理装置を構成してもよい。かかる構成では、高精度な学習結果を得ることができる。
【0014】
なお、学習を終了する条件としては、種々想定できる。例えば、位置合わせ部は、学習を繰り返した回数が所定回数に到達すると学習を終了するように、画像処理装置を構成してもよい。あるいは、位置合わせ部は、損失関数の収束状況に応じて学習を終了するように、画像処理装置を構成してもよい。
【0015】
また、把持分類部は、畳み込みニューラルネットワークを用いて第2パッチ画像から把持成功確率を算出するように、画像処理装置を構成してもよい。これによって、第2パッチ画像から把持成功確率を的確に算出することが可能となる。
【0016】
また、把持分類部は、畳み込みニューラルネットワークから出力される特徴量マップに対してアテンションマスクを加えることで特徴量マップに重み付けを行い、アテンションマスクは、ロボットハンドが部品を把持する把持方向に延びて第2パッチ画像の中心を通る領域と、把持方向に直交して第2パッチ画像の中心を通る領域とに注目することを示すように、画像処理装置を構成してもよい。これによって、部品の向きや、部品の周囲の状況(他の部品の有無)がロボットハンドによる把持に与える影響を加味しつつ、把持成功確率を的確に算出することが可能となる。
【0017】
また、複数の部品を示す輝度画像と、複数の部品を示す深度画像とを取得する画像取得部と、画像取得部が取得した輝度画像と深度画像とを合成することで収納部品画像を生成する画像合成部と、収納部品画像から第1パッチ画像を生成して位置合わせ部に入力するパッチ画像生成部とをさらに備えるように、画像処理装置を構成してもよい。かかる構成では、複数の部品をそれぞれ示す輝度画像と深度画像とを合成することで合成画像が生成される。こうして生成された合成画像では、複数の部品のうち、比較的高い位置の部品の形状が残りやすく、かかる部品(換言すれば、把持成功確率が高い部品)を認識するのに有利となる。
【0018】
本発明にかかる部品把持システムは、上記の画像処理装置と、ロボットハンドとを備え、画像処理装置は、算出した把持成功確率に基づき決定した位置でロボットハンドに部品を把持させる。
【0019】
本発明に係る部品把持方法は、容器に収納された複数の部品を示す収納部品画像に含まれる複数の部品のうちの一の部品に対して設定された対象範囲の画像を切り出した第1パッチ画像が入力されると、第1パッチ画像に含まれる一の部品に対して対象範囲の位置を補正するための補正量を出力する工程と、補正量だけ対象範囲を補正した範囲の画像を収納部品画像から切り出した、一の部品を含む第2パッチ画像を生成する工程と、第2パッチ画像が設定された範囲に位置するロボットハンドにより第2パッチ画像に含まれる一の部品の把持を試行した場合の把持成功確率を算出する工程と、把持成功確率に基づき決定した位置でロボットハンドに部品を把持させる工程とを備える。
【0020】
このように構成された部品把持システムおよび方法では、ロボットハンドが互いに異なる複数の位置(特に回転位置)で一の部品を把持する場合に対応する複数のパッチ画像のそれぞれについて把持成功確率を算出する必要が無い。その結果、ロボットハンドによって部品の把持を試行した場合の把持成功確率の算出に要する演算負荷を低減することが可能となっている。
【発明の効果】
【0021】
本発明によれば、ロボットハンドによって部品の把持を試行した場合の把持成功確率の算出に要する演算負荷を低減することが可能となる。
【図面の簡単な説明】
【0022】
【
図1】本発明に係る部品把持システムの一例を模式的に示す平面図。
【
図2】
図1の部品把持システムで部品の把持に使用されるロボットハンドを模式的に示す斜視図。
【
図3】制御装置が備える電気的構成の一例を示すブロック図。
【
図4A】
図1の部品把持システムで実行されるビンピッキングの一例を示すフローチャート。
【
図4B】
図4Aのビンピッキングで実行されるパッチ画像処理の一例を示すフローチャート。
【
図4C】
図4Aのビンピッキングで実行される把持推論の一例を示すフローチャート。
【
図4D】
図4Cの把持推論で実行される把持対象部品の決定の一例を示すフローチャート。
【
図5A】
図4Bのパッチ画像処理で実行される動作を模式的に示す図。
【
図5B】
図4Bのパッチ画像処理で実行される動作を模式的に示す図。
【
図5C】
図4Bのパッチ画像処理で実行される動作を模式的に示す図。
【
図5D】
図4Bのパッチ画像処理で実行される動作を模式的に示す図。
【
図5E】
図4Bのパッチ画像処理で実行される動作を模式的に示す図。
【
図6A】
図4Cの把持推論で実行される動作を模式的に示す図。
【
図6B】
図4Cの把持推論で実行される動作を模式的に示す図。
【
図6C】
図4Cの把持推論で実行される動作を模式的に示す図。
【
図7】
図4Cの把持推論で実行される動作を模式的に示す図。
【
図8A】位置合わせニューラルネットワークの学習データの収集方法の一例を示すフローチャート。
【
図8B】パッチ画像から生成される位置判定マスクの一例を模式的に示す図。
【
図9A】
図8Aで収集された学習データを位置合わせニューラルネットワークに学習させるフローチャートの一例。
【
図9B】損失関数の算出にマスクの使用が有利となる一例を模式的に示す図。
【
図10A】把持分類ニューラルネットワークに学習を実行させるフローチャートの一例。
【
図10B】把持分類ニューラルネットワークに学習を実行させるフローチャートの一例。
【
図10C】把持分類ニューラルネットワークに学習を実行させるフローチャートの一例。
【
図11】把持分類ネットワーク部の把持分類ニューラルネットワークの再学習方法の一例を示すフローチャート。
【
図12】把持分類ネットワーク部の把持分類ニューラルネットワークの変形例。
【発明を実施するための形態】
【0023】
図1は本発明に係る部品把持システムの一例を模式的に示す平面図であり、
図2は
図1の部品把持システムで部品の把持に使用されるロボットハンドを模式的に示す斜視図である。これらの図および以下の図では、水平方向であるX方向、X方向に直交する水平方向であるY方向および鉛直方向であるZ方向を適宜示す。これらX方向、Y方向およびZ方向はグローバル座標系を構成する。
図1に示すように、部品把持システム1は、制御装置3および作業ロボット5を備え、作業ロボット5は制御装置3による制御に基づき作業(ビンピッキング)を実行する。
【0024】
具体的には、作業ロボット5の作業スペースには、部品ビン91と、キッティングトレイ92とが配置される。部品ビン91は、部品を収納する複数の区画収納911を有し、各区画収納911では多数の部品が堆積している。キッティングトレイ92は、部品を収納する複数の区画収納921を有し、各区画収納921には所定個数の部品が載置される。そして、作業ロボット5は、部品ビン91の区画収納911から部品を把持して(ビンピッキング)、キッティングトレイ92の区画収納921に移載する。また、部品ビン91とキッティングトレイ92との間には、ゴミ箱93が配置され、不良部品が検知された場合には、作業ロボット5は、この不良部品をゴミ箱93に廃棄する。
【0025】
作業ロボット5は、先端に設けられたロボットハンド51を備えたスカラーロボットであり、ロボットハンド51によって部品を掴んでロボットハンド51を移動させることで、部品ビン91からキッティングトレイ92への部品の移載や、ゴミ箱93への部品の廃棄を実行する。このロボットハンド51は、
図2に示すように、X方向、Y方向、Z方向およびθ方向に自由度を有する。ここで、θ方向は、Z方向に平行な回転軸を中心とする回転方向である。また、ロボットハンド51は、把持方向Gに配列された2本の爪511を有し、各爪511は、把持方向Gに直交する平板形状を有する。ロボットハンド51は、2本の爪511の間隔を把持方向Gに拡大・縮小させることができ、これらの爪511によって部品を把持方向Gから挟むことで部品を把持する。なお、
図2では、把持方向GがX方向に平行であるが、ロボットハンド51のθ方向への位置によっては、当然のことながら、把持方向GはX方向に対して傾きうる。
【0026】
さらに、部品把持システム1は、2台のカメラ81、83と、質量計85とを備える。カメラ81は、部品ビン91の区画収納911に堆積する多数の部品をZ方向(上方)から撮像するプランビューカメラであり、作業ロボット5の作業スペースにZ方向から対向する。このカメラ81は、撮像対象(部品)を輝度で示すグレースケール画像(二次元画像)と、撮像対象までの距離を示す深度画像(三次元画像)とを撮像する。深度画像を取得する具体的な方法としては、位相シフト法やステレオマッチング法を用いることができる。カメラ83は、ロボットハンド51に把持された部品をY方向から撮像するサイドビューカメラであり、ロボットハンド51の土台に水平に取り付けられている。このカメラ83は、撮像対象(部品)を輝度で示すグレースケール画像(二次元画像)を撮像する。また、質量計85は、キッティングトレイ92の区画収納921に載置された部品の質量を計測する。
【0027】
図3は制御装置が備える電気的構成の一例を示すブロック図である。制御装置3は、演算部31、記憶部35およびUI(User Interface)39を備えた例えばパーソナルコンピューターである。演算部31は、例えばCPU(Central Processing Unit)等を備えたプロセッサーであり、主制御部311と画像処理部4とを有する。これら主制御部311および画像処理部4は、所定のプログラムを実行することで演算部31に展開される。主制御部311は、上述のロボットハンド51、カメラ81、83および質量計85といったハードウェアの制御を実行し、画像処理部4は、ロボットハンド51による把持の対象となる部品を認識するための画像処理を実行する。特に画像処理部4は、画像合成部41、パッチ画像生成部43、位置合わせネットワーク部45および把持分類ネットワーク部47を有する。これらの機能は以後に詳述する。
【0028】
記憶部35は、HDD(Hard Disk Drive)あるいはSSD(Solid State Drive)等の記憶装置であり、例えば、演算部31に上記の主制御部311あるいは画像処理部4を展開するためのプログラムやデータを記憶する。また、UI39は、キーボードやマウスなどの入力機器と、ディスプレイ等の出力機器とを有し、入力機器によって作業者により入力された情報を演算部31やUI39に転送したり、演算部31からの指令に応じた画像をディスプレイに表示したりする。
【0029】
図4Aは
図1の部品把持システムで実行されるビンピッキングの一例を示すフローチャートであり、
図4Bは
図4Aのビンピッキングで実行されるパッチ画像処理の一例を示すフローチャートであり、
図4Cは
図4Aのビンピッキングで実行される把持推論の一例を示すフローチャートであり、
図4Dは
図4Cの把持推論で実行される把持対象部品の決定の一例を示すフローチャートである。
【0030】
図4AのビンピッキングのステップS101では、部品ビン91の区画収納911で堆積する多数の部品のプランビュー画像がカメラ81によって撮像される。このプランビュー画像としては、上述の通りグレースケール画像Igと深度画像Idとが撮像される。主制御部311は、カメラ81から取得したこれらの画像Id、Igを画像処理部4の画像合成部41に転送し、画像合成部41はパッチ画像処理を実行する(ステップS102)。
【0031】
図5A~
図5Eは
図4Bのパッチ画像処理で実行される動作を模式的に示す図である。
図4Bのパッチ画像処理のステップS201では、画像合成部41は、グレースケール画像Ig(
図5A)と深度画像Id(
図5B)とを合成することで合成画像Ic(
図5C)を生成する。
【0032】
図5Aに示すように、グレースケール画像Igは、X方向およびY方向に二次元的に配列された複数の画素PXで構成され、画素PXの輝度Vgを複数の画素PXのそれぞれについて示す画像データである。なお、
図5Aでは、行番号を示す「m」と列番号を示す「n」との組み合わせ(m,n)によって一の画素PXを特定する表記が用いられ、グレースケール画像Igの画素PX(m,n)は輝度Vg(m,n)を有する。なお、輝度Vg(m,n)は、対応箇所が明るいほど大きな値を有する。
【0033】
図5Bに示すように、深度画像Idは、グレースケール画像Igと同様に複数の画素PXで構成され、画素PXの深度(距離)を複数の画素PXのそれぞれについて示す画像データである。
図5Bにおいても
図5Aと同様の表記が用いられ、深度画像Idの画素PX(m,n)は深度Vd(m,n)を有する。なお、深度Vd(m,n)は、対応箇所の深度が浅いほど(換言すれば、対向箇所の位置が高いほど)大きな値を有する。
【0034】
図5Cに示すように、合成画像Icは、グレースケール画像Igと同様に複数の画素PXで構成され、画素PXの合成値Vcを複数の画素PXのそれぞれについて示す画像データである。
図5Cにおいても
図5Aと同様の表記が用いられ、合成画像Icの画素PX(m,n)は合成値Vc(m,n)を有する。
【0035】
かかる合成値Vc(m,n)は、次式
Vc(m,n)=Vd(m,n)×(1+Vg(m,n)/max(Vg))
max(Vg)はグレースケール画像Igに含まれる輝度Vgのうちの最大輝度
に基づき算出される。つまり、合成値Vcは深度Vdで重み付けした輝度Vgであり、合成画像Icは、深度重み付けグレースケール画像となる。なお、上の式では、最大輝度で正規化された輝度Vgに深度Vd(重み)を乗じている。ただし、正規化は必須ではなく、そのままの輝度Vgに深度Vd(重み)を乗じて合成値Vcを算出しても構わない。要するに、輝度Vgと深度Vdとの両方に依存するように合成値Vcを定めればよい。
【0036】
図5Dでは、グレースケール画像Igおよび深度画像Idから合成画像Icを生成した実験結果が示されている。グレースケール画像Ig(フィルター前)は、カメラ81が取得した二次元画像データであり、グレースケール画像Ig(フィルター後)は、カメラ81が取得した二次元画像データの所定成分(高周波成分)をフィルターにより除去した二次元画像データである。また、深度画像Id(フィルター前)は、カメラ81が取得した三次元画像データであり、深度画像Id(フィルター前)は、カメラ81が取得した三次元画像データの所定成分(高周波成分)をフィルターにより除去した三次元画像データである。そして、合成画像Icは、フィルター後のグレースケール画像Igと深度画像Idとを上記の式により合成した深度重み付きグレースケール画像となる。ここで、「グレースケール画像Ig(フィルター後)」および「合成画像Ic」の各欄において矢印で指定される範囲(楕円の範囲)に注目すると、グレースケール画像Ig(フィルター後)で明瞭に表れていた部品が、合成画像Icにおいて表れていない。これは、該当の部品は深度が深くて(換言すれば、高さが低くて)、該当の部品の輝度Vgに対して小さな重み付けがなされた結果である。このように、グレースケール画像Igおよび深度画像Idの合成は、高い位置の部品を際立たせる効果がある。なお、
図5Dで用いたフィルターは必須ではなく、適宜省略しても同様の効果を得ることができる。
【0037】
図4BのステップS201で生成された合成画像Icは、画像合成部41からパッチ画像生成部43に出力され、パッチ画像生成部43は、合成画像Icに対してステップS202~S204の画像処理を実行する。この画像処理の具体的内容は、
図5Eに例示されている。ステップS202では、所定の閾値で合成画像Icを二値化することで二値合成画像Icが得られる。この二値合成画像Icでは、高い輝度(白)を有する閉領域が部品に対応して表れ、換言すれば二値合成画像Icにおける閉領域を部品Pと認識することができる。ステップS203では、パッチ画像生成部43は、二値合成画像Icの各部品P(閉領域Rc)に互いに異なるラベル(番号)を対応付けるラベリングを実行する。
【0038】
ステップS204では、二値合成画像Icから部品Pを含む画像を切り出すための切り出し範囲Rcが設定される。特に、切り出し範囲Rcは、部品Pを把持する際のロボットハンド51の位置を表すように設定される。この切り出し範囲Rcは、ロボットハンド51が把持の対象とする範囲(把持対象範囲)に相当し、ロボットハンド51は切り出し範囲Rcに存在する部品Pを把持することができる。例えば、
図5Eの「パッチ画像Ip」の欄では、部品Pの把持のために部品P(2)に上側から対向するロボットハンド51の2個の爪511に対応する部分が切り出し範囲Rcの白実線(Y方向に平行)で表され、各爪511の両端が移動する軌跡が白破線(X方向に平行)で表される。この例から分かるように、爪511はY方向に平行であって、θ方向におけるロボットハンド51の回転角度はゼロ度である。つまり、切り出し範囲Rcの設定は、θ方向におけるロボットハンド51の回転角度がゼロ度の状態で実行される。そして、パッチ画像生成部43は、二値合成画像Icのうち、切り出し範囲Rcの画像をパッチ画像Ipとして取得する(パッチ画像生成)。このパッチ画像Ipは、ステップS203でラベルが付された各部品Pについて生成される。
【0039】
図4Aに示すように、ステップS102のパッチ画像処理が完了すると、ステップS103の把持推論(
図4C)が実行される。
図6A~6Cおよび
図7は、
図4Cの把持推論で実行される動作を模式的に示す図である。
図4Cの把持推論を開始するにあたっては、ステップS102でのパッチ画像処理で取得された複数のパッチ画像Ipを示すパッチ画像情報(
図6A)が、画像合成部41から位置合わせネットワーク部45に出力される。
図6Aに示すように、パッチ画像情報は、パッチ画像Ipと、当該パッチ画像Ipのラベルの番号と、当該パッチ画像Ipの切り出し範囲Rcの位置とを対応付けて示す。切り出し範囲Rcの形状は各パッチ画像Ipで同一であり、切り出し範囲Rcの位置(切り出し位置)は、切り出し範囲Rcの幾何重心のX座標、Y座標およびθ座標で特定される。
【0040】
これに対して、
図4CのステップS301では、位置合わせネットワーク部45は、パッチ画像情報が示す複数のパッチ画像Ipのラベルをカウントするカウント値をゼロにリセットして(ステップS301)、当該カウント値をインクリメントする(ステップS302)。
【0041】
ステップS303では、位置合わせネットワーク部45は、現カウント値のパッチ画像Ipに含まれる物体(白閉領域)の面積が適切か否かを判定する。具体的には、下側閾値および当該下側閾値より大きい上側閾値のそれぞれと、物体面積とが比較される。そして、物体面積が下側閾値より小さいあるいは上側閾値より大きい場合には、物体面積は適切でないと判定され(ステップS303で「NO」)、ステップS302に戻る。一方、物体面積が下側閾値以上で上側閾値以下である場合には、物体面積は適切であると判定され(ステップS303で「YES」)、ステップS304に進む。
【0042】
ステップS304では、位置合わせネットワーク部45は、現カウント値のパッチ画像Ipに基づき、切り出し範囲Rcの位置を補正する補正量を算出する。つまり、位置合わせネットワーク部45は、位置合わせニューラルネットワークを有し、この位置合わせニューラルネットワークは、パッチ画像Ipが入力されると、切り出し範囲Rcの補正量(Δx,Δy,Δθ)を出力する。パッチ画像Ipと切り出し範囲Rcの補正量との関係について
図6Cを用いて説明する。
【0043】
図6Cの「切り出し範囲Rc」の欄では、切り出し範囲Rcと、当該切り出し範囲Rcで切り出されたパッチ画像Ipとが示され、「補正切り出し範囲Rcc」の欄では、切り出し範囲Rcの位置を補正量(Δx,Δy,Δθ)に応じて補正した補正切り出し範囲Rccが、これらに重ねて示されている。切り出し範囲Rcおよび補正切り出し範囲Rccは同一の形状を有しており、次の各操作
・X方向に補正距離Δxだけ平行移動…X方向平行操作
・Y方向に補正距離Δyだけ平行移動…Y方向平行操作
・θ方向に補正角度Δθだけ回転移動…θ方向回転操作
が実行された切り出し範囲Rcは、補正切り出し範囲Rccに一致する。また、切り出し範囲Rcの中心と部品Pとの位置ずれに比較して、補正切り出し範囲Rccの中心と部品Pとの位置ずれは改善されている。つまり、切り出し範囲Rcの補正は、切り出し範囲Rcと部品Pとの位置ずれを改善する補正、さらに言えば、部品Pがセンタリングされるように切り出し範囲Rcを補正切り出し範囲Rccに変換する補正である。そして、位置合わせネットワーク部45の位置合わせニューラルネットワークは、パッチ画像Ipの入力に対して、当該パッチ画像Ipの切り出し範囲Rcを補正して補正切り出し範囲Rccを算出するための補正量(Δx,Δy,Δθ)を出力する。ちなみに、切り出し範囲Rcを当該補正量だけ補正して補正切り出し範囲Rccに変換する演算は、θ方向にΔθだけ回転させる回転行列と、X方向にΔxだけ平行移動させつつY方向にΔyだけ平行移動させる平行移動行列との積により実行できる。また、画像の拡大・縮小を考慮する必要がある場合には、さらにスケーリング行列を乗じればよい。
【0044】
なお、
図6Cの例のように、部品Pが所定方向に長い形状を有する場合には、部品Pの長軸方向がロボットハンド51の把持方向Gに直交するように、センタリングを行うのが好適となる。これによって、部品Pをロボットハンド51によって的確に把持することが可能となる。
【0045】
ステップS305では、位置合わせネットワーク部45は、位置合わせニューラルネットワークが出力した補正量に基づき切り出し範囲Rcを補正することで、補正切り出し範囲Rccを作成して、二値合成画像Icのうち、補正切り出し範囲Rccの画像を補正パッチ画像Ipcとして取得する(補正パッチ画像生成)。そして、パッチ画像情報に含まれる全ラベル(換言すれば、全パッチ画像Ip)についてステップS302~S305が完了するまで(ステップS306で「YES」となるまで)、ステップS302~S305が繰り返される。
【0046】
全ラベルについて完了すると、複数の補正パッチ画像Ipcを示す補正パッチ画像情報(
図6B)が、位置合わせネットワーク部45から把持分類ネットワーク部47に出力される。
図6Bに示すように、補正パッチ画像情報は、補正パッチ画像Ipcと、当該補正パッチ画像Ipcのラベルの番号と、当該補正パッチ画像Ipcの補正切り出し範囲Rccの位置とを対応付けて示す。補正切り出し範囲Rccの形状は各補正パッチ画像Ipcで同一であり、補正切り出し範囲Rccの位置(切り出し位置)は、補正切り出し範囲Rccの幾何重心のX座標、Y座標およびθ座標で特定される。
【0047】
ステップS307では、把持分類ネットワーク部47は、補正パッチ画像情報に示される複数の補正パッチ画像Ipcのそれぞれについて、把持成功確率を算出する。具体的には、補正切り出し範囲Rccの位置(x+Δx,y+Δy,θ+Δθ)にロボットハンド51を位置させた状態で、補正切り出し範囲Rccで切り出された補正パッチ画像Ipcが示す部品Pの把持を試行した場合の成功確率(把持成功確率)が算出される。つまり、把持分類ネットワーク部47は、把持分類ニューラルネットワークを有し、この把持分類ニューラルネットワークは、補正パッチ画像Ipcが入力されると、補正パッチ画像Ipcに対応する把持成功確率を出力する。こうして、
図7に示す把持成功確率情報が取得される。
図7に示すように、把持成功確率情報は、補正パッチ画像Ipと、当該補正パッチ画像Ipcのラベルの番号と、当該補正パッチ画像Ipcの補正切り出し範囲Rccの位置と、当該補正パッチ画像Ipcの把持成功確率とを対応付けて示す。なお、把持成功確率は、
図7の例では0~1の値により示されているが、パーセントにより示されてもよい。
【0048】
ステップS308では、主制御部311は、把持分類ネットワーク部47から出力された把持成功確率情報に基づき、把持対象とする部品Pを決定する。
図4Dの把持対象部品の決定では、把持成功確率情報の各補正パッチ画像Ipcが、把持成功確率に従って降順にソートされる(ステップS401)。つまり、把持成功確率が高い補正パッチ画像Ipcほど、上位にソートされる。
【0049】
また、把持成功確率が同一の補正パッチ画像Ipcについては、補正パッチ画像Ipcに含まれる物体面積に従って降順にソートされる。つまり、物体面積が大きい補正パッチ画像Ipcほど、上位にソートされる。ステップS403では、ソート順位のカウント値がゼロにリセットされ、ステップS404では、当該カウント値がインクリメントされる。
【0050】
ステップS405では、現カウント値の補正パッチ画像Ipcに含まれる部品Pが、部品ビン91の区画収納911(容器)の端に近接しているかが判定される。具体的には、補正パッチ画像Ipcを切り出した補正切り出し範囲Rccの位置と、区画収納911の壁面との距離が所定値未満であれば、容器の端に近接している(ステップS405で「YES」)と判定され、ステップS404に戻る。一方、当該距離が所定値以上であれば、容器の端に近接していない(ステップS405で「NO」)と判定され、ステップS406に進む。ステップS406では、現カウント値の補正パッチ画像Ipcが把持対象の部品Pを示す一の補正パッチ画像Ipcに選択される。そして、
図4Aのフローチャートに戻る。
【0051】
図4AのステップS104では、ステップS103で選択された一の補正パッチ画像Ipcに対応する補正切り出し範囲Rccが示す位置にロボットハンド51が移動して、一の補正パッチ画像Ipcが示す部品Pを把持する。ステップS105では、ロボットハンド51に把持される部品Pの画像がカメラ83によって撮像され、ステップS106では、主制御部311は、カメラ83により撮像された画像から、ロボットハンド51により把持された部品Pを判定する。さらに、主制御部311は、把持された部品Pの個数が1個であるかを判定し(ステップS107)、1個でない場合(ステップS107で「NO」の場合)には、ロボットハンド51に当該部品Pを部品ビン91の区画収納911に返却させる(ステップS108)。また、把持された部品Pの個数が1個である場合(ステップS107で「YES」の場合)には、主制御部311は、把持された部品Pが正常であるかを判定し(ステップS109)、部品Pを示す面積が過小である等の異常を有する場合(ステップS109で「NO」の場合)には、ロボットハンド51に当該部品Pをゴミ箱93に廃棄させる(ステップS110)。
【0052】
一方、部品Pが正常である場合(ステップS109で「YES」の場合)には、主制御部311は、ロボットハンド51に当該部品Pをキッティングトレイ92の区画収納921に載置させる(ステップS111)。続いて、主制御部311は、質量計85により質量を計測して(ステップS112)、質量計85が示す質量が適正であるかを判定する(ステップS113)。具体的には、キッティングトレイ92に載置した部品Pに相当する質量が増加しているかに基づき、判定することができる。そして、質量が適正でない場合(ステップS113で「NO」の場合)には、主制御部311は、UI39を用いて作業者に異常を通知する一方、質量が適正である場合(ステップS113で「YES」の場合)には、主制御部311は、ステップS101に戻る。
【0053】
以上が部品把持システム1で実行されるビンピッキングの内容である。上記の把持推論では、位置合わせネットワーク部45が、切り出し範囲Rcから切り出されたパッチ画像Ipに基づき当該切り出し範囲Rcを補正する補正量(Δx,Δy,Δθ)を算出する。特に、位置合わせネットワーク部45は、位置合わせニューラルネットワークを用いて、パッチ画像Ipから切り出し範囲Rcの補正量を算出する。続いては、この位置合わせニューラルネットワークに、パッチ画像Ipと切り出し範囲Rcの補正量との関係を学習させる方法について説明する。
【0054】
図8Aは位置合わせニューラルネットワークの学習データの収集方法の一例を示すフローチャートである。このフローチャートは、制御装置3の演算部31によって実行される。このフローチャートの実行に際しては、演算によって仮想的に構築した部品把持システム1(以下、「仮想部品把持システム1」と適宜称する)においてビンピッキングを実行するシミュレーターが演算部31に構成される。このシミュレーターは、重力加速度や摩擦係数等の物理的なパラメーターに基づき、ロボットハンド51が部品ビン91の区画収納911から部品Pを把持する動作を、演算によって仮想的に実行する。
【0055】
ステップS501では、学習に必要な数のデータが取得されたかが確認される。この必要数は、例えば作業者によって予め設定することができる。必要数のデータが取得済みの場合(ステップS501で「YES」の場合)には、
図8Aのフローチャートが終了する一方、取得されたデータの数が必要数未満である場合(ステップS501で「NO」の場合)には、ステップS502に進む。
【0056】
ステップS502では、仮想部品把持システム1に配置された部品ビン91の区画収納911に、十分な部品Pが収納されているか否かが判定される。具体的には、部品Pの個数が所定数以上であるかに基づき判定することができる。部品ビン91の区画収納911内の部品Pの数が所定数未満である場合(ステップS502で「NO」の場合)には、部品ビン91の区画収納911内の部品Pの個数をリセットすることで初期値にまで増加させて(ステップS503)、ステップS501に戻る。一方、部品ビン91の区画収納911内の部品Pの数が所定数以上である場合(ステップS502で「YES」の場合)には、ステップS504に進む。
【0057】
ステップS504では、上述した現実の部品把持システム1の場合と同様にして、仮想部品把持システム1において合成画像Icが生成される。続いて、この合成画像Icに対して二値化を行って二値合成画像Icが生成されて、この二値合成画像Icに含まれる各部品Pに対してラベリングが実行される(ステップS505)。そして、ラベリングされた各部品Pに対して切り出し範囲Rcが設定されて、パッチ画像Ipが切り出される(ステップS506)。
【0058】
ステップS507は、各パッチ画像Ipをカウントするカウント値がリセットされ、ステップS508では、カウント値がインクリメントされる。そして、上記と同様にして、現カウント値のパッチ画像Ipに含まれる物体(白閉領域)の面積が適切であるかが判定される(ステップS509)。物体の面積が不適切である場合(ステップS509で「NO」の場合)にはステップS508に戻る一方、物体の面積が適切である場合(ステップS509で「YES」の場合)には、ステップS510に進む。
【0059】
こうして物体の面積が適切である一のパッチ画像Ipが選択されると、主制御部311は、当該一のパッチ画像Ipから位置判定マスクMp(
図8B)を生成する(ステップS510)。
図8Bはパッチ画像から生成される位置判定マスクの一例を模式的に示す図である。この位置判定マスクMpは、パッチ画像Ip(換言すれば、切り出し範囲Rc)と同一形状の輪郭を有し、位置判定マスクMpの中央には、パッチ画像Ipに含まれる部品Pと同一形状の部品基準パターンPrが配置されている。この部品基準パターンPrは、パッチ画像Ipに含まれる部品P(換言すれば、白閉領域)の縦・横それぞれの画素数を有するように生成される。この位置判定マスクMpは、部品Pが中央に位置する理想的なパッチ画像Ipのモデルである。そして、パッチ画像Ipと、当該パッチ画像Ipから生成された位置判定マスクMpとが対応付けられて、パッチ画像リストに格納される(ステップS511)。
【0060】
こうしてステップS511までの各ステップが完了すると、ステップS501に戻る。そして、必要数のデータが取得されるまで、換言すれば、パッチ画像リストに格納されたパッチ画像Ipと位置判定マスクMpとのペアの数が必要数に到達するまで、ステップS501~S511が繰り返し実行される。
【0061】
図9Aは
図8Aで収集された学習データを位置合わせニューラルネットワークに学習させるフローチャートの一例である。このフローチャートは、制御装置3の演算部31によって実行される。ステップS601では、学習回数が所定数に到達したかが判定される。この所定数は、例えば作業者によって予め設定することができる。
【0062】
ステップS602では、パッチ画像リストから選択した未学習のパッチ画像Ipを、位置合わせネットワーク部45の位置合わせニューラルネットワークに順伝播させる。これによって、パッチ画像Ipに対応する補正量(Δx,Δy,Δθ)が、位置合わせネットワーク部45のニューラルネットワークから出力される。さらに、位置合わせネットワーク部45は、この補正量によって切り出し範囲Rcを補正した補正切り出し範囲Rcc内の二値合成画像Ic(ステップS505で生成)を切り出すことで、補正パッチ画像Ipcを生成する(ステップS603)。
【0063】
ステップS604では、位置合わせネットワーク部45は、ステップS602で選択したパッチ画像Ipに対応する位置判定マスクMpと補正パッチ画像Ipcとを、それぞれの輪郭が一致するように重ね合わせて、位置判定マスクMpの部品基準パターンPrと補正パッチ画像Ipcに含まれる部品Pとの平均二乗誤差を損失関数として算出する。そして、ステップS605では、位置合わせニューラルネットワークにおいてこの損失関数を逆伝播させることで(誤差逆伝播)、位置合わせニューラルネットワークのパラメーターを更新する。
【0064】
なお、損失関数の算出は、位置判定マスクMpを用いずとも可能である。つまり、部品Pの画像のモーメントから主軸角を算出して、この主軸角と所定の基準角度との平均二乗誤差を損失関数としてもよい。一方、
図9Bに例示する場合では、位置判定マスクMpを用いることが有利となる。
図9Bは損失関数の算出にマスクの使用が有利となる一例を模式的に示す図である。
図9Bに示される補正パッチ画像Ipcに含まれる部品Pはジグザグの形状を有しており、この部品Pの画像のモーメントから主軸角を適切に求めることは困難である。したがって、多様な形状の部品Pに対応するという観点から、ここでは位置判定マスクMpが用いられている。
【0065】
ステップS606では、パッチ画像リストに格納されたパッチ画像Ipうち、予めテスト用として確保されて学習に使用されないパッチ画像Ip(テストデータ)を、パラメーターが更新された位置合わせニューラルネットワークに順伝播させることで、補正量が算出される。そして、この補正量に基づき、上記のステップS603~S604と同じ要領で、当該テストデータに対応する位置判定マスクMpを用いて損失関数が計算される。
【0066】
演算部31は、ステップS606が実行される度にステップS606で算出された損失関数を記憶するとともに、こうして記憶された複数の損失関数のうちの最小値を算出しておく。そして、演算部31は、直近に算出された損失関数が当該最小値を更新したかを確認する。特にステップS607では、10回連続で最小値が未更新であるか、すなわち最小値より大きな損失関数が算出されたかが判定される。そして、過去10回のうちに最小値以下の損失関数が算出されている場合(ステップS607で「NO」の場合)には、ステップS601に戻る一方、10回連続で最小値より大きな損失関数が算出された場合(ステップS607で「YES」の場合)には、
図9Aのフローチャートが終了する。なお、回数は10回に限られず、必要に応じて適宜変更できる。
【0067】
ところで、上記の把持推論では、補正パッチ画像Ipcが把持分類ネットワーク部47に入力されると、把持分類ネットワーク部47は、補正パッチ画像Ipcに含まれる部品Pを、補正パッチ画像Ipcが示す位置のロボットハンド51によって把持した場合の把持成功確率を算出する。特に、把持分類ネットワーク部47は、把持分類ニューラルネットワークを用いて、補正パッチ画像Ipcから把持成功確率を算出する。続いては、この把持分類ニューラルネットワークに、補正パッチ画像Ipcと把持成功確率との関係を学習させる方法について説明する。
【0068】
図10A~
図10Cは把持分類ニューラルネットワークに学習を実行させるフローチャートの一例である。このフローチャートは、制御装置3の演算部31によって実行される。把持分類ニューラルネットワークの学習においても、上記の位置合わせニューラルネットワークの学習と同様に、仮想部品把持システム1を構築するシミュレーターが用いられる。
【0069】
図10Aのフローチャートでは、
図8Aのそれと同様にして、学習データの収集が実行される。つまり、
図10AのステップS701~S709は、次の点を除いて、
図8AのステップS501~S509と同様である。つまり、ステップS701では、データの取得数ではなく、学習回数が所定数に到達したかが判定される。この所定数は、例えば作業者によって予め設定することができる。
【0070】
そして、
図10Aのフローチャートでは、ステップS701~S709の実行によって、物体の面積が適切である一のパッチ画像Ipが選択されると、位置合わせネットワーク部45が、上記の学習を完了した位置合わせニューラルネットワークを用いてパッチ画像Ipに対応する補正量を算出し(ステップS710)、パッチ画像Ipと補正量とを対応付けて補正量リストに格納する(ステップS711)。そして、カウント値が最大になるまで(ステップS712で「YES」となるまで)、ステップS708~S711が繰り返されて、パッチ画像Ipと補正量とのペアが補正量リストに順次格納される。カウント値が最大になると(ステップS712で「YES」)、
図10BのステップS712に進む。
【0071】
ステップS712では、位置合わせネットワーク部45は、パッチ画像Ipの切り出し範囲Rcを補正量に基づき補正して補正切り出し範囲Rccを生成し、当該補正切り出し範囲Rccに基づき補正パッチ画像Ipcを生成する処理を、補正量リストに格納されているパッチ画像Ipと補正量との各ペアについて実行する。これによって、複数の補正パッチ画像Ipcが生成される。なお、補正パッチ画像Ipcを生成する具体的な手順は、上述の通りである。
【0072】
ステップS713では、学習に必要な数のデータが取得されたかが確認される。この必要数は、例えば作業者によって予め設定することができる。必要数のデータが取得済みの場合(ステップS713で「YES」の場合)には、後述するステップS717(
図10C)に進む一方、取得されたデータの数が必要数未満である場合(ステップS713で「NO」の場合)には、ステップS714に進む。
【0073】
ステップS714では、ステップS712で生成した複数の補正パッチ画像Ipcのうちから、一の補正パッチ画像Ipcがランダムに(例えば、乱数発生器の出力に基づき)選択される。そして、ステップS715では、仮想部品把持システム1において、当該一の補正パッチ画像Ipcに含まれる部品Pの把持が、当該一の補正パッチ画像Ipcの位置に位置するロボットハンド51により試行される。なお、補正パッチ画像Ipcの位置とは、当該補正パッチ画像Ipcを切り出した補正切り出し範囲Rccの位置に相当する。そして、把持試行の成否の結果(成功の場合は1、失敗の場合は0)が、当該一の補正パッチ画像Ipcと対応付けて、成否結果リストに格納されて(ステップS716)、
図10AのステップS701に戻る。
【0074】
一方、ステップS713で必要数のデータが取得済み(YES)と判定されると、上述の通り、
図10CのステップS717に進む。ステップS717では、補正パッチ画像Ipcを左右に反転させた横反転補正パッチ画像Ipcと、補正パッチ画像Ipcを上下に反転させた縦反転補正パッチ画像Ipcと、補正パッチ画像Ipcを左右上下に反転させた縦横反転補正パッチ画像Ipcとが生成される。これによって、横反転補正パッチ画像Ipc、縦反転補正パッチ画像Ipcおよび縦横反転補正パッチ画像Ipcの3種類の画像が、成否結果リストの各補正パッチ画像Ipcについて準備される。つまり、成否結果リストに格納される補正パッチ画像Ipcの枚数の3倍の枚数の複数の補正パッチ画像Ipcが準備される。
【0075】
ステップS718では、ステップS717で生成した複数の補正パッチ画像Ipcのそれぞれが、把持分類ネットワーク部47の把持分類ニューラルネットワークにおいて順伝播され、各補正パッチ画像Ipcについて把持成功確率が算出される。そして、ステップS719は、同一の補正パッチ画像Ipcから生成された横反転補正パッチ画像Ipc、縦反転補正パッチ画像Ipcおよび縦横反転補正パッチ画像Ipcそれぞれの把持成功確率の平均値が算出される。これによって、成否結果リストに格納される各補正パッチ画像Ipcについて、把持成功確率の平均値が算出される。
【0076】
ステップS720では、「0」、「1」および「2」のうちの1個の値を乱数発生器により発生させる。そして、乱数発生で「0」が得られた場合には、ステップS719で把持成功確率が算出された各補正パッチ画像Ipcのうちからランダムに一の補正パッチ画像Ipcが選択され(ステップS721)、乱数発生で「1」が得られた場合には、当該各補正パッチ画像Ipcのうちから把持成功確率が「0.5」(換言すれば、50%)に最も近い一の補正パッチ画像Ipcが選択され(ステップS722)、乱数発生で「2」が得られた場合には、当該各補正パッチ画像Ipcのうちから把持成功確率が最も高い一の補正パッチ画像Ipcが選択される(ステップS723)。
【0077】
ステップS724では、仮想部品把持システム1において、一の補正パッチ画像Ipcが示す部品Pの把持を、当該一の補正パッチ画像Ipcの位置に位置するロボットハンド51によって試行する。そして、部品把持の成否結果(成功の場合は1、失敗の場合は0)と、ステップS719で当該一の補正パッチ画像Ipcについて算出された把持成功確率の平均値とに基づき損失関数が算出される。損失関数としては、例えば交差エントロピー誤差等の周知の種々の関数を使用できる。
【0078】
また、演算部31は、ステップS725が実行される度にステップS725で算出された損失関数を記憶するとともに、こうして記憶された複数の損失関数のうちの最小値を算出しておく。そして、演算部31は、直近に算出された損失関数が当該最小値を更新したかを確認する。特にステップS726では、10回連続で最小値が未更新であるか、すなわち最小値より大きな損失関数が算出されたかが判定される。そして、過去10回のうちに最小値以下の損失関数が算出されている場合(ステップS726で「NO」の場合)には、ステップS724の把持成否結果を、一の補正パッチ画像Ipcに対応付けて成否結果リストに格納する(ステップS727)。そして、ステップS728では、ステップS725で算出した損失関数を把持分類ニューラルネットワークにおいて逆伝播させることで(誤差逆伝播)、把持分類ニューラルネットワークのパラメーターを更新する。一方、ステップS726で、10回連続で最小値より大きな損失関数が算出された場合(「NO」の場合)には、
図10AのステップS701に戻る。なお、回数は10回に限られず、必要に応じて適宜変更できる。
【0079】
以上に示す実施形態では、一の部品Pに対して設定された切り出し範囲Rc(対象範囲)の画像を切り出したパッチ画像Ip(第1パッチ画像)が位置合わせネットワーク部45に入力されると、パッチ画像Ipに含まれる一の部品Pに対して切り出し範囲Rcの位置を補正するための補正量(Δx,Δy,Δθ)が位置合わせネットワーク部45から出力される(ステップS304)。そして、この補正量(Δx,Δy,Δθ)だけ切り出し範囲Rcを補正した補正切り出し範囲Rccの画像を合成画像Ic(収納部品画像)から切り出した、一の部品Pを含む補正パッチ画像Ipc(第2パッチ画像)が生成されて(ステップS305)、この補正パッチ画像Ipcについて把持成功確率が算出される(ステップS307)。したがって、高い成功確率で一の部品Pを把持できる位置に部品Pを含む補正パッチ画像Ipcを、パッチ画像Ipから求めた補正量(Δx,Δy,Δθ)に基づき得ることができる。そのため、ロボットハンド51が互いに異なる複数の位置(特に回転位置)で一の部品Pを把持する場合に対応する複数のパッチ画像Ipのそれぞれについて把持成功確率を算出する必要が無い。こうして、ロボットハンド51によって部品Pの把持を試行した場合の把持成功確率の算出に要する演算負荷を低減することが可能となっている。
【0080】
また、位置合わせネットワーク部45(位置合わせ部)は、切り出し範囲Rcにおける部品Pの適正位置を示す位置判定マスクMpと、パッチ画像Ipに含まれる部品Pとの位置の差を教師データとして、パッチ画像Ipと補正量(Δx,Δy,Δθ)との関係を学習する(ステップS601~S607)。かかる構成では、パッチ画像Ipが示す部品Pの適正位置からのずれを位置判定マスクMpによって簡便に評価しつつ学習を行うことができる。
【0081】
また、位置合わせネットワーク部45は、パッチ画像Ipに含まれる部品Pの形状に基づきパッチ画像Ipを生成する(ステップS510)。かかる構成では、部品Pの形状に即した適切な位置判定マスクMpを用いて学習を行うことができる。
【0082】
また、位置合わせネットワーク部45は、パッチ画像Ipに含まれる部品Pと位置判定マスクMp(の部品基準パターンPr)との位置の平均二乗誤差を損失関数として誤差逆伝搬させて、パッチ画像Ipと補正量(Δx,Δy,Δθ)との関係を規定するパラメーターを更新する学習を実行する(ステップS604~S605)。かかる構成では、パッチ画像Ipが示す部品Pの適正位置からのずれを平均二乗誤差によって的確に評価しつつ学習を行うことができる。
【0083】
また、位置合わせネットワーク部45は、パッチ画像Ipを変更しつつ学習を繰り返す(ステップS601~S607)。かかる構成では、高精度な学習結果を得ることができる。
【0084】
なお、学習を終了する条件としては、種々想定できる。上記の例では、位置合わせネットワーク部45は、学習を繰り返した回数が所定回数に到達すると学習を終了する(ステップS601)。また、位置合わせネットワーク部45は、ステップS607で損失関数の収束状況を判定した結果に応じて学習を終了する。具体的には、所定回数(10回)連続で損失関数の最小値が更新されない場合に、損失関数が収束したと判定されて、学習が終了する。
【0085】
また、複数の部品Pを示すグレースケール画像Ig(輝度画像)と、複数の部品Pを示す深度画像Idとを取得する主制御部311(画像取得部)と、主制御部311が取得したグレースケール画像Igと深度画像Idとを合成することで合成画像Icを生成する画像合成部41とが設けられている。そして、パッチ画像生成部43が、合成画像Icからパッチ画像Ipを生成して位置合わせネットワーク部45に入力する。つまり、複数の部品Pをそれぞれ示すグレースケール画像Igと深度画像Idとを合成することで合成画像Icが生成される。こうして生成された合成画像Icでは、複数の部品Pのうち、比較的高い位置の部品Pの形状が残りやすく、かかる部品(換言すれば、把持成功確率が高い部品)を認識するのに有利となる。
【0086】
このように上記の実施形態では、部品把持システム1が本発明の「部品把持システム」の一例に相当し、制御装置3が本発明の「画像処理装置」の一例に相当し、主制御部311が本発明の「画像取得部」の一例に相当し、画像合成部41が本発明の「画像合成部」の一例に相当し、パッチ画像生成部43が本発明の「パッチ画像生成部」の一例に相当し、位置合わせネットワーク部45が本発明の「位置合わせ部」の一例に相当し、位置合わせネットワーク部45が本発明の「補正画像生成部」の一例に相当し、把持分類ネットワーク部47が本発明の「把持分類部」の一例に相当し、ロボットハンド51が本発明の「ロボットハンド」の一例に相当し、部品ビン91の区画収納911が本発明の「容器」の一例に相当し、合成画像Icが本発明の「収納部品画像」の一例に相当し、深度画像Idが本発明の「深度画像」の一例に相当し、グレースケール画像Igが本発明の「輝度画像」の一例に相当し、パッチ画像Ipが本発明の「第1パッチ画像」の一例に相当し、補正パッチ画像Ipcが本発明の「第2パッチ画像」の一例に相当し、位置判定マスクMpが本発明の「位置判定マスク」の一例に相当し、部品Pが本発明の「部品」の一例に相当し、切り出し範囲Rcが本発明の「対象範囲」の一例に相当し、補正量(Δx,Δy,Δθ)が本発明の「補正量」の一例に相当する。
【0087】
なお、本発明は上記実施形態に限定されるものではなく、その趣旨を逸脱しない限りにおいて上述したものに対して種々の変更を加えることが可能である。例えば、ステップS105において、ロボットハンド51に把持される部品Pを、互いに異なる方向からカメラ83によって撮像して複数のサイドビュー画像を取得してもよい。これらサイドビュー画像は、例えば、部品Pを把持するロボットハンド51をθ方向に回転させつつ部品Pを撮像することで、取得できる。これによって、ステップS107における部品Pの個数の確認や、ステップS109における部品Pの異常(面積の過小)の確認を、複数の方向から実行することができる。
【0088】
また、把持分類ニューラルネットワークの学習に関して、
図11のフローチャートを実行してもよい。ここで、
図11は把持分類ネットワーク部の把持分類ニューラルネットワークの再学習方法の一例を示すフローチャートである。このフローチャートは、例えば、計画していたビンピッキングが終了したタイミング等に、主制御部311によって実行される。
【0089】
ステップS801では、主制御部311は、過去に実行したビンピッキングにおいて、サイドビュー画像に基づく異常(ステップS107、S108で「NO」)や、質量計測に基づく異常(ステップS113で「NO」)が検知された履歴を確認する。そして、異常が検知された回数が所定回数以上であると(ステップS802で「YES」)、把持分類ネットワーク部47の把持分類ニューラルネットワークの再学習が実行される(ステップS803)。この再学習では、異常が検知された部品Pを示す補正パッチ画像Ipcと把持成否結果(すなわち、失敗)とが教師データとして使用される。具体的には、補正パッチ画像Ipcを把持分類ニューラルネットワークで順伝播して求められる把持成否確率と把持成否結果(失敗)とに基づき誤差関数が算出されて、把持分類ニューラルネットワークにおいてこの誤差関数を逆伝播させることで、把持分類ニューラルネットワークのパラメーターが更新される(再学習)。
【0090】
つまり、
図11の例では、ロボットハンド51が把持する部品Pについて、把持状態情報(サイドビュー画像、質量)を取得した結果に基づき、把持分類ニューラルネットワークに再学習を実行させる。かかる構成では、補正パッチ画像Ipcについて求めた把持成功確率に基づき選択した部品Pの把持の実際の成否結果に応じて、把持分類ニューラルネットワークの再学習が実行され、把持分類ニューラルネットワークによる把持成功確率の算出精度を向上させることができる。
【0091】
図12は把持分類ネットワーク部の把持分類ニューラルネットワークの変形例である。この把持分類ニューラルネットワーク471では、多層の畳み込みニューラルネットワーク472と、全結合層473とが直列に配列されている。また、各畳み込みニューラルネットワーク472の出力側には、空間アテンションモジュール474と、チャネルアテンションモジュール475とが設けられており、畳み込みニューラルネットワーク472から出力された特徴量マップは、空間アテンションモジュール474およびチャネルアテンションモジュール475による重み付けを経て、次段の畳み込みニューラルネットワーク472あるいは全結合層473に入力される。
【0092】
特に空間アテンションモジュール474が特徴量マップに加えるアテンションマスクMaは、補正パッチ画像Ipc(換言すれば、補正切り出し範囲Rcc)の中心位置を通る2本の注目領域Pg、Ppを有する。つまり、アテンションマスクMaのうち、注目領域Pgおよび注目領域Ppの重みは、その他の領域の重みよりも大きく、これらの重みが特徴量マップに加えられる。ここで、注目領域Pgは把持方向Gに平行であり、注目領域Ppは把持方向Gに直交する。特に、上記の例の様に、部品Pの長軸方向が把持方向Gに直交する場合には、注目領域Ppは部品Pの長軸方向に平行となる。つまり、このアテンションマスクMaは、補正パッチ画像Ipcにおける部品Pの理想位置に対応する注目領域Ppと、当該部品Pに対してロボットハンド51の爪511がアプローチする経路に対応する注目領域Pgとに注目する。
【0093】
把持分類ニューラルネットワークでは、かかる構成のアテンションマスクMaが、畳み込みニューラルネットワーク472から出力される特徴量マップに加えられて、特徴量マップに重み付けが行われる。したがって、把持方向Gに対する部品Pの長軸方向の角度や、部品Pを把持するロボットハンド51の移動経路の状況(他の部品の有無)を、把持分類ニューラルネットワークによる判断に的確に反映させることができる。
【0094】
つまり、この変形例では、把持分類ネットワーク部47は、畳み込みニューラルネットワーク472を用いて補正パッチ画像Ipcから把持成功確率を算出する。これによって、補正パッチ画像Ipcから把持成功確率を的確に算出することが可能となる。
【0095】
また、把持分類ネットワーク部47は、畳み込みニューラルネットワーク472から出力される特徴量マップに対してアテンションマスクMaを加えることで特徴量マップに重み付けを行う。特に、アテンションマスクMaは、ロボットハンド51が部品Pを把持する把持方向Gに延びて補正パッチ画像Ipcの中心を通る注目領域Pgと、把持方向Gに直交して補正パッチ画像Ipcの中心を通る注目領域Ppとに注目することを示す。これによって、部品Pの向きや、部品Pの周囲の状況(他の部品Pの有無)がロボットハンド51による把持に与える影響を加味しつつ、把持成功確率を的確に算出することが可能となる。
【0096】
また、合成画像Icの生成方法は、上記の式を用いた例に限られず、深度画像Idの深度Vdによってグレースケール画像Igの輝度Vgを重み付けすることで合成画像Icの合成値Vcを算出する他の式によって合成画像Icを生成してもよい。
【0097】
また、上記の例では、グレースケール画像Igと深度画像Idとを合成して、合成画像Icを生成している。この際、グレースケール画像Igの輝度を反転させた反転グレースケール画像Ig(輝度画像)と深度画像Idとを合成して、合成画像Icを生成してもよい。特に黒メッキ処理が施された表面を有する部品Pを把持する場合には、反転グレースケール画像Igを用いて合成画像Icを生成するのが好適となる。
【0098】
また、二値化された合成画像Icからパッチ画像Ipを切り出す必要はなく、二値化を実行せずに合成画像Icからパッチ画像Ipを切り出してもよい。補正パッチ画像Ipcについても同様である。
【0099】
また、パッチ画像処理における部品Pに対する切り出し範囲Rcの設定態様については、種々想定できる。例えば、切り出し範囲Rcの設定は、切り出し範囲Rcの幾何重心が部品Pの幾何重心に一致するように行うことができる。ただし、この例に限られず、要するに、対象の部品Pを含むように切り出し範囲Rcを設定すればよい。
【0100】
また、ロボットハンド51の具体的な構成は、上記の例に限られない。例えば、ロボットハンド51の爪511の本数は2本に限られず、3本以上でもよい。また、負圧あるいは磁力によって吸着するロボットハンド51を用いることもできる。これらの場合であっても、ロボットハンド51が把持の対象とする範囲に切り出し範囲Rcを設定して、パッチ画像Ipを切り出し範囲Rcから切り出すことができる。
【0101】
また、上記実施形態では、グレースケール画像Igと深度画像Idとを合成した合成画像Icからパッチ画像Ipを作成している。しかしながら、グレースケール画像Igおよび深度画像Idの一方からパッチ画像Ipを作成し、当該パッチ画像Ipに基づき位置合わせネットワーク部45による補正量(Δx,Δy,Δθ)の算出と、把持分類ネットワーク部47による把持成功確率の算出とを実行するように構成してもよい。
【符号の説明】
【0102】
1…部品把持システム
3…制御装置(画像処理装置)
311…主制御部(画像取得部)
41…画像合成部
43…パッチ画像生成部
45…位置合わせネットワーク部(位置合わせ部、補正画像生成部)
47…把持分類ネットワーク部(把持分類部)
51…ロボットハンド
91…部品ビン
911…区画収納(容器)
Ic…合成画像(収納部品画像)
Id…深度画像
Ig…グレースケール画像(輝度画像)
Ip…パッチ画像(第1パッチ画像)
Ipc…補正パッチ画像(第2パッチ画像)
Mp…位置判定マスク
P…部品
Rc…切り出し範囲(対象範囲)
(Δx,Δy,Δθ)…補正量