(58)【調査した分野】(Int.Cl.,DB名)
制御対象部位の振動データを取得するセンサを有するロボット機構部と、作業プログラムに従って前記ロボット機構部の動作を制御するロボット制御装置と、を備える、ロボットシステムであって、
前記作業プログラムに従った前記ロボット機構部の動作中に前記センサによって検出される前記制御対象部位の位置を目標位置に近づけるための学習補正量を算出する学習を行う学習制御部と、
前記学習制御部により算出された学習補正量を用いて前記制御対象部位の目標位置に関する動作指令を補正し、前記作業プログラムに従って前記ロボット機構部の動作を制御するロボット制御部と、
を備え、
前記学習制御部は、
前記学習制御部による学習回ごとに、前記センサによって検出された振動データをフーリエ変換してパワースペクトルを算出するパワースペクトル算出部と、
前記パワースペクトル算出部により算出された今回学習時のパワースペクトルと直前回学習時のパワースペクトルとを周波数成分ごとに比較する比較部と、
前記比較部による比較の結果、前記今回学習時のパワースペクトルに前記直前回学習時のパワースペクトルよりも大きい周波数成分が存在する場合、前記今回学習時のパワースペクトルが前記直前回学習時のパワースペクトルよりも小さくなるように今回学習時の動作指令の補正に用いられた学習補正量の位相及びゲインのうちの少なくとも1つを調整し、次回学習時の動作指令の補正に用いられる新たな学習補正量として設定する学習補正量更新部と、
を有する、ロボットシステム。
前記学習補正量更新部は、今回学習時に用いられた学習補正量を用いて前記動作指令を補正するタイミングを所定の刻み量にて早めていき、前記今回学習時のパワースペクトルが前記直前回学習時のパワースペクトルよりも小さくなったときにおけるタイミング早め量を算出するタイミング早め量算出部を有し、
前記ロボット制御部は、前記今回学習時に用いられた前記学習補正量を用いて前記動作指令を補正したタイミングより前記タイミング早め量算出部により算出されたタイミング早め量だけ早めたタイミングにて、次回学習時に前記新たな学習補正量を用いて前記動作指令を補正し、前記ロボット機構部の動作を制御する、請求項1に記載のロボットシステム。
前記センサは、加速度センサ、ジャイロセンサ、慣性センサ、力センサ、レーザトラッカ、カメラ、またはモーションキャプチャを含む、請求項1〜6のいずれか一項に記載のロボットシステム。
前記学習制御部は、前記ロボット制御装置に設けられるか、または、有線もしくは無線を介して前記ロボット制御装置に接続するコンピュータに設けられる、請求項1〜7のいずれか一項に記載のロボットシステム。
【発明を実施するための形態】
【0009】
以下図面を参照して、学習制御を行うロボットシステムについて説明する。理解を容易にするために、これらの図面は縮尺を適宜変更している。図面に示される形態は実施するための一つの例であり、図示された実施形態に限定されるものではない。
【0010】
図1は、本開示の一実施形態におけるロボットシステムの概略図である。ロボットシステム1は、位置制御の対象であるエンドエフェクタなどの制御対象部位101の振動データを取得するセンサ102を有するロボット機構部103と、作業プログラムに従ってロボット機構部103の動作を制御するロボット制御装置104と、を備えており、制御対象部位101の振動を学習制御するように構成されている。またさらに、ロボットシステム1は、ここでは図示しないが、種々の情報を表示する表示装置を備える。
【0011】
センサ102は、ロボット機構部103の手首先端部に位置する制御対象部位101に取り付けられる。センサ102は、制御対象部位101の位置を推定するために計算処理を必要とする情報(例えば、加速度、角速度、ひずみ(電気抵抗値)等)を検出するセンサであり、例えば、加速度センサ、ジャイロセンサ、慣性センサ、力センサ、レーザトラッカ、カメラ、モーションキャプチャなどを含む。
【0012】
センサ102、ロボット機構部103、ロボット制御装置104、及び表示装置(図示せず)は、有線又は無線を介して相互に通信可能に接続されている。
【0013】
図2は、本開示の一実施形態におけるロボット機構部の構成図である。ロボット機構部
103は、サーボモータ、減速機等を有する6つの関節軸J1〜J6を備えている。ロボット機構部103は、空間上に固定されるワールド座標系C1と、関節軸J6のフランジ位置にあるメカニカルインタフェイス座標系C2とを定義したロボットマニピュレータである。
【0014】
図3は、本開示の一実施形態におけるロボットシステムを示すブロック図である。
【0015】
本開示の実施形態におけるロボットシステム1は、学習制御部11とロボット制御部12とを備える。学習制御部11及びロボット制御部12は公知のCPU、ASIC、FPGA等を備えている。
【0016】
学習制御部11は、作業プログラムに従ったロボット機構部103の動作中にセンサ102によって検出される制御対象部位101の位置を目標位置に近づけるための学習補正量を算出する学習を行う。また、学習制御部11における学習は、オンラインで実行されてもよく、オフラインで実行されてもよい。
【0017】
学習制御部11は、代表的な制御対象部位(エンドエフェクタ)に対する周波数応答データに基づき、学習回毎に振動が単調に減少するように設計されている。すなわち、学習制御部11は、ロボット機構部103による実際の制御対象部位101に対する周波数応答データに基づき設定されたものではない。よって、ロボット機構部103による実際の制御対象部位101が、代表的な制御対象部位(エンドエフェクタ)に対する周波数応答データに基づき設計された学習制御部11の制御帯域内に含まれるか否かによって、学習制御部11による学習制御により制御対象部位101の振動を除去できるか否かが変わってくる。これについて
図5〜
図8を参照して後述する。
【0018】
ロボット制御部12は、作業プログラムに従って、学習制御部11により算出された学習補正量を用いて制御対象部位101の目標位置に関する動作指令を補正し、ロボット機構部
103の動作を制御する。
【0019】
図3に示す一実施形態によるロボットシステム1では、学習制御部11及びロボット制御部12はロボット制御装置104内に設けられる。他の実施形態において、学習制御部11は、ロボット制御装置104とは別体のコンピュータ内に設けられていてもよい。
図4は、本開示の他の実施形態におけるロボットシステムを示すブロック図である。すなわち、
図4に示す一実施形態によるロボットシステム1では、ロボット制御装置104とコンピュータ105とが有線又は無線を介して通信可能に接続され、学習制御部11及びロボット制御部12はコンピュータ105内に設けられる。
【0020】
ロボット制御部12による制御により制御対象部位101の目標位置に関する動作指令に基づきロボット機構部103を動作させたときにおいて、センサ102によってロボット機構部103の振動を検出し、学習制御部11により学習制御を行うことでこの振動を低減させる。すなわち、学習制御部11において、学習制御の対象となる作業プログラムを実行し、その際のロボット機構部103の動作中の加速度データやロボットの指令位置を記録する。学習制御の対象となる作業プログラムを1回実行し終えたら、当該作業プログラムを実行した際の各制御周期における振動量とこの振動量を打ち消すための学習補正量とを算出し、学習制御部11内のメモリに記録する。メモリに記録された学習補正量は、次に同じ作業プログラムが実行される際に、ロボット制御部12において動作指令の補正に利用される。この一連の処理を繰り返し実行することで、ロボット機構部103の振動が低減されていく。
【0021】
続いて、制御対象部位(エンドエフェクタ)の共振周波数と学習制御部の制御帯域との関係について
図5〜
図8を参照して説明する。
【0022】
図5は、制御対象部位の共振周波数が学習制御部の制御帯域よりも高い場合における制御対象部位の周波数特性を例示するボード線図である。
図6は、
図5に示す周波数特性を有する制御対象部位の振動を例示す図である。
図6において、横軸は時間軸であり、縦軸は振動の振幅を示す。また、
図6において、点線は制御対象部位の指令軌跡を示し、一点鎖線は学習制御前の制御対象部位の軌跡を示し、実線は学習制御後の制御対象部位の軌跡を示す。
図5に示すように共振周波数が例えば30Hzである制御対象部位に制御帯域が15Hzである学習制御部を適用した場合、
図6の実線に示すように学習回毎に振動が単調に減少していく。
【0023】
図7は、制御対象部位の共振周波数が学習制御部の制御帯域内に含まれる場合における制御対象部位の周波数特性を例示するボード線図である。
図8は、
図7に示す周波数特性を有する制御対象部位の振動を例示す図である。
図8において、横軸は時間軸であり、縦軸は振動の振幅を示す。また、
図8において、点線は制御対象部位の指令軌跡を示し、一点鎖線は学習制御前の制御対象部位の軌跡を示し、実線は学習制御後の制御対象部位の軌跡を示す。
図7に示すように共振周波数が例えば14Hzである制御対象部位に制御帯域が15Hzである学習制御部を適用した場合、
図8の実線に示すように振動が発散してしまう。
【0024】
制御対象部位の共振周波数が学習制御部の制御帯域内に含まれる場合において
図8に示すように振動が減少せずに発散してしまうのは、制御対象部位の共振周波数近傍の位相の遅れやゲインの増大によるものと考えられる。そこで、本実施形態では、学習制御部11による学習回毎に、制御対象部位101の振動のパワースペクトルを監視し、制御対象部位101の振動のパワースペクトルが直前回学習時よりも今回学習時の方が増加した場合には、制御対象部位101の共振周波数が学習制御部11の制御帯域内に含まれると考え、学習制御部11において学習補正量の位相及びゲインの少なくとも1つを調整し、調整後の学習補正量を、次回学習時の動作指令の補正に用いられる新たな学習補正量として設定する。
【0025】
続いて、学習制御部11の構成についてより詳細に説明する。
【0026】
図3及び
図4に示すように、学習制御部11は、パワースペクトル算出部21と、比較部22と、学習補正量更新部23とを備える。
【0027】
また、学習制御部11は、第1のメモリ24と第2のメモリ25と第3のメモリ26とを備える。第1のメモリ24は、センサ102から取得したセンサ情報を記憶する。第2のメモリ25は、パワースペクトル算出部21により算出(取得)されたパワースペクトルを記憶する。第3のメモリ26は、学習を繰返して収束した学習補正量を記憶する。第1のメモリ24及び第2のメモリ25は高速な学習を行うために揮発性メモリであることが好ましいが不揮発性メモリであってもよい。第1のメモリ24及び第2のメモリ25は、1つのメモリの領域を分割して割り当てられたものであってもよく、あるいはそれぞれ別個のメモリとして実現されてもよい。また、第3のメモリ26は電源切断後であっても学習補正量を記憶する不揮発性メモリであることが好ましい。電源投入後、収束した学習補正量が第3のメモリ26からに読み出されてロボット制御部12において利用される。
【0028】
パワースペクトル算出部21は、学習制御部11による学習回ごとに、センサ102によって検出された振動データをフーリエ変換してパワースペクトルを算出(取得)する。パワースペクトル算出部21により算出されたパワースペクトルは、比較部22に送られるとともに、第2のメモリ25に記憶される。
【0029】
比較部22は、パワースペクトル算出部21により算出された今回学習時のパワースペクトルと直前回学習時のパワースペクトルとの大小関係を周波数成分ごとに比較する。今回学習時のパワースペクトルは、当該学習回においてパワースペクトル算出部21から送られてきたものであり、直前回学習時のパワースペクトルは、第2のメモリ25から読み出されたものである。比較部22による比較結果である周波数成分ごとのパワースペクトルの大小関係に関する情報は、学習補正量更新部23に送られる。
【0030】
学習補正量更新部23は、比較部22による比較の結果、今回学習時のパワースペクトルに直前回学習時のパワースペクトルよりも大きい周波数成分が存在する場合、今回学習時のパワースペクトルが直前回学習時のパワースペクトルよりも小さくなるように今回学習時の動作指令の補正に用いられた学習補正量の位相及びゲインのうちの少なくとも1つを調整し、これを次回学習時の動作指令の補正に用いられる新たな学習補正量として設定する。つまり、学習補正量更新部23は、直前回学習時のパワースペクトルよりも大きいパワースペクトルを有していると比較部22により判定された今回学習時の周波数成分に対応する学習補正量の周波数成分に対して位相を調整することで、当該大きい周波数成分についての今回学習時のパワースペクトルが直前回学習時のパワースペクトル以下になるようにし、調整後の学習補正量を、次回学習時の動作指令の補正に用いられる新たな学習補正量として設定する。新たに設定された学習補正量は、第3のメモリ26に記憶される。ロボット制御部12は、作業プログラムに従って、学習制御部11内の第3のメモリ
26から読み出された学習補正量を用いて制御対象部位101の目標位置に関する動作指令を補正し、ロボット機構部
103の動作を制御する。
【0031】
続いて、学習補正量の位相を調整する実施形態について
図9及び
図10を参照してより詳細に説明する。学習補正量の位相及びゲインの両方を調整する実施形態については後述する。
【0032】
図9は、制御対象部位の共振周波数が学習制御部の制御帯域内に含まれる場合における制御対象部位の振動のパワースペクトルを例示する図である。
図9において、横軸は周波数を示し、縦軸はパワースペクトルを示す。また、
図9において、実線は学習制御部11のN回目(Nは整数)における制御対象部位101の振動のパワースペクトルを示し、
点線は学習制御部11のN+1回目(Nは整数)における制御対象部位101の振動のパワースペクトルを示す。
図10は、
図9に示す振動のパワースペクトルを有する制御対象部位の振動を例示す図である。
図10において、横軸は時間軸であり、縦軸は振動の振幅を示す。また、
図10において、点線は制御対象部位の指令軌跡を示し、一点鎖線は学習制御前の制御対象部位の軌跡を示し、二点鎖線は、位相調整なしの学習制御後の制御対象部位の軌跡を示し、実線は位相調整ありの学習制御後の制御対象部位の軌跡を示す。
図9及び
図10に示す例では、一例として学習制御部11の制御帯域を15Hzとしている。制御対象部位101の共振周波数が、学習制御部11の制御帯域である15Hz内に含まれると、学習制御部11による学習制御の結果、今回学習時(N+1回目)のパワースペクトルは、直前回学習時(N回目)のパワースペクトルに比べて増大する。すなわち、
図9に示すように、8Hzより大きい周波数成分については、今回学習時(N+1回目)のパワースペクトルの方が直前回学習時のパワースペクトルよりも大きくなる。この結果、
図10に示すように、学習制御前は振動がなかったが(実線)、学習制御部11による学習制御により振動が発散してしまう(二点鎖線)。ここで、今回学習時の8Hzより大きい周波数成分のパワースペクトルが直前回学習時の8Hzより大きい周波数成分のパワースペクトルよりも小さくなるように、8Hzより大きい周波数成分の学習補正量に対して位相を進める調整を行うと、
図10の実線に示すように学習回毎に振動が単調に減少していく。本実施形態では、学習制御部11による学習回毎に、制御対象部位101の振動のパワースペクトルを監視し、制御対象部位101の振動のパワースペクトルが直前回学習時よりも今回学習時の方が増加した場合には、学習補正量更新部23は、今回学習時パワースペクトルが直前回学習時のパワースペクトルよりも小さくなるように学習補正量の位相を調整し、調整後の学習補正量を、新たな学習補正量として設定する。新たな学習補正量は、第3のメモリ26に記憶される。ロボット制御部12は、作業プログラムに従って、学習制御部11内の第3のメモリ
26から読み出された新たな学習補正量を用いて制御対象部位101の目標位置に関する動作指令を補正し、ロボット機構部
103の動作を制御する。新たな学習補正量は、今回学習時パワースペクトルを直前回学習時のパワースペクトルよりも小さくするものであるので、ロボット制御部12において新たな学習補正量にて動作指令を補正してロボット機構部103の動作を制御すると、学習回毎に振動が単調に減少することになる。
【0033】
図11は、本開示の一実施形態におけるロボットシステムにおける学習補正量更新処理を説明するフローチャートである。
【0034】
ロボット制御部12が、学習制御部11により算出された学習補正量を用いて動作指令を補正してロボット機構部103の動作を制御する場合を考える。ステップS101において、パワースペクトル算出部21は、センサ102によって検出された振動データをフーリエ変換してパワースペクトルを算出する。パワースペクトル算出部21により算出されたパワースペクトルは、比較部22に送られるとともに、第2のメモリ25に記憶される。
【0035】
ステップS102において、比較部22は、パワースペクトル算出部21により算出された今回学習時のパワースペクトルと直前回学習時のパワースペクトルとの大小関係を周波数成分ごとに比較する。ステップS102における比較部22による比較の結果、今回学習時のパワースペクトルに直前回学習時のパワースペクトルよりも大きい周波数成分が存在すると判定された場合は、ステップS103へ進む。一方、ステップS102における比較部22による比較の結果、今回学習時のパワースペクトルに直前回学習時のパワースペクトルよりも大きい周波数成分が存在しないと判定された場合は、学習補正量は更新せずに学習補正量更新処理を終了する。学習補正量更新処理の終了後、次回学習時に再度、学習補正量更新処理を実行してもよい。
【0036】
ステップS103において、学習補正量更新部23は、直前回学習時のパワースペクトルよりも大きいパワースペクトルを有する今回学習時の周波数成分に対応する今回学習時の動作指令の補正に用いられた学習補正量の周波数成分に対して、所定の刻み量だけ位相を進める。位相進み量処理の詳細については後述する。
【0037】
ステップS104において、比較部22は、パワースペクトル算出部21により算出された今回学習時のパワースペクトルと直前回学習時のパワースペクトルとの大小関係を周波数成分ごとに比較する。ステップS104における比較部22による比較の結果、今回学習時のパワースペクトルに直前回学習時のパワースペクトルよりも大きい周波数成分が存在すると判定された場合は、ステップS103へ戻る。一方、ステップS104における比較部22による比較の結果、今回学習時のパワースペクトルの全ての周波数成分について直前回学習時のパワースペクトルよりも小さくなったと判定された場合は、ステップS105へ進む。
【0038】
ステップS105において、学習補正量更新部23は、位相調整後の学習補正量を、次回学習時の動作指令の補正に利用される新たな学習補正量として設定し、その後、学習補正量更新処理を終了する。学習補正量更新処理の終了後、次回学習時に再度、学習補正量更新処理を実行してもよい。
【0039】
このように、ステップS103〜S105における学習補正量更新部23の一連の処理により、直前回学習時のパワースペクトルよりも大きいパワースペクトルを有する今回学習時の周波数成分に対応する今回学習時の動作指令の補正に用いられた学習補正量の周波数成分に対して、所定の刻み量にて順次増加する位相進み量にて位相を進めていき、当該周波数成分のパワースペクトルが直前回学習時のパワースペクトルよりも小さくなったときにおける位相進み量が算出される。学習補正量更新部23は、算出された位相進み量にて当該周波数成分の位相が進められた学習補正量を、次回学習時の動作指令の補正に用いられる新たな学習補正量として設定する。
【0040】
ステップS105において設定される次回学習時の動作指令の補正に利用される新たな学習補正量は、全ての当該周波数成分のパワースペクトルが直前回学習時のパワースペクトル以下になるように今回学習時の学習補正量の位相を進める調整を行うことで得られる学習補正量である。このように位相調整された新たな学習補正量を次回学習時の動作指令の補正に利用すれば、制御対象部位101の共振周波数付近の位相遅れを補償することができるので、代表的なエンドエフェクタに対する周波数応答データに基づき予め設計された学習制御部11により、制御対象部位101の振動を除去することができる。
【0041】
一方、ステップS102において、比較部22により今回学習時のパワースペクトルに直前回学習時のパワースペクトルよりも大きい周波数成分が存在しないと判定された場合は、制御対象部位101の共振周波数が学習制御部11の制御帯域よりも大きいので、代表的なエンドエフェクタに対する周波数応答データに基づき予め設計された学習制御部11の今回学習時の学習補正量をそのまま次回学習時の動作指令の補正に利用しても、制御対象部位101の振動を除去することができるので、学習補正量は更新せずに、学習補正量更新処理を終了する。
【0042】
続いて、学習補正量更新部23の形態について列記する。
【0043】
図12は、第1の形態による学習補正量更新部を有する学習制御部を示すブロック図である。第1の形態による学習補正量更新部23は、位相進み量算出部31と、学習補正量の特定の周波数成分に対して位相を進めるフィルタ32とを有する。
【0044】
比較部22による比較の結果、今回学習時のパワースペクトルが直前回学習時のパワースペクトルよりも大きい周波数成分が存在する場合、位相進み量算出部31は、直前回学習時のパワースペクトルよりも大きいパワースペクトルを有する今回学習時の周波数成分に対応する今回学習時の動作指令の補正に用いられた学習補正量の周波数成分に対して、所定の刻み量にて順次増加する位相進み量にて位相を進めていき、当該周波数成分のパワースペクトルが直前回学習時のパワースペクトルよりも小さくなったときにおける位相進み量を算出する。位相進み量算出部31により算出された位相進み量に関する情報は、フィルタ32に送られる。
【0045】
フィルタ32は、直前回学習時のパワースペクトルよりも大きいパワースペクトルを有する今回学習時の周波数成分に対応する今回学習時の動作指令の補正に用いられた学習補正量の周波数成分に対して、位相進み量算出部
31により算出された位相進み量にて、位相を進める。位相進み量算出部31により算出された位相進み量にてフィルタ32により当該周波数成分の位相が進められた学習補正量が、新たな学習補正量として設定され、第3のメモリ26に記憶される。
【0046】
上述の第1の形態による学習補正量更新部23による学習制御を数式にて表すと下記式1のように模式化できる。式1において、u
iを学習i回目(iは整数)の学習補正量、e
iを学習i回目の制御対象部位101の振動とし、位相進み量にて位相を進めるフィルタが適用されることを関数F
p、学習制御部11の制御帯域を規定するローパスフィルタが適用されることを関数Q、学習制御が適用されることを関数Lでそれぞれ表す。
【0048】
図13は、第1の形態による学習補正量更新部におけるフィルタの周波数特性を例示するボード線図である。例えばある今回学習(i回目)において、直前回学習(i−1回目)と比べて8Hz以上の周波数成分について振動のパワースペクトルが増大したとする。その時の学習補正量u
iを例えば
図13に示すような周波数特性を持つフィルタ
32を使用して特定の周波数成分の学習補正量の位相を進める。特定の周波数成分の学習補正量に対して位相進み量を何パターンか変えながら(例えば20degから5deg刻みで増加させながら)位相を進めてロボット制御部12によりロボット機構部103を動作させる。8Hz以上の周波数成分についての振動のパワースペクトルが直前回(i−1回目)よりも減少するまで所定の刻み量にて位相進みを増加させていく。8Hz以上の周波数成分を含む全ての周波数成分についての振動のパワースペクトルが直前回(i−1回目)よりも減少したときにおける位相進み量を、式1におけるフィルタ
32のF
pに適用し、学習i回目の学習補正量u
iをF
pu
iで置き換えて、学習制御を再開する。
【0049】
図14は、第2の形態による学習補正量更新部を有する学習制御部を示すブロック図である。第2の形態による学習補正量更新部23は、位相進み量算出部31と、フーリエ変換部33と、位相調整部34と、逆フーリエ変換部35とを有する。
【0050】
比較部22による比較の結果、今回学習時のパワースペクトルが直前回学習時のパワースペクトルよりも大きい周波数成分が存在する場合、位相進み量算出部31は、直前回学習時のパワースペクトルよりも大きいパワースペクトルを有する今回学習時の周波数成分に対応する今回学習時の動作指令の補正に用いられた学習補正量の周波数成分に対して、所定の刻み量にて順次増加する位相進み量にて位相を進めていき、当該周波数成分のパワースペクトルが直前回学習時のパワースペクトルよりも小さくなったときにおける位相進み量を算出する。位相進み量算出部
31により算出された位相進み量に関する情報は、位相調整部34に送られる。
【0051】
フーリエ変換部33は、第3のメモリ26から読み出された今回学習時の動作指令の補正に用いられた学習補正量を、フーリエ変換する。フーリエ変換後の今回学習時の動作指令の補正に用いられた学習補正量は、位相調整部34に送られる。
【0052】
位相調整部34は、フーリエ変換部33によるフーリエ変換後の今回学習時の動作指令の補正に用いられた学習補正量の、直前回学習時のパワースペクトルよりも大きいパワースペクトルを有する今回学習時の周波数成分のみについて、位相進み量算出部31により算出された位相進み量だけ位相を進める。上述のように位相進み量算出部31により算出された位相進み量は、直前回学習時のパワースペクトルよりも大きいパワースペクトルを有する今回学習時の学習補正量の周波数成分が、直前回学習時のパワースペクトルよりも小さくなるようにするためのものである。学習補正量の周波数成分のうち特定の周波数成分について位相進み量算出部31により算出された位相進み量だけ位相を進めることにより、全ての周波数成分のパワースペクトルが直前回学習時のパワースペクトルよりも小さくなる。位相調整部34による位相調整後の学習補正量は、逆フーリエ変換部35へ送られる。
【0053】
逆フーリエ変換部35は、位相調整部34により全ての周波数成分のパワースペクトルが直前回学習時のパワースペクトルよりも小さくなるように位相が進められた学習補正量を、逆フーリエ変換する。逆フーリエ変換部35による逆フーリエ変換後の学習補正量が、新たな学習補正量として設定されて第3のメモリ26に記憶される。
【0054】
上述の第2の形態による学習補正量更新部23による学習補正量更新処理は、下記式2のように表される。式2において、W(ω)は、周波数領域上において特定の周波数成分の位相を進めるための重み付け関数を表す。位相進み量算出部31により算出された位相進み量をθとしたとき、位相を進めるべき周波数成分にはe
iθがかけられ、位相を進める必要のない周波数成分には1がかけられる。
【0056】
式2において、時間領域上の今回学習時の動作指令の補正に用いられた学習補正量f(t)は、フーリエ変換部33によりフーリエ変換される。フーリエ変換後の今回学習時の動作指令の補正に用いられた学習補正量(すなわち周波数領域上の今回学習時の動作指令の補正に用いられた学習補正量)をF(ω)で表す。位相調整部34により、フーリエ変換後の今回学習時の動作指令の補正に用いられた学習補正量F(ω)の各周波数成分のうち、直前回学習時のパワースペクトルよりも大きいパワースペクトルを有する今回学習時の周波数成分についてはe
iθがかけられ、位相を進める必要のない周波数成分には1がかけられる。位相調整された学習補正量F(ω)W(ω)は、逆フーリエ変換部35により逆フーリエ変換される。逆フーリエ変換部35による逆フーリエ変換後の学習補正量(すなわち時間領域上の位相調整済の学習補正量)をf’(t)で表す。逆フーリエ変換部35による逆フーリエ変換後の学習補正量f’(t)は、全ての周波数成分のパワースペクトルが直前回学習時のパワースペクトルよりも小さくなる。よって、ロボット制御部12において新たな学習補正量にて動作指令を補正してロボット機構部103の動作を制御すると、学習回毎に振動が単調に減少することになる。
【0057】
図15は、第3の形態による学習補正量更新部を有する学習制御部を示すブロック図である。
【0058】
第
1の形態及び第2の形態では、学習補正量の各周波数成分のうち特定の周波数成分(すなわち直前回学習時のパワースペクトルよりも大きいパワースペクトルを有している今回学習時の周波数成分に対応する学習補正量の周波数成分)についてのみ位相を進めることで、今回学習時のパワースペクトルの全ての周波数成分について直前回学習時のパワースペクトルよりも小さくなるようにした。これに対し、第3の形態では、学習補正量の各周波数成分のうち特定の周波数成分ではなく、学習補正量全体(すなわち全ての周波数成分)を時間的に進めることで、今回学習時のパワースペクトルの全ての周波数成分について直前回学習時のパワースペクトルよりも小さくなるようにする。したがって、第3の形態では、直前回学習時のパワースペクトルよりも小さいパワースペクトルを有する今回学習時の周波数成分に対応する今回学習時の動作指令の補正に用いられた学習補正量の周波数成分についても位相に進められることになるが、直前回学習時のパワースペクトルよりも小さいパワースペクトルを有する今回学習時の周波数成分は、当該周波数成分の学習補正量の位相を進めてもパワースペクトルがさらに小さくなるだけであるので、特に問題は生じない。
【0059】
第3の形態による学習補正量更新部23は、タイミング早め量算出部36を有する。タイミング早め量算出部36は、今回学習時の学習補正量を用いて動作指令を補正するタイミングを所定の刻み量にて早めていき、今回学習時のパワースペクトルが直前回学習時のパワースペクトルよりも小さくなったときにおけるタイミング早め量を算出する。タイミング早め量算出部36により算出されたタイミング早め量に関する情報は、第3のメモリ26に記憶される。ロボット制御部12は、第3のメモリ26に記憶されたタイミング早め量を読み出し、今回学習時の学習補正量を用いて動作指令を補正したタイミングよりタイミング早め量だけ早めたタイミングにて、次回学習時に新たな学習補正量を用いて動作指令を補正し、ロボット機構部103の動作を制御する。このように、次回学習時に新たな学習補正量を用いて動作指令を補正するタイミングを、第3の形態による学習補正量更新部23内のタイミング早め量算出部36により算出されたタイミング早め量だけ、今回学習時の学習補正量を用いて動作指令を補正したタイミングよりも早める。
【0060】
続いて、学習補正量の位相及びゲインの両方を調整する実施形態について説明する。
【0061】
制御対象部位101(エンドエフェクタ)の共振周波数が学習制御部11の制御帯域内に含まれる場合において、この共振周波数近傍の学習制御部11のフィルタのゲインが大きいと、学習補正量の位相の進める調整のみでは、今回学習時のパワースペクトルを直前回学習時のパワースペクトルよりも小さくしきれず、振動を低減することができないことがある。この場合は、学習補正量に適用されるフィルタのゲインを小さくする調整を行う。
【0062】
図16は、学習補正量の位相及びゲインの両方を調整する実施形態による学習補正量更新部を有する学習制御部を示すブロック図である。
【0063】
図16に示すように、学習補正量更新部23は、位相進み量算出部31と、学習補正量の特定の周波数成分に対して位相及びゲインを調整するフィルタ32と、位相進み量判定部37と、ゲイン算出部38とを有する。
【0064】
比較部22による比較の結果、今回学習時のパワースペクトルが直前回学習時のパワースペクトルよりも大きい周波数成分が存在する場合、位相進み量算出部31は、直前回学習時のパワースペクトルよりも大きいパワースペクトルを有する今回学習時の周波数成分に対応する今回学習時の動作指令の補正に用いられた学習補正量の周波数成分に対して、所定の刻み量にて順次増加する位相進み量にて位相を進める。
【0065】
位相進み量判定部37は、直前回学習時のパワースペクトルよりも大きいパワースペクトルを有する今回学習時の周波数成分に対応する今回学習時の動作指令の補正に用いられた学習補正量の周波数成分に対して、位相進み量算出部31により所定の刻み量にて順次増加する位相進み量にて位相を進めていったときにおいて、当該周波数成分のパワースペクトルが直前回学習時のパワースペクトルよりも小さくなる前に位相進み量が所定の上限値に達したか否かを判定する。位相進み量が所定の上限値に達したと位相進み量判定部37が判定する前に、当該周波数成分のパワースペクトルが直前回学習時のパワースペクトルよりも小さくなったときにおける位相進み量を算出できた場合は、位相進み量算出部
31により算出された位相進み量に関する情報は、フィルタ32に送られる。一方、位相進み量が所定の上限値に達したと位相進み量判定部37が判定した場合は、その判定結果をゲイン算出部38に通知する。位相進み量算出部31の判定処理に用いられる上限値の設定例については後述する。
【0066】
位相進み量判定部
37により位相進み量が所定の上限値に達したとの判定結果を受けて、ゲイン算出部38は、位相進み量算出部31により算出していた位相進み量をゼロに戻したうえで、今回学習時の動作指令の補正に用いられた学習補正量に対して適用されるフィルタ32のゲインを所定の刻み量にて減少させていき、当該周波数成分のパワースペクトルが直前回学習時のパワースペクトルよりも小さくなったときにおけるフィルタ32のゲインを算出する。ゲイン算出部38により算出された
ゲインに関する情報は、フィルタ32に送られる。
【0067】
位相進み量が所定の上限値に達したと位相進み量判定部37が判定する前に、当該周波数成分のパワースペクトルが直前回学習時のパワースペクトルよりも小さくなったときにおける位相進み量を算出できた場合は、フィルタ32は、直前回学習時のパワースペクトルよりも大きいパワースペクトルを有する今回学習時の周波数成分に対応する今回学習時の動作指令の補正に用いられた学習補正量の周波数成分に対して、位相進み量算出部31により算出された位相進み量にて、位相を進める。この場合、位相進み量算出部31により算出された位相進み量にてフィルタ32により当該周波数成分の位相が進められた学習補正量が、新たな学習補正量として設定され、第3のメモリ26に記憶される。
【0068】
一方、位相進み量が所定の上限値に達したと位相進み量判定部37が判定した場合は、フィルタ32は、ゲイン算出部38により算出されたゲインを有するフィルタ32が適用された学習補正量(すなわち当該周波数成分のピークが小さくされた学習補正量)が、新たな学習補正量として設定され、第3のメモリ26に記憶される。
【0069】
上述の学習補正量の位相及びゲインの両方を調整する実施形態による学習補正量更新部23による学習制御を数式にて表すと下記式3のように模式化できる。式3において、u
iを学習i回目(iは整数)の学習補正量、e
iを学習i回目の制御対象部位101の振動とし、位相進み量にて位相を進めるフィルタが適用されることを関数F
p、位相進み量にてゲインを減少させるフィルタが適用されることを関数F
g、学習制御部11の制御帯域を規定するローパスフィルタが適用されることを関数Q、学習制御が適用されることを関数Lでそれぞれ表す。
【0071】
図17は、学習補正量のゲインを調整するフィルタの周波数特性を例示するボード線図である。ある特定の周波数成分について振動のパワースペクトルのピークが大きい場合は、その時の学習補正量u
iを例えば
図17に示すような周波数特性を持つフィルタ32を使用して特定の周波数成分の学習補正量の位相を進める。
図17の例では、一例として9Hzの周波数成分のピークを減少させるためのフィルタ32の周波数特性を示している。特定の周波数成分の学習補正量に対して適用されるフィルタ32のゲインを何パターンか変えながら位相を進めてロボット制御部12によりロボット機構部103を動作させる。全ての周波数成分についての振動のパワースペクトルが直前回(i−1回目)よりも減少するまで所定の刻み量にてフィルタ32のゲインを減少させていく。全ての周波数成分についての振動のパワースペクトルが直前回(i−1回目)よりも減少したときにおけるゲインを、式3におけるフィルタF
pF
gに適用し、学習i回目の学習補正量u
iをF
pF
gu
iで置き換えて、学習制御を再開する。
【0072】
位相進み量算出部31の判定処理に用いられる上限値は、例えば次のような値に設定すればよい。すなわち、学習i回目の
振動e
iと学習i−1回目の振動e
i-1との差分に学習制御を適用した「L(e
i−e
i-1)」をフーリエ変換して得られる第1の値と、学習i回目の学習補正量u
iと学習i−1回目の学習補正量u
i-1との差分「u
i−u
i-1」をフーリエ変換して得られる第2の値と、の位相差を、位相進み量算出部31の判定処理に用いられる上限値に設定する。学習制御部11は、ロボット機構部103の実際の制御対象部位101に対する周波数応答データではなく、代表的な制御対象部位に対する周波数応答データに基づき設計されたものである。ロボット機構部103の実際の制御対象部位101の共振周波数が学習制御部11の制御帯域内に含まれる場合(今回学習時のパワースペクトルに直前回学習時のパワースペクトルよりも大きい周波数成分が存在する場合)において、学習補正量の特性の周波数成分の位相を進めてもなお制御対象部位101の振動が除去できない(すなわち振動が発散する)ことがある。これは、位相をいくら進めてもなお第1の値(周波数領域上の学習制御適用後の振動差分)が第2の値(周波数領域上の学習補正量の差分)を上回るからである。このような場合は、学習補正量の位相の進みによる調整ではなく、学習補正量に適用されるフィルタのゲインを減少させる調整に切り替える必要があり、調整方法の切替の目安として、学習i回目の
振動e
iと学習i−1回目の振動e
i-1との差分に学習制御を適用した「L(e
i−e
i-1)」をフーリエ変換して得られる第1の値と、学習i回目の学習補正量u
iと学習i−1回目の学習補正量u
i-1との差分「u
i−u
i-1」をフーリエ変換して得られる第2の値と、の位相差を、上限値に設定する。
【0073】
図18は、学習補正量の位相及びゲインの両方を調整する実施形態による学習補正量更新処理を説明するフローチャートである。
【0074】
ロボット制御部12が、学習制御部11により算出された学習補正量を用いて動作指令を補正してロボット機構部103の動作を制御する場合を考える。ステップS101において、パワースペクトル算出部21は、センサ102によって検出された振動データをフーリエ変換してパワースペクトルを算出する。パワースペクトル算出部21により算出されたパワースペクトルは、比較部22に送られるとともに、第2のメモリ25に記憶される。
【0075】
ステップS102において、比較部22は、パワースペクトル算出部21により算出された今回学習時のパワースペクトルと直前回学習時のパワースペクトルとを周波数成分ごとに比較する。ステップS102において、比較部22により今回学習時のパワースペクトルに直前回学習時のパワースペクトルよりも大きい周波数成分が存在すると判定された場合は、ステップS103へ進む。一方、ステップS102において、比較部22により今回学習時のパワースペクトルに直前回学習時のパワースペクトルよりも大きい周波数成分が存在しないと判定された場合は、学習補正量は更新せずに学習補正量更新処理を終了する。学習補正量更新処理の終了後、次回学習時に再度、学習補正量更新処理を実行してもよい。
【0076】
ステップS103において、学習補正量更新部23は、直前回学習時のパワースペクトルよりも大きいパワースペクトルを有する今回学習時の周波数成分に対応する今回学習時の動作指令の補正に用いられた学習補正量の周波数成分に対して、所定の刻み量だけ位相を進める。
【0077】
ステップS104において、比較部22は、パワースペクトル算出部21により算出された今回学習時のパワースペクトルと直前回学習時のパワースペクトルとを周波数成分ごとに比較する。ステップS104において、比較部22により今回学習時のパワースペクトルに直前回学習時のパワースペクトルよりも大きい周波数成分が存在すると判定された場合は、ステップS106へ進む。一方、ステップS104において、比較部22により今回学習時のパワースペクトルの全ての周波数成分について直前回学習時のパワースペクトルよりも小さくなったと判定された場合は、ステップS105へ進む。
【0078】
ステップS105において、学習補正量更新部23は、位相調整後または位相及びゲイン調整後の学習補正量を、次回学習時の動作指令の補正に利用される新たな学習補正量として設定し、その後、学習補正量更新処理を終了する。学習補正量更新処理の終了後、次回学習時に再度、学習補正量更新処理を実行してもよい。
【0079】
ステップS106において、位相進み量判定部37は、直前回学習時のパワースペクトルよりも大きいパワースペクトルを有する今回学習時の周波数成分に対応する今回学習時の動作指令の補正に用いられた学習補正量の周波数成分に対して、当該周波数成分のパワースペクトルが直前回学習時のパワースペクトルよりも小さくなる前に位相進み量が所定の上限値に達したか否かを判定する。ステップS106において、位相進み量判定部37により位相進み量が所定の上限値に達したと判定された場合はステップS107へ進む。一方、ステップS106において、位相進み量判定部37により位相進み量が所定の上限値に達していないと判定された場合はステップS103へ戻る。ステップS106における判定処理は、ステップS103で位相進み量算出部31により所定の刻み量にて順次増加する位相進み量にて位相を進めていったときにおいて、ステップS104において比較部22により今回学習時のパワースペクトルに直前回学習時のパワースペクトルよりも大きい周波数成分が存在すると判定される限り、繰り返し実行される。
【0080】
ステップS107において、ゲイン算出部38は、位相進み量算出部31により算出していた位相進み量をゼロに戻す。
【0081】
ステップS108において、ゲイン算出部38は、今回学習時の動作指令の補正に用いられた学習補正量に対して適用されるフィルタ32のゲインを所定の刻み量にて減少させる。
【0082】
ステップS109において、比較部22は、パワースペクトル算出部21により算出された今回学習時のパワースペクトルと直前回学習時のパワースペクトルとを周波数成分ごとに比較する。
【0083】
ステップS109において、比較部22により今回学習時のパワースペクトルに直前回学習時のパワースペクトルよりも大きい周波数成分が存在すると判定された場合は、ステップS108へ戻る。
【0084】
一方、ステップS109において、比較部22により今回学習時のパワースペクトルの全ての周波数成分について直前回学習時のパワースペクトルよりも小さくなったと判定された場合は、その時点でゲイン算出部38において算出されたゲインを保持し、ステップS103へ戻る。ステップS103では、新たに保持されたゲインでフィルタ32を動作させ、ステップS103の処理(学習補正量の位相を進める処理)を再度実行する。
【0085】
ステップS101〜S106の処理を経てステップS105において設定される次回学習時の動作指令の補正に利用される新たな学習補正量は、全ての当該周波数成分のパワースペクトルが直前回学習時のパワースペクトル以下になるように今回学習時の学習補正量の位相を進める調整を行うことで得られる学習補正量である。このように位相調整された新たな学習補正量を次回学習時の動作指令の補正に利用すれば、制御対象部位101の共振周波数付近の位相遅れを補償することができるので、代表的なエンドエフェクタに対する周波数応答データに基づき予め設計された学習制御部11により、制御対象部位101の振動を除去することができる。
【0086】
また、ステップS101〜S109の処理を経てステップS105において設定される次回学習時の動作指令の補正に利用される新たな学習補正量は、全ての当該周波数成分のパワースペクトルが直前回学習時のパワースペクトル以下になるように今回学習時の学習補正量の位相を進めるとともにゲインを小さくする調整が行われることで得られる学習補正量である。このように位相調整及びゲイン調整された新たな学習補正量を次回学習時の動作指令の補正に利用すれば、制御対象部位101の共振周波数付近の位相遅れ及びゲイン増大の影響を補償することができるので、代表的なエンドエフェクタに対する周波数応答データに基づき予め設計された学習制御部11により、制御対象部位101の振動を除去することができる。
【0087】
一方、ステップS102において、比較部22により今回学習時のパワースペクトルに直前回学習時のパワースペクトルよりも大きい周波数成分が存在しないと判定された場合は、制御対象部位101の共振周波数が学習制御部11の制御帯域よりも大きいので、代表的なエンドエフェクタに対する周波数応答データに基づき予め設計された学習制御部11の今回学習時の学習補正量をそのまま次回学習時の動作指令の補正に利用しても、制御対象部位101の振動を除去することができるので、学習補正量は更新せずに、学習補正量更新処理を終了する。
【0088】
このように、本開示の実施形態によれば、制御対象部位(エンドエフェクタ)の剛性が低くその共振周波数が学習制御部の制御帯域内に含まれてしまう場合であっても、代表的な制御対象部位に対する周波数応答データに基づき予め設計された学習制御部を用いて制御対象部位の振動を精度良く除去することができる。したがって、制御対象部位の剛性が低い場合でも現場で実際の制御対象部位で周波数応答データを取得して学習制御部を設計し直す必要はなく、代表的な制御対象部位に対する周波数応答データを流用できるので、制御対象部位の振動の除去を容易に実現することができ、低コストである。
【0089】
上述したパワースペクトル算出部21、比較部22、学習補正量更新部23及びロボット制御部12は、例えばソフトウェアプログラム形式で構築されてもよく、あるいは各種電子回路とソフトウェアプログラムとの組み合わせで構築されてもよい。この場合、例えばASICやDSPなどの演算処理装置にこのソフトウェアプログラムを動作させて各部の機能を実現することができる。あるいは、パワースペクトル算出部21、比較部22、学習補正量更新部23及びロボット制御部12の機能を実現するソフトウェアプログラムを書き込んだ半導体集積回路として実現してもよい。