(57)【要約】【課題】ロボットの共振を効果的に抑制する。【解決手段】動作プログラムに従ってロボットを動作させる（Ｓ２：動作工程）。力覚センサにより検出された振動からロボットが共振したか否かを判断する（Ｓ４：判断工程）。ロボットが共振したと判断した場合、ロボットの固有振動数を求める（Ｓ５：固有振動数算出工程）。各振動検出部により検出された振動から各関節の振動周波数を求める（Ｓ１１：振動周波数算出工程）。固有振動数と各振動周波数とを比較してロボットの共振を発生させた関節を特定する（Ｓ６：特定工程）。特定した関節を駆動する関節駆動部の電動モータの回転数を変更し、動作プログラムを更新する（Ｓ７：更新工程）。【選択図】図４
2015199149.tif 000002
【特許請求の範囲】
【請求項１】
ロボットが、多関節のロボットアームと、前記ロボットアームに取り付けられたエンドエフェクタと、前記エンドエフェクタの振動を検出する第１振動検出部と、を有しており、
前記ロボットアームが、各関節に設けられ、前記各関節を駆動する関節駆動部と、前記各関節に設けられ、前記各関節の振動を検出する第２振動検出部と、を有しており、
前記各関節駆動部が、電動モータを有しており、
制御部が、動作プログラムに従って前記ロボットの動作を制御するロボット制御方法であって、
前記制御部が、前記動作プログラムに従って前記ロボットを動作させる動作工程と、
前記制御部が、前記第１振動検出部により検出された振動から前記ロボットが共振したか否かを判断する判断工程と、
前記制御部が、前記判断工程にて前記ロボットが共振したと判断した場合、前記ロボットの固有振動数を求める固有振動数算出工程と、
前記制御部が、前記各第２振動検出部により検出された振動から前記各関節の振動周波数を求める振動周波数算出工程と、
前記制御部が、前記固有振動数と前記各振動周波数とを比較して前記ロボットの共振を発生させた関節を特定する特定工程と、
前記制御部が、前記特定した関節を駆動する関節駆動部の電動モータの回転数を変更し、前記動作プログラムを更新する更新工程と、を備えたことを特徴とするロボット制御方法。
【請求項２】
前記制御部が、前記更新工程の後、再度、前記動作工程及び前記判断工程を実行することを特徴とする請求項１に記載のロボット制御方法。
【請求項３】
前記更新工程では、前記制御部が、前記特定した関節を駆動する関節駆動部の電動モータの回転数を大きくすることを特徴とする請求項１又は２に記載のロボット制御方法。
【請求項４】
前記判断工程では、前記制御部が、前記ロボットが共振したか否かの判断を、前記ロボットの関節を等角速度で駆動しているときに前記第１振動検出部にて検出された振動から判断することを特徴とする請求項１乃至３のいずれか１項に記載のロボット制御方法。
【請求項５】
前記判断工程では、前記制御部が、前記ロボットが共振したか否かを、前記第１振動検出部により検出した振動の振幅が閾値を超えたか否かで判断することを特徴とする請求項１乃至４のいずれか１項に記載のロボット制御方法。
【請求項６】
前記各関節駆動部は、前記電動モータの回転を減速して関節に伝達する減速機構部をさらに有し、前記第２振動検出部は、前記電動モータの回転軸の角度を検出する第１角度検出器と、前記関節の角度を検出する第２角度検出器と、を有しており、
前記関節の振動は、前記第１角度検出器が検出した角度、前記第２角度検出器が検出した角度、及び前記減速機構部の減速比から求まる前記減速機構部の角度伝達誤差であることを特徴とする請求項１乃至５のいずれか１項に記載のロボット制御方法。
【請求項７】
前記各関節駆動部は、前記電動モータの回転を減速して関節に伝達する減速機構部をさらに有し、前記第２振動検出部は、前記関節の角度を検出する角度検出器を有しており、
前記関節の振動は、前記電動モータに対する角度指令値、前記角度検出器が検出した角度、及び前記減速機構部の減速比から求まる前記減速機構部の角度伝達誤差であることを特徴とする請求項１乃至５のいずれか１項に記載のロボット制御方法。
【請求項８】
前記第１振動検出部は、前記ロボットアームと前記エンドエフェクタとの間に配置され、前記エンドエフェクタに作用する力を検出する力覚センサであることを特徴とする請求項１乃至７のいずれか１項に記載のロボット制御方法。
【請求項９】
ロボットと、動作プログラムに従って前記ロボットの動作を制御する制御部と、を備え、
前記ロボットは、多関節のロボットアームと、前記ロボットアームに取り付けられたエンドエフェクタと、前記エンドエフェクタの振動を検出する第１振動検出部と、を有し、
前記ロボットアームは、各関節に設けられ、前記各関節を駆動する関節駆動部と、前記各関節に設けられ、前記各関節の振動を検出する第２振動検出部と、を有し、
前記各関節駆動部は、電動モータを有し、
前記制御部は、請求項１乃至８のいずれか１項に記載のロボット制御方法の各工程を実行して前記動作プログラムを設定することを特徴とするロボット装置。
【請求項１０】
前記各関節駆動部は、前記電動モータの回転を減速して関節に伝達する減速機構部をさらに有し、
前記第２振動検出部は、前記電動モータの回転軸の角度を検出する第１角度検出器と、前記関節の角度を検出する第２角度検出器と、を有し、
前記関節の振動は、前記第１角度検出器が検出した角度、前記第２角度検出器が検出した角度、及び前記減速機構部の減速比から求まる前記減速機構部の角度伝達誤差が検出されることを特徴とする請求項９記載のロボット装置。
【請求項１１】
コンピュータに請求項１乃至８のいずれか１項に記載のロボット制御方法の各工程を実行させるためのプログラム。
【請求項１２】
請求項１１に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動作プログラムに従ってロボットの動作を制御するロボット制御方法、ロボット装置、プログラム及び記録媒体に関する。
【背景技術】
【０００２】
近年、小型で複雑な構造をした製品の組立に対する自動化の要求が高まっている。製品の組立には、高速かつ精密な組付けを行う産業用のロボットが用いられている。ロボットは、ロボットアームと、ロボットアームに取り付けられたエンドエフェクタとを有している。
【０００３】
また、コストを抑えた生産体制を確立すべく、一つのロボットが複数の組立工程を担うようにしている。このロボットを用いて、高速かつ高精度で安定した、生産性の高い生産ラインの確立が望まれている。
【０００４】
しかし、精密な組付けを行う際に、ロボットアームの関節において駆動力を伝達する機械的な伝達機構や減速機がもつ角度伝達誤差に起因する固有振動数での共振により、ロボットの先端部、即ちエンドエフェクタが振動し、精密な組付ができない問題があった。具体例を挙げると、ロボットに共振による振動が発生すると、エンドエフェクタがハンドである場合には、ハンドが把持している部品がずれたり落下することで組み付けができなくなったり、部品同士の接触による破損などが発生したりする場合があった。
【０００５】
そこで、ロボットの固有振動数による共振を抑える例として、特許文献１及び特許文献２が提案されている。
【０００６】
特許文献１に開示された産業用ロボットの動力伝達機構では、産業用ロボットの関節部分の減速機に、減速機の捩じれ剛性と同程度もしくは小さい捩じれ剛性をもつ中間軸を連結するものである。
【０００７】
また、特許文献２に開示されたロボットアームのサーボ制御装置では、速度指令値と振動の周波数とから角度伝達誤差に起因する共振と特定した場合、比例積分ゲインを下げるものである。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０００−２３３３９２号公報
【特許文献２】特許第３１５１８４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献１に記載の構成では、関節部分に機械的な機構を設けているため固有振動数の変化に柔軟に対応ができない。一つのロボットが多くの組立工程を担う自動組立装置では、ロボットの位置及び姿勢や把持する部品などの重量が組立工程により変わり、固有振動数が変化する。特許文献１に記載のロボット装置では、この変化に柔軟に対応できず、ある位置及び姿勢の動作では共振を小さくできても別の位置及び姿勢の動作では、共振を抑えきれず精密な組み立てができない場合があった。つまり、ロボットの位置及び姿勢や先端重量の変化による固有振動数の変化に対応できない場合があった。
【００１０】
また、特許文献２では、減速機等の角度伝達誤差に起因する共振の場合、比例積分ゲインを下げるものであるが、比例積分ゲインを下げても、ロボットの共振が生じやすい等速域でロボットの共振を低減する効果は低いものであった。
【００１１】
そこで、本発明は、ロボットの共振を効果的に抑制することを目的とする。
【課題を解決するための手段】
【００１２】
本発明のロボット制御方法は、ロボットが、多関節のロボットアームと、前記ロボットアームに取り付けられたエンドエフェクタと、前記エンドエフェクタの振動を検出する第１振動検出部と、を有しており、前記ロボットアームが、各関節に設けられ、前記各関節を駆動する関節駆動部と、前記各関節に設けられ、前記各関節の振動を検出する第２振動検出部と、を有しており、前記各関節駆動部が、電動モータを有しており、制御部が、動作プログラムに従って前記ロボットの動作を制御するロボット制御方法であって、前記制御部が、前記動作プログラムに従って前記ロボットを動作させる動作工程と、前記制御部が、前記第１振動検出部により検出された振動から前記ロボットが共振したか否かを判断する判断工程と、前記制御部が、前記判断工程にて前記ロボットが共振したと判断した場合、前記ロボットの固有振動数を求める固有振動数算出工程と、前記制御部が、前記各第２振動検出部により検出された振動から前記各関節の振動周波数を求める振動周波数算出工程と、前記制御部が、前記固有振動数と前記各振動周波数とを比較して前記ロボットの共振を発生させた関節を特定する特定工程と、前記制御部が、前記特定した関節を駆動する関節駆動部の電動モータの回転数を変更し、前記動作プログラムを更新する更新工程と、を備えたことを特徴とする。
【発明の効果】
【００１３】
本発明によれば、ロボットの固有振動数の変化にも対応して、ロボットの共振を抑制することができる。
【図面の簡単な説明】
【００１４】
【図１】第１実施形態に係るロボット装置の概略構成を示す説明図である。
【図２】第１実施形態に係るロボット装置のロボットアームの１つの関節を示すブロック図である。
【図３】第１実施形態に係るロボット装置の制御システムの構成を示すブロック図である。
【図４】第１実施形態に係るロボット制御方法を示すフローチャートである。
【図５】時刻に対するロボットの先端部の速度パターン、力覚センサの出力、及び角度伝達誤差を示す図である。
【図６】ロボットの先端部の振動波形と関節の振動波形を周波数解析した結果を示す図である。
【図７】第２実施形態に係るロボット制御方法を示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、本発明を実施するための形態を、図面を参照しながら詳細に説明する。
【００１６】
［第１実施形態］
図１は、本発明の第１実施形態に係るロボット装置の概略構成を示す説明図である。図１に示す自動組立装置であるロボット装置１００は、ロボット２００と、ロボット２００の動作を制御する制御部である制御システム３００と、ティーチングペンダント等の操作盤４００と、を有している。
【００１７】
ロボット２００は、垂直多関節型のロボットアーム２０１と、エンドエフェクタであるロボットハンド２０２と、ロボットハンド２０２に作用する力（モーメントを含む）を検出する力覚センサ２０３と、を有している。
【００１８】
ロボットアーム２０１は、複数のリンク（アーム部材）が複数の関節で旋回又は回転可能に連結されて構成されている。ロボットアーム２０１の基端（基端リンク、ベース部ともいう）は、架台の上面に固定されている。
【００１９】
ロボットアーム２０１の先端（先端リンク）には、力覚センサ２０３を介してロボットハンド２０２が取り付けられている。ロボットハンド２０２は、ワークＷ１を把持又は把持解放することができる。
【００２０】
第１実施形態では、力覚センサ２０３は、ロボットハンド２０２の振動を検出する第１振動検出部として機能する。以下、力覚センサ２０３がロボットハンド２０２の振動を検出するものとして説明するが、力覚センサ２０３以外に、振動センサをロボットハンド２０２に取り付けてもよい。
【００２１】
制御システム３００は、制御装置３０１と、演算装置３０２と、記憶装置３０３とを有しており、相互に通信可能にケーブルで接続されている。
【００２２】
記憶装置３０３には、ロボット２００の動作を規定する動作プログラムが記憶（設定）されている。演算装置３０２は、記憶装置３０３に記憶（設定）された動作プログラムに基づき、ロボット２００を動作させる軌道計算を行う。ここで、軌道は、時刻に対する各関節の角度パラメータで定義される。動作プログラムに基づいて計算した軌道により、関節の駆動速度が決まる。また、演算装置３０２は、記憶装置３０３に記憶された動作プログラムの更新（補正）を行う。
【００２３】
制御装置３０１は、演算装置３０２から取得したロボット２００の軌道に基づき、所定時間間隔でロボット２００の各関節の関節駆動部に角度指令を送信する。
【００２４】
操作盤４００は、ケーブル等で制御装置３０１に接続されており、ユーザの操作に応じた操作指令を制御装置３０１に送信する。制御装置３０１は、操作盤４００からの操作指令に基づき、ロボット２００の各関節の関節駆動部に角度指令を送信する。
【００２５】
ロボットアーム２０１は、各関節に対して設けられ、各関節をそれぞれ駆動する関節駆動部２３０を関節の数だけ複数有している。また、ロボットアーム２０１は、各関節に対して設けられ、各関節の振動をそれぞれ検出する第２振動検出部としての振動検出部２４０を関節の数だけ複数有している。
【００２６】
なお、図１では、関節駆動部２３０及び振動検出部２４０は、便宜上、関節Ｊ１にのみ図示し、他の関節には、図示を省略しているが、同様の構成の関節駆動部２３０及び振動検出部２４０が配置されている。なお、第１実施形態では、関節の全てに関節駆動部２３０及び振動検出部２４０が配置されている。
【００２７】
以下、関節Ｊ１における関節駆動部２３０及び振動検出部２４０について説明し、他の関節の関節駆動部２３０及び振動検出部２４０については、同様の構成であるため、説明を省略する。
【００２８】
図２は、ロボットアーム２０１の１つの関節Ｊ１を示すブロック図である。図２に示すように、関節Ｊ１には、関節駆動部２３０及び振動検出部２４０が設けられている。なお、リンク２１２は、リンク２１１に対して回転する従動側のリンクであり、リンク２１１は、リンク２１２に対する基準側のリンクである。
【００２９】
関節駆動部２３０は、電動モータとしてのモータ２３１と、モータ２３１のトルクを増大させるためにモータ２３１の出力軸（回転軸）の回転を減速して関節Ｊ１に伝達する減速機構部２３２と、を有している。減速機構部２３２は、モータ２３１の回転を伝達する伝達機構２３３と、モータ２３１の回転、即ち伝達機構２３３の回転を減速する減速機２３４とを有している。
【００３０】
モータ２３１は、例えばブラシレスＤＣサーボモータやＡＣサーボモータである。伝達機構２３３は、図示は省略するが、モータ２３１の出力軸に取り付けられたプーリと、減速機２３４の入力軸に取り付けられたプーリと、プーリ間に巻回された無端状のベルトとを有して構成されている。伝達機構２３３は、モータ２３１の回転を減速比ｍで減速して、減速機２３４に伝達する。なお、この減速比ｍは１でもよい。減速機２３４は、伝達機構２３３を介して伝達されたモータ２３１の回転、つまり伝達機構２３３の回転を減速比ｎで減速する。減速比ｎは１よりも大きく、ｎ＞＞１であるのが好ましい。例えば、減速比ｎは１００である。減速機２３４は、小型軽量で減速比ｎの大きい波動歯車減速機を用いるのが望ましい。減速機２３４の出力軸は、リンク２１２に接続されている。減速機２３４の出力軸の回転角度が、リンク２１１に対するリンク２１２の相対角度、即ち関節Ｊ１の関節角度である。
【００３１】
なお、ロボット２００の仕様によっては、伝達機構２３３が無く、モータ２３１の出力軸に直接減速機２３４が接続されていても良い。
【００３２】
振動検出部２４０は、モータ２３１の出力軸の回転角度を検出する第１角度検出器としての角度検出器２４１を有している。また、振動検出部２４０は、減速機２３４の出力軸の回転角度、即ちリンク２１１に対するリンク２１２の相対角度（関節Ｊ１の関節角度）を検出する第２角度検出器としての角度検出器２４２を有している。
【００３３】
なお、第１実施形態では、振動検出部２４０を、角度を検出するために設けられた角度検出器２４１，２４２で構成したが、これに限定するものではなく、別途設けた振動センサで構成してもよい。
【００３４】
角度検出器２４１，２４２は、ロータリーエンコーダであり、インクリメンタル型のロータリーエンコーダであってもよいし、アブソリュート型のロータリーエンコーダであってもよい。
【００３５】
角度検出器２４１の原点と角度検出器２４２の原点は、予めロボット２００を製作する際に予め合わせておく。この角度検出器２４２により、リンク２１１に対するリンク２１２の相対角度の検出が可能となり、モータ２３１に出力された角度指令に対する実際の関節角度を把握することができる。
【００３６】
図３は、ロボット装置１００の制御システム３００の構成を示すブロック図である。制御システム３００の演算装置３０２は、演算部としてのＣＰＵ（Central  Processing  Unit）３１１を備えている。また、演算装置３０２は、ＲＯＭ（Read  Only  Memory）３１２、ＲＡＭ（Random  Access  Memory）３１３、ＨＤＤ（Hard  Disk  Drive）３１４を備えている。また、演算装置３０２は、記録ディスクドライブ３１５及び各種のインタフェース３２１〜３２５を備えている。
【００３７】
ＣＰＵ３１１には、ＲＯＭ３１２、ＲＡＭ３１３、ＨＤＤ３１４、記録ディスクドライブ３１５及び各種のインタフェース３２１〜３２５が、バス３１６を介して接続されている。ＲＯＭ３１２には、ＢＩＯＳ等の基本プログラムが格納されている。ＲＡＭ３１３は、ＣＰＵ３１１の演算処理結果等、各種データを一時的に記憶する記憶装置である。
【００３８】
ＨＤＤ３１４は、ＣＰＵ３１１の演算処理結果や外部から取得した各種データ等を記憶する記憶装置であると共に、ＣＰＵ３１１に、後述する各種演算工程を実行させるためのプログラム３３０を記録するものである。ＣＰＵ３１１は、ＨＤＤ３１４に記録（格納）されたプログラム３３０に基づいてロボット制御方法の各工程を実行する。
【００３９】
記録ディスクドライブ３１５は、記録ディスク３３１に記録された各種データやプログラム等を読み出すことができる。
【００４０】
インタフェース３２１には、制御装置３０１が接続されており、インタフェース３２２には、記憶装置３０３が接続されている。記憶装置３０３には、ロボット２００（ロボットアーム２０１）の動作パターンに基づいて作成した動作プログラム３４０が記憶（格納）されている。ＣＰＵ３１１は、記憶装置３０３から動作プログラム３４０を読み出してロボット２００（ロボットアーム２０１）の軌道計算を行い、制御装置３０１に出力する。これにより、制御装置３０１は、軌道に従ってロボット２００（ロボットアーム２０１）を動作させる。
【００４１】
インタフェース３２３には力覚センサ２０３が接続されており、インタフェース３２４には角度検出器２４１が接続されており、インタフェース３２５には角度検出器２４２が接続されている。
【００４２】
力覚センサ２０３は、検出した力を示す信号を出力する。ここで、力覚センサ２０３にて検出されるロボットハンド２０２に作用する力は、ロボットハンド２０２の振動に比例している。演算装置３０２のＣＰＵ３１１は、インタフェース３２３及びバス３１６を介して力覚センサ２０３から振動の信号を入力したことになる。
【００４３】
角度検出器２４１，２４２は、検出した角度検出値を示すパルス信号を出力する。ＣＰＵ３１１は、インタフェース３２４，３２５及びバス３１６を介して角度検出器２４１，２４２からパルス信号を入力する。
【００４４】
以下、制御システム３００、具体的には、演算装置３０２のＣＰＵ３１１の制御動作について説明する。図４は、本発明の第１実施形態に係るロボット装置１００の制御システム３００によるロボット制御方法を示すフローチャートである。
【００４５】
まず、ＣＰＵ３１１は、製品の組立工程から決められたロボット２００の動作パターンに基づき予め作成された動作プログラム（仮設定された動作プログラム）３４０を、記憶装置３０３から読み出す（Ｓ１）。
【００４６】
次に、ＣＰＵ３１１は、動作プログラム３４０に従い、制御装置３０１を介してロボット２００を動作させ、組み付け動作を行わせる（Ｓ２：動作工程）。組み付け動作は、例えばロボットハンド２０２が把持したワークＷ１をワークＷ２に嵌合させる動作である。
【００４７】
このときＣＰＵ３１１は、ロボット２００の動作中に、力覚センサ２０３により検出された振動のデータを取得し、振動のデータを記憶装置３０３に記憶させる（Ｓ３：第１振動検出工程）。つまり、ＣＰＵ３１１は、ロボット２００の先端部（ロボットハンド２０２）の振動を計測する。
【００４８】
同時に、ＣＰＵ３１１は、ロボット２００の動作中に、ロボットアーム２０１の各関節の振動検出部２４０の検出結果に基づく振動のデータを記憶装置３０３に記憶させる（Ｓ１０：第２振動検出工程）。具体的には、ＣＰＵ３１１は、角度検出器２４１が検出した角度と、角度検出器２４２が検出した角度と、減速機構部２３２の減速比（ｍ×ｎ）とに基づき、各関節の減速機構部２３２の角度伝達誤差を各関節の振動の検出結果として算出する。ここで、モータ２３１の回転軸の角度は、角度指令値により制御されているので、角度検出器２４１が検出した角度は、モータ２３１への角度指令値と同じである。したがって、各関節の振動（減速機構部２３２の角度伝達誤差）を求めるにあたって、角度検出器２４１が検出した角度の代わりに、モータ２３１に対する角度指令値を用いてもよい。
【００４９】
次に、ＣＰＵ３１１は、力覚センサ２０３により検出された振動のデータからロボット２００が共振したか否かを判断する（Ｓ４：判断工程）。このステップＳ４の判断は、ロボット２００の１つの動作が完了したときに行うとよい。
【００５０】
ＣＰＵ３１１は、共振していないと判断した場合（Ｓ４：Ｎｏ）は、動作プログラム３４０を更新することなく、実際の組付け動作を開始する（Ｓ９）。これにより、記憶装置３０３に仮設定であった動作プログラム３４０が本設定されたことになる。なお、仮設定から本設定へ変わる場合に、記憶装置３０３における動作プログラム３４０を書き換える必要はない。
【００５１】
ＣＰＵ３１１は、ステップＳ４にてロボット２００が共振したと判断した場合（Ｓ４：Ｙｅｓ）、ロボット２００の固有振動数（共振周波数）Ｆｒを、ステップＳ３にて検出した振動のデータを周波数解析することにより求める（Ｓ５：固有振動数算出工程）。この固有振動数Ｆｒは、ロボットアーム２０１の姿勢やロボットハンド２０２が把持したワークＷ１の重量の変化によっても変化する。
【００５２】
また、ＣＰＵ３１１は、各関節の振動検出部２４０により検出された振動のデータ、即ちステップＳ１０で算出した角度伝達誤差のデータから、各関節の振動周波数を、周波数解析することにより求める（Ｓ１１：振動周波数算出工程）。
【００５３】
次に、ＣＰＵ３１１は、固有振動数Ｆｒと各振動周波数とを比較してロボット２００の共振を発生させた関節を特定する（Ｓ６：特定工程）。つまり、ＣＰＵ３１１は、各関節の周波数解析の結果から、固有振動数Ｆｒに近い周波数で振動している関節を特定する。
【００５４】
次に、ＣＰＵ３１１は、特定した関節を駆動する関節駆動部２３０のモータ２３１の回転数を、共振しない回転数Ｒｊ’に変更し（Ｓ７）、この回転数で動作プログラム３４０を更新する（Ｓ８：更新工程）。これにより、記憶装置３０３に仮設定であった更新後の動作プログラム３４０が本設定されたことになる。そして、ＣＰＵ３１１は、更新した動作プログラム３４０に従って、実際の組付け動作を開始する（Ｓ９）。
【００５５】
ステップＳ７では、モータ２３１の回転数を、変更前よりも大きくなるように変更する。これにより、ロボット２００の動作が遅くなるのを防止することができ、生産性が低下するのを抑制することができる。
【００５６】
以上のフローチャートに示したロボット制御方法によって設定した動作プログラム３４０を用いてロボット２００を動作させることで、ロボット２００の共振（振動）を抑制することが可能となる。よって、ロボット２００による組み付け動作等で生産性が低下するのを抑制することができる。
【００５７】
ここで、各ステップの動作について詳細に説明する。まず、ステップＳ４の判断工程について説明する。
【００５８】
図５は、時刻に対するロボット２００の先端部の速度パターン、力覚センサ２０３の出力、及び角度伝達誤差を示す図である。図５（ａ）は、ロボット２００を動作させたときの速度パターンを示す図であり、図５（ｂ）は、ロボット２００を動作させたときの力覚センサ２０３の出力波形を示す図であり、図５（ｃ）は、関節の角度伝達誤差の算出波形を示す図である。なお、図５（ｂ）は、ロボット２００が固有振動数で共振しているときのロボット２００の先端部（ロボットハンド２０２）における振動波形である。
【００５９】
図５（ａ）において、ロボット２００は時刻０〜Ｔ１の間で加速し、時刻Ｔ１〜Ｔ２間は定速での動作、Ｔ２〜Ｔｍ間は減速し時刻Ｔｍで停止となる。このとき、図５（ｂ）のように、加速が終わった時刻Ｔ１を過ぎて次の減速が始まる時刻Ｔ２まで、つまり、定速で動作する時刻Ｔ１〜Ｔ２間でロボット２００が固有振動数で共振する。ロボット２００の先端部の振動が収束せずに残っている場合が、ロボット２００全体が固有振動数で共振している状態となる。
【００６０】
共振しているか否かの判断として許容振幅（閾値）Ｐを設定する。許容振幅Ｐを超えていれば共振していると判断し、超えていなければ許容範囲と判断する。許容振幅Ｐは予め決めておく値であるが、組み付け可否など組立精度への影響や、共振によるロボット２００の関節へのダメージに配慮した値で設定する。
【００６１】
次に、ステップＳ１０の工程について説明する。ロボット２００を動作させたときのロボットアーム２０１の各関節における角度伝達誤差θｅｊをステップＳ１０で算出する。ｊは、関節に割り振った通し番号（関節番号）であり、６つの関節の場合は、ｊ＝１〜６である。
【００６２】
動作時のモータ２３１に出された角度指令値をθｔｊ、角度検出器２４２の出力をθｒｊ、伝達機構２３３の減速比ｍ［１：ｍ］、減速機２３４の減速比ｎ［１：ｎ］とする。角度伝達誤差θｅｊは、伝達機構２３３と減速機２３４の角度伝達誤差であり以下の式（１）で算出される。
θｅｊ＝θｒｊ−θｔｊ／（ｍ×ｎ）      ・・・・・（１）
（ｊ＝関節番号）
【００６３】
次に、ステップＳ５，Ｓ１０における周波数解析について説明する。ステップＳ４の判断工程で共振していると判断されると、ステップＳ５の固有振動数算出工程でロボット２００の先端部の振動波形の周波数解析、ステップＳ１１の振動周波数算出工程で角度伝達誤差θｅｊの周波数解析を行う。
【００６４】
図６は、ロボット２００の先端部の振動波形と関節の振動波形を周波数解析した結果を示す図である。図６（ａ）は、ロボット２００の先端部の振動波形を周波数解析した結果を示す図であり、図６（ｂ）は、ロボット２００の関節の中で共振している関節で、角度伝達誤差θｅｊを周波数解析した結果を示す図である。図６（ａ）から、ロボット２００の先端部における固有振動数Ｆｒが求まり、図６（ｂ）から関節の振動周波数Ｆｊが求まる。図６（ａ）及び図６（ｂ）において、閾値Ｄ０を超えた振幅のピーク値となるところの周波数が、固有振動数Ｆｒ、振動周波数Ｆｊである。
【００６５】
ステップＳ６の特定工程では、Ｆｒ≒Ｆｊで振動している関節を特定し、振動している関節のモータ２３１の回転数を求める。第１実施形態では、固有振動数Ｆｒの±５％の範囲内で一致している振動周波数Ｆｊを特定する。
【００６６】
関節における振動周波数Ｆｊは、伝達機構２３３や減速機２３４の角度伝達誤差である。振動周波数Ｆｊは、モータ２３１の回転数をＲｊ［ｒｐｍ］とし、減速機２３４を波動歯車減速機とすると式（２）が成り立つ。
Ｆｊ＝Ｒｊ／６０／（ｍ×ｎ×２）      ・・・・・（２）
【００６７】
よって、モータ２３１の回転数Ｒｊは、
Ｒｊ＝Ｆｊ×６０×（ｍ×ｎ×２）      ・・・・・（３）
と表すことができる。
【００６８】
すなわち、回転数Ｒｊでモータ２３１を回転させていることで、共振が起こっていることがわかるので、ステップＳ７では、モータ２３１に出す指令の回転数を、
（Ｒｊ±δ）≠Ｒｊ’          ・・・・・（４）
となるような共振回避回転数Ｒｊ’に変更する。δは回転数幅である。
【００６９】
回転数幅δは、ステップＳ４の判断工程で共振していると判断された状態とき、許容振幅Ｐ以下に共振が収まるような値に設定されている。すなわち、予め実験的をするなどして回転数幅δを求めておくことで対応ができる。
【００７０】
ステップＳ８の更新工程では、ステップＳ７の工程で決められた共振しないモータ回転数Ｒｊ’になるように動作プログラム３４０を作成し、更新すればよい。共振回避回転数Ｒｊ’は、Ｒｊ＋δよりも大きい値を設定する。Ｒｊ−δよりも小さい値を選択しても共振を回避できるが、生産性を考慮した高速組み付けを目指すことから、大きい値を選択する。組み付け動作の都合上、回転数を小さい値に設定してもよい。
【００７１】
以上、第１実施形態によれば、モータ２３１の回転数を変更することで、ロボット２００の共振を回避することができ、ワークＷ１を把持したロボットハンド２０２が振動するのを回避することができる。よって、ワークＷ１をワークＷ２に嵌合させる組み付け動作を円滑に行うことができる。
【００７２】
また、第１実施形態によれば、ロボットハンド２０２が把持するワークＷ１が変更される場合等、ロボット２００の固有振動数が変化する場合にも、ステップＳ１〜Ｓ１１により柔軟に対応でき、ロボット２００の共振による振動を回避することができる。
【００７３】
また、第１実施形態によれば、モータ２３１の回転数を変更前よりも上昇させているので、生産性の低下を抑制することができる。
【００７４】
また、第１実施形態によれば、ロボット２００の先端部（ロボットハンド２０２）が定速に動作させるとき、即ち各関節を等角速度で駆動するときの角速度（モータ２３１の回転数）を変更しているので、効果的にロボットの共振を抑制することができる。
【００７５】
また、第１実施形態によれば、ステップＳ４の判断工程では、ロボット２００が共振したか否かを、力覚センサ２０３により検出した振動の振幅が閾値を超えたか否かで判断するので、判断が容易であり、判断に要する時間を短縮することができる。
【００７６】
また、第１実施形態によれば、ロボットハンド２０２に作用する力を検出する力覚センサ２０３で振動を検出するようにしたので、別途、振動センサをロボットハンド２０２に設ける必要がない。
【００７７】
また、第１実施形態によれば、各振動検出部２４０が、ロボットアーム２０１の各関節に設けられた角度検出器２４１，２４２で構成されているので、別途振動センサを各関節に設ける必要がない。
【００７８】
［第２実施形態］
次に、本発明の第２実施形態に係るロボット制御方法について説明する。図７は、本発明の第２実施形態に係るロボット制御方法を示すフローチャートである。なお、第２実施形態のロボット装置の構成は、上記第１実施形態と同様であるので、同一符号を用い、説明は省略する。
【００７９】
図７に示すステップＳ１〜Ｓ６，Ｓ８〜Ｓ１１は、上記第１実施形態で説明した通りである。上記第１実施形態のステップＳ７では、共振しない回転数が実験等で分かっている場合に、共振しない回転数に変更するものであったが、第２実施形態のステップＳ７’では、共振しない回転数が分からない場合にも適用可能である。
【００８０】
ステップＳ７’では、ＣＰＵ３１１は、ステップＳ６で特定した関節のモータ２３１の回転数を所定回転数増加（又は減少）するように変更する。この所定回転数は、共振しない回転数を探索するために予め設定した微小回転数であり、ステップＳ８の工程後、ステップＳ２の工程に戻ることで、徐々にモータ２３１の回転数を変更するものである。即ち、ＣＰＵ３１１は、ステップＳ８の更新工程後、再度、ステップＳ２の動作工程及びステップＳ８の判断工程を実行することになる。
【００８１】
以上のフローで、ステップＳ１では、動作プログラム３４０は仮設定であり、ステップＳ４で共振していないと判断された場合（Ｓ４：Ｎｏ）に、動作プログラム３４０が本設定されたこととなる。また、ステップＳ８の更新工程では、更新された動作プログラム３４０は仮設定である。なお、仮設定から本設定へ変わる場合に、記憶装置３０３における動作プログラム３４０を書き換える必要はない。
【００８２】
以上、第２実施形態によれば、上記第１実施形態と同様の効果を奏するほか、予め実験等を行っていない場合であっても、ロボット２００の共振による振動を回避することができる。
【００８３】
なお、本発明は、以上説明した実施形態に限定されるものではなく、本発明の技術的思想内で多くの変形が可能である。
【００８４】
上記実施形態の各処理動作は具体的にはＣＰＵ３１１により実行されるものである。従って上述した機能を実現するプログラムを記録した記録媒体を制御システム３００の演算装置３０２に供給し、演算装置３０２のコンピュータ（ＣＰＵ）が記録媒体に格納されたプログラムを読み出し実行することによって達成されるようにしてもよい。この場合、記録媒体から読み出されたプログラム自体が上述した実施形態の機能を実現することになり、プログラム自体及びそのプログラムを記録した記録媒体は本発明を構成することになる。
【００８５】
また、上記実施形態では、コンピュータ読み取り可能な記録媒体がＨＤＤ３１４であり、ＨＤＤ３１４にプログラム３３０が格納される場合について説明したが、これに限定するものではない。プログラムは、コンピュータ読み取り可能な記録媒体であれば、いかなる記録媒体に記録されていてもよい。例えば、プログラムを供給するための記録媒体としては、図３に示すＲＯＭ３１２、記録ディスク３３１、記憶装置３０３等を用いてもよい。具体例を挙げて説明すると、記録媒体として、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、書き換え可能な不揮発性のメモリ（例えばＵＳＢメモリ）、ＲＯＭ等を用いることができる。
【００８６】
また、上記実施形態におけるプログラムを、ネットワークを介してダウンロードしてコンピュータにより実行するようにしてもよい。
【００８７】
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施形態の機能が実現されるだけに限定するものではない。そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【００８８】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれてもよい。そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって上記実施形態の機能が実現される場合も含まれる。
【００８９】
また、上記実施形態では、コンピュータがＨＤＤ等の記録媒体に記録されたプログラムを実行することにより処理を行う場合について説明したが、これに限定するものではない。プログラムに基づいて動作する演算部の一部又は全部の機能をＡＳＩＣやＦＰＧＡ等の専用ＬＳＩで構成してもよい。なお、ＡＳＩＣはApplication  Specific  Integrated  Circuit、ＦＰＧＡはField-Programmable  Gate  Arrayの頭字語である。
【符号の説明】
【００９０】
１００…ロボット装置、２００…ロボット、２０１…ロボットアーム、２０２…ロボットハンド（エンドエフェクタ）、２０３…力覚センサ（第１振動検出部）、２３０…関節駆動部、２３１…モータ（電動モータ）、２３２…減速機構部、２４０…振動検出部（第２振動検出部）、３００…制御システム（制御部）、３４０…動作プログラム
【図１】
2015199149.tif 000003
【図２】
2015199149.tif 000004
【図３】
2015199149.tif 000005
【図４】
2015199149.tif 000006
【図５】
2015199149.tif 000007
【図６】
2015199149.tif 000008
【図７】
2015199149.tif 000009