IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ヤマハ発動機株式会社の特許一覧

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

図1
図2
図3
図4A
図4B
図4C
図4D
図5A
図5B
図5C
図5D
図5E
図6A
図6B
図6C
図7
図8A
図8B
図9A
図9B
図10A
図10B
図10C
図11
図12