(57)【要約】【課題】学習制御の最適な回数を判定できる制御システムを提供する。【解決手段】ロボット制御システム１０は、動作制御部１７と学習制御処理部１８と記憶部１９を備える。学習制御処理部１８は、動作制御部１７が学習制御を一回実施する度に、該実施した学習制御が何回目であるかを表す学習回数と、求めた振動量の時系列データとを互いに対応付けて記憶部１９に記憶させる。学習制御処理部１８は、記憶部１９内の、学習回数ごとの振動量の時系列データの各々について、ロボット１１の一部位の振動が収束しているかどうかを判定するための収束判定値を求め、該求めた収束判定値のうち最小の収束判定値が得られた学習回数を学習制御の最適な回数と判定する。【選択図】図１
2018118353.tif 000002
【特許請求の範囲】
【請求項１】
サーボモータにより駆動される被駆動体と、前記サーボモータを制御して前記被駆動体を動作させる制御装置と、前記被駆動体の一部位の位置に関する値を検出するセンサと、を備えた制御システムであって、
前記制御装置は、
予め作成された動作プログラムに基づいて制御周期毎に前記サーボモータへの指令値を生成し、該指令値によって前記被駆動体の動作制御を行う動作制御部と、
前記動作プログラムによる前記動作制御が行われたときに前記一部位に生じる振動を補正するための振動補正量を求めて該振動補正量を次回の前記動作プログラムによる前記動作制御に適用する学習制御を前記動作制御部に繰返し実施させる学習制御処理部と、を備え、
前記学習制御処理部は、
前記動作制御部が前記学習制御を一回実施する間に前記センサが検出した検出値の時系列データと前記動作制御部が生成した前記指令値の時系列データとに基づいて、該一回の学習制御の実施中に前記一部位に生じる振動量の時系列データを推定する振動量推定部と、
前記振動量の時系列データを基に、次回の前記動作プログラムによる前記動作制御に適用すべき前記振動補正量を求める振動補正量算出部と、
前記動作制御部が前記学習制御を一回実施する度に、該実施した学習制御が何回目であるかを表す学習回数と前記振動量の時系列データとを互いに対応付けて記憶する記憶部と、
前記記憶部に記憶されている前記学習回数ごとの前記振動量の時系列データの各々について、前記一部位の振動が収束しているかどうかを判定するための収束判定値を求め、該求めた収束判定値のうち最小の前記収束判定値が得られた前記学習回数を、前記学習制御の最適な実施回数と判定する判定部と、を有する、制御システム。
【請求項２】
前記判定部は、前記学習制御のｉ回目（ｉは正の整数）の実施が終了した後、前記記憶部に記憶されている、前記学習回数が前記ｉ回であるときの前記振動量の時系列データと前記学習回数が（ｉ-１）回であるときの前記振動量の時系列データとについて、前記収束判定値をそれぞれ求め、該求めた二つの前記収束判定値の差が所定の閾値以下である場合には、前記一部位の振動が収束したと判定し、前記学習制御の実施を前記ｉ回で完了させるようになされた、請求項１に記載の制御システム。
【請求項３】
前記収束判定値は、前記振動量の時系列データの少なくとも一部分における標準偏差、最大振幅、オーバーシュート量、及び整定時間のうちの少なくとも何れか一つである、請求項１または２に記載の制御システム。
【請求項４】
前記センサは、加速度センサ、ジャイロセンサ、慣性センサ、力センサ、レーザトラッカ、カメラ、またはモーションキャプチャ装置である、請求項１または２に記載の制御システム。
【請求項５】
被駆動体を駆動するサーボモータを制御して前記被駆動体を動作させる制御方法であって、
前記被駆動体の動作制御を行うための動作プログラムに基づいて前記サーボモータにより前記動作制御が行われたときに前記被駆動体の一部位に生じる振動を補正するための振動補正量を求めて該振動補正量を次回の前記動作プログラムによる前記動作制御に適用する学習制御を繰返し実施する学習制御処理段階を有し、
前記学習制御処理段階は、
前記学習制御が一回実施される間に、前記一部位の位置に関する値の時系列データと、前記動作プログラムから生成される指令値の時系列データとを取得し、前記位置に関する値の時系列データと前記指令値の時系列データとに基づいて、該一回の学習制御の実施中に前記一部位に生じる振動量の時系列データを推定することと、
前記振動量の時系列データを基に、次回の前記動作プログラムによる前記動作制御に適用すべき前記振動補正量を求めることと、
前記学習制御が一回実施される度に、該実施した学習制御が何回目であるかを表す学習回数と前記振動量の時系列データとを互いに対応付けて記憶部に記憶させることと、
前記記憶部に記憶されている前記学習回数ごとの前記振動量の時系列データの各々について、前記一部位の振動が収束しているかどうかを判定するための収束判定値を求め、該求めた収束判定値のうち最小の前記収束判定値が得られた前記学習回数を、前記学習制御の最適な実施回数と判定すること、
を含む、制御方法。
【請求項６】
前記学習制御処理段階は、
前記学習制御のｉ回目（ｉは正の整数）の実施が終了した後、前記記憶部に記憶されている、前記学習回数が前記ｉ回であるときの前記振動量の時系列データと前記学習回数が（ｉ-１）回であるときの前記振動量の時系列データとについて、前記収束判定値をそれぞれ求め、該求めた二つの前記収束判定値の差が所定の閾値以下である場合には、前記一部位の振動が収束したと判定し、前記学習制御の実施を前記ｉ回で完了させることを含む、請求項５に記載の制御方法。
【請求項７】
前記収束判定値は、前記振動量の時系列データの少なくとも一部分における標準偏差、最大振幅、オーバーシュート量、及び整定時間のうちの少なくとも何れか一つである、請求項５または６に記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、学習制御機能を備えた制御システム及び制御方法に関する。
【背景技術】
【０００２】
ロボットを使用する生産現場においては、生産効率を向上するために、ロボットの動作を高速化してタクトタイムを短縮することが求められる場合がある。しかし、ロボットの動作をある程度以上高速化すると、減速機の歪みや、ロボットのアーム部自体の剛性不足などに起因して、動作中のロボットの先端部に振動が発生してしまうことがある。
【０００３】
そのような問題の対処法として、従前より、加速度センサをロボットの先端部に取付け、ロボットの動作中の振動を加速度センサにより計測しながら学習制御を繰返し実施することにより当該振動を低減させることが行われている（例えば特許文献１参照）。上記の学習制御では、所定の動作プログラムに基づいたロボットの動作中に加速度センサから得られた振動のデータを基に該振動を補正するための振動補正量を求め、求めた振動補正量を保存して次回の同じ動作プログラムによる動作制御に適用するようになされる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１６７８１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
現状の学習制御においては、事前に決められた回数だけ学習制御を実施することにしている。しかし、その決められた回数が最適でない可能性があり、振動が最小になる学習回数が使われないことがある。また、決められた回数よりも少ない回数で振動が収束する可能性もある。この場合は余計な学習を行っているため、無駄に時間をかけていることになる。したがって、学習制御の最適な実施回数を判定できることが望まれている。
【課題を解決するための手段】
【０００６】
本開示の一態様は、サーボモータにより駆動される被駆動体と、前記サーボモータを制御して前記被駆動体を動作させる制御装置と、前記被駆動体の一部位の位置に関する値を検出するセンサと、を備えた制御システムであって、
前記制御装置は、
予め作成された動作プログラムに基づいて制御周期毎に前記サーボモータへの指令値を生成し、該指令値によって前記被駆動体の動作制御を行う動作制御部と、
前記動作プログラムによる前記動作制御が行われたときに前記一部位に生じる振動を補正するための振動補正量を求めて該振動補正量を次回の前記動作プログラムによる前記動作制御に適用する学習制御を前記動作制御部に繰返し実施させる学習制御処理部と、を備え、
前記学習制御処理部は、
前記動作制御部が前記学習制御を一回実施する間に前記センサが検出した検出値の時系列データと前記動作制御部が生成した前記指令値の時系列データとに基づいて、該一回の学習制御の実施中に前記一部位に生じる振動量の時系列データを推定する振動量推定部と、
前記振動量の時系列データを基に、次回の前記動作プログラムによる前記動作制御に適用すべき前記振動補正量を求める振動補正量算出部と、
前記動作制御部が前記学習制御を一回実施する度に、該実施した学習制御が何回目であるかを表す学習回数と前記振動量の時系列データとを互いに対応付けて記憶する記憶部と、
前記記憶部に記憶されている前記学習回数ごとの前記振動量の時系列データの各々について、前記一部位の振動が収束しているかどうかを判定するための収束判定値を求め、該求めた収束判定値のうち最小の前記収束判定値が得られた前記学習回数を、前記学習制御の最適な実施回数と判定する判定部と、を有する制御システムである。
また、本開示の他の態様は、被駆動体を駆動するサーボモータを制御して前記被駆動体を動作させる制御方法であって、
前記被駆動体の動作制御を行うための動作プログラムに基づいて前記サーボモータにより前記動作制御が行われたときに前記被駆動体の一部位に生じる振動を補正するための振動補正量を求めて該振動補正量を次回の前記動作プログラムによる前記動作制御に適用する学習制御を繰返し実施する学習制御処理段階を有し、
前記学習制御処理段階は、
前記学習制御が一回実施される間に、前記一部位の位置に関する値の時系列データと、前記動作プログラムから生成される指令値の時系列データとを取得し、前記位置に関する値の時系列データと前記指令値の時系列データとに基づいて、該一回の学習制御の実施中に前記一部位に生じる振動量の時系列データを推定することと、
前記振動量の時系列データを基に、次回の前記動作プログラムによる前記動作制御に適用すべき前記振動補正量を求めることと、
前記学習制御が一回実施される度に、該実施した学習制御が何回目であるかを表す学習回数と前記振動量の時系列データとを互いに対応付けて記憶部に記憶させることと、
前記記憶部に記憶されている前記学習回数ごとの前記振動量の時系列データの各々について、前記一部位の振動が収束しているかどうかを判定するための収束判定値を求め、該求めた収束判定値のうち最小の前記収束判定値が得られた前記学習回数を、前記学習制御の最適な実施回数と判定すること、
を含む制御方法である。
【発明の効果】
【０００７】
本発明によれば、学習制御機能を備えた制御システムにおいて、学習制御の最適な実施回数を判定することができる。
【０００８】
添付図面に示される本発明の典型的な実施形態の詳細な説明から、本発明のこれらの目的、特徴および利点ならびに他の目的、特徴および利点がさらに明確になるであろう。
【図面の簡単な説明】
【０００９】
【図１】一実施形態のロボット制御システムの構成を示した図である。
【図２】図１に示されたロボットの構成要素と座標系とを説明するための図である。
【図３】図１に示された学習制御処理部によって行われる処理を示すフローチャートである。
【図４】図３に示された処理フローに対して追加可能な処理フローの一例を示すフローチャートである。
【図５】学習制御が実施されたときの、位置指令値から求めた加速度指令値と加速度センサの検出値との時間変化を示す図である。
【図６】図５に示された時系列のセンサデータから重力加速度を除去した後の時系列データを示す図である。
【図７】図６に示された時系列のセンサデータから電気的なノイズを除去した後の時系列データを示す図である。
【図８】センサ取付部位における振動量の時系列データを示す図である。
【図９】収束判定値の一例である最大振幅を説明するための図である。
【図１０Ａ】図８に示された各時刻における加速度の次元の振動量をそれぞれ１回積分した後の時系列データを示した図である。
【図１０Ｂ】図１０Ａに示された各時刻における速度の次元の振動量をそれぞれ１回積分した後の時系列データを示した図である。
【図１０Ｃ】図１０Ｂにおける囲い線Ｃより囲まれたデータ部分を拡大して示した図である。
【図１１】図１０Ｃの拡大図を流用して、収束判定値の一例であるオーバーシュート量を示した図である。
【図１２】図１０Ｃの拡大図を流用して、収束判定値の一例である整定時間を示した図である。
【発明を実施するための形態】
【００１０】
次に、本開示の実施形態について図面を参照して説明する。参照する図面において、同様の構成部分または機能部分には同様の参照符号が付けられている。理解を容易にするために、これらの図面は縮尺を適宜変更している。また、図面に示される形態は本発明を実施するための一つの例であり、本発明は図示された形態に限定されるものではない。
【００１１】
図１は、一実施形態のロボット制御システム１０の構成を示した図である。図２は、図１に示されたロボット１１の構成要素と座標系とを説明するための図である。
図１に示されるように、本実施形態のロボット制御システム１０は、ロボット１１と、制御装置１２と、センサ１３とを備える。
【００１２】
ロボット１１は、サーボモータにより駆動される。制御装置１２は、該サーボモータを制御してロボット１１を動作させる装置である。センサ１３は、ロボット１１の一部位の位置に関する値を検出することができる。位置に関する値とは、３次元位置、速度、加速度、または、トルクもしくはモーメント、などの、物理的な位置を直接的または間接的に示す値である。
【００１３】
制御装置１２は、動作制御部１７と学習制御処理部１８と記憶部１９とを備える。
動作制御部１７は、予め作成された動作プログラムに基づいて制御周期毎にサーボモータへの指令値、例えば位置指令値または速度指令値などを生成し、該指令値によってロボット１１の動作制御を行う機能を有する。この動作制御はサーボ制御である。
学習制御処理部１８は、上記の動作プログラムによるロボット１１の動作制御が行われたときに上記の一部位に生じる振動を補正するための振動補正量を求めて該振動補正量を次回の同じ動作プログラムによるロボット１１の動作制御に適用する学習制御を、動作制御部１７に繰返し実施させる機能を有する。つまり、学習制御処理部１８は、同じ動作プログラムを動作制御部１７に繰返し実施させることにより、該動作プログラムによるロボット１１の動作制御の度に上述の振動補正量を更新しながら該動作制御に適用する。これにより、ロボット１１の一部位に生じる振動を低減させる。
例えば生産現場においてロボット１１を動作プログラムにより実稼働させる前に、学習制御処理部１８は、実稼働時と同じ動作プログラムによって学習制御を動作制御部１７に繰返し実施させる。学習制御処理部１８は、同じ動作プログラムが実行される度に、上記補正した一部位の振動をより補正できる振動補正量を用いて該振動を低減させる。該振動が十分に低減できたら、制御装置１２は、最後に求めた振動補正量を制御装置１２内の記憶部１９に保存しておき、保存した振動補正量を、生産現場で上記の動作プログラムによりロボット１１を実稼働させるときに使用する。なお、振動補正量を求めるのに必要となる上記一部位の振動データについては、下述するように、上記サーボモータへの指令値の時系列データとセンサ１３の検出値の時系列データとを基に取得することができる。
上記の記憶部１９は、学習制御処理部１８で取扱うデータを記憶する部分であり、例えば、前述の学習制御が実施されたときにセンサ１３の検出値の時系列データや求めた振動補正量などを記憶する。
【００１４】
さらに、前述の学習制御処理部１８は、図１に示されるように、振動量推定部３１、振動補正量算出部３２、及び判定部３３と、を備える。
振動量推定部３１は、動作制御部１７が学習制御を一回実施する間にセンサ１３が検出した値（以下、検出値と呼ぶ。）の時系列データと動作制御部１７が生成した指令値の時系列データとに基づいて、該学習制御の実施中に上記一部位に生じる振動量の時系列データを推定する。
センサ１３の検出値は上記一部位の位置に関する値であるので、例えば、センサ１３の検出値から上記の制御周期毎に位置指令値を除くと、位置指令値に対する上記一部位の変位量、すなわち振動量の時系列データが得られる。
上記一部位における振動量の時系列データは、一回の学習制御のときの、センサ１３の検出値の時系列データと、ロボット１１のサーボモータに搭載されたエンコーダ（不図示）により検出される時系列の位置データとに基づいて取得したものでもよい。つまり、センサ１３により検出された上記一部位の位置に関する値と、エンコーダから得られたサーボモータの実位置との差を上記一部位における振動量としてもよい。つまり、サーボモータの実位置も、本発明において振動量の時系列データの推定に使用される指令値に含まれる。
【００１５】
振動補正量算出部３２は、取得した振動量の時系列データを基に、次回の同じ動作プログラムによるロボット１１の動作制御に適用すべき振動補正量を求めるようになっている。この振動補正量は、上記一部位に生じた振動のデータを制御周期毎に取得し、該振動データの近似式を推定し、推定した近似式を逆変換することにより求められる関数となる。
記憶部１９は、動作制御部１７が学習制御を一回実施する度に、該実施した学習制御が何回目であるかを表す学習回数と前述の振動量の時系列データとを互いに対応付けて記憶する。
【００１６】
判定部３３は、記憶部１９内の、学習回数ごとの振動量の時系列データの各々について、上記一部位の振動が収束しているかどうかを判定するための収束判定値を求め、該求めた収束判定値のうち最小の収束判定値が得られた学習回数を、上記の学習制御の最適な実施回数と判定するようになされている。
上記の収束判定値は、例えば、前述の振動量の時系列データの少なくとも一部分における標準偏差、最大振幅、オーバーシュート量、及び整定時間のうちの少なくとも何れか一つでありうる。これら収束判定値とその求め方については、後で詳述する。
【００１７】
さらに、判定部３３は、上記した学習制御のｉ回目（ｉは正の整数）の実施が終了した後、記憶部１９に記憶されている、学習回数がｉ回であるときの上記振動量の時系列データと学習回数が（ｉ-１）回であるときの上記振動量の時系列データとについて、前述の収束判定値をそれぞれ求め、該求めた二つの収束判定値の差が所定の閾値以下である場合には、上記一部位の振動が収束したと判定し、上記の学習制御の実施をｉ回で完了させることができる。
前述のように求めた二つの収束判定値の差が所定の閾値を超えている場合は、学習制御処理部１８は、上記一部位の振動が未だ収束していないと判定し、学習制御を再び実施するようになされている。
【００１８】
なお、上述した制御装置１２は、それぞれがバスを介して互いに接続された、記憶部、ＣＰＵ（control processing unit）、及び通信制御部、などを備えたコンピュータシステムを用いて構成されうる。該記憶部は、ＲＯＭ（read only memory)やＲＡＭ（random access memory）などである。本実施形態の記憶部１９はそのようなＲＡＭでありうる。前述の動作制御部１７並びに、振動推定部３１、振動補正量算出部３２、及び判定部３３などを含む学習制御処理部１８、のそれぞれの機能や動作は、ＲＯＭに記憶された制御プログラムに基づいて、ＣＰＵが、ＲＡＭに対してデータを入出力したり、データの演算処理を実行したりすることで達成されうる。
【００１９】
本実施形態のロボット１１は、図１に示されるような六軸の垂直多関節ロボットである。ロボット１１は、図２に示されているように、六つの関節軸１１ｂ１〜１１ｂ６と、関節軸１１ｂ１〜１１ｂ６の各々により連結されたアーム部１１ａと、関節軸１１ｂ１〜１１ｂ６の各々を駆動するサーボモータ（不図示）とを具備する。勿論、ロボット１１の形態は、図１に示された形態に限られず、水平多関節ロボットやパラレルリンクロボットなどであってもよい。
上述したセンサ１３は、ロボット１１の先端部１５に設けられたエンドエフェクタ１４に取付けられている。このことにより、本実施形態のセンサ１３は、ロボット１１の先端部１５の実位置に関する値を取得する。エンドエフェクタ１４としてはツール部、ハンド部、ボルト締め具、溶接ガンなどを使用することができる。
【００２０】
ロボット１１は、図２に示されるように、空間上に固定されたワールド座標系２１と、ロボット１１の手首部の先端のフランジに設定されたメカニカルインタフェイス座標系２２とを有する。ワールド座標系２１とメカニカルインタフェイス座標系２２とはそれぞれ３次元直交座標系である。
なお、ワールド座標系２１及びメカニカルインタフェイス座標系２２の各々について、便宜上、図２の中に拡大図によって示した。ワールド座標系２１においては、図２の右方向に＋Ｘ軸、図２の上方向に＋Ｚ軸、図２の紙面に対して奥行方向に＋Ｙ軸をそれぞれ定義している。メカニカルインタフェイス座標系２２においては、図２の右方向に＋Ｘ軸、図２の下方向に＋Ｚ軸、図２の紙面に対して手前方向に＋Ｙ軸をそれぞれ定義している。本実施形態のロボット制御システム１０においては、事前にキャリブレーションによってワールド座標系２１とメカニカルインタフェイス座標系２２との位置の相関がとられている。このことにより、制御装置１２の動作制御部１７は、ワールド座標系２１で定義される位置を使ってロボット１１の先端部１５のエンドエフェクタ１４の位置を制御することができる。
【００２１】
制御装置１２は、ロボット１１とケーブル１６を介して互いに接続されている。センサ１３は、ケーブルまたは無線通信によって制御装置１２と通信可能に接続されている。
本実施形態のセンサ１３としては加速度センサが使用されているが、使用可能なセンサ１３は加速度センサに限定されない。また、本実施形態のセンサ１３はロボット１１の先端部１５に設置されているが、センサ１３の設置場所も限定されない。つまり、サーボ位置制御の対象とするロボット１１の一部位の位置に関する値を検出できるのであれば、センサ１３の種類や設置場所は問わない。ロボット１１から離された場所にセンサ１３が設置されていてもよい。
このため、使用可能なセンサ１３としては、例えば、ジャイロセンサ、慣性センサ、力センサ、レーザトラッカ、カメラ、またはモーションキャプチャ装置などの、位置や変位を計測できる装置がありうる。
【００２２】
図３は、前述した学習制御処理部１８によって行われる処理フローの一例を示すフローチャートである。図３に示される処理フローは本開示のロボット制御方法の一例である。
図３を参照すると、先ず、ステップＳ１１において、学習制御処理部１８は、予め決められた動作プログラムによる学習制御の実施が何回目であるかを表す学習回数ｉ（ｉは正の整数）の初期値を１に設定しておく。
次のステップＳ１２において、学習制御処理部１８は、動作制御部１７にｉ回目（ｉは正の整数）の学習制御を実施させる。動作制御部１７は、学習制御の対象とする動作プログラムに基づいてロボット１１の動作制御を行う。
次のステップＳ１３において、学習制御処理部１８の振動量推定部３１は、ｉ回目の学習制御において、センサ１３の検出値の時系列データ（以下、時系列のセンサデータと略す。）と、ロボット１１のサーボモータに対する位置指令値の時系列データ（以下、時系列の位置指令データと略す。）とを取得する。ここでは、位置指令値で説明するが、前述したように指令値は速度または加速度であってもよい。
【００２３】
次のステップＳ１４において、振動量推定部３１は、時系列のセンサデータと時系列の指令位置データとに基づき、上記一部位における振動量の時系列データを求める。
次のステップＳ１５において、学習制御処理部１８の振動補正量算出部３２は、振動量の時系列データを基に前述の振動補正量を求める。求めた振動補正量は、次回の学習制御の際のロボット１１の動作制御に適用される。
【００２４】
次のステップＳ１６において、振動補正量算出部３２は、振動量の時系列データと現在の学習回数（ｉ回）とを対応付けて記憶部１９に記憶させる。次いで、ステップＳ１７において、学習制御処理部１８は、上記の学習回数（ｉ回）を一つ繰上げる。
次のステップＳ１８において、学習制御処理部１８の判定部３３は、上記の学習回数（ｉ回）が所定の回数Ｔ（Ｔは正の整数からなる固定値）を超えたかどうかを判断し、上記の学習回数（ｉ回）が所定の回数Ｔを超えていないと判断する場合には前述のステップＳ１２〜ステップＳ１８を繰返す。上記の所定の回数Ｔについては、制御装置１２に適時に接続された教示操作盤またはコンピュータ装置などによって入力できる。
【００２５】
判定部３３は、上記のステップＳ１８において上記の学習回数（ｉ回）が所定の回数Ｔを超えたと判断した場合には次のステップＳ１９を行う。
ステップＳ１９においては、判定部３３は、記憶部１９に記憶されている、学習回数ごとの振動量の時系列データの各々について、上記一部位の振動が収束しているかどうかを判定するための収束判定値を求め、該求めた収束判定値のうち最小の収束判定値が得られた学習回数を学習制御の最適な回数と判定する。
【００２６】
図４は、図３に示された処理フローに対して追加可能な処理フローの一例を示すフローチャートである。
図３に示された処理フローにおいては、判定部３３は、ステップＳ１８で学習回数（ｉ回）が上記の所定の回数Ｔを超えていないと判断した場合にはステップＳ１２に戻るようにした。このようなステップＳ１８からステップＳ１２に戻るまでの間に、学習制御処理部１８は、図４に示される追加の処理フローを実施することができる。
【００２７】
具体的には、図４に示されるように、判定部３３は、ステップＳ１８で学習回数（ｉ回）が上記の所定の回数Ｔを超えていないと判断した場合にはステップＳ２０を行う。
ステップＳ２０においては、判定部３３は、ｉ回目の学習のときの振動量の時系列データと（ｉ−１）回目の学習のときの振動量の時系列データとについて、前述した収束判定値をそれぞれ求める。
次のステップＳ２１において、判定部３３は、前述のように求めた二つの収束判定値の差が所定の閾値以下であるかどうかを判断する。この結果、判定部３３は、上記二つの収束判定値の差が上記の閾値以下であると判断した場合には、上記一部位の振動が収束したと判定し、学習制御をｉ回で完了させる（ステップＳ２２）。
【００２８】
一方、判定部３３は、前述のステップＳ２２において二つの収束判定値の差が上記の閾値を超えていると判断した場合には、図３に示されたステップＳ１２以降の処理を再び行う。そして、判定部３３は、前述したステップＳ１２〜ステップＳ１８、ステップＳ２０、及びステップＳ２１といった一連の処理を、ステップＳ２１において二つの収束判定値の差が上記の閾値以下であるという判定結果が得られるまで繰返す。
上記の所定の閾値についても、制御装置１２に適時に接続された教示操作盤またはコンピュータ装置などによって入力できる。
【００２９】
ここで、上述したように学習制御処理部１８により行われる処理フローについて、一つの具体例を挙げてさらに詳述する。
ロボット１１の先端部１５の位置に関する値を取得するために、図１に示されたように、センサ１３が先端部１５のエンドエフェクタ１４に取付けられる。一例として、センサ１３には３軸加速度センサ（以下、単に「加速度センサ」と呼ぶ。）が使用されているものとする。
本例においては、学習制御処理段階で動作制御部１７に所定の動作プログラムによるロボット１１の動作制御を繰返し行わせるときに、ロボット１１の先端部１５に同じ直線動作を行わせることとする。このような例では、動作制御部１７は、所定の直線動作をロボット１１に行わせる動作プログラムに基づいて所定の制御周期毎に位置指令値を生成し、該生成した位置指令値によりロボット１１のサーボモータをフィードバック制御して、ロボット１１の先端部１５の位置制御を行っている。
【００３０】
図５は、学習制御が実施されたときの、上記の位置指令値から求めた加速度指令値と加速度センサの検出値との時間変化を示す図である。図５において、符号Ａを付けた一点鎖線が、位置指令値から求めた加速度指令値の時系列データ、すなわち時系列の加速度指令データである。符号Ｂを付けた実線が、加速度センサの検出値（実値）の時系列データ、すなわち時系列のセンサデータである。図５から分かるように、ロボット１１の先端部１５の移動速度は０〜０．５秒の間で加速され、０．５秒〜１．０秒の間で減速され、１．０秒以降では先端部１５の移動は停止している。位置指令値の２回微分により加速度指令値が求められている。
前述のように学習制御が実施されたときの加速度センサの検出値には、下記の４つの要素が含まれている。学習制御の際に振動補正量を求めるには、下記の要素（ａ）のみが必要である。
（ａ）加速度センサが取付けられたロボットの部位（以下、センサ取付部位と略す。）における振動量
（ｂ）センサ取付部位の加減速度
（ｃ）電気的なノイズ
（ｄ）加速度センサに作用している重力加速度
したがって、加速度センサの検出値から上記要素（ｂ）〜（ｄ）を除くことにより、振動補正量を求めるための要素（ａ）のみを求める。
【００３１】
例えば、加速度センサを使用して学習制御を実施する場合には、ロボット１１に取付けられた加速度センサの位置と向きを事前に取得しておく必要がある。具体的には、図２に示されたロボット１１のワールド座標系２１の原点とロボット１１に取付けられた加速度センサのセンサ座標系の原点との相関関係を加速度センサの位置の情報として事前に求めておく。さらに、取付けられた加速度センサのセンサ座標系の直交３軸の向きとワールド座標系２１の直交３軸の向きとの相関関係を加速度センサの向きの情報として事前に求めておく。
【００３２】
前述したように加速度センサの検出値には重力加速度が含まれている。このため、取付けられた加速度センサの向きの情報が無いと、加速度センサの検出値から適切に重力加速度を除くことができない。前述した加速度センサの向きの情報から、加速度センサの検出値における３次元成分の各々に含まれている重力加速度を求めることができる。
図６は、図５に示された時系列のセンサデータから重力加速度を除去した後の時系列データを示す図である。加速度センサの検出値の時系列データ（図５の符号Ｂ参照）から重力加速度を減算すると、図６に示されるように、重力加速度を減算した後の時系列のセンサデータＢ１は、時系列の位置指令データと同じ位相になる。
図７は、図６に示された時系列のセンサデータＢ１から電気的なノイズを除去した後の時系列データを示す図である。重力加速度を減算した後の加速度センサの検出値の時系列データ（図６の符号Ｂ１参照）に対してローパスフィルタをかけると、図７に示されるように、電気的なノイズが含まれていない時系列のセンサデータＢ２が得られる。
図８は、センサ取付部位における振動量の時系列データを示す図である。図７に示された時系列のセンサデータＢ２から時系列の加速度指令データＡを減算すると、図８に示されるように、センサ取付部位における振動量の時系列データが得られる。なお、以上の説明から分かるように、本具体例では振動量の時系列データは加速度の次元で得られる。
【００３３】
上述した具体例では、学習制御処理部１８が動作制御部１７に学習制御を一回実施させたとき、加速度センサの検出値の時系列データと、ロボット１１のサーボモータに対する加速度指令値の時系列データとがそれぞれ記憶部１９に記憶される。学習制御処理部１８は、位置指令値の２回微分により求められた加速度指令値の時系列データを記憶部１９に記憶させている。
学習制御処理部１８の振動量推定部３１は、加速度センサの検出値の時系列データと、前述の加速度指令値の時系列データとに基づいて、センサ取付部位における振動量の時系列データを推定することができる。より具体的には、前述したように、加速度センサの検出値の時系列データから、重力加速度、電気的なノイズ、及び加速度指令値を時刻毎（所定の制御周期毎）に除くことにより、センサ取付部位における加速度の時系列データのみを得ることができる。つまり、加速度の次元により表された、センサ取付部位の振動量の時系列データが得られる。
【００３４】
上記の位置指令値に代わりに、記憶部１９には、上記の位置指令値に応じてロボット１１のサーボモータが動作したときの該サーボモータの実位置データが時刻毎に記憶されてもよい。サーボモータの実位置データは、該サーボモータに搭載されたエンコーダによって取得されうる。この場合には、学習制御処理部１８は、動作制御部１７が学習制御を一回実施した後、サーボモータの実位置データを２回微分することにより、該モータの実位置データに対応する加速度データを求める。振動量推定部３１は、加速度センサの検出値の時系列データから、重力加速度、電気的なノイズ、及び前述のモータの実位置データから求めた加速度データを時刻毎（所定の制御周期毎）に除くことにより、センサ取付部位における振動量の時系列データを加速度の次元で得ることができる。
【００３５】
学習制御処理部１８の振動補正量算出部３２は、図８に示されるような振動量の時系列データを基に、該振動量の時系列データを打消すための振動補正量を求めて、該振動補正量を、次回の学習制御での同じ動作プログラムによるロボット１１の動作制御に適用する。
振動補正量算出部３２は、動作制御部１７が学習制御を一回実施する度に、該実施した学習制御が何回目であるかを表す学習回数ｉと、図８に示されたような振動量の時系列データとを互いに対応付けて記憶部１９に記憶させる。但し、図３に示した処理フローのステップＳ１８のとおり、学習回数ｉは所定の回数Ｔを上限とする。
学習制御処理部１８の判定部３３は、記憶部１９に記憶された学習回数ごとの振動量の時系列データの各々について、センサ取付部位における振動が収束しているかどうかを判定するための収束判定値を求める。ここでは、収束判定値として標準偏差を使用する場合を説明する。
【００３６】
学習制御処理部１８は、各学習回数での振動量データの標準偏差を次式から求める。
【数１】
2018118353.tif 000003
上式（１）において、εi（ｉは学習回数）は標準偏差であり、ａkは、図８に示された各時刻における上記センサ取付部位の振動量データであり、ｎはデータ数である。さらに、
【数２】
2018118353.tif 000004
は、ｎ個の振動量データａkの平均値である。
【００３７】
上記の標準偏差については、図８に示された、停止時間帯（１．０秒以降）と加減速時間帯（０秒〜１．０秒）の両方を含んだ時間帯における振動量の時系列データからでも、停止時間帯のみにおける振動量の時系列データからでも求めることができる。
学習制御処理部１８の判定部３３は、記憶部１９に記憶されている学習回数毎の振動量データごとに上式（１）により標準偏差を順次求め、求めた各標準偏差のうち最小の標準偏差が得られた学習回数ｉを学習制御の最適な実施回数と判定する。
【００３８】
同じ動作プログラムによる学習制御を繰返すことにより、学習制御毎の振動量データの標準偏差が順次減っていくが、学習制御をある回数以上繰返すと標準偏差の変化量が小さくなるか、逆に大きくなる。
本具体例の学習制御処理部１８の判定部３３は、ｉ回目の学習制御が終了したら、ｉ回目の学習制御のときの振動量の時系列データと（ｉ−１）回目の学習制御のときの振動量の時系列データとについて、前述の式（１）により標準偏差をそれぞれ求めることもできる。この場合、判定部３３は、求めた二つの標準偏差の差（εi−εi-1)が所定の閾値以下であると判断した場合には、ロボット１１の先端部１５の振動が収束したと判定し、学習制御をｉ回で完了させることとする。
【００３９】
以上に説明したように、上述のロボット制御システム１０の制御装置１２は、学習制御の最適な回数を自動的に判定することができる。異なる作業を同じロボット１１に適宜に切換えて行わせる場合がある。この場合、各々の動作プログラムに基づいて制御装置１２により学習制御を実施したときに、それら動作プログラムごとに、ロボット１１の一部位の振動を抑制するための学習制御の最適な回数を自動的に判定することができる。
さらに、上述のロボット制御システム１０の制御装置１２は、同じ動作プログラムによる学習制御を繰返す度に、ロボット１１の一部位の振動が収束しているかどうかを判定し、該振動が収束したと判定した時点で学習制御を完了させることができる。このため、学習制御が必要最小限の回数及び時間で済むようになる。
【００４０】
なお、上述した具体例では標準偏差を収束判定値として使用しているが、収束判定値は標準偏差に限られない。収束判定値としては、図８に示されるような振動量の時系列データの少なくとも一部分における標準偏差、最大振幅、オーバーシュート量、及び整定時間のうちの少なくとも何れか一つを使用することができる。以下に、収束判定値として使用できる最大振幅、オーバーシュート量、及び整定時間について説明する。
【００４１】
図９は、収束判定値の一例である最大振幅を説明するための図である。図９に示される振動量データにおいて矢印Ｃにより示される部分が最大振幅である。最大振幅は、振動量の時系列データのうちの最大値と最小値の差である。図９に示された振動量の時系列データから最大値と最小値とを抽出し、抽出した最大値と最小値の差を求めることにより、最大振幅を得ることができる。最大振幅についても、停止時間帯（１．０秒以降）と加減速時間帯（０秒〜１．０秒）の両方を含んだ時間帯における振動量の時系列データからでも、停止時間帯のみにおける振動量の時系列データからでも求めることができる。
【００４２】
オーバーシュート量あるいは整定時間を求める場合には、まず、図８及び図９に示されるような、加速度の次元による振動量の時系列データを、位置の次元による振動量の時系列データに変換する。加速度を２回積分すれば位置が求まる。図１０Ａは、図８に示された各時刻における加速度の次元の振動量をそれぞれ１回積分した後の時系列データ、すなわち、速度の次元による振動量の時系列データを示した図である。図１０Ｂは、図１０Ａに示された各時刻における速度の次元の振動量をそれぞれ１回積分した後の時系列データ、すなわち、位置の次元による振動量の時系列データを示した図である。さらに、図１０Ｃは、図１０Ｂにおける囲い線Ｄより囲まれたデータ部分を拡大して示した図である。
図１１は、図１０Ｃの拡大図を流用して、収束判定値の一例であるオーバーシュート量を示した図である。図１１に示される振動量の時系列データにおいて矢印Ｅにより示される部分がオーバーシュート量である。より具体的には、オーバーシュート量は、最終的な位置Ｆに対して行き過ぎた量のうちの最大値である。図１１に示された振動量の時系列データから、最終的な位置Ｆと最大値とを特定し、特定した位置Ｆと最大値の差を求めることにより、オーバーシュート量を得ることができる。
【００４３】
図１２は、図１０Ｃの拡大図を流用して、収束判定値の一例である整定時間を示した図である。図１２に示される振動量データにおいて矢印Ｇにより示される部分が整定時間である。より具体的には、整定時間は、学習制御でのロボットの停止時刻（本例では１．０秒）から、最終的な位置Ｆを基準とした所定の整定幅Ｈ以内の位置に振動量データが収まるまでの時間である。図１１に示された振動量データから最終的な位置Ｆを特定し、さらに振動量データが所定の整定幅Ｈ以内の位置に収まった最初の時刻を特定し、特定した時刻と上記の停止時刻の差を求めることにより、整定時間を得ることができる。
【００４４】
なお、以上においては、サーボモータにより駆動されるロボット１１の学習制御について説明したが、本発明に係る学習制御の最適回数の判定方法は、サーボモータにより駆動される被駆動体であれば、どのような物にも適用可能である。したがって、本発明は例えば、モータで駆動される工作機械にも適用可能である。
【００４５】
以上、典型的な実施形態を用いて本発明を説明したが、当業者であれば、本発明の範囲から逸脱することなしに、上述の実施形態に変更及び種々の他の変更、省略、追加を行うことができるのを理解できるであろう。
【符号の説明】
【００４６】
１０    ロボット制御システム
１１    ロボット
１１ａ    アーム部
１１ｂ１〜１１ｂ６    関節軸
１２    制御装置
１３    センサ
１４    エンドエフェクタ
１５    ロボットの先端部
１６    ケーブル
１７    動作制御部
１８    学習制御処理部
１９    記憶部
２１    ワールド座標系
２２    メカニカルインタフェイス座標系
３１    振動量推定部
３２    振動補正量算出部
３３    判定部
【図１】
2018118353.tif 000005
【図２】
2018118353.tif 000006
【図３】
2018118353.tif 000007
【図４】
2018118353.tif 000008
【図５】
2018118353.tif 000009
【図６】
2018118353.tif 000010
【図７】
2018118353.tif 000011
【図８】
2018118353.tif 000012
【図９】
2018118353.tif 000013
【図１０Ａ】
2018118353.tif 000014
【図１０Ｂ】
2018118353.tif 000015
【図１０Ｃ】
2018118353.tif 000016
【図１１】
2018118353.tif 000017
【図１２】
2018118353.tif 000018