(57)【要約】【課題】  視覚センサを有し、ロボットハンドによって任意形状物体を適切に把持することを可能とするロボットによる任意形状物体の把持方法を提供する。【解決手段】  画像認識によって把持対象物を単純形状へと当てはめ（ステップＳ１）、その大きさ、向きを算出し（ステップＳ３）、形状の種別、大きさ、向きによって把持方法を選択し（ステップＳ１１、Ｓ３１、Ｓ４１）、把持点の空間位置座標を算出する（ステップＳ１３）。そして、求めた把持点を基にして把持姿勢を算出し（ステップＳ１５）、ロボットハンドの各指を把持位置へと配置して（ステップＳ２７）、把持力を調整する（ステップＳ２９）ことで、任意形状物体を確実に把持する。【選択図】  図３
2005169564.tif 000002
【特許請求の範囲】
【請求項１】
視覚センサと、多指・多関節を有するロボットハンドとを有するロボットによる任意形状物体の把持方法であって、
視覚センサで取得した対象物体の画像から画像認識により、数種の所定単純形状のうちで対象物体形状に近似する単純形状を求め、求めた単純形状とその向き・大きさに基づいて方形把持・円形把持から適切な把持方法を選択し、それに応じて前記ロボットハンドの各指の把持点を算出し、前記各指を制御して把持動作を行うことを特徴とするロボットによる任意形状物体の把持方法。
【請求項２】
前記所定単純形状は、直方体を含み、対象物体が直方体に近似すると判定した場合は、床面を含まない対向する２面のうち２面間の距離の最も小さな２面上に把持点を配置する方形把持による把持を優先して把持動作を行うことを特徴とする請求項１記載のロボットによる任意形状物体の把持方法。
【請求項３】
直方体近似の対象物を方形把持により把持する場合は、把持平面の中心と、該平面状の把持点の重心を一致させることを特徴とする請求項２記載のロボットによる任意形状物体の把持方法。
【請求項４】
前記所定単純形状は、楕円球を含み、対象物体が楕円球に近似すると判定した場合は、物体の中心を通る水平面と物体の表面との交線上に把持点を配置する円形把持による把持を優先して把持動作を行うことを特徴とする請求項１記載のロボットによる任意形状物体の把持方法。
【請求項５】
楕円球近似の対象物を円形把持により把持する場合は、把持に関与する指のうち、対象物体よりロボットの体に近い側に配置される指の把持点の重心位置と、対象物体よりロボットの体に遠い側に配置される指の把持点の重心位置とを結ぶ線が近似した楕円球の中心を通るよう各把持点を配置することを特徴とする請求項４記載のロボットによる任意形状物体の把持方法。
【請求項６】
前記所定の単純形状は、円柱を含み、対象物体が円柱に近似すると判定した場合は、円柱の中心軸の向きにより、円柱表面と該中心軸を含む平面との交線上に把持点を配置する方形把持と、円柱の端面上に把持点を配置する円形把持とのいずれを優先するかを選択して把持動作を行うことを特徴とする請求項１記載のロボットによる任意形状物体の把持方法。
【請求項７】
円柱近似の対象物を方形把持により把持する場合は、把持に関与する指のうち、対象物体よりロボットの体に近い側に配置される指の把持点の重心位置と、対象物体よりロボットの体に遠い側に配置される指の把持点の重心位置とを結ぶ線が近似した円柱の中心軸と交わるよう各把持点を配置することを特徴とする請求項６記載のロボットによる任意形状物体の把持方法。
【請求項８】
算出した把持点へロボットハンドの指を配置可能か否かを判定し、配置不能と判定した場合には、把持面または把持点を所定の対称軸を中心として回転させて再試行することを特徴とする請求項１〜７のいずれかに記載のロボットによる任意形状物体の把持方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はロボットによって任意の形状の物体を把持する方法に関し、特に、視覚センサによって対象物の形状を認識して物体を把持する方法に関する。
【背景技術】
【０００２】
産業用ロボットなどでは、通常、把持対象物・処理内容が限定されており、対象物に応じたロボットハンドの形状や把持制御が行われている。さらに、把持対象物を単品から複数に拡大し、それぞれに応じた処理を行わせる技術として視覚センサを用いたロボットハンドがある（例えば、特許文献１、２参照。）
特許文献１の技術は、ハンドの指中心軸と、光学式の距離センサ、視覚センサの光軸を一致させることで、座標変換演算を不要としてハンドの動作速度の向上を図ったものである。特許文献２の技術は、ロボットハンドに対象物であるワークを撮像する撮像手段を配置し、撮像した画像を基にしてワークの位置、形状を算出してハンドの把持姿勢制御を行うものである。
【特許文献１】特開平６−３１６６６号公報
【特許文献２】特開２００３−９４３６７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
これらの技術では、把持対象物がロボットハンドによる把持を想定した把持部を持っていたり、ロボットハンドでの把持に適した形態をとっていることが前提となっている。しかしながら、ロボットハンドの適用範囲をさらに拡大していく場合、任意の形状を有する多様な物体を適切に把持する動作を行う必要が出てくる。
【０００４】
そこで本発明は、視覚センサを有し、ロボットハンドによって任意形状物体を適切に把持することを可能とするロボットによる任意形状物体の把持方法を提供することを課題とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するため、本発明に係るロボットによる任意形状物体の把持方法は、視覚センサと、多指・多関節を有するロボットハンドとを有するロボットによる任意形状物体の把持方法であって、（１）視覚センサで取得した対象物体の画像から、数種の所定単純形状のうちで対象物体形状に近似する単純形状を画像認識により求め、（２）求めた単純形状とその向き・大きさに基づいて方形把持・円形把持から適切な把持方法を選択し、（３）それに応じてロボットハンドの各指の把持点を算出し、（４）各指を制御して把持動作を行うことを特徴とする。
【０００６】
この所定単純形状は、直方体を含み、対象物体が直方体に近似すると判定した場合は、床面を含まない対向する２面のうち２面間の距離の最も小さな２面上に把持点を配置する方形把持による把持を優先して把持動作を行うとよい。
【０００７】
直方体近似の対象物を方形把持により把持する場合は、把持平面の中心と、該平面状の把持点の重心を一致させるとよい。
【０００８】
また、所定単純形状は、楕円球を含み、対象物体が楕円球に近似すると判定した場合は、物体の中心を通る水平面と物体の表面との交線上に把持点を配置する円形把持による把持を優先して把持動作を行うとよい。
【０００９】
楕円球近似の対象物を円形把持により把持する場合は、把持に関与する指のうち、対象物体よりロボットの体に近い側に配置される指の把持点の重心位置と、対象物体よりロボットの体に遠い側に配置される指の把持点の重心位置とを結ぶ線が近似した楕円球の中心を通るよう各把持点を配置するとよい。
【００１０】
さらに、所定の単純形状は、円柱を含み、対象物体が円柱に近似すると判定した場合は、円柱の中心軸の向きにより、円柱表面と該中心軸を含む平面との交線上に把持点を配置する方形把持と、円柱の端面上に把持点を配置する円形把持とのいずれを優先するかを選択して把持動作を行うとよい。
【００１１】
円柱近似の対象物を方形把持により把持する場合は、把持に関与する指のうち、対象物体よりロボットの体に近い側に配置される指の把持点の重心位置と、対象物体よりロボットの体に遠い側に配置される指の把持点の重心位置とを結ぶ線が近似した円柱の中心軸と交わるよう各把持点を配置するとよい。
【００１２】
本発明においては、まず、対象物の画像を視覚センサにより撮像し、取得した画像から画像認識を行うことで、対象物を単純な形状（直方体、円柱、楕円球等）へ当てはめる（近似する）。近似した形状、その向き、大きさから方形把持、円形把持のうちで適切な把持方法を選択し、選択した把持方法による把持点を算出する。求めた把持点から逆算して把持点への各指の移動経路を求め、求めた移動経路に応じて各指を制御し、対象物を把持する。
【００１３】
算出した把持点へロボットハンドの指を配置可能か否かを判定し、配置不能と判定した場合には、把持面または把持点を対称軸に対して回転させて再試行するとよい。
【００１４】
対象物とロボットとの位置関係によっては、設定した把持点と指との対応関係が満たされるよう指を配置することができない場合がある。このような場合は、把持面または把持点を所定の対称軸を中心として回転させて再試行、つまり、把持点の設定と把持点への各指の移動経路の設定を行う。
【発明の効果】
【００１５】
本発明によれば、対象物を単純な形状に当てはめ、当てはめた形状に応じて把持方法、把持点の設定を行うことで、比較的複雑な形状を有する任意の物体についても把持が可能となり、ロボットハンドの適用範囲が拡大する。また、当てはめを行うことで、把持方法、把持点の選択部分のプログラムを共通化し、簡略化することができるので、制御に必要なプログラム容量が少なくてすみ、確実な把持が行える。
【００１６】
対象物とロボットの位置関係によって、最初に設定した把持点での把持が困難な場合も、把持面・把持点を所定の対称軸を中心として回転させることで把持点の調整を簡略化することができ、把持不能となるのを抑制して、対象物を確実に把持することができる。
【発明を実施するための最良の形態】
【００１７】
以下、添付図面を参照して本発明の好適な実施の形態について詳細に説明する。説明の理解を容易にするため、各図面において同一の構成要素に対しては可能な限り同一の参照番号を附し、重複する説明は省略する。
【００１８】
図１は本発明に係るロボットによる任意形状物体の把持方法が適用されるロボットハンドの構成を示す図であり、図２は、その制御系、つまり、本発明に係るロボットによる任意形状物体の把持方法を実行する制御系を示すブロック構成図である。
【００１９】
本実施形態のロボットハンド１は、母指１０、示指１１、中指１２、薬指１３の４指からなる。母指１０は、４つの関節ごとにそれぞれモータ１４が配置された４自由度のリンク系であり、根元に６軸力センサ１５が配置されている。この６軸力センサ１５は、互いに直交する３軸方向のそれぞれに沿う方向の力と、各軸方向回りの力を独立に検出可能なセンサである。他の３指１１〜１３は、最先端の関節を除く３つの関節ごとにそれぞれモータ１４が配置され、最先端の関節は、隣接する関節と連動する構成とされている（連動関節１７）。したがって、４関節でそれぞれ３自由度のリンク系を構成する。ロボットハンド１全体の自由度は１３となる。各指１１〜１３の根元にはそれぞれ母指１０と同様に６軸力センサ１５が配置されている。これらの各指の先端１０ｔ〜１３ｔは、曲面形状の弾性体で構成されている。さらに、各関節には、関節の曲げ角度を検出するためのエンコーダポテンションメータ１６が配置されている。
【００２０】
このロボットハンド１は、図１、図２では図示を省略しているが、アーム７によって、ロボット本体８に取り付けられている。ロボット本体８は、左右にアーム７を有し、頭部にカメラアイ３を備えている。アーム７にもモータとエンコーダポテンションメータが配置され、ロボットハンド１を所望の位置に移動させることが可能な構成となっている。
【００２１】
制御系は、ＲＡＭ、ＲＯＭ、ＣＰＵ等で構成される制御ＥＣＵ２を中心に構成されており、把持対象物の画像を撮影するカメラアイ３の出力画像から画像認識によって対象物の形状・位置を認識する画像認識部２０と、認識結果を基にして把持位置・把持姿勢を計算する把持姿勢演算部２１と、ロボットハンド１の動きを制御するハンド制御部２２とを有している。ハンド制御部２２には、上述した各６軸力センサ１５と、エンコーダポテンションメータ１６の各出力信号が入力され、モータドライバ４により、各モータ１４の動きを制御する。
【００２２】
制御系は、このような構成に限られるものではなく、指示された姿勢となるようロボットハンド１の動きを制御する制御部と、画像認識装置や把持姿勢の演算部を、別体としてもよい。また、ハードウェア的に区分されていてもソフトウェア的に区分されていてもよい。
【００２３】
続いて、このロボットハンド１によって把持対象物を把持する際の制御方法を具体的に説明する。図３は、制御処理のメインフローチャートである。
【００２４】
最初に、カメラアイ３から入力された画像情報を基にして、画像認識部２０が画像認識により、把持対象物を所定の単純形状のいずれかに当てはめる（ステップＳ１）。ここでは、直方体（立方体を含む）、円柱、楕円球（真円球を含む）のうちいずれかの単純形状への当てはめ（近似）を行うものとする。この当てはめにおいては、把持対象物を内包する最小の単純形状を求める。図４〜図６は、それぞれ、任意形状物体、コップ、りんごを直方体、円柱、楕円球に当てはめた場合の当てはめの例を示している。この当てはめは、テンプレートマッチング、特徴抽出、相関演算等によって行うことができる。単純形状に当てはめたら、当てはめた単純形状の大きさと向きを求める（ステップＳ３）。
【００２５】
ステップＳ５では、当てはめた単純形状の種別を判別し、判別した単純形状に応じてステップＳ１１、Ｓ３１、Ｓ４１へと分岐させる。
【００２６】
ステップＳ１１では、当てはめた単純形状が直方体の場合の把持方法決定処理を行う。具体的な処理のフローチャートを図７に示す。まず、把持方法を方形把持に設定する（ステップＳ１１０）。ここで、方形把持は、把持点を含む対象物断面が矩形となる把持形態である。そして、対向する２面の組み合わせ（３組存在する。）のうち、２面間の距離が最も近い２面を把持平面とする（ステップＳ１１２）。
【００２７】
次に、その２面のうち一方が床面に接している面か否かを判定する（ステップＳ１１４）。床面に接している場合には、他の対向する２面の組みあわせ（２組）のうち、２面間の距離が近いほうを把持平面に設定する（ステップＳ１１６）。床面に接していない場合には、選択していた把持平面を維持する。
【００２８】
ここで、２面間の距離が最も近い対向する２平面の組み合わせが２組以上存在する場合（いずれかの断面が正方形の場合）には、ロボット本体８に近い側の平面を含む組み合わせを優先し、距離も同一の場合には、ロボット本体８に対して外側に位置する側の平面を含む組み合わせを優先する。
【００２９】
把持平面が確定したら、対象物の主軸方向の長さＬMを判定して分岐する（ステップＳ１１８）。ここで、直方体における主軸とは、物体の中心を通り、把持平面を構成する長辺方向に平行な直線を指す。把持平面が正方形の場合には、ロボット本体８に近い側の辺方向に平行な直線を主軸とする。
【００３０】
主軸方向の長さＬMが短く、Ｌ０未満の場合には、ステップＳ１２０に移行して２本指把持とし、主軸方向の長さＬMが十分に長く、Ｌ１（Ｌ１＞Ｌ０）を超える場合には、ステップＳ１２２に移行して４本指把持とし、主軸方向の長さＬMがＬ０以上Ｌ１以下の場合には、ステップＳ１２４に移行して３本指把持に設定する。
【００３１】
把持に用いる指の本数が確定したらステップＳ１２６へと移行して主軸方向を判定する。主軸方向が横（例えば、水平面となす角度が４５度未満の場合）と判定した場合には、把持方向を上方からに設定する（ステップＳ１２８）。主軸方向が横ではなく鉛直に近いと判定した場合には、把持方向を横方向からに設定する（ステップＳ１３０）。
【００３２】
把持方向、把持面、把持に用いる指の本数が確定したら、ステップＳ１３へと移行して把持点の空間座標位置を求める。
【００３３】
４本指把持の場合の把持点位置を図８に示す。ここで、対象物６を当てはめた直方体６０で表し、この直方体６０には、把持平面６０Ａ、６０Ｂと主軸６０Ｃが設定されている。主軸６０Ｃ上に直方体６０の中心６０Ｏを設定し、把持平面６０Ａ、６０Ｂおよび主軸６０Ｃに直交する直線６０Ｄと把持平面６０Ａ（両把持平面６０Ａ、６０Ｂのうち、ロボットに近い側の平面）の交点を母指１０による把持点１０Ｘとし、直線６０Ｄと把持平面６０Ｂの交点を中指１２による把持点１２Ｘとする。そして、把持平面６０Ｂ上で１２Ｘから主軸６０Ｃ方向にΔｌずつ離れた２点（２点の中心が１２Ｘとなる。）をそれぞれ示指１１による把持点１１Ｘ、薬指１３による把持点１３Ｘとする。
【００３４】
２本指把持の場合は、図９に示されるように、４本指把持の場合と同一の手法で、把持点１０Ｘ、１２Ｘを求める。なお、中指１２に代えて示指１１により把持してもよい（この場合には、把持点１２Ｘ位置に把持点１１Ｘを配置することになる）。
【００３５】
３本指指示の場合も基本的な配置は４本指把持の場合と同様である。その把持点位置を図１０に示す。この場合も、把持平面６０Ａ、６０Ｂおよび主軸６０Ｃに直交する直線６０Ｄと把持平面６０Ａ、６０Ｂそれぞれの交点を求める。６０Ａとの交点を母指１０による把持点１０Ｘとする点は２本指、４本指把持の場合と共通するが、直線６０Ｄと把持平面６０Ｂの交点自体をいずれかの指の把持点に設定するのではなく、この交点を示指１１による把持点１１Ｘと中指１２による把持点１２Ｘの中点とする。ここで、把持点１１Ｘと１２Ｘは、主軸６０Ｃ方向にΔｌ離れて配置される。
【００３６】
把持点座標が決まったら、把持点に各指を配置するための把持姿勢を逆運動学手法により算出する（ステップＳ１５）。具体的には、各指→手首→アームの順に先端からロボット本体へ向かってそれぞれの姿勢と位置を算出する。
【００３７】
把持姿勢が算出できたら、アーム関節角が可動範囲内にあるか否かを判定する（ステップＳ１７）。可動範囲外の場合は、ステップＳ１９へと移行して把持点の調整処理を行う。この把持点調整処理は直方体の場合、以下のようにして行う。
【００３８】
把持方向が横方向からに設定されている場合の調整例を図１１に示す。初期設定の把持方向が図中の１に示される方向からだとすると、これを１→２→３→４の順に上から見て反時計回りに９０度ずつ変更する。つまり、把持平面を反時計回りに隣接の面へと移動させていくことになる。
【００３９】
把持方向が上方向からに設定されている場合の調整例を図１２に示す。初期設定の把持方向が図中の５に示される方向からだとする（ここで、図の手前側に母指を配置するものとする。図中他の場合も数字は母指に近い側を示す）。この場合も、把持方向を５→６→７→８の順に上から見て反時計回りに９０度ずつ変更する。つまり、把持平面を反時計回りに隣接の面へと移動させていくことになる点では横方向からの場合と同様である。
【００４０】
次のステップＳ２１では、把持方向調整の限界位置に至っていないかを判定する。具体的には、直方体の場合は、初期設定位置に戻った場合を限界位置と判定し、把持不能と判定してステップＳ２３へと移行し、把持不能である旨を報知して処理を終了する。把持方向が初期位置に至っていない場合には限界位置に至っていないと判定してステップＳ１３へと戻り、把持点位置座標の計算から再計算を行う。
【００４１】
ステップＳ１７でアームが可動範囲内にあると判定した場合は、把持動作へと移行する。具体的には、アーム、手首のモータを制御して目標把持姿勢を得る（ステップＳ２５）。次に、ハンド制御部２２は、エンコーダポテンションメータ１６の出力が所定の角度位置となるようモータドライバ４によりロボットハンド１の各モータ１４を制御することで、各指の先端を求めた把持位置へと配置する（ステップＳ２７）。そして、６軸力センサ１５の出力から算出した把持力が目標値となるようモータ１４の動作を制御することで把持を行う（ステップＳ２９）。把持後は、別のプログラムに移行し、対象物の移動や姿勢変更等所定の動作を実行する。
【００４２】
ステップＳ５で当てはめた単純形状が楕円球であった場合には、ステップＳ３１へと分岐して楕円球の場合の把持方法決定処理を行う。この場合の詳細な処理のフローチャートを図１３に示す。まず、上方からの円形把持に設定する（ステップＳ３１０）。円形把持は、把持点を含む対象物断面が楕円形（真円形を含む）となる把持形態である。最初に、把持に用いる指の本数を決定する。具体的には、対象物の中心を含む水平断面における長径ＤLをしきい値Ｄ０と比較する（ステップＳ３１２）。長径ＤLがしきい値Ｄ０未満の場合には、２本指把持とし（ステップＳ３１４）、長径ＤLがしきい値Ｄ０以上の場合には、４本指把持とする（ステップＳ３１６）。
【００４３】
把持方法を決定したら、ステップＳ１３へと移行して把持点位置を求める。把持点位置の求め方を図１４を参照して説明する。ここで、対象物６を当てはめた楕円球を６２とし、楕円球６２中で、中心６２Ｏを含む水平断面を６２Ｄで、その水平断面６２Ｄと楕円球６２の表面との交線である円周を６２Ｒで、中心６２Ｏを通る垂直線ベクトルを６２Ｖでそれぞれ表す。
【００４４】
アーム７の付け根の空間位置座標をＲ１、その鉛直下向きに所定距離ｈ離れた位置の空間位置座標をＲ２とする。ここで、Ｒ１の空間位置座標が（ｘ，ｙ，ｚ）で表されるとき、Ｒ２の空間位置座標は、（ｘ，ｙ，ｚ−ｈ）で表せる。Ｒ１、Ｒ２、６２Ｏを含む平面を求め、この平面Ｐと円周６２Ｒの交点２点を求め、そのうちのロボット本体８に近い側を母指１０による把持点１０Ｘとし、他方の点を中指１２による把持点１２Ｘとする（図１５（ａ）参照）。２本指把持の場合には、これで把持点設定処理は終了する。
【００４５】
４本指把持の場合には、さらに、把持点１２Ｘから距離Δｌずつ離れた円周６２Ｒ上の２点をそれぞれ示指１１による把持点１１Ｘ、薬指１３による把持点１３Ｘとする（図１５（ｂ）参照）。距離Δｌに代えて、把持点１２Ｘを中心６２Ｏに対して±θだけ円周６２Ｒ上にずらした位置に把持点１１Ｘ、１３Ｘを配置してもよい。
【００４６】
把持点座標が決まったら把持姿勢の算出を行う（ステップＳ１５）。これ以降の処理は、把持点調整処理を除いて当てはめた形状が直方体の場合と同一である。そのため、処理の異なる把持点調整処理についてのみ説明する。
【００４７】
ステップＳ１９の把持点調整処理は、円形把持の場合には以下のように行う。図１５（ａ）（ｂ）に示される各把持点位置を、円周６２Ｒ上で鉛直軸を中心として反時計回りに５度ずつ移動させる。ステップＳ３９では、この移動角度が初期設定位置から１８０度を超えた場合に、限界位置と判定して把持不能と判定する。
【００４８】
ステップＳ５で当てはめた形状が円柱であった場合には、ステップＳ４１に移行して把持方法決定処理を行う。具体的な処理のフローチャートを図１６に示す。まず、主軸の方向を判定する（ステップＳ４１０）。主軸方向が横方向（主軸と鉛直方向とのなす角度が所定角度、例えば４５度、以上の場合）にある、つまり円柱が横倒しになっていると判定した場合には、ステップＳ４１２へと移行してさらに円柱の長さを判定して分岐する。円柱の長さＬＰが短く、Ｌ０未満の場合には、ステップＳ４１４に移行して２本指把持とし、円柱の長さＬＰが十分に長く、Ｌ１（Ｌ１＞Ｌ０）を超える場合には、ステップＳ４１６に移行して４本指把持とし、円柱の長さＬＰがＬ０以上Ｌ１以下の場合には、ステップＳ４１８に移行して３本指把持に設定する。
【００４９】
ステップＳ４１４、Ｓ４１８で２本指または３本指把持に設定した場合には、さらに、円柱の直径ＤＰとしきい値Ｄthとを比較する（ステップＳ４２０）。ＤＰ＞Ｄthであり、円柱よりも円盤に近い形状であると判定した場合には、横方向からの４本指による方形把持に変更する（ステップＳ４２２）。ＤＰがＤth以下と判定した場合と、ステップＳ４１６で４本指把持に設定した場合は、上方からの方形把持に設定する（ステップＳ４２４）。
【００５０】
ステップＳ４１０で主軸方向が縦方向と判定した場合には、ステップＳ４２６へと移行して円柱の長さ（高さ）ＬＰとしきい値Ｌth（Ｌth＞Ｌ１）とを比較する。ＬＰ＞Ｌthの場合には、十分に長い円柱であると判定して、横からの４本指による方形把持に設定する（ステップＳ４２８）。ＬＰがＬth以下の場合には、円柱が短いと判定して上方からの円形把持に設定し（ステップＳ４３０）、円柱の直径ＤＰとしきい値Ｄth2とを比較する（ステップＳ４３２）。
【００５１】
ＤＰ＞Ｄth2であり、十分な太さの円柱であると判定した場合には、４本指把持とする（ステップＳ４３４）。逆にＤＰがＤth2以下で十分な太さのない細い円柱と判定した場合は、２本指把持に設定する（ステップＳ４３６）。
【００５２】
把持方法を決定したら、ステップＳ１３へと移行して把持点位置を求める。この場合の把持点位置の求め方を図１７〜図２０を参照して説明する。ここで、対象物６を当てはめた円柱を６１で表し、円柱６１の主軸を６１ｃ、その中心を６１Ｏとし、壁面を６１ｗ、両端面をそれぞれ６１Ａ、６１Ｂで表す。
【００５３】
方形把持の場合には、基本的には直方体の場合に類似する。まず、円盤の端面を把持する場合には、図１７（ａ）に示されるように、端面６１Ａ、６１Ｂをそれぞれ把持平面として、図８に示される直方体６０の場合と同様の方法で各把持点１０Ｘ〜１３Ｘを配置する。これにより、中心軸上に把持点１０Ｘと１２Ｘとが配置されることになる。
【００５４】
横向きの円柱を上方から把持する場合（４本指把持の場合）は、図１７（ｂ）に示されるように、円柱６１の中心６１Ｏを通り、主軸６１ｃに直交する水平方向の直線６１Ｄを求め、これと壁面６１ｗとの交点をそれぞれ母指１０による把持点１０Ｘ、中指１２による把持点１２Ｘとする。そして、把持点１２Ｘをはさみ、主軸方向にそれぞれΔｌだけ離れた点をそれぞれ示指１１による把持点１１Ｘ、薬指１３による把持点１３Ｘとする。
【００５５】
縦向きの円柱を横方向から把持する場合を、図１８、図１９を参照して説明する。図１４に示される場合と同様に、アーム７の付け根の空間位置座標をＲ１、その鉛直下向きに所定距離ｈ離れた位置の空間位置座標をＲ２とする。そして、Ｒ１、Ｒ２をロボット本体８側に距離ｓだけシフトさせた点をＲ１’、Ｒ２’とする。これは、図１９に示されるように、横方向からの円柱把持の場合には、ロボットハンド１の付け根部分およびアーム７部分より対象物６は図中の左右方向でロボット本体８よりに位置させる必要があることから、これを考慮してＲ１、Ｒ２をロボット本体８側へ所定距離シフトさせるものである。このシフト量ｓは、横方向から物体を把持する際の指先とアーム７中心の延長線との距離に応じて適宜設定される。
【００５６】
設定したＲ１’、Ｒ２’と円柱６１の中心６１Ｏを通る平面Ｐ’を求める。円柱６１の中心６１Ｏを通り、主軸６１ｃに直交する横断面６１ｓを求め、この横断面６１ｓと平面Ｐ’との交点をそれぞれ母指１０による把持点１０Ｘ、中指１２による把持点１２Ｘとする。示指１１による把持点１１Ｘ、薬指１３による把持点１３Ｘは、それぞれ把持点１２Ｘから主軸方向にそれぞれΔｌ離れた点として求めることができる。
【００５７】
上方からの円形把持の場合には、端面に把持点を配置する。具体的には、図１８の場合と同様に平面Ｐ’を求め、これと端面６１Ａの円周との交点をそれぞれ母指１０による把持点１０Ｘ、中指１２による把持点１２Ｘとする。示指１１による把持点１１Ｘ、薬指１３による把持点１３Ｘは、楕円球の場合と同様の手法により配置される。
【００５８】
把持点座標が決まったら把持姿勢の算出を行う（ステップＳ１５）。これ以降の処理は、把持点調整処理を除いて当てはめた形状が直方体の場合と同一である。円柱の場合の把持点調整処理は、円柱が縦向きの場合は、楕円球の場合と同様に主軸を中心にして移動させればよい。円柱が横向きの場合も主軸を中心に移動させるが、この場合、ロボットハンド１の先端または本体が床面に衝突する可能性がある。そのため、円柱の直径に応じて限界位置となる角度を変更する。
【００５９】
このように形状に応じて把持点を配置することで、できるだけ、物体中心を含む線または面上に各把持点を配置することができる。重心に近い位置である物体中心を囲むように把持点を設定することで、対象物体を確実に把持する可能性の高い把持点を設定できる。太くて短い円柱類似形状の物体が縦向きに置かれている場合には、端面を把持する形となるが、この場合も端面自体が重心に近い位置に存在するため、対象物体を確実に把持する可能性の高い把持点を設定できる点に変わりはない。
【００６０】
そして、比較的複雑な形状を有する任意の物体に対しても単純な形状へと当てはめを行うことで、形状を認識できずに把持できなくなるケースを減らし、任意形状の物体に適切な把持点候補を設定することが可能となる。また、把持点設定の方法も簡略化されているため、設定を行うプログラムサイズを小さくし、かつ、高速で設定を行うことができるため、ロボットハンドの応答性も向上する。
【００６１】
さらに、当てはめた形状と実際の形状とに多少の差異があっても、把持力が目標値となるよう制御して把持を行うことで、その差異を吸収することができるため、当てはめの精度を高精度とする必要がなく、物体を適切に把持することができる。
【００６２】
ここでは、対象物を直方体、楕円球、円柱のいずれかに当てはめたうえで把持点を決定する手法を説明したが、当てはめる単純形状はこの３つに限られるものではなく、また、この３つが必須となるものでもない。
【００６３】
また、指は４指に限られず、対向する２指以上があれば、２指、３指あるいは５指以上であってもよい。また、対向する指の組み合わせは、上述したように１指−多指の組み合わせに限られるものではなく、２指−２指や２指−３指等の組み合わせとしてもよい。
【００６４】
把持点の設定方法は、上述した処理ルーチンに限られるものではなく、方形把持、円形把持を基本として、ロボットハンドの指の配置、その可動範囲に応じて適宜設定すればよい。
【図面の簡単な説明】
【００６５】
【図１】本発明に係るロボットによる任意形状物体の把持方法が適用されるロボットハンドの構成を示す図である。
【図２】本発明に係るロボットによる任意形状物体の把持方法を実行する制御系を示すブロック構成図である。
【図３】本発明に係る把持方法の制御処理のメインフローチャートである。
【図４】任意形状物体を直方体に当てはめた例を示す図である。
【図５】コップを円柱に当てはめた例を示す図である。
【図６】りんごを楕円球に当てはめた例を示す図である。
【図７】直方体の把持方法決定処理を示すフローチャートである。
【図８】直方体を４本指で把持する場合の把持点位置を示す図である。
【図９】直方体を２本指で把持する場合の把持点位置を示す図である。
【図１０】直方体を３本指で把持する場合の把持点位置を示す図である。
【図１１】直方体を横方向から把持する場合の把持位置の調整を説明する図である。
【図１２】直方体を上方向から把持する場合の把持位置の調整を説明する図である。
【図１３】楕円球の把持方法決定処理を示すフローチャートである。
【図１４】楕円球の把持点位置の設定を説明する図である。
【図１５】楕円球を２本指で把持する場合（図１５（ａ））と、４本指で把持する場合（図１５（ｂ））の把持点位置を示す図である。
【図１６】円柱の把持方法決定処理を示すフローチャートである。
【図１７】円柱を方形把持する場合の把持点位置を示す図である。
【図１８】縦向き円柱の把持点位置の設定を説明する図である。
【図１９】横方向からの縦向き円柱の把持点位置を示す図である。
【図２０】上方からの縦向き円柱の把持点位置を示す図である。
【符号の説明】
【００６６】
１…ロボットハンド、２…制御ＥＣＵ、３…カメラアイ、４…モータドライバ、６…対象物、７…アーム、８…ロボット本体、１０…母指、１１…示指、１２…中指、１３…薬指、１０ｔ〜１３ｔ…先端、１０Ｘ〜１３Ｘ…各把持点、１４…モータ、１５…軸力センサ、１６…エンコーダポテンションメータ、１７…連動関節、２０…画像認識部、２１…把持姿勢演算部、２２…ハンド制御部、６０…直方体、６１…円柱、６２…楕円球。
【図１】
2005169564.tif 000003
【図２】
2005169564.tif 000004
【図３】
2005169564.tif 000005
【図４】
2005169564.tif 000006
【図５】
2005169564.tif 000007
【図６】
2005169564.tif 000008
【図７】
2005169564.tif 000009
【図８】
2005169564.tif 000010
【図９】
2005169564.tif 000011
【図１０】
2005169564.tif 000012
【図１１】
2005169564.tif 000013
【図１２】
2005169564.tif 000014
【図１３】
2005169564.tif 000015
【図１４】
2005169564.tif 000016
【図１５】
2005169564.tif 000017
【図１６】
2005169564.tif 000018
【図１７】
2005169564.tif 000019
【図１８】
2005169564.tif 000020
【図１９】
2005169564.tif 000021
【図２０】
2005169564.tif 000022