(57)【要約】      （修正有）【課題】物体に衝撃を与えることなく、物体を置くことができるロボットハンド装置を提供する。【解決手段】  ロボットハンドで物体を把持し、把持した物体を所定の場所に置くロボットハンド装置であって、ロボットハンドで把持した物体を置くときに、物体を置く場所から受ける反力が閾値を超えた場合にロボットハンドから物体を離す制御を行う。また、物体を把持する力とロボットハンドの姿勢から物体の重量を推定し、この推定された重量と把持力の差から演算により反力をもとめる。【選択図】図１０
2005161507.tif 000002
【特許請求の範囲】
【請求項１】
ロボットハンドで把持した物体を置くときに、前記物体を置く場所から受ける反力が閾値を超えた場合に前記ロボットハンドから前記物体を離す制御を行うことを特徴とするロボットハンド装置。
【請求項２】
前記物体の重量と前記ロボットハンドにおける物体を把持する力との差から前記反力を演算することを特徴とする請求項１に記載するロボットハンド装置。
【請求項３】
前記ロボットハンドにおける物体を把持する力と前記ロボットハンドの姿勢に基づいて物体の重量を推定することを特徴とする請求項１又は請求項２に記載するロボットハンド装置。
【請求項４】
前記閾値を物体の重量に比例した値とすることを特徴とする請求項１〜請求項３のいずれか１項に記載するロボットハンド装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、物体に衝撃を与えることなく、把持した物体を置くことができるロボットハンド装置に関する。
【背景技術】
【０００２】
ロボットハンド装置は、各種産業用ロボットや人型ロボット等として様々な分野で利用されてようになってきている。ロボットハンド装置は、所定の形状を有する物体を所定の方向から把持するものが主流であった。近年、ロボットハンド装置には、多指ロボットハンドを有するものが開発され、多自由度を有する多指ロボットハンドにより任意の形状の物体を任意の方向から把持することが可能となった（特許文献１参照）。
【特許文献１】特開２００１−２７７１７５号公報
【特許文献２】特開２００１−３１０２８４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、任意の形状の物体を把持した場合や任意の方向から物体を把持した場合、その物体を床等に置くときに、多指ロボットハンドから物体を離すタイミングの判定が非常に難しい。そのため、タイミングが早過ぎた場合には物体が床に落下し、あるいは、タイミングが遅い場合には物体を床に押し付けることになるので、物体に対して衝撃を与えることなり、物体を損傷する恐れがある。
【０００４】
そこで、本発明は、物体に衝撃を与えることなく、物体を置くことができるロボットハンド装置を提供することを課題とする。
【課題を解決するための手段】
【０００５】
本発明に係るロボットハンド装置は、ロボットハンドで把持した物体を置くときに、物体を置く場所から受ける反力が閾値を超えた場合にロボットハンドから物体を離す制御を行うことを特徴とする。
【０００６】
このロボットハンド装置では、把持した物体を置く場合、物体が受ける反力が閾値を超えるか否かを判定し、閾値を超えた場合にロボットハンドから物体を離す制御を行う。このように、このロボットハンド装置では、物体が受ける反力に基づいて物体を離すタイミングを判定しているので、物体の形状や物体を把持する方向に関係なく、物体を置く最適なタイミングを決定することができる。そのため、タイミングが早過ぎて物体が落下したりあるいはタイミングが遅過ぎて物体を把持した状態で置く場所に押し付けるようなことはなく、物体に衝撃を与えることなく物体を置くことができる。
【０００７】
本発明の上記ロボットハンド装置では、物体の重量とロボットハンドにおける物体を把持する力との差から反力を演算する構成としてもよい。
【０００８】
このロボットハンド装置では、反力を物体の重量とロボットハンドにおける把持している力との差から演算によって求め、この演算によって求めた反力が閾値を超えた場合に物体を離す制御を行う。したがって、このロボットハンド装置は、簡単に反力を求めることができ、反力を実際に検出する手段がなくても離すタイミングを判定できる。
【０００９】
本発明の上記ロボットハンド装置では、ロボットハンドにおける物体を把持する力とロボットハンドの姿勢に基づいて物体の重量を推定する構成としてもよい。
【００１０】
このロボットハンド装置では、物体の重量をロボットハンドにおける把持している力とロボットハンドの姿勢に基づいて推定するので、物体の形状や物体を把持する方向に関係なく、物体の重量を検出することができる。したがって、このロボットハンド装置は、物体の重量を把持する前に予め重量を測定したり、あるいは、物体の重量を実際に検出する手段を具備する必要がない。
【００１１】
本発明の上記ロボットハンド装置では、閾値を物体の重量に比例した値とすると好適である。
【００１２】
このロボットハンド装置では、物体の重量が重いほど反力が大きくなるので、閾値を物体の重量に比例した値とすることによって、離すタイミングを物体の重量に応じて高精度に判定できる。
【発明の効果】
【００１３】
本発明によれば、物体に衝撃を与えることなく、把持した物体を置くことができる。
【発明を実施するための最良の形態】
【００１４】
以下、図面を参照して、本発明に係るロボットハンド装置の実施の形態を説明する。
【００１５】
本実施の形態では、本実施の形態に係るロボットハンド装置を、任意の形状及び任意の重量の物体を把持し、把持した物体を所定の床面に置くロボットハンド装置に適用する。本実施の形態に係るロボットハンド装置は、アームの先端にロボットハンドが取り付けられ、ロボットハンドが４本の指を有している。
【００１６】
図１及び図２を参照して、ロボットハンド装置１の構成について説明する。図１は、本実施の形態に係るロボットハンド装置の構成図である。図２は、本実施の形態に係るロボットハンド装置のロボットハンドの構造図である。
【００１７】
ロボットハンド装置１は、重量及び形状が未知の物体を指先で把持し、把持した物体を所定の床面に置く。特に、ロボットハンド装置１では、物体の重量を推定し、その重量の推定値を用いることによって、物体を床面に静かに置くことができる。このロボットハンド装置１は、主に、アーム２、ロボットハンド３、カメラ４、ロータリエンコーダ５、６軸力センサ６及び制御装置７を備えている。
【００１８】
アーム２は、複数の関節と関節間をつなぐリンクからなる。各関節は、回転関節であり、モータ２１で構成される。モータ２１は、モータドライバ２０から駆動電流ＤＩが供給され、駆動電流ＤＩに応じて所定方向に所定角度回転駆動する。モータドライバ２０は、制御装置７から指令信号ＣＳが送信され、この指令信号ＣＳで指令された回転方向及び角度に応じて駆動電流ＤＩを発生したり、あるいは、指令信号ＣＳの停止指令に応じて駆動電流ＤＩの発生を停止する。
【００１９】
ロボットハンド３は、親指３ａ、示指３ｂ、中指３ｃ、薬指３ｄの４本指からなる（図２参照）。親指３ａは、４つのモータ３１，・・・を備え、４自由度である。他の３本の指３ｂ〜３ｄは、３つのモータ３１，・・・を備え、３自由度である。さらに、３本の指３ｂ〜３ｄは、連動関節３２を備えているので、関節数としては４つである。ロボットハンド３全体としての自由度は、１３である。モータ３１は、モータ２１と同様に、モータドライバ３０からの駆動電流ＤＩにより回転駆動する。モータドライバ３０は、モータドライバ２１と同様に、制御装置７からの指令信号ＣＳにより駆動電流ＤＩを発生／発生停止する。各指３ａ〜３ｄの指先部分は、曲面形状の弾性体である。なお、図２には、親指３ａについては３つのモータ３１，３１，３１、他の指３ｂ〜３ｄについては２つのモータ３１，３１しか描いていないが、６軸力センサ６の裏側にモータがもう一つ設けられている。
【００２０】
カメラ４は、物体の位置、向き、形状等を認識するために、把持する前の物体を撮影し、その画像データを画像信号ＰＳとして制御装置７に送信する。
【００２１】
ロータリエンコーダ５は、アーム２の各関節に設けられ、各関節の回転角を検出する。そして、ロータリエンコーダ５では、その検出した回転角を関節角信号ＡＳとして制御装置７に送信する。ちなみに、ロータリエンコーダの代わりに、ポテンショメータ等で関節角を検出してもよい。
【００２２】
６軸力センサ６は、ロボットハンド３の各指３ａ〜３ｄの根元に設けられ（図２参照）、各指における各軸方向の力の３成分と各軸回りのモーメントの３成分を検出する。そして、６軸力センサ６では、検出した６つの成分からなる６軸力信号ＦＳを制御装置７に送信する。
【００２３】
図３〜図７も参照して、制御装置７について説明する。図３は、ロボット座標系とハンド座標系とを示す図である。図４は、ロボットハンドの姿勢の説明図であり、（ａ）がアームの自由度の構成を示す一例であり、（ｂ）が（ａ）で示すアームの各関節でのリンク座標系、ロボット座標系、ハンド座標系の関係を示す図である。図５は、鉛直方向の指先合力の時間変化を示す図である。図６は、物体重量推定値と床反力閾値との関係を示す図である。図７は、物体を置くときの鉛直方向の指先合力の時間変化を示す図である。
【００２４】
制御装置７は、ＣＰＵ[Central Processing Unit]、ＲＯＭ[Read Only Memory]、ＲＡＭ[Random Access Memory]等からなる電子制御ユニットである。制御装置７では、各検出手段４，５，６から検出信号ＰＳ，ＡＳ，ＦＳを取り入れ、対象の物体を把持し、所定の床面に置くために、モータドライバ２０，・・・及びモータドライバ３０，・・・に指令信号ＣＳを送信してモータ２１，・・・及びモータ３１，・・・の駆動を制御する。特に、制御装置７では、物体の重量を推定するための物体重量推定制御及び物体にショックを与えることなく床面に置くための物体を置く制御を行う。この物体重量推定制御及び物体を置く制御について詳細に説明する。
【００２５】
各制御について説明する前に、制御装置７で用いる座標系について説明しておく。図３に示すように、物体Ｏは４本の指３ａ〜３ｄの指先で把持され、アーム２によって持ち上げられ、ロボットハンド３がロボットハンド装置１のベースに対して任意の姿勢となる。ロボットハンド３の座標系をハンド座標系Σｈ（Ｘｈ、Ｙｈ，Ｚｈ）Ｔと定義し、ロボットハンド装置１のベースの座標系をロボット座標系ΣＲ（ＸＲ、ＹＲ，ＺＲ）Ｔと定義する。このハンド座標系Σｈにおいて、物体Ｏを把持しているときの４本の指３ａ〜３ｄの各指先力の合力（Ｆｘｈ，Ｆｙｈ，Ｆｚｈ）Ｔが定義される。
【００２６】
図４に示す７つの関節（モータ２１）で構成されるアーム２の例により、アーム２のリンク座標系について説明する。図４（ａ）に示すように、アーム２は、７自由度である。図４（ｂ）に示すように、ロボット座標系ΣＲに対して、アーム２の基準の座標系Σ０（Ｘ０、Ｙ０，Ｚ０）Ｔが定義される。そして、各関節にリンク座標系Σ１（Ｘ１、Ｙ１，Ｚ１）Ｔ〜Σ７（Ｘ７、Ｙ７，Ｚ７）Ｔが定義され、リンク座標系Σ１〜Σ７のＺ軸が回転軸となるように設定される。終端の座標系ΣＥ（ＸＥ、ＹＥ，ＺＥ）Ｔは、ハンド座標系Σｈである。アーム２では、並進移動を考慮せず、回転運動だけを考慮すると、リンク座標系Σｉ−１から次のリンク座標系Σｉへの回転行列Ｔｉ−１，ｉは、式（１）によって表すことができる。さらに、ロボット座標系ΣＲからハンド座標系Σｈへの回転行列ＴＲ，ｈは、式（２）によって表すことができる。
【００２７】
【数１】
2005161507.tif 000003
【００２８】
式（１）におけるφｉ―１は、Ｘｉ−１軸回りの回転であり、リンク座標系Σｉ−１とリンク座標系Σｉとの間で決まる角度（定数）である。θｉは、回転後のＺｉ−１軸（すなわち、Ｚｉ軸）回りの回転角であり、ロータリエンコーダ５で検出される関節角である。したがって、回転行列ＴＲ，ｈは、各関節における関節角から求めることができる。この回転行列ＴＲ，ｈが、ロボットハンド３の姿勢（ハンド姿勢）を示す。
【００２９】
制御装置７における物体重量推定制御について説明する。物体の重量を知ることによって、ロボットハンド３によって物体を把持するときの最適な把持力を設定できるとともに、物体を置くときの物体を離すタイミングを判定できる。そこで、物体重量推定制御では、指先合力及びハンド姿勢に基づいて、物体の重量を高精度に推定する。
【００３０】
制御装置７では、関節角信号ＡＳによる各関節角を用いて、式（２）により回転行列ＴＲ，ｈを求める。また、制御装置７では、６軸力信号ＦＳによる各指における６成分を用いてハンド座標系Σｈにおける指先合力（Ｆｘｈ，Ｆｙｈ，Ｆｚｈ）Ｔを求める。そして、制御装置７では、式（３）により、ロボット座標系ΣＲにおける指先合力（ＦｘＲ，ＦｙＲ，ＦｚＲ）Ｔを求める。
【００３１】
【数２】
2005161507.tif 000004
【００３２】
ロボット座標系ΣＲにおける指先合力（ＦｘＲ，ＦｙＲ，ＦｚＲ）ＴにおけるＦｚＲは、鉛直方向の指先合力である。理論的には、物体の重量ＷＯは、この鉛直方向の指先合力ＦｚＲを用いて、式（４）によって求めることができる。
【００３３】
【数３】
2005161507.tif 000005
【００３４】
式（４）におけるＷｆは、指全体の自重（指自重）であり、既知である。
【００３５】
一般的には、把持する前の無荷重状態で、センサのドリフトの影響を無くすために、６軸力センサ６のオフセット除去処理を１回行う必要がある。このオフセット処理直後の６軸センサ６の出力値は０になり、指自重による６軸力センサ６の各軸方向の分力も０になり、キャンセルされる。したがって、アーム２の移動によりハンド姿勢（回転行列ＴＲ，ｈ）が変わると、指自重による６軸力センサ６の各軸方向の分力も変わる。つまり、ハンド姿勢により、鉛直方向の指先合力ＦｚＲが変わってしまう。したがって、任意のハンド姿勢での物体の重量を推定するためには、この指自重の影響を補正しなければならない。
【００３６】
そこで、制御装置７では、６軸力センサ６のオフセット除去を行うときに、キャンセルされた指自重の各軸方向の成分を求める。具体的には、そのときのハンド姿勢を示す回転行列をＴ’Ｒ，ｈとすると、指自重Ｗｆのロボット座標系ΣＲにおける各軸方向成分（ＷｘＲ，ＷｙＲ，ＷｚＲ）Ｔとセンサ座標系（すなわち、ハンド座標系Σｈ）における各軸方向成分（Ｗｘｈ，Ｗｙｈ，Ｗｚｈ）Ｔとの関係は、式（５）によって表すことができる。さらに、式（５）から、センサ座標系における各軸方向成分（Ｗｘｈ，Ｗｙｈ，Ｗｚｈ）は、式（６）によって表すことができる。
【００３７】
【数４】
2005161507.tif 000006
【００３８】
制御装置７では、ロータリエンコーダ５からオフセット処理時の関節角信号ＡＳを取り入れ、その関節角を用いてオフセット処理時のハンド姿勢である回転行列Ｔ’Ｒ，ｈを求める。そして、制御装置７では、回転行列Ｔ’Ｒ，ｈの成分Ｔ３１，Ｔ３２，Ｔ３３を用いて、式（６）から指自重のキャンセルされた各軸方向成分（Ｗｘｈ，Ｗｙｈ，Ｗｚｈ）Ｔを求める。式（３）に対して、この各軸方向成分（Ｗｘｈ，Ｗｙｈ，Ｗｚｈ）Ｔを用いて指自重の影響を補正すると、式（７）となる。
【００３９】
【数５】
2005161507.tif 000007
【００４０】
式（７）では、回転行列Ｔ”Ｒ，ｈはオフセット処理後の任意のハンド姿勢であり、（Ｆｘｈ，Ｆｙｈ，Ｆｚｈ）Ｔはオフセット処理後のハンド座標系Σｈにおける指先合力であり、（ＦｘＲ，ＦｙＲ，ＦｚＲ）Ｔはオフセット処理後のロボット座標系ΣＲにおける指先合力である。制御装置７では、ロータリエンコーダ５からオフセット処理後の関節角信号ＡＳを取り入れ、その関節角を用いてオフセット処理後の回転行列Ｔ”Ｒ，ｈを求める。さらに、制御装置７では、６軸力センサ６からオフセット処理後の６軸力信号ＦＳを取り入れ、各指の６成分からオフセット処理後のハンド座標系Σｈにおける指先合力（Ｆｘｈ，Ｆｙｈ，Ｆｚｈ）Ｔを求める。そして、制御装置７では、式（７）により、オフセット処理後のロボット座標系ΣＲにおける指先合力（ＦｘＲ，ＦｙＲ，ＦｚＲ）Ｔを求める。
【００４１】
この式（７）によって求めた鉛直方向の指先合力ＦｚＲには、指自重の成分が含まれている。ロボット座標系ΣＲにおいて、指の自重力は常にＺＲ軸の負方向に沿うので、物体重量の推定値ＷＯは式（８）によって求めることができる。
【００４２】
【数６】
2005161507.tif 000008
【００４３】
式（８）では、ＦｚＲは常に負値であり、ＷＯとＷｆは常に正値である。制御装置７では、式（７）から求めた鉛直方向の指先合力ＦｚＲを用いて、式（８）から物体重量の推定値ＷＯを求める。実際、６軸力センサ６やロータリエンコーダ５のノイズの影響によってサンプリング毎にＷＯの値が変わるので、所定時間（例えば、１秒間）で求めたＷＯを平均化し、その平均値を物体の重量の推定値として用いる。ちなみに、６軸力センサが指の根元以外に設けられた場合でも、その６軸力センサより先の部分の重量を上記と同様の方法でキャンセルすることができる。
【００４４】
次に、制御装置７における物体を置く制御について説明する。物体を置く場合、ロボットハンド３がどのタイミングで物体を離すかが重要となる。例えば、離すのが早過ぎると、物体が床に落下し、損傷する恐れがある。逆に、離すのが遅すぎると、物体が床に当ってからも置く動作を続けるので、物体を床に押し付ける力によって物体を損傷する恐れがある。したがって、衝撃を与えることなく、物体を床に置くためには、物体が床に当るか否かの状態を見極める必要がある。そこで、物体を置く制御では、床からの反力を物体の重量の推定値に基づいてリアルタイムに求め、その床反力を監視することによって離すタイミングを高精度に判定する。
【００４５】
物体を置く動作を開始すると、制御装置７では、ロータリエンコーダ５からの関節角信号ＡＳ及び６軸力センサ６からの６軸力信号ＦＳを取り入れ、式（７）により、リアルタイムにロボット座標系ΣＲにおける鉛直方向の指先合力ＦｚＲを求める。床反力は物体が床に接触すると発生するので、このリアルタイムに求める鉛直方向の指先合力ＦｚＲを用いて床反力を求める。式（９）に示すように、物体の重量の推定値ＷＯとある時点での鉛直方向の指先合力ＦｚＲの差により床反力Ｆを定義する。
【００４６】
【数７】
2005161507.tif 000009
【００４７】
式（９）では、鉛直方向の下向きを正方向としている。制御装置７では、予め求めている物体重量の推定値ＷＯ及びリアルタイムに求めている鉛直方向の指先合力ＦｚＲに基づいて、式（９）によりリアルタイムに床反力Ｆを求める。
【００４８】
理論的には、床反力Ｆが０のときには物体が床に接触しない状態であり、床反力Ｆが０より大きくなると物体が床に接触した状態と判断することができる。しかし、実際には、図５に示すように、センサにおけるノイズの影響により、制御装置７で求めた鉛直方向の指先合力ＦｚＲは変動する。したがって、この鉛直方向の指先合力ＦｚＲは、物体が床に接触するか否かの境界において、物体の重量の推定値ＷＯ前後で変動する。そのため、床反力Ｆが０より大きくなっても、必ずしも、物体が床に接触しているとは限らない。
【００４９】
制御装置７では、このセンサのノイズの影響によって物体を離すタイミングが誤判定するのを防止するために、最適な床反力の閾値を設定する。この床反力閾値を一定値とした場合、重量が異なる全ての物体に適用できない。また、床反力閾値を物体の重量に比例させて設定した場合、物体の重量が軽すぎると、その閾値が鉛直方向の指先合力ＦｚＲの変動幅Ａ（最大値と最小値との差）に含まれる可能性がある（図５参照）。そこで、物体が軽い場合、床反力閾値が小さくなり過ぎないように、変動幅Ａに応じて設定する。一方、物体が重い場合、床反力は物体の重量に応じて大きくなるので、物体の重量に応じて設定する。具体的には、式（１０）に示すように、床反力閾値を、物体重量の推定値ＷＯがαＡ／βより小さい場合には変動幅Ａにαを乗算した値とし、物体重量の推定値ＷＯがαＡ／β以上の場合には物体重量の推定値ＷＯにβを乗算した値とする。
【００５０】
【数８】
2005161507.tif 000010
【００５１】
図６には、この式（１０）による物体重量の推定値ＷＯと床反力閾値との関係を示しており、閾値は、ＷＯがαＡ／βより小さい領域では一定値となり、ＷＯがαＡ／β以上の領域ではＷＯに比例して増加する。
【００５２】
制御装置７では、床反力閾値を設定するために、リアルタイムに求めている鉛直方向の指先合力ＦｚＲを１秒間モニタリングし、その１秒間における最大値と最小値を抽出し、その最大値と最小値との差Ａ（変動幅）を求める。そして、制御装置７では、この変動幅Ａと予め求めている物体重量の推定値ＷＯに基づいて、式（１０）により床反力閾値を設定する。なお、１秒間モニタリングするのは、置く動作が１秒以上要することを考慮し、出来る限り変動幅Ａを高精度に検出するためである。
【００５３】
そして、制御装置７では、リアルタイムに求めている床反力Ｆと床反力閾値とを比較する。床反力Ｆが床反力閾値以下の場合、制御装置７では、アーム２を駆動し続け、物体に対して一定速度で置く動作を継続する。床反力Ｆが床反力閾値を超えると、制御装置７では、置く動作を終了する。置く動作を終了する場合、制御装置７では、アーム２を停止（各関節のモータ２１，・・・を停止）するための指令信号ＣＳをモータドライバ２０に送信し、アーム２が停止後、ロボットハンド３による物体の把持を解除する（各モータ３１，・・・を回転駆動する）ための指令信号ＣＳをモータドライバ３０に送信する。図７に示すように、物体が床に接触すると、延長方向の指先合力ＦｚＲが減少するので、床反力Ｆが増加し、床反力Ｆが床反力閾値を越える。その超えた時点でアーム２を停止させ、アーム２停止後、直ちに、ロボットハンド３の把持を解除する。
【００５４】
図１〜図２を参照して、ロボットハンド装置１における動作を説明する。まず、ロボットハンド装置１における物体を把持し、物体を置くまでの一連の動作を図８のフローチャートに沿って説明する。さらに、制御装置７における物体重量推定制御を図９のフローチャートに沿って説明し、物体を置く制御を図１０のフローチャートに沿って説明する。図８は、図１のロボットハンド装置の動作を示すフローチャートである。図９は、図１の制御装置における物体重量推定制御を示すフローチャートである。図１０は、図１の制御装置における物体を置く制御を示すフローチャートである。
【００５５】
まず、ロボットハンド装置１における一連の動作について説明する。制御装置７では、カメラ４からの画像信号ＰＳを取り入れ、画像認識により把持する物体の位置、向き、形状等を認識する（Ｓ１）。そして、制御装置７では、物体の向きと形状から物体の把持方法（把持姿勢や目標把持力）を決定し、さらに、物体の位置から目標把持位置を決定する（Ｓ２）。続いて、制御装置７では、逆運動解析により、各指３ａ〜３ｄの目標姿勢及びアーム２の目標姿勢（各関節における目標関節角）を演算する（Ｓ３）。
【００５６】
そして、制御装置７では、関節毎に、目標関節角に従って時系列の関節角度指令を作成し、その関節角度指令に応じた指令信号ＣＳをモータドライバ２０に送信してモータ２１を駆動する（Ｓ４）。すると、アーム２が、駆動し、物体を把持するための位置までロボットハンド３を移動させる。この把持する直前に、制御装置７では、アーム２を一旦停止させ、６軸力センサ６のオフセット処理を行う。オフセット処理後、制御装置７では、関節毎に、ロボットハンド３を目標把持位置まで移動させるための指令信号ＣＳをモータドライバ２０に送信してモータ２１を駆動する（Ｓ４）。それと同時に、制御装置７では、指毎に、目標把持力で物体を把持するための指令信号ＣＳをモータドライバ３０に送信してモータ３１を駆動する（Ｓ４）。すると、ロボットハンド３が、駆動し、物体を把持する（Ｓ４）。
【００５７】
続いて、制御装置７では、ロボットハンド３による把持制御を継続するとともに、アーム２を持ち上げるための指令信号ＣＳをモータドライバ２０に送信してモータ２１を駆動する（Ｓ５）。すると、アーム２が、駆動し、ロボットハンド３で把持された物体を持ち上げる（Ｓ５）。
【００５８】
次に、制御装置７では、ロボットハンド３による把持制御を継続するとともに、アーム２を停止するための指令信号ＣＳをモータドライバ２０に送信してモータ２１の駆動を停止する（Ｓ６）。すると、アーム２が、停止し、物体を所定の位置で停止させる（Ｓ６）。この停止中、制御装置７では、物体重量を推定する（Ｓ７）。
【００５９】
推定が終了すると、制御装置７では、物体の置く所定の場所の上方まで物体を移動させるための指令信号ＣＳをモータドライバ２０に送信してモータ２１を駆動する（Ｓ８）。すると、アーム２が、駆動し、置く場所の上方まで物体を移動させる（Ｓ８）。さらに、制御装置７では、物体を一定速度で下方に移動させるための指令信号ＣＳをモータドライバ２０に送信してモータ２１を駆動する（Ｓ９）。すると、アーム２が、置く動作を開始し、物体を鉛直方向に沿って一定速度で移動させる（Ｓ９）。
【００６０】
置く動作が開始すると、制御装置７では、置くときに物体に衝撃を与えないために、物体を置くための制御を行い、物体を離すタイミングを判定する（Ｓ１０）。そして、制御装置７では、物体を離すタイミングを判定すると、アーム２を停止させるための指令信号ＣＳをモータドライバ２０に送信してモータ２１の駆動を停止する（Ｓ１１）。すると、アーム２が、停止する（Ｓ１１）。続いて、制御装置７では、指毎に、物体の把持を解除するための指令信号ＣＳをモータドライバ３０に送信してモータ３１を駆動する（Ｓ１１）。すると、ロボットハンド３が物体の把持を解除し、物体を床に置く（Ｓ１１）。
【００６１】
制御装置７における物体重量推定制御について説明する。６軸力センサ６のオフセット処理時に、制御装置７では、各関節におけるロータリエンコーダ５から関節角信号ＡＳを各々読み込み、オフセット処理時のハンド姿勢である回転行列Ｔ’Ｒ，ｈを演算する（Ｓ２０）。さらに、制御装置７では、この回転行列Ｔ’Ｒ，ｈの成分Ｔ３１，Ｔ３２，Ｔ３３に基づいて、式（６）によりキャンセルされた指自重の各軸方向成分（Ｗｘｈ，Ｗｙｈ，Ｗｚｈ）Ｔを演算する（Ｓ２０）。
【００６２】
上記のＳ７の処理時に、制御装置７では、４本の指３ａ〜３ｄの６軸力センサ６から６軸力信号ＦＳを各々読み込み、ハンド座標系Σｈにおける指先合力（Ｆｘｈ，Ｆｙｈ，Ｆｚｈ）Ｔを演算する（Ｓ２１）。続いて、制御装置７では、各関節におけるロータリエンコーダ５から関節角信号ＡＳを各々読み込み、オフセット処理後のハンド姿勢である回転行列Ｔ”Ｒ，ｈを演算する（Ｓ２２）。
【００６３】
そして、制御装置７では、キャンセルされた指自重の各軸方向成分（Ｗｘｈ，Ｗｙｈ，Ｗｚｈ）Ｔ、ハンド座標系Σｈにおける指先合力（Ｆｘｈ，Ｆｙｈ，Ｆｚｈ）及びオフセット処理後のハンド姿勢（回転行列Ｔ”Ｒ，ｈ）に基づいて、式（７）により指自重の影響を補正した鉛直方向の指先合力ＦｚＲを演算する（Ｓ２３）。
【００６４】
最後に、制御装置７では、鉛直方向の指先合力ＦｚＲ及び指自重Ｗｆを用いて、式（８）により物体の重量ＷＯを推定する（Ｓ２４）。
【００６５】
制御装置７における物体を置く制御について説明する。物体を置く動作を開始すると、制御装置７では、一定時間毎に、４本の指３ａ〜３ｄの６軸力センサ６から６軸力信号ＦＳを各々読み込み、式（７）により鉛直方向の指先合力ＦｚＲを演算する。そして、制御装置７では、１秒間における鉛直方向の指先合力ＦｚＲの最大値及び最小値を検出し、変動幅Ａを設定する（Ｓ３０）。さらに、制御装置７では、変動幅Ａ及び物体重量の推定値ＷＯに基づいて、式（１０）により床反力閾値を決定する（Ｓ３１）。
【００６６】
続いて、制御装置７では、一定時間毎に、４本の指３ａ〜３ｄの６軸力センサ６から６軸力信号ＦＳを各々読み込み、式（７）により現在の鉛直方向の指先合力ＦｚＲを演算する（Ｓ３２）。さらに、制御装置７では、現在の鉛直方向の指先合力ＦｚＲ及び物体の重量の推定値ＷＯに基づいて、式（９）により床反力Ｆを演算する（Ｓ３３）。そして、制御装置７では、演算によって求めた床反力Ｆが床反力閾値より大きくなったか否かを判定する（Ｓ３４）。このように、制御装置７では、物体を置く動作中、リアルタイムで床反力を検出し続け、床反力が床反力閾値を超えるか否かによって物体を離すタイミングを判定する。
【００６７】
床反力Ｆが床反力閾値以下の間、制御装置７では、アーム２による物体を一定速度で置く制御を継続し（Ｓ３５）、Ｓ３２の処理に戻る。この場合、床反力Ｆが物体が床に接触したことを示していないので、床反力Ｆを繰り返し求め、床反力Ｆの変化を見極める。
【００６８】
床反力Ｆが床反力閾値より大きくなると、制御装置７では、直ちに、アーム２の駆動を停止させ、さらに、ロボットハンド３による物体の把持を解除させるための制御を行う（Ｓ３６）。すると、物体は、床に静かに置かれる。この場合、床反力Ｆが物体が床に接触したことを示したので、直ちに、物体を置く動作を終了する。
【００６９】
このロボットハンド装置１によれば、物体を置く動作中リアルタイムで求めた床反力が閾値を越えるか否かを判定することによって、物体の形状や物体を把持する方向に関係なく、物体を離す最適なタイミングを判定できる。そのため、物体を早く離して床に落下させたりあるいは物体を遅く離して床に押し付けたりするようなことがないので、物体に衝撃を与えることなく、静かに置くことができる。さらに、ロボットハンド装置１では、物体の重量と鉛直方向の指先合力から床反力を簡単な演算によって求めるので、床反力を検出する手段を必要としない。また、ロボットハンド装置１では、床反力閾値を物体の重量と鉛直方向の指先合力の変動幅に基づいて設定しているので、センサのノイズの影響や物体の重量によって物体を離すタイミングを誤判定することがなく、離すタイミングの判定精度が高い。
【００７０】
さらに、ロボットハンド装置１によれば、指先合力とハンド姿勢に基づいて物体の重量を推定することによって、物体の形状や向き及び把持する方向に関係なく、物体の重量を知ることができる。したがって、ロボットハンド装置１では、物体の重量を予め検出したり、あるいは、物体の重量を直接検出する手段を必要としない。特に、ロボットハンド装置１では、物体の重量を求める際に指自重の影響を補正しているので、高精度に物体の重量を推定することができる。
【００７１】
以上、本発明に係る実施の形態について説明したが、本発明は上記実施の形態に限定されることなく様々な形態で実施される。
【００７２】
例えば、本実施の形態では４本の指を有する多指ロボットハンドに適用したが、４本指以外の多指ロボットハンドや手のひらを有するロボットハンド等の他のロボットハンドにも適用可能である。また、本実施の形態では全体で自由度数が１３のロボットハンドに適用したが、各指の自由度については任意の自由度に適用可能である。
【００７３】
また、本実施の形態では指先で物体を把持する場合に適用したが、手のひら等の手の面で物体を把持する場合にも適用可能であり、その場合には手首に６軸力センサを設け、指先合力の代わりに手の面で物体を把持する力を用いて物体重量の推定や床反力の演算を行う。
【００７４】
また、本実施の形態では重量が未知の物体を対象し、物体の重量を推定する構成としたが、重量が既知の物体を対象とした場合、物体の重量を他の方法によって求めた場合あるいは物体の重量を直接検出した場合でも、その他の方法で取得した物体重量から床反力を演算する構成としてもよい。また、本実施の形態では床反力を演算によって求める構成としたが、床反力を直接検出する等の他の方法によって床反力を取得した場合でも、その他の方法で取得した床反力によって離すタイミングを判定してもよい。また、本実施の形態では閾値を鉛直方向の指先合力の変動幅及び物体の重量の応じて設定する構成としたが、重量が軽い物体を対象としている場合には変動幅のみ応じて設定してもよいし、重量が重い物体を対象としている場合には物体の重量のみに応じて設定してもよいし、あるいは、物体の重量が一定又は変化幅が少ない場合には一定の閾値を用いてもよい。
【図面の簡単な説明】
【００７５】
【図１】本実施の形態に係るロボットハンド装置の構成図である。
【図２】本実施の形態に係るロボットハンド装置のロボットハンドの構造図である。
【図３】ロボット座標系とハンド座標系とを示す図である。
【図４】ロボットハンドの姿勢の説明図であり、（ａ）がアームの自由度の構成を示す一例であり、（ｂ）が（ａ）で示すアームの各関節でのリンク座標系、ロボット座標系、ハンド座標系の関係を示す図である。
【図５】鉛直方向の指先合力の時間変化を示す図である。
【図６】物体重量の推定値と床反力閾値との関係を示す図である。
【図７】物体を置くときの鉛直方向の指先合力の時間変化を示す図である。
【図８】図１のロボットハンド装置の動作を示すフローチャートである。
【図９】図１の制御装置における物体重量推定制御を示すフローチャートである。
【図１０】図１の制御装置における物体を置く制御を示すフローチャートである。
【符号の説明】
【００７６】
１…ロボットハンド装置、２…アーム、３…ロボットハンド、３ａ…親指、３ｂ…示指、３ｃ…中指、３ｄ…薬指、４…カメラ、５…ロータリエンコーダ、６…６軸力センサ、７…制御装置、２０，３０…モータドライバ、２１，３１…モータ、３２…連動関節
【図１】
2005161507.tif 000011
【図２】
2005161507.tif 000012
【図３】
2005161507.tif 000013
【図４】
2005161507.tif 000014
【図５】
2005161507.tif 000015
【図６】
2005161507.tif 000016
【図７】
2005161507.tif 000017
【図８】
2005161507.tif 000018
【図９】
2005161507.tif 000019
【図１０】
2005161507.tif 000020