(57)【要約】【課題】力覚センサやロボットアームに過大な負荷が繰り返し作用するのを抑制し、各ワークに過大な負荷が作用するのを抑制し、ロボットハンドが把持する第１ワークの質量にばらつきがあっても、高精度な嵌合作業を可能にする。【解決手段】ワークＷ１をワークＷ２に接触させるよう、力覚センサ２０３の検出値を目標値に近づけるようロボットアーム２０１の動作をインピーダンス制御する制御部３０１が、ワークＷ１を把持させるロボットハンド２０２移動させて、力覚センサ２０３の検出値から第１の目標値を得る。また、得られた第１の目標値を力覚センサ２０３の検出値とみなして、インピーダンス制御を行う。【選択図】図１
2018020430.tif 000002
【特許請求の範囲】
【請求項１】
ロボットアームと、
前記ロボットアームに支持された、第１ワークを把持させるロボットハンドと、
前記ロボットアームと前記ロボットハンドとの間に設けられた力覚センサと、
前記第１ワークが第２ワークに接触させるよう、前記力覚センサの検出値を目標値に近づけるよう前記ロボットアームの動作をインピーダンス制御する制御部と、を備え、
前記制御部は、
前記ロボットハンドを移動させて、前記力覚センサの検出値から第１の目標値を得る第１の処理と、
前記第１の目標値を前記検出値とみなして、前記インピーダンス制御を行う第２の処理と、
を実行することを特徴とするロボット装置。
【請求項２】
前記第２の処理において、前記検出値を、前記第１の目標値を基準とする値に補正し、補正後の前記検出値を０とみなす請求項１に記載のロボット装置。
【請求項３】
前記第２の処理において、前記ロボットハンドが移動する速度が、前記第１の処理において前記ロボットハンドが移動する速度と同じである請求項１又は２に記載のロボット装置。
【請求項４】
前記第２の処理において、前記ロボットハンドを前記第１の処理において前記ロボットハンドが移動した方向に移動する処理を行う請求項１乃至３のいずれか１項に記載のロボット装置。
【請求項５】
前記第１の処理において、前記ロボットハンドを移動する方向が水平方向である請求項１乃至４のいずれか１項に記載のロボット装置。
【請求項６】
前記第１の処理において、前記力覚センサの検出値が作業開始位置から作業完了位置に向かう移動方向に交差する方向の値である請求項１乃至５のいずれか１項に記載のロボット装置。
【請求項７】
前記第１の処理において、前記ロボットハンドを前記作業開始位置まで一定の速度で移動する処理を行う請求項６に記載のロボット装置。
【請求項８】
前記力覚センサの検出値から第２の目標値を得る請求項１乃至７のいずれか１項に記載のロボット装置。
【請求項９】
前記第２の処理を、前記検出値が前記第２の目標値を超えるまでの期間、行う請求項８に記載のロボット装置。
【請求項１０】
第１ワークを第２ワークに接触させるよう、力覚センサの検出値を目標値に近づけるようロボットアームの動作をインピーダンス制御するロボット制御方法であって、
前記第１ワークを把持させるロボットハンドを移動させて、前記力覚センサの検出値から第１の目標値を得る第１の工程と、
前記第１の目標値を前記検出値とみなして、前記インピーダンス制御を行う第２の工程と、
を備えることを特徴とするロボット制御方法。
【請求項１１】
前記力覚センサの検出値から第２の目標値を得る請求項１０に記載のロボット制御方法。
【請求項１２】
前記第２の工程において、前記インピーダンス制御を前記検出値が前記第２の目標値を超えるまでの期間、行う請求項１１に記載のロボット制御方法。
【請求項１３】
力覚センサの検出値を目標値に近づけるようロボットアームの動作をインピーダンス制御して、第１ワークを第２ワークに接触させた物品を製造する物品の製造方法であって、
前記第１ワークを移動させて、前記力覚センサの検出値から第１の目標値を得る第１の工程と、
前記第１の目標値を前記検出値とみなして、前記インピーダンス制御を行い、前記第１ワークを第２ワークに接触させる第２の工程と、
を備えることを特徴とする物品の製造方法。
【請求項１４】
前記力覚センサの検出値から第２の目標値を得る請求項１３に記載の物品の製造方法。
【請求項１５】
前記第２の工程において、前記インピーダンス制御を前記検出値が前記第２の目標値を超えるまでの期間、行う請求項１４に記載の物品の製造方法。
【請求項１６】
コンピュータに請求項１０乃至１２のいずれか１項に記載のロボット制御方法の各工程を実行させるためのプログラム。
【請求項１７】
請求項１６に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インピーダンス制御を行うロボット制御の技術に関する。
【背景技術】
【０００２】
多関節のロボットアームは、複数のリンクが関節部を介して連結されて構成されている。ロボットアームの先端のリンクには、エンドエフェクタとしてロボットハンドが、力覚センサを介して装着される。
【０００３】
ロボットの動作は、制御装置により制御される。制御装置は、ロボットの動作を制御して、各種の生産作業をロボットに実行させる。生産作業には、例えば第１ワークを第２ワークに嵌合する嵌合作業がある。具体的には、第２ワークを保持具に固定し、ロボットにより第１ワークを第２ワークに嵌合させる。この嵌合作業時、制御装置は、第１ワークを第２ワークに嵌合する移動方向に移動させながら、移動方向と直交する方向の力の検出値が小さくなるようにロボットアームを動作させるインピーダンス制御を行う。
【０００４】
ところで、嵌合作業時、力覚センサには、ロボットハンドの重量やロボットハンドに把持させた第１ワークの重量がかかる。そして、ロボットアームを動作させると、ロボットハンドには、ロボットハンドの自重及び第１ワークの重量により振動が発生する。通常、インピーダンス制御では、力覚センサの検出値が小さくなる方向にロボットアームを動作させようとする。このため第１ワークが第２ワークに接触する前にインピーダンス制御を開始すると、ロボットアーム先端は微小に振動しながら動作するため、力のかかっている方向である振動の方向にロボットハンドの位置を修正しようとしてしまう。このため、第２ワークに対する第１ワークのずれ量が大きくなり、嵌合作業が失敗することがあった。
【０００５】
これに対し、特許文献１では、ロボットハンドに把持させた第１ワークが第２ワークに接触するまでは、位置制御によりロボットアームを動作させ、接触した後は、インピーダンス制御によりロボットアームを動作させる提案がなされている。
【０００６】
この特許文献１では、第１ワークが第２ワークに接触したか否かの判断を、力覚センサの検出値が閾値以上となったか否かで行っている。ここで、力覚センサの検出値には、ロボットハンドの重量や第１ワークの重量などの重力成分が含まれる。例えば、第１ワークを移動させる移動方向が重力方向と直交する方向、即ち水平方向である場合には、移動方向と直交する方向の力検出成分に重力成分が重畳される。したがって、特許文献１では、力覚センサの検出値に含まれる重力成分を補償する重力補償値を、ロボットの姿勢とエンドエフェクタの質量から演算によって求め、検出値に対し重力補償値で補正を行っている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１０−１４２９０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、第１ワークが第２ワークに接触した時に位置制御からインピーダンス制御に切り替えるようにすると、力覚センサには、ロボットハンドを介して過大な負荷が作用することがあった。また、各ワークにも過大な負荷が作用することがあった。
【０００９】
即ち、位置制御では、第１ワークを目標位置に保持するようにロボットアームの動作を制御する。ロボットハンドが把持した第１ワークが第２ワークに接触した時には、第１ワークが第２ワークから受けた外力により目標の位置からずれる方向に移動しようとする。位置制御では、位置ずれを解消する方向に第１ワークを押し戻すようロボットアームを制御するため、第１ワークを第２ワークに押し付ける力が増大する。この結果、ロボットハンドが把持した第１ワークが第２ワークに接触した時には、各ワーク及び力覚センサに過大な負荷が作用することがあった。このような過大な負荷が力覚センサに繰り返し作用すると、力覚センサが劣化し、力覚センサの検出精度が低下したり、力覚センサが破損したりすることがあった。また、過大な負荷がロボットアームに繰り返し作用すると、ロボットアームが劣化したり破損したりすることがあった。また、各ワークの品質、ひいては嵌合作業により製造された物品の品質が低下することもあった。
【００１０】
また、ロボットハンドに把持させる実際の第１ワークには、質量のばらつきがある。このため、第１ワークの質量として、予め決められた値（設計値など）を用いて重力補償値を演算すると、第１ワークには質量のばらつきがあるので、重力補償値には、第１ワークの質量のばらつきによる誤差が含まれることになる。また、ロボットハンドによる第１ワークの把持位置のずれに起因する誤差も重力補償値に含まれることになる。よって、一定の重力補償値で重力補償したロボットアームのインピーダンス制御では、精密な嵌合作業を行うのは困難であった。
【００１１】
そこで本発明は、力覚センサやロボットアームに過大な負荷が繰り返し作用するのを抑制し、各ワークに過大な負荷が作用するのを抑制し、ロボットハンドが把持する第１ワークの質量にばらつきがあっても、高精度な組付作業を可能にすることを目的とする。
【課題を解決するための手段】
【００１２】
本発明のロボット装置は、ロボットアームと、前記ロボットアームに支持された、第１ワークを把持させるロボットハンドと、前記ロボットアームと前記ロボットハンドとの間に設けられた力覚センサと、前記第１ワークが第２ワークに接触させるよう、前記力覚センサの検出値を目標値に近づけるよう前記ロボットアームの動作をインピーダンス制御する制御部と、を備え、前記制御部は、前記ロボットハンドを移動させて、前記力覚センサの検出値から第１の目標値を得る第１の処理と、前記第１の目標値を前記検出値とみなして、前記インピーダンス制御を行う第２の処理と、を実行することを特徴とする。
【００１３】
本発明のロボット制御方法は、第１ワークを第２ワークに接触させるよう、力覚センサの検出値を目標値に近づけるようロボットアームの動作をインピーダンス制御するロボット制御方法であって、前記第１ワークを把持させるロボットハンドを移動させて、前記力覚センサの検出値から第１の目標値を得る第１の工程と、前記第１の目標値を前記検出値とみなして、前記インピーダンス制御を行う第２の工程と、を備えることを特徴とする。
【００１４】
本発明の物品の製造方法は、力覚センサの検出値を目標値に近づけるようロボットアームの動作をインピーダンス制御して、第１ワークを第２ワークに接触させた物品を製造する物品の製造方法であって、前記第１ワークを移動させて、前記力覚センサの検出値から第１の目標値を得る第１の工程と、前記第１の目標値を前記検出値とみなして、前記インピーダンス制御を行い、前記第１ワークを第２ワークに接触させる第２の工程と、を備えることを特徴とする。
【発明の効果】
【００１５】
本発明によれば、力覚センサに過大な負荷が繰り返し作用するのが抑制される。また、各ワークに過大な負荷が作用するのが抑制される。また、ロボットハンドが把持する第１ワークの質量にばらつきがあっても、高精度な組立作業が可能となる。
【図面の簡単な説明】
【００１６】
【図１】第１実施形態に係るロボット装置の概略構成を示す模式図である。
【図２】第１実施形態においてロボットハンドを作業開始位置に位置決めした状態を示す模式図である。
【図３】第１実施形態に係る物品の製造方法（ロボット制御方法）を示すフローチャートである。
【図４】（ａ）〜（ｃ）は、嵌合作業を行うときのロボットの動作を説明するための図である。
【図５】（ａ）〜（ｃ）は、嵌合作業を行うときのロボットの動作を説明するための図である。
【図６】時間に対する力覚センサの検出値及びワークを把持したロボットハンドの移動速度を示す説明図である。
【図７】第２実施形態においてロボットハンドを作業開始位置に位置決めした状態を示す模式図である。
【発明を実施するための形態】
【００１７】
以下、本発明を実施するための形態を、図面を参照しながら詳細に説明する。
【００１８】
［第１実施形態］
図１は、第１実施形態に係るロボット装置の概略構成を示す模式図である。ロボット装置１００は、工場等の生産ラインに配置される生産装置である。ロボット装置１００は、作業ロボットとしてのロボット２００と、ロボット２００の動作を制御する制御装置３００と、を備えて構成される。ロボット２００は、垂直多関節（例えば６関節）のロボットアーム２０１と、ロボットアーム２０１の先端に支持されたエンドエフェクタとしてのロボットハンド２０２とを有している。また、ロボット２００は、ロボットアーム２０１とロボットハンド２０２の間に設けられた力覚センサ２０３を有している。
【００１９】
ロボットアーム２０１は、複数のリンク２１０〜２１６を有し、複数のリンク２１０〜２１６が関節で回転又は旋回（揺動）可能に連結されて構成されている。ロボットアーム２０１の基端（リンク２１０）は、ベース部材を構成し、架台１５０に固定されている。即ち、ロボットアーム２０１の基端（リンク２１０）が固定端であり、ロボットアーム２０１の先端（リンク２１６）が自由端である。ロボットハンド２０２は、ロボットアーム２０１の先端（リンク２１６）に力覚センサ２０３を介して取り付けられている。
【００２０】
ロボットハンド２０２は、複数のフィンガーを有しており、複数のフィンガーを閉動作させることにより、第１ワークであるワークＷ１を把持することができ、複数のフィンガーを開動作させることにより、ワークＷ１を把持解放することができる。また、架台１５０には、第２ワークであるワークＷ２を保持する保持具１６０が設けられている。ワークＷ１は、円環状の部材であり、ワークＷ２は、ワークＷ１が嵌る円筒部を有する部材である。ロボットハンド２０２に把持させたワークＷ１をワークＷ２に接触、組み付けもしくは嵌合することで物品が製造される。なお、ワークＷ１，Ｗ２の形状はこれに限定されるものではない。例えばワークＷ１が円筒状の部材であり、ワークＷ２が嵌合穴を有する部材であってもよい。
【００２１】
力覚センサ２０３は、ロボットアーム２０１の先端にかかる力を検出する。力覚センサ２０３は、６軸力覚センサである。ロボットアーム２０１の先端、即ち力覚センサ２０３には、互いに直交する３軸Ｓｘ，Ｓｙ，Ｓｚからなるセンサ座標系Σｓの原点Ｏｓが設定されている。力覚センサ２０３が検出する力は、センサ座標系Σｓを基準に、互いに直交する３軸Ｓｘ，Ｓｙ，Ｓｚの方向の力成分（Ｆｘ，Ｆｙ，Ｆｚ）及び各軸Ｓｘ，Ｓｙ，Ｓｚまわりのモーメント成分（Ｍｘ，Ｍｙ，Ｍｚ）からなる。よって、力覚センサ２０３は、ロボットアーム２０１の先端に作用するどの方向からの力も検出することができる。力覚センサ２０３としては、静電容量式、歪みゲージ式、光学式、その他の方式のものを用いることができる。
【００２２】
制御装置３００は、制御部（処理部）としてのＣＰＵ（Central  Processing  Unit）３０１を備えている。また、制御装置３００は、記憶部として、ＲＯＭ（Read  Only  Memory）３０２、ＲＡＭ（Random  Access  Memory）３０３、ＨＤＤ（Hard  Disk  Drive）３０４を備えている。また、制御装置３００は、記録ディスクドライブ３０５、複数（ロボットアーム２０１の関節の数と同じ６つ）のサーボ制御回路３１１及びインタフェース３２１，３２２を備えている。これら制御装置３００の各構成要素は、同一の筐体内に収納されているが、別々の筐体内に配置されていてもよい。また、サーボ制御回路３１１は、ロボットアーム２０１内に配置されていてもよい。
【００２３】
ＣＰＵ３０１には、ＲＯＭ３０２、ＲＡＭ３０３、ＨＤＤ３０４、記録ディスクドライブ３０５、サーボ制御回路３１１及びインタフェース３２１，３２２が、バス３１０を介して接続されている。
【００２４】
ＲＯＭ３０２には、ＢＩＯＳ等の基本プログラムが格納されている。ＲＡＭ３０３は、ＣＰＵ３０１の演算処理結果等、各種データを一時的に記憶する記憶装置である。ＨＤＤ３０４は、ＣＰＵ３０１の演算処理結果や外部から取得した各種データ等を記憶する記憶装置であると共に、ＣＰＵ３０１に、後述する各種演算処理を実行させるためのプログラム３５０を記録するものである。ＣＰＵ３０１は、ＨＤＤ３０４に記録（格納）されたプログラム３５０に基づいてロボット制御方法（物品の製造方法）の各工程を実行する。また、ＨＤＤ３０４には、ロボット言語で記述されたロボット動作プログラムが格納されている。記録ディスクドライブ３０５は、記録ディスク３６０に記録された各種データやプログラム等を読み出すことができる。
【００２５】
ＣＰＵ３０１は、各サーボ制御回路３１１に位置指令を出力して各ロボット２００の動作を制御する。各サーボ制御回路３１１は、ロボットアーム２０１の各関節に配置され、各関節を駆動する不図示のモータに接続されており、位置指令に応じてモータを駆動する。
【００２６】
インタフェース３２１には、力覚センサ２０３が接続されている。インタフェース３２１は、力覚センサ２０３の検出結果を、ＣＰＵ３０１にて処理可能な、検出値を示す信号としてＣＰＵ３０１に出力する。
【００２７】
インタフェース３２２には、書き換え可能な不揮発性メモリや外付けＨＤＤ等の外部記憶装置３３０が接続されている。
【００２８】
なお、第１実施形態では、コンピュータ読み取り可能な記録媒体がＨＤＤ３０４であり、ＨＤＤ３０４にプログラム３５０が格納される場合について説明するが、これに限定するものではない。プログラム３５０は、コンピュータ読み取り可能な記録媒体であれば、いかなる記録媒体に記録されていてもよい。例えば、プログラム３５０を供給するための記録媒体としては、図１に示すＲＯＭ３０２や、記録ディスク３６０、外部記憶装置３３０を用いてもよい。具体例を挙げて説明すると、記録媒体として、フレキシブルディスク、ＨＤＤ、ＳＳＤ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、磁気テープ、ＵＳＢメモリ等の不揮発性メモリ、ＲＯＭ等を用いることができる。また、記憶部としてＨＤＤ３０４の場合について説明するが、ＳＳＤや書き換え可能な不揮発性メモリであってもよい。
【００２９】
ここで、ロボットアーム２０１の基端には、互いに直交する３軸Ｘｏ，Ｙｏ，Ｚｏからなる絶対座標系Σｏの原点Ｏが設定されている。また、ロボット２００の手先、つまりロボットハンド２０２には、ツールセンターポイント（ＴＣＰ）が設定されている。ＴＣＰは、ロボットアーム２０１の基端に設定された絶対座標系Σｏの原点Ｏを基準に、位置を表す３つのパラメータと、姿勢を表す３つのパラメータで表される。このＴＣＰの目標値である教示点が、記憶部であるＨＤＤ３０４に格納されたロボット動作プログラムに記述されている。
【００３０】
ＣＰＵ３０１は、ロボット動作プログラムに記述された補間方法に従い、教示点間を補間し、逆運動学計算により各関節の値に変換したロボットアーム２０１の軌道データを生成する。ここで、教示点間を補間する補間方法としては、直線補間、円弧補間、関節補間、Ｓｐｌｉｎｅ補間、Ｂ−Ｓｐｌｉｎｅ補間、ベジェ曲線など、種々の方法がある。軌道データは、時刻毎（例えば１［ｍｓ］毎）の位置指令の集合である。位置指令は、各モータの目標回転位置を表す。ＣＰＵ３０１は、位置指令を各サーボ制御回路３１１に出力することで、ロボットアーム２０１の動作を制御する。
【００３１】
ここで、ロボットアーム２０１の動作の制御として、位置制御とインピーダンス制御がある。位置制御では、ロボット２００の手先に設定したＴＣＰが絶対座標系Σｏの３軸Ｘｏ，Ｙｏ，Ｚｏで目標位置となるようにロボットアーム２０１の動作を制御する。換言すると、ロボットアーム２０１の各関節の関節角度が目標関節角度となるように、即ち各関節のモータの回転位置が目標回転位置となるようにロボットアーム２０１の動作を制御する。このとき、力覚センサ２０３により検出された力の検出値に関係なくロボットアーム２０１の動作を制御する。したがって、ロボット２００の手先に外力が作用すると、その外力に抗してＴＣＰを目標位置に保つように制御する。よって、位置制御を行っているときにロボット２００の手先に外力が作用すると、ロボットアーム２０１の剛性を高める制御をする。
【００３２】
インピーダンス制御では、力覚センサ２０３による力の検出値を目標値（より具体的には０）に近づけるようにロボットアーム２０１の動作を制御する。したがって、ロボット２００の手先に外力が作用した時には、その外力が作用する方向に手先を移動させるよう制御する。例えば、ロボットハンド２０２が把持しているワークＷ１がワークＷ２に引っ掛かるなどして外力がワークＷ１に作用した場合には、外力がワークＷ１を把持しているロボットハンド２０２を介して力覚センサ２０３に伝わる。したがって、力覚センサ２０３により検出された外力が小さくなる方向、即ち引っ掛かりが解消する方向にロボットアーム２０１の動作を制御することになる。よって、インピーダンス制御を行っているときには、ロボットアーム２０１の柔軟性を高める制御をする。
【００３３】
図２は、第１実施形態においてロボットハンドを作業開始位置に位置決めした状態を示す模式図である。
【００３４】
第１実施形態では、ワークＷ１をワークＷ２に嵌合する嵌合作業を行い、ワークＷ１がワークＷ２に嵌合された物品Ｗ０を製造する。ＣＰＵ３０１は、嵌合作業を行う際には、位置制御とインピーダンス制御のいずれかを選択的に実行する。
【００３５】
力覚センサ２０３は、リンク２１６のフランジ面に固定されている。フランジ面に垂直な方向に、センサ座標系ΣｓのＳｚ軸が延びている。ロボットハンド２０２は、力覚センサ２０３の先端に装着され、ワークＷ１を把持する。被嵌合ワークであるワークＷ２は、中心軸Ｃ２が絶対座標系ΣｏのＸｏ軸と平行な向きに固定される。
【００３６】
第１実施形態では、センサ座標系ΣｓのＳｚ軸と絶対座標系ΣｏのＸｏ軸とが平行な状態となり、センサ座標系ΣｓのＳｘ軸と絶対座標系ΣｏのＺｏ軸とが平行な状態でワークＷ１とワークＷ２との嵌合作業を行う。図２では、ワークＷ１の中心軸Ｃ１がワークＷ２の中心軸Ｃ２と重なるようにロボットアーム２０１を制御した状態を図示している。図２に示すように、第１実施形態では、ワークＷ１とワークＷ２とが接触しない位置を、嵌合作業を開始する（つまりインピーダンス制御を開始する）作業開始位置とする。この作業開始位置に位置決めした状態から、ワークＷ１をＸｏ軸の方向（Ｓｚ軸の方向）である移動方向Ｄに移動させて、ワークＷ１をワークＷ２に嵌合する嵌合作業を行う。
【００３７】
図３は、第１実施形態に係る物品の製造方法、即ちロボット制御方法を示すフローチャートである。図４（ａ）〜図４（ｃ）及び図５（ａ）〜図５（ｃ）は、嵌合作業を行うときのロボット２００の動作を説明するための図である。図６は、時間に対する力覚センサの検出値及びワークを把持したロボットハンドの移動速度を示す説明図である。なお、第１実施形態では、嵌合作業を行う移動方向Ｄが水平方向であるものとして説明する。
【００３８】
図４（ａ）は、ワークＷ１を位置ＰＡに移動させた状態を示す図である。図４（ｂ）は、ワークＷ１を位置ＰＢに移動させた状態を示す図である。図４（ｃ）は、ワークＷ１を位置ＰＣに移動させた状態を示す図である。図５（ａ）は、ワークＷ１を位置ＰＤに移動させた状態を示す図である。図５（ｂ）は、ワークＷ１を位置ＰＥに移動させた状態を示す図である。図５（ｃ）は、ワークＷ１からロボット２００を退避させた状態を示す図である。
【００３９】
位置ＰＡは、ワークＷ１をロボットハンド２０２に把持させてから次の位置ＰＢに移動させる途中のワークＷ１の位置である。位置ＰＢは、ワークＷ１がワークＷ２に対向し、ワークＷ１がワークＷ２に接触しない位置である。例えば、ワークＷ１とワークＷ２との間隔が１０［ｍｍ］となる位置である。位置ＰＣは、ワークＷ１がワークＷ２に対向し、ワークＷ１がワークＷ２に接触しない位置であって、嵌合作業を開始する位置、即ちインピーダンス制御を開始する位置（作業開始位置）である。そして、位置ＰＣは、位置ＰＢよりもワークＷ２に近い位置である。例えば、ワークＷ１とワークＷ２との間隔が５［ｍｍ］となる位置である。これら位置ＰＡ，ＰＢ，ＰＣは、予め教示により設定された位置である。位置ＰＤは、ワークＷ１がワークＷ２に接触する位置である。位置ＰＥは、ワークＷ１がワークＷ２に嵌合完了する位置、即ちインピーダンス制御を終了する位置（作業完了位置）である。
【００４０】
位置ＰＡへのワークＷ１の移動が完了すると、位置ＰＡから位置ＰＥまで連続的にロボットアーム２０１を動作させる。
【００４１】
まず、ＣＰＵ３０１は、ロボットハンド２０２にワークＷ１を把持させている位置ＰＡ（図４（ａ））から位置ＰＢ（図４（ｂ））にワークＷ１が移動するよう、ロボットアーム２０１の動作を制御する（Ｓ１）。このステップＳ１では、ＣＰＵ３０１は、位置制御によりロボットアーム２０１の動作を制御する。この位置制御により、ワークＷ１の中心軸Ｃ１がワークＷ２の中心軸Ｃ２にほぼ一致するようにワークＷ１がワークＷ２に対向する。
【００４２】
次にＣＰＵ３０１は、ロボットハンド２０２にワークＷ１を把持させた状態で、ワークＷ１が位置ＰＢ（図４（ｂ））から位置ＰＣ（図４（ｃ））まで移動するようロボットアーム２０１の動作の制御を開始する（Ｓ２）。このとき速度Ｖｘは一定であることが好ましく、例えば３５［ｍｍ／ｓ］とする。ここで速度が一定とは速度が変化しない場合に限らず、指定速度に対し、速度の最大値と最小値の差の絶対値が１０％以下のことである。このとき、ＣＰＵ３０１は、ロボットアーム２０１の動作を制御して、ロボットアーム２０１の先端の姿勢を一定に保ちつつロボットアーム２０１の先端を移動方向Ｄへ移動させる。つまり、ＣＰＵ３０１は、ステップＳ２では、ワークＷ１が移動方向Ｄに移動するようロボットアーム２０１の動作を制御する。
【００４３】
ここで、ロボットハンド２０２には重量ＷＧ２があり、ロボットハンド２０２が把持したワークＷ１にも重量ＷＧ１がある（図２）。ロボットアーム２０１の動作中、ロボットハンド２０２は、ロボットハンド２０２が把持したワークＷ１の慣性力及びロボットハンド２０２の慣性力により振動する。具体的には、力覚センサ２０３は、ばね部材（可撓性部材）と、ばね部材の変形を検出する素子とを有する。ワークＷ１の慣性力及びロボットハンド２０２の慣性力により力覚センサ２０３のばね部材が変形してロボットハンド２０２が振動する。この振動は、力覚センサ２０３の力の検出値に現れる。そして、この振動は、重力の方向が顕著に現れる。例えば、図６に示すように、力覚センサ２０３のＳｘ軸方向の力の検出値Ｆｘが振動する。
【００４４】
したがって、ＣＰＵ３０１は、位置ＰＢから位置ＰＣへワークＷ１を動作させているときに、力覚センサ２０３からの力の検出値（データ）を取得する（Ｓ３）。そして、ＣＰＵ３０１は、ワークＷ１が位置ＰＣに到達したか否かを判断し（Ｓ４）、到達していなければ（Ｓ４：Ｎｏ）、ステップＳ３に戻り、ワークＷ１が位置ＰＣに到達するまで、力覚センサ２０３からのデータの取得を続行する。ステップＳ３，Ｓ４のループによる力覚センサ２０３のデータ数は適宜決定してよい。第１実施形態では、例えば、データのサンプリング周期を１［μｓ］、位置ＰＢから位置ＰＣまでのサンプリング時間を０．２［ｓ］とした。
【００４５】
以上、ＣＰＵ３０１は、ステップＳ２〜Ｓ４において、位置ＰＢから位置ＰＣまでワークＷ１を移動するようロボットアーム２０１の動作を制御する（定速処理、定速工程）。このとき速度Ｖｘが一定であると、ロボットハンド２０２及びワークＷ１に加速度が生じないようにロボットアーム２０１を動作できる。このとき、ロボットハンド２０２及びワークＷ１に加速度が生じないように、ロボットハンド２０２及びワークＷ１を直線移動させるのが好ましい。
【００４６】
ＣＰＵ３０１は、ワークＷ１が位置ＰＣ（図４（ｃ））に到達したと判断した場合（Ｓ４：Ｙｅｓ）、力覚センサ２０３の検出値から目標値を得るために検出値Ｆｘ，Ｆｙの中心値、及び中心値に対する最大の振幅値を演算する（Ｓ５：演算処理、演算工程）。つまり、ステップＳ５では、位置ＰＢから位置ＰＣまでロボットハンドを移動させた期間中に取得した力覚センサ２０３の移動方向Ｄに交差（直交）する方向である軸Ｓｘ，Ｓｙの方向の力の検出値の中心値と振動の振幅を得る。第１実施形態では、検出値Ｆｙは０であったものとし、重力方向にのみロボットハンド２０２が振動していたものとして説明する。即ち、図６に示すように、位置ＰＢから位置ＰＣまで定速処理を行った期間中に取得した力覚センサ２０３の検出値Ｆｘの中心値Ｆｃｘ及び中心値Ｆｃｘに対する最大の振幅値ΔＦｘを得る。ＣＰＵ３０１は、これら値Ｆｃｘ，ΔＦｘを、図１のＨＤＤ３０４等の記憶部に記憶させておく。ここでの中心値とは、力覚センサ２０３より得られたデータを不図示のローパスフィルタ回路を用いてカットオフ周波数よりも高い周波数をフィルタアウトした値の全データの平均値である。
【００４７】
次に、ＣＰＵ３０１は、検出値Ｆｘを第１の目標値に近づけるインピーダンス制御を行いながら、ワークＷ１が位置ＰＣ（図４（ｃ））から位置ＰＥ（図５（ｂ））まで移動方向Ｄに移動するようロボットアームの動作を制御する（Ｓ６〜Ｓ１３：嵌合処理）。本実施形態では第１の目標値は中心値Ｆｃｘである。また、ワークＷ１を移動方向Ｄに移動させながら、力覚センサ２０３により検出された力の検出値のうち、移動方向と直交（交差）する方向の検出値Ｆｘが中心値Ｆｃｘに近づくようにロボットアーム２０１を動作させるインピーダンス制御を行うことが好ましい。このように、ＣＰＵ３０１は、ワークＷ１が位置ＰＣに到達したら、位置制御からインピーダンス制御にロボットアーム２０１の動作の制御を切り替える。
【００４８】
ＣＰＵ３０１は、ステップＳ８〜Ｓ１０において、位置ＰＣ（図４（ｃ））から位置ＰＤ（図５（ａ））までの期間、第１の目標値を検出値とみなして（ここでは、検出値Ｆｘが中心値Ｆｃｘと同じ値になっているとみなして）インピーダンス制御を行う。位置ＰＣから位置ＰＤまでの期間は、位置ＰＣからワークＷ１の移動を開始してから、力覚センサの検出値が第２の目標値を超えるまでの期間である。本実施形態では、第２の目標値は、中心値Ｆｃｘに対する検出値Ｆｘの偏差｜Ｆｘ−Ｆｃｘ｜と振幅値ΔＦｘとを等しくする検出値Ｆｘである。以上、ここまでを第１の処理という。
【００４９】
以下、ステップＳ６以降の処理について具体的に説明する。ＣＰＵ３０１は、力覚センサ２０３の初期化を行う（Ｓ６）。具体的には、ＣＰＵ３０１は、検出値Ｆｘを、図６に示すように、中心値Ｆｃｘを基準とする値に補正する。この中心値Ｆｃｘにより、ロボットハンド２０２の重量ＷＧ２及びワークＷ１の重量ＷＧ１による重力成分が検出値Ｆｘから差し引かれる。
【００５０】
このように、ワークＷ１をワークＷ２に嵌合する嵌合作業をするたびに重力補償値である中心値Ｆｃｘを計測するようにしたので、ロボットハンド２０２が把持するワークＷ１に重量ＷＧ１のばらつきがあっても、精度よく重力成分を補償することができる。また、ロボットハンド２０２におけるワークＷ１の把持位置にばらつきがあっても、精度よく重力成分を補償することができる。
【００５１】
次に、ＣＰＵ３０１は、インピーダンス制御を開始する（Ｓ７）と同時に、位置ＰＣから移動を開始する（Ｓ８）。インピーダンス制御では、補正後の検出値Ｆｘを０に近づける制御を行う。インピーダンス制御を開始したところを第２の処理の開始時期とする。
【００５２】
ＣＰＵ３０１は、位置ＰＣから位置ＰＤまでの期間中、ワークＷ１が一定の速度で移動するようロボットアーム２０１の動作を制御する。つまり、ロボットハンド２０２（ワークＷ１）に加速度が生じるのを防止している。
【００５３】
このとき、ＣＰＵ３０１は、ステップＳ２〜Ｓ４の処理に引き続き、当該処理でワークＷ１を移動させた速度と同じ速度ＶｘでワークＷ１を移動方向Ｄに移動させることが好ましい。つまり、第１の処理と同じ条件でワークＷ１を移動させることが好ましい。これにより、ロボットハンド２０２の振動の状態は、第１の処理の場合とほぼ同様となるからである。
【００５４】
そして、ＣＰＵ３０１は、振幅値ΔＦｘを不感帯とし、補正後の検出値Ｆｘの大きさが不感帯ΔＦｘ以上であるか否かを判断する（Ｓ９）。ＣＰＵ３０１は、補正後の検出値Ｆｘの大きさが不感帯ΔＦｘ以上でなければ（Ｓ９：Ｎｏ）、補正後の検出値Ｆｘが０になっているとみなす（Ｓ１０）。即ち、力覚センサ２０３から検出した（補正していない）検出値Ｆｘが中心値Ｆｃｘ（第一の目標値）になっているものとみなす。
【００５５】
つまり、位置ＰＣから位置ＰＤまでは、ワークＷ１はワークＷ２に接触しておらず、ステップＳ２〜Ｓ４の処理と同様、ロボットハンド２０２が振動している状態である。よって、ロボットハンド２０２が振動している間は、不感帯ΔＦｘを設けてインピーダンス制御を行う。
【００５６】
仮に、不感帯ΔＦｘを設けずにインピーダンス制御を行うと、外力が作用している振動の方向にロボットハンド２０２（ワークＷ１）の位置を補正しようとするため、ワークＷ２の中心軸Ｃ２に対するワークＷ１の中心軸Ｃ１のずれ量が大きくなるおそれがある。
【００５７】
これに対し、第１実施形態では、ステップＳ９，Ｓ１０により、ワークＷ１がワークＷ２に接触するまでの期間は、補正後の検出値Ｆｘが０になっているものとみなしているので、中心軸Ｃ２に対する中心軸Ｃ１のずれ量を小さくすることができる。具体的には、ロボットハンド２０２の振動の分のずれ量にすることができる。よって、ワークＷ１を位置ＰＣから位置ＰＤまで良好に案内することができる。
【００５８】
ＣＰＵ３０１は、ステップＳ９において、補正後の検出値Ｆｘの大きさが不感帯ΔＦｘ以上と判断した場合（Ｓ９：Ｙｅｓ）、ワークＷ１がワークＷ２に接触したので、不感帯を解除し（Ｓ１１）、インピーダンス制御を続行する。
【００５９】
第１実施形態では、移動方向Ｄと交差（直交）する交差方向においては、インピーダンス制御にてワークＷ１をワークＷ２に接触させている。つまり、位置制御のときのように、ワークＷ１がワークＷ２に接触した時に生じる交差方向のずれを解消しようとする力が、ワークＷ１，Ｗ２にかからないようにしている。これにより、ワークＷ１がワークＷ２に接触したときの接触力だけがワークＷ１，Ｗ２にかかるようになるため、ワークＷ１，Ｗ２及び力覚センサ２０３に過負荷がかかるのを抑制することができる。
【００６０】
ＣＰＵ３０１は、移動方向ＤへのワークＷ１の移動を継続しながら、検出値Ｆｚが予め設定された閾値ＴＨｚ以上であるか否かを判断する（Ｓ１２）。ＣＰＵ３０１は、検出値Ｆｚが閾値ＴＨｚを下回ると判断した場合（Ｓ１２：Ｎｏ）、ステップＳ１２を繰り返し、ワークＷ１を移動方向Ｄに移動させながらインピーダンス制御を継続する。
【００６１】
ＣＰＵ３０１は、検出値Ｆｚが閾値ＴＨｚ以上であると判断した場合（Ｓ１２：Ｙｅｓ）、インピーダンス制御を終了する（Ｓ１３）。このように、ステップＳ１１〜ステップＳ１３までのインピーダンス制御では、不感帯ΔＦｘが解除されているので、力覚センサ２０３の検出値に基づいて感度よくインピーダンス制御による嵌合作業を行うことができる。このため、嵌合作業の途中でワークＷ１がワークＷ２に引っ掛かるのが抑制され、高精度な組付作業が可能となる。
【００６２】
ＣＰＵ３０１は、ワークＷ１が位置ＰＥ（図５（ｂ））に到達したか否かを判断する（Ｓ１４）。ＣＰＵ３０１は、ワークＷ１が位置ＰＥに到達したと判断した場合（Ｓ１４：Ｙｅｓ）、嵌合作業が成功したので、ワークＷ１の把持を解除する（Ｓ１５）。ワークＷ１が位置ＰＥに到達したと判断したところまでを第２の処理という。そして、ＣＰＵ３０１は、図５（ｃ）に示すように退避位置にロボットハンド２０２が退避するようロボットアーム２０１を制御する（Ｓ１６）。
【００６３】
なお、ＣＰＵ３０１は、ワークＷ１が位置ＰＥに到達していないと判断した場合（Ｓ１４：Ｎｏ）、嵌合作業が失敗しているので、ロボットアーム２０１の動作を停止する（Ｓ１７）。
【００６４】
以上、第１実施形態によれば、位置ＰＣから位置ＰＤまでワークＷ１が移動する期間中、不感帯ΔＦｘを設けてインピーダンス制御を行うので、ロボットアーム２０１や力覚センサ２０３、特に力覚センサ２０３に過大な負荷が繰り返し作用するのが抑制される。よって、ロボットアーム２０１や力覚センサ２０３が劣化したり破損したりするのを抑制することができる。また、各ワークＷ１，Ｗ２に過大な負荷が作用するのが抑制される。よって、各ワークＷ１，Ｗ２、ひいては物品Ｗ０の品質が向上する。
【００６５】
また、第１実施形態では、事前にワークＷ１の重量のデータを取得しておく必要がない。ロボットハンド２０２が把持するワークＷ１の質量にばらつきがあっても、ロボットハンド２０２に対するワークＷ１の把持位置にばらつきがあっても、ワークＷ１毎に中心値Ｆｃｘを計測して重力補償を行うので、高精度な嵌合作業が可能となる。
【００６６】
また、第１実施形態によれば、ワークＷ１を直進移動させて嵌合作業を行う際にインピーダンス制御時の直進性を担保することができる。また、第１実施形態によれば、ワークＷ１を位置ＰＣから位置ＰＤまで移動させるときに、ワークＷ１の移動速度を落とすことなく嵌合作業を行うことができる。
【００６７】
なお、以上の説明では、Ｓｘ軸の方向に振動が発生する場合について説明したが、Ｓｙ軸の方向に振動が発生する場合も同様に不感帯を設けてインピーダンス制御を行えばよい。
【００６８】
［第２実施形態］
次に、第２実施形態に係るロボット装置による物品の製造方法、即ちロボット制御方法について説明する。図７は、第２実施形態においてロボットハンドを作業開始位置に位置決めした状態を示す模式図である。
【００６９】
第２実施形態において、ロボット装置の構成は第１実施形態と同様であるので、各構成の説明は省略する。第２実施形態では、嵌合作業を行う各ワークの形状が異なる。第１ワークであるワークＷ１１は、４５度に屈曲したＬ字形状をした筒部材である。
【００７０】
したがって、ロボットアーム２０１の先端を、水平状態に対して４５度傾けた状態で、水平方向であるＸｏ軸の方向に移動させて、第２ワークであるワークＷ１２にワークＷ１１を嵌合する嵌合作業を行う。つまり絶対座標系ΣｏのＺｏ軸に対し、センサ座標系ΣｓのＳｘ軸が４５度傾いており、かつ絶対座標系ΣｏのＸｏ軸に対し、センサ座標系ΣｓのＳｚ軸が４５度傾いた位置関係となる。ワークＷ１１の重量ＷＧ１１の方向と、ロボットハンド２０２の重量ＷＧ１２の方向は、センサ座標系ΣｓのＳｘ軸に対して４５度傾いている。
【００７１】
第２実施形態では、ワークＷ１１の移動方向Ｄとセンサ座標系Σｓが一致しない。したがって、ステップＳ５では、力覚センサ２０３の３つの検出値Ｆｘ，Ｆｙ，Ｆｚから移動方向ＤであるＸｏ軸の方向と、これに直交する方向であるＺｏ軸の方向及びＹｏ軸の方向の力を検出値として求める。第２実施形態の場合、重力成分は、Ｚｏ軸の方向の力に含まれる。したがって、第２実施形態では、Ｚｏ軸の方向の力の中心値と振幅値を求め、第１実施形態と同様、ステップＳ６において力覚センサ２０３の初期化を行う。
【００７２】
したがって、ステップＳ６〜Ｓ１３の嵌合処理では、Ｘｏ軸の方向にワークＷ１１を移動させながら、Ｚｏ軸の方向及びＹｏ軸の方向の力の検出値が０に近づくようにインピーダンス制御を行う。
【００７３】
ところで、第１実施形態と同様、ステップＳ９では、このステップＳ５で求めた振幅値を不感帯とする。作業開始位置からワークＷ１１の移動を開始してから、Ｚｏ軸の方向の中心値に対する検出値の偏差が振幅値を超えるまでの期間は、検出値が中心値と同じ値になっている。つまり検出値を第１の目標値（ここでは中心値）を基準とする値に補正し、補正後の検出値を０とみなしてインピーダンス制御を行う。
【００７４】
したがって、第２実施形態によれば、嵌合するワークの形状が異なっても、第１実施形態と同様に嵌合作業を行うことが可能である。
【００７５】
なお、本発明は、以上説明した実施形態に限定されるものではなく、本発明の技術的思想内で多くの変形が可能である。また、実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、実施形態に記載されたものに限定されない。
【００７６】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００７７】
また、上述の実施形態では、ロボットアーム２０１が垂直多関節のロボットアームの場合について説明したが、これに限定するものではない。ロボットアームが、例えば、水平多関節のロボットアーム、パラレルリンクのロボットアーム、直交ロボット等、種々のロボットアームであってもよい。
【００７８】
また、上述の実施形態では、力の検出値が不感帯以上となった時点で不感帯を解除したが、不感帯以上となった後でも、嵌め合いの長さが短い場合や、振動の影響をあまり受けない場合は不感帯を解除しなくてもよい。
【００７９】
また、上述の実施形態では、嵌合作業を行う第１ワークの移動方向が水平方向である場合について説明したが、これに限定するものではなく、移動方向が垂直方向、傾斜方向など、いずれの方向であってもよい。
【符号の説明】
【００８０】
２０１…ロボットアーム、２０２…ロボットハンド、２０３…力覚センサ、３０１…ＣＰＵ（制御部）
【図１】
2018020430.tif 000003
【図２】
2018020430.tif 000004
【図３】
2018020430.tif 000005
【図４】
2018020430.tif 000006
【図５】
2018020430.tif 000007
【図６】
2018020430.tif 000008
【図７】
2018020430.tif 000009