JP2016120549A - ロボット制御方法及びロボット制御装置 - Google Patents

ロボット制御方法及びロボット制御装置 Download PDF

Info

Publication number
JP2016120549A
JP2016120549A JP2014261015A JP2014261015A JP2016120549A JP 2016120549 A JP2016120549 A JP 2016120549A JP 2014261015 A JP2014261015 A JP 2014261015A JP 2014261015 A JP2014261015 A JP 2014261015A JP 2016120549 A JP2016120549 A JP 2016120549A
Authority
JP
Japan
Prior art keywords
frequency
trajectory
robot
evaluation value
learning
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2014261015A
Other languages
English (en)
Inventor
智洋 泉
Tomohiro Izumi
智洋 泉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2014261015A priority Critical patent/JP2016120549A/ja
Publication of JP2016120549A publication Critical patent/JP2016120549A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Manipulator (AREA)

Abstract

【課題】学習制御における学習の収束時間を短縮することが可能で、かつ、学習による軌道誤差の悪化を抑制可能なロボット制御方法を提供する。
【解決手段】軌道誤差の評価計算工程(ステップS8)と、計算した評価値が記憶されている評価値よりも良い場合に、記憶部の評価値を計算した評価値に更新して保存し、かつ記憶部の指令軌道を軌道誤差を評価した際の指令軌道に更新して保存する良状態保存工程(ステップS11)と、計算した評価値が記憶されている評価値よりも悪い場合に、軌道誤差から指令軌道の補正量を計算するローパスフィルタのカットオフ周波数を調整するカットオフ周波数調整工程(ステップS14)と、設定されたカットオフ周波数を用いて、ローパスフィルタを含む補償器により保存されている指令軌道の補正量を計算し、次回の指令軌道を計算する次軌道計算工程(ステップS12,S13)と、を有する。
【選択図】図4

Description

本発明は、指令軌道と実際の軌道との軌道誤差に基づき指令軌道を学習制御し得るロボット制御方法及びロボット制御装置に関する。
近年、人間の手のように複雑で高速な組立を実現するために、例えば多関節アームを利用したロボット装置の開発が進められている。このようなロボット装置は、制御装置から指令軌道を指令することで目標通りに駆動されることが理想的であるが、指令軌道と実際の軌道とには軌道誤差が生じてしまう。しかも、ロボットを高速に駆動するほど、軌道誤差が大きくなるという問題がある。
このようなロボット装置の軌道誤差を小さくするために、目標とする動作を繰り返し、前回の実際の軌道を基に次回の指令軌道を修正することで、軌道誤差を小さくしていく学習制御が提案されている(非特許文献1)。この学習制御によれば、ロボットダイナミクスのパラメータの推定を必要とすることなくフィードフォワード入力を修正することによって、軌道誤差を小さくすることができる。しかし、目標軌道と実際の軌道との軌道誤差に制御系の追従可能な周波数帯域以上の成分が含まれている場合、学習によって動作結果が悪化する可能性がある。そのため、軌道誤差をローパスフィルタ(LPF:Low Pass Filter)により処理し、制御系の追従可能な周波数帯域において学習を行うことで、軌道誤差の高周波成分による動作の悪化を防止する方法が知られている(特許文献1)。
特開平7−271421号公報
川村貞夫,「学習制御:研究の流れと今後の課題」,日本ロボット学会誌,1993,vol.11,no.4,p.509−514
しかしながら、上述した特許文献1の方法で学習制御を行った場合は、制御系の追従可能な周波数帯域を網羅的に学習していくため、繰り返し処理の回数が多くなり、学習の収束に長時間を要するという問題があった。
また、多関節アームの位置姿勢の誤差に基づいて軌道誤差の学習制御を行う場合、無駄時間等の時間遅れ要素やダイナミクスの揺らぎ要素がある。この場合、上述した特許文献1の学習制御では、学習するごとにこれらの要素を反映させるため、軌道誤差の収束性は保証されず、学習制御による動作結果が悪化して軌道誤差が発散していく可能性があるという問題があった。
本発明は、学習制御における学習の収束時間を短縮することが可能で、かつ、学習による軌道誤差の悪化を抑制可能なロボット制御方法及びロボット制御装置を提供することを目的とするものである。
本発明のロボット制御方法は、制御部が、ロボットを指令軌道により駆動制御し、駆動された前記ロボットの実際の軌道を検出し、目標とする目標軌道と前記実際の軌道との軌道誤差に基づき前記指令軌道の補正量を、ローパスフィルタを含む補償器により計算することで前記指令軌道を学習制御し得るロボット制御方法において、前記制御部が、前記軌道誤差を評価した評価値を計算する評価計算工程と、前記制御部が、前記学習制御を実行する学習制御工程と、を備え、前記学習制御工程として、前記制御部が、前記評価計算工程で計算した評価値が記憶部に記憶されている評価値よりも良い評価の場合に、前記記憶部の評価値を前記計算した評価値に更新して保存し、かつ前記記憶部の指令軌道を前記軌道誤差を評価した際の前記指令軌道に更新して保存する良状態保存工程と、前記制御部が、前記評価計算工程で計算した評価値が前記記憶部に記憶されている評価値よりも悪い評価の場合に、前記軌道誤差から前記指令軌道の補正量を計算する前記ローパスフィルタのカットオフ周波数を調整するカットオフ周波数調整工程と、前記制御部が、設定されたカットオフ周波数を用いて、前記ローパスフィルタにより前記記憶部に保存されている指令軌道の補正量を計算し、計算した補正量と前記記憶部に保存されている指令軌道とにより次回の指令軌道を計算する次軌道計算工程と、を有することを特徴とする。
また、本発明のロボット制御装置は、ロボットを指令軌道により駆動制御し、駆動された前記ロボットの実際の軌道を検出し、目標とする目標軌道と前記実際の軌道との軌道誤差に基づき前記指令軌道の補正量を、ローパスフィルタを含む補償器により計算することで前記指令軌道を学習制御し得るロボット制御装置において、前記軌道誤差を評価した評価値を計算し、かつ前記学習制御を実行する制御部と、前記評価値と前記指令軌道とを記憶可能な記憶部と、を備え、前記制御部は、前記学習制御にあって、計算した評価値が記憶部に記憶されている評価値よりも良い評価の場合に、前記記憶部の評価値を前記計算した評価値に更新して保存し、かつ前記記憶部の指令軌道を前記軌道誤差を評価した際の前記指令軌道に更新して保存し、計算した評価値が前記記憶部に記憶されている評価値よりも悪い評価の場合に、前記軌道誤差から前記指令軌道の補正量を計算する前記ローパスフィルタのカットオフ周波数を調整し、設定されたカットオフ周波数を用いて、前記ローパスフィルタにより前記記憶部に保存されている指令軌道の補正量を計算し、計算した補正量と前記記憶部に保存されている指令軌道とにより次回の指令軌道を計算することを特徴とする。
本発明によれば、制御部が、計算した評価値が記憶部に記憶されている評価値よりも良いか悪いかを評価する。そして、制御部は、評価した結果が良ければ、記憶部に記憶された評価値を計算した評価値に更新して保存し、評価した結果が悪ければ、ローパスフィルタのカットオフ周波数を調整する。このため、評価値の良し悪しの評価を行うことなく全ての軌道誤差に基づいて学習制御を行う場合に比べて、評価値が良い場合には誤差に基づいた軌道誤差の修正作業が不要になるので、学習制御の収束時間を短縮することができる。
また、本発明によれば、制御部が、過去の繰り返し動作のうち最良の評価値である軌道での指令軌道及び軌道誤差を、記憶部により保持している。そして、制御部は、軌道誤差が悪化した時に、記憶部に保持されている最良の評価値である軌道での指令軌道及び軌道誤差を用いる。このため、軌道誤差が悪化した時でも最良の軌道誤差よりも悪化することはないので、学習制御による軌道誤差の悪化、即ち発散を抑制することができる。
本発明の第1の実施の形態に係るロボット装置の概略を示す説明図である。 本発明の第1の実施の形態に係るロボット制御装置の概略を示す説明図である。 本発明の第1の実施の形態に係る学習制御の概略を示す説明図である。 本発明の第1の実施の形態に係るロボット制御方法の処理手順を示すフローチャートである。 本発明の第1の実施の形態に係るロボット制御方法のカットオフ周波数調整工程の処理手順を示すフローチャートである。 本発明の第1の実施の形態に係るロボット制御方法におけるカットオフ周波数と評価値との関係を示す説明図である。(a)は変更前の局所探索範囲、(b)は変更すると一部が下限値を下回る局所探索範囲、(c)は下限値を下回らないようにした局所探索範囲である。 本発明の第1の実施の形態に係るロボット制御方法におけるカットオフ周波数と評価値との関係を示す説明図であり、(a)は変更しても一部が下限値を下回らない局所探索範囲、(b)は変更後の局所探索範囲である。 本発明の第1の実施の形態に係るロボット制御方法におけるカットオフ周波数と評価値との関係を示す説明図であり、(a)は変更前の局所探索範囲、(b)は変更後の局所探索範囲である。 本発明の第1の実施の形態に係るロボット制御方法におけるカットオフ周波数と評価値との関係を示す説明図であり、(a)は変更すると一部が上限値を上回る局所探索範囲、(b)は上限値を上回らないようにした局所探索範囲である。 本発明の第1の実施の形態に係るロボット制御方法におけるカットオフ周波数と評価値との関係を示す説明図であり、(a)は変更しても一部が上限値を上回らない局所探索範囲、(b)は変更後の局所探索範囲である。 本発明の第1の実施の形態に係るロボットアームの制御のシミュレーションにおける時間と角度との関係を示す説明図であり、(a)は指令軌道と実際の軌道、(b)は学習回数1回目、(c)は学習回数2回目である。 本発明の第1の実施の形態に係るロボットアームの制御のシミュレーションにおける時間と角度との関係を示す説明図であり、(a)は学習回数3回目、(b)は学習回数4回目、(c)は学習回数5回目である。 本発明の第1の実施の形態に係るロボットアームの制御のシミュレーションにおけるカットオフ周波数と評価値との関係を示す説明図であり、(a)は学習回数5回目までの局所探索範囲、(b)はローパスフィルタ調整後の局所探索範囲である。(c)は、本シミュレーションにおける学習回数6回目の時間と角度との関係を示す説明図である。 (a)は、本発明の第1の実施の形態に係るロボットアームの制御のシミュレーションにおける学習回数20回目の時間と角度との関係を示す説明図である。(b)は、本シミュレーションにおける実施例1及び比較例1の各学習回数を示す説明図である。 本発明の第2の実施の形態に係るロボット制御方法の処理手順を示すフローチャートである。 本発明の第2の実施の形態に係るロボット制御方法に関し、(a)は学習制御の初回で実際の軌道を周波数分析した模式図である。本発明の第2の実施の形態に係るロボットアームの制御のシミュレーションに関し、(b)は実施例2及び比較例2の学習回数と評価値との関係を示す説明図であり、(c)は、本シミュレーションにおける実施例3及び比較例3の各学習回数を示す説明図である。 本発明の第3の実施の形態に係るロボット制御方法の処理手順を示すフローチャートである。 本発明の第3の実施の形態に係るロボットアームの制御のシミュレーションにおける実施例4及び比較例4の各学習回数を示す説明図である。
<第1の実施の形態>
以下、本発明に係る第1の実施の形態を、図1乃至図14(b)に沿って説明する。まず、ロボット装置の概略構成について説明する。図1に示すように、ロボット装置100は、多関節ロボットとしてのロボットアーム(ロボット)200と、ロボットアーム200を制御するロボット制御装置300と、を備えている。また、ロボット装置100は、ロボット制御装置300に複数の教示点のデータを送信する教示装置としてのティーチングペンダント400を備えている。ティーチングペンダント400は、操作者が操作するものであり、ロボットアーム200やロボット制御装置300の動作を指定するのに用いる。
ロボットアーム200は、本実施の形態では、例えば6関節ロボットである。ロボットアーム200は、各関節J1〜J6を各関節軸A1〜A6周りにそれぞれ回転駆動する複数(6つ)のアクチュエータ201〜206を有している。ロボットアーム200は、可動範囲の中であれば任意の3次元位置で任意の3方向の姿勢に、手先(ロボットアーム200の先端)を向けることができる。一般に、ロボットアーム200の位置及び姿勢は、座標系で表現することができる。図1中のToはロボットアーム200の台座に固定した座標系を表し、Teはロボットアーム200の手先に固定した座標系を表す。
本実施の形態では、各アクチュエータ201〜206は、電動モータ211〜216と、電動モータ211〜216に接続された減速機221〜226とを備える。各減速機221〜226は、不図示のベルトやベアリング等を介してそれぞれの関節J1〜J6で駆動するフレームに接続されている。尚、各アクチュエータ201〜206の構成は、これに限定するものではなく、例えば人工筋肉等であってもよい。また、例えば各減速機221〜226には、エンコーダ等の回転検出センサが配置されており、関節の角度を検出できる。各関節J1〜J6の角度が検出できれば、手先の位置や姿勢を計算でき、ロボットアーム200の実際の軌道を検出できる。
ロボットアーム200は、更に、各アクチュエータ201〜206の電動モータ211〜216を駆動制御する駆動制御部としてのサーボ制御部230を有している。サーボ制御部230は、入力した指令軌道に基づき、各関節J1〜J6の位置が指令軌道に追従するよう、各電動モータ211〜216に電流指令を出力し、各電動モータ211〜216の動作を制御する。なお、本実施の形態では、サーボ制御部230を1つの制御装置で構成しているものを説明しているが、各電動モータ211〜216にそれぞれ対応したサーボ制御部を備えていてもよい。
また、図1には4つの教示点p,p,p,pが示されている。ロボットアーム200を最初に駆動する際、これらの教示点は、例えば操作者がティーチングペンダント400を用いて与える。ここで、教示点は、所謂3次元空間内の点ではない。ロボットアーム200をタスク空間で移動させる場合では、教示点は3次元空間の位置及び姿勢であり、これは図1のように、p,p,p,pを座標系として表現される。つまり各教示点は、1つのベクトルとして理解できる。また、ロボットアーム200を関節空間で移動させる場合では、教示点は関節角度である。
ロボット制御装置300は、コンピュータであり、教示点を結ぶ軌道、即ち教示点を補間した目標軌道rを生成する。本明細書では、ティーチングペンダント400等により教示された教示点を用いて初期に設定した軌道を目標とするため、これを目標軌道r(図1に破線で示す)と呼び、サーボ制御部230に指令する軌道を指令軌道uと呼ぶ。また、目標軌道rに従って動かす動作時間をTとする。教示点はベクトルであるので、目標軌道rはベクトルの時系列データ、即ち2次元の配列データである。
ロボットアーム200の関節の角度は、ロボット制御装置300から目標軌道を指令されたサーボ制御部230で制御する。サーボ制御部230は指令軌道uを入力し、ロボットアーム200を動作させ、動作結果である実際の軌道yを出力する。実際の軌道yは目標軌道rと同じベクトルの時系列データ、即ち2次元の配列データである。尚、目標軌道rは、各関節に対し、関節角度で与えてもよいし、直交座標系の座標値で与えてもよい。
ついで、ロボット制御装置300の概略構成を図2に沿って説明する。ロボット制御装置300は、制御部としてのCPU301と、記憶部としてのROM302、RAM303、HDD(ハードディスクドライブ)304、記録ディスクドライブ(記録媒体)305と、各種のインタフェース306〜309と、を備えている。
CPU301には、ROM302、RAM303、HDD304、記録ディスクドライブ305及び各種のインタフェース306〜309が、バス310を介して接続されている。ROM302には、CPU301を動作させるためのプログラム330が格納されている。このプログラム330は、ロボット制御プログラムを含み、詳しくは後述する各部(図3参照)に各種演算処理を実行させるためのプログラムである。RAM303は、CPU301の演算処理結果などを一時的に記憶可能な記憶部である。HDD304は、演算処理結果や各種のデータ(最良指令軌道や最良評価値を含む)を記憶するための記憶部である。
ティーチングペンダント400はインタフェース306に接続されており、CPU301はインタフェース306及びバス310を介してティーチングペンダント400からの教示点のデータの入力を受ける。
サーボ制御部230は、インタフェース309に接続されており、CPU301は、目標軌道rのデータを所定時間間隔でバス310及びインタフェース309を介してサーボ制御部230に出力する。
インタフェース307には、モニタ321が接続されており、モニタ321には、各種画像が表示される。インタフェース308は、書き換え可能な不揮発性メモリや外付けHDD等の外部記憶装置322が接続可能に構成されている。記録ディスクドライブ305は、記録ディスク(記録媒体)331に記録された各種データやプログラム等を読み出すことができる。尚、本発明に係るプログラムが記録される記録媒体としては、記録ディスク331だけに限らず、外部記憶装置322等の不揮発性メモリや外付けHDD等も含まれる。
このロボット制御装置300では、CPU301が、ロボットアーム200を指令軌道により駆動制御し、駆動されたロボットアーム200の実際の軌道を検出する。そして、CPU301は、目標とする目標軌道と実際の軌道との軌道誤差に基づき指令軌道の補正量を、ローパスフィルタを含む補償器により計算することで指令軌道を学習制御し得るようになっている。
次に、本実施の形態に係る学習制御について説明する。学習制御は目標とする動作を繰り返し、前回の実際の軌道を基に次回の指令軌道を修正することで軌道誤差を小さくしていく制御手法である。
本実施の形態の学習制御のブロック図を図3に示す。図3中の記号kは初期値を0とする学習回数であり、図3は第k回目まで学習が進んだ場面を表現している。
ロボット制御装置300は、軌道誤差計算部1、評価値計算部2、評価値判定部3、評価値保存部4、軌道誤差保存部5、補正軌道計算部6、ローパスフィルタ調整部7、指令軌道保存部8、指令軌道計算部9を備えている。これらは、CPU301によりプログラム330が機能することで構成される。
軌道誤差計算部1は、目標軌道rと前回の実際の軌道yとの軌道誤差eを数式1で計算する。尚、軌道誤差eも、目標軌道rや前回の実際の軌道yと同様、ベクトルの時系列データ、即ち2次元の配列データである。
Figure 2016120549
評価値計算部2は、軌道誤差eから評価値Ekを計算する。この評価値Eは、二乗平均平方根を計算する関数をrmsとし、次の数式2で計算する。
Figure 2016120549
なお、評価値Eの計算は、簡単な計算となるPV値(peak to valley)を用い、次の数式3で計算してもよい。
Figure 2016120549
評価値判定部3は、過去の評価値のうち、最も値の良い評価値である最良評価値Ebestと評価値Eとを比較し、評価結果qを出力する。評価結果qは、評価値Eが最良評価値Ebestよりも良い値(良い評価)であるか、悪い値(悪い評価)であるか、つまり改善したか悪化したかのいずれかの値をとる変数である。評価値保存部4は、評価結果qが改善していたら(良い評価の場合)、評価値Eを最良評価値Ebestとして保存する。軌道誤差保存部5は、評価結果qが改善していたら、軌道誤差eを最良軌道誤差ebestとして保存する。指令軌道保存部8は、評価結果qが改善していたら、指令軌道保存部8で保存しておいた前回の指令軌道uを最良指令軌道ubestとして更新して保存する。
補正軌道計算部6は、最良軌道誤差ebestに基づいて、次回の補正軌道(補正量)Δuk+1を数式4で計算する。また、評価結果qが改善していたら、補償器のローパスフィルタ調整部7に入らず、前回設定したカットオフ周波数で補正軌道を計算し、結果を次回の補正軌道Δuk+1として出力する。評価結果qが悪化していたら、ローパスフィルタ調整部7に入り、カットオフ周波数を調整したのち、調整した値を用いて指令値Δuk+1を計算する。尚、最良軌道誤差ebest及び補正軌道Δuk+1も、ベクトルの時系列データ、即ち2次元の配列データである。
Figure 2016120549
ここで、ローパスフィルタは、低い周波数を通過させるフィルタである。例えば、1次のローパスフィルタは数式5の伝達関数で定義される。
Figure 2016120549
数式5において、fはカットオフ周波数、sはラプラス変換のsである。この伝達関数T(s)を実現するフィルタを設計する手法としては、双一次変換等が公知である。具体的な設計手法の説明は省略し、ここでは結果のみを数式6のように記述する。数式6は、カットオフ周波数をパラメータに含んだ計算式である。本実施の形態では、ローパスフィルタを補正軌道計算部6の一部として用い、後述するようにカットオフ周波数fを自動的に探索する。
Figure 2016120549
指令軌道計算部9は、補正軌道Δuk+1と、最良指令軌道ubestとを加算し、次回の指令軌道uk+1を数式7で計算する。尚、指令軌道uに対する次回の指令軌道uk+1であるので、学習の回数を表す添え字kには1を加算し、k+1とする。
Figure 2016120549
次に、図4に、本実施の形態に係る学習制御の動作のフローチャートを示す。このフローチャートは、同じ目標軌道rに従ってロボットアーム200を繰り返し何度も動作させるうちの1回分の動作を示している。この動作の回数は、学習回数kで表し、初回はk=0とする。
ロボットアーム200の駆動を開始し、学習制御を開始すると、CPU301は、ロボットアーム200の駆動が初回であるか否かを判定する(ステップS1)。CPU301が、ロボットアーム200の駆動は初回であると判定した場合は、最良指令軌道ubest、最良評価値Ebest、カットオフ周波数fの各初期値を設定する(ステップS2)。ここでは、CPU301は、最良指令軌道ubestを目標軌道rとし、現時点での最良評価値Ebestを悪い値、具体的には大きな数字や無限大に設定する。また、CPU301は、ローパスフィルタのカットオフ周波数fの初期値を、初期探索範囲の上限値fmax、下限値fminの中間値(例えば、加算平均値)とする。但し、カットオフ周波数fの初期値の決め方はこの限りではなく、例えば上限値fmaxあるいは下限値fminとしてもよい。尚、カットオフ周波数の初期探索範囲、即ち初期探索範囲の上限値fmax、下限値fminは、予め指定しておく。
CPU301は、最初の指令軌道uをubest、即ち目標軌道rとする(ステップS3)。また、CPU301は、指令軌道uを次回の学習制御における前回の指令軌道として保存しておく。そして、CPU301は、指令軌道uをサーボ制御部230に入力することによってロボットアーム200の動作を実行し、出力として実際の軌道yを得る(ステップS4)。CPU301は、学習回数kに1を加えて(ステップS5)、1回目のロボットアーム200の動作を終了する。
一方、ステップS1において、CPU301が、ロボットアーム200の駆動は初回ではないと判定した場合は、ロボット装置100が学習中であるか否かを判定する(ステップS6)。本実施の形態では、CPU301は、学習回数kが所定回数である設定回数kmaxを超えたか否かを判定する。ここで、学習回数kが設定回数kmaxを超えている場合には、ローパスフィルタによる指令軌道の計算が改善しないぐらいに学習が進んでいると判断して、CPU301はロボット装置100が学習中ではないと判定する。そして、CPU301は、上述したステップS3〜S5の処理を実行する。即ち、CPU301が、学習制御を実行した回数をカウントし、回数が設定回数kmaxを超えた場合に、学習制御を中断し、次軌道計算工程で計算した次回の指令軌道を用いてロボットアーム200を駆動するようになっている。
一方、ステップS6において、CPU301が、学習回数kは設定回数kmax未満であると判定した場合は、補償器による指令軌道の計算が改善しないぐらいに学習が進んでいないと判断して、CPU301はロボット装置100が学習中と判定する。そして、CPU301は、軌道誤差計算部1により、目標軌道rと前回の実際の軌道yとの軌道誤差eを計算する(ステップS7)。CPU301は、評価値計算部2により、軌道誤差eから評価値Eを計算する(ステップS8、評価計算工程)。即ち、ロボット制御方法は、CPU301が、軌道誤差eを評価した評価値Eを計算する評価計算工程を有している。
更に、CPU301は、ローパスフィルタ調整中か否かを判定する(ステップS9)。ここで、ローパスフィルタ調整中か否かは、初期値として調整中でないという値が設定されており、その変更は後述するステップS13で行う。CPU301が、ローパスフィルタ調整中ではないと判断した場合は、評価値EがEbestよりも良い値か否か、即ち評価値Eが改善したか否かを判定する(ステップS10)。尚、ロボットアーム200の動作が2回目である場合(k=1)は、初回に最良評価値Ebestが無限大等に設定されているため、確実に評価値Eが改善することになる。
CPU301が、評価値Eは改善したと判定した場合は、最良評価値Ebest、最良軌道誤差ebest、最良指令軌道ubestを、それぞれ今回の評価値E、軌道誤差e、指令軌道uの値に更新する(ステップS11、良状態保存工程)。即ち、ロボット制御方法は、良状態保存工程を有している。良状態保存工程では、CPU301が、評価計算工程で計算した評価値EがRAM303等に記憶されている最良評価値Ebestよりも良い評価の場合に、RAM303等の評価値を計算した評価値に更新して保存する。続けて、良状態保存工程では、CPU301が、RAM303等の最良指令軌道ubestを軌道誤差eを評価した際の指令軌道uに更新して保存するようになっている。
また、CPU301は、補正軌道計算部6により、最良軌道誤差ebestに補償器を作用させ、補正軌道Δuk+1を計算して出力する(ステップS12)。更に、CPU301は、指令軌道計算部9により、最良指令軌道ubestに補正軌道Δuk+1を加えて次回の指令軌道uk+1を計算する(ステップS13)。続けて、CPU301は、上述したステップS4〜S5の処理を実行する。尚、ステップS12〜S13は、次軌道計算工程を構成する。即ち、ロボット制御方法は、次軌道計算工程を有している。次軌道計算工程では、CPU301が、設定されたカットオフ周波数fを用いて、ローパスフィルタによりRAM303等に保存されている最良指令軌道ubestの補正軌道Δuk+1を計算する。続いて、次軌道計算工程では、CPU301が、計算した補正軌道Δuk+1とRAM303等に保存されている最良指令軌道ubestとにより次回の指令軌道uk+1を計算する。
一方、CPU301は、ステップS9においてローパスフィルタ調整中であると判断した場合、あるいはステップS10において評価値Eは改善していないと判定した場合は、ローパスフィルタの調整を行う(ステップS14、カットオフ周波数調整工程)。即ち、ロボット制御方法は、カットオフ周波数調整工程を有している。カットオフ周波数調整工程では、CPU301が、評価計算工程で計算した評価値EがRAM303等に記憶されている最良評価値Ebestよりも悪い評価の場合に、軌道誤差eから指令軌道uの補正軌道Δuを計算するカットオフ周波数fを調整する。
ステップS14で調整されたローパスフィルタカットオフ周波数fは、ステップS12で補償器に与えられ、補正軌道Δuk+1の計算に利用される。尚、ステップS6,S9〜S14は、学習制御工程を構成する。即ち、ロボット制御方法は、CPU301が、学習制御を実行する学習制御工程を備えている。また、学習制御工程は、良状態保存工程と、カットオフ周波数調整工程と、次軌道計算工程と、を有している。
次に、ステップS14のローパスフィルタ調整(カットオフ周波数調整工程)について説明する。図5にローパスフィルタ調整のフローチャートを示す。このフローチャートは、学習回数k回目のとき図3のローパスフィルタ調整部7で行われるローパスフィルタ調整のフローを表わしている。また、ローパスフィルタ調整は学習制御フローの一部であり、図4のステップS14に該当する。
図6(a)は、ローパスフィルタ調整における探索範囲の概略図を表わしている。fminおよびfmaxは、それぞれカットオフ周波数fcの初期探索範囲の下限値および上限値であり、事前に指定した値をとる。f、f、fは、それぞれ学習回数k回目のときの局所探索範囲の最小値(最小周波数)、中間値(中間周波数)、最大値(最大周波数)を表わしている。ここでの中間周波数としては、最小値と最大値との加算平均値としているが、これには限られず、最小値と最大値との間の任意の比率の値としてもよい。また、E、E、Eはそれぞれカットオフ周波数がf、f、fのときの評価値であり、Lは局所探索範囲の長さ(f−f)である。
CPU301は、学習回数k回目でローパスフィルタ調整に入ると、調整モードの判定を行う(ステップS20)。ここで、調整モードとは、学習回数k回目でのローパスフィルタのカットオフ周波数fcの局所探索範囲内のどの点で学習を行っているかのフェーズを表す変数である。調整モードにはmode、mode、modeの3つがある。modeはfの局所探索範囲の最小値fでの学習フェーズ、modeはfの探索範囲の最大値fでの学習フェーズ、そしてmodeは最小値fと最大値fの間の中間値fでの学習フェーズである。
本実施の形態では、調整モードの初期値はmodeとするが、modeまたはmodeとしてもよい。これら調整モードの遷移は後述するように、mode→mode→mode→modeのように循環する。また、初期値として最小値fをfminとし、最大値fをfmaxとする。実際には、例えば、それぞれロボットアーム200の固有振動数よりも低い値を指定するようにする。
CPU301は、調整モードがmodeであると判断した場合は、ローパスフィルタ調整に入っていることを示すフラグをオン状態にする(ステップS21)。尚、初期値では、このフラグはオフ状態であるものとする。そして、CPU301は、調整モードmodeにおける評価値E、軌道誤差e、指令軌道uの初期化(E=Ebest、e=ebest、u=ubest)を行う(ステップS22)。また、これらの値は、後の評価値の比較で使われるため保存しておく。更に、CPU301は、ローパスフィルタのカットオフ周波数fを、現在の局所探索範囲の最小値fに設定する(ステップS23)。尚、ローパスフィルタの調整が初回の場合は、前述したように最小値fは下限値fminとなる。そして、CPU301は、調整モードをmodeとする(ステップS24)。その後、CPU301は、一旦ローパスフィルタ調整フローを終え、指令軌道の計算とロボットアーム200の動作とを実行する(図4中、ステップS12〜S13、S4〜S5)。
次に、CPU301は、学習回数k+1回目で、再びローパスフィルタ調整中か否かの判定に入る(図4中、ステップS9)。ローパスフィルタ調整中のフラグはオン状態であるので、ここではローパスフィルタ調整中と判断され、再びローパスフィルタ調整が実行される(図4中、ステップS14)。
CPU301は、ステップS20において調整モードがmodeであると判断し、ローパスフィルタのカットオフ周波数fを最小値fとしたときの評価値E、軌道誤差e、指令軌道uを保存する(ステップS25)。CPU301は、ローパスフィルタのカットオフ周波数fを、現在の局所探索範囲の最大値fに設定する(ステップS26)。尚、ローパスフィルタの調整が初回の場合は、前述したように最大値fは上限値fmaxとなる。CPU301は、調整モードをmodeとする(ステップS27)。その後、CPU301は、一旦ローパスフィルタ調整フローを終え、指令軌道の計算とロボットアーム200の動作とを実行する(図4中、ステップS12〜S13、S4〜S5)。
次に、CPU301は、学習回数k+2回目で、再びローパスフィルタ調整中か否かの判定に入る(図4中、ステップS9)。ローパスフィルタ調整中のフラグはオン状態であるので、ここではローパスフィルタ調整中と判断され、再びローパスフィルタ調整が実行される(図4中、ステップS14)。
CPU301は、ステップS20において調整モードがmodeであると判断し、ローパスフィルタのカットオフ周波数fを最大値fとしたときの評価値E、軌道誤差e、指令軌道uを保存する(ステップS28)。そして、CPU301は、これまで保存された各評価値E、E、Eを比較して最良値を判定する(ステップS29、カットオフ周波数選定工程)。即ち、カットオフ周波数調整工程は、カットオフ周波数選定工程を有している。カットオフ周波数選定工程では、CPU301が、カットオフ周波数fの初期に設定された初期探索範囲において、局所探索範囲を設定する。続いてカットオフ周波数選定工程では、CPU301が、最小値f、最大値f、中間値fの3つのカットオフ周波数を用いて計算した3つの指令軌道の各々で、ロボットアーム200を駆動させる。続いてカットオフ周波数選定工程では、CPU301が、その結果得られた3つの軌道誤差のうち、最良となる軌道誤差を選択し、選択した軌道誤差に用いられたカットオフ周波数fを選定する。
CPU301は、評価値Eを最良値と判定した場合は、最良評価値Ebest、最良軌道誤差ebest、最良指令軌道ubestを、保存していた調整モードmodeでの評価値E、軌道誤差e、指令軌道uに各々更新する(ステップS30)。CPU301は、この時の最小値fを利用してカットオフ周波数fの局所探索範囲を変更した場合に、変更後の局所探索範囲の最小値fがユーザの設定した下限値fminを下回るか否かを判定する(ステップS31)。ここで、中間値fを最小値fと最大値fとの中点であるとすると、局所探索範囲の判定は下限値fminだけ考慮すればよい。
ここで、CPU301は、変更後の局所探索範囲の最小値fが下限値fminを下回ると判定した場合は、図6(b)に示すようになる。即ち、最小値fの変更前位置が中間値f´となるように変更した後の局所探索範囲の最小値f´が、下限値fminを下回る。尚、図6(b)において、f´、f´、f´はそれぞれ局所探索範囲の変更後のf、f、fの値を示している。この場合、CPU301は、数式8に示す演算を実行して、最小値f、中間値f、最大値fを更新する(ステップS32)。これにより、図6(c)に示すように、局所探索範囲が下限値fminを下回らないように設定される。
Figure 2016120549
ステップS31において、CPU301は、変更後の局所探索範囲の最小値fが下限値fminを下回らないと判定した場合は、図7(a)に示すようになる。即ち、最小値fの変更前位置が中間値f´となるように変更した後の局所探索範囲の最小値f´が、下限値fminを下回らない。この場合、CPU301は、数式9に示す演算を実行して、最小値f、中間値f、最大値fを更新する(ステップS33)。局所探索範囲の長さLはここでは変化させない。これにより、図7(b)に示すように、局所探索範囲が下限値fminを下回らないように設定される。
Figure 2016120549
ステップS29において、CPU301は、評価値Eを最良値と判定した場合は、図8(a)に示すようになる。尚、αは局所探索範囲の縮減率であり、0.0を超え、1.0未満の値でユーザが指定する。この場合、最良評価値Ebest、最良軌道誤差ebest、最良指令軌道ubestは、調整モードがmodeの際に保存されたもののままで良いので、ここでは更新を行なわず、局所探索範囲の縮減のみを行う。この場合、CPU301は、数式10に示す演算を実行して、最小値f及び最大値fを更新する(ステップS34)。これにより、図8(b)に示すように、中間値fを同じくしたまま、局所探索範囲が縮減して設定される。
Figure 2016120549
ステップS29において、CPU301は、評価値Eを最良値と判定した場合は、以下のように処理する。この場合、CPU301は、最良評価値Ebest、最良軌道誤差ebest、最良指令軌道ubestを、保存していた調整モードmodeでの評価値E、軌道誤差e、指令軌道uに各々更新する(ステップS35)。CPU301は、この時の最大値fを利用してカットオフ周波数fの局所探索範囲を変更した場合に、変更後の局所探索範囲の最大値fがユーザの設定した上限値fmaxを超えるか否かを判定する(ステップS36)。ここで、中間値fを最小値fと最大値fとの中点であるとすると、局所探索範囲の判定は上限値fmaxだけ考慮すればよい。
ここで、CPU301は、変更後の局所探索範囲の最大値fが上限値fmaxを超えると判定した場合は、図9(a)に示すようになる。即ち、最大値fの変更前位置が中間値f´となるように変更した後の局所探索範囲の最大値f´が、上限値fmaxを超える。この場合、CPU301は、数式11に示す演算を実行して、最小値f、中間値f、最大値fを更新する(ステップS37)。これにより、図9(b)に示すように、局所探索範囲が上限値fmaxを超えないように設定される。
Figure 2016120549
ステップS36において、CPU301は、変更後の局所探索範囲の最大値fが上限値fmaxを超えないと判定した場合は、図10(a)に示すようになる。即ち、最大値fの変更前位置が中間値f´となるように変更した後の局所探索範囲の最大値f´が、上限値fmaxを超えない。この場合、CPU301は、数式12に示す演算を実行して、最小値f、中間値f、最大値fを更新する(ステップS38)。局所探索範囲の長さLはここでは変化させない。これにより、図10(b)に示すように、局所探索範囲が上限値fmaxを超えないように設定される。
Figure 2016120549
ここで、上述したステップS32,S33,S34,S37,S38は、再設定工程を構成する。即ち、カットオフ周波数調整工程は、再設定工程を有する。再設定工程は、CPU301が、選定されたカットオフ周波数fを含むように、局所探索範囲よりも狭い新たな局所探索範囲の最小値f及び最大値fを設定する。
CPU301は、ステップS32,S33,S34,S37,S38の処理後、ローパスフィルタ調整のフラグをオフ状態にする(ステップS39)。ローパスフィルタ調整のフラグをオフ状態にすることにより、図4のステップS14の判定でローパスフィルタ調整のフローに入らなくなり、更に学習を続けていくことになる。
CPU301は、ローパスフィルタのカットオフ周波数fを、現在の局所探索範囲の中間値fに設定する(ステップS40)。CPU301は、調整モードをmodeとする(ステップS41)。その後、CPU301は、ローパスフィルタ調整フローを終え、指令軌道の計算とロボットアーム200の動作とを実行する(図4中、ステップS12〜S13、S4〜S5)。
ここで、本実施の形態の学習制御のシミュレーションについて説明する。ここでのシミュレーションは、理解を容易にするため、制御対象を1軸の回転関節として考える。尚、ここでは回転関節としているが、直動関節の場合であっても、同じシミュレーションとなる。指令軌道uに対する応答結果である出力軌道yは、数式13で示す伝達関数で表現できるものとする。
Figure 2016120549
数式13は、2次遅れとして知られている伝達関数である。wは固有振動周波数、ζは臨界減衰係数比と呼ばれる。この伝達関数は、ロボットアーム200の振動を模擬した特性を与える。
本シミュレーションでは、周波数10Hz、即ちw=2πf=20π、ζ=0.15とした。この制御対象の応答は、振動しながら目標の値に近づいていく。本シミュレーションでは、0.6秒間で100度動く5次曲線を用いた。また、初期探索範囲の下限値fmin、上限値fmaxはそれぞれ5Hz、20Hzとし、縮減率αは0.5とした。
まず、目標軌道に5次曲線を設定し、図4のステップS13によって、ロボットアーム200の動作を実行した。指令軌道(目標軌道)uに対する実際の軌道(出力軌道)yを数式13で計算した結果、図11(a)に示すように、指令軌道uと実際の軌道yとはほぼ重複した。
学習回数1回目(k=1)では、ローパスフィルタのカットオフ周波数fは下限値fminおよび上限値fmaxから12.5Hzの中間値fである。図11(b)に示すように、二乗平均平方根(RMS)を採用して評価値Eを計算すると、評価値E=1.00371となった。学習回数2回目(k=2)では、図11(c)に示すように、評価値E=0.05128となった。評価値Eは評価値Eに比べて小さくなったので、実際の軌道yが改善された。尚、実際の軌道yが改善されたので、中間値f及び局所探索範囲は変わらない。
学習回数3回目(k=3)では、図12(a)に示すように、評価値E=0.06013となった。評価値Eは評価値Eに比べて大きくなり、実際の軌道yが悪化したので、ローパスフィルタの調整を行った。尚、学習回数3回目における中間値f及び局所探索範囲は、学習回数1〜2回目と同じである。学習回数4回目(k=4)では、カットオフ周波数fを最小値fとして学習及びロボットアーム200の動作を行い、その結果、図12(b)に示すように評価値E=E=0.04004となった。学習回数5回目(k=5)では、カットオフ周波数fを最大値fとして学習及びロボットアーム200の動作を行い、その結果、図12(c)に示すように評価値E=E=0.12048となった。
ここで、図13(a)に、学習回数5回目までの局所探索範囲を示す。ここでの評価値Eは、初期のカットオフ周波数fが中間値fに設定されているため、評価値Eと等価である。図13(a)に示すように、評価値Eが最も良い値であると判定されるので、局所探索範囲及びカットオフ周波数fが図5のステップS33、S39,S40において更新される。その結果、図13(b)に示すように、カットオフ周波数は、f=8.75Hzとなった。
続いて、学習回数6回目(k=6)では、図13(c)に示すように、評価値E=0.03700となった。評価値Eは、カットオフ周波数fを中間値fとした中での最良の評価値Eに比べて小さくなったので、実際の軌道yが改善された。学習回数が20回(k=20)では、図14(a)に示すように、評価値E20=0.00946となった。評価値E20は評価値Eに比べて小さくなったので、実際の軌道y20が改善された。
次に、本実施の形態のローパスフィルタ調整について、実行した場合と実行しなかった場合とで学習回数を比較した。ここでは、カットオフ周波数fを5〜20Hzの1Hz刻みの16段階に設定し、各カットオフ周波数fにおいて学習回数を20回に設定し、学習回数の最大数が320回となる順探索において比較を行った。
(比較例1)
本実施の形態のローパスフィルタ調整を用いなかった場合は、学習回数の最大数となる320回の学習を行った。
(実施例1)
本実施の形態のローパスフィルタ調整を用いた場合は、上述の順探索における最小の評価値を下回る学習回数は28回となった。従って、本実施の形態のローパスフィルタ調整を用いた場合は、用いない場合に比べて、学習回数を約91%削減でき、学習に掛かる時間を大幅に削減できることが判明した。
上述したように、本実施の形態のロボット制御装置300によれば、CPU301が、計算した評価値EがRAM303等に記憶されている最良評価値Ebestよりも良いか悪いかを評価する。そして、CPU301は、評価した結果が良ければ、RAM303等に記憶された最良評価値Ebestを計算した評価値Eに更新して保存し、評価した結果が悪ければ、ローパスフィルタのカットオフ周波数fを調整する。このため、評価値Eの良し悪しの評価を行うことなく全ての軌道誤差eに基づいて学習制御を行う場合に比べて、評価値Eが良い場合には誤差に基づいた軌道誤差eの修正作業が不要になるので、学習制御の収束時間を短縮することができる。
また、このロボット制御装置300によれば、CPU301が、過去の繰り返し動作のうち最良評価値Ebestである軌道での最良指令軌道ubest及び最良軌道誤差ebestを、RAM303等により保持している。そして、CPU301は、軌道誤差eが悪化した時に、RAM303等に保持されている最良評価値Ebestである軌道での最良指令軌道ubest及び最良軌道誤差ebestを用いる。このため、軌道誤差eが悪化した時でも最良軌道誤差ebestよりも悪化することはないので、学習制御による軌道誤差eの悪化、即ち発散を抑制することができる。
また、このロボット制御装置300によれば、学習中に悪化したタイミングで前回の指令値を学習に用いず、最適なローパスフィルタのカットオフ周波数fを探索する。このため、学習による軌道誤差eの低減と、ローパスフィルタのカットオフ周波数fの自動調整による軌道誤差eの低減とを、両立させることができる。このとき、学習による周波数応答の変化に対応したローパスフィルタのカットオフ周波数fの探索を行うため、変化を気にすることなく高速かつ精度の高い学習制御が可能となる。
また、このロボット制御装置300によれば、CPU301は、学習回数kが設定回数kmaxを超えたと判断した場合は(ステップS6のN)、ローパスフィルタによる指令軌道uの計算が改善しないぐらいに学習が進んでいるものと判断する。この場合に、CPU301は、ロボット装置100が学習中ではないと判定する。このため、CPU301が無限に学習を続けることを防止しながら、学習が適切に進んだ時点で学習を中断することができる。
また、このロボット制御装置300によれば、軌道誤差eの評価値EがRAM303等に記憶されている最良評価値Ebestよりも良くなると、その際の指令軌道uが保存される。このため、記憶されている最良指令軌道ubestが、より良い指令軌道に更新されていき、学習によって指令軌道が悪くなることを防止することができる。また、ローパスフィルタ調整中でないときに軌道誤差eの評価値Eが最良評価値Ebestより悪くなると、その際の指令軌道uを保存せずに、補償器のローパスフィルタのカットオフ周波数fを、評価値が良くなるように探索する。そのため、異なる制御帯域に対応することができ、更なる学習効果を見込むことができる。これにより、学習制御を重ねていくことで、軌道誤差eを改善していくことができ、軌道誤差eを小さくすることができる。さらに、ローパスフィルタ調整では探索範囲を調整毎に移動、あるいは縮減しているため、ローパスフィルタのカットオフ周波数fを高速に探索することができ、学習の時間を短縮することができる。
<第2の実施の形態>
次に、本発明に係る第2の実施の形態を、図15及び図16に沿って説明する。本実施の形態におけるロボット装置100は、CPU301がロボットアーム200の初回駆動時に初期探索範囲を自動的に設定する点で、第1の実施の形態と構成を異にしている。それ以外の構成については、第1の実施の形態と同様であるので、符号を同じくして詳細な説明は省略する。
図15に、本実施の形態に係る学習制御の動作のフローチャートを示す。このフローチャートは、第1の実施の形態と同様に、同じ目標軌道rに従ってロボットアーム200を繰り返し何度も動作させるうちの1回分の動作を示している。上述したように、初回駆動時における初期探索範囲の自動的設定(ステップS50〜S52)以外の処理に関しては、第1の実施の形態と同様であるので、符号を同じくして詳細な説明を省略する。
ロボットアーム200の駆動を開始し、学習制御を開始すると、CPU301は、ロボットアーム200の駆動が初回であるか否かを判定する(ステップS1)。CPU301が、ロボットアーム200の駆動は初回であると判定した場合は、前回の実際の軌道について周波数分析を行う(ステップS50、周波数分析工程)。即ち、ロボット制御方法は、周波数分析工程を有している。
周波数分析工程では、具体的には、CPU301は、学習制御工程(ステップS9〜S14)の実行前に、前回の実際の軌道の周波数分析を行う。CPU301は、前回の学習制御で実際の軌道を保持していることを利用し、初回に前回の実際の軌道をフーリエ変換等の公知の手法で周波数分析する。学習制御の初回で前回の実際の軌道を周波数分析した場合、例えば図16(a)に示すような結果が得られる。
そして、CPU301は、周波数分析の結果に基づきロボットアーム200の固有振動数を選定する(ステップS51、固有振動数選定工程)。即ち、ロボット制御方法は、固有振動数選定工程を有している。固有振動数選定工程では、具体的には、図16(a)に示すように、peak1は利得が最大であるピーク値、peak2は利得が2番目の大きさであるピーク値である。また、利得がpeak1となる周波数はfpeak1であり、利得がpeak2となる周波数はfpeak2である。ここでは、fpeak1をサーボ遅れによる低周波成分の周波数、fpeak2をロボットの固有振動数であることを前提とし、カットオフ周波数fが固有振動数近傍に収束すると仮定する。
更に、CPU301は、固有振動数選定工程で選定された固有振動数に基づき、カットオフ周波数fの初期探索範囲を設定する(ステップS52、初期探索範囲設定工程)。即ち、ロボット制御方法は、初期探索範囲設定工程を有している。初期探索範囲設定工程では、具体的には、CPU301は、下限値fminをfpeak1に設定し、上限値fmaxをfpeak2以上、2fpeak2−fpeak1以下に設定する。CPU301は、fpeak1、fpeak2をそれぞれ5Hz、10Hzとし、上限値fmaxを2fpeak2−fpeak1に設定することで、初期探索範囲を5〜15Hzに設定する。
次いで、CPU301は、最良指令軌道ubest、最良評価値Ebest、カットオフ周波数fの各初期値を設定する(ステップS2)。以下の処理は、第1の実施の形態と同様である。
ここで、本実施の形態の周波数分析(ステップS50〜S52)について、実行した場合と実行しなかった場合との学習回数と評価値との関係を、数式13で示す伝達関数を用いたシミュレーションにより比較した。
(比較例2)
本実施の形態の周波数分析を実行しなかった場合は、シミュレーションの条件として、周波数10Hz、即ちw=2πf=20π、ζ=0.15とし、0.6秒間で100度動く5次曲線を用いた。また、初期探索範囲の下限値fmin、上限値fmaxはそれぞれ5Hz、20Hzとし、縮減率αは0.5とした。その結果、図16(b)に示すように、第1の実施の形態と同様に、学習回数20回目での評価値が0.00946となった。
(実施例2)
本実施の形態の周波数分析を実行した場合は、CPU301は、初期探索範囲を自動的に設定した。その結果、図16(b)に示すように、学習回数4回目で評価値が0.0075となり、比較例2の評価値より良くなった。従って、本実施の形態の周波数分析を実行することで、実行しない場合に比べて、少ない学習回数で同等の評価値を得られ、また、同じ学習回数で良好な評価値を得られることが判明した。
次に、本実施の形態の周波数分析(ステップS50〜S52)について、実行した場合と実行しなかった場合とで学習回数を比較した。
(比較例3)
本実施の形態の周波数分析を実行しなかった場合は、比較例2と同様に、初期探索範囲を5〜20Hzとし、図16(c)に示すように、カットオフ周波数fを調整しながら学習回数を20回に設定した。
(実施例3)
本実施の形態の周波数分析を実行した場合は、CPU301による周波数分析に基づいて初期探索範囲が自動設定されたので、比較例3に比べて初期探索範囲が短くなった。このため、図16(c)に示すように、比較例3と同等の評価値を得ながらも、学習回数を4回に抑えることができた。従って、本実施の形態の周波数分析を実行した場合は、実行しない場合に比べて、学習回数を約80%削減でき、学習に掛かる時間を大幅に削減できることが判明した。
上述したように、本実施の形態のロボット制御装置300によれば、CPU301が、学習制御の実行前に前回の実際の軌道の周波数分析を行い、ロボットアーム200の固有振動数を選定し、カットオフ周波数fの初期探索範囲を設定する。このため、ローパスフィルタのカットオフ周波数fの初期探索範囲がCPU301によって自動的に決定されるので、ユーザが初期探索範囲を予め指定する必要がなくなり、作業工程を削減することができる。
ここで、ユーザがCPU301の自動設定によらず手動で初期探索範囲を指定する場合には、初期探索範囲の上限値fmax及び下限値fminを指定する必要がある。しかし、上限値fmax及び下限値fminの適切な値は、事前にロボットアーム200の固有振動数を実験等で調べなければ不明である。このため、ユーザは初期探索範囲を大きく見積もることが多く、この場合、初期探索範囲が広くなって学習に要する時間が長くなってしまう。これに対し、本実施の形態のロボット制御装置300によれば、CPU301により初期探索範囲を自動設定することで、初期探索範囲を最低限の範囲に絞ることができるので、学習回数を削減し学習に要する時間を削減することができる。
<第3の実施の形態>
次に、本発明に係る第3の実施の形態を、図17及び図18に沿って説明する。本実施の形態におけるロボット装置100は、学習制御の終了条件を増加した点で、第1の実施の形態と構成を異にしている。それ以外の構成については、第1の実施の形態と同様であるので、符号を同じくして詳細な説明は省略する。
図17に、本実施の形態に係る学習制御の動作のフローチャートを示す。このフローチャートは、第1の実施の形態と同様に、同じ目標軌道rに従ってロボットアーム200を繰り返し何度も動作させるうちの1回分の動作を示している。上述したように、学習制御の終了条件(ステップS60,S61)の増加以外に関しては、第1の実施の形態と同様であるので、符号を同じくして詳細な説明を省略する。
ロボットアーム200の駆動を開始し、学習制御を開始して、CPU301が、ステップS9においてローパスフィルタ調整中ではないと判断し、ステップS10において評価値Eは改善したと判定した場合は、以下のように処理する。この場合、CPU301が、最良評価値Ebest、最良軌道誤差ebest、最良指令軌道ubestを、それぞれ今回の評価値E、軌道誤差e、指令軌道uの値に更新する(ステップS11)。
ここで、CPU301は、最良評価値Ebestが評価値の所定の閾値Ethより小さいか否かを判断する(ステップS60、良状態保存工程)。即ち、CPU301は、軌道誤差が所定の閾値よりも小さいか否かを判断する。CPU301が、最良評価値Ebestは所定の閾値Ethより小さくないと判断した場合は、現在の探索幅Lが探索幅の閾値Lthより小さいか否かを判断する(ステップS61、再設定工程)。即ち、CPU301は、得られた局所探索範囲の幅が所定の閾値よりも小さいか否かを判断する。CPU301が、現在の探索幅Lは探索幅の所定の閾値Lthより小さくないと判断した場合は、補正軌道計算部6により補正軌道Δuk+1を計算して出力する(ステップS12)。以下は、第1の実施の形態と同様の処理が行われる。
一方、ステップS60において、CPU301が、最良評価値Ebestは所定の閾値Ethより小さいと判断した場合は、実際の軌道が改善して評価値が十分良い値になったと判断して、学習制御を中断する(ステップS62)。また、ステップS61において、CPU301が、現在の探索幅Lは探索幅の所定の閾値Lthより小さいと判断した場合は、ローパスフィルタ調整が進み、カットオフ周波数fが十分収束したと判断して、学習制御を中断する(ステップS62)。ステップS62において、CPU301は、学習中のフラグをオフ状態にする。
CPU301は、次軌道計算工程で計算した次回の指令軌道uk+1をubest、即ち目標軌道rとする(ステップS3)。CPU301は、指令軌道uk+1を次回の学習制御における前回の指令軌道として保存しておく。そして、CPU301は、指令軌道uk+1をサーボ制御部230に入力することによってロボットアーム200の動作を実行し、出力として実際の軌道yk+1を得る(ステップS4)。CPU301は、学習回数kに1を加えて(ステップS5)、ロボットアーム200の動作を終了する。尚、ステップS62において、CPU301は学習中のフラグをオフ状態にするので、動作の繰り返しを継続しても、ステップS6において学習中でないと判定する。このため、CPU301は、補正軌道の計算及びローパスフィルタの調整は行わず、常に最良指令軌道ubestでロボットアーム200の駆動が実行される。
次に、本実施の形態の評価値に基づく学習制御の終了(ステップS60)について、採用した場合と採用しなかった場合とで学習回数を比較した。
(比較例4)
本実施の形態の評価値に基づく学習制御の終了を採用しなかった場合は、比較例2と同様に、初期探索範囲を5〜20Hzとし、図18に示すように、カットオフ周波数fを調整しながら学習回数を20回に設定した。
(実施例4)
本実施の形態の評価値に基づく学習制御の終了を採用した場合は、比較例4と同等の評価値を得るために、評価値の閾値Ethを0.03とした。その結果、図18に示すように、学習回数を12回に抑えることができた。従って、本実施の形態の評価値に基づく学習制御の終了を採用した場合は、採用しない場合に比べて、学習回数を約40%削減でき、学習に掛かる時間を削減できることが判明した。
上述したように、本実施の形態のロボット制御装置300によれば、CPU301が、最良評価値Ebestあるいは局所探索範囲の長さLに基づいて、カットオフ周波数fが十分収束したことを判断可能になっている(ステップS60,S61)。また、CPU301は、カットオフ周波数fが十分収束したと判断した場合は、学習制御を中断するようになっている(ステップS62)。これにより、CPU301は必要以上の回数の学習の実行を未然に防止して、所望の精度を得るための学習回数を最小限にできる。
尚、上述した第3の実施の形態では、第1の実施の形態と同様に、CPU301は、学習回数kが設定回数kmaxを超えたと判断した場合は(ステップS6)、ロボット装置100が学習中ではないと判定しているが、これには限られない。例えば、CPU301は、学習回数kに基づいてロボット装置100が学習中か否かを判定しなくてもよい。即ち、第3の実施の形態では、CPU301は、学習回数kに基づいて学習中か否かを判定しなくても、最良評価値Ebestあるいは局所探索範囲の長さLに基づいて、カットオフ周波数fが十分収束したことを判断できる。
ここで、第3の実施の形態では、設定回数kmaxとして、ローパスフィルタの調整を行っても軌道が改善しなくなる程度に設定する必要がある。しかし、そのような回数は、実際にロボットアーム200を駆動させて予め見積もる必要がある。これに対し、CPU301が学習回数kに基づいて学習中か否かを判定しないようにした場合は、学習回数の設定回数kmaxの設定が不要になるので、作業工程を削減することができる。
また、上述した第1〜第3の実施の形態では、再設定工程において、CPU301は、大まかには以下のように処理を実行している。即ち、CPU301は、選定されたカットオフ周波数fが最小値fである場合は、最小値fを中心とする半分の局所探索範囲を再設定する(ステップS33)。また、CPU301は、選定されたカットオフ周波数fが中間値fである場合は、中間値fを中心とする半分の局所探索範囲を再設定する(ステップS34)。更に、CPU301は、選定されたカットオフ周波数fが最大値fである場合は、最大値fを中心とする半分の局所探索範囲を再設定する(ステップS38)。但し、これらには限られない。
例えば、再設定工程において、CPU301は、以下のように処理を実行するようにしてもよい。即ち、CPU301は、選定されたカットオフ周波数fが最小値fである場合は、最小値fから中間値fまでを新たな局所探索範囲として再設定する。また、CPU301は、選定されたカットオフ周波数fが中間値fである場合は、最小値f及び最大値fのうちの軌道誤差の小さい方の周波数から中間値fまでを新たな局所探索範囲として再設定する。更に、CPU301は、選定されたカットオフ周波数fが最大値fである場合は、中間値fから最大値fまでを新たな局所探索範囲として再設定する。この場合も、学習制御における学習の収束時間を短縮することが可能で、かつ、学習による軌道誤差の悪化を抑制可能になる。
また、上述した各実施の形態では、目標軌道r及び実際の軌道yは、関節J1〜J6に対する軌道とした場合について説明したが、これには限られず、例えば、ロボットアーム200の手先の位置姿勢に対する目標軌道及び実際の軌道としてもよい。この場合、サーボ制御部230はロボットアーム200の手先の位置姿勢の入力に対し、各関節J1〜J6の角度を計算、即ち逆機構計算してロボットアーム200を動作させる。また、動作結果は、得られた各関節J1〜J6の角度からロボットアーム200の手先の位置姿勢を計算、即ち順機構計算して、それを出力とすることができる。
また、上述した各実施の形態では、6関節ロボットを一例に説明したが、これには限られず、関節の数はどのような数であってもよいし、それら関節が回転関節であっても直動関節であっても構わない。
また、上述した各実施の形態では、目標軌道及び実際の軌道を位置ベクトルの時系列データとして説明したが、これには限られず、例えば、ロボットアーム200の実際の軌道を、位置ではなく速度で設定するようにしてもよい。この場合、サーボ制御部230は速度の入力に対し、動作結果として、得られた速度を出力とすることができる。また同様に、ロボットアーム200の目標軌道を、位置ではなく加速度の時系列データで設定するようにしてもよい。
上述した第1〜第3の実施の形態の各処理動作は、具体的にはロボット制御装置300により実行される。従って、上述した機能を実現するソフトウェアのロボット制御プログラムを記録した記録媒体をロボット制御装置300に供給し、記録媒体に格納されたロボット制御プログラムをCPU301が読み出し実行することによって達成されるようにしてもよい。この場合、記録媒体から読み出されたプログラム自体が上述した実施の形態の機能を実現することになり、プログラム自体及びそのプログラムを記録した記録媒体は本発明を構成することになる。
また、上述した例では、コンピュータ読み取り可能な記録媒体がROM302であり、ROM302にプログラム330が格納される場合について説明したが、これに限定するものではない。プログラム330は、コンピュータ読み取り可能な記録媒体であれば、いかなる記録媒体に記録されていてもよい。例えば、プログラム330を供給するための記録媒体としては、HDD304、外部記憶装置322、記録ディスク331等を用いてもよい。
200…ロボットアーム(ロボット)、300…ロボット制御装置、301…CPU(制御部)、302…ROM(記憶部)、303…RAM(記憶部)、304…ハードディスクドライブ(記憶部)、305…記録ディスクドライブ(記憶部)、322…外部記憶装置(記憶部)、331…記録ディスク(記録媒体)

Claims (16)

  1. 制御部が、ロボットを指令軌道により駆動制御し、駆動された前記ロボットの実際の軌道を検出し、目標とする目標軌道と前記実際の軌道との軌道誤差に基づき前記指令軌道の補正量を、ローパスフィルタを含む補償器により計算することで前記指令軌道を学習制御し得るロボット制御方法において、
    前記制御部が、前記軌道誤差を評価した評価値を計算する評価計算工程と、
    前記制御部が、前記学習制御を実行する学習制御工程と、を備え、
    前記学習制御工程として、
    前記制御部が、前記評価計算工程で計算した評価値が記憶部に記憶されている評価値よりも良い評価の場合に、前記記憶部の評価値を前記計算した評価値に更新して保存し、かつ前記記憶部の指令軌道を前記軌道誤差を評価した際の前記指令軌道に更新して保存する良状態保存工程と、
    前記制御部が、前記評価計算工程で計算した評価値が前記記憶部に記憶されている評価値よりも悪い評価の場合に、前記軌道誤差から前記指令軌道の補正量を計算する前記ローパスフィルタのカットオフ周波数を調整するカットオフ周波数調整工程と、
    前記制御部が、設定されたカットオフ周波数を用いて、前記ローパスフィルタにより前記記憶部に保存されている指令軌道の補正量を計算し、計算した補正量と前記記憶部に保存されている指令軌道とにより次回の指令軌道を計算する次軌道計算工程と、を有する、
    ことを特徴とするロボット制御方法。
  2. 前記カットオフ周波数調整工程として、
    前記制御部が、前記カットオフ周波数の初期に設定された初期探索範囲において、設定された局所探索範囲の最小周波数、最大周波数、及び前記最小周波数と前記最大周波数の間の中間周波数の3つのカットオフ周波数を用いて計算した3つの指令軌道の各々で前記ロボットを駆動させ、その結果得られた3つの軌道誤差のうち、最良となる軌道誤差を選択し、選択した前記軌道誤差に用いられたカットオフ周波数を選定するカットオフ周波数選定工程と、
    前記制御部が、選定された前記カットオフ周波数を含むように、前記局所探索範囲よりも狭い新たな局所探索範囲の最小周波数及び最大周波数を設定する局所探索範囲の再設定工程と、を有する、
    ことを特徴とする請求項1記載のロボット制御方法。
  3. 前記再設定工程は、前記制御部が、選定された前記カットオフ周波数が前記最小周波数である場合は前記最小周波数から前記中間周波数までを新たな局所探索範囲として再設定し、選定された前記カットオフ周波数が前記最大周波数である場合は前記中間周波数から前記最大周波数までを新たな局所探索範囲として再設定し、選定された前記カットオフ周波数が前記中間周波数である場合は前記最小周波数及び前記最大周波数のうちの前記軌道誤差の小さい方の周波数から前記中間周波数までを新たな局所探索範囲として再設定する、
    ことを特徴とする請求項2記載のロボット制御方法。
  4. 前記制御部が、前記学習制御工程の実行前に、前記実際の軌道の周波数分析を行う周波数分析工程と、
    前記制御部が、前記周波数分析の結果に基づき前記ロボットの固有振動数を選定する固有振動数選定工程と、
    前記制御部が、前記固有振動数選定工程で選定された前記固有振動数に基づき、前記カットオフ周波数の前記初期探索範囲を設定する初期探索範囲設定工程と、を備える、
    ことを特徴とする請求項2又は3に記載のロボット制御方法。
  5. 前記再設定工程において、前記制御部が、得られた前記局所探索範囲の幅が所定の閾値よりも小さいと判断した場合に、前記学習制御を中断し、前記次軌道計算工程で計算した次回の指令軌道を用いて前記ロボットを駆動する、
    ことを特徴とする請求項2乃至4のいずれか1項に記載のロボット制御方法。
  6. 前記学習制御工程において、前記制御部が、前記学習制御を実行した回数をカウントし、前記回数が所定回数を超えた場合に、前記学習制御を中断し、前記次軌道計算工程で計算した次回の指令軌道を用いて前記ロボットを駆動する、
    ことを特徴とする請求項1乃至5のいずれか1項に記載のロボット制御方法。
  7. 前記良状態保存工程において、前記制御部が、前記軌道誤差が所定の閾値よりも小さいと判断した場合に、前記学習制御を中断し、前記次軌道計算工程で計算した次回の指令軌道を用いて前記ロボットを駆動する、
    ことを特徴とする請求項1乃至6のいずれか1項に記載のロボット制御方法。
  8. 請求項1乃至7のいずれか1項に記載のロボット制御方法の前記各工程をコンピュータに実行させるためのプログラム。
  9. 請求項8に記載のロボット制御方法の前記各工程をコンピュータに実行させるためのプログラムが記録されたコンピュータが読み取り可能な記録媒体。
  10. ロボットを指令軌道により駆動制御し、駆動された前記ロボットの実際の軌道を検出し、目標とする目標軌道と前記実際の軌道との軌道誤差に基づき前記指令軌道の補正量を、ローパスフィルタを含む補償器により計算することで前記指令軌道を学習制御し得るロボット制御装置において、
    前記軌道誤差を評価した評価値を計算し、かつ前記学習制御を実行する制御部と、
    前記評価値と前記指令軌道とを記憶可能な記憶部と、を備え、
    前記制御部は、前記学習制御にあって、
    計算した評価値が記憶部に記憶されている評価値よりも良い評価の場合に、前記記憶部の評価値を前記計算した評価値に更新して保存し、かつ前記記憶部の指令軌道を前記軌道誤差を評価した際の前記指令軌道に更新して保存し、
    計算した評価値が前記記憶部に記憶されている評価値よりも悪い評価の場合に、前記軌道誤差から前記指令軌道の補正量を計算する前記ローパスフィルタのカットオフ周波数を調整し、
    設定されたカットオフ周波数を用いて、前記ローパスフィルタにより前記記憶部に保存されている指令軌道の補正量を計算し、計算した補正量と前記記憶部に保存されている指令軌道とにより次回の指令軌道を計算する、
    ことを特徴とするロボット制御装置。
  11. 前記制御部は、前記カットオフ周波数の初期に設定された初期探索範囲において、設定された局所探索範囲の最小周波数、最大周波数、及び前記最小周波数と前記最大周波数の間の中間周波数の3つのカットオフ周波数を用いて計算した3つの指令軌道の各々で前記ロボットを駆動させ、その結果得られた3つの軌道誤差のうち、最良となる軌道誤差を選択し、選択した前記軌道誤差に用いられたカットオフ周波数を選定し、
    選定された前記カットオフ周波数を含むように、前記局所探索範囲よりも狭くなる新たな局所探索範囲の最小周波数及び最大周波数を設定する、
    ことを特徴とする請求項10記載のロボット制御装置。
  12. 前記制御部は、選定された前記カットオフ周波数が前記最小周波数である場合は前記最小周波数から前記中間周波数までを新たな局所探索範囲として再設定し、選定された前記カットオフ周波数が前記最大周波数である場合は前記中間周波数から前記最大周波数までを新たな局所探索範囲として再設定し、選定された前記カットオフ周波数が前記中間周波数である場合は前記最小周波数及び前記最大周波数のうちの前記軌道誤差の小さい方の周波数から前記中間周波数までを新たな局所探索範囲として再設定する、
    ことを特徴とする請求項11記載のロボット制御装置。
  13. 前記制御部は、前記学習制御の実行前に、前記実際の軌道の周波数分析を行い、前記周波数分析の結果に基づき前記ロボットの固有振動数を選定し、選定された前記固有振動数に基づき、前記カットオフ周波数の前記初期探索範囲を設定する、
    ことを特徴とする請求項11又は12に記載のロボット制御装置。
  14. 前記制御部は、得られた前記局所探索範囲の幅が所定の閾値よりも小さいと判断した場合に、前記学習制御を中断し、計算して得られた次回の指令軌道を用いて前記ロボットを駆動する、
    ことを特徴とする請求項11乃至13のいずれか1項に記載のロボット制御装置。
  15. 前記制御部は、前記学習制御を実行した回数をカウントし、前記回数が所定回数を超えた場合に、前記学習制御を中断し、計算して得られた次回の指令軌道を用いて前記ロボットを駆動する、
    ことを特徴とする請求項10乃至14のいずれか1項に記載のロボット制御装置。
  16. 前記制御部は、前記軌道誤差が所定の閾値よりも小さいと判断した場合に、前記学習制御を中断し、計算して得られた次回の指令軌道を用いて前記ロボットを駆動する、
    ことを特徴とする請求項10乃至15のいずれか1項に記載のロボット制御装置。
JP2014261015A 2014-12-24 2014-12-24 ロボット制御方法及びロボット制御装置 Pending JP2016120549A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014261015A JP2016120549A (ja) 2014-12-24 2014-12-24 ロボット制御方法及びロボット制御装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014261015A JP2016120549A (ja) 2014-12-24 2014-12-24 ロボット制御方法及びロボット制御装置

Publications (1)

Publication Number Publication Date
JP2016120549A true JP2016120549A (ja) 2016-07-07

Family

ID=56326903

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014261015A Pending JP2016120549A (ja) 2014-12-24 2014-12-24 ロボット制御方法及びロボット制御装置

Country Status (1)

Country Link
JP (1) JP2016120549A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106873364A (zh) * 2016-12-31 2017-06-20 中南大学 一种智能机器人的任务优先级确定方法
JP2020082314A (ja) * 2018-11-29 2020-06-04 京セラドキュメントソリューションズ株式会社 学習装置、ロボット制御装置、及びロボット制御システム
CN111552237A (zh) * 2019-02-12 2020-08-18 发那科株式会社 机器学习装置、控制装置、以及机器学习的搜索范围的设定方法
CN113515044A (zh) * 2021-07-02 2021-10-19 北京理工大学 一种轮式移动机器人的基于学习预测跟踪控制方法及装置
CN114728411A (zh) * 2019-11-25 2022-07-08 三菱电机株式会社 控制装置和机器人***

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106873364A (zh) * 2016-12-31 2017-06-20 中南大学 一种智能机器人的任务优先级确定方法
JP2020082314A (ja) * 2018-11-29 2020-06-04 京セラドキュメントソリューションズ株式会社 学習装置、ロボット制御装置、及びロボット制御システム
JP7247552B2 (ja) 2018-11-29 2023-03-29 京セラドキュメントソリューションズ株式会社 学習装置、ロボット制御装置、及びロボット制御システム
CN111552237A (zh) * 2019-02-12 2020-08-18 发那科株式会社 机器学习装置、控制装置、以及机器学习的搜索范围的设定方法
CN111552237B (zh) * 2019-02-12 2023-12-01 发那科株式会社 机器学习装置、控制装置、以及机器学习的搜索范围的设定方法
CN114728411A (zh) * 2019-11-25 2022-07-08 三菱电机株式会社 控制装置和机器人***
CN114728411B (zh) * 2019-11-25 2024-06-07 三菱电机株式会社 控制装置、机器人***和控制方法
CN113515044A (zh) * 2021-07-02 2021-10-19 北京理工大学 一种轮式移动机器人的基于学习预测跟踪控制方法及装置
CN113515044B (zh) * 2021-07-02 2022-08-26 北京理工大学 一种轮式移动机器人的基于学习预测跟踪控制方法及装置

Similar Documents

Publication Publication Date Title
JP6347595B2 (ja) ロボット制御方法、及びロボット制御装置
JP2016120549A (ja) ロボット制御方法及びロボット制御装置
EP2835228B1 (en) Robot apparatus and robot controlling method
US7912584B2 (en) Power consumption estimation apparatus
US20130317646A1 (en) Robot program changing device
JP6697491B2 (ja) 機械学習装置、サーボモータ制御装置、サーボモータ制御システム、及び機械学習方法
JP6193891B2 (ja) 調整可能なトレードオフ係数を用いて非干渉性の閉ループステップ試験を行う装置および方法
TWI572468B (zh) Automatic adjustment method of offset automatic adjustment device and robot
WO2018019111A1 (zh) 机器人及其关节运动控制方法和装置
TWI733738B (zh) 結合多致動器的比例積分微分控制方法與系統
CN112417755A (zh) 一种主从式手术机器人轨迹预测控制方法
JP2016198828A5 (ja)
US11029650B2 (en) Machine learning device, control system, and machine learning method
JP2015174185A (ja) ロボットのシミュレーション装置及び方法、制御装置、及びロボットシステム
WO2020039616A1 (ja) 自律学習型ロボット装置及び自律学習型ロボット装置の動作生成方法
CN109507879B (zh) 控制装置以及机器学习装置
KR20170119197A (ko) 궤도 추적 에러의 최대 진폭을 줄이기 위한 제어기 설계 방법 및 이를 이용한 제어기
US20200301376A1 (en) Machine learning device, control system, and machine learning
US11287801B2 (en) Control device, CNC device, and control method
US10684594B2 (en) Machine learning device, servo motor controller, servo motor control system, and machine learning method
JPWO2019092852A1 (ja) サーボ制御装置
JP7378640B2 (ja) ロボット制御装置およびロボット制御方法
US10901374B2 (en) Machine learning device, control device, and machine learning method
JP2020121358A (ja) 学習制御装置、ロボット制御装置およびロボット
JP7053941B2 (ja) ロボット制御装置