(57)【要約】【課題】エンドエフェクタと物体との干渉判定を精度良く行なう制御システムを提供する。【解決手段】制御システムは、ＵＩに入力された情報に基づいて、エンドエフェクタモデルのうち可動部に対応する可動部モデルと可動方向とを設定する第１設定部と、複数の物体を含む視野領域の三次元形状を計測する計測部と、計測結果に基づいて、対象物をピッキングするときのエンドエフェクタの位置姿勢候補を選択する選択部と、位置姿勢候補のエンドエフェクタモデルと対象物以外の物体との干渉判定を行なう判定部とを備える。判定部は、エンドエフェクタモデルにおいて、設定された移動量だけ可動部モデルを可動方向に移動させた状態で干渉判定を行なう。【選択図】図４
2020179441.tif 000002
【特許請求の範囲】
【請求項１】
複数の物体の中の１つの物体を対象物としてピッキングするエンドエフェクタを有するロボットを制御する制御システムであって、
前記エンドエフェクタは、可動部と、前記可動部を移動可能に支持する支持部とを含み、
前記制御システムは、
前記エンドエフェクタの三次元形状を示す第１形状データを取得する取得部と、
ユーザインターフェースと、
前記第１形状データで示されるエンドエフェクタモデルを前記ユーザインターフェースに表示させ、前記ユーザインターフェースに入力された情報に基づいて、前記エンドエフェクタモデルのうち前記可動部に対応する可動部モデルと前記可動部モデルの可動方向とを設定する第１設定部と、
前記複数の物体を含む視野領域の三次元形状を計測する計測部と、
前記計測部の計測結果に基づいて、前記対象物をピッキングするときの前記エンドエフェクタの位置姿勢候補を選択する選択部と、
前記選択部によって選択された位置姿勢候補の前記エンドエフェクタモデルと前記対象物以外の物体との干渉判定を行なう判定部とを備え、
前記判定部は、前記エンドエフェクタモデルにおいて、設定された移動量だけ前記可動部モデルを前記可動方向に移動させた状態で前記干渉判定を行なう、制御システム。
【請求項２】
前記取得部は、前記対象物の三次元形状を示す第２形状データをさらに取得し、
前記制御システムは、さらに、
前記第２形状データで示される対象物モデルを前記エンドエフェクタモデルがピッキングするために必要な前記可動部モデルの移動量を設定する第２設定部を備え、
前記判定部は、前記第２設定部によって設定された移動量だけ前記可動部モデルを移動させる、請求項１に記載の制御システム。
【請求項３】
前記複数の物体は、互いに形状およびサイズの少なくとも一方の異なる複数種類の物体を含み、
前記取得部は、前記複数種類の物体の各々について、当該物体の三次元形状を示す第２形状データをさらに取得し、
前記制御システムは、さらに、
前記複数種類の物体の各々に対して、前記第２形状データで示される物体モデルを前記エンドエフェクタモデルがピッキングするために必要な前記可動部モデルの移動量を設定する第２設定部を備え、
前記選択部は、前記計測部の計測結果に基づいて前記対象物の種類を識別し、識別結果に応じて前記位置姿勢候補を選択し、
前記判定部は、前記選択部によって識別された種類に対して前記第２設定部によって設定された移動量だけ前記可動部モデルを移動させる、請求項１に記載の制御システム。
【請求項４】
前記視野領域の三次元形状に基づいて、前記対象物をピッキングするために必要な前記可動部モデルの移動量を設定する第２設定部をさらに備え、
前記判定部は、前記第２設定部によって設定された移動量だけ前記可動部モデルを移動させる、請求項１に記載の制御システム。
【請求項５】
前記支持部は、平行移動および回転移動の少なくとも一方が可能なように前記可動部を支持する、請求項１から４のいずれか１項に記載の制御システム。
【請求項６】
前記可動部は、複数の爪部を有し、
前記支持部は、前記複数の爪部間の距離が可変となるように、前記複数の爪部をそれぞれ平行移動可能に支持する、請求項１から４のいずれか１項に記載の制御システム。
【請求項７】
前記可動部は、複数の爪部を有し、
前記第２設定部は、
前記視野領域の三次元形状の中から最も高い位置を抽出し、
前記視野領域のうち、抽出された位置との高度差が規定値以下となる領域をラベリングし、
前記複数の爪部がラベリングされた１つの領域の周囲に位置し、かつ、前記複数の爪部がラベリングされた他の領域と重ならないように、前記複数の爪部の各々の移動量を設定する、請求項４に記載の制御システム。
【請求項８】
ユーザインターフェースを用いて、対象物をピッキングするエンドエフェクタの三次元形状を示す形状データに対する情報処理を行なう情報処理装置であって、
前記エンドエフェクタは、可動部と、前記可動部を移動可能に支持する支持部とを含み、
前記情報処理装置は、
前記エンドエフェクタの三次元形状を示す形状データを取得する取得部と、
前記形状データで示されるエンドエフェクタモデルを前記ユーザインターフェースに表示させ、前記ユーザインターフェースに入力された情報に基づいて、前記エンドエフェクタモデルのうち前記可動部に対応する可動部モデルと前記可動部モデルの可動方向とを設定する設定部とを備える、情報処理装置。
【請求項９】
複数の物体の中から１つの物体を対象物としてピッキングするエンドエフェクタを有するロボットを制御する制御方法であって、
前記エンドエフェクタは、可動部と、前記可動部を移動可能に支持する支持部とを含み、
前記制御方法は、
前記エンドエフェクタの三次元形状を示す形状データを取得するステップと、
前記形状データで示されるエンドエフェクタモデルをユーザインターフェースに表示させ、前記ユーザインターフェースに入力された情報に基づいて、前記エンドエフェクタモデルのうち前記可動部に対応する可動部モデルと前記可動部モデルの可動方向とを設定するステップと、
前記複数の物体を含む視野領域の三次元形状を計測するステップと、
計測結果に基づいて、前記対象物をピッキングするときの前記エンドエフェクタの位置姿勢候補を選択するステップと、
選択された位置姿勢候補の前記エンドエフェクタモデルと前記対象物以外の物体との干渉判定を行なうステップとを備え、
前記干渉判定を行なうステップは、前記エンドエフェクタモデルにおいて、設定された移動量だけ前記可動部モデルを前記可動方向に移動させるステップを含む、制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、制御システム、情報処理装置および制御方法に関する。
【背景技術】
【０００２】
従来、複数の物体の中から対象物をピッキングするエンドエフェクタを有するロボットが知られている。このようなピッキングでは、エンドエフェクタが対象ワークの周囲に存在する障害物（他のワークやコンテナなど）と干渉する可能性がある。このような干渉を避けるために、ピッキングするときのエンドエフェクタの位置を計算して周囲の物体との干渉判定を行なう技術が知られている。
【０００３】
例えば、特開２０１８−１４４１６６号公報（特許文献１）には、エンドエフェクタモデル登録部と、追加モデル作成部と、干渉判定部とを備える画像処理装置が開示されている。エンドエフェクタモデル登録部は、三次元ＣＡＤ（Computer Aided Design）データであるエンドエフェクタモデルを登録する。追加モデル作成部は、予め規定された一以上の立体的な図形で表現した追加領域を、エンドエフェクタモデルの表面に追加した追加モデルを作成する。干渉判定部は、エンドエフェクタモデル登録部で登録されたエンドエフェクタモデルと追加モデル作成部で作成された追加モデルが、ワークモデルに対する把持動作を妨げる可能性のある他の物体と干渉するか否かを判定する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１８−１４４１６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一般的に、エンドエフェクタは、対象ワークをピッキングするための可動部を有する。しかしながら、三次元ＣＡＤデータは、可動部が定位置にあるときのエンドエフェクタモデルを示している。特許文献１に記載の技術では、エンドエフェクタモデルに追加モデルを追加できるものの、エンドエフェクタモデル自体を変更することができない。そのため、対象ワークをピッキングするときの可動部の位置とエンドエフェクタモデルにおける可動部に対応する部分の位置とが異なる場合、精度良く干渉判定を行なうことができない。
【０００６】
画像処理装置に三次元ＣＡＤデータの編集ソフトを組み込むことにより、対象ワークをピッキングするときの可動部の位置に応じてエンドエフェクタモデルを編集することができる。しかしながら、三次元ＣＡＤデータは品質に直接影響を及ぼす情報であり、通常、製造現場の作業者は、三次元ＣＡＤモデルを編集する権限を持たない。そのため、画像処理装置に編集ソフトを組み込むことは現実的ではない。
【０００７】
本発明は、上記の問題に鑑みてなされたものであり、その目的は、エンドエフェクタと物体との干渉判定を精度良く行なうことが可能な制御システム、情報処理装置および制御方法を提供することである。
【課題を解決するための手段】
【０００８】
本開示の一例によれば、制御システムは、複数の物体の中の１つの物体を対象物としてピッキングするエンドエフェクタを有するロボットを制御する。エンドエフェクタは、可動部と、可動部を移動可能に支持する支持部とを含む。制御システムは、取得部と、ユーザインターフェースと、第１設定部と、計測部と、選択部と、判定部とを備える。取得部は、エンドエフェクタの三次元形状を示す第１形状データを取得する。第１設定部は、第１形状データで示されるエンドエフェクタモデルをユーザインターフェースに表示させ、ユーザインターフェースに入力された情報に基づいて、エンドエフェクタモデルのうち可動部に対応する可動部モデルと可動部モデルの可動方向とを設定する。計測部は、複数の物体を含む視野領域の三次元形状を計測する。選択部は、計測部の計測結果に基づいて、対象物をピッキングするときのエンドエフェクタの位置姿勢候補を選択する。判定部は、選択部によって選択された位置姿勢候補のエンドエフェクタモデルと対象物以外の物体との干渉判定を行なう。判定部は、エンドエフェクタモデルにおいて、設定された移動量だけ可動部モデルを可動方向に移動させた状態で干渉判定を行なう。
【０００９】
この開示によれば、対象物のサイズに応じた移動量が適宜設定されることにより、実際に対象物をピッキングするときのエンドエフェクタの形状に合うようにエンドエフェクタモデルの形状を変更できる。そのため、変更後のエンドエフェクタモデルを用いることにより、エンドエフェクタと対象物以外の物体との干渉判定を精度良く行なうことができる。
【００１０】
上述の開示において、取得部は、対象物の三次元形状を示す第２形状データをさらに取得する。制御システムは、さらに、第２形状データで示される対象物モデルをエンドエフェクタモデルがピッキングするために必要な可動部モデルの移動量を設定する第２設定部を備える。判定部は、第２設定部によって設定された移動量だけ可動部モデルを移動させる。
【００１１】
この開示によれば、対象物モデルとエンドエフェクタモデルとを用いることにより、ピッキングに必要な可動部モデルの移動量を適切に設定できる。
【００１２】
上述の開示において、複数の物体は、互いに形状およびサイズの少なくとも一方の異なる複数種類の物体を含む。取得部は、複数種類の物体の各々について、当該物体の三次元形状を示す第２形状データをさらに取得する。制御システムは、さらに、複数種類の物体の各々に対して、第２形状データで示される物体モデルをエンドエフェクタモデルがピッキングするために必要な可動部モデルの移動量を設定する第２設定部を備える。選択部は、計測部の計測結果に基づいて対象物の種類を識別し、識別結果に応じて位置姿勢候補を選択する。判定部は、選択部によって識別された種類に対して第２設定部によって設定された移動量だけ可動部モデルを移動させる。
【００１３】
この開示によれば、複数種類の物体が存在していたとしても、対象物の種類に応じた移動量が設定される。当該移動量に応じて変更されたエンドエフェクタモデルを用いることにより、エンドエフェクタと対象物以外の物体との干渉判定をより精度良く行なうことができる。
【００１４】
上述の開示において、制御システムは、視野領域の三次元形状に基づいて、対象物をピッキングするために必要な可動部モデルの移動量を設定する第２設定部をさらに備える。判定部は、第２設定部によって設定された移動量だけ可動部モデルを移動させる。
【００１５】
この開示によれば、対象物の三次元形状を示すデータが存在しない場合であっても、対象物をピッキングするために必要な可動部モデルの移動量が設定される。当該移動量に応じて変更されたエンドエフェクタモデルを用いることにより、エンドエフェクタと対象物以外の物体との干渉判定をより精度良く行なうことができる。
【００１６】
上述の開示において、支持部は、平行移動および回転移動の少なくとも一方が可能なように可動部を支持する。この開示によれば、様々なタイプのエンドエフェクタに適用することができる。
【００１７】
上述の開示において、可動部は複数の爪部を有し、支持部は、複数の爪部間の距離が可変となるように、複数の爪部をそれぞれ平行移動可能に支持してもよい。
【００１８】
この開示によれば、エンドエフェクタモデルを構成するパーツの個数が少ないため、作業者は、ユーザインターフェースを用いて、可動部モデルを容易に設定することができる。
【００１９】
上述の開示において、可動部は、複数の爪部を有する。第２設定部は、視野領域の三次元形状の中から最も高い位置を抽出する。第２設定部は、視野領域のうち、抽出された位置との高度差が規定値以下となる領域をラベリングする。第２設定部は、複数の爪部がラベリングされた１つの領域の周囲に位置し、かつ、複数の爪部がラベリングされた他の領域と重ならないように、複数の爪部の各々の移動量を設定する。
【００２０】
この開示によれば、ラベリングされた領域は、計測された三次元形状における凸部に対応する。対象物は、当該凸部に位置する。そのため、対象物の三次元形状を示すデータが存在しない場合であっても、計測された三次元形状の凹部に位置し、かつ、複数の爪部が対象物の周囲に位置するときの可動部モデルの移動量が設定される。当該移動量に応じて変更されたエンドエフェクタモデルを用いることにより、エンドエフェクタと対象物以外の物体との干渉判定をより精度良く行なうことができる。
【００２１】
本開示の一例によれば、情報処理装置は、ユーザインターフェースを用いて、対象物をピッキングするエンドエフェクタの三次元形状を示す形状データに対する情報処理を行なう。エンドエフェクタは、可動部と、可動部を移動可能に支持する支持部とを含む。情報処理装置は、エンドエフェクタの三次元形状を示す形状データを取得する取得部と、形状データで示されるエンドエフェクタモデルをユーザインターフェースに表示させ、ユーザインターフェースに入力された情報に基づいて、エンドエフェクタモデルのうち可動部に対応する可動部モデルと可動部モデルの可動方向とを設定する設定部とを備える。
【００２２】
本開示の一例によれば、制御方法は、複数の物体の中から１つの物体を対象物としてピッキングするエンドエフェクタを有するロボットを制御する方法である。エンドエフェクタは、可動部と、可動部を移動可能に支持する支持部とを含む。制御方法は、第１〜第５のステップを備える。第１のステップは、エンドエフェクタの三次元形状を示す形状データを取得するステップである。第２のステップは、形状データで示されるエンドエフェクタモデルをユーザインターフェースに表示させ、ユーザインターフェースに入力された情報に基づいて、エンドエフェクタモデルのうち可動部に対応する可動部モデルと可動部モデルの可動方向とを設定するステップである。第３のステップは、複数の物体を含む視野領域の三次元形状を計測するステップである。第４スのステップは、計測結果に基づいて、対象物をピッキングするときのエンドエフェクタの位置姿勢候補を選択するステップである。第５のステップは、選択された位置姿勢候補のエンドエフェクタモデルと対象物以外の物体との干渉判定を行なうステップである。干渉判定を行なうステップは、エンドエフェクタモデルにおいて、設定された移動量だけ可動部モデルを可動方向に移動させるステップを含む。
【００２３】
これらの開示によっても、エンドエフェクタと物体との干渉判定を精度良く行なうことができる。
【発明の効果】
【００２４】
本開示によれば、エンドエフェクタと物体との干渉判定を精度良く行なうことができる。
【図面の簡単な説明】
【００２５】
【図１】実施の形態に係る制御システムの全体構成を示す概略図である。
【図２】三次元ＣＡＤデータで示されるエンドエフェクタモデルと、対象ワークをピッキングするときのエンドエフェクタとの一例を示す図である。
【図３】図１に示す画像処理装置のハードウェア構成の一例を示す概略図である。
【図４】図１に示す画像処理装置の機能構成の一例を示すブロック図である。
【図５】第１ＣＡＤデータの内部表現の例を示す図である。
【図６】実施の形態に係るユーザインターフェースに表示されるＵＩ画面の一例を示す図である。
【図７】移動量入力欄に移動量が入力されたときのＵＩ画面の一例を示す図である。
【図８】ワーク表示ボタンが操作されたときのＵＩ画面の一例を示す図である。
【図９】支持部モデルに対するワークモデルの相対位置姿勢を示す座標変換行列の一例を示す図である。
【図１０】対象ワークを把持するときにエンドエフェクタの支持部が取るべき位置姿勢の決定方法を示す図である。
【図１１】モデル変更部によって座標変換されたエンドエフェクタモデルの一例を示す図である。
【図１２】エンドエフェクタと対象ワーク以外のワークとが干渉している例を示す図である。
【図１３】エンドエフェクタとコンテナとが干渉している例を示す図である。
【図１４】実施の形態に係る画像処理装置によって実行される事前設定処理の流れを示すフローチャートである。
【図１５】実施の形態に係る画像処理装置によって実行されるピッキング位置の探索処理の流れを示すフローチャートである。
【図１６】変形例１に係る画像処理装置によって実行されるピッキング位置の探索処理の流れを示すフローチャートである。
【図１７】形状およびサイズにばらつきのあるワークを把持するときのエンドエフェクタを示す図である。
【図１８】変形例３に係る画像処理装置の機能構成を示すブロック図である。
【図１９】変形例３に係るユーザインターフェースに表示されるＵＩ画面の一例を示す図である。
【図２０】変形例３に係る画像処理装置の選択部の処理を示す図である。
【図２１】変形例３に係る画像処理装置によって実行される事前設定処理の流れを示すフローチャートである。
【図２２】変形例３に係る画像処理装置によって実行されるピッキング位置の探索処理の流れを示すフローチャートである。
【図２３】図２２のステップＳ５２のサブルーチンの処理の流れの一例を示すフローチャートである。
【図２４】変形例４に係る画像処理装置の機能構成の一例を示すブロック図である。
【発明を実施するための形態】
【００２６】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００２７】
§１  適用例
まず、図１を参照して、本発明が適用される場面の一例について説明する。図１は、実施の形態に係る制御システムの全体構成を示す概略図である。図１に例示される制御システムＳＹＳは、生産ラインなどに組み込まれ、コンテナ５にばら積みされた物体であるワーク１を１個ずつピッキングするような制御を行う。なお、図１には、理解を容易にするため、コンテナ５内に２つのワーク１のみが存在する場合を図示するが、多数のワーク１が重なった状態で配置されていてもよい。
【００２８】
図１に例示される制御システムＳＹＳは、画像処理装置１００と、ロボットコントローラ２００と、ロボット３００とを備える。画像処理装置１００には、プロジェクタ（照明装置）７、撮像装置８およびユーザインターフェース９が接続されている。
【００２９】
ロボット３００は、ワーク１をピッキングする動作を行なう。ロボット３００は、ワーク１を把持するエンドエフェクタ３０と、一端においてエンドエフェクタ３０を支持する多関節アーム３３と、多関節アーム３３の他端を支持するベース３４とを含む。ロボット３００の動作は、ロボットコントローラ２００によって制御される。
【００３０】
ロボットコントローラ２００は、画像処理装置１００から、エンドエフェクタ３０が取るべき位置姿勢を示す位置姿勢情報を受ける。ロボットコントローラ２００は、当該位置姿勢情報に基づいて、ロボット３００のエンドエフェクタ３０を適切な位置姿勢に位置決めするための指令を生成し、ロボット３００へ出力する。この指令に応答して、ロボット３００は、ワーク１のピッキング動作（図１に示す例では把持動作）を開始する。
【００３１】
プロジェクタ７は、一種の面光源として機能するとともに、画像処理装置１００からの指示に従って任意の濃淡パターンの照明光を所定位置（ワーク１を含むコンテナ５が配置される位置）に投影できるものとする。この任意の濃淡パターンは、照射面内で明るさが均一であるパターンおよび照射面内の所定方向に沿って明るさが周期的に変化するパターンを含む。
【００３２】
プロジェクタ７は、主要なコンポーネントとして、ＬＥＤ（Light Emitting Diode）やハロゲンランプなどの光源と、プロジェクタ７の照射面の側に配置されたフィルタとを含む。また、フィルタは、後述するような三次元形状の計測に必要な濃淡パターンを発生させるものであり、画像処理装置１００からの指令に従って、面内の透光率を任意に変化させることができる。なお、フィルタの代わりに、液晶ディスプレイやデジタルミラーデバイスを用いて濃淡パターンを発生させてもよい。液晶ディスプレイやデジタルミラーデバイスを用いることにより任意の濃淡パターンを発生できる。
【００３３】
撮像装置８は、視野領域にコンテナ５が含まれるように設置され、プロジェクタ７によって照射された照明光がワーク１の表面で反射した光を撮像する。撮像装置８は、撮像により得られた画像を画像処理装置１００に出力する。
【００３４】
撮像装置８は、主要なコンポーネントとして、レンズなどの光学系と、ＣＣＤ（Coupled Charged Device）やＣＭＯＳ（Complementary Metal Oxide Semiconductor）センサといった撮像素子とを含む。
【００３５】
画像処理装置１００は、撮像装置８から受けた画像に基づいて、コンテナ５内の複数のワーク１の中の１つを対象ワーク２として選択し、対象ワーク２を把持するためのエンドエフェクタ３０の位置姿勢を決定する。画像処理装置１００は、決定した位置姿勢を示す位置姿勢情報を生成し、生成した位置姿勢情報をロボットコントローラ２００に出力する。ロボットコントローラ２００は、画像処理装置１００から受けた位置姿勢情報に従ってロボット３００を制御する。
【００３６】
具体的には、画像処理装置１００は、撮像装置８から受けた画像に基づいて、撮像装置８の視野領域の三次元形状を計測する。視野領域にはコンテナ５が含まれるため、コンテナ５にばら積みされた複数のワーク１の三次元形状が計測される。
【００３７】
画像処理装置１００は、計測した三次元形状に基づいて、複数のワーク１の中の１つを把持対象となる対象ワーク２として選択するとともに、当該対象ワーク２を把持するときのエンドエフェクタ３０の位置姿勢候補を選択する。
【００３８】
選択された位置姿勢候補の状態のエンドエフェクタ３０は、対象ワーク２以外の物体（他のワーク１およびコンテナ５を含む）と干渉する可能性がある。このような干渉が生じた場合、エンドエフェクタ３０または対象ワーク２以外の物体に破損が生じる可能性がある。そこで、画像処理装置１００は、このような干渉を避けるため、エンドエフェクタ３０の三次元形状を示す三次元ＣＡＤデータを用いて、エンドエフェクタ３０と対象ワーク２以外の物体との干渉判定を行なう。具体的には、三次元ＣＡＤデータで示され、かつ、選択された位置姿勢候補に存在するエンドエフェクタモデルをエンドエフェクタ３０とみなし、エンドエフェクタモデルと対象ワーク２以外の物体との干渉判定を行なう。
【００３９】
図２は、三次元ＣＡＤデータで示されるエンドエフェクタモデルと、対象ワークをピッキングするときのエンドエフェクタとの一例を示す図である。図２の右側に例示されるように、エンドエフェクタ３０は、可動部である右爪部３１Ｒおよび左爪部３１Ｌと、右爪部３１Ｒおよび左爪部３１Ｌを移動可能に支持する支持部３２とを含む。具体的には、支持部３２は、右爪部３１Ｒと左爪部３１Ｌとの間の距離（間隔）が可変となるように、右爪部３１Ｒおよび左爪部３１Ｌを平行移動可能に支持する。
【００４０】
対象ワーク２を把持するためには、当該対象ワーク２のサイズに応じた開き幅Ｗだけ右爪部３１Ｒと左爪部３１Ｌとの間隔を広げる必要がある。しかしながら、エンドエフェクタ３０の三次元形状を示す三次元形状データは、右爪部３１Ｒおよび左爪部３１Ｌが定状態（図２に示す例では閉状態）であるときのエンドエフェクタ３０全体の三次元形状に基づいて作成される。そのため、図２の左側に例示されるように、エンドエフェクタモデル３５の形状は、実際に対象ワーク２をピッキングするときのエンドエフェクタ３０の形状と一致しない。
【００４１】
また、三次元ＣＡＤデータは、通常、エンドエフェクタ３０全体の三次元形状のみを示し、右爪部３１Ｒ、左爪部３１Ｌおよび支持部３２がどの部分に該当するのかを示す属性情報を含まない。そのため、三次元ＣＡＤデータのみを用いて、対象ワーク２をピッキングするときのエンドエフェクタ３０の形状に一致させるように、エンドエフェクタモデル３５の形状を変更することもできない。
【００４２】
以上から、エンドエフェクタモデル３５をそのまま用いた場合、エンドエフェクタ３０と対象ワーク２以外の物体との干渉判定を精度良く行なうことができない。そこで、画像処理装置１００は、以下のようにして干渉判定を行なう。
【００４３】
画像処理装置１００は、三次元ＣＡＤデータで示されるエンドエフェクタモデル３５をユーザインターフェース９に表示させる。そして、画像処理装置１００は、ユーザインターフェース９に入力された情報に基づいて、エンドエフェクタモデル３５のうち可動部に対応する可動部モデルと可動部モデルの可動方向とを設定する。図２に示す例では、エンドエフェクタモデル３５のうち右爪部３１Ｒおよび左爪部３１Ｌにそれぞれ対応する右爪部モデル３６Ｒおよび左爪部モデル３６Ｌが設定される。さらに、右爪部モデル３６Ｒおよび左爪部モデル３６Ｌの可動方向は、それぞれ＋Ｙ方向、−Ｙ方向に設定される。
【００４４】
画像処理装置１００は、エンドエフェクタモデル３５において、設定された移動量だけ右爪部モデル３６Ｒおよび左爪部モデル３６Ｌを可動方向に移動させた状態で干渉判定を行なう。
【００４５】
本実施の形態によれば、対象ワーク２のサイズに応じて適宜移動量を設定することにより、実際に対象ワーク２をピッキングするときのエンドエフェクタ３０の形状に合うようにエンドエフェクタモデル３５の形状を変更できる。図２に示す例では、開き幅Ｗの１／２を移動量として設定すればよい。そして、変更後のエンドエフェクタモデル３５を用いることにより、エンドエフェクタ３０と対象ワーク２以外の物体との干渉判定を精度良く行なうことができる。
【００４６】
§２  具体例
次に、本実施の形態に係る制御システムの具体例について説明する。
【００４７】
＜Ａ．画像処理装置のハードウェア構成例＞
画像処理装置１００は、典型的には、汎用的なアーキテクチャを有しているコンピュータであり、予めインストールされたプログラム（命令コード）を実行することで、本実施の形態に係る画像処理を実行する。このようなプログラムは、典型的には、各種記録媒体などに格納された状態で流通し、あるいは、ネットワークなどを介して画像処理装置１００にインストールされる。
【００４８】
このような汎用的なコンピュータを利用する場合には、本実施の形態に係る画像処理を実行するためのアプリケーションに加えて、コンピュータの基本的な処理を実行するためのＯＳ（Operating System）がインストールされていてもよい。この場合には、本実施の形態に係るプログラムは、ＯＳの一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の配列で所定のタイミングで呼出して処理を実行させるものであってもよい。すなわち、本実施の形態に係るプログラム自体は、上記のようなモジュールを含んでおらず、ＯＳと協働して処理が実行されてもよい。本実施の形態に係るプログラムとしては、このような一部のモジュールを含まない形態であってもよい。
【００４９】
さらに、本実施の形態に係るプログラムは、他のプログラムの一部に組込まれて提供されるものであってもよい。その場合にも、プログラム自体には、上記のような組合せられる他のプログラムに含まれるモジュールを含んでおらず、当該他のプログラムと協働して処理が実行される。すなわち、本実施の形態に係るプログラムとしては、このような他のプログラムに組込まれた形態であってもよい。なお、プログラムの実行により提供される機能の一部もしくは全部を専用のハードウェア回路として実装してもよい。
【００５０】
図３は、図１に示す画像処理装置のハードウェア構成の一例を示す概略図である。図３に示されるように、画像処理装置１００は、演算処理部であるＣＰＵ（Central Processing Unit）１１０と、記憶部としてのメインメモリ１１２およびハードディスク１１４と、カメラインターフェース１１６と、入力インターフェース１１８と、表示コントローラ１２０と、プロジェクタインターフェース１２２と、通信インターフェース１２４と、データリーダ／ライタ１２６とを含む。これらの各部は、バス１２８を介して、互いにデータ通信可能に接続される。
【００５１】
ＣＰＵ１１０は、ハードディスク１１４にインストールされたプログラム（コード）をメインメモリ１１２に展開して、これらを所定順序で実行することで、各種の演算を実施する。メインメモリ１１２は、典型的には、ＤＲＡＭ（Dynamic Random Access Memory）などの揮発性の記憶装置であり、ハードディスク１１４から読み出されたプログラムに加えて、撮像装置８によって取得された画像、キャリブレーションデータ、計測結果に関する情報などを保持する。さらに、ハードディスク１１４には、各種設定値などが格納されてもよい。なお、ハードディスク１１４に加えて、あるいは、ハードディスク１１４に代えて、フラッシュメモリなどの半導体記憶装置を採用してもよい。
【００５２】
カメラインターフェース１１６は、ＣＰＵ１１０と撮像装置８との間のデータ伝送を仲介する。すなわち、カメラインターフェース１１６は、撮像装置８と接続される。カメラインターフェース１１６は、撮像装置８からの画像を一時的に蓄積するための画像バッファ１１６ａを含む。そして、カメラインターフェース１１６は、画像バッファ１１６ａに所定コマ数の画像が蓄積されると、その蓄積された画像をメインメモリ１１２へ転送する。また、カメラインターフェース１１６は、ＣＰＵ１１０が発生した内部コマンドに従って、撮像装置８に対して撮像コマンドを与える。
【００５３】
入力インターフェース１１８は、ＣＰＵ１１０とユーザインターフェース９を構成するタッチパネル９０、マウス、キーボードなどの入力部との間のデータ伝送を仲介する。すなわち、入力インターフェース１１８は、ユーザが入力部を操作することで与えられる操作指令を受付ける。
【００５４】
表示コントローラ１２０は、ユーザインターフェース９を構成するディスプレイ９２と接続され、ＣＰＵ１１０における処理結果などをユーザに通知する。すなわち、表示コントローラ１２０は、ディスプレイ９２に接続され、当該ディスプレイ９２での表示を制御する。
【００５５】
プロジェクタインターフェース１２２は、ＣＰＵ１１０とプロジェクタ７との間のデータ伝送を仲介する。より具体的には、プロジェクタインターフェース１２２は、ＣＰＵ１１０が発生した内部コマンドに従って、プロジェクタ７に対して照明コマンドを与える。
【００５６】
通信インターフェース１２４は、ＣＰＵ１１０とロボットコントローラ２００などの外部装置との間のデータ伝送を仲介する。通信インターフェース１２４は、典型的には、イーサネット（登録商標）やＵＳＢ（Universal Serial Bus）などからなる。
【００５７】
データリーダ／ライタ１２６は、ＣＰＵ１１０と記録媒体であるメモリカード１０６との間のデータ伝送を仲介する。すなわち、メモリカード１０６には、画像処理装置１００で実行されるプログラムなどが格納された状態で流通し、データリーダ／ライタ１２６は、このメモリカード１０６からプログラムを読出す。また、データリーダ／ライタ１２６は、ＣＰＵ１１０の内部指令に応答して、撮像装置８によって取得された入力画像および／または画像処理装置１００における処理結果などをメモリカード１０６へ書込む。なお、メモリカード１０６は、ＳＤ（Secure Digital）などの汎用的な半導体記憶デバイスや、フレキシブルディスク（Flexible Disk）などの磁気記憶媒体や、ＣＤ−ＲＯＭ（Compact Disk Read Only Memory）などの光学記憶媒体等からなる。
【００５８】
＜Ｂ．画像処理装置の機能構成例＞
図４は、図１に示す画像処理装置の機能構成の一例を示すブロック図である。図４に示されるように、画像処理装置１００は、第１記憶部１０と、第２記憶部１１と、ＣＡＤ読込部１２と、パーツ設定部１３と、移動量設定部１４と、相対位置設定部１５と、３Ｄ計測部２０と、コンテナ検出部２１と、選択部２２と、モデル変更部２６と、干渉判定部２７と、把持位置出力部２８とを備える。第１記憶部１０および第２記憶部１１は、図３に示すハードディスク１１４によって実現される。ＣＡＤ読込部１２、パーツ設定部１３、移動量設定部１４、相対位置設定部１５、３Ｄ計測部２０、コンテナ検出部２１、選択部２２、モデル変更部２６、干渉判定部２７および把持位置出力部２８は、ＣＰＵ１１０がプログラムを実行することにより実現される。
【００５９】
ＣＡＤ読込部１２、パーツ設定部１３、移動量設定部１４および相対位置設定部１５は、ワーク１をピッキングする前の事前設定処理を実行するブロックである。３Ｄ計測部２０、コンテナ検出部２１、選択部２２、モデル変更部２６、干渉判定部２７および把持位置出力部２８は、ワーク１のピッキング位置を探索する探索処理を実行するブロックである。
【００６０】
第１記憶部１０は、エンドエフェクタ３０の三次元形状を示す第１ＣＡＤデータ１０ａを記憶する。第１ＣＡＤデータ１０ａは、エンドエフェクタ３０全体の三次元形状のみを示し、右爪部３１Ｒ、左爪部３１Ｌおよび支持部３２がどの部分に該当するのかを示す属性情報を含まない。第２記憶部１１は、ワーク１の三次元形状を示す第２ＣＡＤデータ１１ａを記憶する。
【００６１】
ＣＡＤ読込部１２は、第１記憶部１０から第１ＣＡＤデータ１０ａを読み込むことにより、第１ＣＡＤデータ１０ａを取得する。さらに、ＣＡＤ読込部１２は、第２記憶部１１から第２ＣＡＤデータ１１ａを読み込むことにより、第２ＣＡＤデータ１１ａを取得する。
【００６２】
ＣＡＤ読込部１２は、読み込んだＣＡＤデータを内部表現（処理用の表現）に変換する。図５は、第１ＣＡＤデータの内部表現の例を示す図である。第１ＣＡＤデータ１０ａは、複数の要素の集合として変換される。すなわち、第１ＣＡＤデータ１０ａで示されるエンドエフェクタモデル３５は、複数の要素の集合によって構成される。図５に示されるように、要素は、例えば、ボックス、断面、三角メッシュ、点のいずれかである。
【００６３】
図４に戻って、パーツ設定部１３は、第１ＣＡＤデータ１０ａで示されるエンドエフェクタモデル３５をユーザインターフェース９に表示させる。パーツ設定部１３は、ユーザインターフェース９に入力された情報に基づいて、右爪部モデル３６Ｒおよび左爪部モデル３６Ｌ（図２参照）を設定する。さらに、パーツ設定部１３は、ユーザインターフェース９に入力された情報に基づいて、右爪部モデル３６Ｒおよび左爪部モデル３６Ｌの各々の可動方向を設定する。さらに、パーツ設定部１３は、ユーザインターフェース９に入力された情報に基づいて、エンドエフェクタモデル３５のうちの支持部３２に対応する部分である支持部モデル３７（図２参照）を設定する。
【００６４】
パーツ設定部１３は、エンドエフェクタモデル３５を構成する各要素（図５に示すボックス、断面、三角メッシュ、または点）について、右爪部モデル３６Ｒ、左爪部モデル３６Ｌおよび支持部モデル３７のいずれに属するかを示す属性情報を付与する。
【００６５】
移動量設定部１４は、ユーザインターフェース９に入力された情報に基づいて、エンドエフェクタモデル３５が第２ＣＡＤデータ１１ａで示されるワークモデルを把持するときに必要な右爪部モデル３６Ｒおよび左爪部モデル３６Ｌの各々の移動量を設定する。
【００６６】
相対位置設定部１５は、ユーザインターフェース９に入力された情報に基づいて、エンドエフェクタモデル３５がワークモデルを把持するときの、支持部モデル３７に対するワークモデルの相対位置姿勢を設定する。
【００６７】
３Ｄ計測部２０は、撮像装置８から取得した画像に基づいて、撮像装置８の視野領域の三次元形状を計測する。計測された三次元形状は、例えば三次元点群データで表現される。三次元点群データは、視野領域に存在する物体の撮像装置８側の表面を構成する複数の点の各々の三次元座標を示す。
【００６８】
コンテナ検出部２１は、コンテナ５の三次元形状を示す情報を予め記憶しており、当該情報と３Ｄ計測部２０の計測結果である三次元点群データとに基づいて、コンテナ５の位置姿勢を検出する。コンテナ５内には複数のワーク１が積まれているため、撮像装置８から見たとき、コンテナ５の側壁の上端面が観察される。そのため、コンテナ検出部２１は、三次元点群データの中からコンテナ５の側壁の上端面に対応する点のデータを抽出し、抽出したデータとコンテナ５の三次元形状を示す情報とから、コンテナ５の位置姿勢を計算すればよい。
【００６９】
選択部２２は、３Ｄ計測部２０の計測結果に基づいて、対象ワーク２をピッキングするときのエンドエフェクタ３０の１または複数の位置姿勢候補を選択する。図４に示されるように、選択部２２は、ワーク検出部２３と、対象ワーク選択部２４と、位置姿勢決定部２５とを含む。
【００７０】
ワーク検出部２３は、テンプレートマッチングを用いて、撮像装置８の視野領域の中からワーク１を探索し、探索されたワーク１の位置姿勢を検出する。
【００７１】
対象ワーク選択部２４は、ワーク検出部２３によって検出されたワーク１の位置姿勢に基づいて、ピッキングの対象となる対象ワーク２を選択する。例えば、対象ワーク選択部２４は、ワーク検出部２３によって探索されたワーク１のうち、高さが上位所定数のワーク１を対象ワーク２として選択する。
【００７２】
位置姿勢決定部２５は、対象ワーク２を把持するときにエンドエフェクタ３０の支持部３２が取るべき位置姿勢を決定する。上述したように、エンドエフェクタモデル３５がワークモデルを把持するときの支持部モデル３７に対するワークモデルの相対位置姿勢が相対位置設定部１５によって設定されている。そのため、位置姿勢決定部２５は、支持部３２に対する対象ワーク２の相対位置姿勢が相対位置設定部１５によって設定された相対位置姿勢と一致するように、支持部３２が取るべき位置姿勢を決定すればよい。
【００７３】
モデル変更部２６は、対象ワーク２を把持するときのエンドエフェクタ３０の状態に一致するようにエンドエフェクタモデル３５を変更する。モデル変更部２６は、エンドエフェクタモデル３５を構成する複数の要素の各々の座標を変換することにより、エンドエフェクタモデル３５を変更する。
【００７４】
具体的には、モデル変更部２６は、支持部モデル３７の位置姿勢が位置姿勢決定部２５によって決定された位置姿勢に一致するように、エンドエフェクタモデル３５を構成する各要素の座標を変換する。さらに、モデル変更部２６は、移動量設定部１４によって設定された移動量だけ右爪部モデル３６Ｒおよび左爪部モデル３６Ｌを可動方向にそれぞれ移動するように、右爪部モデル３６Ｒおよび左爪部モデル３６Ｌを構成する各要素の座標を変換する。
【００７５】
干渉判定部２７は、モデル変更部２６によって変更されたエンドエフェクタモデル３５と対象ワーク２以外の物体（対象ワーク２以外のワーク１およびコンテナ５）との干渉判定を行なう。
【００７６】
把持位置出力部２８は、干渉判定部２７の判定結果に基づいて、エンドエフェクタ３０の位置姿勢を決定し、決定した位置姿勢を示す位置姿勢情報を生成する。把持位置出力部２８は、生成した位置姿勢情報をロボットコントローラ２００に出力する。
【００７７】
＜Ｃ．パーツ設定部、移動量設定部および相対位置設定部による設定方法＞
図６〜９を参照して、パーツ設定部１３、移動量設定部１４および相対位置設定部１５による各種情報を設定方法の詳細について説明する。
【００７８】
図６は、実施の形態に係るユーザインターフェースに表示されるＵＩ画面の一例を示す図である。図６に示すＵＩ画面４０は、ＣＰＵ１１０（図３参照）の処理結果に従ってユーザインターフェース９のディスプレイ９２に表示される。
【００７９】
ＵＩ画面４０は、表示領域４１と、支持部選択ボタン４５と、右爪部選択ボタン４６と、左爪部選択ボタン４７と、右爪用の可動方向入力欄４８と、左爪用の可動方向入力欄４９と、移動量入力欄５０と、ワーク表示ボタン５１と、ＯＫボタン５２と、キャンセルボタン５３とを含む。
【００８０】
表示領域４１には、第１ＣＡＤデータ１０ａで示されるエンドエフェクタモデル３５が表示される。表示領域４１には、第１ＣＡＤデータ１０ａの座標系（以下、「ＣＡＤ座標系」と称する。）に対応する座標軸も表示される。
【００８１】
パーツ設定部１３は、ユーザインターフェース９を介して、表示領域４１に表示されるエンドエフェクタモデル３５をヨー、ロールおよびピッチのいずれかの方向に回転させる操作入力を受け付ける。加えて、パーツ設定部１３は、ユーザインターフェース９を介して、エンドエフェクタモデル３５の並進および拡大／縮小の操作入力も受け付ける。パーツ設定部１３は、ユーザインターフェース９への操作入力に応じて、表示領域４１に表示されるエンドエフェクタモデル３５の位置姿勢およびサイズを変更する。これにより、作業者は、エンドエフェクタモデル３５における支持部３２、右爪部３１Ｒおよび左爪部３１Ｌにそれぞれ対応する部分が互いに重ならないように、エンドエフェクタモデル３５の姿勢を変更できる。
【００８２】
表示領域４１には、エンドエフェクタモデル３５のうち支持部３２に対応する部分である支持部モデル３７を設定するための枠線４２が表示される。作業者は、ユーザインターフェース９のタッチパネル９０に対する操作を行なうことにより、枠線４２の位置姿勢およびサイズを変更する。パーツ設定部１３は、エンドエフェクタモデル３５を構成する複数の要素のうち、支持部選択ボタン４５が操作されたときに枠線４２内に位置する要素に対して、支持部モデル３７を示す属性情報を付与する。これにより、作業者は、表示領域４１の画像を見ながら、枠線４２内に支持部３２に対応する部分が含まれるように枠線４２の位置姿勢およびサイズを適宜変更することにより、支持部モデル３７を設定できる。
【００８３】
表示領域４１には、エンドエフェクタモデル３５のうち右爪部３１Ｒに対応する部分である右爪部モデル３６Ｒを設定するための枠線４３が表示される。作業者は、タッチパネル９０に対する操作を行なうことにより、枠線４３の位置姿勢およびサイズを変更する。パーツ設定部１３は、エンドエフェクタモデル３５を構成する複数の要素のうち、右爪部選択ボタン４６が操作されたときに枠線４３内に位置する要素に対して、右爪部モデル３６Ｒを示す属性情報を付与する。これにより、作業者は、表示領域４１の画像を見ながら、枠線４３内に右爪部３１Ｒに対応する部分が含まれるように枠線４３の位置姿勢およびサイズを適宜変更することにより、右爪部モデル３６Ｒを設定できる。
【００８４】
表示領域４１には、エンドエフェクタモデル３５のうち左爪部３１Ｌに対応する部分である左爪部モデル３６Ｌを設定するための枠線４４が表示される。作業者は、タッチパネル９０に対する操作を行なうことにより、枠線４４の位置姿勢およびサイズを変更する。パーツ設定部１３は、エンドエフェクタモデル３５を構成する複数の要素のうち、左爪部選択ボタン４７が操作されたときに枠線４４内に位置する要素に対して、左爪部モデル３６Ｌを示す属性情報を付与する。これにより、作業者は、表示領域４１の画像を見ながら、枠線４４内に左爪部３１Ｌに対応する部分が含まれるように枠線４４の位置姿勢およびサイズを適宜変更することにより、左爪部モデル３６Ｌを設定できる。
【００８５】
作業者は、右爪部選択ボタン４６を操作することにより設定した右爪部モデル３６Ｒの可動方向を可動方向入力欄４８に入力できる。同様に、作業者は、左爪部選択ボタン４７を操作することにより設定した左爪部モデル３６Ｌの可動方向を可動方向入力欄４９に入力する。可動方向入力欄４８，４９には、可動方向を示すベクトルが入力される。図６に示す例では、右爪部モデル３６Ｒの可動方向として、ＣＡＤ座標系における＋Ｙ方向を示すベクトル（０，１，０）が入力されている。また、左爪部モデル３６Ｌの可動方向として、−Ｙ方向を示すベクトル（０，−１，０）が入力されている。パーツ設定部１３は、可動方向入力欄４８に入力されたベクトルに従って、右爪部モデル３６Ｒの可動方向を設定し、可動方向入力欄４９に入力されたベクトルに従って、左爪部モデル３６Ｌの可動方向を設定する。
【００８６】
作業者は、右爪部モデル３６Ｒおよび左爪部モデル３６Ｌの移動量を移動量入力欄５０に入力できる。右爪部モデル３６Ｒの移動量は、右爪部モデル３６Ｒの基準位置から、右爪部モデル３６Ｒの可動方向への移動量を示す。右爪部モデル３６Ｒの基準位置は、第１ＣＡＤデータ１０ａにおいて、右爪部モデル３６Ｒを示す属性情報が付与された要素の座標によって特定される位置である。同様に、左爪部モデル３６Ｌの移動量は、左爪部モデル３６Ｌの基準位置から、左爪部モデル３６Ｌの可動方向への移動量を示す。左爪部モデル３６Ｌの基準位置は、第１ＣＡＤデータ１０ａにおいて、左爪部モデル３６Ｌを示す属性情報が付与された要素の座標によって特定される位置である。
【００８７】
移動量入力欄５０に移動量が入力されると、移動量設定部１４は、表示領域４１に表示されているエンドエフェクタモデル３５において、右爪部モデル３６Ｒおよび左爪部モデル３６Ｌを入力された移動量だけ可動方向にそれぞれ移動させる。これにより、作業者は、表示領域４１を確認することにより、右爪部モデル３６Ｒおよび左爪部モデル３６Ｌの移動後のエンドエフェクタモデル３５の状態を把握することができる。
【００８８】
図７は、移動量入力欄に移動量が入力されたときのＵＩ画面の一例を示す図である。図７に示されるように、表示領域４１内に表示されているエンドエフェクタモデル３５において、右爪部モデル３６Ｒおよび左爪部モデル３６Ｌは、図６に示す状態から移動量入力欄５０に入力された移動量だけ移動している。
【００８９】
ワーク表示ボタン５１が操作されると、相対位置設定部１５は、ＣＡＤ読込部１２によって読み込まれた第２ＣＡＤデータ１１ａで示されるワークモデルを表示領域４１に表示させる。このとき、相対位置設定部１５は、ワークモデルとエンドエフェクタモデルとが表示領域４１内に表示されるように、ワークモデルの表示位置を適宜変更する。
【００９０】
図８は、ワーク表示ボタンが操作されたときのＵＩ画面の一例を示す図である。図８に示されるように、表示領域４１にワークモデル３が表示されている。
【００９１】
相対位置設定部１５は、ユーザインターフェース９を介して、表示領域４１に表示されるワークモデル３を並進移動または回転移動させる操作入力を受け付ける。相対位置設定部１５は、ユーザインターフェース９への操作入力に応じて、ワークモデル３の座標変換を行ない、表示領域４１に表示されるワークモデル３の位置姿勢を変更する。また、上述したように、パーツ設定部１３は、エンドエフェクタモデル３５を回転移動させる操作に応じて、表示領域４１に表示されるエンドエフェクタモデル３５の姿勢を変更する。
【００９２】
作業者は、ユーザインターフェース９を操作して、ワークモデル３をエンドエフェクタモデル３５が把持可能なように、ワークモデル３の位置姿勢、エンドエフェクタモデル３５の姿勢、および、右爪部モデル３６Ｒおよび左爪部モデル３６Ｌの移動量を適宜変更する。
【００９３】
相対位置設定部１５は、表示領域４１に表示されている位置姿勢のワークモデル３と、表示領域４１に表示されている姿勢を有し、現在入力されている移動量だけ移動された右爪部モデル３６Ｒおよび左爪部モデル３６Ｌを有するエンドエフェクタモデル３５との干渉判定を行なってもよい。そして、相対位置設定部１５は、干渉判定結果を表示領域４１に表示してもよい。
【００９４】
図８に示す例では、ワークモデル３において、エンドエフェクタモデル３５と干渉する部分が太線５４で表示されている。太線５４は、視認しやすいように赤色で表示されてもよい。これにより、作業者は、右爪部モデル３６Ｒおよび左爪部モデル３６Ｌとの間にわずかな隙間だけ空けてワークモデル３が位置するように、太線５４の表示を確認しながら、ワークモデル３の位置姿勢、エンドエフェクタモデル３５の姿勢、および、右爪部モデル３６Ｒおよび左爪部モデル３６Ｌの移動量を適切に調整できる。
【００９５】
作業者は、ワークモデル３をエンドエフェクタモデル３５が把持可能なように、ワークモデル３の位置姿勢、エンドエフェクタモデル３５の姿勢、および、右爪部モデル３６Ｒおよび左爪部モデル３６Ｌの移動量の調整が終了すると、ＯＫボタン５２を操作する。
【００９６】
移動量設定部１４は、ＯＫボタン５２が操作されたときに移動量入力欄５０に入力されている移動量を、ワークモデル３をエンドエフェクタモデル３５が把持するときに必要な右爪部モデル３６Ｒおよび左爪部モデル３６Ｌの移動量として設定する。
【００９７】
移動量設定部１４は、設定した移動量だけ右爪部モデル３６Ｒの可動方向に平行移動させるための座標変換行列ＨMRを計算する。さらに、移動量設定部１４は、設定した移動量だけ左爪部モデル３６Ｌの可動方向に平行移動させるための座標変換行列ＨMLを計算する。
【００９８】
相対位置設定部１５は、ＯＫボタン５２が操作されたときに表示領域４１に表示されているワークモデル３および支持部モデル３７の位置姿勢に基づいて、支持部モデル３７に対するワークモデル３の相対位置姿勢を設定する。当該相対位置姿勢は、ワークモデル３をエンドエフェクタモデル３５が把持するときの状態に対応する。
【００９９】
支持部モデル３７に対するワークモデル３の相対位置姿勢は、支持部モデル３７を基準とする座標系（以下、「支持部モデル座標系」と称する。）を、ワークモデル３を基準とする座標系（以下、「ワークモデル座標系」と称する。）に変換する座標変換行列tMＨwMで示される。支持部モデル座標系は、ロボット３００のツール座標系（フランジ面に設定される座標系）に一致するように設定されている。そこで、相対位置設定部１５は、支持部モデル３７に対するワークモデル３の相対位置姿勢を示す情報として座標変換行列tMＨwMを計算する。
【０１００】
図９は、支持部モデルに対するワークモデルの相対位置姿勢を示す座標変換行列tMＨwMの一例を示す図である。図９には、直方体状の支持部モデル３７と、Ｔ字管であるワークモデル３とが示される。
【０１０１】
図９に示す例では、支持部モデル座標系は、支持部モデル３７の基準点３７ｏを原点とし、支持部モデル３７における３つの特定方向３７ｖ１〜３７ｖ３を基底ベクトルとする座標系である。相対位置設定部１５は、支持部モデル３７の基準位置として、支持部モデル３７を構成する複数の要素に含まれる任意の一点（例えば支持部モデル３７の上面の中心）を選択すればよい。さらに、相対位置設定部１５は、支持部モデル３７における任意の３つの方向を特定方向３７ｖ１〜３７ｖ３として選択すればよい。特定方向３７ｖ１は、例えば、支持部モデル３７の上面から下面に向かう方向である。特定方向３７ｖ２は、例えば、支持部モデル３７における互いに対向する一対の側面に直交する方向である。特定方向３７ｖ３は、例えば、支持部モデル３７における残りの一対の側面に直交する方向である。
【０１０２】
ワークモデル座標系は、ワークモデル３の基準点３ｏを原点とし、ワークモデル３における３つの特定方向３ｖ１〜３ｖ３を基底ベクトルとする座標系である。ワークモデル３の基準点３ｏおよび特定方向３ｖ１〜３ｖ３は、予め定められている。ワークモデル３の基準点３ｏは、例えば、Ｔ字官における分岐点に予め定められている。特定方向３ｖ１は、例えば、Ｔ字管における流路方向の１つに定められている。特定方向３ｖ２は、例えば、Ｔ字管における別の流路方向に定められている。特定方向３ｖ３は、例えば特定方向３ｖ１，３ｖ２に直交する方向に定められている。
【０１０３】
相対位置設定部１５は、支持部モデル座標系をワークモデル座標系に変換する座標変換行列tMＨwMを計算する。座標変換行列tMＨwMは、支持部モデル座標系における、ワークモデル座標系の基底ベクトル３ｖ１〜３ｖ３の成分および原点３ｏの位置を表している。
【０１０４】
＜Ｄ．三次元計測＞
次に、３Ｄ計測部２０による三次元形状の計測処理の詳細について説明する。３Ｄ計測部２０は、公知の三次元計測処理を用いて、撮像装置８の視野領域に存在する物体表面上の各点の三次元座標を示す三次元点群データを生成する。
【０１０５】
三次元計測処理の具体例として、例えば位相シフト法が採用される。この位相シフト法は、照射面内において正弦波状に濃淡を変化させたパターンを有する照明光を照射した状態で撮像された画像（正弦波投影画像）を用いる方法である。照射面内の濃淡の変化周期や位相を異ならせたパターンが複数用意され、プロジェクタ７は、撮像装置８の視野領域に対して、当該複数のパターンを順次照射する。３Ｄ計測部２０は、複数のパターンが照射されたときにそれぞれ撮像される画像を正弦波投影画像群として取得する。そして、３Ｄ計測部２０は、これらの正弦波投影画像間における対応する部分の明るさ（輝度や明度）の変化に基づいて、三次元座標を算出する。
【０１０６】
＜Ｅ．ワークの検出方法＞
次に、ワーク検出部２３によるワーク１の検出方法について説明する。ワーク検出部２３は、第２ＣＡＤデータ１１ａで示されるワークモデルを様々な視点から見た姿勢ごとのテンプレートを予め記憶している。ワーク検出部２３は、各テンプレートと３Ｄ計測部２０の計測結果である三次元点群データとを照合し、三次元点群データの中からテンプレートと類似するデータを抽出する。ワーク検出部２３は、抽出したデータに基づいて、撮像装置８の視野領域に存在するワーク１の位置姿勢を検出する。
【０１０７】
３Ｄ計測部２０の計測結果である三次元点群データは、撮像装置８の撮像により得られる画像の座標系（以下、「カメラ座標系」と称する。）で示される。そのため、ワーク検出部２３によって検出されたワーク１（対象ワーク２を含む）の位置姿勢は、カメラ座標系で示される。
【０１０８】
＜Ｆ．位置姿勢決定部およびモデル変更部の処理方法＞
次に、図１０および図１１を参照して、位置姿勢決定部およびモデル変更部の処理方法の詳細について説明する。
【０１０９】
図１０は、対象ワークを把持するときにエンドエフェクタの支持部が取るべき位置姿勢の決定方法を示す図である。
【０１１０】
図１０において、座標変換行列CＨwは、カメラ座標系を、対象ワーク２を基準とする座標系（以下、「対象ワーク座標系」と称する。）に変換するための行列である。対象ワーク座標系は、対象ワーク２の基準点２ｏを原点とし、対象ワーク２における３つの特定方向２ｖ１〜２ｖ３を基底ベクトルとする座標系である。対象ワーク２の基準点２ｏおよび特定方向２ｖ１〜２ｖ３は、上述したワークモデル３の基準点３ｏおよび特定方向３ｖ１〜３ｖ３（図９参照）とそれぞれ対応するように定められる。座標変換行列CＨwは、カメラ座標系における、対象ワーク座標系の基底ベクトル２ｖ１〜２ｖ３の成分および原点２ｏの位置を表している。対象ワーク座標系の基底ベクトル２ｖ１〜２ｖ３の成分および原点２ｏの位置は、対象ワーク２の位置姿勢を示している。そのため、カメラ座標系における対象ワーク２の位置姿勢は、座標変換行列CＨwによって示される。
【０１１１】
上述したように、ワークモデル３をエンドエフェクタモデル３５が把持するときの、支持部モデル３７に対するワークモデル３の相対位置姿勢は、座標変換行列tMＨwMで示される。そこで、位置姿勢決定部２５は、対象ワーク２をワークモデル３とみなし、以下の式（１）に従って、カメラ座標系における、対象ワーク２を把持するときの支持部モデル３７の位置姿勢を示す座標変換行列CＨtMを計算する。
CＨtM＝CＨw・（tMＨwM）-1  ・・・式（１）
座標変換行列CＨtMは、カメラ座標系における、対象ワーク２を把持するときにエンドエフェクタ３０の支持部３２が取るべき位置姿勢を示している。
【０１１２】
モデル変更部２６は、対象ワーク２を把持するときのエンドエフェクタ３０の形状に合うようにエンドエフェクタモデル３５を変更する。具体的には、モデル変更部２６は、エンドエフェクタモデル３５を構成する各要素の座標を変換する。
【０１１３】
まず、モデル変更部２６は、支持部モデル３７の位置姿勢が位置姿勢決定部２５によって決定された位置姿勢に一致するように、支持部モデル３７を構成する各要素の座標を変換する。すなわち、モデル変更部２６は、第１ＣＡＤデータ１０ａにおいて支持部モデル３７を示す属性情報が付与された座標を変換する。
【０１１４】
第１ＣＡＤデータ１０ａは、ＣＡＤ座標系における座標値を示す。また、位置姿勢決定部２５によって決定された位置姿勢は，カメラ座標系において支持部３２が取るべき位置姿勢であり、上記の座標変換行列CＨtMで示される。そのため、モデル変更部２６は、第１ＣＡＤデータ１０ａにおいて支持部モデル３７を示す属性情報が付与された座標を、座標変換行列CＨtM＝CＨw・（tMＨwM）-1を用いて変換する。これにより、支持部モデル３７の位置姿勢は、カメラ座標系において、対象ワーク２を把持するときのエンドエフェクタ３０の支持部３２が取るべき位置姿勢と一致する。
【０１１５】
ここで、第１ＣＡＤデータ１０ａにおいて右爪部モデル３６Ｒおよび左爪部モデル３６Ｌを示す属性情報が付与された座標についても、同じ座標変換行列CＨtM＝CＨw・（tMＨwM）-1を用いて変換する場合を想定する。この場合、右爪部モデル３６Ｒおよび左爪部モデル３６Ｌは定状態（例えば閉状態）となる。そのため、図１０に示されるように、右爪部モデル３６Ｒおよび左爪部モデル３６Ｌの位置姿勢は、対象ワーク２を把持するときに右爪部３１Ｒおよび左爪部３１Ｌが取るべき位置姿勢と一致しない。
【０１１６】
そのため、モデル変更部２６は、移動量設定部１４によって設定された移動量だけ、右爪部モデル３６Ｒおよび左爪部モデル３６Ｌを可動方向にそれぞれ移動させる。具体的には、モデル変更部２６は、座標変換行列CＨtM＝CＨw・（tMＨwM）-1に加えて、移動量設定部１４によって計算された座標変換行列ＨMR，ＨMLを用いる。すなわち、モデル変更部２６は、第１ＣＡＤデータ１０ａにおいて右爪部モデル３６Ｒを示す属性情報が付与された座標を、座標変換行列CＨw・（tMＨwM）-1・ＨMRを用いて変換する。モデル変更部２６は、第１ＣＡＤデータ１０ａにおいて左爪部モデル３６Ｌを示す属性情報が付与された座標を、座標変換行列CＨw・（tMＨwM）-1・ＨMLを用いて変換する。
【０１１７】
図１１は、モデル変更部によって座標変換されたエンドエフェクタモデルの一例を示す図である。図１１に示されるように、座標変換行列ＨMRを用いることにより、右爪部モデル３６Ｒの位置姿勢は、対象ワーク２を把持するときのエンドエフェクタ３０の右爪部３１Ｒが取るべき位置姿勢と一致する。同様に、座標変換行列ＨMLを用いることにより、左爪部モデル３６Ｌの位置姿勢は、対象ワーク２を把持するときのエンドエフェクタ３０の左爪部３１Ｌが取るべき位置姿勢と一致する。これにより、モデル変更部２６により変更されたエンドエフェクタモデル３５を用いることにより、エンドエフェクタ３０と対象ワーク２以外の物体との干渉判定を精度良く行なうことができる。
【０１１８】
＜Ｇ．干渉判定の処理方法＞
次に、干渉判定部２７による干渉判定の処理方法の詳細について説明する。上述したように、位置姿勢決定部２５は、対象ワーク２を把持するときの支持部３２が取るべき位置姿勢候補を決定する。そのため、当該位置姿勢候補に支持部３２を配置したとき、エンドエフェクタ３０は、対象ワーク２以外のワーク１またはコンテナを干渉する可能性がある。
【０１１９】
図１２は、エンドエフェクタと対象ワーク以外のワークとが干渉している例を示す図である。図１３は、エンドエフェクタとコンテナとが干渉している例を示す図である。
【０１２０】
このような干渉を避けるため、干渉判定部２７は、モデル変更部２６によって変更されたエンドエフェクタモデル３５と対象ワーク２以外の物体と干渉判定を行なう。３Ｄ計測部２０の計測結果である三次元点群データは、カメラ座標系で示される。また、上述の方法に従ってモデル変更部２６によって変更されたエンドエフェクタモデル３５もカメラ座標系で示される。そのため、干渉判定部２７は、カメラ座標系において、エンドエフェクタモデル３５と対象ワーク２以外の物体との干渉判定を行なえばよい。なお、干渉判定部２７は、ロボット３００のベース３４を基準とする座標系（以下、「ベース座標系」という）で干渉判定を行なってもよい。この場合、ベース座標系をカメラ座標系に変換するための座標変換行列BＨCを用いて適宜座標を変換した上で、干渉判定を行なえばよい。
【０１２１】
干渉判定部２７は、三次元点群データの中から対象ワーク２に対応する点群データを消去する。干渉判定部２７は、モデル変更部２６によって変更されたエンドエフェクタモデル３５を構成する要素の座標と残りの三次元点群データの座標とを比較することにより、エンドエフェクタモデル３５と対象ワーク２以外のワーク１との干渉判定を行なう。
【０１２２】
また、干渉判定部２７は、変更されたエンドエフェクタモデル３５を構成する要素の座標とコンテナ検出部２１によって検出されたコンテナ５の位置姿勢を示す座標とを比較することにより、エンドエフェクタモデル３５とコンテナ５との干渉判定を行なう。
【０１２３】
例えば、エンドエフェクタモデル３５を構成する要素がボックスである場合、干渉判定部２７は、エンドエフェクタモデル３５を構成するいずれかのボックスの内側に計測点が含まれるときに干渉有りと判定する。
【０１２４】
エンドエフェクタモデル３５を構成する要素が断面である場合、干渉判定部２７は、エンドエフェクタモデル３５を構成するいずれかの断面上に計測点が含まれるときとき、もしくは、隣り合う２つの断面間に計測点が含まれる場合に干渉有りと判定する。
【０１２５】
エンドエフェクタモデル３５を構成する要素が三角メッシュである場合、干渉判定部２７は、三次元点群データに属する各計測点と各三角メッシュとの距離を計算する。距離は、計測点が三角メッシュの法線方向側に位置する場合に正の値となり、計測点が三角メッシュの法線方向の反対側に位置する場合に負の値となる。干渉判定部２７は、計測点と三角メッシュとの距離が負である場合に干渉有りと判定する。
【０１２６】
エンドエフェクタモデル３５を構成する要素が点である場合、干渉判定部２７は、エンドエフェクタモデル３５を構成する複数の点のうち計測点を取り囲む点群が存在するときに干渉有りと判定する。
【０１２７】
＜Ｈ．把持位置出力部による位置姿勢情報の生成方法＞
次に、把持位置出力部２８による位置姿勢情報の生成方法の詳細について説明する。把持位置出力部２８は、干渉判定部２７による干渉無しと判定された位置姿勢候補の１つを示す位置姿勢情報を生成する。
【０１２８】
対象ワーク選択部２４によって複数の対象ワーク２が選択された場合、位置姿勢決定部２５は、当該複数の対象ワーク２の各々について位置姿勢候補を選択する。そのため、選択部２２は、複数の位置姿勢候補を選択する。干渉判定部２７は、当該複数の位置姿勢候補の各々について干渉判定を行なう。この場合、複数の位置姿勢候補について干渉無しと判定される可能性がある。干渉無しと判定された位置姿勢候補が複数である場合、把持位置出力部２８は、予め定められた抽出手法に従って、複数の位置姿勢候補の中の１つを抽出する。例えば、把持位置出力部２８は、現在のエンドエフェクタ３０の位置から最も近い位置姿勢候補を抽出する。把持位置出力部２８は、抽出した１つの位置姿勢候補を示す位置姿勢情報を生成する。
【０１２９】
上述したように、位置姿勢候補はカメラ座標系で示される。これに対し、ロボットコントローラ２００は、異なる座標系でロボット３００を制御する。例えば、ロボットコントローラ２００は、ロボット３００のベース３４を基準とする座標系（以下、「ベース座標系」という）でロボット３００を制御する。このような場合、把持位置出力部２８は、ベース座標系で示される位置姿勢情報を生成することが好ましい。そこで、把持位置出力部２８は、ベース座標系をカメラ座標系に変換するための座標変換行列BＨCを用いて、ベース座標系で示される位置姿勢情報を生成する。具体的には、把持位置出力部２８は、（BＨC）-1を用いて位置姿勢候補を座標変換することにより位置姿勢情報を生成する。
【０１３０】
＜Ｉ．事前設定処理の流れ＞
図１４を参照して、画像処理装置１００による事前設定処理の流れについて説明する。図１４は、実施の形態に係る画像処理装置によって実行される事前設定処理の流れを示すフローチャートである。
【０１３１】
まず、画像処理装置１００のＣＰＵ１１０は、エンドエフェクタ３０の三次元形状を示す第１ＣＡＤデータ１０ａを読み込む（ステップＳ１）。ＣＰＵ１１０は、読み込んだ第１ＣＡＤデータ１０ａを内部表現（ボックス、断面、三角メッシュ、点などの要素の集合）に変換する（ステップＳ２）。
【０１３２】
ＣＰＵ１１０は、第１ＣＡＤデータ１０ａで示されるエンドエフェクタモデル３５の画像を含むＵＩ画面４０（図６参照）をユーザインターフェース９に表示する。そして、ＣＰＵ１１０は、ユーザインターフェース９に入力された情報に基づいて、可動部モデル（右爪部モデル３６Ｒ、左爪部モデル３６Ｌ）および支持部モデル３７を設定する（ステップＳ３）。ＣＰＵ１１０は、右爪部モデル３６Ｒ、左爪部モデル３６Ｌおよび支持部モデル３７に設定された要素に対して、右爪部モデル３６Ｒ、左爪部モデル３６Ｌおよび支持部モデル３７のいずれかを示す属性情報をそれぞれ保存する（ステップＳ４）。
【０１３３】
ＣＰＵ１１０は、ユーザインターフェース９に入力された情報に基づいて、右爪部モデル３６Ｒおよび左爪部モデル３６Ｌの各々の可動方向を設定する（ステップＳ５）。
【０１３４】
ＵＩ画面４０においてワーク表示ボタン５１が操作されると、ＣＰＵ１１０は、ワーク１の三次元形状を示す第２ＣＡＤデータ１１ａを読み込み、第２ＣＡＤデータ１１ａで示されるワークモデル３の画像をＵＩ画面４０に表示する（ステップＳ６）。
【０１３５】
移動量入力欄５０に移動量が入力されると、ＣＰＵ１１０は、ＵＩ画面４０に表示しているエンドエフェクタモデル３５において、入力された移動量だけ右爪部モデル３６Ｒおよび左爪部モデル３６Ｌを可動方向にそれぞれ移動させる（ステップＳ７）。
【０１３６】
エンドエフェクタモデル３５を回転させる操作がユーザインターフェース９に入力されると、ＣＰＵ１１０は、当該操作入力に応じて、ＵＩ画面４０に表示しているエンドエフェクタモデル３５の姿勢を変更する。また、ワークモデル３を並進移動または回転移動させる操作がユーザインターフェース９に入力されると、ＣＰＵ１１０は、当該操作入力に応じて、ＵＩ画面４０に表示しているワークモデル３の位置姿勢を変更する（ステップＳ８）。
【０１３７】
次に、ＣＰＵ１１０は、ＵＩ画面４０に表示されている状態のエンドエフェクタモデル３５とワークモデル３との干渉判定を行ない、判定結果を表示する（ステップＳ９）。
【０１３８】
次に、ＣＰＵ１１０は、ＵＩ画面４０においてＯＫボタン５２が操作されたか否かを判定する（ステップＳ１０）。ＯＫボタンが操作されていない場合（ステップＳ１０でＮＯ）、事前設定処理はステップＳ７に戻る。
【０１３９】
ＯＫボタンが操作された場合（ステップＳ１０でＹＥＳ）、ＣＰＵ１１０は、移動量入力欄５０に現在入力されている移動量を、ワークモデル３を把持するために必要な右爪部モデル３６Ｒおよび左爪部モデル３６Ｌの移動量として設定する（ステップＳ１１）。具体的には、右爪部モデル３６Ｒの可動方向に設定した移動量だけ平行移動させるための座標変換行列ＨMRと左爪部モデル３６Ｌの可動方向に設定した移動量だけ平行移動させるための座標変換行列ＨMLとが設定される。
【０１４０】
次に、ＣＰＵ１１０は、エンドエフェクタモデル３５がワークモデル３を把持するときの、支持部モデル３７に対するワークモデル３の相対位置姿勢を設定する（ステップＳ１２）。具体的には、当該相対位置姿勢を示す座標変換行列tMＨwMが設定される。
【０１４１】
＜Ｊ．ピッキング位置の探索処理の流れ＞
次に、図１５を参照して、画像処理装置１００によるエンドエフェクタ３０のピッキング位置の探索処理の流れについて説明する。図１５は、実施の形態に係る画像処理装置によって実行されるピッキング位置の探索処理の流れを示すフローチャートである。
【０１４２】
まず、ＣＰＵ１１０は、エンドエフェクタ３０の三次元形状を示す第１ＣＡＤデータ１０ａを読み込む（ステップＳ２１）。ＣＰＵ１１０は、ステップＳ４で保存された属性情報を読み込む（ステップＳ２２）。ＣＰＵ１１０は、ワーク１の複数の姿勢にそれぞれ対応する複数のテンプレートを読み込む（ステップＳ２３）。さらに、ＣＰＵ１１０は、ステップＳ１１で設定された移動量に対応する座標変換行列ＨMR，ＨMLを読み込む（ステップＳ２４）。
【０１４３】
次に、ＣＰＵ１１０は、撮像装置８から受けた画像に基づいて、撮像装置８の視野領域に存在する物体（ワーク１およびコンテナ５）の表面の三次元形状を計測する（ステップＳ２５）。
【０１４４】
次に、ＣＰＵ１１０は、計測結果である三次元点群データとステップＳ２３で読み込んだ複数のテンプレートとを照合し、ワーク１の位置姿勢を検出する（ステップＳ２６）。ワーク１の位置姿勢は、カメラ座標系におけるワーク１の基準点および特定方向を示す座標変換行列CＨWで示される。
【０１４５】
さらに、ＣＰＵ１１０は、計測結果である三次元点群データと予め記憶しているコンテナ５の形状情報とを照合し、コンテナ５の位置姿勢を検出する（ステップＳ２７）。
【０１４６】
ＣＰＵ１１０は、位置姿勢が検出されたワーク１の中から所定数のワーク１を対象ワーク２として選択するとともに、選択された所定数の対象ワーク２の各々について、当該対象ワーク２を把持するときに支持部３２が取るべき位置姿勢候補を決定する。ＣＰＵ１１０は、決定した所定数の位置姿勢候補のリストを作成する（ステップＳ２８）。位置姿勢候補は、対象ワーク２の位置姿勢を示す座標変換行列CＨWとステップＳ１２で設定された座標変換行列tMＨwMの逆行列（tMＨwM）-1との積である座標変換行列CＨW・（tMＨwM）-1で示される。
【０１４７】
ＣＰＵ１１０は、位置姿勢候補のリストの中から１つの位置姿勢候補を選択する（ステップＳ２９）。
【０１４８】
ＣＰＵ１１０は、選択された位置姿勢候補で示される位置姿勢に合うように、支持部モデル３７を構成する各要素の座標を変換する（ステップＳ３０）。具体的には、ＣＰＵ１１０は、第１ＣＡＤデータ１０ａにおいて支持部モデル３７を示す属性情報が付与された座標を、座標変換行列CＨW・（tMＨwM）-1を用いて変換する。
【０１４９】
さらに、ＣＰＵ１１０は、ステップＳ２４で読み込んだ座標変換行列ＨMR，ＨMLを用いて、右爪部モデル３６Ｒおよび左爪部モデル３６Ｌを構成する各要素の座標を変換する（ステップＳ３１）。具体的には、ＣＰＵ１１０は、第１ＣＡＤデータ１０ａにおいて右爪部モデル３６Ｒを示す属性情報が付与された座標を、座標変換行列CＨW・（tMＨwM）-1・ＨMRを用いて変換する。ＣＰＵ１１０は、第１ＣＡＤデータ１０ａにおいて左爪部モデル３６Ｌを示す属性情報が付与された座標を、座標変換行列CＨW・（tMＨwM）-1・ＨMLを用いて変換する。
【０１５０】
次に、ＣＰＵ１１０は、ステップＳ２９，Ｓ３０において座標変換されたエンドエフェクタモデル３５と、ステップＳ２６において検出された位置姿勢のワーク１（ただし、ステップＳ２９で選択された位置姿勢候補に対応する対象ワーク２を除く）との干渉判定を行なう（ステップＳ３２）。
【０１５１】
さらに、ＣＰＵ１１０は、ステップＳ２９，Ｓ３０において座標変換されたエンドエフェクタモデル３５と、ステップＳ２７において検出された位置姿勢のコンテナ５との干渉判定を行なう（ステップＳ３３）。
【０１５２】
次に、ＣＰＵ１１０は、ステップＳ２８で作成された位置姿勢候補のリストのうち未選択の位置姿勢候補があるか否かを判定する（ステップＳ３４）。未選択の位置姿勢候補がある場合（ステップＳ３４でＹＥＳ）、探索処理はステップＳ２９に戻る。これにより、位置姿勢候補ごとに干渉判定が行なわれる。
【０１５３】
未選択の位置姿勢候補がない場合（ステップＳ３４でＮＯ）、ＣＰＵ１１０は、干渉無しと判定された位置姿勢候補を所定条件に従ってソートする（ステップＳ３５）。所定条件は、例えば、現状のエンドエフェクタ３０の支持部３２の位置姿勢に近い順である。その他、所定条件は、ワーク検出時における適合度の高い順、エンドエフェクタの回転量の少ない順、アプローチ角度が鉛直方向に近い順、露出度の高い順（重なり度の低い順）であってもよい。
【０１５４】
ＣＰＵ１１０は、最上位の位置姿勢候補を示す位置姿勢情報を生成し、生成した位置姿勢情報をロボットコントローラ２００に出力する（ステップＳ３６）。これにより、エンドエフェクタ３０のピッキング位置の探索処理は終了する。
【０１５５】
＜Ｋ．作用・効果＞
以上のように、本実施の形態に係る制御システムＳＹＳは、ＣＡＤ読込部１２と、ユーザインターフェース９と、パーツ設定部１３と、３Ｄ計測部２０と、選択部２２と、モデル変更部２６および干渉判定部２７とを備える。ＣＡＤ読込部１２は、エンドエフェクタ３０の三次元形状を示す第１ＣＡＤデータ１０ａを取得する。パーツ設定部１３は、第１ＣＡＤデータ１０ａで示されるエンドエフェクタモデル３５をユーザインターフェース９に表示させる。パーツ設定部１３は、ユーザインターフェース９に入力された情報に基づいて、エンドエフェクタモデル３５のうち右爪部および左爪部にそれぞれ対応する右爪部モデル３６Ｒおよび左爪部モデル３６Ｌと、右爪部モデル３６Ｒおよび左爪部モデル３６Ｌの可動方向とを設定する。３Ｄ計測部２０は、複数のワーク１を含む視野領域の三次元形状を計測する。選択部２２は、３Ｄ計測部２０の計測結果に基づいて、対象ワーク２をピッキングするときのエンドエフェクタ３０（具体的には支持部３２）の位置姿勢候補を選択する。干渉判定部２７は、選択部２２によって選択された位置姿勢候補のエンドエフェクタモデル３５と対象ワーク２以外の物体との干渉判定を行なう。ただし、干渉判定部２７は、エンドエフェクタモデル３５において、設定された移動量だけ右爪部モデル３６Ｒおよび左爪部モデル３６Ｌを可動方向にそれぞれ移動させた状態で干渉判定を行なう。
【０１５６】
上記の構成によれば、対象ワーク２のサイズに応じて適宜移動量を設定することにより、実際に対象ワーク２をピッキングするときのエンドエフェクタ３０の形状に合うようにエンドエフェクタモデル３５の形状を変更できる。そのため、変更後のエンドエフェクタモデル３５を用いることにより、エンドエフェクタ３０と対象ワーク２以外の物体との干渉判定を精度良く行なうことができる。
【０１５７】
ＣＡＤ読込部１２は、対象ワーク２の三次元形状を示す第２ＣＡＤデータ１１ａをさらに取得する。制御システムＳＹＳは、第２ＣＡＤデータ１１ａで示されるワークモデル３をエンドエフェクタモデル３５がピッキングするために必要な右爪部モデル３６Ｒおよび左爪部モデル３６Ｌの移動量を設定する移動量設定部１４を備える。モデル変更部２６は、移動量設定部１４によって設定された移動量だけ右爪部モデル３６Ｒおよび左爪部モデル３６Ｌを移動させる。
【０１５８】
上記の構成によれば、ワークモデル３とエンドエフェクタモデル３５とを用いることにより、ピッキングに必要な右爪部モデル３６Ｒおよび左爪部モデル３６Ｌの移動量を適切に設定できる。
【０１５９】
支持部３２は、右爪部３１Ｒと左爪部３１Ｌとの間の距離（間隔）が可変となるように、右爪部３１Ｒと左爪部３１Ｌをそれぞれ平行移動可能に支持する。この場合、エンドエフェクタモデル３５を構成するパーツの個数が少ないため、作業者は、ユーザインターフェース９を用いて、可動部モデル（右爪部モデル３６Ｒおよび左爪部モデル３６Ｌ）を容易に設定することができる。
【０１６０】
＜Ｌ．変形例１＞
上記の説明では、コンテナ５内に形状およびサイズが同一の１種類のワーク１がばら積みされるものとした。しかしながら、コンテナ５内には、形状およびサイズの少なくとも一方が異なる複数種類のワークがばら積みされてもよい。
【０１６１】
コンテナ５に複数種類のワークがばら積みされる場合、ＣＡＤ読込部１２は、第２記憶部１１から、複数種類のワークの各々の三次元形状を示すＣＡＤデータを読み込む。
【０１６２】
移動量設定部１４は、複数種類のワークの各々について、当該ワークを把持するために必要な右爪部モデル３６Ｒおよび左爪部モデル３６Ｌの移動量を設定する。つまり、移動量設定部１４は、複数種類のワークの各々について、右爪部モデル３６Ｒの可動方向に設定した移動量だけ平行移動させるための座標変換行列ＨMRを計算する。さらに、移動量設定部１４は、複数種類のワークの各々について、左爪部モデル３６Ｌの可動方向に設定した移動量だけ平行移動させるための座標変換行列ＨMLを計算する。
【０１６３】
相対位置設定部１５は、複数種類のワークの各々について、当該ワークを把持するときの支持部モデル３７に対するワークモデルの相対位置姿勢を示す座標変換行列tMＨwMを設定する。
【０１６４】
図１４に示す事前設定処理は、複数種類のワークの各々について実行される。これにより、複数種類のワークごとに座標変換行列ＨMR，ＨML，tMＨwMが設定される。
【０１６５】
選択部２２は、３Ｄ計測部２０の計測結果に基づいて、撮像装置８の視野領域に存在するワークの種類を識別し、識別結果に応じて、ワークを把持するときの支持部３２が取るべき位置姿勢候補を選択する。
【０１６６】
モデル変更部２６は、位置姿勢候補に対応するワークの種類に応じて設定した移動量だけ右爪部モデル３６Ｒおよび左爪部モデル３６Ｌを移動させる。
【０１６７】
図１６は、変形例１に係る画像処理装置によって実行されるピッキング位置の探索処理の流れを示すフローチャートである。図１６に示すフローチャートは、図１５に示すフローチャートと比較して、ステップＳ２３，Ｓ２４，Ｓ２６の代わりにステップＳ３７〜Ｓ４０を含む点で相違する。
【０１６８】
ステップＳ３７において、ＣＰＵ１１０は、複数種類のワークの各々について、複数の姿勢にそれぞれ対応する複数のテンプレートを読み込む。
【０１６９】
ステップＳ３８において、ＣＰＵ１１０は、ステップＳ２５の計測結果である三次元点群データとステップＳ３７で読み込んだ複数のテンプレートとを照合して、撮像装置８の視野領域に存在するワークの種類を識別するとともに、当該ワークの位置姿勢を検出する。
【０１７０】
ステップＳ３９において、ＣＰＵ１１０は、位置姿勢が検出されたワークの中から所定数のワークを対象ワーク２として選択するとともに、選択された所定数の対象ワーク２の各々について、当該対象ワーク２を把持するときに支持部３２が取るべき位置姿勢候補を決定する。ＣＰＵ１１０は、ワークに種類に応じた座標変換行列tMＨwMを用いて、位置姿勢候補を決定する。ＣＰＵ１１０は、決定した所定数の位置姿勢候補のリストを作成する。
【０１７１】
ステップＳ４０において、ＣＰＵ１１０は、各位置姿勢候補に対応する種類のワークに対して設定された移動量だけ移動させるための座標変換行列ＨMR，ＨMLを読み込む。
【０１７２】
ステップＳ４０の後、図１５と同様のステップＳ２９〜Ｓ３６が実行される。ただし、ステップＳ３０では、選択される位置姿勢候補に対応するワークの種類に応じて設定された座標変換行列tMＨwMを用いて、支持部モデル３７を構成する各要素の座標が変換される。また、ステップＳ３１では、選択される位置姿勢候補に対応するワークの種類に応じて設定された座標変換行列ＨMR，ＨMLを用いて、右爪部モデル３６Ｒおよび左爪部モデル３６Ｌを構成する各要素の座標が変換される。
【０１７３】
＜Ｍ．変形例２＞
上記の説明では、干渉判定部２７は、３Ｄ計測部２０の計測結果である三次元点群データに基づいて検出されたコンテナ５とエンドエフェクタモデル３５との干渉判定を行なうものとした。しかしながら、コンテナ５は、ばら積みされたワークに隠され、撮像装置８の撮像により得られる画像に含まれない可能性がある。この場合、コンテナ検出部２１は、三次元点群データからコンテナ５の位置姿勢を検出できない。
【０１７４】
コンテナ５は、通常、定位置に配置される。そのため、画像処理装置１００は、定位置に配置されたコンテナ５が示す空間の座標を示すコンテナ情報を予め記憶しておいてもよい。干渉判定部２７は、当該コンテナ情報に基づいて、エンドエフェクタモデル３５とコンテナ５との干渉判定を行なえばよい。
【０１７５】
なお、コンテナ情報は、カメラ座標系で示されてもよいし、ベース座標系で示されてもよい。コンテナ情報がベース座標系で示される場合、干渉判定部２７は、ベース座標系をカメラ座標系に変換するための座標変換行列BＨCを用いてコンテナ情報を変換し、変換後のコンテナ情報を用いて干渉判定を行なえばよい。もしくは、干渉判定部２７は、変更後のエンドエフェクタモデル３５の座標を座標変換行列（BＨC）-1に従って変換し、ベース座標系においてエンドエフェクタモデル３５とコンテナ５との干渉判定を行なってもよい。
【０１７６】
＜Ｎ．変形例３＞
上記の説明では、形状およびサイズが予め定まっているワーク１がコンテナ５にばら積みされるものとした。しかしながら、形状およびサイズにばらつきのあるワーク１がコンテナ５にばら積みされてもよい。
【０１７７】
図１７は、形状およびサイズにばらつきのあるワーク１を把持するときのエンドエフェクタを示す図である。ワーク１の形状およびサイズにばらつきがあったとしても、以下の条件ａ，ｂを満たす場合に対象ワーク２を把持することができる。
条件ａ：右爪部３１Ｒおよび左爪部３１Ｌの両下端を通る平面と対象ワーク２の最も高い点との距離が、ワーク１の形状およびサイズのばらつきを考慮して予め定められた閾値ｄｈ以上である。
条件ｂ：右爪部３１Ｒおよび左爪部３１Ｌが対象ワーク２以外の物体と干渉しない。
【０１７８】
変形例３に係る画像処理装置は、撮像装置８の視野領域の三次元形状に基づいて、条件ａ，ｂを満たすように支持部３２の位置姿勢候補を選択するとともに、右爪部モデル３６Ｒおよび左爪部モデル３６Ｌの移動量を設定する。
【０１７９】
（Ｎ−１．機能構成）
図１８は、変形例３に係る画像処理装置の機能構成を示すブロック図である。図１８に示されるように、変形例３に係る画像処理装置１００Ａは、図４に示す画像処理装置１００と比較して、第２記憶部１１および相対位置設定部１５を備えない点で相違する。さらに、画像処理装置１００Ａは、図４に示す画像処理装置１００と比較して、移動量設定部１４、コンテナ検出部２１、選択部２２、モデル変更部２６および干渉判定部２７の代わりに範囲設定部１６、コンテナ情報記憶部２１Ａ、選択部２２Ａおよび干渉判定部２７Ａを備える点で相違する。選択部２２Ａは、図４に示す選択部２２と比較して、ワーク検出部２３、対象ワーク選択部２４および位置姿勢決定部２５の代わりに、凹部検出部２９、位置姿勢決定部２５Ａおよび移動量設定部１４Ａを含む点で相違する。なお、変形例３では、変形例２のようにコンテナ５が定位置に配置されるものとする。
【０１８０】
範囲設定部１６は、ユーザインターフェース９に入力された情報に基づいて、右爪部モデル３６Ｒおよび左爪部モデル３６Ｌの移動量の設定可能範囲およびステップ数を設定する。
【０１８１】
図１９は、変形例３に係るユーザインターフェースに表示されるＵＩ画面の一例を示す図である。図１９に示すＵＩ画面４０Ａは、図６に示すＵＩ画面４０と比較して、ワーク表示ボタン５１および移動量入力欄５０の代わりに範囲入力欄５５，５６およびステップ数入力欄５７を含む点で相違する。
【０１８２】
範囲設定部１６は、範囲入力欄５５に入力された値（最小値）から範囲入力欄５６に入力された値（最大値）までを移動量の設定可能範囲として設定する。範囲設定部１６は、ステップ数入力欄５７に入力された値を移動量のステップ数として設定する。
【０１８３】
図１８に戻って、コンテナ情報記憶部２１Ａは、定位置に配置されたコンテナ５の三次元座標を示すコンテナ情報を記憶している。
【０１８４】
選択部２２Ａは、撮像装置８の視野領域の三次元形状に基づいて、ワークをピッキングするときの支持部の位置姿勢候補を選択するとともに、ワークをピッキングするために必要な右爪部モデル３６Ｒおよび左爪部モデル３６Ｌの移動量を設定する。
【０１８５】
図２０を参照しながら、選択部２２Ａの凹部検出部２９、移動量設定部１４Ａおよび位置姿勢決定部２５Ａの処理について説明する。図２０は、変形例３に係る画像処理装置の選択部の処理を示す図である。図２０には、３Ｄ計測部２０によって計測された三次元形状を上方からみたときの図が示される。
【０１８６】
凹部検出部２９は、３Ｄ計測部２０の計測結果である三次元点群データに基づいて、撮像装置８の視野領域の三次元形状における凹部を検出する。具体的には、凹部検出部２９は、三次元点群データの中から最高点のデータを抽出する。最高点のＺ座標値をz_maxとする。凹部検出部２９は、三次元点群データにおいて、Ｚ座標値がz_max−ｄｈ未満の点群データ（ｚ＜z_max−ｄｈ）をマスクする。凹部検出部２９は、Ｚ座標がz_max−ｄｈの平面上において、残った領域をラベリングする。図２０において、領域６０，６１は、ラベリングされた領域を示している。領域６０は、三次元形状における最高点からＺ座標がz_max−ｄｈの平面に投影した点を含む領域である。領域６０，６１以外の領域が三次元形状における凹部に対応する。
【０１８７】
移動量設定部１４Ａは、範囲設定部１６によって設定された移動量範囲の最小値から最大値まで順に移動量を選択する。移動量設定部１４Ａは、移動量範囲の最大値と最小値との差を（ステップ数−１）で割った量をステップ幅とし、ステップ幅だけ間隔をあけて移動量を順に選択する。
【０１８８】
移動量設定部１４Ａは、選択した移動量だけ右爪部モデル３６Ｒおよび左爪部モデル３６Ｌを可動方向に移動させたときに、以下の条件（ｉ）（ｉｉ）の両方を満たすか否かを判定する。
条件（ｉ）：右爪部モデル３６Ｒおよび左爪部モデル３６Ｌが領域６０の周囲に位置する（領域６０を挟むように位置する）
条件（ｉｉ）：右爪部モデル３６Ｒおよび左爪部モデル３６Ｌが凹部に位置する。
条件（ｉ）（ｉｉ）の両方を満たす場合に、移動量設定部１４Ａは、選択した移動量を、領域６０に存在する対象ワーク２を把持するときに必要な移動量として設定する。
【０１８９】
例えば、右爪部モデル３６Ｒおよび左爪部モデル３６Ｌの可動方向が互いに逆方向に設定され、かつ、右爪部モデル３６Ｒと左爪部モデル３６Ｌとが可動方向に沿って並んで配置される場合、以下のようにして移動量が設定される。
【０１９０】
図２０に示されるように、移動量設定部１４Ａは、領域６０の重心Ｇの座標値を計算する。さらに、移動量設定部１４Ａは、右爪部モデル３６Ｒおよび左爪部モデル３６Ｌを可動方向に選択された移動量だけそれぞれ移動させたときの右爪部モデル３６Ｒと左爪部モデル３６Ｌとの間隔（開き幅Ｗ）を計算する。移動量設定部１４Ａは、重心Ｇを中心とし、計算した開き幅Ｗを内径、開き幅Ｗにαを加算した値を外径とするリング状領域６４を特定する。αは、右爪部モデル３６Ｒおよび左爪部モデル３６Ｌにおける支持部モデル３７とは反対側の端面（以下、「下端面」と称する。）の可動方向に沿った長さの合計に所定マージンを加えた値である。
【０１９１】
移動量設定部１４Ａは、重心Ｇを通る所定数の直線の各々について、当該直線とリング状領域６４とが交わる２か所に、当該直線が可動方向と一致するように右爪部モデル３６Ｒの下端面６３Ｒと左爪部モデル３６Ｌの下端面６３Ｌとを配置するシミュレーションを行なう。所定数の直線の各々と基準方向（例えばＸ方向）とのなす角度は予め定められる。図２０には、所定数の直線のうち直線６５が選択されたときの例が示される。移動量設定部１４Ａは、下端面６３Ｒ，６３Ｌが領域６０，６１と重なるか否かを判定する。下端面６３Ｒ，６３Ｌが領域６０，６１と重ならない場合に、移動量設定部１４Ａは、選択した移動量を、領域６０に存在する対象ワーク２を把持可能な移動量として設定すればよい。
【０１９２】
移動量設定部１４Ａは、上記の移動量設定部１４と同様に、右爪部モデル３６Ｒの可動方向に設定した移動量だけ平行移動させるための座標変換行列ＨMRを計算する。さらに、移動量設定部１４Ａは、左爪部モデル３６Ｌの可動方向に設定した移動量だけ平行移動させるための座標変換行列ＨMLを計算する。
【０１９３】
移動量設定部１４Ａは、領域６０に存在する対象ワーク２を把持可能な移動量を設定した場合、下端面６３Ｒ，６３Ｌが領域６０，６１と重ならないと判定した直線の方向および重心Ｇの座標を位置姿勢決定部２５Ａに出力する。
【０１９４】
なお、移動量設定部１４Ａは、下端面６３Ｒ，６３Ｌが領域６０，６１と重ならないと判定した直線が複数存在する場合、当該複数の直線の全ての方向を位置姿勢決定部２５Ａに出力する。
【０１９５】
位置姿勢決定部２５Ａは、領域６０に存在する対象ワーク２を把持するときの支持部３２が取るべき位置姿勢を決定する。具体的には、位置姿勢決定部２５Ａは、以下の条件（１）〜（３）を満たすようにエンドエフェクタモデル３５を配置したときの、カメラ座標系における支持部モデル３７の位置姿勢を計算する。当該位置姿勢は、カメラ座標系を支持部モデル座標系に変換する座標変換行列CＨtMで示される。座標変換行列CＨtMは、カメラ座標系における、支持部モデル座標系の基底ベクトル３７ｖ１〜３７ｖ３の成分および原点３７ｏの位置を表している（図１０参照）。位置姿勢決定部２５Ａは、座標変換行列CＨtMを、対象ワーク２を把持するときに支持部３２が取るべき位置姿勢候補を示す情報として計算する。
条件（１）：Ｚ座標がz_max−ｄｈの平面上に右爪部モデル３６Ｒの下端面６３Ｒおよび左爪部モデル３６Ｌの下端面６３Ｌが位置する。
条件（２）：右爪部モデル３６Ｒの下端面６３Ｒの中心と左爪部モデル３６Ｌの下端面６３Ｌの中心との中間点が、移動量設定部１４Ａから受けた重心Ｇと一致する。
条件（３）：右爪部モデル３６Ｒおよび左爪部モデル３６Ｌの可動方向が、移動量設定部１４Ａから受けた直線の方向と一致する。
【０１９６】
干渉判定部２７Ａは、コンテナ情報記憶部２１Ａが記憶するコンテナ情報に基づいて、エンドエフェクタモデル３５とコンテナ５との干渉判定を行なう。
【０１９７】
（Ｎ−２．事前設定処理の流れ）
図２１は、変形例３に係る画像処理装置によって実行される事前設定処理の流れを示すフローチャートである。図２１に示すフローチャートは、図１４に示すフローチャートと比較して、ステップＳ７〜Ｓ９が省略され、ステップＳ１１，Ｓ１２の代わりにステップＳ４１，Ｓ４２を含む点で相違する。
【０１９８】
ＯＫボタンが操作されると（ステップＳ１０でＹＥＳ）、ステップＳ４１において、ＣＰＵ１１０は、範囲入力欄５５，５６に現在入力されている値を移動量の設定可能範囲の最小値，最大値としてそれぞれ設定する。さらに、ステップＳ４２において、ＣＰＵ１１０は、ステップ数入力欄５７に現在入力されている値をステップ数として設定する。
【０１９９】
（Ｎ−３．ピッキング位置の探索処理の流れ）
次に、図２２および図２３を参照して、変形例３に係る画像処理装置１００Ａによるエンドエフェクタ３０のピッキング位置の探索処理の流れについて説明する。図２２は、変形例３に係る画像処理装置によって実行されるピッキング位置の探索処理の流れを示すフローチャートである。図２３は、図２２のステップＳ５２のサブルーチンの処理の流れの一例を示すフローチャートである。図２２に示すフローチャートは、図１５に示すフローチャートと比較して、ステップＳ２３，Ｓ２４が省略された点、ステップＳ２６〜Ｓ２７の代わりにステップＳ５１〜Ｓ５５を含む点、および、ステップＳ３２，Ｓ３３の代わりにステップＳ５６を含む点で相違する。
【０２００】
ステップＳ５１において、ＣＰＵ１１０は、ステップＳ４１で設定された設定可能範囲の最小の移動量を選択する。
【０２０１】
次にステップＳ５２において、ＣＰＵ１１０は、選択された移動量だけ右爪部３１Ｒおよび左爪部３１Ｌを可動方向に移動させたときに、対象ワーク２を把持可能な支持部３２の位置姿勢候補を抽出する。
【０２０２】
例えば、ステップＳ５２において図２３に示すステップＳ５２１〜Ｓ５２７が実行される。
【０２０３】
ステップＳ５２１において、ＣＰＵ１１０は、３Ｄ計測部２０によって計測された三次元点群データの中から最高点のデータ（x，y，z_max）を抽出する。ステップＳ５２２において、ＣＰＵ１１０は、三次元点群データにおいて、Ｚ座標値がz_max−ｄｈ未満の点群データ（ｚ＜z_max−ｄｈ）をマスクする。ステップＳ５２３において、ＣＰＵ１１０は、Ｚ座標がz_max−ｄｈの平面上において、残った領域をラベリングし、各領域の重心座標を計算する。
【０２０４】
ステップＳ５２４において、ＣＰＵ１１０は、最高点に対応する領域の重心を中心と、選択された移動量に対応する開き幅Ｗを内径、開き幅Ｗにαを加算した値を外径とするリング状領域６４を特定する（図２０参照）。
【０２０５】
ステップＳ５２５において、ＣＰＵ１１０は、特定したリング状領域６４とラベリングされた領域６０，６１とに基づいて、対象ワーク２を把持するときに支持部３２が取るべき位置姿勢候補を抽出する。具体的には、ＣＰＵ１１０は、リング状領域６４内において、右爪部モデル３６Ｒの下端面６３Ｒと左爪部モデル３６Ｌの下端面６３Ｌとが領域６０，６１と重ならないときの支持部モデル３７の位置姿勢を、支持部３２が取るべき位置姿勢候補として決定する。支持部３２が取るべき位置姿勢候補は、上述したように、座標変換行列CＨtMで示される。
【０２０６】
図２４に戻ってステップＳ５２の後、ステップＳ５３において、ＣＰＵ１１０は、少なくとも１つの位置姿勢候補が抽出されたか否かを判定する。少なくとも１つの位置姿勢候補が抽出されなかった場合（ステップＳ５３でＮＯ）、ステップＳ５４において、ＣＰＵ１１０は、現在選択されている移動量から、ステップＳ４１で設定されたステップ数に応じて計算されるステップ幅だけ大きい移動量を選択する。ステップＳ５４の後、探索処理はステップＳ５２に戻り、位置姿勢候補の抽出処理が実行される。
【０２０７】
少なくとも１つの位置姿勢候補が抽出された場合（ステップＳ５３でＹＥＳ）、ステップＳ５５において、ＣＰＵ１１０は、選択されている移動量を、対象ワーク２を把持可能な移動量として設定する。具体的には、右爪部モデル３６Ｒの可動方向に設定した移動量だけ平行移動させるための座標変換行列ＨMRと左爪部モデル３６Ｌの可動方向に設定した移動量だけ平行移動させるための座標変換行列ＨMLとが設定される。
【０２０８】
その後、図１５で説明したステップＳ２８〜Ｓ３１が実行される。ステップＳ３０では、支持部モデル３７を示す属性情報が付与された座標が、座標変換行列CＨtMを用いて変換される。ただし、座標変換行列CＨtMは、ステップＳ５２５で決定されている。また、ステップＳ３１では、座標変換行列ＨMR，ＨMLを用いて、右爪部モデル３６Ｒおよび左爪部モデル３６Ｌを構成する各要素の座標が変換される。ただし、座標変換行列ＨMR，ＨMLは、ステップＳ５５で設定されている。
【０２０９】
次にステップＳ５６において、ＣＰＵ１１０は、座標変換されたエンドエフェクタモデル３５と、コンテナ情報記憶部２１Ａに記憶されたコンテナ情報で示される位置姿勢のコンテナ５との干渉判定を行なう。その後、図１５で説明したステップＳ３４〜Ｓ３６が実行される。
【０２１０】
＜Ｏ．変形例４＞
上記の説明では、作業者は、ユーザインターフェース９に表示されたエンドエフェクタモデル３５において、枠線４２〜４４を用いて右爪部３１Ｒ、左爪部３１Ｌおよび支持部３２にそれぞれ対応する部分を指定する。このとき、画像処理装置は、エンドエフェクタモデル３５の形状から右爪部３１Ｒ、左爪部３１Ｌおよび支持部３２にそれぞれ対応する部分を推定し、推定結果に応じて枠線４２〜４４のデフォルトの位置姿勢およびサイズを決定してもよい。これにより、作業者は、枠線４２〜４４に対する操作を簡略化できる。
【０２１１】
図２４は、変形例４に係る画像処理装置の機能構成の一例を示すブロック図である。変形例４に係る画像処理装置１００Ｂは、図４に示す画像処理装置１００と比較して、ＣＡＤ読込部１２の代わりに第１ＣＡＤ読込部１２Ａおよび第２ＣＡＤ読込部１２Ｂを備え、学習用データベース１７と、学習機１８と、識別機１９とをさらに備える点で相違する。
【０２１２】
第１ＣＡＤ読込部１２Ａは、第１記憶部１０から第１ＣＡＤデータ１０ａを読み込む。第１ＣＡＤ読込部１２Ａは、読み込んだ第１ＣＡＤデータ１０ａを内部表現（ボックス、断面、三角メッシュ、点などの要素の集合）に変換する。第２ＣＡＤ読込部１２Ｂは、第２記憶部１１から第２ＣＡＤデータ１１ａを読み込む。
【０２１３】
学習用データベース１７は、学習用データセット１７ａを記憶する。学習用データセット１７ａは、様々な形状のエンドエフェクタを様々な方向から射影した複数の画像の各々が学習用データを含む。学習用データは、画像の各画素に、支持部および可動部にいずれに対応するかを示す属性情報を付与した訓練データである。
【０２１４】
学習機１８は、学習用データセット１７ａを用いて、学習済モデルの学習を実行する。学習機１８は、生成した学習済モデルを識別機１９に出力する。学習機１８は、例えばＳｅｇｎｅｔ（http://mi.eng.cam.ac.uk/projects/segnet）などのセグメンテーション手法を用いて学習済モデルを生成する。
【０２１５】
学習済モデルは、エンドエフェクタの画像データの入力を受けて、当該画像データで示される画像を構成する各画素について、当該画素が支持部に対応する部分である可能性を示すスコア（以下、「第１スコア」と称する。）を計算する。さらに、学習済モデルは、各画素について、当該要素が可動部に対応する部分である可能性を示すスコア（以下、「第２スコア」と称する。）を計算する。
【０２１６】
学習済モデルは、例えば、ＣＮＮ（Convolutional Neural Network：畳み込みニューラルネットワーク）に分類される前処理ネットワークと、中間層と、出力層に相当する活性化関数と、Ｓｏｆｔｍａｘ関数とを含む。
【０２１７】
識別機１９は、学習済モデルを用いて、ＵＩ画面４０の表示領域４１に表示される画像の各画素について、第１スコアおよび第２スコアを計算する。識別機１９は、第１スコアが第２スコアよりも大きくかつ第１スコアが規定閾値以上である画素を支持部モデル３７に対応する画素として識別する。識別機１９は、第２スコアが第１スコアよりも大きくかつ第２スコアが規定閾値以上である画素を可動部モデルに対応する画素として識別する。識別機１９は、第１スコアおよび第２スコアが規定閾値未満である画素を背景画素として識別する。なお、可動部モデルに対応する複数の画素が２つの集合にラベリングされる場合、識別機１９は、当該２つの集合のうちの一方に属する画素を右爪部モデル３６Ｒに対応する画素と識別し、他方に属する画素を左爪部モデル３６Ｌに対応する画素として識別する。
【０２１８】
パーツ設定部１３は、識別機１９による識別結果に従って、枠線４２〜４４のデフォルトの位置姿勢およびサイズを決定する。これにより、識別機１９の識別結果が正しい場合、作業者は、枠線４２〜４４に対する操作を省略できる。識別機１９の識別結果に誤りがある場合、作業者は、枠線４２〜４４の位置姿勢およびサイズを適宜修正すればよい。
【０２１９】
＜Ｐ．変形例５＞
上記の実施の形態および変形例では、エンドエフェクタ３０が平行移動する２つの爪部を可動部として有する例について説明した。しかしながら、エンドエフェクタ３０は、平行移動する３つ以上の爪部を可動部として有してもよい。例えば、Ｎ個の爪部の中心点を通るＮ個の直線に沿って当該Ｎ個の爪部がそれぞれ移動する多指ハンドであってもよい。多指ハンドでは、Ｎ個の爪部が互いに近づくように移動することにより対象ワーク２を把持できる。このような多指ハンドであれば、形状およびサイズが予め定まっているワーク１であっても、上記の変形例３と同様の方法により、爪部の移動量を設定できる。
【０２２０】
もしくは、エンドエフェクタ３０は、回転移動する可動部を有していてもよい。回転移動する可動部を有する場合、パーツ設定部１３は、当該可動部に対応する可動部モデルについて、可動方向として回転中心軸および回転方向を設定すればよい。
【０２２１】
エンドエフェクタ３０による対象ワーク２のピッキングは、上記の把持動作に限定されない。例えば、ピッキングは、対象ワーク２を吸着することにより行なわれてもよい。
【０２２２】
＜Ｑ．変形例６＞
上記の実施の形態では、画像処理装置１００は、事前設定処理と、ピッキング位置を探索する探索処理とを両方を行なうものとした。しかしながら、事前設定処理は、画像処理装置１００とは別の情報処理装置で実行されてもよい。情報処理装置は、汎用のコンピュータで構成され、画像処理装置と同様のハードウェア構成（図３）を備える。そして、情報処理装置は、第１記憶部１０と、第２記憶部１１と、ＣＡＤ読込部１２と、パーツ設定部１３と、移動量設定部１４と、相対位置設定部１５とを備えればよい。
【０２２３】
＜Ｒ．付記＞
以上のように、本実施の形態および変形例は以下のような開示を含む。
【０２２４】
（構成１）
複数の物体（１）の中の１つの物体を対象物（２）としてピッキングするエンドエフェクタ（３０）を有するロボット（３００）を制御する制御システム（ＳＹＳ）であって、
前記エンドエフェクタ（３０）は、可動部（３１Ｒ，３１Ｌ）と、前記可動部（３１Ｒ，３１Ｌ）を移動可能に支持する支持部（３２）とを含み、
前記制御システム（ＳＹＳ））は、
前記エンドエフェクタ（３０）の三次元形状を示す第１形状データを取得する取得部（１２，１２Ａ）と、
ユーザインターフェース（９）と、
前記第１形状データで示されるエンドエフェクタモデル（３５）を前記ユーザインターフェース（９）に表示させ、前記ユーザインターフェース（９）に入力された情報に基づいて、前記エンドエフェクタモデル（３５）のうち前記可動部（３１Ｒ，３１Ｌ）に対応する可動部モデル（３６Ｒ，３６Ｌ）と前記可動部モデル（３６Ｒ，３６Ｌ）の可動方向とを設定する第１設定部（１３）と、
前記複数の物体を含む視野領域の三次元形状を計測する計測部（２０）と、
前記計測部（２０）の計測結果に基づいて、前記対象物をピッキングするときの前記エンドエフェクタ（３０）の位置姿勢候補を選択する選択部（２２，２２Ａ）と、
前記選択部（２２，２２Ａ）によって選択された位置姿勢候補の前記エンドエフェクタモデル（３５）と前記対象物以外の物体との干渉判定を行なう判定部（２７，２７Ａ）とを備え、
前記判定部（２６，２７，２７Ａ）は、前記エンドエフェクタモデル（３５）において、設定された移動量だけ前記可動部モデル（３６Ｒ，３６Ｌ）を前記可動方向に移動させた状態で前記干渉判定を行なう、制御システム（ＳＹＳ）。
【０２２５】
（構成２）
前記取得部（１２，１２Ｂ）は、前記対象物の三次元形状を示す第２形状データをさらに取得し、
前記制御システム（ＳＹＳ）は、さらに、
前記第２形状データで示される対象物モデル（３）を前記エンドエフェクタモデル（３５）がピッキングするために必要な前記可動部モデル（３６Ｒ，３６Ｌ）の移動量を設定する第２設定部（１４）を備え、
前記判定部（２６，２７）は、前記第２設定部（１４）によって設定された移動量だけ前記可動部モデル（３６Ｒ，３６Ｌ）を移動させる、構成１に記載の制御システム（ＳＹＳ）。
【０２２６】
（構成３）
前記複数の物体は、互いに形状およびサイズの少なくとも一方の異なる複数種類の物体を含み、
前記取得部（１２，１２Ｂ）は、前記複数種類の物体の各々について、当該物体の三次元形状を示す第２形状データをさらに取得し、
前記制御システム（ＳＹＳ）は、さらに、
前記複数種類の物体の各々に対して、前記第２形状データで示される物体モデルを前記エンドエフェクタモデルがピッキングするために必要な前記可動部モデル（３６Ｒ，３６Ｌ）の移動量を設定する第２設定部（１４）を備え、
前記選択部（２２）は、前記計測部（２０）の計測結果に基づいて前記対象物の種類を識別し、識別結果に応じて前記位置姿勢候補を選択し、
前記判定部（２６，２７）は、前記選択部（２２）によって識別された種類に対して前記第２設定部（１４）によって設定された移動量だけ前記可動部モデル（３６Ｒ，３６Ｌ）を移動させる、構成１に記載の制御システム（ＳＹＳ）。
【０２２７】
（構成４）
前記視野領域の三次元形状に基づいて、前記対象物をピッキングするために必要な前記可動部モデル（３６Ｒ，３６Ｌ）の移動量を設定する第２設定部（１４Ａ）をさらに備え、
前記判定部（２６，２７Ａ）は、前記第２設定部（１４Ａ）によって設定された移動量だけ前記可動部モデル（３６Ｒ，３６Ｌ）を移動させる、構成１に記載の制御システム（ＳＹＳ）。
【０２２８】
（構成５）
前記支持部（３２）は、平行移動および回転移動の少なくとも一方が可能なように前記可動部（３１Ｒ，３１Ｌ）を支持する、構成１から４のいずれかに記載の制御システム（ＳＹＳ）。
【０２２９】
（構成６）
前記可動部（３１Ｒ，３１Ｌ）は、複数の爪部（３１Ｒ，３１Ｌ）を有し、
前記支持部（３２）は、前記複数の爪部（３１Ｒ，３１Ｌ）間の距離が可変となるように、前記複数の爪部（３１Ｒ，３１Ｌ）をそれぞれ平行移動可能に支持する、構成１から４のいずれかに記載の制御システム（ＳＹＳ）。
【０２３０】
（構成７）
前記可動部（３１Ｒ，３１Ｌ）は、複数の爪部（３１Ｒ，３１Ｌ）を有し、
前記第２設定部（１４Ａ）は、
前記視野領域の三次元形状の中から最も高い位置を抽出し、
前記視野領域のうち、抽出された位置との高度差が規定値以下となる領域をラベリングし、
前記複数の爪部（３１Ｒ，３１Ｌ）がラベリングされた１つの領域の周囲に位置し、かつ、前記複数の爪部（３１Ｒ，３１Ｌ）がラベリングされた他の領域と重ならないように、前記複数の爪部（３１Ｒ，３１Ｌ）の各々の移動量を設定する、構成４に記載の制御システム（ＳＹＳ）。
【０２３１】
（構成８）
ユーザインターフェース（９）を用いて、対象物（２）をピッキングするエンドエフェクタ（３０）の三次元形状を示す形状データに対する情報処理を行なう情報処理装置（１００）であって、
前記エンドエフェクタ（３０）は、可動部（３１Ｒ，３１Ｌ）と、前記可動部（３１Ｒ，３１Ｌ）を移動可能に支持する支持部（３２）とを含み、
前記情報処理装置（１００）は、
前記エンドエフェクタ（３０）の三次元形状を示す形状データを取得する取得部（１２，１２Ａ）と、
前記形状データで示されるエンドエフェクタモデル（３５）を前記ユーザインターフェース（９）に表示させ、前記ユーザインターフェース（９）に入力された情報に基づいて、前記エンドエフェクタモデル（３５）のうち前記可動部（３１Ｒ，３１Ｌ）に対応する可動部モデル（３６Ｒ，３６Ｌ）と前記可動部モデル（３６Ｒ，３６Ｌ）の可動方向とを設定する設定部（１４，１４Ａ）とを備える、情報処理装置（１００）。
【０２３２】
（構成９）
複数の物体（１）の中から１つの物体を対象物（２）としてピッキングするエンドエフェクタ（３０）を有するロボット（３００）を制御する制御方法であって、
前記エンドエフェクタ（３０）は、可動部（３１Ｒ，３１Ｌ）と、前記可動部（３１Ｒ，３１Ｌ）を移動可能に支持する支持部（３２）とを含み、
前記制御方法は、
前記エンドエフェクタ（３０）の三次元形状を示す形状データを取得するステップと、
前記形状データで示されるエンドエフェクタモデル（３５）をユーザインターフェース（９）に表示させ、前記ユーザインターフェース（９）に入力された情報に基づいて、前記エンドエフェクタモデル（３５）のうち前記可動部（３１Ｒ，３１Ｌ）に対応する可動部モデル（３６Ｒ，３６Ｌ）と前記可動部モデル（３６Ｒ，３６Ｌ）の可動方向とを設定するステップと、
前記複数の物体を含む視野領域の三次元形状を計測するステップと、
計測結果に基づいて、前記対象物（２）をピッキングするときの前記エンドエフェクタ（３０）の位置姿勢候補を選択するステップと、
選択された位置姿勢候補の前記エンドエフェクタモデル（３５）と前記対象物（２）以外の物体との干渉判定を行なうステップとを備え、
前記干渉判定を行なうステップは、前記エンドエフェクタモデル（３５）において、設定された移動量だけ前記可動部モデル（３６Ｒ，３６Ｌを前記可動方向に移動させるステップを含む、制御方法。
【０２３３】
本発明の実施の形態について説明したが、今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０２３４】
１  ワーク、２  対象ワーク、２ｏ，３ｏ，３７ｏ  基準点（原点）、２ｖ１，２ｖ３，３ｖ１，３ｖ３，３ｖ２，３７ｖ３，３７ｖ２，３７ｖ１  特定方向（基底ベクトル）、３  ワークモデル、５  コンテナ、７  プロジェクタ、８  撮像装置、９  ユーザインターフェース、１０  第１記憶部、１０ａ  第１ＣＡＤデータ、１１  第２記憶部、１１ａ  第２ＣＡＤデータ、１２  ＣＡＤ読込部、１２Ａ  第１ＣＡＤ読込部、１２Ｂ  第２ＣＡＤ読込部、１３  パーツ設定部、１４，１４Ａ  移動量設定部、１５  相対位置設定部、１６  範囲設定部、１７  学習用データベース、１７ａ  学習用データセット、１８  学習機、１９  識別機、２０  ３Ｄ計測部、２１  コンテナ検出部、２１Ａ  コンテナ情報記憶部、２２，２２Ａ  選択部、２３  ワーク検出部、２４  対象ワーク選択部、２５，２５Ａ  位置姿勢決定部、２６  モデル変更部、２７，２７Ａ  干渉判定部、２８  把持位置出力部、２９  凹部検出部、３０  エンドエフェクタ、３１Ｌ  左爪部、３１Ｒ  右爪部、３２  支持部、３３  多関節アーム、３４  ベース、３５  エンドエフェクタモデル、３６Ｌ  左爪部モデル、３６Ｒ  右爪部モデル、３７  支持部モデル、４０，４０Ａ  ＵＩ画面、４１  表示領域、４２，４３，４４  枠線、４５  支持部選択ボタン、４６  右爪部選択ボタン、４７  左爪部選択ボタン、４８，４９  可動方向入力欄、５０  移動量入力欄、５１  ワーク表示ボタン、５２  ＯＫボタン、５３  キャンセルボタン、５４  太線、５５，５６  範囲入力欄、５７  ステップ数入力欄、６０，６１  領域、６３Ｌ，６３Ｒ  下端面、６４  リング状領域、６５  直線、９０  タッチパネル、９２  ディスプレイ、１００，１００Ａ，１００Ｂ  画像処理装置、１０６  メモリカード、１１０  ＣＰＵ、１１２  メインメモリ、１１４  ハードディスク、１１６  カメラインターフェース、１１６ａ  画像バッファ、１１８  入力インターフェース、１２０  表示コントローラ、１２２  プロジェクタインターフェース、１２４  通信インターフェース、１２６  データリーダ／ライタ、１２８  バス、２００  ロボットコントローラ、３００  ロボット、ＳＹＳ  制御システム。
【図１】
2020179441.tif 000003
【図２】
2020179441.tif 000004
【図３】
2020179441.tif 000005
【図４】
2020179441.tif 000006
【図５】
2020179441.tif 000007
【図６】
2020179441.tif 000008
【図７】
2020179441.tif 000009
【図８】
2020179441.tif 000010
【図９】
2020179441.tif 000011
【図１０】
2020179441.tif 000012
【図１１】
2020179441.tif 000013
【図１２】
2020179441.tif 000014
【図１３】
2020179441.tif 000015
【図１４】
2020179441.tif 000016
【図１５】
2020179441.tif 000017
【図１６】
2020179441.tif 000018
【図１７】
2020179441.tif 000019
【図１８】
2020179441.tif 000020
【図１９】
2020179441.tif 000021
【図２０】
2020179441.tif 000022
【図２１】
2020179441.tif 000023
【図２２】
2020179441.tif 000024
【図２３】
2020179441.tif 000025
【図２４】
2020179441.tif 000026