(57)【要約】【課題】対象物の状態に応じて把持動作を実行できるようにすることを目的とする。【解決手段】本発明は、対象物を把持する把持部における把持動作を決定する情報処理装置であって、前記対象物を撮影した画像を取得する取得手段と、前記取得手段により取得された画像から前記対象物の状態を認識する認識手段と、前記認識手段により認識された前記対象物の状態と、把持動作を実行する条件とに基づいて、前記把持部に把持動作させるための情報を生成する生成手段と、を有することを特徴とする。【選択図】図１
2019084601.tif 000002
【特許請求の範囲】
【請求項１】
対象物を把持する把持部における把持動作を決定する情報処理装置であって、
前記対象物を撮影した画像を取得する取得手段と、
前記取得手段により取得された画像から前記対象物の状態を認識する認識手段と、
前記認識手段により認識された前記対象物の状態と、把持動作を実行する条件とに基づいて、前記把持部に把持動作させるための情報を生成する生成手段と、を有することを特徴とする情報処理装置。
【請求項２】
前記生成手段は、
前記認識手段により認識された前記対象物の状態が、前記把持動作を実行する条件を満たすか否かを判定し、判定結果に基づいて、前記把持部に把持動作させるための情報を生成することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記生成手段は、
前記認識手段により認識された前記対象物の状態が、前記把持動作を実行する条件を満たすか否かを判定し、判定結果に基づいて、前記把持動作の前後で前記把持部に付随動作させるための情報を生成することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記付随動作は、前記対象物の位置を変更する動作、および、前記把持部の姿勢を変更する動作の少なくとも何れか一つの動作が含まれていることを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記対象物の状態は、前記対象物の姿勢であって、
前記生成手段は、
前記認識手段により認識された前記対象物の姿勢が、前記対象物の把持動作を実行する条件に含まれる姿勢である場合に、前記把持部に把持動作させるための情報を生成することを特徴とする請求項１ないし４の何れか１項に記載の情報処理装置。
【請求項６】
前記対象物の状態は、前記対象物の色、模様、形状および素材の少なくとも一つが含まれていることを特徴とする請求項１ないし５の何れか１項に記載の情報処理装置。
【請求項７】
前記生成手段は、
前記認識手段により認識された前記対象物の状態に基づいて、前記把持部に把持動作させるための情報を生成することを特徴とする請求項１ないし６の何れか１項に記載の情報処理装置。
【請求項８】
前記生成手段は、
前記認識手段により認識された前記対象物の状態に加えて、前記把持部の種別および前記対象物の種別の少なくとも一つが、前記把持動作を実行する条件を満たすか否かを判定し、判定結果に基づいて、前記把持部に把持動作させるための情報を生成することを特徴とする請求項１ないし７の何れか１項に記載の情報処理装置。
【請求項９】
前記把持部が前記対象物を把持するための把持情報を設定する設定手段を有し、
前記生成手段は、
前記設定手段により設定された把持情報に基づいて、前記把持部に把持動作させるための情報を生成することを特徴とする請求項１ないし８の何れか１項に記載の情報処理装置。
【請求項１０】
前記把持部に把持動作させるための情報に基づいて、前記把持部を駆動する制御手段を有し、
前記制御手段は、
前記把持部の種別と優先順位とが対応付けられた情報に基づいて、前記把持部を優先順位が高い種別に変更するように制御することを特徴とする請求項１ないし９の何れか１項に記載の情報処理装置。
【請求項１１】
前記把持部に把持動作させるための情報に基づいて、前記把持部を駆動する制御手段と、
前記生成手段により生成された前記把持部に把持動作させるための情報に基づいて、前記把持部が把持可能か否かを判断する判断手段と、を有し、
前記制御手段は、前記判断手段により把持可能であると判断された前記把持部に把持動作させるための情報に基づいて、前記把持部を駆動することを特徴とする請求項１ないし１０の何れか１項に記載の情報処理装置。
【請求項１２】
前記対象物を撮影した画像と、前記対象物の状態とを対応付ける学習手段を有し、
前記認識手段は、前記学習手段により対応付けられた情報に基づいて、前記取得手段により取得された画像から前記対象物の状態を認識することを特徴とする請求項１ないし１１の何れか１項に記載の情報処理装置。
【請求項１３】
請求項１ないし１２の何れか１項に記載の情報処理装置と、
前記対象物の画像を撮影する撮像部と、
前記把持部と、を備えていることを特徴とする把持システム。
【請求項１４】
対象物を把持する把持部における把持動作を決定する情報処理方法であって、
前記対象物を撮影した画像を取得する取得ステップと、
前記取得ステップにより取得された画像から前記対象物の状態を認識する認識ステップと、
前記認識ステップにより認識された前記対象物の状態と、把持動作を実行する条件とに基づいて、前記把持部に把持動作させるための情報を生成する生成ステップと、を有することを特徴とする情報処理方法。
【請求項１５】
コンピュータを、請求項１ないし１２の何れか１項に記載の情報処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、把持システム、情報処理方法およびプログラムに関する。
【背景技術】
【０００２】
近年、ロボットアームとハンドを用いて、無作為に配置された部品等の対象物に対して、撮像装置によって撮影した画像からロボットハンドを制御するコマンドを生成し、対象物を適切に把持する装置が提案されている。
【０００３】
特許文献１では、強化学習と呼ばれる手法を用いて、把持手段が対象物を把持できる制御コマンドを出力するための学習を行っている。入力した撮影画像および三次元データを手掛かりにロボットに把持を行わせ、把持に成功したときの把持手段の制御値と、入力データとの対応を学習する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１７−３０１３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１では、入力した撮影画像や三次元データに対して無条件に把持を行うため、対象物の状態に応じた把持動作をすることができなかった。
本発明は、上述した問題に鑑みてなされたものであり、対象物の状態に応じて把持動作を実行できるようにすることを目的とする。
【課題を解決するための手段】
【０００６】
本発明は、対象物を把持する把持部における把持動作を決定する情報処理装置であって、前記対象物を撮影した画像を取得する取得手段と、前記取得手段により取得された画像から前記対象物の状態を認識する認識手段と、前記認識手段により認識された前記対象物の状態と、把持動作を実行する条件とに基づいて、前記把持部に把持動作させるための情報を生成する生成手段と、を有することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、対象物の状態に応じて把持動作を実行することができる。
【図面の簡単な説明】
【０００８】
【図１】第１の実施形態の把持システムの全体構成を示す図である。
【図２】把持システムの概略の構成を示す図である。
【図３】把持条件のデータ構成を説明するための図である。
【図４】把持条件の具体例を示す図である。
【図５】情報処理装置の処理を示すフローチャートである。
【図６】把持対象物を撮影した撮影画像を示す図である。
【図７】動作定義テーブルを示す図である。
【図８】第２の実施形態の把持システムの全体構成を示す図である。
【図９】把持パラメータを説明するための図である。
【図１０】把持パラメータおよび把持条件の具体例を示す図である。
【図１１】第３の実施形態の把持システムの全体構成を示す図である。
【図１２】第４の実施形態の把持システムの全体構成を示す図である。
【図１３】第５の実施形態の把持システムの全体構成を示す図である。
【発明を実施するための形態】
【０００９】
以下、本発明に係る実施形態について図面を参照して説明する。
（第１の実施形態）
第１の実施形態では、ロボットアーム等に取り付けられている把持部を用いて、任意の位置姿勢に配置された複数の部品等の対象物から、対象物の状態に応じて把持動作の内容を決定し、把持を行う場合に適用できる装置について説明する。
本実施形態では、撮像部が撮影した画像および奥行き画像を入力として、認識部が把持対象物の状態を検出し、同時に把持部を駆動するための制御パラメータを出力する。動作生成部は、検出された把持対象物の状態と、事前に定義された把持条件とを比較し、認識部が出力した制御パラメータに基づいて最適な把持動作を決定する。把持部は決定された把持動作を実行する。これにより、把持対象物の状態に応じて把持動作の内容を切り替え、最適な把持動作を実行することができる。本実施形態を含め、把持とは、把握（例えば複数のフィンガーで掴んだり挟持したりすること）や、保持（例えば真空吸着パッドや電磁力を利用して吸着すること）という概念を含む。
【００１０】
図１は、本実施形態に係る把持システム（ロボット装置）の全体構成の一例を示す図である。
把持システムは、撮像部１０１、把持部１０２、情報処理装置２００を備える。
撮像部１０１は、把持対象物（対象物）３０１が複数配置されたシーンとして、画像（以下、撮影画像という）と、奥行き画像とを撮影する。撮像部１０１は撮影した撮影画像および奥行き画像を情報処理装置２００に送信する。なお、奥行き画像は、撮影画像の各画素に対して撮像部１０１からの距離の情報（深度情報）を含んだ画像である。
把持部１０２は、複数配置された把持対象物３０１の１つを把持し、異なる場所に移動させ、配置する。本実施形態では、把持部１０２として「吸着ハンド」と「ピンセットハンド」の２種を使用するものとして説明する。
【００１１】
図２は、把持システムの概略の構成の一例を示す図である。
把持システムは、ロボットアーム３０２の先端に撮像部１０１および把持部１０２が取り付けられる。ここでは、複数の部品等の把持対象物３０１が山積みに任意の位置姿勢で供給トレイ３０３に配置されている。撮像部１０１は、複数の把持対象物３０１が配置されたシーンを撮影する。把持部１０２は、情報処理装置２００からの制御に基づき、複数の把持対象物３０１から何れか１つを把持する。ロボットアーム３０２は把持対象物３０１を排出トレイ３０４内の所定の位置まで移動させた後、把持部１０２は把持対象物３０１を解放し、排出トレイ３０４内に配置する。
【００１２】
図１に戻り、情報処理装置２００の機能構成について説明する。
情報処理装置２００は、画像取得部２０１、把持条件設定部２０３、学習部２０４、認識部２０５、動作生成部２０６、把持手段識別部２０７、制御部２０８を有する。情報処理装置２００の各部は、例えば、ＣＰＵが記憶装置等に記憶されたプログラムを実行することにより構成される。
【００１３】
画像取得部２０１は、撮像部１０１が撮影した撮影画像および奥行き画像を取得する。
把持条件設定部２０３は、把持対象物３０１の状態と、把持部１０２が把持を行うための条件とを対応付けたデータ構造である把持条件５００を設定する。把持条件５００には、把持対象物３０１の状態に応じた把持および把持に付随する動作等が記述される。
【００１４】
図３は、把持条件５００のデータ構成の一例を説明するための図である。
把持条件５００は１以上の把持条件要素５１０の集合から構成される。個々の把持条件要素５１０は、それぞれ把持対象物種別ラベル５２０、把持対象物状態ラベル５３０、把持手段種別ラベル５４０、把持動作ラベル５５０、付随動作ラベル５６０、優先順位５７０から構成される。
把持対象物種別ラベル５２０は、把持対象物３０１の種別を示すラベルである。把持対象物３０１の種別とは、同一形状あるいは同一外観をなすグループの単位である。産業用の部品であれば、把持対象物３０１の種別は部品の種類と同一である。
【００１５】
把持対象物状態ラベル５３０は、把持対象物３０１の状態を識別するためのラベルである。把持対象物状態ラベル５３０は、当該把持条件要素５１０を有効にするための条件が記述される。本実施形態では、三次元空間内において把持対象物３０１が取り得る姿勢を表面、裏面、側面の３つに分類し、これを把持対象物３０１の状態と定義する。例えば、各姿勢に対応する１から３までの値を把持対象物状態ラベル５３０に設定する。認識部２０５によって把持対象物３０１の状態が認識され、把持対象物３０１の状態が把持対象物状態ラベル５３０に記述されている状態と一致する場合、把持条件要素５１０が有効となる。この処理については後述する。
【００１６】
把持対象物状態ラベル５３０は単一の値だけでなく、複数の値を取り得る。本実施形態では、把持対象物３０１に対して表面の場合と裏面の場合とで同じ処理を行う場合、把持対象物状態ラベル５３０には例えば１と２の値を両方設定する。また、把持対象物状態ラベル５３０に値が設定されない場合には、他の把持条件要素５１０中の把持対象物状態ラベル５３０に記述されている条件が全て満たされなかった場合にのみ把持条件要素５１０が有効となる。すなわち、把持対象物状態ラベル５３０が空欄の場合には、「その他」の条件として扱われることになる。
【００１７】
把持手段種別ラベル５４０は、把持部１０２の種別を一意に識別するためのラベルである。本実施形態では、把持手段種別ラベル５４０には「吸着ハンド」または「ピンセットハンド」を識別するためのラベルを設定する。「吸着ハンド」または「ピンセットハンド」は把持手段の一例に対応する。
把持動作ラベル５５０は、当該把持対象物３０１の状態および把持手段種別において、把持部１０２が把持を行うか否かを記述するラベルである。本実施形態では、把持動作ラベル５５０には「把持する」または「把持しない」に対応するラベルを設定する。
【００１８】
付随動作ラベル５６０は、把持動作に付随した動作を記述するラベルである。本実施形態では、付随動作として「排出トレイ３０４内の中央に置く」や「把持対象物３０１の姿勢を反転させる（裏返す）」に対応するラベルを設定する。把持部１０２が行う実際の付随動作コマンドの生成は、後述する動作生成部２０６および制御部２０８で行われる。したがって、付随動作ラベル５６０には、これらの付随動作を識別するラベルのみを記述する。
【００１９】
優先順位５７０は、複数の把持条件要素５１０において、把持部１０２が把持する優先順位を指定するものである。本実施形態では、当該把持条件要素５１０における把持成功率に基づき優先順位５７０が設定される。すなわち、当該把持条件要素５１０の把持成功率が高いほど優先順位５７０が高く設定される。
本実施形態では、把持条件５００はユーザが不図示の入力装置や表示装置を用いて事前に作成しておく。
【００２０】
図４は、把持条件５００の具体例を示す図である。
ここでは、複数の把持条件要素５１０Ａ〜５１０Ｆの例を示している。把持条件設定部２０３が設定した複数の把持条件要素５１０は、記憶装置に予め記憶される。
【００２１】
図１に戻り、情報処理装置２００の機能構成について更に説明する。
学習部２０４は、認識部２０５が用いる認識データを生成する。具体的には、学習部２０４は、認識部２０５に撮影画像と奥行き画像とが入力されたときに、認識部２０５が最適な把持対象物種別ラベルと、把持対象物状態ラベルと、把持部１０２の制御パラメータと、を出力するための認識データを生成する。本実施形態では、ＣＮＮ（Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ）によって学習および認識を行う。本実施形態における認識データはＣＮＮのモデル構造および各ノードの重みパラメータから構成される。また、把持部１０２の制御パラメータは、把持部１０２に把持動作を行わせる際にマニピュレータやアクチュエータに与える電流や電圧等の指定値およびそのタイミングからなる命令セットである。
【００２２】
認識部２０５は、入力された撮影画像と奥行き画像とに対して、認識データに基づきＣＮＮによる認識処理を行い、最適な、把持対象物種別ラベルと、把持対象物状態ラベルと、把持部１０２の制御パラメータとを出力する。
動作生成部２０６は、認識部２０５が出力した、把持対象物種別ラベルと、把持対象物状態ラベルと、把持部１０２の制御パラメータとから、把持部１０２の把持動作を生成する。すなわち、動作生成部２０６は、把持部１０２に把持動作させるための情報を生成する。
【００２３】
把持手段識別部２０７は、把持部１０２の把持手段を識別する。把持手段識別部２０７は、把持部１０２から把持手段を識別するための信号を受け取り、把持手段種別ラベル５４０と同一の値に変換して動作生成部２０６に出力する。
制御部２０８は、動作生成部２０６が生成した把持動作に基づいて、把持部１０２を駆動する制御コマンドを生成し、把持部１０２の制御を行う。
【００２４】
次に、本実施形態の情報処理装置２００の処理の一例について図５のフローチャートを参照して説明する。図５（ａ）は、全体処理を示すフローチャートであり、図５（ｂ）はＳ１００の事前準備に関する処理を示すフローチャートである。なお、図５のフローチャートは、例えば、情報処理装置２００のＣＰＵが記憶装置等に記憶されたプログラムに実行することにより実現する。
【００２５】
（ステップＳ１００）
学習部２０４は事前準備を行う。具体的には、学習部２０４は予め複数の撮影画像および複数の奥行き画像と、把持対象物３０１の状態とを対応付けておく。そして、学習部２０４は、別の撮影画像および奥行き画像が入力された場合に、把持対象物３０１の適切な状態と、把持部１０２が把持対象物３０１を把持するための制御パラメータとが出力される認識データを生成する。一度、認識データが生成されれば、以後、本実施形態の処理を繰り返し行う場合でも、Ｓ１００の処理は省略することができる。
【００２６】
ここで、図５（ｂ）を参照してＳ１００の事前準備の処理について説明する。
（ステップＳ１１０）
学習部２０４は記憶装置から学習データを読み込む。学習データは、ユーザが入力装置や表示装置を用いて事前に作成しておく。
本実施形態における学習データは、撮影画像および奥行き画像と、撮影画像に映っている把持対象物３０１のうち把持可能な把持対象物３０１の種別ラベルおよび姿勢ラベルと、の組み合わせの集合から構成される。本実施形態における把持対象物３０１の種別ラベルとは、把持対象物３０１の種別を一意に識別するためのラベルであり、取り得る値は把持対象物種別ラベル５２０と同一である。また、本実施形態における姿勢ラベルとは、把持対象物３０１が取り得る三次元空間内における姿勢を「表面」「裏面」「側面」の３つに分類したときの識別番号である。姿勢ラベルは、把持対象物状態ラベル５３０と直接比較されるため、取り得る値は同一である。
【００２７】
（ステップＳ１１１）
学習部２０４はＣＮＮの学習を行う。この学習はさらに二段階に分けられる。
最初の学習では、学習部２０４はＳ１１０において読み込んだ学習データに基づいて、撮影画像および奥行き画像に対して、把持対象物３０１の種別ラベルおよび姿勢ラベルを識別する認識データを生成する。
【００２８】
次の学習では、学習部２０４はＳ１１０において読み込んだ学習データを用いずに、撮影画像および奥行き画像に対して、把持部１０２の制御パラメータを出力する認識データを生成する。この学習には把持学習と呼ばれる手法を適用できる。把持学習は、入力した撮影画像および奥行き画像に対して、把持部１０２によって実際の把持を行い、その結果に基づき学習を行う。把持に成功した場合には、認識時にその制御パラメータを出力するように学習を行う。十分な学習が行われた際には、認識部２０５に撮影画像および奥行き画像を入力することで、撮影画像中で把持の成功率が高いと判断される領域と、そのときに把持対象物３０１を把持するための制御パラメータが出力されるようになる。
【００２９】
このように、２種類の学習を行うことで、認識部２０５に撮影画像と奥行き画像を入力すると、認識部２０５は把持可能な把持対象物３０１の種別ラベルおよび姿勢ラベル、把持するための制御パラメータを出力できるようになる。本実施形態における認識データは、２回の学習によって生成される各認識データを合成したものになる。
【００３０】
図５（ａ）のフローチャートに戻り、Ｓ１０１以降の処理について説明する。
（ステップＳ１０１）
把持条件設定部２０３は記憶装置から把持条件５００を読み込む。また、学習部２０４は、Ｓ１００で生成した認識データを読み込み、ＣＮＮのモデル構造と各ノードの重みパラメータを設定する。
【００３１】
（ステップＳ１０２）
撮像部１０１は、把持対象物３０１を含むシーンの撮影画像および奥行き画像を撮影する。撮像部１０１は撮影画像および奥行き画像を画像取得部２０１に送信することで、画像取得部２０１が撮影画像および奥行き画像の画像データを取得する。
図６は、撮影画像の一例を示す図である。ここでは、複数の把持対象物３０１（３０１Ａ〜３０１Ｃ）が山積みに配置されている。なお、把持対象物３０１の白い面を表面、黒い面を裏面とする。
【００３２】
（ステップＳ１０３）
認識部２０５は、画像取得部２０１から撮影画像および奥行き画像を取得する。認識部２０５は、撮影画像および奥行き画像に対してＣＮＮを適用し、撮影画像および奥行き画像に対応する把持対象物３０１の種別ラベルおよび姿勢ラベルを出力する。把持対象物３０１の種別ラベルは、Ｓ１１０において学習部２０４に入力した種別ラベルと同じである。把持対象物３０１の姿勢ラベルは、Ｓ１１０において学習部２０４に入力した姿勢ラベルの識別番号のいずれかである。
図６に示す例では、把持対象物３０１の種別ラベルは全て「円盤部品」である。また、把持対象物３０１Ａの姿勢ラベルは５０、把持対象物３０１Ｂの姿勢ラベルは１７０、把持対象物３０１Ｃの姿勢ラベルは３００として認識されている。
【００３３】
（ステップＳ１０４）
認識部２０５は全ての把持対象物３０１に対して把持動作が終了したか否かを判定する。ここでは、把持対象物３０１を１つも検出しなかった場合（すなわち、種別ラベルと姿勢ラベルが出力されない場合）には、全ての把持対象物３０１に対して処理が完了したと判断し、図５のフローチャートの処理を終了する。一方、少なくとも１つの把持対象物３０１が検出された場合にはＳ１０５に進む。
【００３４】
（ステップＳ１０５）
把持手段識別部２０７は、把持部１０２の種別を識別し、把持手段種別ラベルを動作生成部２０６に送信する。なお、本実施形態では、Ｓ１０２からＳ１０８までの処理を繰り返し実行することになるが、Ｓ１０５の処理に関しては、把持部１０２の種別が変更されない限り、１回のみ実行すればよい。すなわち、２回目以降はＳ１０５の処理を省略してもよい。
【００３５】
（ステップＳ１０６）
動作生成部２０６はＳ１０３で得られた把持対象物３０１の種別ラベルおよび姿勢ラベル、Ｓ１０５で得られた把持手段種別ラベルと、把持条件５００に含まれる把持対象物種別ラベル５２０、把持対象物状態ラベル５３０、把持手段種別ラベル５４０とを比較する。すなわち、動作生成部２０６は把持対象物３０１の状態が把持動作を実行する条件を満たすか否かを判定する。
動作生成部２０６は、当該種別ラベルと把持対象物種別ラベル５２０、当該把持手段種別ラベルと把持手段種別ラベル５４０とが一致し、かつ、当該姿勢ラベルが把持対象物状態ラベル５３０に含まれている把持条件要素５１０を抽出する。また、動作生成部２０６は、何れの把持対象物状態ラベル５３０に含まれる姿勢ラベルが存在しない場合には、空欄の把持対象物状態ラベル５３０に対応する把持条件要素５１０を抽出する。
【００３６】
ここで、図４の把持条件要素および図６の把持対象物を例にすると、Ｓ１０５において「吸着ハンド」が識別された場合、把持対象物３０１Ａに対して把持条件要素５１０Ａが抽出される。また、把持対象物３０１Ｂに対して把持条件要素５１０Ｂ、把持対象物３０１Ｃに対して把持条件要素５１０Ｃがそれぞれ抽出される。
一方、Ｓ１０５において「ピンセットハンド」が識別された場合、把持対象物３０１Ａに対して把持条件要素５１０Ｄが抽出される。また、把持対象物３０１Ｂに対して把持条件要素５１０Ｅ、把持対象物３０１Ｃに対して把持条件要素５１０Ｆがそれぞれ抽出される。
【００３７】
（ステップＳ１０７）
動作生成部２０６は、Ｓ１０６において抽出した複数の把持条件要素５１０から、把持部１０２が実行する把持動作を決定する。すなわち、動作生成部２０６はＳ１０６において把持対象物の状態が把持動作を実行する条件を満たすか否かを判定した判定結果に基づいて、把持部１０２が実行する把持動作を生成する。以下、把持動作を生成する処理について説明する。
まず、動作生成部２０６は、抽出した複数の把持条件要素５１０中の把持動作ラベル５５０を参照し、「把持する」ラベルが付与された把持条件要素５１０を更に抽出する。ここで、Ｓ１０５において「吸着ハンド」が識別された場合、図４の例において、把持条件要素５１０Ａおよび５１０Ｂが抽出される。
次に、動作生成部２０６は、抽出された把持条件要素５１０から、優先順位が最も高いものを１つ選択する。図４の例においては、優先順位が最も高い把持条件要素５１０Ａが選択される。
【００３８】
次に、動作生成部２０６は、動作定義テーブル６００を参照して、把持動作および付随動作の生成を行う。
図７は、動作定義テーブルの一例を示す図である。図７（ａ）に示すように、動作定義テーブル６００は動作ラベルと、複数の動作種別と制御情報の組から構成される。図７（ｂ）は把持動作に係る動作定義テーブル６０１の例を示す図である。動作生成部２０６は、図７（ｂ）の動作定義テーブル６０１の最初の動作種別「把持手段移動」に対応する制御情報「対象物」の欄および次の動作種別「吸着動作開始」に対応する制御情報「吸着圧」の欄に、認識部２０５が出力した制御パラメータの値を書き込む。次に、動作生成部２０６は、３番目の「把持手段移動」に対応する制御情報「トレイ内」の欄に、トレイ内部を示す既定の位置姿勢の値を書き込む。動作生成部２０６は、このようにして生成した動作定義テーブル６０１を制御部２０８に出力する。
また、動作生成部２０６は、把持条件要素５１０中の付随動作ラベル５６０に値が設定されていた場合には、更に動作定義テーブル６０２を追加する。動作生成部２０６は、付随動作ラベル５６０の動作が「反転動作」を示していた場合、図７（ｃ）に示す「反転動作」の動作定義テーブル６０２に必要な制御情報を書き込み、制御部２０８に出力する。
動作定義テーブル６０１は、把持部１０２に把持動作させるための情報の一例に対応する。また、動作定義テーブル６０２は、把持部１０２に付随動作させるための情報の一例に対応する。
【００３９】
（ステップＳ１０８）
制御部２０８は、動作生成部２０６から出力された動作定義テーブルから、把持部１０２に対して把持動作を実行するための制御コマンドを生成し、把持部１０２に出力する。具体的には、制御部２０８は動作定義テーブル６０１、６０２の各動作を読み込み、動作内容を実行するためのコマンド列に分解する。
図７（ｂ）の「把持手段移動」に関しては、把持部１０２の現在の位置姿勢から、把持対象物３０１の位置姿勢への軌道を生成し、その軌道を定義する位置姿勢に移動するための制御コマンドを生成する。「吸着動作開始」に関しては、指定の吸着圧で吸着を行うための制御コマンドを生成する。制御部２０８は生成した制御コマンドを把持部１０２に送信する。
【００４０】
把持部１０２は受け取った制御コマンドに基づいて把持動作を実行する。把持部１０２は所定の把持動作（および付随動作）の実行が完了すると、制御部２０８にコマンド実行終了の制御信号を返信する。制御部２０８が把持部１０２からコマンド実行終了の制御信号を受け取ると、一回の把持動作が完了となり、Ｓ１０２に戻り、全ての把持対象物３０１の把持動作が完了するまで処理を繰り返す。
【００４１】
第１の実施形態によれば、撮像部１０１が撮影した撮影画像および奥行き画像を入力として、認識部２０５が把持対象物３０１の状態を検出し、同時に把持部１０２を駆動するための制御パラメータを出力する。動作生成部２０６は、把持対象物３０１の状態と、把持動作を実行する条件である把持条件とに基づいて、把持部１０２に把持動作させるための情報としての動作定義テーブルを生成する。したがって、把持対象物３０１の状態ごとに把持動作を実行する条件を設定しておくことで、把持対象物３０１の状態に応じて把持動作を実行させることができる。一方、把持対象物３０１の状態によっては把持動作を実行させないようにすることができる。
【００４２】
また、動作生成部２０６は、把持対象物３０１の状態が、把持動作を実行する条件を満たすか否かを判定し、満たす旨の判定結果である場合に把持部１０２に把持動作させるための情報を生成する。したがって、把持動作を実行するのに適した把持対象物３０１の状態を、把持動作を実行する条件に設定しておくことで、把持対象物３０１を容易に把持させることができる。
また、動作生成部２０６は、把持対象物３０１の状態が、把持動作を実行する条件を満たすか否かを判定し、満たす旨の判定結果である場合に把持部１０２に把持動作の前後に実行される付随動作させるための情報を生成する。したがって、把持動作に関連した動作を把持部１０２に実行させることができる。
また、認識部２０５は把持対象物３０１の状態に応じた制御パラメータを出力し、動作生成部２０６は制御パラメータに基づいて最適な把持動作を決定する。したがって、把持対象物の状態に応じて把持動作の内容が切り替えられ、最適な把持動作を実行することができる。
【００４３】
なお、本実施形態では、Ｓ１０６において、動作生成部２０６が、把持対象物の種別ラベル、把持対象物の姿勢ラベル、把持手段種別ラベルの全てを比較したが、このうち把持対象物の種別ラベル、把持手段種別ラベルに関しては、一部の比較を省略してもよい。例えば、複数の把持対象物種別や把持手段で共通の把持対象物状態ラベル５３０を用いてもよい。
また、優先順位５７０は、順位を直接指定するだけでなく、本実施形態における把持成功率等、優先順位を決定するための間接的な情報や値であってもよい。また、把持成功率に限らず、把持に要する時間等、把持の優劣を比較できる他の尺度であってもよく、これらを複数組み合わせるようにしてもよい。
【００４４】
また、本実施形態では、把持対象物状態ラベル５３０は３通りの姿勢を区別するラベルを付与するものとして説明したが、姿勢の分類数は任意の数を設定することができる。把持対象物状態ラベル５３０の分類数は把持条件要素５１０の各条件を区別するに足りるだけの数があればよい。
また、本実施形態では、付随動作ラベル５６０は把持動作に付随する動作を定義するものであり、把持動作前に実行されるものであってもよく、把持動作後に実行されるものであってもよい。把持動作前の付随動作の例として、把持対象物３０１の位置を変更する（例えば山を崩す）動作が挙げられる。したがって、動作生成部２０６が生成する把持動作の成功率を高めることができる。また、把持動作後の付随動作の例としては、把持部１０２の姿勢を変更する上述した反転動作が挙げられる。
【００４５】
［変形例１］
本実施形態では、学習部２０４および認識部２０５はＣＮＮによって学習および認識を行う構成について説明したが、それ以外の手段で学習および認識を行ってもよい。学習部２０４および認識部２０５は、サポートベクトルマシン、ランダムフォレスト、テンプレートマッチング等、各種手法を用いるように構成することができる。
【００４６】
［変形例２］
学習部２０４および認識部２０５の入力は、撮影画像や奥行き画像に限られず、様々なものを用いることができる。例えば、撮像部１０１に撮影画像だけでなく、温度を計測可能なセンサを別途設け、把持対象物状態ラベル５３０の条件に温度を追加するようにしてもよい。この場合、動作生成部２０６は把持対象物３０１の温度に応じて把持動作の内容を制御できるようになる。
【００４７】
［変形例３］
把持対象物状態ラベル５３０は、把持対象物３０１の姿勢に限られない。変形例２で説明したように、把持対象物３０１の特定の状態を計測するセンサを別途設け、特定の色、模様、形状の差異、素材が含まれているか否か等、様々な状態を把持対象物状態ラベル５３０に設定することができる。また、姿勢と色等、複数の状態を組み合わせて把持対象物状態ラベル５３０に設定してもよい。
【００４８】
［変形例４］
学習部２０４は、Ｓ１００において、事前準備として学習を行う構成に限られない。Ｓ１００において認識データの初期値を生成した後、Ｓ１０３の認識処理を行う時点で、入力データを学習部２０４にも供給し、追加学習によって認識データの更新を行うようにしてもよい。
【００４９】
（第２の実施形態）
第２の実施形態では、ロボットアーム等に取り付けられている把持部を用いて、任意の位置姿勢に配置された複数の部品等の対象物から、対象物の状態に応じて把持動作の内容を決定し、把持を行う場合に適用できる装置について説明する。
本実施形態では、撮像部が撮影した撮影画像および奥行き画像を入力として、認識部が把持対象物の少なくとも１つの姿勢を検出する。把持パラメータ設定部は、把持対象物や把持部の種別に応じて、把持部が把持対象物を把持するための位置姿勢および把持強度等をパラメータとして設定する。動作生成部は、検出された姿勢と、事前に定義された把持条件とを比較し、パラメータを参照して最適な把持動作を決定する。把持部は決定された把持動作を実行する。これにより、把持対象物の姿勢に応じて把持動作の内容を切り替え、最適な把持動作を実行することができる。
【００５０】
図８は、本実施形態に係る把持システムの全体構成の一例を示す図である。
本実施形態の把持システムは、図１に示す第１の実施形態の把持システムの全体構成と比較すると、把持パラメータ設定部２０２が追加されている。以後、第１の実施形態との差異について説明し、同一の部分については適宜説明を省略する。
把持パラメータ設定部２０２は、把持部１０２が把持対象物３０１を把持するために必要なパラメータ群を把持パラメータ４００として設定する。ここで、パラメータは、把持情報の一例に対応する。
【００５１】
図９（ａ）は、把持パラメータ４００のデータ構造の一例を説明するための図である。
把持パラメータ４００は１以上の把持パラメータ要素４１０の集合から構成される。個々の把持パラメータ要素４１０は、それぞれ把持対象物種別ラベル４２０、把持手段種別ラベル４３０、目標位置姿勢４４０、把持手段設定値４５０、優先順位４６０から構成される。
【００５２】
把持対象物種別ラベル４２０は、把持対象物３０１の種別を一意に識別するためのラベルである。把持対象物３０１の種別とは、同一形状あるいは同一外観をなすグループの単位である。産業用の部品であれば、把持対象物３０１の種別は部品の種類と同一である。具体的には、把持対象物３０１の種別とは、把持部１０２が把持対象物３０１を把持するのに、同じパラメータ群を利用することができる最小単位である。すなわち、把持部１０２が把持対象物３０１を把持するのに必要な情報は、把持対象物３０１の種別ごとに異なる。そのため、把持対象物種別ラベル４２０は、把持対象物３０１の種別を区別するために用いられる。
【００５３】
把持手段種別ラベル４３０は、把持部１０２の種別を一意に識別するためのラベルである。本実施形態では、把持手段種別ラベル４３０には「吸着ハンド」または「ピンセットハンド」を識別するためのラベルを設定する。把持手段種別ラベル４３０に関して、把持対象物種別ラベル４２０が同一であっても、把持部１０２の種別が異なると、把持部１０２が把持するためのパラメータも異なる。そのため、把持手段種別ラベル４３０は把持部１０２の種別を区別するために用いられる。
【００５４】
目標位置姿勢４４０は、把持部１０２が把持対象物３０１を把持するために、ロボットアーム３０２が把持部１０２を移動させる先となる位置姿勢を表したものである。
図９（ｂ）〜（ｅ）は目標位置姿勢４４０の例を説明するための図である。
図９（ｂ）および図９（ｃ）は、当該把持パラメータ要素４１０中の把持手段種別ラベルが「吸着ハンド」の場合、把持部１０２によって把持対象物３０１を把持する例を示している。把持部１０２は、図９（ｂ）のように把持対象物３０１の表面の１点を把持することができる。また、把持部１０２は把持対象物３０１の表面の１点だけでなく、側面や裏面を含む複数の個所に対して吸着を行うことができる。すなわち、把持部１０２を図９（ｃ）の矢印の先端で示される位置および矢印の方向で示される姿勢に移動させ、吸着を行うことによって把持対象物３０１を把持することができる。
【００５５】
図９（ｄ）および図９（ｅ）は、当該把持パラメータ要素４１０中の把持手段識別ラベルが「ピンセットハンド」の場合、把持部１０２によって把持対象物３０１を把持する例を示している。この場合も吸着ハンドと同様に、複数の位置姿勢において把持対象物３０１を把持することができる。
当該把持対象物３０１の種別、把持部１０２の種別において、複数の目標位置姿勢を設定することができる場合には、異なる位置姿勢ごとに複数の把持パラメータ要素４１０を設定する。本実施形態では、目標位置姿勢４４０は把持対象物３０１の座標系において三次元位置および姿勢を示す６自由度で記述される。
【００５６】
把持手段設定値４５０は、把持部１０２が目標位置姿勢４４０において把持対象物３０１を把持するために必要となるパラメータを表したものである。把持手段設定値４５０の内容は把持手段種別ラベル４３０の内容によって異なる。本実施形態において、把持手段種別ラベルが「吸着ハンド」を示す場合、把持手段設定値４５０には流量あるいは圧力が記述される。また、把持手段種別ラベルが「ピンセットハンド」を示す場合、ピンセットによって把持対象物３０１を把持するときの圧力およびピンセットの開き幅が記述される。
【００５７】
優先順位４６０は、複数の把持パラメータ要素４１０において、把持部１０２が把持する優先順位を指定するものである。本実施形態では、当該把持パラメータ要素４１０における把持成功率に基づき優先順位４６０が設定される。すなわち、当該把持パラメータ要素４１０の把持成功率が高いほど優先順位４６０が高く設定される。
なお、本実施形態における把持条件５００には、第１実施形態とは異なり、優先順位５７０は設定しない。
【００５８】
本実施形態における把持対象物状態ラベル５３０は、把持対象物３０１が取り得る三次元空間内における姿勢を３６０に分類し、各姿勢に対応する１から３６０までの番号を把持対象物状態ラベル５３０に設定する。
把持対象物状態ラベル５３０は複数の値を取り得る。本実施形態において把持対象物３０１に対して表、裏、側面の３状態に対して処理を制御する場合を考慮して、把持対象物状態ラベル５３０には、把持対象物３０１が「表」の状態であると見なせる姿勢について、その姿勢ラベルが全て記述されることになる。
【００５９】
図１０は、把持パラメータ４００および把持条件５００の具体例を示す図である。
ここでは、複数の把持パラメータ要素４１０Ａ〜４１０Ｄの例と、複数の把持条件要素５１０Ａ〜５１０Ｆの例とを示している。以下、図１０の値を例として説明する。
【００６０】
図８に戻り、情報処理装置２００の機能構成について更に説明する。
学習部２０４は、認識部２０５が用いる認識データを生成する。具体的には、学習部２０４は、認識部２０５に撮影画像と奥行き画像とが入力されたときに、認識部２０５が最適な把持対象物種別ラベルと、把持対象物状態ラベルとを出力するための認識データを生成する。本実施形態では、ＣＮＮによって学習および認識を行う。本実施形態における認識データはＣＮＮのモデル構造および各ノードの重みパラメータから構成される。本実施形態では、第１実施形態とは異なり、認識データに把持部１０２の制御パラメータは含まれない。
【００６１】
認識部２０５は、入力された撮影画像と奥行き画像とに対して、認識データに基づきＣＮＮによる認識処理を行い、最適な把持対象物状態ラベルを出力する。また、認識部２０５は、把持パラメータ設定部２０２からの把持パラメータ４００を出力する。
動作生成部２０６は、認識部２０５が出力した把持パラメータ４００および把持対象物状態ラベルから把持部１０２の把持動作を生成する。
【００６２】
次に、本実施形態の情報処理装置２００の制御について図５のフローチャートを参照して説明する。図５のフローチャートは、第１の実施形態と同じである。ただし、各ステップにおける処理の内容に差異があるので、以下に説明する。
【００６３】
（ステップＳ１００）
学習部２０４は事前準備を行う。具体的には、学習部２０４は予め複数の撮影画像および複数の奥行き画像と、把持対象物３０１の姿勢とを対応付けておく。そして、学習部２０４は、別の撮影画像および奥行き画像が入力された場合に、把持対象物３０１の適切な姿勢が出力される認識データを生成する。一度、認識データが生成されれば、以後、本実施形態の処理を繰り返し行う場合でも、Ｓ１００の処理は省略することができる。
【００６４】
次に、図５（ｂ）を参照してＳ１００の事前準備の処理について説明する。
（ステップＳ１１０）
学習部２０４は記憶装置から学習データを読み込む。学習データは、ユーザが不図示の入力装置や表示装置を用いて事前に作成しておく。
本実施形態における学習データは、撮影画像および奥行き画像と、撮影画像に映っている把持対象物３０１のうち把持可能な把持対象物３０１の種別ラベルおよび姿勢ラベルの組み合わせの集合から構成される。実施形態における把持対象物３０１の種別ラベルとは、把持対象物３０１の種別を一意に識別するためのラベルであり、取り得る値は把持対象物種別ラベル４２０と同一である。また、本実施形態における姿勢ラベルとは、把持対象物３０１が取り得る三次元空間内における姿勢を３６０に分類したときの識別番号である。姿勢ラベルは、把持対象物状態ラベル５３０と比較が行われるため、両者が取り得る値は同一である。
（ステップＳ１１１）
学習部２０４は読み込んだ学習データに基づいて、ＣＮＮの学習を行い、認識データを生成する。本実施形態では、第１実施形態とは異なり、学習部２０４は把持学習を行わない。
【００６５】
図５（ａ）のフローチャートに戻り、Ｓ１０１以降の処理について説明する。
（ステップＳ１０１）
把持パラメータ設定部２０２は記憶装置から把持パラメータ４００を読み込む。また、把持条件設定部２０３は把持条件５００を読み込む。学習部２０４は、Ｓ１００で生成された認識データを読み込み、ＣＮＮのモデル構造と各ノードの重みパラメータを設定する。
【００６６】
（ステップＳ１０３）
認識部２０５は、画像取得部２０１から撮影画像および奥行き画像を取得する。認識部２０５は、撮影画像および奥行き画像に対してＣＮＮを適用し、撮影画像および奥行き画像に対応する把持対象物３０１の種別ラベルおよび姿勢ラベルを出力する。把持対象物３０１の種別ラベルは、Ｓ１１０において学習部２０４に入力した種別ラベルと同じである。把持対象物３０１の姿勢ラベルは、ステップＳ１１０において学習部２０４に入力した姿勢ラベルの識別番号のいずれかである。
図６に示す例では、把持対象物３０１の種別ラベルは全て「円盤部品」であり、把持対象物３０１Ａの姿勢ラベルは５０、把持対象物３０１Ｂの姿勢ラベルは１７０、把持対象物３０１Ｃの姿勢ラベルは３００として認識されている。
【００６７】
（ステップＳ１０６）
動作生成部２０６はＳ１０３で得られた把持対象物３０１の種別ラベルおよび姿勢ラベル、Ｓ１０５で得られた把持手段種別ラベルと、把持条件５００に含まれる把持対象物種別ラベル５２０、把持対象物状態ラベル５３０、把持手段種別ラベル５４０とを比較する。
動作生成部２０６は、当該種別ラベルと把持対象物種別ラベル５２０、当該把持手段種別ラベルと把持手段種別ラベル５４０とが一致し、かつ、当該姿勢ラベルが把持対象物状態ラベル５３０に含まれている把持条件要素５１０を抽出する。また、動作生成部２０６は、何れの把持対象物状態ラベル５３０に含まれる姿勢ラベルが存在しない場合には、空欄の把持対象物状態ラベル５３０に対応する把持条件要素５１０を抽出する。
【００６８】
ここで、図１０の把持条件要素を例にすると、Ｓ１０５において「吸着ハンド」が識別された場合、把持対象物３０１Ａに対して把持条件要素５１０Ａが抽出される。また、把持対象物３０１Ｂに対して把持条件要素５１０Ｂ、把持対象物３０１Ｃに対して把持条件要素５１０Ｃがそれぞれ抽出される。
一方、Ｓ１０５において「ピンセットハンド」が識別された場合、把持対象物３０１Ａに対して把持条件要素５１０Ｄが抽出される。また、把持対象物３０１Ｂに対して把持条件要素５１０Ｅ、把持対象物３０１Ｃに対して把持条件要素５１０Ｆがそれぞれ抽出される。
【００６９】
（ステップＳ１０７）
動作生成部２０６は、Ｓ１０６において抽出した複数の把持条件要素５１０から、把持部１０２が実行する把持動作を生成する。以下、把持動作を生成する処理について説明する。
まず、動作生成部２０６は、抽出した複数の把持条件要素５１０中の把持動作ラベル５５０を参照し、「把持する」ラベルが付与された把持条件要素５１０を更に抽出する。ここで、Ｓ１０５において「吸着ハンド」が識別された場合、図１０の例において、把持条件要素５１０Ａおよび５１０Ｂが抽出される。
【００７０】
次に、動作生成部２０６は、把持パラメータ４００を参照し、抽出された把持条件要素５１０中の把持対象物種別ラベル５２０と把持対象物種別ラベル４２０、把持手段種別ラベル５４０と把持手段種別ラベル４３０とを比較する。動作生成部２０６は、両者が一致する把持パラメータ要素４１０について複数抽出する。動作生成部２０６は、複数抽出された把持パラメータ要素４１０の中から、優先順位４６０を参照して、最も優先度の高いものを１つ選択する。図１０の例においては、把持パラメータ要素４１０Ａおよび４１０Ｂが抽出され、更に優先順位の高い把持パラメータ要素４１０Ａが選択される。
【００７１】
次に、動作生成部２０６は、把持対象物３０１の姿勢ラベルと奥行き画像を用いて、把持対象物３０１の三次元空間内における位置姿勢を算出する。位置に関しては、把持対象物３０１が観測された撮影画像中における座標と、その座標に対応する奥行き画像の値から算出する。姿勢に関しては、把持対象物３０１の姿勢ラベルに対応する姿勢を不図示のルックアップテーブルから取得する。動作生成部２０６は、算出した位置姿勢を用いて、選択した把持パラメータ要素４１０に含まれる目標位置姿勢４４０の値を変換する。具体的には、目標位置姿勢４４０に記述されている位置姿勢は、把持対象物３０１の座標系における位置姿勢であるから、これを撮像部１０１の座標系における位置姿勢に変換する。図１０の例においては、把持パラメータ要素４１０Ａ中の目標位置姿勢４４０（すなわちＸ１、Ｙ１、Ｚ１、ＲＸ１、ＲＹ１、ＲＺ１）が撮像部１０１の座標系における位置姿勢に変換される。
【００７２】
動作生成部２０６は、動作定義テーブル６００を参照して、把持動作および付随動作の生成を行う。動作生成部２０６は、図７（ｂ）の動作定義テーブル６０１の最初の動作種別「把持手段移動」に対応する制御情報「対象物」の欄に、変換した位置姿勢を書き込む。次に、動作生成部２０６は、２番目の「吸着動作開始」に対応する制御情報「吸着圧」の欄に、選択した把持パラメータ要素４１０中の把持手段設定値４５０の値を書き込む。次に、動作生成部２０６は、３番目の「把持手段移動」に対応する制御情報「トレイ内」の欄には、トレイ内部を示す既定の位置姿勢の値を書き込む。動作生成部２０６は、このようにして生成した動作定義テーブル６０１を制御部２０８に出力する。
また、動作生成部２０６は、把持条件要素５１０中の付随動作ラベル５６０に値が設定されていた場合には、更に動作定義テーブル６０２を追加する。動作生成部２０６は、付随動作ラベル５６０の動作が「反転動作」を示していた場合、図７（ｃ）に示す「反転動作」の動作定義テーブル６０２に必要な制御情報を書き込み、制御部２０８に出力する。
【００７３】
第２の実施形態によれば、撮像部１０１が撮影した撮影画像および奥行き画像を入力として、認識部２０５が把持対象物３０１の少なくとも１つの姿勢を検出する。把持パラメータ設定部２０２は、把持対象物３０１の種別や把持部１０２の種別に応じて、把持部１０２が把持対象物３０１を把持するための位置姿勢および把持強度等をパラメータとして設定する。動作生成部２０６は、パラメータに基づいて把持部１０２に把持動作させるための動作定義テーブルを生成する。したがって、把持対象物の種別や把持部１０２の種別ごとにパラメータを設定しておくことで、把持対象物を容易に把持させることができる。
【００７４】
なお、本実施形態において、目標位置姿勢４４０は必ずしも６自由度の位置姿勢でなくてもよい。把持部１０２が把持対象物３０１を把持するのに十分な位置姿勢を設定できる限りにおいて、２自由度あるいは３自由度等のより低い次元の位置姿勢でもよい。また、把持部１０２の位置姿勢でなく、把持部１０２やロボットアーム３０２を構成する各関節の角度等でもよい。
【００７５】
また、目標位置姿勢４４０は、単一の位置姿勢に限られない。例えば、１≦Ｘ≦２等、各次元のパラメータが取り得る範囲として指定してもよい。
また、優先順位４６０は、順位を直接指定するだけでなく、本実施形態における把持成功率等、優先順位を決定するための間接的な情報や値であってもよい。また、把持成功率に限らず、把持に要する時間等、把持の優劣を比較できる他の尺度であってもよく、これらを複数組み合わせるようにしてもよい。
【００７６】
［変形例５］
把持システムは、撮像部１０１の内部あるいは外部に別途三次元計測装置を備えてもよい。三次元計測装置は、把持対象物３０１を含むシーンの奥行き画像に替えて三次元点群を取得する。この場合、学習部２０４および認識部２０５は奥行き画像に替えて三次元点群が入力される。
【００７７】
（第３の実施形態）
第３の実施形態では、ロボットアーム等に取り付けられている把持部を用いて、任意の位置姿勢に配置された複数の部品等の対象物から、対象物の状態に応じて把持動作の手段や内容を決定し、把持を行う場合に適用できる装置について説明する。
本実施形態では、撮像部が撮影した撮影画像および奥行き画像を入力として、認識部が把持対象物の少なくとも１つの姿勢を検出する。把持パラメータ設定部は、把持対象物や把持部の種別に応じて、把持部が把持対象物を把持するための位置姿勢および把持強度等をパラメータとして設定する。動作生成部は、検出された姿勢と、事前に定義された把持条件とを比較し、パラメータを参照して最適な把持手段および把持動作を決定する。把持手段変更部は把持部が備える把持手段を変更し、把持部は決定された把持動作を実行する。これにより、把持対象物の姿勢に応じて把持手段および把持動作の内容を切り替え、最適な把持動作を実行することができる。
【００７８】
図１１は、本実施形態に係る把持システムの全体構成の一例を示す図である。
本実施形態の把持システムは、図８に示す第２の実施形態の把持システムの全体構成と比較すると、把持手段変更部１０３が追加されている。以後、第２の実施形態との差異について説明し、同一の部分については適宜説明を省略する。
把持手段変更部１０３は、把持部１０２の把持手段を変更する機構を備える。把持手段変更部１０３は、例えばツールチェンジャー等を適用することができる。本実施形態は、制御部２０８からの指令に基づいて把持部１０２の把持手段を「吸着ハンド」あるいは「ピンセットハンド」に変更する。
【００７９】
次に、本実施形態の情報処理装置２００の制御について図５のフローチャートを参照して説明する。図５のフローチャートは、第２の実施形態と同じである。ただし、各ステップにおける処理の内容に差異があるので、以下に説明する。
（ステップＳ１０５）
把持手段識別部２０７は、把持部１０２の種別を識別し、把持手段種別ラベルを制御部２０８に出力する。
【００８０】
（ステップＳ１０６）
動作生成部２０６は、Ｓ１０３で得られた把持対象物３０１の種別ラベルおよび姿勢ラベルと、把持条件５００に含まれる把持対象物種別ラベル５２０および把持対象物状態ラベル５３０とを比較する。
動作生成部２０６は、当該種別ラベルと把持対象物種別ラベル５２０とが一致し、かつ、当該姿勢ラベルが把持対象物状態ラベル５３０に含まれている把持条件要素５１０を抽出する。また、動作生成部２０６は、何れの把持対象物状態ラベル５３０に含まれる姿勢ラベルが存在しない場合には、空欄の把持対象物状態ラベル５３０に対応する把持条件要素５１０を抽出する。
【００８１】
（ステップＳ１０７）
動作生成部２０６は、Ｓ１０６において抽出した複数の把持条件要素５１０から、把持部１０２が実行する把持動作を生成する。以下、把持動作を生成する処理について説明する。
まず、動作生成部２０６は、抽出した複数の把持条件要素５１０中の把持動作ラベル５５０を参照し、「把持する」ラベルが付与された把持条件要素５１０を更に抽出する。図１０の例において、把持条件要素５１０Ａ、５１０Ｂ、５１０Ｄ、５１０Ｆが抽出される。
【００８２】
次に、動作生成部２０６は、把持パラメータ４００を参照し、抽出された把持条件要素５１０中の把持対象物種別ラベル５２０と把持対象物種別ラベル４２０、把持手段種別ラベル５４０と把持手段種別ラベル４３０とを比較する。動作生成部２０６は、両者が一致する把持パラメータ要素４１０について複数抽出する。動作生成部２０６は、複数抽出された把持パラメータ要素４１０の中から、優先順位４６０を参照して、最も優先度の高いものを１つ選択する。図１０の例においては、把持パラメータ要素４１０Ａ、４１０Ｂ、４１０Ｃ、４１０Ｄが抽出され、更に優先順位の高い把持パラメータ要素４１０Ａが選択される。
【００８３】
次に、動作生成部２０６は、把持対象物３０１の姿勢ラベルと奥行き画像を用いて、把持対象物３０１の三次元空間内における位置姿勢を算出する。位置に関しては、把持対象物３０１が観測された撮影画像中における座標と、その座標に対応する奥行き画像の値から算出する。姿勢に関しては、把持対象物３０１の姿勢ラベルに対応する姿勢を不図示のルックアップテーブルから取得する。動作生成部２０６は、算出した位置姿勢を用いて、選択した把持パラメータ要素４１０に含まれる目標位置姿勢４４０の値を変換する。具体的には、目標位置姿勢４４０に記述されている位置姿勢は、把持対象物３０１の座標系における位置姿勢であるから、これを撮像部１０１の座標系における位置姿勢に変換する。図１０の例においては、把持パラメータ要素４１０Ａ中の目標位置姿勢４４０（すなわちＸ１、Ｙ１、Ｚ１、ＲＸ１、ＲＹ１、ＲＺ１）が撮像部１０１の座標系における位置姿勢に変換される。
【００８４】
動作生成部２０６は、動作定義テーブル６００を参照して、把持動作および付随動作の生成を行う。動作生成部２０６は、図７（ｂ）の動作定義テーブル６０１の最初の動作種別「把持手段移動」に対応する制御情報「対象物」の欄に、変換した位置姿勢を書き込む。次に、動作生成部２０６は、２番目の「吸着動作開始」に対応する制御情報「吸着圧」の欄に、選択した把持パラメータ要素４１０中の把持手段設定値４５０の値を書き込む。次に、動作生成部２０６は、３番目の「把持手段移動」に対応する制御情報「トレイ内」の欄には、トレイ内部を示す既定の位置姿勢の値を書き込む。動作生成部２０６は、このようにして生成した動作定義テーブル６０１および選択された把持パラメータ要素４１０に対応する把持手段種別ラベル４３０の値を制御部２０８に出力する。図１０の例においては、把持手段種別ラベルとして「吸着ハンド」の情報が制御部２０８に出力される。
【００８５】
また、動作生成部２０６は、把持条件要素５１０中の付随動作ラベル５６０に値が設定されていた場合には、更に動作定義テーブル６０２を追加する。動作生成部２０６は、付随動作ラベル５６０の動作が「反転動作」を示していた場合、図７（ｃ）に示す「反転動作」の動作定義テーブル６０２に必要な制御情報を書き込み、制御部２０８に出力する。
【００８６】
（ステップＳ１０８）
次に、制御部２０８は、Ｓ１０７において動作生成部２０６から出力された把持手段識別ラベルと、Ｓ１０５において把持手段識別部２０７から出力された把持手段識別ラベルとを比較する。両者が異なっていた場合には、制御部２０８は把持手段変更部１０３に対して把持手段を動作生成部２０６から出力された把持手段識別ラベルの把持手段に変更するための制御コマンドを生成する。制御部２０８は制御コマンドを把持手段変更部１０３に送信することで、把持手段変更部１０３は制御コマンドに基づいて把持部１０２の把持手段を変更する。
【００８７】
第３の実施形態によれば、撮像部１０１が撮影した撮影画像および奥行き画像を入力として、認識部２０５が把持対象物の少なくとも１つの姿勢を検出する。把持パラメータ設定部２０２は、把持部の種別と優先順位とを対応付けられた情報である把持パラメータ４００を設定する。動作生成部２０６は把持パラメータ４００を参照して優先順位の高い把持部の種別の情報を制御部２０８に出力する。制御部２０８は、把持部の種別の情報に基づいて把持手段変更部１０３により把持部１０２の把持手段を変更する。これにより、把持部１０２の把持手段を切り替えることができるので最適な把持動作を実行することができる。
【００８８】
［変形例６］
把持部１０２が同時に複数の把持手段を利用できる場合には、把持手段変更部１０３を省略することができる。例えば、把持部１０２が吸着ハンドとピンセットハンドの両方の機能を備え、これらを同時に利用できる場合を想定する。この場合には、制御部２０８は把持手段変更部１０３への制御コマンドを生成する代わりに、何れの把持手段を利用するかを特定する制御コマンドを把持部１０２に直接、送信する。
【００８９】
（第４の実施形態）
第４の実施形態では、ロボットアーム等に取り付けられている把持部を用いて、任意の位置姿勢に配置された複数の部品等の対象物から、対象物の状態に応じて把持動作の手段や内容を決定し、把持を行う場合に適用できる装置について説明する。
本実施形態では、学習部が把持学習を行う過程で、把持部が把持対象物を把持するための位置姿勢および把持強度等をパラメータとして登録する。撮像部が撮影した撮影画像および奥行き画像を入力として、認識部が把持対象物の少なくとも１つの姿勢を検出する。動作生成部は、検出された姿勢と、事前に定義された把持条件とを比較し、パラメータを参照して最適な把持手段および把持動作を決定する。把持部は決定された把持動作を実行する。これにより、ユーザがパラメータを入力しなくとも、把持対象物の姿勢に応じて把持手段および把持動作の内容を切り替え、最適な把持動作を実行することができる。
【００９０】
図１２は、本実施形態に係る把持システムの全体構成の一例を示す図である。
本実施形態の把持システムは、図８に示す第２の実施形態の把持システムの全体構成と比較すると、学習部２０４から把持パラメータ設定部２０２への矢印が追加されている。以後、第２の実施形態との差異について説明し、同一の部分については適宜説明を省略する。
【００９１】
把持パラメータ設定部２０２は、把持部１０２が把持対象物３０１を把持するために必要なパラメータ群を把持パラメータ４００として設定する。
学習部２０４は、認識部２０５が用いる認識データを生成する。第２の実施形態とは異なり、本実施形態の学習部２０４は更に把持パラメータ４００を生成する。
【００９２】
次に、本実施形態の情報処理装置２００の制御について図５のフローチャートを参照して説明する。図５のフローチャートは、第２の実施形態と同じである。ただし、各ステップにおける処理の内容に差異があるので、以下に説明する。
【００９３】
（ステップＳ１１１）
学習部２０４はＣＮＮの学習を行う。また、学習部２０４は把持パラメータ４００を生成する。以下、具体的な処理について説明する。
まず、学習部２０４は第１の実施形態と同様に二段階でＣＮＮの学習を行う。
最初の学習では、学習部２０４はＳ１１０において読み込んだ学習データに基づいて、撮影画像および奥行き画像に対して、把持対象物３０１の種別ラベルおよび姿勢ラベルを識別する認識データを生成する。
【００９４】
次の学習では、学習部２０４はＳ１１０において読み込んだ学習データを用いずに、撮影画像および奥行き画像に対して、把持部１０２の制御パラメータを出力する認識データを生成する。この学習には把持学習と呼ばれる手法を適用できる。把持学習は、入力した撮影画像および奥行き画像に対して、把持部１０２によって実際の把持を行い、その結果に基づき学習を行う。把持に成功した場合には、認識時にその制御パラメータを出力するように学習を行う。十分な学習が行われた際には、認識部２０５に撮影画像および奥行き画像を入力することで、撮影画像中で把持の成功率が高いと判断される領域と、そのときに把持対象物３０１を把持するための制御パラメータが出力されるようになる。
【００９５】
学習部２０４は、把持学習を行う過程において、入力された撮影画像および奥行き画像に対して、実際に把持を行ったときの位置姿勢（以下、把持位置姿勢と呼ぶ）を記録する。認識部２０５は、把持に成功した場合には、当該撮影画像および奥行き画像に対して、把持対象物３０１の種別ラベルおよび姿勢ラベルを認識する。次に、学習部２０４は、把持対象物３０１の姿勢ラベルと奥行き画像を用いて、把持対象物３０１の三次元空間内における位置姿勢を算出する。位置に関しては、把持対象物３０１が観測された撮影画像中における座標と、その座標に対応する奥行き画像の値から算出する。姿勢に関しては、把持対象物３０１の姿勢ラベルに対応する姿勢を不図示のルックアップテーブルから取得する。
【００９６】
学習部２０４は、算出した把持対象物３０１の位置姿勢を用いて、把持位置姿勢を目標位置姿勢４４０の値へと変換する。具体的には、把持位置姿勢は撮像部１０１の座標系における位置姿勢であるから、これを把持対象物３０１の座標系における位置姿勢に変換する。
学習部２０４は、更に把持に成功した時の把持部１０２の把持強度を把持手段設定値４５０に、把持対象物３０１の種別を把持対象物種別ラベル４２０に、把持手段のラベルを把持手段種別ラベル４３０に書き込む。優先順位４６０には、把持に要した時間を書き込む。学習部２０４は、一回の把持成功に対して、１つの把持パラメータ要素４１０を生成する。したがって、ユーザがパラメータを入力しなくても、把持対象物の姿勢に応じて把持手段および把持動作の内容を切り替え、最適な把持動作を実行することができる。
【００９７】
第４の実施形態によれば、学習部２０４が把持学習を行う過程で、把持部１０２が把持対象物を把持するための位置姿勢および把持強度等のパラメータを生成して、把持パラメータ設定部２０２が設定する。したがって、ユーザがパラメータを入力しなくても、把持パラメータ設定部２０２がパラメータを設定することができる。
【００９８】
（第５の実施形態）
第５の実施形態では、ロボットアーム等に取り付けられている把持部を用いて、任意の位置姿勢に配置された複数の部品等の対象物から、対象物の状態に応じて把持動作の内容を決定し、把持を行う場合に適用できる装置について説明する。
本実施形態では、撮像部が撮影した撮影画像および奥行き画像を入力として、認識部が把持対象物の少なくとも１つの姿勢を検出する。把持パラメータ設定部は、把持対象物や把持部の種別に応じて、把持部が把持対象物を把持するための位置姿勢および把持強度等をパラメータとして設定する。動作生成部は、検出された姿勢と、事前に定義された把持条件とを比較し、パラメータを参照して最適な把持動作を決定する。把持可能性判断部は、決定された把持動作に対して物理シミュレーションを適用し、当該把持が成功するか否かを判断する。把持部は決定された把持動作を実行する。これにより、把持対象物の姿勢に応じて把持動作の内容を切り替え、確実性の高い把持動作を実行することができる。
【００９９】
図１３は、本実施形態に係る把持システムの全体構成の一例を示す図である。
本実施形態の把持システムは、図８に示す第２の実施形態の把持システムの全体構成と比較すると、把持可能性判断部２１０が追加されている。以後、第２の実施形態との差異について説明し、同一の部分については適宜説明を省略する。
把持可能性判断部２１０は、動作生成部２０６が生成した把持動作に対して物理シミュレーションを適用し、当該把持動作が成功するか否かを判断する。
【０１００】
次に、本実施形態の情報処理装置２００の制御について図５のフローチャートを参照して説明する。図５のフローチャートは、第２の実施形態と同じである。ただし、各ステップにおける処理の内容に差異があるので、以下に説明する。
【０１０１】
（ステップＳ１０７）
動作生成部２０６は、生成した図７（ｂ）に示す動作定義テーブル６０１を把持可能性判断部２１０に出力する。
把持可能性判断部２１０は、動作定義テーブル６０１と奥行き画像とを参照して、把持部１０２が当該把持動作の対象となっている把持対象物３０１を把持し、目的地点で解放するまでの動作軌道の確認を行う。すなわち、把持可能性判断部２１０は動作定義テーブル６０１により把持部１０２が把持対象物３０１を把持可能か否かを判断する。具体的には、把持可能性判断部２１０は、設定した動作軌道に関して、ロボットアーム３０２や把持部１０２が、他の把持対象物３０１や供給トレイ３０３、排出トレイ３０４等の障害物と接触することなく、把持動作を完遂できるか否かを判断する。また、把持可能性判断部２１０は、把持手段設定値４５０を用いて把持対象物３０１を把持した際に、安定的に保持できるか否かの判断も行う。把持可能性判断部２１０は、判断結果を動作生成部２０６に出力する。
【０１０２】
動作生成部２０６は、把持可能性判断部２１０から「把持動作が成功しない（把持可能ではない）」旨の判断結果が出力された場合には、異なる把持動作を生成し、再度動作定義テーブル６０１を生成する。一方、把持可能性判断部２１０から「把持動作が成功する（把持可能である）」旨の判断結果が出力された場合には、動作定義テーブル６０１を制御部２０８に送信する。したがって、制御部２０８は、「把持動作が成功する」旨の判断結果が出力された動作定義テーブル６０１に基づいて、把持部１０２を駆動する。
【０１０３】
第５の実施形態によれば、把持可能性判断部２１０は、決定された把持動作に対して物理シミュレーションを適用し、把持部１０２が把持対象物を把持可能であるか否かを判断する。制御部２０８は、把持可能性判断部２１０により把持可能であると判断された動作定義テーブル６０１に基づいて把持部１０２を駆動する。したがって、より確実性の高い把持動作を実行することができる。
【０１０４】
＜定義＞
本発明における取得手段は、撮像部が撮影した画像を取得できるものであれば、いかなるものでもよい。また、入力する画像においても、ＲＧＢカラー画像、グレイスケール画像、白黒画像等、いかなる種類の画像でもよい。画像取得部２０１は、取得手段の一例に対応する。
【０１０５】
本発明における設定手段は、特定の把持対象物および把持手段に対して、検出される把持対象物の状態を条件として、把持動作の有無および付随動作の内容を定義し、設定するものである。把持条件設定部２０３は、設定手段の一例に対応する。第１〜第４の実施形態では、把持対象物の特定の姿勢を条件とする方法について説明した。変形例２および変形例３においては、色、形状、材質等、様々な条件を設定できることを説明した。
【０１０６】
本発明における学習手段は、撮影画像、奥行き画像の入力に対して、把持対象物の状態を出力するための認識データを生成するものである。学習部２０４は、学習手段の一例に対応する。第１の実施形態および第４の実施形態では、把持対象物の状態に加えて、更に把持部が把持を行うための制御パラメータを出力することを説明した。
【０１０７】
本発明における認識手段は、学習部が生成した認識データに基づき、撮影画像、奥行き画像の入力に対して把持対象物の状態を出力するものである。認識部２０５は、認識手段の一例に対応する。第１の実施形態および第４の実施形態では、更に把持部が把持を行うための制御パラメータを出力することを説明した。
【０１０８】
本発明における生成手段は、認識部が出力した把持対象物の状態から、把持条件設定部が設定した把持条件に基づき、把持動作を生成するものである。動作生成部２０６は、生成手段の一例に対応する。第１の実施形態では、把持学習を用いて把持動作を生成する方法について説明した。第２の実施形態および第３の実施形態では、予めパラメータとして設定した、特定の把持対象物および把持手段における把持目標位置姿勢によって、把持動作を生成する方法について説明した。
【０１０９】
本発明における制御手段は、動作生成部が生成した把持動作から、実際に把持部が把持動作を実行するための制御コマンドを生成して把持部を駆動するものである。制御部２０８は、制御手段の一例に対応する。
【０１１０】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
以上、本発明を種々の実施形態と共に説明したが、本発明はこれらの実施形態にのみ限定されるものではなく、本発明の範囲内で変更等が可能であり、上述した実施形態を適時組み合わせてもよい。
【符号の説明】
【０１１１】
１０１：撮像部  １０２：把持部  １０３：把持手段変更部  ２００：情報処理装置  
２０１：画像取得部  ２０２：把持パラメータ設定部  ２０３：把持条件設定部  ２０４：学習部  ２０５：認識部  ２０６：動作生成部  ２０７：把持手段識別部  ２０８：制御部  ２１０：把持可能性判断部
【図１】
2019084601.tif 000003
【図２】
2019084601.tif 000004
【図３】
2019084601.tif 000005
【図４】
2019084601.tif 000006
【図５】
2019084601.tif 000007
【図６】
2019084601.tif 000008
【図７】
2019084601.tif 000009
【図８】
2019084601.tif 000010
【図９】
2019084601.tif 000011
【図１０】
2019084601.tif 000012
【図１１】
2019084601.tif 000013
【図１２】
2019084601.tif 000014
【図１３】
2019084601.tif 000015