(57)【要約】【課題】フィンガーの把持力を正確に目標把持力にする。【解決手段】ロボットハンド制御装置５００は、モータ３１２の駆動量を制御する制御基板５０１及びモータドライバ５０２と、フィンガーの剛性値及びワークの剛性値のうち、少なくとも一方の剛性値を格納するメモリ５０３とを備えている。制御基板５０１は、メモリ５０３から剛性値Ｋを読み出すことで剛性値Ｋの入力を受ける処理と、外部コントローラ６００からフィンガーによりワークを把持する際の目標把持力としての把持力指令値Ｆｃの入力を受ける処理とを実行する。また、制御基板５０１は、把持力指令値Ｆｃ及び剛性値Ｋを用いて、フィンガーがワークに接触する時点からフィンガーによりワークを把持する把持力が把持力指令値Ｆｃとなる時点までのモータ３１２の目標駆動量を求める処理を実行する。【選択図】図４
2014046449.tif 000002
【特許請求の範囲】
【請求項１】
ワークを把持する複数のフィンガーと、駆動力を発生するアクチュエータと、前記アクチュエータの駆動力を前記複数のフィンガーに伝達して、前記アクチュエータの駆動量に応じた移動量で前記複数のフィンガーを移動させる駆動力伝達機構と、を有するロボットハンドを制御するロボットハンド制御方法において、
前記フィンガーの剛性値及びワークの剛性値のうち、少なくとも一方の剛性値を設定する剛性値設定工程と、
前記複数のフィンガーによりワークを把持する際の目標把持力を設定する把持力設定工程と、
前記剛性値設定工程にて設定した剛性値、及び前記目標把持力を用いて、前記複数のフィンガーがワークに接触する時点から前記複数のフィンガーによりワークを把持する把持力が前記目標把持力となる時点までの前記アクチュエータの目標駆動量を求める駆動量演算工程と、を備えたことを特徴とするロボットハンド制御方法。
【請求項２】
前記複数のフィンガーによる把持動作を開始する把持動作開始工程と、
前記複数のフィンガーによる把持動作中に前記複数のフィンガーがワークに接触したか否かを判断する判断工程と、
前記判断工程にて前記複数のフィンガーがワークに接触したと判断した場合、前記複数のフィンガーがワークに接触した時点からの前記アクチュエータの駆動量が、前記目標駆動量に収束するように前記アクチュエータを動作させる把持力付与工程と、を備えたことを特徴とする請求項１に記載のロボットハンド制御方法。
【請求項３】
前記目標駆動量に対する許容誤差を設定する許容誤差設定工程を備え、
前記把持力付与工程では、前記アクチュエータの駆動量が前記許容誤差の範囲内に収束するように前記アクチュエータを動作させることを特徴とする請求項２に記載のロボットハンド制御方法。
【請求項４】
前記複数のフィンガーによりワークを把持する動作中の把持力の上限値を設定する上限値設定工程を備え、
前記把持力付与工程では、前記アクチュエータの駆動量に対して前記剛性値設定工程にて設定した剛性値から求まる把持力が、前記上限値を上回った場合には、前記アクチュエータの動作を停止させることを特徴とする請求項２又は３に記載のロボットハンド制御方法。
【請求項５】
前記複数のフィンガーによりワークを把持する動作中の把持力の下限値を設定する下限値設定工程を備え、
前記把持力付与工程では、前記アクチュエータの駆動量に対して前記剛性値設定工程にて設定した剛性値から求まる把持力が、前記下限値を下回った場合には、前記アクチュエータの動作を停止させることを特徴とする請求項２乃至４のいずれか１項に記載のロボットハンド制御方法。
【請求項６】
前記ロボットハンドが、前記アクチュエータの駆動量を検出するエンコーダを有しており、
前記判断工程では、前記エンコーダの検出結果に基づき、前記複数のフィンガーがワークに接触したか否かを判断することを特徴とする請求項２乃至５のいずれか１項に記載のロボットハンド制御方法。
【請求項７】
前記複数のフィンガーがワークに接触すると想定される動作位置を含む前記フィンガーの動作範囲を設定する動作範囲設定工程と、
前記判断工程にて前記複数のフィンガーがワークに接触していないと判断した場合に、前記フィンガーの動作位置が前記動作範囲内であるか否かを判断する動作判断工程と、
前記動作判断工程にて前記フィンガーの動作位置が前記動作範囲を外れたと判断した場合に、把持するワークが無い旨を報知する第１報知工程と、を備えたことを特徴とする請求項６に記載のロボットハンド制御方法。
【請求項８】
ワークの寸法を設定する寸法設定工程と、
前記判断工程にて前記複数のフィンガーがワークに接触したと判断した場合には、前記複数のフィンガーがワークに接触した時点での前記アクチュエータの駆動量に基づき、前記複数のフィンガーに接触しているワークの寸法を演算して、前記寸法設定工程で設定されたワークの寸法と比較する比較工程と、
前記寸法設定工程で設定されたワークの寸法に対する前記比較工程で演算したワークの寸法のずれ量が所定値を超えている場合に、寸法ずれである旨を報知する第２報知工程と、を備えたことを特徴とする請求項２乃至７のいずれか１項に記載のロボットハンド制御方法。
【請求項９】
ワークを把持する複数のフィンガーと、駆動力を発生するアクチュエータと、前記アクチュエータの駆動力を前記複数のフィンガーに伝達して、前記アクチュエータの駆動量に応じた移動量で前記複数のフィンガーを移動させる駆動力伝達機構と、を有するロボットハンドを制御するロボットハンド制御装置において、
前記アクチュエータの駆動量を制御する制御部を備え、
前記制御部は、
前記フィンガーの剛性値及びワークの剛性値のうち、少なくとも一方の剛性値を設定する処理と、
前記複数のフィンガーによりワークを把持する際の目標把持力を設定する処理と、
前記少なくとも一方の剛性値及び前記目標把持力を用いて、前記複数のフィンガーがワークに接触する時点から前記複数のフィンガーによりワークを把持する把持力が前記目標把持力となる時点までの前記アクチュエータの目標駆動量を求める処理と、を実行することを特徴とするロボットハンド制御装置。
【請求項１０】
ロボットアームと、
ワークを把持する複数のフィンガー、駆動力を発生するアクチュエータ、及び前記アクチュエータの駆動力を前記複数のフィンガーに伝達して、前記アクチュエータの駆動量に応じた移動量で前記複数のフィンガーを移動させる駆動力伝達機構を有し、前記ロボットアームの先端に設けられたロボットハンドと、
請求項９に記載のロボットハンド制御装置と、を備えたことを特徴とするロボット装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットハンドを制御するロボットハンド制御方法、ロボットハンド制御装置及びロボット装置に関する。
【背景技術】
【０００２】
近年、カメラ、プリンタ等の小型で複雑な構造をした製品に対して自動化の要求が高まってきている。これらの製品に使用される部品は、小型の精密部品が多く、その形状も多種にわたっている。これに対応するために、ロボットハンドには、小型で簡易な構成で、かつ多種多様なワークを把持できることが要求されている。そして、適正な把持力でワークを把持することが求められている。
【０００３】
そこで、従来、力センサを用いて把持力を検出する方法（特許文献１参照）と、力センサを用いずに把持力を推定する方法（特許文献２参照）とが提案されている。
【０００４】
特許文献１に開示されたロボットハンドでは、モータの駆動により移動する直動部材とワークを把持するための把持部材との間に弾性部材が設けられており、この弾性部材に加わる力と、把持部材に加わる把持力とが一致する構成となっている。これを利用して、把持部材に把持力が加わるとき、弾性部材の変位を、力センサとしての変位センサで検出し、弾性部材に加わる力に換算することで、把持力の検出を行っている。
【０００５】
また、特許文献２で開示されている把持力制御装置では、力センサなどを用いず、モータの制御に工夫を加えて把持力を推定している。この制御では、モータの駆動電流と速度を入力値として、外乱推定オブザーバからモータの出力トルクを推定し、予め測定した摩擦係数から求まる摩擦力を差し引くことで、把持力を推定している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１１−１９４５２３号公報
【特許文献２】特開２００２−１７８２８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記特許文献１に記載の技術では、弾性部材、変位センサ、及びそれらを配置するための構造部材が余計に必要になるため、ロボットハンドのハンド本体が大型化してしまう。さらに、ハンド本体の重量が増加することで、フィンガーを駆動する駆動用モータも大型化せざるを得ない。
【０００８】
これに対し、上記特許文献２に記載の技術では、上記特許文献１のようにロボットハンドに力センサを設けていないので、ロボットハンドを小型化することは可能である。しかしながら、上記特許文献２に記載の技術では、経年変化等で摩擦係数が変化することがあり、摩擦係数が変化した場合、モータ駆動電流に対する把持力が変化するため、正確な把持力を推定することができない。
【０００９】
そこで、本発明は、フィンガーの把持力を正確に目標把持力にすることを目的とするものである。
【課題を解決するための手段】
【００１０】
本発明は、ワークを把持する複数のフィンガーと、駆動力を発生するアクチュエータと、前記アクチュエータの駆動力を前記複数のフィンガーに伝達して、前記アクチュエータの駆動量に応じた移動量で前記複数のフィンガーを移動させる駆動力伝達機構と、を有するロボットハンドを制御するロボットハンド制御方法において、前記フィンガーの剛性値及びワークの剛性値のうち、少なくとも一方の剛性値を設定する剛性値設定工程と、前記複数のフィンガーによりワークを把持する際の目標把持力を設定する把持力設定工程と、前記剛性値設定工程にて設定した剛性値、及び前記目標把持力を用いて、前記複数のフィンガーがワークに接触する時点から前記複数のフィンガーによりワークを把持する把持力が前記目標把持力となる時点までの前記アクチュエータの目標駆動量を求める駆動量演算工程と、を備えたことを特徴とする。
【発明の効果】
【００１１】
本発明によれば、アクチュエータの目標駆動量を、摩擦係数に比して経時的な変化が小さい剛性値を用いて求めるので、フィンガーによる把持力を正確に目標把持力にすることができる。
【図面の簡単な説明】
【００１２】
【図１】ロボット装置の概略構成を示す説明図である。
【図２】ロボットハンドの概略構成を示す説明図である。
【図３】ラックアンドピニオン機構の平面図である。
【図４】ロボットハンド及びロボットハンド制御装置の概略構成を示す制御ブロック図である。
【図５】ロボットハンドの把持動作の準備段階におけるロボットハンド制御装置の制御動作を示すフローチャートである。
【図６】ロボットハンドが把持動作をする際のロボットハンド制御装置の制御動作を示すフローチャートである。
【図７】把持動作の動作時間に対するロータリエンコーダのエンコーダ値を示すグラフである。
【発明を実施するための形態】
【００１３】
以下、本発明を実施するための形態を、図面を参照しながら詳細に説明する。図１は、本発明の実施形態に係るロボット装置の概略構成を示す説明図である。
【００１４】
ロボット装置１００は、ロボットアーム２００と、ロボットハンド３００と、ロボットアーム２００を制御するロボットアーム制御装置４００と、ロボットハンド３００を制御するロボットハンド制御装置５００とを備えている。ロボット装置１００は、例えば組立ロボットである。把持対象物であるワークＷは、ワーク載置台Ｓａ上に載置されている。
【００１５】
ロボットアーム制御装置４００は、ロボットアーム２００の内部に設けられ、ロボットハンド制御装置５００は、ロボットハンド３００の内部に設けられている。なお、ロボットアーム制御装置４００は、ロボットアーム２００の外部に設けられていてもよいし、ロボットハンド制御装置５００は、ロボットハンド３００の外部に設けられていてもよい。
【００１６】
ロボットアーム２００は、本実施形態では、多関節のロボットアームであり、基端２００ａが基台に固定され、先端２００ｂには、ロボットハンド３００が取り付けられている。
【００１７】
図２は、ロボットハンドの概略構成を示す説明図である。ロボットハンド３００は、ハンドベース３０１と、ワークＷを把持する複数（本実施形態では２つ）のフィンガー３０２１，３０２２とを備えている。ハンドベース３０１は、ハンド筺体３１１と、ハンド筺体３１１の内側に設けられた、アクチュエータとしての回転モータ（以下「モータ」という）３１２と、を有している。モータ３１２は、通電により不図示の回転子が回転するように構成された電磁モータであり、例えばブラシレスＤＣモータである。
【００１８】
モータ３１２は、駆動力として回転力を発生するものであり、モータ３１２には、駆動量を検出するエンコーダとしてのロータリエンコーダ３１３が設けられている。ロータリエンコーダ３１３は、駆動量としてモータ３１２の不図示の回転子の回転角度（回転量）を検出するものであり、回転角度に応じてパルスを出力する、即ちエンコーダ値を出力するものである。
【００１９】
なお、本実施形態では、アクチュエータとして回転モータ３１２、エンコーダしてのロータリエンコーダ３１３の場合について説明するが、これに限定するものではない。アクチュエータとしてエアシリンダなどの直動アクチュエータ、エンコーダとして直動ポテンショメータなどを用いてもよい。
【００２０】
ハンドベース３０１は、駆動力伝達機構としてのラックアンドピニオン機構３１４を有している。ラックアンドピニオン機構３１４は、モータ３１２の回転運動を直動運動に変換してモータ３１２の回転力をフィンガー３０２１，３０２２に伝達し、モータ３１２の駆動量である回転量に応じた移動量でフィンガー３０２１，３０２２を直動移動させる。
【００２１】
ラックアンドピニオン機構３１４は、モータ３１２の出力軸３１２ａの先端に固定されたピニオンギア３２１と、ピニオンギア３２１に噛み合う２つのラック３２２１，３２２２とを有している。これらラック３２２１，３２２２は、ハンド筺体３１１の内側に固定された別々の不図示の直動案内機構に取り付けられている。
【００２２】
また、ラック３２２１には、フィンガー接続部３２３１を介してフィンガー３０２１が固定されており、ラック３２２２には、フィンガー接続部３２３２を介してフィンガー３０２２が固定されている。
【００２３】
図３は、ラックアンドピニオン機構の平面図である。図３に示すように、ラック３２２１，３２２２は、モータ３１２の出力軸３１２ａの軸中心に対して点対称に配置され、不図示の直動案内機構に案内され、互いに逆方向に直動移動する。モータ３１２の不図示の回転子の回転駆動力により、ピニオンギア３２１が回転することで、ラック３２２１，３２２２、フィンガー接続部３２３１，３２３２、及びフィンガー３０２１，３０２２が同時に互いに逆方向に直動駆動される。
【００２４】
図２では、フィンガー３０２１，３０２２は、ワークＷを解放した状態であり、モータ３１２がフィンガー３０２１を矢印Ａ１方向（把持方向）に、フィンガー３０２２を矢印Ａ２方向（把持方向）にそれぞれ同時に駆動することで、ワークＷの把持を行う。また、図示は省略するが、フィンガー３０２１，３０２２がワークＷを把持した状態でワークＷを解放する場合には、フィンガー３０２１，３０２２を反対方向に駆動すればよい。即ち、モータ３１２がフィンガー３０２１を矢印Ａ１方向に対して反対の矢印Ｂ１方向（把持解放方向）に、フィンガー３０２２を矢印Ａ２方向に対して反対の矢印Ｂ２方向（把持解放方向）にそれぞれ同時に駆動することで、ワークＷの把持解放を行う。フィンガー３０２１，３０２２を矢印Ａ１，Ａ２方向に移動させる動作が把持動作、矢印Ｂ１，Ｂ２方向に移動させる動作が把持解放動作である。
【００２５】
図４は、ロボットハンド及びロボットハンド制御装置の概略構成を示す制御ブロック図である。図２及び図４に示すように、ロボットハンド制御装置５００は、制御部としての制御基板５０１及びモータドライバ５０２と、記憶部としてのメモリ５０３と、画像表示部や音声出力部等の報知部５０４とを備えている。メモリ５０３は、データの書き換え可能な不揮発性のメモリであるのが好ましい。
【００２６】
制御基板５０１は、モータドライバ５０２によるモータ３１２への通電状態を制御して、モータ３１２の駆動量である回転量を制御する。モータドライバ５０２は、制御基板５０１の制御の下、モータ３１２に駆動電流を供給する。メモリ５０３は、外部情報（データ）を格納する。
【００２７】
ハンド筺体３１１には、外部ケーブル５１１と制御基板ケーブル５１３とを接続する外部コネクタ５１２がそれぞれ固定されている。外部コントローラ６００に接続された外部ケーブル５１１は、外部コネクタ５１２及び制御基板ケーブル５１３を介して制御基板５０１に接続され、モータ３１２の制御のための相互通信を行う。
【００２８】
操作者は、外部コントローラ６００を操作して、制御基板５０１にデータを設定することで、モータ３１２の操作が可能である。外部ケーブル５１１及び制御基板ケーブル５１３は、不図示の外部電源から、制御基板５０１への電源供給も同時に行う。
【００２９】
制御基板５０１は、メモリケーブル５１４を介してメモリ５０３に接続され、メモリ５０３に情報（データ）を記録させることができ、メモリ５０３に記録された情報（データ）を読み取ることができる。
【００３０】
また、制御基板５０１は、予めメモリ５０３に記録された制御指令を用いて、外部コントローラ６００からの手動操作なしで、自動でモータ３１２を動作させることも可能である。
【００３１】
モータドライバ５０２は、ドライバケーブル５１５を介して制御基板５０１に接続されている。モータドライバ５０２には、制御基板５０１から電源および制御指令が供給される。また、モータ３１２は、モータケーブル５１６を介してモータドライバ５０２からの駆動電流の入力を受ける。ロータリエンコーダ３１３は、モータ３１２に直接接続されており、また、エンコーダケーブル５１７を介して制御基板５０１に接続されている。
【００３２】
以上の構成で、外部コントローラ６００は、制御基板５０１に、フィンガー３０２１，３０２２の位置指令値Ｘｃ又は速度指令値Ｖｃを送り、また、制御基板５０１から、フィンガー３０２１，３０２２の位置Ｘ及びフィンガー３０２の速度Ｖを受け取る。
【００３３】
制御基板５０１は、メモリ５０３の記録情報（データ）を参照し、フィンガー３０２１，３０２２の位置指令値Ｘｃ又はフィンガー３０２１，３０２２の速度指令値Ｖｃから、モータ３１２の回転角度指令値θｃ及び回転速度指令値ωｃを算出する。そして、制御基板５０１は、モータ３１２の回転角度指令値θｃ及び回転速度指令値ωｃをモータドライバ５０２に送る。
【００３４】
モータドライバ５０２は、制御基板５０１から受け取ったモータ３１２の回転角度指令値θｃ及び回転速度指令値ωｃから、モータ３１２を駆動するための電流指令値を計算して、電流指令値に対応する電流値の駆動電流Ｉｃをモータ３１２に供給する。
【００３５】
ロータリエンコーダ３１３は、モータ３１２の回転子の位相φをモニタリングし、パルスカウント値であるエンコーダ値Ｐを制御基板５０１に送る。また、制御基板５０１は、エンコーダ値Ｐに基づいて、モータ３１２の回転角度θ及び回転速度ωを計算し、回転角度指令値θｃ及び回転速度指令値ωｃにフィードバックして修正する。
【００３６】
ところで、フィンガー３０２１，３０２２がワークＷに接触した後、矢印Ａ１，Ａ２方向にフィンガー３０２１，３０２２を駆動すると、フィンガー３０２１，３０２２に把持力が発生する。このとき、モータ３１２の出力軸３１２ａ、ピニオンギア３２１、ラック３２２１，３２２２、フィンガー接続部３２３１，３２３２、フィンガー３０２１，３０２２は弾性変形する。そのため、フィンガー３０２１，３０２２がワークＷへ接触した後も、モータ３１２は回転する。また、ワークＷも弾性変形するので、フィンガー３０２１，３０２２がワークＷへ接触した後も、モータ３１２は回転する。
【００３７】
フィンガー３０２１，３０２２の剛性値Ｋｆは、フィンガー３０２１，３０２２に生ずる把持力に対して、モータ３１２の回転量を除した値で定義できる。つまり、フィンガー３０２１，３０２２の剛性値Ｋｆは、既知の値であり、経時的な変化はほとんどない。また、ワークＷについても、別の種類のワークが混在しなければ、ワーク間で剛性値Ｋｗのばらつきはほとんどなく、既知の値とすることができる。
【００３８】
そこで、本実施形態では、フィンガー３０２１，３０２２を閉じてワークＷを把持する把持動作に先立って、フィンガー及びワークの剛性値を用いて、目標把持力に対するモータ３１２の目標駆動量である目標回転量を制御基板５０１に計算させるものである。
【００３９】
図５は、ロボットハンドの把持動作の準備段階におけるロボットハンド制御装置の制御動作を示すフローチャートである。図６は、ロボットハンドが把持動作をする際のロボットハンド制御装置の制御動作を示すフローチャートである。図７は、把持動作の動作時間に対するロータリエンコーダのエンコーダ値を示すグラフである。
【００４０】
本実施形態では、把持対象となるワークＷは既知であり、ワークＷの剛性値Ｋｗも既知であるとする。まず、把持動作に先立つ把持動作の準備段階における制御基板５０１の処理動作について図５のフローチャートに沿って説明する。
【００４１】
制御基板５０１は、操作者の操作により外部コントローラ６００から出力されたフィンガー３０２１，３０２２の剛性値Ｋｆの入力を受け、剛性値Ｋｆをメモリ５０３に記録（格納）させる（Ｓ１）。つまり、作業者が外部コントローラ６００を操作することで、メモリ５０３には剛性値Ｋｆが格納される。
【００４２】
また、制御基板５０１は、操作者の操作により外部コントローラ６００から出力されたワークＷの剛性値Ｋｗの入力を受け、剛性値Ｋｗをメモリ５０３に記録（格納）させる（Ｓ２）。つまり、作業者が外部コントローラ６００を操作することで、メモリ５０３には剛性値Ｋｗが格納される。
【００４３】
また、制御基板５０１は、操作者の操作により外部コントローラ６００から出力されたワークＷの寸法Ｒの入力を受け、ワークＷの寸法Ｒをメモリ５０３に記録（格納）させる（Ｓ３）。つまり、作業者が外部コントローラ６００を操作することで、メモリ５０３にはワークＷの寸法Ｒが格納される。
【００４４】
また、制御基板５０１は、操作者の操作により外部コントローラ６００から出力された、フィンガーがワークＷに接触すると想定される動作位置を含むフィンガー３０２１，３０２２の動作範囲の入力を受け、動作範囲をメモリ５０３に記録（格納）させる（Ｓ４）。つまり、作業者が外部コントローラ６００を操作することで、メモリ５０３にはフィンガー３０２１，３０２２の動作範囲が格納される。本実施形態では、フィンガー３０２１，３０２２の動作範囲は、モータ３１２の駆動範囲、即ちロータリエンコーダ３１３のカウント範囲Ｐｍ（図７）としている。
【００４５】
また、制御基板５０１は、操作者の操作により外部コントローラ６００から出力された、フィンガー３０２１，３０２２によりワークＷを把持する動作中の把持力の上限値Ｆｍａｘの入力を受け、上限値Ｆｍａｘをメモリ５０３に記録（格納）させる（Ｓ５）。つまり、作業者が外部コントローラ６００を操作することで、メモリ５０３には、図７に示す上限値Ｆｍａｘが格納される。
【００４６】
また、制御基板５０１は、操作者の操作により外部コントローラ６００から出力された、フィンガー３０２１，３０２２によりワークＷを把持する動作中の把持力の下限値Ｆｍｉｎの入力を受け、下限値Ｆｍｉｎをメモリ５０３に記録（格納）させる（Ｓ６）。つまり、作業者が外部コントローラ６００を操作することで、メモリ５０３には、図７に示す下限値Ｆｍｉｎが格納される。
【００４７】
また、制御基板５０１は、操作者の操作により外部コントローラ６００から出力された、把持力の許容誤差σＦの入力を受け、把持力の許容誤差σＦをメモリ５０３に記録（格納）させる（Ｓ７）。つまり、作業者が外部コントローラ６００を操作することで、メモリ５０３には把持力の許容誤差σＦが格納される。
【００４８】
次に、制御基板５０１は、メモリ５０３に格納された把持力の許容誤差σＦを読み出し、読み出した許容誤差σＦから、後述するエンコーダ値推定変化量の許容誤差σｐを算出し、メモリ５０３に記録（格納）させる（Ｓ８）。つまり、メモリ５０３には、制御基板５０１により演算された図７に示す許容誤差σｐが格納される。
【００４９】
ここで、フィンガー３０２１，３０２２でワークＷを把持する際に、フィンガー３０２１，３０２２とワークＷを、剛性値Ｋを持つ１つのバネとみなしたとき、以下の式（１）に示すように、直列バネの関係から剛性値Ｋが求まる。
Ｋ＝（Ｋｆ・Ｋｗ）／（Ｋｆ＋Ｋｗ）    （１）
【００５０】
剛性値Ｋと、把持力Ｆと、フィンガー３０２１，３０２２及びワークＷの変位を足し合わせた変位Ｘとの間には、バネと弾性力の関係式Ｆ＝Ｋ・Ｘが成り立つ。また、変位Ｘとエンコーダ値Ｐとの関係が、換算係数Ｃを用いてＰ＝Ｃ・Ｘから求まる。
【００５１】
従って、ステップＳ８において、制御基板５０１は、これらの関係式を用いて、許容誤差σＦから、エンコーダ値変化量の許容誤差σｐを算出する。
【００５２】
なお、ステップＳ１〜Ｓ８までは、把持動作の準備であり、最初に使用する場合、或いはワークＷの種類を変更する場合等のロボットハンド３００の使用前に、一度だけ行えばよい。
【００５３】
次に、把持動作に先立つ制御基板５０１の各種データの設定処理動作について図６のフローチャートに沿って説明する。ここで、制御基板５０１においてデータを設定するとは、例えば制御基板５０１において演算処理に用いることが可能な状態に制御基板５０１の不図示の一時記憶部に格納することである。
【００５４】
制御基板５０１は、メモリ５０３からフィンガー３０２１，３０２２の剛性値Ｋｆを読み出すことで剛性値Ｋｆの入力を受け、剛性値Ｋｆを設定する（Ｓ１１：剛性値設定工程）。
【００５５】
また、制御基板５０１は、メモリ５０３からワークＷの剛性値Ｋｗを読み出すことで剛性値Ｋｗの入力を受け、剛性値Ｋｗを設定する（Ｓ１２：剛性値設定工程）。
【００５６】
また、制御基板５０１は、メモリ５０３からワークＷの寸法Ｒを読み出すことでワークＷの寸法Ｒの入力を受け、ワークＷの寸法Ｒを設定する（Ｓ１３：寸法設定工程）。
【００５７】
また、制御基板５０１は、メモリ５０３からフィンガー３０２１，３０２２の動作範囲を読み出すことで動作範囲の入力を受け、動作範囲を設定する（Ｓ１４：動作範囲設定工程）。即ち、制御基板５０１は、メモリ５０３からカウント範囲Ｐｍを読み出して、カウント範囲Ｐｍを設定する。
【００５８】
また、制御基板５０１は、メモリ５０３から把持力の上限値Ｆｍａｘを読み出すことで上限値Ｆｍａｘの入力を受け、上限値Ｆｍａｘを設定する（Ｓ１５：上限値設定工程）。
【００５９】
また、制御基板５０１は、メモリ５０３から把持力の下限値Ｆｍｉｎを読み出すことで下限値Ｆｍｉｎの入力を受け、下限値Ｆｍｉｎを設定する（Ｓ１６：下限値設定工程）。
【００６０】
また、制御基板５０１は、後述するエンコーダ値推定変化量の許容誤差σｐをメモリ５０３から読み出すことで許容誤差σｐの入力を受け、許容誤差σｐを設定する（Ｓ１７：許容誤差設定工程）。
【００６１】
また、制御基板５０１は、操作者の操作により外部コントローラ６００から出力された目標把持力である把持力指令値Ｆｃの入力を受け、把持力指令値Ｆｃを設定する（Ｓ１８：把持力設定工程）。この把持力指令値Ｆｃは、操作者により把持力の下限値Ｆｍｉｎ以上かつ把持力の上限値Ｆｍａｘ以下の範囲で選択された値である。
【００６２】
以上のステップＳ１１〜Ｓ１８により制御基板５０１には、以降の演算で用いる各種のデータが設定される。なお、ステップＳ１１〜Ｓ１８の設定動作の順番は、これに限定するものではなく、いずれのステップＳ１１〜Ｓ１８から行ってもよい。
【００６３】
また、本実施形態では、ステップＳ１１〜Ｓ１７では、制御基板５０１からメモリ５０３に予め格納されたデータを読み出すことで、設定を行っているが、外部コントローラ６００からの入力を受けて設定を行ってもよい。また、ステップＳ１８では、外部コントローラ６００から把持力指令値Ｆｃのデータの入力を受けて設定を行っているが、予め把持力指令値Ｆｃのデータをメモリ５０３に格納しておき、ステップＳ１８においてメモリ５０３から読み出すことで設定を行ってもよい。
【００６４】
次に、制御基板５０１は、フィンガー３０２１，３０２２がワークＷに接触する時点からフィンガー３０２１，３０２２によりワークＷを把持する把持力が把持力指令値Ｆｃとなる時点までのモータ３１２の目標駆動量（目標回転量）を演算する（駆動量演算工程）。ここで、モータ３１２の回転量とロータリエンコーダ３１３のエンコーダ値とは対応関係にあるので、本実施形態では、制御基板５０１は、ロータリエンコーダ３１３のエンコーダ値変化量ΔＰを演算により推定する（Ｓ１９）。エンコーダ値変化量ΔＰは、図７に示すように、フィンガー３０２１，３０２２がワークＷに接触する時点Ｔ０からフィンガー３０２１，３０２２によりワークＷを把持する把持力が把持力指令値Ｆｃとなる時点Ｔｅまでのエンコーダ値の推定変化量である。
【００６５】
以下、具体的に説明すると、剛性値Ｋと、把持力指令値Ｆｃと、フィンガー３０２１，３０２２がワークＷに接触した後のフィンガー３０２１，３０２２及びワークＷの変位を足し合わせた変位ΔＸとの間には、バネと弾性力の関係式Ｆｃ＝Ｋ・ΔＸが成り立つ。また、変位ΔＸとエンコーダ値変化量ΔＰとの関係が、換算係数Ｃ（予め設定された定数）を用いてΔＰ＝Ｃ・ΔＸから求まる。
【００６６】
つまり、制御基板５０１は、把持力指令値Ｆｃ及び剛性値Ｋを用いて、関係式ΔＰ＝Ｃ・Ｆｃ／Ｋからエンコーダ値変化量ΔＰを求める。なお、制御基板５０１は、関係式Ｆｃ＝Ｋ・ΔＸから変位ΔＸを求めた後、さらに、関係式ΔＰ＝Ｃ・ΔＸから、エンコーダ値変化量ΔＰを求めてもよい。また、制御基板５０１は、エンコーダ値変化量ΔＰを求めるのに、関係式を用いずに、予めメモリに格納させておいたエンコーダ値変化量を求めるデータテーブルを用いてもよい。
【００６７】
次に、制御基板５０１は、ステップＳ１８にて設定した把持力指令値Ｆｃを目標値として、フィンガー３０２１，３０２２による把持動作を開始する（Ｓ２０：把持動作開始工程）。その際、図１に示すように、ロボットハンド３００がワークＷを把持する所定の位置まで、ロボットアーム２００によりアプローチする。
【００６８】
把持動作開始後、制御基板５０１は、把持動作中においては、ロータリエンコーダ３１３の出力値であるエンコーダ値Ｐをモニタリングする。
【００６９】
モータドライバ５０２から送られる駆動電流により、モータ３１２がラックアンドピニオン機構３１４を介してフィンガー３０２１，３０２２を駆動することで、フィンガー３０２１，３０２２が図１中矢印Ａ１，Ａ２方向に直動移動する。
【００７０】
なお、フィンガー３０２１，３０２２がワークＷに接触する前の区間においては、安定した把持動作を行うために、フィンガー３０２１，３０２２は一定速度Ｖで駆動するものとする。即ち、フィンガー３０２１，３０２２は、把持動作開始してから図７に示す加速時間Ｔａが経過するまでの間、速度指令値Ｖｃに基づき、速度Ｖまで加速される。その後、フィンガー３０２１，３０２２は、ワークＷに接触するまで速度Ｖで移動する。フィンガー３０２１，３０２２がワークＷに接触した時点Ｔ０でのエンコーダ値をＰ０とする。
【００７１】
フィンガー３０２がワークＷに接触すると、フィンガー３０２の駆動速度が急激に低下するため、ロータリエンコーダ３１３のエンコーダ値Ｐの変化の速度（傾き）が大きく変化する。
【００７２】
そこで、制御基板５０１は、ロータリエンコーダ３１３の検出結果であるエンコーダ値Ｐに基づき、フィンガー３０２１，３０２２がワークＷに接触したか否かを判断する（Ｓ２１：判断工程）。つまり、制御基板５０１は、エンコーダ値Ｐ（パルス）の変化の速度（図７のエンコーダ値Ｐの傾き）が所定速度以下に低下した場合に、フィンガー３０２１，３０２２がワークＷに接触したと判断する。
【００７３】
制御基板５０１は、フィンガー３０２１，３０２２がワークＷに接触していないと判断した場合（Ｓ２１：Ｎｏ）、フィンガー３０２１，３０２２の動作位置が、ステップＳ１４にて設定した動作範囲内であるか否かを判断する（Ｓ２２：動作判断工程）。即ち、制御基板５０１は、ロータリエンコーダ３１３の検出結果であるエンコーダ値Ｐが、カウント範囲Ｐｍ内であるか否かを判断する。
【００７４】
制御基板５０１は、フィンガー３０２１，３０２２の動作位置が動作範囲内であると判断した場合（Ｓ２２：Ｙｅｓ）には、ステップＳ２１の処理に戻る。
【００７５】
制御基板５０１は、フィンガー３０２１，３０２２の動作位置が動作範囲を外れたと判断した場合（Ｓ２２：Ｎｏ）には、ワーク無エラーであり、把持するワークが無い旨を報知部５０４にて操作者に報知する（Ｓ２３：第１報知工程）。即ち、供給ミスなどの要因でワークＷが所定の位置に無い場合は、ステップＳ１４で設定したフィンガー３０２１，３０２２の動作範囲を上回った時点（エンコーダ値ＰがＰｍを上回った時点）で、操作者にエラーの報知を行う。
【００７６】
次に、制御基板５０１は、フィンガー３０２１，３０２２がワークＷに接触したと判断した場合（Ｓ２１：Ｙｅｓ）、ステップＳ１３で設定したワークＷの寸法Ｒに基づき、ワークＷの寸法が適正であるか否かを判断する（Ｓ２４：比較工程）。即ち、制御基板５０１は、このステップＳ２４において、フィンガー３０２１，３０２２がワークＷに接触した時点Ｔ０でのモータ３１２の回転量（エンコーダ値Ｐ０）に基づき、フィンガー３０２１，３０２２に接触しているワークＷの寸法を演算する。そして、制御基板５０１は、ステップＳ１３で設定したワークＷの寸法Ｒと、演算したワークＷの寸法とを比較し、ステップＳ１３で設定したワークＷの寸法に対する演算したワークの寸法のずれ量が所定値以下であるか否かを判断する。
【００７７】
即ち、ステップＳ２４では、ステップＳ１３で設定したワークＷの寸法と、演算したワークＷの寸法とを照らし合わせて、適正な位置でワークＷが把持されたか否か、適正な寸法のワークが把持されたか否かを確認する。
【００７８】
制御基板５０１は、ワークＷの寸法が適正ではない、即ちステップＳ１３で設定したワークＷの寸法に対する演算したワークの寸法のずれ量が所定値を超えている場合（Ｓ２４：Ｎｏ）、寸法ずれである旨を報知部５０４にて報知する（Ｓ２５：第２報知工程）。
【００７９】
例えば、誤ったワークが置かれている、あるいは、ロボットハンド３００の位置が適切でない場合には、演算されるワークの寸法がステップＳ１３で設定したワークＷの寸法に対してずれるため、把持位置ずれエラーとなる。制御基板５０１は、この把持位置ずれエラーを検知したことにより、操作者にエラーの報知を行う。
【００８０】
次に、制御基板５０１は、ワークＷの寸法が適正であると判断した場合（Ｓ２４：Ｙｅｓ）、以下のステップＳ２６〜Ｓ３０に示す把持力付与工程の処理を実行する。
【００８１】
即ち、制御基板５０１は、ステップＳ２６〜Ｓ３０において、フィンガー３０２１，３０２２がワークＷに接触した時点Ｔ０からのモータ３１２の回転量が目標回転量に収束するように、モータドライバ５０２を介してモータ３１２を動作させる。具体的に説明すると、制御基板５０１は、ロータリエンコーダ３１３のエンコーダ値Ｐがエンコーダ値変化量ΔＰの値に収束するように、モータドライバ５０２を介してモータ３１２の回転量を調整する。ここで、本実施形態では、ステップＳ１７にて、モータ３１２の目標回転量に対する許容誤差、即ちエンコーダ値変化量ΔＰに対する許容誤差σｐを設定している。したがって、制御基板５０１は、エンコーダ３１３のエンコーダ値が許容誤差σｐの範囲に収束するように、モータドライバ５０２を介してモータ３１２の回転量を調整する。
【００８２】
以下、これらの動作について詳細に説明する。制御基板５０１は、把持力Ｆが許容誤差σＦに収まっているか否か、即ち、ロータリエンコーダ３１３のエンコーダ値Ｐがエンコーダ値変化量ΔＰを中心に許容誤差σｐの範囲に収束しているか否かを判断する（Ｓ２６）。
【００８３】
具体的に説明すると、制御基板５０１は、フィンガー３０２１，３０２２のワークＷ接触時のエンコーダ値Ｐ０と、ステップＳ１９で演算したエンコーダ値変化量ΔＰとを足し合わせ、現在のエンコーダ値Ｐとの差を計算する。そして、制御基板５０１は、ステップＳ１７にて設定したエンコーダ値変化量の許容誤差σｐに収束しているか否かを判断する。すなわち、制御基板５０１は、以下の式（２）が成り立つか否かを判断する。
｜Ｐ−（Ｐ０＋ΔＰ）｜＜σｐ    （２）
【００８４】
制御基板５０１は、式（２）が成り立たないと判断した場合（Ｓ２６：Ｎｏ）、ステップＳ１１及びステップＳ１２にて設定した剛性値Ｋから求まる把持力Ｆが、上限値Ｆｍａｘ以下であるか否かを判断する（Ｓ２７）。また、制御基板５０１は、ステップＳ１１及びステップＳ１２にて設定した剛性値Ｋから求まる把持力Ｆが、下限値Ｆｍｉｎ以上であるか否かを判断する（Ｓ２８）。
【００８５】
制御基板５０１は、これらステップＳ２７，Ｓ２８にて、計算した把持力Ｆが、下限値Ｆｍｉｎ以上、上限値Ｆｍａｘ以下である場合には、式（２）を満たすように、モータ３１２の回転量を調整し（Ｓ２９）、ステップＳ２６の処理に移行する。
【００８６】
例えば、図７に示す過負荷曲線Ｆ０１のように、フィンガー３０２１，３０２２の移動速度が速い場合など、把持力が過負荷となった場合は、モータ３１２の回転を調整して、フィンガー３０２１，３０２２の位置を開き方向に調整する。
【００８７】
逆に、図７に示す把持力不足曲線Ｆ０２のように、フィンガー３０２１，３０２２が低速でワークＷに接触した場合など、把持力が不足した場合は、モータ３１２の回転を調整して、フィンガー３０２１，３０２２を閉じ方向に調整する。この調整により、ロータリエンコーダ３１３のエンコーダ値Ｐは補正され、図７に示す適正把持力曲線Ｆ００の状態に近づく。
【００８８】
エンコーダ値変化量ΔＰが、ステップＳ１７で設定した許容誤差±σｐに収まるまで、これらの調整を行う。即ちステップＳ２６〜Ｓ２９の処理を繰り返すことで、エンコーダ値Ｐがエンコーダ値変化量ΔＰに収束する、つまりモータ３１２の回転量が目標回転量に収束することで、把持力Ｆが目標把持力である把持力指令値Ｆｃに収束する。
【００８９】
制御基板５０１は、ステップＳ２６にて把持力Ｆが目標把持力である把持力指令値Ｆｃに収束した場合（Ｓ２６：Ｙｅｓ）、把持力が適切な状態に保たれているので、収束してから所定時間Ｔｇが経過したか否かを判断する（Ｓ３０）。そして、制御基板５０１は、所定時間Ｔｇが経過した時点Ｔｅで（Ｓ３０：Ｙｅｓ）、把持動作を完了する。
【００９０】
制御基板５０１は、ステップＳ２７において、把持力Ｆが上限値Ｆｍａｘを上回った場合（Ｓ２７：Ｎｏ）には、把持力上限エラーであり、モータ３１２の動作を停止させる（Ｓ３１）。これにより、ワークＷの破損を防止することができる。
【００９１】
また、制御基板５０１は、ステップＳ２８において、把持力Ｆが下限値Ｆｍｉｎを下回った場合（Ｓ２８：Ｎｏ）には、把持力下限エラーであり、モータ３１２の動作を停止させる（Ｓ３２）。これにより、ワークＷをロボットアーム２００により搬送するなど、一定以上の把持力を維持する必要がある場合に、ワークＷの脱落を防止することができる。
【００９２】
把持完了後は、例えば図１に示すように、ワークＷをワーク組立治具Ｓｂに移動して固定する動作などが想定される。この際、ロボットアーム２００の動作により、ワークＷがフィンガー３０２１，３０２２から滑り落ちないよう、また、ワークＷが柔軟物の場合には、過大な把持力でワークＷを破損させないよう、適正な把持力を保った状態で動作が行われる。ロボットアーム２００により、ワークＷをワーク組立治具Ｓｂに固定後、フィンガー３０２を開き、全動作が完了となる。
【００９３】
以上、本実施形態によれば、力センサを用いることのない簡易な構成で、把持力を目標把持力である把持力指令値Ｆｃに制御可能である。つまり、モータ３１２の目標回転量としてエンコーダ値変化量ΔＰ（アクチュエータの目標駆動量）を、摩擦係数に比して経時的な変化が小さい剛性値Ｋを用いて求めるので、フィンガー３０２１，３０２２による把持力を正確に把持力指令値Ｆｃにすることができる。
【００９４】
また、本実施形態によれば、ステップＳ２３，Ｓ２５，Ｓ３１，Ｓ３２にて想定される様々なエラーをも検知することが可能となり、ロボットハンド３００の制御の信頼性が向上する。
【００９５】
また、フィンガー３０２１，３０２２がワークＷに接触する瞬間において、ロータリエンコーダ３１３の出力結果によりフィンガー３０２１，３０２２の移動速度の急激な変化を検知し、ワーク把持の瞬間を、センサを用いることなく精度よく検知することができる。
【００９６】
さらに、フィンガー３０２１，３０２２による把持力不足、あるいは過負荷の場合は、モータ３１２の回転を調整してフィンガー３０２１，３０２２の位置を調整することで、把持力を適正な値（把持力指令値Ｆｃ）となるように制御することが可能である。
【００９７】
また、フィンガーの動作範囲を設定したことで、把持対象であるワークＷが所定の位置に存在しない場合に、ワークＷなしを迅速に検知することができる。これにより、制御基板から操作者にエラー通知を出すことが可能である。
【００９８】
また、ワークＷの形状寸法Ｒがメモリ５０３に格納されることで、フィンガー３０２１，３０２２がワークＷに接触した際に、適切な把持位置か否かを確認することができる。これにより、把持対象ではない誤ったワークを把持した場合や、ワークＷの把持位置がずれている場合に把持位置エラーを検知し、制御基板５０１から操作者にエラー通知を伝達することが可能である。
【００９９】
なお、本発明は、以上説明した実施形態に限定されるものではなく、多くの変形が本発明の技術的思想内で当分野において通常の知識を有する者により可能である。
【０１００】
上記実施形態では、モータとしてブラシレスＤＣモータ等の電磁モータを用い、エンコーダを用いてモータの回転子の回転角度（回転量）を検出する場合について説明したが、エンコーダを用いずに回転子の回転角度（回転量）を推定するようにしてもよい。また、モータとしてステッピングモータを用いた場合についても、パルス数と回転角度との間には相関関係があるため、パルス数で回転角度を把握できるので、この場合もエンコーダを用いる必要はない。
【０１０１】
また、上記実施形態では、ステップＳ２１の判断工程で、エンコーダによる検出結果（エンコーダ値）に基づき、フィンガーがワークに接触したか否かを判断する場合について説明したが、これに限定するものではない。エンコーダを用いずに、例えばフィンガーの先端に接触センサを設けて、ワークの接触を検知してもよい。
【０１０２】
また、上記実施形態では、ロボットハンドが２本のフィンガーを有する場合について説明したが、ロボットハンドが３本以上のフィンガーを有している場合であってもよい。
【０１０３】
また、上記実施形態では、フィンガーに駆動力を伝達する駆動力伝達機構がラックアンドピニオン機構である場合について説明したが、これに限定するものではない。例えば円弧状のカム溝を有するカム部材の回転をカム溝に係合するピンにより直動に変換する機構やボールねじを用いた機構であってもよい。
【０１０４】
また、上記実施形態では、フィンガーの剛性値Ｋｆとワークの剛性値Ｋｗとの合成の剛性値Ｋを用いて、モータの目標回転量としてエンコーダ値変化量ΔＰを求める場合について説明したが、少なくとも一方の剛性値を用いてエンコーダ値変化量ΔＰを求めてもよい。
【０１０５】
フィンガーの剛性値Ｋｆに対してワークの剛性値Ｋｗが高い場合、フィンガーでワークを把持した際のワークの弾性変形量が小さく無視できる場合がある。この場合、剛性値Ｋをフィンガーの剛性値Ｋｆとして、エンコーダ値変化量ΔＰを求めればよい。
【０１０６】
同様に、ワークの剛性値Ｋｗに対してフィンガーの剛性値Ｋｆが高い場合、フィンガーでワークを把持した際にフィンガーの弾性変形量が小さく無視できる場合がある。この場合、剛性値Ｋをワークの剛性値Ｋｗとして、エンコーダ値変化量ΔＰを求めればよい。
【符号の説明】
【０１０７】
１００…ロボット装置、２００…ロボットアーム、３００…ロボットハンド、３０２１，３０２２…フィンガー、３１２…モータ（アクチュエータ）、３１３…ロータリエンコーダ（エンコーダ）、３１４…ラックアンドピニオン機構（駆動力伝達機構）、５００…ロボットハンド制御装置、５０１…制御基板（制御部）、５０２…モータドライバ（制御部）、５０４…報知部
【図１】
2014046449.tif 000003
【図２】
2014046449.tif 000004
【図３】
2014046449.tif 000005
【図４】
2014046449.tif 000006
【図５】
2014046449.tif 000007
【図６】
2014046449.tif 000008
【図７】
2014046449.tif 000009