(57)【特許請求の範囲】
【請求項１】
ロボットアームの作業部による作業の対象となる被作業物体の位置姿勢を認識器により認識処理するための情報処理装置であって、
前記被作業物体の複数の位置姿勢のそれぞれに対して前記作業部が作業を行い得る、当該作業部の位置姿勢を取得する取得手段と、
前記取得手段により取得された前記作業部が作業を行い得る位置姿勢に対して、前記作業部により前記作業が可能であるか否かを判定する判定手段と、
前記判定手段により前記作業が可能であると判定された場合、前記被作業物体の複数の位置姿勢から、前記作業部が作業を行い得る位置姿勢に対応する前記被作業物体の位置姿勢を、前記認識器の認識処理で用いられる位置姿勢として限定する限定手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記取得手段は、前記複数の位置姿勢のうちの１つとして、前記被作業物体が載置される作業領域における仮想位置において前記被作業物体が予め定められた姿勢である場合に、前記ロボットアームの逆運動学を解くことにより、前記逆運動学の解が得られた場合の前記仮想位置と、前記被作業物体の姿勢と、に対応する前記作業部の位置姿勢を、前記作業部が行い得る位置姿勢として取得することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記作業領域における前記仮想位置ごとに前記限定手段により限定された位置姿勢の有無を示す作業可否情報を算出する作業情報算出手段と、
前記仮想位置を基準にボロノイ境界で前記作業領域を分割する領域分割手段と、
前記領域分割手段により分割された領域ごとに、前記作業情報算出手段により算出された前記作業可否情報が等しい領域を統合して、前記作業可否情報の分布を示すマップを生成する生成手段と、
をさらに備え、
前記生成手段により生成された前記マップは前記認識器の認識処理で用いられることを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記被作業物体の前記作業領域における前記仮想位置を設定する仮想位置設定手段をさらに備えることを特徴とする請求項２または３に記載の情報処理装置。
【請求項５】
前記被作業物体の前記作業領域における前記仮想位置を予め記憶する仮想位置記憶手段をさらに備えることを特徴とする請求項２または３に記載の情報処理装置。
【請求項６】
前記限定手段により限定された位置姿勢を表示する表示手段をさらに備えることを特徴とする請求項１または２に記載の情報処理装置。
【請求項７】
取得手段と、判定手段と、限定手段とを備え、ロボットアームの作業部による作業の対象となる被作業物体の位置姿勢を認識器により認識処理するための情報処理装置の制御方法であって、
前記取得手段が、前記被作業物体の複数の位置姿勢のそれぞれに対して前記作業部が作業を行い得る、当該作業部の位置姿勢を取得する取得工程と、
前記判定手段が、前記取得工程により取得された前記作業部が作業を行い得る位置姿勢に対して、前記作業部により前記作業が可能であるか否かを判定する判定工程と、
前記限定手段が、前記判定工程により前記作業が可能であると判定された場合、前記被作業物体の複数の位置姿勢から、前記作業部が作業を行い得る位置姿勢に対応する前記被作業物体の位置姿勢を、前記認識器の認識処理で用いられる位置姿勢として限定する限定工程と、
を備えることを特徴とする情報処理装置の制御方法。
【請求項８】
コンピュータに請求項７に記載の情報処理装置の制御方法の各工程を実行させるためのプログラム。
【請求項９】
ロボットアームの作業部により保持される被作業物体の姿勢に対する認識器を生成する情報処理装置であって、
前記作業部が取り得る前記作業部の姿勢を取得する第１の取得手段と、
前記作業部が前記被作業物体を保持する際の前記被作業物体と前記作業部との相対姿勢を取得する第２の取得手段と、
前記作業部の前記取得された姿勢と、前記作業部が前記被作業物体を保持する際の前記被作業物体と前記作業部との相対姿勢とに基づいて、前記被作業物体の姿勢を限定する限定手段と、
前記被作業物体の前記限定された姿勢に基づいて前記被作業物体を認識するために使用される認識器を生成する生成手段と、
を備えることを特徴とする情報処理装置。
【請求項１０】
第１の取得手段と、第２の取得手段と、限定手段と、生成手段とを備え、ロボットアームの作業部により保持される被作業物体の姿勢に対する認識器を生成する情報処理装置の制御方法であって、
前記第１の取得手段が、前記作業部が取り得る前記作業部の姿勢を取得する第１の取得工程と、
前記第２の取得手段が、前記作業部が前記被作業物体を保持する際の前記被作業物体と前記作業部との相対姿勢を取得する第２の取得工程と、
前記限定手段が、前記作業部の前記取得された姿勢と、前記作業部が前記被作業物体を保持する際の前記被作業物体と前記作業部との相対姿勢とに基づいて、前記被作業物体の姿勢を限定する限定工程と、
前記生成手段が、前記被作業物体の前記限定された姿勢に基づいて前記被作業物体を認識するために使用される認識器を生成する生成工程と、
を備えることを特徴とする情報処理装置の制御方法。
【請求項１１】
コンピュータに請求項１０に記載の情報処理装置の制御方法の各工程を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理装置の制御方法、およびプログラムに関し、特に、ロボットアームにより所定の作業を行うために、被作業物体を認識する認識器を生成し、生成された認識器を用いて山積みされた被作業物体の三次元位置および姿勢を推定する情報処理装置、情報処理装置の制御方法、およびプログラムに関する。
【背景技術】
【０００２】
視覚情報を使用する認識の分野において、物体の三次元的な位置や姿勢を推定する方法に関して、さまざまな研究開発が行われている。産業用ロボットや実験的なヒューマノイドロボットなどの分野ではランダムピッキングなどの用途で三次元情報を利用することも多く、その必要性は高くなってきている。扱う対象物体の姿勢自由度が高い場合、対象物体のさまざまな姿勢を三次元的に推定する必要がある。既知形状の対象物体に関しては、ステレオカメラやレーザレンジファインダなどの三次元センサを用いて位置および姿勢を推定する方法がある。三次元センサから得られた三次元特徴量と、モデル上の複数特徴点に関する三次元特徴量との対応関係を取得することにより、剛体変換を用いて物体の位置および姿勢を算出する。また、単眼カメラによる対象物体の位置姿勢推定も行われており、さまざまな姿勢を多クラス分類問題として認識する方法がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許２５５５８２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
対象物体が三次元的な自由度を持つ場合でも、実用上はある限定された姿勢だけを認識すればよい場合がある。すなわち、ロボットハンドによる対象物体の把持作業を考えた場合、検出された対象物体の推定姿勢が、ロボットとの相対的な位置関係を考えた時に把持不可能である場合がある。そのような対象物体を検出することはタスクとして無駄であり、最初から無視しても不都合はない。特に工業用ロボットの分野ではこの制限は顕著であることが多く、把持不可能な姿勢の対象物体をわざわざ検出することは、検出するための認識器におけるメモリ量や検出処理時間の増加を招いている。
【０００５】
特許文献１では、山積み部品画像の輪郭線に基づいて部品を照合する際、基準姿勢における照合モデルに対して許容される不一致範囲である照合限界値を、把持可能な範囲における許容限界角度に基づいて設定している。この方法では、姿勢の自由度を大きく設定しておらず、一つの基準姿勢からの照合限界値を緩めることで、基準姿勢からの姿勢変動を許容して検出している。
【０００６】
しかしながら、特許文献１に記載される方法では、把持可能性を考慮した姿勢範囲を考慮しているが、姿勢の自由度が大きい場合を考えておらず、また姿勢によって対象物体の見え方が大きく変化するような場合に利用することは難しいという課題がある。
【０００７】
上記の課題に鑑み、本発明は、姿勢自由度の大きい対象物体に対して、実作業で利用される認識器のメモリ量を削減し、対象物体検出時の認識処理時間を短縮することを目的とする。
【課題を解決するための手段】
【０００８】
上記の目的を達成する本発明に係る情報処理装置は、
ロボットアームの作業部による作業の対象となる被作業物体の位置姿勢を認識器により認識処理するための情報処理装置であって、
前記被作業物体の複数の位置姿勢のそれぞれに対して前記作業部が作業を行い得る、当該作業部の位置姿勢を取得する取得手段と、
前記取得手段により取得された前記作業部が作業を行い得る位置姿勢に対して、前記作業部により前記作業が可能であるか否かを判定する判定手段と、
前記判定手段により前記作業が可能であると判定された場合、前記被作業物体の複数の位置姿勢から、前記作業部が作業を行い得る位置姿勢に対応する前記被作業物体の位置姿勢を、前記認識器の認識処理で用いられる位置姿勢として限定する限定手段と、
を備えることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、姿勢自由度の大きい対象物体に対して、実作業で利用される認識器のメモリ量を削減し、対象物体検出時の認識処理時間を短縮することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】本発明を含むシステム全体の構成を説明する図。
【図２】本発明を含むシステムの具体的な構成例を示す図。
【図３】第１実施形態に係るシステムの各装置構成を説明する図。
【図４】姿勢パターンの生成を説明する図。
【図５】被作業物体の位置および姿勢の表現を説明する図。
【図６】エンドエフェクタ座標系とロボットアーム先端座標系との関係を説明する図。
【図７】作業状態の設定を説明する図。
【図８】仮想位置の設定を説明する図。
【図９】作業可能性を判定する姿勢パターンの設定を説明する図。
【図１０】６軸多関節ロボットアームの具体例を示した図。
【図１１】仮想位置を複数設定する場合の例を示した図。
【図１２】限定姿勢マップの生成を説明する図。
【図１３】学習データとしてＣＧ画像を生成する過程を説明する図。
【図１４】第２実施形態に係るシステムの各装置構成を説明する図。
【図１５】第４実施形態に係るシステムの装置構成バリエーションの例を示した図。
【図１６】表示部による限定姿勢確認のための表示例を示す図。
【図１７】第４実施形態に係るシステムの装置構成の一例を説明する図。
【図１８】嵌合作業を表す図。
【図１９】第３実施形態に係るシステムの装置構成を説明する図。
【図２０】本発明に係る処理の手順を示すフローチャート。
【図２１】設定部における処理の手順を示すフローチャート。
【発明を実施するための形態】
【００１１】
（第１実施形態）
図１を参照して、本発明に係る情報処理装置を用いたシステム全体の概要を説明する。最初にシステムの概要を説明し、詳細は後述する。オンラインにおける実作業時の動作として、まず撮像部Ｒ３００は、ロボットシステムＲ２００の作業対象である被作業物体を撮像する。その撮像情報は情報処理装置Ｒ１００へと送られる。情報処理装置Ｒ１００は被作業物体の位置姿勢を推定する。そして、その推定結果に基づいて生成された作業命令がロボットシステムＲ２００のロボット制御部Ｒ２１０へと送られる。ロボット制御部Ｒ２１０は、送られてきた作業命令に従ってロボットアームＲ２２０を動作させ、被作業物体に対して所定の作業を行う。情報処理装置Ｒ１００は、実作業時における被作業物体の位置姿勢を推定するための認識器をオフラインの状態であらかじめ生成する。その際、ロボットアームＲ２２０の作業可能性に基づいた被作業物体の姿勢に基づいて、取得すべき位置姿勢の範囲を限定して設定し、認識器を生成する。
【００１２】
図２を参照して、上記システムの具体的なハードウェア構成例を説明する。ロボットコントローラＡ２１０およびロボットアームＡ２２０は、図１におけるロボットシステムＲ２００の構成要素である。ロボットコントローラＡ２１０はロボット制御部Ｒ２１０に相当し、ロボットアームＡ２２０はロボットアームＲ２２０に相当する。被作業物体Ａ４００は、ロボットアームＡ２２０による作業対象となる物体である。トレイＡ５００には、被作業物体Ａ４００が複数個載置されている。カメラＡ３００は、図１における撮像部Ｒ３００に相当する。カメラＡ３００は画像情報を得るための単眼カメラでもよいし、距離情報を得るためのステレオカメラやＴＯＦセンサ、あるいは、カメラと投光器の組み合わせによる、光切断法や空間コード化法などを用いる装置でもよい。ロボットアームＡ２２０には被作業物体への所定の作業（例えば把持作業）を行うためのエンドエフェクタＡ２３０が設置されている。計算機Ａ１００は、図１における情報処理装置Ｒ１００を含むものである。
【００１３】
オンラインにおける実作業時には、まず、カメラＡ３００により撮像された、トレイＡ５００に山積みされた被作業物体の情報が計算機Ａ１００へと送られる。計算機Ａ１００では認識器による計算が行われ、トレイＡ５００における被作業物体Ａ４００の位置姿勢が推定される。推定された被作業物体Ａ４００の位置姿勢に基づき、所定作業を行うための命令がエンコードされ、ロボットコントローラＡ２１０へと送られる。ロボットコントローラＡ２１０は送られてきた命令をデコードし、ロボットアームＡ２２０およびエンドエフェクタＡ２３０を動作させ、認識された被作業物体Ａ４００に対して所定作業を行う。  情報処理装置Ｒ１００における認識器は、被作業物体Ａ４００の三次元的な位置および姿勢をクラス分けするクラス分類器であり、撮像部Ｒ３００から得られた情報がどのクラスに当てはまるのかを判定することにより、被作業物体の位置姿勢を認識する。本実施形態では被作業物体は一種類であるとして説明しているが、必ずしも一種類に限定されるものではない。複数種類の被作業物体を認識する場合には、クラス数を増やすことによって複数種類の被作業物体に対して認識器を作ることも可能である。この認識器は、実作業より前に、オフライン状態で情報処理装置Ｒ１００において予め生成されるものである。その際、認識器のメモリ量を削減し、被作業物体検出時の認識処理時間を短縮するため、以下で説明される処理を行うことにより、検出すべき被作業物体の位置姿勢の範囲が限定されるようにする。
【００１４】
図３を参照して、上述したように検出すべき被作業物体の位置姿勢の範囲を限定するための、情報処理装置Ｒ１００の機能構成を説明する。情報処理装置Ｒ１００は、姿勢設定部Ｓ１０１０と、作業状態設定部Ｓ１０２０と、データ記憶部Ｄ１０３０と、仮想位置設定部Ｓ１０４０と、ロボットパラメータ記憶部Ｄ１０５０と、取得部Ｓ１０６０と、設定部Ｓ１０７０と、学習データ生成部Ｓ１０８０と、認識器生成部Ｓ１０９０と、認識器記憶部Ｄ１１００と、認識処理部Ｓ１１１０と、作業命令生成部Ｓ１１２０と、較正結果記憶部Ｄ１１３０とを備える。
【００１５】
姿勢設定部Ｓ１０１０は、認識器で扱う可能性のある姿勢集合Θ＝｛θｊ｝（ｊ＝１…Ｎ）を生成する。ここで、Ｎはすべてのクラスを表現した姿勢の総数である。生成された姿勢集合Θは、取得部Ｓ１０６０へ送られる。
【００１６】
作業状態設定部Ｓ１０２０は、被作業物体Ａ４００に対するエンドエフェクタＡ２３０による作業状態を設定する。ここで作業状態は、所定の作業内容によって決まるものである。例えば、作業内容がフィンガーによる把持作業の場合、作業状態は、被作業物体Ａ４００上の把持位置をフィンガーで把持した状態における、被作業物体Ａ４００とエンドエフェクタＡ２３０との相対位置姿勢で表される。
【００１７】
データ記憶部Ｄ１０３０は、被作業物体Ａ４００のモデルデータとエンドエフェクタＡ２３０のデータとを、三次元モデルデータとしてあらかじめ記憶しており、被作業物体Ａ４００における物体座標系とエンドエフェクタＡ２３０におけるエンドエフェクタ座標系とが設定されている。仮想位置設定部Ｓ１０４０は、後述する作業領域内の仮想位置を設定する。
【００１８】
ロボットパラメータ記憶部Ｄ１０５０は、リンク長および関節回転角の限界値等の、ロボットアームＲ２２０の特性パラメータとして設計値により定まる既知の値を記憶する。取得部Ｓ１０６０は、姿勢設定部Ｓ１０１０により算出された姿勢集合Θと、作業状態設定部Ｓ１０２０により設定された相対位置ｐおよび相対姿勢ＥＨｐと、仮想位置設定部Ｓ１０４０により設定された仮想位置Ｘｋとを取得し、これらに基づいて検出すべき被作業物体Ａ４００の姿勢を算出して取得する取得手段として機能する。
【００１９】
設定部Ｓ１０７０は、取得部Ｓ１０６０により算出された各姿勢に対する作業可能性に基づいて、認識器を生成するために必要な限定姿勢を設定し、被作業物体Ａ４００の姿勢の範囲を限定するように設定する限定手段として機能する。学習データ生成部Ｓ１０８０は、被作業物体Ａ４００の限定姿勢における学習データを生成する。認識器生成部Ｓ１０９０は、学習データ生成部Ｓ１０８０により生成された学習データを用いて、認識器を生成する。
【００２０】
認識器記憶部Ｄ１１００は、認識器生成部Ｓ１０９０により生成された認識器を記憶する。認識処理部Ｓ１１１０は、撮像部Ｒ３００により撮像された画像データと、認識器記憶部Ｄ１１００に記憶されている認識器とを用いて、被作業物体Ａ４００の位置姿勢を認識する。認識処理部Ｓ１１１０により認識された被作業物体Ａ４００の位置姿勢は、作業命令生成部Ｓ１１２０へと送られる。
【００２１】
作業命令生成部Ｓ１１２０は、認識処理部Ｓ１１１０により認識された被作業物体Ａ４００の推定位置姿勢と、に基づいて、被作業物体Ａ４００への作業を行う命令を生成する。較正結果記憶部Ｄ１１３０は、カメラとロボットとの間の相対位置関係情報を記憶する。作業命令生成部Ｓ１１２０は、この相対位置関係情報からロボットの目標位置を設定し、その目標位置はロボット命令としてエンコードされる。エンコードされたロボット命令は、ロボット制御部Ｒ２１０へと送信される。
【００２２】
次に、情報処理装置Ｒ１００における被作業物体の位置姿勢の範囲設定処理について詳細に説明する。本実施形態における、被作業物体の認識対象となる位置姿勢の範囲を設定する処理は、実作業よりも前にオフラインで行われる。この処理は、撮像部Ｒ３００およびロボットシステムＲ２００を情報処理装置Ｒ１００に接続することなく、計算機Ａ１００内部における演算で実現できる。
【００２３】
まず、姿勢設定部Ｓ１０１０は、認識器で扱う可能性のある姿勢集合Θ＝｛θｊ｝（ｊ＝１…Ｎ）を生成する。ここで、Ｎはすべてのクラス表現した姿勢の総数である。ここで、図４を参照して、この姿勢集合Θの生成について説明する。被作業物体Ａ４００の三次元的な姿勢集合は、測地ドーム４０１と面内回転４０２とを組み合わせて生成される。ここで測地ドーム４０１とは、正多面体の三角形面素を再帰的に同一面積の三角形に分割していくことで球面を均一に離散化表現する公知の手法である。測地ドーム４０１の中心を被作業物体中心４０４と見なせば、測地ドーム４０１から得られた正多面体の頂点は、それぞれ被作業物体Ａ４００をさまざまな位置から見下ろすときの視点４０３と考えることができる。測地ドーム４０１における各視点４０３から得られる被作業物体Ａ４００の見え方のバリエーションは、面内回転４０２のパターンを伴う。そのため、例えば１６２視点の測地ドーム４０１で、面内π／４毎の回転パターンを与えるとすれば、姿勢集合はＮ＝１６２×８＝１２９６個存在することになる。一般的に物体の位置姿勢は、図５に示されるように、モデル５１１を観測値５１２へと移動させるための変換により表現される。具体的には、カメラ座標系Ｃ１０１における物体座標系Ｃ１０２への平行移動ベクトルＰＷにより位置を表すことができる。また、カメラ座標系Ｃ１０１における物体座標系Ｃ１０２の各軸の方向ベクトルの組による姿勢行列ＥＷ＝［ｅＷＸ、ｅＷＹ、ｅＷＺ］により姿勢を表すことができる。姿勢行列ＥＷの要素であるｅＷＸ、ｅＷＹ、ｅＷＺはそれぞれ長さ１の単位列ベクトルである。認識器の姿勢を表現する場合には位置を考慮する必要はなく、被作業物体の姿勢θｊにおける姿勢行列はＥＷｊ＝［ｅＷｊＸ、ｅＷｊＹ、ｅＷｊＺ］で表すこととする。物体座標系軸を測地ドーム４０１の各視点方向を軸にして面内回転させ、測地ドームの視点方向の傾きを加えれば、各姿勢の姿勢行列が得られる。生成された姿勢集合Θは、取得部Ｓ１０６０へ送られる。
【００２４】
作業状態設定部Ｓ１０２０は、被作業物体Ａ４００に対するエンドエフェクタＡ２３０による作業状態を設定する。作業状態設定部Ｓ１０２０は、データ記憶部Ｄ１０３０から、被作業物体Ａ４００のモデルデータと、エンドエフェクタＡ２３０のデータとを読み込む。被作業物体Ａ４００のモデルデータおよびエンドエフェクタＡ２３０のデータは、三次元モデルデータとしてデータ記憶部Ｄ１０３０にあらかじめ記憶されており、被作業物体Ａ４００における物体座標系とエンドエフェクタＡ２３０におけるエンドエフェクタ座標系とが設定されている。ここで図６は、エンドエフェクタ座標系Ｃ１０３とロボットアーム先端座標系Ｃ１０４との関係を示している。後述するロボットアーム先端位置姿勢の計算を簡略化するために、エンドエフェクタ座標系Ｃ１０３は、ロボットアームと接続されているエンドエフェクタ接続状態６０１の時に、ロボットアーム先端座標系Ｃ１０４と一致するように設定されてもよい。以降の説明では、エンドエフェクタ座標系Ｃ１０３とロボットアーム先端座標系Ｃ１０４とは接続時に一致しているものとする。ユーザは、被作業物体Ａ４００の物体座標系Ｃ１０２を基準とした時に、エンドエフェクタＡ２３０が所定の作業を行うときの状態を指定する。指定の方法はインタフェースの形式に依存するものではない。例えば、三次元表示によるＧＵＩを用いてユーザが合わせ込んでもよいし、数値入力によって設定してもよい。
【００２５】
図７を参照して、この作業状態の設定について説明する。設定された作業状態における被作業物体Ａ４００とエンドエフェクタＡ２３０との相対位置７０１として、物体座標系Ｃ１０２を基準としたエンドエフェクタ座標系原点の位置ｐ＝［Ｘｐ、Ｙｐ、Ｚｐ］Ｔを算出する。ここで上付きのＴは行列の転置を表す。
【００２６】
また、物体座標系Ｃ１０２を基準としたエンドエフェクタＡ２３０の姿勢行列ＥＨｐ＝［ｅＨｐＸ、ｅＨｐＹ、ｅＨｐＺ］を、被作業物体Ａ４００とエンドエフェクタＡ２３０の相対姿勢７０２として算出する。算出されたｐとＥＨｐとは、取得部Ｓ１０６０へ送られる。作業状態は、所定の作業内容によって決まるものである。例えば、作業内容が図２や図７に示したようなフィンガーによる把持作業の場合、作業状態は、被作業物体Ａ４００上の把持位置をフィンガーで把持した状態における、被作業物体Ａ４００とエンドエフェクタＡ２３０との相対位置姿勢で表される。また、作業内容が図９（ｂ）を参照して後述するノズルによる吸着作業の場合、作業状態は、被作業物体Ａ４００上の吸着面をノズルで吸着した際の被作業物体Ａ４００とエンドエフェクタＡ２３０との相対位置姿勢で表される。作業内容は、被作業物体Ａ４００を把持または吸着することを目的としたピッキング動作だけに限定されるものではない。例えば、図１８（ａ）に示されるようにエンドエフェクタＡ２３０が把持している嵌合部品Ａ４０２を、図１８（ｂ）に示されるように被嵌合部品Ａ４０１へ嵌合させる嵌合作業を作業内容としてもよい。その場合、被嵌合部品Ａ４０１を被作業物体Ａ４００とみなし、図１８（ｂ）のような嵌合状態におけるエンドエフェクタＡ２３０と被嵌合部品Ａ４０１との相対位置姿勢を作業状態と考えることもできる。設定する作業状態は一種類だけでなくてもよい。複数の作業状態が可能である場合、例えば複数の角度で把持することが可能な場合などでは、作業状態を複数指定すればよい。その場合、被作業物体Ａ４００とエンドエフェクタＡ２３０との相対位置ｐと、物体座標系Ｃ１０２を基準としたエンドエフェクタ姿勢行列ＥＨｐとが、それぞれ複数設定される。また、ピッキング作業や嵌合作業などにおいて、被作業物体Ａ４００に対する相対的なアプローチ経路が決まっている場合には、その途中経路を作業状態として追加設定してもよい。例えば、図１８のような嵌合作業時に、図１８（ｂ）で表される嵌合状態への前段階として、嵌合部品Ａ４０１と被嵌合部品Ａ４０２とが図１８（ａ）のような位置関係である必要がある場合には、図１８（ａ）の状態を追加の作業状態として設定する。
【００２７】
次に、仮想位置設定部Ｓ１０４０は、作業領域内の仮想位置を設定する。図８は、仮想位置に関して説明している。ここで仮想位置とは、作業領域内の任意位置であり、部品の中心が配置される位置である。作業領域とは、作業が行われる前に被作業物体Ａ４００が配置される範囲であり、具体的には、トレイＡ５００内の空間などによって定義される。後述するように仮想位置設定部Ｓ１０４０による仮想位置８０１は複数回のループによって複数選択されることもあり、ｋ回目の設定によって設定された仮想位置８０１をＸｋと書くこととし、Ｘｋはロボット座標系Ｃ１０７基準で表現されるものとする。初期設定（ｋ＝１）としては、例えば、Ｘ１を作業領域端の一点や、作業領域重心などに設定する。設定されたＸｋは、取得部Ｓ１０６０へ送られる。
【００２８】
取得部Ｓ１０６０は、姿勢設定部Ｓ１０１０により算出された姿勢集合Θと、作業状態設定部Ｓ１０２０により設定された相対位置ｐおよび相対姿勢ＥＨｐと、仮想位置設定部Ｓ１０４０により設定された仮想位置Ｘｋとを取得する。そして、これらに基づいて検出すべき被作業物体Ａ４００の姿勢を算出する。検出すべき被作業物体Ａ４００の姿勢は、ロボットアーム先端部（作業部）が作業を行い得る位置姿勢を考慮して算出される。まず、仮想位置Ｘｋに被作業物体Ａ４００の物体座標系原点を配置することを仮定する。図９（ａ）に示されるように、物体座標系原点９０１を固定した状態で、被作業物体Ａ４００の姿勢をθｊにした場合を考える。判定対象となる姿勢θｊは、通常はΘで定義されたすべての姿勢であるが、被作業物体Ａ４００の配置に関する限定やエンドエフェクタＡ２３０の特性、トレイ配置などによる既知の環境情報を用いて、事前に限定してもよい。例えば、作業領域における被作業物体Ａ４００の置かれ方がパーツフィーダなどによってある程度決まっているのであれば、その範囲内で判定対象姿勢θｊを限定してもよい。あるいは、図９（ｂ）に示されるように、エンドエフェクタが、ノズル９１１による吸着式であり、被作業物体Ａ４００を吸着可能な姿勢の範囲が実験的に既知であれば、その範囲内に判定対象姿勢θｊを限定してもよい。また、作業領域におけるトレイＡ５００の位置が既知である場合、図９（ｃ）に示されるように、仮想位置Ｘｋに対して、トレイ壁面９２１とエンドエフェクタＡ２３０とが干渉するような姿勢を、判定対象姿勢からあらかじめ取り除いておいてもよい。
【００２９】
判定対象姿勢θｊに対してロボットアームＲ２２０が作業可能であるか否かの判定は、ロボットアームの逆運動学を解いた結果、ロボットアーム先端部（作業部）の位置姿勢が、ロボットの構造上作業を行い得るかどうかを計算することにより行われる。逆運動学の解析的な解き方はロボットの構成に依存するが、ここではＲＰＰ−ＲＰＲ型の６軸多関節ロボットを仮定して説明する。ここでＲは回転関節（Ｒｏｔａｔｉｏｎａｌ  Ｊｏｉｎｔ）、Ｐは直動関節（Ｐｒｉｓｍａｔｉｃ  Ｊｏｉｎｔ）を表す。
【００３０】
図１０は、このＲＰＰ−ＲＰＲ型ロボットの構造を説明した図である。ロボット座標系Ｃ１０７は関節Ｊ１の座標系と等しいとする。各関節Ｊｉに対して、ＪｉとＪｉ＋１との間のリンク長をｌｉとする。ただし、関節Ｊ６とロボットアーム先端部までの長さはｌ６とする。また、Ｊ１とＪ２とは同一位置にあるものとし、ｌ１＝０と仮定する。関節Ｊｉの右手系回転角度をφｉとし、すべてのφｉが０ｒａｄのときの状態をロボットアームＲ２２０の初期状態とする。リンク長および関節回転角の限界値は、ロボットアームＲ２２０の特性パラメータとして設計値により定まる既知の値であり、ロボットパラメータ記憶部Ｄ１０５０から読み込まれる。
【００３１】
通常、回転関節（この例ではφ１、φ４、φ６）の回転角に限界値はない（もしくは、あっても範囲が広い）が、直動関節（この例ではφ２、φ３、φ５）は隣接リンクとの干渉による物理的な限界から、角度範囲が狭いことが多い。各関節Ｊｉの姿勢行列はＥｉ＝［ｅｉＸ、ｅｉＹ、ｅｉＺ］で表され、ロボットアーム初期状態における姿勢行列Ｅｉが単位行列となるように定義される。関節Ｊｉのロボット座標系における位置はＱｉ＝［Ｘｉ，Ｙｉ、Ｚｉ］Ｔで表される。逆運動学を解くことは、ロボットアーム先端部（作業部）の位置および姿勢が決まったときの各関節角φｉを算出することである。ロボットアーム先端部（作業部）の位置をＱＴ＝［ＸＴ、ＹＴ、ＺＴ］Ｔ、姿勢をＥＴ＝［ｅＴＸ、ｅＴＹ、ｅＴＺ］とすると、φ１の解として式（１）のような二通りの値が得られる。
【００３２】
【数１】
0005835926.tif 000002
【００３３】
ここでＡＴＡＮ２（ａ、ｂ）は式（２）を満たすθを与える逆正接関数である。
【００３４】
【数２】
0005835926.tif 000003
【００３５】
さらに、φ１とは独立にφ２およびφ３の値が式（３）および式（４）のように得られる。
【００３６】
【数３】
0005835926.tif 000004
【００３７】
【数４】
0005835926.tif 000005
【００３８】
ただし、数式３および数式４は複合同順である。ここでα、βおよびγは以下の式（５）、式（６）、および式（７）で表される。
【００３９】
【数５】
0005835926.tif 000006
【００４０】
【数６】
0005835926.tif 000007
【００４１】
【数７】
0005835926.tif 000008
【００４２】
ここで関節Ｊ５の位置Ｑ５は以下の式（８）により得ることができる。
【００４３】
【数８】
0005835926.tif 000009
【００４４】
関節角φ４は、Ｊ３軸とＪ５軸との成す角であるため、式（９）により得られる。
【００４５】
【数９】
0005835926.tif 000010
【００４６】
ここで・はベクトルの内積、×はベクトルの外積を表す。ベクトルｅ３Ｙ、ｅ３Ｚおよびｅ５Ｙは以下の式（１０）、式（１１）、および式（１２）により求めることができる。
【００４７】
【数１０】
0005835926.tif 000011
【００４８】
【数１１】
0005835926.tif 000012
【００４９】
【数１２】
0005835926.tif 000013
【００５０】
ただし、関節角φ３および関節角φ５は式（１３）および式（１４）により得られる。
【００５１】
【数１３】
0005835926.tif 000014
【００５２】
【数１４】
0005835926.tif 000015
【００５３】
また、関節角φ６は式（１５）により得られる。
【００５４】
【数１５】
0005835926.tif 000016
【００５５】
ここで、関節Ｊ５とロボットアーム先端との間には直動関節がなく、姿勢行列Ｅ５とＥＴは等しいため、式（１６）の関係が成り立つ。
【００５６】
【数１６】
0005835926.tif 000017
【００５７】
また、関節Ｊ６とロボットアーム先端との間にも同様に直動関節がなく、姿勢行列Ｅ６とＥＴは等しいため、式（１７）の関係が成り立つ。
【００５８】
【数１７】
0005835926.tif 000018
【００５９】
式（１２）の符号反転により、φ４、φ５、φ６は複合同順で二通りの解を持つ。よって、φ１〜φ６はこれらの組み合わせにより、一つのロボットアーム先端位置ＱＴ、姿勢ＥＴに対して八通りの解を持つこととなる。
【００６０】
被作業物体Ａ４００の物体座標系Ｃ１０２における中心をロボット座標系Ｃ１０７のＸｋに置いたときに、被作業物体Ａ４００の姿勢がθｊであった場合を考える。姿勢行列Ｅｊと、被作業物体Ａ４００とエンドエフェクタＡ２３０との相対位置ベクトルｐから、ロボット座標系Ｃ１０７におけるエンドエフェクタＡ２３０の位置ＱＨが式（１８）により得られる。
【００６１】
【数１８】
0005835926.tif 000019
【００６２】
また、ロボット座標系Ｃ１０７を基準としたエンドエフェクタ姿勢行列ＥＨは式（１９）により得ることができる。
【００６３】
【数１９】
0005835926.tif 000020
【００６４】
ここで、先に定義したように、ロボットアーム先端座標系Ｃ１０４がエンドエフェクタ座標系Ｃ１０３と一致している場合、ＱＴ＝ＱＨ、ＥＴ＝ＥＨである。これにより、被作業物体Ａ４００の位置Ｘｋおよび姿勢θｊにおける関節角が解析的に得られることになる。式（６）により、ｃｏｓβの値が［−１、１］の間に入っているかどうかでφ２の解が得られるかどうかを判定することができる。同様に、式（６）および式（７）により、φ３の解が得られるかどうかを判定することができる。さらに、得られたφ１〜φ６の値がロボットアームＡ２２０の設計可動範囲内でなければ可動範囲外であると判定される。これらの判定に対してロボットアーム設計可動範囲内のφ１〜φ６が得られれば、関節条件を満たしているみなし、被作業物体Ａ４００が位置Ｘｋに存在し、姿勢θｊをとる場合に作業可能であると判定することができる。作業状態設定部Ｓ１０２０により設定された作業状態が複数ある場合は、仮想位置Ｘｋ、姿勢θｊに対して、それぞれの作業状態におけるｐおよびＥＴｐに対する逆運動学を計算する。ロボットアーム先端部（作業部）が作業を行い得る姿勢が一つでもあるようであれば、仮想位置Ｘｋにおける姿勢θｊを作業可能であると判定する。以上説明した逆運動学の解法はロボットアームの関節の組み合わせ構成によって異なる。他構成のロボットアームに対する解法の説明はここでは省略するが、上述した構成のロボットアームに限定されるものではない。
【００６５】
設定部Ｓ１０７０は、取得部Ｓ１０６０により算出された各姿勢の作業可能性に基づいて、認識器を生成するために必要な限定姿勢を設定し、被作業物体Ａ４００の位置姿勢の範囲を設定する。図２１を参照して、この設定部Ｓ１０７０における処理の手順を説明する。
【００６６】
まず、判定手段および作業情報算出手段として機能する作業可否ベクトル算出部Ｓ１０７１は、限定姿勢を設定し、それに基づいて作業可否ベクトルを算出する（作業情報算出処理）。取得部Ｓ１０６０により、仮想位置Ｘｋにおいて作業可能であると判定された姿勢θｊを、仮想位置Ｘｋにおける限定姿勢として設定する。これに基づいて、仮想位置Ｘｋに対する作業可否ベクトルＦｋ（Ｎ次元ベクトル）を定義する。作業可否ベクトルＦｋのｊ番目の要素Ｆｋｊは、姿勢θｊが限定姿勢である場合にＦｋｊ＝１、そうでない場合にＦｋｊ＝０であるように定義する。すなわち、作業可否ベクトルＦｋは、仮想位置Ｘｋにおける限定姿勢の有無を２値のベクトルで表現している。パースペクティブが無視できる程度に、カメラＡ３００の画像における作業領域の画角が狭い場合には、仮想位置設定部Ｓ１０４０は、仮想位置Ｘｋを一つだけ（ｋ＝１）設定して、得られた作業可否ベクトルＦ１を、取得する位置姿勢の範囲としてもよい。作業領域を広い画角で捕らえる場合には、画面の位置によって取得する位置姿勢の範囲が異なる可能性がある。その場合、まず仮想位置設定部Ｓ１０４０は、被作業物体Ａ４００の仮想位置Ｘｋを作業領域内に数種類設定し、取得部Ｓ１０６０による各姿勢の判定結果から、各仮想位置Ｘｋにおける作業可否ベクトルＦｋを算出する。
【００６７】
初期の仮想位置Ｘｋは粗く設定される。例えば、図１１（ａ）に示されるように、作業領域１１０１の四隅にＸ１〜Ｘ４を定義してもよい。また、高さによるパースペクティブが無視できないほどに被作業物体Ａ４００の山積み時の高さ変動が大きい場合には、図１１（ｂ）に示されるように、作業領域１１０２を立方体領域と定義して、八頂点にＸ１〜Ｘ８を定義してもよい。
【００６８】
また、図１２（ａ）に示されるように、画像座標系における空間に設定された作業領域内に投影された、複数の仮想位置８０１Ｘｋを中心としてボロノイ境界１２１１を設定し、複数の領域に分割する（領域分割処理）。ボロノイ境界とは、任意の点Ｘを考えたときに点Ｘの最近傍となるＸｋに点Ｘが属するとして領域を分割したときに得られる領域の境界のことである。
【００６９】
次に、判定手段および作業情報算出手段および領域分割手段として機能する作業可否状態距離算出部Ｓ１０７２は、各位置における作業可否ベクトルの差として、作業可否状態距離を算出する。ある２つの仮想位置ＸｋとＸｌとが上述したボロノイ境界で隣接するとき、それらの作業可否ベクトルＦｋとＦｌとのハミング距離を計算し、作業可否状態距離と定義する。ＦｋとＦｌとの作業可否状態距離が０でない場合、仮想位置ＸｋとＸｌとの画像座標系における距離を測定し、画像探索幅（通常は１画素）より大きければ、仮想位置設定部Ｓ１０４０により新規に仮想位置を追加設定する。図１２（ｂ）に示されるように、ＦｋとＦｌとの中点に新規仮想位置１２２１を設定すればよい。そして、取得部Ｓ１０６０により作業可能性が判定され、新たに作業可否ベクトルが生成される。これを繰り返し、すべての現存する仮想位置に対して、作業可否状態距離が０でない２点間の、画像座標系における距離が画像探索幅以下であれば、仮想位置の追加処理を終了する。
【００７０】
生成手段として機能する限定姿勢マップ生成部Ｓ１０７３は、作業可否状態距離算出部Ｓ１０７２で得られた結果から、作業可否ベクトルが等しい領域に同一のインデックスを付けて同一領域として統合する。これにより、図１２（ｃ）に示されるように、画像座標における各位置に対する限定姿勢マップ１２３１が生成される。この限定姿勢マップは、作業領域における位置姿勢の範囲を表しており、作業可否情報の分布を示している。図１２（ｃ）は、作業領域を複数領域１２３４に分割した限定姿勢マップの例を示す。ここでは模式的に測地ドーム１２３２に限定姿勢の範囲１２３３を示したが、実際には面内回転も含めて範囲が決まる。仮想位置が１つだけである場合には、作業領域全体で同じ限定姿勢を持つ限定姿勢マップ１２３１が生成されることになる。このようにして得られた限定姿勢マップから学習データを生成することにより、実作業時に利用する認識器を生成することになる。
【００７１】
学習データ生成部Ｓ１０８０は、被作業物体Ａ４００の限定姿勢における学習データを生成する。学習データは三次元モデルに基づいて作成される。図１３は、学習画像を生成する様子を表す。ロボット座標系Ｃ１０７とカメラ座標系Ｃ１０１との相対的な位置関係から、被作業物体Ａ４００が限定姿勢θｊをとるときの画像面への射影行列が求まる。そのため、データ記憶部Ｄ１０３０に記憶されている三次元モデルデータと、較正結果記憶部Ｄ１１３０に記憶されているロボットおよびカメラ間の較正結果とを利用して、既存のコンピュータグラフィックス技術により、学習データ１３０１を生成することができる。図１３では学習データを画像として説明しているが、本来は認識器で用いる入力データ形式に依存するものであって、画像に限定されるものではない。例えば、距離センサを使ってデプスマップで認識する場合には、三次元モデルデータから奥行きを計算して、学習データとしてデプスマップを生成すればよい。較正結果記憶部Ｄ１１３０に記憶されている較正結果とは、ロボット座標とカメラ座標との相対的位置関係を表す変換行列、および、カメラのレンズ歪みパラメータ、カメラ座標と画像座標との対応を表すための射影行列、などを含む。これらの較正方法に関しては既知の手法を用いればよく、ここで詳細には説明しない。
【００７２】
認識器生成部Ｓ１０９０は、学習データ生成部Ｓ１０８０により生成された学習データを用いて、認識器を生成する。認識器は、限定姿勢マップのそれぞれの領域に対して各々別の限定姿勢を持つ認識器を生成してもよいし、すべての作業領域において作業可能な限定姿勢を選択して認識器を生成してもよい。その際、生成される認識器における推定姿勢バリエーションであるクラス数は、限定姿勢として得られている姿勢数となる。
【００７３】
認識器に用いられる手法は既存のどのようなものでもよく、本発明はどのような手法によっても限定されるものではない。例えば、公知技術であるＳＶＭ（Ｓｕｐｐｏｒｔ  Ｖｅｃｔｏｒ  Ｍａｃｈｉｎｅ）やＲａｎｄｏｍｉｚｅｄ  Ｔｒｅｅによる識別器としてもよい。例えば認識器にＳＶＭを利用する場合、取得すべき位置姿勢が限定されることにより、学習するクラス数が少なくなることになる。その場合、学習に利用しなければならない学習データの数が減るため、学習の高速化が期待できる。また、クラス識別境界が減ることによりサポートベクトル数が少なくなることが期待でき、よりスパースな表現が可能となり、従って認識器のサイズ縮小と実作業時の検出速度および検出精度の向上が期待できる。
【００７４】
限定姿勢マップ１２３１における、それぞれの領域１２３４に対する認識器を別々に生成する場合には、学習データ生成部Ｓ１０８０により生成された学習データのうち、各領域において作業可能となる限定姿勢の学習データを選択して各領域用の認識器を生成する。例えば図１２（ｃ）に示されるように、限定姿勢の組み合わせパターンが５つの領域に分けられる場合、５つの領域のそれぞれに対してそれぞれの限定姿勢の学習データを利用し、５つの認識器が生成される。
【００７５】
すべての作業領域において作業可能な限定姿勢を選択する場合、例えば図１２（ｃ）のような場合には、全領域の限定姿勢に関してＡＮＤをとることにより、作業領域すべてにおいて作業可能な姿勢を得ることができる。そして全領域のＡＮＤで得られる限定領域に関する学習データを利用して一つの認識器を生成すればよい。認識器生成部Ｓ１０９０により生成された認識器は、認識器記憶部Ｄ１１００に記憶される。以上により、オフラインにおける処理は終了となる。
【００７６】
以降、オンラインにおける処理について説明する。オンラインにおける実作業時には、認識処理部Ｓ１１１０は、まず撮像部Ｒ３００に撮像信号を送り、作業領域の画像が撮像される。撮像された画像データは、認識処理部Ｓ１１１０に送信され、認識処理部Ｓ１１１０は、認識器記憶部Ｄ１１００に記憶されている認識器を使って、被作業物体Ａ４００の位置姿勢を認識する。領域ごとの認識器を用意している場合には、探索時の画像座標位置から認識器を選択する。認識処理部Ｓ１１１０により認識された被作業物体Ａ４００の位置および姿勢は、作業命令生成部Ｓ１１２０へと送られる。
【００７７】
作業命令生成部Ｓ１１２０は、認識処理部Ｓ１１１０から取得された被作業物体Ａ４００の推定位置姿勢から、被作業物体Ａ４００への作業を行う命令を生成する。較正結果記憶部Ｄ１１３０から取得されるカメラとロボットとの間の相対位置関係から、ロボットの目標位置が設定され、その目標位置はロボット命令としてエンコードされる。エンコードされたロボット命令は、ロボット制御部Ｒ２１０へと送信される。
【００７８】
ロボット制御部Ｒ２１０は、作業命令生成部Ｓ１１２０から受信した命令をデコードし、ロボットアームＲ２２０を動作させ、これによりロボットシステムが被作業物体Ａ４００に対して作業を行うことになる。
【００７９】
本実施形態によれば、姿勢自由度の大きな被作業物体に対して、ロボットアームの作業可能性に基づいて認識すべき被作業物体の姿勢を限定することができる。そのため、実作業で利用される認識器のメモリ量を削減し、対象物体検出時の認識処理時間を短縮することができ、認識精度の向上が期待できる。
【００８０】
（第２実施形態）
第１実施形態では、学習データ生成部Ｓ１０８０により生成される学習データは、三次元モデルデータから生成されるデータとしたが、本発明における学習データはこれに限定されない。学習データ生成部Ｓ１０８０により生成される学習データは、撮像部Ｒ３００を用いて撮像された実写画像でもよい。図１４を参照して、実写による学習データ生成を行う場合の装置構成を説明する。
【００８１】
学習データ生成部Ｓ１０８０および学習画像記憶部Ｄ１１４０以外の構成および処理内容は第１実施形態と同様であるため、これらの処理部以外の説明は省略する。
【００８２】
学習データ生成部Ｓ１０８０は、あらかじめ撮像部Ｒ３００を用いて、対象物体に関する複数視点ｖ（ｖ＝１、…、Ｖ）から得られる被作業物体の実写画像Ｉｖを取得し、学習画像記憶部Ｄ１１４０に記憶しておく。複数視点ｖの撮像間隔は、姿勢設定部Ｓ１０１０により生成された姿勢パターンの粒度よりも細かくするとよい。これら被作業物体画像の取得の際には、撮像部Ｒ３００はオンラインの実作業時と同じ設定であるとよいが、必ずしも同じ設定である必要はない。
【００８３】
画像取得後、学習データ生成部Ｓ１０８０は、まず、ＣＡＤデータが記憶されたデータ記憶部Ｄ１０３０から被作業物体Ａ４００の三次元モデルを取得する。そして、その三次元モデルに基づいて、各視点から得られた学習画像における画像座標とカメラ座標とを対応付ける。学習データ生成部Ｓ１０８０は、学習画像記憶部Ｄ１１４０から読み出された学習画像Ｉｖにおける被作業物体のカメラ座標空間における位置姿勢を、手動もしくは公知技術によるトラッキングツールなどを使ったマッチング処理によって算出する。これにより学習画像における被作業物体Ａ４００のカメラ座標空間における位置Ｘｖと姿勢θｖとが求まり、ＣＡＤデータを透視投影することにより画像上における被作業物体領域が得られる。画像上の被作業物体Ａ４００の物体座標系Ｃ１０２の中心で位置を正規化し、被作業物体Ａ４００の領域を抜き出して学習画像として用いる。
【００８４】
得られた学習画像データに対して、設定部Ｓ１０７０により算出された限定姿勢θｊに最も近い姿勢である画像Ｉｖを、姿勢θｊの学習画像として扱う。このとき、θｊをθｖとして更新する。このようにして割り当てられた学習画像を学習データとして、認識器生成部Ｓ１０９０が認識器の学習を行う。
【００８５】
本実施形態によれば、姿勢自由度の大きな被作業物体に対して、ロボットアームの作業可能性に基づいて認識すべき被作業物体の姿勢を限定することができる。そのため、実作業で利用される認識器のメモリ量を削減し、対象物体検出時の認識処理時間を短縮することができ、認識精度の向上が期待できる。
【００８６】
（第３実施形態）
第３実施形態では、第１実施形態および第２実施形態とは異なり、取得部Ｓ１０６０による処理の全てが、計算機Ａ１００内部における演算により行われるという構成に限定されない。取得部Ｓ１０６０による処理は、実際にロボットアームＲ２２０を動作させることによって実現される構成であってもよい。
【００８７】
図１９は、ロボットアームＲ２２０を実際に動作させることにより、位置姿勢の範囲を取得する場合の情報処理装置Ｒ１００の機能構成である。取得部Ｓ１０６０以外の各処理部の機能は第１実施形態もしくは第２実施形態と同様であるため、取得部Ｓ１０６０以外の説明は省略する。
【００８８】
取得部Ｓ１０６０は、姿勢設定部Ｓ１０１０により設定された姿勢集合Θと、作業状態設定部Ｓ１０２０により設定された相対位置ｐおよび相対姿勢ＥＨｐと、仮想位置設定部Ｓ１０４０により設定された仮想位置Ｘｋとに基づいて、検出すべき被作業物体Ａ４００の姿勢を算出する。検出すべき被作業物体Ａ４００の姿勢は、ロボットアーム先端部（作業部）が作業を行い得る位置姿勢を考慮して算出される。
【００８９】
まず、仮想位置Ｘｋに被作業物体Ａ４００の物体座標系原点を配置することを仮定する。作業可能かどうかを判定する対象となる姿勢θｊの姿勢行列をＥｊとすると、ロボット座標系におけるロボットアーム先端部（作業部）の目標位置ＱＴおよび目標姿勢ＥＴは以下の式（２０）および式（２１）のように表される。
【００９０】
【数２０】
0005835926.tif 000021
【００９１】
【数２１】
0005835926.tif 000022
【００９２】
取得部Ｓ１０６０は、目標位置ＱＴおよび目標姿勢ＥＴへとロボットアームＲ２２０を動作させる命令を、ロボット制御部Ｒ２１０へ送る。ロボット制御部Ｒ２１０が目標位置ＱＴおよび目標姿勢ＥＴへとロボットアームＲ２２０を移動させることができた場合、取得部Ｓ１０６０は姿勢θｊを作業可能な姿勢であると判定する。一方、目標位置ＱＴおよび目標姿勢ＥＴへとロボットアームＲ２２０を移動させることができなかった場合、すなわちロボットアームの移動中にエラーが発生した場合は、θｊを作業不可能な姿勢であると判定する。
【００９３】
本実施形態によれば、姿勢自由度の大きな被作業物体に対して、ロボットアームの作業可能性に基づいて認識すべき被作業物体の姿勢を限定することができる。そのため、実作業で利用される認識器のメモリ量を削減し、対象物体検出時の認識処理時間を短縮することができ、認識精度の向上が期待できる。
【００９４】
（第４実施形態）
本発明は、第１実施形態で説明した構成に限定されるものではなく、さまざまな構成を取り得る。第１実施形態における姿勢設定部Ｓ１０１０による処理は必ずしもその処理時に計算されなくてもよい。例えば、図１５（ａ）に示した構成のように、姿勢設定部Ｓ１０１０の代わりに姿勢記憶部Ｄ１０１０を設けてもよい。そして、あらかじめ設定された所定の姿勢集合を姿勢記憶部Ｄ１０１０に記憶しておき、取得部Ｓ１０６０が姿勢記憶部Ｄ１０１０から姿勢集合を読み出してもよい。
【００９５】
また、第１実施形態における仮想位置設定部Ｓ１０４０による処理も同様に、必ずしもその処理時に計算されなくてもよい。例えば、図１５（ｂ）に示した構成のように、仮想位置設定部Ｓ１０４０の代わりに仮想位置記憶部Ｄ１０４０を設けてもよい。そして、あらかじめ設定された複数の仮想位置を仮想位置記憶部Ｄ１０４０に記憶しておき、取得部Ｓ１０６０が仮想位置記憶部Ｄ１０４０から仮想位置を読み出してもよい。
【００９６】
また、第１実施形態における作業状態設定部Ｓ１０２０による処理も同様にして、必ずしもユーザによりインタフェースを介して設定されなくてもよい。例えば、図１５（ｃ）に示した構成のように、作業状態設定部Ｓ１０２０の代わりに作業状態記憶部Ｄ１０２０を設けてもよい。ＣＡＤなどによって設定された、作業時の被作業物体とエンドエフェクタの相対位置姿勢関係を作業状態記憶部Ｄ１０２０に記憶しておき、取得部Ｓ１０６０が作業状態記憶部Ｄ１０２０から相対位置姿勢関係を読み出すようにしてもよい。
【００９７】
なお、姿勢設定部Ｓ１０１０もしくは姿勢記憶部Ｄ１０１０、仮想位置設定部Ｓ１０４０もしくは仮想位置記憶部Ｄ１０４０、作業状態設定部Ｓ１０２０もしくは作業状態記憶部Ｄ１０２０の組み合わせバリエーションは自由である。そのため、図示しないさまざまな構成が可能である。
【００９８】
さらに、設定部Ｓ１０７０により得られた限定姿勢マップを可視化して確認するため、図１７に示したように、限定姿勢マップを表示する表示部Ｓ１１５０を装置構成に加えてもよい。
【００９９】
図１６は、表示部Ｓ１１５０による限定姿勢マップの表示例を示したものであり、表示部Ｓ１１５０により表示されたウィンドウ１６０１は限定姿勢を表示する。表示部Ｓ１１５０は、ユーザが画面上の作業領域部分を選択した領域において、設定部Ｓ１０７０により選択された幾何情報の範囲の内容を、測地ドーム４０１と、コンピュータグラフィックスによる被作業物体Ａ４００の見え方と、を用いて表示する。これにより、ユーザは設定された限定姿勢を目視で確認することができ、設定ミスやデータ登録ミスなどを、実作業の前に確認することができる。
【０１００】
また、第１、第２、および第３実施形態に示した情報処理装置Ｒ１００のオフラインにおける処理は、一連の情報処理方法として実現することも可能である。図２０のフローチャートを参照して、処理の手順を説明する。
【０１０１】
姿勢設定工程Ｐ１０１０において、姿勢設定部Ｓ１０１０は、認識器で扱う可能性のある姿勢集合を生成する。
【０１０２】
作業状態設定工程Ｐ１０２０において、作業状態設定部Ｓ１０２０は、被作業物体Ａ４００に対するエンドエフェクタＡ２３０による作業状態を設定する。
【０１０３】
仮想位置設定工程Ｐ１０４０において、仮想位置設定部Ｓ１０４０は、作業領域内の仮想位置を設定する。
【０１０４】
取得工程Ｐ１０６０において、取得部Ｓ１０６０は、ロボットアーム先端部（作業部）が取り得る位置姿勢を考慮した、検出すべき被作業物体Ａ４００の姿勢を算出する。
【０１０５】
設定工程Ｐ１０７０において、設定部Ｓ１０７０は、認識器を生成するために必要な限定姿勢を設定し、被作業物体Ａ４００の位置姿勢の範囲を設定する。
【０１０６】
学習データ生成工程Ｐ１０８０において、学習データ生成部Ｓ１０８０は、被作業物体Ａ４００の限定姿勢における学習データを生成する。
【０１０７】
認識器生成工程Ｐ１０９０において、認識器生成部Ｓ１０９０は、学習データ生成部Ｓ１０８０により生成された学習データを用いて、認識器を生成する。以上で処理が終了する。
【０１０８】
本実施形態によれば、姿勢自由度の大きな被作業物体に対して、ロボットアームの作業可能性に基づいて認識すべき被作業物体の姿勢を限定することができる。そのため、実作業で利用される認識器のメモリ量を削減し、対象物体検出時の認識処理時間を短縮することができ、認識精度の向上が期待できる。
【０１０９】
（その他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005835926.tif 000023
【図３】
0005835926.tif 000024
【図１４】
0005835926.tif 000025
【図１５】
0005835926.tif 000026
【図１７】
0005835926.tif 000027
【図１９】
0005835926.tif 000028
【図２０】
0005835926.tif 000029
【図２１】
0005835926.tif 000030
【図２】
0005835926.tif 000031
【図４】
0005835926.tif 000032
【図５】
0005835926.tif 000033
【図６】
0005835926.tif 000034
【図７】
0005835926.tif 000035
【図８】
0005835926.tif 000036
【図９】
0005835926.tif 000037
【図１０】
0005835926.tif 000038
【図１１】
0005835926.tif 000039
【図１２】
0005835926.tif 000040
【図１３】
0005835926.tif 000041
【図１６】
0005835926.tif 000042
【図１８】
0005835926.tif 000043