把持ロボット、制御装置、制御方法、及びプログラム
【課題】障害物等と接触することなく把持対象物を把持可能な把持位置及び把持姿勢を決定する。
【解決手段】把持機構により把持対象物を把持する把持ロボットは、前記把持対象物が把持されるときに前記把持機構と接触する面の組み合わせである把持対象物接触面群の情報と、前記把持ロボットの作業空間中の障害物の領域を特定する障害物情報とを有する。前記把持ロボットは、前記把持対象物の位置及び前記把持対象物の姿勢を画像認識により特定し、特定した把持対象物の位置及び把持対象物の姿勢において、前記障害物の領域と接触していない把持対象物接触面群を選択する。
【解決手段】把持機構により把持対象物を把持する把持ロボットは、前記把持対象物が把持されるときに前記把持機構と接触する面の組み合わせである把持対象物接触面群の情報と、前記把持ロボットの作業空間中の障害物の領域を特定する障害物情報とを有する。前記把持ロボットは、前記把持対象物の位置及び前記把持対象物の姿勢を画像認識により特定し、特定した把持対象物の位置及び把持対象物の姿勢において、前記障害物の領域と接触していない把持対象物接触面群を選択する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、把持ロボット、制御装置、制御方法、及びプログラムに関する。
【背景技術】
【0002】
ロボットハンド等の把持機構により部品や工具等の把持対象物(以下、「ワーク」ともいう)を把持することができるロボット(以下、「把持ロボット」ともいう)が知られている。また、把持ロボットを一つ以上用いることにより、例えば、部品搬送や製品組み立てを行い、生産ラインを自動化することができる。
【0003】
一般的に、把持対象物を把持するために行われる把持ロボットの一連の動作と位置及び姿勢は、その所定の可動範囲の中で安全に実現する必要がある。すなわち、把持対象物を把持するロボットの一連の動作中に、当該ロボットが障害物や把持対象物等に衝突したり接触したりしないように制御する必要がある。また、このような把持ロボットの制御においては、把持対象物自体の形状と位置及び姿勢を考慮して、把持機構の動作と位置及び姿勢を決定する必要がある。
【0004】
例えば、特許文献1には、事前に教示された、又は算出された把持位置及び把持姿勢が、アーム、及びロボットの可動範囲外であった場合に、当該把持位置及び把持姿勢をシフトすることにより可動範囲内の把持位置及び把持姿勢が存在するか否かを演算することが記載されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2009−56513号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
ところで、把持対象物の一部が障害物等により覆われていたり隠れていたりする場合には、障害物等を考慮して把持動作を決定しないと、実際に把持ロボットを動作させても当該把持対象物を把持できない、という問題が生じ得る。また、障害物等を考慮しても、それを回避する把持動作を決定する手段がなければ、把持位置及び把持姿勢を決定することができない、という問題が生じ得る。
【0007】
上記の特許文献1では、把持位置及び把持姿勢をシフトすれば把持対象物を把持できることを前提としている。しかし、把持対象物の一部が障害物等により覆われていたり隠れていたりする場合が考慮されていない。そのため、上記の問題が生じ得る。
【0008】
そこで、本発明は、障害物等と接触することなく把持対象物を把持可能な把持位置及び把持姿勢を決定することを目的とする。
【課題を解決するための手段】
【0009】
本願は、上記課題を解決する手段を複数含んでいるが、その例を挙げるならば、以下のとおりである。
【0010】
上記の課題を解決するための本発明の第一の態様は、把持機構により把持対象物を把持する把持ロボットであって、前記把持対象物が把持されるときに前記把持機構と接触する面の組み合わせである把持対象物接触面群と、当該把持対象物接触面群を把持するときに接触する前記把持機構の面の組み合わせである把持機構接触面群とを対応付けた把持対象物接触面群情報、及び、前記把持ロボットの作業空間中の障害物の領域を特定する障害物情報、を記憶する記憶部と、前記把持対象物の位置及び前記把持対象物の姿勢を画像認識により特定する把持対象物位置姿勢特定部と、前記把持対象物位置姿勢特定部により特定された前記把持対象物の位置及び前記把持対象物の姿勢において前記障害物と接触していない把持対象物接触面群を、前記把持対象物接触面群情報から選択する把持対象物接触面群選択部と、を有する、ことを特徴とする。
【0011】
上記の構成によれば、障害物と接触していない把持対象物接触面群が選択されるので、障害物と接触することなく把持対象物を把持可能なロボットの把持位置及び把持姿勢を決定することができる。
【0012】
ここで、前記把持ロボットは、前記把持対象物接触面群選択部により選択された前記把持対象物接触面群ごとに、当該把持対象物接触面群に対応付けられた把持機構接触面群について、所定の位置において所定の姿勢を設定し、当該姿勢で当該把持機構接触面群を当該把持対象物接触面群を把持する位置に移動したとした場合に、前記障害物と接触するか否かを判定し、前記障害物と接触しない前記把持機構の位置及び前記把持機構の姿勢を特定する、把持機構位置姿勢特定部を有する、ようにしてもよい。
【0013】
上記の構成によれば、障害物と接触していない把持対象物接触面群について、障害物と接触せずに把持できる把持機構の位置及び姿勢が特定されるので、障害物と接触することなく把持対象物を把持可能なロボットの把持位置及び把持姿勢を決定することができる。
【0014】
また、前記把持機構位置姿勢特定部は、前記把持対象物接触面群選択部により選択された把持対象物接触面群ごとに、当該把持対象物接触面群に対応付けられた把持機構接触面群について、前記所定の位置において複数の異なる姿勢を設定し、姿勢ごとに、当該姿勢で当該把持機構接触面群を当該把持対象物接触面群を把持する位置に移動したとした場合に、前記障害物と接触するか否かを判定し、前記障害物と接触しない前記把持機構の位置及び前記把持機構の姿勢を特定する、ようにしてもよい。
【0015】
上記の構成によれば、障害物と接触していない把持対象物接触面群について、障害物と接触せずに把持できる複数の把持機構の位置及び姿勢を特定することができる。
【0016】
また、前記記憶部は、前記把持機構の動作範囲を示す把持機構動作範囲情報を記憶し、前記把持ロボットは、前記把持機構動作範囲情報に基づいて、前記把持対象物接触面群選択部により選択された選択された把持対象物接触面群ごとに、当該把持対象物接触面群を当該把持対象物接触面群に対応付けられた把持機構接触面群の動作範囲で把持できるか否かを判定する把持機構動作量算出部を有し、前記把持機構位置姿勢特定部は、前記把持機構動作量算出部により把持できると判定された把持機構接触面群について、前記把持機構の位置及び前記把持機構の姿勢を特定する、ようにしてもよい。
【0017】
上記の構成によれば、把持機構の位置及び前記把持機構の姿勢を特定する前に、把持対象物接触面群をその動作範囲で把持できる把持機構接触面群が抽出されるため、処理負荷が軽減される。
【0018】
また、前記記憶部は、前記把持対象物を面で表した把持対象物形状情報と、前記把持機構が把持するときに前記把持対象物と接触する面の組み合わせである接触面群を特定する把持機構接触面群情報と、を記憶し、前記把持ロボットは、前記把持対象物形状情報と前記把持機構接触面群情報とに基づいて、前記把持機構接触面群情報に含まれる把持機構接触面群ごとに、当該把持機構接触面群が把持することができる前記把持対象物の面の組み合わせを把持対象物接触面群として特定し、当該把持対象物接触面群と当該把持機構接触面群とを対応付けることにより、前記把持対象物接触面群情報を生成する把持対象物接触面群生成部を有する、ようにしてもよい。
【0019】
上記の構成によれば、把持対象物形状情報と把持機構接触面群情報とに基づいて、把持対象物接触面群と当該把持対象物接触面群を把持できる把持機構接触面群とを対応付けることができる。
【0020】
また、前記把持対象物接触面群生成部は、前記把持機構接触面群情報に含まれる把持機構接触面群ごとに、当該把持機構接触面群を構成する一方の把持機構接触面と向かい合う前記把持対象物の第一の面を特定し、前記一方の把持機構接触面と前記第一の面とが向かい合った状態において、前記把持機構接触面群を構成する他方の把持機構接触面と向かい合う前記把持対象物の第二の面を特定し、前記第一の面と前記第二の面の組み合わせを把持対象物接触面群として特定する、ようにしてもよい。
【0021】
上記の構成によれば、把持対象物形状情報と把持機構接触面群情報とに基づいて、より簡単な方法で、把持対象物接触面群と当該把持対象物接触面群を把持できる把持機構接触面群とを対応付けることができる。
【0022】
また、前記記憶部は、前記把持機構を面で表した把持機構形状情報を記憶し、前記把持ロボットは、前記把持機構形状情報に基づいて、前記把持機構の面のうち、互いに向かい合う面の組み合わせを特定し、前記把持機構接触面群情報として生成する把持機構接触面群生成部を有する、ようにしもよい。
【0023】
上記の構成によれば、把持機構形状情報に基づいて、把持対象物を把持できる把持機構接触面群を生成することができる。
【0024】
また、前記把持対象物形状情報及び前記把持機構形状情報は、前記把持対象物及び前記把持機構を平面で近似したデータであってもよい。
【0025】
上記の構成によれば、ロボットに与えるデータを単純化でき、ロボットの処理負荷を抑えることができる。
【0026】
上記の課題を解決するための本発明の第二の態様は、把持機構により把持対象物を把持する把持ロボットを制御する制御装置であって、前記把持対象物が把持されるときに前記把持機構と接触する面の組み合わせである把持対象物接触面群と、当該把持対象物接触面群を把持するときに接触する前記把持機構の面の組み合わせである把持機構接触面群とを対応付けた把持対象物接触面群情報、及び、前記把持ロボットの作業空間中の障害物の領域を特定する障害物情報、を記憶する記憶部と、前記把持対象物の位置及び前記把持対象物の姿勢を画像認識により特定する把持対象物位置姿勢特定部と、前記把持対象物位置姿勢特定部により特定された前記把持対象物の位置及び前記把持対象物の姿勢において前記障害物と接触していない把持対象物接触面群を、前記把持対象物接触面群情報から選択する把持対象物接触面群選択部と、を有する、ことを特徴とする。
【0027】
上記の課題を解決するための本発明の第三の態様は、把持機構により把持対象物を把持する把持ロボットの把持制御方法であって、前記把持対象物が把持されるときに前記把持機構と接触する面の組み合わせである把持対象物接触面群と、当該把持対象物接触面群を把持するときに接触する前記把持機構の面の組み合わせである把持機構接触面群とを対応付けた把持対象物接触面群情報、及び、前記把持ロボットの作業空間中の障害物の領域を特定する障害物情報、を取得するステップと、前記把持対象物の位置及び前記把持対象物の姿勢を画像認識により特定する把持対象物位置姿勢特定ステップと、前記把持対象物位置姿勢特定ステップで特定された前記把持対象物の位置及び前記把持対象物の姿勢において前記障害物と接触していない把持対象物接触面群を、前記把持対象物接触面群情報から選択する把持対象物接触面群選択ステップと、を含む、ことを特徴とする。
【0028】
上記の課題を解決するための本発明の第四の態様は、把持機構により把持対象物を把持する把持ロボットを制御する制御装置のプログラムであって、前記把持対象物が把持されるときに前記把持機構と接触する面の組み合わせである把持対象物接触面群と、当該把持対象物接触面群を把持するときに接触する前記把持機構の面の組み合わせである把持機構接触面群とを対応付けた把持対象物接触面群情報、及び、前記把持ロボットの作業空間中の障害物の領域を特定する障害物情報、を記憶する記憶部と、前記把持対象物の位置及び前記把持対象物の姿勢を画像認識により特定する把持対象物位置姿勢特定部と、前記把持対象物位置姿勢特定部により特定された前記把持対象物の位置及び前記把持対象物の姿勢において前記障害物と接触していない把持対象物接触面群を、前記把持対象物接触面群情報から選択する把持対象物接触面群選択部として、前記制御装置を機能させる、ことを特徴とする。
【0029】
上記の本発明の第二〜第四の態様によっても、障害物と接触していない把持対象物接触面群が選択されるので、障害物と接触することなく把持対象物を把持可能なロボットの把持位置及び把持姿勢を決定することができる。
【0030】
上記した以外の課題、構成、及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【0031】
【図1】本発明の一実施形態に係るロボットの外観の一例を示す図。
【図2】ロボットのハンド(把持機構)の動作の一例を説明する図。
【図3】ロボットの制御に関する概略構成の一例を示すブロック図。
【図4】ロボットの制御に関する機能構成の一例を示すブロック図。
【図5】把持対象物形状近似データ生成処理の一例を示すフロー図。
【図6】把持対象物形状近似データの生成方法の一例を説明する図。
【図7】把持対象物形状近似データの構成の一例を示す図。
【図8】把持機構接触面群データ生成処理の一例を示すフロー図。
【図9】把持機構形状近似データの一例を説明する図。
【図10】把持機構形状近似データの接触面を説明する図。
【図11】把持機構形状近似データの接触面データの構成の一例を示す図。
【図12】把持機構接触面群を特定する処理の一例を示すフロー図。
【図13】把持機構接触面群を特定する際の法線ベクトルの使い方の一例を説明する図。
【図14】把持機構接触面群データの構成の一例を示す図。
【図15】把持対象物接触面群データ生成処理の一例を示すフロー図。
【図16】把持対象物接触面群と把持機構接触面群とを関連付ける処理の一例を示すフロー図。
【図17】把持対象物接触面群データの構成の一例を示す図。
【図18】把持対象物接触面群選択処理の一例を示すフロー図。
【図19】把持対象物と障害物の関係の一例を説明する図。
【図20】障害物と干渉しない把持対象接触面群を選択する処理の一例を示すフロー図。
【図21】選択された把持対象物接触面群データの構成の一例を示す図。
【図22】把持機構動作量算出処理の一例を示すフロー図。
【図23】把持機構接触面群と把持対象物接触面群の関係を説明する図。
【図24】把持機構動作量を特定する処理の一例を示すフロー図。
【図25】把持機構位置姿勢設定処理の一例を示すフロー図。
【図26】障害物と干渉しない把持機構の位置及び姿勢を特定する処理の一例を示すフロー図(その1)。
【図27】障害物と干渉しない把持機構の位置及び姿勢を特定する処理の一例を示すフロー図(その2)。
【図28】把持対象物接触面群の軸と把持機構接触面群の軸との関係を説明する図。
【図29】把持機構の位置及び姿勢を特定するための回転と並進の一例を説明する図。
【発明を実施するための形態】
【0032】
以下、本発明の一実施形態の一例について、図面を参照して説明する。
【0033】
図1は、本発明の一実施形態に係るロボットの外観の一例を示す図である。
【0034】
ロボット1は、頭部2と、胴体部3と、脚部4と、アーム5と、ハンド(把持機構)8とを備える把持ロボットである。ロボット1は、アーム5の一端に取り付けられたハンド8で把持対象物を把持する。本図の例では、ロボット1は、左右2本のアームを備えている。
【0035】
アーム5は、複数のジョイント(関節)6と、複数のリンク7とからなる。各ジョイント6は、リンク7同士や、胴体部3とリンク7、ハンド8とリンク7を、回動自在に(ただし、所定の可動範囲内で回動可能に)連結している。各ジョイント6は、例えば、回転ジョイントであり、リンク7間の角度を変化させたり、リンク7を軸回転させたりできるように設けられている。従って、各ジョイント6を連動させて駆動することにより、ハンド8を、自在に(ただし、所定の可動範囲内で)移動させることができるとともに、自由な方向へ向けることもできる。本図の例では、アーム5は、6つのジョイントを備えた6軸アームとなっている。
【0036】
図2は、ロボットのハンド(把持機構)の動作の一例を説明する図である。
【0037】
図2(A)の斜視図に示すように、ハンド8は、4本の指9を備える。また、図2(B)の底面図に示すように、各指9は、例えば、隣り合う指に近付くように移動し、少なくとも2本の指で把持対象物を挟んで把持することができる仕組みとなっている。
【0038】
図3は、ロボットの制御に関する概略構成の一例を示すブロック図である。
【0039】
ロボット1は、コントローラー10と、撮像部20と、可動部30とを備える。
【0040】
撮像部20は、ロボット1の外部環境を撮影して、画像データを生成するユニットである。撮像部20は、例えば、カメラを含み、ロボット1の頭部2に設けられる。撮像部20は、コントローラー10の制御により、把持対象物や障害物などを含む外部環境の撮影を行うとともに画像データを生成し、コントローラー10に出力する。
【0041】
可動部30は、ロボット1の可動部分である。可動部30には、例えば、頭部2、胴体部3、脚部4、アーム5、ハンド8が含まれる。各可動部30は、例えば、アクチュエーター31と、力覚センサーなどの種々のセンサー32と、を備える。アクチュエーター31は、例えば、アーム5の各ジョイント6や、ハンド8の各指にそれぞれ設けられており、これらを動作させる。アクチュエーター31は、例えば、モーター、当該モーターの駆動回路、エンコーダーなどを備える。エンコーダーが出力するエンコーダー値やセンサー32が出力するセンサー値は、可動部の位置、移動方向、移動量、速度、加速度、把持対象物との接触などを把握するのに、コントローラー10により利用される。
【0042】
コントローラー10は、ロボット1の全体を制御する処理を行う。コントローラー10は、演算装置であるCPU11と、揮発性の記憶装置であるRAM12と、不揮発性の記憶装置であるROM13と、コントローラー10と他のユニットと接続するインターフェイス(I/F)回路14と、ロボット1の外部の装置と通信を行う通信装置15と、を備える。
【0043】
コントローラー10は、例えば、撮像部20の出力画像から画像認識によって把持対象物の形状と位置及び姿勢を認識する。また、コントローラー10は、例えば、認識された把持対象物を把持するためのロボット1の一連の動作と、把持位置及び把持姿勢を計算する。また、コントローラー10は、例えば、各種センサーやエンコーダーの出力信号に基づいて、各可動部30が目的の位置及び姿勢となるようにアクチュエーター31を制御し、可動部30を動作させる。
【0044】
なお、把持対象物の位置は、例えば、ロボットの作業空間を基準座標系としたときの、当該把持対象物の所定の基準点(例えば、重心など)の、前記基準座標系における位置座標とすることができる。また、把持対象物の姿勢は、例えば、当該把持対象物の所定の基準ベクトル(例えば、重心から所定方向に向かうベクトル)の、前記基準座標系における向きすることができる。把持機構やロボットの位置及び姿勢についても同様に定義できる。もちろん、位置や姿勢の定義はこれに限られず、他の方法で定義してもよい。
【0045】
以上のロボット1の構成は、本実施形態の特徴を説明するにあたって主要構成を説明したのであって、上記の構成に限られない。ハンドにより把持対象物を把持できれば、どのような構造であってもよい。また、一般的な把持ロボットが備える構成を排除するものではない。
【0046】
例えば、図1では6軸のアームが示されているが、軸数(ジョイント数)をさらに増加させてもよいし減らしてもよい。リンクの数を増減させてもよい。また、アーム、ハンド、リンク、ジョイント等の各種部材の形状、大きさ、配置、構造等も適宜変更してよい。また、コントローラー10は、ロボット1の本体に内蔵されていなくてもよく、ロボット1を遠隔操作する機器に設けられていてもよい。
【0047】
次に、上記のロボット1における、把持動作と位置及び姿勢の制御方法について、具体的に説明する。
【0048】
なお、本実施形態は、ロボット1を実際に動作させるに当たって、事前に、動作と位置及び姿勢のシミュレーションを行うものである。
【0049】
図4は、ロボットの制御に関する機能構成の一例を示すブロック図である。
【0050】
本図に示すように、ロボット1は、形状近似部101と、把持機構接触面群生成部102と、把持対象物接触面群生成部103と、把持対象物位置姿勢取得部104と、把持対象物接触面群選択部105と、把持機構動作量算出部106と、把持機構位置姿勢設定部107と、を備える。また、ロボット1は、各種データ111〜123を記憶する記憶部を備える。
【0051】
記憶部には、把持機構形状データ111と、把持対象物形状データ112と、把持機構形状近似データ113と、把持対象物形状近似データ114と、把持機構接触面群データ115と、把持対象物接触面群データ116と、把持対象物認識処理データ117と、把持対象物位置姿勢データ118と、障害物データ119と、選択された把持対象物接触面群データ120と、把持機構動作範囲データ121と、把持機構動作量データ122と、把持機構位置姿勢データ123と、が格納される。
【0052】
上記の記憶部以外の各機能部は、例えば、CPU11がROM13に格納された所定のプログラムをRAM12に読み出して実行することにより実現される。記憶部は、例えば、RAM12やROM13により実現される。なお、前記所定のプログラムは、例えば、予めROM13にインストールされてもよいし、通信装置15を介してネットワークからダウンロードされてインストール又は更新されてもよい。
【0053】
把持機構形状データ111は、ハンドの形状と寸法を示すデータである。把持機構形状データ111は、例えば、把持機構の形状を忠実に表した3次元のCADデータなどである。把持機構形状データ111は、予め用意され、記憶部に記憶される。
【0054】
なお、図示していないが、ロボット全体の形状データも、予め用意され、記憶部に記憶されていてもよい。
【0055】
把持対象物形状データ112は、把持対象物の形状と寸法を示すデータである。把持対象物形状データ112は、例えば、把持対象物の形状を忠実に表した3次元のCADデータなどである。把持対象物形状データ112は、予め用意され、記憶部に記憶される。
【0056】
把持機構形状近似データ113は、ハンドの形状と寸法を近似したデータである。把持機構形状近似データ113は、例えば、3次元のCADデータであり、曲線や曲面を直線や平面で近似したデータである。把持機構形状近似データ113は、予め用意され、記憶部に記憶されていてもよいし、形状近似部101が把持機構形状データ111に基づいて生成するようにしてもよい。
【0057】
なお、図示していないが、ロボット全体の形状近似データも、予め用意され、記憶部に記憶されていてもよいし、形状近似部101がロボット全体の形状データに基づいて生成するようにしてもよい。
【0058】
把持対象物形状近似データ114は、把持対象物の形状と寸法を近似したデータである。把持対象物形状近似データ114は、例えば、3次元のCADデータであり、曲線や曲面を直線や平面で近似したデータである。把持対象物形状近似データ114は、予め用意され、記憶部に記憶されていてもよいし、形状近似部101が把持対象物形状データ112に基づいて生成するようにしてもよい。
【0059】
把持機構接触面群データ115は、近似された把持機構形状(把持機構形状近似データ113)を構成する平面(平面要素)のうち、把持対象物を把持するときに把持対象物に接触する平面(接触面)の組み合わせ(群)を特定するデータである。すなわち、把持対象物を把持する把持機構の面の組み合わせを特定するデータである。把持機構接触面群データ115は、予め用意され、記憶部に記憶されていてもよいし、把持機構接触面群生成部102が生成するようにしてもよい。
【0060】
把持対象物接触面群データ116は、近似された把持対象物形状(把持対象物形状近似データ114)を構成する平面(平面要素)のうち、把持機構により把持されるときに把持機構と接触する平面(接触面)の組み合わせ(群)を特定するデータである。すなわち、把持機構により把持される面の組み合わせを特定するデータである。把持対象物接触面群データ116は、予め用意され、記憶部に記憶されてもよいし、把持対象物接触面群生成部103が生成するようにしてもよい。
【0061】
把持対象物認識処理データ117は、把持対象物を種々の方向から見た形状と寸法を示すデータである。把持対象物認識処理データ117は、例えば、3次元のCADデータなどである。把持対象物認識処理データ117は、例えば、撮像部20により撮影された外部環境の画像データと照合され、当該外部環境に存在する把持対象物の位置及び姿勢の認識に使用される。把持対象物認識処理データ117は、予め用意され、記憶部に記憶される。
【0062】
把持対象物位置姿勢データ118は、把持対象物の位置及び姿勢を示すデータである。把持対象物位置姿勢データ118は、画像認識の結果認識された把持対象物の、作業空間中の位置及び姿勢を特定するデータである。複数の把持対象物が存在すれば、把持対象物ごとの位置姿勢データが記録される。把持対象物位置姿勢データ118は、把持対象物位置姿勢取得部104により生成される。
【0063】
障害物データ119は、ロボット1の障害となる可能性のある障害物を示すデータである。障害物データ119は、例えば、ロボット1を基準位置として、当該ロボット1が把持動作を行う際にハンドやアームと衝突する可能性のある外部環境の領域の形状と寸法と位置及び姿勢を示すデータである。把持対象物が置かれる床、把持対象物の周辺の部品などの物、他のロボットなどが障害物となりうる。障害物データ119は、予め用意され、記憶部に記憶されてもよいし、撮影した画像データに基づく画像認識により生成されるようにしてもよい。
【0064】
障害物データを用意すべき物理的な範囲は、例えば、ロボット1を基準に、ハンドにより把持をすることができる可動範囲に加え、当該可動範囲でハンドが動作した場合にアームなどの他の部分が障害物と衝突することがないような最小の作業範囲(作業空間)とすることができる。
【0065】
選択された把持対象物接触面群データ120は、把持対象物接触面群データ116に含まれる接触面群のうち、所定の条件により選択された接触面群のデータである。把持対象物接触面群データ116は、把持対象物接触面群選択部105により生成される。
【0066】
把持機構動作範囲データ121は、ハンドの動作範囲(可動範囲)を特定するデータである。把持機構動作範囲データ121には、例えば、ハンド、指等の移動方向や移動量等を特定するデータが含まれる。アームや他の可動部の移動方向や移動量等を特定するデータが含まれていてもよい。把持機構動作範囲データ121は、予め用意され、記憶部に記憶される。
【0067】
把持機構動作量データ122は、把持対象物を把持するハンドの動作量を特定するデータである。把持機構動作量データ122には、例えば、把持対象物の接触面群ごとに、当該接触面群を把持する把持機構の接触面群に対応する各指の移動方向と移動量を特定するデータである。把持機構動作量データ122は、把持機構動作量算出部106により生成される。
【0068】
把持機構位置姿勢データ123は、把持対象物を把持するときの把持機構の位置及び姿勢を特定するデータである。把持機構位置姿勢データ123は、把持機構位置姿勢設定部107により生成される。
【0069】
形状近似部101は、把持機構形状データ111に基づいて把持機構形状近似データ113を生成する。また、形状近似部101は、把持対象物形状データ112に基づいて把持対象物形状近似データ114を生成する。なお、近似データが予め用意される場合は、形状近似部101は、なくてよい。
【0070】
把持機構接触面群生成部102は、把持機構形状近似データ113に基づいて、把持対象物を把持する把持機構の接触面群を特定し、把持機構接触面群データ115を生成する。なお、把持機構接触面群データ115が予め用意される場合は、把持機構接触面群生成部102は、なくてよい。
【0071】
把持対象物接触面群生成部103は、把持対象物形状近似データ114と把持機構接触面群データ115とに基づいて、把持機構接触面群により把持可能な把持対象物の接触面群を特定し、把持対象物接触面群データ116を生成する。なお、把持対象物接触面群データ116が予め用意される場合は、把持対象物接触面群生成部103は、なくてよい。
【0072】
把持対象物位置姿勢取得部104は、撮像部20により撮影された画像データと、把持対象物認識処理データ117とに基づいて、画像認識処理を行い、画像データに含まれる把持対象物の形状と寸法と位置及び姿勢を特定し、把持対象物位置姿勢データ118を生成する。
【0073】
把持対象物接触面群選択部105は、把持対象物接触面群データ116と、把持対象物位置姿勢データ118と、障害物データ119とに基づいて、作業空間内の障害物により妨げられていない把持対象物接触面群を選択し、選択された把持対象物接触面群データ120を生成する。
【0074】
把持機構動作量算出部106は、把持機構動作範囲データ121と、把持機構接触面群データ115と、選択された把持対象物接触面群データ120とに基づいて、把持対象物接触面群ごとに、当該接触面群を把持する把持機構の接触面群に対応する各指の移動方向と移動量を算出し、把持機構動作量データ122を生成する。
【0075】
把持機構位置姿勢設定部107は、把持機構形状近似データ113と、把持対象物形状近似データ114と、把持対象物位置姿勢データ118と、障害物データ119と、選択された把持対象物接触面群データ120と、把持機構動作量データ122とに基づいて、作業空間内の障害物により妨げられずに把持対象物を把持可能な把持機構の位置及び姿勢を算出し、把持機構位置姿勢データ123を生成する。
【0076】
以上の機能構成は、ロボット1の動作と位置及び姿勢の制御に関する構成を理解容易にするために、主な処理内容に応じて分類したものである。構成要素の分類の仕方や名称によって、本願発明が制限されることはない。ロボット1の構成は、処理内容に応じて、さらに多くの構成要素に分類することもできる。また、1つの構成要素がさらに多くの処理を実行するように分類することもできる。また、各構成要素の処理は、1つのハードウェアで実行されてもよいし、複数のハードウェアで実行されてもよい。
【0077】
次に、上記の各種機能により実現される処理について、図面を参照して説明する。以下では、円筒状の把持対象物を把持する場合を例に挙げて説明する。
【0078】
図5は、把持対象物形状近似データ生成処理の一例を示すフロー図である。
【0079】
S10:形状近似部101は、把持対象物形状データ112を記憶部から取得する。把持対象物形状データ112は、例えば、図6(A)に示すように、XYZ軸を有する座標系で表されるデータである。
【0080】
S20:形状近似部101は、S10で取得した把持対象物形状データが表す把持対象物の形状の表面に、節点を設定する。本実施形態では、節点とは、面と面とを接合する点を意味するものとする。形状近似部101は、例えば、図6(B)に示すように、把持対象物の形状を近似できるように、面と面の接合部分に略均等な(均等も含む)間隔で複数の節点(a〜x)を配置する。
【0081】
S30:形状近似部101は、S20で設定した各節点を結ぶ直線を設定する。本実施形態では、形状近似部101は、把持対象物の形状を近似する平面が形成されるように、各節点を直線で結ぶ(図6(C)参照)。
【0082】
S40:形状近似部101は、S30で設定した節点間の直線で囲まれた領域を、把持対象物の形状を近似する平面要素として特定する。例えば、図6(C)に示すように、把持対象物は、14個の平面要素(外側の6面、内側の6面、上下の2面)により近似される。
【0083】
また、形状近似部101は、特定した各平面要素について、その法線ベクトル(平面に対して垂直なベクトル)であって、把持対象物の外を向く(把持対象物の形状が占める領域側でない方向の)法線ベクトルを算出する(図6(D)参照)。なお、図6(D)では、平面要素abnmと平面要素ghtsのみを図示している。
【0084】
そして、形状近似部101は、例えば、図7に示すような把持対象物形状近似データ114を生成する。把持対象物形状近似データ114は、平面要素を特定する平面要素番号ごとに、当該平面要素を構成する節点の座標と、当該平面要素の法線ベクトルとを含む。
【0085】
以上のようにして、把持対象物形状近似データ114が生成される。
【0086】
図8は、把持機構接触面群データ生成処理の一例を示すフロー図である。
【0087】
S110:把持機構接触面群生成部102は、予め用意された又は生成された把持機構形状近似データ113を記憶部から取得する。把持機構形状近似データ113は、例えば、図9に示すように、ハンド8の各指9を平面要素で近似したデータである。すなわち、把持機構形状近似データ113は、例えば、平面要素を特定する平面要素番号ごとに、当該平面要素が属する指を特定する識別情報と、当該平面要素を構成する節点の座標と、当該平面要素の法線ベクトル(把持機構の外を向く(把持機構の形状が占める領域側でない方向の)法線ベクトル)とを含む。把持機構形状近似データ113の生成方法は、把持対象物形状近似データ114と同様なので、説明を省略する。
【0088】
S120:把持機構接触面群生成部102は、S110で取得した把持機構形状近似データ113の中から、把持対象物と接触させるべき平面要素(接触面)を抽出する。把持機構接触面群生成部102は、例えば、図10に示すように、向かい側に指がある平面要素(把持機構接触面)を、把持対象物と接触させるべき平面要素(接触面)として抽出する。また、抽出した各平面要素の法線ベクトルを把持機構形状近似データ113から取得する。抽出された平面要素のデータは、例えば、図11に示すように、平面要素を特定する平面要素番号ごとに、当該平面要素が属する指を特定する識別情報と、当該平面要素を構成する節点の座標と、当該平面要素の法線ベクトルとを含む。
【0089】
S130:把持機構接触面群生成部102は、S120で抽出した平面要素から、把持対象物を把持するための平面要素の組み合わせ(接触面群)を特定する。
【0090】
S130の詳細を、図12を参照して説明する。図12は、把持機構接触面群を特定する処理の一例を示すフロー図である。
【0091】
S1301:把持機構接触面群生成部102は、把持機構接触面群の数を示す変数countを0に設定する。
【0092】
S1302:把持機構接触面群生成部102は、S120で抽出した平面要素のデータに含まれる各平面要素番号を指すインデックスiを0に設定する。
【0093】
S1303:把持機構接触面群生成部102は、インデックスiが、S120で抽出した平面要素の総数Nより小さいか否かを判定する。Nより小さい場合(S1303:YES)、処理をS1304に進める。N以上の場合(S1303:NO)、処理をC(S1318)に進める。
【0094】
S1304:把持機構接触面群生成部102は、S120で抽出した平面要素のデータに含まれる各平面要素番号を指すインデックスjを0に設定する。
【0095】
S1305:把持機構接触面群生成部102は、インデックスjがNより小さいか否かを判定する。Nより小さい場合(S1305:YES)、処理をS1307に進める。N以上の場合(S1305:NO)、処理をS1306)に進める。
【0096】
S1306:把持機構接触面群生成部102は、インデックスiを1カウントアップする。そして、処理をS1303に戻す。
【0097】
S1307:把持機構接触面群生成部102は、インデックスjがインデックスiと等しくないか否かを判定する。等しくない場合(S1307:YES)、処理をS1309に進める。等しい場合(S1307:NO)、処理をB(S1308)に進める。
【0098】
S1308:把持機構接触面群生成部102は、インデックスjを1カウントアップする。そして、処理をS1305に戻す。
【0099】
S1309:把持機構接触面群生成部102は、インデックスiが指す平面要素(以下、「平面要素i」と表す)と、インデックスjが指す平面要素(以下、「平面要素j」と表す)との組み合わせが、把持機構接触面群として特定済みか否かを判定する。すなわち、把持機構接触面群データ115に含まれているか否かを判定する。特定済みでない場合(S1309:NO)、処理をS1310に進める。特定済みである場合(S1309:YES)、処理をB(S1308)に進める。
【0100】
S1310:把持機構接触面群生成部102は、平面要素iの法線ベクトル(ただし、正規化するものとする)と、平面要素jの法線ベクトル(ただし、正規化するものとする)の内積を計算する。なお、図13の左側に示すように、二つの平面の法線ベクトルNA及びNBが互いに逆向きであるとき、正規化した法線ベクトルNA及びNBの内積は、−1となる。
【0101】
S1311:把持機構接触面群生成部102は、S1310の計算結果に基づいて、平面要素iと平面要素jとが対向するか否かを判定する。ここで、「対向」とは、互いの法線ベクトルの内積が−1であることを指す。対向する場合(S1311:YES)、処理をS1312に進める。対向しない場合(S1311:NO)、処理をB(S1308)に進める。
【0102】
S1312:把持機構接触面群生成部102は、平面要素iの平面要素jに対する交差を計算する。ここで、「交差」とは、図13の右側に示すように、一方の平面要素(平面要素i)を構成する各節点から当該平面要素の法線ベクトル方向に伸びる直線が、全て他方の平面要素(平面要素j)に交差する(通過する)ことをいう。
【0103】
S1313:把持機構接触面群生成部102は、S1312の計算結果に基づいて、平面要素iが平面要素jに交差するか否かを判定する。交差する場合(S1313:YES)、処理をS1314に進める。交差しない場合(S1313:NO)、処理をB(S1308)に進める。
【0104】
S1314:把持機構接触面群生成部102は、平面要素jの平面要素iに対する交差を計算する。
【0105】
S1315:把持機構接触面群生成部102は、S1314の計算結果に基づいて、平面要素jが平面要素iに交差するか否かを判定する。交差する場合(S1315:YES)、処理をS1316に進める。交差しない場合(S1315:NO)、処理をB(S1308)に進める。
【0106】
S1316:把持機構接触面群生成部102は、互いに対向かつ交差する平面要素i及びjの組み合わせを、把持機構接触面群データ115に記録する。把持機構接触面群データ115は、例えば、図14に示すように、把持機構接触面群を特定する把持機構接触面群番号ごとに、接触面群を構成する平面要素の平面要素番号を含む。
【0107】
S1317:把持機構接触面群生成部102は、把持機構接触面群の数を示す変数countを1インクリメントする。そして、処理をB(S1308)に進める。
【0108】
S1318:把持機構接触面群生成部102は、変数countが0よりも大きいか否かを判定する。0よりも大きい場合(S1318:YES)、処理をS1319に進める。0以下である場合(S1318:NO)、処理をS1320に進める。
【0109】
S1319:把持機構接触面群生成部102は、把持機構接触面群が有ることを、把持機構接触面群データ115を使用する他の機能部に通知する。そして、本フローを終了する。
【0110】
S1320:把持機構接触面群生成部102は、把持機構接触面群が無いことを、把持機構接触面群データ115を使用する他の機能部に通知する。そして、本フローを終了する。
【0111】
以上のようにして、把持機構接触面群データ115が生成される。
【0112】
図15は、把持対象物接触面群データ生成処理の一例を示すフロー図である。
【0113】
S210:把持対象物接触面群生成部103は、予め用意された又は生成された把持対象物形状近似データ114を記憶部から取得する。
【0114】
S220:把持対象物接触面群生成部103は、予め用意された又は生成された把持機構接触面群データ115を記憶部から取得する。
【0115】
S230:把持対象物接触面群生成部103は、ハンドの各接触面群により把持可能な把持対象物の接触面の組みあ合わせを特定し、把持対象物接触面群データ116を生成する。
【0116】
S230の詳細を、図16を参照して説明する。図16は、把持対象物接触面群と把持機構接触面群とを関連付ける処理の一例を示すフロー図である。
【0117】
S2301:把持対象物接触面群生成部103は、把持機構接触面群データ115に含まれる各把持機構接触面群を指すインデックスiを0に設定する。
【0118】
S2302:把持対象物接触面群生成部103は、インデックスiが、把持機構接触面群データ115に含まれる把持機構接触面群の総数Nより小さいか否かを判定する。Nより小さい場合(S2302:YES)、処理をS2303に進める。N以上の場合(S2302:NO)、本フローを終了する。
【0119】
S2303:把持対象物接触面群生成部103は、インデックスiが指す把持機構接触面群(以下、「把持機構接触面群i」と表す)に関連付けられた把持対象物接触面群の総数を示す変数count[i]を0に設定する。
【0120】
S2304:把持対象物接触面群生成部103は、把持対象物形状近似データ114に含まれる各平面要素番号を指すインデックスjを0に設定する。
【0121】
S2305:把持対象物接触面群生成部103は、インデックスjが、把持対象物形状近似データ114に含まれる平面要素の総数Mよりも小さいか否かを判定する。Mより小さい場合(S2305:YES)、処理をS2307に進める。M以上の場合(S2305:NO)、処理をS2306に進める。
【0122】
S2306:把持対象物接触面群生成部103は、インデックスiを1カウントアップする。そして、処理をS2302に戻す。
【0123】
S2307:把持対象物接触面群生成部103は、把持機構接触面群iの一方の平面要素が、把持対象物形状近似データの平面要素jと対向するように、回転変換を行う。すなわち、把持機構接触面群iの一方の平面要素の法線ベクトルと、把持対象物形状近似データの平面要素jの法線ベクトルとの内積が、−1となるように、いずれか一方若しくは両方の平面要素の位置及び姿勢を回転させる変換処理を行う。
【0124】
S2308:把持対象物接触面群生成部103は、把持対象物形状近似データ114に含まれる各平面要素番号を指すインデックスkを0に設定する。
【0125】
S2309:把持対象物接触面群生成部103は、インデックスkが、把持対象物形状近似データ114に含まれる平面要素の総数Mよりも小さいか否かを判定する。Mより小さい場合(S2309:YES)、処理をS2311に進める。M以上の場合(S2309:NO)、処理をA(S2310)に進める。
【0126】
S2310:把持対象物接触面群生成部103は、インデックスjを1カウントアップする。そして、処理をS2305に戻す。
【0127】
S2311:把持対象物接触面群生成部103は、インデックスjがインデックスkと等しくないか否かを判定する。等しくない場合(S2311:YES)、処理をS2312に進める。等しい場合(S2311:NO)、処理をS2314に進める。
【0128】
S2312:把持対象物接触面群生成部103は、把持対象物形状近似データの平面要素jと平面要素kとの組み合わせが、把持対象物接触面群として特定済みか否かを判定する。すなわち、把持対象物接触面群データ116に含まれているか否かを判定する。特定済みでない場合(S2312:NO)、処理をS2313に進める。特定済みである場合(S2312:YES)、処理をS2314に進める。
【0129】
S2313:把持対象物接触面群生成部103は、把持機構接触面群iの他方の平面要素が、把持対象物形状近似データの平面要素kと対向するか否かを判定する。すなわち、把持機構接触面群iの他方の平面要素の法線ベクトルと、平面要素kの法線ベクトルとの内積が−1であるか否かを判定する。対向する場合(S2313:YES)、処理をS2315に進める。対向しない場合(S2313:NO)、処理をS2314に進める。
【0130】
S2314:把持対象物接触面群生成部103は、インデックスkを1カウントアップする。そして、処理をS2309に戻す。
【0131】
S2315:把持対象物接触面群生成部103は、平面要素iと平面要素kとの組み合わせを、把持機構接触面群iと関連付けて、把持対象物接触面群データ116に記録する。把持対象物接触面群データ116は、例えば、図17に示すように、把持対象物接触面群を特定する把持対象物接触面群番号ごとに、当該把持対象物接触面群を構成する平面要素の平面要素番号と、当該把持対象物接触面群を把持可能な把持機構接触面群の把持機構接触面群番号と、を含む。
【0132】
S2316:把持対象物接触面群生成部103は、把持機構接触面群iに関連付けられた把持対象物接触面群の総数を示す変数count[i]を1インクリメントする。そして、処理をB(S2314)に戻す。
【0133】
以上のようにして、把持対象物接触面群データが生成される。
【0134】
図18は、把持対象物接触面群選択処理の一例を示すフロー図である。
【0135】
S310:把持対象物接触面群選択部105は、障害物データ119を記憶部から取得する。
【0136】
S320:把持対象物接触面群選択部105は、把持対象物接触面群データ116を記憶部から取得する。
【0137】
S330:把持対象物接触面群選択部105は、把持対象物位置姿勢データ118を記憶部から取得する。
【0138】
S340:把持対象物接触面群選択部105は、把持対象物位置姿勢データ118から特定される把持対象物の位置及び姿勢(作業空間上の床などの基準面に置かれた状態の位置及び姿勢)となるように、各把持対象物接触面群の位置及び姿勢を計算する。
【0139】
S350:把持対象物接触面群選択部105は、S340で計算した位置及び姿勢において、障害物と干渉しない(障害物に隠れたり覆われたりしない)把持対象物接触面群を特定する。ここで、障害物と干渉しない接触面群とは、例えば、図19に示すように、把持対象物が床の上に置かれている場合、当該床と接する面afmrを含む接触面群以外の接触面群である。
【0140】
S340〜S350の詳細を、図20を参照して説明する。図20は、障害物と干渉しない把持対象接触面群を選択する処理の一例を示すフロー図である。
【0141】
S3501:把持対象物接触面群選択部105は、選択された把持対象物接触面群データ120に記録される把持対象物接触面群の番号示すインデックスkを0に設定する。
【0142】
S3502:把持対象物接触面群選択部105は、把持対象物接触面群データ116に含まれる各把持対象物接触面群を指すインデックスiを0に設定する。
【0143】
S3503:把持対象物接触面群選択部105は、インデックスiが、把持対象物接触面群データ116に含まれる把持対象物接触面群の総数Nより小さいか否かを判定する。Nより小さい場合(S3503:YES)、処理をS3504に進める。N以上の場合(S3503:NO)、本フローを終了する。
【0144】
S3504:把持対象物接触面群選択部105は、把持対象物接触面群iを構成する平面要素が、把持対象物の位置及び姿勢となるように、回転並進変換を行う。すなわち、S330で取得した把持対象物位置姿勢データ118から特定される把持対象物の位置及び姿勢(作業空間上の床などの基準面に置かれた状態の位置及び姿勢)となるように、把持対象物接触面群iを回転させたり、並進させたりする変換処理を行う。
【0145】
S3505:把持対象物接触面群選択部105は、回転並進変換された把持対象物接触面群iを構成する各平面要素と、把持対象物が置かれている床との距離が、十分に離れているか否かを判定する。例えば、把持対象物接触面群iを構成する平面要素の少なくとも一つが、床の方向を向いており(対向していなくてもよい)、当該平面要素と床の間の距離が所定距離より小さい場合に、十分離れていないと判定することができる。床の領域は、障害物データ119から特定することができる。床と十分に離れている場合(S3505:YES)、処理をS3506に進める。床と十分に離れていない場合(S3505:NO)、処理をA(S3510)に進める。
【0146】
S3506:把持対象物接触面群選択部105は、回転並進変換された把持対象物接触面群iを構成する各平面要素と、周辺機器との距離が、十分に離れているか否かを判定する。周辺機器とは、例えば、把持対象物に加工を施すための装置などである。例えば、把持対象物接触面群iを構成する平面要素の少なくとも一つが、周辺機器の方向を向いており(対向していなくてもよい)、当該平面要素と周辺機器の間の距離が所定距離より小さい場合に、十分離れていないと判定することができる。周辺機器の領域は、障害物データ119から特定することができる。周辺機器と十分に離れている場合(S3506:YES)、処理をS3507に進める。周辺機器と十分に離れていない場合(S3506:NO)、処理をA(S3510)に進める。
【0147】
S3507:把持対象物接触面群選択部105は、回転並進変換された把持対象物接触面群iを構成する各平面要素と、その他の部材との距離が、十分に離れているか否かを判定する。その他の部材は、例えば、把持対象物の周辺に置かれた他の把持対象物や、ロボット1自身などである。例えば、把持対象物接触面群iを構成する平面要素の少なくとも一つが、その他の部材の方向を向いており(対向していなくてもよい)、当該平面要素とその他の部材の間の距離が所定距離より小さい場合に、十分離れていないと判定することができる。その他の部材の領域は、障害物データ119から特定することができる。その他の部材と十分に離れている場合(S3507:YES)、処理をS3508に進める。その他の部材と十分に離れていない場合(S3507:NO)、処理をA(S3510)に進める。
【0148】
S3508:把持対象物接触面群選択部105は、把持対象物接触面群iを、選択された把持対象物接触面群kとして、選択された把持対象物接触面群データ120に記録する。選択された把持対象物接触面群データ120は、例えば、図21に示すように、把持対象物接触面群を特定する把持対象物接触面群番号ごとに、当該把持対象物接触面群を構成する平面要素の平面要素番号と、当該把持対象物接触面群を把持可能な把持機構接触面群の把持機構接触面群番号と、を含む。図17と比較して、障害物と干渉する平面要素を含む把持対象物接触面群以外のデータが選択されていることが分かる。
【0149】
S3509:把持対象物接触面群選択部105は、インデックスkを1カウントアップする。そして、処理をA(S3510)に進める。
【0150】
S3510:把持対象物接触面群選択部105は、インデックスiを1カウントアップする。そして、処理をS3503に戻す。
【0151】
以上のようにして、選択された把持対象物接触面群データが生成される。
【0152】
図22は、把持機構動作量算出処理の一例を示すフロー図である。
【0153】
S410:把持機構動作量算出部106は、選択された把持対象物接触面群データ120を記憶部から取得する。
【0154】
S420:把持機構動作量算出部106は、把持機構動作範囲データ121を記憶部から取得する。
【0155】
S430:把持機構動作量算出部106は、把持機構接触面群データ115を記憶部から取得する。
【0156】
S440:把持機構動作量算出部106は、各把持機構接触面群を構成する平面要素間隔δと、各把持対象物接触面群を構成する平面要素間隔Δとが一致する把持機構の動作量を算出する。例えば、図23に示すように、把持機構接触面群が指Aの平面要素(節点1、2、6、5)と指Bの平面要素(節点0、3、7、4)とで構成されている場合、平面要素間隔δは、これらの平面要素を対向させた場合の平面要素間の直線距離(最短距離)となる。また、把持対象物接触面群が平面要素(節点abnm)と平面要素(節点deqp)とで構成されている場合、平面要素間隔Δは、これらの対向させた場合の平面要素間の直線距離(最短距離)となる。動作量は、例えば、間隔δを、基準となる所定の間隔から間隔Δまで開く又は閉じるための移動量である。
【0157】
S440の詳細を、図24を参照して説明する。図24は、把持機構動作量を特定する処理の一例を示すフロー図である。
【0158】
S4401:把持機構動作量算出部106は、選択された把持対象物接触面群データ120に含まれる各把持対象物接触面群を指すインデックスiを0に設定する。
【0159】
S4402:把持機構動作量算出部106は、インデックスiが、選択された把持対象物接触面群データ120に含まれる把持対象物接触面群の総数Nより小さいか否かを判定する。Nより小さい場合(S4402:YES)、処理をS4403に進める。N以上の場合(S4402:NO)、本フローを終了する。
【0160】
S4403:把持機構動作量算出部106は、把持対象物接触面群iの平面要素間隔Δを計算する。
【0161】
S4404:把持機構動作量算出部106は、S420で取得した把持機構動作範囲データ121に基づいて、平面要素間隔Δが、把持対象物接触面群iに関連付けられた把持機構接触面群の可動範囲内で把持できるか否かを判定する。例えば、把持対象物接触面群iに関連付けられた把持機構接触面群の平面要素の最小の間隔をδmin、最大の間隔をδmaxとすると、δmin<間隔Δ<δmaxであれば、可動範囲内で把持できると判定することができる。可動範囲内である場合(S4404:YES)、処理をS4405に進める。可動範囲内でない場合(S4404:NO)、処理をS4406に進める。
【0162】
S4405:把持機構動作量算出部106は、間隔Δとなるような動作量を、把持対象物接触面群iに関連付けられた把持機構接触面群の動作量として設定し、把持機構動作量データ122に記録する。把持機構動作量データ122は、例えば、把持対象物接触面群を特定する把持対象物接触面群番号ごとに、当該把持対象物接触面群を構成する平面要素の平面要素番号と、当該把持対象物接触面群を把持する把持機構接触面群の把持機構接触面群番号と、当該把持機構接触面群の動作量を含む。
【0163】
S4406:把持機構動作量算出部106は、無効(把持できないこと示す情報)を、把持対象物接触面群iに関連付けられた把持機構接触面群の動作量として設定し、把持機構動作量データ122に記録する。
【0164】
S4407:把持機構動作量算出部106は、インデックスiを1インクリメントする。そして、処理をS4402に戻す。
【0165】
以上のようにして、把持機構動作量データが生成される。なお、上記では、動作量として把持機構接触面群の平面要素の間隔を例示しているが、これに限られない。
【0166】
図25は、把持機構位置姿勢設定処理の一例を示すフロー図である。
【0167】
S510:把持機構位置姿勢設定部107は、予め用意された又は生成された把持機構形状近似データ113を記憶部から取得する。
【0168】
S520:把持機構位置姿勢設定部107は、予め用意された又は生成された把持対象物形状近似データ114を記憶部から取得する。
【0169】
S530:把持機構位置姿勢設定部107は、障害物データ119を記憶部から取得する。
【0170】
S540:把持機構位置姿勢設定部107は、選択された把持対象物接触面群データ120を記憶部から取得する。
【0171】
S550:把持機構位置姿勢設定部107は、把持対象物位置姿勢データ118を記憶部から取得する。
【0172】
S560:把持機構位置姿勢設定部107は、把持機構動作量データ122を記憶部から取得する。
【0173】
S570:把持機構位置姿勢設定部107は、ロボット1及び把持機構と、それ以外のものとが干渉しない把持機構の位置及び姿勢を算出する。
【0174】
S570の詳細を、図26〜27を参照して説明する。図26は、障害物と干渉しない把持機構の位置及び姿勢を特定する処理の一例を示すフロー図(その1)である。図27は、障害物と干渉しない把持機構の位置及び姿勢を特定する処理の一例を示すフロー図(その2)である。
【0175】
S5701:把持機構位置姿勢設定部107は、選択された把持対象物接触面群データ120と把持機構動作量データ122とに基づいて、選択された把持対象物接触面群データ120に含まれる把持対象物接触面群のうち、関連付けられた把持機構接触面群の動作量が無効でない各把持対象物接触面群を指すインデックスiを0に設定する。
【0176】
S5702:把持機構位置姿勢設定部107は、インデックスiが、選択された把持対象物接触面群データ120に含まれる把持対象物接触面群のうち、関連付けられた把持機構接触面群の動作量が無効でない把持対象物接触面群の総数Nより小さいか否かを判定する。Nより小さい場合(S5702:YES)、処理をS5703に進める。N以上の場合(S5702:NO)、本フローを終了する。
【0177】
S5703:把持機構位置姿勢設定部107は、把持対象物接触面群iに関連付けられた把持機構接触面群(以下、「把持機構接触面群i」という)で、把持対象物接触面群iを把持可能な位置及び姿勢の総数を示す変数count[i]を0に設定する。
【0178】
S5704:把持機構位置姿勢設定部107は、把持対象物接触面群iの基準の軸と、把持機構接触面群iの基準の軸とが、平行になる把持機構の初期位置及び初期姿勢を計算する。
【0179】
ここで、把持対象物接触面群iの軸は、例えば、図28に示すように、把持対象物接触面群iを構成する平面要素間の直線距離(最短距離)Δ1と平行な軸Aである。軸Aの位置は、特に限定されないが、例えば、少なくともいずれか一方の平面要素あるいは平面要素の重心を通過する位置とすることができる。把持機構接触面群iの軸は、把持機構接触面群iを構成する平面要素間の直線距離(最短距離)δ1と平行な軸aである。軸aの位置は、特に限定されないが、例えば、少なくともいずれか一方の平面要素あるいは平面要素の重心を通過する位置とすることができる。本フローにおいては、δ1=Δ1に設定して処理を行う。
【0180】
また、平行とは、例えば、図28に示すように、軸Aと軸aが平行であり、かつ、軸Aと軸aの対応する側の節点同士を結ぶ直線が、各軸と直交する状態をいうものとする。すなわち、軸Aと軸aが向かい合う辺をなす矩形の4つの角は、全て90度となる。
【0181】
なお、初期位置及び初期姿勢における軸Aと軸aの相対的な距離や、軸Aと軸aの相対的な位関係は、特に限定されないが、例えば、把持対象物位置姿勢データ118から特定される現在の把持対象物の位置における軸Aの位置と、現在のロボット1のハンドの位置における軸aの位置とすることができる。
【0182】
S5705:把持機構位置姿勢設定部107は、ハンド8の角度θを0に設定する。ここで、角度θは、例えば、図29(把持対象物及び把持機構を側面から見ている)に示すように、軸aを基準に、把持機構接触面群iを初期角度(θ=0)から回転させる角度である。初期角度は、特に限定されないが、例えば、床に対してハンドが水平となる角度とすることができる。
【0183】
S5706:把持機構位置姿勢設定部107は、角度θが所定角度(例えば、360度)より小さいか否かを判定する。所定角度より小さい場合(S5706:YES)、処理をS5707に進める。所定角度以上の場合(S5706:NO)、処理をD(図27のS5726)に進める。
【0184】
S5707:把持機構位置姿勢設定部107は、把持機構接触面群iを角度θだけ回転させたときの、把持機構形状を計算する。すなわち、把持機構接触面群iを構成する平面要素を角度θだけ回転させたときの、作業空間中のハンド8が占める領域の形状を算出する。
【0185】
S5708:把持機構位置姿勢設定部107は、S5707で算出した角度θ回転した把持機構接触面群iの位置及び姿勢のときの把持機構形状を並進させる方向と距離を示すインデックスjを0に設定する。
【0186】
S5709:把持機構位置姿勢設定部107は、インデックスjが、把持機構形状を並進させる方向と距離の総数Mより小さいか否かを判定する。Mより小さい場合(S5709:YES)、処理をS5711に進める。M以上の場合(S5709:NO)、処理をC(S5710)に進める。
【0187】
ここで、把持機構形状を並進させる方向と距離とは、把持機構と把持対象物を平行に保ったまま、把持機構を初期位置姿勢から把持対象物に向かって移動(並進)させる方向と距離である。例えば、図29に示すように、方向と距離(Xj、Yj、Zj)は、軸aが把持対象物接触面群の平面要素の領域内の任意の点Pjまで移動する方向と距離である。図では、点P0と当該点に向かう方向と距離(X0、Y0、Z0)、点P1と当該点に向かう方向と距離(X1、Y1、Z1)、点P2と当該点に向かう方向と距離(X2、Y2、Z2)が示されている。点Pを平面要素の領域内のどの位置に設定するかは、特に限定されないが、例えば、平面要素の重心の周辺など、実際に把持したときに把持対象物がなるべく不安定にならないような位置に複数設定すればよい。
【0188】
S5710:把持機構位置姿勢設定部107は、角度θに、所定の角度dθ(例えば、10度)を加えたものを新しい角度θとする。そして、処理をS5706に戻す。
【0189】
S5711:把持機構位置姿勢設定部107は、S5707で算出した把持機構形状を並進させる方向と距離(X、Y、Z)を、点Pjに対応する(Xj、Yj、Zj)に設定する。
【0190】
S5712:把持機構位置姿勢設定部107は、S5707で算出した把持機構形状を、軸aの位置から(X、Y、Z)だけ並進させる。
【0191】
S5713:把持機構位置姿勢設定部107は、S5712で(X、Y、Z)だけ並進をさせた状態において、把持機構とロボット全体がとる位置及び姿勢を特定するとともに、そのときの把持機構とロボット全体の形状が占める空間上の領域を特定し、当該領域が、障害物(例えば、床、周辺機器など、把持対象物以外のロボットの周辺の物)に干渉しないか否かを判定する。
【0192】
なお、把持機構形状の並進の開始から終了までの間、把持機構とロボット全体がとる位置及び姿勢と形状が占める一連の領域とを特定し、障害物(例えば、床、周辺機器など、把持対象物以外のロボットの周辺の物)に干渉しないか否かを判定するようにしてもよい。
【0193】
把持機構形状が障害物に干渉しない場合(S5713:YES)、把持機構位置姿勢設定部107は、処理をS5714に進める。干渉する場合(S5713:NO)、処理をS5715に進める。
【0194】
S5714:把持機構位置姿勢設定部107は、把持機構接触面群iを構成する各平面要素と、把持対象物接触面群iを構成する各平面要素とが、互いに交差するか否かを判定する。交差する場合(S5714:YES)、処理をS5716に進める。交差しない場合(S5714:NO)、処理をS5715に進める。
【0195】
S5715:把持機構位置姿勢設定部107は、インデックスjを1インクリメントする。
【0196】
S5716:把持機構位置姿勢設定部107は、インデックスkを0に設定する。インデックスkは、インデックスiと同様である。
【0197】
S5717:把持機構位置姿勢設定部107は、インデックスkがNより小さいか否かを判定する。Nより小さい場合(S5717:YES)、処理をS5718に進める。N以上の場合(S5717:NO)、処理をB(図27のS5724)に進める。
【0198】
S5718:把持機構位置姿勢設定部107は、インデックスkがインデックスiと等しくないか否かを判定する。インデックスiと等しくない場合(S5718:YES)、処理をS5720に進める。インデックスiと等しい場合(S5718:NO)、処理をS5719に進める。
【0199】
S5719:把持機構位置姿勢設定部107は、インデックスkを1インクリメントする。そして、処理をS5717に戻す。
【0200】
S5720:把持機構位置姿勢設定部107は、把持対象物接触面群kを構成する平面要素と、把持対象物接触面群iを構成する平面要素とが一致する否かを判定する。一致する場合(S5720:YES)、処理をS5721に進める。一致しない場合(S5720:NO)、処理をS5719に戻す。
【0201】
S5721:把持機構位置姿勢設定部107は、S5712で(X、Y、Z)だけ並進をさせた状態の把持機構形状において、把持機構接触面群kを構成する各平面要素と、把持対象物接触面群iを構成する各平面要素とが、互いに交差するか否かを判定する。交差する場合(S5721:YES)、処理をA(図27のS5722)に進める。交差しない場合(S5721:NO)、処理をS5719に戻す。
【0202】
S5722:把持機構位置姿勢設定部107は、把持対象物接触面群iについて、把持機構接触面群i及びkと、把持機構の位置及び姿勢(Xj、Yj、Zj、θ)とを関連付けて、把持機構位置姿勢データ123に記録する。把持機構位置姿勢データ123は、例えば、把持対象物接触面群を特定する把持対象物接触面群番号ごとに、当該把持対象物接触面群を構成する平面要素の平面要素番号と、当該把持対象物接触面群を把持可能な把持機構接触面群の把持機構接触面群番号及びその把持機構の位置及び姿勢(Xj、Yj、Zj、θ)と、を含む。
【0203】
S5723:把持機構位置姿勢設定部107は、把持対象物接触面群iを把持可能な把持機構接触面群iの位置及び姿勢の総数を示す変数count[i]を、1インクリメントする。そして、処理をC(S5710)に戻す。
【0204】
S5724:把持機構位置姿勢設定部107は、把持対象物接触面群iについて、把持機構接触面群iと、把持機構の位置及び姿勢(Xj、Yj、Zj、θ)とを関連付けて、把持機構位置姿勢データ123に記録する。
【0205】
S5725:把持機構位置姿勢設定部107は、把持対象物接触面群iを把持可能な把持機構接触面群iの位置及び姿勢の総数を示す変数count[i]を、1インクリメントする。そして、処理をC(S5710)に戻す。
【0206】
S5726:把持機構位置姿勢設定部107は、count[i]が0より大きいか否かを判定する。0より大きい場合(S5726:YES)、処理をS5727に進める。0である場合(S5726:NO)、処理をS5728に進める。
【0207】
S5727:把持機構位置姿勢設定部107は、把持対象物接触面群iについて、無効(把持不可能)であることを示す情報を記録する。そして、処理をS5728に進める。
【0208】
S5728:把持機構位置姿勢設定部107は、インデックスiを1インクリメントする。そして、処理をE(S5702)に戻す。
【0209】
以上のようにして、把持機構位置姿勢データが生成される。なお、上記のフローでは、一つの軸aの位置について角度θを変更して把持機構の位置及び姿勢を探索しているが、軸aの位置を複数の位置に変更し、各軸aの位置ごとに角度θを変更して把持機構の位置及び姿勢を探索するようにしてもよい。軸aの位置は、例えば、作業空間の任意の位置とすることができる。
【0210】
なお、コントローラー10は、生成された把持機構位置姿勢データに基づいて、いずれかの、把持対象物接触面群とそれに関連付けられた把持機構接触面群及び把持機構の位置及び姿勢(Xj、Yj、Zj、θ)を選択し、ハンド8がこの把持位置及び把持姿勢となるように、ハンド8を実際に動作させる。
【0211】
上述のフローの各処理単位は、ロボット1の処理を理解容易にするために、主な処理内容に応じて分割したものである。処理単位の分割の仕方や名称によって、本願発明が制限されることはない。ロボット1の処理は、処理内容に応じて、さらに多くの処理単位に分割することもできる。また、1つの処理単位がさらに多くの処理を含むように分割することもできる。
【0212】
以上、本発明の一実施形態の一例について説明した。本実施形態によれば、障害物等と接触することなく把持対象物を把持可能な把持位置及び把持姿勢を決定することができる。
【0213】
例えば、本実施形態では、障害物と干渉していない把持対象物接触面群が選択される。また、選択された把持対象物接触面群に中から、把持機構の動作範囲で把持可能な把持対象物接触面群が特定される。また、特定された把持対象物接触面群を把持機構が把持するときに、把持機構が取り得る様々な位置及び姿勢のうち、ロボットや把持機構が障害物と干渉しない把持機構の位置及び姿勢が特定される。このような構成により、ロボットが障害物等と接触することなく把持対象物を把持可能な把持位置及び把持姿勢を決定することができる。また、把持対象物が障害物と干渉していたり、障害物に隠れていたりしても、把持対象物を把持可能な把持位置及び把持姿勢を決定することができる。
【0214】
また、例えば、本実施形態では、把持位置及び把持姿勢を特定する前に、把持対象物接触面群のうち、障害物と干渉しておらず、かつ把持機構の動作範囲で把持可能なものが、候補として抽出される。このような構成により、把持位置及び把持姿勢を特定する際の処理回数が削減され、演算負荷が軽減される。また、各角度の把持機構の位置及び姿勢ごとに、障害物に干渉しないものが一つでも見つかれば、その角度の位置及び姿勢を特定する処理を終了するので、処理回数が削減され、演算負荷が軽減される。
【0215】
なお、上記の本発明の実施形態は、本発明の要旨と範囲を例示することを意図し、限定するものではない。多くの代替物、修正および変形例が当業者にとって明らかである。
【0216】
また、例えば、上記の実施形態では、ロボット自身が自律的に把持位置及び把持姿勢を決定しているが、コントローラー10の機能の少なくとも一部を、ロボットが通信可能な外部装置やシステムにおいて行ってもよい。すなわち、ロボットとシステムとで機能を分散し、協働することによりロボットの制御が行われるようにしてもよい。
【符号の説明】
【0217】
1:ロボット、2:頭部、3:胴体部、4:脚部、5:アーム、6:ジョイント、7:リンク、8:ハンド、9:指、10:コントローラー、11:CPU、12:RAM、13:ROM、14:I/F回路、15:通信装置、20:撮像部、30:可動部、31:アクチュエーター、32:センサー、101:形状近似部、102:把持機構接触面群生成部、103:把持対象物接触面群生成部、104:把持対象物位置姿勢取得部、105:把持対象物接触面群選択部、106:把持機構動作量算出部、107:把持機構位置姿勢設定部、111:把持機構形状データ、112:把持対象物形状データ、113:把持機構形状近似データ、114:把持対象物形状近似データ、115:把持機構接触面群データ、116:把持対象物接触面群データ、117:把持対象物認識処理データ、118:把持対象物位置姿勢データ、119:障害物データ、120:選択された把持対象物接触面群データ、121:把持機構動作範囲データ、122:把持機構動作量データ、123:把持機構位置姿勢データ
【技術分野】
【0001】
本発明は、把持ロボット、制御装置、制御方法、及びプログラムに関する。
【背景技術】
【0002】
ロボットハンド等の把持機構により部品や工具等の把持対象物(以下、「ワーク」ともいう)を把持することができるロボット(以下、「把持ロボット」ともいう)が知られている。また、把持ロボットを一つ以上用いることにより、例えば、部品搬送や製品組み立てを行い、生産ラインを自動化することができる。
【0003】
一般的に、把持対象物を把持するために行われる把持ロボットの一連の動作と位置及び姿勢は、その所定の可動範囲の中で安全に実現する必要がある。すなわち、把持対象物を把持するロボットの一連の動作中に、当該ロボットが障害物や把持対象物等に衝突したり接触したりしないように制御する必要がある。また、このような把持ロボットの制御においては、把持対象物自体の形状と位置及び姿勢を考慮して、把持機構の動作と位置及び姿勢を決定する必要がある。
【0004】
例えば、特許文献1には、事前に教示された、又は算出された把持位置及び把持姿勢が、アーム、及びロボットの可動範囲外であった場合に、当該把持位置及び把持姿勢をシフトすることにより可動範囲内の把持位置及び把持姿勢が存在するか否かを演算することが記載されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2009−56513号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
ところで、把持対象物の一部が障害物等により覆われていたり隠れていたりする場合には、障害物等を考慮して把持動作を決定しないと、実際に把持ロボットを動作させても当該把持対象物を把持できない、という問題が生じ得る。また、障害物等を考慮しても、それを回避する把持動作を決定する手段がなければ、把持位置及び把持姿勢を決定することができない、という問題が生じ得る。
【0007】
上記の特許文献1では、把持位置及び把持姿勢をシフトすれば把持対象物を把持できることを前提としている。しかし、把持対象物の一部が障害物等により覆われていたり隠れていたりする場合が考慮されていない。そのため、上記の問題が生じ得る。
【0008】
そこで、本発明は、障害物等と接触することなく把持対象物を把持可能な把持位置及び把持姿勢を決定することを目的とする。
【課題を解決するための手段】
【0009】
本願は、上記課題を解決する手段を複数含んでいるが、その例を挙げるならば、以下のとおりである。
【0010】
上記の課題を解決するための本発明の第一の態様は、把持機構により把持対象物を把持する把持ロボットであって、前記把持対象物が把持されるときに前記把持機構と接触する面の組み合わせである把持対象物接触面群と、当該把持対象物接触面群を把持するときに接触する前記把持機構の面の組み合わせである把持機構接触面群とを対応付けた把持対象物接触面群情報、及び、前記把持ロボットの作業空間中の障害物の領域を特定する障害物情報、を記憶する記憶部と、前記把持対象物の位置及び前記把持対象物の姿勢を画像認識により特定する把持対象物位置姿勢特定部と、前記把持対象物位置姿勢特定部により特定された前記把持対象物の位置及び前記把持対象物の姿勢において前記障害物と接触していない把持対象物接触面群を、前記把持対象物接触面群情報から選択する把持対象物接触面群選択部と、を有する、ことを特徴とする。
【0011】
上記の構成によれば、障害物と接触していない把持対象物接触面群が選択されるので、障害物と接触することなく把持対象物を把持可能なロボットの把持位置及び把持姿勢を決定することができる。
【0012】
ここで、前記把持ロボットは、前記把持対象物接触面群選択部により選択された前記把持対象物接触面群ごとに、当該把持対象物接触面群に対応付けられた把持機構接触面群について、所定の位置において所定の姿勢を設定し、当該姿勢で当該把持機構接触面群を当該把持対象物接触面群を把持する位置に移動したとした場合に、前記障害物と接触するか否かを判定し、前記障害物と接触しない前記把持機構の位置及び前記把持機構の姿勢を特定する、把持機構位置姿勢特定部を有する、ようにしてもよい。
【0013】
上記の構成によれば、障害物と接触していない把持対象物接触面群について、障害物と接触せずに把持できる把持機構の位置及び姿勢が特定されるので、障害物と接触することなく把持対象物を把持可能なロボットの把持位置及び把持姿勢を決定することができる。
【0014】
また、前記把持機構位置姿勢特定部は、前記把持対象物接触面群選択部により選択された把持対象物接触面群ごとに、当該把持対象物接触面群に対応付けられた把持機構接触面群について、前記所定の位置において複数の異なる姿勢を設定し、姿勢ごとに、当該姿勢で当該把持機構接触面群を当該把持対象物接触面群を把持する位置に移動したとした場合に、前記障害物と接触するか否かを判定し、前記障害物と接触しない前記把持機構の位置及び前記把持機構の姿勢を特定する、ようにしてもよい。
【0015】
上記の構成によれば、障害物と接触していない把持対象物接触面群について、障害物と接触せずに把持できる複数の把持機構の位置及び姿勢を特定することができる。
【0016】
また、前記記憶部は、前記把持機構の動作範囲を示す把持機構動作範囲情報を記憶し、前記把持ロボットは、前記把持機構動作範囲情報に基づいて、前記把持対象物接触面群選択部により選択された選択された把持対象物接触面群ごとに、当該把持対象物接触面群を当該把持対象物接触面群に対応付けられた把持機構接触面群の動作範囲で把持できるか否かを判定する把持機構動作量算出部を有し、前記把持機構位置姿勢特定部は、前記把持機構動作量算出部により把持できると判定された把持機構接触面群について、前記把持機構の位置及び前記把持機構の姿勢を特定する、ようにしてもよい。
【0017】
上記の構成によれば、把持機構の位置及び前記把持機構の姿勢を特定する前に、把持対象物接触面群をその動作範囲で把持できる把持機構接触面群が抽出されるため、処理負荷が軽減される。
【0018】
また、前記記憶部は、前記把持対象物を面で表した把持対象物形状情報と、前記把持機構が把持するときに前記把持対象物と接触する面の組み合わせである接触面群を特定する把持機構接触面群情報と、を記憶し、前記把持ロボットは、前記把持対象物形状情報と前記把持機構接触面群情報とに基づいて、前記把持機構接触面群情報に含まれる把持機構接触面群ごとに、当該把持機構接触面群が把持することができる前記把持対象物の面の組み合わせを把持対象物接触面群として特定し、当該把持対象物接触面群と当該把持機構接触面群とを対応付けることにより、前記把持対象物接触面群情報を生成する把持対象物接触面群生成部を有する、ようにしてもよい。
【0019】
上記の構成によれば、把持対象物形状情報と把持機構接触面群情報とに基づいて、把持対象物接触面群と当該把持対象物接触面群を把持できる把持機構接触面群とを対応付けることができる。
【0020】
また、前記把持対象物接触面群生成部は、前記把持機構接触面群情報に含まれる把持機構接触面群ごとに、当該把持機構接触面群を構成する一方の把持機構接触面と向かい合う前記把持対象物の第一の面を特定し、前記一方の把持機構接触面と前記第一の面とが向かい合った状態において、前記把持機構接触面群を構成する他方の把持機構接触面と向かい合う前記把持対象物の第二の面を特定し、前記第一の面と前記第二の面の組み合わせを把持対象物接触面群として特定する、ようにしてもよい。
【0021】
上記の構成によれば、把持対象物形状情報と把持機構接触面群情報とに基づいて、より簡単な方法で、把持対象物接触面群と当該把持対象物接触面群を把持できる把持機構接触面群とを対応付けることができる。
【0022】
また、前記記憶部は、前記把持機構を面で表した把持機構形状情報を記憶し、前記把持ロボットは、前記把持機構形状情報に基づいて、前記把持機構の面のうち、互いに向かい合う面の組み合わせを特定し、前記把持機構接触面群情報として生成する把持機構接触面群生成部を有する、ようにしもよい。
【0023】
上記の構成によれば、把持機構形状情報に基づいて、把持対象物を把持できる把持機構接触面群を生成することができる。
【0024】
また、前記把持対象物形状情報及び前記把持機構形状情報は、前記把持対象物及び前記把持機構を平面で近似したデータであってもよい。
【0025】
上記の構成によれば、ロボットに与えるデータを単純化でき、ロボットの処理負荷を抑えることができる。
【0026】
上記の課題を解決するための本発明の第二の態様は、把持機構により把持対象物を把持する把持ロボットを制御する制御装置であって、前記把持対象物が把持されるときに前記把持機構と接触する面の組み合わせである把持対象物接触面群と、当該把持対象物接触面群を把持するときに接触する前記把持機構の面の組み合わせである把持機構接触面群とを対応付けた把持対象物接触面群情報、及び、前記把持ロボットの作業空間中の障害物の領域を特定する障害物情報、を記憶する記憶部と、前記把持対象物の位置及び前記把持対象物の姿勢を画像認識により特定する把持対象物位置姿勢特定部と、前記把持対象物位置姿勢特定部により特定された前記把持対象物の位置及び前記把持対象物の姿勢において前記障害物と接触していない把持対象物接触面群を、前記把持対象物接触面群情報から選択する把持対象物接触面群選択部と、を有する、ことを特徴とする。
【0027】
上記の課題を解決するための本発明の第三の態様は、把持機構により把持対象物を把持する把持ロボットの把持制御方法であって、前記把持対象物が把持されるときに前記把持機構と接触する面の組み合わせである把持対象物接触面群と、当該把持対象物接触面群を把持するときに接触する前記把持機構の面の組み合わせである把持機構接触面群とを対応付けた把持対象物接触面群情報、及び、前記把持ロボットの作業空間中の障害物の領域を特定する障害物情報、を取得するステップと、前記把持対象物の位置及び前記把持対象物の姿勢を画像認識により特定する把持対象物位置姿勢特定ステップと、前記把持対象物位置姿勢特定ステップで特定された前記把持対象物の位置及び前記把持対象物の姿勢において前記障害物と接触していない把持対象物接触面群を、前記把持対象物接触面群情報から選択する把持対象物接触面群選択ステップと、を含む、ことを特徴とする。
【0028】
上記の課題を解決するための本発明の第四の態様は、把持機構により把持対象物を把持する把持ロボットを制御する制御装置のプログラムであって、前記把持対象物が把持されるときに前記把持機構と接触する面の組み合わせである把持対象物接触面群と、当該把持対象物接触面群を把持するときに接触する前記把持機構の面の組み合わせである把持機構接触面群とを対応付けた把持対象物接触面群情報、及び、前記把持ロボットの作業空間中の障害物の領域を特定する障害物情報、を記憶する記憶部と、前記把持対象物の位置及び前記把持対象物の姿勢を画像認識により特定する把持対象物位置姿勢特定部と、前記把持対象物位置姿勢特定部により特定された前記把持対象物の位置及び前記把持対象物の姿勢において前記障害物と接触していない把持対象物接触面群を、前記把持対象物接触面群情報から選択する把持対象物接触面群選択部として、前記制御装置を機能させる、ことを特徴とする。
【0029】
上記の本発明の第二〜第四の態様によっても、障害物と接触していない把持対象物接触面群が選択されるので、障害物と接触することなく把持対象物を把持可能なロボットの把持位置及び把持姿勢を決定することができる。
【0030】
上記した以外の課題、構成、及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【0031】
【図1】本発明の一実施形態に係るロボットの外観の一例を示す図。
【図2】ロボットのハンド(把持機構)の動作の一例を説明する図。
【図3】ロボットの制御に関する概略構成の一例を示すブロック図。
【図4】ロボットの制御に関する機能構成の一例を示すブロック図。
【図5】把持対象物形状近似データ生成処理の一例を示すフロー図。
【図6】把持対象物形状近似データの生成方法の一例を説明する図。
【図7】把持対象物形状近似データの構成の一例を示す図。
【図8】把持機構接触面群データ生成処理の一例を示すフロー図。
【図9】把持機構形状近似データの一例を説明する図。
【図10】把持機構形状近似データの接触面を説明する図。
【図11】把持機構形状近似データの接触面データの構成の一例を示す図。
【図12】把持機構接触面群を特定する処理の一例を示すフロー図。
【図13】把持機構接触面群を特定する際の法線ベクトルの使い方の一例を説明する図。
【図14】把持機構接触面群データの構成の一例を示す図。
【図15】把持対象物接触面群データ生成処理の一例を示すフロー図。
【図16】把持対象物接触面群と把持機構接触面群とを関連付ける処理の一例を示すフロー図。
【図17】把持対象物接触面群データの構成の一例を示す図。
【図18】把持対象物接触面群選択処理の一例を示すフロー図。
【図19】把持対象物と障害物の関係の一例を説明する図。
【図20】障害物と干渉しない把持対象接触面群を選択する処理の一例を示すフロー図。
【図21】選択された把持対象物接触面群データの構成の一例を示す図。
【図22】把持機構動作量算出処理の一例を示すフロー図。
【図23】把持機構接触面群と把持対象物接触面群の関係を説明する図。
【図24】把持機構動作量を特定する処理の一例を示すフロー図。
【図25】把持機構位置姿勢設定処理の一例を示すフロー図。
【図26】障害物と干渉しない把持機構の位置及び姿勢を特定する処理の一例を示すフロー図(その1)。
【図27】障害物と干渉しない把持機構の位置及び姿勢を特定する処理の一例を示すフロー図(その2)。
【図28】把持対象物接触面群の軸と把持機構接触面群の軸との関係を説明する図。
【図29】把持機構の位置及び姿勢を特定するための回転と並進の一例を説明する図。
【発明を実施するための形態】
【0032】
以下、本発明の一実施形態の一例について、図面を参照して説明する。
【0033】
図1は、本発明の一実施形態に係るロボットの外観の一例を示す図である。
【0034】
ロボット1は、頭部2と、胴体部3と、脚部4と、アーム5と、ハンド(把持機構)8とを備える把持ロボットである。ロボット1は、アーム5の一端に取り付けられたハンド8で把持対象物を把持する。本図の例では、ロボット1は、左右2本のアームを備えている。
【0035】
アーム5は、複数のジョイント(関節)6と、複数のリンク7とからなる。各ジョイント6は、リンク7同士や、胴体部3とリンク7、ハンド8とリンク7を、回動自在に(ただし、所定の可動範囲内で回動可能に)連結している。各ジョイント6は、例えば、回転ジョイントであり、リンク7間の角度を変化させたり、リンク7を軸回転させたりできるように設けられている。従って、各ジョイント6を連動させて駆動することにより、ハンド8を、自在に(ただし、所定の可動範囲内で)移動させることができるとともに、自由な方向へ向けることもできる。本図の例では、アーム5は、6つのジョイントを備えた6軸アームとなっている。
【0036】
図2は、ロボットのハンド(把持機構)の動作の一例を説明する図である。
【0037】
図2(A)の斜視図に示すように、ハンド8は、4本の指9を備える。また、図2(B)の底面図に示すように、各指9は、例えば、隣り合う指に近付くように移動し、少なくとも2本の指で把持対象物を挟んで把持することができる仕組みとなっている。
【0038】
図3は、ロボットの制御に関する概略構成の一例を示すブロック図である。
【0039】
ロボット1は、コントローラー10と、撮像部20と、可動部30とを備える。
【0040】
撮像部20は、ロボット1の外部環境を撮影して、画像データを生成するユニットである。撮像部20は、例えば、カメラを含み、ロボット1の頭部2に設けられる。撮像部20は、コントローラー10の制御により、把持対象物や障害物などを含む外部環境の撮影を行うとともに画像データを生成し、コントローラー10に出力する。
【0041】
可動部30は、ロボット1の可動部分である。可動部30には、例えば、頭部2、胴体部3、脚部4、アーム5、ハンド8が含まれる。各可動部30は、例えば、アクチュエーター31と、力覚センサーなどの種々のセンサー32と、を備える。アクチュエーター31は、例えば、アーム5の各ジョイント6や、ハンド8の各指にそれぞれ設けられており、これらを動作させる。アクチュエーター31は、例えば、モーター、当該モーターの駆動回路、エンコーダーなどを備える。エンコーダーが出力するエンコーダー値やセンサー32が出力するセンサー値は、可動部の位置、移動方向、移動量、速度、加速度、把持対象物との接触などを把握するのに、コントローラー10により利用される。
【0042】
コントローラー10は、ロボット1の全体を制御する処理を行う。コントローラー10は、演算装置であるCPU11と、揮発性の記憶装置であるRAM12と、不揮発性の記憶装置であるROM13と、コントローラー10と他のユニットと接続するインターフェイス(I/F)回路14と、ロボット1の外部の装置と通信を行う通信装置15と、を備える。
【0043】
コントローラー10は、例えば、撮像部20の出力画像から画像認識によって把持対象物の形状と位置及び姿勢を認識する。また、コントローラー10は、例えば、認識された把持対象物を把持するためのロボット1の一連の動作と、把持位置及び把持姿勢を計算する。また、コントローラー10は、例えば、各種センサーやエンコーダーの出力信号に基づいて、各可動部30が目的の位置及び姿勢となるようにアクチュエーター31を制御し、可動部30を動作させる。
【0044】
なお、把持対象物の位置は、例えば、ロボットの作業空間を基準座標系としたときの、当該把持対象物の所定の基準点(例えば、重心など)の、前記基準座標系における位置座標とすることができる。また、把持対象物の姿勢は、例えば、当該把持対象物の所定の基準ベクトル(例えば、重心から所定方向に向かうベクトル)の、前記基準座標系における向きすることができる。把持機構やロボットの位置及び姿勢についても同様に定義できる。もちろん、位置や姿勢の定義はこれに限られず、他の方法で定義してもよい。
【0045】
以上のロボット1の構成は、本実施形態の特徴を説明するにあたって主要構成を説明したのであって、上記の構成に限られない。ハンドにより把持対象物を把持できれば、どのような構造であってもよい。また、一般的な把持ロボットが備える構成を排除するものではない。
【0046】
例えば、図1では6軸のアームが示されているが、軸数(ジョイント数)をさらに増加させてもよいし減らしてもよい。リンクの数を増減させてもよい。また、アーム、ハンド、リンク、ジョイント等の各種部材の形状、大きさ、配置、構造等も適宜変更してよい。また、コントローラー10は、ロボット1の本体に内蔵されていなくてもよく、ロボット1を遠隔操作する機器に設けられていてもよい。
【0047】
次に、上記のロボット1における、把持動作と位置及び姿勢の制御方法について、具体的に説明する。
【0048】
なお、本実施形態は、ロボット1を実際に動作させるに当たって、事前に、動作と位置及び姿勢のシミュレーションを行うものである。
【0049】
図4は、ロボットの制御に関する機能構成の一例を示すブロック図である。
【0050】
本図に示すように、ロボット1は、形状近似部101と、把持機構接触面群生成部102と、把持対象物接触面群生成部103と、把持対象物位置姿勢取得部104と、把持対象物接触面群選択部105と、把持機構動作量算出部106と、把持機構位置姿勢設定部107と、を備える。また、ロボット1は、各種データ111〜123を記憶する記憶部を備える。
【0051】
記憶部には、把持機構形状データ111と、把持対象物形状データ112と、把持機構形状近似データ113と、把持対象物形状近似データ114と、把持機構接触面群データ115と、把持対象物接触面群データ116と、把持対象物認識処理データ117と、把持対象物位置姿勢データ118と、障害物データ119と、選択された把持対象物接触面群データ120と、把持機構動作範囲データ121と、把持機構動作量データ122と、把持機構位置姿勢データ123と、が格納される。
【0052】
上記の記憶部以外の各機能部は、例えば、CPU11がROM13に格納された所定のプログラムをRAM12に読み出して実行することにより実現される。記憶部は、例えば、RAM12やROM13により実現される。なお、前記所定のプログラムは、例えば、予めROM13にインストールされてもよいし、通信装置15を介してネットワークからダウンロードされてインストール又は更新されてもよい。
【0053】
把持機構形状データ111は、ハンドの形状と寸法を示すデータである。把持機構形状データ111は、例えば、把持機構の形状を忠実に表した3次元のCADデータなどである。把持機構形状データ111は、予め用意され、記憶部に記憶される。
【0054】
なお、図示していないが、ロボット全体の形状データも、予め用意され、記憶部に記憶されていてもよい。
【0055】
把持対象物形状データ112は、把持対象物の形状と寸法を示すデータである。把持対象物形状データ112は、例えば、把持対象物の形状を忠実に表した3次元のCADデータなどである。把持対象物形状データ112は、予め用意され、記憶部に記憶される。
【0056】
把持機構形状近似データ113は、ハンドの形状と寸法を近似したデータである。把持機構形状近似データ113は、例えば、3次元のCADデータであり、曲線や曲面を直線や平面で近似したデータである。把持機構形状近似データ113は、予め用意され、記憶部に記憶されていてもよいし、形状近似部101が把持機構形状データ111に基づいて生成するようにしてもよい。
【0057】
なお、図示していないが、ロボット全体の形状近似データも、予め用意され、記憶部に記憶されていてもよいし、形状近似部101がロボット全体の形状データに基づいて生成するようにしてもよい。
【0058】
把持対象物形状近似データ114は、把持対象物の形状と寸法を近似したデータである。把持対象物形状近似データ114は、例えば、3次元のCADデータであり、曲線や曲面を直線や平面で近似したデータである。把持対象物形状近似データ114は、予め用意され、記憶部に記憶されていてもよいし、形状近似部101が把持対象物形状データ112に基づいて生成するようにしてもよい。
【0059】
把持機構接触面群データ115は、近似された把持機構形状(把持機構形状近似データ113)を構成する平面(平面要素)のうち、把持対象物を把持するときに把持対象物に接触する平面(接触面)の組み合わせ(群)を特定するデータである。すなわち、把持対象物を把持する把持機構の面の組み合わせを特定するデータである。把持機構接触面群データ115は、予め用意され、記憶部に記憶されていてもよいし、把持機構接触面群生成部102が生成するようにしてもよい。
【0060】
把持対象物接触面群データ116は、近似された把持対象物形状(把持対象物形状近似データ114)を構成する平面(平面要素)のうち、把持機構により把持されるときに把持機構と接触する平面(接触面)の組み合わせ(群)を特定するデータである。すなわち、把持機構により把持される面の組み合わせを特定するデータである。把持対象物接触面群データ116は、予め用意され、記憶部に記憶されてもよいし、把持対象物接触面群生成部103が生成するようにしてもよい。
【0061】
把持対象物認識処理データ117は、把持対象物を種々の方向から見た形状と寸法を示すデータである。把持対象物認識処理データ117は、例えば、3次元のCADデータなどである。把持対象物認識処理データ117は、例えば、撮像部20により撮影された外部環境の画像データと照合され、当該外部環境に存在する把持対象物の位置及び姿勢の認識に使用される。把持対象物認識処理データ117は、予め用意され、記憶部に記憶される。
【0062】
把持対象物位置姿勢データ118は、把持対象物の位置及び姿勢を示すデータである。把持対象物位置姿勢データ118は、画像認識の結果認識された把持対象物の、作業空間中の位置及び姿勢を特定するデータである。複数の把持対象物が存在すれば、把持対象物ごとの位置姿勢データが記録される。把持対象物位置姿勢データ118は、把持対象物位置姿勢取得部104により生成される。
【0063】
障害物データ119は、ロボット1の障害となる可能性のある障害物を示すデータである。障害物データ119は、例えば、ロボット1を基準位置として、当該ロボット1が把持動作を行う際にハンドやアームと衝突する可能性のある外部環境の領域の形状と寸法と位置及び姿勢を示すデータである。把持対象物が置かれる床、把持対象物の周辺の部品などの物、他のロボットなどが障害物となりうる。障害物データ119は、予め用意され、記憶部に記憶されてもよいし、撮影した画像データに基づく画像認識により生成されるようにしてもよい。
【0064】
障害物データを用意すべき物理的な範囲は、例えば、ロボット1を基準に、ハンドにより把持をすることができる可動範囲に加え、当該可動範囲でハンドが動作した場合にアームなどの他の部分が障害物と衝突することがないような最小の作業範囲(作業空間)とすることができる。
【0065】
選択された把持対象物接触面群データ120は、把持対象物接触面群データ116に含まれる接触面群のうち、所定の条件により選択された接触面群のデータである。把持対象物接触面群データ116は、把持対象物接触面群選択部105により生成される。
【0066】
把持機構動作範囲データ121は、ハンドの動作範囲(可動範囲)を特定するデータである。把持機構動作範囲データ121には、例えば、ハンド、指等の移動方向や移動量等を特定するデータが含まれる。アームや他の可動部の移動方向や移動量等を特定するデータが含まれていてもよい。把持機構動作範囲データ121は、予め用意され、記憶部に記憶される。
【0067】
把持機構動作量データ122は、把持対象物を把持するハンドの動作量を特定するデータである。把持機構動作量データ122には、例えば、把持対象物の接触面群ごとに、当該接触面群を把持する把持機構の接触面群に対応する各指の移動方向と移動量を特定するデータである。把持機構動作量データ122は、把持機構動作量算出部106により生成される。
【0068】
把持機構位置姿勢データ123は、把持対象物を把持するときの把持機構の位置及び姿勢を特定するデータである。把持機構位置姿勢データ123は、把持機構位置姿勢設定部107により生成される。
【0069】
形状近似部101は、把持機構形状データ111に基づいて把持機構形状近似データ113を生成する。また、形状近似部101は、把持対象物形状データ112に基づいて把持対象物形状近似データ114を生成する。なお、近似データが予め用意される場合は、形状近似部101は、なくてよい。
【0070】
把持機構接触面群生成部102は、把持機構形状近似データ113に基づいて、把持対象物を把持する把持機構の接触面群を特定し、把持機構接触面群データ115を生成する。なお、把持機構接触面群データ115が予め用意される場合は、把持機構接触面群生成部102は、なくてよい。
【0071】
把持対象物接触面群生成部103は、把持対象物形状近似データ114と把持機構接触面群データ115とに基づいて、把持機構接触面群により把持可能な把持対象物の接触面群を特定し、把持対象物接触面群データ116を生成する。なお、把持対象物接触面群データ116が予め用意される場合は、把持対象物接触面群生成部103は、なくてよい。
【0072】
把持対象物位置姿勢取得部104は、撮像部20により撮影された画像データと、把持対象物認識処理データ117とに基づいて、画像認識処理を行い、画像データに含まれる把持対象物の形状と寸法と位置及び姿勢を特定し、把持対象物位置姿勢データ118を生成する。
【0073】
把持対象物接触面群選択部105は、把持対象物接触面群データ116と、把持対象物位置姿勢データ118と、障害物データ119とに基づいて、作業空間内の障害物により妨げられていない把持対象物接触面群を選択し、選択された把持対象物接触面群データ120を生成する。
【0074】
把持機構動作量算出部106は、把持機構動作範囲データ121と、把持機構接触面群データ115と、選択された把持対象物接触面群データ120とに基づいて、把持対象物接触面群ごとに、当該接触面群を把持する把持機構の接触面群に対応する各指の移動方向と移動量を算出し、把持機構動作量データ122を生成する。
【0075】
把持機構位置姿勢設定部107は、把持機構形状近似データ113と、把持対象物形状近似データ114と、把持対象物位置姿勢データ118と、障害物データ119と、選択された把持対象物接触面群データ120と、把持機構動作量データ122とに基づいて、作業空間内の障害物により妨げられずに把持対象物を把持可能な把持機構の位置及び姿勢を算出し、把持機構位置姿勢データ123を生成する。
【0076】
以上の機能構成は、ロボット1の動作と位置及び姿勢の制御に関する構成を理解容易にするために、主な処理内容に応じて分類したものである。構成要素の分類の仕方や名称によって、本願発明が制限されることはない。ロボット1の構成は、処理内容に応じて、さらに多くの構成要素に分類することもできる。また、1つの構成要素がさらに多くの処理を実行するように分類することもできる。また、各構成要素の処理は、1つのハードウェアで実行されてもよいし、複数のハードウェアで実行されてもよい。
【0077】
次に、上記の各種機能により実現される処理について、図面を参照して説明する。以下では、円筒状の把持対象物を把持する場合を例に挙げて説明する。
【0078】
図5は、把持対象物形状近似データ生成処理の一例を示すフロー図である。
【0079】
S10:形状近似部101は、把持対象物形状データ112を記憶部から取得する。把持対象物形状データ112は、例えば、図6(A)に示すように、XYZ軸を有する座標系で表されるデータである。
【0080】
S20:形状近似部101は、S10で取得した把持対象物形状データが表す把持対象物の形状の表面に、節点を設定する。本実施形態では、節点とは、面と面とを接合する点を意味するものとする。形状近似部101は、例えば、図6(B)に示すように、把持対象物の形状を近似できるように、面と面の接合部分に略均等な(均等も含む)間隔で複数の節点(a〜x)を配置する。
【0081】
S30:形状近似部101は、S20で設定した各節点を結ぶ直線を設定する。本実施形態では、形状近似部101は、把持対象物の形状を近似する平面が形成されるように、各節点を直線で結ぶ(図6(C)参照)。
【0082】
S40:形状近似部101は、S30で設定した節点間の直線で囲まれた領域を、把持対象物の形状を近似する平面要素として特定する。例えば、図6(C)に示すように、把持対象物は、14個の平面要素(外側の6面、内側の6面、上下の2面)により近似される。
【0083】
また、形状近似部101は、特定した各平面要素について、その法線ベクトル(平面に対して垂直なベクトル)であって、把持対象物の外を向く(把持対象物の形状が占める領域側でない方向の)法線ベクトルを算出する(図6(D)参照)。なお、図6(D)では、平面要素abnmと平面要素ghtsのみを図示している。
【0084】
そして、形状近似部101は、例えば、図7に示すような把持対象物形状近似データ114を生成する。把持対象物形状近似データ114は、平面要素を特定する平面要素番号ごとに、当該平面要素を構成する節点の座標と、当該平面要素の法線ベクトルとを含む。
【0085】
以上のようにして、把持対象物形状近似データ114が生成される。
【0086】
図8は、把持機構接触面群データ生成処理の一例を示すフロー図である。
【0087】
S110:把持機構接触面群生成部102は、予め用意された又は生成された把持機構形状近似データ113を記憶部から取得する。把持機構形状近似データ113は、例えば、図9に示すように、ハンド8の各指9を平面要素で近似したデータである。すなわち、把持機構形状近似データ113は、例えば、平面要素を特定する平面要素番号ごとに、当該平面要素が属する指を特定する識別情報と、当該平面要素を構成する節点の座標と、当該平面要素の法線ベクトル(把持機構の外を向く(把持機構の形状が占める領域側でない方向の)法線ベクトル)とを含む。把持機構形状近似データ113の生成方法は、把持対象物形状近似データ114と同様なので、説明を省略する。
【0088】
S120:把持機構接触面群生成部102は、S110で取得した把持機構形状近似データ113の中から、把持対象物と接触させるべき平面要素(接触面)を抽出する。把持機構接触面群生成部102は、例えば、図10に示すように、向かい側に指がある平面要素(把持機構接触面)を、把持対象物と接触させるべき平面要素(接触面)として抽出する。また、抽出した各平面要素の法線ベクトルを把持機構形状近似データ113から取得する。抽出された平面要素のデータは、例えば、図11に示すように、平面要素を特定する平面要素番号ごとに、当該平面要素が属する指を特定する識別情報と、当該平面要素を構成する節点の座標と、当該平面要素の法線ベクトルとを含む。
【0089】
S130:把持機構接触面群生成部102は、S120で抽出した平面要素から、把持対象物を把持するための平面要素の組み合わせ(接触面群)を特定する。
【0090】
S130の詳細を、図12を参照して説明する。図12は、把持機構接触面群を特定する処理の一例を示すフロー図である。
【0091】
S1301:把持機構接触面群生成部102は、把持機構接触面群の数を示す変数countを0に設定する。
【0092】
S1302:把持機構接触面群生成部102は、S120で抽出した平面要素のデータに含まれる各平面要素番号を指すインデックスiを0に設定する。
【0093】
S1303:把持機構接触面群生成部102は、インデックスiが、S120で抽出した平面要素の総数Nより小さいか否かを判定する。Nより小さい場合(S1303:YES)、処理をS1304に進める。N以上の場合(S1303:NO)、処理をC(S1318)に進める。
【0094】
S1304:把持機構接触面群生成部102は、S120で抽出した平面要素のデータに含まれる各平面要素番号を指すインデックスjを0に設定する。
【0095】
S1305:把持機構接触面群生成部102は、インデックスjがNより小さいか否かを判定する。Nより小さい場合(S1305:YES)、処理をS1307に進める。N以上の場合(S1305:NO)、処理をS1306)に進める。
【0096】
S1306:把持機構接触面群生成部102は、インデックスiを1カウントアップする。そして、処理をS1303に戻す。
【0097】
S1307:把持機構接触面群生成部102は、インデックスjがインデックスiと等しくないか否かを判定する。等しくない場合(S1307:YES)、処理をS1309に進める。等しい場合(S1307:NO)、処理をB(S1308)に進める。
【0098】
S1308:把持機構接触面群生成部102は、インデックスjを1カウントアップする。そして、処理をS1305に戻す。
【0099】
S1309:把持機構接触面群生成部102は、インデックスiが指す平面要素(以下、「平面要素i」と表す)と、インデックスjが指す平面要素(以下、「平面要素j」と表す)との組み合わせが、把持機構接触面群として特定済みか否かを判定する。すなわち、把持機構接触面群データ115に含まれているか否かを判定する。特定済みでない場合(S1309:NO)、処理をS1310に進める。特定済みである場合(S1309:YES)、処理をB(S1308)に進める。
【0100】
S1310:把持機構接触面群生成部102は、平面要素iの法線ベクトル(ただし、正規化するものとする)と、平面要素jの法線ベクトル(ただし、正規化するものとする)の内積を計算する。なお、図13の左側に示すように、二つの平面の法線ベクトルNA及びNBが互いに逆向きであるとき、正規化した法線ベクトルNA及びNBの内積は、−1となる。
【0101】
S1311:把持機構接触面群生成部102は、S1310の計算結果に基づいて、平面要素iと平面要素jとが対向するか否かを判定する。ここで、「対向」とは、互いの法線ベクトルの内積が−1であることを指す。対向する場合(S1311:YES)、処理をS1312に進める。対向しない場合(S1311:NO)、処理をB(S1308)に進める。
【0102】
S1312:把持機構接触面群生成部102は、平面要素iの平面要素jに対する交差を計算する。ここで、「交差」とは、図13の右側に示すように、一方の平面要素(平面要素i)を構成する各節点から当該平面要素の法線ベクトル方向に伸びる直線が、全て他方の平面要素(平面要素j)に交差する(通過する)ことをいう。
【0103】
S1313:把持機構接触面群生成部102は、S1312の計算結果に基づいて、平面要素iが平面要素jに交差するか否かを判定する。交差する場合(S1313:YES)、処理をS1314に進める。交差しない場合(S1313:NO)、処理をB(S1308)に進める。
【0104】
S1314:把持機構接触面群生成部102は、平面要素jの平面要素iに対する交差を計算する。
【0105】
S1315:把持機構接触面群生成部102は、S1314の計算結果に基づいて、平面要素jが平面要素iに交差するか否かを判定する。交差する場合(S1315:YES)、処理をS1316に進める。交差しない場合(S1315:NO)、処理をB(S1308)に進める。
【0106】
S1316:把持機構接触面群生成部102は、互いに対向かつ交差する平面要素i及びjの組み合わせを、把持機構接触面群データ115に記録する。把持機構接触面群データ115は、例えば、図14に示すように、把持機構接触面群を特定する把持機構接触面群番号ごとに、接触面群を構成する平面要素の平面要素番号を含む。
【0107】
S1317:把持機構接触面群生成部102は、把持機構接触面群の数を示す変数countを1インクリメントする。そして、処理をB(S1308)に進める。
【0108】
S1318:把持機構接触面群生成部102は、変数countが0よりも大きいか否かを判定する。0よりも大きい場合(S1318:YES)、処理をS1319に進める。0以下である場合(S1318:NO)、処理をS1320に進める。
【0109】
S1319:把持機構接触面群生成部102は、把持機構接触面群が有ることを、把持機構接触面群データ115を使用する他の機能部に通知する。そして、本フローを終了する。
【0110】
S1320:把持機構接触面群生成部102は、把持機構接触面群が無いことを、把持機構接触面群データ115を使用する他の機能部に通知する。そして、本フローを終了する。
【0111】
以上のようにして、把持機構接触面群データ115が生成される。
【0112】
図15は、把持対象物接触面群データ生成処理の一例を示すフロー図である。
【0113】
S210:把持対象物接触面群生成部103は、予め用意された又は生成された把持対象物形状近似データ114を記憶部から取得する。
【0114】
S220:把持対象物接触面群生成部103は、予め用意された又は生成された把持機構接触面群データ115を記憶部から取得する。
【0115】
S230:把持対象物接触面群生成部103は、ハンドの各接触面群により把持可能な把持対象物の接触面の組みあ合わせを特定し、把持対象物接触面群データ116を生成する。
【0116】
S230の詳細を、図16を参照して説明する。図16は、把持対象物接触面群と把持機構接触面群とを関連付ける処理の一例を示すフロー図である。
【0117】
S2301:把持対象物接触面群生成部103は、把持機構接触面群データ115に含まれる各把持機構接触面群を指すインデックスiを0に設定する。
【0118】
S2302:把持対象物接触面群生成部103は、インデックスiが、把持機構接触面群データ115に含まれる把持機構接触面群の総数Nより小さいか否かを判定する。Nより小さい場合(S2302:YES)、処理をS2303に進める。N以上の場合(S2302:NO)、本フローを終了する。
【0119】
S2303:把持対象物接触面群生成部103は、インデックスiが指す把持機構接触面群(以下、「把持機構接触面群i」と表す)に関連付けられた把持対象物接触面群の総数を示す変数count[i]を0に設定する。
【0120】
S2304:把持対象物接触面群生成部103は、把持対象物形状近似データ114に含まれる各平面要素番号を指すインデックスjを0に設定する。
【0121】
S2305:把持対象物接触面群生成部103は、インデックスjが、把持対象物形状近似データ114に含まれる平面要素の総数Mよりも小さいか否かを判定する。Mより小さい場合(S2305:YES)、処理をS2307に進める。M以上の場合(S2305:NO)、処理をS2306に進める。
【0122】
S2306:把持対象物接触面群生成部103は、インデックスiを1カウントアップする。そして、処理をS2302に戻す。
【0123】
S2307:把持対象物接触面群生成部103は、把持機構接触面群iの一方の平面要素が、把持対象物形状近似データの平面要素jと対向するように、回転変換を行う。すなわち、把持機構接触面群iの一方の平面要素の法線ベクトルと、把持対象物形状近似データの平面要素jの法線ベクトルとの内積が、−1となるように、いずれか一方若しくは両方の平面要素の位置及び姿勢を回転させる変換処理を行う。
【0124】
S2308:把持対象物接触面群生成部103は、把持対象物形状近似データ114に含まれる各平面要素番号を指すインデックスkを0に設定する。
【0125】
S2309:把持対象物接触面群生成部103は、インデックスkが、把持対象物形状近似データ114に含まれる平面要素の総数Mよりも小さいか否かを判定する。Mより小さい場合(S2309:YES)、処理をS2311に進める。M以上の場合(S2309:NO)、処理をA(S2310)に進める。
【0126】
S2310:把持対象物接触面群生成部103は、インデックスjを1カウントアップする。そして、処理をS2305に戻す。
【0127】
S2311:把持対象物接触面群生成部103は、インデックスjがインデックスkと等しくないか否かを判定する。等しくない場合(S2311:YES)、処理をS2312に進める。等しい場合(S2311:NO)、処理をS2314に進める。
【0128】
S2312:把持対象物接触面群生成部103は、把持対象物形状近似データの平面要素jと平面要素kとの組み合わせが、把持対象物接触面群として特定済みか否かを判定する。すなわち、把持対象物接触面群データ116に含まれているか否かを判定する。特定済みでない場合(S2312:NO)、処理をS2313に進める。特定済みである場合(S2312:YES)、処理をS2314に進める。
【0129】
S2313:把持対象物接触面群生成部103は、把持機構接触面群iの他方の平面要素が、把持対象物形状近似データの平面要素kと対向するか否かを判定する。すなわち、把持機構接触面群iの他方の平面要素の法線ベクトルと、平面要素kの法線ベクトルとの内積が−1であるか否かを判定する。対向する場合(S2313:YES)、処理をS2315に進める。対向しない場合(S2313:NO)、処理をS2314に進める。
【0130】
S2314:把持対象物接触面群生成部103は、インデックスkを1カウントアップする。そして、処理をS2309に戻す。
【0131】
S2315:把持対象物接触面群生成部103は、平面要素iと平面要素kとの組み合わせを、把持機構接触面群iと関連付けて、把持対象物接触面群データ116に記録する。把持対象物接触面群データ116は、例えば、図17に示すように、把持対象物接触面群を特定する把持対象物接触面群番号ごとに、当該把持対象物接触面群を構成する平面要素の平面要素番号と、当該把持対象物接触面群を把持可能な把持機構接触面群の把持機構接触面群番号と、を含む。
【0132】
S2316:把持対象物接触面群生成部103は、把持機構接触面群iに関連付けられた把持対象物接触面群の総数を示す変数count[i]を1インクリメントする。そして、処理をB(S2314)に戻す。
【0133】
以上のようにして、把持対象物接触面群データが生成される。
【0134】
図18は、把持対象物接触面群選択処理の一例を示すフロー図である。
【0135】
S310:把持対象物接触面群選択部105は、障害物データ119を記憶部から取得する。
【0136】
S320:把持対象物接触面群選択部105は、把持対象物接触面群データ116を記憶部から取得する。
【0137】
S330:把持対象物接触面群選択部105は、把持対象物位置姿勢データ118を記憶部から取得する。
【0138】
S340:把持対象物接触面群選択部105は、把持対象物位置姿勢データ118から特定される把持対象物の位置及び姿勢(作業空間上の床などの基準面に置かれた状態の位置及び姿勢)となるように、各把持対象物接触面群の位置及び姿勢を計算する。
【0139】
S350:把持対象物接触面群選択部105は、S340で計算した位置及び姿勢において、障害物と干渉しない(障害物に隠れたり覆われたりしない)把持対象物接触面群を特定する。ここで、障害物と干渉しない接触面群とは、例えば、図19に示すように、把持対象物が床の上に置かれている場合、当該床と接する面afmrを含む接触面群以外の接触面群である。
【0140】
S340〜S350の詳細を、図20を参照して説明する。図20は、障害物と干渉しない把持対象接触面群を選択する処理の一例を示すフロー図である。
【0141】
S3501:把持対象物接触面群選択部105は、選択された把持対象物接触面群データ120に記録される把持対象物接触面群の番号示すインデックスkを0に設定する。
【0142】
S3502:把持対象物接触面群選択部105は、把持対象物接触面群データ116に含まれる各把持対象物接触面群を指すインデックスiを0に設定する。
【0143】
S3503:把持対象物接触面群選択部105は、インデックスiが、把持対象物接触面群データ116に含まれる把持対象物接触面群の総数Nより小さいか否かを判定する。Nより小さい場合(S3503:YES)、処理をS3504に進める。N以上の場合(S3503:NO)、本フローを終了する。
【0144】
S3504:把持対象物接触面群選択部105は、把持対象物接触面群iを構成する平面要素が、把持対象物の位置及び姿勢となるように、回転並進変換を行う。すなわち、S330で取得した把持対象物位置姿勢データ118から特定される把持対象物の位置及び姿勢(作業空間上の床などの基準面に置かれた状態の位置及び姿勢)となるように、把持対象物接触面群iを回転させたり、並進させたりする変換処理を行う。
【0145】
S3505:把持対象物接触面群選択部105は、回転並進変換された把持対象物接触面群iを構成する各平面要素と、把持対象物が置かれている床との距離が、十分に離れているか否かを判定する。例えば、把持対象物接触面群iを構成する平面要素の少なくとも一つが、床の方向を向いており(対向していなくてもよい)、当該平面要素と床の間の距離が所定距離より小さい場合に、十分離れていないと判定することができる。床の領域は、障害物データ119から特定することができる。床と十分に離れている場合(S3505:YES)、処理をS3506に進める。床と十分に離れていない場合(S3505:NO)、処理をA(S3510)に進める。
【0146】
S3506:把持対象物接触面群選択部105は、回転並進変換された把持対象物接触面群iを構成する各平面要素と、周辺機器との距離が、十分に離れているか否かを判定する。周辺機器とは、例えば、把持対象物に加工を施すための装置などである。例えば、把持対象物接触面群iを構成する平面要素の少なくとも一つが、周辺機器の方向を向いており(対向していなくてもよい)、当該平面要素と周辺機器の間の距離が所定距離より小さい場合に、十分離れていないと判定することができる。周辺機器の領域は、障害物データ119から特定することができる。周辺機器と十分に離れている場合(S3506:YES)、処理をS3507に進める。周辺機器と十分に離れていない場合(S3506:NO)、処理をA(S3510)に進める。
【0147】
S3507:把持対象物接触面群選択部105は、回転並進変換された把持対象物接触面群iを構成する各平面要素と、その他の部材との距離が、十分に離れているか否かを判定する。その他の部材は、例えば、把持対象物の周辺に置かれた他の把持対象物や、ロボット1自身などである。例えば、把持対象物接触面群iを構成する平面要素の少なくとも一つが、その他の部材の方向を向いており(対向していなくてもよい)、当該平面要素とその他の部材の間の距離が所定距離より小さい場合に、十分離れていないと判定することができる。その他の部材の領域は、障害物データ119から特定することができる。その他の部材と十分に離れている場合(S3507:YES)、処理をS3508に進める。その他の部材と十分に離れていない場合(S3507:NO)、処理をA(S3510)に進める。
【0148】
S3508:把持対象物接触面群選択部105は、把持対象物接触面群iを、選択された把持対象物接触面群kとして、選択された把持対象物接触面群データ120に記録する。選択された把持対象物接触面群データ120は、例えば、図21に示すように、把持対象物接触面群を特定する把持対象物接触面群番号ごとに、当該把持対象物接触面群を構成する平面要素の平面要素番号と、当該把持対象物接触面群を把持可能な把持機構接触面群の把持機構接触面群番号と、を含む。図17と比較して、障害物と干渉する平面要素を含む把持対象物接触面群以外のデータが選択されていることが分かる。
【0149】
S3509:把持対象物接触面群選択部105は、インデックスkを1カウントアップする。そして、処理をA(S3510)に進める。
【0150】
S3510:把持対象物接触面群選択部105は、インデックスiを1カウントアップする。そして、処理をS3503に戻す。
【0151】
以上のようにして、選択された把持対象物接触面群データが生成される。
【0152】
図22は、把持機構動作量算出処理の一例を示すフロー図である。
【0153】
S410:把持機構動作量算出部106は、選択された把持対象物接触面群データ120を記憶部から取得する。
【0154】
S420:把持機構動作量算出部106は、把持機構動作範囲データ121を記憶部から取得する。
【0155】
S430:把持機構動作量算出部106は、把持機構接触面群データ115を記憶部から取得する。
【0156】
S440:把持機構動作量算出部106は、各把持機構接触面群を構成する平面要素間隔δと、各把持対象物接触面群を構成する平面要素間隔Δとが一致する把持機構の動作量を算出する。例えば、図23に示すように、把持機構接触面群が指Aの平面要素(節点1、2、6、5)と指Bの平面要素(節点0、3、7、4)とで構成されている場合、平面要素間隔δは、これらの平面要素を対向させた場合の平面要素間の直線距離(最短距離)となる。また、把持対象物接触面群が平面要素(節点abnm)と平面要素(節点deqp)とで構成されている場合、平面要素間隔Δは、これらの対向させた場合の平面要素間の直線距離(最短距離)となる。動作量は、例えば、間隔δを、基準となる所定の間隔から間隔Δまで開く又は閉じるための移動量である。
【0157】
S440の詳細を、図24を参照して説明する。図24は、把持機構動作量を特定する処理の一例を示すフロー図である。
【0158】
S4401:把持機構動作量算出部106は、選択された把持対象物接触面群データ120に含まれる各把持対象物接触面群を指すインデックスiを0に設定する。
【0159】
S4402:把持機構動作量算出部106は、インデックスiが、選択された把持対象物接触面群データ120に含まれる把持対象物接触面群の総数Nより小さいか否かを判定する。Nより小さい場合(S4402:YES)、処理をS4403に進める。N以上の場合(S4402:NO)、本フローを終了する。
【0160】
S4403:把持機構動作量算出部106は、把持対象物接触面群iの平面要素間隔Δを計算する。
【0161】
S4404:把持機構動作量算出部106は、S420で取得した把持機構動作範囲データ121に基づいて、平面要素間隔Δが、把持対象物接触面群iに関連付けられた把持機構接触面群の可動範囲内で把持できるか否かを判定する。例えば、把持対象物接触面群iに関連付けられた把持機構接触面群の平面要素の最小の間隔をδmin、最大の間隔をδmaxとすると、δmin<間隔Δ<δmaxであれば、可動範囲内で把持できると判定することができる。可動範囲内である場合(S4404:YES)、処理をS4405に進める。可動範囲内でない場合(S4404:NO)、処理をS4406に進める。
【0162】
S4405:把持機構動作量算出部106は、間隔Δとなるような動作量を、把持対象物接触面群iに関連付けられた把持機構接触面群の動作量として設定し、把持機構動作量データ122に記録する。把持機構動作量データ122は、例えば、把持対象物接触面群を特定する把持対象物接触面群番号ごとに、当該把持対象物接触面群を構成する平面要素の平面要素番号と、当該把持対象物接触面群を把持する把持機構接触面群の把持機構接触面群番号と、当該把持機構接触面群の動作量を含む。
【0163】
S4406:把持機構動作量算出部106は、無効(把持できないこと示す情報)を、把持対象物接触面群iに関連付けられた把持機構接触面群の動作量として設定し、把持機構動作量データ122に記録する。
【0164】
S4407:把持機構動作量算出部106は、インデックスiを1インクリメントする。そして、処理をS4402に戻す。
【0165】
以上のようにして、把持機構動作量データが生成される。なお、上記では、動作量として把持機構接触面群の平面要素の間隔を例示しているが、これに限られない。
【0166】
図25は、把持機構位置姿勢設定処理の一例を示すフロー図である。
【0167】
S510:把持機構位置姿勢設定部107は、予め用意された又は生成された把持機構形状近似データ113を記憶部から取得する。
【0168】
S520:把持機構位置姿勢設定部107は、予め用意された又は生成された把持対象物形状近似データ114を記憶部から取得する。
【0169】
S530:把持機構位置姿勢設定部107は、障害物データ119を記憶部から取得する。
【0170】
S540:把持機構位置姿勢設定部107は、選択された把持対象物接触面群データ120を記憶部から取得する。
【0171】
S550:把持機構位置姿勢設定部107は、把持対象物位置姿勢データ118を記憶部から取得する。
【0172】
S560:把持機構位置姿勢設定部107は、把持機構動作量データ122を記憶部から取得する。
【0173】
S570:把持機構位置姿勢設定部107は、ロボット1及び把持機構と、それ以外のものとが干渉しない把持機構の位置及び姿勢を算出する。
【0174】
S570の詳細を、図26〜27を参照して説明する。図26は、障害物と干渉しない把持機構の位置及び姿勢を特定する処理の一例を示すフロー図(その1)である。図27は、障害物と干渉しない把持機構の位置及び姿勢を特定する処理の一例を示すフロー図(その2)である。
【0175】
S5701:把持機構位置姿勢設定部107は、選択された把持対象物接触面群データ120と把持機構動作量データ122とに基づいて、選択された把持対象物接触面群データ120に含まれる把持対象物接触面群のうち、関連付けられた把持機構接触面群の動作量が無効でない各把持対象物接触面群を指すインデックスiを0に設定する。
【0176】
S5702:把持機構位置姿勢設定部107は、インデックスiが、選択された把持対象物接触面群データ120に含まれる把持対象物接触面群のうち、関連付けられた把持機構接触面群の動作量が無効でない把持対象物接触面群の総数Nより小さいか否かを判定する。Nより小さい場合(S5702:YES)、処理をS5703に進める。N以上の場合(S5702:NO)、本フローを終了する。
【0177】
S5703:把持機構位置姿勢設定部107は、把持対象物接触面群iに関連付けられた把持機構接触面群(以下、「把持機構接触面群i」という)で、把持対象物接触面群iを把持可能な位置及び姿勢の総数を示す変数count[i]を0に設定する。
【0178】
S5704:把持機構位置姿勢設定部107は、把持対象物接触面群iの基準の軸と、把持機構接触面群iの基準の軸とが、平行になる把持機構の初期位置及び初期姿勢を計算する。
【0179】
ここで、把持対象物接触面群iの軸は、例えば、図28に示すように、把持対象物接触面群iを構成する平面要素間の直線距離(最短距離)Δ1と平行な軸Aである。軸Aの位置は、特に限定されないが、例えば、少なくともいずれか一方の平面要素あるいは平面要素の重心を通過する位置とすることができる。把持機構接触面群iの軸は、把持機構接触面群iを構成する平面要素間の直線距離(最短距離)δ1と平行な軸aである。軸aの位置は、特に限定されないが、例えば、少なくともいずれか一方の平面要素あるいは平面要素の重心を通過する位置とすることができる。本フローにおいては、δ1=Δ1に設定して処理を行う。
【0180】
また、平行とは、例えば、図28に示すように、軸Aと軸aが平行であり、かつ、軸Aと軸aの対応する側の節点同士を結ぶ直線が、各軸と直交する状態をいうものとする。すなわち、軸Aと軸aが向かい合う辺をなす矩形の4つの角は、全て90度となる。
【0181】
なお、初期位置及び初期姿勢における軸Aと軸aの相対的な距離や、軸Aと軸aの相対的な位関係は、特に限定されないが、例えば、把持対象物位置姿勢データ118から特定される現在の把持対象物の位置における軸Aの位置と、現在のロボット1のハンドの位置における軸aの位置とすることができる。
【0182】
S5705:把持機構位置姿勢設定部107は、ハンド8の角度θを0に設定する。ここで、角度θは、例えば、図29(把持対象物及び把持機構を側面から見ている)に示すように、軸aを基準に、把持機構接触面群iを初期角度(θ=0)から回転させる角度である。初期角度は、特に限定されないが、例えば、床に対してハンドが水平となる角度とすることができる。
【0183】
S5706:把持機構位置姿勢設定部107は、角度θが所定角度(例えば、360度)より小さいか否かを判定する。所定角度より小さい場合(S5706:YES)、処理をS5707に進める。所定角度以上の場合(S5706:NO)、処理をD(図27のS5726)に進める。
【0184】
S5707:把持機構位置姿勢設定部107は、把持機構接触面群iを角度θだけ回転させたときの、把持機構形状を計算する。すなわち、把持機構接触面群iを構成する平面要素を角度θだけ回転させたときの、作業空間中のハンド8が占める領域の形状を算出する。
【0185】
S5708:把持機構位置姿勢設定部107は、S5707で算出した角度θ回転した把持機構接触面群iの位置及び姿勢のときの把持機構形状を並進させる方向と距離を示すインデックスjを0に設定する。
【0186】
S5709:把持機構位置姿勢設定部107は、インデックスjが、把持機構形状を並進させる方向と距離の総数Mより小さいか否かを判定する。Mより小さい場合(S5709:YES)、処理をS5711に進める。M以上の場合(S5709:NO)、処理をC(S5710)に進める。
【0187】
ここで、把持機構形状を並進させる方向と距離とは、把持機構と把持対象物を平行に保ったまま、把持機構を初期位置姿勢から把持対象物に向かって移動(並進)させる方向と距離である。例えば、図29に示すように、方向と距離(Xj、Yj、Zj)は、軸aが把持対象物接触面群の平面要素の領域内の任意の点Pjまで移動する方向と距離である。図では、点P0と当該点に向かう方向と距離(X0、Y0、Z0)、点P1と当該点に向かう方向と距離(X1、Y1、Z1)、点P2と当該点に向かう方向と距離(X2、Y2、Z2)が示されている。点Pを平面要素の領域内のどの位置に設定するかは、特に限定されないが、例えば、平面要素の重心の周辺など、実際に把持したときに把持対象物がなるべく不安定にならないような位置に複数設定すればよい。
【0188】
S5710:把持機構位置姿勢設定部107は、角度θに、所定の角度dθ(例えば、10度)を加えたものを新しい角度θとする。そして、処理をS5706に戻す。
【0189】
S5711:把持機構位置姿勢設定部107は、S5707で算出した把持機構形状を並進させる方向と距離(X、Y、Z)を、点Pjに対応する(Xj、Yj、Zj)に設定する。
【0190】
S5712:把持機構位置姿勢設定部107は、S5707で算出した把持機構形状を、軸aの位置から(X、Y、Z)だけ並進させる。
【0191】
S5713:把持機構位置姿勢設定部107は、S5712で(X、Y、Z)だけ並進をさせた状態において、把持機構とロボット全体がとる位置及び姿勢を特定するとともに、そのときの把持機構とロボット全体の形状が占める空間上の領域を特定し、当該領域が、障害物(例えば、床、周辺機器など、把持対象物以外のロボットの周辺の物)に干渉しないか否かを判定する。
【0192】
なお、把持機構形状の並進の開始から終了までの間、把持機構とロボット全体がとる位置及び姿勢と形状が占める一連の領域とを特定し、障害物(例えば、床、周辺機器など、把持対象物以外のロボットの周辺の物)に干渉しないか否かを判定するようにしてもよい。
【0193】
把持機構形状が障害物に干渉しない場合(S5713:YES)、把持機構位置姿勢設定部107は、処理をS5714に進める。干渉する場合(S5713:NO)、処理をS5715に進める。
【0194】
S5714:把持機構位置姿勢設定部107は、把持機構接触面群iを構成する各平面要素と、把持対象物接触面群iを構成する各平面要素とが、互いに交差するか否かを判定する。交差する場合(S5714:YES)、処理をS5716に進める。交差しない場合(S5714:NO)、処理をS5715に進める。
【0195】
S5715:把持機構位置姿勢設定部107は、インデックスjを1インクリメントする。
【0196】
S5716:把持機構位置姿勢設定部107は、インデックスkを0に設定する。インデックスkは、インデックスiと同様である。
【0197】
S5717:把持機構位置姿勢設定部107は、インデックスkがNより小さいか否かを判定する。Nより小さい場合(S5717:YES)、処理をS5718に進める。N以上の場合(S5717:NO)、処理をB(図27のS5724)に進める。
【0198】
S5718:把持機構位置姿勢設定部107は、インデックスkがインデックスiと等しくないか否かを判定する。インデックスiと等しくない場合(S5718:YES)、処理をS5720に進める。インデックスiと等しい場合(S5718:NO)、処理をS5719に進める。
【0199】
S5719:把持機構位置姿勢設定部107は、インデックスkを1インクリメントする。そして、処理をS5717に戻す。
【0200】
S5720:把持機構位置姿勢設定部107は、把持対象物接触面群kを構成する平面要素と、把持対象物接触面群iを構成する平面要素とが一致する否かを判定する。一致する場合(S5720:YES)、処理をS5721に進める。一致しない場合(S5720:NO)、処理をS5719に戻す。
【0201】
S5721:把持機構位置姿勢設定部107は、S5712で(X、Y、Z)だけ並進をさせた状態の把持機構形状において、把持機構接触面群kを構成する各平面要素と、把持対象物接触面群iを構成する各平面要素とが、互いに交差するか否かを判定する。交差する場合(S5721:YES)、処理をA(図27のS5722)に進める。交差しない場合(S5721:NO)、処理をS5719に戻す。
【0202】
S5722:把持機構位置姿勢設定部107は、把持対象物接触面群iについて、把持機構接触面群i及びkと、把持機構の位置及び姿勢(Xj、Yj、Zj、θ)とを関連付けて、把持機構位置姿勢データ123に記録する。把持機構位置姿勢データ123は、例えば、把持対象物接触面群を特定する把持対象物接触面群番号ごとに、当該把持対象物接触面群を構成する平面要素の平面要素番号と、当該把持対象物接触面群を把持可能な把持機構接触面群の把持機構接触面群番号及びその把持機構の位置及び姿勢(Xj、Yj、Zj、θ)と、を含む。
【0203】
S5723:把持機構位置姿勢設定部107は、把持対象物接触面群iを把持可能な把持機構接触面群iの位置及び姿勢の総数を示す変数count[i]を、1インクリメントする。そして、処理をC(S5710)に戻す。
【0204】
S5724:把持機構位置姿勢設定部107は、把持対象物接触面群iについて、把持機構接触面群iと、把持機構の位置及び姿勢(Xj、Yj、Zj、θ)とを関連付けて、把持機構位置姿勢データ123に記録する。
【0205】
S5725:把持機構位置姿勢設定部107は、把持対象物接触面群iを把持可能な把持機構接触面群iの位置及び姿勢の総数を示す変数count[i]を、1インクリメントする。そして、処理をC(S5710)に戻す。
【0206】
S5726:把持機構位置姿勢設定部107は、count[i]が0より大きいか否かを判定する。0より大きい場合(S5726:YES)、処理をS5727に進める。0である場合(S5726:NO)、処理をS5728に進める。
【0207】
S5727:把持機構位置姿勢設定部107は、把持対象物接触面群iについて、無効(把持不可能)であることを示す情報を記録する。そして、処理をS5728に進める。
【0208】
S5728:把持機構位置姿勢設定部107は、インデックスiを1インクリメントする。そして、処理をE(S5702)に戻す。
【0209】
以上のようにして、把持機構位置姿勢データが生成される。なお、上記のフローでは、一つの軸aの位置について角度θを変更して把持機構の位置及び姿勢を探索しているが、軸aの位置を複数の位置に変更し、各軸aの位置ごとに角度θを変更して把持機構の位置及び姿勢を探索するようにしてもよい。軸aの位置は、例えば、作業空間の任意の位置とすることができる。
【0210】
なお、コントローラー10は、生成された把持機構位置姿勢データに基づいて、いずれかの、把持対象物接触面群とそれに関連付けられた把持機構接触面群及び把持機構の位置及び姿勢(Xj、Yj、Zj、θ)を選択し、ハンド8がこの把持位置及び把持姿勢となるように、ハンド8を実際に動作させる。
【0211】
上述のフローの各処理単位は、ロボット1の処理を理解容易にするために、主な処理内容に応じて分割したものである。処理単位の分割の仕方や名称によって、本願発明が制限されることはない。ロボット1の処理は、処理内容に応じて、さらに多くの処理単位に分割することもできる。また、1つの処理単位がさらに多くの処理を含むように分割することもできる。
【0212】
以上、本発明の一実施形態の一例について説明した。本実施形態によれば、障害物等と接触することなく把持対象物を把持可能な把持位置及び把持姿勢を決定することができる。
【0213】
例えば、本実施形態では、障害物と干渉していない把持対象物接触面群が選択される。また、選択された把持対象物接触面群に中から、把持機構の動作範囲で把持可能な把持対象物接触面群が特定される。また、特定された把持対象物接触面群を把持機構が把持するときに、把持機構が取り得る様々な位置及び姿勢のうち、ロボットや把持機構が障害物と干渉しない把持機構の位置及び姿勢が特定される。このような構成により、ロボットが障害物等と接触することなく把持対象物を把持可能な把持位置及び把持姿勢を決定することができる。また、把持対象物が障害物と干渉していたり、障害物に隠れていたりしても、把持対象物を把持可能な把持位置及び把持姿勢を決定することができる。
【0214】
また、例えば、本実施形態では、把持位置及び把持姿勢を特定する前に、把持対象物接触面群のうち、障害物と干渉しておらず、かつ把持機構の動作範囲で把持可能なものが、候補として抽出される。このような構成により、把持位置及び把持姿勢を特定する際の処理回数が削減され、演算負荷が軽減される。また、各角度の把持機構の位置及び姿勢ごとに、障害物に干渉しないものが一つでも見つかれば、その角度の位置及び姿勢を特定する処理を終了するので、処理回数が削減され、演算負荷が軽減される。
【0215】
なお、上記の本発明の実施形態は、本発明の要旨と範囲を例示することを意図し、限定するものではない。多くの代替物、修正および変形例が当業者にとって明らかである。
【0216】
また、例えば、上記の実施形態では、ロボット自身が自律的に把持位置及び把持姿勢を決定しているが、コントローラー10の機能の少なくとも一部を、ロボットが通信可能な外部装置やシステムにおいて行ってもよい。すなわち、ロボットとシステムとで機能を分散し、協働することによりロボットの制御が行われるようにしてもよい。
【符号の説明】
【0217】
1:ロボット、2:頭部、3:胴体部、4:脚部、5:アーム、6:ジョイント、7:リンク、8:ハンド、9:指、10:コントローラー、11:CPU、12:RAM、13:ROM、14:I/F回路、15:通信装置、20:撮像部、30:可動部、31:アクチュエーター、32:センサー、101:形状近似部、102:把持機構接触面群生成部、103:把持対象物接触面群生成部、104:把持対象物位置姿勢取得部、105:把持対象物接触面群選択部、106:把持機構動作量算出部、107:把持機構位置姿勢設定部、111:把持機構形状データ、112:把持対象物形状データ、113:把持機構形状近似データ、114:把持対象物形状近似データ、115:把持機構接触面群データ、116:把持対象物接触面群データ、117:把持対象物認識処理データ、118:把持対象物位置姿勢データ、119:障害物データ、120:選択された把持対象物接触面群データ、121:把持機構動作範囲データ、122:把持機構動作量データ、123:把持機構位置姿勢データ
【特許請求の範囲】
【請求項1】
把持機構により把持対象物を把持する把持ロボットであって、
前記把持対象物が把持されるときに前記把持機構と接触する面の組み合わせである把持対象物接触面群と、当該把持対象物接触面群を把持するときに接触する前記把持機構の面の組み合わせである把持機構接触面群とを対応付けた把持対象物接触面群情報、及び、
前記把持ロボットの作業空間中の障害物の領域を特定する障害物情報、
を記憶する記憶部と、
前記把持対象物の位置及び前記把持対象物の姿勢を画像認識により特定する把持対象物位置姿勢特定部と、
前記把持対象物位置姿勢特定部により特定された前記把持対象物の位置及び前記把持対象物の姿勢において前記障害物と接触していない把持対象物接触面群を、前記把持対象物接触面群情報から選択する把持対象物接触面群選択部と、を有する、
ことを特徴とする把持ロボット。
【請求項2】
請求項1に記載の把持ロボットであって、
前記把持対象物接触面群選択部により選択された前記把持対象物接触面群ごとに、当該把持対象物接触面群に対応付けられた把持機構接触面群について、所定の位置において所定の姿勢を設定し、当該姿勢で当該把持機構接触面群を当該把持対象物接触面群を把持する位置に移動したとした場合に、前記障害物と接触するか否かを判定し、前記障害物と接触しない前記把持機構の位置及び前記把持機構の姿勢を特定する、把持機構位置姿勢特定部を有する、
ことを特徴とする把持ロボット。
【請求項3】
請求項2に記載の把持ロボットであって、
前記把持機構位置姿勢特定部は、前記把持対象物接触面群選択部により選択された把持対象物接触面群ごとに、当該把持対象物接触面群に対応付けられた把持機構接触面群について、前記所定の位置において複数の異なる姿勢を設定し、姿勢ごとに、当該姿勢で当該把持機構接触面群を当該把持対象物接触面群を把持する位置に移動したとした場合に、前記障害物と接触するか否かを判定し、前記障害物と接触しない前記把持機構の位置及び前記把持機構の姿勢を特定する、
ことを特徴とする把持ロボット。
【請求項4】
請求項2又は3に記載の把持ロボットであって、
前記記憶部は、前記把持機構の動作範囲を示す把持機構動作範囲情報を記憶し、
前記把持ロボットは、
前記把持機構動作範囲情報に基づいて、前記把持対象物接触面群選択部により選択された選択された把持対象物接触面群ごとに、当該把持対象物接触面群を当該把持対象物接触面群に対応付けられた把持機構接触面群の動作範囲で把持できるか否かを判定する把持機構動作量算出部を有し、
前記把持機構位置姿勢特定部は、前記把持機構動作量算出部により把持できると判定された把持機構接触面群について、前記把持機構の位置及び前記把持機構の姿勢を特定する、
ことを特徴とする把持ロボット。
【請求項5】
請求項1〜4いずれか一項に記載の把持ロボットであって、
前記記憶部は、前記把持対象物を面で表した把持対象物形状情報と、前記把持機構が把持するときに前記把持対象物と接触する面の組み合わせである接触面群を特定する把持機構接触面群情報と、を記憶し、
前記把持ロボットは、
前記把持対象物形状情報と前記把持機構接触面群情報とに基づいて、前記把持機構接触面群情報に含まれる把持機構接触面群ごとに、当該把持機構接触面群が把持することができる前記把持対象物の面の組み合わせを把持対象物接触面群として特定し、当該把持対象物接触面群と当該把持機構接触面群とを対応付けることにより、前記把持対象物接触面群情報を生成する把持対象物接触面群生成部を有する、
ことを特徴とする把持ロボット。
【請求項6】
請求項5に記載の把持ロボットであって、
前記把持対象物接触面群生成部は、前記把持機構接触面群情報に含まれる把持機構接触面群ごとに、当該把持機構接触面群を構成する一方の把持機構接触面と向かい合う前記把持対象物の第一の面を特定し、前記一方の把持機構接触面と前記第一の面とが向かい合った状態において、前記把持機構接触面群を構成する他方の把持機構接触面と向かい合う前記把持対象物の第二の面を特定し、前記第一の面と前記第二の面の組み合わせを把持対象物接触面群として特定する、
ことを特徴とする把持ロボット。
【請求項7】
請求項5又は6に記載の把持ロボットであって、
前記記憶部は、前記把持機構を面で表した把持機構形状情報を記憶し、
前記把持ロボットは、
前記把持機構形状情報に基づいて、前記把持機構の面のうち、互いに向かい合う面の組み合わせを特定し、前記把持機構接触面群情報として生成する把持機構接触面群生成部を有する、
ことを特徴とする把持ロボット。
【請求項8】
請求項7に記載の把持ロボットであって、
前記把持対象物形状情報及び前記把持機構形状情報は、前記把持対象物及び前記把持機構を平面で近似したデータである、
ことを特徴とする把持ロボット。
【請求項9】
把持機構により把持対象物を把持する把持ロボットを制御する制御装置であって、
前記把持対象物が把持されるときに前記把持機構と接触する面の組み合わせである把持対象物接触面群と、当該把持対象物接触面群を把持するときに接触する前記把持機構の面の組み合わせである把持機構接触面群とを対応付けた把持対象物接触面群情報、及び、
前記把持ロボットの作業空間中の障害物の領域を特定する障害物情報、
を記憶する記憶部と、
前記把持対象物の位置及び前記把持対象物の姿勢を画像認識により特定する把持対象物位置姿勢特定部と、
前記把持対象物位置姿勢特定部により特定された前記把持対象物の位置及び前記把持対象物の姿勢において前記障害物と接触していない把持対象物接触面群を、前記把持対象物接触面群情報から選択する把持対象物接触面群選択部と、を有する、
ことを特徴とする制御装置。
【請求項10】
把持機構により把持対象物を把持する把持ロボットの把持制御方法であって、
前記把持対象物が把持されるときに前記把持機構と接触する面の組み合わせである把持対象物接触面群と、当該把持対象物接触面群を把持するときに接触する前記把持機構の面の組み合わせである把持機構接触面群とを対応付けた把持対象物接触面群情報、及び、
前記把持ロボットの作業空間中の障害物の領域を特定する障害物情報、
を取得するステップと、
前記把持対象物の位置及び前記把持対象物の姿勢を画像認識により特定する把持対象物位置姿勢特定ステップと、
前記把持対象物位置姿勢特定ステップで特定された前記把持対象物の位置及び前記把持対象物の姿勢において前記障害物と接触していない把持対象物接触面群を、前記把持対象物接触面群情報から選択する把持対象物接触面群選択ステップと、を含む、
ことを特徴とする把持制御方法。
【請求項11】
把持機構により把持対象物を把持する把持ロボットを制御する制御装置のプログラムであって、
前記把持対象物が把持されるときに前記把持機構と接触する面の組み合わせである把持対象物接触面群と、当該把持対象物接触面群を把持するときに接触する前記把持機構の面の組み合わせである把持機構接触面群とを対応付けた把持対象物接触面群情報、及び、
前記把持ロボットの作業空間中の障害物の領域を特定する障害物情報、
を記憶する記憶部と、
前記把持対象物の位置及び前記把持対象物の姿勢を画像認識により特定する把持対象物位置姿勢特定部と、
前記把持対象物位置姿勢特定部により特定された前記把持対象物の位置及び前記把持対象物の姿勢において前記障害物と接触していない把持対象物接触面群を、前記把持対象物接触面群情報から選択する把持対象物接触面群選択部として、前記制御装置を機能させる、
ことを特徴とするプログラム。
【請求項1】
把持機構により把持対象物を把持する把持ロボットであって、
前記把持対象物が把持されるときに前記把持機構と接触する面の組み合わせである把持対象物接触面群と、当該把持対象物接触面群を把持するときに接触する前記把持機構の面の組み合わせである把持機構接触面群とを対応付けた把持対象物接触面群情報、及び、
前記把持ロボットの作業空間中の障害物の領域を特定する障害物情報、
を記憶する記憶部と、
前記把持対象物の位置及び前記把持対象物の姿勢を画像認識により特定する把持対象物位置姿勢特定部と、
前記把持対象物位置姿勢特定部により特定された前記把持対象物の位置及び前記把持対象物の姿勢において前記障害物と接触していない把持対象物接触面群を、前記把持対象物接触面群情報から選択する把持対象物接触面群選択部と、を有する、
ことを特徴とする把持ロボット。
【請求項2】
請求項1に記載の把持ロボットであって、
前記把持対象物接触面群選択部により選択された前記把持対象物接触面群ごとに、当該把持対象物接触面群に対応付けられた把持機構接触面群について、所定の位置において所定の姿勢を設定し、当該姿勢で当該把持機構接触面群を当該把持対象物接触面群を把持する位置に移動したとした場合に、前記障害物と接触するか否かを判定し、前記障害物と接触しない前記把持機構の位置及び前記把持機構の姿勢を特定する、把持機構位置姿勢特定部を有する、
ことを特徴とする把持ロボット。
【請求項3】
請求項2に記載の把持ロボットであって、
前記把持機構位置姿勢特定部は、前記把持対象物接触面群選択部により選択された把持対象物接触面群ごとに、当該把持対象物接触面群に対応付けられた把持機構接触面群について、前記所定の位置において複数の異なる姿勢を設定し、姿勢ごとに、当該姿勢で当該把持機構接触面群を当該把持対象物接触面群を把持する位置に移動したとした場合に、前記障害物と接触するか否かを判定し、前記障害物と接触しない前記把持機構の位置及び前記把持機構の姿勢を特定する、
ことを特徴とする把持ロボット。
【請求項4】
請求項2又は3に記載の把持ロボットであって、
前記記憶部は、前記把持機構の動作範囲を示す把持機構動作範囲情報を記憶し、
前記把持ロボットは、
前記把持機構動作範囲情報に基づいて、前記把持対象物接触面群選択部により選択された選択された把持対象物接触面群ごとに、当該把持対象物接触面群を当該把持対象物接触面群に対応付けられた把持機構接触面群の動作範囲で把持できるか否かを判定する把持機構動作量算出部を有し、
前記把持機構位置姿勢特定部は、前記把持機構動作量算出部により把持できると判定された把持機構接触面群について、前記把持機構の位置及び前記把持機構の姿勢を特定する、
ことを特徴とする把持ロボット。
【請求項5】
請求項1〜4いずれか一項に記載の把持ロボットであって、
前記記憶部は、前記把持対象物を面で表した把持対象物形状情報と、前記把持機構が把持するときに前記把持対象物と接触する面の組み合わせである接触面群を特定する把持機構接触面群情報と、を記憶し、
前記把持ロボットは、
前記把持対象物形状情報と前記把持機構接触面群情報とに基づいて、前記把持機構接触面群情報に含まれる把持機構接触面群ごとに、当該把持機構接触面群が把持することができる前記把持対象物の面の組み合わせを把持対象物接触面群として特定し、当該把持対象物接触面群と当該把持機構接触面群とを対応付けることにより、前記把持対象物接触面群情報を生成する把持対象物接触面群生成部を有する、
ことを特徴とする把持ロボット。
【請求項6】
請求項5に記載の把持ロボットであって、
前記把持対象物接触面群生成部は、前記把持機構接触面群情報に含まれる把持機構接触面群ごとに、当該把持機構接触面群を構成する一方の把持機構接触面と向かい合う前記把持対象物の第一の面を特定し、前記一方の把持機構接触面と前記第一の面とが向かい合った状態において、前記把持機構接触面群を構成する他方の把持機構接触面と向かい合う前記把持対象物の第二の面を特定し、前記第一の面と前記第二の面の組み合わせを把持対象物接触面群として特定する、
ことを特徴とする把持ロボット。
【請求項7】
請求項5又は6に記載の把持ロボットであって、
前記記憶部は、前記把持機構を面で表した把持機構形状情報を記憶し、
前記把持ロボットは、
前記把持機構形状情報に基づいて、前記把持機構の面のうち、互いに向かい合う面の組み合わせを特定し、前記把持機構接触面群情報として生成する把持機構接触面群生成部を有する、
ことを特徴とする把持ロボット。
【請求項8】
請求項7に記載の把持ロボットであって、
前記把持対象物形状情報及び前記把持機構形状情報は、前記把持対象物及び前記把持機構を平面で近似したデータである、
ことを特徴とする把持ロボット。
【請求項9】
把持機構により把持対象物を把持する把持ロボットを制御する制御装置であって、
前記把持対象物が把持されるときに前記把持機構と接触する面の組み合わせである把持対象物接触面群と、当該把持対象物接触面群を把持するときに接触する前記把持機構の面の組み合わせである把持機構接触面群とを対応付けた把持対象物接触面群情報、及び、
前記把持ロボットの作業空間中の障害物の領域を特定する障害物情報、
を記憶する記憶部と、
前記把持対象物の位置及び前記把持対象物の姿勢を画像認識により特定する把持対象物位置姿勢特定部と、
前記把持対象物位置姿勢特定部により特定された前記把持対象物の位置及び前記把持対象物の姿勢において前記障害物と接触していない把持対象物接触面群を、前記把持対象物接触面群情報から選択する把持対象物接触面群選択部と、を有する、
ことを特徴とする制御装置。
【請求項10】
把持機構により把持対象物を把持する把持ロボットの把持制御方法であって、
前記把持対象物が把持されるときに前記把持機構と接触する面の組み合わせである把持対象物接触面群と、当該把持対象物接触面群を把持するときに接触する前記把持機構の面の組み合わせである把持機構接触面群とを対応付けた把持対象物接触面群情報、及び、
前記把持ロボットの作業空間中の障害物の領域を特定する障害物情報、
を取得するステップと、
前記把持対象物の位置及び前記把持対象物の姿勢を画像認識により特定する把持対象物位置姿勢特定ステップと、
前記把持対象物位置姿勢特定ステップで特定された前記把持対象物の位置及び前記把持対象物の姿勢において前記障害物と接触していない把持対象物接触面群を、前記把持対象物接触面群情報から選択する把持対象物接触面群選択ステップと、を含む、
ことを特徴とする把持制御方法。
【請求項11】
把持機構により把持対象物を把持する把持ロボットを制御する制御装置のプログラムであって、
前記把持対象物が把持されるときに前記把持機構と接触する面の組み合わせである把持対象物接触面群と、当該把持対象物接触面群を把持するときに接触する前記把持機構の面の組み合わせである把持機構接触面群とを対応付けた把持対象物接触面群情報、及び、
前記把持ロボットの作業空間中の障害物の領域を特定する障害物情報、
を記憶する記憶部と、
前記把持対象物の位置及び前記把持対象物の姿勢を画像認識により特定する把持対象物位置姿勢特定部と、
前記把持対象物位置姿勢特定部により特定された前記把持対象物の位置及び前記把持対象物の姿勢において前記障害物と接触していない把持対象物接触面群を、前記把持対象物接触面群情報から選択する把持対象物接触面群選択部として、前記制御装置を機能させる、
ことを特徴とするプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【公開番号】特開2013−111696(P2013−111696A)
【公開日】平成25年6月10日(2013.6.10)
【国際特許分類】
【出願番号】特願2011−259913(P2011−259913)
【出願日】平成23年11月29日(2011.11.29)
【出願人】(000002369)セイコーエプソン株式会社 (51,324)
【Fターム(参考)】
【公開日】平成25年6月10日(2013.6.10)
【国際特許分類】
【出願日】平成23年11月29日(2011.11.29)
【出願人】(000002369)セイコーエプソン株式会社 (51,324)
【Fターム(参考)】
[ Back to top ]