(57)【要約】モータ出力トルク値τｍＡのＮ個分（Ｎは正の整数）の平均値であるモータ出力トルク平均値τｍＡＡが、第１の異常判定基準値τｍｔｈを超え、外力トルク推定値τｄＡのＮ個分の平均値である外力トルク推定平均値τｄＡＡが、第２の異常判定基準値τｄｔｈを超えた場合に異常と判定することにより、基準データの測定、記憶を必要とせず、生産ライン稼働中の異常判定も可能である。
2009142006.tif 000002
【特許請求の範囲】
【請求項１】
モータ出力トルク値のＮ個分（Ｎは正の整数）の平均値であるモータ出力トルク平均値が、所定の前記Ｎ個分のモータ出力トルク平均値から得たモータ出力トルク平均値の基準値に、第１の所定値を加えた第１の異常判定基準値を超えるか否かを、ロボットの動作中に判定するステップと、
外力トルク推定値のＮ個分の平均値である外力トルク推定平均値が、所定の前記Ｎ個分の外力トルク推定平均値から得た外力トルク推定平均値の基準値に、第２の所定値を加えた第２の異常判定基準値を超えるか否かを前記ロボットの動作中に判定するステップと、
前記モータ出力トルク平均値が前記第１の異常判定基準値を超え、かつ、前記外力トルク推定平均値が前記第２の異常判定基準値を超えた場合に異常と判定するステップと
を備えたロボットの異常判定方法。
【請求項２】
ＮＮ個（ＮＮは正の整数）のモータ出力トルク値と前記モータ出力トルク平均値との差が予め定めた所定の値より小さいときの前記モータ出力トルク平均値を、前記モータ出力トルク平均値の基準値と設定し、このときの前記外力トルク推定平均値を前記外力トルク推定平均値の基準値と設定するステップを備えた請求項１記載のロボットの異常判定方法。
【請求項３】
ＮＮ個の外力トルク推定値と前記外力トルク推定平均値との差が予め定めた所定の値より小さいときの前記外力トルク推定平均値を、前記外力トルク推定平均値の基準値と設定し、このときの前記モータ出力トルク平均値を前記モータ出力トルク平均値の基準値と設定するステップを備えた請求項１記載のロボットの異常判定方法。
【請求項４】
前記モータ出力トルク平均値が前記第１の異常判定基準値を超え、前記外力トルク推定平均値が前記第２の異常判定基準値を超えない場合、または、前記外力トルク推定平均値が前記第２の異常判定基準値を超え、前記モータ出力トルク平均値が前記第１の異常判定基準値を超えない場合は、前記モータ出力トルク平均値の基準値と前記外力トルク推定平均値の基準値を設定する請求項２または３記載のロボットの異常判定方法。
【請求項５】
前記モータ出力トルク値および前記外力トルク推定値は、予め決められた単位時間内の前記モータ出力トルク値および前記外力トルク推定値の他の平均値である請求項１記載のロボットの異常判定方法。
【請求項６】
モータ出力トルク値のＮ個分（Ｎは正の整数）の平均値であるモータ出力トルク平均値と、所定の前記Ｎ個分のモータ出力トルク平均値から得たモータ出力トルク平均値の基準値との差が、第１の所定の値を超えるか否かを、ロボットの動作中に判定するステップと
外力トルク推定値のＮ個分の平均値である外力トルク推定平均値と、所定の前記Ｎ個分の外力トルク推定平均値から得た外力トルク推定平均値の基準値との差が、第２の所定の値を超えるか否かを、前記ロボットの動作中に判定するステップと、
前記モータ出力トルク平均値と前記モータ出力トルク平均値の基準値との差が前記第１の所定の値を超え、かつ、前記外力トルク推定平均値と前記外力トルク推定平均値の基準値との差が前記第２の所定の値を超えた場合に異常と判定するステップと
を備えたロボットの異常判定方法。
【請求項７】
ＮＮ個のモータ出力トルク値と前記モータ出力トルク平均値との差が予め定めた所定の値より小さいときの前記モータ出力トルク平均値を、前記モータ出力トルク平均値の基準値と設定し、このときの前記外力トルク推定平均値を前記外力トルク推定平均値の基準値と設定するステップを備えた請求項６記載のロボットの異常判定方法。
【請求項８】
ＮＮ個の外力トルク推定値と前記外力トルク推定平均値との差が予め定めた所定の値より小さいときの前記外力トルク推定平均値を、前記外力トルク推定平均値の基準値と設定し、このときの前記モータ出力トルク平均値を前記モータ出力トルク平均値の基準値と設定するステップを備えた請求項６記載のロボットの異常判定方法。
【請求項９】
前記モータ出力トルク平均値と前記モータ出力トルク平均値の基準値との差が前記第１の所定の値を超え、かつ、前記外力トルク推定平均値と前記外力トルク推定平均値の基準値との差が前記第２の所定の値を超えない場合、または、前記外力トルク推定平均値と前記外力トルク推定平均値の基準値との差が前記第２の所定の値を超え、かつ、前記モータ出力トルク平均値と前記モータ出力トルク平均値の基準値との差が前記第１の所定の値を超えない場合には、前記モータ出力トルク平均値の基準値と前記外力トルク推定平均値の基準値を設定する請求項７または８記載のロボットの異常判定方法。
【請求項１０】
前記モータ出力トルク値および前記外力トルク推定値は、予め決められた単位時間内の前記モータ出力トルク値および前記外力トルク推定値の他の平均値である請求項６記載のロボットの異常判定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モータにより駆動されるロボット、特に、多関節型ロボットの異常判定方法に関するものである。
【背景技術】
【０００２】
近年、生産リードタイム短縮の要求が高まっている。しかし、溶接やハンドリング等に用いられる垂直あるいは水平の多関節型ロボットにおいて、ロボットを駆動するモータや減速機等の機構部品に故障が生じて交換が必要となった場合、交換のために生産を数時間にわたって停止しなければならず、大きな問題となっている。【０００３】
ロボットを駆動するモータや減速機等に故障が生じた場合、摩擦力が上昇してモータ駆動力が増加する場合が大半である。そこで、ロボットが完全に動作不能になるまでにモータ駆動力の異常状態を知ることができれば、休日や夜間等の生産ライン休止中にモータ等の機構部品を交換することが可能となり、生産に与える影響を減じることができる。【０００４】
そこで、故障に起因して発生するモータの速度波形の変動に着目してロボットの異常を検出する方法が知られている（例えば、特許文献１参照）。また、駆動側の仕事率（モータ出力仕事率）と負荷側の仕事率（ロボットの運動方程式演算から得られる仕事率）の差に着目してロボットの異常を検出する方法も知られている（例えば、特許文献２参照）。【０００５】
前者の速度波形の変動から異常を判定する方法では、次に挙げる問題点がある。１つ目は、個々のロボットで正常状態における速度波形データを基準データとして測定しておき、かつ、記憶しておく必要がある点である。２つ目は、異常判定を行う場合、基準となる動作パターンでロボットを動作させなければならない点である。従って、生産ライン稼働時のモータ速度波形データは異常判定のための速度波形データとは異なるので、当然、生産ラインの稼働中には異常判定を行うことができない。また、例え生産ライン休止等で異常判定を実施できる時間があるとしても、異常判定を行うためだけに基準となる動作パーンで動作させなければならない。そのため、異常測定作業工数のコストが発生する。また、生産ラインの稼動時間が長くコストに厳しい生産現場において、ロボットの異常判定を行うためだけに上記２つの点を行うことは現実的には非常に困難である。【０００６】
また、後者の仕事率の差による異常判定方法では、前者の問題点が解決され、基準データの測定や記憶も必要なく、生産ライン稼働中でも判定が可能である。しかしながら、駆動側の仕事率は正確に計算できても、負荷側の仕事率が正確に計算できるとは限らない。その理由は、ユーザによりロボットに装着される負荷（溶接用トーチやハンドリングツールやワーク等）のパラメータ（質量、重心位置、イナーシャ等）が正確でなければ、ロボットの運動方程式による仕事率の計算に誤差が発生するからである。特許文献２では、装着負荷を含むロボット機構部の質点モデルに関する運動方程式と、角度、角速度、及び角加速度により負荷トルク値を算出し、それに角速度を乗じることで負荷側の仕事率を求めている。【０００７】
近年の産業用ロボットでは、加減速の最適化や衝突検出の高精度化にも正確な負荷パラメータが要求されている。従って、負荷パラメータの入力装置や自動測定機能を備えたロボットも多く見られる。しかしながら、負荷パラメータの入力や自動測定機能の使用を実行するか否かはユーザに任せられており、必ずしも正確な負荷パラメータが入力されているとは限らない。もし、負荷の設定パラメータと実パラメータとの間に大きな差があると、負荷側の仕事率には大きな誤差が生じてしまい、異常と誤判定する可能性がでてくる。【０００８】
また、駆動側の仕事率が増加する原因としては、ロボットを駆動するモータや減速機等の故障による摩擦上昇でモータ駆動力が増加することだけではない。ロボットが他の物と接触した場合や、ロボットに装着されたケーブルに張力が加わる場合等、外力を受けてモータ駆動力が増減することも原因となる。ただし、前者の摩擦が上昇する場合は、増えた摩擦エネルギーを補うためにモータ駆動力も増加する。しかし、後者の外力を受ける場合は駆動側の仕事率が増加する方向に変化するとは限らない。例えば、ケーブルの張力増加がロボットの重力を支える力になり、駆動側の仕事率が減少する可能性がある。このような場合でも駆動側の仕事率と負荷側の仕事率の差は拡大するので、機構の故障以外の原因でも異常と判定してしまう可能性がある。【０００９】
図１１は上述したケーブルの張力増加がロボットの重力を支える力になる場合を説明するための図であり、従来の溶接ロボットシステムの概略構成を示している。【００１０】
図１１において、消耗電極である溶接ワイヤ１０１は、ワイヤ送給モータ１０３により、ワイヤースプール１０２から中空構造のトーチケーブル１１１（点線で示している）を通って溶接トーチ１０４のへ送られる。溶接電源装置１０５は、溶接トーチ１０４および溶接チップ１０６を経由して溶接ワイヤ１０１と被溶接物である母材１０７との間に所定の溶接電流Ｉ及び溶接電圧Ｖを印加してアーク１０８を発生させる。また、溶接電源装置１０５は、ワイヤ送給モータ１０３の制御を行って溶接施工を行う。ロボット１０９は、溶接トーチ１０４を保持し、溶接開始位置（図示せず）に位置決めを行うと共に溶接線（図示せず）に沿って溶接トーチ１０４を移動させる。このようなロボット全体の制御は、ロボット制御装置１１０により行われる。【００１１】
このとき、例えばユーザが溶接ワイヤ１０１の形状維持による送給性能確保や周辺物との干渉回避を目的として、トーチケーブル１１１を上方から吊すための治具１１２を設置することが良く行われる。なお、ロボット１０９の動作に伴いトーチケーブル１１１も移動する。従って、治具１１２には、ばねやゴムなどの弾性体が用いられることが多い。このため、トーチケーブル１１１を介して、溶接トーチ１０４およびそれを保持するロボット１０９にも上方へ引っ張る力が働き、ロボット１０９の重力を支える力となる。特に、溶接トーチ１０４が装着されるロボット先端部は、容量の小さなモータが搭載されるので、このようなトーチケーブル１１１の張力変化は無視できないものとなる。また、このような治具１１２の選定や取り付けや交換はユーザによって行われる。したがって、治具１１２を用いることによって、あるいは治具１１２の取り付けや交換によって、異常が発生したと誤判定してしまう可能性がある。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開昭６３−１２３１０５号公報
【特許文献２】特開平１１−１２９１８６号公報
【非特許文献】
【００１３】
【非特許文献１】マニピュレータの動的衝突検出、小菅一弘、他１名、日本機械学会［Ｎｏ．９９−９］ロボティクス・メカトロニクス講演会’９９講演論文集２Ａ１−１１−０３０
【発明の概要】
【００１４】
本発明は、基準データの測定、記憶が必要なく、生産ライン稼働中の判定も可能であり、正確な負荷パラメータが入力されていない場合や外力を受けた場合でも異常と誤判定してしまうことを低減するロボットの異常判定方法を提供するものである。
【００１５】
本発明は、モータ出力トルク値のＮ個分（Ｎは正の整数）の平均値であるモータ出力トルク平均値が、所定のＮ個分のモータ出力トルク平均値から得たモータ出力トルク平均値の基準値に、第１の所定値を加えた第１の異常判定基準値を超えるか否かを、ロボットの動作中に判定するステップと、外力トルク推定値のＮ個分の平均値である外力トルク推定平均値が、所定のＮ個分の外力トルク推定平均値から得た外力トルク推定平均値の基準値に、第２の所定値を加えた第２の異常判定基準値を超えるか否かをロボットの動作中に判定するステップと、モータ出力トルク平均値が第１の異常判定基準値を超え、かつ、外力トルク推定平均値が第２の異常判定基準値を超えた場合に異常と判定するステップとを備えている。
【００１６】
かかる構成によれば、基準データの測定、記憶を必要とせず、生産ライン稼働中の判定も可能である。また、正確な負荷パラメータが入力されていない場合や外力を受けた場合でも、異常と誤判定してしまうことを低減することができる。
【図面の簡単な説明】
【００１７】
【図１】図１は、本発明の一実施の形態におけるロボット異常判定を説明するブロック図である。
【図２】図２は、図１における異常判定部の詳細を示すブロック図である。
【図３】図３は、同実施の形態におけるロボットの異常判定方法の単位時間内平均演算処理を示すフローチャートである。
【図４】図４は、同実施の形態におけるロボットの異常判定方法の異常判定基準値設定処理を示すフローチャートである。
【図５】図５は、図４のフローチャートにおけるモータ出力トルク移動平均値に基づく異常判定基準値設定課程を説明する第１の図である。
【図６】図６は、図４のフローチャートにおけるモータ出力トルク移動平均値に基づく異常判定基準値設定課程を説明する第２の図である。
【図７】図７は、図４のフローチャートにおける外力トルク移動平均値に基づく異常判定基準値設定課程を説明する図である。
【図８】図８は、同実施の形態におけるロボットの異常判定方法の異常判定処理を示すフローチャートである。
【図９】図９は、図８のフローチャートにおけるモータ出力トルク移動平均値に基づく異常判定課程を説明する図である。
【図１０】図１０は、図８のフローチャートにおける外力トルク移動平均値に基づく異常判定課程を説明する図である。
【図１１】図１１は、従来の溶接ロボットシステムを示す構成図である。
【発明を実施するための形態】
【００１８】
以下、本発明を図面を用いて説明する。なお、本発明はこれに限られるものではない。
【００１９】
（実施の形態）
図１は、本発明の一実施の形態におけるロボットの異常判定方法を説明するブロック図であって、ロボット異常判定を含む位置制御ループを示している。図２は、図１における異常判定を示すブロック図である。図３は、同実施の形態におけるロボットの異常判定方法の、モータ出力トルク値および外力トルク値の単位時間内平均値演算処理を示すフローチャートである。図４は、同実施の形態におけるロボットの異常判定方法の、モータ出力トルク値および外力トルク値の移動平均値に基づく異常判定基準値設定処理を示すフローチャートである。
【００２０】
なお、本実施の形態で説明するロボットの異常判定方法は、例えば、図１１に示す従来と同様の溶接システムの構成に適用できる。すなわち、本実施の形態は、図１１に示す溶接システムにおけるロボット制御装置１１０での制御方法が従来とは異なる。したがって、本実施の形態では、図１１に示す溶接システムの構成を例として説明する。
【００２１】
図１において、位置指令θｃｏｍは、ユーザにより指示された始点位置および終点位置に基づいて得られる。位置制御部６は、位置指令θｃｏｍと、後述するモータ／外力トルク部１８からフィードバックされたモータ角速度ωｍとを入力として比例制御（Ｐ制御）を行い、速度指令ωｃｏｍを出力する。速度制御部１０は、速度指令ωｃｏｍと、フィードバックされたモータ角速度ωｍを入力として比例・積分制御（ＰＩ制御）を行い、モータ電流指令Ｉｍを生成する。
【００２２】
以下、図１に示すブロック図の動作を詳細に説明する。図１において、位置制御部６は、位置指令θｃｏｍ（例えば、トーチを搭載したロボットの関節角）と、フィードバックされたモータ角速度ωｍ（例えば、ロボット角軸の角速度）を積分したモータ位置θｍとの差分値に基づいて、速度指令ωｃｏｍを生成する。
【００２３】
速度制御部１０は、速度指令ωｃｏｍと、フィードバックされたモータ角速度ωｍの差分値に基づいてモータ電流指令Ｉｍを生成する。
【００２４】
モータ／外力トルク部１８は、溶接トーチ１０４と溶接トーチ１０４を回転させるモータとを含む。モータ／外力トルク部１８では、モータで発生するモータ出力トルク値τｍや、溶接トーチ１０４に加わる外力トルク値τｄｉｓや、移動摩擦トルク値τμが発生する。これらのトルク値に基づいて、モータ速度を制御するモータ角速度ωｍを出力し、位置制御部６および速度制御部１０にフィードバックする。モータ／外力トルク部１８は、制御系が駆動する負荷であって、モータ電流指令Ｉｍにより発生するモータ出力トルク値τｍによって、実際の角速度ωｍがどのように変化するかを示したものである。
【００２５】
外力トルク推定部３０は、外力トルク値τｄｉｓをセンサレスで推定する。すなわち、外力トルク値τｄｉｓの推定値である外力トルク推定値τｄｉｓｏを出力する。
【００２６】
ところで、外力トルク値をセンサレスで推定する方法としては、動力学演算方式や外乱推定オブザーバ方式が知られている。動力学演算方式は、モータの駆動電流で発生したトルク値からモータ及び減速機のイナーシャと摩擦で損失するトルク値を差し引いた減速機出力トルク値より、ロボットの逆動力学演算から求めたロボットの動力学トルク値を差し引いて外力トルク値を求める方式である（非特許文献１参照）。外乱推定オブザーバ方式は、外乱推定オブザーバを用いて衝突力を求める方式である。本実施の形態では、前者の動力学演算方式を用いた場合を例にして説明する。
【００２７】
図１において、モータ出力トルク値τｍは、減速機が剛体であると仮定すると、モータ駆動側から見た場合は（数１−１）で示され、負荷側から見た場合は（数１−２）で示される。
【００２８】
τｍ＝Ｋｔ×Ｉｍ      （数１−１）
τｍ＝τｄｙｎ＋τｄｉｓ＋Ｊｍ×αｍ＋Ｄ×ωｍ＋τμ      （数１−２）
Ｋｔ：モータトルク定数
Ｉｍ：モータ電流
ωｍ：モータ角速度
αｍ：モータ角加速度（モータ角速度ωｍの微分値）
Ｊｍ：モータイナーシャ（ロータ＋減速機１次側）
Ｄ：粘性摩擦係数
τμ：動摩擦トルク値
τｄｙｎ：動力学トルク値（重力トルク値と慣性力と遠心力とコリオリ力の和）
τｄｉｓ：外力トルク値
また、動摩擦トルク値τμは、以下に示す（数２）で計算できる。
【００２９】
τμ＝Ｋμ×ｓｇｎ      （数２）
Ｋμ：動摩擦の大きさ
ｓｇｎ＝１（ωｍ＞０）、０（ωｍ＝０）、−１（ωｍ＜０）
また、（数１−２）の右辺にある外力トルク値τｄｉｓは、（数１−１）と（数１−２）より、以下に示す（数３）に変形して求めることが出来る。
【００３０】
τｄｉｓ＝Ｋｔ×Ｉｍ−（Ｊｍ×αｍ＋Ｄ×ωｍ＋Ｋμ×ｓｇｎ＋τｄｙｎ）      （数３）
なお、（数３）において、Ｋｔ×Ｉｍ−Ｊｍ×αｍ−Ｄ×ωｍ−Ｋμ×ｓｇｎはモータが減速機に出力するトルク値である。
【００３１】
図１において、外力トルク推定部３０は、（数３）の演算を行うブロックとして示している。
【００３２】
外力トルク推定部３０において、動力学トルク推定値τｄｙｎｏは、動力学トルク演算部２６において、ロボットを構成する全軸のモータ角速度ωｍのフィードバックとロボットの機械パラメータを用いて逆動力学演算を実行することで求められる。また、モータ出力トルク推定値τｍｏは、モータ電流指令Ｉｍを用いて（数１−１）で計算される。外力トルク推定部３０は、動力学トルク推定値τｄｙｎｏとモータ出力トルク推定値τｍｏを用いて、（数３）から外力トルク推定値τｄｉｓｏを求める。その結果、外力トルク推定値τｄｉｓｏとモータ出力トルク推定値τｍｏを異常判定装置３２へ出力する。
【００３３】
図２は、図１における異常判定装置３２の詳細を示すブロック図である。図２を用いて、異常判定装置３２の動作を説明する。なお、以下の説明において、単位時間とは異常判定を行う間隔と定義する。この単位時間は、例えば１時間等である。また、ロボットが停止している時間は除き、稼動している時間をいう。
【００３４】
単位時間平均部３５では、外力トルク推定部３０から出力されたモータ出力トルク推定値τｍｏおよび外力トルク推定値τｄｉｓｏのそれぞれの絶対値の単位時間平均値であるモータ出力トルク平均値τｍAおよび外力トルク平均値τｄAを算出する。
【００３５】
この算出方法を図３のフローチャートに示す。図３の処理はモータ出力トルク推定値τｍｏおよび外力トルク推定値τｄｉｓｏの演算周期毎に実施する。
【００３６】
図３において、まず、当該軸角速度ωｍおよび他軸角速度ωｍの中で絶対値が最大の角速度ωｍＭＡＸが、平均処理の実行を判定する予め定められた角速度閾値ωｍｔｈより大きいかどうかを判定する（ステップＳ３０１）。ステップＳ３０１で、最大角速度ωｍＭＡＸが角速度閾値ωｍｔｈより大きい場合に（ステップＳ３０１のＹ）ステップＳ３０２に進み、それ以外（ステップＳ３０１のＮ）では処理を終了させる。なお、ステップＳ３０１の条件を設ける理由は、ロボットがユーザによる停止操作やセンサ信号入力待ち等で停止している場合、その停止時間は不確定であり、その状態も含めて単位時間平均すると、平均値にバラツキが生じるからである。また、ここでは、モータ角速度を監視する例を挙げたが、ロボットが動作していることが確認できれば、他の方法を用いても良い。例えばロボットプログラム内で動作命令が実行されている時、位置指令が生成されている時等でロボット動作の判定をしても良い。
【００３７】
ステップＳ３０２では、モータ出力トルク推定値の絶対値｜τｍｏ｜の積算値τｍＳおよび外力トルク推定値の絶対値｜τｄｉｓｏ｜の積算値τｄＳおよび積算回数ｉを演算する。
【００３８】
その後、ステップＳ３０３では、積算回数ｉが予め定めた平均回数ｎｕｍに到達したかを判断する。ステップＳ３０３で、積算回数ｉが平均回数ｎｕｍに到達していれば（ステップＳ３０３のＹ）ステップＳ３０４に進み、到達していなければ（ステップＳ３０３のＮ）処理を終える。
【００３９】
ステップＳ３０４では、各積算値τｍＳ、τｄＳを平均回数ｎｕｍで割り、ロボット動作の単位時間平均値であるモータ出力トルク平均値τｍＡおよび外力トルク平均値τｄＡを算出する。
【００４０】
例えばロボット動作の単位時間を１時間と設定し、モータ出力トルク推定値τｍｏおよび外力トルク推定値τｄｉｓｏが１０ミリ秒毎に演算されていたとすると、平均回数はｎｕｍ＝３６００００回と言うことになる。
【００４１】
次に、この単位時間平均値（例えば、１時間の平均値）であるモータ出力トルク平均値τｍＡと外力トルク平均値τｄＡをデータ蓄積部３６に蓄積する。単位時間ｊ回目（例えば、単位時間が１時間であればｊ時間目）のモータ出力トルク平均値τｍＡをτｍＡ［ｊ］と定義する。現在が単位時間でｘ回目で、ｘ回目までの蓄積個数をＮ個（Ｎは正の整数）としたとすると、モータ出力トルク値τｍＡ［ｘ−Ｎ＋１］からτｍＡ［ｘ］までのデータを蓄積する。
【００４２】
例えば、現在が単位時間で１０００回目（ｘ＝１０００）、データ蓄積個数が４８個（Ｎ＝４８）とすると、モータ出力トルク値τｍＡ［９５３］からτｍＡ［１０００］までのデータを蓄積していることになる。単位時間が１時間であると、ロボット動作４８時間分のデータを蓄積することになる。外力トルク平均値τｄＡ[ｊ]についても同様である。
【００４３】
移動平均部３７では、データ蓄積部３６に蓄積されたＮ個分のデータの現在の移動平均τｍＡＡ［ｘ］およびτｄＡＡ［ｘ］を、単位時間ｘ回目のモータ出力トルク平均値および単位時間ｘ回目の外力トルク平均値に対して、それぞれ（数４−１）、（数４−２）により求める。
【００４４】
【数４−１】
2009142006.tif 000003
【００４５】
【数４−２】
2009142006.tif 000004
【００４６】
異常判定基準値設定部３８では、図４に示すフローチャートに基づいて、モータ出力トルク値の単位時間内平均値τｍＡ［ｘ−ＮＮ＋１］（ＮＮは正の整数）からτｍＡ［ｘ］までのデータが、単位時間Ｎ個の移動平均値τｍＡＡ[ｘ]を基準として、一定範囲内のバラツキに収まっているかを判断する。すなわち、ＮＮ個の単位時間内平均値τｍＡ［ｊ］と単位時間Ｎ個の移動平均値τｍＡＡ[ｊ]との差が、予め定めた所定値より小さいかどうかを判断する。その結果、一定の範囲内にあれば、その単位時間Ｎ個の移動平均値τｍＡＡ[ｘ]を基準値として設定する。その後、設定した移動平均値τｍＡＡ[ｘ]の基準値に基づいて、図２に示すモータ出力トルク異常判定基準値τｍｔｈ（第１の異常判定値）および外力トルク異常判定基準値τｄｔｈ（第２の異常判定値）を決定し、異常判定基準値設定済フラグｆｔｈに「１」をセットする。
【００４７】
以下、図４のフローチャートを説明する。図４に示すフローチャートは、異常判定単位時間毎に実施する。図４において、ステップＳ４０１では、異常判定基準値設定済フラグｆｔｈが「０」かどうかを判定する。ステップＳ４０１で、異常判定基準値設定済フラグｆｔｈが「０」であれば（ステップＳ４０１のＹ）、異常判定基準値が設定されていないのでステップＳ４０２へ進む。ステップＳ４０１で、異常判定基準値設定済フラグｆｔｈが「１」であれば（ステップＳ４０１のＮ）、既に異常判定基準値が設定されているので処理を終了する。
【００４８】
ステップＳ４０２では、モータ出力トルク値の平均値τｍＡ［ｘ−ｋ］と移動平均値τｍＡＡ［ｘ］の差の絶対値が、単位時間平均のバラツキを判断する閾値τｍｔｈ１より小さいかを判定する。モータ出力トルク値の平均値τｍＡ［ｘ−ｋ］と移動平均値τｍＡＡ［ｘ］の差の絶対値が閾値τｍｔｈ１より小さい場合は（ステップＳ４０２のＹ）、ステップＳ４０３に移行する。しかし、それ以外の場合は（ステップＳ４０２のＮ）、処理を終了する。なお、閾値τｍｔｈ１は、例えば実験等により予め求めておくことができる。図５に示す本実施の形態では、モータ最大トルク値の５％としている。この値は、小さくするほど、負荷率が安定して一定になるまで、モータ発生トルク異常判定基準値τｍｈが定まらない。つまり、基準値の妥当性は向上するものの、基準値が定まらないので異常判定がなかなか実施されないと言うことになる。したがって、この値は、実際の使用状況から適切な値に定めればよい。
【００４９】
ステップＳ４０３では演算ステップ数ｋに「１」を加算する。ステップＳ４０４では、演算ステップ数ｋがバラツキ判定個数ＮＮ回に到達しているかどうか判定する。ステップＳ４０３で演算ステップ数ｋがＮＮ回に到達していれば（ステップＳ４０３のＹ）、制御系が安定していると判断してステップＳ４０５へ移行する。しかし、演算ステップ数ｋがＮＮ回に到達していない場合は（ステップＳ４０３のＮ）、制御系がまだ安定していないと判断してステップＳ４０２へ戻る。
【００５０】
ステップＳ４０５では、ＮＮ個のモータ出力トルク平均値τｍＡ［ｘ］が一定のバラツキ範囲内であったときの移動平均値τｍＡＡ［ｘ］に基づいて、モータ出力トルク異常判定基準値τｍｈを計算する。さらに、このときの外力トルク異常判定基準値τｄｔｈを計算し、異常判定基準値設定済フラグｆｔｈに「１」をセットして処理を終える。なお、モータ出力トルク異常判定基準値τｍｈは、移動平均値τｍＡＡ［ｘ］にモータ出力トルク異常基準値を設定するための加算値τｍｔｈ２（第１の所定値）を加算して算出する。また、このときの外力トルク異常判定基準値τｄｔｈは、移動平均値τｄＡＡ［ｘ］に外力トルク異常判定基準値を設定するための加算値τｄｔｈ２（第２の所定値）を加算して算出する。ここで、モータ出力トルク異常基準値を設定するための加算値τｍｔｈ２と外力トルク異常判定基準値を設定するための加算値τｄｔｈ２は、例えば実験等により予め決めておくことができる値である。図６に示す本実施の形態では、モータ最大トルクの８％としている。また、図７に示す本実施の形態では、５％としている。この値は、小さくするほど、異常判定の感度が高くなるが、誤判定の可能性も大きくなる。したがって、この値は、実際の使用状況から適切な値に定めればよい。
【００５１】
ここまでの処理を説明するための波形を図５、図６、図７に示す。図５は、図４のフローチャートにおけるモータ出力トルク移動平均値に基づく異常判定基準値設定課程を説明するための第１の図である。図５において、横軸は単位時間処理回数ｘである（例えば単位時間が１時間であればｘ時間）。縦軸はモータトルク最大値に対するモータ出力トルク平均値τｍＡの比率である。なお、本実施の形態では、理解を助けるために、以下「比率」という表現を用いずに、単に「モータ出力トルク平均値τｍＡ」などと言う。「×」印で示しているのはモータ出力トルク値の単位時間内平均値τｍＡであり、実線（図５では黒点で示されている）は単位時間Ｎ個の移動平均値τｍＡＡである。図５では、蓄積個数（移動平均個数）Ｎと、バラツキ判定個数ＮＮが「２４」のときを示しており、ｘ＝２４のとき初めて移動平均τｍＡＡ［２４］は計算される。この時点では、移動平均τｍＡ［１］〜τｍＡ［２４］は移動平均τｍＡＡ［２４］を基準に±τｍｔｈ１の範囲外にもデータがある。そのため、図４のステップＳ４０２の条件式が満たされず、ステップＳ４０５でのモータ出力トルク異常判定基準値τｍｔｈの計算は行われない。
【００５２】
図６は、図５と同様に、ｘ＝３７まで時間が経過した時の波形である。図６では、単位時間２４個の３７回目の移動平均値τｍＡＡ［３７］を基準に、モータ出力トルク平均値τｍＡ［１４］〜τｍＡ［３７］の２４個（ＮＮ個に相当）は全て±τｍｔｈ１の範囲内にデータがあるので、図４のステップＳ４０２の条件式が満たされる。したがって、ステップＳ４０５でのモータ出力トルク異常判定基準値τｍｔｈの計算が行われ、異常判定基準値設定済フラグｆｔｈに１がセットされる。具体的には、モータ出力トルク異常判定基準値τｍｔｈは、単位時間２４個３７回目の移動平均値τｍＡＡ［３７］を基準値としてモータ出力トルク異常判定閾値を設定するための加算値τｍｔｈ２を加算することで算出される。
【００５３】
図７は外力トルク値の変化を示した図で、図６と同じくｘ＝３７まで時間が経過した時の波形を示している。「×」印で示しているのは外力トルク値の単位時間内平均値τｄＡであり、実線は単位時間Ｎ個の移動平均値τｄＡＡである。上記のように、ｘ＝３７の時点でモータ出力トルク平均値の基準値を設定したので、図７では、この時点で図４のステップＳ４０５での外力トルク異常判定基準値τｄｔｈの計算が行われる。具体的には、外力トルク異常判定基準値τｄｔｈは、単位時間２４個３７回目の移動平均値τｄＡＡ［３７］を基準値として外力トルク異常判定閾値を設定するための加算値τｄｔｈ２を加算することで算出される。
【００５４】
すなわち、図４、図６からわかるように、モータ出力トルク値τｍＡとモータ出力トルク平均値τｍＡＡとの差が予め定めた所定の値τｍｔｈ１より小さいときのモータ出力トルク平均値τｍＡＡを、モータ出力トルク平均値の基準値と設定する。このときの外力トルク推定平均値τｄＡＡを外力トルク推定平均値の基準値τｄＡＡと設定する。
【００５５】
言い換えると、連続するＮ個分のモータ出力トルク平均値τｍＡが全て±τｍｔｈ１の範囲内にデータがあるとき、モータ出力トルク平均値の基準値が得られたことになる。
【００５６】
以上のように、モータ出力トルク異常判定基準値τｍｔｈおよび外力トルク異常判定基準値τｄｔｈは、図４のステップＳ４０２の条件判断で、モータ出力トルク値の平均値τｍＡのバラツキが小さくなった時点で計算される。すなわち、ロボットの使用状況が落ちついてきた時点で、予め記憶されたプログラムに基づくロボットの動作パターンに応じて自動的に計算される。従って、予め基準データを計測する必要もなく、基準となる動作パターンでロボットを動作させる必要もない。
【００５７】
図２の異常判定部４０では、図８のフローチャートに従い異常判定を行う。図８の処理は異常判定単位時間毎（例えば１時間毎）に実施する。図８のステップＳ８０１では、異常判定基準値設定済フラグｆｔｈに１がセットされているのかを確認する。ステップＳ８０１で、異常判定基準値設定済フラグｆｔｈに１がセットされていれば（ステップＳ８０１のＹ）ステップＳ８０２へ進み、それ以外（ステップＳ８０１のＮ）は処理を終了する。
【００５８】
ステップＳ８０２では、モータ出力トルク値の移動平均値τｍＡＡ［ｘ］が、モータ出力トルク異常判定基準値τｍｔｈより大きいかどうかを判断する。ステップＳ８０２でモータ出力トルク値の移動平均値τｍＡＡ［ｘ］がモータ出力トルク異常判定基準値τｍｔｈより大きい場合（ステップＳ８０２のＹ）は、ステップＳ８０３へ進み、それ以外（ステップＳ８０２のＮ）は処理を終了する。
【００５９】
ステップＳ８０３では、外力トルク値の移動平均値τｄＡＡ［ｘ］が、外力トルク異常判定基準値τｄｔｈより大きいかどうかを判断する。ステップＳ８０３で外力トルク値の移動平均値τｄＡＡ［ｘ］が、外力トルク異常判定基準値τｄｔｈより大きい場合（ステップＳ８０３のＹ）は、ステップＳ８０４へ進み、それ以外（ステップＳ８０３のＮ）はステップＳ８０５へ進む。
【００６０】
ステップＳ８０４では、異常判定フラグｆＬに「１」をセットし処理を終了する。ステップＳ８０５では、異常判定基準値設定済フラグｆｔｈに「０」をセットし、異常判定基準値設定部３８での処理（図４のフローチャート）を再開させる。
【００６１】
図８の処理を説明するための波形図を図９と図１０に示す。図９は、図６の波形をｘ＝１４０回まで進めた波形を示している。図９において、ｘ＝９０回目近傍から故障による摩擦増加でモータ出力トルク値の移動平均値τｍＡＡ［ｘ］が徐々に増加している。ｘ＝１２０回目でモータ出力トルク異常判定基準値τｍｔｈを越えており、ステップＳ８０２の条件が満たされる。
【００６２】
図１０は、図７の波形をｘ＝１４０回まで進めた波形を示している。図１０において、ｘ＝１２０回目で、外力トルク値の移動平均値τｄＡＡ［１２０］が、外力トルク異常判定基準値τｄｔｈを越えており、ステップＳ８０３の条件が満たされる。この場合、ステップＳ８０４では、異常判定フラグｆＬに「１」がセットされ、図１の異常警告表示部３４で異常警告処理を行う。
【００６３】
図１０において、もしｘ＝１２０回目で、外力トルク値の移動平均値τｄＡＡ［１２０］が、外力トルク異常判定基準値τｄｔｈ以下であれば、ステップＳ８０３の条件が満たされない。この場合は、判定基準値設定済フラグｆｔｈに「０」をセットし、異常判定基準値設定部３８での処理（図４のフローチャート）を再開させる。すなわち、モータ出力トルク異常判定基準値τｍｔｈと外力トルク異常判定基準値τｄｔｈを求める処理を再度行い、これらを新たな基準値として異常判断処理を行う。
【００６４】
なお、ステップＳ８０２とステップＳ８０３で、モータ出力トルク値の移動平均値τｍＡＡの上昇と外力トルク値の移動平均値τｄＡＡの上昇の両方で判定している理由は、外力トルク値の移動平均値τｄＡＡが上昇しても、モータ出力トルク値の移動平均値τｍＡＡが減少するような場合もあり、このような場合の誤判定を避けるためである。例えば、ケーブルの張力増加がロボットの重力を支える力になるような場合がこれに該当する。
【００６５】
さらには、モータ出力トルク値の移動平均値τｍＡＡが上昇しても、外力トルク値の移動平均値τｄＡＡが上昇しないような場合もある。このような場合の誤判定を避けるためにも、ステップＳ８０２とステップＳ８０３で、モータ出力トルク値の移動平均値τｍＡＡの上昇と外力トルク値の移動平均値τｄＡＡの上昇の両方を条件として判定している。例えば、ロボットの作業内容が変わり、ロボットプログラムがユーザにより書き換えられた場合、モータ出力トルク平均値τｍＡＡは上昇する可能性がある。しかし、外力トルク平均値τｄＡＡは特に外力が増加するわけではないので、装着負荷のパラメータが正しく入力されている場合は上昇しない。
【００６６】
ところで、本発明では、装着負荷のパラメータが正しく入力されていない場合でも、異常判定の誤判定の確率を減じることができる。
【００６７】
（数３）で計算される外力推定トルク値τｄｉｓｏは、実際の外力トルク値τｄｉｓが「０」でも、装着負荷のパラメータに誤差があると、動力学トルク値τｄｙｎの計算に誤差を生じるため、「０」にはならない。誤差を含む動力学トルク値をτｄｙｎ＿ｅｒｒ、この推定誤差をΔτｄｉｓとすると（数５）が成立する。
【００６８】
Δτｄｉｓ＝Ｋｔ×Ｉｍ−（Ｊｍ×α＋Ｄ×ωｍ＋Ｋμ×ｓｇｎ
＋τｄｙｎ＿ｅｒｒ）      （数５）
この動力学トルク演算に誤差がある状態で、実際の故障で摩擦トルク値がΔτμ増えたとすると、外力トルク推定値τｄｉｓｏは（数６）で計算される。
【００６９】
τｄｉｓｏ＝Ｋｔ×Ｉｍ
−（Ｊｍ×α＋Ｄ×ωｍ＋（τμ＋Δτμ）×ｓｇｎ
＋τｄｙｎ＿ｅｒｒ）
＝Δτｄｉｓ＋Δτμ×ｓｇｎ      （数６）
このとき、（数６）で、｜Δτμ｜＞｜Δτｄｉｓ｜であれば、つまり動力学トルク演算誤差があっても、その誤差に起因する推定誤差より故障による摩擦トルク値増加が上回れば、Δτｄｉｓの符号に関わりなく、外力トルク推定値τｄｉｓｏの絶対値は（数７−１）、（数７−２）で表すことができる。
【００７０】
｜τｄｉｓｏ［＋］｜＝  Δτｄｉｓ＋Δτμ      （数７−１）
｜τｄｉｓｏ［−］｜＝−Δτｄｉｓ＋Δτμ      （数７−２）
｜τｄｉｓｏ［＋］｜：モータが正方向回転時の外力トルク推定値の絶対値
｜τｄｉｓｏ［−］｜：モータが負方向回転時の外力トルク推定値の絶対値
ここで、ΔτｄｉｓとΔτμの単位時間平均をそれぞれΔτｄＡ、ΔτμＡとすると、外力トルク推定値τｄｉｓｏの絶対値の単位時間平均τｄＡは（数８−１）、（数８−２）のように表せる。
【００７１】
τｄＡ［＋］＝  ΔτｄＡ＋ΔτμＡ      （数８−１）
τｄＡ［−］＝−ΔτｄＡ＋ΔτμＡ      （数８−２）
τｄＡ［＋］：モータが正方向回転時の外力トルク推定値の絶対値の単位時間平均
τｄＡ［−］：モータが負方向回転時の外力トルク推定値の絶対値の単位時間平均
ここで、産業用ロボットの動作角度は有限であり、大きくても±３６０度程度であるので、それを駆動するモータが１方向のみに回転しつづけることはない。＋方向への回転角度と−方向への回転角度の差は最大で７２０度である。例えば、異常判定の単位時間を１時間にしておけば、延べ回転角度は数万度を超える場合が大半であるので、＋方向への回転角度と−方向への回転角度はほぼ同じと考えてよい。
【００７２】
そこで、外力トルク推定値の単位時間平均τｄＡは、τｄＡ［＋］とτｄＡ［−］の平均をとればよいので（数９）で計算できる。
【００７３】
τｄＡ＝（τｄＡ［＋］＋τｄＡ［−］）／２
＝（ΔτｄＡ＋ΔτμＡ−ΔτｄＡ＋ΔτμＡ）／２
＝ΔτμＡ      （数９）
（数９）より、正確な負荷パラメータが入力されず動力学トルク演算に誤差があっても、その誤差に起因する推定誤差ΔτｄＡより故障による摩擦トルク値増加ΔτμＡが上回れば、故障に起因する摩擦トルク値増加ΔτμＡを正しく判断できることがわかる。
【００７４】
つまり、正確な負荷パラメータが入力されていない場合、実際に故障により摩擦が増加しても、その摩擦トルク値増加ΔτμＡがパラメータ誤差に起因する誤差ΔτｄＡを下回っている時点では、図８のフローチャートのステップＳ８０３の条件が満たされない場合が発生する。したがって、この場合は異常判定基準値設定部３８での処理（図４のフローチャート）が再開され、異常判定閾値τｄｔｈが再設定される。しかし、摩擦トルク値増加ΔτμＡがさらに増加し、パラメータ誤差に起因する誤差ΔτｄＡを上回ると、外力トルク推定平均値τｄＡに摩擦トルク値増加ΔτμＡが正しく反映される。したがって、ステップＳ８０３が正しく判断される。以上の内容により誤判定の確率を減じることができる。
【００７５】
なお、本実施の形態では、モータ出力トルク値を優先した場合を説明したが、モータ出力トルク値と外力トルク値の異常判定の順序を入れ替えて、外力トルク値を優先して異常判定を行うことができる。
【００７６】
すなわち、まず、外力トルク推定値τｄＡのＮ個分の平均値である外力トルク推定平均値τｄＡＡが、所定のＮ個分の外力トルク推定平均値τｄＡから得た外力トルク推定平均値の基準値τｄＡＡに、第２の所定値τｄｔｈ２を加えた第２の異常判定基準値τｄｔｈを超えるか否かを、ロボットの動作中に判定する。次に、モータ出力トルク値τｍＡのＮ個分の平均値であるモータ出力トルク平均値τｍＡＡが、所定のＮ個分のモータ出力トルク平均値τｍＡから得たモータ出力トルク平均値の基準値τｍＡＡに、第１の所定値τｍｔｈ２を加えた第１の異常判定基準値τｍｔｈを超えるか否かを、ロボットの動作中に判定する。その結果、外力トルク推定平均値τｄＡＡが第２の異常判定基準値τｄｔｈ２を超え、かつ、モータ出力トルク平均値τｍＡＡが第１の異常判定基準値τｍｔｈを超えた場合に異常と判定するものである。
【００７７】
この場合、Ｎ個の外力トルク推定値τｄＡと外力トルク推定平均値τｄＡＡとの差が予め定めた所定の値τｍｔｈ１より小さいときの外力トルク推定平均値τｄＡＡを、外力トルク推定平均値の基準値τｄＡＡと設定し、このときのモータ出力トルク平均値τｍＡＡをモータ出力トルク平均値の基準値τｍＡＡと設定する。
【００７８】
また、外力トルク推定移動平均値が異常判定基準値を超えるが、モータ出力トルク移動平均値が異常判定基準値を超えない場合に、異常判定基準値設定部３８での処理（図４のフローチャート）を再開させ、モータ出力トルク異常判定基準値τｍｔｈと外力トルク異常判定基準値τｄｔｈを求める処理を再度行い、これらを新たな基準値として異常判断処理を行うようにしてもよい。
【００７９】
また、本実施の形態では、モータ出力トルク値の絶対値のＮ個の移動平均値τｍＡＡにモータ出力トルク異常判定値を設定するための加算値τｍｔｈ２を加算してモータ出力トルク異常判定値算出し、その後のモータ出力トルク値の絶対値のＮ個の移動平均値τｍＡＡがモータ出力トルク異常判定値を超えるか否かを判定して異常を判定する例を示した。しかし、モータ出力トルク移動平均値とモータ出力トルク移動平均値の基準値との差が所定の値を超えるか否かを判定して異常を判定するようにしてもよい。なお、所定の値は、例えば実験等により予め決定することができる。
【００８０】
また、本実施の形態では、外力トルク値の絶対値のＮ個の移動平均値τｄＡＡに外力トルク異常判定値を設定するための加算値τｄｔｈ２を加算して外力トルク異常判定値算出し、その後の外力トルク値の絶対値のＮ個の移動平均値τｄＡＡが外力トルク異常判定値を超えるか否かを判定して異常を判定する例を示した。しかし、外力トルク移動平均値と外力トルク移動平均値の基準値との差が所定の値を超えるか否かを判定して異常を判定するようにしてもよい。なお、所定の値は、例えば実験等により予め決定することができる。
【００８１】
さらに、本実施の形態では、まず単位時間内のモータ出力トルク値τｍｏの他の平均値τｍＡを計算し、その後Ｎ個の他の平均値τｍＡからモータ出力トルク平均値（移動平均値）τｍＡＡを求めた。しかし、上記他の平均値τｍＡを求めなくても、モータ出力トルク値τｍｏからモータ出力トルク平均値（移動平均値）τｍＡＡを求めることも可能である。このことは、外力トルク推定平均値τｄＡＡを求める場合も同様である。
【００８２】
また、本実施の形態では、任意の１つのモータについて異常判断を行うようにした。しかし、多関節ロボットは複数のモータを備えているので、本実施の形態と同様な方法で、全てのモータについて異常判定を行ってもよい。あるいは、特定のモータについて異常判定を行ってもよい。
【００８３】
なお、本実施の形態のロボットには、例えばサーボモータが使用されており、このサーボモータの異常判定を行うものである。
【産業上の利用可能性】
【００８４】
本発明は、基準データの測定、記憶を必要とせず、生産ライン稼働中の判定も可能で、正確な負荷パラメータが入力されていない場合や外力を受けた場合でも誤判定の確率を減じることができるので、動作中のロボットの異常判定方法として有用である。
【符号の説明】
【００８５】
６    位置制御部
１０    速度制御部
１８    モータ／外力トルク部
２１    方向判定部
２６    動力学トルク演算部
３０    外力トルク推定部
３２    異常判定装置
３４    異常警告表示部
３５    単位時間平均部
３６    データ蓄積部
３７    移動平均部
３８    異常判定基準値設定部
４０    異常判定部
１０１    溶接ワイヤ
１０３    ワイヤ送給モータ
１０４    溶接トーチ
１０５    溶接電源装置
１０７    母材
１０８    アーク
１０９    ロボット
１１０    ロボット制御装置
１１１    トーチケーブル
１１２    治具
【図１】
2009142006.tif 000005
【図２】
2009142006.tif 000006
【図３】
2009142006.tif 000007
【図４】
2009142006.tif 000008
【図５】
2009142006.tif 000009
【図６】
2009142006.tif 000010
【図７】
2009142006.tif 000011
【図８】
2009142006.tif 000012
【図９】
2009142006.tif 000013
【図１０】
2009142006.tif 000014
【図１１】
2009142006.tif 000015
【手続補正書】
【提出日】平成21年7月15日(2009.7.15)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モータにより駆動されるロボット、特に、多関節型ロボットの異常判定方法に関するものである。
【背景技術】
【０００２】
近年、生産リードタイム短縮の要求が高まっている。しかし、溶接やハンドリング等に用いられる垂直あるいは水平の多関節型ロボットにおいて、ロボットを駆動するモータや減速機等の機構部品に故障が生じて交換が必要となった場合、交換のために生産を数時間にわたって停止しなければならず、大きな問題となっている。
【０００３】
ロボットを駆動するモータや減速機等に故障が生じた場合、摩擦力が上昇してモータ駆動力が増加する場合が大半である。そこで、ロボットが完全に動作不能になるまでにモータ駆動力の異常状態を知ることができれば、休日や夜間等の生産ライン休止中にモータ等の機構部品を交換することが可能となり、生産に与える影響を減じることができる。
【０００４】
そこで、故障に起因して発生するモータの速度波形の変動に着目してロボットの異常を検出する方法が知られている（例えば、特許文献１参照）。また、駆動側の仕事率（モータ出力仕事率）と負荷側の仕事率（ロボットの運動方程式演算から得られる仕事率）の差に着目してロボットの異常を検出する方法も知られている（例えば、特許文献２参照）。
【０００５】
前者の速度波形の変動から異常を判定する方法では、次に挙げる問題点がある。１つ目は、個々のロボットで正常状態における速度波形データを基準データとして測定しておき、かつ、記憶しておく必要がある点である。２つ目は、異常判定を行う場合、基準となる動作パターンでロボットを動作させなければならない点である。従って、生産ライン稼働時のモータ速度波形データは異常判定のための速度波形データとは異なるので、当然、生産ラインの稼働中には異常判定を行うことができない。また、例え生産ライン休止等で異常判定を実施できる時間があるとしても、異常判定を行うためだけに基準となる動作パーンで動作させなければならない。そのため、異常測定作業工数のコストが発生する。また、生産ラインの稼動時間が長くコストに厳しい生産現場において、ロボットの異常判定を行うためだけに上記２つの点を行うことは現実的には非常に困難である。
【０００６】
また、後者の仕事率の差による異常判定方法では、前者の問題点が解決され、基準データの測定や記憶も必要なく、生産ライン稼働中でも判定が可能である。しかしながら、駆動側の仕事率は正確に計算できても、負荷側の仕事率が正確に計算できるとは限らない。その理由は、ユーザによりロボットに装着される負荷（溶接用トーチやハンドリングツールやワーク等）のパラメータ（質量、重心位置、イナーシャ等）が正確でなければ、ロボットの運動方程式による仕事率の計算に誤差が発生するからである。特許文献２では、装着負荷を含むロボット機構部の質点モデルに関する運動方程式と、角度、角速度、及び角加速度により負荷トルク値を算出し、それに角速度を乗じることで負荷側の仕事率を求めている。
【０００７】
近年の産業用ロボットでは、加減速の最適化や衝突検出の高精度化にも正確な負荷パラメータが要求されている。従って、負荷パラメータの入力装置や自動測定機能を備えたロボットも多く見られる。しかしながら、負荷パラメータの入力や自動測定機能の使用を実行するか否かはユーザに任せられており、必ずしも正確な負荷パラメータが入力されているとは限らない。もし、負荷の設定パラメータと実パラメータとの間に大きな差があると、負荷側の仕事率には大きな誤差が生じてしまい、異常と誤判定する可能性がでてくる。
【０００８】
また、駆動側の仕事率が増加する原因としては、ロボットを駆動するモータや減速機等の故障による摩擦上昇でモータ駆動力が増加することだけではない。ロボットが他の物と接触した場合や、ロボットに装着されたケーブルに張力が加わる場合等、外力を受けてモータ駆動力が増減することも原因となる。ただし、前者の摩擦が上昇する場合は、増えた摩擦エネルギーを補うためにモータ駆動力も増加する。しかし、後者の外力を受ける場合は駆動側の仕事率が増加する方向に変化するとは限らない。例えば、ケーブルの張力増加がロボットの重力を支える力になり、駆動側の仕事率が減少する可能性がある。このような場合でも駆動側の仕事率と負荷側の仕事率の差は拡大するので、機構の故障以外の原因でも異常と判定してしまう可能性がある。
【０００９】
図１１は上述したケーブルの張力増加がロボットの重力を支える力になる場合を説明するための図であり、従来の溶接ロボットシステムの概略構成を示している。
【００１０】
図１１において、消耗電極である溶接ワイヤ１０１は、ワイヤ送給モータ１０３により、ワイヤースプール１０２から中空構造のトーチケーブル１１１（点線で示している）を通って溶接トーチ１０４のへ送られる。溶接電源装置１０５は、溶接トーチ１０４および溶接チップ１０６を経由して溶接ワイヤ１０１と被溶接物である母材１０７との間に所定の溶接電流Ｉ及び溶接電圧Ｖを印加してアーク１０８を発生させる。また、溶接電源装置１０５は、ワイヤ送給モータ１０３の制御を行って溶接施工を行う。ロボット１０９は、溶接トーチ１０４を保持し、溶接開始位置（図示せず）に位置決めを行うと共に溶接線（図示せず）に沿って溶接トーチ１０４を移動させる。このようなロボット全体の制御は、ロボット制御装置１１０により行われる。
【００１１】
このとき、例えばユーザが溶接ワイヤ１０１の形状維持による送給性能確保や周辺物との干渉回避を目的として、トーチケーブル１１１を上方から吊すための治具１１２を設置することが良く行われる。なお、ロボット１０９の動作に伴いトーチケーブル１１１も移動する。従って、治具１１２には、ばねやゴムなどの弾性体が用いられることが多い。このため、トーチケーブル１１１を介して、溶接トーチ１０４およびそれを保持するロボット１０９にも上方へ引っ張る力が働き、ロボット１０９の重力を支える力となる。特に、溶接トーチ１０４が装着されるロボット先端部は、容量の小さなモータが搭載されるので、このようなトーチケーブル１１１の張力変化は無視できないものとなる。また、このような治具１１２の選定や取り付けや交換はユーザによって行われる。したがって、治具１１２を用いることによって、あるいは治具１１２の取り付けや交換によって、異常が発生したと誤判定してしまう可能性がある。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開昭６３−１２３１０５号公報
【特許文献２】特開平１１−１２９１８６号公報
【非特許文献】
【００１３】
【非特許文献１】マニピュレータの動的衝突検出、小菅一弘、他１名、日本機械学会［Ｎｏ．９９−９］ロボティクス・メカトロニクス講演会’９９講演論文集２Ａ１−１１−０３０
【発明の概要】
【００１４】
本発明は、基準データの測定、記憶が必要なく、生産ライン稼働中の判定も可能であり、正確な負荷パラメータが入力されていない場合や外力を受けた場合でも異常と誤判定してしまうことを低減するロボットの異常判定方法を提供するものである。
【００１５】
本発明は、モータ出力トルク値のＮ個分（Ｎは正の整数）の平均値であるモータ出力トルク平均値が、所定のＮ個分のモータ出力トルク平均値から得たモータ出力トルク平均値の基準値に、第１の所定値を加えた第１の異常判定基準値を超えるか否かを、ロボットの動作中に判定するステップと、外力トルク推定値のＮ個分の平均値である外力トルク推定平均値が、所定のＮ個分の外力トルク推定平均値から得た外力トルク推定平均値の基準値に、第２の所定値を加えた第２の異常判定基準値を超えるか否かをロボットの動作中に判定するステップと、モータ出力トルク平均値が第１の異常判定基準値を超え、かつ、外力トルク推定平均値が第２の異常判定基準値を超えた場合に異常と判定するステップとを備えている。
【００１６】
かかる構成によれば、基準データの測定、記憶を必要とせず、生産ライン稼働中の判定も可能である。また、正確な負荷パラメータが入力されていない場合や外力を受けた場合でも、異常と誤判定してしまうことを低減することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の一実施の形態におけるロボット異常判定を説明するブロック図
【図２】図１における異常判定部の詳細を示すブロック図
【図３】同実施の形態におけるロボットの異常判定方法の単位時間内平均演算処理を示すフローチャート
【図４】同実施の形態におけるロボットの異常判定方法の異常判定基準値設定処理を示すフローチャート
【図５】図４のフローチャートにおけるモータ出力トルク移動平均値に基づく異常判定基準値設定課程を説明する第１の図
【図６】図４のフローチャートにおけるモータ出力トルク移動平均値に基づく異常判定基準値設定課程を説明する第２の図
【図７】図４のフローチャートにおける外力トルク移動平均値に基づく異常判定基準値設定課程を説明する図
【図８】同実施の形態におけるロボットの異常判定方法の異常判定処理を示すフローチャート
【図９】図８のフローチャートにおけるモータ出力トルク移動平均値に基づく異常判定課程を説明する図
【図１０】図８のフローチャートにおける外力トルク移動平均値に基づく異常判定課程を説明する図
【図１１】従来の溶接ロボットシステムを示す構成図
【発明を実施するための形態】
【００１８】
以下、本発明を図面を用いて説明する。なお、本発明はこれに限られるものではない。
【００１９】
（実施の形態）
図１は、本発明の一実施の形態におけるロボットの異常判定方法を説明するブロック図であって、ロボット異常判定を含む位置制御ループを示している。図２は、図１における異常判定を示すブロック図である。図３は、同実施の形態におけるロボットの異常判定方法の、モータ出力トルク値および外力トルク値の単位時間内平均値演算処理を示すフローチャートである。図４は、同実施の形態におけるロボットの異常判定方法の、モータ出力トルク値および外力トルク値の移動平均値に基づく異常判定基準値設定処理を示すフローチャートである。
【００２０】
なお、本実施の形態で説明するロボットの異常判定方法は、例えば、図１１に示す従来と同様の溶接システムの構成に適用できる。すなわち、本実施の形態は、図１１に示す溶接システムにおけるロボット制御装置１１０での制御方法が従来とは異なる。したがって、本実施の形態では、図１１に示す溶接システムの構成を例として説明する。
【００２１】
図１において、位置指令θｃｏｍは、ユーザにより指示された始点位置および終点位置に基づいて得られる。位置制御部６は、位置指令θｃｏｍと、後述するモータ／外力トルク部１８からフィードバックされたモータ角速度ωｍとを入力として比例制御（Ｐ制御）を行い、速度指令ωｃｏｍを出力する。速度制御部１０は、速度指令ωｃｏｍと、フィードバックされたモータ角速度ωｍを入力として比例・積分制御（ＰＩ制御）を行い、モータ電流指令Ｉｍを生成する。
【００２２】
以下、図１に示すブロック図の動作を詳細に説明する。図１において、位置制御部６は、位置指令θｃｏｍ（例えば、トーチを搭載したロボットの関節角）と、フィードバックされたモータ角速度ωｍ（例えば、ロボット角軸の角速度）を積分したモータ位置θｍとの差分値に基づいて、速度指令ωｃｏｍを生成する。
【００２３】
速度制御部１０は、速度指令ωｃｏｍと、フィードバックされたモータ角速度ωｍの差分値に基づいてモータ電流指令Ｉｍを生成する。
【００２４】
モータ／外力トルク部１８は、溶接トーチ１０４と溶接トーチ１０４を回転させるモータとを含む。モータ／外力トルク部１８では、モータで発生するモータ出力トルク値τｍや、溶接トーチ１０４に加わる外力トルク値τｄｉｓや、移動摩擦トルク値τμが発生する。これらのトルク値に基づいて、モータ速度を制御するモータ角速度ωｍを出力し、位置制御部６および速度制御部１０にフィードバックする。モータ／外力トルク部１８は、制御系が駆動する負荷であって、モータ電流指令Ｉｍにより発生するモータ出力トルク値τｍによって、実際の角速度ωｍがどのように変化するかを示したものである。
【００２５】
外力トルク推定部３０は、外力トルク値τｄｉｓをセンサレスで推定する。すなわち、外力トルク値τｄｉｓの推定値である外力トルク推定値τｄｉｓｏを出力する。
【００２６】
ところで、外力トルク値をセンサレスで推定する方法としては、動力学演算方式や外乱推定オブザーバ方式が知られている。動力学演算方式は、モータの駆動電流で発生したトルク値からモータ及び減速機のイナーシャと摩擦で損失するトルク値を差し引いた減速機出力トルク値より、ロボットの逆動力学演算から求めたロボットの動力学トルク値を差し引いて外力トルク値を求める方式である（非特許文献１参照）。外乱推定オブザーバ方式は、外乱推定オブザーバを用いて衝突力を求める方式である。本実施の形態では、前者の動力学演算方式を用いた場合を例にして説明する。
【００２７】
図１において、モータ出力トルク値τｍは、減速機が剛体であると仮定すると、モータ駆動側から見た場合は（数１−１）で示され、負荷側から見た場合は（数１−２）で示される。
【００２８】
τｍ＝Ｋｔ×Ｉｍ      （数１−１）
τｍ＝τｄｙｎ＋τｄｉｓ＋Ｊｍ×αｍ＋Ｄ×ωｍ＋τμ      （数１−２）
Ｋｔ：モータトルク定数
Ｉｍ：モータ電流
ωｍ：モータ角速度
αｍ：モータ角加速度（モータ角速度ωｍの微分値）
Ｊｍ：モータイナーシャ（ロータ＋減速機１次側）
Ｄ：粘性摩擦係数
τμ：動摩擦トルク値
τｄｙｎ：動力学トルク値（重力トルク値と慣性力と遠心力とコリオリ力の和）
τｄｉｓ：外力トルク値
また、動摩擦トルク値τμは、以下に示す（数２）で計算できる。
【００２９】
τμ＝Ｋμ×ｓｇｎ      （数２）
Ｋμ：動摩擦の大きさ
ｓｇｎ＝１（ωｍ＞０）、０（ωｍ＝０）、−１（ωｍ＜０）
また、（数１−２）の右辺にある外力トルク値τｄｉｓは、（数１−１）と（数１−２）より、以下に示す（数３）に変形して求めることが出来る。
【００３０】
τｄｉｓ＝Ｋｔ×Ｉｍ−（Ｊｍ×αｍ＋Ｄ×ωｍ＋Ｋμ×ｓｇｎ＋τｄｙｎ）      （数３）
なお、（数３）において、Ｋｔ×Ｉｍ−Ｊｍ×αｍ−Ｄ×ωｍ−Ｋμ×ｓｇｎはモータが減速機に出力するトルク値である。
【００３１】
図１において、外力トルク推定部３０は、（数３）の演算を行うブロックとして示している。
【００３２】
外力トルク推定部３０において、動力学トルク推定値τｄｙｎｏは、動力学トルク演算部２６において、ロボットを構成する全軸のモータ角速度ωｍのフィードバックとロボットの機械パラメータを用いて逆動力学演算を実行することで求められる。また、モータ出力トルク推定値τｍｏは、モータ電流指令Ｉｍを用いて（数１−１）で計算される。外力トルク推定部３０は、動力学トルク推定値τｄｙｎｏとモータ出力トルク推定値τｍｏを用いて、（数３）から外力トルク推定値τｄｉｓｏを求める。その結果、外力トルク推定値τｄｉｓｏとモータ出力トルク推定値τｍｏを異常判定装置３２へ出力する。
【００３３】
図２は、図１における異常判定装置３２の詳細を示すブロック図である。図２を用いて、異常判定装置３２の動作を説明する。なお、以下の説明において、単位時間とは異常判定を行う間隔と定義する。この単位時間は、例えば１時間等である。また、ロボットが停止している時間は除き、稼動している時間をいう。
【００３４】
単位時間平均部３５では、外力トルク推定部３０から出力されたモータ出力トルク推定値τｍｏおよび外力トルク推定値τｄｉｓｏのそれぞれの絶対値の単位時間平均値であるモータ出力トルク平均値τｍAおよび外力トルク平均値τｄAを算出する。
【００３５】
この算出方法を図３のフローチャートに示す。図３の処理はモータ出力トルク推定値τｍｏおよび外力トルク推定値τｄｉｓｏの演算周期毎に実施する。
【００３６】
図３において、まず、当該軸角速度ωｍおよび他軸角速度ωｍの中で絶対値が最大の角速度ωｍＭＡＸが、平均処理の実行を判定する予め定められた角速度閾値ωｍｔｈより大きいかどうかを判定する（ステップＳ３０１）。ステップＳ３０１で、最大角速度ωｍＭＡＸが角速度閾値ωｍｔｈより大きい場合に（ステップＳ３０１のＹ）ステップＳ３０２に進み、それ以外（ステップＳ３０１のＮ）では処理を終了させる。なお、ステップＳ３０１の条件を設ける理由は、ロボットがユーザによる停止操作やセンサ信号入力待ち等で停止している場合、その停止時間は不確定であり、その状態も含めて単位時間平均すると、平均値にバラツキが生じるからである。また、ここでは、モータ角速度を監視する例を挙げたが、ロボットが動作していることが確認できれば、他の方法を用いても良い。例えばロボットプログラム内で動作命令が実行されている時、位置指令が生成されている時等でロボット動作の判定をしても良い。
【００３７】
ステップＳ３０２では、モータ出力トルク推定値の絶対値｜τｍｏ｜の積算値τｍＳおよび外力トルク推定値の絶対値｜τｄｉｓｏ｜の積算値τｄＳおよび積算回数ｉを演算する。
【００３８】
その後、ステップＳ３０３では、積算回数ｉが予め定めた平均回数ｎｕｍに到達したかを判断する。ステップＳ３０３で、積算回数ｉが平均回数ｎｕｍに到達していれば（ステップＳ３０３のＹ）ステップＳ３０４に進み、到達していなければ（ステップＳ３０３のＮ）処理を終える。
【００３９】
ステップＳ３０４では、各積算値τｍＳ、τｄＳを平均回数ｎｕｍで割り、ロボット動作の単位時間平均値であるモータ出力トルク平均値τｍＡおよび外力トルク平均値τｄＡを算出する。
【００４０】
例えばロボット動作の単位時間を１時間と設定し、モータ出力トルク推定値τｍｏおよび外力トルク推定値τｄｉｓｏが１０ミリ秒毎に演算されていたとすると、平均回数はｎｕｍ＝３６００００回と言うことになる。
【００４１】
次に、この単位時間平均値（例えば、１時間の平均値）であるモータ出力トルク平均値τｍＡと外力トルク平均値τｄＡをデータ蓄積部３６に蓄積する。単位時間ｊ回目（例えば、単位時間が１時間であればｊ時間目）のモータ出力トルク平均値τｍＡをτｍＡ［ｊ］と定義する。現在が単位時間でｘ回目で、ｘ回目までの蓄積個数をＮ個（Ｎは正の整数）としたとすると、モータ出力トルク値τｍＡ［ｘ−Ｎ＋１］からτｍＡ［ｘ］までのデータを蓄積する。
【００４２】
例えば、現在が単位時間で１０００回目（ｘ＝１０００）、データ蓄積個数が４８個（Ｎ＝４８）とすると、モータ出力トルク値τｍＡ［９５３］からτｍＡ［１０００］までのデータを蓄積していることになる。単位時間が１時間であると、ロボット動作４８時間分のデータを蓄積することになる。外力トルク平均値τｄＡ[ｊ]についても同様である。
【００４３】
移動平均部３７では、データ蓄積部３６に蓄積されたＮ個分のデータの現在の移動平均τｍＡＡ［ｘ］およびτｄＡＡ［ｘ］を、単位時間ｘ回目のモータ出力トルク平均値および単位時間ｘ回目の外力トルク平均値に対して、それぞれ（数４−１）、（数４−２）により求める。
【００４４】
【数４−１】
2009142006.tif 000016
【００４５】
【数４−２】
2009142006.tif 000017
【００４６】
異常判定基準値設定部３８では、図４に示すフローチャートに基づいて、モータ出力トルク値の単位時間内平均値τｍＡ［ｘ−ＮＮ＋１］（ＮＮは正の整数）からτｍＡ［ｘ］までのデータが、単位時間Ｎ個の移動平均値τｍＡＡ[ｘ]を基準として、一定範囲内のバラツキに収まっているかを判断する。すなわち、ＮＮ個の単位時間内平均値τｍＡ［ｊ］と単位時間Ｎ個の移動平均値τｍＡＡ[ｊ]との差が、予め定めた所定値より小さいかどうかを判断する。その結果、一定の範囲内にあれば、その単位時間Ｎ個の移動平均値τｍＡＡ[ｘ]を基準値として設定する。その後、設定した移動平均値τｍＡＡ[ｘ]の基準値に基づいて、図２に示すモータ出力トルク異常判定基準値τｍｔｈ（第１の異常判定値）および外力トルク異常判定基準値τｄｔｈ（第２の異常判定値）を決定し、異常判定基準値設定済フラグｆｔｈに「１」をセットする。
【００４７】
以下、図４のフローチャートを説明する。図４に示すフローチャートは、異常判定単位時間毎に実施する。図４において、ステップＳ４０１では、異常判定基準値設定済フラグｆｔｈが「０」かどうかを判定する。ステップＳ４０１で、異常判定基準値設定済フラグｆｔｈが「０」であれば（ステップＳ４０１のＹ）、異常判定基準値が設定されていないのでステップＳ４０２へ進む。ステップＳ４０１で、異常判定基準値設定済フラグｆｔｈが「１」であれば（ステップＳ４０１のＮ）、既に異常判定基準値が設定されているので処理を終了する。
【００４８】
ステップＳ４０２では、モータ出力トルク値の平均値τｍＡ［ｘ−ｋ］と移動平均値τｍＡＡ［ｘ］の差の絶対値が、単位時間平均のバラツキを判断する閾値τｍｔｈ１より小さいかを判定する。モータ出力トルク値の平均値τｍＡ［ｘ−ｋ］と移動平均値τｍＡＡ［ｘ］の差の絶対値が閾値τｍｔｈ１より小さい場合は（ステップＳ４０２のＹ）、ステップＳ４０３に移行する。しかし、それ以外の場合は（ステップＳ４０２のＮ）、処理を終了する。なお、閾値τｍｔｈ１は、例えば実験等により予め求めておくことができる。図５に示す本実施の形態では、モータ最大トルク値の５％としている。この値は、小さくするほど、負荷率が安定して一定になるまで、モータ発生トルク異常判定基準値τｍｈが定まらない。つまり、基準値の妥当性は向上するものの、基準値が定まらないので異常判定がなかなか実施されないと言うことになる。したがって、この値は、実際の使用状況から適切な値に定めればよい。
【００４９】
ステップＳ４０３では演算ステップ数ｋに「１」を加算する。ステップＳ４０４では、演算ステップ数ｋがバラツキ判定個数ＮＮ回に到達しているかどうか判定する。ステップＳ４０３で演算ステップ数ｋがＮＮ回に到達していれば（ステップＳ４０３のＹ）、制御系が安定していると判断してステップＳ４０５へ移行する。しかし、演算ステップ数ｋがＮＮ回に到達していない場合は（ステップＳ４０３のＮ）、制御系がまだ安定していないと判断してステップＳ４０２へ戻る。
【００５０】
ステップＳ４０５では、ＮＮ個のモータ出力トルク平均値τｍＡ［ｘ］が一定のバラツキ範囲内であったときの移動平均値τｍＡＡ［ｘ］に基づいて、モータ出力トルク異常判定基準値τｍｈを計算する。さらに、このときの外力トルク異常判定基準値τｄｔｈを計算し、異常判定基準値設定済フラグｆｔｈに「１」をセットして処理を終える。なお、モータ出力トルク異常判定基準値τｍｈは、移動平均値τｍＡＡ［ｘ］にモータ出力トルク異常基準値を設定するための加算値τｍｔｈ２（第１の所定値）を加算して算出する。また、このときの外力トルク異常判定基準値τｄｔｈは、移動平均値τｄＡＡ［ｘ］に外力トルク異常判定基準値を設定するための加算値τｄｔｈ２（第２の所定値）を加算して算出する。ここで、モータ出力トルク異常基準値を設定するための加算値τｍｔｈ２と外力トルク異常判定基準値を設定するための加算値τｄｔｈ２は、例えば実験等により予め決めておくことができる値である。図６に示す本実施の形態では、モータ最大トルクの８％としている。また、図７に示す本実施の形態では、５％としている。この値は、小さくするほど、異常判定の感度が高くなるが、誤判定の可能性も大きくなる。したがって、この値は、実際の使用状況から適切な値に定めればよい。
【００５１】
ここまでの処理を説明するための波形を図５、図６、図７に示す。図５は、図４のフローチャートにおけるモータ出力トルク移動平均値に基づく異常判定基準値設定課程を説明するための第１の図である。図５において、横軸は単位時間処理回数ｘである（例えば単位時間が１時間であればｘ時間）。縦軸はモータトルク最大値に対するモータ出力トルク平均値τｍＡの比率である。なお、本実施の形態では、理解を助けるために、以下「比率」という表現を用いずに、単に「モータ出力トルク平均値τｍＡ」などと言う。「×」印で示しているのはモータ出力トルク値の単位時間内平均値τｍＡであり、実線（図５では黒点で示されている）は単位時間Ｎ個の移動平均値τｍＡＡである。図５では、蓄積個数（移動平均個数）Ｎと、バラツキ判定個数ＮＮが「２４」のときを示しており、ｘ＝２４のとき初めて移動平均τｍＡＡ［２４］は計算される。この時点では、移動平均τｍＡ［１］〜τｍＡ［２４］は移動平均τｍＡＡ［２４］を基準に±τｍｔｈ１の範囲外にもデータがある。そのため、図４のステップＳ４０２の条件式が満たされず、ステップＳ４０５でのモータ出力トルク異常判定基準値τｍｔｈの計算は行われない。
【００５２】
図６は、図５と同様に、ｘ＝３７まで時間が経過した時の波形である。図６では、単位時間２４個の３７回目の移動平均値τｍＡＡ［３７］を基準に、モータ出力トルク平均値τｍＡ［１４］〜τｍＡ［３７］の２４個（ＮＮ個に相当）は全て±τｍｔｈ１の範囲内にデータがあるので、図４のステップＳ４０２の条件式が満たされる。したがって、ステップＳ４０５でのモータ出力トルク異常判定基準値τｍｔｈの計算が行われ、異常判定基準値設定済フラグｆｔｈに１がセットされる。具体的には、モータ出力トルク異常判定基準値τｍｔｈは、単位時間２４個３７回目の移動平均値τｍＡＡ［３７］を基準値としてモータ出力トルク異常判定閾値を設定するための加算値τｍｔｈ２を加算することで算出される。
【００５３】
図７は外力トルク値の変化を示した図で、図６と同じくｘ＝３７まで時間が経過した時の波形を示している。「×」印で示しているのは外力トルク値の単位時間内平均値τｄＡであり、実線は単位時間Ｎ個の移動平均値τｄＡＡである。上記のように、ｘ＝３７の時点でモータ出力トルク平均値の基準値を設定したので、図７では、この時点で図４のステップＳ４０５での外力トルク異常判定基準値τｄｔｈの計算が行われる。具体的には、外力トルク異常判定基準値τｄｔｈは、単位時間２４個３７回目の移動平均値τｄＡＡ［３７］を基準値として外力トルク異常判定閾値を設定するための加算値τｄｔｈ２を加算することで算出される。
【００５４】
すなわち、図４、図６からわかるように、モータ出力トルク値τｍＡとモータ出力トルク平均値τｍＡＡとの差が予め定めた所定の値τｍｔｈ１より小さいときのモータ出力トルク平均値τｍＡＡを、モータ出力トルク平均値の基準値と設定する。このときの外力トルク推定平均値τｄＡＡを外力トルク推定平均値の基準値τｄＡＡと設定する。
【００５５】
言い換えると、連続するＮ個分のモータ出力トルク平均値τｍＡが全て±τｍｔｈ１の範囲内にデータがあるとき、モータ出力トルク平均値の基準値が得られたことになる。
【００５６】
以上のように、モータ出力トルク異常判定基準値τｍｔｈおよび外力トルク異常判定基準値τｄｔｈは、図４のステップＳ４０２の条件判断で、モータ出力トルク値の平均値τｍＡのバラツキが小さくなった時点で計算される。すなわち、ロボットの使用状況が落ちついてきた時点で、予め記憶されたプログラムに基づくロボットの動作パターンに応じて自動的に計算される。従って、予め基準データを計測する必要もなく、基準となる動作パターンでロボットを動作させる必要もない。
【００５７】
図２の異常判定部４０では、図８のフローチャートに従い異常判定を行う。図８の処理は異常判定単位時間毎（例えば１時間毎）に実施する。図８のステップＳ８０１では、異常判定基準値設定済フラグｆｔｈに１がセットされているのかを確認する。ステップＳ８０１で、異常判定基準値設定済フラグｆｔｈに１がセットされていれば（ステップＳ８０１のＹ）ステップＳ８０２へ進み、それ以外（ステップＳ８０１のＮ）は処理を終了する。
【００５８】
ステップＳ８０２では、モータ出力トルク値の移動平均値τｍＡＡ［ｘ］が、モータ出力トルク異常判定基準値τｍｔｈより大きいかどうかを判断する。ステップＳ８０２でモータ出力トルク値の移動平均値τｍＡＡ［ｘ］がモータ出力トルク異常判定基準値τｍｔｈより大きい場合（ステップＳ８０２のＹ）は、ステップＳ８０３へ進み、それ以外（ステップＳ８０２のＮ）は処理を終了する。
【００５９】
ステップＳ８０３では、外力トルク値の移動平均値τｄＡＡ［ｘ］が、外力トルク異常判定基準値τｄｔｈより大きいかどうかを判断する。ステップＳ８０３で外力トルク値の移動平均値τｄＡＡ［ｘ］が、外力トルク異常判定基準値τｄｔｈより大きい場合（ステップＳ８０３のＹ）は、ステップＳ８０４へ進み、それ以外（ステップＳ８０３のＮ）はステップＳ８０５へ進む。
【００６０】
ステップＳ８０４では、異常判定フラグｆＬに「１」をセットし処理を終了する。ステップＳ８０５では、異常判定基準値設定済フラグｆｔｈに「０」をセットし、異常判定基準値設定部３８での処理（図４のフローチャート）を再開させる。
【００６１】
図８の処理を説明するための波形図を図９と図１０に示す。図９は、図６の波形をｘ＝１４０回まで進めた波形を示している。図９において、ｘ＝９０回目近傍から故障による摩擦増加でモータ出力トルク値の移動平均値τｍＡＡ［ｘ］が徐々に増加している。ｘ＝１２０回目でモータ出力トルク異常判定基準値τｍｔｈを越えており、ステップＳ８０２の条件が満たされる。
【００６２】
図１０は、図７の波形をｘ＝１４０回まで進めた波形を示している。図１０において、ｘ＝１２０回目で、外力トルク値の移動平均値τｄＡＡ［１２０］が、外力トルク異常判定基準値τｄｔｈを越えており、ステップＳ８０３の条件が満たされる。この場合、ステップＳ８０４では、異常判定フラグｆＬに「１」がセットされ、図１の異常警告表示部３４で異常警告処理を行う。
【００６３】
図１０において、もしｘ＝１２０回目で、外力トルク値の移動平均値τｄＡＡ［１２０］が、外力トルク異常判定基準値τｄｔｈ以下であれば、ステップＳ８０３の条件が満たされない。この場合は、判定基準値設定済フラグｆｔｈに「０」をセットし、異常判定基準値設定部３８での処理（図４のフローチャート）を再開させる。すなわち、モータ出力トルク異常判定基準値τｍｔｈと外力トルク異常判定基準値τｄｔｈを求める処理を再度行い、これらを新たな基準値として異常判断処理を行う。
【００６４】
なお、ステップＳ８０２とステップＳ８０３で、モータ出力トルク値の移動平均値τｍＡＡの上昇と外力トルク値の移動平均値τｄＡＡの上昇の両方で判定している理由は、外力トルク値の移動平均値τｄＡＡが上昇しても、モータ出力トルク値の移動平均値τｍＡＡが減少するような場合もあり、このような場合の誤判定を避けるためである。例えば、ケーブルの張力増加がロボットの重力を支える力になるような場合がこれに該当する。
【００６５】
さらには、モータ出力トルク値の移動平均値τｍＡＡが上昇しても、外力トルク値の移動平均値τｄＡＡが上昇しないような場合もある。このような場合の誤判定を避けるためにも、ステップＳ８０２とステップＳ８０３で、モータ出力トルク値の移動平均値τｍＡＡの上昇と外力トルク値の移動平均値τｄＡＡの上昇の両方を条件として判定している。例えば、ロボットの作業内容が変わり、ロボットプログラムがユーザにより書き換えられた場合、モータ出力トルク平均値τｍＡＡは上昇する可能性がある。しかし、外力トルク平均値τｄＡＡは特に外力が増加するわけではないので、装着負荷のパラメータが正しく入力されている場合は上昇しない。
【００６６】
ところで、本発明では、装着負荷のパラメータが正しく入力されていない場合でも、異常判定の誤判定の確率を減じることができる。
【００６７】
（数３）で計算される外力推定トルク値τｄｉｓｏは、実際の外力トルク値τｄｉｓが「０」でも、装着負荷のパラメータに誤差があると、動力学トルク値τｄｙｎの計算に誤差を生じるため、「０」にはならない。誤差を含む動力学トルク値をτｄｙｎ＿ｅｒｒ、この推定誤差をΔτｄｉｓとすると（数５）が成立する。
【００６８】
Δτｄｉｓ＝Ｋｔ×Ｉｍ−（Ｊｍ×α＋Ｄ×ωｍ＋Ｋμ×ｓｇｎ
＋τｄｙｎ＿ｅｒｒ）      （数５）
この動力学トルク演算に誤差がある状態で、実際の故障で摩擦トルク値がΔτμ増えたとすると、外力トルク推定値τｄｉｓｏは（数６）で計算される。
【００６９】
τｄｉｓｏ＝Ｋｔ×Ｉｍ
−（Ｊｍ×α＋Ｄ×ωｍ＋（τμ＋Δτμ）×ｓｇｎ
＋τｄｙｎ＿ｅｒｒ）
＝Δτｄｉｓ＋Δτμ×ｓｇｎ      （数６）
このとき、（数６）で、｜Δτμ｜＞｜Δτｄｉｓ｜であれば、つまり動力学トルク演算誤差があっても、その誤差に起因する推定誤差より故障による摩擦トルク値増加が上回れば、Δτｄｉｓの符号に関わりなく、外力トルク推定値τｄｉｓｏの絶対値は（数７−１）、（数７−２）で表すことができる。
【００７０】
｜τｄｉｓｏ［＋］｜＝  Δτｄｉｓ＋Δτμ      （数７−１）
｜τｄｉｓｏ［−］｜＝−Δτｄｉｓ＋Δτμ      （数７−２）
｜τｄｉｓｏ［＋］｜：モータが正方向回転時の外力トルク推定値の絶対値
｜τｄｉｓｏ［−］｜：モータが負方向回転時の外力トルク推定値の絶対値
ここで、ΔτｄｉｓとΔτμの単位時間平均をそれぞれΔτｄＡ、ΔτμＡとすると、外力トルク推定値τｄｉｓｏの絶対値の単位時間平均τｄＡは（数８−１）、（数８−２）のように表せる。
【００７１】
τｄＡ［＋］＝  ΔτｄＡ＋ΔτμＡ      （数８−１）
τｄＡ［−］＝−ΔτｄＡ＋ΔτμＡ      （数８−２）
τｄＡ［＋］：モータが正方向回転時の外力トルク推定値の絶対値の単位時間平均
τｄＡ［−］：モータが負方向回転時の外力トルク推定値の絶対値の単位時間平均
ここで、産業用ロボットの動作角度は有限であり、大きくても±３６０度程度であるので、それを駆動するモータが１方向のみに回転しつづけることはない。＋方向への回転角度と−方向への回転角度の差は最大で７２０度である。例えば、異常判定の単位時間を１時間にしておけば、延べ回転角度は数万度を超える場合が大半であるので、＋方向への回転角度と−方向への回転角度はほぼ同じと考えてよい。
【００７２】
そこで、外力トルク推定値の単位時間平均τｄＡは、τｄＡ［＋］とτｄＡ［−］の平均をとればよいので（数９）で計算できる。
【００７３】
τｄＡ＝（τｄＡ［＋］＋τｄＡ［−］）／２
＝（ΔτｄＡ＋ΔτμＡ−ΔτｄＡ＋ΔτμＡ）／２
＝ΔτμＡ      （数９）
（数９）より、正確な負荷パラメータが入力されず動力学トルク演算に誤差があっても、その誤差に起因する推定誤差ΔτｄＡより故障による摩擦トルク値増加ΔτμＡが上回れば、故障に起因する摩擦トルク値増加ΔτμＡを正しく判断できることがわかる。
【００７４】
つまり、正確な負荷パラメータが入力されていない場合、実際に故障により摩擦が増加しても、その摩擦トルク値増加ΔτμＡがパラメータ誤差に起因する誤差ΔτｄＡを下回っている時点では、図８のフローチャートのステップＳ８０３の条件が満たされない場合が発生する。したがって、この場合は異常判定基準値設定部３８での処理（図４のフローチャート）が再開され、異常判定閾値τｄｔｈが再設定される。しかし、摩擦トルク値増加ΔτμＡがさらに増加し、パラメータ誤差に起因する誤差ΔτｄＡを上回ると、外力トルク推定平均値τｄＡに摩擦トルク値増加ΔτμＡが正しく反映される。したがって、ステップＳ８０３が正しく判断される。以上の内容により誤判定の確率を減じることができる。
【００７５】
なお、本実施の形態では、モータ出力トルク値を優先した場合を説明したが、モータ出力トルク値と外力トルク値の異常判定の順序を入れ替えて、外力トルク値を優先して異常判定を行うことができる。
【００７６】
すなわち、まず、外力トルク推定値τｄＡのＮ個分の平均値である外力トルク推定平均値τｄＡＡが、所定のＮ個分の外力トルク推定平均値τｄＡから得た外力トルク推定平均値の基準値τｄＡＡに、第２の所定値τｄｔｈ２を加えた第２の異常判定基準値τｄｔｈを超えるか否かを、ロボットの動作中に判定する。次に、モータ出力トルク値τｍＡのＮ個分の平均値であるモータ出力トルク平均値τｍＡＡが、所定のＮ個分のモータ出力トルク平均値τｍＡから得たモータ出力トルク平均値の基準値τｍＡＡに、第１の所定値τｍｔｈ２を加えた第１の異常判定基準値τｍｔｈを超えるか否かを、ロボットの動作中に判定する。その結果、外力トルク推定平均値τｄＡＡが第２の異常判定基準値τｄｔｈ２を超え、かつ、モータ出力トルク平均値τｍＡＡが第１の異常判定基準値τｍｔｈを超えた場合に異常と判定するものである。
【００７７】
この場合、Ｎ個の外力トルク推定値τｄＡと外力トルク推定平均値τｄＡＡとの差が予め定めた所定の値τｍｔｈ１より小さいときの外力トルク推定平均値τｄＡＡを、外力トルク推定平均値の基準値τｄＡＡと設定し、このときのモータ出力トルク平均値τｍＡＡをモータ出力トルク平均値の基準値τｍＡＡと設定する。
【００７８】
また、外力トルク推定移動平均値が異常判定基準値を超えるが、モータ出力トルク移動平均値が異常判定基準値を超えない場合に、異常判定基準値設定部３８での処理（図４のフローチャート）を再開させ、モータ出力トルク異常判定基準値τｍｔｈと外力トルク異常判定基準値τｄｔｈを求める処理を再度行い、これらを新たな基準値として異常判断処理を行うようにしてもよい。
【００７９】
また、本実施の形態では、モータ出力トルク値の絶対値のＮ個の移動平均値τｍＡＡにモータ出力トルク異常判定値を設定するための加算値τｍｔｈ２を加算してモータ出力トルク異常判定値算出し、その後のモータ出力トルク値の絶対値のＮ個の移動平均値τｍＡＡがモータ出力トルク異常判定値を超えるか否かを判定して異常を判定する例を示した。しかし、モータ出力トルク移動平均値とモータ出力トルク移動平均値の基準値との差が所定の値を超えるか否かを判定して異常を判定するようにしてもよい。なお、所定の値は、例えば実験等により予め決定することができる。
【００８０】
また、本実施の形態では、外力トルク値の絶対値のＮ個の移動平均値τｄＡＡに外力トルク異常判定値を設定するための加算値τｄｔｈ２を加算して外力トルク異常判定値算出し、その後の外力トルク値の絶対値のＮ個の移動平均値τｄＡＡが外力トルク異常判定値を超えるか否かを判定して異常を判定する例を示した。しかし、外力トルク移動平均値と外力トルク移動平均値の基準値との差が所定の値を超えるか否かを判定して異常を判定するようにしてもよい。なお、所定の値は、例えば実験等により予め決定することができる。
【００８１】
さらに、本実施の形態では、まず単位時間内のモータ出力トルク値τｍｏの他の平均値τｍＡを計算し、その後Ｎ個の他の平均値τｍＡからモータ出力トルク平均値（移動平均値）τｍＡＡを求めた。しかし、上記他の平均値τｍＡを求めなくても、モータ出力トルク値τｍｏからモータ出力トルク平均値（移動平均値）τｍＡＡを求めることも可能である。このことは、外力トルク推定平均値τｄＡＡを求める場合も同様である。
【００８２】
また、本実施の形態では、任意の１つのモータについて異常判断を行うようにした。しかし、多関節ロボットは複数のモータを備えているので、本実施の形態と同様な方法で、全てのモータについて異常判定を行ってもよい。あるいは、特定のモータについて異常判定を行ってもよい。
【００８３】
なお、本実施の形態のロボットには、例えばサーボモータが使用されており、このサーボモータの異常判定を行うものである。
【産業上の利用可能性】
【００８４】
本発明は、基準データの測定、記憶を必要とせず、生産ライン稼働中の判定も可能で、正確な負荷パラメータが入力されていない場合や外力を受けた場合でも誤判定の確率を減じることができるので、動作中のロボットの異常判定方法として有用である。
【符号の説明】
【００８５】
６    位置制御部
１０    速度制御部
１８    モータ／外力トルク部
２１    方向判定部
２６    動力学トルク演算部
３０    外力トルク推定部
３２    異常判定装置
３４    異常警告表示部
３５    単位時間平均部
３６    データ蓄積部
３７    移動平均部
３８    異常判定基準値設定部
４０    異常判定部
１０１    溶接ワイヤ
１０３    ワイヤ送給モータ
１０４    溶接トーチ
１０５    溶接電源装置
１０７    母材
１０８    アーク
１０９    ロボット
１１０    ロボット制御装置
１１１    トーチケーブル
１１２    治具
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
モータ出力トルク値のＮ個分（Ｎは正の整数）の平均値であるモータ出力トルク平均値が、所定の前記Ｎ個分のモータ出力トルク平均値から得たモータ出力トルク平均値の基準値に、第１の所定値を加えた第１の異常判定基準値を超えるか否かを、ロボットの動作中に判定するステップと、
外力トルク推定値のＮ個分の平均値である外力トルク推定平均値が、所定の前記Ｎ個分の外力トルク推定平均値から得た外力トルク推定平均値の基準値に、第２の所定値を加えた第２の異常判定基準値を超えるか否かを前記ロボットの動作中に判定するステップと、
前記モータ出力トルク平均値が前記第１の異常判定基準値を超え、かつ、前記外力トルク推定平均値が前記第２の異常判定基準値を超えた場合に異常と判定するステップと
を備えたロボットの異常判定方法。
【請求項２】
ＮＮ個（ＮＮは正の整数）のモータ出力トルク値と前記モータ出力トルク平均値との差が予め定めた所定の値より小さいときの前記モータ出力トルク平均値を、前記モータ出力トルク平均値の基準値と設定し、このときの前記外力トルク推定平均値を前記外力トルク推定平均値の基準値と設定するステップを備えた請求項１記載のロボットの異常判定方法。
【請求項３】
ＮＮ個の外力トルク推定値と前記外力トルク推定平均値との差が予め定めた所定の値より小さいときの前記外力トルク推定平均値を、前記外力トルク推定平均値の基準値と設定し、このときの前記モータ出力トルク平均値を前記モータ出力トルク平均値の基準値と設定するステップを備えた請求項１記載のロボットの異常判定方法。
【請求項４】
前記モータ出力トルク平均値が前記第１の異常判定基準値を超え、前記外力トルク推定平均値が前記第２の異常判定基準値を超えない場合、または、前記外力トルク推定平均値が前記第２の異常判定基準値を超え、前記モータ出力トルク平均値が前記第１の異常判定基準値を超えない場合は、前記モータ出力トルク平均値の基準値と前記外力トルク推定平均値の基準値を設定する請求項２または３記載のロボットの異常判定方法。
【請求項５】
前記モータ出力トルク値および前記外力トルク推定値は、予め決められた単位時間内の前記モータ出力トルク値および前記外力トルク推定値の他の平均値である請求項１記載のロボットの異常判定方法。
【請求項６】
モータ出力トルク値のＮ個分（Ｎは正の整数）の平均値であるモータ出力トルク平均値と、所定の前記Ｎ個分のモータ出力トルク平均値から得たモータ出力トルク平均値の基準値との差が、第１の所定の値を超えるか否かを、ロボットの動作中に判定するステップと
外力トルク推定値のＮ個分の平均値である外力トルク推定平均値と、所定の前記Ｎ個分の外力トルク推定平均値から得た外力トルク推定平均値の基準値との差が、第２の所定の値を超えるか否かを、前記ロボットの動作中に判定するステップと、
前記モータ出力トルク平均値と前記モータ出力トルク平均値の基準値との差が前記第１の所定の値を超え、かつ、前記外力トルク推定平均値と前記外力トルク推定平均値の基準値との差が前記第２の所定の値を超えた場合に異常と判定するステップと
を備えたロボットの異常判定方法。
【請求項７】
ＮＮ個のモータ出力トルク値と前記モータ出力トルク平均値との差が予め定めた所定の値より小さいときの前記モータ出力トルク平均値を、前記モータ出力トルク平均値の基準値と設定し、このときの前記外力トルク推定平均値を前記外力トルク推定平均値の基準値と設定するステップを備えた請求項６記載のロボットの異常判定方法。
【請求項８】
ＮＮ個の外力トルク推定値と前記外力トルク推定平均値との差が予め定めた所定の値より小さいときの前記外力トルク推定平均値を、前記外力トルク推定平均値の基準値と設定し、このときの前記モータ出力トルク平均値を前記モータ出力トルク平均値の基準値と設定するステップを備えた請求項６記載のロボットの異常判定方法。
【請求項９】
前記モータ出力トルク平均値と前記モータ出力トルク平均値の基準値との差が前記第１の所定の値を超え、かつ、前記外力トルク推定平均値と前記外力トルク推定平均値の基準値との差が前記第２の所定の値を超えない場合、または、前記外力トルク推定平均値と前記外力トルク推定平均値の基準値との差が前記第２の所定の値を超え、かつ、前記モータ出力トルク平均値と前記モータ出力トルク平均値の基準値との差が前記第１の所定の値を超えない場合には、前記モータ出力トルク平均値の基準値と前記外力トルク推定平均値の基準値を設定する請求項７または８記載のロボットの異常判定方法。
【請求項１０】
前記モータ出力トルク値および前記外力トルク推定値は、予め決められた単位時間内の前記モータ出力トルク値および前記外力トルク推定値の他の平均値である請求項６記載のロボットの異常判定方法。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2009142006.tif 000018
【図２】
2009142006.tif 000019
【図３】
2009142006.tif 000020
【図４】
2009142006.tif 000021
【図５】
2009142006.tif 000022
【図６】
2009142006.tif 000023
【図７】
2009142006.tif 000024
【図８】
2009142006.tif 000025
【図９】
2009142006.tif 000026
【図１０】
2009142006.tif 000027
【図１１】
2009142006.tif 000028
【手続補正書】
【提出日】平成23年4月25日(2011.4.25)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モータにより駆動されるロボット、特に、多関節型ロボットの異常判定方法に関するものである。
【背景技術】
【０００２】
近年、生産リードタイム短縮の要求が高まっている。しかし、溶接やハンドリング等に用いられる垂直あるいは水平の多関節型ロボットにおいて、ロボットを駆動するモータや減速機等の機構部品に故障が生じて交換が必要となった場合、交換のために生産を数時間にわたって停止しなければならず、大きな問題となっている。
【０００３】
ロボットを駆動するモータや減速機等に故障が生じた場合、摩擦力が上昇してモータ駆動力が増加する場合が大半である。そこで、ロボットが完全に動作不能になるまでにモータ駆動力の異常状態を知ることができれば、休日や夜間等の生産ライン休止中にモータ等の機構部品を交換することが可能となり、生産に与える影響を減じることができる。
【０００４】
そこで、故障に起因して発生するモータの速度波形の変動に着目してロボットの異常を検出する方法が知られている（例えば、特許文献１参照）。また、駆動側の仕事率（モータ出力仕事率）と負荷側の仕事率（ロボットの運動方程式演算から得られる仕事率）の差に着目してロボットの異常を検出する方法も知られている（例えば、特許文献２参照）。
【０００５】
前者の速度波形の変動から異常を判定する方法では、次に挙げる問題点がある。１つ目は、個々のロボットで正常状態における速度波形データを基準データとして測定しておき、かつ、記憶しておく必要がある点である。２つ目は、異常判定を行う場合、基準となる動作パターンでロボットを動作させなければならない点である。従って、生産ライン稼働時のモータ速度波形データは異常判定のための速度波形データとは異なるので、当然、生産ラインの稼働中には異常判定を行うことができない。また、例え生産ライン休止等で異常判定を実施できる時間があるとしても、異常判定を行うためだけに基準となる動作パーンで動作させなければならない。そのため、異常測定作業工数のコストが発生する。また、生産ラインの稼動時間が長くコストに厳しい生産現場において、ロボットの異常判定を行うためだけに上記２つの点を行うことは現実的には非常に困難である。
【０００６】
また、後者の仕事率の差による異常判定方法では、前者の問題点が解決され、基準データの測定や記憶も必要なく、生産ライン稼働中でも判定が可能である。しかしながら、駆動側の仕事率は正確に計算できても、負荷側の仕事率が正確に計算できるとは限らない。その理由は、ユーザによりロボットに装着される負荷（溶接用トーチやハンドリングツールやワーク等）のパラメータ（質量、重心位置、イナーシャ等）が正確でなければ、ロボットの運動方程式による仕事率の計算に誤差が発生するからである。特許文献２では、装着負荷を含むロボット機構部の質点モデルに関する運動方程式と、角度、角速度 、及び角加速度により負荷トルク値を算出し、それに角速度を乗じることで負荷側の仕事率を求めている。
【０００７】
近年の産業用ロボットでは、加減速の最適化や衝突検出の高精度化にも正確な負荷パラメータが要求されている。従って、負荷パラメータの入力装置や自動測定機能を備えたロボットも多く見られる。しかしながら、負荷パラメータの入力や自動測定機能の使用を実行するか否かはユーザに任せられており、必ずしも正確な負荷パラメータが入力されているとは限らない。もし、負荷の設定パラメータと実パラメータとの間に大きな差があると、負荷側の仕事率には大きな誤差が生じてしまい、異常と誤判定する可能性がでてくる。
【０００８】
また、駆動側の仕事率が増加する原因としては、ロボットを駆動するモータや減速機等の故障による摩擦上昇でモータ駆動力が増加することだけではない。ロボットが他の物と接触した場合や、ロボットに装着されたケーブルに張力が加わる場合等、外力を受けてモータ駆動力が増減することも原因となる。ただし、前者の摩擦が上昇する場合は、増えた摩擦エネルギーを補うためにモータ駆動力も増加する。しかし、後者の外力を受ける場合は駆動側の仕事率が増加する方向に変化するとは限らない。例えば、ケーブルの張力増加がロボットの重力を支える力になり、駆動側の仕事率が減少する可能性がある。このような場合でも駆動側の仕事率と負荷側の仕事率の差は拡大するので、機構の故障以外の原因でも異常と判定してしまう可能性がある。
【０００９】
図１１は上述したケーブルの張力増加がロボットの重力を支える力になる場合を説明するための図であり、従来の溶接ロボットシステムの概略構成を示している。
【００１０】
図１１において、消耗電極である溶接ワイヤ１０１は、ワイヤ送給モータ１０３により、ワイヤースプール１０２から中空構造のトーチケーブル１１１（点線で示している）を通って溶接トーチ１０４のへ送られる。溶接電源装置１０５は、溶接トーチ１０４および溶接チップ１０６を経由して溶接ワイヤ１０１と被溶接物である母材１０７との間に所定の溶接電流Ｉ及び溶接電圧Ｖを印加してアーク１０８を発生させる。また、溶接電源装置１０５は、ワイヤ送給モータ１０３の制御を行って溶接施工を行う。ロボット１０９は、溶接トーチ１０４を保持し、溶接開始位置（図示せず）に位置決めを行うと共に溶接線（図示せず）に沿って溶接トーチ１０４を移動させる。このようなロボット全体の制御は、ロボット制御装置１１０により行われる。
【００１１】
このとき、例えばユーザが溶接ワイヤ１０１の形状維持による送給性能確保や周辺物との干渉回避を目的として、トーチケーブル１１１を上方から吊すための治具１１２を設置することが良く行われる。なお、ロボット１０９の動作に伴いトーチケーブル１１１も移動する。従って、治具１１２には、ばねやゴムなどの弾性体が用いられることが多い。このため、トーチケーブル１１１を介して、溶接トーチ１０４およびそれを保持するロボット１０９にも上方へ引っ張る力が働き、ロボット１０９の重力を支える力となる。特に、溶接トーチ１０４が装着されるロボット先端部は、容量の小さなモータが搭載されるので、このようなトーチケーブル１１１の張力変化は無視できないものとなる。また、このような治具１１２の選定や取り付けや交換はユーザによって行われる。したがって、治具１１２を用いることによって、あるいは治具１１２の取り付けや交換によって、異常が発生したと誤判定してしまう可能性がある。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開昭６３−１２３１０５号公報
【特許文献２】特開平１１−１２９１８６号公報
【非特許文献】
【００１３】
【非特許文献１】マニピュレータの動的衝突検出、小菅一弘、他１名、日本機械学会［Ｎｏ．９９−  ９］ロボティクス・メカトロニクス講演会’９９講演論文集  ２Ａ１−１１−０３０
【発明の概要】
【００１４】
本発明は、基準データの測定、記憶が必要なく、生産ライン稼働中の判定も可能であり、正確な負荷パラメータが入力されていない場合や外力を受けた場合でも異常と誤判定してしまうことを低減するロボットの異常判定方法を提供するものである。
【００１５】
本発明は、モータ出力トルク平均値のＮ個分（Ｎは正の整数）の移動平均値であるモータ出力トルク移動平均値が、所定のＮ個分のモータ出力トルク平均値から得たモータ出力トルク移動平均値の基準値に、第１の所定値を加えた第１の異常判定基準値を超えるか否かを、ロボットの動作中に判定するステップと、外力トルク平均値のＮ個分の移動平均値である外力トルク移動平均値が、所定のＮ個分の外力トルク平均値から得た外力トルク移動平均値の基準値に、第２の所定値を加えた第２の異常判定基準値を超えるか否かをロボットの動作中に判定するステップと、モータ出力トルク移動平均値が第１の異常判定基準値を超え、かつ、外力トルク移動平均値が第２の異常判定基準値を超えた場合に異常と判定するステップとを備えている。
【００１６】
かかる構成によれば、基準データの測定、記憶を必要とせず、生産ライン稼働中の判定も可能である。また、正確な負荷パラメータが入力されていない場合や外力を受けた場合でも、異常と誤判定してしまうことを低減することができる。
【図面の簡単な説明】
【００１７】
【図１】図１は、本発明の一実施の形態におけるロボット異常判定を説明するブロック図である。
【図２】図２は、図１における異常判定部の詳細を示すブロック図である。
【図３】図３は、同実施の形態におけるロボットの異常判定方法の単位時間内平均演算処理を示すフローチャートである。
【図４】図４は、同実施の形態におけるロボットの異常判定方法の異常判定基準値設定処理を示すフローチャートである。
【図５】図５は、図４のフローチャートにおけるモータ出力トルク移動平均値に基づく異常判定基準値設定課程を説明する第１の図である。
【図６】図６は、図４のフローチャートにおけるモータ出力トルク移動平均値に基づく異常判定基準値設定課程を説明する第２の図である。
【図７】図７は、図４のフローチャートにおける外力トルク移動平均値に基づく異常判定基準値設定課程を説明する図である。
【図８】図８は、同実施の形態におけるロボットの異常判定方法の異常判定処理を示すフローチャートである。
【図９】図９は、図８のフローチャートにおけるモータ出力トルク移動平均値に基づく異常判定課程を説明する図である。
【図１０】図１０は、図８のフローチャートにおける外力トルク移動平均値に基づく異常判定課程を説明する図である。
【図１１】図１１は、従来の溶接ロボットシステムを示す構成図である。
【発明を実施するための形態】
【００１８】
以下、本発明を図面を用いて説明する。なお、本発明はこれに限られるものではない。
【００１９】
（実施の形態）
図１は、本発明の一実施の形態におけるロボットの異常判定方法を説明するブロック図であって、ロボット異常判定を含む位置制御ループを示している。図２は、図１における異常判定を示すブロック図である。図３は、同実施の形態におけるロボットの異常判定方法の、モータ出力トルク値および外力トルク値の単位時間内平均値演算処理を示すフローチャートである。図４は、同実施の形態におけるロボットの異常判定方法の、モータ出力トルク値および外力トルク値の移動平均値に基づく異常判定基準値設定処理を示すフローチャートである。
【００２０】
なお、本実施の形態で説明するロボットの異常判定方法は、例えば、図１１に示す従来と同様の溶接システムの構成に適用できる。すなわち、本実施の形態は、図１１に示す溶接システムにおけるロボット制御装置１１０での制御方法が従来とは異なる。したがって、本実施の形態では、図１１に示す溶接システムの構成を例として説明する。
【００２１】
図１において、位置指令θｃｏｍは、ユーザにより指示された始点位置および終点位置に基づいて得られる。位置制御部６は、位置指令θｃｏｍと、後述するモータ／外力トルク部１８からフィードバックされたモータ角速度ωｍとを入力として比例制御（Ｐ制御）を行い、速度指令ωｃｏｍを出力する。速度制御部１０は、速度指令ωｃｏｍと、フィードバックされたモータ角速度ωｍを入力として比例・積分制御（ＰＩ制御）を行い、モータ電流指令Ｉｍを生成する。
【００２２】
以下、図１に示すブロック図の動作を詳細に説明する。図１において、位置制御部６は、位置指令θｃｏｍ（例えば、トーチを搭載したロボットの関節角）と、フィードバックされたモータ角速度ωｍ（例えば、ロボット角軸の角速度）を積分したモータ位置θｍとの差分値に基づいて、速度指令ωｃｏｍを生成する。
【００２３】
速度制御部１０は、速度指令ωｃｏｍと、フィードバックされたモータ角速度ωｍの差分値に基づいてモータ電流指令Ｉｍを生成する。
【００２４】
モータ／外力トルク部１８は、溶接トーチ１０４と溶接トーチ１０４を回転させるモータとを含む。モータ／外力トルク部１８では、モータで発生するモータ出力トルク値τｍや、溶接トーチ１０４に加わる外力トルク値τｄｉｓや、移動摩擦トルク値τμが発生する。これらのトルク値に基づいて、モータ速度を制御するモータ角速度ωｍを出力し、位置制御部６および速度制御部１０にフィードバックする。モータ／外力トルク部１８は、制御系が駆動する負荷であって、モータ電流指令Ｉｍにより発生するモータ出力トルク値τｍによって、実際の角速度ωｍがどのように変化するかを示したものである。
【００２５】
外力トルク推定部３０は、外力トルク値τｄｉｓをセンサレスで推定する。すなわち、外力トルク値τｄｉｓの推定値である外力トルク推定値τｄｉｓｏを出力する。
【００２６】
ところで、外力トルク値をセンサレスで推定する方法としては、動力学演算方式や外乱推定オブザーバ方式が知られている。動力学演算方式は、モータの駆動電流で発生したトルク値からモータ及び減速機のイナーシャと摩擦で損失するトルク値を差し引いた減速機出力トルク値より、ロボットの逆動力学演算から求めたロボットの動力学トルク値を差し引いて外力トルク値を求める方式である（非特許文献１参照）。外乱推定オブザーバ方式は、外乱推定オブザーバを用いて衝突力を求める方式である。本実施の形態では、前者の動力学演算方式を用いた場合を例にして説明する。
【００２７】
図１において、モータ出力トルク値τｍは、減速機が剛体であると仮定すると、モータ駆動側から見た場合は（数１−１）で示され、負荷側から見た場合は（数１−２）で示される。 
τｍ＝Ｋｔ×Ｉｍ      （数１−１）
τｍ＝τｄｙｎ＋τｄｉｓ＋Ｊｍ×αｍ＋Ｄ×ωｍ＋τμ      （数１−２）
Ｋｔ：モータトルク定数
Ｉｍ：モータ電流
ωｍ：モータ角速度
αｍ：モータ角加速度（モータ角速度ωｍの微分値）
Ｊｍ：モータイナーシャ（ロータ＋減速機１次側）
Ｄ：粘性摩擦係数
τμ：動摩擦トルク値
τｄｙｎ：動力学トルク値（重力トルク値と慣性力と遠心力とコリオリ力の和）
τｄｉｓ：外力トルク値
また、動摩擦トルク値τμは、以下に示す（数２）で計算できる。
τμ＝Ｋμ×ｓｇｎ      （数２）
Ｋμ：動摩擦の大きさ
ｓｇｎ＝１（ωｍ＞０）、０（ωｍ＝０）、−１（ωｍ＜０）
また、（数１−２）の右辺にある外力トルク値τｄｉｓは、（数１−１）と（数１−２）より、以下に示す（数３）に変形して求めることが出来る。
τｄｉｓ＝Ｋｔ×Ｉｍ−（Ｊｍ×αｍ＋Ｄ×ωｍ＋Ｋμ×ｓｇｎ＋τｄｙｎ）      （数３）
なお、（数３）において、Ｋｔ×Ｉｍ−Ｊｍ×αｍ−Ｄ×ωｍ−Ｋμ×ｓｇｎはモータが減速機に出力するトルク値である。
【００２８】
図１において、外力トルク推定部３０は、（数３）の演算を行うブロックとして示している。
【００２９】
外力トルク推定部３０において、動力学トルク推定値τｄｙｎｏは、動力学トルク演算部２６において、ロボットを構成する全軸のモータ角速度ωｍのフィードバックとロボットの機械パラメータを用いて逆動力学演算を実行することで求められる。また、モータ出力トルク推定値τｍｏは、モータ電流指令Ｉｍを用いて（数１−１）で計算される。外力トルク推定部３０は、動力学トルク推定値τｄｙｎｏとモータ出力トルク推定値τｍｏを用いて、（数３）から外力トルク推定値τｄｉｓｏを求める。その結果、外力トルク推定値τｄｉｓｏとモータ出力トルク推定値τｍｏを異常判定装置３２へ出力する。
【００３０】
図２は、図１における異常判定装置３２の詳細を示すブロック図である。図２を用いて、異常判定装置３２の動作を説明する。なお、以下の説明において、単位時間とは異常判定を行う間隔と定義する。この単位時間は、例えば１時間等である。また、ロボットが停止している時間は除き、稼動している時間をいう。
【００３１】
単位時間平均部３５では、外力トルク推定部３０から出力されたモータ出力トルク推定値τｍｏおよび外力トルク推定値τｄｉｓｏのそれぞれの絶対値の単位時間平均値であるモータ出力トルク平均値τｍAおよび外力トルク平均値τｄAを算出する。
【００３２】
この算出方法を図３のフローチャートに示す。図３の処理はモータ出力トルク推定値τｍｏおよび外力トルク推定値τｄｉｓｏの演算周期毎に実施する。
【００３３】
図３において、まず、当該軸角速度ωｍおよび他軸角速度ωｍの中で絶対値が最大の角速度ωｍＭＡＸが、平均処理の実行を判定する予め定められた角速度閾値ωｍｔｈより大きいかどうかを判定する（ステップＳ３０１）。ステップＳ３０１で、最大角速度ωｍＭＡＸが角速度閾値ωｍｔｈより大きい場合に（ステップＳ３０１のＹ）ステップＳ３０２に進み、それ以外（ステップＳ３０１のＮ）では処理を終了させる。なお、ステップＳ３０１の条件を設ける理由は、ロボットがユーザによる停止操作やセンサ信号入力待ち等で停止している場合、その停止時間は不確定であり、その状態も含めて単位時間平均すると、平均値にバラツキが生じるからである。また、ここでは、モータ角速度を監視する例を挙げたが、ロボットが動作していることが確認できれば、他の方法を用いても良い。例えばロボットプログラム内で動作命令が実行されている時、位置指令が生成されている時等でロボット動作の判定をしても良い。
【００３４】
ステップＳ３０２では、モータ出力トルク推定値の絶対値｜τｍｏ｜の積算値τｍＳおよび外力トルク推定値の絶対値｜τｄｉｓｏ｜の積算値τｄＳおよび積算回数ｉを演算する。
【００３５】
その後、ステップＳ３０３では、積算回数ｉが予め定めた平均回数ｎｕｍに到達したかを判断する。ステップＳ３０３で、積算回数ｉが平均回数ｎｕｍに到達していれば（ステップＳ３０３のＹ）ステップＳ３０４に進み、到達していなければ（ステップＳ３０３のＮ）処理を終える。
【００３６】
ステップＳ３０４では、各積算値τｍＳ、τｄＳを平均回数ｎｕｍで割り、ロボット動作の単位時間平均値であるモータ出力トルク平均値τｍＡおよび外力トルク平均値τｄＡを算出する。
【００３７】
例えばロボット動作の単位時間を１時間と設定し、モータ出力トルク推定値τｍｏおよび外力トルク推定値τｄｉｓｏが１０ミリ秒毎に演算されていたとすると、平均回数はｎｕｍ＝３６００００回と言うことになる。
【００３８】
次に、この単位時間平均値（例えば、１時間の平均値）であるモータ出力トルク平均値τｍＡと外力トルク平均値τｄＡをデータ蓄積部３６に蓄積する。単位時間ｊ回目（例えば、単位時間が１時間であればｊ時間目）のモータ出力トルク平均値τｍＡをτｍＡ［ｊ］と定義する。現在が単位時間でｘ回目で、ｘ回目までの蓄積個数をＮ個（Ｎは正の整数）としたとすると、モータ出力トルク値τｍＡ［ｘ−Ｎ＋１］からτｍＡ［ｘ］までのデータを蓄積する。
【００３９】
例えば、現在が単位時間で１０００回目（ｘ＝１０００）、データ蓄積個数が４８個（Ｎ＝４８）とすると、モータ出力トルク平均値τｍＡ［９５３］からτｍＡ［１０００］までのデータを蓄積していることになる。単位時間が１時間であると、ロボット動作４８時間分のデータを蓄積することになる。外力トルク平均値τｄＡ[ｊ]についても同様である。
【００４０】
移動平均部３７では、データ蓄積部３６に蓄積されたＮ個分のデータの現在の移動平均τｍＡＡ［ｘ］およびτｄＡＡ［ｘ］を、単位時間ｘ回目のモータ出力トルク平均値および単位時間ｘ回目の外力トルク平均値に対して、それぞれ（数４−１）、（数４−２）により求める。
【００４１】
【数４−１】
2009142006.tif 000029
【００４２】
【数４−２】
2009142006.tif 000030
【００４３】
異常判定基準値設定部３８では、図４に示すフローチャートに基づいて、モータ出力トルク平均値τｍＡ［ｘ−ＮＮ＋１］（ＮＮは正の整数）からτｍＡ［ｘ］までのＮＮ個のデータが、Ｎ個のモータ出力トルク平均値の移動平均値τｍＡＡ[ｘ]を基準として、一定範囲内のバラツキに収まっているかを判断する。すなわち、ＮＮ個のモータ出力トルク平均値τｍＡ［ｊ］の全てとＮ個のモータ出力トルク平均値の移動平均値τｍＡＡ[ｊ]との差が、予め定めた所定値より小さいかどうかを判断する。その結果、一定の範囲内にあれば、その時点でのＮ個のモータ出力トルク平均値の移動平均値をその基準値として、さらにＮ個の外力トルク平均値の移動平均値をその基準値として、それぞれ設定する。その後、設定したモータ出力トルク移動平均値の基準値および外力トルク移動平均値の基準値に基づいて、図２に示すモータ出力トルク異常判定基準値τｍｔｈ（第１の異常判定値）および外力トルク異常判定基準値τｄｔｈ（第２の異常判定値）を決定し、異常判定基準値設定済フラグｆｔｈに「１」をセットする。
【００４４】
以下、図４のフローチャートを説明する。図４に示すフローチャートは、異常判定単位時間毎に実施する。図４において、ステップＳ４０１では、異常判定基準値設定済フラグｆｔｈが「０」かどうかを判定する。ステップＳ４０１で、異常判定基準値設定済フラグｆｔｈが「０」であれば（ステップＳ４０１のＹ）、異常判定基準値が設定されていないのでステップＳ４０２へ進む。ステップＳ４０１で、異常判定基準値設定済フラグｆｔｈが「１」であれば（ステップＳ４０１のＮ）、既に異常判定基準値が設定されているので処理を終了する。
【００４５】
ステップＳ４０２では、モータ出力トルク平均値τｍＡ［ｘ−ｋ］とモータ出力トルク移動平均値τｍＡＡ［ｘ］の差の絶対値が、単位時間平均のバラツキを判断する閾値τｍｔｈ１より小さいかを判定する。モータ出力トルク平均値τｍＡ［ｘ−ｋ］とモータ出力トルク移動平均値τｍＡＡ［ｘ］の差の絶対値が閾値τｍｔｈ１より小さい場合は（ステップＳ４０２のＹ）、ステップＳ４０３に移行する。しかし、それ以外の場合は（ステップＳ４０２のＮ）、処理を終了する。なお、閾値τｍｔｈ１は、例えば実験等により予め求めておくことができる。図５に示す本実施の形態では、モータ最大トルク値の５％としている。この値は、小さくするほど、負荷率が安定して一定になるまで、モータ発生トルク異常判定基準値τｍｈが定まらない。つまり、基準値の妥当性は向上するものの、基準値が定まらないので異常判定がなかなか実施されないと言うことになる。したがって、この値は、実際の使用状況から適切な値に定めればよい。
【００４６】
ステップＳ４０３では演算ステップ数ｋに「１」を加算する。ステップＳ４０４では、演算ステップ数ｋがバラツキ判定個数ＮＮ回に到達しているかどうか判定する。ステップＳ４０３で演算ステップ数ｋがＮＮ回に到達していれば（ステップＳ４０３のＹ）、制御系が安定していると判断してステップＳ４０５へ移行する。しかし、演算ステップ数ｋがＮＮ回に到達していない場合は（ステップＳ４０３のＮ）、制御系がまだ安定していないと判断してステップＳ４０２へ戻る。
【００４７】
ステップＳ４０５では、ＮＮ個のモータ出力トルク平均値τｍＡ［ｘ］が一定のバラツキ範囲内に入った時点のモータ出力トルク移動平均値τｍＡＡ［ｘ］（この値がモータ出力トルク移動平均値の基準値となる）に基づいて、モータ出力トルク異常判定基準値τｍｈを計算する。さらに、このときの外力トルク異常判定基準値τｄｔｈを計算し、異常判定基準値設定済フラグｆｔｈに「１」をセットして処理を終える。なお、モータ出力トルク異常判定基準値τｍｈは、ＮＮ個のモータ出力トルク平均値τｍＡ［ｘ］が一定のバラツキ範囲内に入った時点のモータ出力トルク移動平均値τｍＡＡ［ｘ］（モータ出力トルク移動平均値の基準値）にモータ出力トルク異常基準値を設定するための加算値τｍｔｈ２（第１の所定値）を加算して算出する。このように、モータ出力トルク移動平均値の基準値は、ＮＮ個のモータ出力トルク平均値τｍＡ［ｘ］が一定のバラツキ範囲内に入った時点のモータ出力トルク移動平均値τｍＡＡ［ｘ］である。すなわち、モータ出力トルク移動平均値の基準値は、一定のバラツキ範囲内に入ったときのＮ個分（所定のＮ個分）のモータ出力トルク平均値から得られる。モータ出力トルク異常基準値は、このモータ出力トルク移動平均値の基準値に第１の所定値を加えて得られる。
【００４８】
また、このときの外力トルク異常判定基準値τｄｔｈは、同時点での外力トルク移動平均値τｄＡＡ［ｘ］（この値が外力トルク移動平均値の基準値となる）に外力トルク異常判定基準値を設定するための加算値τｄｔｈ２（第２の所定値）を加算して算出する。ここで、モータ出力トルク異常基準値を設定するための加算値τｍｔｈ２と外力トルク異常判定基準値を設定するための加算値τｄｔｈ２は、例えば実験等により予め決めておくことができる値である。図６に示す本実施の形態では、モータ最大トルクの８％としている。また、図７に示す本実施の形態では、５％としている。この値は、小さくするほど、異常判定の感度が高くなるが、誤判定の可能性も大きくなる。したがって、この値は、実際の使用状況から適切な値に定めればよい。
【００４９】
ここまでの処理を説明するための波形を図５、図６、図７に示す。図５は、図４のフローチャートにおけるモータ出力トルク移動平均値に基づく異常判定基準値設定課程を説明するための第１の図である。図５において、横軸は単位時間処理回数ｘである（例えば単位時間が１時間であればｘ時間）。縦軸はモータトルク最大値に対するモータ出力トルク平均値τｍＡの比率である。なお、本実施の形態では、理解を助けるために、以下「比率」という表現を用いずに、単に「モータ出力トルク平均値τｍＡ」などと言う。「×」印で示しているのはモータ出力トルク推定値の単位時間内平均値τｍＡであり、実線（図５では黒点で示されている）は単位時間Ｎ個の移動平均値τｍＡＡである。すなわち、Ｎ個分のモータ出力トルク平均値の移動平均値τｍＡＡである。図５では、蓄積個数（移動平均個数）Ｎと、バラツキ判定個数ＮＮが「２４」のときを示しており、ｘ＝２４のとき初めて移動平均値τｍＡＡ［２４］は計算される。この時点では、平均値τｍＡ［１］〜τｍＡ［２４］は移動平均値τｍＡＡ［２４］を基準に±τｍｔｈ１の範囲外にもデータがある。そのため、図４のステップＳ４０２の条件式が満たされず、ステップＳ４０５でのモータ出力トルク異常判定基準値τｍｔｈの計算は行われない。
【００５０】
図６は、図５と同様に、ｘ＝３７まで時間が経過した時の波形である。図６では、単位時間２４個の３７回目の移動平均値τｍＡＡ［３７］を基準に、モータ出力トルク平均値τｍＡ［１４］〜τｍＡ［３７］の２４個（ＮＮ個に相当）は全て±τｍｔｈ１の範囲内にデータがあるので、図４のステップＳ４０２の条件式が満たされる。したがって、ステップＳ４０５でのモータ出力トルク異常判定基準値τｍｔｈの計算が行われ、異常判定基準値設定済フラグｆｔｈに１がセットされる。具体的には、モータ出力トルク異常判定基準値τｍｔｈは、単位時間２４個３７回目の移動平均値τｍＡＡ［３７］を基準値としてモータ出力トルク異常判定閾値を設定するための加算値τｍｔｈ２を加算することで算出される。
【００５１】
図７は外力トルク平均値の変化を示した図で、図６と同じくｘ＝３７まで時間が経過した時の波形を示している。「×」印で示しているのは外力トルク推定値の単位時間内平均値τｄＡであり、実線は単位時間Ｎ個の移動平均値τｄＡＡである。すなわち、Ｎ個分の外力トルク平均値の移動平均値τｄＡＡである。上記のように、ｘ＝３７の時点でモータ出力トルク異常判定基準値τｍｔｈを設定したので、図７では、この時点で図４のステップＳ４０５での外力トルク異常判定基準値τｄｔｈの計算が行われる。具体的には、外力トルク異常判定基準値τｄｔｈは、単位時間２４個３７回目の外力トルク移動平均値τｄＡＡ［３７］を基準値として、外力トルク異常判定基準値を設定するための加算値τｄｔｈ２を加算することで算出される。
【００５２】
すなわち、図４、図６からわかるように、モータ出力トルク平均値τｍＡとモータ出力トルク移動平均値τｍＡＡとの差が予め定めた所定の値τｍｔｈ１より小さいときのモータ出力トルク移動平均値τｍＡＡを、モータ出力トルク移動平均値の基準値と設定する。このときの外力トルク移動平均値τｄＡＡを外力トルク移動平均値の基準値と設定する。
【００５３】
言い換えると、連続するＮＮ個分のモータ出力トルク平均値τｍＡが全て移動平均値τｍＡＡ±τｍｔｈ１の範囲内にデータがあるとき、モータ出力トルク異常判定基準値が得られたことになる。
【００５４】
以上のように、モータ出力トルク異常判定基準値τｍｔｈおよび外力トルク異常判定基準値τｄｔｈは、図４のステップＳ４０２の条件判断で、モータ出力トルク平均値τｍＡのバラツキが小さくなった時点で計算される。すなわち、ロボットの使用状況が落ちついてきた時点で、予め記憶されたプログラムに基づくロボットの動作パターンに応じて自動的に計算される。従って、予め基準データを計測する必要もなく、基準となる動作パターンでロボットを動作させる必要もない。
【００５５】
図２の異常判定部４０では、図８のフローチャートに従い異常判定を行う。図８の処理は異常判定単位時間毎（例えば１時間毎）に実施する。図８のステップＳ８０１では、異常判定基準値設定済フラグｆｔｈに１がセットされているのかを確認する。ステップＳ８０１で、異常判定基準値設定済フラグｆｔｈに１がセットされていれば（ステップＳ８０１のＹ）ステップＳ８０２へ進み、それ以外（ステップＳ８０１のＮ）は処理を終了する。
【００５６】
ステップＳ８０２では、モータ出力トルク値の移動平均値τｍＡＡ［ｘ］が、モータ出力トルク異常判定基準値τｍｔｈより大きいかどうかを判断する。ステップＳ８０２でモータ出力トルク値の移動平均値τｍＡＡ［ｘ］がモータ出力トルク異常判定基準値τｍｔｈより大きい場合（ステップＳ８０２のＹ）は、ステップＳ８０３へ進み、それ以外（ステップＳ８０２のＮ）は処理を終了する。
【００５７】
ステップＳ８０３では、外力トルク値の移動平均値τｄＡＡ［ｘ］が、外力トルク異常判定基準値τｄｔｈより大きいかどうかを判断する。ステップＳ８０３で外力トルク値の移動平均値τｄＡＡ［ｘ］が、外力トルク異常判定基準値τｄｔｈより大きい場合（ステップＳ８０３のＹ）は、ステップＳ８０４へ進み、それ以外（ステップＳ８０３のＮ）はステップＳ８０５へ進む。
【００５８】
ステップＳ８０４では、異常判定フラグｆＬに「１」をセットし処理を終了する。ステップＳ８０５では、異常判定基準値設定済フラグｆｔｈに「０」をセットし、異常判定基準値設定部３８での処理（図４のフローチャート）を再開させる。
【００５９】
図８の処理を説明するための波形図を図９と図１０に示す。図９は、図６の波形をｘ＝１４０回まで進めた波形を示している。図９において、ｘ＝９０回目近傍から故障による摩擦増加でモータ出力トルク値の移動平均値τｍＡＡ［ｘ］が徐々に増加している。ｘ＝１２０回目でモータ出力トルク異常判定基準値τｍｔｈを越えており、ステップＳ８０２の条件が満たされる。
【００６０】
図１０は、図７の波形をｘ＝１４０回まで進めた波形を示している。図１０において、ｘ＝１２０回目で、外力トルク値の移動平均値τｄＡＡ［１２０］が、外力トルク異常判定基準値τｄｔｈを越えており、ステップＳ８０３の条件が満たされる。この場合、ステップＳ８０４では、異常判定フラグｆＬに「１」がセットされ、図１の異常警告表示部３４で異常警告処理を行う。
【００６１】
図１０において、もしｘ＝１２０回目で、外力トルク値の移動平均値τｄＡＡ［１２０］が、外力トルク異常判定基準値τｄｔｈ以下であれば、ステップＳ８０３の条件が満たされない。この場合は、判定基準値設定済フラグｆｔｈに「０」をセットし、異常判定基準値設定部３８での処理（図４のフローチャート）を再開させる。すなわち、モータ出力トルク異常判定基準値τｍｔｈと外力トルク異常判定基準値τｄｔｈを求める処理を再度行い、これらを新たな異常判定基準値として異常判断処理を行う。
【００６２】
なお、ステップＳ８０２とステップＳ８０３で、モータ出力トルク値の移動平均値τｍＡＡの上昇と外力トルク値の移動平均値τｄＡＡの上昇の両方で判定している理由は、外力トルク値の移動平均値τｄＡＡが上昇しても、モータ出力トルク値の移動平均値τｍＡＡが減少するような場合もあり、このような場合の誤判定を避けるためである。例えば、ケーブルの張力増加がロボットの重力を支える力になるような場合がこれに該当する。
【００６３】
さらには、モータ出力トルク値の移動平均値τｍＡＡが上昇しても、外力トルク値の移動平均値τｄＡＡが上昇しないような場合もある。このような場合の誤判定を避けるためにも、ステップＳ８０２とステップＳ８０３で、モータ出力トルク値の移動平均値τｍＡＡの上昇と外力トルク値の移動平均値τｄＡＡの上昇の両方を条件として判定している。例えば、ロボットの作業内容が変わり、ロボットプログラムがユーザにより書き換えられた場合、モータ出力トルク平均値τｍＡＡは上昇する可能性がある。しかし、外力トルク平均値τｄＡＡは特に外力が増加するわけではないので、装着負荷のパラメータが正しく入力されている場合は上昇しない。
【００６４】
ところで、本発明では、装着負荷のパラメータが正しく入力されていない場合でも、異常判定の誤判定の確率を減じることができる。
【００６５】
（数３）で計算される外力推定トルク値τｄｉｓｏは、実際の外力トルク値τｄｉｓが「０」でも、装着負荷のパラメータに誤差があると、動力学トルク値τｄｙｎの計算に誤差を生じるため、「０」にはならない。誤差を含む動力学トルク値をτｄｙｎ＿ｅｒｒ、この推定誤差をΔτｄｉｓとすると（数５）が成立する。
【００６６】
Δτｄｉｓ＝Ｋｔ×Ｉｍ−（Ｊｍ×α＋Ｄ×ωｍ＋Ｋμ×ｓｇｎ
＋τｄｙｎ＿ｅｒｒ）      （数５）
この動力学トルク演算に誤差がある状態で、実際の故障で摩擦トルク値がΔτμ増えたとすると、外力トルク推定値τｄｉｓｏは（数６）で計算される。
τｄｉｓｏ＝Ｋｔ×Ｉｍ
−（Ｊｍ×α＋Ｄ×ωｍ＋（τμ＋Δτμ）×ｓｇｎ
＋τｄｙｎ＿ｅｒｒ）
＝Δτｄｉｓ＋Δτμ×ｓｇｎ      （数６）
このとき、（数６）で、｜Δτμ｜＞｜Δτｄｉｓ｜であれば、つまり動力学トルク演算誤差があっても、その誤差に起因する推定誤差より故障による摩擦トルク値増加が上回れば、Δτｄｉｓの符号に関わりなく、外力トルク推定値τｄｉｓｏの絶対値は（数７−１）、（数７−２）で表すことができる。
｜τｄｉｓｏ［＋］｜＝  Δτｄｉｓ＋Δτμ      （数７−１）
｜τｄｉｓｏ［−］｜＝−Δτｄｉｓ＋Δτμ      （数７−２）
｜τｄｉｓｏ［＋］｜：モータが正方向回転時の外力トルク推定値の絶対値
｜τｄｉｓｏ［−］｜：モータが負方向回転時の外力トルク推定値の絶対値
ここで、ΔτｄｉｓとΔτμの単位時間平均をそれぞれΔτｄＡ、ΔτμＡとすると、外力トルク推定値τｄｉｓｏの絶対値の単位時間平均τｄＡは（数８−１）、（数８−２）のように表せる。
τｄＡ［＋］＝  ΔτｄＡ＋ΔτμＡ      （数８−１）
τｄＡ［−］＝−ΔτｄＡ＋ΔτμＡ      （数８−２）
τｄＡ［＋］：モータが正方向回転時の外力トルク推定値の絶対値の単位時間平均
τｄＡ［−］：モータが負方向回転時の外力トルク推定値の絶対値の単位時間平均
ここで、産業用ロボットの動作角度は有限であり、大きくても±３６０度程度であるので、それを駆動するモータが１方向のみに回転しつづけることはない。＋方向への回転角度と−方向への回転角度の差は最大で７２０度である。例えば、異常判定の単位時間を１時間にしておけば、延べ回転角度は数万度を超える場合が大半であるので、＋方向への回転角度と−方向への回転角度はほぼ同じと考えてよい。
【００６７】
そこで、外力トルク平均値τｄＡは、τｄＡ［＋］とτｄＡ［−］の平均をとればよいので（数９）で計算できる。
τｄＡ＝（τｄＡ［＋］＋τｄＡ［−］）／２
＝（ΔτｄＡ＋ΔτμＡ−ΔτｄＡ＋ΔτμＡ）／２
＝ΔτμＡ      （数９）
（数９）より、正確な負荷パラメータが入力されず動力学トルク演算に誤差があっても、その誤差に起因する推定誤差ΔτｄＡより故障による摩擦トルク値増加ΔτμＡが上回れば、故障に起因する摩擦トルク値増加ΔτμＡを正しく判断できることがわかる。
【００６８】
つまり、正確な負荷パラメータが入力されていない場合、実際に故障により摩擦が増加しても、その摩擦トルク値増加ΔτμＡがパラメータ誤差に起因する誤差ΔτｄＡを下回っている時点では、図８のフローチャートのステップＳ８０３の条件が満たされない場合が発生する。したがって、この場合は異常判定基準値設定部３８での処理（図４のフローチャート）が再開され、異常判定閾値τｄｔｈが再設定される。しかし、摩擦トルク値増加ΔτμＡがさらに増加し、パラメータ誤差に起因する誤差ΔτｄＡを上回ると、外力トルク推定平均値τｄＡに摩擦トルク値増加ΔτμＡが正しく反映される。したがって、ステップＳ８０３が正しく判断される。以上の内容により誤判定の確率を減じることができる。
【００６９】
なお、本実施の形態では、モータ出力トルク値を優先した場合を説明したが、モータ出力トルク平均値と外力トルク平均値の異常判定の順序を入れ替えて、外力トルク平均値を優先して異常判定を行うことができる。
【００７０】
すなわち、図８においてステップＳ８０２とＳ８０３の処理内容を入れ替えることで外力トルク平均値を優先して異常判定を行うことができる。まず、外力トルク平均値τｄＡのＮ個分の移動平均値である外力トルク移動平均値τｄＡＡが、所定のＮ個分の外力トルク平均値τｄＡから得た外力トルク移動平均値の基準値に、第２の所定値τｄｔｈ２を加えた第２の異常判定基準値τｄｔｈを超えるか否かを、ロボットの動作中に判定する。次に、モータ出力トルク平均値τｍＡのＮ個分の移動平均値であるモータ出力トルク移動平均値τｍＡＡが、所定のＮ個分のモータ出力トルク平均値τｍＡから得たモータ出力トルク移動平均値の基準値に、第１の所定値τｍｔｈ２を加えた第１の異常判定基準値τｍｔｈを超えるか否かを、ロボットの動作中に判定する。その結果、外力トルク移動平均値τｄＡＡが第２の異常判定基準値τｄｔｈ２を超え、かつ、モータ出力トルク移動平均値τｍＡＡが第１の異常判定基準値τｍｔｈを超えた場合に異常と判定するものである。
【００７１】
この場合、ＮＮ個の外力トルク平均値τｄＡのそれぞれと外力トルク移動平均値τｄＡＡとの差が予め定めた所定の値τｄｔｈ１より小さいときの外力トルク移動平均値τｄＡＡを、外力トルク移動平均値の基準値と設定し、このときのモータ出力トルク移動平均値τｍＡＡをモータ出力トルク移動平均値の基準値と設定する。
【００７２】
また、外力トルク移動平均値が異常判定基準値を超えるが、モータ出力トルク移動平均値が異常判定基準値を超えない場合に、異常判定基準値設定部３８での処理（図４のフローチャート）を再開させ、モータ出力トルク異常判定基準値τｍｔｈと外力トルク異常判定基準値τｄｔｈを求める処理を再度行い、これらを新たな異常判定基準値として異常判断処理を行うようにしてもよい。
【００７３】
また、本実施の形態では、モータ出力トルク平均値の絶対値のＮ個の移動平均値の基準値にモータ出力トルク異常判定値を設定するための加算値τｍｔｈ２を加算してモータ出力トルク異常判定値算出し、その後のモータ出力トルク平均値の絶対値のＮ個の移動平均値τｍＡＡがモータ出力トルク異常判定値を超えるか否かを判定して異常を判定する例を示した。しかし、モータ出力トルク移動平均値とモータ出力トルク移動平均値の基準値との差が所定の値を超えるか否かを判定して異常を判定するようにしてもよい。なお、所定の値は、例えば実験等により予め決定することができる。
【００７４】
また、本実施の形態では、外力トルク平均値の絶対値のＮ個の移動平均値の基準値に外力トルク異常判定基準値を設定するための加算値τｄｔｈ２を加算して外力トルク異常判定基準値算出し、その後の外力トルク平均値の絶対値のＮ個の移動平均値τｄＡＡが外力トルク異常判定基準値を超えるか否かを判定して異常を判定する例を示した。しかし、外力トルク移動平均値と外力トルク移動平均値の基準値との差が所定の値を超えるか否かを判定して異常を判定するようにしてもよい。なお、所定の値は、例えば実験等により予め決定することができる。
【００７５】
さらに、本実施の形態では、まず単位時間内のモータ出力トルク推定値τｍｏの平均値からモータ出力トルク平均値τｍＡを計算し、その後Ｎ個のモータ出力トルク平均値τｍＡからモータ出力トルク移動平均値τｍＡＡを求めた。しかし、上記モータ出力トルク平均値τｍＡを求めなくても、モータ出力トルク推定値τｍｏからモータ出力トルク移動平均値τｍＡＡを求めることも可能である。このことは、外力トルク移動平均値τｄＡＡを求める場合も同様である。
【００７６】
また、本実施の形態では、任意の１つのモータについて異常判断を行うようにした。しかし、多関節ロボットは複数のモータを備えているので、本実施の形態と同様な方法で、全てのモータについて異常判定を行ってもよい。あるいは、特定のモータについて異常判定を行ってもよい。
【００７７】
なお、本実施の形態のロボットには、例えばサーボモータが使用されており、このサーボモータの異常判定を行うものである。
【産業上の利用可能性】
【００７８】
本発明は、基準データの測定、記憶を必要とせず、生産ライン稼働中の判定も可能で、正確な負荷パラメータが入力されていない場合や外力を受けた場合でも誤判定の確率を減じることができるので、動作中のロボットの異常判定方法として有用である。
【符号の説明】
【００７９】
６    位置制御部
１０    速度制御部
１８    モータ／外力トルク部
２１    方向判定部
２６    動力学トルク演算部
３０    外力トルク推定部
３２    異常判定装置
３４    異常警告表示部
３５    単位時間平均部
３６    データ蓄積部
３７    移動平均部
３８    異常判定基準値設定部
４０    異常判定部
１０１    溶接ワイヤ
１０３    ワイヤ送給モータ
１０４    溶接トーチ
１０５    溶接電源装置
１０７    母材
１０８    アーク
１０９    ロボット
１１０    ロボット制御装置
１１１    トーチケーブル
１１２    治具
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
モータ出力トルク平均値のＮ個分（Ｎは正の整数）の移動平均値であるモータ出力トルク移動平均値が、所定の前記Ｎ個分のモータ出力トルク平均値から得たモータ出力トルク移動平均値の基準値に、第１の所定値を加えた第１の異常判定基準値を超えるか否かを、ロボットの動作中に判定するステップと、
外力トルク平均値のＮ個分の移動平均値である外力トルク移動平均値が、所定の前記Ｎ個分の外力トルク平均値から得た外力トルク移動平均値の基準値に、第２の所定値を加えた第２の異常判定基準値を超えるか否かを前記ロボットの動作中に判定するステップと、
前記モータ出力トルク移動平均値が前記第１の異常判定基準値を超え、かつ、前記外力トルク移動平均値が前記第２の異常判定基準値を超えた場合に異常と判定するステップと
を備えたロボットの異常判定方法。
【請求項２】
ＮＮ個（ＮＮは正の整数）のモータ出力トルク平均値と前記モータ出力トルク移動平均値との差が予め定めた所定の値より小さいときの前記モータ出力トルク移動平均値を、前記モータ出力トルク移動平均値の基準値と設定し、このときの前記外力トルク移動平均値を前記外力トルク移動平均値の基準値と設定するステップを備えた請求項１記載のロボットの異常判定方法。
【請求項３】
ＮＮ個の外力トルク平均値と前記外力トルク移動平均値との差が予め定めた所定の値より小さいときの前記外力トルク移動平均値を、前記外力トルク移動平均値の基準値と設定し、このときの前記モータ出力トルク移動平均値を前記モータ出力トルク移動平均値の基準値と設定するステップを備えた請求項１記載のロボットの異常判定方法。
【請求項４】
前記モータ出力トルク移動平均値が前記第１の異常判定基準値を超え、前記外力トルク移動平均値が前記第２の異常判定基準値を超えない場合、または、前記外力トルク移動平均値が前記第２の異常判定基準値を超え、前記モータ出力トルク移動平均値が前記第１の異常判定基準値を超えない場合は、前記モータ出力トルク移動平均値の基準値と前記外力トルク移動平均値の基準値を設定する請求項２または３記載のロボットの異常判定方法。
【請求項５】
前記モータ出力トルク平均値および前記外力トルク平均値は、それぞれ予め決められた単位時間内の前記モータ出力トルク推定値および前記外力トルク推定値の平均値である請求項１記載のロボットの異常判定方法。
【請求項６】
モータ出力トルク平均値のＮ個分（Ｎは正の整数）の移動平均値であるモータ出力トルク移動平均値と、所定の前記Ｎ個分のモータ出力トルク移動平均値から得たモータ出力トルク移動平均値の基準値との差が、第１の所定の値を超えるか否かを、ロボットの動作中に判定するステップと、
外力トルク平均値のＮ個分の移動平均値である外力トルク移動平均値と、所定の前記Ｎ個分の外力トルク移動平均値から得た外力トルク移動平均値の基準値との差が、第２の所定の値を超えるか否かを、前記ロボットの動作中に判定するステップと、
前記モータ出力トルク移動平均値と前記モータ出力トルク移動平均値の基準値との差が前記第１の所定の値を超え、かつ、前記外力トルク移動平均値と前記外力トルク移動平均値の基準値との差が前記第２の所定の値を超えた場合に異常と判定するステップと
を備えたロボットの異常判定方法。
【請求項７】
ＮＮ個のモータ出力トルク平均値と前記モータ出力トルク移動平均値との差が予め定めた所定の値より小さいときの前記モータ出力トルク移動平均値を、前記モータ出力トルク移動平均値の基準値と設定し、このときの前記外力トルク移動平均値を前記外力トルク移動平均値の基準値と設定するステップを備えた請求項６記載のロボットの異常判定方法。
【請求項８】
ＮＮ個の外力トルク平均値と前記外力トルク移動平均値との差が予め定めた所定の値より小さいときの前記外力トルク移動平均値を、前記外力トルク移動平均値の基準値と設定し、このときの前記モータ出力トルク移動平均値を前記モータ出力トルク移動平均値の基準値と設定するステップを備えた請求項６記載のロボットの異常判定方法。
【請求項９】
前記モータ出力トルク移動平均値と前記モータ出力トルク移動平均値の基準値との差が前記第１の所定の値を超え、かつ、前記外力トルク移動平均値と前記外力トルク移動平均値の基準値との差が前記第２の所定の値を超えない場合、または、前記外力トルク移動平均値と前記外力トルク移動平均値の基準値との差が前記第２の所定の値を超え、かつ、前記モータ出力トルク移動平均値と前記モータ出力トルク移動平均値の基準値との差が前記第１の所定の値を超えない場合には、前記モータ出力トルク移動平均値の基準値と前記外力トルク移動平均値の基準値を設定する請求項７または８記載のロボットの異常判定方法。
【請求項１０】
前記モータ出力トルク平均値および前記外力トルク平均値は、それぞれ予め決められた単位時間内の前記モータ出力トルク推定値および前記外力トルク推定値の平均値である請求項６記載のロボットの異常判定方法。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2009142006.tif 000031
【図２】
2009142006.tif 000032
【図３】
2009142006.tif 000033
【図４】
2009142006.tif 000034
【図５】
2009142006.tif 000035
【図６】
2009142006.tif 000036
【図７】
2009142006.tif 000037
【図８】
2009142006.tif 000038
【図９】
2009142006.tif 000039
【図１０】
2009142006.tif 000040
【図１１】
2009142006.tif 000041
【国際調査報告】
2009142006.tif 000042
2009142006.tif 000043
2009142006.tif 000044
2009142006.tif 000045