特許文献1,2に開示された技術では、逆動力学演算を行うため、ロボットの機械系における慣性モーメントや粘性摩擦などのパラメータをあらかじめ設定しておく必要があり、ワークの有無や経時変化などによってパラメータが実際のロボットと整合しなくなったときに検出の精度が低下するという課題がある。特許文献3に開示された技術は、モータに付属するエンコーダ出力から算出される速度値あるいは加速度値のみに基づいているため、緩衝構造を有するハンドなどの場合には衝突時の速度変化や加速度変化が小さいので、検出精度が悪くなる、という課題がある。特許文献4に記載の技術も、緩衝構造を有するハンドなどの場合、衝突直後の実際の位置偏差と理論上の位置偏差との差が小さいので、衝突の検出が遅れて検出精度が悪くなる、という課題がある。同様に特許文献5に記載の技術でも、緩衝構造を有するハンドなどの場合、衝突直後のトルク指令値の変動が小さく、衝突の検出が遅れて検出精度が悪くなる、という課題がある。特許文献6に開示された技術は、アームのバランサとして機能するガススプリングを備えることが前提とするものであり、ガススプリングを備えないロボットには適用することができない。
本発明の目的は、サーボモータによって駆動される動作対象物における衝突を、機械系でのパラメータなどに依存することなく、高精度かつ速やかに検出できる衝突検出方法及び装置を提供することにある。
本発明の第1の態様において衝突検出方法は、サーボモータによって駆動される動作対象物における衝突の発生を検出する衝突検出方法であって、サーボモータに対するトルク指令値に対してバンドパスフィルタ処理を行い、バンドパスフィルタ処理によって得られる信号の振幅に基づく値と閾値とを比較して、動作対象物における衝突の発生の有無を判定する。このような衝突検出方法によれば、動作対象物において衝突が発生したときにトルク指令値に現れる特定の周波数帯域での変動に基づいて衝突の判定を行うので、衝突の発生を速やかにかつ確実に検出することができる。
本発明の第2の態様において衝突検出方法は、サーボモータによって駆動される動作対象物における衝突の発生を検出する衝突検出方法であって、サーボモータに対するトルク指令値に対してバンドパスフィルタ処理を行い、バンドパスフィルタ処理によって得られる信号に対し、動作対象物を含む機械系の固有振動数の成分を減衰させるノッチフィルタ処理を行い、ノッチフィルタ処理を行ったのちの信号の振幅に基づく値と閾値とを比較して、動作対象物における衝突の発生の有無を判定する。このような衝突検出方法によれば、動作対象物において衝突が発生したときにトルク指令値に現れる特定の周波数帯域での変動に基づいて衝突の判定を行うので、衝突の発生を速やかにかつ確実に検出することができる。さらに、ノッチフィルタ処理を行うので、減速機の角度伝達誤差などに起因する振動に対して機械系が共振するような場合において、共振のために衝突検出における誤検出が発生することを抑制することができる。
第1及び第2の態様の衝突検出方法では、バンドパスフィルタ処理は、2次のバタワースフィルタ、3次のバタワースフィルタ及び3次のベッセルフィルタのいずれかによるバンドパスフィルタ処理であることが好ましい。このようなバンドパスフィルタを使用するバンドパスフィルタ処理を行うことによって、衝突の発生を少ない計算量で、より速やかに、かつ、より確実に検出することができる。
本発明の第3の態様において衝突検出方法は、位置指令に基づきサーボモータによって駆動される動作対象物における衝突の発生を検出する衝突検出方法であって、位置指令とサーボモータの位置とから算出される位置偏差に対してバンドパスフィルタ処理を行い、バンドパスフィルタ処理によって得られる信号の振幅に基づく値と閾値とを比較して、動作対象物における衝突の発生の有無を判定する。このような衝突検出方法によれば、動作対象物において衝突が発生したときに位置偏差に現れる特定の周波数帯域での変動に基づいて衝突の判定を行うので、衝突の発生を速やかにかつ確実に検出することができる。
本発明の第4の態様において衝突検出方法は、位置指令に基づきサーボモータによって駆動される動作対象物における衝突の発生を検出する衝突検出方法であって、位置指令とサーボモータの位置とから算出される位置偏差に対してバンドパスフィルタ処理を行い、バンドパスフィルタ処理によって得られる信号に対し、動作対象物を含む機械系の固有振動数の成分を減衰させるノッチフィルタ処理を行い、ノッチフィルタ処理を行ったのちの信号の振幅に基づく値と閾値とを比較して、動作対象物における衝突の発生の有無を判定する。このような衝突検出方法によれば、動作対象物において衝突が発生したときに位置偏差に現れる特定の周波数帯域での変動に基づいて衝突の判定を行うので、衝突の発生を速やかにかつ確実に検出することができる。さらに、ノッチフィルタ処理を行うので、減速機の角度伝達誤差などに起因する振動に対して機械系が共振するような場合において、共振のために衝突検出における誤検出が発生することを抑制することができる。
第3及び第4の態様の衝突検出方法では、バンドパスフィルタ処理は、3次のバタワースフィルタ、5次のバタワースフィルタ及び3次のベッセルフィルタのいずれかによるバンドパスフィルタ処理であることが好ましい。このようなバンドパスフィルタを使用するバンドパスフィルタ処理を行うことによって、衝突の発生を少ない計算量で、より速やかに、かつ、より確実に検出することができる。
上記の衝突検出方法では、動作対象物を含む機械系の共振が発生する速度領域において他の速度領域に比べて閾値が大きくなるように、サーボモータの速度に応じて閾値を変化させることができる。減速機の角度伝達誤差などにより、サーボモータの速度に比例した振動数の振動が発生し、この振動に対して機械系に共振することがある。サーボモータの速度に応じて閾値を変化させることにより、機械系の共振のために衝突検出における誤検出が発生することを抑制することができる。
上記の衝突検出方法において振幅に基づく値は、例えば、バンドパスフィルタ処理によって得られる信号の絶対値、二乗平均値及び二乗平均平方根値のいずれかである。これらの値を振幅に基づく値とすることによって、衝突の発生を少ない計算量で、より速やかに、かつ、より確実に検出することができる。
上記の衝突検出方法において動作対象物は、例えばロボットのアームまたはハンドである。本発明に基づく衝突検出方法によれば、ロボットの動作に伴ってロボットのアームやハンドが周囲の物体と衝突するときに、その衝突を速やかに、かつ確実に検出することが可能になる。
本発明の第5の態様において衝突検出装置は、サーボモータによって駆動される動作対象物における衝突の発生を検出する衝突検出装置であって、サーボモータに対するトルク指令値に対してバンドパスフィルタ処理を行うバンドパスフィルタと、バンドパスフィルタから出力される信号の振幅に基づく値と閾値とを比較して動作対象物における衝突の発生の有無を判定する判定手段と、を有する。このような衝突検出装置によれば、動作対象物において衝突が発生したときにトルク指令値に現れる特定の周波数帯域での変動に基づいて衝突の判定を行うので、衝突の発生を速やかにかつ確実に検出することができる。
本発明の第6の態様において衝突検出装置は、サーボモータによって駆動される動作対象物における衝突の発生を検出する衝突検出装置であって、サーボモータに対するトルク指令値に対してバンドパスフィルタ処理を行うバンドパスフィルタと、バンドパスフィルタから出力される信号が供給されて、動作対象物を含む機械系の固有振動数の成分を減衰させるノッチフィルタと、ノッチフィルタから出力される信号の振幅に基づく値と閾値とを比較して動作対象物における衝突の発生の有無を判定する判定手段と、を有する。このような衝突検出装置によれば、動作対象物において衝突が発生したときにトルク指令値に現れる特定の周波数帯域での変動に基づいて衝突の判定を行うので、衝突の発生を速やかにかつ確実に検出することができる。さらに、ノッチフィルタを設けているので、減速機の角度伝達誤差などに起因する振動に対して機械系が共振するような場合において、共振のために衝突検出における誤検出が発生することを抑制することができる。
第5及び第6の態様の衝突検出装置では、バンドパスフィルタは、2次のバタワースフィルタ、3次のバタワースフィルタ及び3次のベッセルフィルタのいずれかからなることが好ましい。このようなバンドパスフィルタを使用することにより、衝突の発生を少ない計算量で、より速やかに、かつ、より確実に検出することができる。
本発明の第7の態様において衝突検出装置は、位置指令に基づきサーボモータによって駆動される動作対象物における衝突の発生を検出する衝突検出装置であって、位置指令とサーボモータの位置とから位置偏差を算出する減算器と、位置偏差に対してバンドパスフィルタ処理を行うバンドパスフィルタと、バンドパスフィルタから出力される信号の振幅に基づく値と閾値とを比較して動作対象物における衝突の発生の有無を判定する判定手段と、を有する。このような衝突検出装置によれば、動作対象物において衝突が発生したときに位置偏差に現れる特定の周波数帯域での変動に基づいて衝突の判定を行うので、衝突の発生を速やかにかつ確実に検出することができる。
本発明の第8の態様において衝突検出装置は、位置指令に基づきサーボモータによって駆動される動作対象物における衝突の発生を検出する衝突検出装置であって、位置指令とサーボモータの位置とから位置偏差を算出する減算器と、位置偏差に対してバンドパスフィルタ処理を行うバンドパスフィルタと、バンドパスフィルタから出力される信号が供給されて、動作対象物を含む機械系の固有振動数の成分を減衰させるノッチフィルタと、ノッチフィルタから出力される信号の振幅に基づく値と閾値とを比較して動作対象物における衝突の発生の有無を判定する判定手段と、を有する。このような衝突検出装置によれば、動作対象物において衝突が発生したときに位置偏差に現れる特定の周波数帯域での変動に基づいて衝突の判定を行うので、衝突の発生を速やかにかつ確実に検出することができる。さらに、ノッチフィルタを設けているので、減速機の角度伝達誤差などに起因する振動に対して機械系が共振するような場合において、共振のために衝突検出における誤検出が発生することを抑制することができる。
第7及び第8の態様の衝突検出装置では、バンドパスフィルタは、3次のバタワースフィルタ、5次のバタワースフィルタ及び3次のベッセルフィルタのいずれかからなることが好ましい。このようなバンドパスフィルタを使用することにより、衝突の発生を少ない計算量で、より速やかに、かつ、より確実に検出することができる。
上記の衝突検出装置は、動作対象物を含む機械系の共振が発生する速度領域において他の速度領域に比べて閾値が大きくなるように、サーボモータの速度に応じて閾値を変化させる閾値変化手段を備えてもよい。減速機の角度伝達誤差などにより、サーボモータの速度に比例した振動数の振動が発生し、この振動に対して機械系に共振することがあるが、閾値変化手段を設けてサーボモータの速度に応じて閾値を変化させることにより、機械系の共振のために衝突検出における誤検出が発生することを抑制することができる。この場合、閾値変化手段は、サーボモータの速度が入力して前記入力した速度に応じた閾値を出力するルックアップテーブルによって構成することができる。ルックアップテーブルを用いることにより、閾値変化手段を容易に構成することが可能になる。
上記の衝突検出装置において振幅に基づく値は、例えば、バンドパスフィルタから出力される信号の絶対値、二乗平均値及び二乗平均平方根値のいずれかである。これらの値を振幅に基づく値とすることによって、衝突の発生を少ない計算量で、より速やかに、より、より確実に検出することができる。
上記の衝突検出装置は、例えば、外部から与えられる指令値に基づいてサーボモータの制御を実行する制御装置の内部に設けられる。制御装置の内部に衝突検出装置を設けることにより、全体としての装置構成がコンパクトになるとともに、衝突の発生を検出したときにサーボモータを停止させるなどの制御を行なうことが容易になる。
本発明によれば、サーボモータによって駆動される動作対象物における衝突を、機械系でのパラメータなどに依存することなく、高精度かつ速やかに検出できる。
次に、本発明を実施するための形態について、図面を参照して説明する。本発明は、サーボモータによって駆動される動作対象物における衝突検出に関するものであるが、ここでは、動作対象物が産業用ロボットであるものとして説明を行う。各実施形態の説明に先立ち、衝突検出の対象となる動作対象物の一例であるロボットについて、図1及び図2を用いて説明する。図1において(a)はロボット10の全体構成を示す概略図であり、(b)はロボット10の正面図である。図2において(a)及び(b)は、それぞれ、ロボット10の側面図及び平面図である。
図示されるロボット10は、ガラス基板などのワーク50を搬送することを目的とするものであって、水平多関節ロボットとして構成されている。特にこのロボット10は、ワーク50(図1には不図示)をそれぞれ保持する2つのハンド13A,13Bを備えるいわゆるダブル・ハンド・ロボットとして構成されている。ロボット10には、ロボット10に対する動作指令が外部から入力し、この動作指令に基づいてロボット10を駆動し制御する制御装置(ロボットコントローラ)40が、ケーブルによって電気的に接続されている。後述するように制御装置40には、ロボット10における衝突の発生を検出する衝突検出装置42(図3参照)が設けられている。なお図1(a)は、ロボット10において水平多関節機構が上昇した状態を示しているのに対し、図1(b)、図2(a),(b)は、水平多関節機構が下降した状態を示している。
ロボット10は、床面FL(図1(b)参照)において直線状に設けられた相互に平行な1対のレール21上を移動可能な基台22と、基台22の上に設けられて回転軸31の周りで水平面内で回転する回転台23と、回転台23に対して直立するように設けられた昇降機構24を備えている。基台22には、レール21に沿ってロボット10の全体を水平移動させるためのモータが取り付けられている。また基台22には、基台22に対して回転軸31の周りで回転台23を回転させるために、水平移動用のモータとは別のθ軸モータとも呼ばれるモータが設けられている。昇降機構24は、回転台23に取り付けられている固定部24Aと、モータによって固定部24Aに対して昇降する移動部24Bとを備えている。移動部24Bを昇降させるモータは、固定部24Aに設けられており、移動部24Bは、昇降用のモータによって駆動されて昇降する。
移動部24Bには水平多関節機構を保持するアーム支持部26A,26Bが水平方向に延びるように設けられており、アーム支持部26A,26Bの先端にはそれぞれ水平多関節機構が取り付けられている。上側の水平多関節機構は、アーム支持部26Aに取り付けられて共通軸32の周りで水平面内を回転可能な第1アーム11Aと、第1アーム11Aの先端に取り付けられて軸33Aの周りで水平面内を回転可能な第2アーム12Aを備えており、第2アーム12Aの先端にハンド13Aが取り付けられている。同様に下側の水平多関節機構は、アーム支持部26Bに取り付けられて共通軸32の周りで水平面内を回転可能な第1アーム11Bと、第1アーム11Bの先端に取り付けられて軸33Bの周りで水平面内を回転可能な第2アーム12Bを備えており、第2アーム12Bの先端にハンド13Bが取り付けられている。
ハンド13A,13Bは、下から保持することによって板状のワーク50を水平状態に保ったまま搬送できるように、複数の棒状部材を平行に配置したフォーク状の形状となっている。すなわちハンド13A,13Bは、ワーク50をそのハンド13A,13Bの上に保持する形式のものである。ハンド13A,13Bは、ロードロック室やカセットなどに収納されているワーク50を取り出してハンド13A,13B上に保持したり、保持しているワーク50をロードロック室内などに収納するときにワーク50に対して前進または後退するが、このハンド13A,13Bの前進したり後退する方向は、棒状部材の延びる方向と平行な方向とされる。
ロボット10において水平多関節機構は、第1アーム11A,11Bと第2アーム12A,12Bとに組み込まれたリンク機構により、アーム支持部26が延びる方向とは直交する方向で直線運動でハンド13A,13Bが前進及び後退運動を行うように構成されている。すなわち両方のハンド13A,13Bは同一方向に前進及び後退を行う。共通軸32に対してハンド13A,13Bの先端が遠ざかる動きが前進運動であり、前進運動とは反対方向の動きが後退運動である。第1アーム11A,11Bと第2アーム12A,12Bとは全体して屈曲運動を行い、それにも関わらず水平面内でのハンド13A,13Bの向きを一定とするために、ハンド13A,13Bは、それぞれ、第2アーム12A,12Bの先端の位置で手首軸34A,34Bの周りで水平面内を回転可能に取り付けられている。上側の水平多関節機構では、アーム支持部26に設けられたモータにより駆動されることによって、第1アーム11A及び第2アーム12Aが動き、ハンド13Aはその向きを保ったまま、アーム支持部26の延びる方向とは直交する方向に移動する。同様に下側の水平多関節機構では、アーム支持部26に設けられたモータにより駆動されることによって、第1アーム11B及び第2アーム12Bが動き、ハンド13Bはその向きを保ったまま、アーム支持部26の延びる方向とは直交する方向に移動する。ロボット10では、2つのハンド13A,13Bを独立して前進及び後退させることができる。以下の説明において、第1アーム11A,11Bと第2アーム12A,12Bとに組み込まれたリンク機構によりハンド13A,13Bが前進及び後退運動をすることをアームの伸縮運動と呼ぶ。
結局、ロボット10での動きは、レール21に沿った水平方向の移動(これをX軸あるいは走行軸の動きとする)と、回転軸31の周りでの基台22に対する昇降機構24の旋回(これをθ軸あるいは旋回軸の動きとする)と、ハンド13A,13Bの前進及び後退運動、すなわちアーム伸縮運動(これをR軸の動きとする)と、昇降機構24によるアーム支持部26の昇降(これをZ軸の動きとする)とに分けることができ、これらは、それぞれロボット10に設けられている軸ごとのモータによって駆動される。ロボット10は、移動動作に対応する指令に応じた制御装置40からの駆動制御により、これらの各軸のうちの1つの軸だけを動かす動作や、2以上の軸を同時に動かす動作とを実行する。
ロボット10を用いたガラス基板などのワーク50の搬送について説明する。ここではレール21に沿って2つのロードロック室が設けられており、これらのロードロック室の間でワーク50を搬送する場合を考える。まず、ハンド13A,13Bがいずれも後退して第1アーム11A,11Bと第2アーム12A,12Bとが折り畳まれた状態、すなわちアームが縮んだ状態で、搬出側のロードロック室に向き合う位置にまでレール21に沿ってロボット10を移動させ、同時に、ハンド13Aの高さをロードロック室に対応する高さとなるように、昇降機構24によって昇降させる。そして、アームを伸ばすことによりハンド13Aを前進させて搬出側のロードロック室内にハンド13Aを進入させ、わずかにハンド13Aを上昇させることによってハンド13A上にワーク50を載置する。その後、アームを縮めることによりハンド13Aを後退させてワーク50ごとハンド13Aをロードロック室から引き出す。次に、ワーク50を搭載した状態で搬入側のロードロック室に向き合う位置にまでレール21に沿ってロボット10を移動させ、同時にハンド13Aの高さがロードロック室に対応する高さとなるように、昇降機構24によってアーム支持部26Aを昇降させる。そして、ワーク50を載せたままハンド13Aを前進させて第2のカセット内にハンド13Aを進入させ、わずかにハンド13Aを下降させることによって搬入側のロードロック室にワーク50を載置し、ハンド13Aを後退させてロードロック室からハンド13Aを引き出す。以上の動作によって、ワーク50が搬送されたことになる。レール21を挟んで一方の側に搬出側のロードロック室が配置し、他方の側に搬入側のロードロック室が配置する場合は、上記の動作に加え、回転軸31の周りでの旋回の動作が実行される。
上述したロボット10では、各軸のモータを駆動することによって、例えばハンド13A,13Bを所望の位置に移動させることができる。この移動の過程によって、ロボット10の一部、例えばハンド13A,13Bが、他の物体、例えばロボット10の周囲の壁面に衝突することがある。以下、ロボット10における衝突の発生を検出するための機構について説明する。
[第1の実施形態]
図3(a)は、ロボット10に接続する制御装置40の構成を示すブロック図であり、本発明の第1の実施形態の衝突検出装置42を説明するものである。制御装置40は、入力する指令値、例えば位置指令値に基づいてロボット10の各軸のモータ36を駆動し制御する。モータ36には、そのモータ36の回転位置を検出するエンコーダ37が取り付けられている。モータ36の回転軸には減速機38が取り付けられており、減速機38を介して負荷39がモータ36に機械的に接続する。制御装置40には、モータ36の位置を示す信号がエンコーダ37からフィードバックされてモータ36をサーボ制御する制御部41と、ロボット10における衝突の発生を検出する第1の実施形態の衝突検出装置42とが設けられている。図では、モータ36、制御部41及び衝突検出装置42が1つずつ描かれているが、ロボット10には複数のモータ36が設けられるので、制御装置40では、その制御するモータ36ごとに制御部41と衝突検出装置42が設けられる。したがって制御装置40では、モータ36の駆動及び制御と、衝突の発生の検出とが、軸ごとに実行される。もっとも、ロボット10において衝突が発生しやすい軸は限られており、また、例えば、回転軸31での運動(回転台23での回転運動)の結果、衝突が発生したとしても、それはアーム11A,11B,12A,12Bあるいはハンド13A,13Bでの衝突として検出できるから、必ずしもロボット10のすべての軸において衝突検出を実行する必要はなく、衝突検出を行わない軸については衝突検出装置42を設ける必要はない。制御部41としては、産業用ロボットの各軸のモータを制御するための標準的なサーボ制御機構が使用される。
衝突検出装置42は、制御部41からモータ36に与えられるトルク指令値を示す信号に対してバンドパスフィルタ処理を行うバンドパスフィルタ44と、バンドパスフィルタ処理後のトルク指令値の絶対値を算出する絶対値演算部45と、絶対値演算部45において算出された絶対値と閾値とを比較するコンパレータ46とを備えている。モータ36による駆動対象物であるロボット10において衝突が発生したときは、ロボット10を移動させるためにトルク指令値に発生する変動とは独立して、サーボ制御を行なっていること自体に起因して、トルク指令値において特定の周波数帯域の微小な振動が発生すると考えられる。バンドパスフィルタ44は、この特定の周波数帯域での微小な振動を抽出するために用いられている。絶対値演算部45において算出された絶対値が閾値を上回っていれば、衝突の発生を検出したこととなり、コンパレータ46の出力が衝突検出結果となる。さらに衝突検出装置42は、コンパレータ46での演算により衝突の発生を検出したときに警報を出力する警報処理部47を備えている。
バンドパスフィルタ44は、例えばローパスフィルタ44Lとハイパスフィルタ44Hとをカスケード接続して構成される。ローパスフィルタ44L及びハイパスフィルタ44Hはいずれもバタワースフィルタあるいはベッセルフィルタであることが好ましい。バタワースフィルタを用いる場合には、ローパスフィルタ44L及びハイパスフィルタ44Hに同じ次数のバタワースフィルタを使用する。バタワースフィルタの次数は例えば、2次、3次、5次であり、2次あるいは3次であることが好ましい。ベッセルフィルタを用いる場合にも、ローパスフィルタ44L及びハイパスフィルタ44Hに同じ次数のベッセルフィルタを使用する。ベッセルフィルタの次数は例えば、3次である。
バンドパスフィルタ44の通過帯域は、モータ36の仕様や、ロボット10自体の大きさや構成などによって最適なものが異なるが、バタワースフィルタを用いる場合であれば、例えば、2~20Hzとされる。この場合、ローパスフィルタ44Lの遮断周波数を20Hzとし、ハイパスフィルタ44Hの遮断周波数を2Hzとする。なお、ベッセルフィルタの場合には、ここでの説明におけるローパスフィルタ44L及びハイパスフィルタ44Hの遮断周波数の代わりに特性周波数を使用する。例えば2~20Hzの通過帯域とするときは、ローパスフィルタ44Lに用いるベッセルフィルタの特性周波数を20Hzとし、ハイパスフィルタ44Hに用いるベッセルフィルタの特性周波数を2Hzとする。
ロボットの制御に用いられる制御装置は、一般に、ソフトウェアによって動作するマイクロプロセッサなどによって実現されるので、本実施形態においても衝突検出装置42は、例えばマイクロプロセッサなどを用いたデジタル信号処理技術を用いて実現される。その場合、バンドパスフィルタ44はデジタルフィルタ技術を用いて実装される。
衝突検出装置42では、絶対値演算部45の代わりに、バンドパスフィルタ処理後のトルク指令値の二乗平均平方根(RMS;Root Mean Square)値を算出するRMS演算部48を設け、算出されたRMS値がコンパレータ46に入力するようにしてもよい。図3(b)に示すようにRMS演算部48は、バンドパスフィルタ44で処理された速度値を二乗する二乗演算部(Sq)48Aと、二乗演算部48Aで算出された値を所定の長さの期間にわたって積算する積算部(Sum)48Bと、積算部48Bで積算された値の平方根を求める平方根演算部(Sqrt)48Cとを備えている。ここではデジタル信号処理を前提としているので、積算部48Bは、信号の各サンプリング周期ごとに、直前の所定の数のサンプリング周期において二乗演算部48Aで算出された値を積算し、その値をRMS値として出力する。なお、所定の数のサンプリング周期を1サンプリング周期とすれば、RMS演算部48での演算処理は絶対値演算部45での演算処理と同一の結果を与える。
衝突検出装置42においてトルク指令値に対するバンドパスフィルタ処理を行った後にそのRMS値を求めて閾値を比較することにより衝突の発生の有無を検出することを説明したが、RMS値と閾値との比較による判定だけであれば、RMS演算部48の平方根演算部48Cは必ずしも必要ではなく、積算部48Bの出力と閾値とを比較するような構成とすることもできる。この場合は、バンドパスフィルタ処理後のトルク指令値の二乗平均と閾値とを比較していることになり、このとき用いる閾値は、RMS値用のものではなくて二乗平均値用のものとされる。絶対値も二乗平均値もRMS値も振幅に基づく値であるといえるから、結局、本実施形態の衝突検出装置42は、モータ36に対するトルク指令値を示す信号をバンドパスフィルタ44で処理した後、フィルタ処理後の信号の振幅に基づく値と閾値とを比較し、振幅に基づく値が閾値を上回るときにロボット10において衝突が発生したと判定するものである。
以下、本実施形態の衝突検出装置42を用いた衝突検出を実例に基づいて説明する。ここでは図1及び図2に示したロボット10を所定の位置指令パターンで駆動することとして、ロボット10の下側のハンド13Bの移動経路内に物体が存在してハンド13Bにおいて衝突が発生したときと、移動経路内に物体が存在せずに衝突が発生しないときとを比較しながら、ハンド13Bを駆動するモータ36に対するトルク指令値に基づいて衝突の発生を検出した場合を説明する。衝突の検出には、モータ36を駆動する制御装置40に組み込まれた、図3(a)に示す衝突検出装置42を使用した。ただし衝突検出装置42において、絶対値演算部45の代わりに、積算部48Bでの積算時間0.01秒であるRMS演算部48(図3(b)参照)を使用した。積算部48Bでの積算時間が短いので、RMS演算部48が出力するRMS値は、バンドパスフィルタ処理後の信号の絶対値とほぼ一致する。結果を図4及び図5に示す。図4及び図5において、縦軸の「トルク」の単位は、制御装置40の内部において演算に使用される単位(制御装置40に依存して例えば「digit」と呼ばれる単位)で表されている。
図4において(a-1)は、ハンド13Bにおいて衝突が起きなかったときにモータ36に与えられたトルク指令値の時間変化を示し、(b-1)は衝突が起きたときのトルク指令値の時間変化を示している。衝突の発生時刻がちょうど横軸の1秒のところであることは分かっている。トルク指令値の波形は異なっているが、ハンド13Bをどのように動かすかの制御によっては衝突が起こらなくても(b-1)に示すようにトルク指令値が変化することがあるから、(a-1)の波形と(b-1)の波形を比較しただけでは衝突の発生の有無を判定することはできない。
図4において(a-2)及び(b-2)は、それぞれ、波形(a-1)及び波形(b-1)で示されるトルク指令値を、通過帯域が2~20Hzである5次のバタワースフィルタをバンドパスフィルタ44として使用してフィルタ処理したときの、フィルタ処理後の信号のRMS値の時間変化を示している。(a-2)に示す衝突が発生しなかった場合にはフィルタ処理後の信号から得たRMS値は、トルク指令値自体での大きな変動にも関わらずほぼ0であってわずかしか変動しない。これに対し、(b-2)に示す衝突が発生した場合には、衝突発生時刻を境としてRMS値に大きな変動が見られた。(b-2)における時刻1秒におけるRMS値に基づいて例えばトルク値500を閾値とすれば、モータ36に対するトルク指令値に対してバンドパスフィルタ処理を行い、さらに絶対値あるいはRMS値を求めて閾値を比較することにより、モータ36によって駆動されるハンド13Bにおける衝突を速やかかつ確実に検出できることが分かる。
同様に図4において、(a-3),(a-4)及び(a-5)は、波形(a-1)で示されるトルク指令値を異なるバンドパスフィルタ44で処理して得た信号のRMS値を求めたときにRMS値の時間変化を示し、(b-3),(b-4)及び(b-5)は、波形(b-1)で示されるトルク指令値を異なるバンドパスフィルタ44で処理して得た信号のRMS値を求めたときにRMS値の時間変化を示している。(a-3)及び(b-3)では、通過帯域が2~20Hzである3次のバタワースフィルタを使用し、(a-4)及び(b-4)では、通過帯域が2~20Hzである2次のバタワースフィルタを使用し、(a-5)及び(b-5)では、通過帯域が10~20Hzである3次のバタワースフィルタを使用している。これらの結果から、通過帯域が2~20Hzである2次あるいは3じのバタワースフィルタを用いたとき((a-3)、(b-3)、(a-4)及び(bー4))も、衝突がないときはRMS値はほぼ0であるのに対し、衝突が発生したとはRMS値が大きく変動し、良好に衝突を検出できることが分かった。通過帯域は2~20Hzと同じであるが5次のバタワースフィルタを用いるときより3次のバタワースフィルタを用いたときの方が、衝突発生時におけるRMS値の立ち上がりが早かった。オフセット(衝突が発生していないときのRMS値)は、3次のバタワースフィルタを用いる場合に比べ2次のバタワースフィルタを用いるときの方が大きかった。これらに対し、通過帯域を10~20Hzとした3次のバタワースフィルタを用いたとき((a-5)及び(b-5))は、衝突が発生したときのRMS値の変動が小さく、衝突を有無を判別するように図において一点鎖線で示すように閾値を設定したときに、実際の衝突の発生からRMS値が閾値を上回るまでの遅延が大きくなり、速やかな衝突の検出という点ではやや劣る結果となった。
図5も図4と同様に、異なるバンドパスフィルタ44を用いた時のRMS値の時間変化を示している。図5の(a-1)及び(b-1)はトルク指令値の時間変化を示す図であって、比較を容易にするために図4の(a-1)及び(b-1)を再掲したものである。図5において、(a-6)、(a-7)及び(a-8)は、波形(a-1)をバンドパスフィルタ44で処理して得られたRMS値の時間変化を示し、(b-6),(b-7)及び(b-8)は、波形(b-1)をバンドパスフィルタ44で処理して得られるRMS値の時間変化を示している。(a-6)及び(b-6)では、通過帯域が2~20Hzである1次フィルタを使用し、(a-7)及び(b-7)では、通過帯域が0.8~8Hzである3次のベッセルフィルタを使用し、(a-8)及び(b-8)では、通過帯域が2~20Hzである3次のベッセルフィルタを使用している。1次フィルタを用いたとき((a-6)及び(b-6))は、衝突発生時のRMS値の変化は大きいが、衝突が起きていないときであってもトルク指令値の変化に応じてRMS値も変動しオフセットが大きいので、衝突の発生を正確に検出するという点ではやや劣る結果となった。一方、ベッセルフィルタを用いたとき((a-7)、(b-7)、(a-8)及び(b-8))は、いずれも、衝突が起きていないときのオフセットが十分に小さく、衝突が発生したときにRMS値が大きく変動するので、ベッセルフィルタによってもロボット10における衝突の発生を速やかかつ正確に検出できることが分かった。なお、ベッセルフィルタを用いるときは、バタワースフィルタを用いる場合に比べてバンドパスフィルタ44の通過帯域を低周波側にずらした方が、衝突時のRMS値の変動が大きくなるので、より好ましい結果を示した。
以上説明した第1の実施形態によれば、モータ36に対するトルク指令値をバンドパスフィルタ44で処理し、フィルタ処理後のトルク指令値を示す信号の振幅に基づく値を閾値と比較することにより、ロボット10において発生した衝突を速やかかつ正確に検出することができる。
[第2の実施形態]
第1の実施形態の衝突検出装置42は、モータ36に対するトルク指令値をバンドパスフィルタ処理することによって衝突を検出していたが、本発明に基づく衝突検出装置42はこれに限られるものではない。モータ36に関する位置偏差に基づいても、ロボット10における衝突の検出を行うことができる。図6は、本発明の第2の実施形態に基づく衝突検出装置42を含む制御装置40を示している。
図6に示す制御装置40は、図3(a)に示した制御装置40と同様のものであるが、衝突検出装置42の構成において図3(a)に示すものと異なっている。図6に示す第2の実施形態の衝突検出装置42には、トルク指令値が入力する代わりに、制御部41に与えられる位置指令値と、エンコーダ37からフィードバックされるモータ36の位置を示す信号とが入力する。衝突検出装置42は、位置指令値からモータ36の位置を減算して位置偏差を算出する減算器43を備えており、減算器43の出力がバンドパスフィルタ44に供給される。その他の点では図6に示す衝突検出装置42は、図3(a)に示す衝突検出装置42と同じ構成である。第2の実施形態においても、絶対値演算部45の代わりに図3(b)に示すRMS演算部48を用いてもよい。本実施形態の衝突検出装置42では、減算器43において算出された位置偏差がバンドパスフィルタ44によってフィルタ処理され、フィルタ処理後の位置偏差の絶対値あるいはRMS値が算出され、算出された絶対値あるいはRMS値が閾値を上回るときに、ロボット10において衝突が発生したと判定される。モータ36による駆動対象物であるロボット10において衝突が発生したときは、位置指令値に基づいてロボット10を移動させるために発生する位置偏差における比較的ゆっくりした変化とは独立して、衝突自体に起因して、位置偏差において特定の周波数帯域の微小な振動が発生すると考えられる。第2の実施形態においてバンドパスフィルタ44は、位置偏差における特定の周波数帯域での微小な振動を抽出するために用いられている。
以下、図6に示す衝突検出装置42を用いた衝突検出を実例に基づいて説明する。ここでは図1及び図2に示したロボット10を所定の位置指令パターンで駆動することとして、ハンド13Bの移動経路内に物体が存在して衝突が発生したときと、移動経路内に物体が存在せずに衝突が発生しないときとを比較しながら、ハンド13Bを駆動するモータ36での位置偏差に基づいて衝突の発生を検出した場合を説明する。衝突検出装置42では、絶対値演算部45の代わりに、積算部48Bでの積算時間0.01秒であるRMS演算部48を使用した。積算部48Bでの積算時間が短いので、RMS演算部48が出力するRMS値は、バンドパスフィルタ処理後の信号の絶対値とほぼ一致する。結果を図7に示す。図7において、縦軸の「位置偏差」の単位は、制御装置40の内部において演算に使用される長さの単位(制御装置40に依存して例えば「pulse」と呼ばれる単位)で表されている。
図7において(a-1)は、ハンド13Bにおいて衝突が起きなかったときのモータ36の位置偏差の時間変化を示し、(b-1)は衝突が起きたときの位置偏差の時間変化を示している。衝突の発生時刻がちょうど横軸の1秒のところであることは分かっている。位置偏差の波形は異なっているが、ハンド13Bをどのように動かすかの制御などによっては衝突が起こらなくても(b-1)に示すように位置偏差が変化することがあるから、(a-1)の波形と(b-1)の波形を比較しただけでは衝突の発生の有無を判定することはできない。
図7において(a-2)及び(b-2)は、それぞれ、波形(a-1)及び波形(b-1)で示される位置偏差を、通過帯域が2~20Hzである5次のバタワースフィルタをバンドパスフィルタ44として使用してフィルタ処理したときの、フィルタ処理後の信号のRMS値の時間変化を示している。(a-2)に示す衝突が発生しなかった場合にはフィルタ処理後の信号から得たRMS値は、位置偏差自体での大きな変動にも関わらずほとんど変化しない。これに対し、(b-2)に示す衝突が発生した場合には、衝突発生時刻を境としてRMS値に大きな変動が見られた。(b-2)における時刻1秒におけるRMS値に基づいて例えば位置偏差20を閾値とすれば、モータ36での位置偏差に対してバンドパスフィルタ処理を行い、さらに絶対値あるいはRMS値を求めて閾値を比較することにより、モータ36によって駆動されるハンド13Bにおける衝突を速やかかつ確実に検出できることが分かる。
同様に図7において(a-3)及び(b-3)は、それぞれ、波形(a-1)及び波形(b-1)で示される位置偏差を、通過帯域が2~20Hzである3次のバタワースフィルタをバンドパスフィルタ44として使用してフィルタ処理したときの、フィルタ処理後の信号のRMS値の時間変化を示している。3次のバタワースフィルタを使用した場合であっても衝突の検出を行うことができる。しかしながら(a-2)及び(a-3)に示す5次のバタワースフィルタを使用した場合に比べ、3次のバタワースフィルタを使用したときは、衝突が発生していないときのオフセットが大きく、その分、衝突の正確な検出という点で5次のバタワースフィルタを用いるときよりも若干劣っていた。すなわち、位置偏差に基づいて衝突の検出を行うときは、トルク指令値に基づいて衝突の検出を行うときに比べ、使用するバンドパスフィルタ44の次数を高めることが好ましいことが分かった。これは、位置偏差の2回微分がトルク指令値に対応するという関係があるので、オフセットの除去のために位置偏差を用いるときは、トルク指令値を用いるときよりもフィルタの次数を高くする必要があるからである。このことから、位置偏差に基づいて衝突の発生を検出するときにバンドパスフィルタ44としてバタワースフィルタを用いるときは、2次のバタワースフィルタを用いるよりも3次または5次のバタワースフィルタを用いることが好ましいことが分かる。ここでは具体例を示さないが、位置偏差に基づいて衝突の発生を検出するときにベッセルフィルタを用いるときは、ベッセルフィルタの次数は例えば3次のままでよい。
以上説明した第2の実施形態によれば、モータ36での位置偏差をバンドパスフィルタ44で処理し、フィルタ処理後の位置偏差を示す信号の振幅に基づく値を閾値と比較することにより、ロボット10において発生した衝突を速やかかつ正確に検出することができる。
[第3の実施形態]
各軸がモータで駆動されるロボットなどでは、モータの負荷である動作対象物とモータとの間には減速機が設けられることが一般的である。そして減速機には角度伝達誤差があり、この角度伝達誤差に起因して振動が発生することがある。この振動は、動作対象物を含む機械系に伝わる。また動作対象物を含む機械系は、特定の振動数すなわち固有振動数で振動しやすいという性質を有する。その結果、減速機の角度伝達誤差に起因する振動の周波数が機械系の固有振動数と一致するかそれに近い値となると、減速機側からの振動に対して動作対象物を含む機械系が共振する。角度伝達誤差に起因する振動の周波数は、一般的に、減速機の入力軸の回転数、すなわちモータの回転数に比例する。その一方で、機械系の固有振動数は、モータの回転数などに依存せずにほぼ一定である、したがって、機械系での共振は、モータの回転数がある範囲にあるときに発生することになる。機械系が共振した状態では、トルク指令値や位置偏差も大きく変動し、変動の周波数は共振の周波数と一致する。共振が発生すると、バンドパスフィルタ処理を行っているとしても共振の影響がバンドパスフィルタ処理後の信号にも及ぶから、上述した各実施形態の衝突検出方法により衝突発生を検出しようとするときに、実際には衝突が発生していないにも関わらず、衝突発生と誤検出することがある。そこで第3の実施形態では、このような誤検出の発生を防ぐための構成について説明する。
図8(a)は、ロボット10に接続する制御装置40の構成を示すブロック図であり、第3の実施形態の衝突検出装置42を説明している。図8(a)に示す制御装置40は、第1の実施形態での制御装置40と同様のものであるが、衝突検出装置42の構成がモータ36の回転数すなわち回転速度に応じてコンパレータ46における閾値を変化させるようにした点で、第1の実施形態での制御装置40と異なっている。図8(a)に示す衝突検出装置42では、コンパレータ46における閾値を可変として、コンパレータ46の閾値を制御するためのルックアップテーブル(LUT)61が設けられている。ルックアップテーブル61は、モータ36の回転速度ごとのコンパレータ46での閾値を格納するものであり、モータ36の回転速度が入力すると、それに対応した閾値をコンパレータ46に出力する。モータ36の回転速度は、外部から入力する位置指令値に基づいてモータ36のサーボ制御を行なう制御部41において常時算出されている速度指令値から知ることができるので、ルックアップテーブル61には、回転速度として制御部41から速度指令値が入力している。あるいは、エンコーダ37がモータ36の回転位置を示す値を常時出力しているので、この値を微分した値を求めて速度値とし、速度指令値の代わりにルックアップテーブル61に与えてもよい。コンパレータ46は、ルックアップテーブル61から入力した閾値と絶対値演算部45において算出された絶対値とを比較し、絶対値が閾値を上回っていれば、衝突の発生があったと判定する。
図8(b)はルックアップテーブル61の設定例を示している。図示される例は、モータ36の最高速度に対する百分率でモータ36の回転速度が表されるとして、モータ36の速度が34%から40%までの範囲(共振発生速度)において減速機38の角度伝達誤差による振動に対して負荷39を含む機械系が共振するとしたときの、ルックアップテーブル61の内容を示している。横軸がモータ36の回転速度を示し、縦軸がコンパレータ46において用いられる閾値を示している。閾値は、コンパレータ46で用いられる電圧単位で示されている。モータ36の最高速度とは、ロボット10において軸ごとにその軸のモータ36について許容されるものとして定められている最大の回転速度のことをいう。モータ36の回転数と減速機38の角度伝達誤差に起因する振動の振動数との関係は減速機38の種類になどによって定まり、また、負荷39を含む機械系の固有振動数は公知の方法によって求めることができるから、共振発生速度は事前に知ることができる。
図8(b)に示す例では、モータ36の速度が共振発生速度から大きく離れているとき(速度が最大速度の0~24%あるいは50~100%であるとき)は、閾値の値は400であり、これは、第1の実施形態で説明した場合において用いられる閾値と同じ値である。これに対して、モータ36の速度が共振回転速度の範囲内であるといきは、閾値の値は800である。そして、最大速度の24%から34%の速度範囲では、速度が大きくなるにつれて閾値は400から800へと変化し、最大速度の40%から50%の速度範囲では、速度が大きくなるにつれて閾値は800から400へと変化する。このように設定されたルックアップテーブル61を用いてコンパレータ46の閾値を変化させることにより、共振発生速度ではコンパレータ46における衝突検出感度が小さくなって、負荷39を含む機械系の共振による誤検出の発生を抑制することができる。
減速機38の角度伝達誤差による振動の周波数が、負荷39を含む機械系の固有振動数の高調波成分と共振し、それにより衝突検出における誤検出が起こることもある。そのような場合には、高調波の周波数に対応するモータ36の回転速度の領域でも、コンパレータ46の閾値を大きくしてその領域での衝突検出感度を小さくすることができる。例えば図8(b)に示す例では、機械系の固有振動数に対応するモータ速度(共振発生速度)が最高速度の34%から40%であるので、2次高調波に対応するモータ速度は例えば最高速度の68%から80%となる。したがって、最高速度の68%から80%の速度範囲においても閾値が大きくなるようにルックアップテーブル61を設定することができる。
負荷39を含む機械系の共振によって衝突検知に誤検出が起こることを抑制する方法は、モータ36の回転速度に応じてコンパレータ46の閾値を変化させる方法に限定されるものではない。図9は、ロボット10に接続する制御装置40の構成を示すブロック図であり、第3の実施形態の衝突検出装置42の別の例を説明している。図9に示す制御装置40は、第1の実施形態での制御装置40と同様のものであるが、バンドパスフィルタ44と絶対値演算部45の間に、負荷39を含む機械系の固有振動数の周波数成分を減衰させるノッチフィルタ62が設けられている点で、図1に示すものとは異なっている。機械系の固有振動数が例えば6Hzであれば、ノッチフィルタ62の中心周波数も6Hzに設定される。ノッチフィルタ62のフィルタ形式は任意であるが、2次のフィルタをノッチフィルタ62に用いることが好ましい。図9に示す衝突検出装置42によれば、機械系において共振が発生したとしてもその周波数成分の信号が減衰するので、衝突検出における誤検出の発生を抑制することができる。機械系の固有振動数の高調波においても共振が起きる場合には、基本波すなわち機械系の固有振動数そのものに対するノッチフィルタ62に加え、高調波に対応する成分を減衰させるノッチフィルタを追加してもよい。
第3の実施形態においては、図8(a)に示したコンパレータ46における閾値をモータ速度によって変化させる手法と、図9に示した機械系の固有振動数の周波数成分を除去するノッチフィルタ62を設ける手法とを併用することもできる。図10は、ロボット10に接続する制御装置40の構成を示すブロック図であり、図8(a)に示す手法と図9に示す手法とを併用する衝突検出装置42を説明している。図10に示す衝突検出装置42は、図8(a)に示した衝突検出装置において、バンドパスフィルタ44と絶対値演算部45の間に、さらにノッチフィルタ62を設けたものである。回転速度に応じてコンパレータ46の閾値を変化させるとともに、機械系の固有振動数に対応するノッチフィルタ62を設けることにより、負荷39を含む機械系の共振によって衝突検出の誤検出が発生することをより確実に抑制することができる。
以上の説明では第1の実施形態の衝突検出装置42において、コンパレータ46の閾値をモータ速度によって変化させたり、機械系の固有振動数の周波数成分を減衰させるノッチフィルタ62を設けたりしているが、第2の実施形態の衝突検出装置42においても同様の手法を採用することにより、衝突検出における誤検出が発生することを抑制することができる。図11及び図12は、いずれもロボット10に接続する制御装置40の構成を示すブロック図であり、それぞれ、第3の実施形態の衝突検出装置42のさらに別の例を示している。図11に示す衝突検出装置42は、図6に示す第2の実施形態の衝突検出装置42において、上述と同様にルックアップテーブル61を設け、モータ速度に応じてコンパレータ46の閾値を変化できるようにしたものである。図12に示す衝突検出装置42は、図6に示す第2の実施形態の衝突検出装置42において、バンドパスフィルタ44と絶対値演算部45の間にノッチフィルタ62を設け、機械系の固有振動数の周波数成分を減衰させることができるようにしたものである。
以上説明した第3の実施形態では、減速機38の角度伝達誤差に起因する振動などによって減速機38から負荷39までの機械系が共振する場合においても、この共振によって衝突検出における誤検出が発生することを抑制することができる。
以上、本発明に基づく衝突検出方法について、ロボット10における衝突の発生を検出する場合を例に挙げて説明したが、本発明に基づく衝突検出方法は、動作対象物がサーボモータによって駆動されるものである限り、ロボット以外の動作対象物における衝突の発生の検出に広く用いることができる。