(57)【要約】【課題】  山積みされたワークの中から三次元位置姿勢を認識した回転対称形状のワークに対して、ユーザが教示した把持位置姿勢に基づいてハンドが把持を行う適切な位置姿勢を算出するための技術を提供すること。【解決手段】  少なくとも１つの軸に対して回転対称となる形状を有する物体を把持するために把持部がとる姿勢として予め指定された姿勢を基準姿勢として取得する。把持部が物体を把持するときの把持部と物体との相対的な位置姿勢を教示位置姿勢として取得する。画像から物体の位置姿勢を認識し、該認識された位置姿勢と教示位置姿勢とに基づいて、把持部が認識した物体を把持するための初期位置と初期姿勢とを導出する。導出された初期姿勢と基準姿勢とに基づいて、物体を把持する把持姿勢を決定し、該把持姿勢と初期位置とに基づいて、把持部が物体を把持する把持位置姿勢を決定する。【選択図】  図１
2015085475.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つの軸に対して回転対称となる形状を有する物体を把持するために把持部がとる姿勢として予め指定された姿勢を基準姿勢として取得する手段と、
前記把持部が前記物体を把持するときの前記把持部と前記物体との相対的な位置姿勢を教示位置姿勢として取得する取得手段と、
前記物体が含まれる画像から前記物体の位置姿勢を認識し、該認識された位置姿勢と前記教示位置姿勢とに基づいて、前記把持部が前記認識した物体を把持するための初期位置と初期姿勢とを導出する導出手段と、
前記導出された初期姿勢と前記基準姿勢とに基づいて、前記物体を把持する把持姿勢を決定し、該決定された把持姿勢と前記初期位置とに基づいて、前記把持部が前記物体を把持する把持位置姿勢を決定する決定手段と
を備えることを特徴とする情報処理装置。
【請求項２】
前記決定手段は、前記認識された物体を前記軸周りに回転させて得られる回転姿勢を有する該物体を前記把持部が把持する際の姿勢を第２の把持姿勢として導出する第２の導出手段を備え、
前記初期姿勢及び前記第２の把持姿勢のそれぞれと、前記基準姿勢と、の差分値に基づいて、前記把持姿勢を決定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記決定手段は、前記初期姿勢及び前記第２の把持姿勢のうち、最も小さい差分値に対応する姿勢を前記把持姿勢として決定することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記物体が、１軸に対してのみ回転対称となる回転体である場合、
前記決定手段は、前記初期姿勢と前記基準姿勢との差分値が規定の値よりも大きい場合に、前記基準姿勢において把持可能な物体の姿勢を把持可能な姿勢として取得し、該把持可能な姿勢と前記認識した物体の姿勢とに基づいて、前記物体を把持する把持姿勢を決定することを特徴とする請求項２に記載の情報処理装置。
【請求項５】
前記物体が、前記軸回りに３６０／Ｎ度（Ｎは２以上の整数）回転させると自らと重なる物体である場合、
前記決定手段は、
前記物体の認識された姿勢を前記軸周りに３６０／Ｎ度ごとに回転させた回転姿勢を求め、該求めたそれぞれの回転姿勢について、該回転姿勢を有する前記物体を把持するための前記把持部の姿勢を前記教示位置姿勢を用いて求め、該求めた前記把持部のそれぞれの姿勢のうち前記基準姿勢に最も近い姿勢を、前記把持姿勢として決定する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項６】
前記軸が、一方の軸と、該一方の軸と直交する他方の軸と、から成る場合、
前記決定手段は、前記一方の軸及び前記他方の軸のそれぞれについて前記回転姿勢を求め、該求めたそれぞれの回転姿勢について、該回転姿勢を有する前記物体を把持するための前記把持部の姿勢を前記教示位置姿勢を用いて求め、該求めた前記把持部のそれぞれの姿勢のうち前記基準姿勢に最も近い姿勢を、前記把持姿勢として決定する
ことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記物体が、前記軸回りに３６０／Ｎ度（Ｎは２以上の整数）回転させると自らと重り且つ前記軸に直交する他方の軸回りに回転させたときに見えが変化しない物体である場合、
前記決定手段は、
前記物体の認識された姿勢を前記形状に応じて決まる回転角ごとに回転させた回転姿勢を求め、前記把持姿勢の前記把持部が把持可能な物体の姿勢を、該姿勢と該把持姿勢に対応する前記回転姿勢との差分量を用いて変換し、該変換した姿勢の前記物体を把持可能な前記把持部の姿勢を、前記把持姿勢とする
ことを特徴とする請求項１に記載の情報処理装置。
【請求項８】
前記決定手段は、前記初期姿勢と前記基準姿勢との差分値を導出し、該差分値が規定値よりも大きい場合に、前記基準姿勢を更新することを特徴とする請求項１に記載の情報処理装置。
【請求項９】
前記物体の回転対称に関する情報が操作部を介してユーザにより入力されることを特徴とする請求項１乃至８の何れか１項に記載の情報処理装置。
【請求項１０】
更に、
前記決定手段によって決定された把持位置姿勢を出力する出力手段を備えることを特徴とする請求項１乃至９の何れか１項に記載の情報処理装置。
【請求項１１】
更に、
前記出力手段が出力した把持位置姿勢に前記把持部を移動させる手段を備えることを特徴とする請求項１０に記載の情報処理装置。
【請求項１２】
情報処理装置が行う情報処理方法であって、
前記情報処理装置の基準姿勢を取得する手段が、少なくとも１つの軸に対して回転対称となる形状を有する物体を把持するために把持部がとる姿勢として予め指定された姿勢を基準姿勢として取得する工程と、
前記情報処理装置の取得手段が、前記把持部が前記物体を把持するときの前記把持部と前記物体との相対的な位置姿勢を教示位置姿勢として取得する取得工程と、
前記情報処理装置の導出手段が、前記物体が含まれる画像から前記物体の位置姿勢を認識し、該認識された位置姿勢と前記教示位置姿勢とに基づいて、前記把持部が前記認識した物体を把持するための初期位置と初期姿勢とを導出する導出工程と、
前記情報処理装置の決定手段が、前記導出された初期姿勢と前記基準姿勢とに基づいて、前記物体を把持する把持姿勢を決定し、該決定された把持姿勢と前記初期位置とに基づいて、前記把持部が前記物体を把持する把持位置姿勢を決定する決定工程と
を備えることを特徴とする情報処理方法。
【請求項１３】
コンピュータを、請求項１乃至１１の何れか１項に記載の情報処理装置の各手段として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、特に、３次元の位置姿勢を認識した回転対称形状のワークに対してロボットが把持を行うためのハンドの位置姿勢を算出するための技術に関するものである。
【背景技術】
【０００２】
工場などの生産ラインにおいて、山積みされたワークの中から一個体をビジョンシステムを用いて特定し、その三次元位置姿勢を認識することで、ロボットに取り付けたハンドにより該一個体の把持を行う、山積みピッキング技術が近年開発されている。山積みされたワークは多様な姿勢をとることとなるため、このビジョンシステムにおいては、ワークの三次元空間内での位置とともに３軸姿勢も求めることが行われている。これに加えて、認識したワークに対してハンドをどのような位置、姿勢にアプローチして把持を行うか、ということを教示しておき、これら２つの位置姿勢に基づいてハンドを動作させることで、山積み中の任意の位置姿勢のワークのピッキングを行う。
【０００３】
上記技術に関連して特許文献１では、ビジョンシステムにより、直方体、円柱、球といった単純形状のワークを認識してロボットハンドで把持を行う方法が記載されている。この方法ではまず、撮影した画像と単純形状（直方体、円柱、球）とをあてはめ、あてはまった形状の主軸の向き、大きさ、位置を算出する。さらに、これらの情報からロボットハンドで把持を行う位置姿勢の算出方法を事前にルール化しておき、ルールに基づいて把持位置姿勢を算出することで任意位置姿勢のワークの把持を行う。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開2006-130580号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述の山積みピッキング技術において、ワーク形状が回転対称性をもつ場合には、ビジョンシステムから観測できる情報が同一となる姿勢が複数存在する。この場合、ビジョンシステムはそれらの姿勢を区別することができないため、ある姿勢のワークに対して複数の解を出力してしまう。これら複数の解のいずれかに対して、教示しておいた把持位置姿勢に基づいて把持を行う場合、アプローチするハンドの位置姿勢はビジョンシステムで認識した三次元位置姿勢に依存する。そのため、教示情報に基づいて算出したハンドのアプローチ方向が教示時とは反転してしまい、実際には把持可能なワークを把持不可と判定してしまうケースが発生する問題がある。
【０００６】
これに対して、特許文献１の方法では、ワークの姿勢情報に関して３軸姿勢の算出は行わず、単純形状の主軸の向きのみを算出し、算出した主軸の向きから事前ルール化された算出方法によりハンドのアプローチする姿勢を決定している。そのため、回転対称物体を対象とした場合においても、３軸姿勢を求めることにより複数の解を出力してしまう問題は回避される。しかしながら、この方法は、ワークが単純形状であることを前提に、ハンド形状やハンド座標系の設定、ワーク形状に応じて、ワークを把持するハンドの位置姿勢の算出方法があらかじめ個別にプログラムされているため、その方法でしか把持できない。そのため、ワークの重心位置に対して形状が非対称であるような場合に、その形状特性に応じて把持位置をずらすなど、ユーザが把持位置姿勢を個別に設定できないという問題がある。
【０００７】
本発明はこのような課題を鑑みてなされたものであり、山積みされたワークの中から三次元位置姿勢を認識した回転対称形状のワークに対して、ユーザが教示した把持位置姿勢に基づいてハンドが把持を行う適切な位置姿勢を算出するための技術を提供する。
【課題を解決するための手段】
【０００８】
本発明の一様態は、少なくとも１つの軸に対して回転対称となる形状を有する物体を把持するために把持部がとる姿勢として予め指定された姿勢を基準姿勢として取得する手段と、前記把持部が前記物体を把持するときの前記把持部と前記物体との相対的な位置姿勢を教示位置姿勢として取得する取得手段と、前記物体が含まれる画像から前記物体の位置姿勢を認識し、該認識された位置姿勢と前記教示位置姿勢とに基づいて、前記把持部が前記認識した物体を把持するための初期位置と初期姿勢とを導出する導出手段と、前記導出された初期姿勢と前記基準姿勢とに基づいて、前記物体を把持する把持姿勢を決定し、該決定された把持姿勢と前記初期位置とに基づいて、前記把持部が前記物体を把持する把持位置姿勢を決定する決定手段とを備えることを特徴とする。
【発明の効果】
【０００９】
本発明の構成によれば、山積みされたワークの中から三次元位置姿勢を認識した回転対称形状のワークに対して、ユーザが教示した把持位置姿勢に基づいてハンドが把持を行う適切な位置姿勢を算出することができる。
【図面の簡単な説明】
【００１０】
【図１】把持位置姿勢算出装置１の機能構成例を示すブロック図。
【図２】回転情報を入力するためのＧＵＩの表示例を示す図。
【図３】把持位置姿勢算出装置１が行う処理のフローチャート。
【図４】ハンドでワークを把持する際の位置姿勢の教示の例を示す図。
【図５】ハンドの初期位置姿勢を説明する図。
【図６】把持位置姿勢算出装置１が行う処理のフローチャート。
【図７】ステップＳ６０８における処理を説明する図。
【図８】把持位置姿勢算出装置１が行う処理のフローチャート。
【図９】把持位置姿勢算出装置１に適用可能な装置のハードウェア構成例を示すブロック図。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載の構成の具体的な実施例の１つである。
【００１２】
［第１の実施形態］
本実施形態では、回転対称となる形状（回転対称形状）を有する物体（ワーク）を把持部に把持させるべく、該把持部の位置姿勢を算出することを目的とする。ここで、回転対称形状には、ある軸回りに回転させたときに見えが全く変化しない「回転体」と、３６０／Ｎ度（Ｎは２以上の整数）回転させると自らと重なる「Ｎ回対称」とがある。このことを踏まえ、まず回転対称形状を以下の５つに分類する。
（ａ）  １軸に対するＮ回対称：角錐など
（ｂ）  １軸に対する回転体  ：円錐など
（ｃ）  直交する２軸のうち１軸（一方の軸）に対して２回対称、かつもう１軸（他方の軸）に対して回転体：円柱など
（ｄ）  直交する２軸のうち１軸に対して２回対称、かつもう１軸に対してＮ回対称：角柱など
（ｅ）  直交する２軸に対する回転体：球
本実施形態では、上記の（ａ）〜（ｅ）のうち（ａ）、すなわち、１軸に対するＮ回対称性を有するワークを把持部で把持するために適切な把持位置姿勢を算出する方法について説明する。具体的には、ワークの３次元位置姿勢を認識後、ワークのＮ回対称性に基づいてワークを軸回りに回転させた対称姿勢の各ワークに対し、教示された位置姿勢に基づいて把持部の位置姿勢をそれぞれ算出する。そして、算出したそれぞれの位置姿勢のうち、あらかじめ設定（指定）しておいた基準姿勢にもっとも近いものを、最終的な把持部の位置姿勢として選択する。
【００１３】
先ず、ワークを把持するための把持部の把持位置姿勢を算出する情報処理装置として機能する把持位置姿勢算出装置１の機能構成例について、図１のブロック図を用いて説明する。
【００１４】
回転情報入力部１１は、ワークの回転対称形状を表現するための情報である回転情報を入力し、該入力した回転情報を、後段の把持位置姿勢決定部１５に対して送出する。具体的には、ワークの回転対称性を規定する軸の方向と、ワークがその軸に対して回転体もしくはＮ回対称のいずれであるかを示す情報と、Ｎ回対称の場合には対称数を特定する数Ｎと、を一組にして、必要組数だけ保持した情報を回転情報として入力する。
【００１５】
回転情報の入力方法については特定の方法に限るものではなく、外部装置に保持されている回転情報を取得するようにしても構わないし、ユーザが不図示の操作部を操作して入力したものを取得するようにしても構わない。ここでは一例として、ユーザが把持位置姿勢算出装置１が有する不図示の表示部に表示されたＧＵＩ（グラフィカルユーザインターフェース）を見ながら不図示の操作部を操作して回転情報を入力する入力方法について説明する。この場合、回転情報入力部１１は、このようにしてユーザ操作により入力された回転情報を取得することになる。
【００１６】
回転情報を入力するためのＧＵＩの表示例を図２に示す。より詳しくは、上記の（ａ）〜（ｅ）のそれぞれに該当するワークに対する回転情報を入力するためのＧＵＩの表示例を図２（ａ）〜（ｅ）に示す。説明簡略化のため、ワーク形状の回転対称性を規定する各軸はワーク形状を基準とした座標系（ワーク中の１点を原点とし、該原点で互いに直交する３軸をそれぞれｘ、ｙ、ｙ軸とする座標系：ワーク座標系）におけるｘ、ｙ、ｚ軸の何れかに一致するものとする。ただし、ワーク座標系において回転軸の向きを特定できるのであれば、回転軸は任意の軸であって構わない。
【００１７】
ＧＵＩにはワークの形状とワーク形状を基準としたワーク座標系とを表示する。合わせて、ワーク形状の回転対称性を規定する回転軸を選択するためのチェックボックスを表示する。ここで、ワーク形状に基づき、ワーク座標系のｘ、ｙ、ｚ軸の中からワークの回転軸を選択する。なお、軸は最大２つまで選択可能とする。さらに、選択した軸に関連づいたラジオボタンにより回転体もしくはＮ回対称のいずれかを選択する。ラジオボタンは軸が選択された場合にのみ有効化するのが望ましい。さらに、Ｎ回対称を選択した場合には、選択した軸に関連づいたウィンドウにＮの値を入力する。このウィンドウに関してもＮ回対称が選択された場合にのみ有効化するのが望ましい。例えば図２（ａ）の場合、このワークはＺ軸周りにＮ（Ｎ＝６）回対称となる形状を有しているので、Ｚ軸に対応するチェックボックスを選択し（チェックを入れ）、Ｎ回対称に対応するラジオボタンを選択し、ウィンドウには「６」を入力している。
【００１８】
そして回転情報入力部１１は、このＧＵＩで入力された情報から、ワークのｘ、ｙ、ｚ軸のそれぞれに対する回転対称性をそれぞれxRot、yRot、zRotという３パラメータで表現し、ワークの回転情報として入力する。具体的には、その軸のチェックボックスが無効な場合には、ワークはその軸回りに回転対称性を有していないものとして、該軸に対応するパラメータに１を設定する。一方、チェックボックスが有効な場合において、回転体が選択されている場合には、該軸に対応するパラメータに０を設定し、Ｎ回対称が選択されている場合には、ウィンドウに入力されたＮの値を、該軸に対応するパラメータに設定する。例えば図２（ａ）の場合、ｘ軸及びｙ軸についてはチェックボックスが無効となっているため、xRot＝yRot＝１とする。また、Ｚ軸についてはチェックボックスが有効となっており且つＮ回対称のラジオボタンが選択され且つウィンドウには６が入力されているので、zRot＝６とする。然るにこの場合、回転情報入力部１１は、｛xRot、yRot、zRot｝＝｛１，１，６｝を回転情報として入力することになる。
【００１９】
なお、ワークが２軸に対する回転対称性を持つ場合、軸の選択方法は複数考えられる。たとえば図２（ｃ）に示すワークは、ｘ軸に対して２回対称であると同時に、Ｙ軸に対して２回対称ともいえる。したがって、このようなケースにおいてはどちらにチェックを入れてもよい。あらゆる形状のワークに対して回転対称性は最大２軸あれば表現可能なため、本実施形態では最大２軸まで選択可能としたが、３軸を選択可能としてもかまわない。また、回転体もしくはＮ回対称を選択するために、本実施形態ではラジオボタンを利用しているが、チェックボックスを利用してもよいし、その他のＧＵＩを用いてもよい。またＮ回対称のＮの値ではなく、Ｎ回対称となる回転角度（３６０／Ｎ）を入力させてもよい。その他、回転対称性を表現する軸の数と各軸の向き、各軸に対する回転体か否か、回転体でない軸に対しては回転対称数を特定可能な数値、を入力可能であれば、回転情報の入力方法はいかなる方法であってもかまわない。
【００２０】
教示位置姿勢入力部１２は、ロボットアームの先端に取り付けた把持部（ハンド）でワークを把持する際の、ワークとハンドとの相対的な位置姿勢（相対位置姿勢）を表すパラメータを教示位置姿勢として入力する。教示位置姿勢には、たとえば、ハンドおよびワークの形状モデルを仮想環境上で操作して把持の際の幾何関係と同様に配置し、このときの相対位置姿勢を取得するなどして、事前に設定しておいたものを利用する。あるいは実環境に配置したワークの３次元位置姿勢をビジョンシステムで認識後、ハンドがそのワークを把持できる位置姿勢にロボットアームを移動させ、そのときのハンドの位置姿勢を取得することで両者の相対位置姿勢を算出しておき、利用してもよい。その他、把持時のハンドとワークとの相対位置姿勢を決定できる方法であれば、教示位置姿勢の設定はいかなる方法で実施してもよい。
【００２１】
基準姿勢入力部１３は、山積みのワークの中から認識した任意の位置姿勢のワークに対し、教示位置姿勢入力部１２が入力する教示位置姿勢に基づき、把持を行うハンドの位置姿勢を決定する際に、ハンドの姿勢を比較するための基準姿勢を入力する。基準姿勢には、ロボットアームが関節に無理なくワークを把持できるような理想的な姿勢を設定するのが望ましい。これに対して、把持位置姿勢の教示をロボットハンドとワークの実物を用いて実施した場合、教示時のハンドの姿勢を利用することができる。
【００２２】
ワーク認識部１４は、山積みされた多数のワークの中から１つのワーク（一個体）を検出する。そしてワーク認識部１４は、該検出したワークのロボット座標系（上記のロボットアームを有するロボット中の１点を原点とし、該原点で直交する３軸をそれぞれｘ、ｙ、ｚ軸とする座標系）における３次元位置姿勢を算出する。
【００２３】
まず、センサ座標系におけるワークの位置姿勢を算出する。本実施形態では距離センサを用いてワークに対する測定を行うことで、該ワークに対する距離画像及び濃淡画像を取得するものとする。然るに、この場合のセンサ座標系とは、距離センサ中の１点を原点とし、該原点で互いに直交する３軸をそれぞれｘ、ｙ、ｚ軸とする座標系となる。
【００２４】
まず、例えば、パターンマッチング等の公知技術によって、山積み中から一個体の検出及び大まかな位置姿勢を算出する。その後、算出したおおまかな位置姿勢から、ワークの三次元形状モデルと取得した画像とがフィットするように該三次元形状モデルの位置姿勢を補正することでワークの高精度な位置姿勢を算出する。ただし、センサ座標系におけるワークの位置姿勢の算出方法は他の方法であってもかまわない。
【００２５】
次に、算出したセンサ座標系におけるワークの位置姿勢を、事前にキャリブレーションにより求めておいた「距離センサ−ロボット間の位置姿勢」を用いて、ロボット座標系におけるワークの位置姿勢へと変換する。ここで、距離センサとロボットとの幾何関係は固定されているものとする。また、本実施形態では、距離センサは山積みワークの鉛直上方に固定するものとして説明を行ったが、距離センサはロボットアームに固定してもかまわない。
【００２６】
把持位置姿勢決定部１５は、回転情報入力部１１からの回転情報と、基準姿勢入力部１３からの基準姿勢と、ワーク認識部１４からの「ロボット座標系におけるワークの位置姿勢」と、教示位置姿勢入力部１２からの教示位置姿勢と、を受ける。そして把持位置姿勢決定部１５は、受けたこれらの情報を用いて、ハンドが基準姿勢に最も近い姿勢でワークを把持するような該ハンドの位置姿勢を、把持位置姿勢として決定する。具体的には、認識したワークに対して、形状の回転対称性を考慮し、教示時のハンド−ワーク間と同じ幾何関係となるハンドの姿勢の中で、基準姿勢に最も一致するように把持位置姿勢を決定する。
【００２７】
次に、把持位置姿勢算出装置１が、３次元位置姿勢を認識したワークに対してハンドが把持を行うための位置姿勢を算出するために行う処理について、同処理のフローチャートを示す図３を用いて説明する。
【００２８】
（ステップＳ２０１における処理について）
回転情報入力部１１は、上記のような回転情報を取得する。以下では具体例を挙げて説明するために、回転情報入力部１１は、図２（ａ）に示したワークについて図２（ａ）に示したＧＵＩを用いて設定した回転情報を取得したものとする。この場合、回転情報は上記の如く、｛xRot、yRot、zRot｝＝｛１，１，６｝となる。また、回転情報入力部１１は、回転情報中の各軸に対するパラメータ値のうち１以外の値を回転対称数として、変数Ｎに設定する。ここでは、回転情報中の各軸に対するパラメータ値のうち１以外の値は「６」であるので、変数Ｎに値「６」を設定する。
【００２９】
（ステップＳ２０２における処理について）
教示位置姿勢入力部１２は、ワークとハンドとの間の相対位置姿勢を表す６自由度パラメータを教示位置姿勢として入力する。図４に、ハンドでワークを把持する際の位置姿勢の教示の例を示す。図４は、ビジョンシステムにより、ロボット座標系におけるワークの三次元位置姿勢を算出後、ロボットアーム先端に取り付けられたハンドによりワークを把持できる位置姿勢までロボットを移動させて停止した状態である。このときのロボット座標系におけるハンドの位置姿勢およびワークの位置姿勢から、両者の相対位置姿勢を教示位置姿勢として予め算出し、本装置内のメモリ若しくは本装置外のメモリに格納しておく。そしてステップＳ２０２では、教示位置姿勢入力部１２は、このメモリから教示位置姿勢を取得する。
【００３０】
ここで、ワーク座標系からハンド座標系（ハンド中の１点を原点とし、該原点で互いに直交する３軸をそれぞれｘ、ｙ、ｚ軸とする座標系）への姿勢変換を行う３×３の回転行列、位置変換を行う３列の並進ベクトルをそれぞれ、RWH、tWHとする。このとき、ワーク座標系XW＝[XW, YW, ZW]Tからハンド座標系XH＝[XH, YH, ZH]Tへの変換は、4×4行列TWHを用いて以下のように表すことができる。
【００３１】
XH'＝TWH XW'
ここで、XW'、XH'、TWHは以下のとおりである。
【００３２】
XW'＝[XW, YW, ZW,１]T 、XH'＝[XH, YH, ZH,１]T
【００３３】
【数１】
2015085475.tif 000003
【００３４】
以降では、TWHを教示位置姿勢、RWHを教示姿勢、tWHを教示位置、とそれぞれ呼称する場合がある。
【００３５】
（ステップＳ２０３における処理について）
基準姿勢入力部１３は、上記の基準姿勢を取得する。一般的に、ワークを把持するハンドの位置姿勢を教示する際には、ロボットアームが無理なく動作可能な位置姿勢にワークを設置して把持位置姿勢の教示を実施することが多い。そのため、本実施形態では、ステップＳ２０２の図４の状態でのロボット座標系におけるハンドの姿勢を基準姿勢として予め上記メモリ内に格納しておき、基準姿勢入力部１３はこのメモリに格納されている基準姿勢を取得する。ここで、ロボット座標系からハンド座標系への姿勢変換を表す３×３の回転行列をRRH’とし、このRRH’を基準姿勢として取得する。
【００３６】
（ステップＳ２０４における処理について）
ワーク認識部１４により、山積みされた多数のワークの中から把持対象となる一個体のワーク（把持対象ワーク）の検出を行い、ロボット座標系における把持対象ワークの位置姿勢を表す６つのパラメータを算出する。ここで算出した６つのパラメータに基づくロボット座標系からワーク座標系への座標変換において、姿勢を表す３つのパラメータで表現される３×３の回転行列をRRW、位置を表す３つのパラメータで表現される３列の並進ベクトルをtRWとする。このとき、ロボット座標系XR＝[XR, YR, ZR]Tからワーク座標系XW＝[XW, YW, ZW]Tへの変換は、4×4行列TRWを用いて以下のように表すことができる。
【００３７】
XW'＝TRW XR'
ここで、XW'、XR'は以下の通りである。
【００３８】
XW'＝[XW, YW, ZW,１]T、XR'＝ [XR, YR, ZR,１]T
【００３９】
【数２】
2015085475.tif 000004
【００４０】
以降では、TRWを認識位置姿勢、RRWを認識姿勢、tRWを認識位置、とそれぞれ呼称する場合がある。
【００４１】
（ステップＳ２０５における処理について）
把持位置姿勢決定部１５は、把持対象ワークを把持するためのハンドの位置姿勢を決定するための初期位置姿勢を算出（導出）する。ここで求める初期位置姿勢を表す４×４行列をTRHとすると、TRHは以下により算出することができる。
【００４２】
TRH＝TRW TWH
ここで、３×３の回転行列をRRH、３列の並進ベクトルをtRHとしてTRHは以下のように表現される。
【００４３】
【数３】
2015085475.tif 000005
【００４４】
以降では、tRHをハンドの初期位置、RRHをハンドの初期姿勢、とそれぞれ呼称する場合がある。図５（ａ）において、山積みの中から三次元位置姿勢を認識したワークに対して、ステップＳ２０２で入力された教示位置姿勢に基づいて算出したハンドの初期位置姿勢を図５（ｂ）に示す。
【００４５】
（ステップＳ２０６における処理について）
基準姿勢入力部１３が取得した基準姿勢と、ステップＳ２０５で求めたハンドの初期姿勢と、で姿勢の差分量（差分値）が大きい場合、ステップＳ２１１以降で基準姿勢と、後述する参照姿勢と、の比較を行う際の一致度の大小関係が反転する。このような場合、基準姿勢の再設定を行う必要がある。本ステップでは、把持位置姿勢決定部１５は、基準姿勢と初期姿勢との姿勢の差分量を求め、この差分量に基づいて、基準姿勢の再設定が必要か否かを判定する。具体的には、基準姿勢から初期姿勢へと変換を行うための３×３の回転行列Ｄを求める。さらに、両者の姿勢変換を回転軸と回転角とで表現したときの角度θを、回転行列Ｄから算出する。回転行列Ｄおよび回転角θは以下の式を計算することで算出することができる。
【００４６】
Ｄ＝(RRH)-1 RRH’
θ＝arccos((Trace(D)‐1) ／ 2 )
そして把持位置姿勢決定部１５は、θ＜９０度であるか否かの判定を行う。この判定の結果、θ＜９０度であれば、基準姿勢の再設定は必要無しと判断し、処理はステップＳ２０８に進む。一方、θ≧９０度（規定値以上）であれば、基準姿勢の再設定は必要と判断し、処理はステップＳ２０７に進む。
【００４７】
（ステップＳ２０７における処理について）
把持位置姿勢決定部１５は、基準姿勢の再設定を行う。具体的には、基準姿勢のハンドが、そのハンドに対する教示位置姿勢にあるワークの回転軸に対して対称となるような姿勢を求め、該求めた姿勢をハンドの基準姿勢として更新する。この処理を行うため、まず、教示位置姿勢の関係にあるハンドとワークとにおいて、ハンドの中心軸およびワークの回転軸（本実施形態ではｚ軸）に互いに直交する軸を変換軸として求める。ここでは、ハンドの中心軸はｚ軸とする。また、ワークの回転軸には、回転情報｛xRot、yRot、zRot｝＝｛１，１，６｝中の各軸に対するパラメータ値のうち１以外の値に対応する軸、すなわちｚ軸を利用する。そして、基準姿勢におけるハンドを、求めた変換軸回りに１８０度回転させた姿勢を算出し、該算出した姿勢により基準姿勢RRH'を更新する。
【００４８】
RRH' ＝ Rrev RRH' 
ここで、Rrevは変換軸回りに１８０度の回転を行う３×３の回転行列である。
【００４９】
（ステップＳ２０８における処理について）
把持位置姿勢決定部１５は、ハンドの基準姿勢との一致度が高い把持姿勢を決定するための初期化を行う。まず、姿勢の最大一致度を表す値をVmaxとし、小さな値で初期化する（たとえばVmax＝−１０００００）。次に、一致度が最大となる姿勢を最大一致姿勢とし、この姿勢を表す３×３の回転行列をRmaxとして、ハンドの初期姿勢で初期化する（Rmax＝RRH）。また、このときのワークの姿勢を表す３×３の回転行列をRmax_wとし、ワークの認識姿勢で初期化する（Rmax_w＝RRW）。さらに、回転軸回りにワークを回転させた回数をカウントするためのカウンタをｉとし、ｉ＝０として初期化する。
【００５０】
（ステップＳ２０９における処理について）
把持位置姿勢決定部１５は先ず、回転情報｛xRot、yRot、zRot｝＝｛１，１，６｝中の各軸に対するパラメータ値のうち１以外の値に対応する軸、即ちｚ軸を回転軸とする。そして、認識姿勢RRWを回転軸周りに（３６０／Ｎ×ｉ）度だけ回転させた姿勢（回転姿勢）を求め、該求めた姿勢に対して教示姿勢の関係にあるハンドの姿勢（参照姿勢）RRH_iを、該求めた姿勢を有する把持対象ワークを把持するための把持姿勢として求める。参照姿勢RRH_iは以下の式を計算することで算出することができる。
【００５１】
RRH_i ＝ RRW Ri RWH
ここで、Riは、ワークの回転軸回りに（３６０／Ｎ×ｉ）度回転を行う３×３の回転行列である。
【００５２】
（ステップＳ２１０における処理について）
把持位置姿勢決定部１５は、ステップＳ２０９で算出した参照姿勢RRH_iと基準姿勢RRH'との姿勢の一致度をViとして算出する。具体的には、両者の姿勢変換を行う回転行列Ｅから、姿勢変換を回転軸と回転角とで表現したときの角度φを求め、Vi＝cosθとして一致度を算出する。なお、回転行列Ｅおよび回転角φは以下の式を計算することで算出することができる。
【００５３】
E＝(RRH )-1 RRH' 
φ＝arccos((Trace(E)‐1) ／ 2 )
（ステップＳ２１１における処理について）
把持位置姿勢決定部１５は、ステップＳ２１０で算出した一致度ViとVmaxとの大小比較を行う。この大小比較の結果、Vmax＜Viであれば、処理はステップＳ２１２に進み、Vmax≧Viであれば、処理はステップＳ２１３に進む。
【００５４】
（ステップＳ２１２における処理について）
把持位置姿勢決定部１５は、姿勢の最大一致度Vmaxの値をViで更新する。また、最大一致姿勢Rmaxを参照姿勢RRH_iで更新する。さらに、Rmax_wをRRW Riで更新する。
【００５５】
（ステップＳ２１３における処理について）
把持位置姿勢決定部１５は、ｉ＜Ｎであるか否かを判断する。この判断結果、ｉ＜Ｎであれば、カウンタｉの値に１を加算してカウンタｉの値を更新し（ｉ←ｉ＋１）、処理はステップＳ２０９に戻る。一方、ｉ≧Ｎであれば、Ｎ回対称の全対称姿勢の中でもっとも一致度の高かった姿勢Rmax、初期位置tRHを用いて、把持対象ワークを把持するためのハンドの最終的な把持位置姿勢TRH_maxを、以下の式から算出する。  
【００５６】
【数４】
2015085475.tif 000006
【００５７】
把持位置姿勢決定部１５は、このようにして算出したハンドの最終的な把持位置姿勢TRH_maxを、適当な出力先に出力する。出力先については特定の出力先に限るものではない。すなわち、本装置内のメモリや外部のメモリに対して出力しても良いし、上記ハンドを有するロボットアームを制御する制御装置に対して出力しても良い。何れにせよ、ロボットアームを制御してハンドをこの最終的な把持位置姿勢TRH_maxに移動させることで、山積み中で認識した把持対象ワークを、教示位置姿勢と類似した姿勢で把持することが可能となる。なお、図５（ａ）で示した認識ワークに対して、本実施形態の一連の処理を行い、最終的に算出したハンドの把持位置姿勢を図５（ｃ）に示す。
【００５８】
このように、本実施形態では、山積み中で認識した「１軸に対するＮ回対称性を持つようなワーク」に対して、ハンドの適切な把持位置姿勢を算出する方法について述べた。具体的には、認識したワークの姿勢からワークを回転軸回りに３６０／Ｎ度ずつ回転させた場合のハンドの把持姿勢を参照姿勢としてそれぞれ算出し、その中から基準姿勢ともっとも一致するものを選択することで把持位置姿勢を決定した。
【００５９】
なお、本実施形態では、一致度として基準姿勢と参照姿勢との姿勢変換を表す回転角度のコサイン値を利用したが、角度の差分量をそのまま一致度としてもよい。あるいは、回転行列をオイラー角表現にしたときの各軸回りの回転量の合計値を一致度としてもよい。その他、姿勢の一致度を評価できるものであればこれら以外の指標を用いても構わない。  
【００６０】
また、ここでは基準姿勢としてロボット座標系におけるハンドの姿勢を用いたが、センサ座標系におけるハンドの姿勢を利用してもよいし、別途設定した座標系における姿勢を利用してもよい。
【００６１】
また、ここでは、最大一致姿勢として、認識したワークを回転軸回りに回転させた各姿勢に対するハンドの把持姿勢を更新した。これに対して認識したワークを回転軸回りに回転させた姿勢を最大一致姿勢として更新し、最後に、教示姿勢に基づいてハンドの姿勢を算出してもよい。
【００６２】
［第２の実施形態］
本実施形態では、上記の５種類の回転対称形状（ａ）〜（ｅ）のうち、（ｂ）、すなわち、１軸に対する回転体であるような形状のワークに対してハンドの適切な把持位置姿勢を算出する方法について述べる。具体的には、ワークの三次元位置姿勢を認識後、ワーク形状の回転体を規定する回転軸と教示された位置姿勢とに基づき、あらかじめ設定しておいた基準姿勢にもっとも近くなるような把持位置姿勢を直接算出する。
【００６３】
以下では、第１の実施形態との相違点について重点的に説明し、第１の実施形態と同様の部分については説明を省略する。本実施形態でも、図１に示した構成を有する把持位置姿勢算出装置１を用いて、ハンドの適切な把持位置姿勢を算出する。
【００６４】
把持位置姿勢算出装置１が、１軸に対する回転体であるような形状のワークに対してハンドの適切な把持位置姿勢を算出する為に行う処理について、同処理のフローチャートを示す図６を用いて説明する。
【００６５】
（ステップＳ６０１における処理について）
回転情報入力部１１は、上記のような回転情報を取得する。本実施形態では、回転情報入力部１１は、図２（ｂ）に示したワークについて図２（ｂ）に示したＧＵＩを用いて設定した回転情報を取得したものとする。この場合、回転情報は、｛xRot、yRot、zRot｝＝｛１，１，０｝となる。
【００６６】
（ステップＳ６０２〜ステップＳ６０７における処理について）
ステップＳ６０２〜ステップＳ６０７の各ステップにおける処理は、それぞれ、ステップＳ２０２〜ステップＳ２０７における処理と同様であるので、ステップＳ６０２〜ステップＳ６０７の各ステップにおける処理の説明は省略する。
【００６７】
（ステップＳ６０８における処理について）
把持位置姿勢決定部１５は、基準姿勢に最も近いハンドの位置姿勢を把持位置姿勢として算出する。本処理を、図７を用いて説明する。まず、基準姿勢RRH'と教示姿勢RWHとを用いて、基準姿勢におけるハンドにより把持可能な仮想のワーク（図７（ａ）の破線で示したワーク）の姿勢を基準ワーク姿勢RRW'として、以下の式を計算することで算出する。
【００６８】
RRW' ＝RRH'（RWH）-1
次に、基準ワーク姿勢RRW' とワークの認識姿勢RRWとの間の姿勢変換を回転軸と回転角とで表現したときの角度Ψを、回転行列Ｆから算出する。回転行列Ｆおよび回転角Ψは、以下の式を計算することで算出することができる。
【００６９】
F＝(RRW ')-1RRW
Ψ＝arccos((Trace(F)‐1) ／ 2 ) 
ここで、ステップＳ６０１で入力した回転情報｛xRot、yRot、zRot｝＝｛１，１，０｝中の各軸に対するパラメータ値のうち値「０」に対応する軸、すなわちｚ軸を回転軸とする。このとき、基準ワーク姿勢におけるワークの回転軸を表すベクトルをVa,、ワークの認識姿勢におけるワークの回転軸を表すベクトルをVbとし、これらの外積ベクトルV＝Va×Vbを算出する。ベクトルVで表現される軸回りにΨだけ回転を行う３×３の回転行列をRrotとすると、認識したワークを把持するハンドの姿勢Rmaxは、以下の式を計算することで算出される。
【００７０】
Rmax ＝Rrot RRW' RWH
そして把持位置姿勢決定部１５は、把持対象ワークを把持するためのハンドの最終的な把持位置姿勢TRH_maxを、以下の式から算出する。
【００７１】
【数５】
2015085475.tif 000007
【００７２】
把持位置姿勢決定部１５は、このようにして算出したハンドの最終的な把持位置姿勢TRH_maxを、第１の実施形態と同様に、適当な出力先に出力する。何れにせよ、ロボットアームを制御してハンドをこの最終的な把持位置姿勢TRH_maxに移動させることで、山積み中で認識した把持対象ワークを、教示位置姿勢と類似した姿勢で把持することが可能となる。なお、図７（ａ）で示した認識ワークに対して、本実施形態の一連の処理を行い、最終的に算出したハンドの把持位置姿勢を図７（ｂ）に示す。
【００７３】
このように、本実施形態では、１軸に対する回転体であるような形状のワークに対して、ハンドの適切な把持位置姿勢を算出する方法について述べた。具体的には、ハンドの基準姿勢において把持可能なワークと、山積み中から認識したワークとの姿勢の差分量を求め、その差分量だけハンドを傾けた姿勢を把持姿勢として直接算出した。
【００７４】
［第３の実施形態］
本実施形態では、上記の５種類の回転対称形状（ａ）〜（ｅ）のうち、（ｃ）、すなわち、直交する２軸のうち１軸に対して２回対称、かつもう１軸に対して回転体であるような形状のワークに対してハンドの適切な把持位置姿勢を算出する方法について述べる。具体的には、ワークを認識後、まず２回対称を規定する回転軸に対して第１の実施形態と同様に基準姿勢に最も近い把持姿勢を選択する。そして、選択された姿勢を初期姿勢として、回転体を規定する回転軸に対して第２の実施形態と同様に基準姿勢に最も近い把持位置姿勢を直接算出する。
【００７５】
以下では、第１の実施形態との相違点について重点的に説明し、第１の実施形態と同様の部分については説明を省略する。本実施形態でも、図１に示した構成を有する把持位置姿勢算出装置１を用いて、ハンドの適切な把持位置姿勢を算出する。
【００７６】
把持位置姿勢算出装置１が、直交する２軸のうち１軸に対して２回対称、かつもう１軸に対して回転体であるような形状のワークに対してハンドの適切な把持位置姿勢を算出する為に行う処理について、同処理のフローチャートを示す図８を用いて説明する。
【００７７】
（ステップＳ８０１における処理について）
回転情報入力部１１は、上記のような回転情報を取得する。本実施形態では、回転情報入力部１１は、図２（ｃ）に示したワークについて図２（ｃ）に示したＧＵＩを用いて設定した回転情報を取得したものとする。この場合、回転情報は、｛xRot、yRot、zRot｝＝｛２，１，０｝となる。また回転情報入力部１１は、回転情報中の各軸に対するパラメータ値のうち１以外の正の整数値に対応する軸、即ちこの場合はｘ軸を回転軸αとし、回転情報中の各軸に対するパラメータ値のうち値「０」に対応する軸、即ちこの場合はｚ軸を回転軸βとする。
【００７８】
（ステップＳ８０２〜ステップＳ８０５における処理について）
ステップＳ８０２〜ステップＳ８０５の各ステップにおける処理は、それぞれ、ステップＳ２０２〜ステップＳ２０５における処理と同様であるので、ステップＳ８０２〜ステップＳ８０５の各ステップにおける処理の説明は省略する。
【００７９】
（ステップＳ８０６における処理について）
ステップＳ８０６では、回転軸αについて、上記のステップＳ２０６〜Ｓ２１３と同様の処理を行う。
【００８０】
（ステップＳ８０７における処理について）
ハンドが最大一致姿勢TRH_maxをとるときのワークの姿勢Rmax_wを新たに認識姿勢RRWとし、回転軸βに関して、上記のステップＳ６０８と同様の処理を行うことで、最終的な把持位置姿勢を算出する。
【００８１】
このように、本実施形態では、直交する２軸のうち１軸に対して２回対称、かつもう１軸に対して回転体、であるような形状のワークに対してハンドの適切な把持位置姿勢を算出する方法について述べた。具体的には、ワークを認識後、まず２回対称を規定する回転軸に対して第１の実施形態と同様に基準姿勢に最も近い把持姿勢を選択し、選択された姿勢を初期姿勢として、回転体を規定する回転軸に対して第２の実施形態と同様に基準姿勢に最も近い把持位置姿勢を直接算出した。
【００８２】
［第４の実施形態］
本実施形態では上記の５種類の回転対称形状（ａ）〜（ｅ）のうち、（ｄ）、すなわち、直交する２軸のうち１軸に対して２回対称、かつもう１軸に対してＮ回対称であるような形状のワークに対してハンドの適切な把持位置姿勢を算出する方法について述べる。具体的には、ワークを認識後、直交する２つのＮ回対称軸に対してワークをそれぞれ回転させた全対称姿勢の各ワークに対して教示された位置姿勢に基づいてハンドの位置姿勢をそれぞれ算出し、あらかじめ設定しておいた基準姿勢にもっとも近いものを、最終的なハンドの位置姿勢として選択する。
【００８３】
以下では、第１の実施形態との相違点について重点的に説明し、第１の実施形態と同様の部分については説明を省略する。本実施形態でも、図１に示した構成を有する把持位置姿勢算出装置１を用いて、ハンドの適切な把持位置姿勢を算出する。
【００８４】
把持位置姿勢算出装置１が、直交する２軸のうち１軸に対して２回対称、かつもう１軸に対してＮ回対称であるような形状のワークに対してハンドの適切な把持位置姿勢を算出する為に行う処理は、以下に説明する点を除けば、図３に示した処理と同様である。以下では、第１の実施形態と相違する、ステップＳ２０１，Ｓ２０８，Ｓ２０９，Ｓ２１３の各ステップにおける処理について説明する。
【００８５】
（ステップＳ２０１における処理について）
回転情報入力部１１は、上記のような回転情報を取得する。本実施形態では、回転情報入力部１１は、図２（ｄ）に示したワークについて図２（ｄ）に示したＧＵＩを用いて設定した回転情報を取得したものとする。この場合、回転情報は、｛xRot、yRot、zRot｝＝｛２，１，６｝となる。また回転情報入力部１１は、回転情報中の各軸に対するパラメータ値のうち１以外の正の整数値に対応する軸、即ちこの場合はｘ軸及びｚ軸を、それぞれ回転軸α、回転軸βとする。また、回転情報入力部１１は、ｘ軸に対応するパラメータ値「２」を回転対称数として変数Ｎに設定すると共に、ｚ軸に対応するパラメータ値「６」を回転対称数として変数Ｍに設定する。
【００８６】
（ステップＳ２０８における処理について）
把持位置姿勢決定部１５は、ハンドの基準姿勢との一致度が高い把持姿勢を決定するための初期化を行う。まず、姿勢の最大一致度を表す値をVmaxとし、小さな値で初期化する（たとえばVmax＝−１０００００）。次に、一致度が最大となる姿勢を最大一致姿勢とし、この姿勢を表す３×３の回転行列をRmaxとして、ハンドの初期姿勢で初期化する（Rmax＝RRH）。また、このときのワークの姿勢を表す３×３の回転行列をRmax_wとし、ワークの認識姿勢で初期化する（Rmax_w＝RRW）。さらに、回転軸回りにワークを回転させた回数をカウントするためのカウンタをｉとし、ｉ＝０として初期化する。更に、回転軸α回りにワークを回転させた回数をカウントするためのカウンタ、回転軸β回りにワークを回転させた回数をカウントするためのカウンタ、のそれぞれをｊ、ｋとし、ｊ＝ｋ＝０と初期化する。
【００８７】
（ステップＳ２０９における処理について）
把持位置姿勢決定部１５は、認識姿勢RRWを回転軸α周りに（３６０／Ｎ×ｊ）度だけ回転させ且つ回転軸β周りに（３６０／Ｍ×ｋ）度だけ回転させた姿勢を求める。そして把持位置姿勢決定部１５は、該求めた姿勢に対して教示姿勢の関係にある姿勢（参照姿勢）RRH_iを、該求めた姿勢を有する把持対象ワークを把持するための把持姿勢として求める。参照姿勢RRH_iは以下の式を計算することで算出することができる。
【００８８】
RRH_i ＝ RRW Rk Rj RWH
ここで、Rjは、ワークの回転軸α回りに（３６０／Ｎ×ｊ）度回転を行う３×３の回転行列であり、Rkは、ワークの回転軸β回りに（３６０／Ｍ×ｋ）度回転を行う３×３の回転行列である。
【００８９】
（ステップＳ２１３における処理について）
把持位置姿勢決定部１５は、ｉ＜Ｎ×Ｍであるか否かを判断する。この判断結果、ｉ＜Ｎ×Ｍであれば、カウンタｉの値に１を加算してカウンタｉの値を更新する（ｉ←ｉ＋１）。さらに、ｋ＜Ｍであれば、カウンタｊの値については更新せずに、カウンタｋの値に１を加算してカウンタｋの値を更新し（ｋ←ｋ＋１）、処理はステップＳ２０９に戻る。一方、ｋ≧Ｍであれば、カウンタｊの値に１を加算してカウンタｊの値を更新する（ｊ←ｊ＋１）と共に、カウンタｋの値を０に初期化し、処理はステップＳ２０９に戻る。
【００９０】
一方、ｉ≧Ｎ×Ｍであれば、全対称姿勢の中でもっとも一致度の高かった姿勢Rmax、初期位置tRHを用いて、把持対象ワークを把持するためのハンドの最終的な把持位置姿勢TRH_maxを、以下の式から算出する。
【００９１】
【数６】
2015085475.tif 000008
【００９２】
把持位置姿勢決定部１５は、このようにして算出したハンドの最終的な把持位置姿勢TRH_maxを、第１の実施形態と同様に、適当な出力先に出力する。何れにせよ、ロボットアームを制御してハンドをこの最終的な把持位置姿勢TRH_maxに移動させることで、山積み中で認識した把持対象ワークを、教示位置姿勢と類似した姿勢で把持することが可能となる。
【００９３】
このように、本実施形態では、直交する２軸のうち１軸に対して２回対称、かつもう１軸に対してＮ回対称であるような形状のワークに対してハンドの適切な把持位置姿勢を算出する方法について述べた。具体的には、ワークを認識後、直交する２つのＮ回対称軸に対してワークをそれぞれ回転させた全対称姿勢の各ワークに対して教示された位置姿勢に基づいてハンドの位置姿勢をそれぞれ算出し、あらかじめ設定しておいた基準姿勢にもっとも近いものを、最終的なハンドの位置姿勢として選択した。
【００９４】
なお、上記の５種類の回転対称形状（ａ）〜（ｅ）のうち、（ｅ）、すなわち、直交する２軸に対する回転体、すなわち球体の場合には、姿勢による把持の差がない。そのため、単純に、認識したワークの位置と事前に決めておいた姿勢とに基づき、把持位置姿勢を決定すればよい。
【００９５】
［第５の実施形態］
図１に示した把持位置姿勢算出装置１を構成する各機能部は何れもハードウェアで構成しても良いが、ソフトウェア（コンピュータプログラム）で構成しても良い。この場合、このコンピュータプログラムを実行可能な装置は、図１の把持位置姿勢算出装置１に適用することができる。このようなコンピュータプログラムを実行可能な、把持位置姿勢算出装置１に適用可能な装置のハードウェア構成例について、図９のブロック図を用いて説明する。
【００９６】
ＣＰＵ９０１は、ＲＡＭ９０２やＲＯＭ９０３に格納されているコンピュータプログラムやデータを用いて各種の処理を実行することで、本装置全体の動作制御を行うと共に、把持位置姿勢算出装置１が行うものとして上述した各処理を実行する。
【００９７】
ＲＡＭ９０２は、外部記憶装置９０６からロードされたコンピュータプログラムやデータ、Ｉ／Ｆ（インターフェース）９０７を介して外部から受信したデータなどを一時的に記憶するためのエリアを有する。更に、ＲＡＭ９０２は、ＣＰＵ９０１が各種の処理を実行する際に用いるワークエリアも有する。すなわち、ＲＡＭ９０２は、各種のエリアを適宜提供することができる。ＲＯＭ９０３には、本装置の設定データやブートプログラムなどが格納されている。
【００９８】
操作部９０４は、マウスやキーボードなどにより構成されており、本装置のユーザが操作することで、各種の指示をＣＰＵ９０１に対して入力することができる。例えば、図２に示したようなＧＵＩに対する操作入力は、この操作部９０４を介して行われる。
【００９９】
表示部９０５は、ＣＲＴや液晶画面などにより構成されており、ＣＰＵ９０１による処理結果を、画像や文字などでもって表示することができる。例えば、図２に示したようなＧＵＩはこの表示部９０５に表示される。
【０１００】
外部記憶装置９０６は、ハードディスクドライブ装置に代表される、大容量情報記憶装置である。外部記憶装置９０６には、ＯＳ（オペレーティングシステム）や、図１に示した各機能部が行うものとして上述した各処理をＣＰＵ９０１に実行させるためのコンピュータプログラムやデータが保存されている。このデータには、既知の情報として説明した情報も含まれている。外部記憶装置９０６に保存されているコンピュータプログラムやデータは、ＣＰＵ９０１による制御に従って適宜ＲＡＭ９０２にロードされ、ＣＰＵ９０１による処理対象となる。
【０１０１】
Ｉ／Ｆ９０７は、外部機器を本装置に接続するためのもので、例えば、上記距離センサをこのＩ／Ｆ９０７に接続することができる。この場合、距離センサによる測定結果を、このＩ／Ｆ９０７を介してＲＡＭ９０２に取得し、この測定結果を用いてワークの位置姿勢を認識することができる。
【０１０２】
上記の各部は何れも、バス９０８に接続されている。なお、把持位置姿勢算出装置１に適用可能な装置の構成は、図９に示した構成に限るものではない。すなわち、図１に示した各機能部が行うものとして上述した各処理をＣＰＵ９０１に実行させるためのコンピュータプログラムを実行可能な構成であれば、如何なる構成を採用しても構わない。また、図１に示した各機能部による機能のうち一部の機能をハードウェア若しくはソフトウェアで構成しても構わない。
【０１０３】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2015085475.tif 000009
【図３】
2015085475.tif 000010
【図６】
2015085475.tif 000011
【図８】
2015085475.tif 000012
【図９】
2015085475.tif 000013
【図２】
2015085475.tif 000014
【図４】
2015085475.tif 000015
【図５】
2015085475.tif 000016
【図７】
2015085475.tif 000017