(57)【要約】【課題】軌道誤差を小さくすることが可能で、学習速度を短縮化することも可能なロボット制御方法を提供する。【解決手段】目標とする目標軌道ｘと実際の軌道ｙｋとの軌道誤差ｅｋを評価した評価値Ｅｋを計算する。計算した評価値Ｅｋが最良評価値Ｅｂｅｓｔよりも良い評価の場合に、それを最良評価値Ｅｂｅｓｔとして更新して保存し、その際の指令軌道ｕｋを最良指令軌道ｕｂｅｓｔとして更新して保存する。計算した評価値Ｅｋが最良評価値Ｅｂｅｓｔよりも悪い評価の場合に、補正軌道Δｕｋ＋１を計算する補償器を別の補償器に変更して補正軌道Δｕｋ＋１を計算し、その補正軌道Δｕｋ＋１と最良指令軌道ｕｂｅｓｔとにより次回の指令軌道ｕｋ＋１を計算する。【選択図】図３
2015100877.tif 000002
【特許請求の範囲】
【請求項１】
制御部が、ロボットを指令軌道により駆動制御し、駆動された前記ロボットの実際の軌道を検出し、目標とする目標軌道と前記実際の軌道との軌道誤差に基づき前記指令軌道を学習制御し得るロボット制御方法において、
前記制御部が、前記軌道誤差を評価した評価値を計算する評価計算工程と、
前記制御部が、前記学習制御を実行する学習制御工程と、を備え、
前記学習制御工程として、
前記制御部が、前記評価計算工程で計算した評価値が記憶部に記憶されている評価値よりも良い評価の場合に、前記記憶部の評価値を前記計算した評価値に更新して保存し、かつ前記記憶部の指令軌道を前記軌道誤差を評価した際の前記指令軌道に更新して保存する良状態保存工程と、
前記制御部が、前記評価計算工程で計算した評価値が前記記憶部に記憶されている評価値よりも悪い評価の場合に、前記軌道誤差から前記指令軌道の補正量を計算する複数の補償器のうち、現在選択されている補償器と異なる計算を行う補償器に選択を変更する補償器変更工程と、
選択されている補償器により前記記憶部に保存されている指令軌道の補正量を計算し、計算した補正量と前記記憶部に保存されている指令軌道とにより次回の指令軌道を計算する次軌道計算工程と、を有する、
ことを特徴とするロボット制御方法。
【請求項２】
前記補償器変更工程において、前記制御部が、現在選択されている補償器と異なる計算を行う補償器に変更する際、補償器における計算式とパラメータとのうち、予め定めた範囲内で前記パラメータの変更を行い、前記範囲内での前記パラメータの変更が全て実行済である場合、前記計算式の変更を行う、
ことを特徴とする請求項１に記載のロボット制御方法。
【請求項３】
前記複数の補償器には、少なくとも比例補償器、ローパスフィルタ、時間進み補償器を含み、
前記補償器変更工程において、前記制御部が、前記学習制御の当初では前記比例補償器を選択し、前記比例補償器と異なる計算を行う補償器に変更する際、前記ローパスフィルタと前記時間進み補償器とを直列的に接続した補償器に変更すると共に、前記ローパスフィルタのカットオフ周波数を前記ロボットの固有振動周波数よりも低く、かつ前記時間進み補償器の進み時間を前記ロボットの固有振動の振動周期よりも短く設定する、
ことを特徴とする請求項１に記載のロボット制御方法。
【請求項４】
前記制御部が、前記学習制御工程により前記学習制御を実行した回数をカウントするカウント工程と、
前記制御部が、前記カウント工程によりカウントされた回数が設定回数を超えた場合に、前記学習制御を中断し、前記記憶部に記憶されている前記指令軌道を用いて前記ロボットを駆動制御する学習中断工程と、を有する、
ことを特徴とする請求項１ないし３のいずれか１項に記載のロボット制御方法。
【請求項５】
前記制御部が、前記評価計算工程により計算された評価値が所定の上限値を超えた場合、前記設定回数を増加させて前記学習制御を再開させる学習再開工程を有する、
ことを特徴とする請求項４に記載のロボット制御方法。
【請求項６】
請求項１ないし５のいずれか１項に記載のロボット制御方法の各工程をコンピュータに実行させるためのロボット制御プログラム。
【請求項７】
請求項６に記載のロボット制御プログラムを記録した、コンピュータで読み取り可能な記録媒体。
【請求項８】
ロボットを指令軌道により駆動制御し、駆動された前記ロボットの実際の軌道を検出し、目標とする目標軌道と前記実際の軌道との軌道誤差に基づき前記指令軌道を学習制御し得るロボット制御装置において、
前記軌道誤差を評価した評価値を計算し、かつ前記学習制御を実行する制御部と、
前記評価値と前記指令軌道とを記憶可能な記憶部と、を備え、
前記制御部は、前記学習制御にあって、
前記計算した評価値が前記記憶部に記憶されている評価値よりも良い評価の場合に、前記記憶部の評価値を前記計算した評価値に更新して保存し、かつ前記記憶部の指令軌道を前記軌道誤差を評価した際の前記指令軌道に更新して保存し、
前記計算した評価値が前記記憶部に記憶されている評価値よりも悪い評価の場合に、前記軌道誤差から前記指令軌道の補正量を計算する複数の補償器のうち、現在選択されている補償器と異なる計算を行う補償器に選択を変更し、
選択されている補償器により前記記憶部に保存されている指令軌道の補正量を計算し、計算した補正量と前記記憶部に保存されている指令軌道とにより次回の指令軌道を計算する、
ことを特徴とするロボット制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、指令軌道と実際の軌道との軌道誤差に基づき指令軌道を学習制御し得るロボット制御方法及びロボット制御装置に関する。
【背景技術】
【０００２】
近年、人間の手のように複雑で高速な組立を実現するためのロボットを有するロボットシステムの開発が進められている。ロボットは、指令軌道を指令することで目標通りに駆動されることが理想的であるが、現実には指令軌道と実際の軌道とには軌道誤差が生じてしまう。しかもロボットを高速に駆動するほど、軌道誤差が大きくなるという問題がある。
【０００３】
このような軌道誤差を小さくするために、前回の動作結果を基に次の動作結果を学習する学習制御を行うものが提案されている（特許文献１参照）。この特許文献１のものは、指令軌道により駆動したロボットの実際の軌道をセンサ等で測定し、指令軌道と実際の軌道との軌道誤差からＰＩＤ補償器を用いて補正軌道を計算し、指令軌道に補正軌道を加えて次回の指令軌道とする。このように、指令軌道がロボットを駆動する毎に学習されることで、ロボットの実際の軌道を目標に近づけようとしている。ロボットによる組立作業は、繰り返し動作が基本であるので、このような学習による改善効果を見込みやすい。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−１８２７８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記特許文献１のものであっても、軌道誤差を小さくできないという問題がある。即ち、軌道誤差が生じる原因としては、サーボ制御系の遅れとロボット振動とが挙げられる。ロボットの関節を動かす制御系、つまりサーボ制御系は、有限の制御帯域を持つので、指令軌道に追従できない軌道誤差が存在する。また、ロボットの関節や本体の剛性には上限があり、ロボットが動くと必ず固有振動数で振動することになるため、軌道誤差が生じる。特に振動により生じる軌道誤差の特徴は、固有振動数付近の振幅が大きいことと、入力に対する出力の位相が１８０度変化することである。
【０００６】
通常、サーボ制御系の安定性を確保するため、制御帯域はロボットの固有振動数以下に設計する。その結果、低周波についてはサーボ制御系の遅れ、高周波についてはロボット振動、が主要な誤差要因となる。この事情は学習制御の制御ループでも同じである。学習制御の安定性を確保するため制御帯域はロボットの固有振動数以下に設計する。その結果、ロボット振動は学習制御の制御帯域を超えてしまうので、ロボット振動による軌道誤差を小さくすることが困難であり、特許文献１のような学習制御を行っても軌道誤差を小さくできない。
【０００７】
また、別の制御方法としてロボットをモデル化し、その逆モデルをそのまま学習制御に用いる補償器に組み込む方法も考えられる。しかし、実際のモデル化には誤差が存在し、その悪影響が必ず残る。これはスピルオーバ問題として知られている。従って、ロボット振動を低減する補償器の設計が困難なので、このような学習制御を実行しても軌道誤差を小さくできない。
【０００８】
そして、以上のような軌道誤差を小さくできないという問題の対応策として、補償器のゲインを下げて学習制御を安定化する方法も考えられる。しかし、ゲインを下げると軌道誤差の改善が遅くなり、学習回数が多くかかって、つまり学習速度が遅くなってしまうという問題がある。また、学習制御では、実際の軌道を測定する時に混入するノイズなどの影響で、軌道誤差が前回より悪化する場合もある。この場合も、特許文献１のような学習制御では、悪化した状態から学習制御が続くので、学習回数が多くかかって、つまり学習速度が遅くなるという問題がある。
【０００９】
そこで本発明は、軌道誤差を小さくすることが可能で、学習速度を短縮化することも可能なロボット制御方法及びロボット制御装置を提供することを目的とするものである。
【課題を解決するための手段】
【００１０】
本発明は、制御部が、ロボットを指令軌道により駆動制御し、駆動された前記ロボットの実際の軌道を検出し、目標とする目標軌道と前記実際の軌道との軌道誤差に基づき前記指令軌道を学習制御し得るロボット制御方法において、前記制御部が、前記軌道誤差を評価した評価値を計算する評価計算工程と、前記制御部が、前記学習制御を実行する学習制御工程と、を備え、前記学習制御工程として、前記制御部が、前記評価計算工程で計算した評価値が記憶部に記憶されている評価値よりも良い評価の場合に、前記記憶部の評価値を前記計算した評価値に更新して保存し、かつ前記記憶部の指令軌道を前記軌道誤差を評価した際の前記指令軌道に更新して保存する良状態保存工程と、前記制御部が、前記評価計算工程で計算した評価値が前記記憶部に記憶されている評価値よりも悪い評価の場合に、前記軌道誤差から前記指令軌道の補正量を計算する複数の補償器のうち、現在選択されている補償器と異なる計算を行う補償器に選択を変更する補償器変更工程と、選択されている補償器により前記記憶部に保存されている指令軌道の補正量を計算し、計算した補正量と前記記憶部に保存されている指令軌道とにより次回の指令軌道を計算する次軌道計算工程と、を有することを特徴とする。
【００１１】
また本発明は、ロボットを指令軌道により駆動制御し、駆動された前記ロボットの実際の軌道を検出し、目標とする目標軌道と前記実際の軌道との軌道誤差に基づき前記指令軌道を学習制御し得るロボット制御装置において、前記軌道誤差を評価した評価値を計算し、かつ前記学習制御を実行する制御部と、前記評価値と前記指令軌道とを記憶可能な記憶部と、を備え、前記制御部は、前記学習制御にあって、前記計算した評価値が前記記憶部に記憶されている評価値よりも良い評価の場合に、前記記憶部の評価値を前記計算した評価値に更新して保存し、かつ前記記憶部の指令軌道を前記軌道誤差を評価した際の前記指令軌道に更新して保存し、前記計算した評価値が前記記憶部に記憶されている評価値よりも悪い評価の場合に、前記軌道誤差から前記指令軌道の補正量を計算する複数の補償器のうち、現在選択されている補償器と異なる計算を行う補償器に選択を変更し、選択されている補償器により前記記憶部に保存されている指令軌道の補正量を計算し、計算した補正量と前記記憶部に保存されている指令軌道とにより次回の指令軌道を計算することを特徴とする。
【発明の効果】
【００１２】
本発明によれば、軌道誤差の評価値が記憶部に記憶されている評価値よりも良くなると、その際の指令軌道が保存されるので、記憶されている指令軌道がより良い指令軌道に更新されていき、指令軌道が悪くなることを防止することができる。また、軌道誤差の評価値が悪くなると、その際の指令軌道を保存せずに、指令軌道の補正量を計算する補償器を別の補償器に変更するので、低周波や高周波などの異なる制御帯域に順次対応することができ、更なる学習効果を見込むことができる。これにより、学習制御を重ねていくことで、軌道誤差を改善していくことができ、軌道誤差を小さくすることができる。
【００１３】
また、例えばフィードバック制御理論上で不安定な補償器により学習し続けると、学習結果としての指令軌道が発振し、つまり学習制御が不安定になる虞がある。しかし、本発明によれば、評価値が悪くなると別の補償器に変更されるので学習制御が不安定になることを防止でき、それによって、補償器の安定性を気にすることなく、様々な補償器の選択を可能とすることができる。
【００１４】
さらに、例えばノイズなどの原因で突然、軌道誤差が前回より悪くなった場合に、その際の指令軌道を保存して学習制御を続けてしまうと、指令軌道が悪くなった状態から学習制御を続けることになり、学習の進み方が遅くなる虞がある。しかし本発明によれば、悪くなった指令軌道を次回の学習に用いることがなく、常に良い状態の指令軌道を用いて学習制御を続けることができるので、つまり評価値が悪くなっても次の学習には影響せず、学習速度が遅くなることを防止できる。
【００１５】
そして、本発明によれば、例えば最初は不安定だが収束が早い、つまりゲインの高い補償器を選択し、評価値が悪くなるとゲインを低い補償器を選択する、といった補償器の変更が可能となる。これにより、学習速度を短縮化することが可能となる。
【図面の簡単な説明】
【００１６】
【図１】ロボット装置の概略構成を示す説明図。
【図２】ロボット制御装置の構成を示すブロック図。
【図３】第１の実施の形態に係る学習制御を示すブロック図。
【図４】第１の実施の形態に係る学習制御を示すフローチャート。
【図５】シミュレーションにおける制御対象のステップ応答を示す図。
【図６】シミュレーションにおける目標軌道と実際の軌道を示す図。
【図７】シミュレーションにおける学習１回目の軌道誤差を示す図。
【図８】シミュレーションにおける学習２回目の軌道誤差を示す図。
【図９】シミュレーションにおける学習３回目の軌道誤差を示す図。
【図１０】シミュレーションにおける学習４回目の軌道誤差を示す図。
【図１１】シミュレーションにおける学習５回目の軌道誤差を示す図。
【図１２】第２の実施の形態に係る学習制御を示すブロック図。
【図１３】第２の実施の形態に係る学習制御のパラメータ及び補償器番号の変更部分を示すフローチャート。
【図１４】第３の実施の形態に係る学習制御を示すブロック図。
【図１５】第４の実施の形態に係る学習制御を示すフローチャート。
【発明を実施するための形態】
【００１７】
＜第１の実施の形態＞
以下、本発明に係る第１の実施の形態を、図１乃至図１１に沿って説明する。まず、ロボット装置の概略構成について説明する。図１に示すように、ロボット装置１００は、多関節ロボットとしてのロボットアーム（ロボット）２００と、ロボットアーム２００を制御するロボット制御装置３００と、を備えている。また、ロボット装置１００は、ロボット制御装置３００に複数の教示点のデータを送信する教示装置としてのティーチングペンダント４００を備えている。ティーチングペンダント４００は、人が操作するものであり、ロボットアーム２００やロボット制御装置３００の動作を指定するのに用いる。
【００１８】
ロボットアーム２００は、本実施の形態では、例えば６関節ロボットである。ロボットアーム２００は、各関節Ｊ１〜Ｊ６を各関節軸Ａ１〜Ａ６まわりにそれぞれ回転駆動する複数（６つ）のアクチュエータ２０１〜２０６を有している。ロボットアーム２００は、可動範囲の中であれば任意の３次元位置で任意の３方向の姿勢に手先（ロボットアームの先端）を向けることができる。一般に、ロボットアーム２００の位置と姿勢は、座標系で表現することができる。図１中のＴｏはロボットアーム２００の台座に固定した座標系を表し、Ｔｅはロボットアーム２００の手先に固定した座標系を表す。
【００１９】
本実施の形態では、各アクチュエータ２０１〜２０６は、電動モータ２１１〜２１６と電動モータ２１１〜２１６に接続された減速機２２１〜２２６とからなる。各減速機２２１〜２２６は、不図示のベルトやベアリング等を介してそれぞれの関節Ｊ１〜Ｊ６で駆動するフレームに接続されている。なお、各アクチュエータ２０１〜２０６の構成は、これに限定するものではなく、例えば人工筋肉等であってもよい。また、例えば各減速機２２１〜２２６には、エンコーダ等の回転検出センサが配置されており、関節の角度を検出できる。各関節Ｊ１〜Ｊ６の角度が検出できれば、手先の位置や姿勢を計算でき、ロボットアーム２００の実際の軌道が検出できる。
【００２０】
ロボットアーム２００は、更に、各アクチュエータ２０１〜２０６の電動モータ２１１〜２１６を駆動制御する駆動制御部としてのサーボ制御部２３０を有している。サーボ制御部２３０は、入力した指令軌道に基づき、各関節Ｊ１〜Ｊ６の位置が指令軌道に追従するよう、各電動モータ２１１〜２１６に電流指令を出力し、各電動モータ２１１〜２１６の動作を制御する。なお、本実施の形態ではサーボ制御部２３０を１つの制御装置で構成しているものを説明しているが、各電動モータ２１１〜２１６にそれぞれ対応したサーボ制御部を備えていてもよい。
【００２１】
また、図１には４つの教示点ｐ１，ｐ２，ｐ３，ｐ４を示している。ロボットアーム２００を最初に駆動する際、これらの教示点は、例えば人がティーチングペンダント４００を用いて与える。ここで、教示点はいわゆる３次元空間内の点ではない。ロボットを関節空間で移動させる場合では、教示点は関節角度である。タスク空間移動の場合では、教示点は３次元空間の位置および姿勢であり、これは図１のように、ｐ１，ｐ２，ｐ３，ｐ４を座標系として表現される。つまり教示点はいわゆる３次元空間内の点ではなく、１つのベクトルとして理解できる。
【００２２】
ロボット制御装置３００は、コンピュータであり、教示点を結ぶ軌道、すなわち教示点を補間した目標軌道ｘを生成する。本明細書では、ティーチングペンダント４００等により教示された教示点を用いて初期に設定した軌道を目標とするため、これを目標軌道ｘ（図１には点線で示す）、サーボ制御部２３０に指令する軌道を指令軌道ｕと呼ぶ。また、目標軌道に従って動かす動作時間をＴとする。教示点はベクトルだったので、目標軌道ｘはベクトルの時系列データ、すなわち２次元の配列データである。
【００２３】
ロボットアーム２００の関節の角度は、ロボット制御装置３００から目標軌道を指令されたサーボ制御部２３０で制御する。サーボ制御部２３０は指令軌道ｕを入力とし、ロボットアーム２００を動作させ、動作結果である実際の軌道ｙを出力する。実際の軌道ｙは目標軌道ｘと同じベクトルの時系列データ、すなわち２次元の配列データである。なお、目標軌道ｘは、各関節に対し、関節角度で与えてもよいし、直交座標系の座標値で与えてもよい。
【００２４】
ついで、ロボット制御装置３００の概略構成を図２に沿って説明する。ロボット制御装置３００は、制御部としてのＣＰＵ３０１と、記憶部としてのＲＯＭ３０２、ＲＡＭ３０３、ＨＤＤ（ハードディスクドライブ）３０４、記録ディスクドライブ（記録媒体）３０５と、各種のインタフェース３０６〜３０９と、を備えている。
【００２５】
ＣＰＵ３０１には、ＲＯＭ３０２、ＲＡＭ３０３、ＨＤＤ３０４、記録ディスクドライブ３０５及び各種のインタフェース３０６〜３０９が、バス３１０を介して接続されている。ＲＯＭ３０２には、ＣＰＵ３０１を動作させるためのプログラム３３０が格納されている。このプログラム３３０は、ロボット制御プログラムを含み、詳しくは後述する各部（図３参照）に各種演算処理を実行させるためのプログラムである。ＲＡＭ３０３は、ＣＰＵ３０１の演算処理結果などを一時的に記憶可能な記憶部である。ＨＤＤ３０４は、演算処理結果や各種のデータ（最良指令軌道や最良評価値を含む）を記憶するための記憶部である。
【００２６】
ティーチングペンダント４００はインタフェース３０６に接続されており、ＣＰＵ３０１はインタフェース３０６及びバス３１０を介してティーチングペンダント４００からの教示点のデータの入力を受ける。
【００２７】
サーボ制御部２３０は、インタフェース３０９に接続されており、ＣＰＵ３０１は、目標軌道のデータを所定時間間隔でバス３１０及びインタフェース３０９を介してサーボ制御部２３０に出力する。
【００２８】
インタフェース３０７には、モニタ３２１が接続されており、モニタ３２１には、各種画像が表示される。インタフェース３０８は、書き換え可能な不揮発性メモリや外付けＨＤＤ等の外部記憶装置３２２が接続可能に構成されている。記録ディスクドライブ３０５は、記録ディスク（記録媒体）３３１に記録された各種データやプログラム等を読み出すことができる。なお、本発明に係るプログラムが記録される記録媒体としては、記録ディスク３３１だけに限らず、外部記憶装置３２２などの不揮発性メモリや外付けＨＤＤ等も含まれる。
【００２９】
つづいて、本実施の形態に係る学習制御について図３乃至図１１に沿って説明する。まず、図３に沿って学習制御を行う各部の作用について説明する。なお、図３中の記号ｋは、第ｋ回目まで学習が進んだ場面を表現している。記号ｋは初期値をゼロとする学習回数である。
【００３０】
図３に示すように、ロボット制御装置３００は、ＣＰＵ３０１によりプログラム３３０が機能することで構成される各部として、軌道誤差計算部１、評価値計算部２、評価値判定部３、最良評価値保存部４、最良軌道誤差保存部５を備えている。さらに、各部として、最良指令軌道保存部６、補償器番号更新部７、補償器切換え部８、指令計算部９、前回の指令軌道保存部１０、学習回数更新部１１を備えている。
【００３１】
上記軌道誤差計算部１は、目標軌道ｘと実際の軌道ｙｋとの軌道誤差ｅｋを下記数式（１）のように計算する。なお、この軌道誤差ｅｋも、目標軌道ｘや実際の軌道ｙｋと同様、ベクトルの時系列データ、すなわち２次元の配列データである。
【数１】
2015100877.tif 000003
【００３２】
上記評価値計算部２は、軌道誤差ｅｋから評価値Ｅｋを計算する。この評価値Ｅｋは、例えば標準偏差を計算する関数をｓｔｄｅｖとし、次の数式（２）で計算する。
【数２】
2015100877.tif 000004
【００３３】
なお、評価値Ｅｋの計算は、簡単な計算となるＰＶ値（ｐｅａｋ  ｔｏ  ｖａｌｌｅｙ）を用い、次の数式（３）で計算してもよい。
【数３】
2015100877.tif 000005
【００３４】
上記評価値判定部３は、後述する最良評価値Ｅｂｅｓｔと評価値Ｅｋを比較し、評価結果ｑｋを出力する。評価結果ｑｋは評価値Ｅｋが最良評価値Ｅｂｅｓｔよりもさらに良い値（良い評価）であるか、悪い値（悪い評価）であるか、つまり改善したか悪化したかの２つの値をとる変数である。上記最良評価値保存部４は、評価結果ｑｋが改善していたら（良い評価の場合）、評価値Ｅｋを最良評価値Ｅｂｅｓｔとして保存する。上記最良軌道誤差保存部５は、評価結果ｑｋが改善していたら（良い評価の場合）、軌道誤差ｅｋを最良軌道誤差ｅｂｅｓｔとして保存する。上記最良指令軌道保存部６は、評価結果ｑｋが改善していたら（良い評価の場合）、前回の指令軌道保存部１０で保存しておいた前回の指令軌道ｕｋを最良指令軌道ｕｂｅｓｔとして更新して保存する。
【００３５】
上記補償器番号更新部７は、評価結果ｑｋが改善していたら前回と同じ補償器番号ｍを出力し、評価結果ｑｋが悪化していたら補償器番号ｍを更新して出力する。補償器番号ｍの更新は、例えば１から順番に１ずつ増やしていき、全部の補償器を選択したら、また１に戻る。
【００３６】
上記補償器切換え部８は、補償器を識別する補償器番号ｍに従って補償器を切り換え、最良軌道誤差ｅｂｅｓｔに補償器を作用させ、下記数式（４）に示すように補正軌道（補正量）Δｕｋ＋１を出力する。なお、最良軌道誤差ｅｂｅｓｔ及び補正軌道Δｕｋ＋１も、ベクトルの時系列データ、すなわち２次元の配列データである。
【数４】
2015100877.tif 000006
【００３７】
ここで、補償器としては下記に例示する（１）〜（８）のものが挙げられる。
【００３８】
（１）比例補償器
【数５】
2015100877.tif 000007
なお、Γ1は比例ゲインと呼ばれる定数である。
【００３９】
（２）積分補償器
【数６】
2015100877.tif 000008
なお、Γ2は積分ゲインと呼ばれる定数である。
【００４０】
（３）微分補償器
【数７】
2015100877.tif 000009
なお、Γ3は微分ゲインと呼ばれる定数である。
【００４１】
（４）ＰＩＤ補償器
上記（１）〜（３）の補償器を合わせたＰＩＤ補償器である。
【数８】
2015100877.tif 000010
【００４２】
（５）ローパスフィルタ（ＬＰＦ:Ｌｏｗ  Ｐａｓｓ  Ｆｉｌｔｅｒ）
低い周波数を通過させるフィルタである。１次のＬＰＦは下記数式（９）の伝達関数で定義される。
【数９】
2015100877.tif 000011
【００４３】
なお、ｆｃはカットオフ周波数、ｓはラプラス変換のｓである。この伝達関数Ｔ（ｓ）を実現するフィルタを設計する手法は双１次変換などが知られている。具体的な設計手法の説明は省略し、ここでは結果のみ、下記数式（１０）のように記述する。これは、カットオフ周波数をパラメータに含んだ計算式である。
【数１０】
2015100877.tif 000012
【００４４】
（６）２階微分補償器
【数１１】
2015100877.tif 000013
なお、目標軌道ｘが位置で与えられる場合、２階微分は加速度に相当する。この補償器は加速度をフィードバックすることに相当する。加速度フィードバックは周波数が高いほうがフィードバックする量が大きいので、特にロボットの振動抑制に有効である。Γσは定数である。
【００４５】
（７）時間遅れ補償器、時間進み補償器
【数１２】
2015100877.tif 000014
この補償器は、最良軌道誤差ｅｂｅｓｔの時間をずらして補正軌道Δｕｋ＋１とする。ここで、ｔ０は時間をずらす量である。マイナスにすると時間遅れ補償となり、プラスだと時間進み補償となる。動作時間である０からＴの範囲を超えると軌道誤差をゼロとして扱う。ロボットの振動する周波数がほぼ一定と考えられる場合、ｔ０を振動周期に合わせることによって振動抑制が可能となる。
【００４６】
（８）ノッチフィルタ(Notch filter)
特定の周波数成分だけ通過させないフィルタであり、下記数式（１３）の伝達関数で定義される。
【数１３】
2015100877.tif 000015
【００４７】
なお、ｆ０は阻止周波数、Ｑ値は急峻さを表す無次元数、ｓはラプラス変換のｓである。この伝達関数Ｔ（ｓ）を実現するフィルタを設計する手法は双１次変換などが知られている。具体的な設計手法の説明は省略し、ここでは結果のみ、下記数式（１４）のように記述する。これは阻止周波数ｆ０とＱ値をパラメータに含んだ計算式である。
【数１４】
2015100877.tif 000016
なお、ｆ０をロボットの振動周波数に合わせることにより、補正軌道Δｕｋ＋１が振動の影響で大きくなるのを防ぐことができる。
【００４８】
上記指令計算部９は、補正軌道Δｕｋ＋１と、最良指令軌道ｕｂｅｓｔを加え、次回の指令軌道ｕｋ＋１を下記数式（１５）のように計算する。なお、次回の指令軌道なので学習の回数を表す添え字ｋには１をプラスし、ｋ＋１である。
【数１５】
2015100877.tif 000017
【００４９】
上記前回の指令軌道保存部１０は、この次回の指令軌道ｕｋ＋１を保存する。保存した次回の指令軌道ｕｋ＋１は、次回のロボットアーム２００の駆動後、その際の評価値Ｅｋ＋１が最良評価値Ｅｂｅｓｔよりも良くなった場合に、上記最良指令軌道保存部６で使用することになる。上記サーボ制御部２３０は、指令軌道ｕｋ＋１に基づいてロボットアーム２００を動作させ、動作結果として実際の軌道ｙｋ＋１を出力する。そして、上記学習回数更新部１１は、学習回数を表す添え字ｋの値を１増やし、つまり学習回数のカウントを実行する。
【００５０】
次に、本実施の形態に係る学習制御の動作を図４のフローチャートに沿って説明する。このフローチャートは、同じ目標軌道ｘに従ってロボットアーム２００を繰り返し何度も動作させる際のうちの１回の動作を示している。この動作の回数は、学習回数ｋで表し、初回はｋ＝０とする。
【００５１】
ロボットアーム２００の駆動を開始し、本実施の形態に係る学習制御を開始すると、まず、ロボットアーム２００の駆動が初回であるか否か（Ｓ１）を判定する。初回である場合は（Ｓ１のＹ）、ステップＳ２に進み、それ以外である場合は（Ｓ１のＮ）、ステップＳ３に進む。
【００５２】
例えばロボットアーム２００の駆動が初回であって、ステップＳ２に進むと、最初の指令軌道ｕ１及び最良指令軌道ｕｂｅｓｔを目標軌道ｘとする（ｕ１＝ｘ、ｕｂｅｓｔ＝ｘ）。また、現時点での最良評価値Ｅｂｅｓｔを悪い値、具体的には大きな数字や無限大に設定する（Ｅｂｅｓｔ＝∞）。さらに、補償器番号ｍを１に設定する（ｍ＝１）。続いて、ステップＳ１５に進み、指令軌道ｕ１を次回の学習制御における前回の指令軌道として保存しておく。そして、ステップＳ１６において、指令軌道ｕ１（サーボ制御部２３０に入力）によってロボットアーム２００の動作を実行し、実際の軌道ｙｋ（出力）を得る。そして、ステップＳ１７において、学習回数ｋに１を加えて（ｋ＝ｋ＋１）、１回目のロボットアーム２００の動作を終了する。
【００５３】
ロボットアーム２００の動作が２回目以降となると（Ｓ１のＮ）、ステップＳ３に進み、学習中であるか否か、即ち学習回数ｋが設定回数ｋｍａｘを超えたか否かを判定する。ここで、学習回数ｋが設定回数ｋｍａｘを超えている場合には、詳しくは後述するように補償器による指令軌道の計算が改善しないぐらいに学習が進んでいるはずであるので、ステップＳ４に進む（学習中断工程）。ステップＳ４では、指令軌道ｕｋ＋１を記憶部に保存されている最良指令軌道ｕｂｅｓｔに設定する（ｕｋ＋１＝ｕｂｅｓｔ）。そして、ステップＳ１５〜Ｓ１７に進み、念のため、指令軌道ｕｋ＋１を前回の指令軌道として保存しておき、実際にロボットアーム２００の指令軌道ｕｋ＋１（つまり最良指令軌道ｕｂｅｓｔ）で駆動し、学習回数ｋに１加えて、終了する。
【００５４】
一方、ステップＳ３において、学習中であると判定した場合は（Ｓ３のＹ）、ステップＳ５に進み、まず、軌道誤差計算部１で目標軌道ｘと前回の実際の軌道ｙｋとの軌道誤差ｅｋを計算する（ｅｋ＝ｘ−ｙｋ）。ついで、評価値計算部２で、軌道誤差ｅｋから評価値Ｅｋを計算する（評価計算工程）（Ｓ６）。
【００５５】
次に、学習制御工程に入る。まず、評価値判定部３で、計算した評価値Ｅｋと最良評価値Ｅｂｅｓｔを比較することで、評価値Ｅｋが改善しているか否かを判定し（Ｓ７）、評価結果ｑｋを出力する。評価値Ｅｋが最良評価値Ｅｂｅｓｔよりも改善している場合は（Ｓ７のＹ）、ステップＳ８に進み、評価値Ｅｋが最良評価値Ｅｂｅｓｔよりも悪化している場合は（Ｓ７のＮ）、ステップＳ１１に進む。なお、ロボットアーム２００の動作が２回目である場合（ｋ＝１）は、初回に最良評価値Ｅｂｅｓｔが無限大等に設定されているため、確実に評価値Ｅｋが改善することになり、ステップＳ８に進むことになる。
【００５６】
ステップＳ８では、評価値Ｅｋが最良評価値Ｅｂｅｓｔよりも改善しているので、最良評価値保存部４で、評価値Ｅｋを最良評価値Ｅｂｅｓｔとして更新して保存する（良状態保存工程）。続いて、ステップＳ９では、最良軌道誤差保存部５で、前回より改善している軌道誤差ｅｋを最良軌道誤差ｅｂｅｓｔとして更新して保存する。また、ステップＳ１０では、最良指令軌道保存部６で、前回より改善している指令軌道ｕｋを最良指令軌道ｕｂｅｓｔとして更新して保存する（良状態保存工程）。
【００５７】
一方、ステップＳ１１では、評価値Ｅｋが最良評価値Ｅｂｅｓｔよりも悪化しているので、補償器番号更新部７で、補償器番号ｍを１つずつ増やして更新する（補償器変更工程）。そして、ステップＳ１２では、補償器切換え部８で、補償器番号ｍに従って補償器を選択する（補償器変更工程）。即ち、評価値Ｅｋが最良評価値Ｅｂｅｓｔよりも改善している場合は、ステップＳ１１を通らず、補償器番号ｍを更新することがないので、補償器は変わらないことになる。一方、評価値Ｅｋが最良評価値Ｅｂｅｓｔよりも悪化している場合は、ステップＳ１１において補償器番号ｍが更新されているので、現在選択されている補償器と異なる計算を行う補償器に切換えられることになる。
【００５８】
ステップＳ１３においては、補償器切換え部８で、最良軌道誤差ｅｂｅｓｔに補償器を作用させ、補正軌道Δｕｋ＋１を計算して出力する（次軌道計算工程）。続いて、ステップＳ１４では、指令計算部９で、最良指令軌道ｕｂｅｓｔに補正軌道Δｕｋ＋１を加えて次回の指令軌道ｕｋ＋１を計算する（次軌道計算工程）。
【００５９】
その後は、上述したステップＳ１５に進み、指令軌道ｕｋ＋１を次回の学習制御における前回の指令軌道として保存しておく。そして、ステップＳ１６において、指令軌道ｕｋ＋１（サーボ制御部２３０に入力）によってロボットアーム２００の動作を実行し、実際の軌道ｙｋ＋１（出力）を得る。そして、ステップＳ１７において、学習回数ｋに１を加えて（ｋ＝ｋ＋１）（カウント工程）、ｋ回目のロボットアーム２００の動作を終了する。
【００６０】
ついで、本実施の形態に係る学習制御のシミュレーションについて図４のフローチャートを参照しつつ説明する。ここでのシミュレーションは、理解を容易にするため、制御対象を１軸の回転関節で考える。なお、回転関節でなく、直動関節の場合であっても、同じシミュレーションとなる。指令軌道ｕに対する応答結果である出力軌道ｙは下記数式（１６）で示す伝達関数で表現できるものとする。
【数１６】
2015100877.tif 000018
なお、数式（１６）は２次遅れとして知られている伝達関数である。ｗ０は固有振動周波数、ζは臨界減衰係数比と呼ばれる。この伝達関数はロボットアームの振動を模擬した特性を与える。
【００６１】
本シミュレーションでは、周波数５Ｈｚ、即ちｗ０＝２πｆｃ＝１０π、ζ＝０．１とした。このときのステップ応答を図５に示す。この制御対象の応答は、図５のように振動しながら目標の１に近づいていく。実際のロボットの目標軌道はこのようなステップではなく、滑らかな軌道が用いられる。本シミュレーションでは後述するように、２秒間で１００度動く５次曲線を用いた。
【００６２】
まず、ステップＳ２の初期設定で初回の指令軌道ｕ１を５次曲線で与える目標軌道ｘにセットし、ステップＳ１６でロボット動作を実行する。指令軌道ｕ１に対する出力軌道ｙ１を上記数式（１６）で計算した結果を図６に示す。このスケールのグラフでは両者はほとんど重なって見える。
【００６３】
しかしステップＳ１７で学習回数をｋ＝１に更新し、軌道誤差ｅ１をステップＳ５で計算すると図７が得られ、まだ軌道誤差ｅ１が大きいことが分かる。また、指令軌道ｕ１に対して出力軌道ｙ１は遅れるので、軌道誤差ｅ１はプラスである。
【００６４】
評価値として標準偏差を採用し、ステップＳ６で計算するとＥ１＝０．２４３が得られる。この評価値を図７の右上に示した。最良評価値ＥｂｅｓｔはステップＳ２により最悪値（無限大）に初期設定されていたのでステップＳ７では改善したと判定する。その結果、ステップＳ８〜Ｓ１０により最良評価値Ｅｂｅｓｔとして評価値Ｅ１、最良軌道誤差ｅｂｅｓｔとして軌道誤差ｅ１、最良指令軌道ｕｂｅｓｔとして指令軌道ｕ１が保存される。
【００６５】
最初の補償器はゲイン１の比例補償器とした。この補償器は低周波誤差に対して有効だが、高周波誤差に対しては発振しやすい性質を持っている。ステップＳ１２，Ｓ１３で補正軌道Δｕ２を計算し、ステップＳ１４で次回の指令軌道ｕ２を計算する。そして、ステップＳ１７で学習回数をｋ＝２に更新する。
【００６６】
続いて、指令軌道ｕ２に対する応答結果である出力軌道ｙ２を上記数式（１６）で計算し、ステップＳ５，Ｓ６で軌道誤差ｅ２と評価値Ｅ２を計算すると図８が得られる。評価値はＥ２＝０．０２１なので、かなり改善された。ステップＳ７では再び改善したと判定し、前回と同じ比例補償器を用いステップＳ１３，Ｓ１４で次回の指令軌道ｕ３を計算し、ステップＳ１７で学習回数をｋ＝３に更新する。
【００６７】
さらに、指令軌道ｕ３に対する応答結果である出力軌道ｙ３を上記数式（１６）で計算し、ステップＳ５，Ｓ６で軌道誤差ｅ３と評価値Ｅ３を計算すると図９が得られる。評価値はＥ３＝０．０８４なので今回は悪化した。特に高周波の振動成分が目立つが、これはロボットアームの固有振動数を模擬した５Ｈｚの振動成分が励振されたためである。つまり、これは学習制御の結果、かえって軌道誤差が悪化してしまう場合が存在することを示している。図示しないが、同じ補償器で学習を続けてもさらに悪化する。これは従来の学習制御ように同じ補償器で学習を続けると軌道誤差が悪化することを示している。
【００６８】
しかし、本実施の形態では次のように動作する。ステップＳ７において評価値Ｅ３が悪化したと判定し、ステップＳ１１において補償器番号をｍ＝２に更新する。本シミュレーションにおいて２番目の補償器は、カットオフ周波数を１Ｈｚに設定したローパスフィルタと８０ｍｓの時間進み補償の時間に設定した時間進み補償器とを直列につなげた補償器とした。
【００６９】
ここで、ローパスフィルタのカットオフ周波数は制御対象の固有周波数よりも低い必要がある。そうでない場合、ローパスフィルタで制御対象の固有振動を十分減衰させることができないからである。また、時間進み補償の時間は制御対象の固有振動の振動周期より短い必要がある。そうでないと制御対象の振動波形の次の山に重なり、進み補償の効果がなくなってしまうからである。従って、本シミュレーションでは、ローパスフィルタのカットオフ周波数は制御対象の固有振動数５Ｈｚよりも低い１Ｈｚとし、時間進み補償の時間は制御対象の固有振動の振動周期２００ｍｓよりも小さい８０ｍｓとした。なお、詳しくは後述する第２の実施の形態で説明するように、カットオフ周波数や時間進み補償の時間をパラメータとして探索する場合は、これらの数字を予め正確に決める必要はない。
【００７０】
なお、本実施の形態では、軌道誤差ｅが悪化した場合に、その際の指令軌道ｕは用いずに最良指令軌道ｕｂｅｓｔを用いるので、どのような補償器で計算しても誤差が増幅されることはなく、安定性が保証される。そのため、このように複数の計算式（補償器）を組み合わせて指令軌道の計算を行っても問題ない。
【００７１】
このようにローパスフィルタと時間進み補償器とを直列的に接続した補償器を用い、ステップＳ１３，Ｓ１４で次回の指令軌道ｕ４を計算する。この際、悪化した時の軌道誤差ｅ３や指令軌道ｕ３は用いず、指令軌道ｕ４の計算には最良軌道誤差ｅｂｅｓｔ及び最良指令軌道ｕｂｅｓｔを用いたことが重要である。つまり悪化した結果が次の学習にも悪影響を与えることは無い。そして、ステップＳ１７で学習回数をｋ＝４に更新する。
【００７２】
続いて、指令軌道ｕ４に対する応答結果である出力軌道ｙ４を上記数式（１６）で計算し、ステップＳ５，Ｓ６で軌道誤差ｅ４と評価値Ｅ４を計算すると図１０が得られる。評価値はＥ４＝０．００９なのでかなり改善した。すると、ステップＳ７において改善したと判定し、前回（第４回目）と同じ補償器を用い、ステップＳ１３，Ｓ１４で次回（第５回目）の指令軌道ｕ５を計算し、ステップＳ１７で学習回数をｋ＝５に更新する。
【００７３】
そして、指令軌道ｕ５に対する応答結果である出力軌道ｙ５を上記数式（１６）で計算し、ステップＳ５，Ｓ６で軌道誤差ｅ５と評価値Ｅ５を計算すると図１１が得られる。評価値はＥ５＝０．００６なのでさらに改善した。
【００７４】
このように本シミュレーションによると、最初の評価値Ｅ１＝０．２４３は比例補償器による学習制御によりＥ２＝０．０２１まで改善できたが、その後は悪化した。しかし、その後に効果のある他の補償器に自動的に切り替わりＥ５＝０．００６まで改善できた。
【００７５】
上述のように本シミュレーションでは補償器を変更したことで学習結果が改善した。ここで、仮に補償器を変更しても学習結果が改善しなかった場合でも、ステップＳ７で改善したと判定されるまで、ステップＳ１１により次々と別の補償器を選択し、改善する補償器を探索することになる。そして、ステップＳ３で学習回数が設定回数を超えたか否かを判定し、超えたらその後はステップＳ４によりそれまでに学習できた最良指令軌道ｕｂｅｓｔを常に用いることになる。設定回数は、補償器の探索が終了し、何れの補償器を用いても学習結果が改善しなくなるような程度の回数に設定すると好ましい。
【００７６】
以上のように本ロボット制御装置３００によれば、軌道誤差ｅｋの評価値Ｅｋが記憶部（例えばＲＡＭ３０３）に記憶されている最良評価値Ｅｂｅｓｔよりも良くなると、その際の指令軌道ｕｋが保存される。このため、記憶されている最良指令軌道ｕｂｅｓｔがより良い指令軌道に更新されていき、学習によって指令軌道が悪くなることを防止することができる。また、軌道誤差ｅｋの評価値Ｅｋが最良評価値Ｅｂｅｓｔより悪くなると、その際の指令軌道ｕｋを保存せずに、指令軌道ｕｋ＋１の補正軌道Δｕｋ＋１を計算する補償器を別の補償器に変更する。そのため、低周波や高周波などの異なる制御帯域に順次対応することができ、更なる学習効果を見込むことができる。これにより、学習制御を重ねていくことで、軌道誤差ｅを改善していくことができ、軌道誤差ｅを小さくすることができる。
【００７７】
また、例えばフィードバック制御理論上で不安定な補償器により学習し続けると、学習結果としての指令軌道が発振し、つまり学習制御が不安定になる虞がある。しかし、本ロボット制御装置３００によれば、評価値Ｅｋが悪くなると別の補償器に変更されるので学習制御が不安定になることを防止でき、それによって、補償器の安定性を気にすることなく、様々な補償器の選択を可能とすることができる。
【００７８】
さらに、例えばノイズなどの原因で突然、軌道誤差ｅが前回より悪くなった場合に、その際の指令軌道ｕを保存して学習制御を続けてしまうと、指令軌道ｕが悪くなった状態から学習制御を続けることになり、学習の進み方が遅くなる虞がある。しかし本ロボット制御装置３００によれば、悪くなった指令軌道ｕを次回の学習に用いることがなく、常に最良指令軌道ｕｂｅｓｔを用いて学習制御を続けることができる。そのため、つまり評価値Ｅが悪くなっても次の学習には影響せず、学習速度が遅くなることを防止できる。
【００７９】
そして、本ロボット制御装置３００によれば、例えば最初は不安定だが収束が早い、つまりゲインの高い補償器を選択し、評価値Ｅが悪くなるとゲインを低い補償器を選択する、といった補償器の変更が可能となる。これにより、学習速度を短縮化することが可能となる。
【００８０】
また、比例補償器は低い周波数に対して有効だが、高い周波数に対しては不安定になる。一方、高い周波数に対して有効な補償器は、ローパスフィルタと時間すすみ補償器とを直列的に接続した補償器であるが、低い周波数に対しては効果が少なく、学習回数が多くかかる。そこで、本ロボット制御装置３００では、当初は補償器として比例補償器を採用し、補償器を変更する際にローパスフィルタと時間すすみ補償器とを接続した補償器を選択する。これにより、低周波成分は早めに補正され、その後に残った高周波成分が補正されるので効率が良く、従って学習速度を速くすることができる。なお、補償器の順番を逆にしてしまうと、比例補償器では高周波成分が悪化するので、学習効果があまり無い。
【００８１】
そして、本ロボット制御装置３００では、学習している間、補償器を変更していくので、補償器の選び方によっては新たに計算する指令軌道が改善せず、ロボットアーム２００が改善しない動作を繰り返す虞がある。そこで学習回数に上限としての設定回数を設け、これを超えたら学習を停止することで、改善しない動作の繰り返しが防止できる。学習が停止している間は、最良指令軌道で動作させるので、良好な動作が継続するはずである。
【００８２】
ついで、第１の実施の形態を一部変更した第２の実施の形態について図１２及び図１３に沿って説明する。本第２の実施の形態は、上記第１の実施の形態に比して、補償器のパラメータの探索を追加したものである。従来の学習制御の補償器では、使うパラメータ、例えば補償器のゲイン等を、予め決めておく必要があった。しかし、どの値が適切なのかは不明である。このパラメータの良し悪しは学習制御の性能を左右する。例えばゲインを大きな値にすれば、学習回数を少なくできるが、その半面、安定性が損なわれて発振し、学習制御が成り立たなくなる。このようにパラメータを適切な値にすべきなのは当然のことであるが、学習制御では適切な値が不明なので、学習制御の性能を引き出せているとは言えない。また、ロボットの場合、ロボットの姿勢や動かし方によって運動特性が大きく変化する。このため、すこし条件を変えただけでも適切なパラメータ値を検討しなおす必要があり、これは大変な手間である。つまり実質的に適切なパラメータ値を求めることも困難である。本第２の実施の形態では、これらの問題を解決する。
【００８３】
補償器は、計算式と計算式に含まれるパラメータとから構成されおり、上記数式（４）で説明した補償器は、下記数式（１７）次のように示すことができる。
【数１７】
2015100877.tif 000019
ここで、ｍｐは、第ｍ補償器のパラメータを表す。補償器の種類によって、パラメータは複数ある場合もある。例えばＰＩＤ補償器では、比例ゲイン、積分ゲイン、微分ゲインの３つのパラメータがある。
【００８４】
図１２に示すように、本第２の実施の形態においては、補償器パラメータ探索部１４を備えている。詳しくは後述するように、本実施の形態では、補償器パラメータ探索部１４で補償器の計算式に含まれるパラメータｍｐを最適化し、最適化が完了したら、補償器番号更新部７で補償器番号ｍを更新し、補償器の計算式を変更する。
【００８５】
続いて、第２の実施の形態における学習制御の動作を図１３に沿って説明する。なお、図１３に示すフローチャートは、図４に示すフローチャートのステップＳ１１を置き換えるものである。ステップＳ１１以外の部分は、図４のものを引用して説明する。また、図１３において、一点鎖線で囲った部分は、それぞれ補償器パラメータ探索部１４による制御、補償器番号更新部７による制御を示している。
【００８６】
第１の実施の形態と同様に、評価値判定部３による評価結果ｑｋが改善した場合は、ステップＳ７からステップＳ８〜Ｓ１０に進み、補償器番号ｍやパラメータｐが変わらないので、ステップＳ１２において、前回と同じ補償器を選択する（図４参照）。一方、評価結果ｑｋが悪化した場合は、ステップＳ７から図１３のステップＳ１１−１に進む。
【００８７】
ステップＳ１１−１に進むと、探索方向ｄの値がプラスであるかマイナスであるかを判定する。探索方向ｄがプラスならステップＳ１１−２に、マイナスならステップＳ１１−５に進む。なお、探索方向ｄの初期値はプラスに設定されている。
【００８８】
ステップＳ１１−２では、パラメータｍｐの値が予め定めた探索範囲以内（範囲内）であるか否かを判定する。パラメータｍｐが探索範囲以内である場合は、ステップＳ１１−３に進み、パラメータｍｐが探索範囲以内でない場合は、ステップＳ１１−４に進む。なお、予め定めた探索範囲とは、各種パラメータの上限値と下限値である。
【００８９】
ステップＳ１１−３では、パラメータｍｐに予め定めたパラメータの刻み幅Δｍｐを加えて、パラメータｍｐをプラス方向に更新する。そして、ステップＳ１２以降に進み、選択されている補償器のパラメータｍｐをプラス方向に更新した補償器で、当該補償器による計算を行い、指令軌道ｕｋ＋１を計算する。
【００９０】
一方、上記ステップＳ１１−２において、パラメータｍｐが探索範囲以内でない場合は、ステップＳ１１−４に進み、探索方向をマイナス方向に変更して（ｄ＝マイナスにして）、ステップＳ１１−１に戻る。ここでは、探索方向がマイナスであるので、ステップＳ１１−５に進み、パラメータｍｐの値が予め定めた探索範囲以内であるか否かを判定する。ここで、パラメータｍｐが探索範囲以内である場合は、ステップＳ１１−６に進み、パラメータｍｐから予め定めたパラメータの刻み幅Δｍｐを減じて、パラメータｍｐをマイナス方向に更新する。そして、ステップＳ１２以降に進み、選択されている補償器のパラメータｍｐをマイナス方向に更新した補償器で、当該補償器による計算を行い、指令軌道ｕｋ＋１を計算する。
【００９１】
また、ステップＳ１１−５において、パラメータｍｐが探索範囲以内でない場合は、ステップＳ１１−７に進み、全パラメータを探索し終わっているか否かを判定する。全パラメータの探索が終わっていない場合は、ステップＳ１１−８に進み、探索するパラメータの種類を変更して、探索方向ｄを初期値であるプラスにセットする。そして、上記ステップＳ１１−１に戻り、つまり別のパラメータの探索を開始する。
【００９２】
ステップＳ１１−７において、全パラメータの探索が終わっていると判定された場合は、ステップＳ１１−９に進む。ここで、第ｍ補償器の計算式に含まれる全パラメータの探索が終わっていることになるので、補償器番号ｍを更新し（ｍ＝ｍ＋１）、ステップＳ１１−１０に進む。ステップＳ１１−１０では、全部の補償器の選択が終わっているか否かを判定する。全部の補償器の選択が終わっていない場合は、上記ステップＳ１１−１に戻り、つまり別の補償器に切り換えて、その補償器のパラメータの探索を開始する。そして、全部の補償器の選択が終わっている場合（実行済の場合）は、ステップＳ１１−１１に進み、補償器番号を初期値（ｍ＝１）に戻し、上記ステップＳ１１−１に戻り、再び異なる補償器におけるパラメータの探索をやり直す。
【００９３】
このように図１３のフローチャートに従って動作させると、補償器番号ｍと第ｍ補償器のパラメータｍｐの探索が実行されて、適切な値が決まる。そして、その補償器番号ｍ及び探索されたパラメータｍｐを用いて、順次、補正軌道を計算する。
【００９４】
なお、上記以外の動作は、第１の実施形態と同じなので説明を省略する。
【００９５】
また、選択した補償器でロボットを動作させた評価値Ｅｋは悪化してもかまわない。前述したように、評価値Ｅｋが悪化したら別の補償器に自動的に切り替わるので、安定性も気にすることなく、様々なパラメータについて探索することができる。
【００９６】
このように第２の実施の形態によれば、学習制御に必要な補償器の計算式に含まれるパラメータが不明でも、軌道誤差の評価値を改善するように自動調整することができる。
【００９７】
＜第３の実施の形態＞
ついで、第１の実施の形態を一部変更した第３の実施の形態を図１４に沿って説明する。本第３の実施の形態のものは、上記第１の実施の形態に比して、最良指令軌道ｕｂｅｓｔの保存手法を変更したものである。本第３の実施の形態では、前回の補正軌道を保存しておき、悪化したら元に戻して、それを最良指令軌道ｕｂｅｓｔとすることで、結果的に最良指令軌道ｕｂｅｓｔを保存しておく手法のものである。
【００９８】
図１４に示すように、本第３の実施の形態では、前回の補正軌道保存部１２と最良指令軌道計算部１３とを備えている。前回の補正軌道保存部１２は、補正軌道Δｕｋを保存する。最良指令軌道計算部１３は、評価結果ｑｋが改善したら、第１の実施の形態と同じように、前回の指令軌道ｕｋを最良指令軌道ｕｂｅｓｔとする（ｕｂｅｓｔ＝ｕｋ）。また、評価結果ｑｋが悪化していたら前回の指令軌道ｕｋから前回の補正軌道Δｕｋを差し引いて最良指令軌道ｕｂｅｓｔとする（ｕｂｅｓｔ＝ｕｋ−Δｕｋ）。このように、悪化した原因である補正軌道Δｕｋを差し引くので、結局、最良指令軌道ｕｂｅｓｔが得られる。
【００９９】
なお、上記以外の動作は、第１の実施形態と同じなので説明を省略する。本第３の実施の形態では、前回の補正軌道を保存することによって、最良指令軌道を保存するのと同じ作用と効果がある。
【０１００】
＜第４の実施の形態＞
ついで、第１の実施の形態を一部変更した第４の実施の形態を図１５に沿って説明する。本第４の実施の形態は、上記第１の実施の形態に比して、評価値に所定の上限値を設け、この上限値を超えたら学習制御を再開する機能を追加したものである。
【０１０１】
図１５に示すように、図４のフローチャートに対して、ステップＳ５で軌道誤差ｅｋを計算し、ステップＳ６で評価値Ｅｋを計算した後に、ステップＳ２０〜Ｓ２２を設けた。ステップＳ２０では、学習回数ｋがあらかじめ設定した最大の設定回数ｋｍａｘを超えているか否かを判定する。学習回数ｋが設定回数ｋｍａｘを超えていない場合は、学習中なのでそのままステップＳ７に進む。一方、学習回数ｋが設定回数ｋｍａｘを超えている場合は、学習は停止中であるのでステップＳ２１に進む。
【０１０２】
ステップＳ２１に進むと、評価値Ｅｋが上限値Ｅｍａｘを超えたか否かを判定する。評価値Ｅｋが上限値Ｅｍａｘを超えていない場合は、そのまま学習を停止中にするので、ステップＳ４に進み、第１の実施の形態の場合と同様に最良指令軌道ｕｂｅｓｔを用いた駆動を継続する。
【０１０３】
一方、評価値Ｅｋが上限値Ｅｍａｘを超えた場合は、学習を再開するため、ステップＳ２２に進む。ステップＳ２２では、あらかじめ更新する増加回数Δｋを例えば１０回と決めておき、学習の設定回数ｋｍａｘを増加回数Δｋだけ増やして更新する（ｋｍａｘ＝ｋｍａｘ＋Δｋ）（学習再開工程）。そして、学習を再開するのでステップＳ７に進む。なお、ステップＳ７以降の処理は、第１の実施の形態の場合と同じなので説明を省略する。
【０１０４】
以上のように第３の実施の形態によると、学習が停止していてもステップＳ２１で評価値Ｅｋを監視し続け、もし評価値Ｅｋが悪化したらステップＳ２２で学習回数を更新して学習を再開する。これにより、例えば温度などの環境の変化によってロボットアームの特性が変わると軌道誤差ｅｋが悪化する場合があるが、軌道誤差ｅｋが悪化すると、自動的に学習を再開して誤差を低減できる。
【０１０５】
なお、上記以外の動作は、第１の実施形態と同じなので説明を省略する。
【０１０６】
なお、以上説明した本実施の形態においては、回転関節を駆動する例を説明したが、直動関節でも同じである。
【０１０７】
また、本実施の形態においては、関節に対する目標軌道ｘ、実際の軌道ｙとして説明したが、これをロボットの手先の位置姿勢に対する目標軌道、実際の軌道として置き換えても同じことである。この場合、サーボ制御部２３０はロボットアームの手先の位置姿勢の入力に対し、各関節の角度を計算、即ち逆機構計算してロボットアームを動作させる。また、動作結果は、得られた各関節の角度からロボットの手先の位置姿勢を計算、即ち順機構計算して、それを出力とすることができる。
【０１０８】
また、本実施の形態においては、６関節ロボットを一例に説明したが、関節の数はどのような数であってもよいし、それら関節が回転関節であっても直動関節であっても構わない。
【０１０９】
また、本実施の形態においては、目標軌道と実際の軌道を位置ベクトルの時系列データとして説明した。ここで、ロボットアームの軌道は、位置ではなく速度で与える場合も考えられるが、学習制御にとっては同じ扱いである。この場合、サーボ制御部２３０は速度の入力に対し、動作結果として、得られた速度を出力とすることができる。また、同様に目標軌道を位置ではなく加速度の時系列データで与える場合も考えられるが、学習制御にとっては同じ処理である。
【０１１０】
また、第１、第３、第４の実施の形態においては、補償器のパラメータの探索を行う点について記載していないが、パラメータの異なる補償器を多数個準備しておき、補償器番号を変更していくことでも、パラメータの探索と同じ効果を得ることができる。
【符号の説明】
【０１１１】
２００…ロボット（ロボットアーム）：３００…ロボット制御装置、コンピュータ：３０１…制御部（ＣＰＵ）：３０３…記憶部（ＲＡＭ）：３３１…記録媒体（記録ディスク）：Ｅ…評価値：ｅ…軌道誤差：ｐ…パラメータ：ｕ…指令軌道：Δｕ…補正量（補正軌道）：ｘ…目標軌道：ｙ…実際の軌道
【図１】
2015100877.tif 000020
【図２】
2015100877.tif 000021
【図３】
2015100877.tif 000022
【図４】
2015100877.tif 000023
【図５】
2015100877.tif 000024
【図６】
2015100877.tif 000025
【図７】
2015100877.tif 000026
【図８】
2015100877.tif 000027
【図９】
2015100877.tif 000028
【図１０】
2015100877.tif 000029
【図１１】
2015100877.tif 000030
【図１２】
2015100877.tif 000031
【図１３】
2015100877.tif 000032
【図１４】
2015100877.tif 000033
【図１５】
2015100877.tif 000034