(57)【特許請求の範囲】
【請求項１】
ワークを把持可能な複数のフィンガーと、前記複数のフィンガーを移動させるアクチュエータと、を有するロボットハンドの制御方法において、
制御部が、
予め記憶された、前記複数のフィンガーにより第１の把持力で前記ワークを把持する場合における前記複数のフィンガー間の第１の相対位置を読みだし、
前記アクチュエータにより前記第１の相対位置になるように前記複数のフィンガーを移動させ、前記第１の相対位置で前記複数のフィンガーに前記ワークを把持させ、
前記複数のフィンガーにより、前記第１の相対位置で前記ワークを把持した状態から、前記第１の把持力とは異なる第２の把持力で前記ワークを把持する場合における、前記複数のフィンガー間の第２の相対位置を算出し、
前記アクチュエータにより前記第１の相対位置から前記第２の相対位置となるように前記複数のフィンガーを移動させる、
ことを特徴とする制御方法。
【請求項２】
前記制御部は、
前記第１の把持力毎に設定される、前記第１の把持力及び前記第２の把持力の差分と、前記第１の相対位置及び前記第２の相対位置の差分と、の相関関係を表す関数の情報を有し、
前記第２の相対位置を、前記第１の把持力と、前記第１の相対位置と、前記関数の情報と、により求める、
ことを特徴とする請求項１に記載の制御方法。
【請求項３】
前記関数の情報は、前記ワークを前記第１の把持力で把持し、前記第１の把持力から前記第２の把持力に変化させて把持する際に必要な前記複数のフィンガーの移動量を予め複数回測定しておき、前記移動量を基に設定されている、
ことを特徴とする請求項２に記載の制御方法。
【請求項４】
前記制御部は、前記複数のフィンガーによる把持が、前記複数のフィンガーが前記ワークに接触していない状態で実行されるのか、前記複数のフィンガーが前記ワークに接触している状態で実行されるのか、を判定する、
ことを特徴とする請求項１乃至請求項３のいずれか１項に記載の制御方法。
【請求項５】
前記制御部は、
前記第１の把持力を設定する第１把持力設定工程と、
前記第１把持力設定工程で設定した前記第１の把持力を用いて前記アクチュエータの駆動電流と、回転速度と、を算出し、算出した前記駆動電流と前記回転速度とで前記アクチュエータを駆動し前記複数のフィンガーに前記ワークを把持させる把持工程と、をさらに備える、
ことを特徴とする請求項１乃至請求項４のいずれか１項に記載の制御方法。
【請求項６】
ワークを把持可能な複数のフィンガーと、前記複数のフィンガーを移動させるアクチュエータと、を有するロボットハンドと、前記ロボットハンドを制御する制御部と、を備え、
前記制御部が、
予め記憶された、前記複数のフィンガーにより第１の把持力で前記ワークを把持する場合における前記複数のフィンガー間の第１の相対位置を読みだし、
前記アクチュエータにより前記第１の相対位置になるように前記複数のフィンガーを移動させ、前記第１の相対位置で前記複数のフィンガーに前記ワークを把持させ、
前記複数のフィンガーにより、前記第１の相対位置で前記ワークを把持した状態から、前記第１の把持力とは異なる第２の把持力で前記ワークを把持する場合における、前記複数のフィンガー間の第２の相対位置を算出し、
前記アクチュエータにより前記第１の相対位置から前記第２の相対位置となるように前記複数のフィンガーを移動させる、
ことを特徴とするロボット装置。
【請求項７】
前記制御部は、
前記第１の把持力毎に設定される、前記第１の把持力及び前記第２の把持力の差分と、前記第１の相対位置及び前記第２の相対位置の差分と、の相関関係を表す関数の情報を有し、
前記第２の相対位置を、前記第１の把持力と、前記第１の相対位置と、前記関数の情報と、により求める、
ことを特徴とする請求項６に記載のロボット装置。
【請求項８】
前記関数の情報は、前記ワークを前記第１の把持力で把持し、前記第１の把持力から前記第２の把持力に変化させて把持する際に必要な前記複数のフィンガーの移動量を予め複数回測定しておき、前記移動量を基に設定されている、
ことを特徴とする請求項７に記載のロボット装置。
【請求項９】
前記制御部は、前記複数のフィンガーによる把持が、前記複数のフィンガーが前記ワークに接触していない状態で実行されるのか、前記複数のフィンガーが前記ワークに接触している状態で実行されるのか、を判定する、
ことを特徴とする請求項６乃至請求項８のいずれか１項に記載のロボット装置。
【請求項１０】
前記制御部は、前記第１の把持力を設定し、設定した前記第１の把持力を用いて前記アクチュエータの駆動電流と、回転速度と、を算出し、算出した前記駆動電流と前記回転速度とで前記アクチュエータを駆動し前記複数のフィンガーに前記ワークを把持させる、
ことを特徴とする請求項６乃至請求項９のいずれか１項に記載のロボット装置。
【請求項１１】
複数の関節を有したロボットアームに前記ロボットハンドが設けられた、
ことを特徴とする請求項６乃至請求項１０のいずれか１項に記載のロボット装置。
【請求項１２】
請求項１乃至請求項５のいずれか１項に記載の制御方法を実行可能な制御プログラム。
【請求項１３】
請求項１２に記載の制御プログラムを記録した、コンピュータで読み取り可能な記録媒体。
【請求項１４】
ワークを把持可能な複数のフィンガーと、前記複数のフィンガーを移動させるアクチュエータと、を有するロボットハンドを用いた物品の組立方法において、
制御部が、
予め記憶された、前記複数のフィンガーにより第１の把持力で前記ワークを把持する場合における前記複数のフィンガー間の第１の相対位置を読みだし、
前記アクチュエータにより前記第１の相対位置になるように前記複数のフィンガーを移動させ、前記第１の相対位置で前記複数のフィンガーに前記ワークを把持させ、
前記複数のフィンガーにより、前記第１の相対位置で前記ワークを把持した状態から、前記第１の把持力とは異なる第２の把持力で前記ワークを把持する場合における、前記複数のフィンガー間の第２の相対位置を算出し、
前記アクチュエータにより前記第１の相対位置から前記第２の相対位置となるように前記複数のフィンガーを移動させ、
前記第２の相対位置で把持した前記ワークを、別のワークへ組み付ける、
ことを特徴とする物品の組立方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットハンドを制御するロボットハンド制御方法及びロボット装置に関する。
【背景技術】
【０００２】
近年、産業用ロボットとしてロボットハンドを有するロボット装置を用いて従来人手によって行われた製品組立の自動化が進められている。ロボットハンドを用いてワークを操作し多様な製品を組立する場合、ワークの物性によらず、ワークを破損及び落下することなく確実に把持することが必要である。また、近年、産業用ロボットを用いた更に高度な製品組立を実現するべく、ワークを的確に把持するために、ロボットハンドの把持力を容易に制御可能とすることが求められている。
【０００３】
把持力を制御する方法として、外乱推定オブザーバを用いてロボットハンドの把持力を制御する方法（特許文献１参照）が提案されている。特許文献１に開示された把持力制御装置では、把持装置にワークを把持させるために、把持力を与えるモータの駆動電流と回転速度とを入力することで、ロボットハンドの把持力の推定値を外乱推定オブザーバから出力させる。そして、特許文献１に開示された把持力制御装置では、外乱推定オブザーバから出力された把持力推定値と、把持力目標値との偏差を無くすように制御することで、ロボットハンドの把持力を制御する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−１７８２８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載された発明においては、ロボットハンドのフィンガーの移動速度が０である状態からモータが回り出す状態に移行する場合、フィンガーを駆動する駆動機構に生じる摩擦力が静摩擦から動摩擦に切り替わり大きく変化する。そのため、摩擦の影響を推定するための外乱推オブザーバの補償係数を一意に同定することができない。特許文献１に記載された発明においては、フィンガーの移動速度が０である場合と０ではない場合とで、摩擦の影響を推定するための外乱推定オブサーバの補償係数にヒステリシス、つまり制御できない不感帯を設けている。そのため、特許文献１に記載された発明においては、ロボットハンドがワークを把持した状態で、ロボットハンドの把持力を高い精度で調整制御することが困難であった。
【０００６】
また、把持力を測定可能な外付けの力覚センサを利用し、ロボットハンドの把持力を測定しながら把持力を制御する方法も考えられる。しかしながら、この場合、外付けの力覚センサに把持力を検出させるための部材を別途ロボットハンドに設ける必要があり、ロボットハンドを小型化することが困難である。また、このような力覚センサは、一般に位置を測定可能なセンサと比べると高価であるため、ロボットハンドをコストダウンさせることも困難となってしまう。そして、このような力覚センサは、位置センサ等と比較して測定精度が低く、ロボットハンドの把持力を高い精度で調整制御することが難しい。
【０００７】
そこで、本発明は、把持力を高い精度で調整可能なロボットハンド制御方法及び簡易な構成で、かつ把持力を高い精度で調整可能なロボット装置を提供することを目的とするものである。
【課題を解決するための手段】
【０００８】
本発明に係る制御方法は、ワークを把持可能な複数のフィンガーと、前記複数のフィンガーを移動させるアクチュエータと、を有するロボットハンドの制御方法において、制御部が、予め記憶された、前記複数のフィンガーにより第１の把持力で前記ワークを把持する場合における前記複数のフィンガー間の第１の相対位置を読みだし、前記アクチュエータにより前記第１の相対位置になるように前記複数のフィンガーを移動させ、前記第１の相対位置で前記複数のフィンガーに前記ワークを把持させ、前記複数のフィンガーにより、前記第１の相対位置で前記ワークを把持した状態から、前記第１の把持力とは異なる第２の把持力で前記ワークを把持する場合における、前記複数のフィンガー間の第２の相対位置を算出し、前記アクチュエータにより前記第１の相対位置から前記第２の相対位置となるように前記複数のフィンガーを移動させる、ことを特徴とする。
【０００９】
また、本発明に係るロボット装置は、ワークを把持可能な複数のフィンガーと、前記複数のフィンガーを移動させるアクチュエータと、を有するロボットハンドと、前記ロボットハンドを制御する制御部と、を備え、前記制御部が、予め記憶された、前記複数のフィンガーにより第１の把持力で前記ワークを把持する場合における前記複数のフィンガー間の第１の相対位置を読みだし、前記アクチュエータにより前記第１の相対位置になるように前記複数のフィンガーを移動させ、前記第１の相対位置で前記複数のフィンガーに前記ワークを把持させ、前記複数のフィンガーにより、前記第１の相対位置で前記ワークを把持した状態から、前記第１の把持力とは異なる第２の把持力で前記ワークを把持する場合における、前記複数のフィンガー間の第２の相対位置を算出し、前記アクチュエータにより前記第１の相対位置から前記第２の相対位置となるように前記複数のフィンガーを移動させる、ことを特徴とする。
【発明の効果】
【００１０】
本発明によると、変更後の把持力でワークを把持した場合における複数のフィンガーの位置からアクチュエータの駆動量を算出し把持力を変更可能なため、把持力を高い精度で調整することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態のロボット装置を示す概略図。
【図２】本発明の実施形態のロボットハンドの構成を示す斜視図。
【図３】本発明の実施形態のハンド制御部の構成を示すブロック図。
【図４】本発明の実施形態のロボットハンド制御プログラムを示すフローチャート。
【図５】本発明の実施形態のフィンガーにおける把持力と接触点を示す模式図。
【図６】本実施の実施形態のフィンガーにおける把持力と位置の関係の具体例を示すグラフ。
【図７】本実施の実施形態の把持力調整テーブルの具体例を示す図。
【図８】本発明の実施形態のロボット装置の変形例を示す概略図。
【発明を実施するための形態】
【００１２】
以下、本発明に係る実施の形態を図１乃至図７に沿って説明する。図１は、本発明の実施形態に係るロボット装置の概略構成を示す概略図である。
【００１３】
ロボット装置１は、ワークＷ（図２参照）を把持可能なロボットハンド１０と、先端にロボットハンド１０が設けられ、ロボットハンド１０の位置を制御し複数の関節を有するロボットアーム２０と、を備えている。また、ロボット装置１は、ロボットハンド１０を制御する制御部としてのハンド制御部３０と、各種制御指令を送信可能な制御指令部４０と、を備えている。また、ロボット装置１は、ロボット装置１を構成する各要素に電源ケーブル５１を介して電力を供給する電力制御部５０と、を備えている。
【００１４】
制御指令部４０は、通信ケーブル４１によりハンド制御部３０と接続され、ロボットハンド１０のフィンガー１１ａ，１１ｂ（図２参照）を開閉する制御指令を通信ケーブル４１を介してハンド制御部３０に送信し、フィンガー１１ａ，１１ｂを開閉動作させる。ハンド制御部３０と制御指令部４０との通信は、例えばパラレルＩ／Ｏ又はノイズ耐性が高く高速な差動シリアル通信によって行われる。
【００１５】
また、制御指令部４０は、アームケーブル４２によってロボットアーム２０が有する不図示のアーム制御部と接続され、各関節を動作させる制御指令をアームケーブル４２を介してアーム制御部に送信し、ロボットアーム２０を動作させる。つまり、制御指令部４０は、ロボットハンド１０と、ロボットアーム２０と、を制御することで、ロボットシステムとして部品の把持や組み付けを実行し、製品組立を実現することができる。ここで、制御指令部４０が実行する制御内容や制御指令部４０がハンド制御部３０に送信する制御指令は、ロボットシステムの製品組立動作のＪＯＢプログラムとしてユーザーによって予め設計されており、制御指令部４０のメモリに記憶されている。なお、ロボットアーム２０は、各関節の動作をそれぞれ制御する複数のアーム制御部を有する構成であってもよい。
【００１６】
電力制御部５０は、ロボット装置１の外に設けられた外部電源と電源ケーブル５１を介して接続され、外部電源から供給された電力を調整し、ハンド制御部３０や制御指令部４０等に必要な電力を供給する。
【００１７】
図２は、ロボットハンド１０の構成を示す図である。図２に示すように、ロボットハンド１０は、ワークＷを把持可能な一対のフィンガー１１ａ，１１ｂと、駆動力を発生するアクチュエータとしてのモータ１２と、を備えている。また、ロボットハンド１０は、モータ１２の駆動量に応じた移動量でフィンガー１１ａ，１１ｂを移動させる駆動力伝達機構として、一対のリニアガイド１３ａ，１３ｂ、一対のラックギヤ１４ａ，１４ｂ及びピニオンギヤ１５を備えている。
【００１８】
フィンガー１１ａ，１１ｂは、ピンセット状の形状を有し、ワークＷを把持する場合にワークＷと接触する接触部１１１ａ，１１ｂと、ラックギヤ１４ａ，１４ｂに固定される固定部１１２ａ，１１２ｂとを有する。フィンガー１１ａ，１１ｂは、ラックギヤ１４ａ，１４ｂの移動に伴いワークＷを把持する方向とワークＷから離隔する方向とに移動する。
【００１９】
モータ１２は、例えば３相のＡＣサーボモータであり、ベースプレート１６の下面に取り付けられており、モータ１２の出力トルクを増幅するための減速機１７と、モータ１２の回転数及び回転角度を検出するセンサとしてのエンコーダ回路１８とを有する。また、モータ１２は、ハンド制御部３０とハンドケーブル３１を介して接続されている。
【００２０】
ハンドケーブル３１は、エンコーダ回路１８から出力される出力信号をハンド制御部３０に送信するエンコーダ信号線３１ａと、モータ１２に駆動電流を供給するモータ動力線３１ｂとから構成されている。エンコーダ信号線３１ａは、例えばエンコーダ回路１８の電源、ＧＮＤ、エンコーダの出力信号のＡ相、Ｂ相、Ｚ相の計５本の線から構成されている。また、モータ動力線３１ｂは、モータ１２の種類に対応した動力線であり、モータ１２が例えば３相のＡＣサーボモータである場合には、Ｕ相、Ｖ相、Ｗ相とつながる３本の動力線から構成される。
【００２１】
一対のリニアガイド１３ａ，１３ｂは、それぞれベースプレート１６の上面に取り付けられ、互いに対向する面にガイド溝１９ａ，１９ｂを有している。一対のラックギヤ１４ａ，１４ｂは、ギヤの歯面と対向する面に、突起形状でリニアガイド１３ａ，１３ｂのガイド溝１９ａ，１９ｂに嵌合されるガイド突起１４１ａ，１４１ｂを有している。ガイド突起１４１ａ，１４１ｂがガイド溝１９ａ，１９ｂに嵌合されリニアガイド１３ａ，１３ｂに取り付けられることで、ラックギヤ１４ａ，１４ｂは、フィンガー１１ａ，１１ｂを接触及び離隔させる開閉方向に平行移動させることができる。
【００２２】
ピニオンギヤ１５は、モータ１２の駆動軸に取り付けられており、ラックギヤ１４ａ，１４ｂのギヤ歯面に噛合している。これにより、ロボットハンド１０は、モータ１２を駆動しピニオンギヤ１５を正転及び逆転することで、ラックギヤ１４ａ，１４ｂを平行移動させ、フィンガー１１ａ，１１ｂを開閉動作させることができる。
【００２３】
次に、ハンド制御部３０の構成を図３に沿って説明する。ハンド制御部３０は、プログラムを演算可能なＣＰＵ３０１と、記憶可能な記憶部として機能するＲＯＭ３０２、ＲＡＭ３０３、記録媒体としてのＨＤＤ（ハードディスクドライブ）３０４と、を備えている。また、ハンド制御部３０は、各種のインタフェース３０５〜３０７と、モータドライバ３０８と、を備えている。
【００２４】
ＣＰＵ３０１には、ＲＯＭ３０２、ＲＡＭ３０３、ＨＤＤ３０４及び各種のインタフェース３０５〜３０７が、バス３１０を介して接続されている。例えば、ＨＤＤ３０４（或いは外部記憶装置３２２等であってもよい）には、ＣＰＵ３０１を動作させるための各種プログラムやフィルタのデータが格納されている。
【００２５】
この各種プログラムのうち、指令値変換プログラム３０４ａは、ＣＰＵ３０１により制御指令部４０から送信される制御指令をサーボ演算に必要なパラメータに変換するプログラムである。具体的には、制御指令部４０から送信される位置、速度、把持力、把持のレベルといった制御指令を、位置、速度、電流値といったパラメータに変換する。ここで、把持のレベルによる制御指令とは、例えばロボットハンド１０の最大の把持力の仕様が５０Ｎである場合に、レベル１〜１０までの１０段階で指定するような制御指令である。この場合、把持のレベル１の制御指令では、把持力として５Ｎの制御指令を送信し、把持のレベル１０の制御指令では、把持力として５０Ｎの制御指令を送信することができる。また、各種データのうち、サーボ演算パラメータ３０４ｂは、ＣＰＵ３０１がサーボ演算を実行する場合に必要に応じて使用されるパラメータであり、例えばモータ駆動電流を算出するために用いられるＰＩＤゲインのパラメータ等が含まれる。
【００２６】
インタフェース３０５には、ロボットハンド１０に内蔵されているモータ１２がハンドケーブル３１を介して接続され、インタフェース３０６には、モータドライバ３０８が接続されている。また、インタフェース３０７には、外部記憶装置（例えば外付けＨＤＤや不揮発性メモリなど）３２２が接続されている。
【００２７】
モータ１２からは、エンコーダ回路１８からモータ１２の回転数と回転角度についての出力信号が送信される。ＣＰＵ３０１は、指令値変換プログラム３０４ａで変換したパラメータと、エンコーダ回路１８から受信した出力信号と、モータ駆動電流とを用いてサーボ演算を実行してモータドライバ３０８にモータ駆動信号を出力する。ここで、モータドライバ３０８は、モータ駆動電流の検出回路として、Ｕ相、Ｖ相、Ｗ相のハーフブリッジ回路を内蔵している。また、モータ駆動信号は、モータドライバ３０８に内蔵されるハーフブリッジ回路を駆動するためのＰＷＭ（Ｐｕｌｓｅ  Ｗｉｄｔｈ  Ｍｏｄｕｌａｔｉｏｎ）信号である。
【００２８】
モータドライバ３０８は、ドライバ駆動信号に従って内蔵されたハーフブリッジ回路を動作させ、モータ駆動電流をハンドケーブル３１を介してモータ１２に供給し、モータ１２を駆動する。このように、ロボット装置１は、制御指令部４０から送信される制御指令をハンド制御部３０で演算し、演算結果からモータドライバ３０８を介してモータ１２を駆動することで、フィンガー１１ａ，１１ｂに所望の把持力でワークＷを把持させることができる。
【００２９】
次に、本実施形態に係るロボットハンド制御方法について説明する。本実施形態に係るロボットハンド制御方法では、大まかに、まず、フィンガー１１ａ，１１ｂがワークＷを把持していない状態（開状態）である場合に、ワークＷを把持させる際の第１把持力を設定する第１把持力設定工程をハンド制御部３０が実行する。次に、ロボットハンド制御方法では、第１把持力を用いてモータ１２のモータ駆動電流及びモータ回転速度を算出し、算出したモータ駆動電流及びモータ回転速度でモータ１２を駆動する。そして、フィンガー１１ａ，１１ｂにワークＷを把持させる把持工程をハンド制御部３０が実行する。
【００３０】
また、ロボットハンド制御方法では、フィンガー１１ａ，１１ｂが第１把持力でワークＷを把持している状態（閉状態）である状態で、把持力を変更する場合に、まず、位置算出工程を実行する。位置算出工程においては、フィンガー１１ａ，１１ｂの把持力と固定部１１２ａ，１１２ｂの位置との関係である相関値、第１把持力及び把持力の目標値となる第２把持力を用いて、第２把持力で把持した場合の固定部１１２ａ，１１２ｂの位置を算出する。次に、ロボットハンド制御方法では、算出した固定部１１２ａ，１１２ｂの位置に固定部１１２ａ，１１２ｂを移動するために必要なモータ１２の駆動量を算出し、モータ１２を駆動する把持力変更工程をハンド制御部３０が実行する。
【００３１】
本実施形態のロボットハンド１０がワークＷを把持する場合にハンド制御部３０が実行するロボットハンド制御プログラムの詳細について、図４を参照しながら説明する。図４は、ハンド制御部３０が実行する把持制御を示すフローチャートである。把持制御は、ユーザーが予め設定したロボットハンド制御プログラムに従って実行される。また、把持制御は、ロボットハンド１０のフィンガー１１ａ，１１ｂの間に、把持対象となるワークＷが位置するようにロボットハンド１０及びロボットアーム２０の位置が制御され、ワークＷを把持する以前と、ワークＷを把持した状態と、で実行される。
【００３２】
まず、ハンド制御部３０のＣＰＵ３０１は、制御指令部４０から制御指令として、フィンガー１１ａ，１１ｂがワークＷを把持する場合の目標把持力となる把持力Ｆｎを受信する（Ｓ１１）。この処理において、ＣＰＵ３０１は、制御指令部４０から把持力Ｆｎの制御指令を受信するとともに、前回制御指令部４０から受信した把持力Ｆｎ−１の制御指令をＲＡＭ３０３に記憶させる。なお、ステップＳ１１の処理の実行時にフィンガー１１ａ，１１ｂが開状態である場合、ＣＰＵ３０１は、ＲＡＭ３０３に把持力Ｆｎ−１＝０と記憶させる。また、本実施形態において、ハンド制御部３０によるステップＳ１１の処理は、把持力設定工程を構成する。
【００３３】
次に、ＣＰＵ３０１は、ＲＡＭ３０３に記憶されている把持力Ｆｎ−１が０であるか否かを判定する（Ｓ１２）。この処理において、ＣＰＵ３０１は、今回の把持制御が開状態において実行される把持処理なのか、フィンガー１１ａ，１１ｂが閉状態で実行される把持調整処理なのかを判定する。
【００３４】
ステップＳ１２の処理において、把持力Ｆｎ−１が０であると判定した場合には（Ｙｅｓ）、ＣＰＵ３０１は、開状態において実行される把持処理であると判定した上で、ＨＤＤ３０４から指令値変換プログラム３０４ａを読み出す。そして、ＣＰＵ３０１は、指令値変換プログラム３０４ａに従い、モータ駆動電流Ｉ及びモータ回転速度ｖを設定する（Ｓ１３）。この処理において、ＣＰＵ３０１は、指令値変換プログラム３０４ａに従い、ＲＯＭ３０２に予め保存された初期把持用変換テーブルを用いて、目標把持力Ｆｎ［Ｎ］に対応するモータ駆動電流Ｉ［Ａ］と、モータ回転速度ｖ［ｒｐｍ］と、を読み出す。そして、ＣＰＵ３０１は、読み出したモータ駆動電流Ｉと、モータ回転速度ｖと、を、制御指令部４０から受信した制御指令を指令値変換プログラム３０４ａで変換したパラメータとしてＲＡＭ３０３に記憶させる。
【００３５】
ここで、初期把持とは、開状態からフィンガー１１ａ，１１ｂにワークＷを把持させることを意味する。また、初期把持用変換テーブルは、予め実験によって得られたモータ駆動電流Ｉ［Ａ］、モータ回転速度ｖ［ｒｐｍ］、把持力［Ｎ］の関係のデータから作成されるデータテーブルである。なお、モータ駆動電流Ｉ及びモータ回転速度ｖの設定方法は、変換テーブルを用いる方法に限定されない。例えば、ＣＰＵ３０１は、予め得られた実験データに基づき、モータ駆動電流Ｉ、モータ回転速度ｖ及び把持力Ｆの関係を導く近似式を算出し、該近似式を用いた計算によりモータ駆動電流Ｉ及びモータ回転速度ｖを求めてもよい。また、制御指令部４０からハンド制御部３０が受信しフィンガー１１ａ，１１ｂの把持力として設定される初期把持における把持力Ｆｎは、本実施形態における第１把持力を構成する。
【００３６】
次に、ＣＰＵ３０１は、ステップＳ１３でＲＡＭ３０３に記憶させたモータ駆動電流Ｉ及びモータ回転速度ｖを用いてサーボ演算を行い、モータ駆動信号をモータドライバ３０８に出力する。そして、モータドライバ３０８は、モータ駆動信号に基づくモータ駆動電流をモータ１２に供給し、モータ１２を駆動する（Ｓ１４）。この処理において、ＣＰＵ３０１は、モータドライバ３０８を介して、算出したモータ駆動電流Ｉ及びモータ回転速度ｖでモータ１２を駆動し、開状態にあるフィンガー１１ａ，１１ｂを閉状態にするよう駆動する。これにより、ＣＰＵ３０１は、フィンガー１１ａ，１１ｂによって目標把持力ＦｎでワークＷを把持させることができる。
【００３７】
次に、ＣＰＵ３０１は、受信したエンコーダ回路１８から出力されるモータ１２の回転数及び回転角度の出力信号が、前回受信した出力信号から変化しているか否かを判定する（Ｓ１５）。この処理において、ＣＰＵ３０１は、出力信号の変化を判定することで、フィンガー１１ａ，１１ｂがワークＷに接触し、ワークＷからの反力と釣り合ってフィンガー１１ａ，１１ｂの移動が停止、つまりモータ１２の駆動が停止させられたか否かを判定する。この処理において、受信した出力信号が、前回受信した出力信号から変化していると判定した場合には（Ｙｅｓ）、ＣＰＵ３０１は、ステップＳ１５の処理を繰り返す。また、この処理において、受信した出力信号に変化が無いか、又は受信した出力信号と前回受信した出力信号との差が特定の閾値より低い場合には（Ｎｏ）、ＣＰＵ３０１は、ステップＳ１９に処理を進める。ここで、ステップＳ１５の処理でＮｏの場合とは、すなわち把持が完了した状態に対応しており、より詳しくは後述する。
【００３８】
一方、ステップＳ１２の処理において、把持力Ｆｎ−１が０ではないと判定した場合には（Ｎｏ）、ＣＰＵ３０１は、閉状態において実行される処理である以下に説明する把持力調整処理を実行する。把持力調整処理において、フィンガー１１ａ，１１ｂの把持力として設定される把持力Ｆｎは、対応するデータを制御指令部４０から発信してハンド制御部３０が受信して設定され、本実施形態における第２把持力を構成する。また、把持力調整処理において、ＲＡＭ３０３に記憶されている現在の把持力Ｆｎ−１は、本実施形態における第１把持力を構成する。
【００３９】
ここで、把持力調整処理を実行する場合としては、例えばキャップ状の柔らかい部品を本体ワークのボスに嵌め込むような嵌合作業が想定される。このような嵌合作業では、キャップ状の部品が変形しボスの形状と合わず嵌め込めなくなることを防ぐために、該部品を低い把持力で把持し、変形を防ぎつつボスに位置を合わせる必要がある。そのため、このような嵌合作業の実行時において、ロボット装置１は、低い把持力で把持したキャップ状の部品の口がボスの先端にかかった後に、より高い把持力に把持力を調整し、ボスの根元まで部品を押し込み嵌合する。
【００４０】
また、把持力調整処理を実行する場合としては、例えば剛体の棒状部品を、同じく剛体の本体ワークに挿入する挿入作業が想定される。このような挿入作業では、剛体同士の嵌合で高い位置決め精度が求められ、かつロボット装置の絶対位置精度が求められる位置決め精度よりも低い場合に、棒状部品と本体ワークとが干渉し傷が発生する可能性がある。また、このような挿入作業においては、棒状部品を本体ワークの挿入孔まで移動する時間を短縮させることが望ましい。そのため、このような挿入作業の実行時において、ロボット装置１は、まず、棒状部品を高い把持力で安定して把持し、本体ワークの挿入孔まで素早く位置合わせし挿入孔に先端を入れる。そして、ロボット装置１は、低い把持力に把持力を調整し、棒状部品が本体ワークの挿入孔と過度に干渉することを防ぎつつ、挿入孔に棒状部品を挿入する。
【００４１】
把持力調整処理において、ＣＰＵ３０１は、ＨＤＤ３０４から指令値変換プログラム３０４ａを読み出す。そして、ＣＰＵ３０１は、指令値変換プログラム３０４ａに従い、フィンガー１１ａ，１１ｂのうち固定部１１２ａ，１１２ｂの移動量Δｄを設定する。そして、ＣＰＵ３０１は、現在の把持力Ｆｎ−１に対応する現在の固定部１１２ａ，１１２ｂの位置ｄ０の値と、固定部１１２ａ，１１２ｂの移動量Δｄの値とを用いて、位置制御の指令値ｄを算出する。（Ｓ１６）。ここで、ハンド制御部３０によるステップＳ１６の処理は、本実施形態における位置算出工程を構成する。
【００４２】
この処理において、ＣＰＵ３０１は、まず、ＲＡＭ３０３に記憶されている現在の把持力Ｆｎ−１と、制御指令部４０から受信した制御指令に含まれる目標把持力Ｆｎとの差であるΔＦを算出する。ここで、ＣＰＵ３０１は、ΔＦ＝Ｆｎ−Ｆｎ−１の式にＦｎ［Ｎ］の値とＦｎ−１［Ｎ］の値とをそれぞれ代入しΔＦ［Ｎ］を算出する。次に、ＣＰＵ３０１は、指令値変換プログラム３０４ａに従い、エンコーダ回路１８から受信した出力信号から、現在の把持力Ｆｎ−１に対応する現在の固定部１１２ａ，１１２ｂの位置ｄ０を算出する。そして、ＣＰＵ３０１は、指令値変換プログラム３０４ａに従い、ＲＯＭ３０２に予め保存された把持力調整用変換テーブルを用いて、ΔＦに対応する固定部１１２ａ，１１２ｂの移動量Δｄ［ｍｍ］を設定する。そして、ＣＰＵ３０１は、ｄ＝ｄ０＋Δｄの式にｄ０［ｍｍ］の値と、Δｄ［ｍｍ］の値とをそれぞれ代入し、モータ１２の位置制御の指令値ｄを算出する。
【００４３】
ここで、フィンガー１１ａ，１１ｂは、ワークＷの把持時において弾性変形をすることにより、設定された把持力によって固定部１１２ａ，１１２ｂからの接触部１１１ａ，１１１ｂの位置が変化する。図５は、フィンガー１１ａ，１１ｂ同士をそれぞれ異なる把持力Ｆａ，Ｆｂ，Ｆｃで接触させた状態を模式化した図である。ここで、把持力Ｆａ，Ｆｂ，Ｆｃそれぞれの強さは、Ｆａ＜Ｆｂ＜Ｆｃとなっている。図５に示すように、設定された把持力がＦａである場合、接触部１１１ａ，１１１ｂの位置は、固定部１１２ａ，１１２ｂからの距離がＬａとなる個所となる。また、設定された把持力がＦｂである場合、接触部１１１ａ，１１１ｂの位置は、固定部１１２ａ，１１２ｂからの距離がＬｂとなる個所となる。また、設定された把持力がＦｃである場合、接触部１１１ａ，１１１ｂの位置は、固定部１１２ａ，１１２ｂからの距離がＬｃとなる個所となる。ここで、Ｌａ，Ｌｂ，Ｌｃそれぞれの固定部１１２ａ，１１２ｂからの距離は、Ｌｃ＜Ｌｂ＜Ｌａとなっている。このように、設定された把持力が高くなるほど、接触部１１１ａ，１１１ｂは、固定部１１２ａ，１１２ｂに近づくことになる。
【００４４】
上述した特性をフィンガー１１ａ，１１ｂが有するロボットハンド１０において、予め実験により測定したΔＦとΔｄとの関係をグラフ化したものを、図６に示す。図６は、予め実験により測定されたΔＦとΔｄとの関係をまとめた把持力調整用変換テーブルのうち、Ｆｎ−１＝５［Ｎ］である場合と、Ｆｎ−１＝１０［Ｎ］である場合と、におけるΔＦとΔｄとの関係をグラフ化したものである。図６に示すように、固定部１１２ａ，１１２ｂの移動量Δｄは、現在の把持力Ｆｎ−１の強さによって、目標把持力Ｆｎとの差ΔＦに対する移動量Δｄの関係が変化し、現在の把持力Ｆｎ−１が弱い方が、ΔＦに対するΔｄの値が大きくなる。
【００４５】
図７は、ロボットハンド１０に設定可能な把持力Ｆが、２〜２０［Ｎ］である場合に、最低把持力２Ｎでフィンガー１１ａ，１１ｂを接触させた状態から、把持力を上昇させた場合におけるΔＦとΔｄとの関係を示す把持力調整テーブルの具体例である。
【００４６】
把持力調整テーブルの作成時においては、まず、ＣＰＵ３０１は、フィンガー１１ａ，１１ｂを２〜２０Ｎまでの全範囲の把持力でフィンガー１１ａ，１１ｂを閉状態にする把持動作をそれぞれ複数回（ｎ回）行う。ここで、各把持力における把持動作の実行回数を多くし、測定結果の記録回数が多いほど、把持力の調整精度が高くなる。また、図７に示す把持力調整テーブルにおいては、２Ｎごとに把持力を変化させた際の測定結果を示しているが、各把持動作時における把持力の変化量を、より小さく（例えば０．５Ｎごと）設定し、把持動作を実行するように構成してもよい。また、各把持動作の実行時に設定される把持力は、本実施形態における所定の把持力を構成する。
【００４７】
次に、ＣＰＵ３０１は、フィンガー１１ａ，１１ｂが接触して反力が釣り合い停止した時点におけるエンコーダ回路１８からの出力信号を、測定結果として記録する。次に、ＣＰＵ３０１は、各把持力における測定結果の値から、把持力が２Ｎであった場合の測定結果の値を引く。そして、ｎ回の測定結果から、各把持力における測定結果の平均値を算出することで、図７に示す把持力Ｆ＝２［Ｎ］で把持した状態から把持力を調整する場合の把持力調整テーブルが作成される。このように、フィンガー１１ａ，１１ｂの剛性を加味し、フィンガー１１ａ，１１ｂの把持力と位置との関係をテーブル化した把持力調整テーブルは、本実施形態における相関値を構成する。
【００４８】
なお、図７に示す把持力調整テーブルは、現在の把持力が２Ｎである状態から目標把持力に変更する場合に参照される把持力調整テーブルである。開状態から閉状態に移行する場合に設定する把持力を複数用いる場合には、閉状態に移行する場合に設定する各把持力に対応する複数の把持力調整テーブルを、予めＲＯＭ３０２に記憶しておけばよい。
【００４９】
ステップＳ１６の処理において、ＣＰＵ３０１は、図７に示すような把持力調整テーブルのうち、現在の把持力Ｆｎ−１に対応する把持力調整テーブルを用いて、ΔＦに対応するフィンガー１１ａ，１１ｂの移動量Δｄ［ｍｍ］を算出する。例えば、現在の把持力Ｆｎ−１が２Ｎであり、目標把持力Ｆｎが１０Ｎである場合、ＣＰＵ３０１は、図７に示す把持力調整テーブルを参照し、ΔＦが８Ｎとなる場合のΔｄの値として、Δｄ＝０．３２３２［ｍｍ］を設定する。
【００５０】
ステップＳ１６の処理を実行した後、ＣＰＵ３０１は、算出した指令値ｄを用いてサーボ演算を実行することでモータ１２の駆動量としてのモータ駆動信号を算出する。そして、ＣＰＵ３０１は、モータドライバ３０８に算出したモータ駆動信号を出力し、モータドライバ３０８にモータ１２を駆動させる（Ｓ１７）。この処理において、ＣＰＵ３０１は、算出した指令値ｄを用いてサーボ演算を実行し、モータドライバ３０８にモータ駆動信号を出力しモータ１２を駆動させ、固定部１１２ａ，１１２ｂをｄ［ｍｍ］の位置まで移動させる。ここで、ハンド制御部３０によるステップＳ１７の処理は、本実施形態における把持力変更工程を構成する。このように、ＣＰＵ３０１は、フィンガー１１ａ，１１ｂの接触部１１１ａ，１１１ｂをワークＷに接触させ略固定したまま、固定部１１２ａ，１１２ｂを指令値ｄ分移動することで、フィンガー１１ａ，１１ｂの位置を制御するように構成されている。
【００５１】
次に、ＣＰＵ３０１は、エンコーダ回路１８からの出力信号が、指令値ｄから設定した値の範囲内であるか否かを判定する（Ｓ１８）。この処理において、ＣＰＵ３０１は、エンコーダ回路１８からの出力信号から、フィンガー１１ａ，１１ｂの移動が完了したか否かを判定している。ここで、指令値ｄから設定される値の範囲は、エンコーダ回路１８が出力可能な出力信号から算出される値により決定される。この処理において、指令値ｄから設定した値の範囲内ではないと判定した場合には（Ｎｏ）、ＣＰＵ３０１は、ステップＳ１８の処理を繰り返す。
【００５２】
ステップＳ１５の処理において、受信した出力信号に変化が生じていないと判定した場合（Ｎｏ）又はステップＳ１８の処理において、指令値ｄから設定した値の範囲内であると判定した場合には（Ｙｅｓ）、ＣＰＵ３０１は、ステップＳ１９の処理に移行する。ステップＳ１９の処理において、ＣＰＵ３０１は、制御指令部４０に把持処理又は把持調整処理が終了したことを示す信号を送信する（Ｓ１９）。そして、制御指令部４０は、把持処理又は把持調整処理が終了したことを示す信号を受けて、次の組立動作に進む。
【００５３】
以上のように、本実施形態に係るロボットハンド制御方法では、把持力調整処理の実行時において、モータ駆動電流Ｉ及びモータ回転速度ｖを用いず、位置制御の指令値ｄを用いてモータ１２の駆動量を制御する。そして、ロボットハンド制御方法では、モータ１２を駆動し固定部１１２ａ，１１２ｂを移動してフィンガー１１ａ，１１ｂの位置を制御することで、第１把持力Ｆｎ−１から第２把持力Ｆｎに調整可能に構成されている。つまり、本実施形態に係るロボットハンド制御方法を用いることで、ロボット装置１は、変更後の把持力でワークＷを把持した場合のフィンガー１１ａ，１１ｂの位置ｄからモータ１２の駆動量を算出し把持力を変更可能である。そのため、本実施形態に係るロボットハンド制御方法を用いたロボット装置１は、ワークＷを把持した状態から把持力を高い精度で調整することができる。
【００５４】
また、本実施形態に係るロボットハンド制御方法では、把持処理及び把持調整処理を、把持力を測定するセンサ等を設けない簡易な構成のロボットハンド１０においても実行できる。つまり、本実施形態に係るロボットハンド制御方法を用いることで、ロボット装置１は、ロボットハンド１０を小型化することができるとともに、低コストで製造することができる。
【００５５】
なお、本実施形態において、把持力調整テーブルは、フィンガー１１ａ，１１ｂの剛性を加味し、フィンガー１１ａ，１１ｂの把持力と固定部１１２ａ，１１２ｂの位置との関係をテーブル化しているが、これに限らず、ワークＷの変形量も加味してもよい。この場合には、開状態にあるフィンガー１１ａ，１１ｂに、設定可能な把持力の全範囲でワークＷを把持させて固定部１１２ａ，１１２ｂの位置を測定し、把持力調整テーブルを作成する。なお、ワークＷを把持した把持力調整テーブルの作成時においては、ワークＷの寸法公差のばらつきも考慮する必要がある。また、ワークＷの種類が複数種類ある場合には、ワークＷの種類に応じて把持力調整テーブルを作成してもよい。ワークＷの変形量も加味した把持力調整テーブルを用いることにより、ロボットハンド制御方法は、剛性が低くフィンガー１１ａ，１１ｂに把持された場合に変形するワークＷを把持する場合にも、容易に把持力を調整することができる。
【００５６】
また、本実施形態において、ＣＰＵ３０１は、把持調整処理の実行時に、把持力調整テーブルを用いてΔｄを設定しているが、これに限定されない。ＣＰＵ３０１は、例えばフィンガー１１ａ，１１ｂを片持ち梁のモデルとみなし、たわみの計算式からΔｄを算出してもよい。また、ＣＰＵ３０１は、複数の把持力調整テーブルのデータから、ΔＦとΔｄとの関係を近似した把持力調整用の計算式を導出又は予めＲＯＭ３０２に記憶し、該計算式にΔＦを代入しΔｄを算出してもよい。また、把持力調整テーブルの作成や、把持力調整用の計算式等のΔＦとΔｄの関係を予め設定する各種工程は、本実施形態における相関値設定工程を構成し、把持力調整用の各種計算式は、本実施形態における相関値を構成する。また、把持力調整用変換の計算式によるΔｄの算出は、ワークＷの変形量を加味する場合でも同様であり、ワークＷの変形量を加味した計算式を導出又は予めＲＯＭ３０２に記憶し、算出してもよい。
【００５７】
また、本実施形態において、ＣＰＵ３０１は、把持力調整処理と把持処理とで制御モデルが異なることから、把持力調整処理における制御のＰＩＤゲインを、把持処理における制御のＰＩＤゲインから変更してもよい。把持力調整処理における制御のＰＩＤゲインの変更例としては、フィンガー１１ａ，１１ｂの弾性に抗って目標位置ｄに位置制御することから、積分ゲインを高めにすることが考えられる。
【００５８】
また、本実施形態において、ＣＰＵ３０１は、ステップＳ１２の処理において、把持力Ｆｎ−１が０であるか否かによって、フィンガー１１ａ，１１ｂが開状態又は閉状態のいずれであるかを判定しているが、これに限定されない。ＣＰＵ３０１による開状態及び閉状態の判定方法は、例えば制御指令部４０から送信された制御指令のコマンド自体を受信する都度ＲＡＭ３０３に記憶し、コマンドの内容を参照して開状態又は閉状態のいずれであるかを判定してもよい。
【００５９】
また、本実施形態において、ロボット装置１は、ステップＳ１５及びステップＳ１８の処理において、エンコーダ回路１８から出力された出力信号を、ＣＰＵ３０１が受信し、把持処理又は把持調整処理が終了したか否かを判定しているが、これに限定されない。ロボット装置１は、例えば制御指令部４０によって把持処理又は把持調整処理の終了を判定するように構成されていてもよい。このように構成した場合、ロボット装置１は、エンコーダ回路１８から出力される出力信号を、周期的にハンド制御部３０から通信ケーブル４１を介して制御指令部４０に送信するように構成する必要がある。
【００６０】
また、本実施形態において、図４に示したロボットハンド制御プログラムは、ハンド制御部３０によって実行されるが、コンピュータで読み取り可能な記録媒体に記録し、コンピュータに読み取らせることで、コンピュータによっても実行可能である。
【００６１】
また、本実施形態において、ロボット装置１は、制御指令部４０から送信される制御指令を、ハンド制御部３０のＣＰＵ３０１と指令値変換プログラム３０４ａとによってサーボ演算に必要なパラメータに変換しているが、これに限定されない。ロボット装置１は、例えば制御指令部４０において制御指令をサーボ演算に必要なパラメータに変換してもよい。
【００６２】
図８は、制御指令部４０において制御指令をサーボ演算に必要なパラメータに変換するロボット装置１を示す図である。図８に示すように、制御指令部４０は、制御指令をサーボ演算に必要なパラメータに変換する各種演算処理を実行するＣＰＵ４０１を備えている。ＣＰＵ４０１は、図４に示したステップＳ１１〜Ｓ１３、Ｓ１６の処理を実行可能に構成されている。つまり、ＣＰＵ４０１は、把持処理の実行時において、制御指令を初期把持用変換テーブルを用いて変換し、変換したモータ駆動電流Ｉ及びモータ回転速度ｖをＣＰＵ３０１に送信する。また、ＣＰＵ４０１は、異なる複数の指令把持力でフィンガー１１ａ，１１ｂを閉状態にするテスト把持モードを用意する。そして、ＣＰＵ４０１は、得られた指令把持力と該把持力で把持した場合の固定部１１２ａ，１１２ｂの停止位置との関係をＲＡＭ４０３に記憶することで、把持力調整テーブルを取得し、把持調整処理を実行することができる。
【００６３】
このように構成することで、ロボット装置１は、制御指令部４０に市販用のロボットハンドとハンドコントローラとを組み合わせることで、本発明のロボットハンド制御方法を実現することができる。また、ロボット装置１は、ロボットハンド１０の経時変化により、初期に取得した把持力調整テーブル又はΔＦからΔｄを算出可能な計算式におけるΔＦとΔｄとの関係が崩れた場合に、再度ΔＦとΔｄとの関係を取得し更新することができる。つまり、ロボット装置１は、ΔＦとΔｄとの関係をキャリブレーションすることができる。また、ロボット装置１は、ワークＷの種類が変更された場合に、組立作業を継続したまま把持力調整テーブル又はΔＦからΔｄを算出可能な計算式を取得することもできる。
【００６４】
また、本実施形態及びその変形例において、フィンガー１１ａ，１１ｂは、ピンセット型の形状で一対の部材から構成されているが、これに限らず、弾性を有しワークＷを把持可能な形状及び本数であればよい。
【００６５】
また、本実施形態及びその変形例において、モータ１２は、回転角度検出用のセンサとしてエンコーダ回路１８を有するＡＣサーボ型モータであるが、これに限らず、把持力の制御と位置制御が可能なセンサを有するアクチュエータであればよい。また、ロボットハンド１０は、駆動力を発生するアクチュエータとして１つのモータ１２を有しているが、これに限らず、フィンガーごとに複数個のアクチュエータを有する構成であってもよい。また、本実施形態及び変形例において、ロボットハンド１０は、駆動力伝達機構としてラックギヤ１４ａ，１４ｂ及びピニオンギヤ１５を有するが、これに限定されない。ロボットハンド１０は、モータ１２の駆動によってフィンガー１１ａ，１１ｂを移動させワークＷを把持させられる構成であればよい。
【符号の説明】
【００６６】
１…ロボット装置：１０…ロボットハンド：１１ａ，１１ｂ…フィンガー：１２…モータ（アクチュエータ）：１４ａ，１４ｂ…ラックギヤ（駆動力伝達機構）：１５…ピニオンギヤ（駆動力伝達機構）：２０…ロボットアーム：３０…ハンド制御部（制御部）：１１１ａ，１１１ｂ…接触部（フィンガー）：１１２ａ，１１２ｂ…固定部（フィンガー）：Ｗ…ワーク
【図１】
0006468871.tif 000002
【図２】
0006468871.tif 000003
【図３】
0006468871.tif 000004
【図４】
0006468871.tif 000005
【図５】
0006468871.tif 000006
【図６】
0006468871.tif 000007
【図７】
0006468871.tif 000008
【図８】
0006468871.tif 000009