(58)【調査した分野】(Int.Cl.,DB名)
工作機械、ロボット又は産業機械の軸を駆動するサーボモータを制御する、少なくとも1つのフィードバックループと、該フィードバックループに加える補正量を生成する補正生成部と、前記サーボモータの異常な動作を検出する異常検出部と、を備えたサーボ制御装置に対して、前記補正生成部の補正量の最適化に係る機械学習を行う機械学習装置であって、
機械学習動作中に、前記サーボ制御装置において、前記異常検出部が異常を検出した場合、前記補正生成部からの補正を停止し、前記機械学習装置において、前記補正生成部にて生成する補正量の最適化を継続する機械学習装置。
前記サーボ制御装置は、前記フィードバックループと前記補正生成部内又は前記補正生成部の後段との間に設けられたスイッチを備え、前記異常検出部は異常な動作を検出したときに、前記スイッチをオフし、前記フィードバックループへの補正が停止されたことを前記機械学習装置に通知し、
前記機械学習装置は、前記フィードバックループへの補正が停止されたことの通知を受けたときに、前記補正量を学習に反映させる、請求項1に記載の機械学習装置。
前記報酬に基づいて価値関数を更新し、更新された価値関数に基づいて、最適な前記補正量又は補正パラメータの調整情報を生成して、前記補正生成部に出力する請求項3に記載の機械学習装置。
前記異常検出部は、位置偏差、トルク指令、あるいはその両方があらかじめ設定した閾値以上となった際に異常とする請求項1から4のいずれか1項に記載の機械学習装置。
前記サーボ制御装置は、前記スイッチの後段に設けられたローパスフィルタを備え、前記スイッチによる切り換え時に前記ローパスフィルタを通す請求項2から6のいずれか1項に記載の機械学習装置。
少なくとも1つのフィードバックループは、位置フィードバックループ及び速度フィードバックループの少なくとも1つを含み、前記補正生成部は前記位置フィードバックループに位置フィードフォワード項を加える位置フィードフォワード処理部及び前記速度フィードバックループに速度フィードフォワード項を加える速度フィードフォワード処理部の少なくとも1つを含む請求項1から8のいずれか1項に記載の機械学習装置。
少なくとも1つのフィードバックループは、位置フィードバックループであり、前記補正生成部は前記サーボモータの反転時の補正を生成する請求項1から8のいずれか1項に記載の機械学習装置。
工作機械、ロボット又は産業機械の軸を駆動するサーボモータを制御する、少なくとも1つのフィードバックループに加える補正を生成し、前記サーボモータの異常な動作を検出するサーボ制御装置に対して、前記少なくとも1つのフィードバックループに加える補正量の最適化に係る機械学習を行う機械学習装置の機械学習方法であって、
機械学習動作中に、前記サーボ制御装置が異常を検出した場合、少なくとも1つのフィードバックループに加える補正を停止し、前記機械学習装置が、前記補正量の最適化を継続する、機械学習方法。
【発明を実施するための形態】
【0022】
以下、本発明の実施形態について図面を用いて詳細に説明する。
(第1実施形態)
【0023】
図1は本発明の第1実施形態の制御装置の一構成例を示すブロック図である。
図1に示す制御装置10は、サーボ制御装置100と機械学習装置200とを備えている。サーボ制御装置100は数値制御装置(CNC装置)400と接続される。
【0024】
最初に、サーボ制御装置100について説明する。
サーボ制御装置100は、減算器101、位置制御部102、加減算器103、速度制御部104、スイッチ117、サーボモータ106、積分器107、位置検出処理部108、異常検出部109、補正生成部110、及び報知部118を備えている。
【0025】
数値制御装置400は、サーボモータ106を動作させるプログラムに基づいて位置指令値を作成する。工作機械において、被加工物(ワーク)を搭載するテーブルがX軸方向及びY軸方向に移動される場合には、X軸方向及びY軸方向に対してそれぞれ
図1に示すサーボ制御装置100が設けられる。テーブルを3軸以上の方向に移動させる場合には、それぞれの軸方向に対してサーボ制御装置100が設けられる。
数値制御装置400は、加工プログラムにより指定される加工形状となるように、送り速度を設定して位置指令値を作成し、減算器101、補正生成部110及び機械学習装置200に出力する。
【0026】
減算器101は、数値制御装置400から入力されるプログラムや命令に従って作成された位置指令を受け、位置指令と位置フィードバックされた検出位置との差を求め、その差を位置偏差として位置制御部102、異常検出部109及び機械学習装置200に出力する。
【0027】
位置制御部102は、減算器101から出力される位置偏差にポジションゲインKpを乗じた値を、速度指令として加減算器103に出力する。
【0028】
加減算器103は、速度指令と、補正生成部110からスイッチ117を介して入力される補正量とを加算し、さらに、その加算値と速度フィードバックされた速度検出値との差を求め、その差を補正された速度偏差として速度制御部104に出力する。
【0029】
速度制御部104は、補正された速度偏差に比例積分処理(PI処理)を行い、サーボモータ106に出力する。具体的には、速度制御部104は、補正された速度偏差を積分器で積分して、その積分値に積分ゲインKiを乗じた値と、補正された速度偏差に比例ゲインKvを乗じた値とを加算して、トルク指令としてサーボモータ106に出力してサーボモータ106を駆動する。
【0030】
サーボモータ106は、例えば工作機械,ロボット,産業機械等に含まれてもよい。サーボ制御装置100はサーボモータ106とともに、工作機械,ロボット,産業機械等の一部として設けられてもよい。
【0031】
サーボモータ106の回転角度位置は、サーボモータ106に関連付けられた、位置検出部となるロータリーエンコーダによって検出され、速度検出値は速度フィードバックとして加減算器103に入力される。加減算器103からサーボモータ106は、速度フィードバックループを構成する。
【0032】
積分器107は速度検出値を積分して積分値を位置検出処理部108に出力する。位置検出処理部108は積分値に基づいて位置検出値を求める。位置検出値は位置フィードバックとして減算器101に入力される。減算器101から位置検出処理部108は、位置フィードバックループを構成する。
【0033】
異常検出部109は、減算器101から出力される位置偏差に基づいて、位置偏差が閾値以上となった場合に、スイッチ117をオフ(非導通状態)となるように切換信号となる異常検出信号を送る。その後、異常検出部109は機械学習装置200へ補正停止を通知する補正停止通知信号を送る。そして、機械学習をするために動かす動作プログラムである学習時の加工プログラムは、補正を停止したまま動作させて動作プログラムが終了するまで動作させることが好ましい。仮に、動作プログラムを途中で停止させた場合、次の動作時には機械の停止時の位置から開始されるため、動作プログラムが開始位置に戻るための処理が機械によっては必要となる。他方、機械学習をするために動かす動作プログラムは、連続で運転するために開始位置に戻る動作が基本的には入る。したがって、機械学習をするために動かす動作プログラムは、補正を停止したまま動作させて動作プログラムが終了させることで開始位置に戻らせて、次の学習を継続することができる。なお、機械学習をするために動かす動作プログラムは、補正を停止した場合に、動作プログラムを途中で停止させてもよいが、この場合には、機械が開始位置に戻るための処理が必要となることがある。
なお補正停止通知信号は異常検出信号と別に設けなくともよく、異常検出信号を用いてもよい。機械学習装置200からは、補正生成部110の補正量が、異常を検出したときの補正量とは異なる補正量に調整したことを通知する補正量調整通知信号を送る。異常検出部109はこの補正量調整通知信号を受けると、機械学習装置200で異常が生じたときの補正量とは異なる新たな補正量が探索されて調整されたことを認識し、新たな学習動作が開始されるときに、スイッチ117をオン(導通状態)となるように切換信号を送る。
このように、異常検出部109が異常を検出して、スイッチ117をオフした場合、補正量は加減算器103に出力されないので、サーボ制御装置100は、位置フィードバックループと速度フィードバックループのみで動作することになり、動作が安定する。
【0034】
補正生成部110は、位置偏差に基づいて位置フィーバックループに対する補正量を生成し、スイッチ117を介して加減算器103に出力する。補正量は、例えば位置指令に基づいて位置フィードフォワード項、又は象限突起を抑制する補正量である。なお、異常検出部109によってスイッチ117がオフしている場合には、補正生成部110により生成される補正量は加減算器103に出力されない。
【0035】
報知部118は、異常検出部109にて異常が検出されたときに、管理者に、液晶モニタ、LED、又はスピーカにより、表示、点灯又は音声で報知する。報知部118はネットワークで外部に異常を知らせる情報を送信する通信部であってもよい。
【0036】
図2は第1実施形態の補正生成部110の一構成例を示すブロック図である。ここでは、補正生成部110として、位置指令に基づいて速度指令に対する位置フィードフォワード項を生成する位置フィードフォワード項生成部を備えるものとして説明する。
【0037】
図2に示すように、位置フィードフォワード項生成部は、微分器115と、位置フィードフォワード処理部116とを備える。微分器115は、位置指令を微分して定数βを掛ける。位置フィードフォワード処理部116は微分器115の出力に、数式1(以下に数1として示す)で示す伝達関数G(s)で示された位置フィードフォワード処理を行う。その処理結果を位置フィードフォワード項(補正量となる)としてスイッチ117を介して加減算器103に出力する。
数式1の係数a
i、b
j(i,j≧0)は位置フィードフォワード処理部116の伝達関数G(s)の各係数である。
【数1】
【0038】
機械学習装置200は、補正量を探索して機械学習を行う。本実施形態では、機械学習の一例として強化学習について説明するが、機械学習は特に強化学習に限定されない。強化学習において、エージェント(本実施形態における機械学習装置200に相当)は、環境の状態を観測し、ある行動を選択し、当該行動に基づいて環境が変化する。環境の変化に伴って、何らかの報酬が与えられ、エージェントはより良い行動の選択(意思決定)を学習する。本実施形態において、例えば、減算器101から出力される位置偏差が環境の状態となり、位置偏差を低減するための行動情報として補正生成部110の補正量を選択する。
ここでは、前述した補正生成部110として例示した、位置指令に基づいて速度指令に対する補正量を生成する位置フィードフォワード項に係る機械学習(強化学習)を例として説明する。
機械学習装置200は、予め設定された加工プログラム(「学習時の加工プログラム」となる)を実行することで、位置フィードフォワード処理部116の伝達関数の係数を機械学習(以下、学習という)する。
【0039】
ここで、学習時の加工プログラムにより指定される加工形状は、例えば、
図3に示す八角形、及び/又は
図4に示す八角形の角が一つ置きに円弧に置き換えられた形等である。
ここでは、学習時の加工プログラムにより指定される加工形状の位置A1と位置A3、及び/又は位置B1と位置B3により、線形制御において回転速度が変更されたときの振動を評価し、位置偏差に対する影響を調べることで、伝達関数G(s)に係る係数の学習を行うものとする。
なお、加工形状の位置A2と位置A4、及び/又は位置B2と位置B4により、回転方向が反転する場合に生ずる惰走(いわゆる「象限突起」)を評価し、位置偏差に対する影響を調べることで、象限突起を抑制する補正量を算出するための伝達関数の係る係数の学習を行うこともできる。
【0040】
機械学習装置200に含まれる各機能ブロックの説明に先立って、まず強化学習の基本的な仕組みについて説明する。エージェント(本実施形態における機械学習装置200に相当)は、環境の状態を観測し、ある行動を選択し、当該行動に基づいて環境が変化する。環境の変化に伴って、何らかの報酬が与えられ、エージェントはより良い行動の選択(意思決定)を学習する。
教師あり学習が、完全な正解を示すのに対して、強化学習における報酬は、環境の一部の変化に基づく断片的な値であることが多い。このため、エージェントは、将来にわたっての報酬の合計を最大にするように行動を選択するように学習する。
【0041】
このように、強化学習では、行動を学習することにより、環境に行動が与える相互作用を踏まえて適切な行動を学習、すなわち将来的に得られる報酬を最大にするための学習する方法を学ぶ。これは、本実施形態において、例えば、位置偏差を低減するための行動情報を選択するという、未来に影響をおよぼすような行動を獲得できることを表している。
【0042】
ここで、強化学習としては、任意の学習方法を用いることができるが、以下の説明では、或る環境の状態Sの下で、行動Aを選択する価値Q(S,A)を学習する方法であるQ学習(Q-learning)を用いる場合を例にとって説明をする。
Q学習では、或る状態Sのとき、取り得る行動Aのなかから、価値Q(S,A)の最も高い行動Aを最適な行動として選択することを目的とする。
【0043】
しかしながら、Q学習を最初に開始する時点では、状態Sと行動Aとの組合せについて、価値Q(S,A)の正しい値は全く分かっていない。そこで、エージェントは、或る状態Sの下で様々な行動Aを選択し、その時の行動Aに対して、与えられる報酬に基づいて、より良い行動の選択をすることにより、正しい価値Q(S,A)を学習していく。
【0044】
また、将来にわたって得られる報酬の合計を最大化したいので、最終的にQ(S,A)=E[Σ(γ
t)r
t]となるようにすることを目指す。ここでE[]は期待値を表し、tは時刻、γは後述する割引率と呼ばれるパラメータ、r
tは時刻tにおける報酬、Σは時刻tによる合計である。この式における期待値は、最適な行動に従って状態変化した場合の期待値である。しかしQ学習の過程において最適な行動が何であるのかは不明であるので、様々な行動を行うことにより、探索しながら強化学習をする。このような価値Q(S,A)の更新式は、例えば、次の数式2(以下に数2として示す)により表すことができる。
【0046】
上記の数式2において、S
tは、時刻tにおける環境の状態を表し、A
tは、時刻tにおける行動を表す。行動A
tにより、状態はS
t+1に変化する。r
t+1は、その状態の変化により得られる報酬を表している。また、maxの付いた項は、状態S
t+1の下で、その時に分かっている最もQ値の高い行動Aを選択した場合のQ値にγを乗じたものになる。ここで、γは、0<γ≦1のパラメータで、割引率と呼ばれる。また、αは、学習係数で、0<α≦1の範囲とする。
【0047】
上述した数式2は、試行A
tの結果、返ってきた報酬r
t+1を元に、状態S
tにおける行動A
tの価値Q(S
t,A
t)を更新する方法を表している。
この更新式は、状態S
tにおける行動A
tの価値Q(S
t,A
t)よりも、行動A
tによる次の状態S
t+1における最良の行動の価値max
a Q(S
t+1,A)の方が大きければ、Q(S
t,A
t)を大きくし、逆に小さければ、Q(S
t,A
t)を小さくすることを示している。つまり、或る状態における或る行動の価値を、それによる次の状態における最良の行動の価値に近づける。ただし、その差は、割引率γと報酬r
t+1のあり方により変わってくるが、基本的には、ある状態における最良の行動の価値が、それに至る一つ前の状態における行動の価値に伝播していく仕組みになっている。
【0048】
ここで、Q学習では、すべての状態行動ペア(S,A)についてのQ(S,A)のテーブルを作成して、学習を行う方法がある。しかし、すべての状態行動ペアのQ(S,A)の値を求めるには状態数が多すぎて、Q学習が収束するのに多くの時間を要してしまう場合がある。
【0049】
そこで、公知のDQN(Deep Q-Network)と呼ばれる技術を利用するようにしてもよい。具体的には、価値関数Qを適当なニューラルネットワークを用いて構成し、ニューラルネットワークのパラメータを調整することにより、価値関数Qを適当なニューラルネットワークで近似することにより価値Q(S,A)の値を算出するようにしてもよい。DQNを利用することにより、Q学習が収束するのに要する時間を短くすることが可能となる。なお、DQNについては、例えば、以下の非特許文献に詳細な記載がある。
【0050】
<非特許文献>
「Human-level control through deep reinforcement learning」、Volodymyr Mnih1著[online]、[平成29年1月17日検索]、インターネット〈URL:http://files.davidqiu.com/research/nature14236.pdf〉
【0051】
以上説明をしたQ学習を機械学習装置200が行う。具体的には、機械学習装置200は、サーボ制御装置100における、位置フィードフォワード処理部116の伝達関数の各係数a
i、b
j(i,j≧0)の値、並びに学習時の加工プログラムを実行することで取得されるサーボ制御装置100の位置偏差情報、及び位置指令を含む、指令及びフィードバック等のサーボ状態を状態Sとして、当該状態Sに係る、位置フィードフォワード処理部116の伝達関数の各係数a
i、b
jの値の調整を行動Aとして選択する価値Qを学習する。
【0052】
機械学習装置200は、位置フィードフォワード処理部116の伝達関数の各係数a
i、b
jの値に基づいて、学習時の加工プログラムを実行することで前述した加工形状の位置A1と位置A3、及び/又は位置B1と位置B3における、サーボ制御装置100の位置指令及び位置偏差情報を含む、指令及びフィードバック等のサーボ状態を含む状態情報Sを観測して、行動Aを決定する。機械学習装置200は、行動Aをするたびに報酬が返ってくる。機械学習装置200は、例えば、将来にわたっての報酬の合計が最大になるように最適な行動Aを試行錯誤的に探索する。そうすることで、機械学習装置200は、位置フィードフォワード処理部116の伝達関数の各係数a
i、b
jの値に基づいて、学習時の加工プログラムを実行することで取得されるサーボ制御装置100の位置指令及び位置偏差情報を含む指令、フィードバック等のサーボ状態を含む状態Sに対して、最適な行動A(すなわち、位置フィードフォワード処理部116の最適な係数a
i、b
j)を選択することが可能となる。機械学習装置200は線形動作時の位置フィードフォワード処理部116の伝達関数の各係数a
i、b
jの学習を行うことができる。
【0053】
すなわち、機械学習装置200により学習された価値関数Qに基づいて、或る状態Sに係る位置フィードフォワード処理部116の伝達関数の各係数a
i、b
jに対して適用される行動Aのうち、Qの値が最大となるような行動Aを選択することで、学習時の加工プログラムを実行することで取得される位置偏差が最小になるような行動A(すなわち、位置フィードフォワード処理部116の係数a
i、b
jを選択することが可能となる。
【0054】
図5は第1実施形態の機械学習装置200を示すブロック図である。
上述した強化学習を行うために、
図5に示すように、機械学習装置200は、状態情報取得部201、学習部202、行動情報出力部203、価値関数記憶部204、及び最適化行動情報出力部205を備える。学習部202は報酬出力部2021、価値関数更新部2022、及び行動情報生成部2023を備える。
【0055】
状態情報取得部201は、サーボ制御装置100における位置フィードフォワード処理部116の伝達関数の各係数a
i、b
j、及びこれらの係数に基づいて、学習時の加工プログラムを実行することで取得されるサーボ制御装置100の位置指令及び位置偏差情報を含む指令、フィードバック等のサーボ状態を含む状態Sを、サーボ制御装置100から取得する。また、状態情報取得部201は、異常検出部109から補正停止を通知する補正停止通知信号を取得する。この状態情報Sは、Q学習における、環境状態Sに相当する。
状態情報取得部201は、取得した状態情報Sを学習部202に対して出力する。
【0056】
なお、最初にQ学習を開始する時点での位置フィードフォワード処理部116の係数a
i、b
jは、予めユーザが生成するようにする。本実施形態では、ユーザが作成した位置フィードフォワード処理部116の係数a
i、b
jの初期設定値を、強化学習により最適なものに調整する。微分器115の係数βを固定値とし、例えばβ=1とする。また、位置フィードフォワード処理部116の係数a
i、b
jは例えば、初期設定値として、数式1のa
0=1、a
1=0、a
2=0、a
x=0、b
0=1、b
1=0、b
2=0、b
x=0とする。また、係数a
i、b
jの次元m、nを予め設定する。すなわち、a
iについては0≦i≦m b
jについては0≦j≦nとする。
なお、係数a
i、b
jは予め操作者が工作機械を調整している場合には、調整済の値を初期値として機械学習してもよい。
【0057】
学習部202は、或る環境状態Sの下で、ある行動Aを選択する場合の価値Q(S,A)を学習する部分である。また、学習部202は、異常検出部109から補正停止通知信号を受けると、状態Sにおける位置フィードフォワード処理部116の係数a
i、b
jをサーボモータ106が異常な動作をする補正パラメータとして学習に反映させることができる。その際、当該状態Sの学習のための加工プログラムの実行については、前述したように、補正を停止したまま、加工プログラムが終了するまで動作させる。その場合、加工プログラムは、位置フィードバックループと速度フィードバックループのみで動作することとなる。その後、学習部202は、異常が生じたときの位置フィードフォワード処理部116の係数a
i、b
jとは異なる、次の学習のための係数を新たに探索して、位置フィードフォワード処理部116に設定するとともに、位置フィードフォワード処理部116の係数を設定したことを示す係数設定通知信号を異常検出部109へ送る。
【0058】
報酬出力部2021は、或る状態Sの下で、行動Aを選択した場合の報酬を算出する部分である。ここで、状態Sにおける状態変数である位置偏差の集合(位置偏差集合)をPD(S)、行動情報Aにより状態Sから変化した状態情報S´に係る状態変数である位置偏差集合をPD(S´)で示す。また、状態Sにおける位置偏差の値を、予め設定された評価関数f(PD(S))に基づいて算出される値とする。行動情報Aは位置フィードフォワード処理部116の各係数a
i、b
j(i,jは0及び正の整数を示す)の修正である。
ここで、状態Sにおける状態変数である位置偏差の集合とは、前述した加工形状の位置A1と位置A3、及び/又は位置B1と位置B3を含む所定の範囲内で計測される位置偏差の集合を意味する。
評価関数fとしては、例えば、
位置偏差の絶対値の積算値を算出する関数
∫|e|dt
位置偏差の絶対値に時間の重み付けをして積算値を算出する関数
∫t|e|dt
位置偏差の絶対値の2n(nは自然数)乗の積算値を算出する関数
∫e
2ndt(nは自然数)
位置偏差の絶対値の最大値を算出する関数
Max{|e|}
等を適用することができる。
【0059】
このとき、行動情報Aにより修正された状態情報S´に係る修正後の位置フィードフォワード処理部116に基づいて動作したサーボ制御装置100の位置偏差の値f(PD(S´))が、行動情報Aにより修正される前の状態情報Sに係る修正前の位置フィードフォワード処理部116に基づいて動作したサーボ制御装置100の位置偏差の値f(PD(S))よりも大きくなった場合に、報酬出力部2021は、報酬の値を負の値とする。
なお、報酬出力部2021は、異常検出部109からの補正停止通知信号を受けたときには、異常が検知されたときの位置フィードフォワード処理部116の係数a
i、b
jが選択されないように報酬の値を絶対値の大きな負の値とすることができる。そうすることで、異常が検知されたときの位置フィードフォワード処理部116の係数a
i、b
jは、今後の学習範囲から実質的に外すことができる。
【0060】
一方で、行動情報Aにより修正された状態情報S´に係る修正後の位置フィードフォワード処理部116に基づいて動作したサーボ制御装置100の位置偏差の値f(PD(S´))が、行動情報Aにより修正される前の状態情報Sに係る修正前の位置フィードフォワード処理部116に基づいて動作したサーボ制御装置100の位置偏差の値f(PD(S))よりも小さくなった場合に、報酬出力部2021は、報酬の値を正の値とする。
なお、行動情報Aにより修正された状態情報S´に係る修正後の位置フィードフォワード処理部116に基づいて動作したサーボ制御装置100の位置偏差の値f(PD(S´))が、行動情報Aにより修正される前の状態情報Sに係る修正前の位置フィードフォワード処理部116に基づいて動作したサーボ制御装置100の位置偏差の値f(PD(S))と等しい場合は、報酬出力部2021は、報酬の値をゼロとするようにしてもよい。
【0061】
また、行動Aを実行後の状態S´の位置偏差の値f(PD(S´))が、前の状態Sにおける位置偏差の値f(PD(S))より大きくなった場合の負の値としては、比率に応じて負の値を大きくするようにしてもよい。つまり位置偏差の値が大きくなった度合いに応じて負の値が大きくなるようにするとよい。逆に、行動Aを実行後の状態S´の位置偏差の値f(PD(S´))が、前の状態Sにおける位置偏差の値f(PD(S))より小さくなった場合の正の値としては、比率に応じて正の値を大きくするようにしてもよい。つまり位置偏差の値が小さくなった度合いに応じて正の値が大きくなるようにするとよい。
【0062】
価値関数更新部2022は、状態Sと、行動Aと、行動Aを状態Sに適用した場合の状態S´と、上記のようにして算出された報酬の値と、に基づいてQ学習を行うことにより、価値関数記憶部204が記憶する価値関数Qを更新する。
価値関数Qの更新は、オンライン学習で行ってもよく、バッチ学習で行ってもよく、ミニバッチ学習で行ってもよい。
オンライン学習は、或る行動Aを現在の状態Sに適用することにより、状態Sが新たな状態S´に遷移する都度、即座に価値関数Qの更新を行う学習方法である。また、バッチ学習は、或る行動Aを現在の状態Sに適用することにより、状態Sが新たな状態S´に遷移することを繰り返すことにより、学習用のデータを収集し、収集した全ての学習用データを用いて、価値関数Qの更新を行う学習方法である。更に、ミニバッチ学習は、オンライン学習と、バッチ学習の中間的な、ある程度学習用データが溜まるたびに価値関数Qの更新を行う学習方法である。
【0063】
行動情報生成部2023は、現在の状態Sに対して、Q学習の過程における行動Aを選択する。行動情報生成部2023は、Q学習の過程において、サーボ制御装置100の位置フィードフォワード処理部116の各係数a
i、b
jを修正する動作(Q学習における行動Aに相当)を行わせるために、行動情報Aを生成して、生成した行動情報Aを行動情報出力部203に対して出力する。より具体的には、行動情報生成部2023は、例えば、状態Sに含まれる位置フィードフォワード処理部116の各係数a
i、b
jに対して行動Aに含まれる、位置フィードフォワード処理部116の各係数a
i、b
jをインクレメンタル(例えば0.01程度)に加算又は減算させる。
【0064】
そして、行動情報生成部2023は、位置フィードフォワード処理部116の各係数a
i、b
jの増加又は減少を適用して、状態S´に遷移して、プラスの報酬(正の値の報酬)が返った場合、次の行動A´としては、位置フィードフォワード処理部116の各係数a
i、b
jに対して、前回のアクションと同様にインクレメンタルに加算又は減算させる等、位置偏差の値がより小さくなるような行動A´を選択する方策を取るようにしてもよい。
【0065】
また、逆に、マイナスの報酬(負の値の報酬)が返った場合、行動情報生成部2023は、次の行動A´としては、例えば、位置フィードフォワード処理部116の各係数a
i、b
jに対して、前回のアクションとは逆にインクレメンタルに減算又は加算させる等、位置偏差が前回の値よりも小さくなるような行動A´を選択する方策を取るようにしてもよい。
【0066】
また、行動情報生成部2023は、現在の推定される行動Aの価値の中で、最も価値Q(S,A)の高い行動A´を選択するグリーディ法、又はある小さな確率εでランダムに行動A´選択し、それ以外では最も価値Q(S,A)の高い行動A´を選択するεグリーディ法といった公知の方法により、行動A´を選択する方策を取るようにしてもよい。
【0067】
行動情報出力部203は、学習部202から出力される行動情報Aをサーボ制御装置100に対して送信する部分である。サーボ制御装置100は上述したように、この行動情報に基づいて、現在の状態S、すなわち現在設定されている位置フィードフォワード処理部116の各係数a
i、b
jを微修正することで、次の状態S´(すなわち修正された、位置フィードフォワード処理部116の各係数a
i、b
j)に遷移する。
【0068】
また、行動情報生成部2023は、位置フィードフォワード処理部116の各係数a
i、b
jを、異常を検出したときの係数a
i、b
jとは異なる係数a
i、b
jに調整して係数を設定したこと通知する係数設定通知信号を異常検出部109に対して送る。
【0069】
価値関数記憶部204は、価値関数Qを記憶する記憶装置である。価値関数Qは、例えば状態S、行動A毎にテーブル(以下、行動価値テーブルと呼ぶ)として格納してもよい。価値関数記憶部204に記憶された価値関数Qは、価値関数更新部2022により更新される。また、価値関数記憶部204に記憶された価値関数Qは、他の機械学習装置200との間で共有されるようにしてもよい。価値関数Qを複数の機械学習装置200で共有するようにすれば、各機械学習装置200にて分散して強化学習を行うことが可能となるので、強化学習の効率を向上させることが可能となる。
【0070】
最適化行動情報出力部205は、価値関数更新部2022がQ学習を行うことにより更新した価値関数Qに基づいて、価値Q(S,A)が最大となる動作を位置フィードフォワード処理部116に行わせるための行動情報A(以下、「最適化行動情報」と呼ぶ)を生成する。
より具体的には、最適化行動情報出力部205は、価値関数記憶部204が記憶している価値関数Qを取得する。この価値関数Qは、上述したように価値関数更新部2022がQ学習を行うことにより更新したものである。そして、最適化行動情報出力部205は、価値関数Qに基づいて、行動情報を生成し、生成した行動情報をサーボ制御装置100(位置フィードフォワード処理部116)に対して出力する。この最適化行動情報には、行動情報出力部203がQ学習の過程において出力する行動情報と同様に、位置フィードフォワード処理部116の各係数a
i、b
jを修正する情報が含まれる。
【0071】
サーボ制御装置100では、この行動情報に基づいて位置フィードフォワード処理部116の各係数a
i、b
jが修正される。
機械学習装置200は、以上の動作で、位置フィードフォワード処理部116の各係数a
i、b
jの学習及び最適化を行い、位置偏差の値を低減するように動作することができる。
以上のように、本発明に係る機械学習装置200を利用することで、サーボ制御装置100の位置フィードフォワード処理部116の補正パラメータ(係数a
i、b
j)調整を簡易化することができる。補正パラメータ(係数a
i、b
j)調整により位置フィードフォワード処理部116の位置フィードフォワード項の調整がなされる。
【0072】
以上、サーボ制御装置100、機械学習装置200に含まれる機能ブロックについて説明した。
これらの機能ブロックを実現するために、サーボ制御装置100、及び機械学習装置200のそれぞれは、CPU(Central Processing Unit)等の演算処理装置を備える。また、サーボ制御装置100、及び機械学習装置200のそれぞれは、アプリケーションソフトウェアやOS(Operating System)等の各種の制御用プログラムを格納したHDD(Hard Disk Drive)等の補助記憶装置や、演算処理装置がプログラムを実行する上で一時的に必要とされるデータを格納するためのRAM(Random Access Memory)といった主記憶装置も備える。
【0073】
そして、サーボ制御装置100、及び機械学習装置200のそれぞれにおいて、演算処理装置が補助記憶装置からアプリケーションソフトウェアやOSを読み込み、読み込んだアプリケーションソフトウェアやOSを主記憶装置に展開させながら、これらのアプリケーションソフトウェアやOSに基づいた演算処理を行なう。また、この演算結果に基づいて、各装置が備える各種のハードウェアを制御する。これにより、本実施形態の機能ブロックは実現される。つまり、本実施形態は、ハードウェアとソフトウェアが協働することにより実現することができる。
【0074】
機械学習装置200については機械学習に伴う演算量が多いため、例えば、パーソナルコンピュータにGPU(Graphics Processing Units)を搭載し、GPGPU(General-Purpose computing on Graphics Processing Units)と呼ばれる技術により、GPUを機械学習に伴う演算処理に利用するようにすると高速処理できるようになるのでよい。更には、より高速な処理を行うために、このようなGPUを搭載したコンピュータを複数台用いてコンピュータ・クラスターを構築し、このコンピュータ・クラスターに含まれる複数のコンピュータにて並列処理を行うようにしてもよい。
【0075】
以上のように、本実施形態では、サーボ制御装置100は、異常検出部109、及びスイッチ117を備え、異常検出部109からの切換通知信号により、スイッチ117がオフとなり、機械学習装置200は、異常検出部109からの補正停止通知信号により、異常が検知されたことを認識する。機械学習装置200は、異常が検知されたことを認識すると、状態Sにおける位置フィードフォワード処理部116の係数a
i、b
jをサーボモータ106が異常な動作をする補正パラメータとして学習に反映させる。そして、当該状態Sの学習のための加工プログラムの実行については、前述したように、補正を停止したまま、動作プログラムが終了するまで動作させて、当該状態Sの学習動作を終了させる。その後、次の学習のための係数を新たに探索して、次の行動情報を選択して、位置フィードフォワード処理部116に設定するとともに、位置フィードフォワード処理部116の係数を新たに設定したことを示す係数設定通知信号を異常検出部109へ送る。そうすることで、次の行動に基づく学習動作を開始することができる。以上のように、本実施形態の機械学習装置は、補正生成部110を機械学習する場合に、機械学習中に、仮に不適切な補正量が選択されることがあっても、モータや機械先端に振動が発生して有効な学習ができなくなったり、また、アラームで工作機械等が停止、終了して、学習が中断することがないように、安全に機械学習を継続することが可能となる。
【0076】
次に、
図6を参照して、本実施形態の機械学習装置200の動作について説明する。
図6に示すように、ステップS21で、機械学習装置200は学習動作を開始する。ここで、学習動作とは、状態Sにおいて、行動A(位置フィードフォワード処理部116の係数a
i、b
j)を選択して、補正生成部110に設定し、学習時の加工プログラムを実行させることにより前述した加工形状の位置A1と位置A3、及び/又は位置B1と位置B3における位置偏差の集合(状態S´における状態変数)を取得して、当該位置偏差の評価値を算出し、状態Sにおける位置偏差の評価値と比較することにより、報酬を算出し、価値関数記憶部204が記憶する価値関数Qを更新する一連の処理を意味する。以下のステップにおいて、一連の処理を実行する。
そして、学習動作時に、異常検出部109が、異常を検知した場合、機械学習装置200は、状態Sにおける行動A(位置フィードフォワード処理部116の係数a
i、b
j)をサーボモータ106が異常な動作をする行動(補正パラメータ)として報酬に反映させることができる。その際、当該状態Sの学習時の加工プログラムは、前述したように、補正を停止したまま、加工プログラムが終了するまで動作させる。それにより、機械学習装置は、次の行動を探索して、新たな行動を生成することで、学習が中断することがないように、安全に機械学習を継続することが可能となる。
【0077】
ステップS22において、機械学習装置200は、異常動作が検出されたか否かを判定する。異常動作が検出されたと判定した場合(Yes)、ステップS25に移る。異常動作が検出されない場合(No)、ステップS23に移る。
【0078】
ステップS23において、機械学習装置200は、当該学習動作が終了したか否かを判定する。当該学習動作が終了した場合(Yes)、ステップS24に移る。当該学習動作が終了していない場合(No)、ステップS22に移る。
【0079】
ステップS24において、機械学習装置200は、次の行動を探索して、新たなパラメータを設定する。具体的には、機械学習装置200は補正生成部110の補正量(位置フィードフォワード項)を調整するための補正パラメータ設定(位置フィードフォワード処理部116の係数a
i、b
jの設定)をする。その後ステップS28に移る。
【0080】
ステップS25において、機械学習装置200は、該学習動作が終了したか否かを判定する。当該学習動作が終了した場合(Yes)、ステップS26に移る。当該学習動作が終了していない場合(No)、ステップS25に戻る。
【0081】
ステップS26において、機械学習装置200は、異常が生じたときの補正生成部110の補正量を学習し、次の行動を探索して、新たな補正生成部110の補正量が、異常を検出したときの補正量とは異なる補正量に調整して設定する。
【0082】
ステップS27において、機械学習装置200は、新たな補正量に設定されたことを異常検出部109に対して通知する。
【0083】
ステップS28において、機械学習装置200は、機械学習を終了するかどうかを判断し、機械学習を継続する場合(No)、ステップS21に戻る。機械学習を終了する場合(Yes)には機械学習処理を終了する。
【0084】
(変形例)
第1実施形態では、補正生成部110として、位置指令に基づいて速度指令に対する補正量を生成する位置フィードフォワード項生成部を備えるものとしたが、これに限られない。
例えば、補正生成部110として、位置フィードフォワード項生成部に換えて、後述する速度フィードフォワード項生成部を備えるものとしてもよい。その場合、速度フィードフォワード項生成部から速度フィードフォワード項がスイッチを介して、速度フィードバックループを構成する速度制御部104の出力に加えられる。
また、補正生成部110として、後述する象限突起の補正量を生成するものとしてもよい。その場合、象限突起の補正量がスイッチを介して速度フィードバックループを構成する加減算器103に加えられる。
【0085】
以上のように、本実施形態によると、少なくとも一つのフィードバックループと、フィードバックループに加える補正を生成する補正生成部とを備えたサーボ制御装置において、工作機械、ロボット又は産業機械等を動作させながら、前記補正生成部を機械学習する場合に、機械学習中に、仮に不適切な補正量が算出されることがあっても、モータや機械先端に振動が発生して有効な学習ができなくなったり、また、アラームで工作機械等が停止、終了して、学習が中断することがないように、安全に機械学習を継続することができる。
【0086】
(第2実施形態)
第1実施形態は、補正生成部110として、位置指令に基づいて速度指令に対する補正量を生成する位置フィードフォワード項生成部を備えるものについて説明した。第2実施形態では、補正生成部110として、位置指令に基づいて速度指令に対する補正量を生成する位置フィードフォワード項生成部に加えて、位置指令に基づいてトルク指令に対する補正量を生成する速度フィードフォワード項生成部を備えるものとする。
【0087】
図7は本発明の第2実施形態の制御装置の一構成例を示すブロック図である。第2実施形態の制御装置10Aが、
図1に示した第1実施形態の制御装置10と異なる構成は、補正生成部110(図示せず)が、微分器115と位置フィードフォワード処理部116とを備える位置フィードフォワード項生成部に加えて、2回微分器112、速度フィードフォワード処理部113を備える速度フィードフォワード項生成部(図示せず)を含むこと、スイッチ114を備えること、
及び加算器111を備えることである。以下、第2実施形態の制御装置10Aと
図1に示した第1実施形態の制御装置10との同一構成部材については、同一符号を付して構成及び動作の説明を省略する。
【0088】
第2実施形態では、機械学習装置200は、位置フィードフォワード処理部116の伝達関数の係数と、速度フィードフォワード処理部113の伝達関数の係数とを機械学習(以下、学習という)する。
第2実施形態では、機械学習装置200は、速度フィードフォワード処理部113の伝達関数の係数の学習と、位置フィードフォワード処理部116の伝達関数の係数の学習とは別に行い、位置フィードフォワード処理部116より内側(インナーループ)にある速度フィードフォワード処理部113の伝達関数の係数の学習を位置フィードフォワード処理部116の伝達関数の係数の学習よりも先に行う。具体的には、位置フィードフォワード処理部116の伝達関数の係数を固定し、速度フィードフォワード処理部113の伝達関数の係数の最適な値を学習する。その後に、機械学習装置200は、速度フィードフォワード処理部113の伝達関数の係数を学習で得られた最適な値に固定して、位置フィードフォワード処理部116の伝達関数の係数を学習する。
そうすることで、学習により最適化された速度フィードフォワード項の条件下で、位置フィードフォワード処理部116の伝達関数の係数の最適化に係る学習を行うことができ、位置偏差の変動を抑制することができる。
このため、位置フィードフォワード処理部116より内側(インナーループ)にある速度フィードフォワード処理部113の伝達関数の係数の学習が位置フィードフォワード処理部116の伝達関数の係数の学習より先にした方が、位置偏差の変動を抑制し、高精度化を実現できる。
【0089】
<速度フィードフォワード項生成部について>
位置指令値は2回微分器112に出力される。
2回微分器112は、位置指令を2回微分して定数αを掛け、速度フィードフォワード処理部113は2回微分器112の出力に、数式3(以下に数3として示す)で示された伝達関数F(s)で示される速度フィードフォワード処理を行い、その処理結果を速度フィードフォワード項(補正量となる)としてスイッチ114を介して加算器111に出力する。異常検出部109によってスイッチ114がオフしている場合には、速度フィードフォワード項は加算器111に出力されない。数式3の係数c
i、d
j(i,j≧0)は速度フィードフォワード処理部113の伝達関数F(s)の各係数である。
【数3】
【0090】
加算器111は、速度制御部104から出力されるトルク指令と、速度フィードフォワード処理部113からスイッチ114を介して入力される速度フィードフォワード項とを加算して、フィードフォワード制御されたトルク指令としてサーボモータ106に出力してサーボモータ106を駆動する。
【0091】
機械学習装置200が、速度フィードフォワード処理部113の伝達関数の係数の学習を位置フィードフォワード処理部116の伝達関数の係数の学習よりも先に行う場合に、異常検出部109は、減算器101から出力される位置偏差に基づいて、位置偏差が閾値以上となった場合に、スイッチ114をオフ(非導通状態)となるように切換信号となる異常検出信号を送る。機械学習装置200から異常検出部109に対して、第1実施形態と同様に速度フィードフォワード処理部113の伝達関数の各係数c
i、d
j(i,j≧0)の値が、異常を検出したときの係数とは異なる新たな係数が探索されて調整されたことを通知する係数設定通知信号を送る。異常検出部109はこの係数設定通知信号を受けると、機械学習装置200で異常が生じたときの係数とは異なる新たな係数が探索されて調整されたことを認識し、係数設定通知信号を受けたとき又は新たな学習動作が開始されるときに、スイッチ114をオン(導通状態)となるように切換信号を送る。
【0092】
異常検出部109が異常を検出して、スイッチ114をオフした場合、速度フィードフォワード項は、加算器111に出力されないので、サーボ制御装置100は、動作が安定する。
【0093】
<機械学習装置200>
機械学習装置200は、第1実施形態と同様に、予め設定された加工プログラム(学習時の加工プログラム」となる)を実行することで、速度フィードフォワード処理部113の伝達関数の係数、及び位置フィードフォワード処理部116の伝達関数の係数を機械学習(学習)する。以下の説明では速度フィードフォワード処理部113の伝達関数の係数の学習について説明するが、速度フィードフォワード処理部113の伝達関数の係数の学習後に、第1実施形態で説明した、位置フィードフォワード処理部116の伝達関数の係数の学習が行われる。
【0094】
機械学習装置200は、サーボ制御装置100における、速度フィードフォワード処理部113の伝達関数の各係数c
i、d
j(i,j≧0)の値、学習時の加工プログラムを実行することで取得されるサーボ制御装置100の位置偏差情報、及び位置指令を含む、指令及びフィードバック等のサーボ状態を状態Sとして、当該状態Sに係る、速度フィードフォワード処理部113の伝達関数の各係数c
i、d
jの値の調整を行動Aとして選択する価値Qを学習する。
【0095】
機械学習装置200は、速度フィードフォワード処理部113の伝達関数の各係数c
i、d
jに基づいて、学習時の加工プログラムを実行することで前述した加工形状の位置A1と位置A3、及び位置B1と位置B3における、サーボ制御装置100の位置指令及び位置偏差情報を含む、指令及びフィードバック等のサーボ状態を含む状態情報Sを観測して、行動Aを決定する。機械学習装置200は、行動Aをするたびに報酬が返ってくる。機械学習装置200は、例えば、将来にわたっての報酬の合計が最大になるように最適な行動Aを試行錯誤的に探索する。そうすることで、機械学習装置200は、速度フィードフォワード処理部113の伝達関数の各係数c
i、d
jに基づいて、学習時の加工プログラムを実行することで取得されるサーボ制御装置100の位置指令及び位置偏差情報を含む指令、フィードバック等のサーボ状態を含む状態Sに対して、最適な行動A(すなわち、速度フィードフォワード処理部113の最適な係数c
i、d
j)を選択することが可能となる。位置A1と位置A3、及び位置B1と位置B3とでは、X軸方向及びY軸方向のサーボモータの回転方向は変わらず、機械学習装置200は線形動作時の速度フィードフォワード処理部113の伝達関数の各係数c
i、d
jの学習を行うことができる。
【0096】
すなわち、機械学習装置200により学習された価値関数Qに基づいて、或る状態Sに係る速度フィードフォワード処理部113の伝達関数の各係数c
i、d
jに対して適用される行動Aのうち、Qの値が最大となるような行動Aを選択することで、学習時の加工プログラムを実行することで取得される位置偏差が最小になるような行動A(すなわち、速度フィードフォワード処理部113の係数c
i、d
j)を選択することが可能となる。
【0097】
なお、機械学習装置200の備える状態情報取得部201、(報酬出力部2021、価値関数更新部2022、行動情報生成部2023を含む)学習部202、行動情報出力部203、価値関数記憶部204、及び最適化行動情報出力部205における速度フィードフォワード処理部113の伝達関数の各係数c
i、d
jに係る処理については、第1実施形態における位置フィードフォワード処理部116を速度フィードフォワード処理部113に読み換えるとともに、位置フィードフォワード処理部116の各係数a
i、b
jを速度フィードフォワード処理部113の伝達関数の各係数c
i、d
jに読み換えることで説明できるため、詳細な説明は省略する。
【0098】
また、最初にQ学習を開始する時点での速度フィードフォワード処理部113の係数c
i、d
jは、予めユーザが生成するようにする。本実施形態では、ユーザが作成した速度フィードフォワード処理部113の係数c
i、d
jの初期設定値を、強化学習により最適なものに調整する。2回微分器112の係数αは固定値とし、例えばα=1とする。また、速度フィードフォワード処理部113の係数c
i、d
jは例えば、初期設定値として、数式2のc
0=1、c
1=0、c
2=0、c
x=0、d
0=1、d
1=0、d
2=0、d
x=0とする。また、係数c
i、d
jの次元m、nを予め設定する。すなわち、c
iについては0≦i≦m d
jについては0≦j≦nとする。
また、係数c
i、d
jの初期設定値は、位置フィードフォワード処理部116の各係数a
i、b
jの初期設定値と同じ値を適用してもよい。
同様に、サーボ制御装置100における速度フィードフォワード処理部113の各係数c
i、d
jに係る処理についても、位置フィードフォワード処理部116の各係数a
i、b
jを速度フィードフォワード処理部113の伝達関数の各係数c
i、d
jに読み換えることで説明できる。
【0099】
以上のように、第2実施形態では、サーボ制御装置100は、2回微分器112、速度フィードフォワード処理部113、及びスイッチ114を備え、異常検出部109からの切換通知信号により、スイッチ114がオフとなり、機械学習装置200は、異常検出部109からの補正停止通知信号により、異常が検知されたことを認識する。機械学習装置200は、異常が検知されたことを認識すると、状態Sにおける速度フィードフォワード処理部113の係数c
i、d
jをサーボモータ106が異常な動作をする補正パラメータとして学習に反映させることができる。その際、当該状態Sの学習のための加工プログラムの実行については、前述したように、補正を停止したまま、加工プログラムが終了するまで動作させることで、当該状態Sの学習を終了させる。補正パラメータ(係数c
i、d
j)調整により速度フィードフォワード処理部113の速度フィードフォワード項の調整がなされる。その後、次の学習のための係数を新たに探索して、次の行動情報を選択して、速度フィードフォワード処理部113に設定するとともに、速度フィードフォワード処理部113の係数を新たに設定したことを示す係数設定通知信号を異常検出部109へ送る。そうすることで、次の行動に基づく学習動作を開始することができる。以上のように、本実施形態の機械学習装置は、補正生成部110を機械学習する場合に、機械学習中に、仮に不適切な補正量が選択されることがあっても、モータや機械先端に振動が発生して有効な学習ができなくなったり、また、アラームで工作機械等が停止、終了して、学習が中断することがないように、安全に機械学習を継続することが可能となる。
【0100】
次に、第2実施形態の機械学習装置200の動作について説明する。
第2実施形態の機械学習装置200の速度フィードフォワード処理部113の伝達関数の各係数c
i、d
jに関連する動作についても、第1実施形態における
図6に示した機械学習装置200の処理フローにおいて、位置フィードフォワード処理部116を速度フィードフォワード処理部113に読み換え、位置フィードフォワード処理部116の各係数a
i、b
jを速度フィードフォワード処理部113の伝達関数の各係数c
i、d
jに読み換えることで説明できるため、詳細な説明は省略する。
【0101】
(変形例)
第2実施形態において、機械学習装置200は、速度フィードフォワード処理部113の伝達関数の係数の学習を先に行い、速度フィードフォワード処理部113の伝達関数の係数を最適化した後に、位置フィードフォワード処理部116の伝達関数の係数の学習を行うようにしたが、第2の実施形態は、これに限定されない。
例えば、機械学習装置200は、位置フィードフォワード処理部116の伝達関数の係数、及び速度フィードフォワード処理部113の伝達関数の係数を同時に学習するようにしてもよい。この場合、異常検出部109は異常を検出した場合、スイッチ114及びスイッチ117を同時にオンして、機械学習装置200が同時に学習できるようにする。このように、機械学習装置200が同時に学習した場合、二つの学習が相互に干渉して情報処理量が増大する可能性がある。
【0102】
(第3実施形態)
第1実施形態の制御装置10では、
図1に示すように、異常検出部109は、異常を検出したときに、微分器115と位置フィードフォワード処理部116を含む補正生成部110を、スイッチ117をオフすることで位置フィードバックループから切り離した。
同様に、第2実施形態の制御装置10Aでは、
図7に示すように、異常検出部109は、異常を検出したときに、2回微分器112と速度フィードフォワード処理部113を、スイッチ114をオフすることで速度フィードバックループから切り離し、微分器115と位置フィードフォワード処理部116を、スイッチ117をオフすることで位置フィードバックループから切り離していた。
【0103】
これに対して、第3実施形態の制御装置では、第1実施形態及び第2実施形態において、異常検出部109が異常を検出したときに、機械学習装置200の学習部分である、補正生成部内の速度フィードフォワード処理部113及び/又は位置フィードフォワード処理部116のみを切り離すように構成した。
図8は本発明の第3実施形態の制御装置の一構成例を示すブロック図である。
図8において、
図7に示した制御装置の各構成部材と同一構成部材については同一符号を付して説明を省略する。
【0104】
本実施形態では、
図8に示すように、サーボ制御装置100Bは、スイッチ114の代わりに、2回微分器112と速度フィードフォワード処理部113との間にスイッチ119を備えている。またサーボ制御装置100Bは、スイッチ117の代わりに、微分器115と位置フィードフォワード処理部116との間にスイッチ120を備えている。
スイッチ119は、2回微分器112が速度フィードフォワード処理部113か、加算器111かに接続されるように切り換える。スイッチ120は、微分器115が位置フィードフォワード処理部116か、加減算器103かに接続されるように切り換える。
【0105】
異常検出部109は、異常を検出したときに、スイッチ119及び/又はスイッチ120を切り替えて、2回微分器112が加算器111に接続され、微分器115が加減算器103に接続されるようにする。このように構成することで、本実施形態では、機械学習装置200で学習される部分となる、速度フィードフォワード処理部113及び/又は位置フィードフォワード処理部116のみが切り離される。
このため、異常検出部109が異常を検出したときに、位置フィードバックループには、微分器115の出力が加えられて補正ができ、速度フィードバックには2回微分器112の出力が加えられて補正ができる。
【0106】
本実施形態は、第1実施形態と第2実施形態のいずれにも適用でき、第1の実施形態に適用する場合には、微分器115と位置フィードフォワード処理部116との間にスイッチ120を備えるようにする。第1実施形態の変形例である、速度フィードフォワード項生成部を設ける場合に適用する場合は、2回微分器112と速度フィードフォワード処理部113との間にスイッチ119を備えるようにする。
本実施形態を、第2実施形態に適用する場合は、スイッチ119とスイッチ120を備えるようにする。
(変形例)
本実施形態において、第2実施形態と同様に、機械学習装置200が、速度フィードフォワード処理部113の伝達関数の係数の学習と、位置フィードフォワード処理部116の伝達関数の係数の学習とは別に行う場合は、速度フィードフォワード処理部113の伝達関数の係数の学習を位置フィードフォワード処理部116の伝達関数の係数の学習よりも先に行う。しかし、第2実施形態の変形例と同様に、機械学習装置200は、位置フィードフォワード処理部116の伝達関数の係数、及び速度フィードフォワード処理部113の伝達関数の係数を同時に学習するようにしてもよい。
【0107】
(第4実施形態)
以上説明した実施形態においては、機械学習装置200は、X軸方向及びY軸方向のサーボモータの回転方向が変わらない線形動作時に関する機械学習装置200の学習動作時に、異常検出部109が異常を検出した場合の処理について説明した。
しかし、本発明は、線形動作時の学習動作に限定されず、非線形動作の学習動作にも適用することができる。例えば、既に説明したように、工作機械において、非線形動作として、モータとボールねじにより駆動される送り駆動系で円運動を行うと、軸の運動方向が反転する象限切替え時に突起状の軌跡誤差(以下、「象限突起」という)が生じることが知られている。
【0108】
第4実施形態では、象限突起の補正量を機械学習装置200で学習する例について説明する。
図9は本発明の第4実施形態の制御装置の一構成例を示すブロック図である。
図9の制御装置10Cにおいて、
図7に示した制御装置の各構成部材と同一構成部材については同一符号を付して説明を省略する。
図9に示すように、サーボ制御装置100Cは、反転検出部121、補正生成部122、スイッチ123、異常検出部124、及び報知部125を備えている。サーボ制御装置100Cは、
図7に示す、異常検出部109、2回微分器112、速度フィードフォワード処理部113、スイッチ114、微分器115、位置フィードフォワード処理部116、スイッチ117、及び報知部118を備えていない。
【0109】
数値制御装置400は、例えば
図4に示す、八角形の角が一つ置きに円弧に置き換えられた形の加工形状の、学習時の加工プログラムに基づいて位置指令を作成する。
位置指令は、減算器101、反転検出部121、及び機械学習装置200に入力される。減算器101は、位置指令と位置フィードバックされた検出位置との差を求め、その差を位置偏差として位置制御部102及び機械学習装置200に出力する。
【0110】
反転検出部121は、位置指令から反転部を検出する。例えば、
図4に示す円弧の位置B2で、テーブルをY軸方向に移動するモータは、回転方向が反転するが、反転検出部121は、位置指令に基づいて、位置B2での反転を検出する。補正生成部122は反転の検出信号に基づいて補正量を、スイッチ123を介して加減算器103に出力する。
【0111】
異常検出部124は、速度制御部104から出力されるトルク指令に基づいて、トルク指令が閾値以上となった場合に、スイッチ123がオフ(非導通状態)となるように切換信号を送り、位置フィードバックループに対する補正を停止する。その後、異常検出部124は機械学習装置200へ補正停止信号を送るとともに、学習のための加工プログラムの実行については、前述したように、補正を停止したまま、加工プログラムが終了するまで動作させる。その後、機械学習装置200からは、補正生成部122の補正量が、異常を検出したときの補正量とは異なる補正量が探索されて調整されたことを通知する補正量調整通知信号を送る。異常検出部124はこの補正量調整通知信号を受けると、機械学習装置200で異常が生じたときの補正量が新たな補正量に調整されたことを認識し、新たな学習動作が開始されるときに、スイッチ123がオン(導通状態)となるように切換信号を送る。
【0112】
報知部125は異常検出部124にて異常が検出されたときに、管理者に、液晶モニタ、LED、又はスピーカにより、表示、点灯又は音声で報知する。報知部125はネットワークで外部に異常を知らせる情報を送信する通信部であってもよい。
【0113】
機械学習装置200は、象限突起の補正のために、
図4に示す加工形状の位置B2と位置B4における、減算器101の出力となる位置偏差を用いて学習し、補正生成部122の補正量を調整する。
異常検出部124が異常を検出して、スイッチ123をオフした場合、補正量は、加減算器103に出力されないので、サーボ制御装置100Cは、位置フィードバックループと速度フィードバックループのみで動作することになり、動作が安定する。
【0114】
象限突起の補正を行う場合、
図3に示した八角形の加工形状の、学習時の加工プログラムを用いてもよい。その場合、例えば、
図3に示す位置A2で、テーブルをY軸方向に移動するモータの回転方向が反転し、位置A4で、テーブルをX軸方向に移動するモータの回転方向が反転する。機械学習装置200は、象限突起の補正のために、例えば、
図3に示す八角形の加工形状の位置A2と位置A4における、減算器101の出力となる位置偏差を用いて学習し、補正生成部122の補正量を調整する。
【0115】
(第5実施形態)
前述した第1実施形態や第2実施形態の制御装置では、異常検出部109がスイッチ114及び/又はスイッチ117をオンからオフに切り替えると、切り替え時に位置フィードバックループ及び速度フィードバックループにそれぞれ加えられる位置フィードフォワード項及び/又は速度フィードフォワード項(補正量となる)が不連続に変わる。
また、前述した第3実施形態の制御装置においても、異常検出部109がスイッチ119及び/又はスイッチ120を切り替えると、切り替え時に位置フィードバックループ及び速度フィードバックループにそれぞれ加えられる位置フィードフォワード項及び/又は速度フィードフォワード項(補正量となる)が不連続に変わる。
また、前述した第4実施形態の制御装置においては、異常検出部124がスイッチ123を切り替えると、切り替え時に補正量が不連続に変わる。
【0116】
第1実施形態から第4実施形態において生ずる不連続な補正量は、不連続な速度指令及び/又は不連続なトルク指令を生じさせる。
本実施形態では、補正量の不連続を防止するためローパスフィルタを設ける。以下、第1実施形態から第4実施形態において、本実施形態の構成を適用する場合について説明する。
【0117】
本実施形態の構成を第1実施形態や第2実施形態の制御装置に適用する場合は、補正量の不連続を防止するために、速度フィードフォワード処理部113及び/又は位置フィードフォワード処理部116の後段のそれぞれにローパスフィルタを設ける。補正量をローパスフィルタに通すことで、不連続な値を緩やかに追従させることができる。
図10は本発明の第5実施形態となるサーボ制御装置の速度フィードフォワード処理部113の後段の構成の一部を示すブロック図である。
図11は本発明の第5実施形態となるサーボ制御装置の位置フィードフォワード処理部116の後段の構成の一部を示すブロック図である。
【0118】
図10に示すように、速度フィードフォワード処理部113に、スイッチ114の代わりにスイッチ126を接続する。スイッチ126は、異常検出部109からの異常検出信号を受けると、速度フィードフォワード処理部113を加算器111へ直接接続した状態から、速度フィードフォワード処理部113をローパスフィルタ127を介して加算器111へ接続する状態に切り替え、その状態を一定時間保持した後に、未接続に切り替える。一定時間は補正量が十分に収束する時間又はローパスフィルタ127の時定数によって決めることができる。
【0119】
また、
図11に示すように、位置フィードフォワード処理部116に、スイッチ117の代わりにスイッチ128を接続する。スイッチ128は、異常検出部109からの異常検出信号を受けると、位置フィードフォワード処理部116を加減算器103へ直接接続した状態から、位置フィードフォワード処理部116をローパスフィルタ129を介して加減算器103への接続する状態に切り替え、その状態を一定時間保持した後に、未接続に切り替える。一定時間は補正量が十分に収束する時間又はローパスフィルタ129の時定数によって決めることができる。
このように、速度フィードフォワード処理部113と加算器111との間の接続を不連続に切り替えるのでなく、一旦ローパスフィルタ127を介して接続状態に切り替えて緩やかに収束させる。また、位置フィードフォワード処理部116と加減算器103との間の接続を不連続に切り替えるのでなく、一旦ローパスフィルタ129を介して接続状態に切り替えて緩やかに収束させる。
図12は、フィルタの有無による位置フィードフォワード(位置FF)処理又は速度フィードフォワード(速度FF)処理による補正量の変化を示す特性図である。
【0120】
本実施形態の構成を第3実施形態の制御装置に適用する場合は、補正量の不連続を防止するために、2回微分器112及び微分器115の後段のそれぞれにローパスフィルタを設ける。補正量をローパスフィルタに通すことで、不連続な値を緩やかに追従させることができる。
図13は本発明の第5実施形態となる他の構成のサーボ制御装置の2回微分器112の後段の構成の一部を示すブロック図である。
図14は本発明の第5実施形態となる他の構成のサーボ制御装置の微分器115の後段の構成の一部を示すブロック図である。
【0121】
図13に示すように、2回微分器112に、スイッチ119の代わりにスイッチ130を接続する。スイッチ130は、異常検出部109からの異常検出信号を受けると、2回微分器112を速度フィードフォワード処理部113を介して加算器111へ接続した状態から、2回微分器112をローパスフィルタ131を介して加算器111へ接続する状態に切り替え、その状態を一定時間保持した後に、2回微分器112を加算器111へ直接接続する。一定時間は補正量が十分に収束する時間又はローパスフィルタ131の時定数によって決めることができる。
【0122】
また、
図14に示すように、微分器115に、スイッチ120の代わりにスイッチ132を接続する。スイッチ132は、異常検出部109からの異常検出信号を受けると、微分器115を位置フィードフォワード処理部116を介して加減算器103へ接続した状態から、微分器115をローパスフィルタ133を介して加減算器103へ接続する状態に切り替え、その状態を一定時間保持した後に、微分器115を加減算器103へ直接接続する。一定時間は補正量が十分に収束する時間又はローパスフィルタ133の時定数によって決めることができる。
このように、2回微分器112と加算器111との間の接続を不連続に切り替えるのでなく、一旦ローパスフィルタ131を介して接続状態に切り替えて緩やかに収束させる。また、微分器115と加減算器103との間の接続を不連続に切り替えるのでなく、一旦ローパスフィルタ133を介して接続状態に切り替えて緩やかに収束させる。
図15は、フィルタの有無による位置フィードフォワード(位置FF)処理又は速度フィードフォワード(速度FF)処理による補正量の変化を示す特性図である。
【0123】
また、本実施形態の構成を第4実施形態の制御装置に適用する場合は、補正量の不連続を防止するために、
図9に示す補正生成部122の後段にローパスフィルタを設ける。補正量をローパスフィルタに通すことで、不連続な値を緩やかに追従させることができる。なお、ローパスフィルタ、及びローパスフィルタに切り換えるスイッチの構成は、
図10における、速度フィードフォワード処理部113を補正生成部122に置き換えた構成と同じなので、説明を省略する。
【0124】
(第6実施形態)
第5実施形態の制御装置では、補正量の不連続を防止するためにローパスフィルタを設けたが、ローパスフィルタの代わりに速度制御部104の積分器の書き換えを行い、速度制御部104から出力されるトルク指令値が連続になるようにしてもよい。本実施形態において、積分器の書き換えとともに第5実施形態で説明したローパスフィルタを設けてもよい。以下の説明では、
図4に示した第2実施形態の制御装置を例にとって説明するが、第1、第3及び第4実施形態のサーボ制御装置にも適用できる。
【0125】
図16は本発明の第6実施形態となる制御装置の速度制御部104の構成を示すブロック図である。
図16に示すように、積分器1041に異常検出部109から異常検出信号が送られる。
図16に示すように、速度制御部104は、位置フィードフォワード項が加えられた速度偏差が入力される積分器1041、積分器1041から出力される積分値に係数Kiを掛ける乗算器1042、位置フィードフォワード項が加えられた速度偏差が入力され、係数Kvを掛ける乗算器1043、及び乗算器1042の出力と乗算器1043の出力とを加算して出力する加算器1044を備えている。
【0126】
異常検出部109は異常検出信号をスイッチ117に送り、スイッチ117をオンからオフに切り替えるとともに、積分器1041に異常検出信号を送る。積分器1041は異常検出信号を受けると、スイッチ117のオフによる位置フィードフォワード項の補正の停止による補正量の不連続を防止するために、以下の書き換えを行い、トルク指令値が連続になるようにする。
位置フィードフォワード(位置FF)の停止直前のトルク指令Tcmd(i)は、Verrを速度偏差、kpを比例ゲイン、kiを積分ゲインとすると、以下の数式4であらわされる。
【数4】
【0127】
また、位置フィードフォワードの停止直後のトルク指令Tcmd(i+1)は、以下の数式5であらわされる。
【数5】
位置フィードフォワードの停止直後にVerr(i+1)が大きく変動するため、Tcmd(i)とTcmd(i+1)との間で不連続が生じショックが発生する場合がある。
そこで、数式6に示すように、位置フィードフォワードの停止直後のトルク指令の積分器による積分項を以下のように置き換える。
【数6】
すると、積分器を書き換えたトルク指令Tcmd’(i+1)は、数式7にようになる。
【数7】
すなわち、積分器1041の書き換えにより、Tcmd’(i+1)=Tcmd(i)となり、連続的に変化するために、位置フィードフォワード停止前後のショックがなくなる。
書き換え後の積分器1041は、(Tcmd(i)-Verr(i+1)×kp)/kiにVerr(n)を足し合わせて計算する。
図17は、積分器の書き換えの有無によるトルク指令の変化を示す特性図である。
【0128】
以上本発明に係る各実施形態について説明したが、上記のサーボ制御装置のサーボ制御部及び機械学習装置に含まれる各構成部は、ハードウェア、ソフトウェア又はこれらの組み合わせにより実現することができる。また、上記のサーボ制御装置に含まれる各構成部のそれぞれの協働により行なわれるサーボ制御方法も、ハードウェア、ソフトウェア又はこれらの組み合わせにより実現することができる。ここで、ソフトウェアによって実現されるとは、コンピュータがプログラムを読み込んで実行することにより実現されることを意味する。
【0129】
プログラムは、様々なタイプの非一時的なコンピュータ読み取り可能な記録媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ読み取り可能な記録媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ読み取り可能な記録媒体の例は、磁気記録媒体(例えば、フレキシブルディスク、ハードディスクドライブ)、光磁気記録媒体(例えば、光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(random access memory))を含む。
【0130】
上述した実施形態は、本発明の好適な実施形態ではあるが、上記実施形態のみに本発明の範囲を限定するものではなく、本発明の要旨を逸脱しない範囲において種々の変更を施した形態での実施が可能である。
【0131】
<サーボ制御装置が機械学習装置を備える変形例>
上述した実施形態では、機械学習装置200と、サーボ制御装置100、100A、100B又は100Cとを制御装置内に設けて構成し、機械学習装置200とサーボ制御装置100、100A、100B又は100Cとは別体の装置により構成したが、機械学習装置200の機能の一部又は全部をサーボ制御装置100により実現するようにしてもよい。
また、上述した実施形態では、サーボ制御装置100、100A、100B又は100Cと数値制御装置400とは別体の装置により構成したが、サーボ制御装置100、100A、100B又は100Cの機能の一部又は全部を数値制御装置400により実現するようにしてもよい。数値制御装置400は、機械学習装置200、サーボ制御装置100、100A、100B又は100Cを含んでもよく、その場合、数値制御装置400が制御装置を構成する。
【0132】
<システム構成の自由度>
図18は他の構成の制御装置を示すブロック図である。制御装置10Dは、
図18に示すように、n台のサーボ制御装置100−1〜100−n、n台の機械学習装置200−1〜200−n、ネットワーク300、及び数値制御装置400−1〜400−nを備えている。なお、nは任意の自然数である。n台のサーボ制御装置100−1〜100−nのそれぞれは
図1、
図7、
図8及び
図9に示したサーボ制御装置100、100A〜100Cのいずれかに対応している。n台の機械学習装置200−1〜200−nのそれぞれは
図1、
図7、
図8及び
図9に示した機械学習装置200のいずれかに対応している。数値制御装置400−1〜400−nは数値制御装置400に対応し、サーボ制御装置100−1〜100−nのそれぞれに対して設けられる。サーボ制御装置100−1〜100−nは数値制御装置400−1〜400−nに含まれていてもよい。
【0133】
ここで、サーボ制御装置100−1と機械学習装置200−1とは1対1の組とされて、通信可能に接続されている。サーボ制御装置100−2〜100−nと機械学習装置200−2〜200−nについてもサーボ制御装置100−1と機械学習装置200−1と同様に接続される。
図20では、サーボ制御装置100−1〜100−nと機械学習装置200−1〜200−nとのn個の組は、ネットワーク300を介して接続されているが、サーボ制御装置100−1〜100−nと機械学習装置200−1〜200−nとのn個の組は、それぞれの組のサーボ制御装置と機械学習装置とが接続インタフェースを介して直接接続されてもよい。これらサーボ制御装置100−1〜100−nと機械学習装置200−1〜200−nとのn個の組は、例えば同じ工場に複数組設置されていてもよく、それぞれ異なる工場に設置されていてもよい。
【0134】
なお、ネットワーク300は、例えば、工場内に構築されたLAN(Local Area Network)や、インターネット、公衆電話網、或いは、これらの組み合わせである。ネットワーク300における具体的な通信方式や、有線接続および無線接続のいずれであるか等については、特に限定されない。
【0135】
上述した
図18の制御装置では、機械学習装置200−1〜200−nとサーボ制御装置100−1−100−nとが1対1の組として通信可能に接続されているが、例えば1台の機械学習装置200−1が複数のサーボ制御装置100−1〜100−m(m<n又はm=n)とネットワーク300を介して通信可能に接続され、各サーボ制御装置100−1〜100−mの機械学習を実施するようにしてもよい。
その際、機械学習装置200−1の各機能を、適宜複数のサーバに分散する、分散処理システムとしてもよい。また、クラウド上で仮想サーバ機能等を利用して、機械学習装置200−1の各機能を実現してもよい。
また、複数の同じ型名、同一仕様、又は同一シリーズのサーボ制御装置100−1〜100−nとそれぞれ対応する複数の機械学習装置200−1〜200−nがあった場合に、各機械学習装置200−1〜200−nにおける学習結果を共有するように構成するようにしてもよい。そうすることで、より最適なモデルを構築することが可能となる。