(57)【特許請求の範囲】
【請求項１】
撮像手段により複数の物体が撮像された画像データに基づいて、前記複数の物体の状態を推定する推定手段と、
前記推定手段により推定された前記複数の物体の状態を示す第１の状態情報に基づいて、前記複数の物体から取り出される物体を選定する選定手段と、
前記複数の物体のうちの前記選定された物体以外の他の物体の状態を示す第２の状態情報に基づいて、前記他の物体の状態の推定処理を制限する範囲を示す制限範囲情報を生成する生成手段とを有し、
前記推定手段は、前記制限範囲情報に従って、前記他の物体の状態を推定することを特
徴とする情報処理装置。
【請求項２】
前記生成手段は、前記第２の状態情報に対して所定の変動幅を付与することにより、前記制限範囲情報を生成することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第２の状態情報は、前記他の物体の位置及び姿勢のうちの少なくとも何れか一方を示す情報であることを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記生成手段は、前記第２の状態情報に示される前記他の物体の位置に対して前記所定の変動幅を付与することにより、前記他の物体の位置の推定処理に係る制限範囲を示す位置制限範囲を前記制限範囲情報として算出し、前記推定手段は、前記位置制限範囲内で前記他の物体の位置を推定することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記生成手段は、前記第２の状態情報に示される前記他の物体の姿勢に対して前記所定の変動幅を付与することにより、前記他の物体の姿勢の推定処理に係る制限範囲を示す姿勢制限範囲を前記制限範囲情報として算出し、前記推定手段は、前記姿勢制限範囲内で前記他の物体の姿勢を推定することを特徴とする請求項３に記載の情報処理装置。
【請求項６】
前記生成手段は、前記第２の状態情報に示される前記他の物体の位置に対して前記所定の変動幅を付与することにより、前記他の物体の位置の推定処理に係る制限範囲を示す位置制限範囲を算出するとともに、前記第２の状態情報に示される前記他の物体の姿勢に対して前記所定の変動幅を付与することにより、前記他の物体の姿勢の推定処理に係る制限範囲を示す姿勢制限範囲を算出し、前記推定手段は、前記位置制限範囲及び姿勢制限範囲を含む前記制限範囲情報に従って、前記位置制限範囲内で前記他の物体の位置を推定し、前記位置制限範囲に対応する前記姿勢制限範囲内で前記他の物体の姿勢を推定することを特徴とする請求項３に記載の情報処理装置。
【請求項７】
前記所定の変動幅は、前記選定された物体の位置から、前記推定手段により前記他の物体について推定された位置までの距離に応じて決定される変動幅であることを特徴とする請求項２乃至６の何れか１項に記載の情報処理装置。
【請求項８】
前記生成手段は、前記所定の変動幅として、前記選定された物体の位置から、前記推定手段により前記他の物体について推定された位置までの距離が近い程、大きい変動幅を付与することを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記所定の変動幅は、前記物体の種類に応じて決定される変動幅であることを特徴とする請求項２乃至６の何れか１項に記載の情報処理装置。
【請求項１０】
物体取り出し回数が所定の回数に達した場合、前記制限範囲情報を初期化する初期化手段を更に有することを特徴とする請求項１乃至９の何れか１項に記載の情報処理装置。
【請求項１１】
前記所定の回数は、前記複数の物体の種類に応じて決定される回数であることを特徴とする請求項１０に記載の情報処理装置。
【請求項１２】
前記所定の回数は、前記推定手段による前記複数の物体の状態の推定結果と、前記推定手段による前記他の物体の状態の推定結果との変化の度合いに応じて決定される回数であることを特徴とする請求項１０に記載の情報処理装置。
【請求項１３】
物体取り出し後における前記他の物体の数が所定の数に達した場合、前記制限範囲情報を初期化する初期化手段を更に有することを特徴とする請求項１乃至９の何れか１項に記載の情報処理装置。
【請求項１４】
前記推定手段による前記複数の物体の状態の推定結果と、前記推定手段による前記制限範囲情報に従って推定した前記他の物体の状態の推定結果との変化の度合いが所定の閾値を超えた場合、前記制限範囲情報を初期化する初期化手段を更に有することを特徴とする請求項１乃至９の何れか１項に記載の情報処理装置。
【請求項１５】
前記所定の変動幅は、前記初期化手段による前記制限範囲情報の初期化後における物体取り出し回数に応じて決定される変動幅であることを特徴とする請求項１０乃至１４の何れか１項に記載の情報処理装置。
【請求項１６】
前記所定の変動幅は、前記制限範囲情報の初期化後における物体取り出し回数が多くなるに従って大きく決定される変動幅であることを特徴とする請求項１５に記載の情報処理装置。
【請求項１７】
前記生成手段は、更に、前記複数の物体が撮像された画像データと、前記物体が取り出された後の前記他の物体が撮像された画像データとの差分に基づいて、前記制限範囲情報を生成することを特徴とする請求項１乃至１６の何れか１項に記載の情報処理装置。
【請求項１８】
前記所定の変動幅は、前記複数の物体が撮像された画像データと、前記物体が取り出された後の前記他の物体が撮像された画像データとの差分に応じて決定される変動幅であることを特徴とする請求項２に記載の情報処理装置。
【請求項１９】
前記推定手段は、前記選定手段により前記選定された物体の次に取り出される物体を選定するために、前記選定された物体が取り出された後に前記他の物体を撮像した画像データと、前記制限範囲情報とに従って、前記他の物体の状態を推定することを特徴とする請求項１乃至１８の何れか１項に記載の情報処理装置。
【請求項２０】
情報処理装置によって実行される情報処理方法であって、
撮像手段により複数の物体が撮像された画像データに基づいて、前記複数の物体の状態を推定する推定ステップと、
前記推定ステップにより推定された前記複数の物体の状態を示す第１の状態情報に基づいて、前記複数の物体から取り出される物体を選定する選定ステップと、
前記複数の物体のうちの前記物体以外の他の物体の状態を示す第２の状態情報に基づいて、前記他の物体の状態の推定処理を制限する範囲を示す制限範囲情報を生成する生成ステップとを含み、
前記推定ステップは、前記制限範囲情報に従って、前記他の物体の状態を推定することを特徴とする情報処理方法。
【請求項２１】
撮像手段により複数の物体が撮像された画像データに基づいて、前記複数の物体の状態を推定する推定ステップと、
前記推定ステップにより推定された前記複数の物体の状態を示す第１の状態情報に基づいて、前記複数の物体から取り出される物体を選定する選定ステップと、
前記複数の物体のうちの前記物体以外の他の物体の状態を示す第２の状態情報に基づいて、前記他の物体の状態の推定処理を制限する範囲を示す制限範囲情報を生成する生成ステップとをコンピュータに実行させ、
前記推定ステップは、前記制限範囲情報に従って、前記他の物体の状態を推定することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ばら積みされた物体を取り出すための技術に関するものである。
【背景技術】
【０００２】
ばら積みされたワークをカメラ等で撮影し、その撮影画像から各ワークの位置や姿勢を推定してロボットに把持させて順次ワークを取り出す場合に、各ワークの位置や姿勢の推定を高速に、また正確に行う手法が例えば特許文献１、２に開示されている。
【０００３】
特許文献１に開示される技術は、取り出したワークに関するサイズの推定結果を用いて、次回以降行うサイズ推定に制約条件を設けることで、推定精度の向上を図っている。
【０００４】
特許文献２に開示される技術は、ワークのばら積みの状態が取り出し作業によって変化したか否かを判断し、次回取り出すワークの周辺でばら積み状態が変化していないと判断された場合には、次回のワーク取り出し時に撮影を行わないことで高速化を図っている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第４０８７８７４号公報
【特許文献２】特許第４１９９２６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述したように、ばら積みされたワークから順次ワークを取り出すには、ワークの位置や姿勢を推定する必要がある。しかも、作業効率の面から、その推定に要する時間は短いほうが好ましい。
【０００７】
特許文献１に開示される技術は、今回取り出したワークのサイズ推定結果を用いて、次回以降のサイズ推定に制限を加えるものである。従って、今回取り出したワークのサイズと、次回取出すワークのサイズとの間に何らかの関連があるという前提が必要となる。しかしながら、ばら積みされたワークに対して、その位置や姿勢を推定することを考えた場合、今回取り出したワークの位置や姿勢と、次回取出すワークの位置や姿勢との間には関係性は乏しく、特許文献１に開示される技術を適用することは困難である。
【０００８】
また、特許文献２に開示される技術は、ばら積み状態が変化した場合の高速化については考慮されていない。
【０００９】
そこで、本発明の目的は、物体の状態の推定処理を高速化させることにある。
【課題を解決するための手段】
【００１０】
本発明の情報処理装置は、撮像手段により複数の物体が撮像された画像データに基づいて、前記複数の物体の状態を推定する推定手段と、前記推定手段により推定された前記複数の物体の状態を示す第１の状態情報に基づいて、前記複数の物体から取り出される物体を選定する選定手段と、前記複数の物体のうちの前記物体以外の他の物体の状態を示す第２の状態情報に基づいて、前記他の物体の状態の推定処理を制限する範囲を示す制限範囲情報を生成する生成手段とを有し、前記推定手段は、前記制限範囲情報に従って、前記他の物体の状態を推定することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、物体の状態の推定処理を高速化することが可能となる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態に係るワーク取り出しシステムの構成を示す図である。
【図２】代表姿勢を説明するための測地ドームと呼ばれる考え方を示す図である。
【図３】５つの代表姿勢におけるワークの様子（ａ）〜（ｅ）を示す図である。
【図４】ワークの位置や姿勢を推定する手法を説明するための図である。
【図５】ワークの位置や姿勢を推定する処理を示すフローチャートである。
【図６】制限範囲情報の一例を概念的に示す図である。
【図７】ワーク状態認識処理部による位置姿勢推定結果と、制限範囲設定部に対して入力される取り出し前状態情報との一例を示す図である。
【図８】本発明の実施形態に係るワーク取り出しシステムの動作を示すフローチャートである。
【図９】制限範囲情報を用いた場合におけるワーク状態認識処理部の処理を示すフローチャートである。
【図１０】本発明の実施形態における制限範囲設定部の動作を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本発明を適用した好適な実施形態を、添付図面を参照しながら詳細に説明する。
【００１４】
先ず、本発明の第１の実施形態について説明する。図１は、本発明の第１の実施形態に係るワーク取り出しシステムの構成を示す図である。図１において、１０１は、ロボットアームである。１０２は、ロボットアーム１０１のエンドエフェクタであるハンド機構である。１０６は、把持対象物であるワークである。１０５は、トレイである。トレイ１０５には、把持される前の多数のワーク（物体）１０６がばら積み状態で積載されている。
【００１５】
１０３は、撮像装置として用いられるカメラである。カメラ１０３は、不図示のシステム内のフレーム上部若しくは天井等に固定的に取り付けられており、トレイ１０５及びその上にばら積みされている複数のワーク１０６の状態を撮影し、画像データを生成することが可能である。
【００１６】
１０４は、ロボットコントローラである。ロボットコントローラ１０４は、画像処理部１０７から受け取るワーク１０６の位置や姿勢を基に、ロボットアーム１０１、ハンド１０２に対してワーク１０６を取り出すように制御を行う。ここでロボットコントローラ１０４は、一般的にコンピュータから構成されるが、本発明ではその構成を限定するものではない。
【００１７】
１０７は画像処理部である。画像処理部１０７は、カメラ制御部１０８、ワーク状態推定部１０９及び取り出しワーク選定部１１０から構成される。カメラ制御部１０８は、カメラ１０３により撮影された画像データを取り込むための制御を行う。ワーク状態推定部１０９は、ワーク状態認識処理部１１１、制限範囲設定部１１２及び辞書データ格納部１１３から構成される。ワーク状態推定部１０９は、カメラ１０３が撮影した画像データに対して後述する所定の処理を行い、ばら積みされた複数のワーク１０６の位置や姿勢の推定を行う。なお、画像処理部１０７は、本発明の情報処理装置の適用例となる構成である。
【００１８】
１１０は取り出しワーク選定部である。取り出しワーク選定部１１０では、ワーク状態推定部１０９が推定した各ワーク１０６の位置や姿勢の情報から、ロボットアーム１０１が今回取出すワーク（ターゲットワーク）を決定し、そのワークの位置と姿勢をロボットコントローラ１０４に伝える。取り出すワークの選定手法は特に問わないが、例えば把持するために、ロボットコントローラ１０４の制御が容易であるワークを選択する、或いは、ワーク状態推定部１０９での位置及び姿勢の推定の信頼度が高いワークを選択する等が考えられる。
【００１９】
辞書データ格納部１１３は、ワークを球状に包み込んだあらゆる方向から撮影した画像データを、姿勢情報（ワークを包み込んだ球上の緯度、経度）と対応付けて記憶している。但し、実際には、連続的に全ての方向から撮影した画像データを用意することはできないため、ある程度の粒度でサンプリングした代表姿勢の画像データを辞書データとして格納することになる。
【００２０】
図２は、代表姿勢を説明するための図であり、測地ドームと呼ばれる考え方を示している。本実施形態では、測地ドームとして正二十面体を基本にしており、この中心位置にワーク２０１を配置したときに、正二十面体上の各代表点からみた方向を代表姿勢として定義している。ここで代表点としては、例えば各頂点及び各面中心点等を用いることができる。正二十面体においては頂点の数は１６、面の数は２０であるので、計３６の代表姿勢が定義可能である。さらにそれぞれの代表姿勢に対して、その方向から見た時の面内回転も考慮する必要がある。例えば角度１８度刻みの粒度で面内回転を区別する場合には、２０通りの面内回転姿勢が存在する。従って、この場合には、３６×２０＝７２０通りの姿勢があることになる。
【００２１】
図３は、５つの代表姿勢におけるワークの様子（ａ）〜（ｅ）を示す図である。このように山積み状態では、ワークはカメラ１０３に対してあらゆる方向を向く可能性があり、さらにその方向でのあらゆる面内回転をする可能性がある。従って、辞書データ格納部１０４では、あらゆる方向（本実施例では３６方向）から取得した画像を辞書データとして持っている。面内回転の画像は、代表姿勢の画像からアフィン変換処理等を用いて容易に生成できるので、辞書データ格納部１０４には、３６方向から撮影したワーク１０６の画像を格納すればよく、実際の処理時に面内回転の画像を生成すればよい。
【００２２】
ワーク状態認識処理部１１１は、カメラ制御部１０８から画像データを受け取り、画像データ中のワークの位置及び姿勢を推定する処理を行う。図４（ａ）に、カメラ１０３によって撮影された画像データの一例を示す。図４（ａ）に示す画像データには、ばら積みされた複数のワークが撮影されている。
【００２３】
ここで、ワーク状態認識処理部１１１で行われる、ワークの位置や姿勢を推定する手法について、図４及び図５を用いて説明する。ワーク状態認識処理部１１１は、画像データ（図４（ａ））に対して、辞書データ格納部１１３に格納された辞書データをテンプレートとしてスキャンしながら相関処理を行う。図４（ｂ）はその様子を示している。図４（ｂ）において、４００は画像データ、４０１は辞書データ（テンプレート）である。
【００２４】
ワーク状態認識処理部１１１は、図５のフローチャートに示す処理により、ばら積みされた複数のワークそれぞれの位置や姿勢を推定する。以下、図５を参照しながら、ワークの位置及び姿勢の推定処理について説明する。
【００２５】
先ずステップＳ５００において、ワーク状態認識処理部１１１は、制限範囲設定部１１２より制限範囲情報を受け取る。制限範囲情報には、今回、ワーク状態認識処理部１１１で行われる位置推定、姿勢推定のそれぞれの処理に対する制限が記されている。位置推定に対しては、辞書データを設定する画像データ中の位置に関して制限が設けられる。姿勢推定に対しては、使用する辞書データに制限が設けられる。本実施形態では、制限内の画像データ中の全ての位置に対して、制限内の全ての姿勢に対応する辞書データを適用する場合について説明する。
【００２６】
図６は、制限範囲情報の一例を概念的に示す図である。図６（ａ）は、位置に関する制限範囲情報の一例を概念的に示している。即ち、図６（ａ）は、画像データ６００において、辞書データの中央を、図中においてドットで表示していない部分（白塗り部分）に対してのみ設定することができるという制限を表している。図６（ｂ）は、姿勢に関する制限範囲情報の一例を概念的に示している。即ち、図６（ｂ）において、６０１は測地ドームであり、使用する辞書データを、図中においてドットで表示していない部分（白塗り部分）の方向から撮影した辞書データとするという制限を表している。本実施形態では、辞書データを取得する代表点として、各頂点及び各面の中心点としているので、図６（ｂ）の例では、図中の黒丸点（９点）を代表点とする辞書データに限定されることになる。
【００２７】
ステップＳ５０１において、ワーク状態認識処理部１１１は、辞書データ格納部１１３から、制限範囲内にある姿勢に対応した辞書データを取得する。例えば姿勢に関する制限が図６（ｂ）のようになっている場合には、ワーク状態認識処理部１１１は、制限内にある９つの辞書データから任意の一つを選択して、辞書データ格納部１１３から受け取る。
【００２８】
ステップＳ５０２において、ワーク状態認識処理部１１１は、画像データ中に設定された制限範囲内の位置に、辞書データをテンプレートとして設定する。例えば制限範囲内で最も左上の位置にテンプレートが設定される。
【００２９】
ステップＳ５０３において、ワーク状態認識処理部１１１は、その位置におけるテンプレートと画像データとの相関演算を行い、相関値を算出する。本発明では相関演算の手法は問わないので、既知の手法を用いればよい。例えば正規化相関演算により相関値を算出してもよい。
【００３０】
ステップＳ５０４において、ワーク状態認識処理部１１１は、テンプレートを制限範囲内の全ての位置に設定し、相関値を算出したか否かをチェックする。まだテンプレートが全ての位置に設定されていなければ、処理はステップＳ５０５に進む。一方、テンプレートが全ての位置に設定されていれば、処理はステップＳ５０６に進む。ステップＳ５０５において、ワーク状態認識処理部１１１は、制限範囲内でテンプレートを次の位置に移動する。ステップＳ５０６において、ワーク状態認識処理部１１１は、制限範囲内の全ての辞書データをテンプレートとして設定し、相関値を算出したか否かをチェックする。まだ全ての辞書データがテンプレートとして設定されていなければ、処理はステップＳ５０７に進む。ステップＳ５０７において、ワーク状態認識処理部１１１は、制限範囲内で次の姿勢に対応した辞書データを取得する。この場合、制限範囲内での面内回転も考慮して辞書データを更新する。つまり、辞書データ格納部１０４に記憶している辞書データ（テンプレート）に対して、アフィン変換を行うことで、新たな辞書データとする場合もある。一方、制限範囲内の全ての辞書データ（面内回転を含む）がテンプレートとして設定されたのであれば、処理はステップＳ５０８に進む。
【００３１】
ステップＳ５０８において、ワーク状態認識処理部１１１は、これまでに得られた相関値を大きい順にソートし、閾値処理を行う。即ち、ワーク状態認識処理部１１１は、閾値未満の相関値は破棄する。ステップＳ５０９において、ワーク状態認識処理部１１１は、破棄されなかった相関値に対して統合処理を行って、複数のワークの位置及び姿勢を算出する。本発明では統合処理の手法は問わないので、既知の手法を用いればよい。例えば、近隣位置の相関値をまとめる等の処理を行えばよい。また、ここでは閾値処理してから統合処理を行うとしたが、両者の順番は問わない。また、両者を一体としたような処理でもよい。ワーク状態認識処理部１１１は、以上のような手順により、複数のワークの位置及び姿勢を推定する。
【００３２】
図７は、ワーク状態認識処理部１１１による位置姿勢推定結果と、制限範囲設定部１１２に対して入力される取り出し前状態情報との一例を示す図である。図７（ａ）は、ｎ＋１個のワークに対して位置姿勢推定結果が出力された場合の例を示している。ワーク状態認識処理部１１１は、それぞれのワークに対して推定した位置情報（横方向位置、縦方向位置、以下、推定位置情報と称す）と、それぞれのワークに対して推定した姿勢情報（測地ドーム上の緯度、経度と、その位置での面内回転角度、以下この3つを、推定姿勢情報と称す）が示されている。また、図７（ａ）において、それぞれのワークに対して示されるスコアとは、上記統合処理によって統合された相関値を示している。ワーク状態認識処理部１１１は、図７（ａ）に示すような位置姿勢推定結果を取り出しワーク選定部１１０に出力する。
【００３３】
取り出しワーク選定部１１０は、ワーク状態認識処理部１１１から入力した位置姿勢推定結果から、ロボットアーム１０１が今回取出すワーク（ターゲットワーク）を決定する。そして、取り出しワーク選定部１１０は、そのターゲットワークの推定位置情報及び推定姿勢情報をロボットコントローラ１０４に伝える。また同時に、ワーク状態認識処理部１１１は、ターゲットワーク以外のワークの推定位置情報と推定姿勢情報とを取り出し前状態情報として制限範囲設定部１１２に送る。例えば、図７（ａ）に示す位置姿勢推定結果に対して、ワークインデックス０のワークがターゲットワークとして選択された場合には、ワークインデックス１〜ｎのワークの推定位置情報と推定姿勢情報とが取り出し前状態情報に相当する（図７（ｂ））。なお、図７（ａ）に示す位置姿勢推定結果は、第１の状態情報の例であり、図７（ｂ）に示す取り出し前状態情報は、第２の状態情報の例である。
【００３４】
制限範囲設定部１１２は、取り出しワーク選定部１１０から入力した取り出し前状態情報を基に、次回の位置姿勢推定処理に対して適用される制限範囲情報の算出を行う。本実施形態では、取り出し前状態情報に示される推定位置情報、推定姿勢情報のそれぞれに所定の変動幅を付与することで或る範囲を設定し、それらの範囲が示された情報を制限範囲情報とする。
【００３５】
例えば、図７（ｂ）の推定位置情報（Ｘ１，Ｙ１）、（Ｘ２，Ｙ２）、・・・、（Ｘｎ，Ｙｎ）に対して所定の変動幅pを付与し、それぞれの推定位置情報により示される位置を中心とした半径ｐの円内の範囲を、全ての推定位置情報にわたってマージしたものを位置に関する制限範囲情報とする。同様に、図７（ｂ）の推定姿勢（α１，β１，γ１）、（α２，β２，γ２）、・・・、（αｎ，βｎ，γｎ）に対して所定の変動幅qを付与し、それぞれの推定姿勢情報により示される姿勢を中心とした半径qの球内の範囲を、全ての推定姿勢情報にわたってマージしたものを姿勢に関する制限範囲情報とする。
【００３６】
このような制限範囲情報を用いて、図５のフローチャートに示す処理が実行される。従って、本実施形態では、位置に関する制限範囲情報に示される全範囲内の位置に対して、姿勢に関する制限範囲情報に示される全範囲内の姿勢に対応する辞書データを適用することになる。
【００３７】
変動幅p、qは、位置及び姿勢の推定に要する処理時間や、位置及び姿勢の推定精度の予測値や経験値等により決定される。また、ワークのばら積みの状況が変化した領域では、p、qの値を大きくしてもよい。
【００３８】
また上記では、位置に関する制限範囲情報に関して所定の円内としたが、ワーク状態認識処理部１１１の実際の処理においては、円形に制限するより矩形に制限した方が、処理が容易ということも考えられる。その場合は、所定の円形を外接するような矩形の領域を位置に関する制限範囲情報としてもよい。位置に関する制限範囲情報の一例を概念的に示す図６（ａ）は、このような場合に相当する。
【００３９】
また上記では、姿勢に関する制限範囲情報に関して所定の球内としたが、本実施形態のように、測地ドームの代表点を用いて姿勢推定の辞書データを作成している場合には、推定姿勢を中心として、測地ドーム上に沿って測定する所定の距離の範囲内に含まれている辞書データを、姿勢に関する制限範囲情報としてもよい。姿勢に関する制限範囲情報の一例を概念的に示す図６（ｂ）は、このような場合に相当する（ただし、面内回転に関する制限範囲情報に関しては図示されていない）。
【００４０】
次に、図８のフローチャートを用いて、本実施形態に係るワーク取り出しシステムの動作について説明する。
【００４１】
ステップＳ８０１において、制限範囲設定部１１２は制限範囲情報を初期化する。制限範囲情報の初期化とは、制限を全廃することを意味する。これは、ばら積みワークの取り出し処理が開始された直後は取り出し前状態情報が存在しないため、制限範囲を算出することができないためである。従って、最初の位置姿勢推定処理では、位置に関する制限範囲情報も姿勢に関する制限範囲情報もなく、画像データ中の全ての位置にテンプレートを設定し、全ての辞書データをテンプレートとして設定することになる。
【００４２】
ステップＳ８０２において、カメラ制御部１０８は、ばら積みワークが写っている画像データを取得する。ステップＳ８０３において、ワーク状態推定部１０９は、カメラ制御部１０８が入力した画像データに基づいて、複数のワークの位置及び姿勢を推定する。ステップＳ８０４において、取り出しワーク選定部１１０は、位置及び姿勢が推定された複数のワークから今回取り出すワーク（ターゲットワーク）を選定する。
【００４３】
ステップＳ８０５において、取り出しワーク選定部１１０は、ターゲットワークの推定位置情報及び推定姿勢情報をロボットコントローラ１０４に伝える。ステップＳ８０６において、ロボットコントローラ１０４は、取り出しワーク選定部１１０から入力したターゲットワークの推定位置情報及び推定姿勢情報に基づいてロボットアーム１０１、ハンド１０２を制御し、ターゲットワークを取り出す。ステップＳ８０７において、ワーク状態推定部１０９は、ワークの取り出し処理を終了するか否かを判断する。この判断は、所定の数のワークが取り出されたか否か等を基準に判断される。ワークの取り出し処理を継続すると判定された場合、ステップＳ８０８において、制限範囲設定部１１２は、取り出し前状態情報における推定位置情報に対して所定の変動幅ｐを付与し、全ての推定位置情報にわたってマージしたものを位置に関する制限範囲情報として算出する。また、制限範囲設定部１１２は、取り出し前状態情報における推定姿勢情報に対して所定の変動幅ｑを付与し、全ての推定姿勢情報にわたってマージしたものを姿勢に関する制限範囲情報として算出する。算出された制限範囲情報はワーク状態認識処理部１１１に対して設定される。その後、処理はステップＳ８０２に戻る。一方、ワークの取り出し処理を終了すると判定された場合、処理は終了する。
【００４４】
以上のように、本実施形態においては、前回のワーク取り出し時における推定位置情報及び推定姿勢情報に基づいて、今回の位置姿勢推定処理で推定を行う範囲に制限を与えることができる。これにより、位置姿勢推定処理の高速化を実現することができる。例えば、図６（ａ）のように位置推定範囲が制限されれば（白塗り部分が制限範囲内）、本来画像データ全体６００に対して位置を推定すべきところが、白塗りの部分のみに制限されるので、処理時間は短縮される。また同様に、図６（ｂ）のように姿勢推定範囲が制限されれば、本来全ての辞書データに対して姿勢を推定すべきところが、黒丸位置に対応する辞書データとその辞書データをアフィン変換して作成される面内回転の辞書データのみに制限されるので、処理時間は短縮される。図６（ｂ）では図示されていないが、それぞれの黒丸位置ごとに面内回転の範囲も制限されている。
【００４５】
また、今回のワーク取り出しにおける位置及び姿勢の推定を完全に省略するわけではないので推定精度も維持される。つまり、ばら積みされた複数のワークの中からある一つのワークを取り出したときに、干渉等により、その他のワークの位置及び姿勢が少し変化してしまったという場合でも、本実施形態では推定精度の劣化なしに対応することができる。
【００４６】
また、本実施形態では、制限範囲設定部１１２において、位置に関しても姿勢に関しても制限範囲情報を算出する例を示したが、必ずしも位置及び姿勢の両方の制限範囲情報を算出する必要はない。位置に関してのみ、或いは姿勢に関してのみ制限範囲情報を算出してもよい。
【００４７】
次に、本発明の第２の実施形態について説明する。第１の実施形態では、位置に関する制限範囲情報と姿勢に関する制限範囲情報とは、それぞれ独立に算出されていた。従って、第１の実施形態では、位置に関する制限範囲情報に示される全範囲内の位置に対して、姿勢に関する制限範囲情報に示される全範囲内の姿勢に対応する辞書データを適用していた。これに対し、本実施形態では、推定位置毎に位置の制限範囲を設定し、その推定位置毎に設定された位置の制限範囲に対して姿勢の制限範囲を設定する。つまり本実施形態では、それぞれの位置の制限範囲毎に姿勢の制限範囲が設定されるので、第１の実施形態に比べて高速処理が可能となる。
【００４８】
本実施形態では、第１の実施形態の場合と同様に、図７（ｂ）のような取り出し前状態情報が制限範囲設定部１１２に入力されるものとして、制限範囲設定部１１２の動作を説明する。また、本実施形態でも、取り出し前状態情報に示される推定位置情報、推定姿勢情報のそれぞれに所定の変動幅を付与して制限範囲情報を算出する。ここで、各々の推定位置情報に所定の変動幅を付与した範囲を位置制限範囲と称す。また、各々の推定姿勢情報に所定の変動幅を付与した範囲を姿勢制限範囲と称す。例えば、図７（ｂ）の推定位置情報（Ｘ１，Ｙ１）、（Ｘ２，Ｙ２）、・・・、（Ｘｎ，Ｙｎ）に対して所定の変動幅が付与されることにより、各々の推定位置情報に対して位置制限範囲Ａ１、Ａ２、・・・、Ａｎが算出される。同様に、図７（ｂ）の推定姿勢情報（α１，β１，γ１）、（α２，β２，γ２）、・・・、（αｎ，βｎ，γｎ）に対して所定の変動幅が付与されることにより、各々の推定姿勢情報に対して姿勢制限範囲Ｂ１、Ｂ２、・・・、Ｂｎが算出される。即ち、本実施形態において算出される制限範囲情報は、位置制限範囲と姿勢制限範囲とが対となっている。
【００４９】
つまり、本実施形態の制限範囲情報を用いた位置及び姿勢の推定処理では、位置を推定する範囲は、位置制限範囲Ａ１、Ａ２、・・・Ａｎ内に限定され、さらに位置制限範囲Ａ１で行われる姿勢の推定は、姿勢制限範囲Ｂ１に限定される。同様に位置制限範囲Ａ２で行われる姿勢の推定は、姿勢制限範囲Ｂ２に限定され、・・・、位置制限範囲Ａｎで行われる姿勢推定は、姿勢制限範囲Ｂｎに限定される。
【００５０】
この場合の変動幅p、qも第１の実施形態と同様に、位置及び姿勢の推定に要する処理時間や、位置及び姿勢の推定精度の予測値や経験値等により決定すればよい。
【００５１】
図９は、上述した制限範囲情報を用いた場合におけるワーク状態認識処理部１１１の処理を示すフローチャートである。なお、図９において、図５と同じ符号のステップは、図５での説明と同様の処理であるため、説明を省略する。
【００５２】
ステップＳ９０１において、ワーク状態認識処理部１１１は、複数の位置制限範囲Ａ１、Ａ２、・・・、Ａｎから、一つの位置制限範囲を選択して設定する。さらにワーク状態認識処理部１１１は、選択した位置制限範囲に対応する姿勢制限範囲を設定する。例えばワーク状態認識処理部１１１は、複数の位置制限範囲Ａ１、Ａ２、・・・、Ａｎから位置制限範囲Ａ１を選択して設定すると、位置制限範囲Ａ１に対応する姿勢制限範囲Ｂ１を選択して設定する。
【００５３】
ステップＳ９０２において、ワーク状態認識処理部１１１は、ステップＳ９０１（或いは、ステップＳ９０９）で設定した姿勢制限範囲（例えば、Ｂ１）内にある辞書データの一つを辞書データ格納部１１３から取得する。
【００５４】
ステップＳ９０３において、ワーク状態認識処理部１１１は、ステップＳ９０１（或いは、ステップＳ９０９）で設定した位置制限範囲（例えば、Ａ１）内の任意の位置に、ステップＳ９０２（或いは、ステップＳ９０７）で取得した辞書データをテンプレートとして設定する。例えばワーク状態認識処理部１１１は、図６（ａ）に示す位置制限範囲内で最も左上の位置にテンプレートを設定するものとする。
【００５５】
ステップＳ９０４において、ワーク状態認識処理部１１１は、テンプレートを位置制限範囲内の全ての位置に設定し、相関値を算出したか否かをチェックする。まだテンプレートが全ての位置に設定されていなければ、処理はステップＳ９０５に進む。一方、テンプレートを全ての位置に設定していれば、処理はステップＳ９０６に進む。ステップＳ９０５において、ワーク状態認識処理部１１１は、位置制限範囲内でテンプレートを次の位置に移動する。ステップＳ９０６において、ワーク状態認識処理部１１１は、姿勢制限範囲内の全ての辞書データをテンプレートとして設定し、相関値を算出したか否かをチェックする。まだ全ての辞書データがテンプレートとして設定されていなければ、処理はステップＳ９０７に進む。ステップＳ９０７において、ワーク状態認識処理部１１１は、設定された姿勢制限範囲内で次の姿勢に対応する辞書データを取得する。この場合、第1の実施形態の場合と同様、制限範囲内での面内回転も考慮して辞書データを更新する。一方、全ての辞書データがテンプレートとして設定されたのであれば、処理はステップＳ９０８に進む。ステップＳ９０８において、ワーク状態認識処理部１１１は、全ての位置制限範囲（或いは、姿勢制限範囲）を設定したか否かをチェックする。まだ全ての位置制限範囲（或いは、姿勢制限範囲）が設定されていなければ、処理はステップＳ９０９に進む。ステップＳ９０９において、ワーク状態認識処理部１１１は、まだ設定されていない位置制限範囲（及び姿勢制限範囲）を選択し、設定する。一方、全ての位置制限範囲（或いは、姿勢制限範囲）が設定されたのであれば、処理はステップＳ５０８に進む。
【００５６】
本実施形態におけるワーク状態認識処理部１１１は、以上のような手順により、複数のワークの位置及び姿勢を推定する。第１の実施形態では、どの位置制限範囲に対しても共通の姿勢制限範囲を用いて位置姿勢推定を行っていたのに対し、本実施形態では、位置制限範囲毎に姿勢制限範囲が指定される。従って、本実施形態では、第１の実施形態の場合に比べてさらに高速にワークの位置及び姿勢を推定することが可能となる。
【００５７】
次に、本発明の第３の実施形態について説明する。第１、第２の実施形態では、制限範囲情報を算出する際に用いられる変動幅を、取り出したワーク（ターゲットワーク）の位置に関係なく決定する場合の例を示したが、本実施形態では、ターゲットワークがあった位置を起点とする距離に応じて、変動幅を決定する場合の例について示す。
【００５８】
第３の実施形態でも、第１の実施形態の場合と同じく、ワーク状態認識処理部１１１により、図７（ａ）のように位置姿勢推定がなされた場合について説明する。さらに、取り出しワーク選定部１１０が今回取出すワーク（ターゲットワーク）として、ワークインデックス０のワークを選択し、ロボットアーム１０１、ハンド１０２がターゲットワークを取り出した場合について説明する。また、説明の簡単のため、ワークインデックス０のワークの位置（Ｘ０，Ｙ０）から見て、近い順にワークインデックス１のワーク、ワークインデックス２のワーク、・・・、ワークインデックスｎのワークという位置関係にあるものとする。
【００５９】
本実施形態では、取り出しワーク選定部１１０は、制限範囲設定部１１２に対して取り出し前状態情報を渡すだけでなく、ターゲットワークの位置情報（Ｘ０，Ｙ０）も渡す。本実施形態では、制限範囲設定部１１２において、取り出し前状態情報における推定位置（例えば、（Ｘ１，Ｙ１））と、ターゲットワークの位置（Ｘ０，Ｙ０）との距離に応じて、所定の変動幅を付与する。本実施形態では、推定位置とターゲットワークの位置との距離が近いほど大きい変動幅を付与するものとする。従って、例えば図７（ｂ）の推定位置（Ｘ１，Ｙ１）、（Ｘ２，Ｙ２）、・・・、（Ｘｎ，Ｙｎ）のそれぞれに対して、変動幅ｐ１、ｐ２、・・・、ｐｎを付与すると、ｐ１が最大の変動幅で、ｐｎが最小の変動幅となる。
【００６０】
このように、ターゲットワークがあった位置を起点とする距離に応じて変動幅を変更するのは、ターゲットワークを取り出すときに、他のワーク（ターゲットワーク以外のワーク）と、ハンド１０２とが干渉する可能性があることを考慮したためである。また、取り出しによってばら積みされたワークが崩れることを考慮したためである。
【００６１】
取り出し時の干渉の可能性は、ターゲットワークに近いワークほど発生する可能性が高く、また実際に干渉した場合の影響（位置や姿勢が動くこと）も、ターゲットワークに近いワークほど大きいことが予想される。また、ワークの崩れに関してもターゲットワークに近いワークほど発生しやすいことが予想される。従って、ターゲットワークに近いワークほど変動幅を大きくすることで、干渉や崩れが発生しても、位置姿勢が推定できるようにしている。
【００６２】
また、ばら積みされているワークの種類に応じて変動幅を変更するようにしてもよい。こうすることで、ワークの形状によって、干渉の発生しやすさや、ばら積みされたワークの崩れやすさが異なることを考慮に入れた変動幅を設定することができる。例えば、ばら積みされたワークとして、干渉が頻繁に発生するような複雑な形状のワークである場合には変動幅を大きくして、干渉により位置姿勢が大きく変化しても対応できるようにすることができる。同様に、崩れが頻繁に発生するような不安定な形状のワークの場合にも、変動幅を大きくすることで対応可能となる。
【００６３】
次に、本発明の第４の実施形態について説明する。第１〜第３の実施形態では、ばら積みワークの取り出し処理が開始直後のみに、制限範囲設定部１１２による制限範囲情報の初期化（制限の全廃）が行われる例を示したが、本発明はこれに限定されない。例えば、制限範囲情報を定期的に初期化してもよい。第４の実施形態では、制限範囲情報の初期化以降のワークの取り出し回数（以下、初期化後取り出し回数と称す）を測定し、初期化後取り出し回数が所定回数に達した場合には、制限範囲情報を再度初期化する場合の例を示す。
【００６４】
図１０は、第４の実施形態における制限範囲設定部１１２の動作を示すフローチャートである。以下、図１０を参照しながら、本実施形態における制限範囲設定部１１２の動作について説明する。
【００６５】
ステップＳ１００１において、制限範囲設定部１１２は、ばら積みワークの取り出し処理の開始直後か否かをチェックする。ばら積みワークの取り出し処理の開始直後の場合、処理はステップＳ１００４に進む。ステップＳ１００４において、制限範囲設定部１１２は、制限範囲情報を初期化する。さらに処理はステップＳ１００５に進み、制限範囲設定部１１２は、初期化後取り出し回数を初期化（１にリセット）する。一方、ばら積みワークの取り出し処理の開始直後でない場合、処理はステップＳ１００２に進む。ステップＳ１００２において、制限範囲設定部１１２は、取り出しワーク選定部１１０から取り出し前状態情報を受け取る。そして処理はステップＳ１００３に進む。
【００６６】
ステップＳ１００３において、制限範囲設定部１１２は、初期化後取り出し回数が所定回数に達したか否かをチェックする。所定回数に達した場合、処理はステップＳ１００４に進む。一方、初期化後取り出し回数が所定回数に達していない場合、処理はステップＳ１００６に進む。ステップＳ１００６において、制限範囲設定部１１２は、取り出し前状態情報から制限範囲情報を算出する。この制限範囲情報の算出処理は、第１〜第３の実施形態と同様である。さらに処理はステップＳ１００７に進み、制限範囲設定部１１２は、初期化後取り出し回数を１加算する。ステップＳ１００８において、制限範囲設定部１１２は、制限範囲情報をワーク状態認識処理部１１１に出力する。
【００６７】
通常、ワークの取り出しを行う毎に、取り出し前状態情報に示されるワークの数が減少していくことが予想される。しかし、本実施形態のように、定期的に制限範囲情報を初期化することによって、定期的に取り出し前状態情報に示されるワークの数が増加し、取り出しワーク選定部１１０での取り出しワークの選択の幅が広がる。これにより、取り出しワーク選定部１１０において、例えばロボットコントローラ１０４の制御が容易であるようなワークの選択の幅が増える、或いは、ワーク状態推定部１０９での推定の信頼度が高いワークの選択の幅が増えることが考えられる。
【００６８】
また、上記では、初期化後取り出し回数を測定し、初期化後取り出し回数が所定回数に達した場合には制限範囲情報を初期化する例を示したが、取り出し前状態情報に示されるワークの数が所定の数に達した場合に、制限範囲情報を初期化するようにしてもよい。これにより、取り出し前状態情報に示されたワークの数の減少による、取り出しワークの選択肢の減少を防ぐことができる。
【００６９】
また、初期化後取り出し回数と、制限範囲情報を算出する際に用いる変動幅との間に次のような関係があってもよい。例えば、初期化後取り出し回数が多くなるにつれて、変動幅を大きくするようにしてもよい。変動幅を大きくすることで、位置及び姿勢を推定できるワークの数が増加することが予想されるので、これにより、取り出し前状態情報に示されるワークの数の減少による、取り出しワークの選択肢の減少を防ぐことができる。
【００７０】
また、上記の所定回数は以下のように設定されるものでもよい。例えば、ばら積みされたワークの種類に応じて所定回数が設定されてもよい。これにより、ワークの形状によって、干渉の発生しやすさや、ばら積みされたワークの崩れやすさが異なることを考慮に入れた取り出し回数を設定することができる。位置や姿勢が変化しやすいワークの場合には、ある程度頻繁に制限範囲情報を初期化した方がよい。
【００７１】
また、前回の取り出し時の位置姿勢推定結果と、今回推定した位置姿勢推定結果との変化の度合いに応じて所定回数を設定しもよい。或いは、前回の取り出し時の位置姿勢推定結果と、今回推定した位置姿勢推定結果との変化の度合いがある閾値を超えれば初期化を行うようにしてもよい。
【００７２】
次に、本発明の第５の実施形態について説明する。第１〜第４の実施形態では、制限範囲設定部１１２による制限範囲情報の算出に関して、取り出し前状態情報のみを用いた手法を述べたが、本発明はこれに限らない。例えば、ワークを取り出した後にも撮影を行い、ワークの取り出しの前後でばら積み状況の変化を推定し、その推定結果も用いて制限範囲情報の算出を行うことも本発明に含まれる。ワークのばら積み状況の変化は、ワークの取り出しの前後で撮影を行い、両者の画像データの差分画像を算出することで推定できる。取り出したワークの位置以外に差分があれば、そこでは、ばら積み状況の変化（例えば、ワークを取出す際にばら積みの山が崩れてしまった、或いは、ハンドが触れてワークの姿勢が変化してしまった等）が発生したことがわかる。ばら積み状況の変化量の推定は、例えば、差分画像に対して閾値処理を行った後の非零領域の面積等を基準に推定すればよい。
【００７３】
このようにして推定したばら積み状況の変化量に応じて変動幅を設定し、制限範囲情報の算出を行うこともできる。例えば、取り出し前状態情報におけるあるワークの推定位置情報が、ばら積み状況の変化が大きいと推定された場所に含まれているような場合には、その推定位置情報及び対応する推定姿勢情報に対しては、付与する変動幅を大きくする。逆に、取り出し前状態情報におけるあるワークの推定位置情報が、ばら積み状況の変化が少ないと推定された場所に含まれているような場合には、その推定位置情報及び対応する推定姿勢情報に対しては、付与する変動幅を小さくすればよい。
【００７４】
以上説明した実施形態では、ワーク状態認識処理部１１１で推定されるワークの位置が２次元の場合を示してきたが、本発明はこれに限らない。即ち、ワークの３次元位置を推定してもよい。ワークの３次元位置を推定した場合には、取り出し前状態情報における推定位置情報を３次元にし、位置に関する制限範囲情報も３次元にすればよい。また、その場合に必要であれば、カメラ１０３として距離情報も取得できるようなカメラを用いてもよい。
【００７５】
また、上述した実施形態では、ワーク状態認識処理部１１１で行われる位置姿勢推定の手法として、姿勢毎に用意されたテンプレートを用いた相関処理の場合を示してきたが、本発明によるワーク取り出し手法が対象とするのはそれに限らない。例えば決定木を用いた姿勢推定手法を、画像中で位置をずらしながら行うことで、位置と姿勢を推定する手法でもよい。
【００７６】
この場合、制限する姿勢を色々変えた複数の学習データセットを用意し、それぞれの学習データセットを用いて決定木を学習させることで、制限された姿勢範囲に対応した決定木を用意することができる。用意した複数の決定木のうちから、制限範囲設定部１１２にから受け取った制限範囲情報に応じた決定木を選択すればよい。
【００７７】
また、上述した実施形態では、取り出し前状態情報に対して所定の変動幅を付与して、制限範囲情報を算出するが、その変動幅の値を実際にいくつにするのかを決定する手法は問わない。例えば、値を変化させて何度か実験を行い、最適な値を見つけてもよい。また、位置姿勢の推定に要する処理時間や、位置姿勢の推定精度の予測値や経験値等により決定されるものであってもよい。
【００７８】
また、画像処理部１０７は一般的にコンピュータから構成されるが、本発明ではその構成を限定するものではない。また、画像処理部１０７がロボットコントローラ１０４と一体になった構成であってもよい。
【００７９】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００８０】
１０１：ロボットアーム、１０２：ハンド機構、１０３：カメラ、１０４：ロボットコントローラ、１０５：トレイ、１０６：ワーク、１０７：画像処理部、１０８：カメラ制御部、１０９：ワーク状態推定部、１１０：取り出しワーク選定部、１１１：ワーク状態認識処理部、１１２：制限範囲設定部、１１３：辞書データ格納部
【図１】
0005769411.tif 000002
【図２】
0005769411.tif 000003
【図３】
0005769411.tif 000004
【図４】
0005769411.tif 000005
【図５】
0005769411.tif 000006
【図６】
0005769411.tif 000007
【図７】
0005769411.tif 000008
【図８】
0005769411.tif 000009
【図９】
0005769411.tif 000010
【図１０】
0005769411.tif 000011