(57)【要約】【課題】第１指部と第２指部とによって物体を所定の状態で精度よくロボットに把持させることができるロボット制御装置を提供すること。【解決手段】第１指部を物体に接触させ、力検出部から出力される出力値が所定の第１閾値以上となるまで第１指部を物体に付勢させる第１動作を行わせ、第１動作の後、力検出部から出力される出力値が第１閾値以上である状態を維持し、第１指部とアームとを移動させ、物体に第１指部と第２指部とを接触させる第２動作を行わせ、第２動作において、力検出部から出力される出力値が第１閾値よりも小さい所定の第２閾値よりも小さくなったとき、第１位置検出部から出力される出力値に応じた値と、予め決められた第１値と、の差異が所定の範囲内である場合、物体が所定の状態で第１指部と第２指部とによって把持されていると判定する、ロボット制御装置。【選択図】図３
2019202360.tif 000002
【特許請求の範囲】
【請求項１】
基部と、前記基部に対して移動可能に設けられた第１指部と、前記基部に設けられた第２指部と、前記基部に対する前記第１指部の位置を検出する第１位置検出部と、を有する把持部と、
アームと、
前記把持部と前記アームとの間に設けられた力検出部と、
を備えたロボットを制御するロボット制御装置であって、
前記第１指部を物体に接触させ、前記力検出部から出力される出力値が所定の第１閾値以上となるまで前記第１指部を前記物体に付勢させる第１動作を行わせ、
前記第１動作の後、前記力検出部から出力される出力値が前記第１閾値以上である状態を維持し、前記第１指部と前記アームとを移動させ、前記物体に前記第１指部と前記第２指部とを接触させる第２動作を行わせ、
前記第２動作において、前記力検出部から出力される出力値が前記第１閾値よりも小さい所定の第２閾値よりも小さくなったとき、前記第１位置検出部から出力される出力値に応じた値と、予め決められた第１値と、の差異が所定の範囲内である場合、前記物体が所定の状態で前記第１指部と前記第２指部とによって把持されていると判定する、
ロボット制御装置。
【請求項２】
前記所定の状態は、前記把持部に対する前記物体の位置が所定の位置と一致している状態、又は、前記把持部に対する前記物体の姿勢が所定の姿勢と一致している状態である、
請求項１に記載のロボット制御装置。
【請求項３】
前記第２指部は、前記基部に対して移動可能であって、
前記把持部は、前記基部に対する前記第２指部の位置を検出する第２位置検出部を更に有し、
前記第１位置検出部から出力される出力値と、前記第２位置検出部から出力される出力値と、に応じた値と、前記第１値と、の差異が前記所定の範囲内である場合、前記物体が所定の状態で前記第１指部と前記第２指部とによって把持されていると判定する、
請求項１又は２に記載のロボット制御装置。
【請求項４】
前記第２動作を前記ロボットに行わせる際、前記物体に対して前記アーム、又は、前記第２指部を移動させることで前記第２指部を前記第１指部に近づく方向に移動させ、前記物体に前記第１指部と前記第２指部とを接触させる、
請求項１から３のうちいずれか一項に記載のロボット制御装置。
【請求項５】
前記第２動作において、前記力検出部から出力される出力値がゼロになったとき、前記物体が前記所定の状態で前記第１指部と前記第２指部とによって把持されているか否かの判定を行う、
請求項１から４のうちいずれか一項に記載のロボット制御装置。
【請求項６】
前記第１位置検出部から出力される出力値に応じた値と、前記第１値と、は、距離を示す値である、
請求項１から５のうちいずれか一項に記載のロボット制御装置。
【請求項７】
前記把持部は、前記基部に対して前記第１指部を動かす駆動部と、前記駆動部に加わる負荷を検出する負荷検出部と、を更に有し、
前記第２動作において、前記力検出部から出力される出力値が前記第２閾値よりも小さくなったとき、前記負荷検出部から出力される出力値に応じた値と、前記第１位置検出部から出力される出力値に応じた値と、前記第１値と、予め決められた第２値と、に基づいて前記物体が前記所定の状態で前記第１指部と前記第２指部とによって把持されているか否かの判定を行う、
請求項１から６のうちいずれか一項に記載のロボット制御装置。
【請求項８】
基部と、前記基部に対して移動可能に設けられた第１指部と、前記基部に設けられた第２指部と、前記基部に対する前記第１指部の位置を検出する第１位置検出部と、を有する把持部と、
アームと、
前記把持部と前記アームとの間に設けられた力検出部と、
を備えたロボットであって、
前記第１指部を物体に接触させ、前記力検出部から出力される出力値が所定の第１閾値以上となるまで前記第１指部を前記物体に付勢させる第１動作を行い、
前記第１動作の後、前記力検出部から出力される出力値が前記第１閾値以上である状態を維持し、前記第１指部と前記アームとを移動させ、前記物体に前記第１指部と前記第２指部とを接触させる第２動作を行い、
前記第２動作において、前記力検出部から出力される出力値が前記第１閾値よりも小さい所定の第２閾値よりも小さくなったとき、前記第１位置検出部から出力される出力値に応じた値と、予め決められた第１値と、の差異が所定の範囲内である場合、前記物体が所定の状態で前記第１指部と前記第２指部とによって把持されていると判定する、
ロボット。
【請求項９】
基部と、前記基部に対して移動可能に設けられた第１指部と、前記基部に設けられた第２指部と、前記基部に対する前記第１指部の位置を検出する第１位置検出部と、を有する把持部と、
アームと、
前記把持部と前記アームとの間に設けられた力検出部と、
を備えたロボットと、
前記ロボットを制御するロボット制御装置と、
を備えたロボットシステムであって、
前記ロボット制御装置は、
前記第１指部を物体に接触させ、前記力検出部から出力される出力値が所定の第１閾値以上となるまで前記第１指部を前記物体に付勢させる第１動作を行わせ、
前記第１動作の後、前記力検出部から出力される出力値が前記第１閾値以上である状態を維持し、前記第１指部と前記アームとを移動させ、前記物体に前記第１指部と前記第２指部とを接触させる第２動作を行わせ、
前記第２動作において、前記力検出部から出力される出力値が前記第１閾値よりも小さい所定の第２閾値よりも小さくなったとき、前記第１位置検出部から出力される出力値に応じた値と、予め決められた第１値と、の差異が所定の範囲内である場合、前記物体が所定の状態で前記第１指部と前記第２指部とによって把持されていると判定する、
ロボットシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ロボット制御装置、ロボット、及びロボットシステムに関する。
【背景技術】
【０００２】
ロボットによる物体の把持に関する技術の研究や開発が行われている。
【０００３】
これに関し、サーボモーターによって駆動される２つの爪をアーム先端に備え、２つの爪によって物体を把持し、２つの爪を駆動しているサーボモーターの電流値を用いて、物体を把持した状態における２つの爪の相対位置を検出し、検出した当該相対位置に基づいて物体の寸法が予め決められた寸法であるか否かを判定し、判定した結果に応じた動作を行うロボットが知られている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１５−１９６１８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ここで、複数の爪を駆動するサーボモーターの電流値は、複数の爪によって物体が把持されている場合における複数の爪と物体との相対的な位置関係に応じて変化してしまう場合がある。例えば、複数の爪の先端間によって物体が把持された場合と、複数の爪の根本間によって物体が把持された場合とでは、当該サーボモーターに加わる負荷の違いが異なり、当該サーボモーターの電流値の違いが大きくなってしまう。その結果、ロボットは、把持したか否かの判定がばらつくため、物体の寸法が予め決められた寸法であるか否かを精度よく判定することができない場合があった。
【課題を解決するための手段】
【０００６】
上記課題を解決するために本発明の一態様は、基部と、前記基部に対して移動可能に設けられた第１指部と、前記基部に設けられた第２指部と、前記基部に対する前記第１指部の位置を検出する第１位置検出部と、を有する把持部と、アームと、前記把持部と前記アームとの間に設けられた力検出部と、を備えたロボットを制御するロボット制御装置であって、前記第１指部を物体に接触させ、前記力検出部から出力される出力値が所定の第１閾値以上となるまで前記第１指部を前記物体に付勢させる第１動作を行わせ、前記第１動作の後、前記力検出部から出力される出力値が前記第１閾値以上である状態を維持し、前記第１指部と前記アームとを移動させ、前記物体に前記第１指部と前記第２指部とを接触させる第２動作を行わせ、前記第２動作において、前記力検出部から出力される出力値が前記第１閾値よりも小さい所定の第２閾値よりも小さくなったとき、前記第１位置検出部から出力される出力値に応じた値と、予め決められた第１値と、の差異が所定の範囲内である場合、前記物体が所定の状態で前記第１指部と前記第２指部とによって把持されていると判定する、ロボット制御装置である。
【０００７】
また、本発明の一態様は、基部と、前記基部に対して移動可能に設けられた第１指部と、前記基部に設けられた第２指部と、前記基部に対する前記第１指部の位置を検出する第１位置検出部と、を有する把持部と、アームと、前記把持部と前記アームとの間に設けられた力検出部と、を備えたロボットであって、前記第１指部を物体に接触させ、前記力検出部から出力される出力値が所定の第１閾値以上となるまで前記第１指部を前記物体に付勢させる第１動作を行い、前記第１動作の後、前記力検出部から出力される出力値が前記第１閾値以上である状態を維持し、前記第１指部と前記アームとを移動させ、前記物体に前記第１指部と前記第２指部とを接触させる第２動作を行い、前記第２動作において、前記力検出部から出力される出力値が前記第１閾値よりも小さい所定の第２閾値よりも小さくなったとき、前記第１位置検出部から出力される出力値に応じた値と、予め決められた第１値と、の差異が所定の範囲内である場合、前記物体が所定の状態で前記第１指部と前記第２指部とによって把持されていると判定する、ロボットである。
【０００８】
また、本発明の一態様は、基部と、前記基部に対して移動可能に設けられた第１指部と、前記基部に設けられた第２指部と、前記基部に対する前記第１指部の位置を検出する第１位置検出部と、を有する把持部と、アームと、前記把持部と前記アームとの間に設けられた力検出部と、を備えたロボットと、前記ロボットを制御するロボット制御装置と、を備えたロボットシステムであって、前記ロボット制御装置は、前記第１指部を物体に接触させ、前記力検出部から出力される出力値が所定の第１閾値以上となるまで前記第１指部を前記物体に付勢させる第１動作を行わせ、前記第１動作の後、前記力検出部から出力される出力値が前記第１閾値以上である状態を維持し、前記第１指部と前記アームとを移動させ、前記物体に前記第１指部と前記第２指部とを接触させる第２動作を行わせ、前記第２動作において、前記力検出部から出力される出力値が前記第１閾値よりも小さい所定の第２閾値よりも小さくなったとき、前記第１位置検出部から出力される出力値に応じた値と、予め決められた第１値と、の差異が所定の範囲内である場合、前記物体が所定の状態で前記第１指部と前記第２指部とによって把持されていると判定する、ロボットシステムである。
【図面の簡単な説明】
【０００９】
【図１】実施形態に係るロボットシステム１の構成の一例を示す図である。
【図２】ロボット制御装置３０のハードウェア構成の一例を示す図である。
【図３】ロボット制御装置３０の機能構成の一例を示す図である。
【図４】ロボット制御装置３０がロボット２０に予め決められた作業を行わせる処理の流れの一例を示す図である。
【図５】予め決められた作業を開始させる直前にロボット制御装置３０が制御点Ｔを待機させる教示点と制御点Ｔとが一致している様子の一例を示す図である。
【図６】図５に示したエンドエフェクターＥと物体Ｏとの位置関係のうちロボット２０の第１動作が終了した直後における位置関係の一例を示す図である。
【図７】力検出部ＦＳから出力される出力値のうち力検出座標系ＦＣにおけるＹ軸の正方向に作用する並進力に応じた出力値の第２動作における変化の一例を示す図である。
【図８】図５に示したエンドエフェクターＥと物体Ｏとの位置関係のうちロボット２０の第２動作が終了した直後における位置関係の一例を示す図である。
【図９】図５に示した物体Ｏがロボット２０の第２動作によって所定の状態で第１指部Ｆ１と第２指部Ｆ２とによって把持されている様子の一例を示す図である。
【図１０】図５に示した物体Ｏをロボット２０が第２動作によって把持できなかった様子の一例を示す図である。
【図１１】図５に示した物体Ｏがロボット２０の第２動作によって所定の状態と異なる状態で第１指部Ｆ１と第２指部Ｆ２とによって把持されている様子の一例を示す図である。
【図１２】図５に示した物体Ｏがロボット２０の第２動作によって所定の状態と異なる状態で第１指部Ｆ１と第２指部Ｆ２とによって把持されている様子の他の例を示す図である。
【図１３】図５に示した物体Ｏが弾性体である場合において所定の状態で第１指部Ｆ１と第２指部Ｆ２とによって把持された物体Ｏの一例を示す図である。
【図１４】実施形態の変形例に係るロボット制御装置３０がロボット２０に予め決められた作業を行わせる処理の流れの一例を示す図である。
【発明を実施するための形態】
【００１０】
＜実施形態＞
以下、本発明の実施形態について、図面を参照して説明する。なお、本実施形態における長さの単位は、如何なる単位であってもよい。以下では、一例として、本実施形態における長さの単位が、ミリメートルである場合について説明する。このため、以下では、長さを表す数値、変数、符号等に対して単位を付すことを省略している。
【００１１】
＜ロボットシステムの構成＞
まず、ロボットシステム１の構成について説明する。
図１は、実施形態に係るロボットシステム１の構成の一例を示す図である。ロボットシステム１は、ロボット２０と、ロボット制御装置３０を備える。図１に示した例では、ロボット制御装置３０は、ロボット２０の外部に設置されている。なお、ロボットシステム１では、ロボット制御装置３０は、ロボット２０に内蔵される構成であってもよい。また、ロボットシステム１は、撮像部、撮像部を制御する画像処理装置、ロボット制御装置３０を制御する情報処理装置、ロボット制御装置３０にロボット２０の動作を教示する教示装置等を備える構成であってもよい。
【００１２】
ロボット２０は、アームＡと、アームＡを支持する基台Ｂを備える単腕ロボットである。単腕ロボットは、この一例におけるアームＡのような１本のアーム（腕）を備えるロボットのことである。
【００１３】
アームＡは、エンドエフェクターＥと、マニピュレーターＭと、力検出部ＦＳを備える。なお、アームＡは、エンドエフェクターＥを備えない構成であってもよい。
【００１４】
エンドエフェクターＥは、１以上の指部と、当該１以上の指部のそれぞれを支持する基部ＥＢを備え、当該１以上の指部によって物体を挟んで持つことにより把持するエンドエフェクターである。また、エンドエフェクターＥでは、エンドエフェクターＥが備える１以上の指部が、基部ＥＢに対して移動可能に設けられている。以下では、一例として、エンドエフェクターＥが、図１に示したように、第１指部Ｆ１と第２指部Ｆ２との２つの指部を備える場合について説明する。なお、エンドエフェクターＥは、把持部の一例である。
【００１５】
第１指部Ｆ１と第２指部Ｆ２は、基部ＥＢが有する面のうち第１指部及び第２指部が設けられた面上において予め決められた１本の直線に沿って互いに対向するように基部ＥＢに対して設けられている。また、第１指部Ｆ１と第２指部Ｆ２は、基部ＥＢに対して当該直線に沿って移動可能に設けられている。すなわち、エンドエフェクターＥにおいて、第１指部Ｆ１と第２指部Ｆ２は、互いに近づくように、又は、互いに遠のくように、１次元的に基部ＥＢに対して移動可能である。これにより、エンドエフェクターＥは、第１指部Ｆ１と第２指部Ｆ２とのそれぞれが互いに近づく方向に第１指部Ｆ１と第２指部Ｆ２とのいずれか一方又は両方を移動させて物体を挟むことができる。以下では、説明の便宜上、当該直線に沿った２つの方向のうち第１指部Ｆ１から第２指部Ｆ２に向かう方向を第１方向と称し、当該２つの方向のうち第２指部Ｆ２から第１指部Ｆ１に向かう方向を第２方向と称して説明する。なお、当該直線は、当該面上において予め決められた直線であれば、如何なる直線であってもよい。以下では、一例として、当該直線が、当該面に直交する方向に沿って当該面を見た場合においてエンドエフェクターＥの重心を通る直線である場合について説明する。
【００１６】
なお、第１指部Ｆ１は、基部ＥＢに対して２本以上の直線に沿って移動可能に設けられている構成であってもよい。当該２本以上の直線は、基部ＥＢが有する面のうち第１指部及び第２指部が設けられた面上において予め決められた２本以上の直線のことである。ただし、この場合、エンドエフェクターＥでは、第２指部Ｆ２は、基部ＥＢに対して、当該２本以上の直線のうちのいずれか１本に沿って移動可能に設けられる。
また、第２指部Ｆ２は、基部ＥＢに対して２本以上の直線に沿って移動可能に設けられている構成であってもよい。当該２本以上の直線は、基部ＥＢが有する面のうち第１指部及び第２指部が設けられた面上において予め決められた２本以上の直線のことである。ただし、この場合、エンドエフェクターＥでは、第１指部Ｆ１は、基部ＥＢに対して、当該２本以上の直線のうちのいずれか１本に沿って移動可能に設けられる。
【００１７】
また、エンドエフェクターＥは、基部ＥＢに対して第１指部Ｆ１を動かす第１駆動部ＭＴ１と、基部ＥＢに対する第１指部Ｆ１の位置を検出する第１位置検出部ＥＣ１と、基部ＥＢに対して第２指部Ｆ２を動かす第２駆動部ＭＴ２と、基部ＥＢに対する第２指部Ｆ２の位置を検出する第２位置検出部ＥＣ２を備える。
【００１８】
第１駆動部ＭＴ１及び第２駆動部ＭＴ２は、アクチュエーターであり、例えば、サーボモーターである。なお、第１駆動部ＭＴ１は、サーボモーターに代えて、基部ＥＢに対して第１指部Ｆ１を動かすことが可能な他のアクチュエーターであってもよい。また、第２駆動部ＭＴ２は、サーボモーターに代えて、基部ＥＢに対して第２指部Ｆ２を動かすことが可能な他のアクチュエーターであってもよい。
【００１９】
第１位置検出部ＥＣ１及び第２位置検出部ＥＣ２は、エンコーダーである。第１位置検出部ＥＣ１は、例えば、光学式エンコーダーであってもよく、磁気式エンコーダーであってもよく、光学式と磁気式とを組み合わせた形式のエンコーダーであってもよく、基部ＥＢに対する第１指部Ｆ１の位置を検出可能な他の形式のエンコーダーであってもよい。第２位置検出部ＥＣ２は、例えば、光学式エンコーダーであってもよく、磁気式エンコーダーであってもよく、光学式と磁気式とを組み合わせた形式のエンコーダーであってもよく、基部ＥＢに対する第２指部Ｆ２の位置を検出可能な他の形式のエンコーダーであってもよい。
【００２０】
第１位置検出部ＥＣ１は、基部ＥＢに対する第１指部Ｆ１の位置を検出し、検出した位置を示す情報を第１位置検出情報としてロボット制御装置３０に出力する。
【００２１】
第２位置検出部ＥＣ２は、基部ＥＢに対する第２指部Ｆ２の位置を検出し、検出した位置を示す情報を第２位置検出情報としてロボット制御装置３０に出力する。
【００２２】
なお、第１駆動部ＭＴ１と第１位置検出部ＥＣ１とは、一体に構成されてもよく、それぞれ別体として構成されてもよい。図１に示した例では、第１駆動部ＭＴ１と第１位置検出部ＥＣ１とは、一体に構成されている。
【００２３】
また、第２駆動部ＭＴ２と第２位置検出部ＥＣ２とは、一体に構成されてもよく、それぞれ別体として構成されてもよい。図１に示した例では、第２駆動部ＭＴ２と第２位置検出部ＥＣ２とは、一体に構成されている。
【００２４】
マニピュレーターＭは、６つの関節を備えた垂直多関節型のマニピュレーターである。また、マニピュレーターＭが備える６つの関節はそれぞれ、図示しないアクチュエーターを備える。すなわち、マニピュレーターＭを備えるアームＡは、６軸垂直多関節型のアームである。アームＡは、基台Ｂと、エンドエフェクターＥと、マニピュレーターＭと、マニピュレーターＭが備える６つの関節それぞれのアクチュエーターとによる連携した動作によって６軸の自由度の動作を行う。なお、アームＡは、５軸以下の自由度で動作する構成であってもよく、７軸以上の自由度で動作する構成であってもよい。
【００２５】
力検出部ＦＳは、エンドエフェクターＥとマニピュレーターＭの間に設けられる。力検出部ＦＳは、例えば、水晶を含む力検出素子を４つ備える。そして、力検出部ＦＳは、４つの水晶のそれぞれに加わる剪断力に基づいて、ロボット２０の図示しないハンドに作用した外力を検出する。これにより、ロボット２０は、水晶を含まない力検出素子を４つ備えた力センサーと比べて、力検出部ＦＳから出力される出力値が、温度等の環境因子の変化、経年劣化等に応じて変動してしまうことを抑制することができる。
【００２６】
ここで、ロボット２０のハンドは、エンドエフェクターＥ、又はエンドエフェクターＥにより把持された物体のことである。すなわち、力検出部ＦＳは、エンドエフェクターＥ、又はエンドエフェクターＥにより把持された物体に作用した外力を検出する。当該外力には、当該ハンドを並進させる並進力が含まれる。当該並進力には、図１において図示しない力検出座標系ＦＣにおけるＸ軸、Ｙ軸、Ｚ軸それぞれの方向に作用する３つの並進力が含まれている。ここで、力検出座標系ＦＣは、力検出部ＦＳに対応付けられた三次元直交座標系のことである。また、当該外力には、当該ハンドを回転させる回転モーメント（トルク）が含まれる。当該回転モーメントには、当該Ｘ軸、当該Ｙ軸、当該Ｚ軸それぞれの周りに作用する３つの回転モーメントが含まれている。すなわち、力検出部ＦＳは、当該３つの並進力と当該３つの回転モーメントとのそれぞれを当該外力として検出する。力検出部ＦＳは、検出した当該３つの並進力のそれぞれに応じた出力値と、検出した当該３つの回転モーメントのそれぞれに応じた出力値との６つの出力値のそれぞれを示す情報を外力検出情報としてロボット制御装置３０に出力する。すなわち、当該６つの出力値のうちの一部又は全部は、力検出部から出力される出力値の一例である。
【００２７】
外力検出情報は、ロボット制御装置３０によるロボット２０の力制御に用いられる。力制御は、力検出部ＦＳから出力された出力値に基づく制御、すなわち、力検出部ＦＳからロボット制御装置３０に出力された外力検出情報に基づく制御のことであり、例えば、インピーダンス制御等のコンプライアントモーション制御のことである。
【００２８】
なお、力検出部ＦＳは、水晶を含む力検出素子を３つ以下備える構成であってもよく、水晶を含む力検出素子を５つ以上備える構成であってもよい。また、力検出部ＦＳは、水晶を含む４つの力検出素子のうちの一部又は全部に代えて、水晶を含まない力検出素子を備える構成であってもよい。また、力検出部ＦＳは、水晶を含む４つの力検出素子のうちの一部又は全部に加えて、水晶を含まない力検出素子を備える構成であってもよい。
【００２９】
ここで、第１駆動部ＭＴ１と、第２駆動部ＭＴ２と、第１位置検出部ＥＣ１と、第２位置検出部ＥＣ２と、マニピュレーターＭが備える６つのアクチュエーターのそれぞれと、力検出部ＦＳとは、ケーブルによってロボット制御装置３０と通信可能に接続されている。なお、ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ（Universal  Serial  Bus）等の規格によって行われる。また、第１駆動部ＭＴ１と、第２駆動部ＭＴ２と、第１位置検出部ＥＣ１と、第２位置検出部ＥＣ２と、力検出部ＦＳとのうちの一部又は全部は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。また、マニピュレーターＭが備える６つのアクチュエーターのうちの一部又は全部は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。
【００３０】
ロボット制御装置３０は、ロボット２０を制御する。ロボット制御装置３０は、ロボット制御装置３０が備えるメモリーに予め記憶された動作プログラムに基づいて、ロボット２０に予め決められた作業を行わせる。なお、図１では、図を簡略化するため、当該メモリーを図示していない。
【００３１】
より具体的には、ロボット制御装置３０は、ロボット２０のアームＡとともに動く仮想的な点である制御点Ｔを、アームＡの予め決められた位置に設定する。制御点Ｔは、例えば、アームＡについてのＴＣＰ（Tool  Center  Point）である。なお、制御点Ｔは、当該ＴＣＰに代えて、制御点Ｔとともに動く他の仮想的な点であってもよい。当該予め決められた位置は、例えば、エンドエフェクターＥの重心の位置である。なお、当該予め決められた位置は、当該重心の位置に代えて、アームＡに応じた他の位置であってもよい。
【００３２】
制御点Ｔには、制御点Ｔとともに動く三次元直交座標系である図示しない制御点座標系が対応付けられている。制御点Ｔの位置は、制御点座標系の原点のロボット座標系ＲＣにおける位置によって表される。また、制御点Ｔの姿勢は、制御点座標系における各座標軸のロボット座標系ＲＣにおける方向によって表される。ここで、ロボット座標系ＲＣは、ロボット２０の基台Ｂに対応付けられた三次元直交座標系のことである。以下では、一例として、ロボット座標系ＲＣにおけるＺ軸の負方向が重力方向と一致している場合について説明する。なお、ロボット座標系ＲＣにおけるＺ軸の負方向は、重力方向と一致していない構成であってもよい。
【００３３】
ロボット制御装置３０は、前述の動作プログラムに基づく位置制御によってアームＡを動作させる。当該位置制御において、ロボット制御装置３０は、制御点Ｔを動作プログラムにより指定された教示点と一致させる。教示点は、制御点Ｔを一致させる目標となる仮想的な点のことである。教示点には、教示点の位置を示す教示点位置情報と、教示点の姿勢を示す教示点姿勢情報とが対応付けられている。ここで、この一例では、ある教示点と制御点Ｔとの一致は、当該教示点の位置及び姿勢と制御点Ｔの位置及び姿勢との一致を意味する。すなわち、当該位置制御において、この一例におけるロボット制御装置３０は、制御点Ｔの位置及び姿勢を動作プログラムにより指定された教示点の位置及び姿勢と一致させる。
【００３４】
また、ロボット制御装置３０は、力検出部ＦＳから外力検出情報を取得し、取得した外力検出情報と、動作プログラムとに基づく力制御によってアームＡを動作させる。当該力制御において、ロボット制御装置３０は、アームＡを動作させ、当該外力検出情報が示す６つの出力値のうち動作プログラムにより指定された１つ以上の出力値が、動作プログラムにより指定された目標値となるように制御点Ｔの位置及び姿勢を変化させる。この際、ロボット制御装置３０は、当該１つ以上の出力値が当該目標値と一致するように制御点Ｔの位置及び姿勢を変化させる場合における制御点Ｔの位置及び姿勢それぞれの変化分を、力制御に応じた運動方程式を解くことによって算出する。この一例における力制御は、前述した通り、インピーダンス制御である。この一例における当該運動方程式は、インピーダンス制御に応じた運動方程式である。なお、当該力制御に応じた運動方程式については、公知であるため、これ以上の詳細な説明を省略する。
【００３５】
ロボット制御装置３０は、このような位置制御と力制御との少なくとも一方によってアームＡを動作させ、ロボット２０に予め決められた作業を行わせる。
【００３６】
予め決められた作業は、例えば、図１に示した物体Ｏを把持し、把持した物体Ｏを予め決められた図示しない領域に載置する作業である。なお、予め決められた作業は、何らかの物体を把持する動作を伴う作業であれば如何なる作業であってもよい。
【００３７】
物体Ｏは、例えば、製品に組み付けるプレート、ネジ、ボルト等の産業用の部品や部材である。図１に示した例では、物体Ｏは、断面が十字型の柱形状の物体（十字型断面柱）であり、当該断面がロボット座標系ＲＣにおけるＸ軸と直交するように載置されている。なお、物体Ｏは、産業用の部品や部材に代えて、日用品や生体等の他の物体であってもよい。また、物体Ｏの形状は、断面が十字型の柱形状に代えて、他の形状であってもよい。
【００３８】
ここで、以下では、一例として、物体Ｏが剛体として近似可能な物体である場合について説明する。物体Ｏが剛体として近似可能な物体であることは、この一例において、エンドエフェクターＥによって物体Ｏが把持された場合における物体Ｏの変形が、肉眼で検出不可能な程度の変形であることを意味する。なお、物体Ｏが剛体として近似可能な物体であることは、これに代えて、エンドエフェクターＥによって物体Ｏが把持された場合における物体Ｏの変形が、定規、ノギス、マイクロメーターのうちのいずれかで検出不可能な程度の変形であることを意味してもよい。このような意味で、以下では、一例として、物体Ｏが、エンドエフェクターＥによって把持されても変形しない場合について説明する。この場合、例えば、物体Ｏの材質は、鉄である。なお、物体Ｏの材質は、鉄に代えて、エンドエフェクターＥによって把持されても変形しない他の材質であってもよい。
【００３９】
＜ロボット制御装置のハードウェア構成＞
以下、図２を参照し、ロボット制御装置３０のハードウェア構成について説明する。図２は、ロボット制御装置３０のハードウェア構成の一例を示す図である。
【００４０】
ロボット制御装置３０は、例えば、プロセッサー３１と、メモリー３２と、通信部３４を備える。これらの構成要素は、バスを介して相互に通信可能に接続されている。また、ロボット制御装置３０は、通信部３４を介してロボット２０と通信を行う。
【００４１】
プロセッサー３１は、例えば、ＣＰＵ（Central  Processing  Unit）である。なお、プロセッサー３１は、ＣＰＵに代えて、ＦＰＧＡ（Field-Programmable  Gate  Array）等の他のプロセッサーであってもよい。プロセッサー３１は、メモリー３２に格納された各種のプログラムを実行する。
メモリー３２は、前述のメモリーの一例である。メモリー３２は、例えば、ＨＤＤ（Hard  Disk  Drive）やＳＳＤ（Solid  State  Drive）、ＥＥＰＲＯＭ（Electrically  Erasable  Programmable  Read−Only  Memory）、ＲＯＭ（Read−Only  Memory）、ＲＡＭ（Random  Access  Memory）等を含む。なお、メモリー３２は、ロボット制御装置３０に内蔵されるものに代えて、ＵＳＢ等のデジタル入出力ポート等によってロボット制御装置３０に接続された外付け型の記憶装置であってもよい。メモリー３２は、ロボット制御装置３０が処理する各種の情報、動作プログラム等を格納する。
通信部３４は、例えば、ＵＳＢ等のデジタル入出力ポートやイーサネット（登録商標）ポート等を含んで構成される。
【００４２】
なお、ロボット制御装置３０は、キーボード、マウス、タッチパッド等の入力装置と、ディスプレイを有する表示装置とのいずれか一方又は両方を備える構成であってもよい。
【００４３】
＜ロボット制御装置の機能構成＞
以下、図３を参照し、ロボット制御装置３０の機能構成について説明する。図３は、ロボット制御装置３０の機能構成の一例を示す図である。
【００４４】
ロボット制御装置３０は、メモリー３２と、通信部３４と、制御部３６を備える。
【００４５】
制御部３６は、ロボット制御装置３０の全体を制御する。制御部３６は、取得部３６１と、判定部３６３と、ロボット制御部３６５を備える。制御部３６が備えるこれらの機能部は、例えば、プロセッサー３１が、メモリー３２に記憶された各種の指令を実行することにより実現される。また、当該機能部のうちの一部又は全部は、ＬＳＩ（Large  Scale  Integration）、ＡＳＩＣ（Application  Specific  Integrated  Circuit）等のハードウェア機能部であってもよい。
【００４６】
取得部３６１は、第１位置検出部ＥＣ１から出力される第１位置検出情報を第１位置検出部ＥＣ１から取得する。また、取得部３６１は、第２位置検出部ＥＣ２から出力される第２位置検出情報を第２位置検出部ＥＣ２から取得する。また、取得部３６１は、力検出部ＦＳから出力される外力検出情報を力検出部ＦＳから取得する。
【００４７】
判定部３６３は、ロボット制御装置３０が行う各種の判定を行う。判定部３６３が行う判定の具体例については、後述する。
【００４８】
ロボット制御部３６５は、メモリー３２に予め記憶された動作プログラムをメモリー３２から読み出す。ロボット制御部３６５は、読み出した動作プログラムに基づいてロボット２０を制御する。
【００４９】
なお、制御部３６において、取得部３６１と、判定部３６３と、ロボット制御部３６５とのうちの一部又は全部は、１つの機能部として構成されてもよい。
【００５０】
＜ロボット制御装置がロボットに予め決められた作業を行わせる処理＞
以下、図４を参照し、ロボット制御装置３０がロボット２０に予め決められた作業を行わせる処理について説明する。図４は、ロボット制御装置３０がロボット２０に予め決められた作業を行わせる処理の流れの一例を示す図である。以下では、一例として、図４に示したステップＳ１１０の処理が行われるよりも前のタイミングにおいて、メモリー３２に予め決められた動作プログラムをロボット制御部３６５がメモリー３２から読み出している場合について説明する。また、以下では、一例として、当該タイミングにおいて、ロボット２０の動作を開始させる操作をロボット制御装置３０が受け付けている場合について説明する。
【００５１】
判定部３６３は、メモリー３２に予め記憶された第１情報をメモリー３２から読み出す（ステップＳ１１０）。第１情報は、この一例において、後述するステップＳ１８０において行われる第１判定処理において用いられる所定の値を示す情報のことである。なお、ステップＳ１１０の処理は、ステップＳ１８０の処理が行われるよりも前のタイミングであれば、如何なるタイミングにおいて行われてもよい。
【００５２】
次に、ロボット制御部３６５は、メモリー３２から予め読み出した動作プログラムに基づく位置制御によってアームＡを動作させ、予め決められた作業を開始させる直前に制御点Ｔを待機させる教示点と制御点Ｔとを一致させる（ステップＳ１２０）。以下では、一例として、当該教示点の位置が、当該教示点に制御点Ｔが一致した場合において、エンドエフェクターＥと他の物体とが接触しない位置であり、且つ、当該作業を行う対象となる物体Ｏが第１指部Ｆ１と第２指部Ｆ２との間に位置する位置である場合について説明する。ここで、第１指部Ｆ１と第２指部Ｆ２との間は、第１指部Ｆ１と第２指部Ｆ２とを近づけた場合において第１指部Ｆ１と第２指部Ｆ２とによって挟まれて把持される領域のことを示す。また、以下では、一例として、当該教示点の姿勢が、当該教示点に制御点Ｔが一致した場合において、物体ＯとエンドエフェクターＥとが接触しない姿勢であり、且つ、エンドエフェクターＥに応じた軸が重力方向と並行になる姿勢である場合について説明する。エンドエフェクターＥに応じた軸は、例えば、エンドエフェクターＥとともに動く軸であり、且つ、マニピュレーターＭが備える６つの関節のうち最もエンドエフェクターＥ側の関節の回動軸と一致する軸である。なお、当該教示点の位置は、当該教示点に制御点Ｔが一致した場合において、物体ＯとエンドエフェクターＥとが接触しない位置であれば他の位置であってもよい。また、当該教示点の姿勢は、当該教示点に制御点Ｔが一致した場合において、物体ＯとエンドエフェクターＥとが接触しない姿勢であれば他の姿勢であってもよい。また、エンドエフェクターＥに応じた軸は、エンドエフェクターＥとともに動く他の軸であってもよい。
【００５３】
次に、ロボット制御部３６５は、メモリー３２から予め読み出した動作プログラムに基づく力制御によって、第１動作をロボット２０に開始させる（ステップＳ１３０）。ここで、図５を参照し、第１動作について説明する。
【００５４】
図５は、予め決められた作業を開始させる直前にロボット制御装置３０が制御点Ｔを待機させる教示点と制御点Ｔとが一致している様子の一例を示す図である。以下では、一例として、図５に示したように、第１指部Ｆ１と第２指部Ｆ２とのそれぞれが移動可能な方向が、ロボット座標系ＲＣにおけるＹ軸に沿った方向と一致している場合について説明する。また、以下では、一例として、前述の力検出座標系ＦＣにおけるＸ軸の正方向とロボット座標系ＲＣにおけるＸ軸の正方向とが一致し、力検出座標系ＦＣにおけるＹ軸の正方向とロボット座標系ＲＣにおけるＹ軸の負方向とが一致し、力検出座標系ＦＣにおけるＺ軸の正方向とロボット座標系ＲＣにおけるＺ軸の負方向とが一致している場合について説明する。また、図５に示した軸ＡＸＯは、物体Ｏに応じた軸である。物体Ｏに応じた軸は、例えば、物体Ｏの重心を通る軸のうち重力方向と並行な軸のことである。なお、物体Ｏに応じた軸は、物体Ｏの重心を通る軸のうち重力方向と並行な軸に代えて、物体Ｏに応じた他の軸であってもよい。図５に示したように、当該教示点と制御点Ｔとが一致している場合、軸ＡＸＥは、重力方向と並行になっている。また、図５に示したように、当該場合、物体Ｏは、第１指部Ｆ１と第２指部Ｆ２との間に位置している。
【００５５】
ここで、ステップＳ１３０においてロボット制御部３６５は、力制御によって第１指部Ｆ１を物体Ｏに接触させる動作を第１動作としてロボット２０に開始させる。この一例では、ステップＳ１３０においてロボット制御部３６５は、動作プログラムに基づいて、力検出部ＦＳから出力された外力検出情報が示す６つの出力値のうち力検出座標系ＦＣにおけるＹ軸の正方向に作用する並進力に応じた出力値に対して、所定の第１閾値を力制御における目標値として設定する。これにより、ロボット制御部３６５は、当該出力値が第１閾値以上となるまで制御点Ｔを当該Ｙ軸の負方向（すなわち、ロボット座標系ＲＣにおけるＹ軸の正方向）に向かって移動させる動作を第１動作としてロボット２０に行わせる。図５では、力検出座標系ＦＣにおけるＹ軸の負方向は、矢印Ａ１が示す方向によって示されている。
【００５６】
このような力制御によって、ロボット制御部３６５は、エンドエフェクターＥの全体を矢印Ａ１が示す方向に移動させる。ここで、本実施形態では、エンドエフェクターＥの全体を移動させることは、基部ＥＢと第１指部Ｆ１及び第２指部Ｆ２それぞれとの相対的な位置関係を変えずにエンドエフェクターＥを移動させることを意味する。すなわち、この一例では、ステップＳ１２０の処理が行われた後、ロボット制御部３６５は、ロボット座標系ＲＣにおけるＹ軸の正方向に当該位置関係を変えずにエンドエフェクターＥを力制御によって移動させ、第１指部Ｆ１を物体Ｏに接触させる動作を第１動作としてロボット２０に開始させる。換言すると、ステップＳ１３０では、ロボット制御部３６５は、第１指部Ｆ１を物体Ｏに接触させ、力検出部ＦＳから出力される出力値が所定の第１閾値以上となるまで第１指部Ｆ１を物体Ｏに付勢させる動作を第１動作としてロボット２０に行わせ始める。なお、第１動作において、ロボット制御部３６５は、基部ＥＢを移動させずに、基部ＥＢに対して第１指部Ｆ１を第１方向（この一例において、矢印Ａ１が示す方向）に向かって移動させて第１指部Ｆ１を物体Ｏに接触させる構成であってもよい。また、第１動作において、ロボット制御部３６５は、基部ＥＢを矢印Ａ１が示す方向を移動させるとともに、基部ＥＢに対して第１指部Ｆ１を第１方向（この一例において、矢印Ａ１が示す方向）に向かって移動させて第１指部Ｆ１を物体Ｏに接触させる構成であってもよい。
【００５７】
ステップＳ１３０においてロボット制御部３６５が力制御によって第１動作をロボット２０に開始させた後、判定部３６３は、取得部３６１が力検出部ＦＳから取得した外力検出情報が示す６つの出力値のうち、力検出座標系ＦＣにおけるＹ軸の正方向に作用する並進力に応じた出力値が第１閾値以上であるか否かを判定する（ステップＳ１４０）。当該出力値が第１閾値未満であると判定部３６３が判定した場合（ステップＳ１４０−ＮＯ）、ロボット制御部３６５は、ステップＳ１３０において開始させた第１動作をロボット２０に継続させる。一方、当該出力値が第１閾値以上であると判定部３６３が判定した場合（ステップＳ１４０−ＹＥＳ）、ロボット制御部３６５は、ロボット２０の動作を停止させ、ロボット２０の第１動作を終了させる。そして、ロボット制御部３６５は、動作プログラムに基づく力制御によって、第２動作をロボット２０に開始させる（ステップＳ１５０）。ここで、図６を参照し、第２動作について説明する。
【００５８】
図６は、図５に示したエンドエフェクターＥと物体Ｏとの位置関係のうちロボット２０の第１動作が終了した直後における位置関係の一例を示す図である。ステップＳ１５０においてロボット制御部３６５は、力検出部ＦＳから出力される出力値のうち力検出座標系ＦＣにおけるＹ軸の正方向に作用する並進力に応じた出力値を保持しながら物体Ｏ（又は第１指部Ｆ１）に対する第２指部Ｆ２の位置を変化させて物体Ｏを第１指部Ｆ１と第２指部Ｆ２とによって把持させる動作を第２動作としてロボット２０に開始させる。例えば、ロボット制御部３６５は、物体Ｏ及び第１指部Ｆ１の両方の位置を変化させることなく、基台Ｂと第２指部Ｆ２とのうちいずれか一方又は両方を動かすことによって物体Ｏに対する第２指部Ｆ２の位置を物体Ｏに近づけ、物体Ｏを第１指部Ｆ１と第２指部Ｆ２とによって把持させる動作を第２動作としてロボット２０に開始させる。また、例えば、ロボット制御部３６５は、物体Ｏに対する第１指部Ｆ１の位置を変化させることなく第１指部Ｆ１を第１方向に移動させることによって物体Ｏを移動させるとともに、基台Ｂと第２指部Ｆ２とのうちいずれか一方又は両方を動かすことによって物体Ｏに対する第２指部Ｆ２の位置を物体Ｏに近づけ、物体Ｏを第１指部Ｆ１と第２指部Ｆ２とによって把持させる動作を第２動作としてロボット２０に開始させる。以下では、一例として、ロボット制御部３６５が、物体Ｏ及び第１指部Ｆ１の両方の位置を変化させることなく、基台Ｂと第２指部Ｆ２との両方を動かすことによって物体Ｏに対する第２指部Ｆ２の位置を物体Ｏに近づけ、物体Ｏを第１指部Ｆ１と第２指部Ｆ２とによって把持させる動作を第２動作としてロボット２０に開始させる場合について説明する。換言すると、ステップＳ１５０では、ロボット制御部３６５は、力検出部ＦＳから出力される出力値が第１閾値以上である状態を維持し、第１指部Ｆ１とアームＡとを移動させ、物体Ｏに第１指部Ｆ１と第２指部Ｆ２とを接触させる動作を第２動作としてロボット２０に行わせ始める。
【００５９】
また、第２動作において、ロボット制御部３６５は、更に、軸ＡＸＥが第１指部Ｆ１と第２指部Ｆ２との中間に位置するように基部ＥＢを第１指部Ｆ１及び第２指部Ｆ２のそれぞれに対して移動させる動作をロボット２０に行わせる。これにより、ロボット制御装置３０は、エンドエフェクターＥによって物体Ｏと把持させた場合において、エンドエフェクターＥに応じた軸と、物体Ｏに応じた軸とを一致させることができる。より具体的には、これにより、ロボット制御装置３０は、当該場合において、力検出部ＦＳから出力される出力値のうち３つの回転モーメントのそれぞれに応じた出力値をすべてゼロにすることができる。その結果、ロボット制御装置３０は、エンドエフェクターＥによる物体Ｏの把持が不安定になってしまうことを抑制することができる。
エンドエフェクターＥに応じた軸と、物体Ｏに応じた軸とが一致した状態とは、物体ＯがエンドエフェクターＥに対して所定の位置であり、且つ、物体ＯがエンドエフェクターＥに対して所定の姿勢である状態である。所定の位置とは、例えば、当該エンドエフェクターＥに応じた軸と、当該物体Ｏに応じた軸と、が重なる位置である。また、所定の姿勢とは、例えば、当該エンドエフェクターＥに応じた軸と、当該物体Ｏに応じた軸と、が平行となる姿勢である。
【００６０】
図６では、第２動作において基部ＥＢに対して第２指部Ｆ２が移動する第２方向が、矢印Ａ３によって示されている。また、図６では、第２動作において第１指部Ｆ１及び第２指部Ｆ２に対して基部ＥＢが移動する方向が、矢印Ａ４によって示されている。そして、図６に示した例では、第１指部Ｆ１及び物体Ｏの両方が移動していない。
【００６１】
ここで、第２動作を行うことによって第２指部Ｆ２が物体Ｏに接触し始めると、力検出部ＦＳから出力される出力値のうち力検出座標系ＦＣにおけるＹ軸の正方向に作用する並進力に応じた出力値は、第１閾値よりも小さくなる。具体的には、当該出力値は、第２動作を行うことによって第２指部Ｆ２が物体Ｏに接触し始めると、図７に示したように低下する。図７は、力検出部ＦＳから出力される出力値のうち力検出座標系ＦＣにおけるＹ軸の正方向に作用する並進力に応じた出力値の第２動作における変化の一例を示す図である。図７に示したグラフの横軸は、第２動作における経過時間を示す。当該グラフの縦軸は、当該出力値の大きさを示す。図７に示した値ＥＦ１は、第１閾値を示す。図７に示したタイミングＴＳは、第２動作において第２指部Ｆ２が物体Ｏに接触したタイミングを示す。
【００６２】
第２動作において第２指部Ｆ２が物体Ｏに接触し始めると、物体Ｏには、第１指部Ｆ１と第２指部Ｆ２とのそれぞれから互いに反対向きに互いにほぼ同じ大きさの力が加えられ始める。このため、図７に示したように、力検出部ＦＳから出力される出力値のうち力検出座標系ＦＣにおけるＹ軸の正方向に作用する並進力に応じた出力値は、タイミングＴＳからほぼ時間が経過することなく値ＥＦ１からゼロ（又はほぼゼロ）へと低下する。図７に示した例では、当該出力値は、タイミングＴＳからほぼ時間が経過することなく値ＥＦ１からゼロへと低下している。これは、第１指部Ｆ１から物体Ｏに加えられた力と、第２指部Ｆ２から物体Ｏに加えられた力との合力がゼロになった結果である。当該合力がゼロになることは、換言すると、エンドエフェクターＥによって物体Ｏが把持されたことを示す。そこで、ロボット制御装置３０は、後述するステップＳ１６０において当該出力値が所定の第２閾値未満となった場合、エンドエフェクターＥにより物体Ｏが把持されたと判定し、ロボット２０の動作を停止させ、第２動作を終了させる。第２閾値は、ゼロ以上第１閾値以下の値であれば如何なる値であってもよい。ここで、前述した通り、力検出部ＦＳから出力される出力値のうち力検出座標系ＦＣにおけるＹ軸の正方向に作用する並進力に応じた出力値は、タイミングＴＳからほぼ時間が経過することなく値ＥＦ１からゼロへと低下する。このため、第２閾値は、第１閾値と同じ値であってもよい。この場合、ロボット制御装置３０は、当該出力値が第１閾値未満となった場合、エンドエフェクターＥにより物体Ｏが把持されたと判定する。また、第２閾値は、図７に示したように、ゼロ以上第１閾値未満の値であってもよい。図７に示した値ＥＦ２は、第２閾値の一例を示す。なお、ロボット制御装置３０は、ステップＳ１６０において当該出力値が予め決められた第３閾値以下となった場合、エンドエフェクターＥにより物体Ｏが把持されたと判定し、ロボット２０の動作を停止させ、第２動作を終了させる構成であってもよい。第３閾値は、第２閾値よりも小さい値であり、例えば、ゼロである。
【００６３】
なお、本実施形態において、力検出部ＦＳから出力される出力値のうち力検出座標系ＦＣにおけるＹ軸の正方向に作用する並進力に応じた出力値の変化は、当該出力値の誤差による変動幅を超えた変化のことを意味する。すなわち、本実施形態では、当該出力値の誤差による低下は、当該出力値の低下として扱わない。
【００６４】
ステップＳ１５０においてロボット制御部３６５が力制御によって第２動作をロボット２０に開始させた後、判定部３６３は、取得部３６１が力検出部ＦＳから取得した外力検出情報が示す６つの出力値のうち、力検出座標系ＦＣにおけるＹ軸の正方向に作用する並進力に応じた出力値が第２閾値未満であるか否かを判定する（ステップＳ１６０）。当該出力値が第２閾値以上であると判定部３６３が判定した場合（ステップＳ１６０−ＮＯ）、ロボット制御部３６５は、ステップＳ１５０において開始させた第２動作をロボット２０に継続させる。一方、当該出力値が第２閾値未満であると判定部３６３が判定した場合（ステップＳ１４０−ＹＥＳ）、ロボット制御部３６５は、エンドエフェクターＥにより物体Ｏが把持されたと判定し、ロボット２０の動作を停止させ、ロボット２０の第２動作を終了させる。ただし、ロボット制御部３６５は、当該場合において、軸ＡＸＥが第１指部Ｆ１と第２指部Ｆ２との中間に位置するように基部ＥＢを第１指部Ｆ１及び第２指部Ｆ２のそれぞれに対して移動させる動作が完了していない場合、当該動作を完了させてから、エンドエフェクターＥにより物体Ｏが把持されたと判定し、ロボット２０の動作を停止させ、ロボット２０の第２動作を終了させる。
【００６５】
ここで、図８は、図５に示したエンドエフェクターＥと物体Ｏとの位置関係のうちロボット２０の第２動作が終了した直後における位置関係の一例を示す図である。図８に示したように、第２動作が終了した場合において、軸ＡＸＥと軸ＡＸＯとは、一致している。また、この一例では、第２動作において第１指部Ｆ１が第１方向に移動しないため、図８に示した物体Ｏの位置は、図６に示した物体Ｏの位置と一致している。
【００６６】
ステップＳ１４０においてロボット制御部３６５がロボット２０の第２動作を終了させた場合、取得部３６１は、第１位置検出部ＥＣ１から第１位置検出情報を取得するとともに、第２位置検出部ＥＣ２から第２位置検出情報を取得する（ステップＳ１７０）。図４に示したフローチャートでは、このようなステップＳ１７０における取得部３６１の処理を、位置検出情報取得と示している。
【００６７】
次に、判定部３６３は、ステップＳ１７０において取得部３６１が取得した第１位置検出情報及び第２位置検出情報に基づいて、第１判定処理を行う（ステップＳ１８０）。
【００６８】
ここで、ステップＳ１８０の処理について説明する。第１判定処理は、ロボット制御装置３０が行う判定のうち、所定の状態で物体Ｏが第１指部Ｆ１と第２指部Ｆ２とによって把持されているか否かの判定を行う処理である。この一例において、所定の状態は、エンドエフェクターＥに対する物体Ｏの位置及び姿勢が所定の位置及び姿勢と一致している状態のことである。なお、所定の状態は、エンドエフェクターＥに対する物体Ｏの位置が所定の位置と一致している状態のことであってもよく、エンドエフェクターＥに対する物体Ｏの姿勢が所定の姿勢と一致している状態のことであってもよく、エンドエフェクターＥと物体Ｏとに応じた他の状態であってもよい。
【００６９】
所定の状態で物体Ｏが第１指部Ｆ１と第２指部Ｆ２とによって把持された場合、物体Ｏに予め決められた２つの部位のうちの一方が第１指部Ｆ１によって押圧されるとともに、当該２つの部位のうちの他方が第２指部Ｆ２によって押圧される。以下では、説明の便宜上、当該２つの部位のうち所定の状態において第１指部Ｆ１によって押圧される部位のことを第１把持部位と称し、当該２つの部位のうち所定の状態において第２指部Ｆ２によって押圧される部位のことを第２把持部位と称して説明する。
【００７０】
また、所定の状態で物体Ｏが第１指部Ｆ１と第２指部Ｆ２とによって把持された場合、第１指部Ｆ１と第２指部Ｆ２との間の長さは、所定の状態に応じた長さと一致する。所定の状態に応じた長さは、すなわち、所定の状態で物体Ｏが第１指部Ｆ１と第２指部Ｆ２とによって把持された場合における第１指部Ｆ１と第２指部Ｆ２との間の長さのことである。換言すると、所定の状態に応じた長さは、前述の第１把持部位と第２把持部位との間の長さのことである。ここで、図９は、図５に示した物体Ｏがロボット２０の第２動作によって所定の状態で第１指部Ｆ１と第２指部Ｆ２とによって把持されている様子の一例を示す図である。図９に示した面Ｘ１は、物体Ｏが有する面のうち第１指部Ｆ１が接触している面である。また、図９に示した面Ｘ２は、物体Ｏが有する面のうち第２指部Ｆ２が接触している面である。
【００７１】
ここで、所定の状態と異なる状態で物体Ｏが第１指部Ｆ１と第２指部Ｆ２とによって把持された場合、第１指部Ｆ１と第２指部Ｆ２との間の長さは、所定の状態に応じた長さと一致しない可能性が高い。
【００７２】
例えば、図１０は、図５に示した物体Ｏをロボット２０が第２動作によって把持できなかった様子の一例を示す図である。物体Ｏをロボット２０が第２動作によって把持できなかった場合、力検出座標系ＦＣにおけるＹ軸の正方向に作用する並進力に応じた出力値は、第１指部Ｆ１と第２指部Ｆ２とが接触して互いに押圧し合うことによって第２閾値未満となる。このため、ロボット２０の第２動作が終了した直後における第１指部Ｆ１と第２指部Ｆ２とは、図１０に示したように互いに接触している。第１指部Ｆ１と第２指部Ｆ２とが接触している場合、第１指部Ｆ１と第２指部Ｆ２との間の長さはゼロである。すなわち、物体Ｏをロボット２０が第２動作によって把持できなかった場合、第１指部Ｆ１と第２指部Ｆ２との間の長さは、所定の状態に応じた長さと一致しない。ここで、図１０に示した長さＤ２は、当該場合における第１指部Ｆ１と第２指部Ｆ２との間の長さの一例を示す。
【００７３】
また、例えば、図１１は、図５に示した物体Ｏがロボット２０の第２動作によって所定の状態と異なる状態で第１指部Ｆ１と第２指部Ｆ２とによって把持されている様子の一例を示す図である。図１１に示した状態は、エンドエフェクターＥに対する物体Ｏの姿勢が所定の姿勢と一致しており、エンドエフェクターＥに対する物体Ｏの位置が所定の位置と一致していない状態の一例である。以下では、説明の便宜上、当該状態のことを第１誤把持状態と称して説明する。第１誤把持状態では、ロボット２０の第２動作が終了した直後において、第１指部Ｆ１と第２指部Ｆ２との間の長さが、所定の状態に応じた長さと異なる場合がある。ここで、図１１に示した長さＤ３は、当該場合における第１指部Ｆ１と第２指部Ｆ２との間の長さの一例を示す。図１１に示した例では、第１誤把持状態における第１指部Ｆ１と第２指部Ｆ２との間の長さは、所定の状態に応じた長さよりも短くなっている。すなわち、長さＤ３は、長さＤ１よりも短い。図示しない他の例では、第１誤把持状態における第１指部Ｆ１と第２指部Ｆ２との間の長さは、所定の状態に応じた長さよりも長くなることもある。第１誤把持状態において第１指部Ｆ１と第２指部Ｆ２との間の長さが所定の状態に応じた長さと異なってしまうことは、物体Ｏの幅が重力方向に沿って一定ではない場合に起こり得る。すなわち、物体Ｏの形状が複雑になるほど、第１誤把持状態において第１指部Ｆ１と第２指部Ｆ２との間の長さが所定の状態に応じた長さと異なってしまう可能性が高くなる。
【００７４】
また、例えば、図１２は、図５に示した物体Ｏがロボット２０の第２動作によって所定の状態と異なる状態で第１指部Ｆ１と第２指部Ｆ２とによって把持されている様子の他の例を示す図である。図１２に示した状態は、エンドエフェクターＥに対する物体Ｏの位置が所定の位置と一致しており、エンドエフェクターＥに対する物体Ｏの姿勢が所定の姿勢と一致していない状態の一例である。以下では、説明の便宜上、当該状態のことを第２誤把持状態と称して説明する。第２誤把持状態では、ロボット２０の第２動作が終了した直後において、第１指部Ｆ１と第２指部Ｆ２との間の長さが、所定の状態に応じた長さと異なる場合がある。ここで、図１２に示した長さＤ４は、当該場合における第１指部Ｆ１と第２指部Ｆ２との間の長さの一例を示す。図１２に示した例では、第２誤把持状態における第１指部Ｆ１と第２指部Ｆ２との間の長さは、所定の状態に応じた長さよりも長くなっている。すなわち、長さＤ４は、長さＤ１よりも長い。図示しない他の例では、第２誤把持状態における第１指部Ｆ１と第２指部Ｆ２との間の長さは、所定の状態に応じた長さよりも短くなることもある。第２誤把持状態において第１指部Ｆ１と第２指部Ｆ２との間の長さが所定の状態に応じた長さと異なってしまうことは、物体Ｏの形状が球体形状ではない場合に起こり得る。すなわち、物体Ｏの形状が複雑になるほど、第２誤把持状態において第１指部Ｆ１と第２指部Ｆ２との間の長さが所定の状態に応じた長さと異なってしまう可能性が高くなる。
【００７５】
このように、所定の状態と異なる状態で物体Ｏが第１指部Ｆ１と第２指部Ｆ２とによって把持された場合、第１指部Ｆ１と第２指部Ｆ２との間の長さは、所定の状態に応じた長さと一致しない可能性が高い。
【００７６】
そこで、判定部３６３は、第１判定処理において、第１指部Ｆ１と第２指部Ｆ２との間の長さが、所定の状態に応じた長さと一致しているか否かを判定することにより、所定の状態で物体Ｏが第１指部Ｆ１と第２指部Ｆ２とによって把持されているか否かを判定する。すなわち、判定部３６３は、第１指部Ｆ１と第２指部Ｆ２との間の長さが、所定の状態に応じた長さと一致していないと判定した場合、所定の状態と異なる状態で物体Ｏが第１指部Ｆ１と第２指部Ｆ２とによって把持されていると判定する。一方、判定部３６３は、第１指部Ｆ１と第２指部Ｆ２との間の長さが、所定の状態に応じた長さと一致していると判定した場合、所定の状態で物体Ｏが第１指部Ｆ１と第２指部Ｆ２とによって把持されていると判定する。
【００７７】
より具体的には、判定部３６３は、第１判定処理において、ステップＳ１７０において取得部３６１が取得した第１位置検出情報及び第２位置検出情報に基づいて、第１指部Ｆ１に対する第２指部Ｆ２の位置を、第１指部Ｆ１と第２指部Ｆ２との間の長さとして検出（又は算出）する。当該長さは、第１位置検出部から出力される出力値に応じた値の一例であり、第１位置検出部から出力される出力値と第２位置検出部から出力される出力値とに応じた値の一例でもある。判定部３６３は、検出した長さと、メモリー３２から予め読み出した第１情報が示す所定の値とが一致しているか否かを判定する。所定の値は、この一例において、所定の状態に応じた長さを示す値である。
【００７８】
そして、判定部３６３は、検出した長さと所定の値とが一致していないと判定した場合、所定の状態と異なる状態で物体Ｏが第１指部Ｆ１と第２指部Ｆ２とによって把持されていると判定する。一方、判定部３６３は、検出した長さと所定の値とが一致していると判定した場合、所定の状態で物体Ｏが第１指部Ｆ１と第２指部Ｆ２とによって把持されていると判定する。
【００７９】
ここで、判定部３６３は、例えば、検出した長さを中心値とした誤差範囲に所定の値が含まれている場合、当該長さと所定の値とが一致していると判定する。一方、判定部３６３は、当該誤差範囲に所定の値が含まれている場合、当該長さと所定の値とが一致していると判定する。当該誤差範囲は、例えば、当該長さを中心値とした９０％信頼区間の範囲であってもよく、当該長さを中心値とした±１標準偏差の範囲であってもよく、他の誤差範囲であってもよい。また、判定部３６３は、当該長さに応じた値に基づいて、当該長さと所定の値とが一致しているか否かを判定する構成であってもよい。なお、所定の値は、第１値の一例である。また、誤差範囲は、所定の範囲の一例である。
【００８０】
このように、ステップＳ１５０〜ステップＳ１８０の処理では、ロボット制御装置３０は、第２動作において、力検出部ＦＳから出力される出力値が第１閾値よりも小さい所定の第２閾値よりも小さくなったとき、第１位置検出部ＥＣ１から出力される出力値に応じた値と、予め決められた第１値と、の差異が所定の範囲内である場合、物体Ｏが所定の状態で第１指部Ｆ１と第２指部Ｆ２とによって把持されていると判定する。
【００８１】
ステップＳ１８０の処理が行われた後、判定部３６３は、ロボット２０に第３動作を行わせるか否かを判定する（ステップＳ１９０）。ここで、ステップＳ１９０の処理について説明する。
【００８２】
ステップＳ１９０において、判定部３６３は、ステップＳ１８０の判定結果に応じて、ロボット２０に第３動作を行わせるか否かを判定する。判定部３６３は、所定の状態で物体Ｏが第１指部Ｆ１と第２指部Ｆ２とによって把持されているとステップＳ１８０において判定した場合、ロボット２０に第３動作を行わせると判定する。一方、判定部３６３は、所定の状態と異なる状態で物体Ｏが第１指部Ｆ１と第２指部Ｆ２とによって把持されているとステップＳ１８０において判定した場合、ロボット２０に第３動作を行わせないと判定する。
【００８３】
ここで、第３動作は、第１動作、第２動作のそれぞれと異なる動作であり、ロボット制御装置３０がロボット２０に行わせる動作のうちロボット２０が把持した物体Ｏに対して何らかの作業を行わせる動作のことである。すなわち、前述の予め決められた作業は、第１動作〜第３動作を順に行うことによって行われる作業のことである。当該何らかの作業は、ロボット２０が把持した物体Ｏに対してロボット２０が行う作業であれば如何なる作業であってもよく、例えば、当該物体Ｏを予め決められた載置位置に載置する作業等である。
【００８４】
ロボット２０に第３動作を行わせると判定部３６３が判定した場合（ステップＳ１９０−ＹＥＳ）、ロボット制御部３６５は、動作プログラムに基づく位置制御と動作プログラムに基づく力制御とのうちいずれか一方又は両方によってロボット２０を制御し、ロボット２０に第３動作を行わせ（ステップＳ２００）、処理を終了する。一方、ロボット２０に第３動作を行わせないと判定部３６３が判定した場合（ステップＳ１９０−ＮＯ）、ロボット制御部３６５は、動作プログラムに基づく位置制御と動作プログラムに基づく力制御とのうちいずれか一方又は両方によってロボット２０を制御し、ロボット２０に第４動作を行わせる（ステップＳ２１０）。
【００８５】
ここで、第４動作は、第１動作、第２動作、第３動作のそれぞれと異なる動作であり、ロボット制御装置３０がロボット２０に行わせる動作のうちロボット２０に物体Ｏを把持し直させる動作のことである。
【００８６】
例えば、第４動作は、第１指部Ｆ１と第２指部Ｆ２とによる物体Ｏの把持を予め決められた位置において解除して物体Ｏを落とし、落ちた物体Ｏを再び把持する動作である。この場合、落ちた後の物体Ｏの位置及び姿勢が不定となってしまうため、ロボットシステム１は、撮像部等の物体Ｏの位置及び姿勢を検出するために用いる何らかの装置やセンサー等、又は、物体Ｏの位置及び姿勢を所望の位置及び姿勢に変化させる何らかの装置や他のロボット等を備える必要がある。当該予め決められた位置は、例えば、第４動作を開始した位置であってもよく、予め決められた除材領域に物体Ｏが落ちる位置であってもよく、他の位置であってもよい。なお、当該予め決められた位置が当該除材領域に物体Ｏが落ちる位置であった場合、落ちた後の物体Ｏは、他の物体と混ざらないようにすることができる。その結果、ロボット制御装置３０は、ロボット２０に物体Ｏを精度よく把持し直させることができる。
【００８７】
また、例えば、第４動作は、力制御によって物体Ｏを所定の位置に配置することによって物体Ｏの位置及び姿勢を所望の位置及び姿勢と一致させる冶具を用いて、物体Ｏの位置及び姿勢を所望の位置及び姿勢と一致させ、その後、物体Ｏを再び把持する動作である。この場合、ロボットシステム１は、当該冶具を備える。
【００８８】
なお、ロボット制御装置３０は、第４動作において、ロボット２０に物体Ｏを把持し直させる際、ステップＳ１３０〜ステップＳ１６０の処理を行う。
【００８９】
ステップＳ２１０の処理が行われた後、取得部３６１は、ステップＳ１７０に遷移し、第１位置検出部ＥＣ１から第１位置検出情報を再び取得するとともに、第２位置検出部ＥＣ２から第２位置検出情報を再び取得する。
【００９０】
以上のように、ロボット制御装置３０は、第１指部Ｆ１を物体Ｏに接触させ、力検出部ＦＳから出力される出力値が予め決められた第１閾値以上となるまで第１指部Ｆ１を物体Ｏに押し付ける第１動作をロボット２０に行わせ、ロボット２０に第１動作を行わせた後、力検出部ＦＳから出力される出力値を保持しながら物体Ｏに対する第２指部Ｆ２の位置を変化させて物体Ｏを第１指部Ｆ１と第２指部Ｆ２とによって把持させる第２動作をロボット２０に行わせ、第２動作において力検出部ＦＳから出力される出力値が予め決められた第２閾値よりも小さくなった場合、第１位置検出部ＥＣ１から出力される出力値と第２位置検出部ＥＣ２から出力される出力値とに応じた値と、所定の値とが一致しているか否かによって、所定の状態で物体Ｏが第１指部Ｆ１と第２指部Ｆ２とによって把持されているか否かの判定を行う。これにより、ロボット制御装置３０は、第１指部Ｆ１と第２指部Ｆ２とによって物体Ｏを所定の状態で精度よく把持することができる。
【００９１】
なお、上記において説明した第２動作において、ロボット制御装置３０は、軸ＡＸＥが第１指部Ｆ１と第２指部Ｆ２との中間に位置するように基部ＥＢを第１指部Ｆ１及び第２指部Ｆ２のそれぞれに対して移動させる動作をロボット２０に行わせない構成であってもよい。
【００９２】
また、上記において説明したエンドエフェクターＥは、第２指部Ｆ２に代えて、基台Ｂに対して移動不可能な突出部位が設けられる構成であってもよい。突出部位は、例えば、基部ＥＢに対して移動不可能に設けられた冶具、基部ＥＢの一部等である。エンドエフェクターＥが第２指部Ｆ２に代えて突出部位を備える場合、ロボット制御装置３０は、軸ＡＸＥが第１指部Ｆ１と第２指部Ｆ２との中間に位置するように基部ＥＢを第１指部Ｆ１に対して移動させる動作をロボット２０に行わせない。そして、ロボット制御装置３０は、ステップＳ１５０において（すなわち、第２動作において）、力検出座標系ＦＣにおけるＹ軸の正方向に作用する並進力に応じた出力値を保持するように基部ＥＢに対して第１指部Ｆ１を第１方向に向かって移動させるとともに、当該Ｙ軸の負方向に作用する並進力に応じた出力値が第１閾値以上となるまで基部ＥＢとともに突出部位を、第１方向と逆の方向である第２方向に向かって移動させる動作を第２動作としてロボット２０に行わせる。これにより、ロボット制御装置３０は、物体Ｏを所定の状態で第１指部Ｆ１と突出部位とによって挟んで把持することができる。
【００９３】
＜実施形態の変形例＞
以下、本発明の実施形態の変形例について、図面を参照して説明する。なお、実施形態の変形例では、実施形態と同様な構成部に対して同じ符号を付して説明を省略する。
【００９４】
実施形態の変形例では、ロボット２０は、第１駆動部ＭＴ１に加わる負荷を検出する図示しない第１負荷検出部ＬＤ１と、第２駆動部ＭＴ２に加わる負荷を検出する図示しない第２負荷検出部ＬＤ２を更に備える。
【００９５】
第１負荷検出部ＬＤ１は、例えば、第１駆動部ＭＴ１の回動軸に加わるトルクを、第１駆動部ＭＴ１に加わる負荷として検出するトルクセンサーである。第１負荷検出部ＬＤ１は、検出した負荷に応じた出力値を示す第１負荷検出情報をロボット制御装置３０に出力する。なお、第１負荷検出部ＬＤ１は、トルクセンサーに代えて、第１駆動部ＭＴ１の電流値を検出する電流計等の第１駆動部ＭＴ１に加わる負荷に応じた何らかの値を検出する他のセンサーであってもよい。
【００９６】
第２負荷検出部ＬＤ２は、例えば、第２駆動部ＭＴ２の回動軸に加わるトルクを、第２駆動部ＭＴ２に加わる負荷として検出するトルクセンサーである。第２負荷検出部ＬＤ２は、検出した負荷に応じた出力値を示す第２負荷検出情報をロボット制御装置３０に出力する。なお、第２負荷検出部ＬＤ２は、トルクセンサーに代えて、第２駆動部ＭＴ２の電流値を検出する電流計等の第２駆動部ＭＴ２に加わる負荷に応じた何らかの値を検出する他のセンサーであってもよい。
【００９７】
また、実施形態の変形例では、物体Ｏが、剛体として近似不可能な物体、すなわち弾性体である場合について説明する。物体Ｏが弾性体であることは、この一例において、エンドエフェクターＥによって物体Ｏが把持された場合における物体Ｏの変形が、肉眼で検出可能な程度の変形であることを意味する。なお、物体Ｏが弾性体であることは、これに代えて、エンドエフェクターＥによって物体Ｏが把持された場合における物体Ｏの変形が、定規、ノギス、マイクロメーターのうちのいずれかで検出可能な程度の変形であることを意味してもよい。このような意味で、以下では、一例として、物体Ｏが、エンドエフェクターＥによって把持されると変形する場合について説明する。この場合、例えば、物体Ｏの材質は、ゴム等の樹脂である。なお、物体Ｏの材質は、樹脂に代えて、エンドエフェクターＥによって把持されると変形する他の材質であってもよい。
【００９８】
ここで、物体Ｏが弾性体である場合、所定の状態に応じた長さは、物体Ｏが第１指部Ｆ１と第２指部Ｆ２とによって把持されていない場合における第１把持部位と第２把持部位との間の長さと一致せず、物体Ｏが第１指部Ｆ１と第２指部Ｆ２とによって把持された場合における第１把持部位と第２把持部位との間の長さと一致する。これは、当該場合、図１３に示したように、弾性体である物体Ｏが変形するからである。図１３は、図５に示した物体Ｏが弾性体である場合において所定の状態で第１指部Ｆ１と第２指部Ｆ２とによって把持された物体Ｏの一例を示す図である。図１３に示したように、当該場合、物体Ｏは第１指部Ｆ１と第２指部Ｆ２とによって変形し、第１把持部位と第２把持部位との間の長さは、第１指部Ｆ１と第２指部Ｆ２とによって把持されていない場合における第１把持部位と第２把持部位との間の長さよりも短い長さＤ５になる。
【００９９】
このため、物体Ｏが弾性体である場合、ロボット制御装置３０は、図４に示したフローチャートの処理によってロボット２０に予め決められた作業を行わせると、精度よく当該作業をロボット２０に行わせることができないことがある。そこで、実施形態の変形例に係るロボット制御装置３０は、例えば、図１４示したフローチャートの処理によってロボット２０に予め決められた作業を行わせる。
【０１００】
図１４は、実施形態の変形例に係るロボット制御装置３０がロボット２０に予め決められた作業を行わせる処理の流れの一例を示す図である。以下では、一例として、図１４に示したステップＳ３１０の処理が行われるよりも前のタイミングにおいて、メモリー３２に予め決められた動作プログラムをロボット制御部３６５がメモリー３２から読み出している場合について説明する。また、以下では、一例として、当該タイミングにおいて、ロボット２０の動作を開始させる操作をロボット制御装置３０が受け付けている場合について説明する。また、以下では、図１４に示したステップＳ１２０〜ステップＳ１７０の処理は、図４に示したステップＳ１２０〜ステップＳ１７０の処理と同様の処理であるため、説明を省略する。また、以下では、図１４に示したステップＳ１９０〜ステップＳ２１０の処理は、図４に示したステップＳ１９０〜ステップＳ２１０の処理と同様の処理であるため、説明を省略する。
【０１０１】
判定部３６３は、メモリー３２に予め記憶された第２情報をメモリー３２から読み出す（ステップＳ３１０）。第２情報は、この一例において、後述するステップＳ３３０において行われる第２判定処理において用いられる情報のことである。第２情報の詳細については、後述する。なお、ステップＳ３１０の処理は、ステップＳ３３０の処理が行われるよりも前のタイミングであれば、如何なるタイミングにおいて行われてもよい。
【０１０２】
図１４に示したステップＳ１７０の処理が行われた後、取得部３６１は、第１負荷検出部ＬＤ１から第１負荷検出情報を取得するとともに、第２負荷検出部ＬＤ２から第２負荷検出情報を取得する（ステップＳ３２０）。図１４に示したフローチャートでは、このようなステップＳ３２０における取得部３６１の処理を、負荷検出情報取得と示している。なお、図１４に示したフローチャートにおいて、ステップＳ１７０の処理とステップＳ３２０の処理とは、逆の順で行われる構成であってもよく、並列に行われる構成であってもよい。
【０１０３】
次に、判定部３６３は、図１４に示したステップＳ１７０において取得部３６１が取得した第１位置検出情報及び第２位置検出情報と、ステップＳ３２０において取得部３６１が取得した第１負荷検出情報及び第２負荷検出情報とに基づいて、第２判定処理を行う（ステップＳ３３０）。
【０１０４】
ここで、ステップＳ３３０の処理について説明する。第２判定処理は、ロボット制御装置３０が行う判定のうち、弾性体である物体Ｏが所定の状態で第１指部Ｆ１と第２指部Ｆ２とによって把持されているか否かの判定を行う処理である。
【０１０５】
弾性体である物体Ｏが所定の状態で第１指部Ｆ１と第２指部Ｆ２とによって把持された場合、第１指部Ｆ１と第２指部Ｆ２との間の長さは、第１駆動部ＭＴ１に加わる負荷と、第２駆動部ＭＴ２に加わる負荷とのそれぞれに応じて変化する。そこで、第２判定処理では、ロボット制御装置３０は、ステップＳ３１０においてメモリー３２から読み出した第２情報を用いて第２判定処理を行う。第２情報は、第１負荷と、第２負荷と、圧縮長さとが対応付けられた情報であり、第１負荷、第２負荷、圧縮長さのそれぞれを示す情報のことである。第２情報は、例えば、第１負荷と、第２負荷と、圧縮長さとが対応付けられたテーブルであるが、これに代えて、第１負荷と、第２負荷と、圧縮長さとが対応付けられた他の情報であってもよい。第１負荷は、物体Ｏを所定の状態で第１指部Ｆ１と第２指部Ｆ２とによって把持させる場合において第１駆動部ＭＴ１に加わるようにしたい所望の負荷のことである。第２負荷は、当該場合において第２駆動部ＭＴ２に加わるようにしたい所望の負荷のことである。圧縮長さは、当該場合において、第１駆動部ＭＴ１に加わる負荷を第１負荷に一致させ、第２駆動部ＭＴ２に加わる負荷を第２負荷に一致させた際の第１指部Ｆ１と第２指部Ｆ２との間の長さのことである。ここで、第２情報が示す圧縮長さは、試験、実験等によって予め計測される長さであり、第１値の一例である。
【０１０６】
第２判定処理において、判定部３６３は、図１４に示したステップＳ１７０において取得部３６１が取得した第１位置検出情報及び第２位置検出情報に基づいて、第１指部Ｆ１に対する第２指部Ｆ２の位置を、第１指部Ｆ１と第２指部Ｆ２との間の長さとして検出（又は算出）する。また、判定部３６３は、ステップＳ３２０において取得部３６１が取得した第１負荷検出情報及び第２負荷検出情報に基づいて、第１駆動部ＭＴ１に加わる負荷と、第２駆動部ＭＴ２に加わる負荷とを検出する。そして、判定部３６３は、検出した第１駆動部ＭＴ１に加わる負荷が、第２情報が示す第１負荷と一致するか否かを判定する。判定部３６３は、当該負荷が第１負荷と一致しない場合、物体Ｏが所定の状態で第１指部Ｆ１と第２指部Ｆ２とによって把持されていないと判定する。また、判定部３６３は、検出した第２駆動部ＭＴ２に加わる負荷が、第２情報が示す第２負荷と一致するか否かを判定する。判定部３６３は、当該負荷が第２負荷と一致しない場合、物体Ｏが所定の状態で第１指部Ｆ１と第２指部Ｆ２とによって把持されていないと判定する。判定部３６３は、検出した第１駆動部ＭＴ１に加わる負荷が、第２情報が示す第１負荷と一致し、且つ、検出した第２駆動部ＭＴ２に加わる負荷が、第２情報が示す第２負荷と一致すると判定した場合、検出した長さと、第２情報が示す圧縮長さとが一致しているか否かを判定する。
【０１０７】
判定部３６３は、検出した長さと圧縮長さとが一致していないと判定した場合、所定の状態と異なる状態で物体Ｏが第１指部Ｆ１と第２指部Ｆ２とによって把持されていると判定する。一方、判定部３６３は、検出した長さと圧縮長さとが一致していると判定した場合、所定の状態で物体Ｏが第１指部Ｆ１と第２指部Ｆ２とによって把持されていると判定する。
【０１０８】
ここで、判定部３６３は、例えば、検出した長さを中心値とした誤差範囲に圧縮長さが含まれている場合、当該長さと圧縮長さとが一致していると判定する。一方、判定部３６３は、当該誤差範囲に圧縮長さが含まれている場合、当該長さと圧縮長さとが一致していると判定する。なお、判定部３６３は、当該長さに応じた値に基づいて、当該長さと圧縮長さとが一致しているか否かを判定する構成であってもよい。
【０１０９】
以上のように、ロボット制御装置３０は、物体Ｏが弾性体である場合、第２動作において力検出部ＦＳから出力される出力値が予め決められた第２閾値よりも小さくなった場合、第１負荷検出部ＬＤ１から出力される出力値と、第１位置検出部ＥＣ１から出力される出力値に応じた値と、圧縮長さとに基づいて、所定の状態で物体Ｏが第１指部Ｆ１と第２指部Ｆ２とによって把持されているか否かの判定を行う。これにより、ロボット制御装置３０は、物体Ｏが弾性体である場合であっても、第１指部Ｆ１と第２指部Ｆ２とによって物体Ｏを所定の状態で精度よく把持することができる。
【０１１０】
なお、実施形態の変形例に係る第２動作においても、ロボット制御装置３０は、軸ＡＸＥが第１指部Ｆ１と第２指部Ｆ２との中間に位置するように基部ＥＢを第１指部Ｆ１及び第２指部Ｆ２のそれぞれに対して移動させる動作をロボット２０に行わせない構成であってもよい。
【０１１１】
また、実施形態の変形例に係るエンドエフェクターＥも、第２指部Ｆ２に代えて、前述の突出部位が設けられる構成であってもよい。実施形態の変形例に係るエンドエフェクターＥが第２指部Ｆ２に代えて突出部位を備える場合、第２情報は、第１負荷と、圧縮長さとが対応付けられた情報であり、第１負荷と、圧縮長さとのそれぞれを示す情報である。
【０１１２】
すなわち、実施形態の変形例に係るエンドエフェクターＥが第２指部Ｆ２に代えて突出部位を備える場合、第２判定処理において、判定部３６３は、ステップＳ３２０において取得部３６１が取得した第１負荷検出情報に基づいて、第１駆動部ＭＴ１に加わる負荷を検出し、検出した第１駆動部ＭＴ１に加わる負荷が、第２情報が示す第１負荷と一致するか否かを判定する。判定部３６３は、当該負荷が第１負荷と一致しないと判定した場合、物体Ｏが所定の状態で第１指部Ｆ１と第２指部Ｆ２とによって把持されていないと判定する。また、判定部３６３は、検出した第１駆動部ＭＴ１に加わる負荷が、第２情報が示す第１負荷と一致すると判定した場合、検出した長さと、第２情報が示す圧縮長さとが一致しているか否かを判定する。
【０１１３】
また、実施形態の変形例に係るエンドエフェクターＥが第２指部Ｆ２に代えて突出部位を備える場合、ロボット制御装置３０は、軸ＡＸＥが第１指部Ｆ１と第２指部Ｆ２との中間に位置するように基部ＥＢを第１指部Ｆ１に対して移動させる動作をロボット２０に行わせない。そして、ロボット制御装置３０は、図１４に示したステップＳ１５０において（すなわち、第２動作において）、力検出座標系ＦＣにおけるＹ軸の正方向に作用する並進力に応じた出力値を保持するように基部ＥＢに対して第１指部Ｆ１を第１方向に向かって移動させるとともに、当該Ｙ軸の負方向に作用する並進力に応じた出力値が第１閾値以上となるまで基部ＥＢとともに突出部位を、第１方向と逆の方向である第２方向に向かって移動させる動作を第２動作としてロボット２０に行わせる。これにより、ロボット制御装置３０は、物体Ｏを所定の状態で第１指部Ｆ１と突出部位とによって挟んで把持することができる。
【０１１４】
なお、上記において説明したロボットシステム１は、複数の物体Ｏがばら積み状態にされている状況において、第１動作を開始させる前のタイミングに物体Ｏのばら積み状態が崩れてしまった場合等に適用することで、ロボット２０に行わせる作業の精度を向上させることができる。すなわち、ロボットシステム１は、当該場合において物体Ｏの把持に失敗したとしても、物体Ｏを把持し直すことができ、物体Ｏに対する作業の失敗を抑制することができる。
【０１１５】
また、上記において説明したロボットシステム１は、第１指部Ｆ１と第２指部Ｆ２との間の長さに基づいて、エンドエフェクターＥによる物体Ｏの把持の解除に成功したか否かを判定することができる。
【０１１６】
また、上記において説明したロボットシステム１は、第１指部Ｆ１と第２指部Ｆ２との間の長さに基づいて、エンドエフェクターＥによる物体Ｏの把持の解除に成功したか否かを判定することができる。すなわち、ロボットシステム１は、第１指部Ｆ１と第２指部Ｆ２との間の長さがゼロであるか否かによって、エンドエフェクターＥによる物体Ｏの把持の解除に成功したか否かの判定を行うことができる。そして、ロボットシステム１は、エンドエフェクターＥによる物体Ｏの把持の解除に失敗していると判定した場合、例えば、アームＡを振動させる等の動作によって物体ＯをエンドエフェクターＥから落とし、エンドエフェクターＥによる物体Ｏの把持の解除をより確実に行うことができる。
【０１１７】
また、上記において説明したロボット制御装置３０は、第１動作及び第２動作のそれぞれにおいて、力検出部ＦＳから出力される６つの出力値のうち３つの回転モーメントのそれぞれに応じた出力値を用いない処理を行っている。これにより、ロボット制御装置３０は、第１動作及び第２動作のそれぞれに係る判定において、第１指部Ｆ１及び第２指部Ｆ２それぞれの剛性に基づく誤差によって精度が悪くなってしまうことを抑制することができる。
【０１１８】
また、上記において説明したロボット２０は、単腕ロボットに代えて、複腕ロボットであってもよい。複腕ロボットは、２本以上の腕を備えるロボットである。当該２本以上の腕は、例えば、２本以上のアームＡである。ここで、複腕ロボットのうち、２本の腕を備えるロボットは、双腕ロボットとも称される。すなわち、ロボット２０は、２本の腕を備える双腕ロボットであってもよく、３本以上の腕を備える複腕ロボットであってもよい。当該２本の腕は、例えば、２本のアームＡである。当該３本以上の腕は、例えば、３本以上のアームＡである。また、ロボット２０は、スカラロボット（水平多関節ロボット）、直交座標ロボット、円筒型ロボット等の他のロボットであってもよい。直交座標ロボットは、例えば、ガントリロボットである。
【０１１９】
以上のように、ロボット制御装置（この一例において、ロボット制御装置３０）は、基部（この一例において、基部ＥＢ）と、基部に対して移動可能に設けられた第１指部（この一例において、第１指部Ｆ１）と、基部に設けられた第２指部（この一例において、第２指部Ｆ２）と、基部に対する第１指部の位置を検出する第１位置検出部（この一例において、第１位置検出部ＥＣ１）と、を有する把持部（この一例において、エンドエフェクターＥ）と、アーム（この一例において、アームＡ）と、把持部とアームとの間に設けられた力検出部（この一例において、力検出部ＦＳ）と、を備えたロボット（この一例において、ロボット２０）を制御するロボット制御装置であって、第１指部を物体（この一例において、物体Ｏ）に接触させ、力検出部から出力される出力値が所定の第１閾値以上となるまで第１指部を物体に付勢させる第１動作を行わせ、第１動作の後、力検出部から出力される出力値が第１閾値以上である状態を維持し、第１指部とアームとを移動させ、物体に第１指部と第２指部とを接触させる第２動作を行わせ、第２動作において、力検出部から出力される出力値が第１閾値よりも小さい所定の第２閾値よりも小さくなったとき、第１位置検出部から出力される出力値に応じた値と、予め決められた第１値と、の差異が所定の範囲内である場合、物体が所定の状態で第１指部と第２指部とによって把持されていると判定する。これにより、ロボット制御装置は、第１指部と第２指部とによって物体を所定の状態で精度よくロボットに把持させることができる。
【０１２０】
また、ロボット制御装置では、所定の状態は、把持部に対する物体の位置が所定の位置と一致している状態、又は、把持部に対する物体の姿勢が所定の姿勢と一致している状態である、構成が用いられてもよい。
【０１２１】
また、ロボット制御装置では、第２指部は、基部に対して移動可能であって、把持部は、基部に対する第２指部の位置を検出する第２位置検出部（この一例において、第２位置検出部ＥＣ２）を更に有し、第１位置検出部から出力される出力値と、第２位置検出部から出力される出力値と、に応じた値と、第１値と、の差異が所定の範囲内である場合、物体が所定の状態で第１指部と第２指部とによって把持されていると判定する、構成が用いられてもよい。
【０１２２】
また、ロボット制御装置では、第２動作をロボットに行わせる際、物体に対してアーム、又は、第２指部を移動させることで第２指部を第１指部に近づく方向に移動させ、物体に第１指部と第２指部とを接触させる、構成が用いられてもよい。
【０１２３】
また、ロボット制御装置では、第２動作において、力検出部から出力される出力値がゼロになったとき、物体が前記所定の状態で前記第１指部と前記第２指部とによって把持されているか否かの判定を行う、構成が用いられてもよい。
【０１２４】
また、ロボット制御装置では、第１位置検出部から出力される出力値に応じた値と、第１値と、は、距離を示す値である、構成が用いられてもよい。
【０１２５】
また、ロボット制御装置では、把持部は、基部に対して第１指部を動かす駆動部と、駆動部に加わる負荷を検出する負荷検出部と、を更に有し、第２動作において、力検出部から出力される出力値が第２閾値よりも小さくなったとき、負荷検出部から出力される出力値に応じた値と、第１位置検出部から出力される出力値に応じた値と、第１値と、予め決められた第２値と、に基づいて、物体が前記所定の状態で前記第１指部と前記第２指部とによって把持されているか否かの判定を行う、構成が用いられてもよい。
【０１２６】
また、ロボット制御装置は、把持部（この一例において、エンドエフェクターＥ）と、把持部が設けられた可動部（この一例において、マニピュレーターＭ）と、把持部と可動部との間に設けられた力検出部とを備えたロボットを制御するロボット制御装置であって、把持部は、基部と、基部に対して移動可能に設けられた第１指部と、第１指部が移動可能な方向に沿って第１指部と対向するように基部に設けられた突出部位と、基部に対する第１指部の位置を検出する第１位置検出部とを有し、ロボット制御装置は、第１指部を物体に接触させ、力検出部から出力される出力値が予め決められた第１閾値以上となるまで第１指部を物体に押し付ける第１動作をロボットに行わせ、ロボットに第１動作を行わせた後、力検出部から出力される出力値を保持しながら物体に対する突出部位の位置を変化させて物体を第１指部と突出部位とによって把持させる第２動作をロボットに行わせ、第２動作において力検出部から出力される出力値が予め決められた第２閾値よりも小さくなった場合、第１位置検出部から出力される出力値に応じた値と、所定の値とが一致しているか否かによって、予め決められた状態で物体が第１指部と突出部位とによって把持されているか否かの判定を行う。これにより、ロボット制御装置は、第１指部と突出部位とによって物体を予め決められた状態で精度よく把持することができる。
【０１２７】
また、ロボット制御装置では、予め決められた状態は少なくとも、把持部に対する物体の位置が予め決められた位置と一致している状態である、構成が用いられてもよい。
【０１２８】
また、ロボット制御装置では、予め決められた状態は少なくとも、把持部に対する物体の姿勢が予め決められた姿勢と一致している状態である、構成が用いられてもよい。
【０１２９】
また、ロボット制御装置では、突出部位は、基部に対して移動不可能に設けられた冶具である、構成が用いられてもよい。
【０１３０】
また、ロボット制御装置では、突出部位は、基部の一部である、構成が用いられてもよい。
【０１３１】
また、ロボット制御装置では、突出部位は、第１指部と異なる指部であって基部に対して移動可能に設けられた第２指部であり、把持部は、第２指部の位置を検出する第２位置検出部を更に有する、構成が用いられてもよい。
【０１３２】
また、ロボット制御装置は、第１位置検出部から出力される出力値と第２位置検出部から出力される出力値とに応じた値と、所定の値とが一致しているか否かによって、予め決められた状態で物体が第１指部と第２指部とによって把持されているか否かの判定を行う、構成が用いられてもよい。
【０１３３】
また、ロボット制御装置は、第２動作を前記ロボットに行わせる際、物体に対して基部と第２指部とのうちいずれか一方又は両方を動かし、第２指部が第１指部に近づく方向に第２指部を移動させ、物体を第１指部と第２指部とによって把持させる、構成が用いられてもよい。
【０１３４】
また、ロボット制御装置では、第１指部は、基部に対して第１方向に移動し、第２指部は、基部に対して第１方向と逆の方向である第２方向に移動する、構成が用いられてもよい。
【０１３５】
また、ロボット制御装置は、第２動作において、物体に対して第２指部と基部とのそれぞれを動作させ、力検出部から出力される出力値を保持しながら物体に応じた軸と、把持部に応じた軸とを一致させるとともに物体を第１指部と第２指部とによって把持させる、構成が用いられてもよい。
【０１３６】
また、ロボット制御装置は、予め決められた状態で物体が第１指部と突出部位とによって把持されていると判定した場合、第１動作、第２動作のそれぞれと異なる第３動作をロボットに行わせ、予め決められた状態と異なる状態で物体が第１指部と突出部位とによって把持されていないと判定した場合、第１動作、第２動作、第３動作のそれぞれと異なる第４動作をロボットに行わせる、構成が用いられてもよい。
【０１３７】
また、ロボット制御装置では、第３動作は、物体に対して作業をロボットが行う動作であり、第４動作は、物体を第１指部と突出部位とによって把持し直す動作である、構成が用いられてもよい。
【０１３８】
また、ロボット制御装置は、第２動作において力検出部から出力される出力値が第２閾値よりも小さい第３閾値以下となった場合、予め決められた状態で物体が第１指部と突出部位とによって把持されているか否かの判定を行う、構成が用いられてもよい。
【０１３９】
また、ロボット制御装置では、第３閾値は、ゼロである、構成が用いられてもよい。
【０１４０】
また、ロボット制御装置では、第１位置検出部から出力される出力値に応じた値と、所定の値とのそれぞれは、長さを示す値である、構成が用いられてもよい。
【０１４１】
また、ロボット制御装置では、力検出部から出力された出力値は、並進力を示す値である、構成が用いられてもよい。
【０１４２】
また、ロボット制御装置では、物体は、弾性体であり、物体の長さのうち第１指部と突出部位とが対向している方向に沿った長さは、第１指部と突出部位とによって把持された場合において変化する、構成が用いられてもよい。
【０１４３】
また、ロボット制御装置では、把持部は、基部に対して第１指部を動かす駆動部と、駆動部に加わる負荷を検出する負荷検出部とを更に有し、ロボット制御装置は、第２動作において力検出部から出力される出力値が第２閾値よりも小さくなった場合、負荷検出部から出力される出力値と、第１位置検出部から出力される出力値に応じた値と、所定の値とに基づいて、予め決められた状態で物体が第１指部と突出部位とによって把持されているか否かの判定を行う、構成が用いられてもよい。
【０１４４】
また、ロボット制御装置では、所定の値を示す情報（この一例において、第１情報、第２情報のそれぞれ）が記憶されたメモリーを備え、ロボット制御装置は、メモリー（この一例において、メモリー３２）から当該情報を読み出す、構成が用いられてもよい。
【０１４５】
以上、この発明の実施形態を、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない限り、変更、置換、削除等されてもよい。
【０１４６】
また、以上に説明した装置における任意の構成部の機能を実現するためのプログラムを、コンピューター読み取り可能な記録媒体に記録し、そのプログラムをコンピューターシステムに読み込ませて実行するようにしてもよい。当該装置は、例えば、ロボット制御装置３０等である。なお、ここでいう「コンピューターシステム」とは、ＯＳ（Operating  System）や周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ（Compact  Disk）−ＲＯＭ等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリー（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【０１４７】
また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピューターシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピューターシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記のプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、上記のプログラムは、前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル、差分プログラム等であってもよい。
【符号の説明】
【０１４８】
１…ロボットシステム、２０…ロボット、３０…ロボット制御装置、３１…プロセッサー、３２…メモリー、３４…通信部、３６…制御部、３６１…取得部、３６３…判定部、３６５…ロボット制御部、Ａ…アーム、Ｂ…基台、Ｅ…エンドエフェクター、ＥＢ…基部、ＥＣ１…第１位置検出部、ＥＣ２…第２位置検出部、Ｆ１…第１指部、Ｆ２…第２指部、ＦＣ…力検出座標系、ＦＳ…力検出部、ＬＤ１…第１負荷検出部、ＬＤ２…第２負荷検出部、Ｍ…マニピュレーター、ＭＴ１…第１駆動部、ＭＴ２…第２駆動部、Ｏ…物体、ＲＣ…ロボット座標系、Ｔ…制御点
【図１】
2019202360.tif 000003
【図２】
2019202360.tif 000004
【図３】
2019202360.tif 000005
【図４】
2019202360.tif 000006
【図５】
2019202360.tif 000007
【図６】
2019202360.tif 000008
【図７】
2019202360.tif 000009
【図８】
2019202360.tif 000010
【図９】
2019202360.tif 000011
【図１０】
2019202360.tif 000012
【図１１】
2019202360.tif 000013
【図１２】
2019202360.tif 000014
【図１３】
2019202360.tif 000015
【図１４】
2019202360.tif 000016