(57)【要約】【課題】サーボモータ制御装置の制御部及び補正部のパラメータを補正して、サーボ性能の向上を図る。【解決手段】サーボモータを制御する制御部のパラメータと、位置指令とトルク指令の少なくとも一方の補正値とを変更する変更部を備えるサーボモータ制御装置に対して、機械学習を行う機械学習装置であって、所定のプログラムをサーボモータ制御装置に実行させることにより、位置指令と、位置偏差を含むサーボ状態と、パラメータと補正値の組み合わせと、を含む状態情報を取得する状態情報取得手段と、状態情報に含まれるパラメータと補正値の組み合わせの調整情報を含む行動情報を出力する行動情報出力手段と、状態情報に含まれる前記位置偏差に基づく、強化学習における報酬の値を出力する報酬出力手段と、報酬出力手段により出力される報酬の値と、状態情報と、行動情報とに基づいて行動価値関数を更新する価値関数更新手段と、を備える。【選択図】図５
2019128830.tif 000002
【特許請求の範囲】
【請求項１】
位置指令に基づいてサーボモータを制御する制御部のパラメータと、前記位置指令とトルク指令との少なくとも一方の補正値と、を変更する変更部を備えるサーボモータ制御装置に対して、機械学習を行う機械学習装置であって、
所定のプログラムを前記サーボモータ制御装置に実行させることにより、前記位置指令と、少なくとも位置偏差を含むサーボ状態と、前記制御部のパラメータと前記補正値の組み合わせと、を含む状態情報を、前記サーボモータ制御装置から取得する状態情報取得手段と、
前記状態情報に含まれる前記パラメータと前記補正値の組み合わせの調整情報を含む行動情報を前記サーボモータ制御装置に出力する行動情報出力手段と、
前記状態情報に含まれる前記位置偏差に基づく、強化学習における報酬の値を出力する報酬出力手段と、
前記報酬出力手段により出力される報酬の値と、前記状態情報と、前記行動情報とに基づいて行動価値関数を更新する価値関数更新手段と、
を備える機械学習装置。
【請求項２】
前記報酬出力手段は、前記位置偏差の絶対値に基づいて前記報酬の値を出力する請求項１に記載の機械学習装置。
【請求項３】
前記価値関数更新手段により更新された価値関数に基づいて、前記変更部に、前記制御部のパラメータと、前記位置指令と前記トルク指令の少なくとも一方の前記補正値との組み合わせを生成して出力する最適化行動情報出力手段をさらに備えた請求項１又は２に記載の機械学習装置。
【請求項４】
請求項１から請求項３のいずれか１項に記載の機械学習装置と、位置指令に基づいてサーボモータを制御する制御部のパラメータと、位置指令とトルク指令の少なくとも一方の補正値とを変更する変更部を備えるサーボモータ制御装置と、該サーボモータ制御装置により制御される制御対象と、を備えたサーボモータ制御システム。
【請求項５】
前記制御対象は、サーボモータと該サーボモータにより回転角度が制御される駆動体とを有し、前記回転角度に依存して前記駆動体の回転軸が受ける負荷が変動する、請求項４に記載のサーボモータ制御システム。
【請求項６】
前記制御対象は、サーボモータと該サーボモータにより位置が制御される駆動体とを有し、前記位置に依存して前記制御対象が受ける負荷が変動する、請求項４に記載のサーボモータ制御システム。
【請求項７】
前記負荷は時間的に変化する請求項５又は請求項６記載のサーボモータ制御システム。
【請求項８】
前記サーボモータ制御装置の前記制御部は、前記位置指令に基づいて速度指令を生成する位置制御部と、該位置制御部から出力される速度指令に基づいて前記トルク指令を生成する速度制御部と、該速度制御部から出力される前記トルク指令の所定周波数範囲の周波数の信号を減衰させるフィルタとを備え、
前記変更部は、前記行動情報に基づいて前記位置制御部と前記速度制御部との少なくとも一方のゲイン、前記フィルタのフィルタ係数、及び前記位置指令又は前記トルク指令に加えるトルクオフセット値と摩擦補正値との少なくとも一方を変更する、請求項４から７のいずれか１項に記載のサーボモータ制御システム。
【請求項９】
請求項１から請求項３のいずれか１項に記載の機械学習装置と、位置指令に基づいてサーボモータを制御する制御部のパラメータと、位置指令とトルク指令の少なくとも一方の補正値とを、前記機械学習装置からの行動情報に基づいて、変更する変更部と、を備えたサーボモータ制御装置。
【請求項１０】
位置指令に基づいてサーボモータを制御する制御部のパラメータと、前記位置指令とトルク指令の少なくとも一方の補正値と、を変更する変更部を備えるサーボモータ制御装置に対して、機械学習を行う機械学習装置の機械学習方法であって、
所定のプログラムを前記サーボモータ制御装置に実行させることにより、前記位置指令と、少なくとも位置偏差を含むサーボ状態と、前記制御部のパラメータと前記補正値の組み合わせと、を含む状態情報を、前記サーボモータ制御装置から取得し、
前記状態情報に含まれる前記パラメータと前記補正値の組み合わせの調整情報を含む行動情報を前記サーボモータ制御装置に出力しと、
前記状態情報に含まれる前記位置偏差に基づく、強化学習における報酬の値と、前記状態情報と、前記行動情報とに基づいて行動価値関数を更新する、機械学習方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御対象にかかる負荷の変動に対して、サーボモータを制御する制御部のパラメータと、位置指令とトルク指令との少なくとも一方の補正値との変更を行うサーボモータ制御装置に対して、当該パラメータと補正値に関する学習を行う機械学習装置、この機械学習装置を含むサーボモータ制御装置とサーボモータ制御システム、及び機械学習方法に関する。
【背景技術】
【０００２】
従来のサーボモータ制御装置は、例えば、特許文献１に記載された数値制御装置、特許文献２に記載された、機械装置の制御装置、特許文献３に記載された、電動機の制御装置、及び特許文献４に記載されたサーボ制御装置が知られている。
【０００３】
特許文献１に記載された、数値制御装置は、工作機械の送り軸の移動範囲を複数の領域に分割し、分割された複数の領域のそれぞれに応じた複数の制御パラメータを予め記憶する。ワーク加工時の送り軸の位置を検出し、記憶した複数の制御パラメータから、検出されたワーク加工時の送り軸の位置が属する分割された領域に対応する制御パラメータを読みだし、読みだされた制御パラメータを用いて送り軸を制御する。また数値制御装置は、トルクフィードフォワード制御部からの出力と速度フィードバック制御部からの出力とを加算し、その加算値を、バンドエリミネーションフィルタを介して送り軸モータ駆動部に供給することで、送り軸モータを駆動する。
【０００４】
特許文献２に記載された、機械装置の制御装置は、機械装置から出力される速度に基づいて機械装置に生ずる摩擦力を推定し、推定された摩擦力に比例ゲインを乗算して摩擦補正値を求め、求めた摩擦補正値を用いてトルク指令を補正する。比例ゲインは機械装置に対する位置指令から位置偏差までの伝達関数のゲイン特性に基づいて決定する。
【０００５】
特許文献３に記載された、電動機の制御装置は、第１電動機の位置偏差が最小となるように位置偏差補正量を計算する第１学習制御器と、第２電動機の位置偏差が最小となるように位置偏差補正量を計算する第２学習制御器とを備え、学習制御の応答性を定めるパラメータを同じにすることで、各電動機の応答性を同等にしている。
特許文献４に記載されたサーボ制御装置は、原動軸を駆動するマスター側駆動源と、従動軸を駆動するスレーブ側駆動源とを同期制御するサーボ制御装置である。そして、このサーボ制御装置は、マスター側駆動源の位置偏差とスレーブ側駆動源の位置偏差との差分である同期誤差を求め、同期誤差を小さくするように、スレーブ側駆動源の対する位置指令値に基づいてスレーブ側駆動源の位置偏差を補正する。学習制御部は同期誤差を受け取り、この同期誤差に基づいて送り側サーボモータの位置偏差を補正する補正データを算出する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】国際公開第２０１２−０５７２１９号
【特許文献２】特開２０１５−１５６１９４号公報
【特許文献３】特開２００９−１０６０３４号公報
【特許文献４】特開２００８−２２５５３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
サーボモータ制御装置によって制御される制御対象にかかる負荷は、制御対象の回転軸の角度、又は制御対象の駆動体の位置等により変動する場合がある。この負荷の変動に対して、サーボモータを制御する制御部のパラメータと、位置指令とトルク指令との少なくとも一方の補正値を変更することはサーボ性能向上において重要である。制御対象にかかる負荷の変動に対して制御部のパラメータと補正値を変更させる場合に、制御対象の回転軸の角度、制御対象の駆動体の位置に対応して制御部のパラメータの値と補正値とをどのような値に設定するかが問題となる。
本発明は、制御対象の回転軸の角度、制御対象の駆動体の位置に対して、サーボモータ制御装置の制御部のパラメータの値と、位置指令とトルク指令との少なくとも一方の補正値とを適切な値に設定して、サーボ性能の向上を図ることができる、機械学習装置、サーボモータ制御装置、サーボモータ制御システム、及び機械学習方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
（１）  本発明に係る機械学習装置（例えば、後述の機械学習装置３００）は、位置指令に基づいてサーボモータ（例えば、後述のサーボモータ１０１）を制御する制御部（例えば、後述の制御部２０４）のパラメータと、前記位置指令とトルク指令との少なくとも一方の補正値と、を変更する変更部（例えば、後述の変更部２０６）を備えるサーボモータ制御装置（例えば、後述のサーボモータ制御装置２００）に対して、機械学習を行う機械学習装置であって、
所定のプログラムを前記サーボモータ制御装置に実行させることにより、前記位置指令と、少なくとも位置偏差を含むサーボ状態と、前記制御部のパラメータと前記補正値の組み合わせと、を含む状態情報を、前記サーボモータ制御装置から取得する状態情報取得手段（例えば、後述の状態情報取得部３０１）と、
前記状態情報に含まれる前記パラメータと前記補正値の組み合わせの調整情報を含む行動情報を前記サーボモータ制御装置に出力する行動情報出力手段（例えば、後述の行動情報出力部３０３）と、
前記状態情報に含まれる前記位置偏差に基づく、強化学習における報酬の値を出力する報酬出力手段（例えば、後述の報酬出力部３０２１）と、
前記報酬出力手段により出力される報酬の値と、前記状態情報と、前記行動情報とに基づいて行動価値関数を更新する価値関数更新手段（例えば、後述の価値関数更新部３０２２）と、
を備える機械学習装置である。
【０００９】
（２）  上記（１）の機械学習装置において、前記報酬出力手段は、前記位置偏差の絶対値に基づいて前記報酬の値を出力してもよい。
【００１０】
（３）  上記（１）又は（２）の機械学習装置において、前記価値関数更新手段により更新された価値関数に基づいて、前記変更部に、前記制御部のパラメータと、前記位置指令と前記トルク指令の少なくとも一方の前記補正値との組み合わせを生成して出力する最適化行動情報出力手段（例えば、後述の最適化行動情報出力部３０５）をさらに備えてもよい。
【００１１】
（４）  本発明に係るサーボモータ制御システム（例えば、後述のサーボモータ制御システム１０）は、上記（１）から（３）のいずれかに記載の機械学習装置（例えば、後述の機械学習装置３００）と、位置指令に基づいてサーボモータを制御する制御部（例えば、後述の制御部２０４）のパラメータと、位置指令とトルク指令の少なくとも一方の補正値とを変更する変更部（例えば、後述の変更部２０６）を備えるサーボモータ制御装置（例えば、後述のサーボモータ制御装置２００）と、該サーボモータ制御装置により制御される制御対象(例えば、後述の制御対象１００、１１０、１２０)と、を備えたサーボモータ制御システムである。
【００１２】
（５）  上記（４）のサーボモータ制御システムにおいて、前記制御対象(例えば、後述の制御対象１００)は、サーボモータと該サーボモータにより回転角度が制御される駆動体（例えば、後述のチルト機構１０４）とを有し、前記回転角度に依存して前記駆動体の回転軸が受ける負荷が変動してもよい。
【００１３】
（６）  上記（４）のサーボモータ制御システムにおいて、前記制御対象(例えば、後述の制御対象１１０又は１２０)は、サーボモータと該サーボモータにより位置が制御される駆動体（例えば、後述の主軸頭１１３又はナット１２４）とを有し、前記位置に依存して前記制御対象が受ける負荷が変動してもよい。
【００１４】
（７）  上記（５）又は（６）のサーボモータ制御システムにおいて、前記負荷は時間的に変化してもよい。
【００１５】
（８）  上記（４）から（７）のいずれかのサーボモータ制御システムにおいて、前記サーボモータ制御装置の前記制御部は、前記位置指令に基づいて速度指令を生成する位置制御部（例えば、後述の位置制御部２０４１）と、該位置制御部から出力される速度指令に基づいて前記トルク指令を生成する速度制御部（例えば、後述の速度制御部２０４３）と、該速度制御部から出力される前記トルク指令の所定周波数範囲の周波数の信号を減衰させるフィルタ（例えば、後述のフィルタ２０４４）とを備え、
前記変更部は、前記行動情報に基づいて前記位置制御部と前記速度制御部との少なくとも一方のゲイン、前記フィルタのフィルタ係数、及び前記位置指令又は前記トルク指令に加えるトルクオフセット値と摩擦補正値との少なくとも一方を変更してもよい。
【００１６】
（９）  本発明に係るサーボモータ装置（例えば、後述のサーボモータ制御装置２００）は、上記（１）から（３）のいずれかの機械学習装置（例えば、後述の機械学習装置３００）と、位置指令に基づいてサーボモータを制御する制御部（例えば、後述の制御部２０４）のパラメータと、位置指令とトルク指令の少なくとも一方の補正値とを、前記機械学習装置からの行動情報に基づいて、変更する変更部（例えば、後述の変更部２０６）と、を備えたサーボモータ制御装置である。
【００１７】
（１０）  本発明に係る機械学習方法は、位置指令に基づいてサーボモータを制御する制御部（例えば、後述の制御部２０４）のパラメータと、前記位置指令とトルク指令の少なくとも一方の補正値と、を変更する変更部（例えば、後述の変更部２０６）を備えるサーボモータ制御装置（例えば、後述のサーボモータ制御装置２００）に対して、機械学習を行う機械学習装置（例えば、後述の機械学習装置３００）の機械学習方法であって、
所定のプログラムを前記サーボモータ制御装置に実行させることにより、前記位置指令と、少なくとも位置偏差を含むサーボ状態と、前記制御部のパラメータと前記補正値の組み合わせと、を含む状態情報を、前記サーボモータ制御装置から取得し、
前記状態情報に含まれる前記パラメータと前記補正値の組み合わせの調整情報を含む行動情報を前記サーボモータ制御装置に出力し、
前記状態情報に含まれる前記位置偏差に基づく、強化学習における報酬の値と、前記状態情報と、前記行動情報とに基づいて行動価値関数を更新する、機械学習方法である。
【発明の効果】
【００１８】
本発明によれば、制御対象の負荷が変動する場合に、制御対象の回転軸の角度、制御対象の駆動体の位置に対応して、サーボモータ制御装置の制御部のパラメータの値と、位置指令とトルク指令との少なくとも一方の補正値とを適切な値に設定して、サーボ性能の向上を図ることができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の第１の実施形態のサーボモータ制御システムを示すブロック図である。
【図２】サーボモータ制御装置により駆動される制御対象の一例の構成を示す図である。
【図３】ワークが載置されたチルト機構の一例の構成を示す図である。
【図４】図３に示すワークが９０度回転された場合のチルト機構の一例の構成を示す図である。
【図５】本発明の第１の実施形態のサーボモータ制御システムのサーボモータ制御装置と機械学習装置との組、及び制御対象に含まれるサーボモータを示すブロック図である。
【図６】図２の制御対象が回転角度によりトルクが変化することを説明する図である。
【図７】本発明の第１の実施形態の機械学習装置を示すブロック図である。
【図８】機械学習装置の動作を説明するフローチャートである。
【図９】図８のフローチャートのステップＳ１５を詳細に示す図である。
【図１０】第１の実施形態の機械学習装置の最適化行動情報出力部の動作を説明するフローチャートである。
【図１１】本発明の第２の実施形態のサーボモータ制御システムの制御対象となる門型機械の構成を示す概略的構成図である。
【図１２】本発明の第３の実施形態のサーボモータ制御システムの制御対象となる、サーボモータを含む工作機械を示すブロック図である。
【発明を実施するための形態】
【００２０】
以下、本発明の実施形態について図面を用いて詳細に説明する。
（第１の実施形態）
図１は本発明の第１の実施形態のサーボモータ制御システムを示すブロック図である。サーボモータ制御システム１０は、図１に示すように、ｎ台の制御対象１００−１〜１００−ｎ、ｎ台のサーボモータ制御装置２００−１〜２００−ｎ、ｎ台の機械学習装置３００−１〜３００−ｎ、及びネットワーク４００を備えている。なお、ｎは任意の自然数である。
【００２１】
制御対象１００−１〜１００−ｎはそれぞれサーボモータ制御装置２００−１〜２００−ｎに接続される。制御対象１００−１〜１００−ｎは、例えば、サーボモータを含む、工作機械、ロボット、又は産業機械等である。サーボモータ制御装置２００−１〜２００−ｎは工作機械、ロボット、又は産業機械等の一部として設けられてもよい。
サーボモータ制御装置２００−１と機械学習装置３００−１とは１対１の組とされて、通信可能に接続されている。サーボモータ制御装置２００−２〜２００−ｎと機械学習装置３００−２〜３００−ｎについてもサーボモータ制御装置２００−１と機械学習装置３００−１と同様に接続される。図１では、サーボモータ制御装置２００−１〜２００−ｎと機械学習装置３００−１〜３００−ｎとのｎ個の組は、ネットワーク４００を介して接続されているが、サーボモータ制御装置２００−１〜２００−ｎと機械学習装置３００−１〜３００−ｎとのｎ個の組は、それぞれの組のサーボモータ制御装置と機械学習装置とが接続インタフェースを介して直接接続されてもよい。これらサーボモータ制御装置２００−１〜２００−ｎと機械学習装置３００−１〜３００−ｎとのｎ個の組は、例えば同じ工場に複数組設置されていてもよく、それぞれ異なる工場に設置されていてもよい。
【００２２】
なお、ネットワーク４００は、例えば、工場内に構築されたＬＡＮ（Local Area Network）や、インターネット、公衆電話網、接続インタフェースを介しての直接接続、或いは、これらの組み合わせである。ネットワーク４００における具体的な通信方式や、有線接続および無線接続のいずれであるか等については、特に限定されない。
【００２３】
まず、本実施形態の制御対象１００について説明する。
図２は、サーボモータ制御装置により駆動される制御対象の一例の構成を示す図である。図２に示す制御対象１００は、サーボモータ制御装置２００から出力される電流によって制御されるサーボモータ１０１、エンコーダ（位置検出部及び速度検出部となる）１０２、サーボモータ制御装置２００から出力される電流を検出する電流検出部１０３、及びチルト機構１０４を備える。
【００２４】
図３はワークが載置されたチルト機構の一例の構成を示す図である。図４は図３に示すワークが９０度回転された場合のチルト機構の一例の構成を示す図である。
図３に示すように、チルト機構１０４は、サーボモータ１０１によりＢ軸について回転駆動され、工具により加工されるワーク１０５を傾斜させる。チルト機構１０４は、例えば、ワーク１０５が載置されたテーブル１０４１と、傾斜軸（回転軸）を有する一対の支持部材１０４２とから構成される。このように、チルト機構１０４は、Ｂ軸に対して非対称な構成を有する。
ワーク１０５は、テーブル１０４１上で他のサーボモータでＣ軸について回転駆動される。図３はＢ軸の軸方向とワーク１０５の長手方向とが平行な状態のチルト機構１０４を示し、図４は図３に示すワークが９０度回転され、Ｂ軸の軸方向に対してワーク１０５の長手方向が直角な状態のチルト機構１０４を示している。
【００２５】
電流検出部１０３は、例えばカレントトランスやシャント抵抗器を用いた電流センサである。電流検出部１０３によって検出された電流は電流フィードバック（電流ＦＢ）として利用する。
【００２６】
エンコーダ１０２は、サーボモータ１０１に関連付けられて設けられ、サーボモータ１０１の回転位置を検出する。サーボモータ１０１の回転位置はチルト機構１０４の位置に対応するので、エンコーダ１０２は、チルト機構１０４の位置（機械座標、換言すれば傾斜角度（回転角度））を検出することとなる。検出された位置は位置フィードバック（位置ＦＢ）として利用される。また、エンコーダ１０２は、サーボモータ１０１の回転速度を検出する。サーボモータ１０１の回転速度はチルト機構１０４の速度に対応するので、エンコーダ１０２は、チルト機構１０４の速度を検出することとなる。検出された速度は速度フィードバック（速度ＦＢ）として利用される。
【００２７】
次に、サーボモータ制御装置２００について説明する。
図５は本発明の第１の実施形態のサーボモータ制御システムのサーボモータ制御装置２００と機械学習装置３００との組、及び制御対象に含まれるサーボモータを示すブロック図である。図５のサーボモータ制御装置２００と、機械学習装置３００は例えば、図１に示すサーボモータ制御装置２００−１と機械学習装置３００−１とに対応している。
【００２８】
図５に示されるように、サーボモータ制御装置２００は、位置指令作成部２０１、加算器２０２、減算器２０３、制御部２０４、補正部２０５、及び変更部２０６を備えている。
制御部２０４は、位置制御部２０４１、減算器２０４２、速度制御部２０４３、フィルタ２０４４、減算器２０４５、加算器２０４６及び電流制御部２０４７を備えている。制御部２０４はサーボモータ１０１の回転を制御する。なお、加算器２０２、減算器２０３、補正部２０５、及び変更部２０６のうちの一部又は全部は制御部に含まれてもよい。
サーボモータ１０１の回転速度は、サーボモータ１０１に関連付けられたエンコーダ１０２によって検出され、検出された速度検出値は速度フィードバック（速度ＦＢ）として減算器２０４２に入力される。またエンコーダ１０２によって検出された位置検出値は位置フィードバック（位置ＦＢ）として加算器２０２に入力される。電流検出部１０３は制御部２０４からサーボモータ１０１へ出力される電流を検出し、電流検出値は電流フィードバック（電流ＦＢ）として減算器２０４５に入力される。
【００２９】
位置指令作成部２０１は、図示しない上位制御装置や外部入力装置等から入力されるプログラムに従って、サーボモータ１０１を動作させるための位置指令値を作成し、作成した位置指令値を加算器２０２と機械学習装置３００とに出力する。位置指令作成部２０１は、プログラムにより指定される加工形状となるように、サーボモータ１０１の速度を変化させるためにパルス周波数を変えて位置指令値を作成する。
【００３０】
加算器２０２は、位置指令値に補正部２０５から出力される位置指令補正値を加えて、その加算値を減算器２０３に出力する。
減算器２０３は、位置指令補正値で補正された位置指令値と位置フィードバックされた位置検出値との差を求め、その差を位置偏差として、位置制御部２０４１と機械学習装置３００とに出力する。
【００３１】
位置制御部２０４１は、例えば、減算器２０３から出力される位置偏差に予め設定されたポジションゲインＫｐを乗じた値を、速度指令値として減算器２０４２に出力する。
【００３２】
減算器２０４２は位置制御部２０４１の出力と速度フィードバックされた速度検出値との差を求め、その差を速度偏差として速度制御部２０４３に出力する。
【００３３】
速度制御部２０４３は、例えば、減算器２０４２から出力される速度偏差に予め設定された積分ゲインＫ１ｖを乗じて積分した値と、減算器２０４２から出力される速度偏差に予め設定された比例ゲインＫ２ｖを乗じた値とを加算して、トルク指令値としてフィルタ２０４４に出力する。フィルタ２０４４は例えば振動抑制用のノッチフィルタであり、フィルタ定数に基づいて所定周波数範囲の周波数の信号（トルク指令値）を減衰させて、減算器２０４５に出力する。
【００３４】
減算器２０４５は、フィルタ２０４４から出力されるトルク指令値と電流フィードバックされた電流検出値との差を求め、その差を電流偏差として加算器２０４６に出力する。加算器２０４６は減算器２０４５から出力される電流偏差と補正部２０５の出力とを加算し、加算により補正された電流偏差を電流制御部２０４７に出力する。
電流制御部２０４７は補正された電流偏差に基づいてサーボモータ１０１を制御する。
【００３５】
補正部２０５は、トルクオフセット値を加算器２０４６に出力する。補正部２０５は、減算器２０４５から出力される電流偏差にトルクオフセット値を加える代わりに、位置指令作成部２０１から出力される位置指令値に位置指令補正値を加えてトルクオフセットの代わりとしてもよい。また、補正部２０５は、減算器２０４５から出力される電流偏差にトルクオフセット値を加えるとともに、位置指令作成部２０１から出力される位置指令値に位置指令補正値を加えてもよい。図５では補正部２０５は加算器２０２と加算器２０４６に接続されているが、いずれか一方に接続されてもよい。補正部２０５がトルクオフセット値のみを加算器２０４６に出力する場合には、加算器２０２は設けなくともよく、位置指令補正値のみを加算器２０２に出力する場合には、加算器２０４６は設けなくともよい。
変更部２０６は、機械学習装置３００からの行動情報又は最適化行動情報に基づいて、位置制御部２０４１のポジションゲインＫｐ、フィルタ２０４４のフィルタ係数、及び補正部２０５から出力するトルクオフセット値又は位置指令補正値を変更する。機械学習装置３００の詳細については後述する。
【００３６】
サーボモータ１０１が、チルト機構１０４をＢ軸について回転駆動する場合に、テーブル１０４１上のワーク１０５のＣ軸についての回転位置によって、Ｂ軸が受ける負荷イナーシャが変化する。Ｂ軸が受ける負荷イナーシャはＢ軸回りの慣性モーメントに依存するが、テーブル１０４１と支持部材１０４２とによるＢ軸回りの慣性モーメントは図３の状態と図４の状態とで変わらない。しかし、テーブル１０４１上のワーク１０５のＣ軸についての回転位置によって、ワーク１０５によるＢ軸回りの慣性モーメントが変わる。図３に示すように、Ｂ軸の軸方向とワーク１０５の長手方向とが平行な状態のときにワーク１０５のＢ軸回りの慣性モーメントは最小となる。一方、図４に示すように、Ｂ軸の軸方向に対してワーク１０５の長手方向が直角な状態のときにワーク１０５のＢ軸回りの慣性モーメントが最大となる。このため、Ｂ軸が受ける負荷イナーシャは、図３の状態のときに最小となり、図４の状態のときに最大となる。
【００３７】
Ｂ軸に作用する負荷イナーシャが大きくなると、駆動力が不足してワーク１０５の位置が目標位置に到達する時間が遅延する。そこで、負荷イナーシャが小さい場合には位置制御部２０４１のポジションゲインＫｐは小さく、負荷イナーシャが大きい場合には位置制御部２０４１のポジションゲインＫｐは大きくされることが望ましい。例えば、ポジションゲインＫｐは、固定値をｂ、補正係数（パラメータ）をｃ、角度θをＣ軸の回転角度とすると、Ｋｐ＝ｂ＋ｃ×｜sinθ｜で表すことができる。ここで、角度θは図３の状態のときに０°、図４の状態のときに９０°とする。変更部２０６は、機械学習装置３００からの行動情報又は最適化行動情報に基づいて、ポジションゲインＫｐの補正係数ｃを変更する。
【００３８】
また、Ｂ軸に作用する負荷イナーシャが小さい場合には高周波の機構共振特性を有し、Ｂ軸に作用する負荷イナーシャが大きい場合には低周波の機構共振特性を有する。そこで、負荷イナーシャが小さい場合にはフィルタ２０４４のフィルタ係数を高周波の信号が減衰するようにし、負荷イナーシャが大きい場合にはフィルタ２０４４のフィルタ係数を低周波の信号が減衰するようにする。例えば、フィルタ係数Ｆは、固定値をｄ、補正係数（パラメータ）をｅ、角度θに依存する関数をｆ（θ）とすると、Ｆ＝ｄ＋e×ｆ（θ）で表すことができる。関数ｆ（θ）はフィルタ２０４４の回路構成により適宜決められる関数である。変更部２０６は、機械学習装置３００からの行動情報又は最適化行動情報に基づいて、補正係数ｅを変更する。
【００３９】
図２に示した制御対象１００において、Ｂ軸の位置に応じて、重力に抗うための定常的なトルクが変化する。例えば、Ｂ軸が横向き（水平）の場合、Ｂ軸に与える重力の影響は最大となり、Ｂ軸が鉛直方向の場合、Ｂ軸に与える重力の影響はなくなる。
Ｂ軸が横向き（水平）の場合、チルト機構１０４がＢ軸について回転駆動すると、ワーク１０５を載せたテーブル１０４１及び支持部材１０４２の位置によって、ワーク１０５、テーブル１０４１及び支持部材に作用する重力及び回転の影響でＢ軸についてのトルクが変化する。Ｂ軸についてのトルクは例えば、図６に示すように、ワーク１０５を載せたテーブル１０４１がＢ軸の回りに回転したときに、ワーク１０５を載せたテーブル１０４１の回転に対して重心の位置が位置Ｐ１から位置Ｐ２へ、位置Ｐ２から位置Ｐ３へと移動したとする。重心の位置Ｐ１では、重力方向が回転方向と一致し、位置Ｐ２では重力方向は回転方向と９０度異なり、位置Ｐ３では重力方向は回転方向と反対になる。
そこで、重力の影響が大きくなるときに、トルクオフセットが大きくなるように、重力の影響が小さくなるときに、トルクオフセットが小さくなるように補正部２０５から出力するトルクオフセット値又は位置指令補正値が変更される。例えば、トルクオフセット値又は位置指令補正値は、固定値をｈ、補正係数（パラメータ）をｇとすると、ｈ＋ｇ×sinφで表すことができる。ここで、角度φは図６の位置Ｐ１のときに−９０°、位置Ｐ２のときに０°、位置Ｐ３のときに９０°とする。なお、位置Ｐ１、位置Ｐ２及び位置Ｐ３はワーク１０５を載せたテーブル１０４１の重心の位置の一例であり、特にこの位置に限定されるものではない。変更部２０６は機械学習装置３００からの行動情報又は最適化行動情報に基づいて、補正係数ｇを変更する。なお、Ｂ軸が鉛直方向に近くなるに従って重力の影響は小さくなるので、固定値ｈ及び補正係数ｇの初期値は適宜設定される。
なお、負荷イナーシャが変化する場合に、位置制御部２０４１のポジションゲインＫｐを変える代わりに、速度制御部２０４３の積分ゲインＫ１ｖと比例ゲインＫ２ｖとの少なくとも一方を変えてもよい。また、位置制御部２０４１のポジションゲインＫｐと、速度制御部２０４３の積分ゲインＫ１ｖと比例ゲインＫ２ｖとの少なくとも一方とを変えてもよい。この場合、変更部２０６は、ポジションゲインＫｐの補正係数ｃの代わりに又は補正係数ｃとともに、速度制御部２０４３の積分ゲインＫ１ｖと比例ゲインＫ２ｖとの少なくとも一方の補正係数を変える。
制御部２０４から機械学習装置３００へは、位置制御部２０４１が補正係数ｃ、フィルタ２０４４がフィルタ係数Ｆの補正係数ｅを送信し、補正部２０５が補正係数ｇを送信する。
【００４０】
＜機械学習装置３００＞
機械学習装置３００は、予め設定された評価用のプログラム（以下、「評価用プログラム」という）を実行することで、サーボモータ制御装置２００における制御部２０４の位置制御部２０４１のポジションゲインＫｐの補正係数ｃ、制御部２０４のフィルタ２０４４のフィルタ係数Ｆの補正係数ｅ、及び補正部２０５のトルクオフセット値又は／及び位置指令補正値の補正係数ｇを学習することができる。機械学習装置３００は、ポジションゲインＫｐの補正係数ｃの代わりに又は補正係数ｃとともに、速度制御部２０４３の積分ゲインＫ１ｖと比例ゲインＫ２ｖとの少なくとも一方の補正係数を学習してもよい。
また、機械学習装置３００は、評価用プログラムに代えて、加工を行う前の準備段階として、実際に用いる加工プログラムを用いて学習することができる。評価用プログラム又は準備段階の実際に用いる加工プログラムは所定のプログラムと呼ぶ。以下、機械学習装置３００は所定のプログラムとして評価用プログラムを実行することで学習を行うとして説明する。また、機械学習装置３００は補正部２０５のトルクオフセット値の補正係数ｇを学習するとして説明する。
【００４１】
まず、機械学習装置３００の構成について説明する。
機械学習装置３００は、評価用プログラムに基づいてサーボモータ制御装置２００が制御対象１００を駆動させたときの、位置偏差を低減するための、ポジションゲインＫｐの補正係数ｃ及びフィルタ係数Ｆの補正係数ｅ、並びに補正部２０５のトルクオフセット値の補正係数ｇの組み合わせを学習する。評価用プログラムとして、図６に示した回転角度θ及びφの範囲の組み合わせが異なる複数の評価用プログラムを用意して、これらの評価用プログラムを実行させて機械学習装置３００が学習を行う。例えば、回転角度θが０°から３０°で、回転角度φが−３０°から３０°の範囲で工作機械を動作させる第１の評価用プログラム、回転角度θが３０°から６０°で、回転角度φが−３０°から３０°の範囲で工作機械を動作させる第２の評価用プログラム、回転角度θが６０°から９０°で、回転角度φが−３０°から３０°の範囲で工作機械を動作させる第３の評価用プログラムを順次実行させて学習を行うことができる。
【００４２】
機械学習装置３００に含まれる各機能ブロックの説明に先立って、まず強化学習の基本的な仕組みについて説明する。エージェント（本実施形態における機械学習装置３００に相当）は、環境の状態を観測し、ある行動を選択し、当該行動に基づいて環境が変化する。環境の変化に伴って、何らかの報酬が与えられ、エージェントはより良い行動の選択（意思決定）を学習する。
教師あり学習が、完全な正解を示すのに対して、強化学習における報酬は、環境の一部の変化に基づく断片的な値であることが多い。このため、エージェントは、将来にわたっての報酬の合計を最大にするように行動を選択するように学習する。
【００４３】
このように、強化学習では、行動を学習することにより、環境に行動が与える相互作用を踏まえて適切な行動を学習、すなわち将来的に得られる報酬を最大にするための学習する方法を学ぶ。これは、本実施形態において、例えば、位置偏差を低減するための行動情報を選択するという、未来に影響をおよぼすような行動を獲得できることを表している。
【００４４】
ここで、強化学習としては、任意の学習方法を用いることができるが、以下の説明では、或る環境の状態ｓの下で、行動ａを選択する価値関数Ｑ（ｓ，ａ）を学習する方法であるＱ学習（Q-learning）を用いる場合を例にとって説明をする。
Ｑ学習では、或る状態ｓのとき、取り得る行動ａのなかから、価値関数Ｑ（ｓ，ａ）の最も高い行動ａを最適な行動として選択することを目的とする。
【００４５】
しかしながら、Ｑ学習を最初に開始する時点では、状態ｓと行動ａとの組合せについて、価値関数Ｑ（ｓ，ａ）の正しい値は全く分かっていない。そこで、エージェントは、或る状態ｓの下で様々な行動ａを選択し、その時の行動ａに対して、与えられる報酬に基づいて、より良い行動の選択をすることにより、正しい価値関数Ｑ（ｓ，ａ）を学習していく。
【００４６】
また、将来にわたって得られる報酬の合計を最大化したいので、最終的にＱ（ｓ，ａ）＝Ｅ［Σ（γｔ）ｒｔ］となるようにすることを目指す。ここでＥ［］は期待値を表し、ｔは時刻、γは後述する割引率と呼ばれるパラメータ、ｒｔは時刻ｔにおける報酬、Σは時刻ｔによる合計である。この式における期待値は、最適な行動に従って状態変化した場合の期待値である。しかしＱ学習の過程において最適な行動が何であるのかは不明であるので、様々な行動を行うことにより、探索しながら強化学習をする。このような価値関数Ｑ（ｓ，ａ）の更新式は、例えば、次の数式１（以下に数１として示す）により表すことができる。
【００４７】
【数１】
2019128830.tif 000003
【００４８】
上記の数式１において、ｓｔは、時刻ｔにおける環境の状態を表し、ａｔは、時刻ｔにおける行動を表す。行動ａｔにより、状態はｓｔ＋１に変化する。ｒｔ＋１は、その状態の変化により得られる報酬を表している。また、ｍａｘの付いた項は、状態ｓｔ＋１の下で、その時に分かっている最もＱ値の高い行動ａを選択した場合のＱ値にγを乗じたものになる。ここで、γは、０＜γ≦１のパラメータで、割引率と呼ばれる。また、αは、学習係数で、０＜α≦１の範囲とする。
【００４９】
上述した数式１は、試行ａｔの結果、返ってきた報酬ｒｔ＋１を元に、状態ｓｔにおける行動ａｔの価値関数Ｑ（ｓｔ，ａｔ）を更新する方法を表している。
この更新式は、状態ｓｔにおける行動ａｔの価値関数Ｑ（ｓｔ，ａｔ）よりも、行動ａｔによる次の状態ｓｔ＋１における最良の行動の価値ｍａｘａ  Ｑ（ｓｔ＋１，ａ）の方が大きければ、Ｑ（ｓｔ，ａｔ）を大きくし、逆に小さければ、Ｑ（ｓｔ，ａｔ）を小さくすることを示している。つまり、或る状態における或る行動の価値を、それによる次の状態における最良の行動の価値に近づける。ただし、その差は、割引率γと報酬ｒｔ＋１のあり方により変わってくるが、基本的には、ある状態における最良の行動の価値が、それに至る一つ前の状態における行動の価値に伝播していく仕組みになっている。
【００５０】
ここで、Ｑ学習では、すべての状態行動ペア（ｓ，ａ）についての価値関数Ｑ（ｓ，ａ）のテーブルを作成して、学習を行う方法がある。しかし、すべての状態行動ペアの価値関数Ｑ（ｓ，ａ）の値を求めるには状態数が多すぎて、Ｑ学習が収束するのに多くの時間を要してしまう場合がある。
【００５１】
そこで、公知のＤＱＮ（Deep Q-Network）と呼ばれる技術を利用するようにしてもよい。具体的には、価値関数Ｑを適当なニューラルネットワークを用いて構成し、ニューラルネットワークのパラメータを調整することにより、価値関数Ｑを適当なニューラルネットワークで近似することにより価値関数Ｑ（ｓ，ａ）の値を算出するようにしてもよい。ＤＱＮを利用することにより、Ｑ学習が収束するのに要する時間を短くすることが可能となる。なお、ＤＱＮについては、例えば、以下の非特許文献に詳細な記載がある。
【００５２】
＜非特許文献＞
「Human-level control through deep reinforcement learning」、Volodymyr Mnih1著［ｏｎｌｉｎｅ］、［平成２９年１月１７日検索］、インターネット〈ＵＲＬ：http://files.davidqiu.com/research/nature14236.pdf〉
【００５３】
以上説明をしたＱ学習を機械学習装置３００が行う。具体的には、機械学習装置３００は、サーボモータ制御装置２００における、位置制御部２０４１のポジションゲインＫｐの補正係数ｃ、フィルタ２０４４のフィルタ係数Ｆの補正係数ｅ、補正部２０５のトルクオフセット値の補正係数ｇ、及び評価用プログラムを実行することで取得されるサーボモータ制御装置２００の位置指令と位置偏差情報を含む、指令及びフィードバック等のサーボ状態を状態ｓとして、当該状態ｓに係る、位置制御部２０４１のポジションゲインＫｐの補正係数ｃ、フィルタ２０４４のフィルタ係数Ｆの補正係数ｅ、及び補正部２０５のトルクオフセット値の補正係数ｇの調整を行動ａとして選択する価値関数Ｑを学習する。
【００５４】
機械学習装置３００は、位置制御部２０４１のポジションゲインＫｐの補正係数ｃ、フィルタ２０４４のフィルタ係数Ｆの補正係数ｅ、及び補正部２０５のトルクオフセット値の補正係数ｇに基づいて、評価用プログラムを実行することで得られるサーボモータ制御装置２００の位置指令と位置偏差情報を含む、指令及びフィードバック等のサーボ状態を含む状態情報ｓを観測して、行動ａを決定する。機械学習装置３００は、行動ａをするたびに報酬が返ってくる。機械学習装置３００は、例えば、将来にわたっての報酬の合計が最大になるように最適な行動ａを試行錯誤的に探索する。そうすることで、機械学習装置３００は、位置制御部２０４１のポジションゲインＫｐの補正係数ｃ、フィルタ２０４４のフィルタ係数Ｆの補正係数ｅ、及び補正部２０５のトルクオフセット値の補正係数ｇに基づいて、評価用プログラムを実行することで取得されるサーボモータ制御装置２００の位置指令と位置偏差情報を含む指令、フィードバック等のサーボ状態を含む状態ｓに対して、最適な行動ａ（すなわち、位置制御部２０４１のポジションゲインＫｐの補正係数ｃ、フィルタ２０４４のフィルタ係数Ｆの補正係数ｅ、及び補正部２０５のトルクオフセット値の補正係数ｇの最適な組み合わせ）を選択することが可能となる。
【００５５】
すなわち、機械学習装置３００により学習された価値関数Ｑに基づいて、或る状態ｓに係る、位置制御部２０４１のポジションゲインＫｐの補正係数ｃ、フィルタ２０４４のフィルタ係数Ｆの補正係数ｅ、及び補正部２０５のトルクオフセット値の補正係数ｇに対して適用される行動ａのうち、Ｑの値が最大となるような行動ａを選択することで、評価用プログラムを実行することで取得される位置偏差が最小になるような行動ａ（すなわち、位置制御部２０４１のポジションゲインＫｐの補正係数ｃ、フィルタ２０４４のフィルタ係数Ｆの補正係数ｅ、及び補正部２０５のトルクオフセット値の補正係数ｇの組み合わせ）を選択することが可能となる。
【００５６】
図７は本発明の第１の実施形態の機械学習装置３００を示すブロック図である。
上述した強化学習を行うために、図７に示すように、機械学習装置３００は、状態情報取得部３０１、学習部３０２、行動情報出力部３０３、価値関数記憶部３０４、及び最適化行動情報出力部３０５を備える。学習部３０２は報酬出力部３０２１、価値関数更新部３０２２、及び行動情報生成部３０２３を備える。
【００５７】
状態情報取得部３０１は、サーボモータ制御装置２００における、位置制御部２０４１のポジションゲインＫｐの補正係数ｃ、フィルタ２０４４のフィルタ係数Ｆの補正係数ｅ、及び補正部２０５のトルクオフセット値の補正係数ｇに基づいて、評価用プログラムを実行することで取得されるサーボモータ制御装置２００の位置指令と位置偏差を含む指令、フィードバック等のサーボ状態を含む状態ｓを、サーボモータ制御装置２００から取得する。この状態情報ｓは、Ｑ学習における、環境状態ｓに相当する。
状態情報取得部３０１は、取得した状態情報ｓを学習部３０２に対して出力する。
なお、最初にＱ学習を開始する時点での、位置制御部２０４１のポジションゲインＫｐの補正係数ｃ、フィルタ２０４４のフィルタ係数Ｆの補正係数ｅ、及び補正部２０５のトルクオフセット値の補正係数ｇは、予めユーザが生成するようにする。本実施形態では、例えばユーザが作成した、位置制御部２０４１のポジションゲインＫｐの補正係数ｃ、フィルタ２０４４のフィルタ係数Ｆの補正係数ｅ、及び補正部２０５のトルクオフセット値の補正係数ｇの初期設定値を、強化学習により最適なものに調整する。
【００５８】
学習部３０２は、或る環境状態ｓの下で、ある行動ａを選択する場合の価値関数Ｑ（ｓ，ａ）を学習する部分である。具体的には、学習部３０２は、報酬出力部３０２１、価値関数更新部３０２２及び行動情報生成部３０２３を備える。
【００５９】
報酬出力部３０２１は、或る状態ｓの下で、行動ａを選択した場合の報酬を算出する部分である。ここで、状態ｓにおける状態変数である位置偏差の集合（位置偏差集合）をＰＤ（ｓ）、行動情報ａ（位置制御部２０４１のポジションゲインＫｐの補正係数ｃ、フィルタ２０４４のフィルタ係数Ｆの補正係数ｅ、及び補正部２０５のトルクオフセット値の補正係数ｇの修正）により状態ｓから変化した状態情報ｓ´に係る状態変数である位置偏差集合をＰＤ（ｓ´）で示す。また、状態ｓにおける位置偏差の値を、予め設定された評価関数ｆ（ＰＤ（ｓ））に基づいて算出される値とする。
評価関数ｆとしては、例えば、
位置偏差の絶対値の積算値を算出する関数
∫|e|dt
位置偏差の絶対値に時間の重み付けをして積算値を算出する関数
∫t|e|dt
位置偏差の絶対値の２ｎ（ｎは自然数）乗の積算値を算出する関数、
∫e2ndt（ｎは自然数）
位置偏差の絶対値の最大値を算出する関数
Ｍａｘ｛|e|｝  
等を適用することができる。なお、評価関数はこれに限定されない。位置偏差集合ＰＤ（ｓ）に基づいて、状態ｓにおける位置偏差値を適切に評価する関数であればよい。
【００６０】
このとき、行動情報ａにより修正された状態情報ｓ´に係る修正後の制御部２０４及び補正部２０５を用いて動作したサーボモータ制御装置２００の位置偏差の値ｆ（ＰＤ（ｓ´））が、行動情報ａにより修正される前の状態情報ｓに係る修正前の制御部２０４及び補正部２０５を用いて動作したサーボモータ制御装置２００の位置偏差の値ｆ（ＰＤ（ｓ））よりも大きくなった場合に、報酬出力部３０２１は、報酬の値を負の値とする。
【００６１】
一方で、行動情報ａにより修正された状態情報ｓ´に係る修正後の制御部２０４及び補正部２０５を用いて動作したサーボモータ制御装置２００の位置偏差の値ｆ（ＰＤ（ｓ´））が、行動情報ａにより修正される前の状態情報ｓに係る修正前の制御部２０４及び補正部２０５を用いて動作したサーボモータ制御装置２００の位置偏差の値ｆ（ＰＤ（ｓ））よりも小さくなった場合に、報酬の値を正の値とする。
【００６２】
なお、行動情報ａにより修正された状態情報ｓ´に係る修正後の制御部２０４及び補正部２０５を用いて動作したサーボモータ制御装置２００の位置偏差の値ｆ（ＰＤ（ｓ´））が、行動情報ａにより修正される前の状態情報ｓに係る制御部２０４及び補正部２０５を用いて動作したサーボモータ制御装置２００の位置偏差の値ｆ（ＰＤ（ｓ））と等しい場合は、報酬出力部３０２１は、例えば、報酬の値をゼロとする。
【００６３】
また、行動ａを実行後の状態ｓ´の位置偏差の値ｆ（ＰＤ（ｓ´））が、前の状態ｓにおける位置偏差の値ｆ（ＰＤ（ｓ））より大きくなった場合の負の値としては、比率に応じて負の値を大きくするようにしてもよい。つまり位置偏差の値が大きくなった度合いに応じて負の値が大きくなるようにするとよい。逆に、行動ａを実行後の状態ｓ´の位置偏差の値ｆ（ＰＤ（ｓ´））が、前の状態ｓにおける位置偏差の値ｆ（ＰＤ（ｓ））より小さくなった場合の正の値としては、比率に応じて正の値を大きくするようにしてもよい。つまり位置偏差の値が小さくなった度合いに応じて正の値が大きくなるようにするとよい。
【００６４】
価値関数更新部３０２２は、状態ｓと、行動ａと、行動ａを状態ｓに適用した場合の状態ｓ´と、上記のようにして算出された報酬の値と、に基づいてＱ学習を行うことにより、価値関数記憶部３０４が記憶する価値関数Ｑを更新する。
価値関数Ｑの更新は、オンライン学習で行ってもよく、バッチ学習で行ってもよく、ミニバッチ学習で行ってもよい。
【００６５】
オンライン学習とは、或る行動ａを現在の状態ｓに適用することにより、状態ｓが新たな状態ｓ´に遷移する都度、即座に価値関数Ｑの更新を行うという学習方法である。また、バッチ学習とは、或る行動ａを現在の状態ｓに適用することにより、状態ｓが新たな状態ｓ´に遷移することを繰り返すことにより、学習用のデータを収集し、収集した全ての学習用データを用いて、価値関数Ｑの更新を行うという学習方法である。更に、ミニバッチ学習とは、オンライン学習と、バッチ学習の中間的な、ある程度学習用データが溜まるたびに価値関数Ｑの更新を行うという学習方法である。
【００６６】
行動情報生成部３０２３は、現在の状態ｓに対して、Ｑ学習の過程における行動ａを選択する。行動情報生成部３０２３は、Ｑ学習の過程において、サーボモータ制御装置２００の位置制御部２０４１のポジションゲインＫｐの補正係数ｃ、フィルタ２０４４のフィルタ係数Ｆの補正係数ｅ、及び補正部２０５のトルクオフセット値の補正係数ｇを修正する動作（Ｑ学習における行動ａに相当）を行わせるために、行動情報ａを生成して、生成した行動情報ａを行動情報出力部３０３に対して出力する。より具体的には、行動情報生成部３０２３は、例えば、状態ｓに含まれる、位置制御部２０４１のポジションゲインＫｐの補正係数ｃ、フィルタ２０４４のフィルタ係数Ｆの補正係数ｅ、及び補正部２０５のトルクオフセット値の補正係数ｇに対して、行動ａに含まれる、位置制御部２０４１のポジションゲインＫｐの補正係数ｃ、フィルタ２０４４のフィルタ係数Ｆの補正係数ｅ、及び補正部２０５のトルクオフセット値の補正係数ｇをインクレメンタルに加算又は減算させる。この場合、位置制御部２０４１のポジションゲインＫｐを小さくする場合にはフィルタ係数は高周波数の信号を減衰させるように補正係数ｅを調整する。
【００６７】
そして、行動情報生成部３０２３は、ポジションゲインＫｐの補正係数ｃ、フィルタ係数Ｆの補正係数ｅ、及びトルクオフセット値の補正係数ｇの増加又は減少を適用して、状態ｓ´に遷移して、プラスの報酬（正の値の報酬）が返った場合、次の行動ａ´としては、ポジションゲインＫｐの補正係数ｃ、フィルタ係数Ｆの補正係数ｅ、及びトルクオフセット値の補正係数ｇに対して、前回のアクションと同様にインクレメンタルに加算又は減算させる等、位置偏差の値がより小さくなるような行動ａ´を選択する方策を取るようにしてもよい。
【００６８】
また、逆に、マイナスの報酬（負の値の報酬）が返った場合、行動情報生成部３０２３は、次の行動ａ´としては、例えば、ポジションゲインＫｐの補正係数ｃ、フィルタ係数Ｆの補正係数ｅ、及びトルクオフセット値の補正係数ｇに対して、前回のアクションとは逆にインクレメンタルに減算又は加算させる等、位置偏差が前回の値よりも小さくなるような行動ａ´を選択する方策を取るようにしてもよい。
【００６９】
また、行動情報生成部３０２３は、現在の推定される行動ａの価値の中で、最も価値関数Ｑ（ｓ，ａ）の高い行動ａ´を選択するグリーディ法や、ある小さな確率εでランダムに行動ａ´選択し、それ以外では最も価値関数Ｑ（ｓ，ａ）の高い行動ａ´を選択するεグリーディ法といった公知の方法により、行動ａ´を選択する方策を取るようにしてもよい。
【００７０】
行動情報出力部３０３は、学習部３０２から出力される行動情報ａをサーボモータ制御装置２００の変更部２０６に対して送信する部分である。サーボモータ制御装置２００は上述したように、この行動情報に基づいて、現在の状態ｓ、すなわち現在設定されている位置制御部２０４１のポジションゲインＫｐの補正係数ｃ、フィルタ２０４４のフィルタ係数Ｆの補正係数ｅ、及び補正部２０５のトルクオフセット値の補正係数ｇを微修正することで、次の状態ｓ´（すなわち修正された、位置制御部２０４１のポジションゲインＫｐの補正係数ｃ、フィルタ２０４４のフィルタ係数Ｆの補正係数ｅ、及び補正部２０５のトルクオフセット値の補正係数ｇ）に遷移する。
【００７１】
価値関数記憶部３０４は、価値関数Ｑを記憶する記憶装置である。価値関数Ｑは、例えば状態ｓ、行動ａ毎にテーブル（以下、行動価値テーブルと呼ぶ）として格納してもよい。価値関数記憶部３０４に記憶された価値関数Ｑは、価値関数更新部３０２２により更新される。また、価値関数記憶部３０４に記憶された価値関数Ｑは、他の機械学習装置３００との間で共有されるようにしてもよい。価値関数Ｑを複数の機械学習装置３００で共有するようにすれば、各機械学習装置３００にて分散して強化学習を行うことが可能となるので、強化学習の効率を向上させることが可能となる。
【００７２】
最適化行動情報出力部３０５は、価値関数更新部３０２２がＱ学習を行うことにより更新した価値関数Ｑに基づいて、価値関数Ｑ（ｓ，ａ）が最大となる動作を制御部２０４及び補正部２０５に行わせるための行動情報ａ（以下、「最適化行動情報」と呼ぶ）を生成する。
より具体的には、最適化行動情報出力部３０５は、価値関数記憶部３０４が記憶している価値関数Ｑを取得する。この価値関数Ｑは、上述したように価値関数更新部３０２２がＱ学習を行うことにより更新したものである。そして、最適化行動情報出力部３０５は、価値関数Ｑに基づいて、行動情報を生成し、生成した行動情報をサーボモータ制御装置２００（変更部２０６）に対して出力する。この最適化行動情報には、行動情報出力部３０３がＱ学習の過程において出力する行動情報と同様に、位置制御部２０４１のポジションゲインＫｐの補正係数ｃ、フィルタ２０４４のフィルタ係数Ｆの補正係数ｅ、及び補正部２０５のトルクオフセット値の補正係数ｇを修正する情報が含まれる。
【００７３】
サーボモータ制御装置２００では、この行動情報に基づいて位置制御部２０４１のポジションゲインＫｐの補正係数ｃ、フィルタ２０４４のフィルタ係数Ｆの補正係数ｅ、及び補正部２０５のトルクオフセット値の補正係数ｇが修正され、位置偏差の値を低減するように動作することができる。
以上のように、本発明に係る機械学習装置３００を利用することで、サーボモータ制御装置２００の位置制御部２０４１のポジションゲインＫｐの補正係数ｃ、フィルタ２０４４のフィルタ係数Ｆの補正係数ｅ、及び補正部２０５のトルクオフセット値の補正係数ｇの調整を簡易化することができる。
【００７４】
以上、サーボモータ制御装置２００、機械学習装置３００に含まれる機能ブロックについて説明した。
これらの機能ブロックを実現するために、サーボモータ制御装置２００、及び機械学習装置３００のそれぞれは、ＣＰＵ（Central Processing Unit）等の演算処理装置を備える。また、サーボモータ制御装置２００、及び機械学習装置３００のそれぞれは、アプリケーションソフトウェアやＯＳ（Operating System）等の各種の制御用プログラムを格納したＨＤＤ（Hard Disk Drive）等の補助記憶装置や、演算処理装置がプログラムを実行する上で一時的に必要とされるデータを格納するためのＲＡＭ（Random Access Memory）といった主記憶装置も備える。
【００７５】
そして、サーボモータ制御装置２００、及び機械学習装置３００のそれぞれにおいて、演算処理装置が補助記憶装置からアプリケーションソフトウェアやＯＳを読み込み、読み込んだアプリケーションソフトウェアやＯＳを主記憶装置に展開させながら、これらのアプリケーションソフトウェアやＯＳに基づいた演算処理を行なう。また、この演算結果に基づいて、各装置が備える各種のハードウェアを制御する。これにより、本実施形態の機能ブロックは実現される。つまり、本実施形態は、ハードウェアとソフトウェアが協働することにより実現することができる。
【００７６】
機械学習装置３００については機械学習に伴う演算量が多いため、例えば、パーソナルコンピュータにＧＰＵ（Graphics Processing Units）を搭載し、ＧＰＧＰＵ（General-Purpose computing on Graphics Processing Units）と呼ばれる技術により、ＧＰＵを機械学習に伴う演算処理に利用するようにすると高速処理できるようになるのでよい。更には、より高速な処理を行うために、このようなＧＰＵを搭載したコンピュータを複数台用いてコンピュータ・クラスターを構築し、このコンピュータ・クラスターに含まれる複数のコンピュータにて並列処理を行うようにしてもよい。
【００７７】
次に、図８及び図９のフローチャートを参照して本実施形態におけるＱ学習時の機械学習装置３００の動作について説明をする。図９は図８のフローチャートのステップＳ１５を詳細に示す図である。
【００７８】
ステップＳ１１において、試行回数を１とする。次にステップＳ１２において、状態情報取得部３０１がサーボモータ制御装置２００から状態情報ｓを取得する。取得した状態情報は、価値関数更新部３０２２や行動情報生成部３０２３に対して出力される。上述したように、この状態情報ｓは、Ｑ学習における状態に相当する情報であり、ステップＳ１２時点での、位置制御部２０４１のポジションゲインＫｐの補正係数ｃ、フィルタ２０４４のフィルタ係数Ｆの補正係数ｅ、及び補正部２０５のトルクオフセット値の補正係数ｇが含まれる。こうして、位置制御部２０４１のポジションゲインＫｐの補正係数ｃ、フィルタ２０４４のフィルタ係数Ｆの補正係数ｅ、及び補正部２０５のトルクオフセット値の補正係数ｇが初期値であるときの、加工形状に対応する位置偏差の集合ＰＤ(s)が取得される。
【００７９】
なお、前述したように、初期状態ｓ０における、位置制御部２０４１のポジションゲインＫｐの補正係数ｃ、フィルタ２０４４のフィルタ係数Ｆの補正係数ｅ、及び補正部２０５のトルクオフセット値の補正係数ｇはユーザにより初期設定される。
【００８０】
最初にＱ学習を開始する時点での減算器２０３から状態ｓ０における位置偏差の値ＰＤ（ｓ０）は、評価用プログラムでサーボモータ制御装置２００を動作させることで得られる。位置指令作成部２０１は、評価用プログラムにより指定された加工形状で位置指令を順次出力する。加工形状に対応する位置指令値が位置指令作成部２０１から出力され、減算器２０３は位置指令値と位置検出値との差を位置偏差ＰＤ（ｓ０）として機械学習装置３００に出力する。
【００８１】
ステップＳ１３において、行動情報生成部３０２３は新たな行動情報ａを生成し、生成した新たな行動情報ａを、行動情報出力部３０３を介してサーボモータ制御装置２００に対して出力する。行動情報生成部３０２３は前述した方策に基づいて、新たな行動情報ａを出力する。なお、行動情報ａを受信したサーボモータ制御装置２００は、受信した行動情報に基づいて現在の状態ｓに係る、位置制御部２０４１のポジションゲインＫｐの補正係数ｃ、フィルタ２０４４のフィルタ係数Ｆの補正係数ｅ、及び補正部２０５のトルクオフセット値の補正係数ｇを修正した状態ｓ´により、サーボモータを含む工作機械を駆動させる。上述したように、この行動情報は、Ｑ学習における行動ａに相当するものである。
【００８２】
ステップＳ１４において、状態情報取得部３０１は、減算器２０３から新たな状態ｓ´における位置偏差ＰＤ（ｓ´）、並びに位置制御部２０４１のポジションゲインＫｐの補正係数ｃ、フィルタ２０４４のフィルタ係数Ｆの補正係数ｅ、及び補正部２０５のトルクオフセット値の補正係数ｇを取得する。こうして、状態情報取得部３０１は、制御部２０４及び補正部２０５から状態ｓ´における補正係数ｃ、e及びｇであるときの、加工形状に対応する位置偏差の集合ＰＤ（ｓ´）を取得する。取得した状態情報は、報酬出力部３０２１に対して出力される。
【００８３】
ステップＳ１５のステップＳ１５１において、報酬出力部３０２１は、状態ｓ´における位置偏差の値ｆ（ＰＤ（ｓ´））と状態sにおける位置偏差の値ｆ（ＰＤ（ｓ））との大小関係を判断し、ｆ（ＰＤ（ｓ´））＞ｆ（ＰＤ（ｓ））の場合には、ステップＳ１５２において、報酬を負の値とする。ｆ（ＰＤ（ｓ´））＜ｆ（ＰＤ（ｓ））の場合には、ステップＳ１５３において、報酬を正の値とする。ｆ（ＰＤ（ｓ´））＝ｆ（ＰＤ（ｓ））の場合には、ステップＳ１５４において、報酬をゼロとする。なお、報酬の負の値、正の値について重みづけを行うようにしてもよい。
【００８４】
ステップＳ１５２、ステップＳ１５３及びステップＳ１５４の何れかが終了すると、ステップＳ１６において、この何れかのステップにて算出された報酬の値に基づいて、価値関数更新部３０２２が、価値関数記憶部３０４に記憶している価値関数Ｑを更新する。そして、ステップＳ１７において試行回数が最大試行回数に到達したかどうかを判断し、最大試行回数に達していない場合には（ステップＳ１７のＮｏ）、ステップＳ１８において試行回数をカウントアップして、再度ステップＳ１３に戻り、上述した処理を繰り返すことにより、価値関数Ｑは適切な値に収束していく。最大試行回数に達した場合には（ステップＳ１７のＹｅｓ）、処理を終了する。なお、上述した処理を、所定時間繰り返したことを条件として処理を終了するようにしてもよい。
なお、ステップＳ１６はオンライン更新を例示しているが、オンライン更新に替えてバッチ更新又はミニバッチ更新に置き換えてもよい。
【００８５】
以上、図８及び図９を参照して説明した動作により、本実施形態では、機械学習装置３００を利用することで、位置制御部２０４１のポジションゲインＫｐの補正係数ｃ、フィルタ２０４４のフィルタ係数Ｆの補正係数ｅ、及び補正部２０５のトルクオフセット値の補正係数ｇの調整のための、適切な価値関数を得ることができ、制御部２０４のゲインとフィルタ係数及び補正部２０５のトルクオフセット値の最適化を簡易化することができる、という効果を奏する。
次に、図１０のフローチャートを参照して、最適化行動情報出力部３０５による最適化行動情報の生成時の動作について説明をする。
まず、ステップＳ２１において、最適化行動情報出力部３０５は、価値関数記憶部３０４に記憶している価値関数Ｑを取得する。価値関数Ｑは、上述したように価値関数更新部３０２２がＱ学習を行うことにより更新したものである。
【００８６】
ステップＳ２２において、最適化行動情報出力部３０５は、この価値関数Ｑに基づいて、最適化行動情報を生成し、生成した最適化行動情報をサーボモータ制御装置２００の変更部２０６に対して出力する。そして、変更部２０６は、位置制御部２０４１のポジションゲインＫｐの補正係数ｃ、フィルタ２０４４のフィルタ係数Ｆの補正係数ｅ、及び補正部２０５のトルクオフセット値の補正係数ｇを最適化する。
【００８７】
また、図１０を参照して説明した動作により、本実施形態では、機械学習装置３００により学習することにより求められる価値関数Ｑに基づいて、最適化行動情報を生成し、サーボモータ制御装置２００が、この最適化行動情報に基づいて、現在設定されている、位置制御部２０４１のポジションゲインＫｐの補正係数ｃ、フィルタ２０４４のフィルタ係数Ｆの補正係数ｅ、及び補正部２０５のトルクオフセット値の補正係数ｇの調整を簡易化するとともに、位置偏差の値を低減することができる。
【００８８】
（第２の実施形態）
第１の実施形態は制御対象が回転角度に依存して負荷が変動する場合のサーボモータ制御システムであったが、本実施形態は制御対象１１０が門型工作機械であり、位置に依存して負荷が変動する場合のサーボモータ制御システムについて説明する。本実施形態のサーボモータ制御システムは主軸頭を含む門が被加工物に対して相対的にＸ方向、Ｙ方向及びＺ方向に移動するように、サーボモータ制御装置が、Ｘ方向に対して２つ、Ｙ方向に対して１つ、Ｚ方向に対して２つ設けられている。制御対象を除く、サーボモータ制御システム、サーボモータ制御装置及び機械学習装置の基本的な構成及び動作は図１〜図１０を用いて説明した構成及び動作と同様である。以下の説明では、制御対象及び制御対象に関連するサーボ制御装置についてのみ説明する。
【００８９】
図１１は門型機械の構成を示す概略的構成図である。図１１に示す門型機械は、鉛直方向に設けられた支柱１１１−１、１１１−２と、支柱１１１−１、１１１−２間に水平方向に設けられた支柱１１２と、支柱１１１−１、１１１−２が配置された支持台１１４−１、１１４−２とで構成される。
【００９０】
主軸頭１１３はＹ軸サーボモータにより支柱１１２に対してＹ方向に移動する。支柱１１２の一端（図１１中の左端）は、支柱１１１−１に対して第１のＺ軸サーボモータによりＺ１方向に上下動する。支柱１１２の他端（図１１中の右端）は、支柱１１１−２に対して第２のＺ軸サーボモータによりＺ２方向に上下動する。第１のＺ軸サーボモータと第２のＺ軸サーボモータとが連動して、支柱１１２が上下動する。
【００９１】
また、支柱１１１−１は支持台１１４−１に対して第１のＸ軸サーボモータによりＸ１方向に移動する。支柱１１１−２は支持台１１４−２に対して第２のＸ軸サーボモータによりＸ２方向に移動する。第１のＸ軸サーボモータと第２のＸ軸サーボモータとが連動して、支柱１１１−１、１１１−２、及び支柱１１２で構成される門が移動する。
【００９２】
主軸頭１１３が支柱１１２に対してＹ軸方向に移動すると、主軸頭１１３の位置によって、門の両側にかかる負荷（支柱１１２の両端に掛かる負荷及び支柱１１１−１及び１１１−２にそれぞれ掛かる負荷）が変化する。
よって、主軸頭１１３が支柱１１２に対してＹ軸方向に移動する場合に、第１及び第２のＸ軸サーボモータを制御するサーボモータ制御装置の制御部及び補正部の補正係数（パラメータ）を機械学習装置が学習し、当該補正係数を調整する。また、第１及び第２のＺ軸サーボモータを制御するサーボモータ制御装置の制御部及び補正部の補正係数を機械学習装置が学習し、当該補正係数を調整する。
【００９３】
（第１及び第２のＺ軸サーボモータを制御するサーボモータ制御装置並びに機械学習装置）
主軸頭１１３が支柱１１２に対してＹ軸方向に移動する場合に、支柱１１２の両端に掛かる負荷が変化するので、支柱１１２を門の上下方向に移動する第１及び第２のＺ軸サーボモータは負荷の変動に対応してトルクが変化する。よって、第１及び第２のＺ軸サーボモータを制御するサーボモータ制御装置はトルクオフセットを変更することが求められる。例えば、図１１に示すように、支柱１１２の一方の端部（支柱１１１−１側）から他の端部（支柱１１１−２側）まで主軸頭が距離Ｗｄ移動可能で、支柱１１２の一方の端部（支柱１１１−１側）から主軸頭１１３が距離Ｗｄ１移動するとする。
このとき、支柱１１２の一端（支柱１１１−１側）をＺ１方向に移動させる第１のＺ軸サーボモータの負荷は軽くなり、トルクオフセット値は、補正係数（パラメータ）をｇ２とすると、ｈ２−ｇ２×Ｗｄ１で表すことができる。ここで、ｈ２はＷｄ１＝０のときのトルクオフセット値を示す。一方、支柱１１２の他端（支柱１１１−２側）をＺ２方向に移動させる第２のＺ軸サーボモータの負荷は重くなり、トルクオフセット値は、ｈ３＋ｇ２×Ｗｄ１で表すことができる。ここで、ｈ３はＷｄ１＝０のときのトルクオフセット値を示す。変更部２０６は機械学習装置３００からの行動情報又は最適化行動情報に基づいて、補正係数ｇ２を変更する。
【００９４】
また、主軸頭１１３が支柱１１２に対してＹ軸方向に移動する場合に、支柱１１２の両端に掛かる負荷が変化すると、サーボモータの駆動力が変化するため、負荷が軽い場合には位置制御部２０４１のポジションゲインＫｐは小さく、負荷が重い場合には位置制御部２０４１のポジションゲインＫｐは大きくされることが求められる。
【００９５】
例えば、図１１に示すように、支柱１１２の一方の端部（支柱１１１−１側）から他の端部（支柱１１１−２側）まで主軸頭が距離Ｗｄ移動可能で、支柱１１２の一方の端部（支柱１１１−１側）から主軸頭１１３が距離Ｗｄ１移動する。このとき、例えば、支柱１１２の一端（支柱１１１−１側）をＺ１方向に移動させる第１のＺ軸サーボモータの制御装置の負荷は軽くなり、位置制御部２０４１のポジションゲインＫｐは、補正係数（パラメータ）をｃ２としたときの、距離Ｗｄ１の移動によるゲイン変動分をｃ２×Ｗｄ１とし、固定値をｂ２とすると、Ｋｐ＝ｂ２−ｃ２×Ｗｄ１で表すことができる。ここで、ｂ２はＷｄ１＝０のときのポジションゲインを示す。一方、支柱１１２の他端（支柱１１１−２側）をＺ２方向に移動させる第２のＺ軸サーボモータの制御装置の負荷は重くなり、位置制御部２０４１のポジションゲインＫｐは、補正係数（パラメータ）をｃ２としたときの、距離Ｗｄ１の移動によるゲイン変動分をｃ２×Ｗｄ１とし、固定値をｂ３すると、Ｋｐ＝ｂ３＋ｃ２×Ｗｄ１で表すことができる。ここで、ｂ３はＷｄ１＝０のときのポジションゲインを示す。変更部２０６は、機械学習装置３００からの行動情報又は最適化行動情報に基づいて、ポジションゲインＫｐの補正係数ｃ２を変更する。
【００９６】
さらに、第１及び第２のＺ軸サーボモータを制御するサーボモータ制御装置は、負荷が軽い場合には高周波の機構共振特性を有し、負荷が重い場合には低周波の機構共振特性を有する。そのため、第１及び第２のＺ軸サーボモータを制御するサーボモータ制御装置は、負荷が軽い場合にはフィルタ２０４４のフィルタ係数を高周波の信号が減衰するようにし、負荷が重い場合にはフィルタ２０４４のフィルタ係数を低周波の信号が減衰するようにすることが求められる。
【００９７】
例えば、図１１に示すように、支柱１１２の一方の端部（支柱１１１−１側）から他の端部（支柱１１１−２側）まで主軸頭が距離Ｗｄ移動可能で、支柱１１２の一方の端部（支柱１１１−１側）から主軸頭１１３が距離Ｗｄ１移動するとする。
このとき、支柱１１２の一端（支柱１１１−１側）をＺ１方向に移動させる第１のＺ軸サーボモータの負荷は軽くなり、フィルタ係数Ｆは、固定値をｄ２、補正係数（パラメータ）をｅ２、距離Ｗｄ１に依存する関数をｆ（Ｗｄ１）とすると、フィルタ係数ＦはＦ＝ｄ２＋e２×ｆ（Ｗｄ１）で表すことができる。関数ｆ（Ｗｄ１）はフィルタ２０４４の回路構成により適宜決められる関数である。ここで、ｄ２はＷｄ１＝０のときのフィルタ係数を示す。一方、支柱１１２の他端（支柱１１１−２側）をＺ２方向に移動させる第２のＺ軸サーボモータの負荷は重くなり、フィルタ係数Ｆは、固定値をｄ３、補正係数（パラメータ）をｅ２、距離Ｗｄ１に依存する関数をｆ（Ｗｄ１）とすると、距離Ｗｄ１のときに、フィルタ係数ＦはＦ＝ｄ３−e２×ｆ（Ｗｄ１）で表すことができる。ここで、ｄ３はＷｄ１＝０のときのフィルタ係数を示す。変更部２０６は機械学習装置３００からの行動情報又は最適化行動情報に基づいて、補正係数ｅ２を変更する。
【００９８】
第１及び第２のＺ軸サーボモータを制御するサーボモータ制御装置に接続される機械学習装置は、Ｚ軸サーボモータを制御するサーボモータ制御装置からの状態情報の他に、Ｙ軸サーボモータを制御するサーボモータ制御装置の位置指令を状態情報として受ける。この位置指令は主軸頭１１３の位置に対応し、機械学習装置は主軸頭１１３の位置を考慮して、Ｚ軸サーボモータを制御するサーボモータ制御装置の制御部２０４の補正係数ｃ２、補正係数ｅ２及び補正部２０５の補正係数ｇ２を学習し、制御部２０４の補正係数ｃ２、補正係数ｅ２及び補正部２０５の補正係数ｇ２を最適化する。
【００９９】
（第１及び第２のＸ軸サーボモータを制御するサーボモータ制御装置並びに機械学習装置）
主軸頭１１３が支柱１１２に対してＹ軸方向に移動する場合に、支柱１１１−１及び１１１−２にそれぞれ掛かる負荷が変化するので、支柱１１１−１及び１１１−２を支持台１１４−１、１１４−２に対してＸ１方向及びＸ２方向にそれぞれ移動させるときの摩擦力が変化する。よって、第１及び第２のＸ軸サーボモータを制御するサーボモータ制御装置はトルクに対する摩擦補正値を変更することが求められる。
【０１００】
また、第１及び第２のＸ軸サーボモータを制御するサーボモータ制御装置は、支柱１１１−１と支柱１１１−２に掛かる負荷が変化するとサーボモータの駆動力が変化するため、負荷が軽い場合には位置制御部２０４１のポジションゲインＫｐは小さく、負荷が重い場合には位置制御部２０４１のポジションゲインＫｐは大きくされることが求められる。
【０１０１】
さらに、第１及び第２のＸ軸サーボモータを制御するサーボモータ制御装置は、負荷が軽い場合には高周波の機構共振特性を有し、負荷が重い場合には低周波の機構共振特性を有する。そのため、第１及び第２のＸ軸サーボモータを制御するサーボモータ制御装置は、負荷が軽い場合にはフィルタ２０４４のフィルタ係数を高周波の信号が減衰するようにし、負荷が重い場合にはフィルタ２０４４のフィルタ係数を低周波の信号が減衰するようにすることが求められる。
【０１０２】
第１及び第２のＸ軸サーボモータを制御するサーボモータ制御装置の位置制御部２０４１のポジションゲインＫｐ及びフィルタ２０４４のフィルタ係数の変更に関する説明は、上述した第１及び第２のＺ軸サーボモータを制御するサーボモータ制御装置の位置制御部２０４１のポジションゲインＫｐ及びフィルタ２０４４のフィルタ係数の変更に関する説明と同様なので、ここでは説明を省略する。
【０１０３】
第１及び第２のＸ軸サーボモータを制御するサーボモータ制御装置は、補正部２０５が摩擦補正値を加算器２０４６に出力し、摩擦補正値を算出するための後述する補正係数を機械学習装置３００に出力する。そして、機械学習装置３００は行動情報として摩擦補正値の補正係数の調整値を変更部２０６に出力する。
【０１０４】
例えば、図１１に示すように、支柱１１２の一方の端部（支柱１１１−１側）から他の端部（支柱１１１−２側）まで主軸頭が距離Ｗｄ移動可能で、支柱１１２の一方の端部（支柱１１１−１側）から主軸頭１１３が距離Ｗｄ１移動するとする。
このとき、支柱１１１−１をＸ１方向に移動させる第１のＸ軸サーボモータの負荷は軽くなり、摩擦補正値は、補正係数（パラメータ）をｊとすると、ｋ１−ｊ×Ｗｄ１で表すことができる。ここで、ｋ１はＷｄ１＝０のときの摩擦補正値を示す。一方、支柱１１１−２をＸ２方向に移動させる第２のＸ軸サーボモータの負荷は重くなり、摩擦補正値は、補正係数（パラメータ）をｊとすると、ｋ２＋ｊ×Ｗｄ１で表すことができる。ここで、ｋ２はＷｄ１＝０のときの摩擦補正値を示す。変更部２０６は機械学習装置３００からの行動情報又は最適化行動情報に基づいて、補正係数ｊを変更する。
【０１０５】
第１及び第２のＸ軸サーボモータを制御するサーボモータ制御装置に接続される機械学習装置は、Ｘ軸サーボモータを制御するサーボモータ制御装置からの状態情報の他に、Ｙ軸サーボモータを制御するサーボモータ制御装置の位置指令を状態情報として受ける。この位置指令は主軸頭１１３の位置に対応し、機械学習装置は主軸頭１１３の位置を考慮して、Ｘ軸サーボモータを制御するサーボモータ制御装置の補正係数ｃ２’、補正係数ｅ’２及び補正部２０５の補正係数ｊを学習し、制御部２０４の補正係数ｃ’２、補正係数ｅ’２及び補正部２０５の補正係数ｊを最適化する。補正係数ｃ２’及びｅ’は第１及び第２のＸ軸サーボモータを制御するサーボモータ制御装置のポジションゲインＫｐの補正係数、フィルタ係数Ｆの補正係数を示す。
【０１０６】
（第３の実施形態）
第１の実施形態は制御対象が回転角度に依存して負荷が変動する場合のサーボモータ制御システムであったが、本実施形態は制御対象がボールねじを含む場合のサーボモータ制御システムについて説明する。制御対象を除く、サーボモータ制御システム、サーボモータ制御装置及び機械学習装置の基本的な構成及び動作は図１〜図１０を用いて説明した構成及び動作と同様である。以下の説明では、制御対象及び制御対象に関連するサーボ制御装置についてのみ説明する。
【０１０７】
図１２は制御対象１２０の一例となる、サーボモータを含む工作機械を示すブロック図である。
制御対象１２０は、サーボモータ１０１、サーボモータ１０１とボールねじ１２３とを連結するカップリング１２１、サポートユニット１２２、ボールねじ１２３、ボールねじ３０３３に螺合されたナット１２４及びサポートユニット１２６を備えている。
サーボモータ１０１は、カップリング１２１、ボールねじ１２３、及びナット１２４を介してテーブル１２５を移動させ、テーブル１２５の上に搭載された被加工物（ワーク）を加工する。サーボモータ１０１の回転駆動によって、ボールねじ１２３に螺着されたナット１２４がボールねじ１２３の軸方向に移動する。
【０１０８】
制御対象１２０における摩擦は、カップリング１２１、サポートユニット１２２，１２６、ボールねじ１２３、ナット１２４等で生ずるが、サーボモータ１０１においても摩擦が生ずる。ボールねじは、直線軸の一部の破損、グリス切れ等により、その一部で摩擦が強くなる場合がある。
図１２に示すように、ボールねじ１２３は、直線軸の一部の破損、グリス切れ等により、その一部で摩擦が強くなり、摩擦が強くなる領域でサーボモータ１０１に負荷がかかる場合がある。摩擦が強くなる領域は、サポートユニット１２２からの距離をＨｄとすると、距離Ｈｄが距離Ｈｄ１から距離Ｈｄ２まで領域（Ｈｄ１＜Ｈｄ＜Ｈｄ２）である。この領域ではサーボモータ１０１にかかる負荷が変化するので、サーボモータ制御装置はトルクに対する摩擦補正値を変更することが求められる。負荷が変更する領域を含む場合の摩擦補正値ｆ(ω)は、数式２（以下に数２として示す）に示す関係を有する。
【０１０９】
摩擦は非線形特性を示し、非線形摩擦と呼ばれる。数式２に示すように、非線形摩擦補正値ｆ(ω)は、例えば、モータ速度ωに比例する摩擦補正値ｍ×ωと、摩擦が強くなる領域の摩擦補正値ｅとからなる項ｆ１(ω)、及び静止時の摩擦補正値ｆ２（ω）を含む。
図１２に示すように、距離Ｈｄ１から距離Ｈｄ２まで領域で摩擦が強くなり、この領域で摩擦補正値ｅ（ｅ＞０）が与えられる。
【数２】
2019128830.tif 000004
変更部２０６は機械学習装置３００からの行動情報又は最適化行動情報に基づいて、距離Ｈｄが距離Ｈｄ１から距離Ｈｄ２まで領域での摩擦補正値ｅを変更する。
【０１１０】
機械学習装置は、摩擦が強くなる領域の範囲（Ｈｄ１＜Ｈｄ＜Ｈｄ２）を考慮して、サーボモータ制御装置の制御部２０４の位置制御部２０４１のポジションゲインＫｐの補正値ｑ、制御部２０４のフィルタ２０４４のフィルタ係数Ｆの補正係数ｓ、及び補正部２０５の摩擦補正値ｅを学習し、位置制御部２０４１のポジションゲインＫｐの補正値ｑ、制御部２０４のフィルタ２０４４のフィルタ係数Ｆの補正係数ｓ、及び補正部２０５の摩擦補正値ｅを最適化する。
【０１１１】
サーボモータ制御装置は、補正部２０５が摩擦補正値を加算器２０４６に出力し、摩擦補正値ｅ（Ｈｄ）を機械学習装置３００に出力する。そして、機械学習装置３００は行動情報として摩擦補正値摩擦補正値ｅ（Ｈｄ）の調整値を変更部２０６に出力する。
補正部２０５は、摩擦補正値ｆ(ω, Hd)を、トルク補正値として加算器２０４６に出力する。
【０１１２】
以上説明した第１〜第３の実施形態はサーボモータに接続される制御対象の角度又は位置に依存する負荷の変化、すなわち、空間的な負荷の変化に関する例であったが、本発明は時間的な負荷の変化に関しても適用できる。例えば、第１〜第３の実施形態における制御対象は、摩耗及びグリス切れ等によりサーボモータに係る負荷が時間的に変化していく場合がある。
第１〜第３の実施形態では、最大試行回数を決めていたが、最大試行回数を決めずに機械学習を続けてもよい。最大試行回数を決めなければ、時間的な負荷の変化に応じて、サーボモータ制御装置の制御部及び補正部のパラメータが調整されるため、時間的な負荷の変化があっても、その時点での最適なサーボ性能でサーボモータ制御装置を動作させることが可能となる。
また、評価用プログラム又は準備段階の実際に用いる加工プログラムを実行して機械学習装置３００で学習を行って、サーボモータ制御装置の制御部及び補正部のパラメータを設定した後に、加工プログラムを用いて制御対象を制御して、機械加工等を繰り返し行い、定期的又は不定期に、評価用プログラム又は準備段階の実際に用いる加工プログラムを実行して機械学習装置３００で学習を行って、時間的な負荷の変化に応じて、サーボモータ制御装置の制御部及び補正部のパラメータを調整するようにしてもよい。
【０１１３】
上記のサーボモータ制御装置のサーボモータ制御部及び機械学習装置に含まれる各構成部は、ハードウェア、ソフトウェア又はこれらの組み合わせにより実現することができる。また、上記のサーボモータ制御装置に含まれる各構成部のそれぞれの協働により行なわれるサーボモータ制御方法も、ハードウェア、ソフトウェア又はこれらの組み合わせにより実現することができる。ここで、ソフトウェアによって実現されるとは、コンピュータがプログラムを読み込んで実行することにより実現されることを意味する。
【０１１４】
プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えば、ハードディスクドライブ）、光磁気記録媒体（例えば、光磁気ディスク）、ＣＤ−ＲＯＭ(Read Only Memory)、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ(Programmable ROM)、ＥＰＲＯＭ(Erasable PROM)、フラッシュＲＯＭ、ＲＡＭ(random access memory）)を含む。
【０１１５】
上述した実施形態は、本発明の好適な実施形態ではあるが、上記実施形態のみに本発明の範囲を限定するものではなく、本発明の要旨を逸脱しない範囲において種々の変更を施した形態での実施が可能である。
【０１１６】
＜サーボモータ制御装置が機械学習装置を備える変形例＞
上述した実施形態では、機械学習装置３００を、サーボモータ制御装置２００とは別体の装置により構成したが、機械学習装置３００の機能の一部又は全部をサーボモータ制御装置２００により実現するようにしてもよい。
【０１１７】
＜システム構成の自由度＞
上述した実施形態では、機械学習装置３００とサーボモータ制御装置２００とが１対１の組として通信可能に接続されているが、例えば１台の機械学習装置３００が複数のサーボモータ制御装置２００とネットワーク４００を介して通信可能に接続され、各サーボモータ制御装置２００の機械学習を実施するようにしてもよい。
その際、機械学習装置３００の各機能を、適宜複数のサーバに分散する、分散処理システムとしてもよい。また、クラウド上で仮想サーバ機能等を利用して、機械学習装置３００の各機能を実現してもよい。
また、複数の同じ型名、同一仕様、又は同一シリーズのサーボモータ制御装置２００−１〜１００−ｎとそれぞれ対応する複数の機械学習装置３００−１〜３００−ｎがあった場合に、各機械学習装置３００−１〜３００−ｎにおける学習結果を共有するように構成するようにしてもよい。そうすることで、より最適なモデルを構築することが可能となる。
【符号の説明】
【０１１８】
１０  サーボモータ制御システム
１００、１００−１〜１００−ｎ、１１０、１２０  制御対象
１０１  サーボモータ
２００、２００−１〜２００−ｎ  サーボモータ制御装置
２０１  位置指令作成部
２０２  加算器
２０３  減算器
２０４  制御部
３００、３００−１〜３００−ｎ  機械学習装置
３０１  状態情報取得部
３０２  学習部
３０３  行動情報出力部
３０４  価値関数記憶部
３０５  最適化行動情報出力部
４００  ネットワーク
【図１】
2019128830.tif 000005
【図２】
2019128830.tif 000006
【図３】
2019128830.tif 000007
【図４】
2019128830.tif 000008
【図５】
2019128830.tif 000009
【図６】
2019128830.tif 000010
【図７】
2019128830.tif 000011
【図８】
2019128830.tif 000012
【図９】
2019128830.tif 000013
【図１０】
2019128830.tif 000014
【図１１】
2019128830.tif 000015
【図１２】
2019128830.tif 000016