(57)【要約】【課題】学習制御における学習の収束時間を短縮することが可能で、かつ、学習による軌道誤差の悪化を抑制可能なロボット制御方法を提供する。【解決手段】軌道誤差の評価計算工程（ステップＳ８）と、計算した評価値が記憶されている評価値よりも良い場合に、記憶部の評価値を計算した評価値に更新して保存し、かつ記憶部の指令軌道を軌道誤差を評価した際の指令軌道に更新して保存する良状態保存工程（ステップＳ１１）と、計算した評価値が記憶されている評価値よりも悪い場合に、軌道誤差から指令軌道の補正量を計算するローパスフィルタのカットオフ周波数を調整するカットオフ周波数調整工程（ステップＳ１４）と、設定されたカットオフ周波数を用いて、ローパスフィルタを含む補償器により保存されている指令軌道の補正量を計算し、次回の指令軌道を計算する次軌道計算工程（ステップＳ１２，Ｓ１３）と、を有する。【選択図】図４
2016120549.tif 000002
【特許請求の範囲】
【請求項１】
制御部が、ロボットを指令軌道により駆動制御し、駆動された前記ロボットの実際の軌道を検出し、目標とする目標軌道と前記実際の軌道との軌道誤差に基づき前記指令軌道の補正量を、ローパスフィルタを含む補償器により計算することで前記指令軌道を学習制御し得るロボット制御方法において、
前記制御部が、前記軌道誤差を評価した評価値を計算する評価計算工程と、
前記制御部が、前記学習制御を実行する学習制御工程と、を備え、
前記学習制御工程として、
前記制御部が、前記評価計算工程で計算した評価値が記憶部に記憶されている評価値よりも良い評価の場合に、前記記憶部の評価値を前記計算した評価値に更新して保存し、かつ前記記憶部の指令軌道を前記軌道誤差を評価した際の前記指令軌道に更新して保存する良状態保存工程と、
前記制御部が、前記評価計算工程で計算した評価値が前記記憶部に記憶されている評価値よりも悪い評価の場合に、前記軌道誤差から前記指令軌道の補正量を計算する前記ローパスフィルタのカットオフ周波数を調整するカットオフ周波数調整工程と、
前記制御部が、設定されたカットオフ周波数を用いて、前記ローパスフィルタにより前記記憶部に保存されている指令軌道の補正量を計算し、計算した補正量と前記記憶部に保存されている指令軌道とにより次回の指令軌道を計算する次軌道計算工程と、を有する、
ことを特徴とするロボット制御方法。
【請求項２】
前記カットオフ周波数調整工程として、
前記制御部が、前記カットオフ周波数の初期に設定された初期探索範囲において、設定された局所探索範囲の最小周波数、最大周波数、及び前記最小周波数と前記最大周波数の間の中間周波数の３つのカットオフ周波数を用いて計算した３つの指令軌道の各々で前記ロボットを駆動させ、その結果得られた３つの軌道誤差のうち、最良となる軌道誤差を選択し、選択した前記軌道誤差に用いられたカットオフ周波数を選定するカットオフ周波数選定工程と、
前記制御部が、選定された前記カットオフ周波数を含むように、前記局所探索範囲よりも狭い新たな局所探索範囲の最小周波数及び最大周波数を設定する局所探索範囲の再設定工程と、を有する、
ことを特徴とする請求項１記載のロボット制御方法。
【請求項３】
前記再設定工程は、前記制御部が、選定された前記カットオフ周波数が前記最小周波数である場合は前記最小周波数から前記中間周波数までを新たな局所探索範囲として再設定し、選定された前記カットオフ周波数が前記最大周波数である場合は前記中間周波数から前記最大周波数までを新たな局所探索範囲として再設定し、選定された前記カットオフ周波数が前記中間周波数である場合は前記最小周波数及び前記最大周波数のうちの前記軌道誤差の小さい方の周波数から前記中間周波数までを新たな局所探索範囲として再設定する、
ことを特徴とする請求項２記載のロボット制御方法。
【請求項４】
前記制御部が、前記学習制御工程の実行前に、前記実際の軌道の周波数分析を行う周波数分析工程と、
前記制御部が、前記周波数分析の結果に基づき前記ロボットの固有振動数を選定する固有振動数選定工程と、
前記制御部が、前記固有振動数選定工程で選定された前記固有振動数に基づき、前記カットオフ周波数の前記初期探索範囲を設定する初期探索範囲設定工程と、を備える、
ことを特徴とする請求項２又は３に記載のロボット制御方法。
【請求項５】
前記再設定工程において、前記制御部が、得られた前記局所探索範囲の幅が所定の閾値よりも小さいと判断した場合に、前記学習制御を中断し、前記次軌道計算工程で計算した次回の指令軌道を用いて前記ロボットを駆動する、
ことを特徴とする請求項２乃至４のいずれか１項に記載のロボット制御方法。
【請求項６】
前記学習制御工程において、前記制御部が、前記学習制御を実行した回数をカウントし、前記回数が所定回数を超えた場合に、前記学習制御を中断し、前記次軌道計算工程で計算した次回の指令軌道を用いて前記ロボットを駆動する、
ことを特徴とする請求項１乃至５のいずれか１項に記載のロボット制御方法。
【請求項７】
前記良状態保存工程において、前記制御部が、前記軌道誤差が所定の閾値よりも小さいと判断した場合に、前記学習制御を中断し、前記次軌道計算工程で計算した次回の指令軌道を用いて前記ロボットを駆動する、
ことを特徴とする請求項１乃至６のいずれか１項に記載のロボット制御方法。
【請求項８】
請求項１乃至７のいずれか１項に記載のロボット制御方法の前記各工程をコンピュータに実行させるためのプログラム。
【請求項９】
請求項８に記載のロボット制御方法の前記各工程をコンピュータに実行させるためのプログラムが記録されたコンピュータが読み取り可能な記録媒体。
【請求項１０】
ロボットを指令軌道により駆動制御し、駆動された前記ロボットの実際の軌道を検出し、目標とする目標軌道と前記実際の軌道との軌道誤差に基づき前記指令軌道の補正量を、ローパスフィルタを含む補償器により計算することで前記指令軌道を学習制御し得るロボット制御装置において、
前記軌道誤差を評価した評価値を計算し、かつ前記学習制御を実行する制御部と、
前記評価値と前記指令軌道とを記憶可能な記憶部と、を備え、
前記制御部は、前記学習制御にあって、
計算した評価値が記憶部に記憶されている評価値よりも良い評価の場合に、前記記憶部の評価値を前記計算した評価値に更新して保存し、かつ前記記憶部の指令軌道を前記軌道誤差を評価した際の前記指令軌道に更新して保存し、
計算した評価値が前記記憶部に記憶されている評価値よりも悪い評価の場合に、前記軌道誤差から前記指令軌道の補正量を計算する前記ローパスフィルタのカットオフ周波数を調整し、
設定されたカットオフ周波数を用いて、前記ローパスフィルタにより前記記憶部に保存されている指令軌道の補正量を計算し、計算した補正量と前記記憶部に保存されている指令軌道とにより次回の指令軌道を計算する、
ことを特徴とするロボット制御装置。
【請求項１１】
前記制御部は、前記カットオフ周波数の初期に設定された初期探索範囲において、設定された局所探索範囲の最小周波数、最大周波数、及び前記最小周波数と前記最大周波数の間の中間周波数の３つのカットオフ周波数を用いて計算した３つの指令軌道の各々で前記ロボットを駆動させ、その結果得られた３つの軌道誤差のうち、最良となる軌道誤差を選択し、選択した前記軌道誤差に用いられたカットオフ周波数を選定し、
選定された前記カットオフ周波数を含むように、前記局所探索範囲よりも狭くなる新たな局所探索範囲の最小周波数及び最大周波数を設定する、
ことを特徴とする請求項１０記載のロボット制御装置。
【請求項１２】
前記制御部は、選定された前記カットオフ周波数が前記最小周波数である場合は前記最小周波数から前記中間周波数までを新たな局所探索範囲として再設定し、選定された前記カットオフ周波数が前記最大周波数である場合は前記中間周波数から前記最大周波数までを新たな局所探索範囲として再設定し、選定された前記カットオフ周波数が前記中間周波数である場合は前記最小周波数及び前記最大周波数のうちの前記軌道誤差の小さい方の周波数から前記中間周波数までを新たな局所探索範囲として再設定する、
ことを特徴とする請求項１１記載のロボット制御装置。
【請求項１３】
前記制御部は、前記学習制御の実行前に、前記実際の軌道の周波数分析を行い、前記周波数分析の結果に基づき前記ロボットの固有振動数を選定し、選定された前記固有振動数に基づき、前記カットオフ周波数の前記初期探索範囲を設定する、
ことを特徴とする請求項１１又は１２に記載のロボット制御装置。
【請求項１４】
前記制御部は、得られた前記局所探索範囲の幅が所定の閾値よりも小さいと判断した場合に、前記学習制御を中断し、計算して得られた次回の指令軌道を用いて前記ロボットを駆動する、
ことを特徴とする請求項１１乃至１３のいずれか１項に記載のロボット制御装置。
【請求項１５】
前記制御部は、前記学習制御を実行した回数をカウントし、前記回数が所定回数を超えた場合に、前記学習制御を中断し、計算して得られた次回の指令軌道を用いて前記ロボットを駆動する、
ことを特徴とする請求項１０乃至１４のいずれか１項に記載のロボット制御装置。
【請求項１６】
前記制御部は、前記軌道誤差が所定の閾値よりも小さいと判断した場合に、前記学習制御を中断し、計算して得られた次回の指令軌道を用いて前記ロボットを駆動する、
ことを特徴とする請求項１０乃至１５のいずれか１項に記載のロボット制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、指令軌道と実際の軌道との軌道誤差に基づき指令軌道を学習制御し得るロボット制御方法及びロボット制御装置に関する。
【背景技術】
【０００２】
近年、人間の手のように複雑で高速な組立を実現するために、例えば多関節アームを利用したロボット装置の開発が進められている。このようなロボット装置は、制御装置から指令軌道を指令することで目標通りに駆動されることが理想的であるが、指令軌道と実際の軌道とには軌道誤差が生じてしまう。しかも、ロボットを高速に駆動するほど、軌道誤差が大きくなるという問題がある。
【０００３】
このようなロボット装置の軌道誤差を小さくするために、目標とする動作を繰り返し、前回の実際の軌道を基に次回の指令軌道を修正することで、軌道誤差を小さくしていく学習制御が提案されている（非特許文献１）。この学習制御によれば、ロボットダイナミクスのパラメータの推定を必要とすることなくフィードフォワード入力を修正することによって、軌道誤差を小さくすることができる。しかし、目標軌道と実際の軌道との軌道誤差に制御系の追従可能な周波数帯域以上の成分が含まれている場合、学習によって動作結果が悪化する可能性がある。そのため、軌道誤差をローパスフィルタ（ＬＰＦ：Ｌｏｗ  Ｐａｓｓ  Ｆｉｌｔｅｒ）により処理し、制御系の追従可能な周波数帯域において学習を行うことで、軌道誤差の高周波成分による動作の悪化を防止する方法が知られている（特許文献１）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平７−２７１４２１号公報
【非特許文献】
【０００５】
【非特許文献１】川村貞夫，「学習制御：研究の流れと今後の課題」，日本ロボット学会誌，１９９３，ｖｏｌ．１１，ｎｏ．４，ｐ．５０９−５１４
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した特許文献１の方法で学習制御を行った場合は、制御系の追従可能な周波数帯域を網羅的に学習していくため、繰り返し処理の回数が多くなり、学習の収束に長時間を要するという問題があった。
【０００７】
また、多関節アームの位置姿勢の誤差に基づいて軌道誤差の学習制御を行う場合、無駄時間等の時間遅れ要素やダイナミクスの揺らぎ要素がある。この場合、上述した特許文献１の学習制御では、学習するごとにこれらの要素を反映させるため、軌道誤差の収束性は保証されず、学習制御による動作結果が悪化して軌道誤差が発散していく可能性があるという問題があった。
【０００８】
本発明は、学習制御における学習の収束時間を短縮することが可能で、かつ、学習による軌道誤差の悪化を抑制可能なロボット制御方法及びロボット制御装置を提供することを目的とするものである。
【課題を解決するための手段】
【０００９】
本発明のロボット制御方法は、制御部が、ロボットを指令軌道により駆動制御し、駆動された前記ロボットの実際の軌道を検出し、目標とする目標軌道と前記実際の軌道との軌道誤差に基づき前記指令軌道の補正量を、ローパスフィルタを含む補償器により計算することで前記指令軌道を学習制御し得るロボット制御方法において、前記制御部が、前記軌道誤差を評価した評価値を計算する評価計算工程と、前記制御部が、前記学習制御を実行する学習制御工程と、を備え、前記学習制御工程として、前記制御部が、前記評価計算工程で計算した評価値が記憶部に記憶されている評価値よりも良い評価の場合に、前記記憶部の評価値を前記計算した評価値に更新して保存し、かつ前記記憶部の指令軌道を前記軌道誤差を評価した際の前記指令軌道に更新して保存する良状態保存工程と、前記制御部が、前記評価計算工程で計算した評価値が前記記憶部に記憶されている評価値よりも悪い評価の場合に、前記軌道誤差から前記指令軌道の補正量を計算する前記ローパスフィルタのカットオフ周波数を調整するカットオフ周波数調整工程と、前記制御部が、設定されたカットオフ周波数を用いて、前記ローパスフィルタにより前記記憶部に保存されている指令軌道の補正量を計算し、計算した補正量と前記記憶部に保存されている指令軌道とにより次回の指令軌道を計算する次軌道計算工程と、を有することを特徴とする。
【００１０】
また、本発明のロボット制御装置は、ロボットを指令軌道により駆動制御し、駆動された前記ロボットの実際の軌道を検出し、目標とする目標軌道と前記実際の軌道との軌道誤差に基づき前記指令軌道の補正量を、ローパスフィルタを含む補償器により計算することで前記指令軌道を学習制御し得るロボット制御装置において、前記軌道誤差を評価した評価値を計算し、かつ前記学習制御を実行する制御部と、前記評価値と前記指令軌道とを記憶可能な記憶部と、を備え、前記制御部は、前記学習制御にあって、計算した評価値が記憶部に記憶されている評価値よりも良い評価の場合に、前記記憶部の評価値を前記計算した評価値に更新して保存し、かつ前記記憶部の指令軌道を前記軌道誤差を評価した際の前記指令軌道に更新して保存し、計算した評価値が前記記憶部に記憶されている評価値よりも悪い評価の場合に、前記軌道誤差から前記指令軌道の補正量を計算する前記ローパスフィルタのカットオフ周波数を調整し、設定されたカットオフ周波数を用いて、前記ローパスフィルタにより前記記憶部に保存されている指令軌道の補正量を計算し、計算した補正量と前記記憶部に保存されている指令軌道とにより次回の指令軌道を計算することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、制御部が、計算した評価値が記憶部に記憶されている評価値よりも良いか悪いかを評価する。そして、制御部は、評価した結果が良ければ、記憶部に記憶された評価値を計算した評価値に更新して保存し、評価した結果が悪ければ、ローパスフィルタのカットオフ周波数を調整する。このため、評価値の良し悪しの評価を行うことなく全ての軌道誤差に基づいて学習制御を行う場合に比べて、評価値が良い場合には誤差に基づいた軌道誤差の修正作業が不要になるので、学習制御の収束時間を短縮することができる。
【００１２】
また、本発明によれば、制御部が、過去の繰り返し動作のうち最良の評価値である軌道での指令軌道及び軌道誤差を、記憶部により保持している。そして、制御部は、軌道誤差が悪化した時に、記憶部に保持されている最良の評価値である軌道での指令軌道及び軌道誤差を用いる。このため、軌道誤差が悪化した時でも最良の軌道誤差よりも悪化することはないので、学習制御による軌道誤差の悪化、即ち発散を抑制することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の第１の実施の形態に係るロボット装置の概略を示す説明図である。
【図２】本発明の第１の実施の形態に係るロボット制御装置の概略を示す説明図である。
【図３】本発明の第１の実施の形態に係る学習制御の概略を示す説明図である。
【図４】本発明の第１の実施の形態に係るロボット制御方法の処理手順を示すフローチャートである。
【図５】本発明の第１の実施の形態に係るロボット制御方法のカットオフ周波数調整工程の処理手順を示すフローチャートである。
【図６】本発明の第１の実施の形態に係るロボット制御方法におけるカットオフ周波数と評価値との関係を示す説明図である。（ａ）は変更前の局所探索範囲、（ｂ）は変更すると一部が下限値を下回る局所探索範囲、（ｃ）は下限値を下回らないようにした局所探索範囲である。
【図７】本発明の第１の実施の形態に係るロボット制御方法におけるカットオフ周波数と評価値との関係を示す説明図であり、（ａ）は変更しても一部が下限値を下回らない局所探索範囲、（ｂ）は変更後の局所探索範囲である。
【図８】本発明の第１の実施の形態に係るロボット制御方法におけるカットオフ周波数と評価値との関係を示す説明図であり、（ａ）は変更前の局所探索範囲、（ｂ）は変更後の局所探索範囲である。
【図９】本発明の第１の実施の形態に係るロボット制御方法におけるカットオフ周波数と評価値との関係を示す説明図であり、（ａ）は変更すると一部が上限値を上回る局所探索範囲、（ｂ）は上限値を上回らないようにした局所探索範囲である。
【図１０】本発明の第１の実施の形態に係るロボット制御方法におけるカットオフ周波数と評価値との関係を示す説明図であり、（ａ）は変更しても一部が上限値を上回らない局所探索範囲、（ｂ）は変更後の局所探索範囲である。
【図１１】本発明の第１の実施の形態に係るロボットアームの制御のシミュレーションにおける時間と角度との関係を示す説明図であり、（ａ）は指令軌道と実際の軌道、（ｂ）は学習回数１回目、（ｃ）は学習回数２回目である。
【図１２】本発明の第１の実施の形態に係るロボットアームの制御のシミュレーションにおける時間と角度との関係を示す説明図であり、（ａ）は学習回数３回目、（ｂ）は学習回数４回目、（ｃ）は学習回数５回目である。
【図１３】本発明の第１の実施の形態に係るロボットアームの制御のシミュレーションにおけるカットオフ周波数と評価値との関係を示す説明図であり、（ａ）は学習回数５回目までの局所探索範囲、（ｂ）はローパスフィルタ調整後の局所探索範囲である。（ｃ）は、本シミュレーションにおける学習回数６回目の時間と角度との関係を示す説明図である。
【図１４】（ａ）は、本発明の第１の実施の形態に係るロボットアームの制御のシミュレーションにおける学習回数２０回目の時間と角度との関係を示す説明図である。（ｂ）は、本シミュレーションにおける実施例１及び比較例１の各学習回数を示す説明図である。
【図１５】本発明の第２の実施の形態に係るロボット制御方法の処理手順を示すフローチャートである。
【図１６】本発明の第２の実施の形態に係るロボット制御方法に関し、（ａ）は学習制御の初回で実際の軌道を周波数分析した模式図である。本発明の第２の実施の形態に係るロボットアームの制御のシミュレーションに関し、（ｂ）は実施例２及び比較例２の学習回数と評価値との関係を示す説明図であり、（ｃ）は、本シミュレーションにおける実施例３及び比較例３の各学習回数を示す説明図である。
【図１７】本発明の第３の実施の形態に係るロボット制御方法の処理手順を示すフローチャートである。
【図１８】本発明の第３の実施の形態に係るロボットアームの制御のシミュレーションにおける実施例４及び比較例４の各学習回数を示す説明図である。
【発明を実施するための形態】
【００１４】
＜第１の実施の形態＞
以下、本発明に係る第１の実施の形態を、図１乃至図１４（ｂ）に沿って説明する。まず、ロボット装置の概略構成について説明する。図１に示すように、ロボット装置１００は、多関節ロボットとしてのロボットアーム（ロボット）２００と、ロボットアーム２００を制御するロボット制御装置３００と、を備えている。また、ロボット装置１００は、ロボット制御装置３００に複数の教示点のデータを送信する教示装置としてのティーチングペンダント４００を備えている。ティーチングペンダント４００は、操作者が操作するものであり、ロボットアーム２００やロボット制御装置３００の動作を指定するのに用いる。
【００１５】
ロボットアーム２００は、本実施の形態では、例えば６関節ロボットである。ロボットアーム２００は、各関節Ｊ１〜Ｊ６を各関節軸Ａ１〜Ａ６周りにそれぞれ回転駆動する複数（６つ）のアクチュエータ２０１〜２０６を有している。ロボットアーム２００は、可動範囲の中であれば任意の３次元位置で任意の３方向の姿勢に、手先（ロボットアーム２００の先端）を向けることができる。一般に、ロボットアーム２００の位置及び姿勢は、座標系で表現することができる。図１中のＴｏはロボットアーム２００の台座に固定した座標系を表し、Ｔｅはロボットアーム２００の手先に固定した座標系を表す。
【００１６】
本実施の形態では、各アクチュエータ２０１〜２０６は、電動モータ２１１〜２１６と、電動モータ２１１〜２１６に接続された減速機２２１〜２２６とを備える。各減速機２２１〜２２６は、不図示のベルトやベアリング等を介してそれぞれの関節Ｊ１〜Ｊ６で駆動するフレームに接続されている。尚、各アクチュエータ２０１〜２０６の構成は、これに限定するものではなく、例えば人工筋肉等であってもよい。また、例えば各減速機２２１〜２２６には、エンコーダ等の回転検出センサが配置されており、関節の角度を検出できる。各関節Ｊ１〜Ｊ６の角度が検出できれば、手先の位置や姿勢を計算でき、ロボットアーム２００の実際の軌道を検出できる。
【００１７】
ロボットアーム２００は、更に、各アクチュエータ２０１〜２０６の電動モータ２１１〜２１６を駆動制御する駆動制御部としてのサーボ制御部２３０を有している。サーボ制御部２３０は、入力した指令軌道に基づき、各関節Ｊ１〜Ｊ６の位置が指令軌道に追従するよう、各電動モータ２１１〜２１６に電流指令を出力し、各電動モータ２１１〜２１６の動作を制御する。なお、本実施の形態では、サーボ制御部２３０を１つの制御装置で構成しているものを説明しているが、各電動モータ２１１〜２１６にそれぞれ対応したサーボ制御部を備えていてもよい。
【００１８】
また、図１には４つの教示点ｐ１，ｐ２，ｐ３，ｐ４が示されている。ロボットアーム２００を最初に駆動する際、これらの教示点は、例えば操作者がティーチングペンダント４００を用いて与える。ここで、教示点は、所謂３次元空間内の点ではない。ロボットアーム２００をタスク空間で移動させる場合では、教示点は３次元空間の位置及び姿勢であり、これは図１のように、ｐ１，ｐ２，ｐ３，ｐ４を座標系として表現される。つまり各教示点は、１つのベクトルとして理解できる。また、ロボットアーム２００を関節空間で移動させる場合では、教示点は関節角度である。
【００１９】
ロボット制御装置３００は、コンピュータであり、教示点を結ぶ軌道、即ち教示点を補間した目標軌道ｒを生成する。本明細書では、ティーチングペンダント４００等により教示された教示点を用いて初期に設定した軌道を目標とするため、これを目標軌道ｒ（図１に破線で示す）と呼び、サーボ制御部２３０に指令する軌道を指令軌道ｕと呼ぶ。また、目標軌道ｒに従って動かす動作時間をＴとする。教示点はベクトルであるので、目標軌道ｒはベクトルの時系列データ、即ち２次元の配列データである。
【００２０】
ロボットアーム２００の関節の角度は、ロボット制御装置３００から目標軌道を指令されたサーボ制御部２３０で制御する。サーボ制御部２３０は指令軌道ｕを入力し、ロボットアーム２００を動作させ、動作結果である実際の軌道ｙを出力する。実際の軌道ｙは目標軌道ｒと同じベクトルの時系列データ、即ち２次元の配列データである。尚、目標軌道ｒは、各関節に対し、関節角度で与えてもよいし、直交座標系の座標値で与えてもよい。
【００２１】
ついで、ロボット制御装置３００の概略構成を図２に沿って説明する。ロボット制御装置３００は、制御部としてのＣＰＵ３０１と、記憶部としてのＲＯＭ３０２、ＲＡＭ３０３、ＨＤＤ（ハードディスクドライブ）３０４、記録ディスクドライブ（記録媒体）３０５と、各種のインタフェース３０６〜３０９と、を備えている。
【００２２】
ＣＰＵ３０１には、ＲＯＭ３０２、ＲＡＭ３０３、ＨＤＤ３０４、記録ディスクドライブ３０５及び各種のインタフェース３０６〜３０９が、バス３１０を介して接続されている。ＲＯＭ３０２には、ＣＰＵ３０１を動作させるためのプログラム３３０が格納されている。このプログラム３３０は、ロボット制御プログラムを含み、詳しくは後述する各部（図３参照）に各種演算処理を実行させるためのプログラムである。ＲＡＭ３０３は、ＣＰＵ３０１の演算処理結果などを一時的に記憶可能な記憶部である。ＨＤＤ３０４は、演算処理結果や各種のデータ（最良指令軌道や最良評価値を含む）を記憶するための記憶部である。
【００２３】
ティーチングペンダント４００はインタフェース３０６に接続されており、ＣＰＵ３０１はインタフェース３０６及びバス３１０を介してティーチングペンダント４００からの教示点のデータの入力を受ける。
【００２４】
サーボ制御部２３０は、インタフェース３０９に接続されており、ＣＰＵ３０１は、目標軌道ｒのデータを所定時間間隔でバス３１０及びインタフェース３０９を介してサーボ制御部２３０に出力する。
【００２５】
インタフェース３０７には、モニタ３２１が接続されており、モニタ３２１には、各種画像が表示される。インタフェース３０８は、書き換え可能な不揮発性メモリや外付けＨＤＤ等の外部記憶装置３２２が接続可能に構成されている。記録ディスクドライブ３０５は、記録ディスク（記録媒体）３３１に記録された各種データやプログラム等を読み出すことができる。尚、本発明に係るプログラムが記録される記録媒体としては、記録ディスク３３１だけに限らず、外部記憶装置３２２等の不揮発性メモリや外付けＨＤＤ等も含まれる。
【００２６】
このロボット制御装置３００では、ＣＰＵ３０１が、ロボットアーム２００を指令軌道により駆動制御し、駆動されたロボットアーム２００の実際の軌道を検出する。そして、ＣＰＵ３０１は、目標とする目標軌道と実際の軌道との軌道誤差に基づき指令軌道の補正量を、ローパスフィルタを含む補償器により計算することで指令軌道を学習制御し得るようになっている。
【００２７】
次に、本実施の形態に係る学習制御について説明する。学習制御は目標とする動作を繰り返し、前回の実際の軌道を基に次回の指令軌道を修正することで軌道誤差を小さくしていく制御手法である。
【００２８】
本実施の形態の学習制御のブロック図を図３に示す。図３中の記号ｋは初期値を０とする学習回数であり、図３は第ｋ回目まで学習が進んだ場面を表現している。
【００２９】
ロボット制御装置３００は、軌道誤差計算部１、評価値計算部２、評価値判定部３、評価値保存部４、軌道誤差保存部５、補正軌道計算部６、ローパスフィルタ調整部７、指令軌道保存部８、指令軌道計算部９を備えている。これらは、ＣＰＵ３０１によりプログラム３３０が機能することで構成される。
【００３０】
軌道誤差計算部１は、目標軌道ｒと前回の実際の軌道ｙｋとの軌道誤差ｅｋを数式１で計算する。尚、軌道誤差ｅｋも、目標軌道ｒや前回の実際の軌道ｙｋと同様、ベクトルの時系列データ、即ち２次元の配列データである。
【００３１】
【数１】
2016120549.tif 000003
【００３２】
評価値計算部２は、軌道誤差ｅｋから評価値Ｅｋを計算する。この評価値Ｅｋは、二乗平均平方根を計算する関数をｒｍｓとし、次の数式２で計算する。
【００３３】
【数２】
2016120549.tif 000004
【００３４】
なお、評価値Ｅｋの計算は、簡単な計算となるＰＶ値（ｐｅａｋ  ｔｏ  ｖａｌｌｅｙ）を用い、次の数式３で計算してもよい。
【００３５】
【数３】
2016120549.tif 000005
【００３６】
評価値判定部３は、過去の評価値のうち、最も値の良い評価値である最良評価値Ｅｂｅｓｔと評価値Ｅｋとを比較し、評価結果ｑｋを出力する。評価結果ｑｋは、評価値Ｅｋが最良評価値Ｅｂｅｓｔよりも良い値（良い評価）であるか、悪い値（悪い評価）であるか、つまり改善したか悪化したかのいずれかの値をとる変数である。評価値保存部４は、評価結果ｑｋが改善していたら（良い評価の場合）、評価値Ｅｋを最良評価値Ｅｂｅｓｔとして保存する。軌道誤差保存部５は、評価結果ｑｋが改善していたら、軌道誤差ｅｋを最良軌道誤差ｅｂｅｓｔとして保存する。指令軌道保存部８は、評価結果ｑｋが改善していたら、指令軌道保存部８で保存しておいた前回の指令軌道ｕｋを最良指令軌道ｕｂｅｓｔとして更新して保存する。
【００３７】
補正軌道計算部６は、最良軌道誤差ｅｂｅｓｔに基づいて、次回の補正軌道（補正量）Δｕｋ＋１を数式４で計算する。また、評価結果ｑｋが改善していたら、補償器のローパスフィルタ調整部７に入らず、前回設定したカットオフ周波数で補正軌道を計算し、結果を次回の補正軌道Δｕｋ＋１として出力する。評価結果ｑｋが悪化していたら、ローパスフィルタ調整部７に入り、カットオフ周波数を調整したのち、調整した値を用いて指令値Δｕｋ＋１を計算する。尚、最良軌道誤差ｅｂｅｓｔ及び補正軌道Δｕｋ＋１も、ベクトルの時系列データ、即ち２次元の配列データである。
【００３８】
【数４】
2016120549.tif 000006
【００３９】
ここで、ローパスフィルタは、低い周波数を通過させるフィルタである。例えば、１次のローパスフィルタは数式５の伝達関数で定義される。
【００４０】
【数５】
2016120549.tif 000007
【００４１】
数式５において、ｆｃはカットオフ周波数、ｓはラプラス変換のｓである。この伝達関数Ｔ（ｓ）を実現するフィルタを設計する手法としては、双一次変換等が公知である。具体的な設計手法の説明は省略し、ここでは結果のみを数式６のように記述する。数式６は、カットオフ周波数をパラメータに含んだ計算式である。本実施の形態では、ローパスフィルタを補正軌道計算部６の一部として用い、後述するようにカットオフ周波数ｆｃを自動的に探索する。
【００４２】
【数６】
2016120549.tif 000008
【００４３】
指令軌道計算部９は、補正軌道Δｕｋ＋１と、最良指令軌道ｕｂｅｓｔとを加算し、次回の指令軌道ｕｋ＋１を数式７で計算する。尚、指令軌道ｕｋに対する次回の指令軌道ｕｋ＋１であるので、学習の回数を表す添え字ｋには１を加算し、ｋ＋１とする。
【００４４】
【数７】
2016120549.tif 000009
【００４５】
次に、図４に、本実施の形態に係る学習制御の動作のフローチャートを示す。このフローチャートは、同じ目標軌道ｒに従ってロボットアーム２００を繰り返し何度も動作させるうちの１回分の動作を示している。この動作の回数は、学習回数ｋで表し、初回はｋ＝０とする。
【００４６】
ロボットアーム２００の駆動を開始し、学習制御を開始すると、ＣＰＵ３０１は、ロボットアーム２００の駆動が初回であるか否かを判定する（ステップＳ１）。ＣＰＵ３０１が、ロボットアーム２００の駆動は初回であると判定した場合は、最良指令軌道ｕｂｅｓｔ、最良評価値Ｅｂｅｓｔ、カットオフ周波数ｆｃの各初期値を設定する（ステップＳ２）。ここでは、ＣＰＵ３０１は、最良指令軌道ｕｂｅｓｔを目標軌道ｒとし、現時点での最良評価値Ｅｂｅｓｔを悪い値、具体的には大きな数字や無限大に設定する。また、ＣＰＵ３０１は、ローパスフィルタのカットオフ周波数ｆｃの初期値を、初期探索範囲の上限値ｆｍａｘ、下限値ｆｍｉｎの中間値（例えば、加算平均値）とする。但し、カットオフ周波数ｆｃの初期値の決め方はこの限りではなく、例えば上限値ｆｍａｘあるいは下限値ｆｍｉｎとしてもよい。尚、カットオフ周波数の初期探索範囲、即ち初期探索範囲の上限値ｆｍａｘ、下限値ｆｍｉｎは、予め指定しておく。
【００４７】
ＣＰＵ３０１は、最初の指令軌道ｕ１をｕｂｅｓｔ、即ち目標軌道ｒとする（ステップＳ３）。また、ＣＰＵ３０１は、指令軌道ｕ１を次回の学習制御における前回の指令軌道として保存しておく。そして、ＣＰＵ３０１は、指令軌道ｕ１をサーボ制御部２３０に入力することによってロボットアーム２００の動作を実行し、出力として実際の軌道ｙｋを得る（ステップＳ４）。ＣＰＵ３０１は、学習回数ｋに１を加えて（ステップＳ５）、１回目のロボットアーム２００の動作を終了する。
【００４８】
一方、ステップＳ１において、ＣＰＵ３０１が、ロボットアーム２００の駆動は初回ではないと判定した場合は、ロボット装置１００が学習中であるか否かを判定する（ステップＳ６）。本実施の形態では、ＣＰＵ３０１は、学習回数ｋが所定回数である設定回数ｋｍａｘを超えたか否かを判定する。ここで、学習回数ｋが設定回数ｋｍａｘを超えている場合には、ローパスフィルタによる指令軌道の計算が改善しないぐらいに学習が進んでいると判断して、ＣＰＵ３０１はロボット装置１００が学習中ではないと判定する。そして、ＣＰＵ３０１は、上述したステップＳ３〜Ｓ５の処理を実行する。即ち、ＣＰＵ３０１が、学習制御を実行した回数をカウントし、回数が設定回数ｋｍａｘを超えた場合に、学習制御を中断し、次軌道計算工程で計算した次回の指令軌道を用いてロボットアーム２００を駆動するようになっている。
【００４９】
一方、ステップＳ６において、ＣＰＵ３０１が、学習回数ｋは設定回数ｋｍａｘ未満であると判定した場合は、補償器による指令軌道の計算が改善しないぐらいに学習が進んでいないと判断して、ＣＰＵ３０１はロボット装置１００が学習中と判定する。そして、ＣＰＵ３０１は、軌道誤差計算部１により、目標軌道ｒと前回の実際の軌道ｙｋとの軌道誤差ｅｋを計算する（ステップＳ７）。ＣＰＵ３０１は、評価値計算部２により、軌道誤差ｅｋから評価値Ｅｋを計算する（ステップＳ８、評価計算工程）。即ち、ロボット制御方法は、ＣＰＵ３０１が、軌道誤差ｅｋを評価した評価値Ｅｋを計算する評価計算工程を有している。
【００５０】
更に、ＣＰＵ３０１は、ローパスフィルタ調整中か否かを判定する（ステップＳ９）。ここで、ローパスフィルタ調整中か否かは、初期値として調整中でないという値が設定されており、その変更は後述するステップＳ１３で行う。ＣＰＵ３０１が、ローパスフィルタ調整中ではないと判断した場合は、評価値ＥｋがＥｂｅｓｔよりも良い値か否か、即ち評価値Ｅｋが改善したか否かを判定する（ステップＳ１０）。尚、ロボットアーム２００の動作が２回目である場合（ｋ＝１）は、初回に最良評価値Ｅｂｅｓｔが無限大等に設定されているため、確実に評価値Ｅｋが改善することになる。
【００５１】
ＣＰＵ３０１が、評価値Ｅｋは改善したと判定した場合は、最良評価値Ｅｂｅｓｔ、最良軌道誤差ｅｂｅｓｔ、最良指令軌道ｕｂｅｓｔを、それぞれ今回の評価値Ｅｋ、軌道誤差ｅｋ、指令軌道ｕｋの値に更新する（ステップＳ１１、良状態保存工程）。即ち、ロボット制御方法は、良状態保存工程を有している。良状態保存工程では、ＣＰＵ３０１が、評価計算工程で計算した評価値ＥｋがＲＡＭ３０３等に記憶されている最良評価値Ｅｂｅｓｔよりも良い評価の場合に、ＲＡＭ３０３等の評価値を計算した評価値に更新して保存する。続けて、良状態保存工程では、ＣＰＵ３０１が、ＲＡＭ３０３等の最良指令軌道ｕｂｅｓｔを軌道誤差ｅｋを評価した際の指令軌道ｕｋに更新して保存するようになっている。
【００５２】
また、ＣＰＵ３０１は、補正軌道計算部６により、最良軌道誤差ｅｂｅｓｔに補償器を作用させ、補正軌道Δｕｋ＋１を計算して出力する（ステップＳ１２）。更に、ＣＰＵ３０１は、指令軌道計算部９により、最良指令軌道ｕｂｅｓｔに補正軌道Δｕｋ＋１を加えて次回の指令軌道ｕｋ＋１を計算する（ステップＳ１３）。続けて、ＣＰＵ３０１は、上述したステップＳ４〜Ｓ５の処理を実行する。尚、ステップＳ１２〜Ｓ１３は、次軌道計算工程を構成する。即ち、ロボット制御方法は、次軌道計算工程を有している。次軌道計算工程では、ＣＰＵ３０１が、設定されたカットオフ周波数ｆｃを用いて、ローパスフィルタによりＲＡＭ３０３等に保存されている最良指令軌道ｕｂｅｓｔの補正軌道Δｕｋ＋１を計算する。続いて、次軌道計算工程では、ＣＰＵ３０１が、計算した補正軌道Δｕｋ＋１とＲＡＭ３０３等に保存されている最良指令軌道ｕｂｅｓｔとにより次回の指令軌道ｕｋ＋１を計算する。
【００５３】
一方、ＣＰＵ３０１は、ステップＳ９においてローパスフィルタ調整中であると判断した場合、あるいはステップＳ１０において評価値Ｅｋは改善していないと判定した場合は、ローパスフィルタの調整を行う（ステップＳ１４、カットオフ周波数調整工程）。即ち、ロボット制御方法は、カットオフ周波数調整工程を有している。カットオフ周波数調整工程では、ＣＰＵ３０１が、評価計算工程で計算した評価値ＥｋがＲＡＭ３０３等に記憶されている最良評価値Ｅｂｅｓｔよりも悪い評価の場合に、軌道誤差ｅｋから指令軌道ｕｋの補正軌道Δｕｋを計算するカットオフ周波数ｆｃを調整する。
【００５４】
ステップＳ１４で調整されたローパスフィルタカットオフ周波数ｆｃは、ステップＳ１２で補償器に与えられ、補正軌道Δｕｋ＋１の計算に利用される。尚、ステップＳ６，Ｓ９〜Ｓ１４は、学習制御工程を構成する。即ち、ロボット制御方法は、ＣＰＵ３０１が、学習制御を実行する学習制御工程を備えている。また、学習制御工程は、良状態保存工程と、カットオフ周波数調整工程と、次軌道計算工程と、を有している。
【００５５】
次に、ステップＳ１４のローパスフィルタ調整（カットオフ周波数調整工程）について説明する。図５にローパスフィルタ調整のフローチャートを示す。このフローチャートは、学習回数ｋ回目のとき図３のローパスフィルタ調整部７で行われるローパスフィルタ調整のフローを表わしている。また、ローパスフィルタ調整は学習制御フローの一部であり、図４のステップＳ１４に該当する。
【００５６】
図６（ａ）は、ローパスフィルタ調整における探索範囲の概略図を表わしている。ｆｍｉｎおよびｆｍａｘは、それぞれカットオフ周波数ｆｃの初期探索範囲の下限値および上限値であり、事前に指定した値をとる。ｆＬ、ｆＭ、ｆＨは、それぞれ学習回数ｋ回目のときの局所探索範囲の最小値（最小周波数）、中間値（中間周波数）、最大値（最大周波数）を表わしている。ここでの中間周波数としては、最小値と最大値との加算平均値としているが、これには限られず、最小値と最大値との間の任意の比率の値としてもよい。また、ＥＬ、ＥＭ、ＥＨはそれぞれカットオフ周波数がｆＬ、ｆＭ、ｆＨのときの評価値であり、Ｌは局所探索範囲の長さ（ｆＨ−ｆＬ）である。
【００５７】
ＣＰＵ３０１は、学習回数ｋ回目でローパスフィルタ調整に入ると、調整モードの判定を行う（ステップＳ２０）。ここで、調整モードとは、学習回数ｋ回目でのローパスフィルタのカットオフ周波数ｆｃの局所探索範囲内のどの点で学習を行っているかのフェーズを表す変数である。調整モードにはｍｏｄｅＬ、ｍｏｄｅＭ、ｍｏｄｅＨの３つがある。ｍｏｄｅＬはｆｃの局所探索範囲の最小値ｆＬでの学習フェーズ、ｍｏｄｅＨはｆｃの探索範囲の最大値ｆＨでの学習フェーズ、そしてｍｏｄｅＭは最小値ｆＬと最大値ｆＨの間の中間値ｆＭでの学習フェーズである。
【００５８】
本実施の形態では、調整モードの初期値はｍｏｄｅＭとするが、ｍｏｄｅＬまたはｍｏｄｅＨとしてもよい。これら調整モードの遷移は後述するように、ｍｏｄｅＭ→ｍｏｄｅＬ→ｍｏｄｅＨ→ｍｏｄｅＭのように循環する。また、初期値として最小値ｆＬをｆｍｉｎとし、最大値ｆＨをｆｍａｘとする。実際には、例えば、それぞれロボットアーム２００の固有振動数よりも低い値を指定するようにする。
【００５９】
ＣＰＵ３０１は、調整モードがｍｏｄｅＭであると判断した場合は、ローパスフィルタ調整に入っていることを示すフラグをオン状態にする（ステップＳ２１）。尚、初期値では、このフラグはオフ状態であるものとする。そして、ＣＰＵ３０１は、調整モードｍｏｄｅＭにおける評価値ＥＭ、軌道誤差ｅＭ、指令軌道ｕＭの初期化（ＥＭ＝Ｅｂｅｓｔ、ｅＭ＝ｅｂｅｓｔ、ｕＭ＝ｕｂｅｓｔ）を行う（ステップＳ２２）。また、これらの値は、後の評価値の比較で使われるため保存しておく。更に、ＣＰＵ３０１は、ローパスフィルタのカットオフ周波数ｆｃを、現在の局所探索範囲の最小値ｆＬに設定する（ステップＳ２３）。尚、ローパスフィルタの調整が初回の場合は、前述したように最小値ｆＬは下限値ｆｍｉｎとなる。そして、ＣＰＵ３０１は、調整モードをｍｏｄｅＬとする（ステップＳ２４）。その後、ＣＰＵ３０１は、一旦ローパスフィルタ調整フローを終え、指令軌道の計算とロボットアーム２００の動作とを実行する（図４中、ステップＳ１２〜Ｓ１３、Ｓ４〜Ｓ５）。
【００６０】
次に、ＣＰＵ３０１は、学習回数ｋ＋１回目で、再びローパスフィルタ調整中か否かの判定に入る（図４中、ステップＳ９）。ローパスフィルタ調整中のフラグはオン状態であるので、ここではローパスフィルタ調整中と判断され、再びローパスフィルタ調整が実行される（図４中、ステップＳ１４）。
【００６１】
ＣＰＵ３０１は、ステップＳ２０において調整モードがｍｏｄｅＬであると判断し、ローパスフィルタのカットオフ周波数ｆｃを最小値ｆＬとしたときの評価値ＥＬ、軌道誤差ｅＬ、指令軌道ｕＬを保存する（ステップＳ２５）。ＣＰＵ３０１は、ローパスフィルタのカットオフ周波数ｆｃを、現在の局所探索範囲の最大値ｆＨに設定する（ステップＳ２６）。尚、ローパスフィルタの調整が初回の場合は、前述したように最大値ｆＨは上限値ｆｍａｘとなる。ＣＰＵ３０１は、調整モードをｍｏｄｅＨとする（ステップＳ２７）。その後、ＣＰＵ３０１は、一旦ローパスフィルタ調整フローを終え、指令軌道の計算とロボットアーム２００の動作とを実行する（図４中、ステップＳ１２〜Ｓ１３、Ｓ４〜Ｓ５）。
【００６２】
次に、ＣＰＵ３０１は、学習回数ｋ＋２回目で、再びローパスフィルタ調整中か否かの判定に入る（図４中、ステップＳ９）。ローパスフィルタ調整中のフラグはオン状態であるので、ここではローパスフィルタ調整中と判断され、再びローパスフィルタ調整が実行される（図４中、ステップＳ１４）。
【００６３】
ＣＰＵ３０１は、ステップＳ２０において調整モードがｍｏｄｅＨであると判断し、ローパスフィルタのカットオフ周波数ｆｃを最大値ｆＨとしたときの評価値ＥＨ、軌道誤差ｅＨ、指令軌道ｕＨを保存する（ステップＳ２８）。そして、ＣＰＵ３０１は、これまで保存された各評価値ＥＬ、ＥＭ、ＥＨを比較して最良値を判定する（ステップＳ２９、カットオフ周波数選定工程）。即ち、カットオフ周波数調整工程は、カットオフ周波数選定工程を有している。カットオフ周波数選定工程では、ＣＰＵ３０１が、カットオフ周波数ｆｃの初期に設定された初期探索範囲において、局所探索範囲を設定する。続いてカットオフ周波数選定工程では、ＣＰＵ３０１が、最小値ｆＬ、最大値ｆＨ、中間値ｆＭの３つのカットオフ周波数を用いて計算した３つの指令軌道の各々で、ロボットアーム２００を駆動させる。続いてカットオフ周波数選定工程では、ＣＰＵ３０１が、その結果得られた３つの軌道誤差のうち、最良となる軌道誤差を選択し、選択した軌道誤差に用いられたカットオフ周波数ｆｃを選定する。
【００６４】
ＣＰＵ３０１は、評価値ＥＬを最良値と判定した場合は、最良評価値Ｅｂｅｓｔ、最良軌道誤差ｅｂｅｓｔ、最良指令軌道ｕｂｅｓｔを、保存していた調整モードｍｏｄｅＬでの評価値ＥＬ、軌道誤差ｅＬ、指令軌道ｕＬに各々更新する（ステップＳ３０）。ＣＰＵ３０１は、この時の最小値ｆＬを利用してカットオフ周波数ｆｃの局所探索範囲を変更した場合に、変更後の局所探索範囲の最小値ｆＬがユーザの設定した下限値ｆｍｉｎを下回るか否かを判定する（ステップＳ３１）。ここで、中間値ｆＭを最小値ｆＬと最大値ｆＨとの中点であるとすると、局所探索範囲の判定は下限値ｆｍｉｎだけ考慮すればよい。
【００６５】
ここで、ＣＰＵ３０１は、変更後の局所探索範囲の最小値ｆＬが下限値ｆｍｉｎを下回ると判定した場合は、図６（ｂ）に示すようになる。即ち、最小値ｆＬの変更前位置が中間値ｆ´Ｍとなるように変更した後の局所探索範囲の最小値ｆ´Ｌが、下限値ｆｍｉｎを下回る。尚、図６（ｂ）において、ｆ´Ｌ、ｆ´Ｍ、ｆ´Ｈはそれぞれ局所探索範囲の変更後のｆＬ、ｆＭ、ｆＨの値を示している。この場合、ＣＰＵ３０１は、数式８に示す演算を実行して、最小値ｆＬ、中間値ｆＭ、最大値ｆＨを更新する（ステップＳ３２）。これにより、図６（ｃ）に示すように、局所探索範囲が下限値ｆｍｉｎを下回らないように設定される。
【００６６】
【数８】
2016120549.tif 000010
【００６７】
ステップＳ３１において、ＣＰＵ３０１は、変更後の局所探索範囲の最小値ｆＬが下限値ｆｍｉｎを下回らないと判定した場合は、図７（ａ）に示すようになる。即ち、最小値ｆＬの変更前位置が中間値ｆ´Ｍとなるように変更した後の局所探索範囲の最小値ｆ´Ｌが、下限値ｆｍｉｎを下回らない。この場合、ＣＰＵ３０１は、数式９に示す演算を実行して、最小値ｆＬ、中間値ｆＭ、最大値ｆＨを更新する（ステップＳ３３）。局所探索範囲の長さＬはここでは変化させない。これにより、図７（ｂ）に示すように、局所探索範囲が下限値ｆｍｉｎを下回らないように設定される。
【００６８】
【数９】
2016120549.tif 000011
【００６９】
ステップＳ２９において、ＣＰＵ３０１は、評価値ＥＭを最良値と判定した場合は、図８（ａ）に示すようになる。尚、αは局所探索範囲の縮減率であり、０．０を超え、１．０未満の値でユーザが指定する。この場合、最良評価値Ｅｂｅｓｔ、最良軌道誤差ｅｂｅｓｔ、最良指令軌道ｕｂｅｓｔは、調整モードがｍｏｄｅＭの際に保存されたもののままで良いので、ここでは更新を行なわず、局所探索範囲の縮減のみを行う。この場合、ＣＰＵ３０１は、数式１０に示す演算を実行して、最小値ｆＬ及び最大値ｆＨを更新する（ステップＳ３４）。これにより、図８（ｂ）に示すように、中間値ｆＭを同じくしたまま、局所探索範囲が縮減して設定される。
【００７０】
【数１０】
2016120549.tif 000012
【００７１】
ステップＳ２９において、ＣＰＵ３０１は、評価値ＥＨを最良値と判定した場合は、以下のように処理する。この場合、ＣＰＵ３０１は、最良評価値Ｅｂｅｓｔ、最良軌道誤差ｅｂｅｓｔ、最良指令軌道ｕｂｅｓｔを、保存していた調整モードｍｏｄｅＨでの評価値ＥＨ、軌道誤差ｅＨ、指令軌道ｕＨに各々更新する（ステップＳ３５）。ＣＰＵ３０１は、この時の最大値ｆＨを利用してカットオフ周波数ｆｃの局所探索範囲を変更した場合に、変更後の局所探索範囲の最大値ｆＨがユーザの設定した上限値ｆｍａｘを超えるか否かを判定する（ステップＳ３６）。ここで、中間値ｆＭを最小値ｆＬと最大値ｆＨとの中点であるとすると、局所探索範囲の判定は上限値ｆｍａｘだけ考慮すればよい。
【００７２】
ここで、ＣＰＵ３０１は、変更後の局所探索範囲の最大値ｆＨが上限値ｆｍａｘを超えると判定した場合は、図９（ａ）に示すようになる。即ち、最大値ｆＨの変更前位置が中間値ｆ´Ｍとなるように変更した後の局所探索範囲の最大値ｆ´Ｈが、上限値ｆｍａｘを超える。この場合、ＣＰＵ３０１は、数式１１に示す演算を実行して、最小値ｆＬ、中間値ｆＭ、最大値ｆＨを更新する（ステップＳ３７）。これにより、図９（ｂ）に示すように、局所探索範囲が上限値ｆｍａｘを超えないように設定される。
【００７３】
【数１１】
2016120549.tif 000013
【００７４】
ステップＳ３６において、ＣＰＵ３０１は、変更後の局所探索範囲の最大値ｆＨが上限値ｆｍａｘを超えないと判定した場合は、図１０（ａ）に示すようになる。即ち、最大値ｆＨの変更前位置が中間値ｆ´Ｍとなるように変更した後の局所探索範囲の最大値ｆ´Ｈが、上限値ｆｍａｘを超えない。この場合、ＣＰＵ３０１は、数式１２に示す演算を実行して、最小値ｆＬ、中間値ｆＭ、最大値ｆＨを更新する（ステップＳ３８）。局所探索範囲の長さＬはここでは変化させない。これにより、図１０（ｂ）に示すように、局所探索範囲が上限値ｆｍａｘを超えないように設定される。
【００７５】
【数１２】
2016120549.tif 000014
【００７６】
ここで、上述したステップＳ３２，Ｓ３３，Ｓ３４，Ｓ３７，Ｓ３８は、再設定工程を構成する。即ち、カットオフ周波数調整工程は、再設定工程を有する。再設定工程は、ＣＰＵ３０１が、選定されたカットオフ周波数ｆｃを含むように、局所探索範囲よりも狭い新たな局所探索範囲の最小値ｆＬ及び最大値ｆＨを設定する。
【００７７】
ＣＰＵ３０１は、ステップＳ３２，Ｓ３３，Ｓ３４，Ｓ３７，Ｓ３８の処理後、ローパスフィルタ調整のフラグをオフ状態にする（ステップＳ３９）。ローパスフィルタ調整のフラグをオフ状態にすることにより、図４のステップＳ１４の判定でローパスフィルタ調整のフローに入らなくなり、更に学習を続けていくことになる。
【００７８】
ＣＰＵ３０１は、ローパスフィルタのカットオフ周波数ｆｃを、現在の局所探索範囲の中間値ｆＭに設定する（ステップＳ４０）。ＣＰＵ３０１は、調整モードをｍｏｄｅＭとする（ステップＳ４１）。その後、ＣＰＵ３０１は、ローパスフィルタ調整フローを終え、指令軌道の計算とロボットアーム２００の動作とを実行する（図４中、ステップＳ１２〜Ｓ１３、Ｓ４〜Ｓ５）。
【００７９】
ここで、本実施の形態の学習制御のシミュレーションについて説明する。ここでのシミュレーションは、理解を容易にするため、制御対象を１軸の回転関節として考える。尚、ここでは回転関節としているが、直動関節の場合であっても、同じシミュレーションとなる。指令軌道ｕに対する応答結果である出力軌道ｙは、数式１３で示す伝達関数で表現できるものとする。
【００８０】
【数１３】
2016120549.tif 000015
【００８１】
数式１３は、２次遅れとして知られている伝達関数である。ｗ０は固有振動周波数、ζは臨界減衰係数比と呼ばれる。この伝達関数は、ロボットアーム２００の振動を模擬した特性を与える。
【００８２】
本シミュレーションでは、周波数１０Ｈｚ、即ちｗ０＝２πｆｃ＝２０π、ζ＝０．１５とした。この制御対象の応答は、振動しながら目標の値に近づいていく。本シミュレーションでは、０．６秒間で１００度動く５次曲線を用いた。また、初期探索範囲の下限値ｆｍｉｎ、上限値ｆｍａｘはそれぞれ５Ｈｚ、２０Ｈｚとし、縮減率αは０．５とした。
【００８３】
まず、目標軌道に５次曲線を設定し、図４のステップＳ１３によって、ロボットアーム２００の動作を実行した。指令軌道（目標軌道）ｕ１に対する実際の軌道（出力軌道）ｙ１を数式１３で計算した結果、図１１（ａ）に示すように、指令軌道ｕ１と実際の軌道ｙ１とはほぼ重複した。
【００８４】
学習回数１回目（ｋ＝１）では、ローパスフィルタのカットオフ周波数ｆｃは下限値ｆｍｉｎおよび上限値ｆｍａｘから１２．５Ｈｚの中間値ｆＭである。図１１（ｂ）に示すように、二乗平均平方根（ＲＭＳ）を採用して評価値Ｅ１を計算すると、評価値Ｅ１＝１．００３７１となった。学習回数２回目（ｋ＝２）では、図１１（ｃ）に示すように、評価値Ｅ２＝０．０５１２８となった。評価値Ｅ２は評価値Ｅ１に比べて小さくなったので、実際の軌道ｙ２が改善された。尚、実際の軌道ｙ２が改善されたので、中間値ｆＭ及び局所探索範囲は変わらない。
【００８５】
学習回数３回目（ｋ＝３）では、図１２（ａ）に示すように、評価値Ｅ３＝０．０６０１３となった。評価値Ｅ３は評価値Ｅ２に比べて大きくなり、実際の軌道ｙ３が悪化したので、ローパスフィルタの調整を行った。尚、学習回数３回目における中間値ｆＭ及び局所探索範囲は、学習回数１〜２回目と同じである。学習回数４回目（ｋ＝４）では、カットオフ周波数ｆｃを最小値ｆＬとして学習及びロボットアーム２００の動作を行い、その結果、図１２（ｂ）に示すように評価値Ｅ４＝ＥＬ＝０．０４００４となった。学習回数５回目（ｋ＝５）では、カットオフ周波数ｆｃを最大値ｆＨとして学習及びロボットアーム２００の動作を行い、その結果、図１２（ｃ）に示すように評価値Ｅ５＝ＥＨ＝０．１２０４８となった。
【００８６】
ここで、図１３（ａ）に、学習回数５回目までの局所探索範囲を示す。ここでの評価値ＥＭは、初期のカットオフ周波数ｆｃが中間値ｆＭに設定されているため、評価値Ｅ３と等価である。図１３（ａ）に示すように、評価値ＥＬが最も良い値であると判定されるので、局所探索範囲及びカットオフ周波数ｆｃが図５のステップＳ３３、Ｓ３９，Ｓ４０において更新される。その結果、図１３（ｂ）に示すように、カットオフ周波数は、ｆｃ＝８．７５Ｈｚとなった。
【００８７】
続いて、学習回数６回目（ｋ＝６）では、図１３（ｃ）に示すように、評価値Ｅ６＝０．０３７００となった。評価値Ｅ６は、カットオフ周波数ｆｃを中間値ｆＭとした中での最良の評価値Ｅ２に比べて小さくなったので、実際の軌道ｙ６が改善された。学習回数が２０回（ｋ＝２０）では、図１４（ａ）に示すように、評価値Ｅ２０＝０．００９４６となった。評価値Ｅ２０は評価値Ｅ６に比べて小さくなったので、実際の軌道ｙ２０が改善された。
【００８８】
次に、本実施の形態のローパスフィルタ調整について、実行した場合と実行しなかった場合とで学習回数を比較した。ここでは、カットオフ周波数ｆｃを５〜２０Ｈｚの１Ｈｚ刻みの１６段階に設定し、各カットオフ周波数ｆｃにおいて学習回数を２０回に設定し、学習回数の最大数が３２０回となる順探索において比較を行った。
【００８９】
（比較例１）
本実施の形態のローパスフィルタ調整を用いなかった場合は、学習回数の最大数となる３２０回の学習を行った。
【００９０】
（実施例１）
本実施の形態のローパスフィルタ調整を用いた場合は、上述の順探索における最小の評価値を下回る学習回数は２８回となった。従って、本実施の形態のローパスフィルタ調整を用いた場合は、用いない場合に比べて、学習回数を約９１％削減でき、学習に掛かる時間を大幅に削減できることが判明した。
【００９１】
上述したように、本実施の形態のロボット制御装置３００によれば、ＣＰＵ３０１が、計算した評価値ＥｋがＲＡＭ３０３等に記憶されている最良評価値Ｅｂｅｓｔよりも良いか悪いかを評価する。そして、ＣＰＵ３０１は、評価した結果が良ければ、ＲＡＭ３０３等に記憶された最良評価値Ｅｂｅｓｔを計算した評価値Ｅｋに更新して保存し、評価した結果が悪ければ、ローパスフィルタのカットオフ周波数ｆｃを調整する。このため、評価値Ｅｋの良し悪しの評価を行うことなく全ての軌道誤差ｅｋに基づいて学習制御を行う場合に比べて、評価値Ｅｋが良い場合には誤差に基づいた軌道誤差ｅｋの修正作業が不要になるので、学習制御の収束時間を短縮することができる。
【００９２】
また、このロボット制御装置３００によれば、ＣＰＵ３０１が、過去の繰り返し動作のうち最良評価値Ｅｂｅｓｔである軌道での最良指令軌道ｕｂｅｓｔ及び最良軌道誤差ｅｂｅｓｔを、ＲＡＭ３０３等により保持している。そして、ＣＰＵ３０１は、軌道誤差ｅｋが悪化した時に、ＲＡＭ３０３等に保持されている最良評価値Ｅｂｅｓｔである軌道での最良指令軌道ｕｂｅｓｔ及び最良軌道誤差ｅｂｅｓｔを用いる。このため、軌道誤差ｅｋが悪化した時でも最良軌道誤差ｅｂｅｓｔよりも悪化することはないので、学習制御による軌道誤差ｅｋの悪化、即ち発散を抑制することができる。
【００９３】
また、このロボット制御装置３００によれば、学習中に悪化したタイミングで前回の指令値を学習に用いず、最適なローパスフィルタのカットオフ周波数ｆｃを探索する。このため、学習による軌道誤差ｅｋの低減と、ローパスフィルタのカットオフ周波数ｆｃの自動調整による軌道誤差ｅｋの低減とを、両立させることができる。このとき、学習による周波数応答の変化に対応したローパスフィルタのカットオフ周波数ｆｃの探索を行うため、変化を気にすることなく高速かつ精度の高い学習制御が可能となる。
【００９４】
また、このロボット制御装置３００によれば、ＣＰＵ３０１は、学習回数ｋが設定回数ｋｍａｘを超えたと判断した場合は（ステップＳ６のＮ）、ローパスフィルタによる指令軌道ｕの計算が改善しないぐらいに学習が進んでいるものと判断する。この場合に、ＣＰＵ３０１は、ロボット装置１００が学習中ではないと判定する。このため、ＣＰＵ３０１が無限に学習を続けることを防止しながら、学習が適切に進んだ時点で学習を中断することができる。
【００９５】
また、このロボット制御装置３００によれば、軌道誤差ｅｋの評価値ＥｋがＲＡＭ３０３等に記憶されている最良評価値Ｅｂｅｓｔよりも良くなると、その際の指令軌道ｕｋが保存される。このため、記憶されている最良指令軌道ｕｂｅｓｔが、より良い指令軌道に更新されていき、学習によって指令軌道が悪くなることを防止することができる。また、ローパスフィルタ調整中でないときに軌道誤差ｅｋの評価値Ｅｋが最良評価値Ｅｂｅｓｔより悪くなると、その際の指令軌道ｕｋを保存せずに、補償器のローパスフィルタのカットオフ周波数ｆｃを、評価値が良くなるように探索する。そのため、異なる制御帯域に対応することができ、更なる学習効果を見込むことができる。これにより、学習制御を重ねていくことで、軌道誤差ｅｋを改善していくことができ、軌道誤差ｅｋを小さくすることができる。さらに、ローパスフィルタ調整では探索範囲を調整毎に移動、あるいは縮減しているため、ローパスフィルタのカットオフ周波数ｆｃを高速に探索することができ、学習の時間を短縮することができる。
【００９６】
＜第２の実施の形態＞
次に、本発明に係る第２の実施の形態を、図１５及び図１６に沿って説明する。本実施の形態におけるロボット装置１００は、ＣＰＵ３０１がロボットアーム２００の初回駆動時に初期探索範囲を自動的に設定する点で、第１の実施の形態と構成を異にしている。それ以外の構成については、第１の実施の形態と同様であるので、符号を同じくして詳細な説明は省略する。
【００９７】
図１５に、本実施の形態に係る学習制御の動作のフローチャートを示す。このフローチャートは、第１の実施の形態と同様に、同じ目標軌道ｒに従ってロボットアーム２００を繰り返し何度も動作させるうちの１回分の動作を示している。上述したように、初回駆動時における初期探索範囲の自動的設定（ステップＳ５０〜Ｓ５２）以外の処理に関しては、第１の実施の形態と同様であるので、符号を同じくして詳細な説明を省略する。
【００９８】
ロボットアーム２００の駆動を開始し、学習制御を開始すると、ＣＰＵ３０１は、ロボットアーム２００の駆動が初回であるか否かを判定する（ステップＳ１）。ＣＰＵ３０１が、ロボットアーム２００の駆動は初回であると判定した場合は、前回の実際の軌道について周波数分析を行う（ステップＳ５０、周波数分析工程）。即ち、ロボット制御方法は、周波数分析工程を有している。
【００９９】
周波数分析工程では、具体的には、ＣＰＵ３０１は、学習制御工程（ステップＳ９〜Ｓ１４）の実行前に、前回の実際の軌道の周波数分析を行う。ＣＰＵ３０１は、前回の学習制御で実際の軌道を保持していることを利用し、初回に前回の実際の軌道をフーリエ変換等の公知の手法で周波数分析する。学習制御の初回で前回の実際の軌道を周波数分析した場合、例えば図１６（ａ）に示すような結果が得られる。
【０１００】
そして、ＣＰＵ３０１は、周波数分析の結果に基づきロボットアーム２００の固有振動数を選定する（ステップＳ５１、固有振動数選定工程）。即ち、ロボット制御方法は、固有振動数選定工程を有している。固有振動数選定工程では、具体的には、図１６（ａ）に示すように、ｐｅａｋ１は利得が最大であるピーク値、ｐｅａｋ２は利得が２番目の大きさであるピーク値である。また、利得がｐｅａｋ１となる周波数はｆｐｅａｋ１であり、利得がｐｅａｋ２となる周波数はｆｐｅａｋ２である。ここでは、ｆｐｅａｋ１をサーボ遅れによる低周波成分の周波数、ｆｐｅａｋ２をロボットの固有振動数であることを前提とし、カットオフ周波数ｆｃが固有振動数近傍に収束すると仮定する。
【０１０１】
更に、ＣＰＵ３０１は、固有振動数選定工程で選定された固有振動数に基づき、カットオフ周波数ｆｃの初期探索範囲を設定する（ステップＳ５２、初期探索範囲設定工程）。即ち、ロボット制御方法は、初期探索範囲設定工程を有している。初期探索範囲設定工程では、具体的には、ＣＰＵ３０１は、下限値ｆｍｉｎをｆｐｅａｋ１に設定し、上限値ｆｍａｘをｆｐｅａｋ２以上、２ｆｐｅａｋ２−ｆｐｅａｋ１以下に設定する。ＣＰＵ３０１は、ｆｐｅａｋ１、ｆｐｅａｋ２をそれぞれ５Ｈｚ、１０Ｈｚとし、上限値ｆｍａｘを２ｆｐｅａｋ２−ｆｐｅａｋ１に設定することで、初期探索範囲を５〜１５Ｈｚに設定する。
【０１０２】
次いで、ＣＰＵ３０１は、最良指令軌道ｕｂｅｓｔ、最良評価値Ｅｂｅｓｔ、カットオフ周波数ｆｃの各初期値を設定する（ステップＳ２）。以下の処理は、第１の実施の形態と同様である。
【０１０３】
ここで、本実施の形態の周波数分析（ステップＳ５０〜Ｓ５２）について、実行した場合と実行しなかった場合との学習回数と評価値との関係を、数式１３で示す伝達関数を用いたシミュレーションにより比較した。
【０１０４】
（比較例２）
本実施の形態の周波数分析を実行しなかった場合は、シミュレーションの条件として、周波数１０Ｈｚ、即ちｗ０＝２πｆｃ＝２０π、ζ＝０．１５とし、０．６秒間で１００度動く５次曲線を用いた。また、初期探索範囲の下限値ｆｍｉｎ、上限値ｆｍａｘはそれぞれ５Ｈｚ、２０Ｈｚとし、縮減率αは０．５とした。その結果、図１６（ｂ）に示すように、第１の実施の形態と同様に、学習回数２０回目での評価値が０．００９４６となった。
【０１０５】
（実施例２）
本実施の形態の周波数分析を実行した場合は、ＣＰＵ３０１は、初期探索範囲を自動的に設定した。その結果、図１６（ｂ）に示すように、学習回数４回目で評価値が０．００７５となり、比較例２の評価値より良くなった。従って、本実施の形態の周波数分析を実行することで、実行しない場合に比べて、少ない学習回数で同等の評価値を得られ、また、同じ学習回数で良好な評価値を得られることが判明した。
【０１０６】
次に、本実施の形態の周波数分析（ステップＳ５０〜Ｓ５２）について、実行した場合と実行しなかった場合とで学習回数を比較した。
【０１０７】
（比較例３）
本実施の形態の周波数分析を実行しなかった場合は、比較例２と同様に、初期探索範囲を５〜２０Ｈｚとし、図１６（ｃ）に示すように、カットオフ周波数ｆｃを調整しながら学習回数を２０回に設定した。
【０１０８】
（実施例３）
本実施の形態の周波数分析を実行した場合は、ＣＰＵ３０１による周波数分析に基づいて初期探索範囲が自動設定されたので、比較例３に比べて初期探索範囲が短くなった。このため、図１６（ｃ）に示すように、比較例３と同等の評価値を得ながらも、学習回数を４回に抑えることができた。従って、本実施の形態の周波数分析を実行した場合は、実行しない場合に比べて、学習回数を約８０％削減でき、学習に掛かる時間を大幅に削減できることが判明した。
【０１０９】
上述したように、本実施の形態のロボット制御装置３００によれば、ＣＰＵ３０１が、学習制御の実行前に前回の実際の軌道の周波数分析を行い、ロボットアーム２００の固有振動数を選定し、カットオフ周波数ｆｃの初期探索範囲を設定する。このため、ローパスフィルタのカットオフ周波数ｆｃの初期探索範囲がＣＰＵ３０１によって自動的に決定されるので、ユーザが初期探索範囲を予め指定する必要がなくなり、作業工程を削減することができる。
【０１１０】
ここで、ユーザがＣＰＵ３０１の自動設定によらず手動で初期探索範囲を指定する場合には、初期探索範囲の上限値ｆｍａｘ及び下限値ｆｍｉｎを指定する必要がある。しかし、上限値ｆｍａｘ及び下限値ｆｍｉｎの適切な値は、事前にロボットアーム２００の固有振動数を実験等で調べなければ不明である。このため、ユーザは初期探索範囲を大きく見積もることが多く、この場合、初期探索範囲が広くなって学習に要する時間が長くなってしまう。これに対し、本実施の形態のロボット制御装置３００によれば、ＣＰＵ３０１により初期探索範囲を自動設定することで、初期探索範囲を最低限の範囲に絞ることができるので、学習回数を削減し学習に要する時間を削減することができる。
【０１１１】
＜第３の実施の形態＞
次に、本発明に係る第３の実施の形態を、図１７及び図１８に沿って説明する。本実施の形態におけるロボット装置１００は、学習制御の終了条件を増加した点で、第１の実施の形態と構成を異にしている。それ以外の構成については、第１の実施の形態と同様であるので、符号を同じくして詳細な説明は省略する。
【０１１２】
図１７に、本実施の形態に係る学習制御の動作のフローチャートを示す。このフローチャートは、第１の実施の形態と同様に、同じ目標軌道ｒに従ってロボットアーム２００を繰り返し何度も動作させるうちの１回分の動作を示している。上述したように、学習制御の終了条件（ステップＳ６０，Ｓ６１）の増加以外に関しては、第１の実施の形態と同様であるので、符号を同じくして詳細な説明を省略する。
【０１１３】
ロボットアーム２００の駆動を開始し、学習制御を開始して、ＣＰＵ３０１が、ステップＳ９においてローパスフィルタ調整中ではないと判断し、ステップＳ１０において評価値Ｅｋは改善したと判定した場合は、以下のように処理する。この場合、ＣＰＵ３０１が、最良評価値Ｅｂｅｓｔ、最良軌道誤差ｅｂｅｓｔ、最良指令軌道ｕｂｅｓｔを、それぞれ今回の評価値Ｅｋ、軌道誤差ｅｋ、指令軌道ｕｋの値に更新する（ステップＳ１１）。
【０１１４】
ここで、ＣＰＵ３０１は、最良評価値Ｅｂｅｓｔが評価値の所定の閾値Ｅｔｈより小さいか否かを判断する（ステップＳ６０、良状態保存工程）。即ち、ＣＰＵ３０１は、軌道誤差が所定の閾値よりも小さいか否かを判断する。ＣＰＵ３０１が、最良評価値Ｅｂｅｓｔは所定の閾値Ｅｔｈより小さくないと判断した場合は、現在の探索幅Ｌが探索幅の閾値Ｌｔｈより小さいか否かを判断する（ステップＳ６１、再設定工程）。即ち、ＣＰＵ３０１は、得られた局所探索範囲の幅が所定の閾値よりも小さいか否かを判断する。ＣＰＵ３０１が、現在の探索幅Ｌは探索幅の所定の閾値Ｌｔｈより小さくないと判断した場合は、補正軌道計算部６により補正軌道Δｕｋ＋１を計算して出力する（ステップＳ１２）。以下は、第１の実施の形態と同様の処理が行われる。
【０１１５】
一方、ステップＳ６０において、ＣＰＵ３０１が、最良評価値Ｅｂｅｓｔは所定の閾値Ｅｔｈより小さいと判断した場合は、実際の軌道が改善して評価値が十分良い値になったと判断して、学習制御を中断する（ステップＳ６２）。また、ステップＳ６１において、ＣＰＵ３０１が、現在の探索幅Ｌは探索幅の所定の閾値Ｌｔｈより小さいと判断した場合は、ローパスフィルタ調整が進み、カットオフ周波数ｆｃが十分収束したと判断して、学習制御を中断する（ステップＳ６２）。ステップＳ６２において、ＣＰＵ３０１は、学習中のフラグをオフ状態にする。
【０１１６】
ＣＰＵ３０１は、次軌道計算工程で計算した次回の指令軌道ｕｋ＋１をｕｂｅｓｔ、即ち目標軌道ｒとする（ステップＳ３）。ＣＰＵ３０１は、指令軌道ｕｋ＋１を次回の学習制御における前回の指令軌道として保存しておく。そして、ＣＰＵ３０１は、指令軌道ｕｋ＋１をサーボ制御部２３０に入力することによってロボットアーム２００の動作を実行し、出力として実際の軌道ｙｋ＋１を得る（ステップＳ４）。ＣＰＵ３０１は、学習回数ｋに１を加えて（ステップＳ５）、ロボットアーム２００の動作を終了する。尚、ステップＳ６２において、ＣＰＵ３０１は学習中のフラグをオフ状態にするので、動作の繰り返しを継続しても、ステップＳ６において学習中でないと判定する。このため、ＣＰＵ３０１は、補正軌道の計算及びローパスフィルタの調整は行わず、常に最良指令軌道ｕｂｅｓｔでロボットアーム２００の駆動が実行される。
【０１１７】
次に、本実施の形態の評価値に基づく学習制御の終了（ステップＳ６０）について、採用した場合と採用しなかった場合とで学習回数を比較した。
【０１１８】
（比較例４）
本実施の形態の評価値に基づく学習制御の終了を採用しなかった場合は、比較例２と同様に、初期探索範囲を５〜２０Ｈｚとし、図１８に示すように、カットオフ周波数ｆｃを調整しながら学習回数を２０回に設定した。
【０１１９】
（実施例４）
本実施の形態の評価値に基づく学習制御の終了を採用した場合は、比較例４と同等の評価値を得るために、評価値の閾値Ｅｔｈを０．０３とした。その結果、図１８に示すように、学習回数を１２回に抑えることができた。従って、本実施の形態の評価値に基づく学習制御の終了を採用した場合は、採用しない場合に比べて、学習回数を約４０％削減でき、学習に掛かる時間を削減できることが判明した。
【０１２０】
上述したように、本実施の形態のロボット制御装置３００によれば、ＣＰＵ３０１が、最良評価値Ｅｂｅｓｔあるいは局所探索範囲の長さＬに基づいて、カットオフ周波数ｆｃが十分収束したことを判断可能になっている（ステップＳ６０，Ｓ６１）。また、ＣＰＵ３０１は、カットオフ周波数ｆｃが十分収束したと判断した場合は、学習制御を中断するようになっている（ステップＳ６２）。これにより、ＣＰＵ３０１は必要以上の回数の学習の実行を未然に防止して、所望の精度を得るための学習回数を最小限にできる。
【０１２１】
尚、上述した第３の実施の形態では、第１の実施の形態と同様に、ＣＰＵ３０１は、学習回数ｋが設定回数ｋｍａｘを超えたと判断した場合は（ステップＳ６）、ロボット装置１００が学習中ではないと判定しているが、これには限られない。例えば、ＣＰＵ３０１は、学習回数ｋに基づいてロボット装置１００が学習中か否かを判定しなくてもよい。即ち、第３の実施の形態では、ＣＰＵ３０１は、学習回数ｋに基づいて学習中か否かを判定しなくても、最良評価値Ｅｂｅｓｔあるいは局所探索範囲の長さＬに基づいて、カットオフ周波数ｆｃが十分収束したことを判断できる。
【０１２２】
ここで、第３の実施の形態では、設定回数ｋｍａｘとして、ローパスフィルタの調整を行っても軌道が改善しなくなる程度に設定する必要がある。しかし、そのような回数は、実際にロボットアーム２００を駆動させて予め見積もる必要がある。これに対し、ＣＰＵ３０１が学習回数ｋに基づいて学習中か否かを判定しないようにした場合は、学習回数の設定回数ｋｍａｘの設定が不要になるので、作業工程を削減することができる。
【０１２３】
また、上述した第１〜第３の実施の形態では、再設定工程において、ＣＰＵ３０１は、大まかには以下のように処理を実行している。即ち、ＣＰＵ３０１は、選定されたカットオフ周波数ｆｃが最小値ｆＬである場合は、最小値ｆＬを中心とする半分の局所探索範囲を再設定する（ステップＳ３３）。また、ＣＰＵ３０１は、選定されたカットオフ周波数ｆｃが中間値ｆＭである場合は、中間値ｆＭを中心とする半分の局所探索範囲を再設定する（ステップＳ３４）。更に、ＣＰＵ３０１は、選定されたカットオフ周波数ｆｃが最大値ｆＨである場合は、最大値ｆＨを中心とする半分の局所探索範囲を再設定する（ステップＳ３８）。但し、これらには限られない。
【０１２４】
例えば、再設定工程において、ＣＰＵ３０１は、以下のように処理を実行するようにしてもよい。即ち、ＣＰＵ３０１は、選定されたカットオフ周波数ｆｃが最小値ｆＬである場合は、最小値ｆＬから中間値ｆＭまでを新たな局所探索範囲として再設定する。また、ＣＰＵ３０１は、選定されたカットオフ周波数ｆｃが中間値ｆＭである場合は、最小値ｆＬ及び最大値ｆＨのうちの軌道誤差の小さい方の周波数から中間値ｆＭまでを新たな局所探索範囲として再設定する。更に、ＣＰＵ３０１は、選定されたカットオフ周波数ｆｃが最大値ｆＨである場合は、中間値ｆＭから最大値ｆＨまでを新たな局所探索範囲として再設定する。この場合も、学習制御における学習の収束時間を短縮することが可能で、かつ、学習による軌道誤差の悪化を抑制可能になる。
【０１２５】
また、上述した各実施の形態では、目標軌道ｒ及び実際の軌道ｙは、関節Ｊ１〜Ｊ６に対する軌道とした場合について説明したが、これには限られず、例えば、ロボットアーム２００の手先の位置姿勢に対する目標軌道及び実際の軌道としてもよい。この場合、サーボ制御部２３０はロボットアーム２００の手先の位置姿勢の入力に対し、各関節Ｊ１〜Ｊ６の角度を計算、即ち逆機構計算してロボットアーム２００を動作させる。また、動作結果は、得られた各関節Ｊ１〜Ｊ６の角度からロボットアーム２００の手先の位置姿勢を計算、即ち順機構計算して、それを出力とすることができる。
【０１２６】
また、上述した各実施の形態では、６関節ロボットを一例に説明したが、これには限られず、関節の数はどのような数であってもよいし、それら関節が回転関節であっても直動関節であっても構わない。
【０１２７】
また、上述した各実施の形態では、目標軌道及び実際の軌道を位置ベクトルの時系列データとして説明したが、これには限られず、例えば、ロボットアーム２００の実際の軌道を、位置ではなく速度で設定するようにしてもよい。この場合、サーボ制御部２３０は速度の入力に対し、動作結果として、得られた速度を出力とすることができる。また同様に、ロボットアーム２００の目標軌道を、位置ではなく加速度の時系列データで設定するようにしてもよい。
【０１２８】
上述した第１〜第３の実施の形態の各処理動作は、具体的にはロボット制御装置３００により実行される。従って、上述した機能を実現するソフトウェアのロボット制御プログラムを記録した記録媒体をロボット制御装置３００に供給し、記録媒体に格納されたロボット制御プログラムをＣＰＵ３０１が読み出し実行することによって達成されるようにしてもよい。この場合、記録媒体から読み出されたプログラム自体が上述した実施の形態の機能を実現することになり、プログラム自体及びそのプログラムを記録した記録媒体は本発明を構成することになる。
【０１２９】
また、上述した例では、コンピュータ読み取り可能な記録媒体がＲＯＭ３０２であり、ＲＯＭ３０２にプログラム３３０が格納される場合について説明したが、これに限定するものではない。プログラム３３０は、コンピュータ読み取り可能な記録媒体であれば、いかなる記録媒体に記録されていてもよい。例えば、プログラム３３０を供給するための記録媒体としては、ＨＤＤ３０４、外部記憶装置３２２、記録ディスク３３１等を用いてもよい。
【符号の説明】
【０１３０】
２００…ロボットアーム（ロボット）、３００…ロボット制御装置、３０１…ＣＰＵ（制御部）、３０２…ＲＯＭ（記憶部）、３０３…ＲＡＭ（記憶部）、３０４…ハードディスクドライブ（記憶部）、３０５…記録ディスクドライブ（記憶部）、３２２…外部記憶装置（記憶部）、３３１…記録ディスク（記録媒体）
【図１】
2016120549.tif 000016
【図２】
2016120549.tif 000017
【図３】
2016120549.tif 000018
【図４】
2016120549.tif 000019
【図５】
2016120549.tif 000020
【図６】
2016120549.tif 000021
【図７】
2016120549.tif 000022
【図８】
2016120549.tif 000023
【図９】
2016120549.tif 000024
【図１０】
2016120549.tif 000025
【図１１】
2016120549.tif 000026
【図１２】
2016120549.tif 000027
【図１３】
2016120549.tif 000028
【図１４】
2016120549.tif 000029
【図１５】
2016120549.tif 000030
【図１６】
2016120549.tif 000031
【図１７】
2016120549.tif 000032
【図１８】
2016120549.tif 000033